This pull request lands the tool; switching the shipped defaults is a separate pull request stacked on it. Every shipped `tool-fs` row states `applyPatch: false`, the `fs-observation-policy` row stays mounted, the write, edit, and apply_patch guidance names the policy, and every recorded expectation outside the apply-patch scenarios returns to the master baseline. The upgrade guide, the parity exception, and the optional classification of the policy package move to the stacked change.
53 lines
4.9 KiB
TypeScript
53 lines
4.9 KiB
TypeScript
/** Non-default package roles retained outside the experimental group. */
|
|
|
|
/** Product role that does not require a default runtime mount. */
|
|
export type ProductPackageCategory = 'optional' | 'sdk' | 'build' | 'test' | 'web-distribution' | 'declarations'
|
|
|
|
/** One explicitly maintained package role and its reason. */
|
|
export interface ProductPackagePolicy {
|
|
/** Why this package remains outside the experimental group. */
|
|
readonly reason: string
|
|
/** The supported product role checked against its directory. */
|
|
readonly category: ProductPackageCategory
|
|
}
|
|
|
|
/**
|
|
* Exceptions to default runtime reachability, keyed by repository-relative package directory.
|
|
* Optional integrations may be reached by an optional bundle without becoming default capabilities.
|
|
*/
|
|
export const PRODUCT_PACKAGE_POLICY: Readonly<Record<string, ProductPackagePolicy>> = {
|
|
'packages/core/agent-tool-presentation': { category: 'optional', reason: 'Deprecated selector retained for existing executor configurations.' },
|
|
'packages/browser-use/browser-use': { category: 'optional', reason: 'Service definition used by explicitly selected browser providers.' },
|
|
'packages/computer-use/computer-use': { category: 'optional', reason: 'Service definition used by explicitly selected computer providers.' },
|
|
'packages/lsp/lsp': { category: 'optional', reason: 'Service definition for deployment-configured language servers.' },
|
|
'packages/lsp/lsp-stdio': { category: 'optional', reason: 'Requires an explicit server list and language-server executables.' },
|
|
'packages/lsp/tool-lsp': { category: 'optional', reason: 'Model tools selected together with a configured LSP provider.' },
|
|
'packages/ssh/ssh': { category: 'optional', reason: 'Explicit remote connection and helper configuration.' },
|
|
'packages/ssh/ssh-helper-runtime': { category: 'optional', reason: 'Private executable carrier for explicitly configured SSH connections.' },
|
|
'packages/ssh/fs-ssh': { category: 'optional', reason: 'Remote filesystem provider selected in an SSH composition.' },
|
|
'packages/ssh/sandbox-ssh': { category: 'optional', reason: 'Remote confinement provider selected in an SSH composition.' },
|
|
'packages/ssh/subprocess-ssh': { category: 'optional', reason: 'Remote process provider selected in an SSH composition.' },
|
|
'packages/storage/storage-sqlite': { category: 'optional', reason: 'Persistent storage requires an explicit database path and backend selection.' },
|
|
'packages/subagent/subagent-acp': { category: 'optional', reason: 'Requires a configured external ACP agent command.' },
|
|
'packages/subagent/subagent-claude-code': { category: 'optional', reason: 'Separately installed native Claude Code agent integration.' },
|
|
'packages/subagent/subagent-codex': { category: 'optional', reason: 'Separately installed native Codex agent integration.' },
|
|
'packages/subagent/subagent-dsh-sdk': { category: 'optional', reason: 'Requires an explicitly configured external DSH home.' },
|
|
'packages/web/web-search-exa': { category: 'optional', reason: 'Alternative search provider requiring its own API credentials.' },
|
|
'packages/web/web-search-perplexity': { category: 'optional', reason: 'Alternative search provider requiring its own API credentials.' },
|
|
'packages/context/tmux-context': { category: 'optional', reason: 'Context contribution requiring a tmux pane.' },
|
|
'packages/fs/tool-str-replace-editor': { category: 'optional', reason: 'Explicit alternative to the default filesystem editing tools.' },
|
|
'packages/sdk/client': { category: 'sdk', reason: 'Published TypeScript embedding client runs in the consumer process.' },
|
|
'packages/typert/generator': { category: 'build', reason: 'Build-time generation of type metadata.' },
|
|
'packages/test-support/agent-loop-testkit': { category: 'test', reason: 'Published agent-loop test harness.' },
|
|
'packages/test-support/tool-testkit': { category: 'test', reason: 'Shared tool definition and execution fixtures for tests and benchmarks.' },
|
|
'packages/test-support/client-runtime': { category: 'test', reason: 'Published browser plugin test harness.' },
|
|
'packages/test-support/llm-mock-server': { category: 'test', reason: 'Published model-provider test server.' },
|
|
'packages/test-support/llm-replay': { category: 'test', reason: 'Published recorded-model replay harness.' },
|
|
'packages/test-support/loader-smoke': { category: 'test', reason: 'Published plugin Loader smoke-test harness.' },
|
|
'packages/test-support/remote-mock': { category: 'test', reason: 'Published typed Remote test proxies.' },
|
|
'packages/test-support/session-snapshot': { category: 'test', reason: 'Published Session snapshot replay harness.' },
|
|
'packages/client/web': { category: 'web-distribution', reason: 'Browser boot kernel bundled into the Web distribution.' },
|
|
'packages/client/ui-dockkit': { category: 'web-distribution', reason: 'Layout library bundled into the Web distribution.' },
|
|
'packages/util/package-manifest': { category: 'declarations', reason: 'Shared package metadata declarations have no runtime mount.' },
|
|
}
|