-
Notifications
You must be signed in to change notification settings - Fork 2
plat 244
PLAT-244 — Retired provider-media tools could still be reintroduced through legacy workspace registries
| Coordination | Value |
|---|---|
| Assigned agent | Codex |
| Ticket state | implemented; runtime reverify |
| Last synchronized | 2026-08-29 |
- Priority: harness_issue, severity medium.
-
Findings: No workflow finding is linked yet. This is a platform-surface
defect discovered while narrowing the supported provider-backed tools to
generate_text_llmandsearch_web_llm.
The primary workspace tool registry had stopped exposing provider media tools, but several independent legacy paths could still reintroduce them:
-
pkg/workspace/advanced_tools.goretained aread_imagedefinition; -
pkg/workspace/tools.goretained aread_imageexecutor; -
workspace_image,workspace_image_gen, andworkspace_image_editremained selectable built-in categories; and - old workflow manifests containing a
workspace_image*entry were migrated in a way that still auto-enabled the broad workspace tool category.
This split the apparent tool surface from the actual selectable surface. It also left stale provider-media guidance in active builder instructions.
Removed the legacy shared-agent image definition, executor, and media category
registrations; category expansion no longer recognizes workspace_image; and
old workspace_image* workflow entries are explicitly dropped as retired.
The active shared-agent provider surface is now limited to
generate_text_llm and search_web_llm (alongside shell and diff tools).
Active guidance no longer presents media configuration as callable.
This deliberately does not remove Family Server's independent uploaded image-reading capability or the separate Video product. Those are distinct product features, not routes in the shared MCP-agent workspace registry.
-
TestCreateWorkspaceToolRegistryIncludesOnlyActiveTextAndSearchToolsasserts that every media tool is absent from definitions and executors and thatworkspace_imageresolves no tools. - Focused
go testpassed forcmd/server/virtual-tools,pkg/workspace, andpkg/orchestrator. - Focused
golangci-lintpassed for the same packages.
Start a fresh Builder/Workshop agent with both a current and a legacy workflow
manifest. Confirm its MCP tool list contains neither read_image nor any
image/video/audio/music tool, and that a legacy workspace_image* selection
cannot cause a media provider credential/setup prompt.
The ticket's own "Verification" section covered cmd/server/virtual-tools,
pkg/workspace, and pkg/orchestrator directly, but not
pkg/orchestrator/agents/workflow/step_based_workflow (a distinct
subpackage) or cmd/server/guidance — both were left red by this change:
-
TestWorkshopCLIPromptUsesProjectedWorkspaceToolReferenceandTestPhaseChatWorkshopSelectsWorkspaceToolGuidanceByTransport(step_based_workflow):pkg/instructions/workspace_special_tools.go's rewrite dropped theread_skill(...path":"references/workspace-media-tools.md")pointer entirely from bothGetSpecialWorkspaceToolsInstructionsandGetSpecialWorkspaceToolsPointer— a real regression, since that skill doc still exists and still carries live guidance for the two active tools (e.g. PLAT-234'ssearch_web_llmtimeout guidance). Restored the pointer in both functions, scoped to the narrowed tool surface. -
TestMaterializedReferenceSkillIncludesConfigToolOnlyDocs(cmd/server/guidance): the rewrittenworkspace-media-tools.mddropped itsset_provider_authmention entirely — a real content gap, since agents reading this doc still need to know how to store credentials for the two active tools. Restored it.
Two of the same test's own assertions were themselves stale relative to
this ticket's legitimate, deliberate intent (checking for
generate_video(prompt, output_path and **Search provider routing** comes from the published LLM set, both accurate before this ticket but
contradicted by its own narrowing) — updated those assertions to match the
new, correct behavior rather than reverting the production narrowing.
go build ./... and go test ./pkg/instructions/... ./cmd/server/... ./pkg/orchestrator/... all pass after these fixes. This does not change
this ticket's own functional narrowing (media tools remain hidden); it
restores the reference-doc pointer and content the narrowing incidentally
carried away, and brings the two affected test files current with the
narrowing's own intent.
The backend/registry refactor had not removed all frontend provider-collection
paths: LLMConfigurationModal still contained unreachable-but-real Gemini
audio, MiniMax audio/music, ElevenLabs, and Deepgram credential sections, and
the frontend store could still migrate, persist, and sync the latter three
keys. A stale provider manifest or direct tab selection could therefore
re-expose a retired configuration surface.
Removed every retired media provider tab/section from the Model Provider page, excluded MiniMax/ElevenLabs/Deepgram from the modal and library filters, and stopped frontend key migration, persistence, and workspace-key sync for those providers. Pi CLI remains in the coding-agent area; its own supported text sub-provider routing is not a standalone MiniMax credential page.
npx eslint src/components/LLMConfigurationModal.tsx src/stores/useLLMStore.ts
and npm run build pass. The repository-wide frontend lint command still has
pre-existing failures in unrelated files and was not used as this change's
gate.
Removed the remaining frontend and server-side configuration plumbing rather than leaving it merely hidden:
- deleted the unused image-generation configuration modal/store, chat request
fields, and
/api/image-gen/testendpoint; - removed legacy image-generation fields and executor override wiring from workflow/workshop query handling;
- removed obsolete MiniMax standalone, ElevenLabs, and Deepgram frontend state/default/model-list handling. MiniMax is retained only as a Pi text sub-provider credential route;
- stopped ElevenLabs and Deepgram environment discovery; and
- narrowed
list_llm_capabilitiesdocumentation and registration to chat and web search.estimate_llm_cost, which was only meaningful for retired media features, is no longer registered.
The retained media implementation files serve no shared-agent path and remain out of scope for the separate Video product. Family Server upload image reading and Pi text sub-provider routing remain intentional exclusions.
Verification: focused server/package tests and the production frontend build pass.
Auto-synced from docs/ on main. Edit there, not here.