Files
deepseek-harness/knip.json
T
Yichen Jiang 4a79310339 feat(activity): optional live-output observation seam with a web viewer
Add the activity capability seam: ctx.activities is a pure observation
plane where long-running work (background bash/pwsh, workflow runs) opens a
handle, appends transient output into a byte-offset ring buffer, and settles
exactly once. Nothing model-visible changes: reads are non-consuming and
lossy-by-design (absolute UTF-8 offsets survive eviction and report gaps),
correlation carries {callId, jobId}, and visibility is owner-fenced like jobs.

The seam is strictly optional. Producers tap it through ctx.get('activities')
and contain every observation failure, so an unregistered or broken registry
never affects the underlying job (proven by broken-registry tests).

Ship the full path in one change:
- @deepseek-ai/dsh-activity: Service Definition, pumpActivityOutput pull
  substrate, invariant companion; dsh-activity-local: ring-buffer provider
  with retention config and owner cleanup.
- shell: ShellProcess.observed exposes non-consuming stdout/stderr readers;
  tool-bash/tool-pwsh mirror background jobs into activities.
- tool-workflow: phase/log/agent lines mirrored as a workflow activity.
- api-activity-controller: Typert Remote control (roster baseline+buckets)
  and observe (opened/output/status frames, coalesced and byte-capped)
  streams plus the client feed service with reference-counted observation.
- ui-activity: session-header action rendering live output through
  TerminalBlock, which now shows output while a command is still running.

Docs: activity subsystem page, architecture row, regenerated catalogs, and
the Agent Note (2026-08-24-activity-observation-seam), all bilingual. A
keyless web e2e replays a real run_in_background stream to ARIA goldens.
2026-08-24 22:40:14 +08:00

719 lines
16 KiB
JSON

