dsh-plugin-guide 0.3.1 → 0.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.es.md +1 -1
- package/README.hi.md +1 -1
- package/README.md +1 -1
- package/README.pt.md +1 -1
- package/README.zh.md +1 -1
- package/SKILL.md +1 -1
- package/dist/dsh-plugin-dev.js +5 -5
- package/guide/links.md +1 -1
- package/guide/plugin-dev-guide.md +1 -1
- package/guide/quick-reference.es.md +2 -2
- package/guide/quick-reference.hi.md +1 -1
- package/guide/quick-reference.md +2 -2
- package/guide/quick-reference.pt.md +2 -2
- package/guide/quick-reference.zh-CN.md +2 -2
- package/package.json +3 -3
- package/references/cordis-paper-and-community.md +1 -1
- package/references/official-docs/AGENTS.md +28 -23
- package/references/official-docs/README.i18n.yaml +2 -2
- package/references/official-docs/README.md +1 -1
- package/references/official-docs/README.zh.md +19 -9
- package/references/official-docs/SNAPSHOT.md +5 -5
- package/references/official-docs/THIRD_PARTY_NOTICES.md +36 -13
- package/references/official-docs/docs/AGENTS.md +4 -4
- package/references/official-docs/docs/agent-lifecycle.i18n.yaml +2 -2
- package/references/official-docs/docs/agent-lifecycle.md +1 -1
- package/references/official-docs/docs/agent-lifecycle.zh.md +2 -2
- package/references/official-docs/docs/api-gateway.i18n.yaml +2 -2
- package/references/official-docs/docs/api-gateway.md +8 -8
- package/references/official-docs/docs/api-gateway.zh.md +8 -8
- package/references/official-docs/docs/architecture.i18n.yaml +2 -2
- package/references/official-docs/docs/architecture.md +25 -8
- package/references/official-docs/docs/architecture.zh.md +38 -21
- package/references/official-docs/docs/capability-seams.i18n.yaml +2 -2
- package/references/official-docs/docs/capability-seams.md +134 -67
- package/references/official-docs/docs/capability-seams.zh.md +134 -67
- package/references/official-docs/docs/config-catalog.i18n.yaml +2 -2
- package/references/official-docs/docs/config-catalog.md +731 -403
- package/references/official-docs/docs/config-catalog.zh.md +747 -419
- package/references/official-docs/docs/cookbook/adding-a-package.i18n.yaml +2 -2
- package/references/official-docs/docs/cookbook/adding-a-package.md +3 -4
- package/references/official-docs/docs/cookbook/adding-a-package.zh.md +9 -8
- package/references/official-docs/docs/cookbook/{adding-a-conversation-node.i18n.yaml → adding-a-remote-api.i18n.yaml} +3 -3
- package/references/official-docs/docs/cookbook/adding-a-remote-api.md +197 -0
- package/references/official-docs/docs/cookbook/adding-a-remote-api.zh.md +197 -0
- package/references/official-docs/docs/cookbook/adding-a-settings-card.i18n.yaml +6 -0
- package/references/official-docs/docs/cookbook/adding-a-settings-card.md +102 -0
- package/references/official-docs/docs/cookbook/adding-a-settings-card.zh.md +102 -0
- package/references/official-docs/docs/cookbook/adding-a-tool.i18n.yaml +2 -2
- package/references/official-docs/docs/cookbook/adding-a-tool.md +11 -4
- package/references/official-docs/docs/cookbook/adding-a-tool.zh.md +16 -9
- package/references/official-docs/docs/cookbook/adding-a-vendored-package.i18n.yaml +2 -2
- package/references/official-docs/docs/cookbook/adding-a-vendored-package.md +2 -2
- package/references/official-docs/docs/cookbook/adding-a-vendored-package.zh.md +4 -4
- package/references/official-docs/docs/cookbook/adding-an-llm-adapter.i18n.yaml +2 -2
- package/references/official-docs/docs/cookbook/adding-an-llm-adapter.md +1 -1
- package/references/official-docs/docs/cookbook/adding-an-llm-adapter.zh.md +3 -3
- package/references/official-docs/docs/cookbook/extension-cookbook.i18n.yaml +2 -2
- package/references/official-docs/docs/cookbook/extension-cookbook.md +9 -8
- package/references/official-docs/docs/cookbook/extension-cookbook.zh.md +17 -14
- package/references/official-docs/docs/cookbook/maintaining-dsh-code-review.i18n.yaml +1 -1
- package/references/official-docs/docs/cookbook/maintaining-dsh-code-review.zh.md +1 -1
- package/references/official-docs/docs/cookbook/responding-to-pr-review-on-a-stack.i18n.yaml +1 -1
- package/references/official-docs/docs/cookbook/responding-to-pr-review-on-a-stack.zh.md +1 -1
- package/references/official-docs/docs/cordis-api/context.i18n.yaml +1 -1
- package/references/official-docs/docs/cordis-api/context.zh.md +1 -1
- package/references/official-docs/docs/cordis-api/events.i18n.yaml +1 -1
- package/references/official-docs/docs/cordis-api/events.zh.md +1 -1
- package/references/official-docs/docs/cordis-api/inherited.md +1 -1
- package/references/official-docs/docs/cordis-primer.i18n.yaml +2 -2
- package/references/official-docs/docs/cordis-primer.md +2 -1
- package/references/official-docs/docs/cordis-primer.zh.md +3 -2
- package/references/official-docs/docs/cordis-tutorial/01-first-plugin.i18n.yaml +1 -1
- package/references/official-docs/docs/cordis-tutorial/01-first-plugin.zh.md +4 -4
- package/references/official-docs/docs/cordis-tutorial/02-lifecycle-and-effects.i18n.yaml +1 -1
- package/references/official-docs/docs/cordis-tutorial/02-lifecycle-and-effects.zh.md +4 -4
- package/references/official-docs/docs/cordis-tutorial/03-services.i18n.yaml +1 -1
- package/references/official-docs/docs/cordis-tutorial/03-services.zh.md +4 -4
- package/references/official-docs/docs/cordis-tutorial/04-events.i18n.yaml +1 -1
- package/references/official-docs/docs/cordis-tutorial/04-events.zh.md +4 -4
- package/references/official-docs/docs/cordis-tutorial/05-config.i18n.yaml +1 -1
- package/references/official-docs/docs/cordis-tutorial/05-config.zh.md +2 -2
- package/references/official-docs/docs/cordis-tutorial/06-composition-and-hmr.i18n.yaml +1 -1
- package/references/official-docs/docs/cordis-tutorial/06-composition-and-hmr.zh.md +3 -3
- package/references/official-docs/docs/cordis-tutorial/07-into-the-harness.i18n.yaml +2 -2
- package/references/official-docs/docs/cordis-tutorial/07-into-the-harness.md +5 -4
- package/references/official-docs/docs/cordis-tutorial/07-into-the-harness.zh.md +11 -10
- package/references/official-docs/docs/cordis-tutorial/index.i18n.yaml +1 -1
- package/references/official-docs/docs/cordis-tutorial/index.zh.md +10 -10
- package/references/official-docs/docs/deepseek-llm-api-wire-extensions.i18n.yaml +6 -0
- package/references/official-docs/docs/deepseek-llm-api-wire-extensions.md +159 -0
- package/references/official-docs/docs/deepseek-llm-api-wire-extensions.zh.md +159 -0
- package/references/official-docs/docs/defensive-patterns.i18n.yaml +1 -1
- package/references/official-docs/docs/defensive-patterns.zh.md +3 -1
- package/references/official-docs/docs/development.i18n.yaml +2 -2
- package/references/official-docs/docs/development.md +9 -13
- package/references/official-docs/docs/development.zh.md +23 -21
- package/references/official-docs/docs/event-producer-consumer.i18n.yaml +2 -2
- package/references/official-docs/docs/event-producer-consumer.md +55 -46
- package/references/official-docs/docs/event-producer-consumer.zh.md +55 -46
- package/references/official-docs/docs/glossary.i18n.yaml +2 -2
- package/references/official-docs/docs/glossary.md +1 -1
- package/references/official-docs/docs/glossary.zh.md +1 -1
- package/references/official-docs/docs/graph-atlas.i18n.yaml +2 -2
- package/references/official-docs/docs/graph-atlas.md +0 -2
- package/references/official-docs/docs/graph-atlas.zh.md +7 -9
- package/references/official-docs/docs/i18n/README.i18n.yaml +2 -2
- package/references/official-docs/docs/i18n/README.md +7 -7
- package/references/official-docs/docs/i18n/README.zh.md +11 -9
- package/references/official-docs/docs/i18n/style-samples.md +3 -3
- package/references/official-docs/docs/i18n/translation-prompt.md +3 -3
- package/references/official-docs/docs/i18n/translation-rules.i18n.yaml +2 -2
- package/references/official-docs/docs/i18n/translation-rules.md +2 -2
- package/references/official-docs/docs/i18n/translation-rules.zh.md +3 -3
- package/references/official-docs/docs/module-graph.i18n.yaml +2 -2
- package/references/official-docs/docs/module-graph.md +660 -909
- package/references/official-docs/docs/module-graph.zh.md +662 -911
- package/references/official-docs/docs/persistence-catalog.i18n.yaml +2 -2
- package/references/official-docs/docs/persistence-catalog.md +185 -53
- package/references/official-docs/docs/persistence-catalog.zh.md +193 -61
- package/references/official-docs/docs/postmortem/0001-acp-default-export-drops-inject.i18n.yaml +2 -2
- package/references/official-docs/docs/postmortem/0001-acp-default-export-drops-inject.md +2 -2
- package/references/official-docs/docs/postmortem/0001-acp-default-export-drops-inject.zh.md +3 -3
- package/references/official-docs/docs/postmortem/0002-js-expression-disabled-filesystem-tools.i18n.yaml +2 -2
- package/references/official-docs/docs/postmortem/0002-js-expression-disabled-filesystem-tools.md +2 -2
- package/references/official-docs/docs/postmortem/0002-js-expression-disabled-filesystem-tools.zh.md +2 -2
- package/references/official-docs/docs/postmortem/0003-web-agent-gui-feedback-loop.i18n.yaml +2 -2
- package/references/official-docs/docs/postmortem/0003-web-agent-gui-feedback-loop.md +2 -2
- package/references/official-docs/docs/postmortem/0003-web-agent-gui-feedback-loop.zh.md +2 -2
- package/references/official-docs/docs/postmortem/0004-landlock-partial-notice-misclassified-child-failures.i18n.yaml +2 -2
- package/references/official-docs/docs/postmortem/0004-landlock-partial-notice-misclassified-child-failures.md +1 -1
- package/references/official-docs/docs/postmortem/0004-landlock-partial-notice-misclassified-child-failures.zh.md +2 -2
- package/references/official-docs/docs/postmortem/README.i18n.yaml +1 -1
- package/references/official-docs/docs/postmortem/README.zh.md +5 -5
- package/references/official-docs/docs/rescope.i18n.yaml +2 -2
- package/references/official-docs/docs/rescope.md +2 -2
- package/references/official-docs/docs/rescope.zh.md +3 -3
- package/references/official-docs/docs/subsystems/README.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/README.md +8 -2
- package/references/official-docs/docs/subsystems/README.zh.md +53 -47
- package/references/official-docs/docs/subsystems/agent-team.i18n.yaml +6 -0
- package/references/official-docs/docs/subsystems/agent-team.md +207 -0
- package/references/official-docs/docs/subsystems/agent-team.zh.md +207 -0
- package/references/official-docs/docs/subsystems/approval.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/approval.md +12 -12
- package/references/official-docs/docs/subsystems/approval.zh.md +13 -13
- package/references/official-docs/docs/subsystems/attachment.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/attachment.md +90 -7
- package/references/official-docs/docs/subsystems/attachment.zh.md +90 -7
- package/references/official-docs/docs/subsystems/client-modules.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/client-modules.md +69 -19
- package/references/official-docs/docs/subsystems/client-modules.zh.md +69 -19
- package/references/official-docs/docs/subsystems/code-runtime.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/code-runtime.md +12 -8
- package/references/official-docs/docs/subsystems/code-runtime.zh.md +13 -9
- package/references/official-docs/docs/subsystems/commands.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/commands.md +30 -7
- package/references/official-docs/docs/subsystems/commands.zh.md +31 -8
- package/references/official-docs/docs/subsystems/compaction.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/compaction.md +14 -14
- package/references/official-docs/docs/subsystems/compaction.zh.md +19 -19
- package/references/official-docs/docs/subsystems/conversation.i18n.yaml +6 -0
- package/references/official-docs/docs/{cookbook/adding-a-conversation-node.md → subsystems/conversation.md} +49 -24
- package/references/official-docs/docs/{cookbook/adding-a-conversation-node.zh.md → subsystems/conversation.zh.md} +49 -24
- package/references/official-docs/docs/subsystems/core.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/core.md +114 -36
- package/references/official-docs/docs/subsystems/core.zh.md +145 -65
- package/references/official-docs/docs/subsystems/credentials.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/credentials.md +207 -11
- package/references/official-docs/docs/subsystems/credentials.zh.md +207 -11
- package/references/official-docs/docs/subsystems/extensions.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/extensions.md +27 -9
- package/references/official-docs/docs/subsystems/extensions.zh.md +30 -12
- package/references/official-docs/docs/subsystems/feedback.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/feedback.md +6 -6
- package/references/official-docs/docs/subsystems/feedback.zh.md +6 -6
- package/references/official-docs/docs/subsystems/filesystem.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/filesystem.md +17 -7
- package/references/official-docs/docs/subsystems/filesystem.zh.md +19 -9
- package/references/official-docs/docs/subsystems/goal.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/goal.md +4 -4
- package/references/official-docs/docs/subsystems/goal.zh.md +8 -8
- package/references/official-docs/docs/subsystems/invariants.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/invariants.md +2 -2
- package/references/official-docs/docs/subsystems/invariants.zh.md +5 -5
- package/references/official-docs/docs/subsystems/jobs.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/jobs.md +3 -3
- package/references/official-docs/docs/subsystems/jobs.zh.md +6 -6
- package/references/official-docs/docs/subsystems/llm-streaming.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/llm-streaming.md +193 -22
- package/references/official-docs/docs/subsystems/llm-streaming.zh.md +199 -28
- package/references/official-docs/docs/subsystems/lsp.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/lsp.md +2 -2
- package/references/official-docs/docs/subsystems/lsp.zh.md +3 -3
- package/references/official-docs/docs/subsystems/permission-presets.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/permission-presets.md +8 -8
- package/references/official-docs/docs/subsystems/permission-presets.zh.md +8 -8
- package/references/official-docs/docs/subsystems/persistence.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/persistence.md +183 -173
- package/references/official-docs/docs/subsystems/persistence.zh.md +182 -172
- package/references/official-docs/docs/subsystems/plan.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/plan.md +4 -4
- package/references/official-docs/docs/subsystems/plan.zh.md +10 -10
- package/references/official-docs/docs/subsystems/sandbox.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/sandbox.md +5 -3
- package/references/official-docs/docs/subsystems/sandbox.zh.md +8 -6
- package/references/official-docs/docs/subsystems/schedule.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/schedule.md +9 -3
- package/references/official-docs/docs/subsystems/schedule.zh.md +11 -5
- package/references/official-docs/docs/subsystems/scope.i18n.yaml +1 -1
- package/references/official-docs/docs/subsystems/scope.zh.md +1 -1
- package/references/official-docs/docs/subsystems/session-projection.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/session-projection.md +148 -75
- package/references/official-docs/docs/subsystems/session-projection.zh.md +148 -75
- package/references/official-docs/docs/subsystems/session-query.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/session-query.md +30 -16
- package/references/official-docs/docs/subsystems/session-query.zh.md +31 -17
- package/references/official-docs/docs/subsystems/session-reference.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/session-reference.md +94 -7
- package/references/official-docs/docs/subsystems/session-reference.zh.md +95 -8
- package/references/official-docs/docs/subsystems/session-telemetry.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/session-telemetry.md +5 -6
- package/references/official-docs/docs/subsystems/session-telemetry.zh.md +9 -10
- package/references/official-docs/docs/subsystems/session-title.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/session-title.md +8 -8
- package/references/official-docs/docs/subsystems/session-title.zh.md +10 -10
- package/references/official-docs/docs/subsystems/session.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/session.md +376 -71
- package/references/official-docs/docs/subsystems/session.zh.md +392 -85
- package/references/official-docs/docs/subsystems/settings.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/settings.md +105 -10
- package/references/official-docs/docs/subsystems/settings.zh.md +105 -10
- package/references/official-docs/docs/subsystems/shell.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/shell.md +3 -3
- package/references/official-docs/docs/subsystems/shell.zh.md +11 -11
- package/references/official-docs/docs/subsystems/skills.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/skills.md +26 -3
- package/references/official-docs/docs/subsystems/skills.zh.md +29 -6
- package/references/official-docs/docs/subsystems/slots.i18n.yaml +6 -0
- package/references/official-docs/docs/subsystems/slots.md +175 -0
- package/references/official-docs/docs/subsystems/slots.zh.md +175 -0
- package/references/official-docs/docs/subsystems/spill.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/spill.md +4 -4
- package/references/official-docs/docs/subsystems/spill.zh.md +6 -6
- package/references/official-docs/docs/subsystems/storage.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/storage.md +38 -7
- package/references/official-docs/docs/subsystems/storage.zh.md +41 -10
- package/references/official-docs/docs/subsystems/subagent.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/subagent.md +148 -116
- package/references/official-docs/docs/subsystems/subagent.zh.md +158 -124
- package/references/official-docs/docs/subsystems/subprocess.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/subprocess.md +3 -3
- package/references/official-docs/docs/subsystems/subprocess.zh.md +5 -5
- package/references/official-docs/docs/subsystems/system-prompt.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/system-prompt.md +21 -8
- package/references/official-docs/docs/subsystems/system-prompt.zh.md +23 -10
- package/references/official-docs/docs/subsystems/terminal.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/terminal.md +2 -2
- package/references/official-docs/docs/subsystems/terminal.zh.md +4 -4
- package/references/official-docs/docs/subsystems/todo.i18n.yaml +6 -0
- package/references/official-docs/docs/subsystems/todo.md +32 -0
- package/references/official-docs/docs/subsystems/todo.zh.md +32 -0
- package/references/official-docs/docs/subsystems/token-meter.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/token-meter.md +29 -14
- package/references/official-docs/docs/subsystems/token-meter.zh.md +30 -15
- package/references/official-docs/docs/subsystems/tools.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/tools.md +46 -46
- package/references/official-docs/docs/subsystems/tools.zh.md +54 -54
- package/references/official-docs/docs/subsystems/typert.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/typert.md +65 -58
- package/references/official-docs/docs/subsystems/typert.zh.md +67 -60
- package/references/official-docs/docs/subsystems/user-questions.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/user-questions.md +35 -35
- package/references/official-docs/docs/subsystems/user-questions.zh.md +35 -35
- package/references/official-docs/docs/subsystems/web-client.i18n.yaml +6 -0
- package/references/official-docs/docs/subsystems/web-client.md +95 -0
- package/references/official-docs/docs/subsystems/web-client.zh.md +95 -0
- package/references/official-docs/docs/subsystems/web-server.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/web-server.md +55 -9
- package/references/official-docs/docs/subsystems/web-server.zh.md +56 -10
- package/references/official-docs/docs/subsystems/web.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/web.md +14 -7
- package/references/official-docs/docs/subsystems/web.zh.md +16 -9
- package/references/official-docs/docs/subsystems/webhook.i18n.yaml +6 -0
- package/references/official-docs/docs/subsystems/webhook.md +70 -0
- package/references/official-docs/docs/subsystems/webhook.zh.md +70 -0
- package/references/official-docs/docs/subsystems/workflow.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/workflow.md +8 -8
- package/references/official-docs/docs/subsystems/workflow.zh.md +13 -13
- package/references/official-docs/docs/subsystems/workspace.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/workspace.md +98 -5
- package/references/official-docs/docs/subsystems/workspace.zh.md +102 -9
- package/references/official-docs/docs/testing.i18n.yaml +2 -2
- package/references/official-docs/docs/testing.md +15 -10
- package/references/official-docs/docs/testing.zh.md +15 -10
- package/references/official-docs/docs/tool-catalog.i18n.yaml +2 -2
- package/references/official-docs/docs/tool-catalog.md +413 -61
- package/references/official-docs/docs/tool-catalog.zh.md +418 -63
- package/references/official-docs/docs/tool-execution-pipeline.i18n.yaml +2 -2
- package/references/official-docs/docs/tool-execution-pipeline.md +1 -1
- package/references/official-docs/docs/tool-execution-pipeline.zh.md +1 -1
- package/references/official-docs/docs/user/develop/basic/config.i18n.yaml +2 -2
- package/references/official-docs/docs/user/develop/basic/config.md +1 -1
- package/references/official-docs/docs/user/develop/basic/config.zh.md +4 -4
- package/references/official-docs/docs/user/develop/basic/index.i18n.yaml +1 -1
- package/references/official-docs/docs/user/develop/basic/index.zh.md +5 -5
- package/references/official-docs/docs/user/develop/basic/publish.i18n.yaml +2 -2
- package/references/official-docs/docs/user/develop/basic/publish.md +3 -3
- package/references/official-docs/docs/user/develop/basic/publish.zh.md +7 -7
- package/references/official-docs/docs/user/develop/basic/tool.i18n.yaml +2 -2
- package/references/official-docs/docs/user/develop/basic/tool.md +3 -3
- package/references/official-docs/docs/user/develop/basic/tool.zh.md +4 -4
- package/references/official-docs/docs/user/develop/framework/events.i18n.yaml +2 -2
- package/references/official-docs/docs/user/develop/framework/events.md +2 -2
- package/references/official-docs/docs/user/develop/framework/events.zh.md +3 -3
- package/references/official-docs/docs/user/develop/framework/index.i18n.yaml +1 -1
- package/references/official-docs/docs/user/develop/framework/index.zh.md +3 -3
- package/references/official-docs/docs/user/develop/framework/service.i18n.yaml +2 -2
- package/references/official-docs/docs/user/develop/framework/service.md +1 -1
- package/references/official-docs/docs/user/develop/framework/service.zh.md +3 -3
- package/references/official-docs/docs/user/develop/practice/dynamic-cordis.i18n.yaml +6 -0
- package/references/official-docs/docs/user/develop/practice/dynamic-cordis.md +15 -0
- package/references/official-docs/docs/user/develop/practice/dynamic-cordis.zh.md +15 -0
- package/references/official-docs/docs/user/develop/practice/index.i18n.yaml +2 -2
- package/references/official-docs/docs/user/develop/practice/index.md +1 -1
- package/references/official-docs/docs/user/develop/practice/index.zh.md +3 -3
- package/references/official-docs/docs/user/develop/practice/llm-adapter.i18n.yaml +2 -2
- package/references/official-docs/docs/user/develop/practice/llm-adapter.md +4 -3
- package/references/official-docs/docs/user/develop/practice/llm-adapter.zh.md +4 -3
- package/references/official-docs/docs/user/guide/github-review.i18n.yaml +6 -0
- package/references/official-docs/docs/user/guide/github-review.md +102 -0
- package/references/official-docs/docs/user/guide/github-review.zh.md +102 -0
- package/references/official-docs/docs/user/guide/index.i18n.yaml +2 -2
- package/references/official-docs/docs/user/guide/index.md +2 -2
- package/references/official-docs/docs/user/guide/index.zh.md +8 -8
- package/references/official-docs/docs/user/guide/mcp-memory.i18n.yaml +6 -0
- package/references/official-docs/docs/user/guide/mcp-memory.md +101 -0
- package/references/official-docs/docs/user/guide/mcp-memory.zh.md +101 -0
- package/references/official-docs/docs/user/guide/providers.i18n.yaml +2 -2
- package/references/official-docs/docs/user/guide/providers.md +40 -1
- package/references/official-docs/docs/user/guide/providers.zh.md +41 -2
- package/references/official-docs/docs/user/guide/python-sdk.i18n.yaml +2 -2
- package/references/official-docs/docs/user/guide/python-sdk.md +80 -34
- package/references/official-docs/docs/user/guide/python-sdk.zh.md +87 -41
- package/references/official-docs/docs/user/guide/schedule.i18n.yaml +6 -0
- package/references/official-docs/docs/user/guide/schedule.md +21 -0
- package/references/official-docs/docs/user/guide/schedule.zh.md +21 -0
- package/references/official-docs/docs/web-styling.i18n.yaml +2 -2
- package/references/official-docs/docs/web-styling.md +3 -0
- package/references/official-docs/docs/web-styling.zh.md +5 -2
- package/references/official-docs/packages/AGENTS.md +4 -3
- package/references/official-docs/packages/README.md +104 -59
- package/references/official-docs/vendor/README.md +1 -0
- package/references/official-docs/website-docs.ts +52 -11
- package/references/sources.md +2 -2
- package/references/website-pages.md +3 -3
- package/scripts/download-sources.ps1 +1 -1
- package/scripts/sync-official-docs.ps1 +19 -11
- package/scripts/verify-kit.ps1 +0 -4
- package/templates/js/README.es.md +1 -1
- package/templates/js/README.hi.md +1 -1
- package/templates/js/README.md +1 -1
- package/templates/js/README.pt.md +1 -1
- package/templates/js/README.zh.md +1 -1
- package/templates/js/package.json +4 -4
- package/templates/ts/README.es.md +1 -1
- package/templates/ts/README.hi.md +1 -1
- package/templates/ts/README.md +1 -1
- package/templates/ts/README.pt.md +1 -1
- package/templates/ts/README.zh.md +1 -1
- package/templates/ts/package.json +4 -4
- package/references/official-docs/examples/AGENTS.md +0 -20
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
|
|
6
6
|
[English](persistence-catalog.md) | 中文
|
|
7
7
|
|
|
8
|
-
会话持久事件日志中可能出现的所有事件类型:完整持久化的 `SessionEvent` 信封,以及可通过合并扩展的 `SessionEventMap` 中的每个成员,包括 `@deepseek-ai/dsh-session` 所属的词汇和本仓库中每个插件对 `@deepseek-ai/dsh-session/types` 的声明合并,并附有源 JSDoc、完整 payload 声明、surface 标记和声明位置。本文档是 [session.md](subsystems/session.md)(surface 排序与 `deriveMessages()` 投影)、[persistence.md](subsystems/persistence.md)(如何让日志持久化)和 [session.md](subsystems/session.md#cordis-surface) 中生成区域(实时总线接线;日志事件**不是** cordis 事件,它通过唯一的 `session/event` emit 到达监听器)的补充。
|
|
8
|
+
会话持久事件日志中可能出现的所有事件类型:完整持久化的 `SessionEvent` 信封,以及可通过合并扩展的 `SessionEventMap` 中的每个成员,包括 `@deepseek-ai/dsh-session` 所属的词汇和本仓库中每个插件对 `@deepseek-ai/dsh-session/types` 的声明合并,并附有源 JSDoc、完整 payload 声明、surface 标记和声明位置。本文档是 [session.md](subsystems/session.zh.md)(surface 排序与 `deriveMessages()` 投影)、[persistence.md](subsystems/persistence.zh.md)(如何让日志持久化)和 [session.md](subsystems/session.zh.md#cordis-surface) 中生成区域(实时总线接线;日志事件**不是** cordis 事件,它通过唯一的 `session/event` emit 到达监听器)的补充。
|
|
9
9
|
|
|
10
10
|
英文源文件根据源码生成(`scripts/gen-persistence-catalog.ts`),并由 `pnpm run verify-persistence-catalog`(`doc-sync`(文档同步门禁)的一部分)验证新鲜度;本中文文件作为经评审对侧通过双语配对维护。声明块保留源码声明和嵌套属性的 JSDoc,只移除其所在接口/模块带来的缩进,并使用 `ts persistence-catalog` 围栏(doc-typecheck 会跳过这些围栏,因为声明引用了其所属模块中的类型)。payload 中的类型名称会链接到记录该类型的页面。参见 [persistence-log-catalog Agent Note](../.agents/notes/archived/process/2026-07-04-persistence-log-catalog.md)。
|
|
11
11
|
|
|
12
|
-
以下信封声明组合了每个事件的 `type`、单调递增的 `seq`、以 epoch 毫秒表示的 `time`、`data`,以及条件字段 `surfaceOp`/`sourceEventSeqs`。**surface** 表示 `SurfaceEventType` 成员:它会生成一条 LLM(大语言模型)消息,并声明该事件如何加入 surface 列表。**log-only** 表示其他所有事件:这类记录可持久化、可回放,但不参与派生历史。每个 payload 均可进行 JSON 序列化(在 `Session.append` 处强制执行),整个格式固定为 `SESSION_FORMAT_VERSION = 0`:这是预发布格式,不暗示任何兼容性(参见[版本立场](subsystems/persistence.md))。范围仅限本仓库中的包;下游插件可以继续合并其他事件类型,而这些类型按设计不属于本目录。
|
|
12
|
+
以下信封声明组合了每个事件的 `type`、单调递增的 `seq`、以 epoch 毫秒表示的 `time`、`data`、可选的未知类型跳过标记 `ignorable`,以及条件字段 `surfaceOp`/`sourceEventSeqs`。**surface** 表示 `SurfaceEventType` 成员:它会生成一条 LLM(大语言模型)消息,并声明该事件如何加入 surface 列表。**log-only** 表示其他所有事件:这类记录可持久化、可回放,但不参与派生历史。每个 payload 均可进行 JSON 序列化(在 `Session.append` 处强制执行),整个格式固定为 `SESSION_FORMAT_VERSION = 0`:这是预发布格式,不暗示任何兼容性(参见[版本立场](subsystems/persistence.zh.md))。范围仅限本仓库中的包;下游插件可以继续合并其他事件类型,而这些类型按设计不属于本目录。
|
|
13
13
|
|
|
14
14
|
## 事件信封
|
|
15
15
|
|
|
@@ -42,7 +42,7 @@ export type SurfaceEventType =
|
|
|
42
42
|
*/
|
|
43
43
|
export type SurfaceOp =
|
|
44
44
|
| 'append'
|
|
45
|
-
| { op: 'replace'; start:
|
|
45
|
+
| { op: 'replace'; start: SessionSeq; end: SessionSeq }
|
|
46
46
|
|
|
47
47
|
/**
|
|
48
48
|
* One immutable entry in the session log.
|
|
@@ -61,10 +61,21 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
61
61
|
[K in SessionEventType]: {
|
|
62
62
|
type: K
|
|
63
63
|
/** Monotonic sequence number within the session. */
|
|
64
|
-
seq:
|
|
64
|
+
seq: SessionSeq
|
|
65
65
|
/** Unix epoch milliseconds. */
|
|
66
66
|
time: number
|
|
67
67
|
data: SessionEventMap[K]
|
|
68
|
+
/**
|
|
69
|
+
* Marks an event a reader may safely skip when it does not recognize
|
|
70
|
+
* `type`. Absent means required: a reader meeting an unrecognized type
|
|
71
|
+
* without this marker MUST refuse to reconstruct the session instead of
|
|
72
|
+
* silently dropping the event, because an unrecognized required event may
|
|
73
|
+
* change how the rest of the log is interpreted. A writer sets `true` only
|
|
74
|
+
* on purely informational records whose loss cannot affect reconstruction;
|
|
75
|
+
* defaulting to required means a forgotten marker over-refuses (an
|
|
76
|
+
* inconvenience) rather than silently resuming a gutted session.
|
|
77
|
+
*/
|
|
78
|
+
ignorable?: true
|
|
68
79
|
} & (K extends SurfaceEventType ? {
|
|
69
80
|
/**
|
|
70
81
|
* Seq numbers of earlier events that this event cites as sources
|
|
@@ -74,14 +85,14 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
74
85
|
* provider stream; when the field is absent, the event does not record which
|
|
75
86
|
* earlier events produced the message.
|
|
76
87
|
*/
|
|
77
|
-
sourceEventSeqs?:
|
|
88
|
+
sourceEventSeqs?: SessionSeq[]
|
|
78
89
|
/** How this event entered the surface; absent for non-surface events. */
|
|
79
90
|
surfaceOp?: SurfaceOp
|
|
80
91
|
} : object)
|
|
81
92
|
}[T]
|
|
82
93
|
```
|
|
83
94
|
|
|
84
|
-
来源:[`packages/core/session/src/types.ts:
|
|
95
|
+
来源:[`packages/core/session/src/types.ts:368`](../packages/core/session/src/types.ts) · [`packages/core/session/src/types.ts:375`](../packages/core/session/src/types.ts) · [`packages/core/session/src/types.ts:404`](../packages/core/session/src/types.ts) · [`packages/core/session/src/types.ts:436`](../packages/core/session/src/types.ts)
|
|
85
96
|
|
|
86
97
|
## 事件
|
|
87
98
|
|
|
@@ -106,7 +117,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
106
117
|
}
|
|
107
118
|
```
|
|
108
119
|
|
|
109
|
-
来源:[`packages/core/agent/src/types.ts:
|
|
120
|
+
来源:[`packages/core/agent/src/types.ts:58`](../packages/core/agent/src/types.ts)
|
|
110
121
|
|
|
111
122
|
### `agent-preset/*`
|
|
112
123
|
|
|
@@ -124,7 +135,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
124
135
|
'agent-preset/selected': { agentPreset: string }
|
|
125
136
|
```
|
|
126
137
|
|
|
127
|
-
来源:[`packages/preset/agent-presets/src/session.ts:
|
|
138
|
+
来源:[`packages/preset/agent-presets/src/session.ts:28`](../packages/preset/agent-presets/src/session.ts)
|
|
128
139
|
|
|
129
140
|
### `approval/*`
|
|
130
141
|
|
|
@@ -144,14 +155,14 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
144
155
|
'approval/asked': {
|
|
145
156
|
id: ApprovalRequestId
|
|
146
157
|
toolName: string
|
|
147
|
-
callId?:
|
|
158
|
+
callId?: ToolCallId
|
|
148
159
|
reason?: string
|
|
149
160
|
}
|
|
150
161
|
```
|
|
151
162
|
|
|
152
|
-
类型:[
|
|
163
|
+
类型:[ToolCallId](subsystems/core.zh.md)
|
|
153
164
|
|
|
154
|
-
来源:[`packages/interaction/user-approval/src/
|
|
165
|
+
来源:[`packages/interaction/user-approval/src/types.ts:44`](../packages/interaction/user-approval/src/types.ts)
|
|
155
166
|
|
|
156
167
|
<a id="approvaldecided--log-only"></a>
|
|
157
168
|
|
|
@@ -169,7 +180,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
169
180
|
}
|
|
170
181
|
```
|
|
171
182
|
|
|
172
|
-
来源:[`packages/interaction/user-approval/src/
|
|
183
|
+
来源:[`packages/interaction/user-approval/src/types.ts:55`](../packages/interaction/user-approval/src/types.ts)
|
|
173
184
|
|
|
174
185
|
<a id="approvalpolicy--log-only"></a>
|
|
175
186
|
|
|
@@ -180,7 +191,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
180
191
|
* The session's approval policy was switched — log-only, durable,
|
|
181
192
|
* replayable, never in the model transcript (the model learns the policy
|
|
182
193
|
* from the runtime-context snapshot and live switch notices). The LAST
|
|
183
|
-
* such event is the session's override
|
|
194
|
+
* such event is the session's override.
|
|
184
195
|
* `source: 'delegation'` marks an override seeded into a child; an absent
|
|
185
196
|
* source is a runtime switch.
|
|
186
197
|
*/
|
|
@@ -191,7 +202,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
191
202
|
}
|
|
192
203
|
```
|
|
193
204
|
|
|
194
|
-
来源:[`packages/interaction/user-approval/src/index.ts:
|
|
205
|
+
来源:[`packages/interaction/user-approval/src/index.ts:32`](../packages/interaction/user-approval/src/index.ts)
|
|
195
206
|
|
|
196
207
|
### `assistant/*`
|
|
197
208
|
|
|
@@ -204,9 +215,9 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
204
215
|
'assistant/chunk': { turn: number; step: number; chunk: StreamChunk }
|
|
205
216
|
```
|
|
206
217
|
|
|
207
|
-
类型:[StreamChunk](subsystems/llm-streaming.md)
|
|
218
|
+
类型:[StreamChunk](subsystems/llm-streaming.zh.md)
|
|
208
219
|
|
|
209
|
-
来源:[`packages/core/session/src/types.ts:
|
|
220
|
+
来源:[`packages/core/session/src/types.ts:291`](../packages/core/session/src/types.ts)
|
|
210
221
|
|
|
211
222
|
<a id="assistantmessage--surface"></a>
|
|
212
223
|
|
|
@@ -217,14 +228,18 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
217
228
|
* Assembled assistant message for one step (derived history uses this).
|
|
218
229
|
* Carries the step's `usage` when the adapter reported token accounting, so
|
|
219
230
|
* the model output and its accounting travel together (there is no separate
|
|
220
|
-
* usage record). `usage` is absent when the adapter reported none.
|
|
231
|
+
* usage record). `usage` is absent when the adapter reported none. A turn
|
|
232
|
+
* cancelled mid-stream finalizes its delivered text/reasoning prefix as this
|
|
233
|
+
* event with `interrupted: true`; undispatched tool calls are absent. The
|
|
234
|
+
* marker distinguishes that prefix without re-deriving interruption from turn
|
|
235
|
+
* boundaries. An aborted turn with no such event streamed no visible content.
|
|
221
236
|
*/
|
|
222
|
-
'assistant/message': { turn: number; step: number; message: AssistantMessage; usage?: TokenUsage }
|
|
237
|
+
'assistant/message': { turn: number; step: number; message: AssistantMessage; usage?: TokenUsage; interrupted?: true }
|
|
223
238
|
```
|
|
224
239
|
|
|
225
|
-
类型:[TokenUsage](subsystems/llm-streaming.md)
|
|
240
|
+
类型:[TokenUsage](subsystems/llm-streaming.zh.md)
|
|
226
241
|
|
|
227
|
-
来源:[`packages/core/session/src/types.ts:
|
|
242
|
+
来源:[`packages/core/session/src/types.ts:302`](../packages/core/session/src/types.ts)
|
|
228
243
|
|
|
229
244
|
### `command/*`
|
|
230
245
|
|
|
@@ -243,11 +258,11 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
243
258
|
commandId: CommandId
|
|
244
259
|
kind: 'success' | 'error'
|
|
245
260
|
text?: string
|
|
246
|
-
sourceEventSeq?:
|
|
261
|
+
sourceEventSeq?: import('@deepseek-ai/dsh-session/types').SessionSeq
|
|
247
262
|
}
|
|
248
263
|
```
|
|
249
264
|
|
|
250
|
-
来源:[`packages/interaction/commands/src/types.ts:
|
|
265
|
+
来源:[`packages/interaction/commands/src/types.ts:104`](../packages/interaction/commands/src/types.ts)
|
|
251
266
|
|
|
252
267
|
<a id="commandrun--log-only"></a>
|
|
253
268
|
|
|
@@ -267,7 +282,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
267
282
|
'command/run': { commandId: CommandId; name: string; args?: string; source: CommandSource }
|
|
268
283
|
```
|
|
269
284
|
|
|
270
|
-
来源:[`packages/interaction/commands/src/types.ts:
|
|
285
|
+
来源:[`packages/interaction/commands/src/types.ts:97`](../packages/interaction/commands/src/types.ts)
|
|
271
286
|
|
|
272
287
|
### `compaction/*`
|
|
273
288
|
|
|
@@ -283,7 +298,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
283
298
|
'compaction/end': { compactionId: CompactionId; sourceCommandId?: CommandId; turn: number | null; error?: string }
|
|
284
299
|
```
|
|
285
300
|
|
|
286
|
-
来源:[`packages/compaction/compaction/src/types.ts:
|
|
301
|
+
来源:[`packages/compaction/compaction/src/types.ts:72`](../packages/compaction/compaction/src/types.ts)
|
|
287
302
|
|
|
288
303
|
<a id="compactionprune--log-only"></a>
|
|
289
304
|
|
|
@@ -301,15 +316,15 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
301
316
|
*/
|
|
302
317
|
'compaction/prune': {
|
|
303
318
|
/** The replaced range's first and last surface-node seqs (a surface-position span, like {@link CompactionResult.shadowedRange}). */
|
|
304
|
-
shadowedRange: { start:
|
|
319
|
+
shadowedRange: { start: SessionSeq; end: SessionSeq }
|
|
305
320
|
/** The seqs of all shadowed surface nodes, in surface order. */
|
|
306
|
-
shadowedSeqs:
|
|
321
|
+
shadowedSeqs: SessionSeq[]
|
|
307
322
|
/** Heuristic price of the shadowed content under the token-meter's fixed estimator. */
|
|
308
323
|
shadowedTokenCount: number
|
|
309
324
|
}
|
|
310
325
|
```
|
|
311
326
|
|
|
312
|
-
来源:[`packages/compaction/compaction/src/types.ts:
|
|
327
|
+
来源:[`packages/compaction/compaction/src/types.ts:82`](../packages/compaction/compaction/src/types.ts)
|
|
313
328
|
|
|
314
329
|
<a id="compactionstart--log-only"></a>
|
|
315
330
|
|
|
@@ -324,7 +339,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
324
339
|
'compaction/start': { compactionId: CompactionId; sourceCommandId?: CommandId; turn: number | null }
|
|
325
340
|
```
|
|
326
341
|
|
|
327
|
-
来源:[`packages/compaction/compaction/src/types.ts:
|
|
342
|
+
来源:[`packages/compaction/compaction/src/types.ts:24`](../packages/compaction/compaction/src/types.ts)
|
|
328
343
|
|
|
329
344
|
<a id="compactionsummary--log-only"></a>
|
|
330
345
|
|
|
@@ -344,8 +359,8 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
344
359
|
compactionId: CompactionId
|
|
345
360
|
sourceCommandId?: CommandId
|
|
346
361
|
summary: ContentBlock[]
|
|
347
|
-
shadowedRange: { start:
|
|
348
|
-
shadowedSeqs:
|
|
362
|
+
shadowedRange: { start: SessionSeq; end: SessionSeq }
|
|
363
|
+
shadowedSeqs: SessionSeq[]
|
|
349
364
|
shadowedTokenCount: number
|
|
350
365
|
/** The provider route that wrote the summary. */
|
|
351
366
|
provider: string
|
|
@@ -376,9 +391,9 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
376
391
|
)
|
|
377
392
|
```
|
|
378
393
|
|
|
379
|
-
类型:[ContentBlock](subsystems/core.md) · [TokenUsage](subsystems/llm-streaming.md)
|
|
394
|
+
类型:[ContentBlock](subsystems/core.zh.md) · [TokenUsage](subsystems/llm-streaming.zh.md)
|
|
380
395
|
|
|
381
|
-
来源:[`packages/compaction/compaction/src/types.ts:
|
|
396
|
+
来源:[`packages/compaction/compaction/src/types.ts:34`](../packages/compaction/compaction/src/types.ts)
|
|
382
397
|
|
|
383
398
|
### `feedback/*`
|
|
384
399
|
|
|
@@ -485,6 +500,22 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
485
500
|
|
|
486
501
|
来源:[`packages/llm/llm-retry/src/types.ts:11`](../packages/llm/llm-retry/src/types.ts)
|
|
487
502
|
|
|
503
|
+
### `model/*`
|
|
504
|
+
|
|
505
|
+
<a id="modelselection--log-only"></a>
|
|
506
|
+
|
|
507
|
+
#### `model/selection` — log-only
|
|
508
|
+
|
|
509
|
+
```ts persistence-catalog
|
|
510
|
+
/**
|
|
511
|
+
* Complete validated model selection requested for subsequent prompt
|
|
512
|
+
* assembly. Log-only: it never enters derived model history.
|
|
513
|
+
*/
|
|
514
|
+
'model/selection': ModelSelection
|
|
515
|
+
```
|
|
516
|
+
|
|
517
|
+
来源:[`packages/api/session-controller/src/types.ts:41`](../packages/api/session-controller/src/types.ts)
|
|
518
|
+
|
|
488
519
|
### `permission/*`
|
|
489
520
|
|
|
490
521
|
<a id="permissionpreset--log-only"></a>
|
|
@@ -495,13 +526,13 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
495
526
|
/**
|
|
496
527
|
* Records the selected preset as durable, log-only user intent. The knob
|
|
497
528
|
* events follow in the same turn and control execution; this event stays
|
|
498
|
-
* out of the model transcript and lets
|
|
529
|
+
* out of the model transcript and lets the permission projection unit
|
|
499
530
|
* preserve a selection when bundles match.
|
|
500
531
|
*/
|
|
501
532
|
'permission/preset': { preset: string }
|
|
502
533
|
```
|
|
503
534
|
|
|
504
|
-
来源:[`packages/interaction/permission-presets/src/index.ts:
|
|
535
|
+
来源:[`packages/interaction/permission-presets/src/index.ts:53`](../packages/interaction/permission-presets/src/index.ts)
|
|
505
536
|
|
|
506
537
|
### `plan/*`
|
|
507
538
|
|
|
@@ -513,12 +544,12 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
513
544
|
/**
|
|
514
545
|
* Whether plan mode is in force from this point on: log-only, non-surface,
|
|
515
546
|
* whole-value replace. The last `plan/mode` wins; a log with none folds to
|
|
516
|
-
* inactive through
|
|
547
|
+
* inactive through the projection unit's fold.
|
|
517
548
|
*/
|
|
518
549
|
'plan/mode': { active: boolean }
|
|
519
550
|
```
|
|
520
551
|
|
|
521
|
-
来源:[`packages/plan/plan-mode/src/index.ts:
|
|
552
|
+
来源:[`packages/plan/plan-mode/src/index.ts:46`](../packages/plan/plan-mode/src/index.ts)
|
|
522
553
|
|
|
523
554
|
### `request/*`
|
|
524
555
|
|
|
@@ -534,7 +565,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
534
565
|
'request/context': RequestContext
|
|
535
566
|
```
|
|
536
567
|
|
|
537
|
-
来源:[`packages/core/session/src/types.ts:
|
|
568
|
+
来源:[`packages/core/session/src/types.ts:341`](../packages/core/session/src/types.ts)
|
|
538
569
|
|
|
539
570
|
<a id="requestheader--log-only"></a>
|
|
540
571
|
|
|
@@ -545,10 +576,15 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
545
576
|
* Full header for the next request, appended inside its step before dispatch.
|
|
546
577
|
* It is log-only; the latest snapshot reconstructs the request header.
|
|
547
578
|
*/
|
|
548
|
-
'request/header': {
|
|
579
|
+
'request/header': {
|
|
580
|
+
header: EpochHeader
|
|
581
|
+
reason: RequestHeaderReason
|
|
582
|
+
/** A changed header also begins a distinct model-message series. */
|
|
583
|
+
startsSeries?: true
|
|
584
|
+
}
|
|
549
585
|
```
|
|
550
586
|
|
|
551
|
-
来源:[`packages/core/session/src/types.ts:
|
|
587
|
+
来源:[`packages/core/session/src/types.ts:331`](../packages/core/session/src/types.ts)
|
|
552
588
|
|
|
553
589
|
### `sandbox/*`
|
|
554
590
|
|
|
@@ -561,7 +597,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
561
597
|
* The session's sandbox mode was switched — log-only (like `approval/*`;
|
|
562
598
|
* NOT a surface event, carries no `surfaceOp`): durable and replayable,
|
|
563
599
|
* never in the model transcript. The LAST such event is the session's
|
|
564
|
-
* override (
|
|
600
|
+
* override (folded by the sandboxMode projection unit). `source: 'delegation'` marks
|
|
565
601
|
* an override seeded into a child; an absent source is a runtime switch.
|
|
566
602
|
*/
|
|
567
603
|
'sandbox/mode': {
|
|
@@ -587,7 +623,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
587
623
|
'schedule/change': ScheduleChange
|
|
588
624
|
```
|
|
589
625
|
|
|
590
|
-
类型:[ScheduleChange](subsystems/schedule.md)
|
|
626
|
+
类型:[ScheduleChange](subsystems/schedule.zh.md)
|
|
591
627
|
|
|
592
628
|
来源:[`packages/schedule/schedule/src/types.ts:219`](../packages/schedule/schedule/src/types.ts)
|
|
593
629
|
|
|
@@ -623,7 +659,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
623
659
|
'session/end-seed': Record<string, never>
|
|
624
660
|
```
|
|
625
661
|
|
|
626
|
-
来源:[`packages/core/session/src/types.ts:
|
|
662
|
+
来源:[`packages/core/session/src/types.ts:364`](../packages/core/session/src/types.ts)
|
|
627
663
|
|
|
628
664
|
<a id="sessiontitle--log-only"></a>
|
|
629
665
|
|
|
@@ -637,9 +673,9 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
637
673
|
'session/title': SessionTitleEventData
|
|
638
674
|
```
|
|
639
675
|
|
|
640
|
-
类型:[SessionTitleEventData](subsystems/session-title.md)
|
|
676
|
+
类型:[SessionTitleEventData](subsystems/session-title.zh.md)
|
|
641
677
|
|
|
642
|
-
来源:[`packages/session/session-title/src/index.ts:
|
|
678
|
+
来源:[`packages/session/session-title/src/index.ts:77`](../packages/session/session-title/src/index.ts)
|
|
643
679
|
|
|
644
680
|
<a id="sessiontitle-llm-request--log-only"></a>
|
|
645
681
|
|
|
@@ -650,9 +686,27 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
650
686
|
'session/title-llm-request': SessionTitleLlmRequestEventData
|
|
651
687
|
```
|
|
652
688
|
|
|
653
|
-
类型:[SessionTitleLlmRequestEventData](subsystems/session-title.md)
|
|
689
|
+
类型:[SessionTitleLlmRequestEventData](subsystems/session-title.zh.md)
|
|
690
|
+
|
|
691
|
+
来源:[`packages/session/session-title-llm/src/index.ts:45`](../packages/session/session-title-llm/src/index.ts)
|
|
692
|
+
|
|
693
|
+
### `session-log-deepseek/*`
|
|
694
|
+
|
|
695
|
+
<a id="session-log-deepseekdelivery-accepted--log-only"></a>
|
|
654
696
|
|
|
655
|
-
|
|
697
|
+
#### `session-log-deepseek/delivery-accepted` — log-only
|
|
698
|
+
|
|
699
|
+
```ts persistence-catalog
|
|
700
|
+
/** Records that the configured endpoint accepted one delivery through `throughSeq`. */
|
|
701
|
+
'session-log-deepseek/delivery-accepted': {
|
|
702
|
+
/** Session identity the accepted delivery carried; inherited fork markers retain the parent's id. */
|
|
703
|
+
sessionId: import('@deepseek-ai/dsh-session/types').SessionId
|
|
704
|
+
/** Last canonical event included in the accepted request. */
|
|
705
|
+
throughSeq: import('@deepseek-ai/dsh-session/types').SessionSeq
|
|
706
|
+
}
|
|
707
|
+
```
|
|
708
|
+
|
|
709
|
+
来源:[`packages/session/session-log-deepseek/src/types.ts:57`](../packages/session/session-log-deepseek/src/types.ts)
|
|
656
710
|
|
|
657
711
|
### `step/*`
|
|
658
712
|
|
|
@@ -665,7 +719,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
665
719
|
'step/end': { turn: number; step: number }
|
|
666
720
|
```
|
|
667
721
|
|
|
668
|
-
来源:[`packages/core/session/src/types.ts:
|
|
722
|
+
来源:[`packages/core/session/src/types.ts:281`](../packages/core/session/src/types.ts)
|
|
669
723
|
|
|
670
724
|
<a id="stepstart--log-only"></a>
|
|
671
725
|
|
|
@@ -676,7 +730,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
676
730
|
'step/start': { turn: number; step: number }
|
|
677
731
|
```
|
|
678
732
|
|
|
679
|
-
来源:[`packages/core/session/src/types.ts:
|
|
733
|
+
来源:[`packages/core/session/src/types.ts:279`](../packages/core/session/src/types.ts)
|
|
680
734
|
|
|
681
735
|
### `subagent/*`
|
|
682
736
|
|
|
@@ -695,7 +749,85 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
695
749
|
'subagent/descriptor': SubagentDescriptorData
|
|
696
750
|
```
|
|
697
751
|
|
|
698
|
-
来源:[`packages/subagent/subagent/src/descriptor.ts:
|
|
752
|
+
来源:[`packages/subagent/subagent/src/descriptor.ts:38`](../packages/subagent/subagent/src/descriptor.ts)
|
|
753
|
+
|
|
754
|
+
<a id="subagentmodel-selection-policy--log-only"></a>
|
|
755
|
+
|
|
756
|
+
#### `subagent/model-selection-policy` — 仅日志
|
|
757
|
+
|
|
758
|
+
```ts persistence-catalog
|
|
759
|
+
/**
|
|
760
|
+
* Records that this session's delegation tool exposes child provider,
|
|
761
|
+
* model, and reasoning-effort selection. Appended before the first model
|
|
762
|
+
* request; absence means the fixed-route definition. Log-only: it carries
|
|
763
|
+
* no `surfaceOp` and never enters model history.
|
|
764
|
+
*/
|
|
765
|
+
'subagent/model-selection-policy': {
|
|
766
|
+
/** Exact routes this Session may select explicitly for a child. */
|
|
767
|
+
allowedModels: AllowedModelRoute[]
|
|
768
|
+
}
|
|
769
|
+
```
|
|
770
|
+
|
|
771
|
+
来源:[`packages/subagent/tool-subagent/src/model-selection-state.ts:17`](../packages/subagent/tool-subagent/src/model-selection-state.ts)
|
|
772
|
+
|
|
773
|
+
### `team/*`
|
|
774
|
+
|
|
775
|
+
<a id="teammember--log-only"></a>
|
|
776
|
+
|
|
777
|
+
#### `team/member` — log-only
|
|
778
|
+
|
|
779
|
+
```ts persistence-catalog
|
|
780
|
+
/** Whole teammate lifecycle value, stored only in the Team Lead Session. */
|
|
781
|
+
'team/member': { version: 2; teamId: TeamId; member: TeamMemberSnapshot }
|
|
782
|
+
```
|
|
783
|
+
|
|
784
|
+
类型:[TeamId](subsystems/agent-team.zh.md) · [TeamMemberSnapshot](subsystems/agent-team.zh.md)
|
|
785
|
+
|
|
786
|
+
来源:[`packages/experimental/agent-team/src/types.ts:204`](../packages/experimental/agent-team/src/types.ts)
|
|
787
|
+
|
|
788
|
+
<a id="teammessagedelivered--log-only"></a>
|
|
789
|
+
|
|
790
|
+
#### `team/message/delivered` — log-only
|
|
791
|
+
|
|
792
|
+
```ts persistence-catalog
|
|
793
|
+
/** Durable acknowledgement that the target Session recorded the message. */
|
|
794
|
+
'team/message/delivered': {
|
|
795
|
+
version: 2
|
|
796
|
+
teamId: TeamId
|
|
797
|
+
messageId: TeamMessageId
|
|
798
|
+
targetId: SessionId
|
|
799
|
+
}
|
|
800
|
+
```
|
|
801
|
+
|
|
802
|
+
类型:[TeamId](subsystems/agent-team.zh.md) · [TeamMessageId](subsystems/agent-team.zh.md)
|
|
803
|
+
|
|
804
|
+
来源:[`packages/experimental/agent-team/src/types.ts:210`](../packages/experimental/agent-team/src/types.ts)
|
|
805
|
+
|
|
806
|
+
<a id="teammessagequeued--log-only"></a>
|
|
807
|
+
|
|
808
|
+
#### `team/message/queued` — log-only
|
|
809
|
+
|
|
810
|
+
```ts persistence-catalog
|
|
811
|
+
/** Durable mailbox enqueue, stored before delivery is attempted. */
|
|
812
|
+
'team/message/queued': { version: 2; teamId: TeamId; message: TeamMessageSnapshot }
|
|
813
|
+
```
|
|
814
|
+
|
|
815
|
+
类型:[TeamId](subsystems/agent-team.zh.md) · [TeamMessageSnapshot](subsystems/agent-team.zh.md)
|
|
816
|
+
|
|
817
|
+
来源:[`packages/experimental/agent-team/src/types.ts:208`](../packages/experimental/agent-team/src/types.ts)
|
|
818
|
+
|
|
819
|
+
<a id="teamtask--log-only"></a>
|
|
820
|
+
|
|
821
|
+
#### `team/task` — log-only
|
|
822
|
+
|
|
823
|
+
```ts persistence-catalog
|
|
824
|
+
/** Whole shared-task value, stored only in the Team Lead Session. */
|
|
825
|
+
'team/task': { version: 2; teamId: TeamId; task: TeamTaskSnapshot }
|
|
826
|
+
```
|
|
827
|
+
|
|
828
|
+
类型:[TeamId](subsystems/agent-team.zh.md) · [TeamTaskSnapshot](subsystems/agent-team.zh.md)
|
|
829
|
+
|
|
830
|
+
来源:[`packages/experimental/agent-team/src/types.ts:206`](../packages/experimental/agent-team/src/types.ts)
|
|
699
831
|
|
|
700
832
|
### `todo/*`
|
|
701
833
|
|
|
@@ -708,9 +840,9 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
708
840
|
'todo/write': { todos: TodoItem[] }
|
|
709
841
|
```
|
|
710
842
|
|
|
711
|
-
类型:[TodoItem](subsystems/
|
|
843
|
+
类型:[TodoItem](subsystems/todo.zh.md)
|
|
712
844
|
|
|
713
|
-
来源:[`packages/
|
|
845
|
+
来源:[`packages/todo/tool-todo/src/types.ts:31`](../packages/todo/tool-todo/src/types.ts)
|
|
714
846
|
|
|
715
847
|
### `tool/*`
|
|
716
848
|
|
|
@@ -724,12 +856,12 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
724
856
|
* JSON string exactly as the model produced it (unparsed). `callId` pairs the
|
|
725
857
|
* call with its `tool/result`.
|
|
726
858
|
*/
|
|
727
|
-
'tool/call': { turn: number; step: number; callId:
|
|
859
|
+
'tool/call': { turn: number; step: number; callId: ToolCallId; name: string; arguments: string }
|
|
728
860
|
```
|
|
729
861
|
|
|
730
|
-
类型:[
|
|
862
|
+
类型:[ToolCallId](subsystems/core.zh.md)
|
|
731
863
|
|
|
732
|
-
来源:[`packages/core/session/src/types.ts:
|
|
864
|
+
来源:[`packages/core/session/src/types.ts:308`](../packages/core/session/src/types.ts)
|
|
733
865
|
|
|
734
866
|
<a id="toolcode-dispatch--log-only"></a>
|
|
735
867
|
|
|
@@ -751,7 +883,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
751
883
|
* before returning), so its execution-enclosure relation holds by
|
|
752
884
|
* construction.
|
|
753
885
|
*/
|
|
754
|
-
'tool/code-dispatch':
|
|
886
|
+
'tool/code-dispatch': PtcDispatchEventData
|
|
755
887
|
```
|
|
756
888
|
|
|
757
889
|
来源:[`packages/core/tools/src/types.ts:56`](../packages/core/tools/src/types.ts)
|
|
@@ -774,7 +906,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
774
906
|
* with `tool/code-dispatch` by `subCallId` (timing = the two events'
|
|
775
907
|
* `time` fields).
|
|
776
908
|
*/
|
|
777
|
-
'tool/code-dispatch-start':
|
|
909
|
+
'tool/code-dispatch-start': PtcDispatchStartEventData
|
|
778
910
|
```
|
|
779
911
|
|
|
780
912
|
来源:[`packages/core/tools/src/types.ts:40`](../packages/core/tools/src/types.ts)
|
|
@@ -804,7 +936,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
804
936
|
}
|
|
805
937
|
```
|
|
806
938
|
|
|
807
|
-
来源:[`packages/core/session/src/types.ts:
|
|
939
|
+
来源:[`packages/core/session/src/types.ts:320`](../packages/core/session/src/types.ts)
|
|
808
940
|
|
|
809
941
|
### `tool-workflow/*`
|
|
810
942
|
|
|
@@ -882,9 +1014,9 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
882
1014
|
'turn/end': { turn: number; reason: TurnEndReason }
|
|
883
1015
|
```
|
|
884
1016
|
|
|
885
|
-
类型:[TurnEndReason](subsystems/session.md)
|
|
1017
|
+
类型:[TurnEndReason](subsystems/session.zh.md)
|
|
886
1018
|
|
|
887
|
-
来源:[`packages/core/session/src/types.ts:
|
|
1019
|
+
来源:[`packages/core/session/src/types.ts:277`](../packages/core/session/src/types.ts)
|
|
888
1020
|
|
|
889
1021
|
<a id="turnstart--log-only"></a>
|
|
890
1022
|
|
|
@@ -900,7 +1032,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
900
1032
|
'turn/start': { turn: number }
|
|
901
1033
|
```
|
|
902
1034
|
|
|
903
|
-
来源:[`packages/core/session/src/types.ts:
|
|
1035
|
+
来源:[`packages/core/session/src/types.ts:268`](../packages/core/session/src/types.ts)
|
|
904
1036
|
|
|
905
1037
|
### `user/*`
|
|
906
1038
|
|
|
@@ -919,7 +1051,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
919
1051
|
'user/message': UserMessage
|
|
920
1052
|
```
|
|
921
1053
|
|
|
922
|
-
来源:[`packages/core/session/src/types.ts:
|
|
1054
|
+
来源:[`packages/core/session/src/types.ts:289`](../packages/core/session/src/types.ts)
|
|
923
1055
|
|
|
924
1056
|
### `web/*`
|
|
925
1057
|
|
package/references/official-docs/docs/postmortem/0001-acp-default-export-drops-inject.i18n.yaml
CHANGED
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
|
3
3
|
# after editing either side, bring the other along and re-record with:
|
|
4
4
|
# pnpm run verify-translation-pairing --write docs/postmortem/0001-acp-default-export-drops-inject.md
|
|
5
|
-
0001-acp-default-export-drops-inject.md:
|
|
6
|
-
0001-acp-default-export-drops-inject.zh.md:
|
|
5
|
+
0001-acp-default-export-drops-inject.md: d5325b3f051669111ad7c097c395744553d57c6c
|
|
6
|
+
0001-acp-default-export-drops-inject.zh.md: 189c2418106dc44bde43ef7fd4d2f8ce62d1d672
|
|
@@ -10,7 +10,7 @@ Two integration mistakes broke ACP despite full unit coverage: a default export
|
|
|
10
10
|
|
|
11
11
|
## Summary
|
|
12
12
|
|
|
13
|
-
The ACP server (`
|
|
13
|
+
The ACP server (`dsh --profile acp`, `@deepseek-ai/dsh-acp`) crashed the instant a real editor (Zed) connected: the first `session/new` request returned `Internal error: cannot get property "agents" without inject`, and `session/load` returned the same for `sessionPersistence`. The bridge was completely non-functional in production despite 178 green unit tests and 100% line coverage. Two independent bugs were hiding behind the same error string, and the test suite missed both for the same reason: every test mounted the plugin through a path that did not exercise how it actually loads or how its services actually resolve.
|
|
14
14
|
|
|
15
15
|
## Impact
|
|
16
16
|
|
|
@@ -101,7 +101,7 @@ Both bugs share one root process gap: **no test exercised the plugin through its
|
|
|
101
101
|
|
|
102
102
|
- **Removed `export default apply`** (`packages/acp/acp/src/index.ts`) — the Bug #1 fix.
|
|
103
103
|
- **`AgentLoop.resume` reads `this.ctx.get('sessionPersistence')`** (`packages/core/agent-loop/src/index.ts`) — the Bug #2 fix, with a comment explaining the shadow-walk trap.
|
|
104
|
-
- **No-key `session/new` e2e over real stdio** (`
|
|
104
|
+
- **No-key `session/new` e2e over real stdio** (`apps/cli/tests/profiles/acp/tests/acp.e2e.ts`): boots the profile as a subprocess through the real Loader and asserts `session/new` resolves. This fails loudly on Bug #1 with no API key. Verified it fails when `export default apply` is restored.
|
|
105
105
|
- **`TSX_TSCONFIG_PATH` in the e2e spawn**: the subprocess runs from a temp cwd, where tsx cannot find the repo-root tsconfig `paths` map by searching upward — so dsh-* imports silently fell back to built `lib/`. Pointing tsx at the repo tsconfig makes resolution cwd-independent and ensures the test runs *source*, not a possibly-stale build.
|
|
106
106
|
- **[docs/testing.md](../testing.md) rule**: "test the real entry path", line coverage is not behavior coverage — codifies the lesson for every future plugin.
|
|
107
107
|
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
## 概述
|
|
12
12
|
|
|
13
|
-
ACP 服务器(`
|
|
13
|
+
ACP 服务器(`dsh --profile acp`、`@deepseek-ai/dsh-acp`)在真实编辑器(Zed)连接的瞬间崩溃:第一个 `session/new` 请求返回 `Internal error: cannot get property "agents" without inject`,`session/load` 对 `sessionPersistence` 返回同样的错误。尽管有 178 个绿色单元测试和 100% 行覆盖率,bridge 在生产环境中完全无法工作。两个独立的 bug 隐藏在同一个错误字符串背后,测试套件之所以两个都没捕获,原因也相同:所有测试都通过一条不会触及插件真实加载方式和服务真实解析方式的路径来挂载插件。
|
|
14
14
|
|
|
15
15
|
## 影响
|
|
16
16
|
|
|
@@ -101,9 +101,9 @@ if (!ctx.fiber.runtime) return ctx.reflect.get(prop, false) // ← direct glob
|
|
|
101
101
|
|
|
102
102
|
- **删除 `export default apply`**(`packages/acp/acp/src/index.ts`)——Bug #1 的修复。
|
|
103
103
|
- **`AgentLoop.resume` 使用 `this.ctx.get('sessionPersistence')`**(`packages/core/agent-loop/src/index.ts`)——Bug #2 的修复,附注释说明 shadow 遍历陷阱。
|
|
104
|
-
- **无需 key 的 `session/new` e2e,通过真实 stdio 运行**(`
|
|
104
|
+
- **无需 key 的 `session/new` e2e,通过真实 stdio 运行**(`apps/cli/tests/profiles/acp/tests/acp.e2e.ts`):以子进程方式通过真实 Loader 启动 profile,并断言 `session/new` 正常返回。无需 API key 即可明确暴露 Bug #1。已验证恢复 `export default apply` 时测试失败。
|
|
105
105
|
- **e2e spawn 中设置 `TSX_TSCONFIG_PATH`**:子进程从临时 cwd 运行,tsx 无法通过向上搜索找到仓库根的 tsconfig `paths` 映射——因此 dsh-* 的 import 静默回退到已构建的 `lib/`。将 tsx 指向仓库 tsconfig 使解析不依赖 cwd,确保测试运行的是*源码*而非可能陈旧的构建产物。
|
|
106
|
-
- **[docs/testing.md](../testing.md) 规则**:「测试真实入口路径」,行覆盖率不等于行为覆盖率——将这一教训编纂为所有未来插件的规则。
|
|
106
|
+
- **[docs/testing.md](../testing.zh.md) 规则**:「测试真实入口路径」,行覆盖率不等于行为覆盖率——将这一教训编纂为所有未来插件的规则。
|
|
107
107
|
|
|
108
108
|
## 经验教训
|
|
109
109
|
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
|
3
3
|
# after editing either side, bring the other along and re-record with:
|
|
4
4
|
# pnpm run verify-translation-pairing --write docs/postmortem/0002-js-expression-disabled-filesystem-tools.md
|
|
5
|
-
0002-js-expression-disabled-filesystem-tools.md:
|
|
6
|
-
0002-js-expression-disabled-filesystem-tools.zh.md:
|
|
5
|
+
0002-js-expression-disabled-filesystem-tools.md: 317b9759afda90b3864619f874f99e5a7047395f
|
|
6
|
+
0002-js-expression-disabled-filesystem-tools.zh.md: 1c87796c66309be28a17a6c0e71e48ae2e2fda40
|
package/references/official-docs/docs/postmortem/0002-js-expression-disabled-filesystem-tools.md
CHANGED
|
@@ -36,9 +36,9 @@ The snapshot framework treated any deterministic transcript as valid behavior. H
|
|
|
36
36
|
## Guardrails added
|
|
37
37
|
|
|
38
38
|
- Filesystem scenarios boot `fs.cordis.yml`, an explicit fixed full-access overlay with a paired replay config and its own request-header class.
|
|
39
|
-
- [`AGENTS.md`](../../AGENTS.md) and the [Cordis primer](../cordis-primer.md#loader-configuration) state that `!!js` is valid
|
|
39
|
+
- [`AGENTS.md`](../../AGENTS.md) and the [Cordis primer](../cordis-primer.md#loader-configuration) state that `!!js` is valid under plugin `config` and entry `disabled`; other entry metadata stays literal, so conditional composition uses overlays.
|
|
40
40
|
- `verify-cordis-config` parses repository Cordis YAML and rejects expression nodes in Loader entry metadata, including include patches and inserted entries.
|
|
41
|
-
- `dsh-
|
|
41
|
+
- `dsh-session-snapshot` rejects structured `UNKNOWN_TOOL` results in fresh runs and committed session fixtures before they can be committed as expected outputs.
|
|
42
42
|
|
|
43
43
|
## Lessons
|
|
44
44
|
|