dsh-plugin-dev-kb 1.1.0 → 1.4.0
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/CHANGELOG.md +31 -0
- package/README.en.md +14 -8
- package/README.md +15 -9
- package/docs/banner.svg +25 -0
- package/kb/INDEX.md +23 -19
- package/kb/README.md +8 -6
- package/kb/extra/AGENTS.md +11 -10
- package/kb/extra/cookbook/adding-a-remote-api.md +2 -2
- package/kb/extra/cookbook/adding-a-remote-api.zh.md +2 -2
- package/kb/extra/cookbook/adding-a-session-format-version.md +151 -0
- package/kb/extra/cookbook/adding-a-session-format-version.zh.md +151 -0
- package/kb/extra/cookbook/adding-a-vendored-package.md +1 -1
- package/kb/extra/cookbook/adding-a-vendored-package.zh.md +1 -1
- package/kb/extra/cookbook/responding-to-pr-review-on-a-stack.md +1 -1
- package/kb/extra/cookbook/responding-to-pr-review-on-a-stack.zh.md +1 -1
- package/kb/extra/cookbook/reviewing-persistence-type-changes.md +120 -0
- package/kb/extra/cookbook/reviewing-persistence-type-changes.zh.md +120 -0
- package/kb/extra/deepseek-llm-api-wire-extensions.md +19 -20
- package/kb/extra/deepseek-llm-api-wire-extensions.zh.md +18 -19
- package/kb/extra/development.md +37 -10
- package/kb/extra/development.zh.md +37 -10
- package/kb/extra/event-producer-consumer.md +90 -67
- package/kb/extra/event-producer-consumer.zh.md +91 -68
- package/kb/extra/glossary.md +1 -1
- package/kb/extra/glossary.zh.md +1 -1
- package/kb/extra/i18n/README.md +16 -7
- package/kb/extra/i18n/README.zh.md +17 -8
- package/kb/extra/i18n/terminology.md +4 -4
- package/kb/extra/i18n/translation-prompt.md +3 -3
- package/kb/extra/module-graph.md +621 -335
- package/kb/extra/module-graph.zh.md +621 -335
- package/kb/extra/persistence-changes/2026-09-11-initial.md +280 -0
- package/kb/extra/persistence-changes/2026-09-11-initial.zh.md +280 -0
- package/kb/extra/persistence-changes/2026-09-12-auto-review-error-metadata.md +52 -0
- package/kb/extra/persistence-changes/2026-09-12-auto-review-error-metadata.zh.md +52 -0
- package/kb/extra/persistence-changes/2026-09-14-image-offload.md +96 -0
- package/kb/extra/persistence-changes/2026-09-14-image-offload.zh.md +96 -0
- package/kb/extra/persistence-changes/2026-09-14-workspace-changes-event.md +48 -0
- package/kb/extra/persistence-changes/2026-09-14-workspace-changes-event.zh.md +48 -0
- package/kb/extra/persistence-changes/2026-09-16-session-format-v4.md +120 -0
- package/kb/extra/persistence-changes/2026-09-16-session-format-v4.zh.md +120 -0
- package/kb/extra/persistence-changes/2026-09-18-schedule-optional-title.md +48 -0
- package/kb/extra/persistence-changes/2026-09-18-schedule-optional-title.zh.md +48 -0
- package/kb/extra/persistence-changes/2026-09-20-unknown-child-catalog.md +48 -0
- package/kb/extra/persistence-changes/2026-09-20-unknown-child-catalog.zh.md +48 -0
- package/kb/extra/persistence-changes/2026-09-21-user-question-reply.md +60 -0
- package/kb/extra/persistence-changes/2026-09-21-user-question-reply.zh.md +60 -0
- package/kb/extra/persistence-changes/README.md +88 -0
- package/kb/extra/persistence-changes/README.zh.md +88 -0
- package/kb/extra/persistence-changes/historical-formats/README.md +75 -0
- package/kb/extra/persistence-changes/historical-formats/README.zh.md +75 -0
- package/kb/extra/persistence-changes/historical-formats/v0.md +5105 -0
- package/kb/extra/persistence-changes/historical-formats/v0.zh.md +5105 -0
- package/kb/extra/persistence-changes/historical-formats/v1.md +5107 -0
- package/kb/extra/persistence-changes/historical-formats/v1.zh.md +5107 -0
- package/kb/extra/persistence-changes/historical-formats/v2.md +5362 -0
- package/kb/extra/persistence-changes/historical-formats/v2.zh.md +5362 -0
- package/kb/extra/persistence-changes/historical-formats/v3.md +5634 -0
- package/kb/extra/persistence-changes/historical-formats/v3.zh.md +5634 -0
- package/kb/extra/persistence-changes/releases/README.md +103 -0
- package/kb/extra/persistence-changes/releases/README.zh.md +103 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.0.1-rc.1.md +201 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.0.1-rc.1.zh.md +201 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.0.1-rc.2.md +261 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.0.1-rc.2.zh.md +261 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.0.1-rc.3.md +126 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.0.1-rc.3.zh.md +126 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.0.1-rc.4.md +75 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.0.1-rc.4.zh.md +75 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.0.1-rc.5.md +75 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.0.1-rc.5.zh.md +75 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.1.0-rc.1.md +75 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.1.0-rc.1.zh.md +75 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.1.0-rc.2.md +75 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.1.0-rc.2.zh.md +75 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.1.0-rc.3.md +75 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.1.0-rc.3.zh.md +75 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.1.0-rc.5.md +75 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.1.0-rc.5.zh.md +75 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.1.0-rc.6.md +75 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.1.0-rc.6.zh.md +75 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.1.0-rc.7.md +82 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.1.0-rc.7.zh.md +82 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.1.0-rc.8.md +110 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.1.0-rc.8.zh.md +110 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.1.1-rc.1.md +82 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.1.1-rc.1.zh.md +82 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.1.1-rc.2.md +119 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.1.1-rc.2.zh.md +119 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.1.2-alpha.1.md +295 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.1.2-alpha.1.zh.md +295 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.1.2-alpha.2.md +286 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.1.2-alpha.2.zh.md +286 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.1.2-alpha.3.md +75 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.1.2-alpha.3.zh.md +75 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.1.2-alpha.4.md +95 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.1.2-alpha.4.zh.md +95 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.1.2-alpha.5.md +75 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.1.2-alpha.5.zh.md +75 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.1.2-rc.1.md +75 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.1.2-rc.1.zh.md +75 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.1.3-alpha.1.md +154 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.1.3-alpha.1.zh.md +154 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.1.3-alpha.2.md +86 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.1.3-alpha.2.zh.md +86 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.1.5-alpha.1.md +139 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.1.5-alpha.1.zh.md +139 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.1.5-alpha.2.md +95 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.1.5-alpha.2.zh.md +95 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.1.5-rc.1.md +75 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.1.5-rc.1.zh.md +75 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.1.5-rc.2.md +75 -0
- package/kb/extra/persistence-changes/releases/dsh-v0.1.5-rc.2.zh.md +75 -0
- package/kb/extra/rescope.md +2 -2
- package/kb/extra/rescope.zh.md +2 -2
- package/kb/extra/session-format-status.md +63 -0
- package/kb/extra/session-format-status.zh.md +63 -0
- package/kb/extra/subsystems/agent-team.md +52 -28
- package/kb/extra/subsystems/agent-team.zh.md +52 -28
- package/kb/extra/subsystems/attachment.md +19 -9
- package/kb/extra/subsystems/attachment.zh.md +19 -9
- package/kb/extra/subsystems/boot.md +323 -0
- package/kb/extra/subsystems/boot.zh.md +323 -0
- package/kb/extra/subsystems/browser-use.md +67 -0
- package/kb/extra/subsystems/browser-use.zh.md +67 -0
- package/kb/extra/subsystems/claude-code-mods.md +146 -0
- package/kb/extra/subsystems/claude-code-mods.zh.md +146 -0
- package/kb/extra/subsystems/computer-use.md +56 -0
- package/kb/extra/subsystems/computer-use.zh.md +56 -0
- package/kb/extra/subsystems/deliverables.md +178 -0
- package/kb/extra/subsystems/deliverables.zh.md +178 -0
- package/kb/extra/subsystems/extensions.md +6 -4
- package/kb/extra/subsystems/extensions.zh.md +6 -4
- package/kb/extra/subsystems/feedback.md +165 -31
- package/kb/extra/subsystems/feedback.zh.md +165 -31
- package/kb/extra/subsystems/mcp.md +139 -0
- package/kb/extra/subsystems/mcp.zh.md +139 -0
- package/kb/extra/subsystems/office-to-pdf.md +87 -0
- package/kb/extra/subsystems/office-to-pdf.zh.md +87 -0
- package/kb/extra/subsystems/otel.md +44 -0
- package/kb/extra/subsystems/otel.zh.md +44 -0
- package/kb/extra/subsystems/product-telemetry.md +79 -0
- package/kb/extra/subsystems/product-telemetry.zh.md +79 -0
- package/kb/extra/subsystems/ssh.md +135 -0
- package/kb/extra/subsystems/ssh.zh.md +135 -0
- package/kb/extra/subsystems/todo.md +3 -3
- package/kb/extra/subsystems/todo.zh.md +3 -3
- package/kb/extra/subsystems/voice-input.md +164 -0
- package/kb/extra/subsystems/voice-input.zh.md +164 -0
- package/kb/extra/subsystems/webhook.md +3 -3
- package/kb/extra/subsystems/webhook.zh.md +1 -1
- package/kb/extra/testing.md +5 -4
- package/kb/extra/testing.zh.md +5 -4
- package/kb/extra/ui-radius.md +115 -0
- package/kb/extra/ui-radius.zh.md +115 -0
- package/kb/extra/upgrade-guide/v0.1.7-rc.2/schedule-optional-bundle/guide.md +22 -0
- package/kb/extra/upgrade-guide/v0.1.7-rc.2/schedule-optional-bundle/guide.zh.md +22 -0
- package/kb/extra/upgrade-guide/v0.1.7-rc.2/transcript-view-legacy-normal/guide.md +25 -0
- package/kb/extra/upgrade-guide/v0.1.7-rc.2/transcript-view-legacy-normal/guide.zh.md +25 -0
- package/kb/extra/upgrade-guide/v0.2.0-rc.2/account-sign-in-errors/guide.md +18 -0
- package/kb/extra/upgrade-guide/v0.2.0-rc.2/account-sign-in-errors/guide.zh.md +18 -0
- package/kb/extra/upgrade-guide/v0.2.0-rc.2/remove-runtime-invariants/guide.md +23 -0
- package/kb/extra/upgrade-guide/v0.2.0-rc.2/remove-runtime-invariants/guide.zh.md +23 -0
- package/kb/extra/upgrade-guide/v0.2.0-rc.2/schedule-bundle-retired/guide.md +22 -0
- package/kb/extra/upgrade-guide/v0.2.0-rc.2/schedule-bundle-retired/guide.zh.md +22 -0
- package/kb/extra/upgrade-guide/v0.2.0-rc.2/subpath-plugin-display-manifest/guide.md +27 -0
- package/kb/extra/upgrade-guide/v0.2.0-rc.2/subpath-plugin-display-manifest/guide.zh.md +27 -0
- package/kb/extra/web-styling.md +12 -2
- package/kb/extra/web-styling.zh.md +12 -2
- package/kb/meta/search-index.json +1019 -251
- package/kb/meta/site-pages.txt +187 -183
- package/kb/meta/source.json +8 -8
- package/kb/meta/topics.md +11 -7
- package/kb/site/develop/basic/config.md +1 -0
- package/kb/site/develop/basic/index.md +1 -0
- package/kb/site/develop/basic/publish.md +10 -3
- package/kb/site/develop/basic/tool.md +1 -0
- package/kb/site/develop/cordis-tutorial/01-first-plugin.md +1 -0
- package/kb/site/develop/cordis-tutorial/02-lifecycle-and-effects.md +1 -0
- package/kb/site/develop/cordis-tutorial/03-services.md +1 -0
- package/kb/site/develop/cordis-tutorial/04-events.md +1 -0
- package/kb/site/develop/cordis-tutorial/05-config.md +28 -0
- package/kb/site/develop/cordis-tutorial/06-composition-and-hmr.md +3 -2
- package/kb/site/develop/cordis-tutorial/07-into-the-harness.md +1 -0
- package/kb/site/develop/cordis-tutorial/index.md +1 -0
- package/kb/site/develop/framework/events.md +1 -0
- package/kb/site/develop/framework/index.md +2 -1
- package/kb/site/develop/framework/service.md +1 -0
- package/kb/site/develop/practice/dynamic-cordis.md +9 -8
- package/kb/site/develop/practice/index.md +1 -0
- package/kb/site/develop/practice/llm-adapter.md +2 -1
- package/kb/site/en/develop/basic/config.md +1 -0
- package/kb/site/en/develop/basic/index.md +1 -0
- package/kb/site/en/develop/basic/publish.md +10 -3
- package/kb/site/en/develop/basic/tool.md +1 -0
- package/kb/site/en/develop/cordis-tutorial/01-first-plugin.md +1 -0
- package/kb/site/en/develop/cordis-tutorial/02-lifecycle-and-effects.md +1 -0
- package/kb/site/en/develop/cordis-tutorial/03-services.md +1 -0
- package/kb/site/en/develop/cordis-tutorial/04-events.md +1 -0
- package/kb/site/en/develop/cordis-tutorial/05-config.md +28 -0
- package/kb/site/en/develop/cordis-tutorial/06-composition-and-hmr.md +3 -2
- package/kb/site/en/develop/cordis-tutorial/07-into-the-harness.md +1 -0
- package/kb/site/en/develop/cordis-tutorial/index.md +1 -0
- package/kb/site/en/develop/framework/events.md +1 -0
- package/kb/site/en/develop/framework/index.md +2 -1
- package/kb/site/en/develop/framework/service.md +1 -0
- package/kb/site/en/develop/practice/dynamic-cordis.md +9 -8
- package/kb/site/en/develop/practice/index.md +1 -0
- package/kb/site/en/develop/practice/llm-adapter.md +2 -1
- package/kb/site/en/guide/github-review.md +1 -0
- package/kb/site/en/guide/mcp-memory.md +1 -0
- package/kb/site/en/guide/network-proxy.md +2 -1
- package/kb/site/en/guide/providers-custom-form.png +0 -0
- package/kb/site/en/guide/providers-models-page.png +0 -0
- package/kb/site/en/guide/providers.md +98 -83
- package/kb/site/en/guide/public-deployments.md +36 -0
- package/kb/site/en/guide/python-sdk.md +60 -23
- package/kb/site/en/guide/quickstart.md +2 -0
- package/kb/site/en/guide/schedule.md +70 -11
- package/kb/site/en/reference/agent-lifecycle.md +13 -5
- package/kb/site/en/reference/api-gateway.md +13 -11
- package/kb/site/en/reference/capability-seams.md +187 -62
- package/kb/site/en/reference/config-catalog.md +1887 -819
- package/kb/site/en/reference/cookbook/adding-a-package.md +57 -3
- package/kb/site/en/reference/cookbook/adding-a-settings-card.md +35 -64
- package/kb/site/en/reference/cookbook/adding-a-tool.md +5 -4
- package/kb/site/en/reference/cookbook/adding-an-llm-adapter.md +1 -0
- package/kb/site/en/reference/cookbook/extension-cookbook.md +7 -6
- package/kb/site/en/reference/cordis-api/context.md +1 -0
- package/kb/site/en/reference/cordis-api/events.md +1 -0
- package/kb/site/en/reference/cordis-api/fiber.md +4 -3
- package/kb/site/en/reference/cordis-api/inherited.md +16 -16
- package/kb/site/en/reference/cordis-api/registry.md +1 -0
- package/kb/site/en/reference/cordis-api/service.md +1 -0
- package/kb/site/en/reference/cordis-primer.md +1 -0
- package/kb/site/en/reference/index.md +32 -15
- package/kb/site/en/reference/persistence-catalog.md +7787 -81
- package/kb/site/en/reference/subsystems/approval.md +3 -2
- package/kb/site/en/reference/subsystems/client-modules.md +30 -13
- package/kb/site/en/reference/subsystems/client-resources.md +96 -0
- package/kb/site/en/reference/subsystems/commands.md +6 -1
- package/kb/site/en/reference/subsystems/compaction.md +50 -3
- package/kb/site/en/reference/subsystems/conversation.md +36 -6
- package/kb/site/en/reference/subsystems/core.md +174 -271
- package/kb/site/en/reference/subsystems/credentials.md +169 -5
- package/kb/site/en/reference/subsystems/filesystem.md +26 -0
- package/kb/site/en/reference/subsystems/goal.md +39 -2
- package/kb/site/en/reference/subsystems/index.md +18 -5
- package/kb/site/en/reference/subsystems/jobs.md +337 -127
- package/kb/site/en/reference/subsystems/llm-streaming.md +93 -43
- package/kb/site/en/reference/subsystems/lsp.md +2 -1
- package/kb/site/en/reference/subsystems/permission-presets.md +66 -29
- package/kb/site/en/reference/subsystems/persistence.md +40 -18
- package/kb/site/en/reference/subsystems/plan.md +2 -1
- package/kb/site/en/reference/subsystems/ptc-runtime.md +236 -0
- package/kb/site/en/reference/subsystems/sandbox.md +7 -5
- package/kb/site/en/reference/subsystems/schedule.md +392 -33
- package/kb/site/en/reference/subsystems/scope.md +2 -1
- package/kb/site/en/reference/subsystems/session-projection.md +22 -19
- package/kb/site/en/reference/subsystems/session-query.md +1 -0
- package/kb/site/en/reference/subsystems/session-reference.md +12 -6
- package/kb/site/en/reference/subsystems/session-telemetry.md +27 -8
- package/kb/site/en/reference/subsystems/session-title.md +6 -5
- package/kb/site/en/reference/subsystems/session.md +258 -118
- package/kb/site/en/reference/subsystems/settings.md +43 -292
- package/kb/site/en/reference/subsystems/shell.md +44 -32
- package/kb/site/en/reference/subsystems/sidebar-right.md +162 -0
- package/kb/site/en/reference/subsystems/skills.md +5 -6
- package/kb/site/en/reference/subsystems/slots.md +68 -39
- package/kb/site/en/reference/subsystems/spill.md +15 -7
- package/kb/site/en/reference/subsystems/storage.md +2 -2
- package/kb/site/en/reference/subsystems/subagent.md +65 -72
- package/kb/site/en/reference/subsystems/subprocess.md +42 -44
- package/kb/site/en/reference/subsystems/system-prompt.md +7 -2
- package/kb/site/en/reference/subsystems/terminal.md +1 -0
- package/kb/site/en/reference/subsystems/token-meter.md +3 -1
- package/kb/site/en/reference/subsystems/tools.md +44 -16
- package/kb/site/en/reference/subsystems/typert.md +153 -10
- package/kb/site/en/reference/subsystems/user-questions.md +131 -1
- package/kb/site/en/reference/subsystems/web-client.md +15 -9
- package/kb/site/en/reference/subsystems/web-server.md +74 -1
- package/kb/site/en/reference/subsystems/web.md +1 -0
- package/kb/site/en/reference/subsystems/workflow.md +10 -9
- package/kb/site/en/reference/subsystems/workspace.md +343 -4
- package/kb/site/en/reference/tool-catalog.md +806 -311
- package/kb/site/en/reference/tool-execution-pipeline.md +9 -5
- package/kb/site/guide/github-review.md +1 -0
- package/kb/site/guide/mcp-memory.md +1 -0
- package/kb/site/guide/network-proxy.md +2 -1
- package/kb/site/guide/providers-custom-form.zh.png +0 -0
- package/kb/site/guide/providers-models-page.zh.png +0 -0
- package/kb/site/guide/providers.md +109 -94
- package/kb/site/guide/public-deployments.md +36 -0
- package/kb/site/guide/python-sdk.md +60 -23
- package/kb/site/guide/quickstart.md +2 -0
- package/kb/site/guide/schedule.md +70 -11
- package/kb/site/reference/agent-lifecycle.md +13 -5
- package/kb/site/reference/api-gateway.md +13 -11
- package/kb/site/reference/capability-seams.md +187 -62
- package/kb/site/reference/config-catalog.md +1889 -820
- package/kb/site/reference/cookbook/adding-a-package.md +55 -3
- package/kb/site/reference/cookbook/adding-a-settings-card.md +35 -64
- package/kb/site/reference/cookbook/adding-a-tool.md +5 -4
- package/kb/site/reference/cookbook/adding-an-llm-adapter.md +1 -0
- package/kb/site/reference/cookbook/extension-cookbook.md +7 -6
- package/kb/site/reference/cordis-api/context.md +1 -0
- package/kb/site/reference/cordis-api/events.md +1 -0
- package/kb/site/reference/cordis-api/fiber.md +4 -3
- package/kb/site/reference/cordis-api/inherited.md +16 -16
- package/kb/site/reference/cordis-api/registry.md +1 -0
- package/kb/site/reference/cordis-api/service.md +1 -0
- package/kb/site/reference/cordis-primer.md +1 -0
- package/kb/site/reference/index.md +32 -15
- package/kb/site/reference/persistence-catalog.md +7791 -85
- package/kb/site/reference/subsystems/approval.md +3 -2
- package/kb/site/reference/subsystems/client-modules.md +30 -13
- package/kb/site/reference/subsystems/client-resources.md +96 -0
- package/kb/site/reference/subsystems/commands.md +6 -1
- package/kb/site/reference/subsystems/compaction.md +50 -3
- package/kb/site/reference/subsystems/conversation.md +35 -5
- package/kb/site/reference/subsystems/core.md +174 -271
- package/kb/site/reference/subsystems/credentials.md +169 -5
- package/kb/site/reference/subsystems/filesystem.md +26 -0
- package/kb/site/reference/subsystems/goal.md +39 -2
- package/kb/site/reference/subsystems/index.md +28 -15
- package/kb/site/reference/subsystems/jobs.md +336 -126
- package/kb/site/reference/subsystems/llm-streaming.md +93 -43
- package/kb/site/reference/subsystems/lsp.md +2 -1
- package/kb/site/reference/subsystems/permission-presets.md +66 -29
- package/kb/site/reference/subsystems/persistence.md +40 -18
- package/kb/site/reference/subsystems/plan.md +2 -1
- package/kb/site/reference/subsystems/ptc-runtime.md +236 -0
- package/kb/site/reference/subsystems/sandbox.md +7 -5
- package/kb/site/reference/subsystems/schedule.md +392 -33
- package/kb/site/reference/subsystems/scope.md +2 -1
- package/kb/site/reference/subsystems/session-projection.md +22 -19
- package/kb/site/reference/subsystems/session-query.md +1 -0
- package/kb/site/reference/subsystems/session-reference.md +12 -6
- package/kb/site/reference/subsystems/session-telemetry.md +27 -8
- package/kb/site/reference/subsystems/session-title.md +6 -5
- package/kb/site/reference/subsystems/session.md +258 -118
- package/kb/site/reference/subsystems/settings.md +43 -292
- package/kb/site/reference/subsystems/shell.md +44 -32
- package/kb/site/reference/subsystems/sidebar-right.md +162 -0
- package/kb/site/reference/subsystems/skills.md +5 -6
- package/kb/site/reference/subsystems/slots.md +68 -39
- package/kb/site/reference/subsystems/spill.md +15 -7
- package/kb/site/reference/subsystems/storage.md +2 -2
- package/kb/site/reference/subsystems/subagent.md +64 -71
- package/kb/site/reference/subsystems/subprocess.md +42 -44
- package/kb/site/reference/subsystems/system-prompt.md +7 -2
- package/kb/site/reference/subsystems/terminal.md +1 -0
- package/kb/site/reference/subsystems/token-meter.md +3 -1
- package/kb/site/reference/subsystems/tools.md +44 -16
- package/kb/site/reference/subsystems/typert.md +153 -10
- package/kb/site/reference/subsystems/user-questions.md +132 -2
- package/kb/site/reference/subsystems/web-client.md +15 -9
- package/kb/site/reference/subsystems/web-server.md +74 -1
- package/kb/site/reference/subsystems/web.md +1 -0
- package/kb/site/reference/subsystems/workflow.md +10 -9
- package/kb/site/reference/subsystems/workspace.md +343 -4
- package/kb/site/reference/tool-catalog.md +810 -315
- package/kb/site/reference/tool-execution-pipeline.md +9 -5
- package/lib/index.js +25 -44
- package/package.json +3 -2
- package/skills/dsh-plugin-dev-kb.md +6 -5
- package/kb/site/en/reference/subsystems/code-runtime.md +0 -198
- package/kb/site/en/reference/subsystems/invariants.md +0 -91
- package/kb/site/reference/subsystems/code-runtime.md +0 -198
- package/kb/site/reference/subsystems/invariants.md +0 -91
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Session format version and release status
|
|
2
|
+
|
|
3
|
+
English | [中文](session-format-status.zh.md)
|
|
4
|
+
|
|
5
|
+
## Summary
|
|
6
|
+
|
|
7
|
+
Use this reference to distinguish the checkout writer, the accepted compatibility baseline, and the latest published Session format. The code constant owns the writer; the finalization and release records below separately identify accepted history and publication evidence. Other documentation links here instead of restating those values.
|
|
8
|
+
|
|
9
|
+
## Table of Contents
|
|
10
|
+
|
|
11
|
+
- [Sources of truth](#sources-of-truth)
|
|
12
|
+
- [Finalization record](#finalization-record)
|
|
13
|
+
- [Release record](#release-record)
|
|
14
|
+
- [Updating the record](#updating-the-record)
|
|
15
|
+
- [Dev Note](#dev-note)
|
|
16
|
+
|
|
17
|
+
<a id="sources-of-truth"></a>
|
|
18
|
+
## Sources of truth
|
|
19
|
+
|
|
20
|
+
- **Checkout writer:** `SESSION_FORMAT_VERSION` in [core Session types](../packages/core/session/src/types.ts) is the only hand-maintained current-writer number in code. The [catalog generator](../scripts/gen-session-format-catalog.ts) derives codec ordering and checks that adjacent migrations reach it. A package version, codec export name, fixture filename, or projection-cache version is not the writer authority.
|
|
21
|
+
- **Latest released format:** `latestReleasedVersion` in the following record identifies the published Session format. `evidenceTag` names a published product release whose tagged writer has that value; it need not be the first release carrying the format. The bilingual copy is checked against the same record, not maintained as a separate decision.
|
|
22
|
+
- **Release status:** compare the writer constant with the verified release record. Equality means the writer format has shipped. A greater writer version is not yet recorded as published; its finalization record independently identifies the accepted compatibility baseline. When comparing an older checkout against a newer branch’s verified record, a lower writer version identifies an older writer format; the local consistency gate rejects that ordering within one checkout. No separate released boolean is maintained. Before declaring a greater version unreleased, verify that no published release has advanced the record.
|
|
23
|
+
|
|
24
|
+
An alpha, beta, or release-candidate product publication establishes released Session-format obligations. GitHub’s prerelease flag does not make persisted user data disposable. A missing release record is not evidence of non-publication. The [versioning and authority decision](../.agents/notes/implemented/architecture/2026-08-10-session-log-version-mechanism.md) owns compatibility decisions; [released-format migration](../.agents/notes/implemented/architecture/2026-08-31-released-session-format-migrations.md) owns immutable generations and adjacent conversion.
|
|
25
|
+
|
|
26
|
+
The [format references](persistence-changes/historical-formats/README.md) document every integer from zero through the checkout writer, with historical schemas and the existing current catalog.
|
|
27
|
+
|
|
28
|
+
<a id="finalization-record"></a>
|
|
29
|
+
## Finalization record
|
|
30
|
+
|
|
31
|
+
```yaml session-format-finalization
|
|
32
|
+
latestFinalizedVersion: 4
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
V4 has an accepted compatibility baseline in the [checkpoint](persistence-changes/finalized/v4.json). Backward-compatible schema changes may remain V4 through new acknowledgement records. Breaking changes require a higher writer version and their own header transition; they cannot reuse the accepted 3→4 transition. Accepted machine records and after schemas remain immutable. [Checkpoint rules](persistence-changes/README.md#compatibility-rules) define the comparison.
|
|
36
|
+
|
|
37
|
+
Finalization does not freeze every future V4 addition and does not assert publication. The release record below retains the independently verified published version. Ordinary comments, aliases, source locations, and implementation fixes preserving the accepted meaning do not change this baseline.
|
|
38
|
+
|
|
39
|
+
Before the first V4 publication, every integration of a newer V3-writing master must pass the [explicit V3 vocabulary check](cookbook/adding-a-session-format-version.md#final-v3-vocabulary) against the recorded local source commit. Verify the source pin’s freshness and review new event payload conversions before updating the migration-owned set. After publication, the final V3 vocabulary remains historical and independent of current V4 additions.
|
|
40
|
+
|
|
41
|
+
<a id="release-record"></a>
|
|
42
|
+
## Release record
|
|
43
|
+
|
|
44
|
+
```yaml session-format-release
|
|
45
|
+
latestReleasedVersion: 3
|
|
46
|
+
evidenceTag: dsh-v0.1.5-alpha.1
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Evidence: published product tag `dsh-v0.1.5-alpha.1`; tagged writer: `packages/core/session/src/types.ts`.
|
|
50
|
+
|
|
51
|
+
<a id="updating-the-record"></a>
|
|
52
|
+
## Updating the record
|
|
53
|
+
|
|
54
|
+
When a structural writer change is implemented, update the code constant and adjacent catalog together; do not advance this release record before publication. When a product release first publishes a higher Session format, confirm publication and its tagged writer, then advance this record and the evidence tag and tagged writer path in the same bilingual update. Later product releases carrying the same format do not require changing the record. Never lower it on the development trunk.
|
|
55
|
+
|
|
56
|
+
The [documentation-standard test](../scripts/doc-standard.spec.ts) checks record structure, bilingual equality, evidence-tag and writer-path consistency, and that the documented release does not exceed the checkout writer. This keyless check does not query GitHub or prove that the record is up to date; publication verification remains part of the release update.
|
|
57
|
+
|
|
58
|
+
Use “current format” and “next adjacent version” for general behavior. Keep explicit numbers for fixed migration inputs and outputs, wire schemas, historical evidence, and tests of those particular versions. The [format-version cookbook](cookbook/adding-a-session-format-version.md) uses N for the latest finalized or released format and N+1 for its successor.
|
|
59
|
+
|
|
60
|
+
<a id="dev-note"></a>
|
|
61
|
+
## Dev Note
|
|
62
|
+
|
|
63
|
+
None.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Session 格式版本与发布状态
|
|
2
|
+
|
|
3
|
+
[English](session-format-status.md) | 中文
|
|
4
|
+
|
|
5
|
+
## 概述
|
|
6
|
+
|
|
7
|
+
本参考区分工作区写入器、已接受兼容性基线与最新已发布的 Session 格式。代码常量拥有写入器版本;下方定稿记录和发布记录分别标识已接受历史与发布证据。其他文档链接到这里,不重复这些值。
|
|
8
|
+
|
|
9
|
+
## 目录
|
|
10
|
+
|
|
11
|
+
- [单一真源](#sources-of-truth)
|
|
12
|
+
- [定稿记录](#finalization-record)
|
|
13
|
+
- [发布记录](#release-record)
|
|
14
|
+
- [更新记录](#updating-the-record)
|
|
15
|
+
- [开发备注](#dev-note)
|
|
16
|
+
|
|
17
|
+
<a id="sources-of-truth"></a>
|
|
18
|
+
## 单一真源
|
|
19
|
+
|
|
20
|
+
- **工作区写入器:**[核心 Session 类型](../packages/core/session/src/types.ts)中的 `SESSION_FORMAT_VERSION` 是代码中唯一手工维护的当前写入器版本号。[目录生成器](../scripts/gen-session-format-catalog.ts)推导 codec 顺序,并检查相邻迁移是否到达该版本。包版本、codec 导出名称、fixture(测试前置数据)文件名或投影缓存版本都不是写入器版本的权威来源。
|
|
21
|
+
- **最新已发布格式:**下方记录中的 `latestReleasedVersion` 标识已发布的 Session 格式。`evidenceTag` 指定一个已发布的产品版本,其标签对应的写入器具有该值;它不必是首次携带该格式的发布。双语副本按同一记录校验,不作为独立决策维护。
|
|
22
|
+
- **发布状态:**比较写入器常量与已核实的发布记录。相等表示写入器格式已经发布。写入器版本更高表示发布记录尚未收录它;独立的定稿记录标识已接受的兼容性基线。用较新分支中已核实的记录对比旧工作区时,较低的写入器版本表示较旧的写入器格式;本地一致性门禁会拒绝同一工作区内的这种大小关系。不另行维护 released 布尔值。在声明更高版本尚未发布前,必须核实是否已有产品发布推进了记录。
|
|
23
|
+
|
|
24
|
+
产品的 alpha、beta 或 release-candidate 发布都会确立已发布 Session 格式的义务。GitHub 的 prerelease 标记不会让持久化用户数据成为可丢弃数据。缺少发布记录不代表尚未发布。[版本与真源决策](../.agents/notes/implemented/architecture/2026-08-10-session-log-version-mechanism.zh.md)拥有兼容性决策;[已发布格式迁移](../.agents/notes/implemented/architecture/2026-08-31-released-session-format-migrations.zh.md)拥有不可变代际与相邻转换规则。
|
|
25
|
+
|
|
26
|
+
[格式参考](persistence-changes/historical-formats/README.zh.md)记录从零到工作区写入器的每个整数版本,提供历史 schema 并引用现有的当前目录。
|
|
27
|
+
|
|
28
|
+
<a id="finalization-record"></a>
|
|
29
|
+
## 定稿记录
|
|
30
|
+
|
|
31
|
+
```yaml session-format-finalization
|
|
32
|
+
latestFinalizedVersion: 4
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
V4 的已接受兼容性基线保存在[检查点](persistence-changes/finalized/v4.json)中。向后兼容的 schema 变更可以通过新的确认记录保留 V4。破坏性变更要求更高的写入器版本及自身的头版本转换,不能复用已接受的 3→4 转换。已接受的机器记录与变更后 schema 保持不可变。[检查点规则](persistence-changes/README.zh.md#compatibility-rules)规定比较方法。
|
|
36
|
+
|
|
37
|
+
定稿不冻结 V4 之后的每项新增,也不表示已发布。下方发布记录保留独立验证的已发布版本。普通注释、别名、源码位置,以及保留已接受含义的实现修复,不改变该基线。
|
|
38
|
+
|
|
39
|
+
首次发布 V4 前,每次集成仍写入 V3 的较新 master 都必须对已记录的本地源提交执行[显式 V3 词汇校验](cookbook/adding-a-session-format-version.zh.md#final-v3-vocabulary)。更新迁移所有的集合前,要核验源 pin 的新鲜度并审查新事件 payload 的转换。发布后,最终 V3 词汇保持为历史定义,与当前 V4 新增事件无关。
|
|
40
|
+
|
|
41
|
+
<a id="release-record"></a>
|
|
42
|
+
## 发布记录
|
|
43
|
+
|
|
44
|
+
```yaml session-format-release
|
|
45
|
+
latestReleasedVersion: 3
|
|
46
|
+
evidenceTag: dsh-v0.1.5-alpha.1
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
证据:已发布产品标签 `dsh-v0.1.5-alpha.1`;该标签的写入器路径:`packages/core/session/src/types.ts`。
|
|
50
|
+
|
|
51
|
+
<a id="updating-the-record"></a>
|
|
52
|
+
## 更新记录
|
|
53
|
+
|
|
54
|
+
实现结构性写入器变更时,一起更新代码常量与相邻迁移目录;不要在产品发布前推进此发布记录。当产品首次发布更高的 Session 格式时,确认发布事实及对应标签的写入器,然后在同一次双语更新中推进本记录与证据标签及该标签的写入器路径。后续携带相同格式的产品发布无需改变此记录。开发主干上的记录绝不降低。
|
|
55
|
+
|
|
56
|
+
[文档标准测试](../scripts/doc-standard.spec.ts)检查记录结构、双语一致性、证据标签及写入器路径一致性,以及文档中的已发布版本不高于工作区写入器。这个无密钥检查不会查询 GitHub,也不能证明记录是最新的;核实发布事实仍属于发布更新的一部分。
|
|
57
|
+
|
|
58
|
+
一般行为使用“当前格式”和“下一条相邻版本”等表述。固定迁移的输入与输出、协议 schema、历史证据及针对特定版本的测试保留明确版本号。[格式版本实操手册](cookbook/adding-a-session-format-version.zh.md)用 N 表示最新已定稿或已发布格式,用 N+1 表示其后继版本。
|
|
59
|
+
|
|
60
|
+
<a id="dev-note"></a>
|
|
61
|
+
## 开发备注
|
|
62
|
+
|
|
63
|
+
无。
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
English | [中文](agent-team.zh.md)
|
|
4
4
|
|
|
5
|
-
Types shared by the experimental implicit-root Team domain, model tools, and host adapters. The [Agent Teams Agent Note](../../.agents/notes/implemented/feature/2026-08-05-agent-teams.md) owns identity, mailbox, task, and shared-checkout decisions;
|
|
5
|
+
Types shared by the experimental implicit-root Team domain, model tools, and host adapters. The [Agent Teams Agent Note](../../.agents/notes/implemented/feature/2026-08-05-agent-teams.md) owns identity, mailbox, task, and shared-checkout decisions; this page records the durable and client-visible forms from [`packages/experimental/agent-team/src/types.ts`](../../packages/experimental/agent-team/src/types.ts).
|
|
6
6
|
|
|
7
7
|
## Identity and roster
|
|
8
8
|
|
|
@@ -21,7 +21,7 @@ interface TeamMemberSnapshot {
|
|
|
21
21
|
}
|
|
22
22
|
```
|
|
23
23
|
|
|
24
|
-
Every member starts in `provisioning` and reaches exactly one terminal roster phase, `active` or `failed`.
|
|
24
|
+
Every member starts in `provisioning` and reaches exactly one terminal roster phase, `active` or `failed`. Roster `running`/`inactive` status is derived separately and never rewrites this record.
|
|
25
25
|
|
|
26
26
|
## Durable mailbox
|
|
27
27
|
|
|
@@ -38,7 +38,7 @@ interface TeamMessageSnapshot {
|
|
|
38
38
|
}
|
|
39
39
|
```
|
|
40
40
|
|
|
41
|
-
Every message attempts Steer delivery. A running target receives it at the nearest step boundary
|
|
41
|
+
Every message attempts Steer delivery. A running target receives it at the nearest step boundary; an inactive target starts a turn if loaded or cold-resumes otherwise. Scheduling is not stored in the durable record because callers cannot select another mode.
|
|
42
42
|
|
|
43
43
|
The target Session keeps message identity and sender attribution on both the pending inbox item and the eventual user message. Folding that source across inbox and history is the target-side de-duplication key; the model-visible framing repeats the id and sender.
|
|
44
44
|
|
|
@@ -73,9 +73,56 @@ interface TeamTaskSnapshot {
|
|
|
73
73
|
|
|
74
74
|
`pending` is unstarted or released, `in_progress` carries an owner, `completed` satisfies blockers, and `deleted` is a retained tombstone. Views add owner name, readiness, and write-scope overlap warnings without changing the durable snapshot.
|
|
75
75
|
|
|
76
|
+
<a id="web-projection"></a>
|
|
77
|
+
|
|
78
|
+
## Web projection
|
|
79
|
+
|
|
80
|
+
The Lead Session publishes `SessionProjectionMap.agentTeam` with durable roster rows and non-deleted task views. `failure` reports a rejected persisted record beside the last valid state. Member activity comes from Session status; model labels come from each member's `modelSelection` projection.
|
|
81
|
+
|
|
82
|
+
```ts type-equiv
|
|
83
|
+
/** One durable roster row published through the `agentTeam` Session projection. */
|
|
84
|
+
interface TeamMemberProjection {
|
|
85
|
+
readonly id: SessionId
|
|
86
|
+
readonly name: string
|
|
87
|
+
readonly role: 'lead' | 'teammate'
|
|
88
|
+
/** Durable lifecycle; the Lead row is always `active`. Turn activity comes from Session status. */
|
|
89
|
+
readonly phase: TeamMemberPhase
|
|
90
|
+
readonly error?: string
|
|
91
|
+
}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
```ts type-equiv
|
|
95
|
+
/** Runtime-enriched task view returned to tools and hosts. */
|
|
96
|
+
interface TeamTaskView {
|
|
97
|
+
readonly id: TeamTaskId
|
|
98
|
+
readonly revision: number
|
|
99
|
+
readonly subject: string
|
|
100
|
+
readonly description: string
|
|
101
|
+
readonly status: TeamTaskStatus
|
|
102
|
+
readonly blockedBy: TeamTaskId[]
|
|
103
|
+
readonly writeScopes: string[]
|
|
104
|
+
readonly ownerName?: string
|
|
105
|
+
readonly ready: boolean
|
|
106
|
+
readonly writeScopeWarnings: string[]
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
```ts type-equiv
|
|
111
|
+
/**
|
|
112
|
+
* Durable Team state published to browser clients through the Lead Session's
|
|
113
|
+
* `agentTeam` projection. `failure` names the first rejected persisted Team
|
|
114
|
+
* record; members and tasks then stay at the last valid state.
|
|
115
|
+
*/
|
|
116
|
+
interface TeamProjection {
|
|
117
|
+
readonly members: TeamMemberProjection[]
|
|
118
|
+
readonly tasks: TeamTaskView[]
|
|
119
|
+
readonly failure?: string
|
|
120
|
+
}
|
|
121
|
+
```
|
|
122
|
+
|
|
76
123
|
## Replay
|
|
77
124
|
|
|
78
|
-
`
|
|
125
|
+
The `agentTeam` Session projection replays one root Session into the roster, task board, and queued-minus-delivered mailbox that every Team operation reads. It selects records by `TeamId`, so events inherited by an ordinary fork retain the ancestor id and never enter the new root's state. Session event `seq` and `time` remain the ordering and timing record; Team snapshots do not duplicate them. Roster and task reads reach callers as views; pending mail stays internal to delivery and recovery. The package [README](../../packages/experimental/agent-team/README.md) owns operation, authorization, recovery, and limit behavior.
|
|
79
126
|
|
|
80
127
|
<!-- BEGIN GENERATED cordis-surface (gen-cordis-catalog.ts) — do not edit between markers -->
|
|
81
128
|
|
|
@@ -168,7 +215,7 @@ async waitForChange(caller: Agent, timeoutMs: number, signal: AbortSignal): Prom
|
|
|
168
215
|
* @param targetName - durable teammate name.
|
|
169
216
|
* @returns the target status sampled before cancellation.
|
|
170
217
|
*/
|
|
171
|
-
interrupt(caller: Agent, targetName: string): { previousStatus: 'running' | '
|
|
218
|
+
interrupt(caller: Agent, targetName: string): { previousStatus: 'running' | 'inactive' }
|
|
172
219
|
|
|
173
220
|
/**
|
|
174
221
|
* Resolve a caller without throwing, used by scoped-tool installation and observers.
|
|
@@ -176,29 +223,6 @@ interrupt(caller: Agent, targetName: string): { previousStatus: 'running' | 'idl
|
|
|
176
223
|
* @returns Team membership, or undefined for non-Team subagents and stale identities.
|
|
177
224
|
*/
|
|
178
225
|
tryMembership(agent: Agent): TeamMembership | undefined
|
|
179
|
-
|
|
180
|
-
/**
|
|
181
|
-
* Read the current roster and non-deleted task board through the generated Remote API.
|
|
182
|
-
* @param agent - exact live Team member used as the authority credential.
|
|
183
|
-
* @returns detached current roster and task views.
|
|
184
|
-
*/
|
|
185
|
-
@Remote('view') remoteView(agent: Agent): TeamView
|
|
186
|
-
|
|
187
|
-
/**
|
|
188
|
-
* Create one shared task through the generated Remote API.
|
|
189
|
-
* @param agent - exact live Team member creating the task.
|
|
190
|
-
* @param request - task text, blockers, and advisory write scopes.
|
|
191
|
-
* @returns the revision-one task or a typed Team rejection.
|
|
192
|
-
*/
|
|
193
|
-
@Remote('createTask') remoteCreateTask(agent: Agent, request: CreateTeamTaskRequest): Promise<TeamTaskMutationResult>
|
|
194
|
-
|
|
195
|
-
/**
|
|
196
|
-
* Apply one task mutation and preserve Team rejections as business results.
|
|
197
|
-
* @param agent - exact live Team member authorizing the mutation.
|
|
198
|
-
* @param request - task identity, expected revision, action, and action fields.
|
|
199
|
-
* @returns the committed task or a typed Team rejection.
|
|
200
|
-
*/
|
|
201
|
-
@Remote('updateTask') remoteUpdateTask(agent: Agent, request: UpdateTeamTaskRequest): Promise<TeamTaskMutationResult>
|
|
202
226
|
```
|
|
203
227
|
|
|
204
228
|
Types: [Agent](core.md)
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[English](agent-team.md) | 中文
|
|
4
4
|
|
|
5
|
-
实验性隐式 Root Team 领域、模型工具与宿主适配器共享的类型。[Agent Teams Agent Note](../../.agents/notes/implemented/feature/2026-08-05-agent-teams.zh.md)负责身份、mailbox、task 与共享 checkout
|
|
5
|
+
实验性隐式 Root Team 领域、模型工具与宿主适配器共享的类型。[Agent Teams Agent Note](../../.agents/notes/implemented/feature/2026-08-05-agent-teams.zh.md)负责身份、mailbox、task 与共享 checkout 决策;本页记录 [`packages/experimental/agent-team/src/types.ts`](../../packages/experimental/agent-team/src/types.ts) 中的持久与客户端可见形式。
|
|
6
6
|
|
|
7
7
|
## 身份与 roster
|
|
8
8
|
|
|
@@ -21,7 +21,7 @@ interface TeamMemberSnapshot {
|
|
|
21
21
|
}
|
|
22
22
|
```
|
|
23
23
|
|
|
24
|
-
每个 member 都从 `provisioning` 开始,并且只到达一个终态 roster phase:`active` 或 `failed
|
|
24
|
+
每个 member 都从 `provisioning` 开始,并且只到达一个终态 roster phase:`active` 或 `failed`。roster 的 `running`/`inactive` 状态单独派生,绝不会重写该记录。
|
|
25
25
|
|
|
26
26
|
## 持久 mailbox
|
|
27
27
|
|
|
@@ -38,7 +38,7 @@ interface TeamMessageSnapshot {
|
|
|
38
38
|
}
|
|
39
39
|
```
|
|
40
40
|
|
|
41
|
-
每条消息都会尝试 Steer 投递。running target 在最近的步骤边界收到消息,
|
|
41
|
+
每条消息都会尝试 Steer 投递。running target 在最近的步骤边界收到消息,inactive target 在已加载时启动一个轮次,否则冷恢复。调用方不能选择其他模式,因此持久记录不存储调度方式。
|
|
42
42
|
|
|
43
43
|
target Session 会在 pending inbox 条目和最终用户消息上保留消息身份与发送者归因。跨 inbox 与历史折叠该 source 构成 target 侧去重键;模型可见的 framing 会重复 id 和发送者。
|
|
44
44
|
|
|
@@ -73,9 +73,56 @@ interface TeamTaskSnapshot {
|
|
|
73
73
|
|
|
74
74
|
`pending` 表示尚未开始或已经释放,`in_progress` 携带 owner,`completed` 满足 blocker,`deleted` 是保留的 tombstone。view 会添加 owner name、readiness 和 write-scope 重叠警告,但不会改变持久快照。
|
|
75
75
|
|
|
76
|
+
<a id="web-projection"></a>
|
|
77
|
+
|
|
78
|
+
## Web 投影
|
|
79
|
+
|
|
80
|
+
Lead Session 通过 `SessionProjectionMap.agentTeam` 发布持久 roster 行与未删除任务视图。`failure` 在最后有效状态旁报告被拒绝的持久记录。成员活动来自 Session 状态;模型标签来自各成员的 `modelSelection` 投影。
|
|
81
|
+
|
|
82
|
+
```ts type-equiv
|
|
83
|
+
/** One durable roster row published through the `agentTeam` Session projection. */
|
|
84
|
+
interface TeamMemberProjection {
|
|
85
|
+
readonly id: SessionId
|
|
86
|
+
readonly name: string
|
|
87
|
+
readonly role: 'lead' | 'teammate'
|
|
88
|
+
/** Durable lifecycle; the Lead row is always `active`. Turn activity comes from Session status. */
|
|
89
|
+
readonly phase: TeamMemberPhase
|
|
90
|
+
readonly error?: string
|
|
91
|
+
}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
```ts type-equiv
|
|
95
|
+
/** Runtime-enriched task view returned to tools and hosts. */
|
|
96
|
+
interface TeamTaskView {
|
|
97
|
+
readonly id: TeamTaskId
|
|
98
|
+
readonly revision: number
|
|
99
|
+
readonly subject: string
|
|
100
|
+
readonly description: string
|
|
101
|
+
readonly status: TeamTaskStatus
|
|
102
|
+
readonly blockedBy: TeamTaskId[]
|
|
103
|
+
readonly writeScopes: string[]
|
|
104
|
+
readonly ownerName?: string
|
|
105
|
+
readonly ready: boolean
|
|
106
|
+
readonly writeScopeWarnings: string[]
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
```ts type-equiv
|
|
111
|
+
/**
|
|
112
|
+
* Durable Team state published to browser clients through the Lead Session's
|
|
113
|
+
* `agentTeam` projection. `failure` names the first rejected persisted Team
|
|
114
|
+
* record; members and tasks then stay at the last valid state.
|
|
115
|
+
*/
|
|
116
|
+
interface TeamProjection {
|
|
117
|
+
readonly members: TeamMemberProjection[]
|
|
118
|
+
readonly tasks: TeamTaskView[]
|
|
119
|
+
readonly failure?: string
|
|
120
|
+
}
|
|
121
|
+
```
|
|
122
|
+
|
|
76
123
|
## 回放
|
|
77
124
|
|
|
78
|
-
`
|
|
125
|
+
`agentTeam` Session 投影把一个 Root Session 回放成每个 Team 操作所读取的 roster、任务板与 queued-minus-delivered mailbox。它按 `TeamId` 选取记录,因此普通 fork 继承的 event 保留 ancestor id,绝不会进入新 Root 的状态。Session event 的 `seq` 与 `time` 继续负责顺序和时间记录,Team snapshot 不再重复保存它们。roster 与 task 读取以 view 形式到达调用方,而 pending 邮件仅供投递与恢复内部使用。包 [README](../../packages/experimental/agent-team/README.zh.md)负责 operation、authorization、recovery 和限制行为。
|
|
79
126
|
|
|
80
127
|
<!-- BEGIN GENERATED cordis-surface (gen-cordis-catalog.ts) — do not edit between markers -->
|
|
81
128
|
|
|
@@ -168,7 +215,7 @@ async waitForChange(caller: Agent, timeoutMs: number, signal: AbortSignal): Prom
|
|
|
168
215
|
* @param targetName - durable teammate name.
|
|
169
216
|
* @returns the target status sampled before cancellation.
|
|
170
217
|
*/
|
|
171
|
-
interrupt(caller: Agent, targetName: string): { previousStatus: 'running' | '
|
|
218
|
+
interrupt(caller: Agent, targetName: string): { previousStatus: 'running' | 'inactive' }
|
|
172
219
|
|
|
173
220
|
/**
|
|
174
221
|
* Resolve a caller without throwing, used by scoped-tool installation and observers.
|
|
@@ -176,29 +223,6 @@ interrupt(caller: Agent, targetName: string): { previousStatus: 'running' | 'idl
|
|
|
176
223
|
* @returns Team membership, or undefined for non-Team subagents and stale identities.
|
|
177
224
|
*/
|
|
178
225
|
tryMembership(agent: Agent): TeamMembership | undefined
|
|
179
|
-
|
|
180
|
-
/**
|
|
181
|
-
* Read the current roster and non-deleted task board through the generated Remote API.
|
|
182
|
-
* @param agent - exact live Team member used as the authority credential.
|
|
183
|
-
* @returns detached current roster and task views.
|
|
184
|
-
*/
|
|
185
|
-
@Remote('view') remoteView(agent: Agent): TeamView
|
|
186
|
-
|
|
187
|
-
/**
|
|
188
|
-
* Create one shared task through the generated Remote API.
|
|
189
|
-
* @param agent - exact live Team member creating the task.
|
|
190
|
-
* @param request - task text, blockers, and advisory write scopes.
|
|
191
|
-
* @returns the revision-one task or a typed Team rejection.
|
|
192
|
-
*/
|
|
193
|
-
@Remote('createTask') remoteCreateTask(agent: Agent, request: CreateTeamTaskRequest): Promise<TeamTaskMutationResult>
|
|
194
|
-
|
|
195
|
-
/**
|
|
196
|
-
* Apply one task mutation and preserve Team rejections as business results.
|
|
197
|
-
* @param agent - exact live Team member authorizing the mutation.
|
|
198
|
-
* @param request - task identity, expected revision, action, and action fields.
|
|
199
|
-
* @returns the committed task or a typed Team rejection.
|
|
200
|
-
*/
|
|
201
|
-
@Remote('updateTask') remoteUpdateTask(agent: Agent, request: UpdateTeamTaskRequest): Promise<TeamTaskMutationResult>
|
|
202
226
|
```
|
|
203
227
|
|
|
204
228
|
Types: [Agent](core.zh.md)
|
|
@@ -126,15 +126,25 @@ interface StoredImageAttachment {
|
|
|
126
126
|
```
|
|
127
127
|
|
|
128
128
|
```ts type-equiv
|
|
129
|
-
/** Deterministic request-image
|
|
130
|
-
interface
|
|
131
|
-
/**
|
|
132
|
-
|
|
129
|
+
/** Deterministic request-image target selected by one exact model route for one attachment. */
|
|
130
|
+
interface ImageRequestTarget {
|
|
131
|
+
/** Target width in pixels; a target above the source keeps the source width. */
|
|
132
|
+
width: number
|
|
133
|
+
/** Target height in pixels; a target above the source keeps the source height. */
|
|
134
|
+
height: number
|
|
133
135
|
/** Encoded-byte target before base64 expansion or Files API upload; the smallest quality-ladder output is kept when no quality fits. */
|
|
134
136
|
maxBytes: number
|
|
135
137
|
}
|
|
136
138
|
```
|
|
137
139
|
|
|
140
|
+
```ts type-equiv
|
|
141
|
+
/** Integer width and height of one projected image. */
|
|
142
|
+
interface ProjectedDimensions {
|
|
143
|
+
width: number
|
|
144
|
+
height: number
|
|
145
|
+
}
|
|
146
|
+
```
|
|
147
|
+
|
|
138
148
|
```ts type-equiv
|
|
139
149
|
/** Cached request version derived from one provider-independent normalized attachment. */
|
|
140
150
|
interface RequestImageAttachment {
|
|
@@ -157,7 +167,7 @@ interface RequestImageAttachment {
|
|
|
157
167
|
}
|
|
158
168
|
```
|
|
159
169
|
|
|
160
|
-
`saveImage()` prepares and atomically commits a provider-independent normalized attachment before returning its `ImageAttachmentRef`. `saveImages()` prepares every validated attachment once before publishing the batch, so validation rejection leaves no partial objects and publication does not repeat decoding or quality selection. `admitPromptContent()` accepts the complete ordered Host prompt after file receipt resolution, replaces base64 image uploads with durable references, and passes durable file references unchanged. `admitEncodedImages()` supports other wire entries and delegates count, aggregate-byte, and ordered batch admission to `saveImages()`. `admitEncodedFile()` gives encoded protocol adapters the same service-owned canonical-base64 admission, and `isAttachmentError()` lets those adapters recognize stable attachment failures without importing implementation helpers. `readImage()` verifies a normalized attachment from an authorized session path. `imageHostPath()` exposes only the provider-owned host object location; it does not decide whether the current tool execution world can read it. `readImageRequest()` derives and caches one deterministic request version
|
|
170
|
+
`saveImage()` prepares and atomically commits a provider-independent normalized attachment before returning its `ImageAttachmentRef`. `saveImages()` prepares every validated attachment once before publishing the batch, so validation rejection leaves no partial objects and publication does not repeat decoding or quality selection. `admitPromptContent()` accepts the complete ordered Host prompt after file receipt resolution, replaces base64 image uploads with durable references, and passes durable file references unchanged. `admitEncodedImages()` supports other wire entries and delegates count, aggregate-byte, and ordered batch admission to `saveImages()`. `admitEncodedFile()` gives encoded protocol adapters the same service-owned canonical-base64 admission, and `isAttachmentError()` lets those adapters recognize stable attachment failures without importing implementation helpers. `readImage()` verifies a normalized attachment from an authorized session path. `imageHostPath()` exposes only the provider-owned host object location; it does not decide whether the current tool execution world can read it. `readImageRequest()` derives and caches one deterministic request version at an exact route-chosen target size and encoded-byte target. That version contains encoded bytes and metadata but no execution-world path. New entries are fully decoded before publication, while cache hits use a bounded metadata probe. Callers use `Promise.all` over the singular method when they need an ordered batch. The local implementation lazily encodes preferred candidates, singleflights equal request identities, lets each waiter cancel independently, stops shared work when no waiter remains, and bounds all transforms with its instance-level limiter, which defaults to two simultaneous transformations. The service is retention-neutral: resumed and forked sessions may share objects, so reference-aware garbage collection is deferred rather than tied to one session's deletion.
|
|
161
171
|
|
|
162
172
|
<!-- BEGIN GENERATED cordis-surface (gen-cordis-catalog.ts) — do not edit between markers -->
|
|
163
173
|
|
|
@@ -280,11 +290,11 @@ fileHostPath(ref: FileAttachmentRef): string | undefined
|
|
|
280
290
|
/**
|
|
281
291
|
* Generate or read one deterministic model-request version from the stored normalized image.
|
|
282
292
|
* @param ref - durable provider-independent normalized attachment reference.
|
|
283
|
-
* @param
|
|
293
|
+
* @param target - route-chosen dimensions and byte target; an unmet byte target yields the smallest ladder output.
|
|
284
294
|
* @param signal - optional cancellation.
|
|
285
295
|
* @returns request bytes and the cache/upload identity covering every transform input.
|
|
286
296
|
*/
|
|
287
|
-
readImageRequest( ref: ImageAttachmentRef,
|
|
297
|
+
readImageRequest( ref: ImageAttachmentRef, target: ImageRequestTarget, signal?: AbortSignal, ): Promise<RequestImageAttachment>
|
|
288
298
|
```
|
|
289
299
|
|
|
290
300
|
Source: [`packages/attachment/attachment/src/index.ts`](../../packages/attachment/attachment/src/index.ts)
|
|
@@ -293,7 +303,7 @@ Source: [`packages/attachment/attachment/src/index.ts`](../../packages/attachmen
|
|
|
293
303
|
|
|
294
304
|
### `ctx.fileUploads` — `FileUploads`
|
|
295
305
|
|
|
296
|
-
Host service owning upload storage and Agent
|
|
306
|
+
Host service owning upload storage and receipts keyed by each receiving Agent's exact Session.
|
|
297
307
|
|
|
298
308
|
```ts cordis-catalog
|
|
299
309
|
/**
|
|
@@ -320,7 +330,7 @@ registerAgentResolver(resolve: AgentResolver): () => void
|
|
|
320
330
|
async uploadStream(request: { readonly sessionId: SessionId readonly data: AsyncIterable<Uint8Array> readonly signal?: AbortSignal readonly name?: string }): Promise<FileUploadValue>
|
|
321
331
|
|
|
322
332
|
/**
|
|
323
|
-
* Resolve one staged receipt
|
|
333
|
+
* Resolve one staged receipt for the receiving Agent's exact Session.
|
|
324
334
|
* @param agent - receiving Agent.
|
|
325
335
|
* @param receiptId - opaque receipt minted for one completed upload.
|
|
326
336
|
* @returns durable file reference, or `undefined` for an unknown or foreign receipt.
|
|
@@ -126,15 +126,25 @@ interface StoredImageAttachment {
|
|
|
126
126
|
```
|
|
127
127
|
|
|
128
128
|
```ts type-equiv
|
|
129
|
-
/** Deterministic request-image
|
|
130
|
-
interface
|
|
131
|
-
/**
|
|
132
|
-
|
|
129
|
+
/** Deterministic request-image target selected by one exact model route for one attachment. */
|
|
130
|
+
interface ImageRequestTarget {
|
|
131
|
+
/** Target width in pixels; a target above the source keeps the source width. */
|
|
132
|
+
width: number
|
|
133
|
+
/** Target height in pixels; a target above the source keeps the source height. */
|
|
134
|
+
height: number
|
|
133
135
|
/** Encoded-byte target before base64 expansion or Files API upload; the smallest quality-ladder output is kept when no quality fits. */
|
|
134
136
|
maxBytes: number
|
|
135
137
|
}
|
|
136
138
|
```
|
|
137
139
|
|
|
140
|
+
```ts type-equiv
|
|
141
|
+
/** Integer width and height of one projected image. */
|
|
142
|
+
interface ProjectedDimensions {
|
|
143
|
+
width: number
|
|
144
|
+
height: number
|
|
145
|
+
}
|
|
146
|
+
```
|
|
147
|
+
|
|
138
148
|
```ts type-equiv
|
|
139
149
|
/** Cached request version derived from one provider-independent normalized attachment. */
|
|
140
150
|
interface RequestImageAttachment {
|
|
@@ -157,7 +167,7 @@ interface RequestImageAttachment {
|
|
|
157
167
|
}
|
|
158
168
|
```
|
|
159
169
|
|
|
160
|
-
`saveImage()` 准备并原子提交提供方无关的规范化附件,然后直接返回 `ImageAttachmentRef`。`saveImages()` 在发布批次前为每个成员各准备一次经过验证的附件,因此校验拒绝不会留下部分对象,发布也不会重复解码或选择质量。`admitPromptContent()` 在文件凭证解析后接收完整且有序的 Host prompt,把 base64 图片上传替换为持久引用,并让持久文件引用原样通过。`admitEncodedImages()` 支持其他 wire 入口,把张数、聚合字节和有序批量准入交给 `saveImages()`。`admitEncodedFile()` 让编码协议适配器使用服务拥有的规范 base64 准入,`isAttachmentError()` 让这些适配器无需导入实现辅助函数即可识别稳定的附件错误。`readImage()` 校验来自已授权会话路径的规范化附件。`imageHostPath()` 只公开提供方所持对象的宿主位置,不判断当前工具执行环境能否读取它。`readImageRequest()`
|
|
170
|
+
`saveImage()` 准备并原子提交提供方无关的规范化附件,然后直接返回 `ImageAttachmentRef`。`saveImages()` 在发布批次前为每个成员各准备一次经过验证的附件,因此校验拒绝不会留下部分对象,发布也不会重复解码或选择质量。`admitPromptContent()` 在文件凭证解析后接收完整且有序的 Host prompt,把 base64 图片上传替换为持久引用,并让持久文件引用原样通过。`admitEncodedImages()` 支持其他 wire 入口,把张数、聚合字节和有序批量准入交给 `saveImages()`。`admitEncodedFile()` 让编码协议适配器使用服务拥有的规范 base64 准入,`isAttachmentError()` 让这些适配器无需导入实现辅助函数即可识别稳定的附件错误。`readImage()` 校验来自已授权会话路径的规范化附件。`imageHostPath()` 只公开提供方所持对象的宿主位置,不判断当前工具执行环境能否读取它。`readImageRequest()` 按确切的路由目标尺寸和编码字节目标派生并缓存确定性请求版本。该版本包含编码字节和元数据,不包含执行环境路径。新条目在发布前完整解码,缓存命中只做有界元数据探测。调用方需要有序批次时,对单数方法使用 `Promise.all`。本地实现按需编码首选候选、合并相同请求身份的并发任务、允许每个等待方单独取消、没有等待方时停止共享任务,并通过实例级限流器限制全部变换,默认同时执行两项。该服务不规定保留策略:恢复和 fork 后的会话可能共享对象,因此基于引用的垃圾回收会延期实现,不与单个会话的删除绑定。
|
|
161
171
|
|
|
162
172
|
<!-- BEGIN GENERATED cordis-surface (gen-cordis-catalog.ts) — do not edit between markers -->
|
|
163
173
|
|
|
@@ -280,11 +290,11 @@ fileHostPath(ref: FileAttachmentRef): string | undefined
|
|
|
280
290
|
/**
|
|
281
291
|
* Generate or read one deterministic model-request version from the stored normalized image.
|
|
282
292
|
* @param ref - durable provider-independent normalized attachment reference.
|
|
283
|
-
* @param
|
|
293
|
+
* @param target - route-chosen dimensions and byte target; an unmet byte target yields the smallest ladder output.
|
|
284
294
|
* @param signal - optional cancellation.
|
|
285
295
|
* @returns request bytes and the cache/upload identity covering every transform input.
|
|
286
296
|
*/
|
|
287
|
-
readImageRequest( ref: ImageAttachmentRef,
|
|
297
|
+
readImageRequest( ref: ImageAttachmentRef, target: ImageRequestTarget, signal?: AbortSignal, ): Promise<RequestImageAttachment>
|
|
288
298
|
```
|
|
289
299
|
|
|
290
300
|
Source: [`packages/attachment/attachment/src/index.ts`](../../packages/attachment/attachment/src/index.ts)
|
|
@@ -293,7 +303,7 @@ Source: [`packages/attachment/attachment/src/index.ts`](../../packages/attachmen
|
|
|
293
303
|
|
|
294
304
|
### `ctx.fileUploads` — `FileUploads`
|
|
295
305
|
|
|
296
|
-
Host service owning upload storage and Agent
|
|
306
|
+
Host service owning upload storage and receipts keyed by each receiving Agent's exact Session.
|
|
297
307
|
|
|
298
308
|
```ts cordis-catalog
|
|
299
309
|
/**
|
|
@@ -320,7 +330,7 @@ registerAgentResolver(resolve: AgentResolver): () => void
|
|
|
320
330
|
async uploadStream(request: { readonly sessionId: SessionId readonly data: AsyncIterable<Uint8Array> readonly signal?: AbortSignal readonly name?: string }): Promise<FileUploadValue>
|
|
321
331
|
|
|
322
332
|
/**
|
|
323
|
-
* Resolve one staged receipt
|
|
333
|
+
* Resolve one staged receipt for the receiving Agent's exact Session.
|
|
324
334
|
* @param agent - receiving Agent.
|
|
325
335
|
* @param receiptId - opaque receipt minted for one completed upload.
|
|
326
336
|
* @returns durable file reference, or `undefined` for an unknown or foreign receipt.
|