dsh-plugin-guide 0.2.0 → 0.3.2
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 +36 -18
- package/README.hi.md +36 -18
- package/README.md +38 -18
- package/README.pt.md +36 -18
- package/README.zh.md +38 -18
- 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 +2 -2
- package/guide/quick-reference.md +2 -2
- package/guide/quick-reference.pt.md +2 -2
- package/guide/quick-reference.zh-CN.md +3 -3
- package/package.json +13 -4
- package/references/cordis-paper-and-community.md +1 -1
- package/references/harness-repo.md +1 -1
- package/references/official-docs/AGENTS.md +27 -22
- 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 +23 -7
- package/references/official-docs/docs/architecture.zh.md +36 -20
- package/references/official-docs/docs/capability-seams.i18n.yaml +2 -2
- package/references/official-docs/docs/capability-seams.md +132 -67
- package/references/official-docs/docs/capability-seams.zh.md +132 -67
- package/references/official-docs/docs/config-catalog.i18n.yaml +2 -2
- package/references/official-docs/docs/config-catalog.md +659 -373
- package/references/official-docs/docs/config-catalog.zh.md +677 -391
- package/references/official-docs/docs/cookbook/adding-a-package.i18n.yaml +2 -2
- package/references/official-docs/docs/cookbook/adding-a-package.md +2 -3
- package/references/official-docs/docs/cookbook/adding-a-package.zh.md +8 -7
- 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 +666 -747
- package/references/official-docs/docs/module-graph.zh.md +668 -749
- package/references/official-docs/docs/persistence-catalog.i18n.yaml +2 -2
- package/references/official-docs/docs/persistence-catalog.md +160 -39
- package/references/official-docs/docs/persistence-catalog.zh.md +169 -48
- 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 +206 -0
- package/references/official-docs/docs/subsystems/agent-team.zh.md +206 -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 +5 -5
- package/references/official-docs/docs/subsystems/code-runtime.zh.md +6 -6
- package/references/official-docs/docs/subsystems/commands.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/commands.md +29 -6
- package/references/official-docs/docs/subsystems/commands.zh.md +30 -7
- package/references/official-docs/docs/subsystems/compaction.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/compaction.md +5 -5
- package/references/official-docs/docs/subsystems/compaction.zh.md +11 -11
- 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 +110 -33
- package/references/official-docs/docs/subsystems/core.zh.md +141 -62
- 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 +4 -4
- package/references/official-docs/docs/subsystems/feedback.zh.md +4 -4
- 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 +35 -17
- package/references/official-docs/docs/subsystems/persistence.zh.md +38 -20
- 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 +136 -67
- package/references/official-docs/docs/subsystems/session-projection.zh.md +136 -67
- package/references/official-docs/docs/subsystems/session-query.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/session-query.md +11 -3
- package/references/official-docs/docs/subsystems/session-query.zh.md +12 -4
- 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 +3 -3
- package/references/official-docs/docs/subsystems/session-title.zh.md +5 -5
- package/references/official-docs/docs/subsystems/session.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/session.md +273 -39
- package/references/official-docs/docs/subsystems/session.zh.md +290 -54
- 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 +174 -0
- package/references/official-docs/docs/subsystems/slots.zh.md +174 -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 +13 -5
- package/references/official-docs/docs/subsystems/storage.zh.md +16 -8
- package/references/official-docs/docs/subsystems/subagent.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/subagent.md +120 -32
- package/references/official-docs/docs/subsystems/subagent.zh.md +131 -41
- 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 +27 -12
- package/references/official-docs/docs/subsystems/token-meter.zh.md +28 -13
- 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 +433 -27
- package/references/official-docs/docs/tool-catalog.zh.md +438 -29
- 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 +1 -1
- package/references/official-docs/docs/web-styling.zh.md +2 -2
- package/references/official-docs/packages/AGENTS.md +3 -2
- 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/check-docs-drift.ps1 +55 -0
- package/scripts/check-readme-sync.mjs +91 -0
- 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`、可选的未知类型跳过标记 `ignorable`,以及条件字段 `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
|
|
|
@@ -92,7 +92,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
92
92
|
}[T]
|
|
93
93
|
```
|
|
94
94
|
|
|
95
|
-
来源:[`packages/core/session/src/types.ts:
|
|
95
|
+
来源:[`packages/core/session/src/types.ts:323`](../packages/core/session/src/types.ts) · [`packages/core/session/src/types.ts:330`](../packages/core/session/src/types.ts) · [`packages/core/session/src/types.ts:359`](../packages/core/session/src/types.ts) · [`packages/core/session/src/types.ts:391`](../packages/core/session/src/types.ts)
|
|
96
96
|
|
|
97
97
|
## 事件
|
|
98
98
|
|
|
@@ -117,7 +117,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
117
117
|
}
|
|
118
118
|
```
|
|
119
119
|
|
|
120
|
-
来源:[`packages/core/agent/src/types.ts:
|
|
120
|
+
来源:[`packages/core/agent/src/types.ts:58`](../packages/core/agent/src/types.ts)
|
|
121
121
|
|
|
122
122
|
### `agent-preset/*`
|
|
123
123
|
|
|
@@ -135,7 +135,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
135
135
|
'agent-preset/selected': { agentPreset: string }
|
|
136
136
|
```
|
|
137
137
|
|
|
138
|
-
来源:[`packages/preset/agent-presets/src/session.ts:
|
|
138
|
+
来源:[`packages/preset/agent-presets/src/session.ts:28`](../packages/preset/agent-presets/src/session.ts)
|
|
139
139
|
|
|
140
140
|
### `approval/*`
|
|
141
141
|
|
|
@@ -155,14 +155,14 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
155
155
|
'approval/asked': {
|
|
156
156
|
id: ApprovalRequestId
|
|
157
157
|
toolName: string
|
|
158
|
-
callId?:
|
|
158
|
+
callId?: ToolCallId
|
|
159
159
|
reason?: string
|
|
160
160
|
}
|
|
161
161
|
```
|
|
162
162
|
|
|
163
|
-
类型:[
|
|
163
|
+
类型:[ToolCallId](subsystems/core.zh.md)
|
|
164
164
|
|
|
165
|
-
来源:[`packages/interaction/user-approval/src/
|
|
165
|
+
来源:[`packages/interaction/user-approval/src/types.ts:44`](../packages/interaction/user-approval/src/types.ts)
|
|
166
166
|
|
|
167
167
|
<a id="approvaldecided--log-only"></a>
|
|
168
168
|
|
|
@@ -180,7 +180,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
180
180
|
}
|
|
181
181
|
```
|
|
182
182
|
|
|
183
|
-
来源:[`packages/interaction/user-approval/src/
|
|
183
|
+
来源:[`packages/interaction/user-approval/src/types.ts:55`](../packages/interaction/user-approval/src/types.ts)
|
|
184
184
|
|
|
185
185
|
<a id="approvalpolicy--log-only"></a>
|
|
186
186
|
|
|
@@ -202,7 +202,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
202
202
|
}
|
|
203
203
|
```
|
|
204
204
|
|
|
205
|
-
来源:[`packages/interaction/user-approval/src/index.ts:
|
|
205
|
+
来源:[`packages/interaction/user-approval/src/index.ts:32`](../packages/interaction/user-approval/src/index.ts)
|
|
206
206
|
|
|
207
207
|
### `assistant/*`
|
|
208
208
|
|
|
@@ -215,9 +215,9 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
215
215
|
'assistant/chunk': { turn: number; step: number; chunk: StreamChunk }
|
|
216
216
|
```
|
|
217
217
|
|
|
218
|
-
类型:[StreamChunk](subsystems/llm-streaming.md)
|
|
218
|
+
类型:[StreamChunk](subsystems/llm-streaming.zh.md)
|
|
219
219
|
|
|
220
|
-
来源:[`packages/core/session/src/types.ts:
|
|
220
|
+
来源:[`packages/core/session/src/types.ts:246`](../packages/core/session/src/types.ts)
|
|
221
221
|
|
|
222
222
|
<a id="assistantmessage--surface"></a>
|
|
223
223
|
|
|
@@ -228,14 +228,18 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
228
228
|
* Assembled assistant message for one step (derived history uses this).
|
|
229
229
|
* Carries the step's `usage` when the adapter reported token accounting, so
|
|
230
230
|
* the model output and its accounting travel together (there is no separate
|
|
231
|
-
* 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.
|
|
232
236
|
*/
|
|
233
|
-
'assistant/message': { turn: number; step: number; message: AssistantMessage; usage?: TokenUsage }
|
|
237
|
+
'assistant/message': { turn: number; step: number; message: AssistantMessage; usage?: TokenUsage; interrupted?: true }
|
|
234
238
|
```
|
|
235
239
|
|
|
236
|
-
类型:[TokenUsage](subsystems/llm-streaming.md)
|
|
240
|
+
类型:[TokenUsage](subsystems/llm-streaming.zh.md)
|
|
237
241
|
|
|
238
|
-
来源:[`packages/core/session/src/types.ts:
|
|
242
|
+
来源:[`packages/core/session/src/types.ts:257`](../packages/core/session/src/types.ts)
|
|
239
243
|
|
|
240
244
|
### `command/*`
|
|
241
245
|
|
|
@@ -258,7 +262,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
258
262
|
}
|
|
259
263
|
```
|
|
260
264
|
|
|
261
|
-
来源:[`packages/interaction/commands/src/types.ts:
|
|
265
|
+
来源:[`packages/interaction/commands/src/types.ts:103`](../packages/interaction/commands/src/types.ts)
|
|
262
266
|
|
|
263
267
|
<a id="commandrun--log-only"></a>
|
|
264
268
|
|
|
@@ -278,7 +282,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
278
282
|
'command/run': { commandId: CommandId; name: string; args?: string; source: CommandSource }
|
|
279
283
|
```
|
|
280
284
|
|
|
281
|
-
来源:[`packages/interaction/commands/src/types.ts:
|
|
285
|
+
来源:[`packages/interaction/commands/src/types.ts:96`](../packages/interaction/commands/src/types.ts)
|
|
282
286
|
|
|
283
287
|
### `compaction/*`
|
|
284
288
|
|
|
@@ -387,7 +391,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
387
391
|
)
|
|
388
392
|
```
|
|
389
393
|
|
|
390
|
-
类型:[ContentBlock](subsystems/core.md) · [TokenUsage](subsystems/llm-streaming.md)
|
|
394
|
+
类型:[ContentBlock](subsystems/core.zh.md) · [TokenUsage](subsystems/llm-streaming.zh.md)
|
|
391
395
|
|
|
392
396
|
来源:[`packages/compaction/compaction/src/types.ts:33`](../packages/compaction/compaction/src/types.ts)
|
|
393
397
|
|
|
@@ -496,6 +500,22 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
496
500
|
|
|
497
501
|
来源:[`packages/llm/llm-retry/src/types.ts:11`](../packages/llm/llm-retry/src/types.ts)
|
|
498
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
|
+
|
|
499
519
|
### `permission/*`
|
|
500
520
|
|
|
501
521
|
<a id="permissionpreset--log-only"></a>
|
|
@@ -506,13 +526,13 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
506
526
|
/**
|
|
507
527
|
* Records the selected preset as durable, log-only user intent. The knob
|
|
508
528
|
* events follow in the same turn and control execution; this event stays
|
|
509
|
-
* out of the model transcript and lets
|
|
529
|
+
* out of the model transcript and lets the permission projection unit
|
|
510
530
|
* preserve a selection when bundles match.
|
|
511
531
|
*/
|
|
512
532
|
'permission/preset': { preset: string }
|
|
513
533
|
```
|
|
514
534
|
|
|
515
|
-
来源:[`packages/interaction/permission-presets/src/index.ts:
|
|
535
|
+
来源:[`packages/interaction/permission-presets/src/index.ts:53`](../packages/interaction/permission-presets/src/index.ts)
|
|
516
536
|
|
|
517
537
|
### `plan/*`
|
|
518
538
|
|
|
@@ -524,12 +544,12 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
524
544
|
/**
|
|
525
545
|
* Whether plan mode is in force from this point on: log-only, non-surface,
|
|
526
546
|
* whole-value replace. The last `plan/mode` wins; a log with none folds to
|
|
527
|
-
* inactive through
|
|
547
|
+
* inactive through the projection unit's fold.
|
|
528
548
|
*/
|
|
529
549
|
'plan/mode': { active: boolean }
|
|
530
550
|
```
|
|
531
551
|
|
|
532
|
-
来源:[`packages/plan/plan-mode/src/index.ts:
|
|
552
|
+
来源:[`packages/plan/plan-mode/src/index.ts:46`](../packages/plan/plan-mode/src/index.ts)
|
|
533
553
|
|
|
534
554
|
### `request/*`
|
|
535
555
|
|
|
@@ -545,7 +565,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
545
565
|
'request/context': RequestContext
|
|
546
566
|
```
|
|
547
567
|
|
|
548
|
-
来源:[`packages/core/session/src/types.ts:
|
|
568
|
+
来源:[`packages/core/session/src/types.ts:296`](../packages/core/session/src/types.ts)
|
|
549
569
|
|
|
550
570
|
<a id="requestheader--log-only"></a>
|
|
551
571
|
|
|
@@ -556,10 +576,15 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
556
576
|
* Full header for the next request, appended inside its step before dispatch.
|
|
557
577
|
* It is log-only; the latest snapshot reconstructs the request header.
|
|
558
578
|
*/
|
|
559
|
-
'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
|
+
}
|
|
560
585
|
```
|
|
561
586
|
|
|
562
|
-
来源:[`packages/core/session/src/types.ts:
|
|
587
|
+
来源:[`packages/core/session/src/types.ts:286`](../packages/core/session/src/types.ts)
|
|
563
588
|
|
|
564
589
|
### `sandbox/*`
|
|
565
590
|
|
|
@@ -572,7 +597,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
572
597
|
* The session's sandbox mode was switched — log-only (like `approval/*`;
|
|
573
598
|
* NOT a surface event, carries no `surfaceOp`): durable and replayable,
|
|
574
599
|
* never in the model transcript. The LAST such event is the session's
|
|
575
|
-
* override (
|
|
600
|
+
* override (folded by the sandboxMode projection unit). `source: 'delegation'` marks
|
|
576
601
|
* an override seeded into a child; an absent source is a runtime switch.
|
|
577
602
|
*/
|
|
578
603
|
'sandbox/mode': {
|
|
@@ -598,7 +623,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
598
623
|
'schedule/change': ScheduleChange
|
|
599
624
|
```
|
|
600
625
|
|
|
601
|
-
类型:[ScheduleChange](subsystems/schedule.md)
|
|
626
|
+
类型:[ScheduleChange](subsystems/schedule.zh.md)
|
|
602
627
|
|
|
603
628
|
来源:[`packages/schedule/schedule/src/types.ts:219`](../packages/schedule/schedule/src/types.ts)
|
|
604
629
|
|
|
@@ -634,7 +659,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
634
659
|
'session/end-seed': Record<string, never>
|
|
635
660
|
```
|
|
636
661
|
|
|
637
|
-
来源:[`packages/core/session/src/types.ts:
|
|
662
|
+
来源:[`packages/core/session/src/types.ts:319`](../packages/core/session/src/types.ts)
|
|
638
663
|
|
|
639
664
|
<a id="sessiontitle--log-only"></a>
|
|
640
665
|
|
|
@@ -648,9 +673,9 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
648
673
|
'session/title': SessionTitleEventData
|
|
649
674
|
```
|
|
650
675
|
|
|
651
|
-
类型:[SessionTitleEventData](subsystems/session-title.md)
|
|
676
|
+
类型:[SessionTitleEventData](subsystems/session-title.zh.md)
|
|
652
677
|
|
|
653
|
-
来源:[`packages/session/session-title/src/index.ts:
|
|
678
|
+
来源:[`packages/session/session-title/src/index.ts:76`](../packages/session/session-title/src/index.ts)
|
|
654
679
|
|
|
655
680
|
<a id="sessiontitle-llm-request--log-only"></a>
|
|
656
681
|
|
|
@@ -661,9 +686,27 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
661
686
|
'session/title-llm-request': SessionTitleLlmRequestEventData
|
|
662
687
|
```
|
|
663
688
|
|
|
664
|
-
类型:[SessionTitleLlmRequestEventData](subsystems/session-title.md)
|
|
689
|
+
类型:[SessionTitleLlmRequestEventData](subsystems/session-title.zh.md)
|
|
690
|
+
|
|
691
|
+
来源:[`packages/session/session-title-llm/src/index.ts:44`](../packages/session/session-title-llm/src/index.ts)
|
|
692
|
+
|
|
693
|
+
### `session-log-deepseek/*`
|
|
665
694
|
|
|
666
|
-
|
|
695
|
+
<a id="session-log-deepseekdelivery-accepted--log-only"></a>
|
|
696
|
+
|
|
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: number
|
|
706
|
+
}
|
|
707
|
+
```
|
|
708
|
+
|
|
709
|
+
来源:[`packages/session/session-log-deepseek/src/types.ts:26`](../packages/session/session-log-deepseek/src/types.ts)
|
|
667
710
|
|
|
668
711
|
### `step/*`
|
|
669
712
|
|
|
@@ -676,7 +719,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
676
719
|
'step/end': { turn: number; step: number }
|
|
677
720
|
```
|
|
678
721
|
|
|
679
|
-
来源:[`packages/core/session/src/types.ts:
|
|
722
|
+
来源:[`packages/core/session/src/types.ts:236`](../packages/core/session/src/types.ts)
|
|
680
723
|
|
|
681
724
|
<a id="stepstart--log-only"></a>
|
|
682
725
|
|
|
@@ -687,7 +730,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
687
730
|
'step/start': { turn: number; step: number }
|
|
688
731
|
```
|
|
689
732
|
|
|
690
|
-
来源:[`packages/core/session/src/types.ts:
|
|
733
|
+
来源:[`packages/core/session/src/types.ts:234`](../packages/core/session/src/types.ts)
|
|
691
734
|
|
|
692
735
|
### `subagent/*`
|
|
693
736
|
|
|
@@ -706,7 +749,85 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
706
749
|
'subagent/descriptor': SubagentDescriptorData
|
|
707
750
|
```
|
|
708
751
|
|
|
709
|
-
来源:[`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: 1; 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:206`](../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: 1
|
|
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:212`](../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: 1; 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:210`](../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: 1; 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:208`](../packages/experimental/agent-team/src/types.ts)
|
|
710
831
|
|
|
711
832
|
### `todo/*`
|
|
712
833
|
|
|
@@ -719,9 +840,9 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
719
840
|
'todo/write': { todos: TodoItem[] }
|
|
720
841
|
```
|
|
721
842
|
|
|
722
|
-
类型:[TodoItem](subsystems/
|
|
843
|
+
类型:[TodoItem](subsystems/todo.zh.md)
|
|
723
844
|
|
|
724
|
-
来源:[`packages/
|
|
845
|
+
来源:[`packages/todo/tool-todo/src/types.ts:31`](../packages/todo/tool-todo/src/types.ts)
|
|
725
846
|
|
|
726
847
|
### `tool/*`
|
|
727
848
|
|
|
@@ -735,12 +856,12 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
735
856
|
* JSON string exactly as the model produced it (unparsed). `callId` pairs the
|
|
736
857
|
* call with its `tool/result`.
|
|
737
858
|
*/
|
|
738
|
-
'tool/call': { turn: number; step: number; callId:
|
|
859
|
+
'tool/call': { turn: number; step: number; callId: ToolCallId; name: string; arguments: string }
|
|
739
860
|
```
|
|
740
861
|
|
|
741
|
-
类型:[
|
|
862
|
+
类型:[ToolCallId](subsystems/core.zh.md)
|
|
742
863
|
|
|
743
|
-
来源:[`packages/core/session/src/types.ts:
|
|
864
|
+
来源:[`packages/core/session/src/types.ts:263`](../packages/core/session/src/types.ts)
|
|
744
865
|
|
|
745
866
|
<a id="toolcode-dispatch--log-only"></a>
|
|
746
867
|
|
|
@@ -762,7 +883,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
762
883
|
* before returning), so its execution-enclosure relation holds by
|
|
763
884
|
* construction.
|
|
764
885
|
*/
|
|
765
|
-
'tool/code-dispatch':
|
|
886
|
+
'tool/code-dispatch': PtcDispatchEventData
|
|
766
887
|
```
|
|
767
888
|
|
|
768
889
|
来源:[`packages/core/tools/src/types.ts:56`](../packages/core/tools/src/types.ts)
|
|
@@ -785,7 +906,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
785
906
|
* with `tool/code-dispatch` by `subCallId` (timing = the two events'
|
|
786
907
|
* `time` fields).
|
|
787
908
|
*/
|
|
788
|
-
'tool/code-dispatch-start':
|
|
909
|
+
'tool/code-dispatch-start': PtcDispatchStartEventData
|
|
789
910
|
```
|
|
790
911
|
|
|
791
912
|
来源:[`packages/core/tools/src/types.ts:40`](../packages/core/tools/src/types.ts)
|
|
@@ -815,7 +936,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
815
936
|
}
|
|
816
937
|
```
|
|
817
938
|
|
|
818
|
-
来源:[`packages/core/session/src/types.ts:
|
|
939
|
+
来源:[`packages/core/session/src/types.ts:275`](../packages/core/session/src/types.ts)
|
|
819
940
|
|
|
820
941
|
### `tool-workflow/*`
|
|
821
942
|
|
|
@@ -893,9 +1014,9 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
893
1014
|
'turn/end': { turn: number; reason: TurnEndReason }
|
|
894
1015
|
```
|
|
895
1016
|
|
|
896
|
-
类型:[TurnEndReason](subsystems/session.md)
|
|
1017
|
+
类型:[TurnEndReason](subsystems/session.zh.md)
|
|
897
1018
|
|
|
898
|
-
来源:[`packages/core/session/src/types.ts:
|
|
1019
|
+
来源:[`packages/core/session/src/types.ts:232`](../packages/core/session/src/types.ts)
|
|
899
1020
|
|
|
900
1021
|
<a id="turnstart--log-only"></a>
|
|
901
1022
|
|
|
@@ -911,7 +1032,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
911
1032
|
'turn/start': { turn: number }
|
|
912
1033
|
```
|
|
913
1034
|
|
|
914
|
-
来源:[`packages/core/session/src/types.ts:
|
|
1035
|
+
来源:[`packages/core/session/src/types.ts:223`](../packages/core/session/src/types.ts)
|
|
915
1036
|
|
|
916
1037
|
### `user/*`
|
|
917
1038
|
|
|
@@ -930,7 +1051,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
930
1051
|
'user/message': UserMessage
|
|
931
1052
|
```
|
|
932
1053
|
|
|
933
|
-
来源:[`packages/core/session/src/types.ts:
|
|
1054
|
+
来源:[`packages/core/session/src/types.ts:244`](../packages/core/session/src/types.ts)
|
|
934
1055
|
|
|
935
1056
|
### `web/*`
|
|
936
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
|
|
package/references/official-docs/docs/postmortem/0002-js-expression-disabled-filesystem-tools.zh.md
CHANGED
|
@@ -36,9 +36,9 @@ Cordis Include 将每个 `!!js` 标量解析为一个表达式对象。Loader
|
|
|
36
36
|
## 已添加的防护措施
|
|
37
37
|
|
|
38
38
|
- 文件系统场景启动 `fs.cordis.yml`:一个显式的固定全权限 overlay,配有对应的回放配置和独立的 request-header 类。
|
|
39
|
-
- [`AGENTS.md`](../../AGENTS.md) 与 [Cordis 入门](../cordis-primer.md#loader-configuration)明确说明 `!!js`
|
|
39
|
+
- [`AGENTS.md`](../../AGENTS.md) 与 [Cordis 入门](../cordis-primer.zh.md#loader-configuration)明确说明 `!!js` 在插件 `config` 与配置项 `disabled` 内有效;其他配置项元数据保持字面量,因此条件式组合使用 overlay。
|
|
40
40
|
- `verify-cordis-config` 解析仓库中的 Cordis YAML,拒绝 Loader 配置项元数据中的表达式节点(包括 include patch 和插入的配置项)。
|
|
41
|
-
- `dsh-
|
|
41
|
+
- `dsh-session-snapshot` 在全新运行和已提交的会话 fixture 中拒绝结构化的 `UNKNOWN_TOOL` 结果,防止其被提交为预期输出。
|
|
42
42
|
|
|
43
43
|
## 教训
|
|
44
44
|
|
|
@@ -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/0003-web-agent-gui-feedback-loop.md
|
|
5
|
-
0003-web-agent-gui-feedback-loop.md:
|
|
6
|
-
0003-web-agent-gui-feedback-loop.zh.md:
|
|
5
|
+
0003-web-agent-gui-feedback-loop.md: 3b836764dcf47758a6a0b472d92484f39b9ff510
|
|
6
|
+
0003-web-agent-gui-feedback-loop.zh.md: 402fe05341f9ab568329c30e9db0ebde97a5753b
|
|
@@ -39,8 +39,8 @@ Background process semantics were also bypassed with shell `&`, so job identity,
|
|
|
39
39
|
|
|
40
40
|
## Guardrails added
|
|
41
41
|
|
|
42
|
-
- The Web launcher publishes the canonical loopback URL
|
|
43
|
-
- Production guidance requires rebuilding artifacts and verifying the existing URL after refresh. Development guidance explains that
|
|
42
|
+
- The Web launcher publishes the canonical loopback URL in the logged `app:web-surface` prompt section and the managed `$DSH_WEB_URL` environment.
|
|
43
|
+
- Production guidance requires rebuilding artifacts and verifying the existing URL after refresh. Development guidance explains that the HMR receiver is always on; `pnpm run dev:web` in the same checkout rebuilds client-plugin bundles for refresh-free reload, while shell and plain-package changes still require refresh.
|
|
44
44
|
- `apps/web` standalone Vite serve mode rejects during configuration. Its subprocess test proves natural exit and instruments `Server.listen()` so a transient bind cannot pass unnoticed.
|
|
45
45
|
- Layered real-path tests cover the CLI request, exact production/development prompts, shell runtime facts, same-port static replacement, source watcher rebuild, host stat polling, and browser HMR under an unchanged page identity.
|
|
46
46
|
- PR evidence preserves screenshots from the original 3081 session and a real-model before/after GUI run; external browser, HTTP, process, and session-log observations carry acceptance.
|
|
@@ -39,8 +39,8 @@ agent 还通过 shell `&` 绕过了后台进程语义,因此任务身份、完
|
|
|
39
39
|
|
|
40
40
|
## 已添加的防护措施
|
|
41
41
|
|
|
42
|
-
- Web 启动器在记录到日志的 `app:web-surface`
|
|
43
|
-
-
|
|
42
|
+
- Web 启动器在记录到日志的 `app:web-surface` 提示词区段和受管的 `$DSH_WEB_URL` 环境变量中发布规范环回 URL。
|
|
43
|
+
- 生产指南要求重新构建产物,并在刷新后验证既有 URL。开发指南说明 HMR 接收端始终开启;同一源码检出目录中的 `pnpm run dev:web` 会重新构建客户端插件 bundle,实现免刷新的重载,而 Web shell 和普通包的改动仍然需要刷新页面。
|
|
44
44
|
- `apps/web` 的独立 Vite 服务模式会在配置阶段拒绝启动。其子进程测试验证进程自然退出,并插桩 `Server.listen()`,确保短暂绑定端口也不会漏检。
|
|
45
45
|
- 分层的真实路径测试覆盖 CLI(命令行界面)请求、精确的生产/开发模式提示词、shell 运行时事实、同端口静态产物替换、源码 watcher 重建、宿主 stat 轮询,以及页面 identity 不变的浏览器 HMR。
|
|
46
46
|
- PR(Pull Request)证据保留了原始 3081 会话的截图,以及真实模型驱动的 GUI 修改前后对比;验收以外部浏览器、HTTP、进程和会话日志的观测结果为准。
|
|
@@ -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/0004-landlock-partial-notice-misclassified-child-failures.md
|
|
5
|
-
0004-landlock-partial-notice-misclassified-child-failures.md:
|
|
6
|
-
0004-landlock-partial-notice-misclassified-child-failures.zh.md:
|
|
5
|
+
0004-landlock-partial-notice-misclassified-child-failures.md: 06d39b1db8436d4cfd7ad6145782b4eb2c4d31ae
|
|
6
|
+
0004-landlock-partial-notice-misclassified-child-failures.zh.md: 6fb5c727419745590847455e8ea7e9dfb1bce8d3
|
|
@@ -45,7 +45,7 @@ Stderr remains an in-band attribution channel. A confined child can deliberately
|
|
|
45
45
|
- [`dsh-bash-sandbox`](../../packages/shell/bash-sandbox/) directly spawns the provider argv, so a pre-start rejection uses the spawn-error channel instead of localized shell diagnostics. Settled foreground and background execution share one evidence-returning classifier; fatal evidence outranks denial, and foreground errors report the matched fatal line without changing captured stderr.
|
|
46
46
|
- [`dsh-tool-fs-search`](../../packages/fs/tool-fs-search/) uses packaged ripgrep through `ctx.subprocess` and remains outside the sandboxed bash seam.
|
|
47
47
|
- The native-boundary regression cases live in [`partial-landlock.spec.ts`](../../packages/shell/bash-sandbox/tests/partial-landlock.spec.ts), including informational notices, fatal evidence, and foreground/background classification.
|
|
48
|
-
- The assembled product path is pinned by the [`partial-landlock` snapshot composition](../../
|
|
48
|
+
- The assembled product path is pinned by the [`partial-landlock` snapshot composition](../../snapshots/session/partial-landlock-child-failure/cordis.snapshot.yml), independently of filesystem-search implementation choices.
|
|
49
49
|
|
|
50
50
|
## Lessons
|
|
51
51
|
|