Files
deepseek-harness/knip.json
T
imccyu 6512e57047 feat(gui): dsh-client-hmr reload driver and the dshClient-discovered watch-build script
client-hmr is a normal plugin package composed into dev graphs only. It
listens on /plugins/events and reloads one plugin per rebuilt frame,
serialized: invalidate, prefetch (fresh factory registers while the old
fiber still serves), registry.delete before touching the fiber, drain
disposers, drop owned style tags, entry.refresh(), fiber.await() loud.
Dependency cascade costs zero client code — fiber activation epochs
re-load dependents through cordis itself. Reload is coarse by design;
no rollback in v1; self-reload works with a frame gap the next rebuild
heals.

scripts/dev-web.ts (pnpm run dev:web) is the convenience watch-build:
it discovers its package list by scanning packages/*/*/package.json for
dshClient platform "web" at startup — no hardcoded roster — and talks
no protocol to the host. Gate bookkeeping rides along: knip entries for
the new packages, README model-experience allowlist rows.
2026-07-24 02:09:42 +08:00

598 lines
12 KiB
JSON

{
"$schema": "https://unpkg.com/knip@5/schema.json",
"exclude": [
"duplicates"
],
"ignoreBinaries": [
"bwrap",
"python3",
"sandbox-exec"
],
"ignoreWorkspaces": [
"vendor/*",
"python/sdk-runtime"
],
"ignoreDependencies": [
"lightningcss"
],
"workspaces": {
".": {
"entry": [
"scripts/**/*.mjs",
"scripts/dev-web.ts"
],
"project": [
"scripts/**/*.ts",
"scripts/**/*.mjs"
]
},
"examples": {
"entry": [
"headless-agent/tests/fixtures/cli-mock-llm.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",
"acp-agent/tests/snapshots/lsp-definition/workspace/subject.ts",
"tui-agent/tests/fixtures/tui-scripted-llm.ts",
"acp-agent/tests/fixtures/subagent/subagent-acp/mock-delegating-llm.ts",
"acp-agent/tests/fixtures/subagent/subagent-acp/driver.ts",
"*/tests/**/*.e2e.ts",
"*/tests/**/*.snapshot.ts"
],
"project": [
"**/*.ts"
],
"ignoreDependencies": [
"@deepseek-ai/.+",
"@cordisjs/.+"
]
},
"packages/util/home": {
"entry": [
"tests/**/*.spec.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/host/webserver": {
"entry": [
"tests/**/*.spec.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/host/runtime": {
"entry": [
"tests/**/*.spec.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/client/web-ui": {
"entry": [
"tests/**/*.spec.{ts,tsx}"
],
"project": [
"src/**/*.{ts,tsx}",
"tests/**/*.{ts,tsx}"
]
},
"packages/client/runtime": {
"entry": [
"tests/**/*.spec.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/client/ui-primitives": {
"entry": [
"tests/**/*.spec.tsx"
],
"project": [
"src/**/*.ts",
"src/**/*.tsx",
"tests/**/*.tsx"
]
},
"packages/client/web-react": {
"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/bash/bash-sandbox": {
"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-local": {
"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/util/brand": {
"project": [
"src/**/*.ts"
]
},
"packages/util/timeout": {
"entry": [
"tests/**/*.spec.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/util/retention": {
"entry": [
"tests/**/*.spec.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/support/acp-snapshot": {
"entry": [
"tests/**/*.spec.ts",
"tests/fixtures/fake-acp-agent.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/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/goal/goal-session": {
"entry": [
"tests/**/*.spec.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/goal/tool-goal": {
"entry": [
"tests/**/*.spec.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": {
"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-title/session-title-first-message-llm": {
"entry": [
"tests/**/*.spec.ts",
"tests/**/*.e2e.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/context/workspace-context": {
"entry": [
"tests/**/*.spec.ts",
"tests/**/*.e2e.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/session-persistence/session-checkpoint-policy": {
"entry": ["tests/**/*.spec.ts", "tests/**/*.e2e.ts"],
"project": ["src/**/*.ts", "tests/**/*.ts"]
},
"packages/util/paths": {
"entry": [
"tests/**/*.spec.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-workerthread": {
"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/acp-demo": {
"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/ui/jsonrpc": {
"entry": [
"tests/**/*.spec.ts",
"tests/**/*.e2e.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/ui/commands": {
"entry": [
"tests/**/*.spec.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/examples/tui-demo": {
"entry": [
"tests/**/*.spec.ts",
"tests/**/*.e2e.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/examples/cli-demo": {
"entry": [
"tests/**/*.spec.ts",
"tests/**/*.e2e.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/ui/tui": {
"entry": [
"tests/**/*.spec.ts",
"tests/**/*.snapshot.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/examples/jsonrpc-demo": {
"project": [
"src/**/*.ts"
]
},
"packages/sdk/create-sdk": {
"entry": [
"src/bin.ts",
"tests/**/*.spec.ts",
"tests/**/*.e2e.ts",
"tests/**/*.snapshot.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/sdk/scripts": {
"entry": [
"src/bin.ts",
"tests/**/*.spec.ts",
"tests/**/*.snapshot.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
],
"ignoreDependencies": [
"node-addon-require-builtin"
]
},
"packages/subagent/subagent-spawn": {
"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-subprocess": {
"entry": [
"tests/**/*.spec.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/fs/tool-fs": {
"entry": [
"tests/**/*.spec.ts",
"tests/**/*.e2e.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
]
},
"packages/fs/tool-fs-search": {
"entry": [
"tests/**/*.spec.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
],
"ignoreBinaries": [
"rg"
]
},
"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",
"src/**/*.tsx",
"tests/**/*.tsx"
],
"ignoreDependencies": [
"@deepseek-ai/dsh-client-ui-theme"
]
},
"apps/web": {
"entry": [
"tests/**/*.e2e.ts",
"tests/**/*.snapshot.ts",
"tests/support.ts",
"src/node-module-stub.ts"
],
"project": [
"src/**/*.ts",
"tests/**/*.ts"
],
"ignoreDependencies": [
"@deepseek-ai/dsh-client-ui-primitives",
"@deepseek-ai/dsh-client-ui-slots",
"@deepseek-ai/dsh-client-web-react",
"@types/react",
"@types/react-dom",
"react",
"react-dom"
]
},
"apps/cli": {
"project": [
"src/**/*.ts"
],
"ignoreDependencies": [
"@deepseek-ai/dsh-client-.+"
]
},
"packages/client/modules": {
"project": [
"src/**/*.ts"
]
},
"packages/client/hmr": {
"project": [
"src/**/*.ts"
]
}
}
}