fix(compact): complete master retarget integration

Declare the tool-result pruning plugin in the examples workspace so the repl Cordis configuration resolves through plain Node and the Loader metadata gate.

Express the validated single-node surface rewrite without a non-null assertion or an unreachable defensive branch, preserving both the runtime contract and per-file 100% coverage.
This commit is contained in:
Tianyi Cui
2026-07-19 18:11:48 +08:00
parent 6500de8402
commit 6e790b95f2
3 changed files with 22 additions and 20 deletions

View File

@@ -13,6 +13,7 @@
"@deepseek-ai/dsh-cli-demo": "workspace:*", "@deepseek-ai/dsh-cli-demo": "workspace:*",
"@deepseek-ai/dsh-code-runtime-worker": "workspace:*", "@deepseek-ai/dsh-code-runtime-worker": "workspace:*",
"@deepseek-ai/dsh-compact-basic": "workspace:*", "@deepseek-ai/dsh-compact-basic": "workspace:*",
"@deepseek-ai/dsh-compact-tool-result-prune": "workspace:*",
"@deepseek-ai/dsh-fs-local": "workspace:*", "@deepseek-ai/dsh-fs-local": "workspace:*",
"@deepseek-ai/dsh-fs-policy": "workspace:*", "@deepseek-ai/dsh-fs-policy": "workspace:*",
"@deepseek-ai/dsh-hooks-claude": "workspace:*", "@deepseek-ai/dsh-hooks-claude": "workspace:*",

View File

@@ -198,20 +198,18 @@ function assertToolResultRewrite(
if (shadowedSeqs.length !== 1) { if (shadowedSeqs.length !== 1) {
throw new Error('tool/result surface replacement must rewrite exactly one current node') throw new Error('tool/result surface replacement must rewrite exactly one current node')
} }
const originalSeq = shadowedSeqs[0] for (const originalSeq of shadowedSeqs) {
if (originalSeq === undefined) { const original = events[originalSeq]
throw new Error('tool/result surface replacement must rewrite exactly one current node') if (original?.type !== 'tool/result') {
} throw new Error('tool/result surface replacement must target a current tool/result')
const original = events[originalSeq] }
if (original?.type !== 'tool/result') { const originalRest = { ...original.data } as Record<string, unknown>
throw new Error('tool/result surface replacement must target a current tool/result') const replacementRest = { ...event.data } as Record<string, unknown>
} delete originalRest['content']
const originalRest = { ...original.data } as Record<string, unknown> delete replacementRest['content']
const replacementRest = { ...event.data } as Record<string, unknown> if (!isDeepStrictEqual(originalRest, replacementRest)) {
delete originalRest['content'] throw new Error('tool/result surface replacement may change only content')
delete replacementRest['content'] }
if (!isDeepStrictEqual(originalRest, replacementRest)) {
throw new Error('tool/result surface replacement may change only content')
} }
} }

15
pnpm-lock.yaml generated
View File

@@ -116,6 +116,9 @@ importers:
'@deepseek-ai/dsh-compact-basic': '@deepseek-ai/dsh-compact-basic':
specifier: workspace:* specifier: workspace:*
version: link:../packages/compact/compact-basic version: link:../packages/compact/compact-basic
'@deepseek-ai/dsh-compact-tool-result-prune':
specifier: workspace:*
version: link:../packages/compact/compact-tool-result-prune
'@deepseek-ai/dsh-fs-local': '@deepseek-ai/dsh-fs-local':
specifier: workspace:* specifier: workspace:*
version: link:../packages/fs/fs-local version: link:../packages/fs/fs-local
@@ -373,6 +376,9 @@ importers:
'@deepseek-ai/dsh-compact': '@deepseek-ai/dsh-compact':
specifier: workspace:^ specifier: workspace:^
version: link:../compact version: link:../compact
'@deepseek-ai/dsh-compact-tool-result-prune':
specifier: workspace:^
version: link:../compact-tool-result-prune
'@deepseek-ai/dsh-invariants': '@deepseek-ai/dsh-invariants':
specifier: workspace:^ specifier: workspace:^
version: link:../../support/invariants version: link:../../support/invariants
@@ -385,9 +391,6 @@ importers:
'@deepseek-ai/dsh-token-meter': '@deepseek-ai/dsh-token-meter':
specifier: workspace:^ specifier: workspace:^
version: link:../../llm/token-meter version: link:../../llm/token-meter
'@deepseek-ai/dsh-compact-tool-result-prune':
specifier: workspace:^
version: link:../compact-tool-result-prune
'@deepseek-ai/dsh-tools': '@deepseek-ai/dsh-tools':
specifier: workspace:^ specifier: workspace:^
version: link:../../core/tools version: link:../../core/tools
@@ -2492,6 +2495,9 @@ importers:
'@deepseek-ai/dsh-compact-basic': '@deepseek-ai/dsh-compact-basic':
specifier: workspace:^ specifier: workspace:^
version: link:../../packages/compact/compact-basic version: link:../../packages/compact/compact-basic
'@deepseek-ai/dsh-compact-tool-result-prune':
specifier: workspace:^
version: link:../../packages/compact/compact-tool-result-prune
'@deepseek-ai/dsh-fs': '@deepseek-ai/dsh-fs':
specifier: workspace:^ specifier: workspace:^
version: link:../../packages/fs/fs version: link:../../packages/fs/fs
@@ -2609,9 +2615,6 @@ importers:
'@deepseek-ai/dsh-tool-fs': '@deepseek-ai/dsh-tool-fs':
specifier: workspace:^ specifier: workspace:^
version: link:../../packages/fs/tool-fs version: link:../../packages/fs/tool-fs
'@deepseek-ai/dsh-compact-tool-result-prune':
specifier: workspace:^
version: link:../../packages/compact/compact-tool-result-prune
'@deepseek-ai/dsh-tool-skill': '@deepseek-ai/dsh-tool-skill':
specifier: workspace:^ specifier: workspace:^
version: link:../../packages/skill/tool-skill version: link:../../packages/skill/tool-skill