{
"$schema": "https://unpkg.com/knip@5/schema.json",
"exclude": [
"duplicates"
],
"ignoreBinaries": [
"bwrap",
"icacls",
"musl-gcc",
"python3",
"sandbox-exec",
"tar",
"taskkill",
"where.exe"
],
"ignoreWorkspaces": [
"vendor/*",
"python/sdk-runtime"
],
"ignoreDependencies": [
"@yarnpkg/cli-dist",
"lightningcss"
],
"workspaces": {
".": {
"entry": [
"scripts/**/*.mjs",
"scripts/**/*.cjs",
"scripts/types/client-build-environment/index.d.ts"
],
"ignoreUnresolved": [
"client-build-environment"
],
"project": [
"scripts/**/*.ts",
"scripts/**/*.mjs",
"scripts/**/*.cjs"
]
},
"examples": {
"entry": [
"headless-agent/tests/fixtures/cli-mock-llm.ts",
"headless-agent/tests/fixtures/semantic-checkpoint-agent.ts",
"headless-agent/tests/fixtures/subagent-diagnostic-agent.ts",
"headless-agent/tests/fixtures/subagent-inheritance-agent.ts",
"headless-agent/tests/fixtures/subagent-settlement-fence.ts",
"headless-agent/tests/fixtures/workspace-context-resume-agent.ts",
"headless-agent/tests/fixtures/goal-domain/seed-goal.ts",
"headless-agent/tests/fixtures/time-context-driver.ts",
"headless-agent/tests/fixtures/time-context-mock-llm.ts",
"headless-agent/tests/fixtures/session-telemetry-otel-driver.ts",
"headless-agent/tests/fixtures/telemetry-redact-rule.ts",
"headless-agent/tests/fixtures/e2b/e2b/bin.ts",
"acp-agent/tests/snapshots/lsp-definition/workspace/subject.ts",
"acp-agent/tests/fixtures/child-question-tripwire.ts",
"acp-agent/tests/fixtures/parent-sandbox-override.ts",
"acp-agent/tests/fixtures/partial-landlock-sandbox.ts",
"acp-agent/tests/fixtures/subagent-durability-failure.ts",
"acp-agent/tests/fixtures/subagent-result-diagnostic.ts",
"acp-agent/tests/fixtures/subagent-report-fence.ts",
"acp-agent/tests/fixtures/subagent-settlement-marker.ts",
"acp-agent/tests/fixtures/workspace-context-compaction.ts",
"acp-agent/tests/fixtures/control-surface/control-surface-llm.ts",
"acp-agent/tests/fixtures/subagent/subagent-acp/mock-delegating-llm.ts",
"acp-agent/tests/fixtures/subagent/subagent-acp/driver.ts",
"acp-agent/tests/fixtures/subagent/subagent-claude-code/fixture.ts",
"acp-agent/tests/fixtures/subagent/subagent-claude-code/driver.ts",
"acp-agent/tests/fixtures/subagent/subagent-codex/fixture.ts",
"acp-agent/tests/fixtures/subagent/subagent-codex/driver.ts",
"python-sdk-agent/tests/fixtures/subagent/subagent-dsh-sdk/driver.ts",
"python-sdk-agent/tests/fixtures/subagent/subagent-dsh-sdk/child-mock-llm.ts",
"python-sdk-agent/tests/fixtures/subagent/subagent-dsh-sdk/mock-delegating-llm.ts",
"*/tests/**/*.e2e.ts",
"*/tests/**/*.snapshot.ts"
],
"project": [
"**/*.ts"
],
"ignoreDependencies": [
"@deepseek-ai/.+"
]
},
"packages/host/directory-picker-auto": {
"ignoreDependencies": [
"@deepseek-ai/dsh-client-ui-directory-picker-browse",
"@deepseek-ai/dsh-client-ui-directory-picker-native"
]
},
"packages/extensions/cordis-host-runner": {
"entry": [
"tests/**/*.spec.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
],
"ignoreDependencies": [
"zod"
]
},
"packages/host/directory-picker-native": {
"entry": [
"tests/**/*.spec.{ts,tsx}",
"tests/**/*.e2e.ts"
],
"project": [
"src/**/*.{ts,tsx}",
"tests/**/*.{ts,tsx}"
]
},
"packages/api/remotes": {
"entry": [
"tests/**/*.e2e.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/api/activity-controller": {
"ignoreDependencies": [
"zod"
]
},
"packages/api/workspace-controller": {
"ignoreDependencies": [
"zod"
]
},
"packages/client/ui-approval": {
"entry": [
"tests/**/*.spec.tsx"
],
"project": [
"src/**/*.{ts,tsx}",
"tests/**/*.tsx"
]
},
"packages/client/ui-conversation": {
"ignoreDependencies": [
"@deepseek-ai/dsh-client-ui-workspace"
]
},
"packages/client/ui-sidebar": {
"ignoreDependencies": [
"@deepseek-ai/dsh-client-ui-workspace"
]
},
"packages/client/ui-subagent": {
"ignoreDependencies": [
"@deepseek-ai/dsh-client-ui-input-trigger"
]
},
"packages/client/ui-primitives": {
"entry": [
"tests/**/*.spec.tsx"
],
"project": [
"src/**/*.ts",
"src/**/*.tsx",
"tests/**/*.tsx"
]
},
"packages/client/ui-goal": {
"entry": [
"tests/**/*.spec.tsx"
],
"project": [
"src/**/*.ts",
"src/**/*.tsx",
"tests/**/*.tsx"
]
},
"packages/client/ui-directory-picker-browse": {
"entry": [
"tests/**/*.spec.tsx"
],
"project": [
"src/**/*.ts",
"src/**/*.tsx",
"tests/**/*.tsx"
]
},
"packages/client/ui-directory-picker-native": {
"entry": [
"tests/**/*.spec.tsx"
],
"project": [
"src/**/*.ts",
"tests/**/*.tsx"
]
},
"packages/client/ui-deliverables": {
"entry": [
"tests/**/*.spec.tsx"
],
"project": [
"src/**/*.ts",
"src/**/*.tsx",
"tests/**/*.tsx"
]
},
"packages/client/ui-workflow-run": {
"entry": [
"tests/**/*.spec.tsx"
],
"project": [
"src/**/*.ts",
"src/**/*.tsx",
"tests/**/*.tsx"
]
},
"packages/client/ui-layout": {
"entry": [
"tests/**/*.spec.ts",
"tests/**/*.spec.tsx"
],
"project": [
"src/**/*.ts",
"src/**/*.tsx",
"tests/**/*.ts",
"tests/**/*.tsx"
]
},
"website": {
"project": [
"**/*.ts"
],
"ignoreDependencies": [
"@braintree/sanitize-url",
"cytoscape",
"cytoscape-cose-bilkent",
"dayjs",
"debug"
]
},
"packages/*/*": {
"entry": [
"tests/**/*.spec.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/experimental/webworker-runtime": {
"entry": [
"tests/**/*.spec.ts",
"tests/compile/transform-corpus-check.ts",
"tests/fixtures/vfs-example/workspace/src/preview.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
],
"ignoreDependencies": [
"buffer",
"@deepseek-ai/dsh-client-modules"
]
},
"packages/typert/generator": {
"entry": [
"tests/**/*.spec.ts",
"tests/fixtures/type-model/**/*.ts",
"tests/fixtures/remote-model/**/*.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/shell/bash-sandbox": {
"entry": [
"tests/**/*.spec.ts",
"tests/**/*.e2e.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/shell/pwsh-sandbox": {
"entry": [
"tests/**/*.spec.ts",
"tests/**/*.e2e.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/e2b/e2b": {
"entry": [
"tests/**/*.spec.ts",
"tests/**/*.e2e.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/context/time-context": {
"entry": [
"tests/**/*.spec.ts",
"tests/**/*.e2e.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/lsp/lsp-stdio": {
"entry": [
"tests/**/*.spec.ts",
"tests/**/*.e2e.ts",
"tests/fixture-server.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
],
"ignoreDependencies": [
"typescript-language-server"
]
},
"packages/sandbox/sandbox-local": {
"entry": [
"tests/**/*.spec.ts",
"tests/**/*.e2e.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/session/session-telemetry-otel": {
"entry": [
"tests/**/*.spec.ts",
"tests/**/*.e2e.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/util/brand": {
"project": [
"src/**/*.ts"
]
},
"packages/attachment/attachment": {
"project": [
"src/**/*.ts"
]
},
"packages/test-support/acp-snapshot": {
"entry": [
"tests/**/*.spec.ts",
"tests/fixtures/fake-acp-agent.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/test-support/loader-smoke": {
"entry": [
"tests/**/*.spec.ts",
"tests/fixtures/*.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/core/agent-loop": {
"entry": [
"tests/**/*.spec.ts",
"tests/**/*.e2e.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/goal/goal": {
"entry": [
"tests/**/*.spec.ts",
"tests/**/*.e2e.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/session-query/session-query-sqlite": {
"entry": [
"tests/**/*.spec.ts",
"tests/**/*.e2e.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/code-runtime/code-runtime-worker-thread": {
"entry": [
"tests/**/*.spec.ts",
"tests/**/*.e2e.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/code-runtime/code-runtime-python": {
"entry": [
"tests/**/*.spec.ts",
"tests/**/*.e2e.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/llm/llm-deepseek": {
"entry": [
"tests/**/*.spec.ts",
"tests/**/*.e2e.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/llm/llm-pi-ai": {
"entry": [
"tests/**/*.spec.ts",
"tests/**/*.e2e.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/session/session-title-first-prompt-llm": {
"entry": [
"tests/**/*.spec.ts",
"tests/**/*.e2e.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/context/agent-instructions": {
"entry": [
"tests/**/*.spec.ts",
"tests/**/*.e2e.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/context/file-reference": {
"ignoreDependencies": [
"zod"
]
},
"packages/context/session-reference": {
"ignoreDependencies": [
"zod"
]
},
"packages/session/session-checkpoint-policy": {
"entry": [
"tests/**/*.spec.ts",
"tests/**/*.e2e.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/web/web-search-exa": {
"entry": [
"tests/**/*.spec.ts",
"tests/**/*.e2e.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/web/web-search-perplexity": {
"entry": [
"tests/**/*.spec.ts",
"tests/**/*.e2e.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/workflow/workflow-worker-thread": {
"entry": [
"tests/**/*.spec.ts",
"tests/**/*.e2e.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/web/web-search-deepseek": {
"entry": [
"tests/**/*.spec.ts",
"tests/**/*.e2e.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/examples/agent-spine-demo": {
"entry": [
"tests/**/*.spec.ts",
"tests/**/*.e2e.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/sdk/server": {
"entry": [
"tests/**/*.spec.ts",
"tests/**/*.e2e.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/interaction/commands": {
"entry": [
"tests/**/*.spec.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
],
"ignoreDependencies": [
"zod"
]
},
"packages/subagent/subagent-spawn-in-process": {
"entry": [
"tests/**/*.spec.ts",
"tests/**/*.e2e.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/subagent/subagent-acp": {
"entry": [
"tests/**/*.spec.ts",
"tests/**/*.e2e.ts",
"tests/mock-acp-server.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/subagent/subagent-codex": {
"entry": [
"tests/**/*.spec.ts",
"tests/**/*.e2e.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/subagent/subagent-claude-code": {
"entry": [
"tests/**/*.spec.ts",
"tests/**/*.e2e.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/fs/tool-fs": {
"entry": [
"tests/**/*.spec.ts",
"tests/**/*.e2e.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/mcp/mcp-client": {
"entry": [
"tests/**/*.spec.ts",
"tests/**/*.e2e.ts",
"tests/fixture-server.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
],
"ignoreDependencies": [
"@modelcontextprotocol/server-everything",
"@modelcontextprotocol/server-filesystem"
]
},
"packages/client/web": {
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/client/ui-renderer": {
"entry": [
"tests/**/*.spec.tsx"
],
"project": [
"src/**/*.ts",
"src/**/*.tsx",
"tests/**/*.tsx"
]
},
"apps/web": {
"entry": [
"tests/**/*.e2e.ts",
"tests/**/*.perf.ts",
"tests/**/*.snapshot.ts",
"tests/support.ts",
"src/node-module-stub.ts",
"src/preview.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
],
"ignoreDependencies": [
"@deepseek-ai/dsh-client-store",
"@deepseek-ai/dsh-client-ui-primitives",
"@deepseek-ai/dsh-client-ui-slots",
"@types/react",
"@types/react-dom",
"react",
"react-dom"
]
},
"apps/cli": {
"entry": [
"tests/**/*.spec.ts",
"tests/**/*.e2e.ts",
"tests/**/*.snapshot.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
],
"ignoreDependencies": [
"@deepseek-ai/.+"
]
},
"packages/subagent/subagent-dsh-sdk": {
"entry": [
"tests/**/*.spec.ts",
"tests/**/*.e2e.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/bundle/base": {
"ignoreDependencies": [
"@deepseek-ai/.+"
]
},
"packages/bundle/headless": {
"ignoreDependencies": [
"@deepseek-ai/dsh-code-runtime-worker-thread"
]
},
"packages/bundle/acp-app": {
"ignoreDependencies": [
"@deepseek-ai/dsh-acp"
]
},
"packages/bundle/sdk-app": {
"ignoreDependencies": [
"@deepseek-ai/dsh-sdk-jsonrpc-server"
]
},
"packages/bundle/sdk-minimal": {
"ignoreDependencies": [
"@deepseek-ai/.+"
]
},
"packages/bundle/web-app": {
"ignoreDependencies": [
"@deepseek-ai/.+"
]
}
}
}