dsh-plugin-guide 0.3.10 → 0.3.16
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 +13 -3
- package/README-hi.md +13 -3
- package/README-pt.md +13 -3
- package/README-zh.md +13 -3
- package/README.md +12 -3
- package/SKILL.md +1 -1
- package/guide/links.md +1 -0
- package/guide/unfixed-issues.md +111 -0
- package/package.json +1 -1
- package/references/official-docs/AGENTS.md +74 -49
- package/references/official-docs/README.i18n.yaml +2 -2
- package/references/official-docs/README.zh.md +12 -0
- package/references/official-docs/SNAPSHOT.md +4 -4
- package/references/official-docs/THIRD_PARTY_NOTICES.md +86 -30
- package/references/official-docs/docs/AGENTS.md +7 -6
- package/references/official-docs/docs/agent-lifecycle.i18n.yaml +2 -2
- package/references/official-docs/docs/agent-lifecycle.md +12 -5
- package/references/official-docs/docs/agent-lifecycle.zh.md +12 -5
- package/references/official-docs/docs/api-gateway.i18n.yaml +2 -2
- package/references/official-docs/docs/api-gateway.md +2 -2
- package/references/official-docs/docs/api-gateway.zh.md +2 -2
- package/references/official-docs/docs/architecture.i18n.yaml +2 -2
- package/references/official-docs/docs/architecture.md +26 -12
- package/references/official-docs/docs/architecture.zh.md +28 -14
- package/references/official-docs/docs/capability-seams.i18n.yaml +2 -2
- package/references/official-docs/docs/capability-seams.md +111 -31
- package/references/official-docs/docs/capability-seams.zh.md +111 -31
- package/references/official-docs/docs/config-catalog.i18n.yaml +2 -2
- package/references/official-docs/docs/config-catalog.md +674 -202
- package/references/official-docs/docs/config-catalog.zh.md +691 -219
- package/references/official-docs/docs/cookbook/adding-a-session-format-version.i18n.yaml +6 -0
- package/references/official-docs/docs/cookbook/adding-a-session-format-version.md +111 -0
- package/references/official-docs/docs/cookbook/adding-a-session-format-version.zh.md +111 -0
- package/references/official-docs/docs/cookbook/adding-a-settings-card.zh.md +1 -1
- package/references/official-docs/docs/cookbook/adding-a-tool.i18n.yaml +2 -2
- package/references/official-docs/docs/cookbook/adding-a-tool.md +2 -2
- package/references/official-docs/docs/cookbook/adding-a-tool.zh.md +4 -4
- 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 +1 -1
- package/references/official-docs/docs/cookbook/adding-a-vendored-package.zh.md +1 -1
- package/references/official-docs/docs/cookbook/adding-an-llm-adapter.zh.md +1 -1
- package/references/official-docs/docs/cookbook/extension-cookbook.i18n.yaml +2 -2
- package/references/official-docs/docs/cookbook/extension-cookbook.md +3 -3
- package/references/official-docs/docs/cookbook/extension-cookbook.zh.md +5 -5
- package/references/official-docs/docs/cookbook/responding-to-pr-review-on-a-stack.i18n.yaml +2 -2
- package/references/official-docs/docs/cookbook/responding-to-pr-review-on-a-stack.md +1 -1
- package/references/official-docs/docs/cookbook/responding-to-pr-review-on-a-stack.zh.md +1 -1
- package/references/official-docs/docs/cookbook/reviewing-persistence-type-changes.i18n.yaml +6 -0
- package/references/official-docs/docs/cookbook/reviewing-persistence-type-changes.md +108 -0
- package/references/official-docs/docs/cookbook/reviewing-persistence-type-changes.zh.md +108 -0
- package/references/official-docs/docs/cordis-api/fiber.i18n.yaml +2 -2
- package/references/official-docs/docs/cordis-api/fiber.md +3 -3
- package/references/official-docs/docs/cordis-api/fiber.zh.md +3 -3
- package/references/official-docs/docs/cordis-api/inherited.md +0 -3
- package/references/official-docs/docs/cordis-tutorial/06-composition-and-hmr.i18n.yaml +2 -2
- package/references/official-docs/docs/cordis-tutorial/06-composition-and-hmr.md +2 -2
- package/references/official-docs/docs/cordis-tutorial/06-composition-and-hmr.zh.md +2 -2
- package/references/official-docs/docs/deepseek-llm-api-wire-extensions.i18n.yaml +2 -2
- package/references/official-docs/docs/deepseek-llm-api-wire-extensions.md +14 -15
- package/references/official-docs/docs/deepseek-llm-api-wire-extensions.zh.md +15 -16
- package/references/official-docs/docs/dependency-catalog.json +7312 -0
- package/references/official-docs/docs/development.i18n.yaml +2 -2
- package/references/official-docs/docs/development.md +13 -3
- package/references/official-docs/docs/development.zh.md +16 -6
- package/references/official-docs/docs/event-producer-consumer.i18n.yaml +2 -2
- package/references/official-docs/docs/event-producer-consumer.md +50 -39
- package/references/official-docs/docs/event-producer-consumer.zh.md +55 -44
- 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/i18n/README.i18n.yaml +2 -2
- package/references/official-docs/docs/i18n/README.md +8 -3
- package/references/official-docs/docs/i18n/README.zh.md +8 -3
- package/references/official-docs/docs/i18n/style-samples.md +1 -1
- package/references/official-docs/docs/i18n/translation-prompt.md +5 -5
- package/references/official-docs/docs/i18n/translation-rules.zh.md +2 -2
- package/references/official-docs/docs/module-graph.i18n.yaml +2 -2
- package/references/official-docs/docs/module-graph.md +303 -120
- package/references/official-docs/docs/module-graph.zh.md +303 -120
- package/references/official-docs/docs/persistence-catalog.i18n.yaml +2 -2
- package/references/official-docs/docs/persistence-catalog.md +5699 -64
- package/references/official-docs/docs/persistence-catalog.zh.md +5708 -73
- package/references/official-docs/docs/persistence-changes/2026-09-11-initial.i18n.yaml +6 -0
- package/references/official-docs/docs/persistence-changes/2026-09-11-initial.md +280 -0
- package/references/official-docs/docs/persistence-changes/2026-09-11-initial.schema.json +13557 -0
- package/references/official-docs/docs/persistence-changes/2026-09-11-initial.zh.md +280 -0
- package/references/official-docs/docs/persistence-changes/2026-09-12-auto-review-error-metadata.i18n.yaml +6 -0
- package/references/official-docs/docs/persistence-changes/2026-09-12-auto-review-error-metadata.md +52 -0
- package/references/official-docs/docs/persistence-changes/2026-09-12-auto-review-error-metadata.schema.json +910 -0
- package/references/official-docs/docs/persistence-changes/2026-09-12-auto-review-error-metadata.zh.md +52 -0
- package/references/official-docs/docs/persistence-changes/2026-09-14-image-offload.i18n.yaml +6 -0
- package/references/official-docs/docs/persistence-changes/2026-09-14-image-offload.md +96 -0
- package/references/official-docs/docs/persistence-changes/2026-09-14-image-offload.schema.json +8478 -0
- package/references/official-docs/docs/persistence-changes/2026-09-14-image-offload.zh.md +96 -0
- package/references/official-docs/docs/persistence-changes/2026-09-14-workspace-changes-event.i18n.yaml +6 -0
- package/references/official-docs/docs/persistence-changes/2026-09-14-workspace-changes-event.md +48 -0
- package/references/official-docs/docs/persistence-changes/2026-09-14-workspace-changes-event.schema.json +72 -0
- package/references/official-docs/docs/persistence-changes/2026-09-14-workspace-changes-event.zh.md +48 -0
- package/references/official-docs/docs/persistence-changes/README.i18n.yaml +6 -0
- package/references/official-docs/docs/persistence-changes/README.md +74 -0
- package/references/official-docs/docs/persistence-changes/README.zh.md +74 -0
- package/references/official-docs/docs/persistence-changes/historical-formats/README.i18n.yaml +6 -0
- package/references/official-docs/docs/persistence-changes/historical-formats/README.md +74 -0
- package/references/official-docs/docs/persistence-changes/historical-formats/README.zh.md +74 -0
- package/references/official-docs/docs/persistence-changes/historical-formats/v0.i18n.yaml +6 -0
- package/references/official-docs/docs/persistence-changes/historical-formats/v0.md +5105 -0
- package/references/official-docs/docs/persistence-changes/historical-formats/v0.schema.json +49308 -0
- package/references/official-docs/docs/persistence-changes/historical-formats/v0.zh.md +5105 -0
- package/references/official-docs/docs/persistence-changes/historical-formats/v1.i18n.yaml +6 -0
- package/references/official-docs/docs/persistence-changes/historical-formats/v1.md +5107 -0
- package/references/official-docs/docs/persistence-changes/historical-formats/v1.schema.json +49411 -0
- package/references/official-docs/docs/persistence-changes/historical-formats/v1.zh.md +5107 -0
- package/references/official-docs/docs/persistence-changes/historical-formats/v2.i18n.yaml +6 -0
- package/references/official-docs/docs/persistence-changes/historical-formats/v2.md +5362 -0
- package/references/official-docs/docs/persistence-changes/historical-formats/v2.schema.json +56466 -0
- package/references/official-docs/docs/persistence-changes/historical-formats/v2.zh.md +5362 -0
- package/references/official-docs/docs/persistence-changes/releases/README.i18n.yaml +6 -0
- package/references/official-docs/docs/persistence-changes/releases/README.md +103 -0
- package/references/official-docs/docs/persistence-changes/releases/README.zh.md +103 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.1.i18n.yaml +6 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.1.md +201 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.1.schema.json +39868 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.1.zh.md +201 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.2.i18n.yaml +6 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.2.md +261 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.2.schema.json +43342 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.2.zh.md +261 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.3.i18n.yaml +6 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.3.md +126 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.3.schema.json +19452 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.3.zh.md +126 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.4.i18n.yaml +6 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.4.md +75 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.4.schema.json +5 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.4.zh.md +75 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.5.i18n.yaml +6 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.5.md +75 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.5.schema.json +5 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.5.zh.md +75 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.1.i18n.yaml +6 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.1.md +75 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.1.schema.json +5 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.1.zh.md +75 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.2.i18n.yaml +6 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.2.md +75 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.2.schema.json +5 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.2.zh.md +75 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.3.i18n.yaml +6 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.3.md +75 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.3.schema.json +5 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.3.zh.md +75 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.5.i18n.yaml +6 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.5.md +75 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.5.schema.json +5 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.5.zh.md +75 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.6.i18n.yaml +6 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.6.md +75 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.6.schema.json +5 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.6.zh.md +75 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.7.i18n.yaml +6 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.7.md +82 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.7.schema.json +5320 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.7.zh.md +82 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.8.i18n.yaml +6 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.8.md +110 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.8.schema.json +21258 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.8.zh.md +110 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.1.i18n.yaml +6 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.1.md +82 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.1.schema.json +417 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.1.zh.md +82 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.2.i18n.yaml +6 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.2.md +119 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.2.schema.json +29672 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.2.zh.md +119 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.1.i18n.yaml +6 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.1.md +295 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.1.schema.json +48429 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.1.zh.md +295 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.2.i18n.yaml +6 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.2.md +286 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.2.schema.json +49347 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.2.zh.md +286 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.3.i18n.yaml +6 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.3.md +75 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.3.schema.json +5 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.3.zh.md +75 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.4.i18n.yaml +6 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.4.md +95 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.4.schema.json +17642 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.4.zh.md +95 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.5.i18n.yaml +6 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.5.md +75 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.5.schema.json +5 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.5.zh.md +75 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-rc.1.i18n.yaml +6 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-rc.1.md +75 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-rc.1.schema.json +5 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-rc.1.zh.md +75 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.1.i18n.yaml +6 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.1.md +154 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.1.schema.json +38678 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.1.zh.md +154 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.2.i18n.yaml +6 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.2.md +86 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.2.schema.json +783 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.2.zh.md +86 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.1.i18n.yaml +6 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.1.md +139 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.1.schema.json +24597 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.1.zh.md +139 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.2.i18n.yaml +6 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.2.md +95 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.2.schema.json +2132 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.2.zh.md +95 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-rc.1.i18n.yaml +6 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-rc.1.md +75 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-rc.1.schema.json +5 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-rc.1.zh.md +75 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-rc.2.i18n.yaml +6 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-rc.2.md +75 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-rc.2.schema.json +5 -0
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-rc.2.zh.md +75 -0
- package/references/official-docs/docs/persistence-changes/releases/manifest.json +162 -0
- package/references/official-docs/docs/persistence-schema.json +61480 -0
- package/references/official-docs/docs/postmortem/README.i18n.yaml +1 -1
- package/references/official-docs/docs/postmortem/README.md +1 -1
- package/references/official-docs/docs/postmortem/README.zh.md +1 -1
- 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 +2 -2
- package/references/official-docs/docs/session-format-status.i18n.yaml +6 -0
- package/references/official-docs/docs/session-format-status.md +49 -0
- package/references/official-docs/docs/session-format-status.zh.md +49 -0
- package/references/official-docs/docs/subsystems/README.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/README.md +12 -3
- package/references/official-docs/docs/subsystems/README.zh.md +23 -14
- package/references/official-docs/docs/subsystems/agent-team.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/agent-team.md +1 -1
- package/references/official-docs/docs/subsystems/agent-team.zh.md +2 -2
- package/references/official-docs/docs/subsystems/approval.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/approval.md +1 -1
- package/references/official-docs/docs/subsystems/approval.zh.md +1 -1
- package/references/official-docs/docs/subsystems/attachment.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/attachment.md +17 -7
- package/references/official-docs/docs/subsystems/attachment.zh.md +17 -7
- package/references/official-docs/docs/subsystems/{code-runtime.i18n.yaml → boot.i18n.yaml} +3 -3
- package/references/official-docs/docs/subsystems/boot.md +223 -0
- package/references/official-docs/docs/subsystems/boot.zh.md +223 -0
- package/references/official-docs/docs/subsystems/browser-use.i18n.yaml +6 -0
- package/references/official-docs/docs/subsystems/browser-use.md +67 -0
- package/references/official-docs/docs/subsystems/browser-use.zh.md +67 -0
- package/references/official-docs/docs/subsystems/client-modules.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/client-modules.md +20 -10
- package/references/official-docs/docs/subsystems/client-modules.zh.md +21 -11
- package/references/official-docs/docs/subsystems/client-resources.i18n.yaml +6 -0
- package/references/official-docs/docs/subsystems/client-resources.md +92 -0
- package/references/official-docs/docs/subsystems/client-resources.zh.md +92 -0
- package/references/official-docs/docs/subsystems/commands.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/commands.md +4 -0
- package/references/official-docs/docs/subsystems/commands.zh.md +5 -1
- package/references/official-docs/docs/subsystems/compaction.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/compaction.md +48 -2
- package/references/official-docs/docs/subsystems/compaction.zh.md +50 -4
- package/references/official-docs/docs/subsystems/computer-use.i18n.yaml +6 -0
- package/references/official-docs/docs/subsystems/computer-use.md +56 -0
- package/references/official-docs/docs/subsystems/computer-use.zh.md +56 -0
- package/references/official-docs/docs/subsystems/conversation.zh.md +1 -1
- package/references/official-docs/docs/subsystems/core.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/core.md +106 -60
- package/references/official-docs/docs/subsystems/core.zh.md +109 -63
- package/references/official-docs/docs/subsystems/deliverables.i18n.yaml +6 -0
- package/references/official-docs/docs/subsystems/deliverables.md +178 -0
- package/references/official-docs/docs/subsystems/deliverables.zh.md +178 -0
- package/references/official-docs/docs/subsystems/extensions.zh.md +1 -1
- package/references/official-docs/docs/subsystems/feedback.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/feedback.md +165 -31
- package/references/official-docs/docs/subsystems/feedback.zh.md +165 -31
- package/references/official-docs/docs/subsystems/filesystem.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/filesystem.md +15 -0
- package/references/official-docs/docs/subsystems/filesystem.zh.md +16 -1
- package/references/official-docs/docs/subsystems/goal.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/goal.md +37 -1
- package/references/official-docs/docs/subsystems/goal.zh.md +38 -2
- package/references/official-docs/docs/subsystems/invariants.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/invariants.md +1 -1
- package/references/official-docs/docs/subsystems/invariants.zh.md +3 -3
- package/references/official-docs/docs/subsystems/jobs.i18n.yaml +1 -1
- package/references/official-docs/docs/subsystems/jobs.md +1 -1
- package/references/official-docs/docs/subsystems/jobs.zh.md +1 -1
- package/references/official-docs/docs/subsystems/llm-streaming.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/llm-streaming.md +35 -15
- package/references/official-docs/docs/subsystems/llm-streaming.zh.md +37 -17
- package/references/official-docs/docs/subsystems/lsp.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/lsp.md +1 -1
- package/references/official-docs/docs/subsystems/lsp.zh.md +1 -1
- package/references/official-docs/docs/subsystems/mcp.i18n.yaml +6 -0
- package/references/official-docs/docs/subsystems/mcp.md +139 -0
- package/references/official-docs/docs/subsystems/mcp.zh.md +139 -0
- package/references/official-docs/docs/subsystems/office-to-pdf.i18n.yaml +6 -0
- package/references/official-docs/docs/subsystems/office-to-pdf.md +87 -0
- package/references/official-docs/docs/subsystems/office-to-pdf.zh.md +87 -0
- package/references/official-docs/docs/subsystems/permission-presets.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/permission-presets.md +62 -27
- package/references/official-docs/docs/subsystems/permission-presets.zh.md +62 -27
- package/references/official-docs/docs/subsystems/persistence.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/persistence.md +36 -15
- package/references/official-docs/docs/subsystems/persistence.zh.md +36 -15
- package/references/official-docs/docs/subsystems/plan.zh.md +2 -2
- package/references/official-docs/docs/subsystems/ptc-runtime.i18n.yaml +6 -0
- package/references/official-docs/docs/subsystems/ptc-runtime.md +232 -0
- package/references/official-docs/docs/subsystems/ptc-runtime.zh.md +232 -0
- package/references/official-docs/docs/subsystems/sandbox.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/sandbox.md +5 -4
- package/references/official-docs/docs/subsystems/sandbox.zh.md +7 -6
- package/references/official-docs/docs/subsystems/schedule.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/schedule.md +2 -2
- package/references/official-docs/docs/subsystems/schedule.zh.md +3 -3
- package/references/official-docs/docs/subsystems/scope.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/scope.md +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 +1 -1
- package/references/official-docs/docs/subsystems/session-projection.zh.md +2 -2
- package/references/official-docs/docs/subsystems/session-reference.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/session-reference.md +11 -6
- package/references/official-docs/docs/subsystems/session-reference.zh.md +11 -6
- package/references/official-docs/docs/subsystems/session-telemetry.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/session-telemetry.md +22 -6
- package/references/official-docs/docs/subsystems/session-telemetry.zh.md +23 -7
- package/references/official-docs/docs/subsystems/session-title.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/session-title.md +5 -5
- 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 +149 -61
- package/references/official-docs/docs/subsystems/session.zh.md +150 -62
- package/references/official-docs/docs/subsystems/shell.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/shell.md +19 -15
- package/references/official-docs/docs/subsystems/shell.zh.md +20 -16
- package/references/official-docs/docs/subsystems/sidebar-right.i18n.yaml +6 -0
- package/references/official-docs/docs/subsystems/sidebar-right.md +153 -0
- package/references/official-docs/docs/subsystems/sidebar-right.zh.md +153 -0
- package/references/official-docs/docs/subsystems/skills.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/skills.md +4 -6
- package/references/official-docs/docs/subsystems/skills.zh.md +4 -6
- package/references/official-docs/docs/subsystems/slots.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/slots.md +52 -38
- package/references/official-docs/docs/subsystems/slots.zh.md +53 -39
- package/references/official-docs/docs/subsystems/spill.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/spill.md +13 -6
- package/references/official-docs/docs/subsystems/spill.zh.md +13 -6
- package/references/official-docs/docs/subsystems/ssh.i18n.yaml +6 -0
- package/references/official-docs/docs/subsystems/ssh.md +135 -0
- package/references/official-docs/docs/subsystems/ssh.zh.md +135 -0
- package/references/official-docs/docs/subsystems/storage.zh.md +2 -2
- package/references/official-docs/docs/subsystems/subagent.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/subagent.md +33 -16
- package/references/official-docs/docs/subsystems/subagent.zh.md +32 -15
- package/references/official-docs/docs/subsystems/subprocess.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/subprocess.md +41 -44
- package/references/official-docs/docs/subsystems/subprocess.zh.md +41 -44
- package/references/official-docs/docs/subsystems/system-prompt.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/system-prompt.md +6 -2
- package/references/official-docs/docs/subsystems/system-prompt.zh.md +7 -3
- package/references/official-docs/docs/subsystems/todo.zh.md +1 -1
- package/references/official-docs/docs/subsystems/token-meter.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/token-meter.md +2 -1
- package/references/official-docs/docs/subsystems/token-meter.zh.md +2 -1
- package/references/official-docs/docs/subsystems/tools.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/tools.md +28 -12
- package/references/official-docs/docs/subsystems/tools.zh.md +28 -12
- package/references/official-docs/docs/subsystems/typert.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/typert.md +6 -5
- package/references/official-docs/docs/subsystems/typert.zh.md +6 -5
- package/references/official-docs/docs/subsystems/user-questions.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/user-questions.md +2 -0
- package/references/official-docs/docs/subsystems/user-questions.zh.md +2 -0
- package/references/official-docs/docs/subsystems/web-client.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/web-client.md +5 -5
- package/references/official-docs/docs/subsystems/web-client.zh.md +6 -6
- package/references/official-docs/docs/subsystems/web-server.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/web-server.md +64 -0
- package/references/official-docs/docs/subsystems/web-server.zh.md +65 -1
- package/references/official-docs/docs/subsystems/webhook.i18n.yaml +1 -1
- package/references/official-docs/docs/subsystems/webhook.md +2 -2
- 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 +10 -10
- package/references/official-docs/docs/subsystems/workspace.i18n.yaml +2 -2
- package/references/official-docs/docs/subsystems/workspace.md +199 -1
- package/references/official-docs/docs/subsystems/workspace.zh.md +199 -1
- package/references/official-docs/docs/testing.i18n.yaml +2 -2
- package/references/official-docs/docs/testing.md +5 -4
- package/references/official-docs/docs/testing.zh.md +5 -4
- package/references/official-docs/docs/tool-catalog.i18n.yaml +2 -2
- package/references/official-docs/docs/tool-catalog.md +452 -187
- package/references/official-docs/docs/tool-catalog.zh.md +454 -189
- package/references/official-docs/docs/tool-execution-pipeline.i18n.yaml +2 -2
- package/references/official-docs/docs/tool-execution-pipeline.md +2 -2
- package/references/official-docs/docs/tool-execution-pipeline.zh.md +2 -2
- package/references/official-docs/docs/user/develop/basic/index.zh.md +1 -1
- package/references/official-docs/docs/user/develop/basic/publish.i18n.yaml +2 -2
- package/references/official-docs/docs/user/develop/basic/publish.md +2 -2
- package/references/official-docs/docs/user/develop/basic/publish.zh.md +5 -5
- package/references/official-docs/docs/user/develop/framework/index.i18n.yaml +2 -2
- package/references/official-docs/docs/user/develop/framework/index.md +1 -1
- package/references/official-docs/docs/user/develop/framework/index.zh.md +1 -1
- package/references/official-docs/docs/user/develop/practice/dynamic-cordis.i18n.yaml +2 -2
- package/references/official-docs/docs/user/develop/practice/dynamic-cordis.md +8 -8
- package/references/official-docs/docs/user/develop/practice/dynamic-cordis.zh.md +8 -8
- package/references/official-docs/docs/user/guide/index.zh.md +2 -2
- package/references/official-docs/docs/user/guide/mcp-memory.zh.md +1 -1
- package/references/official-docs/docs/user/guide/network-proxy.i18n.yaml +2 -2
- package/references/official-docs/docs/user/guide/network-proxy.md +1 -1
- package/references/official-docs/docs/user/guide/network-proxy.zh.md +1 -1
- package/references/official-docs/docs/user/guide/providers.i18n.yaml +2 -2
- package/references/official-docs/docs/user/guide/providers.md +12 -8
- package/references/official-docs/docs/user/guide/providers.zh.md +14 -10
- package/references/official-docs/docs/user/guide/python-sdk.i18n.yaml +2 -2
- package/references/official-docs/docs/user/guide/python-sdk.md +59 -23
- package/references/official-docs/docs/user/guide/python-sdk.zh.md +60 -24
- package/references/official-docs/docs/web-styling.i18n.yaml +2 -2
- package/references/official-docs/docs/web-styling.md +2 -1
- package/references/official-docs/docs/web-styling.zh.md +3 -2
- package/references/official-docs/packages/AGENTS.md +1 -1
- package/references/official-docs/packages/README.md +12 -7
- package/references/official-docs/vendor/README.md +15 -11
- package/references/official-docs/website-docs.ts +4 -2
- package/scripts/sync-official-docs.ps1 +5 -5
- package/references/official-docs/docs/subsystems/code-runtime.md +0 -195
- package/references/official-docs/docs/subsystems/code-runtime.zh.md +0 -195
|
@@ -53,6 +53,19 @@ interface SessionEventMap {
|
|
|
53
53
|
* project their `content` verbatim; `source` tells them apart.
|
|
54
54
|
*/
|
|
55
55
|
'user/message': UserMessage
|
|
56
|
+
/**
|
|
57
|
+
* The rendered system prompt on the model-visible surface. The loop appends
|
|
58
|
+
* the first one as surface node 0 before the step's first `user/message`.
|
|
59
|
+
* A prepared in-history route can append nonempty changes in a continuing
|
|
60
|
+
* series. An incapable route or new series normalizes text to the first system
|
|
61
|
+
* node. Normalization empties nonempty later nodes, then rewrites the head if
|
|
62
|
+
* needed, through logged per-node replacements. An empty rendering always
|
|
63
|
+
* clears all active system nodes, leaving no older instructions model-visible.
|
|
64
|
+
* Empty later nodes are dormant and project to no message; an empty head with
|
|
65
|
+
* no active later node records "no system prompt". Restored nonempty text follows
|
|
66
|
+
* the same route and series rule; empty nodes never restore older text.
|
|
67
|
+
*/
|
|
68
|
+
'system/message': { turn: number; step: number; message: SystemMessage }
|
|
56
69
|
/**
|
|
57
70
|
* Assembled assistant message for one step (derived history uses this).
|
|
58
71
|
* Carries the step's `usage` when the adapter reported token accounting, so
|
|
@@ -86,7 +99,9 @@ interface SessionEventMap {
|
|
|
86
99
|
'tool/call': { turn: number; step: number; callId: ToolCallId; name: string; arguments: string }
|
|
87
100
|
/**
|
|
88
101
|
* A completed tool call's model-facing result, optional internal failure
|
|
89
|
-
* identity, and optional tool-private `meta`
|
|
102
|
+
* identity and user-facing reason, and optional tool-private `meta`
|
|
103
|
+
* presentation payload. The reason remains outside the model-facing message.
|
|
104
|
+
* `meta` is
|
|
90
105
|
* opaque to the core (the producing tool owns its shape and reads it back in
|
|
91
106
|
* `presentResult`) but MUST be JSON-serializable: `Session.append`
|
|
92
107
|
* runtime-validates all event data with `isJsonValue`, so a non-serializable
|
|
@@ -99,7 +114,11 @@ interface SessionEventMap {
|
|
|
99
114
|
turn: number
|
|
100
115
|
step: number
|
|
101
116
|
message: ToolResultMessage
|
|
102
|
-
|
|
117
|
+
/**
|
|
118
|
+
* Optional failure identity and raw user-facing reason, outside model content;
|
|
119
|
+
* allowed only when the tool-result block has `isError: true`.
|
|
120
|
+
*/
|
|
121
|
+
error?: { name: string; code: string; reason?: string }
|
|
103
122
|
meta?: JsonValue
|
|
104
123
|
}
|
|
105
124
|
/**
|
|
@@ -113,8 +132,10 @@ interface SessionEventMap {
|
|
|
113
132
|
startsSeries?: true
|
|
114
133
|
}
|
|
115
134
|
/**
|
|
116
|
-
* Route metadata for the next request, logged only when the route
|
|
117
|
-
* changes. It does not participate in request
|
|
135
|
+
* Route metadata for the next request, logged only when the route, capacity,
|
|
136
|
+
* or system prompt update mode changes. It does not participate in request
|
|
137
|
+
* reconstruction or header equality. Prompt admission uses the bound prepared
|
|
138
|
+
* call's capability, not this snapshot from an earlier request.
|
|
118
139
|
*/
|
|
119
140
|
'request/context': RequestContext
|
|
120
141
|
/**
|
|
@@ -149,12 +170,13 @@ interface SessionEventMap {
|
|
|
149
170
|
|
|
150
171
|
### The request header event: `request/header`
|
|
151
172
|
|
|
152
|
-
The request envelope — the `EpochHeader` (call config + markers for adapter-supplied defaults +
|
|
173
|
+
The request envelope — the `EpochHeader` (call config + markers for adapter-supplied defaults + assembled tool schemas) — is logged session state, so every conversation request is a pure function of the log (the reconstructability Agent Note). The rendered system prompt is not part of the header: it is derived history, the `system/message` event at surface node 0 and any later in-history system node ([decision](../../.agents/notes/implemented/architecture/2026-09-02-system-prompt-as-surface-node.md)), so a prompt change replaces or appends a system node and leaves the header unchanged. A full `request/header` snapshot with reason `'initial'` or `'resume'` records each loop-instance boundary; a changed request appends a snapshot with reason `'change'`; and an unchanged envelope beginning an explicitly declared message series or following a surface replacement appends a snapshot with reason `'series'`. A changed snapshot carries `startsSeries: true` when that request also begins a series. Ordinary append-only later Turns, further Steps, and retries in the same model-message series inherit the latest snapshot. `foldRequestHeader(events)` reconstructs the header by selecting the latest snapshot. The event is not a `SurfaceEventType`: it produces no LLM message.
|
|
153
174
|
|
|
154
175
|
```ts type-equiv
|
|
155
176
|
/**
|
|
156
|
-
* Logged request state outside derived history: call config
|
|
157
|
-
*
|
|
177
|
+
* Logged request state outside derived history: call config and tools. The
|
|
178
|
+
* system prompt is derived history — surface node 0, a `system/message` event.
|
|
179
|
+
* The latest full `request/header` snapshot reconstructs the header; canonical
|
|
158
180
|
* empty optional fields are absent.
|
|
159
181
|
*/
|
|
160
182
|
interface EpochHeader {
|
|
@@ -162,18 +184,16 @@ interface EpochHeader {
|
|
|
162
184
|
config: LlmCallConfig
|
|
163
185
|
/** Effective config fields materialized from the exact adapter rather than proposed by a caller. */
|
|
164
186
|
adapterDefaults?: LlmCallConfigAdapterDefaults
|
|
165
|
-
/** Rendered system prompt text; absent for a system-less request. */
|
|
166
|
-
system?: string
|
|
167
187
|
/** Assembled tool schemas; absent for a tool-less request. */
|
|
168
188
|
tools?: ToolSchema[]
|
|
169
189
|
}
|
|
170
190
|
```
|
|
171
191
|
|
|
172
|
-
|
|
192
|
+
Current event acceptance requires canonical `request/header.header`: any `system` field is forbidden, and `tools: []` and `adapterDefaults: {}` must be omitted. Whitespace-only system-message content, `config.stop: []`, and nested extensions remain unchanged. Seed, append, and current persistence reads reject noncanonical headers rather than silently normalizing them; [the V3 envelope decision](../../.agents/notes/implemented/architecture/2026-09-06-v3-canonical-session-envelopes.md) owns historical conversion. Legacy v0 logs containing `request/header-delta` or its full-snapshot `fallback` reason are rejected rather than replayed incompletely.
|
|
173
193
|
|
|
174
194
|
### The route capacity event: `request/context`
|
|
175
195
|
|
|
176
|
-
The context metadata of the route a request resolved to is separate logged state, appended beside `request/header` inside the same step and only when the provider, model, or
|
|
196
|
+
The context metadata of the route a request resolved to is separate logged state, appended beside `request/header` inside the same step and only when the provider, model, capacity, or `systemPromptUpdate` mode differs from the previous record. It stays outside `EpochHeader` because that type is the reconstruction contract compared field-wise by `headerEquals`: capacity and the update mode describe a route, not a request input, so folding them in would let a route change register as a request-envelope `change` and would pull adapter metadata into the loop's reconstruction invariant. Like `request/header`, it is not a `SurfaceEventType` and produces no LLM message. `session.requestContext()` folds the latest record incrementally; the agent loop reads that record's `systemPromptUpdate` when it decides whether a changed system prompt replaces the latest system node or is appended after the cached history ([decision rule](../../packages/core/agent-loop/README.md#understand-the-implementation)). A route whose adapter advertises no capacity is recorded with `contextWindow` absent, so the new record clears an older route's capacity; a route without a declared update mode likewise clears an older route's `systemPromptUpdate`.
|
|
177
197
|
|
|
178
198
|
```ts type-equiv
|
|
179
199
|
/** Registration-bound metadata for one resolved model route. */
|
|
@@ -184,6 +204,8 @@ interface RequestContext {
|
|
|
184
204
|
model: string
|
|
185
205
|
/** Maximum combined request and response context in tokens, when advertised. */
|
|
186
206
|
contextWindow?: number
|
|
207
|
+
/** `'in-history'` when the route reads the latest `system` message at any position as the effective system prompt. */
|
|
208
|
+
systemPromptUpdate?: SystemPromptUpdate
|
|
187
209
|
}
|
|
188
210
|
```
|
|
189
211
|
|
|
@@ -221,7 +243,7 @@ type OptionalSessionSeq = SessionSeq | null
|
|
|
221
243
|
* unions), so `switch (event.type)` narrows `event.data` without casts.
|
|
222
244
|
*
|
|
223
245
|
* The {@link sourceEventSeqs} and {@link surfaceOp} fields are conditional:
|
|
224
|
-
* they only exist on {@link SurfaceEventType} variants (`user/message`,
|
|
246
|
+
* they only exist on {@link SurfaceEventType} variants (`system/message`, `user/message`,
|
|
225
247
|
* `assistant/message`, `tool/result`).
|
|
226
248
|
* Non-surface events (boundary markers, attempts, errors) never carry
|
|
227
249
|
* surface metadata — the compiler enforces this at `Session.append()`
|
|
@@ -246,26 +268,20 @@ type SessionEvent<T extends SessionEventType = SessionEventType> = {
|
|
|
246
268
|
* inconvenience) rather than silently resuming a gutted session.
|
|
247
269
|
*/
|
|
248
270
|
ignorable?: true
|
|
249
|
-
} & (K extends SurfaceEventType ? {
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
* `assistant/message` embeds its provider stream and cannot carry this field.
|
|
254
|
-
*/
|
|
255
|
-
sourceEventSeqs?: SessionSeq[]
|
|
256
|
-
/** How this event entered the surface; absent for non-surface events. */
|
|
257
|
-
surfaceOp?: SurfaceOp
|
|
258
|
-
} : object)
|
|
271
|
+
} & (K extends SurfaceEventType ? SurfaceIntent<K> : {
|
|
272
|
+
surfaceOp?: never
|
|
273
|
+
sourceEventSeqs?: never
|
|
274
|
+
})
|
|
259
275
|
}[T]
|
|
260
276
|
```
|
|
261
277
|
|
|
262
278
|
`SessionEventType = keyof SessionEventMap`. Because `SessionEventMap` is merge-extensible, switches over `SessionEvent` must NOT use `assertNever` — a plugin-added variant is a valid unknown value; handle the known cases and fall through `default`.
|
|
263
279
|
|
|
264
|
-
|
|
280
|
+
Every surface event requires `surfaceOp`; known log-only events forbid both surface metadata fields. Native unknown or obsolete ignorable envelopes remain opaque. `assistant/message` embeds its provider stream and forbids `sourceEventSeqs`. System, user, and tool surface events may cite a complete non-empty set of unique earlier events when source attribution or replacement coverage requires it. A `tool/result` may carry `data.error` only when its tool-result block has `isError: true`; failure identity remains optional for failed results.
|
|
265
281
|
|
|
266
282
|
## Surface types
|
|
267
283
|
|
|
268
|
-
The
|
|
284
|
+
The four message-producing types (`SurfaceEventType` — `system/message`, `user/message`, `assistant/message`, `tool/result`) carry surface metadata declaring how they join the ordered derived surface. `system/message` holds the rendered system prompt: the loop appends the first one as surface node 0 and, when the prompt changes, replaces exactly the latest system node or appends a new one on an in-history route; the surface fold rejects any other replacement covering a `system/message` at node 0, while a later system node is ordinary history that a compaction replacement may shadow. See the [session surface Agent Note](../../.agents/notes/implemented/architecture/2026-06-18-session-surface.md).
|
|
269
285
|
|
|
270
286
|
### `SurfaceEventType` — the message-producing subset of event types
|
|
271
287
|
|
|
@@ -273,10 +289,11 @@ The three message-producing types (`SurfaceEventType` — `user/message`, `assis
|
|
|
273
289
|
/**
|
|
274
290
|
* The subset of {@link SessionEventType} values whose events produce LLM
|
|
275
291
|
* messages and are eligible to appear on the ordered surface. Only these
|
|
276
|
-
* event types may carry {@link SurfaceOp}; user and tool events may also cite
|
|
292
|
+
* event types may carry {@link SurfaceOp}; system, user, and tool events may also cite
|
|
277
293
|
* earlier sources through {@link SessionEvent.sourceEventSeqs}.
|
|
278
294
|
*/
|
|
279
295
|
type SurfaceEventType =
|
|
296
|
+
| 'system/message'
|
|
280
297
|
| 'user/message'
|
|
281
298
|
| 'assistant/message'
|
|
282
299
|
| 'tool/result'
|
|
@@ -291,19 +308,19 @@ type SurfaceEventType =
|
|
|
291
308
|
*
|
|
292
309
|
* - `'append'`: added to the tail — normal path for user/assistant/tool
|
|
293
310
|
* messages.
|
|
294
|
-
* - `{ op: 'replace',
|
|
295
|
-
* (inclusive) through `
|
|
296
|
-
* surface nodes in the current surface. `
|
|
311
|
+
* - `{ op: 'replace', startSeq, endSeq }`: replaces surface nodes from `startSeq`
|
|
312
|
+
* (inclusive) through `endSeq` (inclusive) with this node. Both must exist as
|
|
313
|
+
* surface nodes in the current surface. `startSeq === endSeq` replaces a single
|
|
297
314
|
* node. The node's {@link SessionEvent.sourceEventSeqs} must include every
|
|
298
315
|
* shadowed surface node. Used by compaction; any surface-replacing producer
|
|
299
316
|
* may use it.
|
|
300
317
|
*/
|
|
301
318
|
type SurfaceOp =
|
|
302
319
|
| 'append'
|
|
303
|
-
| { op: 'replace';
|
|
320
|
+
| { op: 'replace'; startSeq: SessionSeq; endSeq: SessionSeq }
|
|
304
321
|
```
|
|
305
322
|
|
|
306
|
-
`'append'` is the normal tail-append path. `replace`
|
|
323
|
+
`'append'` is the normal tail-append path. `replace` contains exactly `op`, `startSeq`, and `endSeq`, with no aliases or extra keys. It shadows the inclusive span between those current surface event sequences and inserts the new event in their place; equal endpoints replace one entry. Endpoints must precede the replacing event, but their relative order is surface order, not numeric sequence order.
|
|
307
324
|
|
|
308
325
|
### `SurfaceIntent` — the parameter to `session.append()`
|
|
309
326
|
|
|
@@ -315,7 +332,7 @@ type SurfaceOp =
|
|
|
315
332
|
type SurfaceIntent<T extends SurfaceEventType = SurfaceEventType> = {
|
|
316
333
|
surfaceOp: SurfaceOp
|
|
317
334
|
} & (T extends 'assistant/message' ? {
|
|
318
|
-
/**
|
|
335
|
+
/** Assistant messages embed their provider stream instead of citing source events. */
|
|
319
336
|
sourceEventSeqs?: never
|
|
320
337
|
} : {
|
|
321
338
|
/** Complete non-empty set of known earlier source-event seqs. */
|
|
@@ -327,11 +344,47 @@ Required for `SurfaceEventType` events — every message-producing event must de
|
|
|
327
344
|
|
|
328
345
|
`assistant/message` cannot carry `sourceEventSeqs`; its `stream` owns exact provider evidence. Other surface events omit the field when they cite no earlier event and use a complete non-empty list when they do.
|
|
329
346
|
|
|
347
|
+
<a id="plugin-owned-message-projections"></a>
|
|
348
|
+
### Plugin-owned message projections
|
|
349
|
+
|
|
350
|
+
Content-changing plugins mark their event declaration with `@messageProjection` and register a pure definition through `ctx.sessions.registerMessageProjection()`. Session validates the complete decision through that definition before commit, applies its immutable message updates, and advances `contentGeneration`. It rejects missing interpreters, including on restore and detached folding; unloading a used definition blocks cached reads. Detached readers pass explicit definitions to `foldSurface(events, projections)` and apply `projectedMessages` through `deriveEventMessage()`. The installed format catalog assembles first-party definitions for offline readers. The [image-offload plugin](compaction.md#image-offload) owns its image-specific event and interpretation.
|
|
351
|
+
|
|
352
|
+
```ts type-equiv
|
|
353
|
+
/** Readonly history immediately before a message-projection event. */
|
|
354
|
+
interface SessionMessageProjectionContext {
|
|
355
|
+
/** Current message-producing event sequences in model-visible order. */
|
|
356
|
+
nodes: readonly SessionSeq[]
|
|
357
|
+
/** Contiguous event window; entries at or beyond the candidate seq are not committed inputs. */
|
|
358
|
+
events: readonly SessionEvent[]
|
|
359
|
+
/** Absolute sequence of the window's first event. */
|
|
360
|
+
baseSeq: SessionLogOffset
|
|
361
|
+
/** Previously projected messages keyed by their original event sequences. */
|
|
362
|
+
messages: ReadonlyMap<SessionSeq, Message>
|
|
363
|
+
}
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
```ts type-equiv
|
|
367
|
+
/** Pure interpretation of one plugin-owned event that changes existing message content. */
|
|
368
|
+
interface SessionMessageProjection<T extends SessionEventType = SessionEventType> {
|
|
369
|
+
/** Event interpreted by this definition; declare it with `@messageProjection` in SessionEventMap. */
|
|
370
|
+
type: T
|
|
371
|
+
/**
|
|
372
|
+
* Validate the complete durable decision before returning any updates. Preserve
|
|
373
|
+
* message identities and publish immutable copies without mutating the input.
|
|
374
|
+
* @param event - candidate event, not yet applied to the supplied history.
|
|
375
|
+
* @param context - history preceding this decision.
|
|
376
|
+
* @returns changed current messages keyed by their original sequences.
|
|
377
|
+
* @throws when the durable decision cannot be applied to this history.
|
|
378
|
+
*/
|
|
379
|
+
project(event: SessionEvent<T>, context: SessionMessageProjectionContext): ReadonlyMap<SessionSeq, Message>
|
|
380
|
+
}
|
|
381
|
+
```
|
|
382
|
+
|
|
330
383
|
### `SessionSurface` — the live readonly surface projection
|
|
331
384
|
|
|
332
385
|
`Session.surface` returns the session's stable `SessionSurface` view. The same incremental manager validates append candidates before commit and advances this projection from committed events; callers can observe membership and replacement generation but cannot invoke validation.
|
|
333
386
|
|
|
334
|
-
`SurfaceManager(log, baseSeq?)` can instead fold a contiguous loaded window whose first event has the absolute sequence `baseSeq`. Every event remains contiguous in that absolute sequence space, and a replacement that crosses the window head fails because its declared range is absent.
|
|
387
|
+
`SurfaceManager(log, baseSeq?, projections?)` can instead fold a contiguous loaded window whose first event has the absolute sequence `baseSeq`. Every event remains contiguous in that absolute sequence space, and a replacement that crosses the window head fails because its declared range is absent.
|
|
335
388
|
|
|
336
389
|
```ts type-equiv
|
|
337
390
|
/** Readonly live projection of the message-producing session events. */
|
|
@@ -340,12 +393,14 @@ interface SessionSurface {
|
|
|
340
393
|
readonly nodes: readonly SessionSeq[]
|
|
341
394
|
/** Monotonic count of committed positional replacements. */
|
|
342
395
|
readonly replaceGeneration: number
|
|
396
|
+
/** Monotonic count of committed replacements and plugin-owned message changes. */
|
|
397
|
+
readonly contentGeneration: number
|
|
343
398
|
}
|
|
344
399
|
```
|
|
345
400
|
|
|
346
401
|
### `SurfaceFoldReplacement` and `SurfaceFoldResult` — a complete surface replay
|
|
347
402
|
|
|
348
|
-
`foldSurface(events)` returns detached current event sequences together with the actual sequences shadowed by each declared replacement range. The live manager uses the same transitions without retaining replacement history. Its `replaceGeneration` increments for each committed replacement so incremental consumers can distinguish pure tail growth from a rewrite.
|
|
403
|
+
`foldSurface(events, projections)` returns detached current event sequences together with the actual sequences shadowed by each declared replacement range. The live manager uses the same transitions without retaining replacement history. Its `replaceGeneration` increments for each committed replacement so incremental consumers can distinguish pure tail growth from a rewrite.
|
|
349
404
|
|
|
350
405
|
```ts type-equiv
|
|
351
406
|
/** One replacement operation observed while folding a session surface. */
|
|
@@ -368,6 +423,8 @@ interface SurfaceFoldResult {
|
|
|
368
423
|
nodes: SessionSeq[]
|
|
369
424
|
/** Replacement operations in event order. */
|
|
370
425
|
replacements: SurfaceFoldReplacement[]
|
|
426
|
+
/** Immutable projected messages, keyed by their original event sequences. */
|
|
427
|
+
projectedMessages: ReadonlyMap<SessionSeq, Message>
|
|
371
428
|
}
|
|
372
429
|
```
|
|
373
430
|
|
|
@@ -422,7 +479,7 @@ declare class Session {
|
|
|
422
479
|
* When this lifecycle appends the marker, it occupies this seq before the
|
|
423
480
|
* store attaches and therefore does not publish either. Otherwise this seq
|
|
424
481
|
* holds an ordinary published write.
|
|
425
|
-
|
|
482
|
+
*/
|
|
426
483
|
readonly firstLiveSeq: SessionLogOffset;
|
|
427
484
|
/**
|
|
428
485
|
* Create a detached session by validating and snapshotting borrowed seed
|
|
@@ -431,32 +488,44 @@ declare class Session {
|
|
|
431
488
|
* @param seed - optional borrowed replay or fork events.
|
|
432
489
|
* @param header - optional borrowed storage metadata.
|
|
433
490
|
* @param inheritedEventCount - exact fork-inherited prefix length for a seeded header.
|
|
491
|
+
* @param projections - pure interpreters for plugin-owned message changes.
|
|
434
492
|
* @returns a detached session.
|
|
493
|
+
* @throws when a seed event requires a missing message interpreter or fails validation.
|
|
435
494
|
*/
|
|
436
495
|
static create(
|
|
437
496
|
id: SessionId,
|
|
438
497
|
seed?: readonly SessionEvent[],
|
|
439
498
|
header?: SessionHeader,
|
|
440
499
|
inheritedEventCount?: SessionLogOffset,
|
|
441
|
-
|
|
500
|
+
projections?: readonly SessionMessageProjection[],
|
|
501
|
+
): Session;
|
|
442
502
|
/**
|
|
443
|
-
* Restore a detached session by
|
|
444
|
-
*
|
|
445
|
-
* and header fields are validated
|
|
503
|
+
* Restore a detached session by adopting an independently owned or deeply frozen seed.
|
|
504
|
+
* Runtime-required event fields, event envelopes, sequence continuity, surface
|
|
505
|
+
* transitions, and header fields are validated without copying or freezing events.
|
|
506
|
+
* Embedded Assistant streams remain opaque until a stream consumer or storage
|
|
507
|
+
* verifier reads them.
|
|
446
508
|
* @param id - restored session identity.
|
|
447
|
-
* @param seed -
|
|
448
|
-
* @param header -
|
|
509
|
+
* @param seed - independently owned or deeply frozen events.
|
|
510
|
+
* @param header - independently owned storage metadata.
|
|
449
511
|
* @param inheritedEventCount - exact fork-inherited prefix length decoded from storage.
|
|
512
|
+
* @param eventState - aliasing state carried from the operation that produced the seed.
|
|
513
|
+
* @param projections - pure interpreters for plugin-owned message changes.
|
|
450
514
|
* @returns a restored detached session.
|
|
515
|
+
* @throws when a seed event requires a missing message interpreter or fails validation.
|
|
451
516
|
*/
|
|
452
517
|
static fromRestore(
|
|
453
518
|
id: SessionId,
|
|
454
519
|
seed: readonly SessionEvent[],
|
|
455
520
|
header: SessionHeader,
|
|
456
521
|
inheritedEventCount: SessionLogOffset,
|
|
457
|
-
|
|
522
|
+
eventState: SessionSeedEventState,
|
|
523
|
+
projections?: readonly SessionMessageProjection[],
|
|
524
|
+
): Session;
|
|
458
525
|
/**
|
|
459
526
|
* Return the immutable event stored at one exact sequence number.
|
|
527
|
+
* @deprecated Existing logic may remain unmigrated for now, but new calls are prohibited.
|
|
528
|
+
* See the [Agent Note](../../../../.agents/notes/implemented/architecture/2026-09-09-deprecate-synchronous-session-event-reads.md).
|
|
460
529
|
* @param seq - event sequence number.
|
|
461
530
|
* @returns the accepted event, or undefined when the log does not contain it.
|
|
462
531
|
*/
|
|
@@ -465,6 +534,8 @@ declare class Session {
|
|
|
465
534
|
* Materialize an immutable snapshot of a half-open event sequence range.
|
|
466
535
|
* A full current snapshot is reused until the next append; every previously
|
|
467
536
|
* returned snapshot remains stable after later appends.
|
|
537
|
+
* @deprecated Existing logic may remain unmigrated for now, but new calls are prohibited.
|
|
538
|
+
* See the [Agent Note](../../../../.agents/notes/implemented/architecture/2026-09-09-deprecate-synchronous-session-event-reads.md).
|
|
468
539
|
* @param fromSeq - non-negative inclusive sequence number; defaults to the log start.
|
|
469
540
|
* @param toSeqExclusive - non-negative exclusive sequence number; defaults to the current end.
|
|
470
541
|
* @returns a frozen array of the selected deeply frozen events.
|
|
@@ -472,9 +543,11 @@ declare class Session {
|
|
|
472
543
|
snapshotEvents(
|
|
473
544
|
fromSeq: SessionLogOffset = SessionLogOffset(0),
|
|
474
545
|
toSeqExclusive: SessionLogOffset = this.seq,
|
|
475
|
-
|
|
546
|
+
): readonly SessionEvent[];
|
|
476
547
|
/**
|
|
477
548
|
* Return this Session's events after its fork-inherited prefix.
|
|
549
|
+
* @deprecated Existing logic may remain unmigrated for now, but new calls are prohibited.
|
|
550
|
+
* See the [Agent Note](../../../../.agents/notes/implemented/architecture/2026-09-09-deprecate-synchronous-session-event-reads.md).
|
|
478
551
|
* @returns a fresh array containing child-owned events in log order.
|
|
479
552
|
*/
|
|
480
553
|
ownEvents(): readonly SessionEvent[];
|
|
@@ -512,6 +585,7 @@ declare class Session {
|
|
|
512
585
|
* (BigInt, function, symbol, undefined, negative zero, non-finite number,
|
|
513
586
|
* circular reference, sparse array, or an exotic object such as
|
|
514
587
|
* Map/Set/Date/class instance), or when the candidate violates the
|
|
588
|
+
* request-header empty-field or tool-error consistency rules, or the
|
|
515
589
|
* canonical surface contract (marker shape and eligibility, unique
|
|
516
590
|
* earlier source-event references, positional replacement validity, and complete
|
|
517
591
|
* shadowed-node coverage). One iterative pass reads, validates, and
|
|
@@ -526,7 +600,7 @@ declare class Session {
|
|
|
526
600
|
type: T,
|
|
527
601
|
data: SessionEventMap[T],
|
|
528
602
|
...opts: T extends SurfaceEventType ? [opts: SurfaceIntent<T>] : []
|
|
529
|
-
|
|
603
|
+
): SessionEvent<T>;
|
|
530
604
|
/**
|
|
531
605
|
* The {@link EpochHeader} in force after the log's last header event — the
|
|
532
606
|
* header the NEXT request will be compared against — or undefined before
|
|
@@ -549,21 +623,21 @@ declare class Session {
|
|
|
549
623
|
* append records its `surfaceOp`, so a raw event with no marker (a chunk, a
|
|
550
624
|
* turn boundary) is correctly absent, and a compaction `replace` deletes the
|
|
551
625
|
* shadowed nodes from the derivation. The projection rules are
|
|
552
|
-
* {@link deriveEventMessage},
|
|
626
|
+
* {@link deriveEventMessage}, with logged message projections applied
|
|
627
|
+
* without changing node membership or message identity.
|
|
553
628
|
*
|
|
554
|
-
* CACHED:
|
|
555
|
-
*
|
|
556
|
-
* {@link SessionSurface.replaceGeneration}) rebuilds. The returned array is
|
|
629
|
+
* CACHED: pure tail growth costs O(new nodes); a replacement or message projection
|
|
630
|
+
* ({@link SessionSurface.contentGeneration}) rebuilds. The returned array is
|
|
557
631
|
* a fresh snapshot per call (later appends never grow an array a caller
|
|
558
632
|
* already holds); the `Message` objects in it are SHARED and **deep-frozen**.
|
|
559
|
-
*
|
|
560
|
-
*
|
|
633
|
+
* Unchanged content reuses frozen event data; projected blocks are frozen
|
|
634
|
+
* derived copies. Consumers cannot mutate the log through either form.
|
|
561
635
|
* @returns a fresh array of the shared, frozen derived history.
|
|
562
636
|
*/
|
|
563
637
|
deriveMessages(): Message[];
|
|
564
638
|
/**
|
|
565
|
-
*
|
|
566
|
-
*
|
|
639
|
+
* Project one event with all committed message projections applied.
|
|
640
|
+
* The original durable event remains unchanged.
|
|
567
641
|
* @param event - the event to project.
|
|
568
642
|
* @returns the derived message, or null when the event produces none.
|
|
569
643
|
*/
|
|
@@ -639,7 +713,7 @@ The optional `dsh-session/invariant` companion enforces the relations owned by c
|
|
|
639
713
|
|
|
640
714
|
A fresh fork constructor requires its seed to equal the inherited prefix and appends `session/end-seed { inherited: true }` at the exact durable cut. A restore retains that tagged marker and appends an ordinary `session/end-seed {}` only when its complete stored seed does not already end in a marker. Both forms are log-only and produce no message; `Session`'s constructor is the only legitimate writer.
|
|
641
715
|
|
|
642
|
-
For fork lineage, locate the LAST marker whose payload carries `inherited: true`;
|
|
716
|
+
For fork lineage, locate the LAST marker whose payload carries `inherited: true`; current-format decoding requires it exactly when `SessionHeader.isSeeded` is true and derives `inheritedEventCount` from its seq. For lifecycle ownership, locate the last `session/end-seed` of either form. Reopening a seed that already ends in any marker does not append another ordinary marker.
|
|
643
717
|
|
|
644
718
|
It exists because seed history and live work are otherwise byte-identical, which defeats any plugin owning a standalone open/close bracket: an unmatched `compaction/start` reads the same whether the writer crashed mid-compaction or is compacting right now. An opening marker before `session/end-seed` came from the constructor seed and belongs to an ended lifecycle, whatever ended it (a crash, a succeeding process, or a fork out of a still-running parent), so its owner may treat it as dead. That covers only brackets *this* session inherited: a concurrently live session holding an open bracket over the same history has its own boundary elsewhere, so tolerating concurrent writers needs a liveness signal beyond the log. Core writes the boundary and reads nothing from it — a bracket's vocabulary stays with its owning plugin, which is why crash repair closes turn/step/tool boundaries and never `compaction/*`.
|
|
645
719
|
|
|
@@ -651,11 +725,11 @@ A plugin may declaration-merge extra `SessionEventMap` types. These are **log-on
|
|
|
651
725
|
|
|
652
726
|
When several events in one plugin-owned family assemble into one Web Client Conversation Node, every start, update, result, resource, or interruption event in that family carries or independently derives the same stable business id. This requirement applies to correlated Node families, not to every Session event; it lets the client group each event without guessing from adjacency or scanning history. See the [Conversation subsystem](conversation.md).
|
|
653
727
|
|
|
654
|
-
The hook bridges' `hook/invoked` / `hook/result` pairs (from `@deepseek-ai/dsh-hook-protocol`) correlate by `handlerId`. `UserPromptSubmit`, `PreToolUse`, `PostToolUse`, and `Stop` fire inside the loop's open turn, so their `hook/*` records are turn-enclosed by construction. `SessionStart` gets no `hook/*` record because it runs before turn 1; its context remains pending in the inbox until a waking delivery opens a turn
|
|
728
|
+
The hook bridges' `hook/invoked` / `hook/result` pairs (from `@deepseek-ai/dsh-hook-protocol`) correlate by `handlerId`. `UserPromptSubmit`, `PreToolUse`, `PostToolUse`, and `Stop` fire inside the loop's open turn, so their `hook/*` records are turn-enclosed by construction. `SessionStart` gets no `hook/*` record because it runs before turn 1; its context remains pending in the inbox until a waking delivery opens a turn.
|
|
655
729
|
|
|
656
730
|
## Durability contract
|
|
657
731
|
|
|
658
|
-
What a persistence backend relies on: the durable log persists every event losslessly, and every Assistant attempt is one `assistant/message` or `assistant/attempt` whose embedded compact stream preserves the original timed chunks. `seq` stays contiguous across these settlements and all interleaved events. A backend may choose its own storage framing for an event batch as long as a handle's `read()` returns the exact appended events; current JSONL
|
|
732
|
+
What a persistence backend relies on: the durable log persists every event losslessly, and every Assistant attempt is one `assistant/message` or `assistant/attempt` whose embedded compact stream preserves the original timed chunks. `seq` stays contiguous across these settlements and all interleaved events. A backend may choose its own storage framing for an event batch as long as a handle's `read()` returns the exact appended events; current JSONL writes one row per event (see [persistence.md](persistence.md)). All `event.data` must be JSON-serializable; `Session.append` enforces this at the source (throwing on non-serializable data), so a bad event never enters the log and `session.snapshotEvents()` always equals what a backend can persist. Adding an event type that carries non-serializable data, corrupts core execution nesting, or violates its owner's declared relation is a breaking change to the on-disk format.
|
|
659
733
|
|
|
660
734
|
The backends that consume this contract are on [persistence.md](persistence.md).
|
|
661
735
|
|
|
@@ -663,7 +737,7 @@ The backends that consume this contract are on [persistence.md](persistence.md).
|
|
|
663
737
|
|
|
664
738
|
`ModelCatalog` is the Host-generation model directory returned by `session/modelCatalog`: it carries the deployment default, routable provider ids, successful provider groups, and isolated provider failures. It is not derived from one Session and remains separate from Session projections.
|
|
665
739
|
|
|
666
|
-
`SessionOpenWorkspacePathRequest` carries an absolute or workspace-resolved `path
|
|
740
|
+
`SessionOpenWorkspacePathRequest` carries an absolute or workspace-resolved `path`; optional `action: "reveal"` selects file-manager navigation instead of default-application opening. `SessionOpenWorkspacePathValue` confirms that the Host accepted the native handoff. A Session-aware Client resolves relative paths against its current Session cwd when known; the controller hands the path to the opener unchanged and reports invalid requests, cancellation, and opener failures through the Session Remote error vocabulary.
|
|
667
741
|
|
|
668
742
|
<!-- BEGIN GENERATED cordis-surface (gen-cordis-catalog.ts) — do not edit between markers -->
|
|
669
743
|
|
|
@@ -737,6 +811,12 @@ inspect( sessionId: SessionId, signal?: AbortSignal, ): Promise<SessionInspectio
|
|
|
737
811
|
*/
|
|
738
812
|
@Remote canOpenWorkspacePath(): boolean
|
|
739
813
|
|
|
814
|
+
/**
|
|
815
|
+
* Describe the serving desktop for authenticated file-action routes.
|
|
816
|
+
* @returns Host name, configured availability, and platform-specific file-manager behavior.
|
|
817
|
+
*/
|
|
818
|
+
workspaceDesktop(): { name: string; available: boolean; fileManager: 'finder' | 'explorer' | 'directory' | null }
|
|
819
|
+
|
|
740
820
|
/**
|
|
741
821
|
* Open one path prepared by a Session-aware caller on the Host desktop.
|
|
742
822
|
* @param request - path after best-effort Session workspace resolution.
|
|
@@ -776,11 +856,11 @@ inspect( sessionId: SessionId, signal?: AbortSignal, ): Promise<SessionInspectio
|
|
|
776
856
|
@Remote('attachment') attachment(request: SessionAttachmentRequest): Promise<SessionAttachmentValue>
|
|
777
857
|
|
|
778
858
|
/**
|
|
779
|
-
* Mutate one still-pending queue occurrence
|
|
859
|
+
* Mutate one still-pending queue occurrence, resuming a cold Agent first.
|
|
780
860
|
* @param request - Session, queue item, and requested mutation.
|
|
781
861
|
* @returns acknowledgement that the queue mutation was applied.
|
|
782
862
|
*/
|
|
783
|
-
@Remote('updateQueue') updateQueue(request: SessionUpdateQueueRequest): SessionUpdateQueueValue
|
|
863
|
+
@Remote('updateQueue') updateQueue(request: SessionUpdateQueueRequest): Promise<SessionUpdateQueueValue>
|
|
784
864
|
|
|
785
865
|
/**
|
|
786
866
|
* Cancel one active Agent turn without dropping its pending inbox.
|
|
@@ -827,6 +907,15 @@ In-memory session store (`ctx.sessions`).
|
|
|
827
907
|
Persistence is intentionally not implemented here — the agent lifecycle attaches a session-log writer to each published session's write handle; a session published outside that lifecycle persists nothing.
|
|
828
908
|
|
|
829
909
|
```ts cordis-catalog
|
|
910
|
+
/**
|
|
911
|
+
* Register one event interpreter for live creation, restore, and fork.
|
|
912
|
+
* Disposing the contribution makes sessions that used it refuse further derivation.
|
|
913
|
+
* @param projection - pure definition owned by the event's plugin.
|
|
914
|
+
* @returns the fiber-owned disposer.
|
|
915
|
+
* @throws when another definition already owns this event type.
|
|
916
|
+
*/
|
|
917
|
+
registerMessageProjection(projection: SessionMessageProjection): () => Promise<void>
|
|
918
|
+
|
|
830
919
|
/**
|
|
831
920
|
* Create a session owned by the calling fiber: disposing that fiber stops
|
|
832
921
|
* event notification and removes the session from the store. `options.seed`
|
|
@@ -861,10 +950,9 @@ create(id?: SessionId, options?: CreateSessionOptions): Session
|
|
|
861
950
|
*
|
|
862
951
|
* @param id - the session id; omitted, the store mints `session-<n>`.
|
|
863
952
|
* @param options - seed events and/or creation metadata for the header. With
|
|
864
|
-
* `
|
|
865
|
-
*
|
|
866
|
-
*
|
|
867
|
-
* retain no mutable aliases.
|
|
953
|
+
* `eventState`, every seed event is either independently owned or any
|
|
954
|
+
* shared value is deeply frozen; {@link Session.fromRestore} validates and
|
|
955
|
+
* adopts those values without copying or freezing them.
|
|
868
956
|
* @returns the constructed session, NOT yet in the store.
|
|
869
957
|
* @throws if a session with `id` already exists, metadata is not a plain
|
|
870
958
|
* lossless-JSON record with valid scalar fields, or `meta.cwd` is a
|