A claimed slash command consumed only the text half of the composer submission: /goal with reference images executed, cleared the draft, and silently stranded the images in the rail. Model-visible attachment intent had no route through the command plane. The submission envelope is now modeled end to end. CommandDefinition input.images declares acceptance; the declaration rides the descriptor to every client, onto the minted CommandClaim, and into the input machine's claim snapshot. commands.execute carries the submission's base64 images and enforces the declaration in the executor: non-declaring commands, a missing attachment store, and exceeded batch limits settle as logged error results before the handler runs. Admission reuses the attachment package's new admitEncodedImages, extracted from api-proxy's prompt path so both wire endpoints share one limits/validation/commit sequence. Producers own model visibility: /goal submits one user followup (image blocks + a fixed reference line) after a successful create/edit so goal rounds read the images from session history; /plan folds them into its steered message. Grammar misfits (/goal pause, bare /plan, /plan off) return direct errors and the composer keeps the images. On the client, enter adjudication carries a SubmitEnvelope and every command route that cannot consume images throws a localized refusal that renders as one composer notice with draft and images retained; the claimed pre-gate applies the same copy. An accepting claim serializes the draft images, forwards them to commands.execute, and clears plus releases them only on a success outcome. The assembled web test roster gains the ui-input-trigger and ui-commands plugins, mirroring the shipped composition, so slash submissions exercise the command plane; a new keyless snapshot pins the refusal banner and the accepting /goal flow over the built client graph.
280 lines
18 KiB
JSON
280 lines
18 KiB
JSON
{
|
|
// Doubles as the resolution facade for vite-tsconfig-paths (vitest configs
|
|
// point here). NEVER add include/files to this file: it would leak into
|
|
// every extending package project and narrow the facade's match-all scope.
|
|
"compilerOptions": {
|
|
"target": "es2024",
|
|
"module": "esnext",
|
|
"moduleResolution": "bundler",
|
|
"declaration": true,
|
|
"sourceMap": true,
|
|
"declarationMap": true,
|
|
"composite": true,
|
|
"incremental": true,
|
|
"skipLibCheck": true,
|
|
"esModuleInterop": true,
|
|
"allowImportingTsExtensions": true,
|
|
"rewriteRelativeImportExtensions": true,
|
|
"verbatimModuleSyntax": false,
|
|
"strict": true,
|
|
"noUncheckedIndexedAccess": true,
|
|
"exactOptionalPropertyTypes": true,
|
|
"noImplicitOverride": true,
|
|
"noFallthroughCasesInSwitch": true,
|
|
"noUnusedLocals": true,
|
|
"noUnusedParameters": true,
|
|
"types": ["node"],
|
|
// Source-level resolution for every repo-local graph. Project references,
|
|
// not declaration path aliases, keep each package/vendor source compiled
|
|
// under its own tsconfig boundary.
|
|
"paths": {
|
|
"@deepseek-ai/cordis": ["./vendor/cordis/src"],
|
|
"@deepseek-ai/cosmokit": ["./vendor/cosmokit/src"],
|
|
"@deepseek-ai/schemastery": ["./vendor/schemastery/src"],
|
|
"@deepseek-ai/cordis-plugin-loader": ["./vendor/loader/src"],
|
|
"@deepseek-ai/cordis-plugin-include": ["./vendor/include/src"],
|
|
"@deepseek-ai/cordis-plugin-group": ["./vendor/group/src"],
|
|
"@deepseek-ai/cordis-plugin-timer": ["./vendor/timer/src"],
|
|
"@deepseek-ai/cordis-plugin-hmr": ["./vendor/hmr/src"],
|
|
"@deepseek-ai/cordis-plugin-logger-console": ["./vendor/logger-console/src"],
|
|
"@deepseek-ai/node-addon-landlock-run": ["./native/landlock-run/packages/entry/src/index.ts"],
|
|
"@deepseek-ai/dsh-invariants": ["./packages/runtime-diagnostics/invariants/src/index.ts"],
|
|
"@deepseek-ai/dsh-tool-call-timeout-policy": ["./packages/guard/timeout-policy/src"],
|
|
"@deepseek-ai/dsh-tool-call-timeout-policy/invariant": ["./packages/guard/timeout-policy/src/invariant.ts"],
|
|
"@deepseek-ai/dsh-typert-registry": ["./packages/typert/registry/src/index.ts"],
|
|
"@deepseek-ai/dsh-typert-registry/client": ["./packages/typert/registry/src/client/index.ts"],
|
|
"@deepseek-ai/dsh-api-gateway": ["./packages/api/gateway/src/index.ts"],
|
|
"@deepseek-ai/dsh-api-gateway/client": ["./packages/api/gateway/src/client/index.ts"],
|
|
"@deepseek-ai/dsh-api-gateway/invariant": ["./packages/api/gateway/src/invariant.ts"],
|
|
"@deepseek-ai/dsh-api-gateway/types": ["./packages/api/gateway/src/types.ts"],
|
|
"@deepseek-ai/dsh-typert-protocol": ["./packages/typert/protocol/src/index.ts"],
|
|
"@deepseek-ai/dsh-typert-protocol/types": ["./packages/typert/protocol/src/types.ts"],
|
|
"@deepseek-ai/dsh-typert-loader": ["./packages/typert/loader/src/index.ts"],
|
|
"@deepseek-ai/dsh-session/invariant": ["./packages/core/session/src/invariant.ts"],
|
|
"@deepseek-ai/dsh-typert-registry/types": ["./packages/typert/registry/src/types.ts"],
|
|
"@deepseek-ai/dsh-typert-generator": ["./packages/typert/generator/src/index.ts"],
|
|
"@deepseek-ai/dsh-attachment/types": ["./packages/attachment/attachment/src/types.ts"],
|
|
"@deepseek-ai/dsh-session/types": ["./packages/core/session/src/types.ts"],
|
|
"@deepseek-ai/dsh-session/surface": ["./packages/core/session/src/surface.ts"],
|
|
"@deepseek-ai/dsh-session-projection/types": ["./packages/session/session-projection/src/types.ts"],
|
|
"@deepseek-ai/dsh-tool-todo/types": ["./packages/todo/tool-todo/src/types.ts"],
|
|
"@deepseek-ai/dsh-tool-todo/client": ["./packages/todo/tool-todo/src/client.ts"],
|
|
"@deepseek-ai/dsh-session-title/types": ["./packages/session/session-title/src/types.ts"],
|
|
"@deepseek-ai/dsh-session-title/client": ["./packages/session/session-title/src/client.ts"],
|
|
"@deepseek-ai/dsh-session-stats/types": ["./packages/session/session-stats/src/types.ts"],
|
|
"@deepseek-ai/dsh-session-stats/client": ["./packages/session/session-stats/src/client.ts"],
|
|
"@deepseek-ai/dsh-plan-mode/types": ["./packages/plan/plan-mode/src/types.ts"],
|
|
"@deepseek-ai/dsh-plan-mode/client": ["./packages/plan/plan-mode/src/client.ts"],
|
|
"@deepseek-ai/dsh-agent-presets/types": ["./packages/preset/agent-presets/src/types.ts"],
|
|
"@deepseek-ai/dsh-pwsh-local": ["./packages/shell/pwsh-local/src/index.ts"],
|
|
"@deepseek-ai/dsh-tool-pwsh": ["./packages/shell/tool-pwsh/src/index.ts"],
|
|
"@deepseek-ai/dsh-shell-env": ["./packages/shell/shell-env/src/index.ts"],
|
|
"@deepseek-ai/dsh-cordis-host-runner": ["./packages/extensions/cordis-host-runner/src/index.ts"],
|
|
"@deepseek-ai/dsh-cordis-host-runner/types": ["./packages/extensions/cordis-host-runner/src/types.ts"],
|
|
"@deepseek-ai/dsh-goal/types": ["./packages/goal/goal/src/types.ts"],
|
|
"@deepseek-ai/dsh-goal/client": ["./packages/goal/goal/src/client.ts"],
|
|
"@deepseek-ai/dsh-llm/types": ["./packages/llm/llm/src/types.ts"],
|
|
"@deepseek-ai/dsh-llm/brand": ["./packages/llm/llm/src/brand.ts"],
|
|
"@deepseek-ai/dsh-llm-retry/types": ["./packages/llm/llm-retry/src/types.ts"],
|
|
"@deepseek-ai/dsh-workflow/types": ["./packages/workflow/workflow/src/types.ts"],
|
|
"@deepseek-ai/dsh-tool-workflow/types": ["./packages/workflow/tool-workflow/src/types.ts"],
|
|
"@deepseek-ai/dsh-llm/message": ["./packages/llm/llm/src/message.ts"],
|
|
"@deepseek-ai/dsh-commands/brand": ["./packages/interaction/commands/src/brand.ts"],
|
|
"@deepseek-ai/dsh-commands/types": ["./packages/interaction/commands/src/types.ts"],
|
|
"@deepseek-ai/dsh-jobs/brand": ["./packages/jobs/jobs/src/brand.ts"],
|
|
"@deepseek-ai/dsh-credentials/types": ["./packages/credentials/credentials/src/types.ts"],
|
|
"@deepseek-ai/dsh-settings/types": ["./packages/settings/settings/src/types.ts"],
|
|
"@deepseek-ai/dsh-api-remotes/types": ["./packages/api/remotes/src/types.ts"],
|
|
"@deepseek-ai/dsh-api-remotes/invariant": ["./packages/api/remotes/src/invariant.ts"],
|
|
"@deepseek-ai/dsh-compaction/checkpoint": ["./packages/compaction/compaction/src/checkpoint.ts"],
|
|
"@deepseek-ai/dsh-compaction/types": ["./packages/compaction/compaction/src/types.ts"],
|
|
"@deepseek-ai/dsh-tools/presentation": ["./packages/core/tools/src/presentation.ts"],
|
|
"@deepseek-ai/dsh-tools/types": ["./packages/core/tools/src/types.ts"],
|
|
"@deepseek-ai/dsh-tool-subagent-control/list-agents": ["./packages/subagent/tool-subagent-control/src/list-agents.ts"],
|
|
"@deepseek-ai/dsh-user-approval/types": ["./packages/interaction/user-approval/src/types.ts"],
|
|
"@deepseek-ai/dsh-user-questions/types": ["./packages/interaction/user-questions/src/types.ts"],
|
|
"@deepseek-ai/dsh-agent/types": ["./packages/core/agent/src/types.ts"],
|
|
"@deepseek-ai/dsh-agent/brand": ["./packages/core/agent/src/brand.ts"],
|
|
"@deepseek-ai/dsh-agent/invariant": ["./packages/core/agent/src/invariant.ts"],
|
|
"@deepseek-ai/dsh-scope/invariant": ["./packages/core/scope/src/invariant.ts"],
|
|
"@deepseek-ai/dsh-agent-loop/invariant": ["./packages/core/agent-loop/src/invariant.ts"],
|
|
"@deepseek-ai/dsh-*/invariant": [
|
|
"./packages/core/*/src/invariant.ts",
|
|
"./packages/prompt/*/src/invariant.ts",
|
|
"./packages/llm/*/src/invariant.ts",
|
|
"./packages/shell/*/src/invariant.ts",
|
|
"./packages/subprocess/*/src/invariant.ts",
|
|
"./packages/e2b/*/src/invariant.ts",
|
|
"./packages/code-runtime/*/src/invariant.ts",
|
|
"./packages/fs/*/src/invariant.ts",
|
|
"./packages/skill/*/src/invariant.ts",
|
|
"./packages/compaction/*/src/invariant.ts",
|
|
"./packages/context/*/src/invariant.ts",
|
|
"./packages/goal/*/src/invariant.ts",
|
|
"./packages/feedback/*/src/invariant.ts",
|
|
"./packages/schedule/*/src/invariant.ts",
|
|
"./packages/guard/*/src/invariant.ts",
|
|
"./packages/plan/*/src/invariant.ts",
|
|
"./packages/preset/*/src/invariant.ts",
|
|
"./packages/subagent/*/src/invariant.ts",
|
|
"./packages/jobs/*/src/invariant.ts",
|
|
"./packages/workflow/*/src/invariant.ts",
|
|
"./packages/web/*/src/invariant.ts",
|
|
"./packages/attachment/*/src/invariant.ts",
|
|
"./packages/spill/*/src/invariant.ts",
|
|
"./packages/todo/*/src/invariant.ts",
|
|
"./packages/bundle/*/src/invariant.ts",
|
|
"./packages/extensions/*/src/invariant.ts",
|
|
"./packages/sandbox/*/src/invariant.ts",
|
|
"./packages/hooks/*/src/invariant.ts",
|
|
"./packages/session/*/src/invariant.ts",
|
|
"./packages/session-query/*/src/invariant.ts",
|
|
"./packages/settings/*/src/invariant.ts",
|
|
"./packages/credentials/*/src/invariant.ts",
|
|
"./packages/acp/*/src/invariant.ts",
|
|
"./packages/storage/*/src/invariant.ts",
|
|
"./packages/workspace/*/src/invariant.ts",
|
|
"./packages/sdk/*/src/invariant.ts",
|
|
"./packages/interaction/*/src/invariant.ts",
|
|
"./packages/boot/*/src/invariant.ts",
|
|
"./packages/examples/*/src/invariant.ts",
|
|
"./packages/util/*/src/invariant.ts",
|
|
"./packages/mcp/*/src/invariant.ts",
|
|
"./packages/identity/*/src/invariant.ts",
|
|
"./packages/test-support/*/src/invariant.ts"
|
|
],
|
|
// host/client package names prefix the group dir (dsh-client-<dir>), so
|
|
// the generic dsh-*/invariant list above cannot map them; strip the
|
|
// group prefix with a dedicated wildcard per group instead.
|
|
"@deepseek-ai/dsh-host-*/invariant": ["./packages/host/*/src/invariant.ts"],
|
|
"@deepseek-ai/dsh-client-*/invariant": ["./packages/client/*/src/invariant.ts"],
|
|
"@deepseek-ai/dsh-headless/startup": ["./packages/bundle/headless/src/startup.ts"],
|
|
"@deepseek-ai/dsh-web-app/startup": ["./packages/bundle/web-app/src/startup.ts"],
|
|
"@deepseek-ai/dsh-client-*/client": ["./packages/client/*/src/client"],
|
|
// One wildcard maps every @deepseek-ai/dsh-<name> to its source. Package
|
|
// dir names are unique across groups, so first-on-disk-wins resolution is
|
|
// unambiguous; adding a package under an existing group needs no edit
|
|
// here. The aggregates' project references (tsconfig.host.json /
|
|
// tsconfig.client.json) stay explicit — TS project references have no
|
|
// wildcard form.
|
|
"@deepseek-ai/dsh-host-apiproxy": ["./packages/host/apiproxy/src"],
|
|
"@deepseek-ai/dsh-host-directory-picker": ["./packages/host/directory-picker/src"],
|
|
"@deepseek-ai/dsh-host-directory-picker/*": ["./packages/host/directory-picker/src/*"],
|
|
"@deepseek-ai/dsh-host-directory-picker-browse": ["./packages/host/directory-picker-browse/src"],
|
|
"@deepseek-ai/dsh-host-directory-picker-browse/*": ["./packages/host/directory-picker-browse/src/*"],
|
|
"@deepseek-ai/dsh-host-directory-picker-native": ["./packages/host/directory-picker-native/src"],
|
|
"@deepseek-ai/dsh-host-directory-picker-native/*": ["./packages/host/directory-picker-native/src/*"],
|
|
"@deepseek-ai/dsh-host-directory-picker-auto": ["./packages/host/directory-picker-auto/src"],
|
|
"@deepseek-ai/dsh-host-directory-picker-auto/*": ["./packages/host/directory-picker-auto/src/*"],
|
|
"@deepseek-ai/dsh-host-apiproxy/client": ["./packages/host/apiproxy/src/fetch/client.ts"],
|
|
"@deepseek-ai/dsh-host-apiproxy/*": ["./packages/host/apiproxy/src/*"],
|
|
"@deepseek-ai/dsh-host-webserver": ["./packages/host/webserver/src"],
|
|
"@deepseek-ai/dsh-host-frontend-static": ["./packages/host/frontend-static/src"],
|
|
"@deepseek-ai/dsh-host-plugin-inventory": ["./packages/host/plugin-inventory/src"],
|
|
"@deepseek-ai/dsh-host-plugin-inventory/types": ["./packages/host/plugin-inventory/src/types.ts"],
|
|
"@deepseek-ai/dsh-client-ui-slots": ["./packages/client/ui-slots/src"],
|
|
"@deepseek-ai/dsh-client-ui-attachment": ["./packages/client/ui-attachment/src"],
|
|
"@deepseek-ai/dsh-client-ui-primitives": ["./packages/client/ui-primitives/src"],
|
|
"@deepseek-ai/dsh-client-schema-form": ["./packages/client/schema-form/src"],
|
|
"@deepseek-ai/dsh-client-schema-form/invariant": ["./packages/client/schema-form/src/invariant.ts"],
|
|
"@deepseek-ai/dsh-client-web-react": ["./packages/client/web-react/src"],
|
|
"@deepseek-ai/dsh-client-connection": ["./packages/client/connection/src"],
|
|
"@deepseek-ai/dsh-api-remotes": ["./packages/api/remotes/src"],
|
|
"@deepseek-ai/dsh-api-remotes/client": ["./packages/api/remotes/src/client/index.ts"],
|
|
"@deepseek-ai/dsh-client-hmr": ["./packages/client/hmr/src"],
|
|
"@deepseek-ai/dsh-client-modules": ["./packages/client/modules/src"],
|
|
"@deepseek-ai/dsh-client-runtime": ["./packages/client/runtime/src"],
|
|
"@deepseek-ai/dsh-client-runtime/client": ["./packages/client/runtime/src/client"],
|
|
"@deepseek-ai/dsh-cordis-client-runner": ["./packages/extensions/cordis-client-runner/src"],
|
|
"@deepseek-ai/dsh-cordis-client-runner/client": ["./packages/extensions/cordis-client-runner/src/client"],
|
|
"@deepseek-ai/dsh-cordis-client-runner/invariant": ["./packages/extensions/cordis-client-runner/src/invariant.ts"],
|
|
"@deepseek-ai/dsh-client-ui-cordis": ["./packages/extensions/ui-cordis/src"],
|
|
"@deepseek-ai/dsh-client-ui-cordis/client": ["./packages/extensions/ui-cordis/src/client"],
|
|
"@deepseek-ai/dsh-client-ui-cordis/invariant": ["./packages/extensions/ui-cordis/src/invariant.ts"],
|
|
"@deepseek-ai/dsh-client-test-runtime": ["./packages/test-support/client-runtime/src"],
|
|
"@deepseek-ai/dsh-client-test-runtime/invariant": ["./packages/test-support/client-runtime/src/invariant.ts"],
|
|
"@deepseek-ai/dsh-client-ui-layout": ["./packages/client/ui-layout/src"],
|
|
"@deepseek-ai/dsh-client-ui-sidebar": ["./packages/client/ui-sidebar/src"],
|
|
"@deepseek-ai/dsh-client-ui-conversation": ["./packages/client/ui-conversation/src"],
|
|
"@deepseek-ai/dsh-client-ui-tool": ["./packages/client/ui-tool/src"],
|
|
"@deepseek-ai/dsh-client-ui-deliverables": ["./packages/client/ui-deliverables/src"],
|
|
"@deepseek-ai/dsh-client-ui-workflow-run": ["./packages/client/ui-workflow-run/src"],
|
|
"@deepseek-ai/dsh-client-ui-input-trigger": ["./packages/client/ui-input-trigger/src"],
|
|
"@deepseek-ai/dsh-client-ui-commands": ["./packages/client/ui-commands/src"],
|
|
"@deepseek-ai/dsh-client-ui-model-selection": ["./packages/client/ui-model-selection/src"],
|
|
"@deepseek-ai/dsh-client-ui-goal": ["./packages/client/ui-goal/src"],
|
|
"@deepseek-ai/dsh-client-ui-message-feedback": ["./packages/client/ui-message-feedback/src"],
|
|
"@deepseek-ai/dsh-client-ui-agent-preset": ["./packages/client/ui-agent-preset/src"],
|
|
"@deepseek-ai/dsh-client-ui-permission-presets": ["./packages/client/ui-permission-presets/src"],
|
|
"@deepseek-ai/dsh-client-ui-skill": ["./packages/client/ui-skill/src"],
|
|
"@deepseek-ai/dsh-client-ui-subagent": ["./packages/client/ui-subagent/src"],
|
|
"@deepseek-ai/dsh-client-ui-settings-plugins": ["./packages/client/ui-settings-plugins/src"],
|
|
"@deepseek-ai/dsh-client-ui-jobs": ["./packages/client/ui-jobs/src"],
|
|
"@deepseek-ai/dsh-client-ui-plan": ["./packages/client/ui-plan/src"],
|
|
"@deepseek-ai/dsh-client-ui-user-questions": ["./packages/client/ui-user-questions/src"],
|
|
"@deepseek-ai/dsh-client-ui-trajectory": ["./packages/client/ui-trajectory/src"],
|
|
"@deepseek-ai/dsh-client-ui-workspace": ["./packages/client/ui-workspace/src"],
|
|
"@deepseek-ai/dsh-client-ui-theme": ["./packages/client/ui-theme/src"],
|
|
"@deepseek-ai/dsh-client-ui-settings": ["./packages/client/ui-settings/src"],
|
|
"@deepseek-ai/dsh-client-ui-settings-general": ["./packages/client/ui-settings-general/src"],
|
|
"@deepseek-ai/dsh-client-ui-settings-models": ["./packages/client/ui-settings-models/src"],
|
|
"@deepseek-ai/dsh-client-ui-settings-plugin-inventory": ["./packages/client/ui-settings-plugin-inventory/src"],
|
|
"@deepseek-ai/dsh-client-locale": ["./packages/client/locale/src"],
|
|
"@deepseek-ai/dsh-client-web": ["./packages/client/web/src"],
|
|
// sdk/ folders are role-named without their npm-side sdk/jsonrpc prefixes,
|
|
// so the generic wildcard cannot map these three package names.
|
|
"@deepseek-ai/dsh-sdk-client": ["./packages/sdk/client/src"],
|
|
"@deepseek-ai/dsh-sdk-protocol": ["./packages/sdk/protocol/src"],
|
|
"@deepseek-ai/dsh-sdk-jsonrpc-server": ["./packages/sdk/server/src"],
|
|
"@deepseek-ai/dsh-*": [
|
|
"./packages/core/*/src",
|
|
"./packages/prompt/*/src",
|
|
"./packages/llm/*/src",
|
|
"./packages/shell/*/src",
|
|
"./packages/terminal/*/src",
|
|
"./packages/subprocess/*/src",
|
|
"./packages/e2b/*/src",
|
|
"./packages/code-runtime/*/src",
|
|
"./packages/fs/*/src",
|
|
"./packages/lsp/*/src",
|
|
"./packages/skill/*/src",
|
|
"./packages/compaction/*/src",
|
|
"./packages/context/*/src",
|
|
"./packages/goal/*/src",
|
|
"./packages/feedback/*/src",
|
|
"./packages/schedule/*/src",
|
|
"./packages/guard/*/src",
|
|
"./packages/plan/*/src",
|
|
"./packages/preset/*/src",
|
|
"./packages/subagent/*/src",
|
|
"./packages/jobs/*/src",
|
|
"./packages/workflow/*/src",
|
|
"./packages/web/*/src",
|
|
"./packages/attachment/*/src",
|
|
"./packages/spill/*/src",
|
|
"./packages/todo/*/src",
|
|
"./packages/bundle/*/src",
|
|
"./packages/extensions/*/src",
|
|
"./packages/sandbox/*/src",
|
|
"./packages/hooks/*/src",
|
|
"./packages/session/*/src",
|
|
"./packages/session-query/*/src",
|
|
"./packages/settings/*/src",
|
|
"./packages/credentials/*/src",
|
|
"./packages/acp/*/src",
|
|
"./packages/storage/*/src",
|
|
"./packages/workspace/*/src",
|
|
"./packages/sdk/*/src",
|
|
"./packages/interaction/*/src",
|
|
"./packages/boot/*/src",
|
|
"./packages/examples/*/src",
|
|
"./packages/util/*/src",
|
|
"./packages/mcp/*/src",
|
|
"./packages/identity/*/src",
|
|
"./packages/test-support/*/src",
|
|
"./packages/host/*/src",
|
|
"./packages/client/*/src"
|
|
]
|
|
}
|
|
}
|
|
}
|