dsh-plugin-dev-kb 1.3.0 → 1.5.1
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 +34 -0
- package/README.en.md +6 -6
- package/README.md +13 -8
- package/kb/INDEX.md +25 -21
- package/kb/README.md +6 -4
- package/kb/extra/AGENTS.md +14 -12
- package/kb/extra/agent-lifecycle.md +91 -0
- package/kb/extra/agent-lifecycle.zh.md +93 -0
- package/kb/extra/api-gateway.md +172 -0
- package/kb/extra/api-gateway.zh.md +178 -0
- package/kb/extra/architecture.md +165 -0
- package/kb/extra/architecture.zh.md +169 -0
- package/kb/extra/capability-seams.md +714 -0
- package/kb/extra/capability-seams.zh.md +716 -0
- package/kb/extra/cli-help.md +203 -0
- package/kb/extra/cli-help.zh.md +205 -0
- package/kb/extra/config-catalog.md +4801 -0
- package/kb/extra/config-catalog.zh.md +4803 -0
- package/kb/extra/cookbook/adding-a-package.md +170 -0
- package/kb/extra/cookbook/adding-a-package.zh.md +170 -0
- package/kb/extra/cookbook/adding-a-plugin-preview.md +52 -0
- package/kb/extra/cookbook/adding-a-plugin-preview.zh.md +52 -0
- 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 +51 -7
- package/kb/extra/cookbook/adding-a-session-format-version.zh.md +51 -7
- package/kb/extra/cookbook/adding-a-settings-card.md +72 -0
- package/kb/extra/cookbook/adding-a-settings-card.zh.md +72 -0
- package/kb/extra/cookbook/adding-a-tool.md +101 -0
- package/kb/extra/cookbook/adding-a-tool.zh.md +103 -0
- package/kb/extra/cookbook/adding-an-llm-adapter.md +43 -0
- package/kb/extra/cookbook/adding-an-llm-adapter.zh.md +43 -0
- package/kb/extra/cookbook/extension-cookbook.md +132 -0
- package/kb/extra/cookbook/extension-cookbook.zh.md +136 -0
- package/kb/extra/cookbook/reviewing-persistence-type-changes.md +122 -0
- package/kb/extra/cookbook/reviewing-persistence-type-changes.zh.md +122 -0
- package/kb/extra/cordis-api/context.md +364 -0
- package/kb/extra/cordis-api/context.zh.md +366 -0
- package/kb/extra/cordis-api/events.md +207 -0
- package/kb/extra/cordis-api/events.zh.md +209 -0
- package/kb/extra/cordis-api/fiber.md +375 -0
- package/kb/extra/cordis-api/fiber.zh.md +377 -0
- package/kb/extra/cordis-api/inherited.md +38 -0
- package/kb/extra/cordis-api/registry.md +152 -0
- package/kb/extra/cordis-api/registry.zh.md +154 -0
- package/kb/extra/cordis-api/service.md +102 -0
- package/kb/extra/cordis-api/service.zh.md +104 -0
- package/kb/extra/cordis-tutorial/01-first-plugin.md +95 -0
- package/kb/extra/cordis-tutorial/01-first-plugin.zh.md +95 -0
- package/kb/extra/cordis-tutorial/02-lifecycle-and-effects.md +98 -0
- package/kb/extra/cordis-tutorial/02-lifecycle-and-effects.zh.md +98 -0
- package/kb/extra/cordis-tutorial/03-services.md +98 -0
- package/kb/extra/cordis-tutorial/03-services.zh.md +98 -0
- package/kb/extra/cordis-tutorial/04-events.md +144 -0
- package/kb/extra/cordis-tutorial/04-events.zh.md +144 -0
- package/kb/extra/cordis-tutorial/05-config.md +111 -0
- package/kb/extra/cordis-tutorial/05-config.zh.md +111 -0
- package/kb/extra/cordis-tutorial/06-composition-and-hmr.md +113 -0
- package/kb/extra/cordis-tutorial/06-composition-and-hmr.zh.md +113 -0
- package/kb/extra/cordis-tutorial/07-into-the-harness.md +108 -0
- package/kb/extra/cordis-tutorial/07-into-the-harness.zh.md +108 -0
- package/kb/extra/cordis-tutorial/index.md +60 -0
- package/kb/extra/cordis-tutorial/index.zh.md +62 -0
- package/kb/extra/deepseek-llm-api-wire-extensions.md +22 -23
- package/kb/extra/deepseek-llm-api-wire-extensions.zh.md +21 -22
- package/kb/extra/defensive-patterns/README.md +25 -0
- package/kb/extra/defensive-patterns/README.zh.md +27 -0
- package/kb/extra/defensive-patterns/client-components.md +493 -0
- package/kb/extra/defensive-patterns/client-components.zh.md +495 -0
- package/kb/extra/defensive-patterns/conversation-and-session.md +316 -0
- package/kb/extra/defensive-patterns/conversation-and-session.zh.md +316 -0
- package/kb/extra/defensive-patterns/general.md +222 -0
- package/kb/extra/defensive-patterns/general.zh.md +252 -0
- package/kb/extra/defensive-patterns/package-surface.md +231 -0
- package/kb/extra/defensive-patterns/package-surface.zh.md +231 -0
- package/kb/extra/defensive-patterns/remote-and-api.md +115 -0
- package/kb/extra/defensive-patterns/remote-and-api.zh.md +115 -0
- package/kb/extra/development.md +55 -18
- package/kb/extra/development.zh.md +56 -18
- package/kb/extra/event-producer-consumer.md +90 -68
- package/kb/extra/event-producer-consumer.zh.md +91 -69
- package/kb/extra/experimental-persistence-catalog.md +17 -0
- package/kb/extra/experimental-persistence-catalog.zh.md +17 -0
- package/kb/extra/glossary.md +2 -1
- package/kb/extra/glossary.zh.md +2 -1
- package/kb/extra/i18n/README.md +15 -7
- package/kb/extra/i18n/README.zh.md +15 -7
- package/kb/extra/i18n/style-samples.md +2 -2
- package/kb/extra/i18n/terminology.md +5 -4
- package/kb/extra/i18n/translation-prompt.md +2 -2
- package/kb/extra/module-graph.md +759 -432
- package/kb/extra/module-graph.zh.md +759 -432
- package/kb/extra/persistence-catalog.md +9140 -0
- package/kb/extra/persistence-catalog.zh.md +9142 -0
- 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-13-working-directory.md +48 -0
- package/kb/extra/persistence-changes/2026-09-13-working-directory.zh.md +48 -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-19-external-subagent-catalog.md +48 -0
- package/kb/extra/persistence-changes/2026-09-19-external-subagent-catalog.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/2026-09-30-job-session-lifecycle.md +52 -0
- package/kb/extra/persistence-changes/2026-09-30-job-session-lifecycle.zh.md +52 -0
- package/kb/extra/persistence-changes/2026-10-05-ptc-operation-metadata.md +48 -0
- package/kb/extra/persistence-changes/2026-10-05-ptc-operation-metadata.zh.md +48 -0
- package/kb/extra/persistence-changes/2026-10-05-working-directory-attribution.md +60 -0
- package/kb/extra/persistence-changes/2026-10-05-working-directory-attribution.zh.md +60 -0
- package/kb/extra/persistence-changes/2026-10-07-title-reasoning-effort.md +48 -0
- package/kb/extra/persistence-changes/2026-10-07-title-reasoning-effort.zh.md +48 -0
- package/kb/extra/persistence-changes/2026-10-13-deepseek-search-thinking.md +48 -0
- package/kb/extra/persistence-changes/2026-10-13-deepseek-search-thinking.zh.md +48 -0
- package/kb/extra/persistence-changes/2026-10-13-user-rpc-principal.md +60 -0
- package/kb/extra/persistence-changes/2026-10-13-user-rpc-principal.zh.md +60 -0
- package/kb/extra/persistence-changes/README.md +90 -0
- package/kb/extra/persistence-changes/README.zh.md +90 -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 +1 -1
- package/kb/extra/rescope.zh.md +1 -1
- package/kb/extra/session-format-status.md +24 -8
- package/kb/extra/session-format-status.zh.md +24 -8
- package/kb/extra/subsystems/README.md +76 -0
- package/kb/extra/subsystems/README.zh.md +76 -0
- package/kb/extra/subsystems/agent-team.md +61 -37
- package/kb/extra/subsystems/agent-team.zh.md +61 -37
- package/kb/extra/subsystems/approval.md +170 -0
- package/kb/extra/subsystems/approval.zh.md +170 -0
- package/kb/extra/subsystems/attachment.md +19 -9
- package/kb/extra/subsystems/attachment.zh.md +19 -9
- package/kb/extra/subsystems/boot.md +447 -0
- package/kb/extra/subsystems/boot.zh.md +447 -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/client-modules.md +198 -0
- package/kb/extra/subsystems/client-modules.zh.md +198 -0
- package/kb/extra/subsystems/client-resources.md +92 -0
- package/kb/extra/subsystems/client-resources.zh.md +92 -0
- package/kb/extra/subsystems/commands.md +223 -0
- package/kb/extra/subsystems/commands.zh.md +223 -0
- package/kb/extra/subsystems/compaction.md +284 -0
- package/kb/extra/subsystems/compaction.zh.md +284 -0
- package/kb/extra/subsystems/computer-use.md +59 -0
- package/kb/extra/subsystems/computer-use.zh.md +59 -0
- package/kb/extra/subsystems/conversation.md +301 -0
- package/kb/extra/subsystems/conversation.zh.md +303 -0
- package/kb/extra/subsystems/core.md +1113 -0
- package/kb/extra/subsystems/core.zh.md +1125 -0
- package/kb/extra/subsystems/credentials.md +493 -0
- package/kb/extra/subsystems/credentials.zh.md +493 -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 +4 -4
- package/kb/extra/subsystems/feedback.zh.md +4 -4
- package/kb/extra/subsystems/filesystem.md +530 -0
- package/kb/extra/subsystems/filesystem.zh.md +530 -0
- package/kb/extra/subsystems/goal.md +313 -0
- package/kb/extra/subsystems/goal.zh.md +313 -0
- package/kb/extra/subsystems/jobs.md +554 -0
- package/kb/extra/subsystems/jobs.zh.md +554 -0
- package/kb/extra/subsystems/llm-streaming.md +1196 -0
- package/kb/extra/subsystems/llm-streaming.zh.md +1202 -0
- package/kb/extra/subsystems/lsp.md +202 -0
- package/kb/extra/subsystems/lsp.zh.md +202 -0
- 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/permission-presets.md +167 -0
- package/kb/extra/subsystems/permission-presets.zh.md +167 -0
- package/kb/extra/subsystems/persistence.md +418 -0
- package/kb/extra/subsystems/persistence.zh.md +418 -0
- package/kb/extra/subsystems/plan.md +87 -0
- package/kb/extra/subsystems/plan.zh.md +87 -0
- package/kb/extra/subsystems/product-telemetry.md +81 -0
- package/kb/extra/subsystems/product-telemetry.zh.md +81 -0
- package/kb/extra/subsystems/ptc-runtime.md +250 -0
- package/kb/extra/subsystems/ptc-runtime.zh.md +250 -0
- package/kb/extra/subsystems/sandbox.md +221 -0
- package/kb/extra/subsystems/sandbox.zh.md +221 -0
- package/kb/extra/subsystems/schedule.md +550 -0
- package/kb/extra/subsystems/schedule.zh.md +550 -0
- package/kb/extra/subsystems/scope.md +59 -0
- package/kb/extra/subsystems/scope.zh.md +61 -0
- package/kb/extra/subsystems/session-projection.md +356 -0
- package/kb/extra/subsystems/session-projection.zh.md +356 -0
- package/kb/extra/subsystems/session-query.md +511 -0
- package/kb/extra/subsystems/session-query.zh.md +511 -0
- package/kb/extra/subsystems/session-reference.md +224 -0
- package/kb/extra/subsystems/session-reference.zh.md +224 -0
- package/kb/extra/subsystems/session-telemetry.md +212 -0
- package/kb/extra/subsystems/session-telemetry.zh.md +212 -0
- package/kb/extra/subsystems/session-title.md +213 -0
- package/kb/extra/subsystems/session-title.zh.md +213 -0
- package/kb/extra/subsystems/session.md +1339 -0
- package/kb/extra/subsystems/session.zh.md +1343 -0
- package/kb/extra/subsystems/settings.md +155 -0
- package/kb/extra/subsystems/settings.zh.md +155 -0
- package/kb/extra/subsystems/shell.md +314 -0
- package/kb/extra/subsystems/shell.zh.md +314 -0
- package/kb/extra/subsystems/sidebar-right.md +160 -0
- package/kb/extra/subsystems/sidebar-right.zh.md +160 -0
- package/kb/extra/subsystems/skills.md +352 -0
- package/kb/extra/subsystems/skills.zh.md +352 -0
- package/kb/extra/subsystems/slots.md +200 -0
- package/kb/extra/subsystems/slots.zh.md +204 -0
- package/kb/extra/subsystems/spill.md +124 -0
- package/kb/extra/subsystems/spill.zh.md +124 -0
- package/kb/extra/subsystems/ssh.md +146 -0
- package/kb/extra/subsystems/ssh.zh.md +146 -0
- package/kb/extra/subsystems/storage.md +259 -0
- package/kb/extra/subsystems/storage.zh.md +259 -0
- package/kb/extra/subsystems/subagent.md +686 -0
- package/kb/extra/subsystems/subagent.zh.md +688 -0
- package/kb/extra/subsystems/subprocess.md +321 -0
- package/kb/extra/subsystems/subprocess.zh.md +321 -0
- package/kb/extra/subsystems/system-prompt.md +254 -0
- package/kb/extra/subsystems/system-prompt.zh.md +254 -0
- package/kb/extra/subsystems/terminal.md +184 -0
- package/kb/extra/subsystems/terminal.zh.md +184 -0
- package/kb/extra/subsystems/todo.md +3 -3
- package/kb/extra/subsystems/todo.zh.md +3 -3
- package/kb/extra/subsystems/token-meter.md +106 -0
- package/kb/extra/subsystems/token-meter.zh.md +106 -0
- package/kb/extra/subsystems/tools.md +747 -0
- package/kb/extra/subsystems/tools.zh.md +747 -0
- package/kb/extra/subsystems/translation.md +103 -0
- package/kb/extra/subsystems/translation.zh.md +103 -0
- package/kb/extra/subsystems/typert.md +690 -0
- package/kb/extra/subsystems/typert.zh.md +690 -0
- package/kb/extra/subsystems/user-questions.md +307 -0
- package/kb/extra/subsystems/user-questions.zh.md +307 -0
- package/kb/extra/subsystems/voice-input.md +164 -0
- package/kb/extra/subsystems/voice-input.zh.md +164 -0
- package/kb/extra/subsystems/web-client.md +100 -0
- package/kb/extra/subsystems/web-client.zh.md +100 -0
- package/kb/extra/subsystems/web-server.md +302 -0
- package/kb/extra/subsystems/web-server.zh.md +302 -0
- package/kb/extra/subsystems/web.md +206 -0
- package/kb/extra/subsystems/web.zh.md +206 -0
- package/kb/extra/subsystems/webhook.md +4 -4
- package/kb/extra/subsystems/webhook.zh.md +2 -2
- package/kb/extra/subsystems/workflow.md +278 -0
- package/kb/extra/subsystems/workflow.zh.md +278 -0
- package/kb/extra/subsystems/working-directory.md +64 -0
- package/kb/extra/subsystems/working-directory.zh.md +64 -0
- package/kb/extra/subsystems/workspace.md +647 -0
- package/kb/extra/subsystems/workspace.zh.md +647 -0
- package/kb/extra/subsystems/worktrees.md +76 -0
- package/kb/extra/subsystems/worktrees.zh.md +76 -0
- package/kb/extra/testing.md +4 -4
- package/kb/extra/testing.zh.md +4 -4
- package/kb/extra/tool-catalog.md +2824 -0
- package/kb/extra/tool-catalog.zh.md +2832 -0
- package/kb/extra/tool-execution-pipeline.md +65 -0
- package/kb/extra/tool-execution-pipeline.zh.md +67 -0
- package/kb/extra/ui-radius.md +117 -0
- package/kb/extra/ui-radius.zh.md +117 -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/bundled-python-tests/guide.md +18 -0
- package/kb/extra/upgrade-guide/v0.2.0-rc.2/bundled-python-tests/guide.zh.md +18 -0
- package/kb/extra/upgrade-guide/v0.2.0-rc.2/primary-runtime-python-aliases/guide.md +18 -0
- package/kb/extra/upgrade-guide/v0.2.0-rc.2/primary-runtime-python-aliases/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/upgrade-guide/v0.2.1-alpha.1/deepseek-model-discovery/guide.md +17 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.1/deepseek-model-discovery/guide.zh.md +17 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.1/desktop-test-auth-popup/guide.md +18 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.1/desktop-test-auth-popup/guide.zh.md +18 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.1/experimental-package-composition/guide.md +28 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.1/experimental-package-composition/guide.zh.md +28 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.1/instruction-home-override/guide.md +20 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.1/instruction-home-override/guide.zh.md +20 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.1/job-id-identity/guide.md +18 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.1/job-id-identity/guide.zh.md +18 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.1/jsonl-persistence-plugin/guide.md +18 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.1/jsonl-persistence-plugin/guide.zh.md +18 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.1/mock-messages-events/guide.md +17 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.1/mock-messages-events/guide.zh.md +17 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.1/native-subagent-bundle-tools/guide.md +31 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.1/native-subagent-bundle-tools/guide.zh.md +31 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.1/new-session-generations/guide.md +20 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.1/new-session-generations/guide.zh.md +20 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.1/plugin-option-placement/guide.md +20 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.1/plugin-option-placement/guide.zh.md +20 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.1/python-optional-resources/guide.md +18 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.1/python-optional-resources/guide.zh.md +18 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.1/python-ptc-sandbox/guide.md +21 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.1/python-ptc-sandbox/guide.zh.md +21 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.1/session-title-adapters/guide.md +18 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.1/session-title-adapters/guide.zh.md +18 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.1/session-title-provider-strategy/guide.md +20 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.1/session-title-provider-strategy/guide.zh.md +20 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.1/ssh-helper-launch/guide.md +19 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.1/ssh-helper-launch/guide.zh.md +19 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.1/subagent-activations/guide.md +59 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.1/subagent-activations/guide.zh.md +59 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.1/subagent-preset-composition/guide.md +21 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.1/subagent-preset-composition/guide.zh.md +21 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.1/team-direct-inbox/guide.md +21 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.1/team-direct-inbox/guide.zh.md +21 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.1/terminal-command-labels/guide.md +18 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.1/terminal-command-labels/guide.zh.md +18 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.1/tool-presentation-mode/guide.md +21 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.1/tool-presentation-mode/guide.zh.md +21 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.1/web-listener-trust-config/guide.md +36 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.1/web-listener-trust-config/guide.zh.md +36 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.1/working-directory/guide.md +25 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.1/working-directory/guide.zh.md +25 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.2/deepseek-account-identity-watch/guide.md +18 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.2/deepseek-account-identity-watch/guide.zh.md +18 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.2/deepseek-account-model-catalog/guide.md +27 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.2/deepseek-account-model-catalog/guide.zh.md +27 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.2/desktop-font-size-shortcuts/guide.md +18 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.2/desktop-font-size-shortcuts/guide.zh.md +18 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.2/from-default-profile-replaces-target/guide.md +20 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.2/from-default-profile-replaces-target/guide.zh.md +20 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.2/operator-connect/guide.md +18 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.2/operator-connect/guide.zh.md +18 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.2/pi-ai-azure-provider/guide.md +19 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.2/pi-ai-azure-provider/guide.zh.md +19 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.2/pi-ai-model-discovery/guide.md +17 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.2/pi-ai-model-discovery/guide.zh.md +17 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.2/plugin-install-over-installed/guide.md +20 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.2/plugin-install-over-installed/guide.zh.md +20 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.2/sdk-minimal-image-compaction/guide.md +32 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.2/sdk-minimal-image-compaction/guide.zh.md +32 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.2/stored-credentials-precedence/guide.md +25 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.2/stored-credentials-precedence/guide.zh.md +25 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.3/plugin-engines-dsh/guide.md +21 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.3/plugin-engines-dsh/guide.zh.md +21 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.4/account-notification-fields/guide.md +18 -0
- package/kb/extra/upgrade-guide/v0.2.1-alpha.4/account-notification-fields/guide.zh.md +18 -0
- package/kb/extra/web-styling.md +12 -3
- package/kb/extra/web-styling.zh.md +12 -3
- package/kb/meta/search-index.json +2690 -404
- package/kb/meta/site-pages.txt +188 -188
- package/kb/meta/source.json +7 -6
- package/kb/meta/topics.md +10 -6
- 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 +12 -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 +12 -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 +8 -10
- 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/plugin-market.md +151 -0
- 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 +121 -83
- package/kb/site/en/guide/public-deployments.md +40 -0
- package/kb/site/en/guide/python-sdk.md +49 -29
- 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 +1 -0
- package/kb/site/en/reference/api-gateway.md +22 -13
- package/kb/site/en/reference/capability-seams.md +242 -77
- package/kb/site/en/reference/config-catalog.md +2102 -904
- 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 +4 -3
- package/kb/site/en/reference/cookbook/adding-an-llm-adapter.md +1 -0
- package/kb/site/en/reference/cookbook/extension-cookbook.md +6 -5
- 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/experimental-persistence-catalog.md +20 -0
- package/kb/site/en/reference/index.md +27 -21
- package/kb/site/en/reference/persistence-catalog.md +8055 -62
- package/kb/site/en/reference/subsystems/approval.md +2 -1
- package/kb/site/en/reference/subsystems/client-modules.md +37 -15
- package/kb/site/en/reference/subsystems/client-resources.md +3 -1
- 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 +50 -6
- package/kb/site/en/reference/subsystems/core.md +100 -258
- package/kb/site/en/reference/subsystems/credentials.md +178 -13
- package/kb/site/en/reference/subsystems/filesystem.md +11 -0
- package/kb/site/en/reference/subsystems/goal.md +2 -1
- package/kb/site/en/reference/subsystems/index.md +20 -6
- package/kb/site/en/reference/subsystems/jobs.md +397 -132
- package/kb/site/en/reference/subsystems/llm-streaming.md +157 -50
- package/kb/site/en/reference/subsystems/lsp.md +1 -0
- package/kb/site/en/reference/subsystems/permission-presets.md +66 -29
- package/kb/site/en/reference/subsystems/persistence.md +6 -3
- package/kb/site/en/reference/subsystems/plan.md +3 -2
- package/kb/site/en/reference/subsystems/ptc-runtime.md +254 -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 +3 -0
- package/kb/site/en/reference/subsystems/session-reference.md +8 -6
- package/kb/site/en/reference/subsystems/session-telemetry.md +7 -4
- package/kb/site/en/reference/subsystems/session-title.md +20 -10
- package/kb/site/en/reference/subsystems/session.md +254 -91
- package/kb/site/en/reference/subsystems/settings.md +43 -292
- package/kb/site/en/reference/subsystems/shell.md +37 -28
- package/kb/site/en/reference/subsystems/sidebar-right.md +25 -12
- package/kb/site/en/reference/subsystems/skills.md +5 -6
- package/kb/site/en/reference/subsystems/slots.md +88 -70
- package/kb/site/en/reference/subsystems/spill.md +4 -3
- package/kb/site/en/reference/subsystems/storage.md +2 -2
- package/kb/site/en/reference/subsystems/subagent.md +207 -293
- package/kb/site/en/reference/subsystems/subprocess.md +17 -18
- package/kb/site/en/reference/subsystems/system-prompt.md +36 -3
- package/kb/site/en/reference/subsystems/terminal.md +1 -0
- package/kb/site/en/reference/subsystems/token-meter.md +1 -0
- package/kb/site/en/reference/subsystems/tools.md +42 -14
- package/kb/site/en/reference/subsystems/typert.md +362 -14
- 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 +157 -8
- package/kb/site/en/reference/subsystems/web.md +3 -2
- package/kb/site/en/reference/subsystems/workflow.md +10 -9
- package/kb/site/en/reference/subsystems/workspace.md +290 -42
- package/kb/site/en/reference/tool-catalog.md +908 -352
- package/kb/site/en/reference/tool-execution-pipeline.md +7 -3
- package/kb/site/guide/github-review.md +8 -10
- package/kb/site/guide/mcp-memory.md +1 -0
- package/kb/site/guide/network-proxy.md +2 -1
- package/kb/site/guide/plugin-market.md +151 -0
- 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 +132 -94
- package/kb/site/guide/public-deployments.md +40 -0
- package/kb/site/guide/python-sdk.md +49 -29
- package/kb/site/guide/quickstart.md +2 -0
- package/kb/site/guide/schedule.md +70 -11
- package/kb/site/reference/agent-lifecycle.md +1 -0
- package/kb/site/reference/api-gateway.md +28 -13
- package/kb/site/reference/capability-seams.md +242 -77
- package/kb/site/reference/config-catalog.md +2105 -906
- 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 +4 -3
- package/kb/site/reference/cookbook/adding-an-llm-adapter.md +1 -0
- package/kb/site/reference/cookbook/extension-cookbook.md +6 -5
- 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/experimental-persistence-catalog.md +20 -0
- package/kb/site/reference/index.md +27 -21
- package/kb/site/reference/persistence-catalog.md +8061 -68
- package/kb/site/reference/subsystems/approval.md +2 -1
- package/kb/site/reference/subsystems/client-modules.md +37 -15
- package/kb/site/reference/subsystems/client-resources.md +3 -1
- 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 +51 -5
- package/kb/site/reference/subsystems/core.md +102 -258
- package/kb/site/reference/subsystems/credentials.md +178 -13
- package/kb/site/reference/subsystems/filesystem.md +11 -0
- package/kb/site/reference/subsystems/goal.md +2 -1
- package/kb/site/reference/subsystems/index.md +20 -6
- package/kb/site/reference/subsystems/jobs.md +396 -131
- package/kb/site/reference/subsystems/llm-streaming.md +157 -50
- package/kb/site/reference/subsystems/lsp.md +1 -0
- package/kb/site/reference/subsystems/permission-presets.md +66 -29
- package/kb/site/reference/subsystems/persistence.md +6 -3
- package/kb/site/reference/subsystems/plan.md +3 -2
- package/kb/site/reference/subsystems/ptc-runtime.md +254 -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 +4 -1
- package/kb/site/reference/subsystems/session-projection.md +22 -19
- package/kb/site/reference/subsystems/session-query.md +3 -0
- package/kb/site/reference/subsystems/session-reference.md +8 -6
- package/kb/site/reference/subsystems/session-telemetry.md +7 -4
- package/kb/site/reference/subsystems/session-title.md +20 -10
- package/kb/site/reference/subsystems/session.md +254 -91
- package/kb/site/reference/subsystems/settings.md +43 -292
- package/kb/site/reference/subsystems/shell.md +37 -28
- package/kb/site/reference/subsystems/sidebar-right.md +25 -12
- package/kb/site/reference/subsystems/skills.md +5 -6
- package/kb/site/reference/subsystems/slots.md +92 -70
- package/kb/site/reference/subsystems/spill.md +3 -2
- package/kb/site/reference/subsystems/storage.md +2 -2
- package/kb/site/reference/subsystems/subagent.md +208 -296
- package/kb/site/reference/subsystems/subprocess.md +17 -18
- package/kb/site/reference/subsystems/system-prompt.md +36 -3
- package/kb/site/reference/subsystems/terminal.md +1 -0
- package/kb/site/reference/subsystems/token-meter.md +1 -0
- package/kb/site/reference/subsystems/tools.md +42 -14
- package/kb/site/reference/subsystems/typert.md +362 -14
- 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 +157 -8
- package/kb/site/reference/subsystems/web.md +3 -2
- package/kb/site/reference/subsystems/workflow.md +10 -9
- package/kb/site/reference/subsystems/workspace.md +290 -42
- package/kb/site/reference/tool-catalog.md +862 -306
- package/kb/site/reference/tool-execution-pipeline.md +7 -3
- package/package.json +2 -2
- package/skills/dsh-dev-sandbox.md +67 -0
- package/skills/dsh-plugin-dev-kb.md +5 -4
- package/kb/extra/defensive-patterns.md +0 -33
- package/kb/extra/defensive-patterns.zh.md +0 -35
- 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
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
editSource: "docs/subsystems/workspace.md"
|
|
3
|
+
rawMarkdownPath: "en/reference/subsystems/workspace.md"
|
|
3
4
|
outline: [2,3]
|
|
4
5
|
---
|
|
5
6
|
|
|
@@ -28,9 +29,10 @@ Consumers see only the `Workspace` interface; the implementation stays package-p
|
|
|
28
29
|
```ts type-equiv
|
|
29
30
|
/**
|
|
30
31
|
* One workspace: a stable id over an existing directory, a display title, and
|
|
31
|
-
* an ordered candidate account of sessions. Membership
|
|
32
|
-
*
|
|
33
|
-
*
|
|
32
|
+
* an ordered candidate account of sessions. Membership validates header cwd
|
|
33
|
+
* against the workspace path, but preserves an existing account when its
|
|
34
|
+
* fully qualified cwd is missing. Consumers only see this interface; the
|
|
35
|
+
* implementation stays private.
|
|
34
36
|
*/
|
|
35
37
|
interface Workspace {
|
|
36
38
|
/** Stable record id (generated uuid). */
|
|
@@ -57,8 +59,11 @@ interface Workspace {
|
|
|
57
59
|
* prepended at attach, explicit reordering goes through
|
|
58
60
|
* `insertSessionBefore`, and activity never reorders. The durable candidate
|
|
59
61
|
* account is filtered synchronously: missing headers, invalid cwd values,
|
|
60
|
-
* and canonical cwd mismatches are never returned. A
|
|
61
|
-
*
|
|
62
|
+
* and canonical cwd mismatches are never returned. A fully qualified cwd
|
|
63
|
+
* whose realpath or directory stat fails with ENOENT preserves an existing
|
|
64
|
+
* candidate, including a dangling symlink; other filesystem failures do not.
|
|
65
|
+
* A subsequent mutation prunes filtered candidates, not missing-directory
|
|
66
|
+
* candidates. This does not admit new sessions or recreate directories.
|
|
62
67
|
*/
|
|
63
68
|
readonly sessionIds: readonly SessionId[]
|
|
64
69
|
|
|
@@ -116,14 +121,55 @@ interface Workspace {
|
|
|
116
121
|
}
|
|
117
122
|
```
|
|
118
123
|
|
|
119
|
-
Ownership truth is the record's ordered `sessionIds`, never derived from session cwd
|
|
124
|
+
Ownership truth is the record's ordered `sessionIds`, never derived from session cwd. Membership validates the recorded header cwd against the workspace path; an existing candidate remains owned when its fully qualified cwd fails resolution or directory stat with `ENOENT`. This preserves missing-directory and dangling-symlink accounts without admitting new sessions. Failed writes reject (`insertSessionBefore` account errors as `WorkspaceMoveInvalidError`, storage failures as plain errors); every accepted mutation stamps `updatedAt` and durably prunes candidates that no longer pass the membership check.
|
|
120
125
|
|
|
121
126
|
## The registry: `ctx.workspaceRegistry`
|
|
122
127
|
|
|
123
|
-
`WorkspaceRegistry` ([signatures](#ctxworkspaceregistry--workspaceregistry)) owns registration and resolution. `create(path, title?)` requires a fully qualified path, canonicalizes it, rejects a nonexistent path (the original `ENOENT`) or a non-directory, returns the existing entity unchanged when the canonical path is already owned, and otherwise creates a record with `title ?? defaultWorkspaceTitle(path)` prepended to the durable registry order (different canonical paths may share a display title, and a path with no final segment uses its root spelling). `get(id)` and the ordered `list()` are synchronous cache reads; `resolveByPath(path)` applies the same fully qualified realpath canon without creating. `delete(id)` removes only the registration, order entry, and session account — the directory, user files, live sessions, and persisted logs are never touched, so those sessions become Ungrouped ([
|
|
128
|
+
`WorkspaceRegistry` ([signatures](#ctxworkspaceregistry--workspaceregistry)) owns registration and resolution. `create(path, title?)` requires a fully qualified path, canonicalizes it, rejects a nonexistent path (the original `ENOENT`) or a non-directory, returns the existing entity unchanged when the canonical path is already owned, and otherwise creates a record with `title ?? defaultWorkspaceTitle(path)` prepended to the durable registry order (different canonical paths may share a display title, and a path with no final segment uses its root spelling). `get(id)` and the ordered `list()` are synchronous cache reads; `resolveByPath(path)` applies the same fully qualified realpath canon without creating. `delete(id)` removes only the registration, order entry, and session account — the directory, user files, live sessions, and persisted logs are never touched, so those sessions become Ungrouped ([reference](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/workspace/workspace/README.md)); unknown ids return `false`. Create and delete persist a pending-mutation marker before their two writes (record + order) can diverge; startup resolves exactly the marked mutation — by deleting the marked table row, which completes an interrupted delete and rolls back an interrupted create (the registration is re-creatable, so rollback is the safe direction) — and an unmarked order/table mismatch fails loud as corruption.
|
|
124
129
|
|
|
125
130
|
Sessions get their cwd at create time from whoever creates them, not from this registry — the API gateway resolves a new session's cwd from the chosen workspace's `path` (falling back to an explicit or default cwd), creates the session so the cwd lands in its immutable [`SessionHeader`](./persistence.md#sessionheader--metadata-beside-the-log), then calls `attachSession`, which re-validates that stored header cwd against the workspace path. On the first successful start, the registry bootstraps history from persisted headers alone (`id`, `cwd`, `createdAt` — never event bodies), grouping sessions with a valid canonical cwd into per-directory workspaces, newest first; the initialized marker is written last so an interrupted bootstrap resumes safely. The bootstrap is one-time: cwd-less legacy sessions stay Ungrouped, and sessions created afterwards join a workspace only through `attachSession`.
|
|
126
131
|
|
|
132
|
+
## Default Workspace initialization
|
|
133
|
+
|
|
134
|
+
The controller's `initializeDefault` takes no request: it owns the fixed `default-workspace` directory name, resolves the Documents location, and asks the registry to initialize once. The registry accepts a directory resolver, derives the initial title from the requested directory's final segment rather than the canonical one, and commits the registration with its durable identity. No language reaches the Host — browser consumers label a Workspace still carrying that automatic title through the controller's `workspaceDisplayTitle`, so only the on-screen name follows the reader's language. [First-use behavior and configuration](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/api/workspace-controller/README.md#first-use-workspace) describe reuse and failure handling.
|
|
135
|
+
|
|
136
|
+
## Session pinning
|
|
137
|
+
|
|
138
|
+
The controller's [transport types](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/api/workspace-controller/src/types.ts) define `WorkspacePinSessionRequest` and `WorkspaceUnpinSessionRequest`, each carrying one `sessionId`. Both operations return `WorkspacePinValue`: the complete `pinnedSessionIds` array of Session ids, most recently pinned first. Pinning requires a known, unarchived Session; unpinning an id that is not pinned succeeds without changing the set. Archiving removes the Session's pin in the same durable write, and unarchiving does not restore it.
|
|
139
|
+
|
|
140
|
+
## Archive admission
|
|
141
|
+
|
|
142
|
+
Archiving is a registry-global durable set, and the registry refuses to hide running work behind it. The rule is a capability seam over two Host events the package declares and dispatches ([events](#workspace-events)): `workspace/session-activity` (waterfall) asks the composed providers what still runs for a Session, and `workspace/session-stop` (parallel) asks them to stop it. Each provider registers on the root like any listener, so the package knows no agent, job, or schedule vocabulary; the families are keys of a merge-extensible map.
|
|
143
|
+
|
|
144
|
+
```ts type-equiv
|
|
145
|
+
/**
|
|
146
|
+
* Activity families a `workspace/session-activity` listener may report. This
|
|
147
|
+
* package declares none: each provider merges its own key from a module both
|
|
148
|
+
* its Host and Client faces import, so a consumer that renders the families
|
|
149
|
+
* sees exactly the keys its program compiled and falls through to a generic
|
|
150
|
+
* description for any other. The shipped providers merge `turn` (the Agent
|
|
151
|
+
* registry), `job` (the job registry seam), `subagent` (the Subagent
|
|
152
|
+
* runtime), and `schedule` (the Schedule plugin).
|
|
153
|
+
*/
|
|
154
|
+
interface SessionActivityKindMap {}
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
`SessionActivityKind` is `keyof SessionActivityKindMap`, so a program that compiled no provider sees no key at all. The shipped keys live in client-importable type modules: `turn` in the Agent registry's `types.ts`, `job` in the job registry seam's `view.ts`, `subagent` in the Subagent runtime's `control-types.ts`, `schedule` in the Schedule plugin's `types.ts`; a consumer that renders the families imports those modules for its cases and keeps a generic line for any other key. A provider answers the waterfall by prepending its `SessionActivity` entries to the result of `next()`; the registry's innermost callback returns an empty list, so a composition without providers archives freely.
|
|
158
|
+
|
|
159
|
+
```ts type-equiv
|
|
160
|
+
/**
|
|
161
|
+
* One reason a session counts as active for archive admission. Families with
|
|
162
|
+
* per-item identity list their items so a caller can name what must stop.
|
|
163
|
+
*/
|
|
164
|
+
interface SessionActivity {
|
|
165
|
+
readonly kind: SessionActivityKind
|
|
166
|
+
/** Active items of the family; absent for a family without per-item identity (`turn`). */
|
|
167
|
+
readonly items?: readonly SessionActivityItem[]
|
|
168
|
+
}
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
`SessionActivityItem` carries the family-specific `id` (a session, job, or schedule id) and an optional display `label`. `archiveSession(sessionId)` asks the waterfall once, after the existence check, and rejects a non-empty answer with `WorkspaceActiveSessionError` (`sessionId`, `activity`) without writing; the controller maps it to the `workspace/session-active` error, whose details carry the same two fields. `archiveSession(sessionId, { stopActivity: true })` — the `ArchiveSessionOptions` field the transport request exposes as `stopActivity` — skips the check, writes the archive, then dispatches `workspace/session-stop`; a rejecting provider is logged and the archive stays, and the stopped work is never awaited to settlement. An already archived id neither asks nor stops. The shipped providers, what they stop, and the `agent/pre-step` gate that keeps an archived Session from running a model step are documented with the [registry package](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/workspace/workspace/README.md#api-behavior); the decision record is the [archive-stops-running-work Agent Note](https://github.com/deepseek-ai/deepseek-harness/blob/master/.agents/notes/implemented/feature/2026-09-21-archive-stops-running-session-work.md).
|
|
172
|
+
|
|
127
173
|
## Consumers
|
|
128
174
|
|
|
129
175
|
[`dsh-workspace-controller`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/api/workspace-controller) serves workspace CRUD to GUI clients over `ctx.workspaceRegistry`, and [`dsh-session-controller`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/api/session-controller) performs the create-session-then-attach flow above. [dsh-agent-instructions](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/context/agent-instructions) is **not** a consumer despite the name: it discovers AGENTS.md-style instruction files under an agent's own cwd and never touches `ctx.workspaceRegistry` — the shared word refers to the user's working directory, not to this registry's entities.
|
|
@@ -186,6 +232,84 @@ Host service backing the generated `ctx.remote.directoryPicker` namespace. The s
|
|
|
186
232
|
|
|
187
233
|
Source: [`packages/api/workspace-controller/src/directory-picker.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/api/workspace-controller/src/directory-picker.ts)
|
|
188
234
|
|
|
235
|
+
<a id="ctxterminalcontroller--terminalcontroller"></a>
|
|
236
|
+
|
|
237
|
+
### `ctx.terminalController` — `TerminalController`
|
|
238
|
+
|
|
239
|
+
Typed Remote control of transient Session-owned terminal processes.
|
|
240
|
+
|
|
241
|
+
```ts cordis-catalog
|
|
242
|
+
/**
|
|
243
|
+
* Read the Session's current directory and terminal limits without filesystem validation or shell lookup.
|
|
244
|
+
* @param agent - Session owner supplied by the Gateway.
|
|
245
|
+
* @param signal - request cancellation.
|
|
246
|
+
* @returns the logged current directory and terminal limits; retained terminals keep their own process directories.
|
|
247
|
+
*/
|
|
248
|
+
@Remote environment(agent: Agent, signal: AbortSignal): TerminalEnvironment
|
|
249
|
+
|
|
250
|
+
/**
|
|
251
|
+
* Discover installed shells in the Session's execution environment.
|
|
252
|
+
* @param agent - Session owner supplied by the Gateway.
|
|
253
|
+
* @param signal - request cancellation.
|
|
254
|
+
* @returns verified profiles, with the configured or system default first.
|
|
255
|
+
*/
|
|
256
|
+
@Remote shells(agent: Agent, signal: AbortSignal): Promise<TerminalShell[]>
|
|
257
|
+
|
|
258
|
+
/**
|
|
259
|
+
* List retained terminals without resolving or activating an Agent.
|
|
260
|
+
* @param sessionId - displayed Session identity, including offline history.
|
|
261
|
+
* @returns terminals retained for this Host lifetime.
|
|
262
|
+
*/
|
|
263
|
+
@Remote list(sessionId: SessionId): WebTerminalInfo[]
|
|
264
|
+
|
|
265
|
+
/**
|
|
266
|
+
* Allocate a user shell once for a caller-generated identity, without Agent sandbox or approval restrictions.
|
|
267
|
+
* @param agent - Session owner supplied by the Gateway.
|
|
268
|
+
* @param request - initial dimensions and idempotency identity.
|
|
269
|
+
* @param signal - allocation cancellation; committed terminals survive disconnection.
|
|
270
|
+
* @returns the existing or newly committed terminal.
|
|
271
|
+
*/
|
|
272
|
+
@Remote async create(agent: Agent, request: TerminalCreateRequest, signal: AbortSignal): Promise<WebTerminalInfo>
|
|
273
|
+
|
|
274
|
+
/**
|
|
275
|
+
* Retain an existing terminal for a window without activating its Agent or taking input control.
|
|
276
|
+
* @param sessionId - owning Session identity, including an inactive saved layout.
|
|
277
|
+
* @param id - retained Host terminal identity.
|
|
278
|
+
* @param signal - physical Remote stream cancellation.
|
|
279
|
+
* @returns a hold acknowledgement followed by an open lifetime stream.
|
|
280
|
+
*/
|
|
281
|
+
@Remote({ mode: 'stream' }) retain(sessionId: SessionId, id: WebTerminalId, signal: AbortSignal): AsyncIterable<TerminalRetentionFrame>
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* Attach terminal input and output to one physical Remote stream.
|
|
285
|
+
* @param agent - Session owner supplied by the Gateway.
|
|
286
|
+
* @param id - terminal identity.
|
|
287
|
+
* @param signal - attachment cancellation; the process remains alive and input is never replayed.
|
|
288
|
+
* @returns screen recovery, output, writable state and provider-acceptance acknowledgements.
|
|
289
|
+
*/
|
|
290
|
+
@Remote({ mode: 'stream' }) attach(agent: Agent, id: WebTerminalId, signal: AbortSignal): RemoteStream<TerminalFrame, TerminalInput>
|
|
291
|
+
|
|
292
|
+
/**
|
|
293
|
+
* Rename a terminal without changing its shell.
|
|
294
|
+
* @param agent - Session owner supplied by the Gateway.
|
|
295
|
+
* @param id - terminal identity.
|
|
296
|
+
* @param title - nonempty display title, at most 120 characters.
|
|
297
|
+
*/
|
|
298
|
+
@Remote rename(agent: Agent, id: WebTerminalId, title: string): void
|
|
299
|
+
|
|
300
|
+
/**
|
|
301
|
+
* Close an identity to future creation and kill its process range; repeated closes succeed.
|
|
302
|
+
* @param agent - Session owner supplied by the Gateway.
|
|
303
|
+
* @param id - terminal identity.
|
|
304
|
+
* @returns after provider cleanup succeeds. A failure retains the terminal for retry.
|
|
305
|
+
*/
|
|
306
|
+
@Remote async close(agent: Agent, id: WebTerminalId): Promise<void>
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
Types: [Agent](./core.md) · [RemoteStream](./typert.md) · [SessionId](./core.md)
|
|
310
|
+
|
|
311
|
+
Source: [`packages/api/terminal-controller/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/api/terminal-controller/src/index.ts)
|
|
312
|
+
|
|
189
313
|
<a id="ctxworkspacecontroller--workspacecontroller"></a>
|
|
190
314
|
|
|
191
315
|
### `ctx.workspaceController` — `WorkspaceController`
|
|
@@ -200,6 +324,16 @@ Host service backing the generated `ctx.remote.workspace` namespace.
|
|
|
200
324
|
*/
|
|
201
325
|
@Remote('create') create(request: WorkspaceCreateRequest): Promise<WorkspaceCreateValue>
|
|
202
326
|
|
|
327
|
+
/**
|
|
328
|
+
* Initialize or reuse the default Workspace during first-use startup. The
|
|
329
|
+
* directory name is fixed, so the Host never renames or relocates an
|
|
330
|
+
* existing default; its initial title is that same name, which browser
|
|
331
|
+
* consumers label in the reader's language.
|
|
332
|
+
* @param signal - caller lifetime; cancels native directory lookup.
|
|
333
|
+
* @returns the durable Workspace, or undefined when first-use initialization is ineligible; creates no Session or message.
|
|
334
|
+
*/
|
|
335
|
+
@Remote('initializeDefault') async initializeDefault(signal: AbortSignal): Promise<WorkspaceValue | undefined>
|
|
336
|
+
|
|
203
337
|
/**
|
|
204
338
|
* Rename one Workspace to a unique non-blank title.
|
|
205
339
|
* @param request - Workspace identity and proposed title.
|
|
@@ -236,11 +370,38 @@ Host service backing the generated `ctx.remote.workspace` namespace.
|
|
|
236
370
|
@Remote('archiveSession') archiveSession(request: WorkspaceArchiveSessionRequest): Promise<WorkspaceArchiveValue>
|
|
237
371
|
|
|
238
372
|
/**
|
|
239
|
-
*
|
|
373
|
+
* Restore one archived Session to Workspace grouping surfaces.
|
|
374
|
+
* @param request - Session identity to unarchive.
|
|
375
|
+
* @returns the complete resulting archive set.
|
|
376
|
+
*/
|
|
377
|
+
@Remote('unarchiveSession') unarchiveSession(request: WorkspaceUnarchiveSessionRequest): Promise<WorkspaceArchiveValue>
|
|
378
|
+
|
|
379
|
+
/**
|
|
380
|
+
* Surface one known unarchived Session ahead of unpinned Sessions.
|
|
381
|
+
* @param request - Session identity to pin.
|
|
382
|
+
* @returns the complete resulting pin set, most recently pinned first.
|
|
383
|
+
*/
|
|
384
|
+
@Remote('pinSession') pinSession(request: WorkspacePinSessionRequest): Promise<WorkspacePinValue>
|
|
385
|
+
|
|
386
|
+
/**
|
|
387
|
+
* Remove one Session's pin without changing its saved Session order.
|
|
388
|
+
* @param request - Session identity to unpin.
|
|
389
|
+
* @returns the complete resulting pin set, most recently pinned first.
|
|
390
|
+
*/
|
|
391
|
+
@Remote('unpinSession') unpinSession(request: WorkspaceUnpinSessionRequest): Promise<WorkspacePinValue>
|
|
392
|
+
|
|
393
|
+
/**
|
|
394
|
+
* Stream a complete Workspace baseline followed by ordered increments. A
|
|
395
|
+
* non-owner receives only the Workspaces and Sessions `allows()` admits.
|
|
396
|
+
* When a delivered Workspace is no longer admitted at its next change or
|
|
397
|
+
* the next order change, the stream sends a `replace` frame with the
|
|
398
|
+
* complete filtered state instead of a `remove`, because a Client never
|
|
399
|
+
* resurrects a removed Workspace; a `remove` frame reports a deletion and
|
|
400
|
+
* reaches only a Client that received that Workspace.
|
|
240
401
|
* @param signal - generation cancellation.
|
|
241
402
|
* @returns baseline followed by ordered Workspace increments.
|
|
242
403
|
*/
|
|
243
|
-
@Remote({ mode: 'stream' }) follow(signal: AbortSignal): AsyncIterable<WorkspaceFollowFrame>
|
|
404
|
+
@Remote({ mode: 'stream' }) async *follow(signal: AbortSignal): AsyncIterable<WorkspaceFollowFrame>
|
|
244
405
|
```
|
|
245
406
|
|
|
246
407
|
Source: [`packages/api/workspace-controller/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/api/workspace-controller/src/index.ts)
|
|
@@ -263,34 +424,14 @@ Host Remote file reads and workspace directory observations over the composed fi
|
|
|
263
424
|
@Remote async read( workspaceFileScope: WorkspaceFileScope, path: string, range: WorkspaceFileRange, signal: AbortSignal, ): Promise<WorkspaceFileText>
|
|
264
425
|
|
|
265
426
|
/**
|
|
266
|
-
* Read
|
|
267
|
-
* bytes, no text decoding and no binary rejection.
|
|
268
|
-
* @param workspaceFileScope - header-derived workspace root for the Session identity on the wire.
|
|
269
|
-
* @param path - absolute path or path relative to the workspace root; files outside it are allowed.
|
|
270
|
-
* @param range - the byte window; omitted fields take the window defaults.
|
|
271
|
-
* @param signal - caller cancellation.
|
|
272
|
-
* @returns the window in base64, the file's version and size at the stat before it, and whether it reaches the last byte.
|
|
273
|
-
*/
|
|
274
|
-
@Remote async readBytes( workspaceFileScope: WorkspaceFileScope, path: string, range: WorkspaceByteRange, signal: AbortSignal, ): Promise<WorkspaceFileBytes>
|
|
275
|
-
|
|
276
|
-
/**
|
|
277
|
-
* Read a complete regular file as bytes, subject to the configured full-file cap.
|
|
427
|
+
* Read a complete regular file or one byte range without text decoding.
|
|
278
428
|
* @param workspaceFileScope - header-derived workspace root for the Session identity on the wire.
|
|
279
|
-
* @param path - absolute or workspace-relative file
|
|
429
|
+
* @param path - target path, absolute or workspace-relative; relative to the base file's directory when provided.
|
|
430
|
+
* @param options - optional base file and range; without a range the complete-file cap applies.
|
|
280
431
|
* @param signal - caller cancellation.
|
|
281
|
-
* @returns
|
|
432
|
+
* @returns native bytes with the file's version and size at the preceding stat, byte offset, and EOF marker.
|
|
282
433
|
*/
|
|
283
|
-
@Remote async
|
|
284
|
-
|
|
285
|
-
/**
|
|
286
|
-
* Read a complete file relative to another file's directory, including outside the workspace.
|
|
287
|
-
* @param workspaceFileScope - header-derived workspace root for the Session identity on the wire.
|
|
288
|
-
* @param path - base file, absolute or workspace-relative.
|
|
289
|
-
* @param relativePath - relative filesystem path, not a URL or absolute path.
|
|
290
|
-
* @param signal - caller cancellation.
|
|
291
|
-
* @returns the complete related file using the ordinary file-size and access checks.
|
|
292
|
-
*/
|
|
293
|
-
@Remote async readRelated( workspaceFileScope: WorkspaceFileScope, path: string, relativePath: string, signal: AbortSignal, ): Promise<WorkspaceFileBytes>
|
|
434
|
+
@Remote async readBytes( workspaceFileScope: WorkspaceFileScope, path: string, options: WorkspaceByteReadOptions, signal: AbortSignal, ): Promise<WorkspaceFileBytes>
|
|
294
435
|
|
|
295
436
|
/**
|
|
296
437
|
* Report one regular file's identity, version, and size without its content.
|
|
@@ -311,15 +452,15 @@ Host Remote file reads and workspace directory observations over the composed fi
|
|
|
311
452
|
@Remote async list(workspaceFileScope: WorkspaceFileScope, path: string, signal: AbortSignal): Promise<WorkspaceDirectoryListing>
|
|
312
453
|
|
|
313
454
|
/**
|
|
314
|
-
*
|
|
315
|
-
*
|
|
316
|
-
* not watched.
|
|
455
|
+
* Watch one file or a directory's direct entries in the Session's filesystem.
|
|
456
|
+
* Files use the backend's read authority; directories remain workspace-scoped.
|
|
317
457
|
* @param workspaceFileScope - header-derived workspace root for the Session identity on the wire.
|
|
458
|
+
* @param path - target path; the Host determines its type and confines directories to the workspace.
|
|
318
459
|
* @param signal - generation cancellation.
|
|
319
|
-
* @returns `ready` once the
|
|
320
|
-
*
|
|
460
|
+
* @returns `ready` once the target watch is active, then current metadata for queued and live invalidations.
|
|
461
|
+
* @throws RemoteError when watching is unavailable or a directory is outside the workspace.
|
|
321
462
|
*/
|
|
322
|
-
@Remote({ mode: 'stream' }) changes(workspaceFileScope: WorkspaceFileScope, signal: AbortSignal): AsyncIterable<WorkspaceFileWatchFrame>
|
|
463
|
+
@Remote({ mode: 'stream' }) changes(workspaceFileScope: WorkspaceFileScope, path: string, signal: AbortSignal): AsyncIterable<WorkspaceFileWatchFrame>
|
|
323
464
|
```
|
|
324
465
|
|
|
325
466
|
Source: [`packages/api/workspace-files/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/api/workspace-files/src/index.ts)
|
|
@@ -344,6 +485,20 @@ Durable workspace registry. Startup waits for `sessionPersistence`, builds one c
|
|
|
344
485
|
*/
|
|
345
486
|
async create(path: string, title?: string): Promise<Workspace>
|
|
346
487
|
|
|
488
|
+
/**
|
|
489
|
+
* Initialize the default Workspace only while both the registry and Session
|
|
490
|
+
* history are empty. Repeated requests reuse its durable identity; deleting
|
|
491
|
+
* that registration permanently disables automatic creation.
|
|
492
|
+
* @param resolveDirectory - resolve the absolute directory; called only for
|
|
493
|
+
* eligible creation, inside the registry mutation queue. Missing directories
|
|
494
|
+
* are created recursively before registration, and the initial title is the
|
|
495
|
+
* requested directory's own final segment — not the canonical one, so a
|
|
496
|
+
* symlink at that path does not retitle the Workspace after its target.
|
|
497
|
+
* After resolution, caller cancellation does not roll back creation or registration.
|
|
498
|
+
* @returns the initialized Workspace, or undefined when automatic creation is ineligible.
|
|
499
|
+
*/
|
|
500
|
+
initializeDefault(resolveDirectory: () => Promise<string>): Promise<Workspace | undefined>
|
|
501
|
+
|
|
347
502
|
/**
|
|
348
503
|
* Look up a workspace by id.
|
|
349
504
|
* @param id - Workspace id.
|
|
@@ -381,11 +536,52 @@ insertBefore(id: WorkspaceId, beforeId?: WorkspaceId): Promise<readonly Workspac
|
|
|
381
536
|
/**
|
|
382
537
|
* Archive one session durably. The session must exist (live or in session
|
|
383
538
|
* persistence); its workspace accounting — or lack of one — is irrelevant.
|
|
384
|
-
*
|
|
539
|
+
* Without `stopActivity` the session must also be inactive: the
|
|
540
|
+
* `workspace/session-activity` waterfall is asked once, and any reported
|
|
541
|
+
* activity rejects with {@link WorkspaceActiveSessionError} before anything
|
|
542
|
+
* is written. With `stopActivity` the archive is written without an
|
|
543
|
+
* activity check, and the `workspace/session-stop` providers are then asked
|
|
544
|
+
* to stop the session's work: the durable archive set is what a provider's
|
|
545
|
+
* `agent/pre-step` gate reads, so every wake the stops induce is already
|
|
546
|
+
* blocked. Archiving drops the session's pin in the same durable write
|
|
547
|
+
* (pinning and archival are mutually exclusive). An already archived id
|
|
548
|
+
* resolves without writing, asking, or stopping.
|
|
385
549
|
* @param sessionId - The session to archive.
|
|
550
|
+
* @param options - Whether running work is stopped instead of refusing.
|
|
551
|
+
* @returns resolution after durability and, with `stopActivity`, after every stop request was issued.
|
|
552
|
+
*/
|
|
553
|
+
archiveSession(sessionId: SessionId, options: ArchiveSessionOptions = {}): Promise<void>
|
|
554
|
+
|
|
555
|
+
/**
|
|
556
|
+
* Unarchive one session durably by dropping it from the registry-global
|
|
557
|
+
* archive set; the accounting slot was never touched, so the session
|
|
558
|
+
* returns to its recorded position. Unarchiving runs no session-existence
|
|
559
|
+
* check because removing an id cannot introduce an unknown one, so an
|
|
560
|
+
* entry whose session is gone still resolves. An id that is not archived
|
|
561
|
+
* resolves without writing.
|
|
562
|
+
* @param sessionId - The session to unarchive.
|
|
386
563
|
* @returns resolution after durability.
|
|
387
564
|
*/
|
|
388
|
-
|
|
565
|
+
unarchiveSession(sessionId: SessionId): Promise<void>
|
|
566
|
+
|
|
567
|
+
/**
|
|
568
|
+
* Pin one session durably, prepending it to the registry-global pin set.
|
|
569
|
+
* The session must exist (live or in session persistence) and must not be
|
|
570
|
+
* archived. An already pinned id resolves without writing or reordering.
|
|
571
|
+
* @param sessionId - The session to pin.
|
|
572
|
+
* @returns resolution after durability.
|
|
573
|
+
*/
|
|
574
|
+
pinSession(sessionId: SessionId): Promise<void>
|
|
575
|
+
|
|
576
|
+
/**
|
|
577
|
+
* Unpin one session durably by dropping it from the registry-global pin
|
|
578
|
+
* set. Unpinning runs no session-existence check because removing an id
|
|
579
|
+
* cannot introduce an unknown one, so an entry whose session is gone still
|
|
580
|
+
* resolves. An id that is not pinned resolves without writing.
|
|
581
|
+
* @param sessionId - The session to unpin.
|
|
582
|
+
* @returns resolution after durability.
|
|
583
|
+
*/
|
|
584
|
+
unpinSession(sessionId: SessionId): Promise<void>
|
|
389
585
|
|
|
390
586
|
/**
|
|
391
587
|
* Resolve by canonical directory path without creating or mutating a
|
|
@@ -399,5 +595,57 @@ async resolveByPath(path: string): Promise<Workspace | undefined>
|
|
|
399
595
|
|
|
400
596
|
Types: [SessionId](./core.md)
|
|
401
597
|
|
|
598
|
+
Source: [`packages/workspace/workspace/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/workspace/workspace/src/index.ts)
|
|
599
|
+
|
|
600
|
+
<a id="workspace-events"></a>
|
|
601
|
+
|
|
602
|
+
### `workspace/*` events
|
|
603
|
+
|
|
604
|
+
<a id="workspacesession-activity--waterfall"></a>
|
|
605
|
+
|
|
606
|
+
#### `workspace/session-activity` — waterfall
|
|
607
|
+
|
|
608
|
+
Ask the composed providers what still runs for a session before it is archived. A listener prepends its own SessionActivity entries to the result of `next()`; the registry's innermost callback returns an empty list, so a composition without providers archives freely. Any non-empty result refuses the archive without a write.
|
|
609
|
+
|
|
610
|
+
```ts cordis-catalog
|
|
611
|
+
/**
|
|
612
|
+
* Ask the composed providers what still runs for a session before it is
|
|
613
|
+
* archived. A listener prepends its own {@link SessionActivity} entries to
|
|
614
|
+
* the result of `next()`; the registry's innermost callback returns an
|
|
615
|
+
* empty list, so a composition without providers archives freely. Any
|
|
616
|
+
* non-empty result refuses the archive without a write.
|
|
617
|
+
* @param request - the session about to be archived.
|
|
618
|
+
* @param next - delegate to the remaining providers.
|
|
619
|
+
* @mode waterfall
|
|
620
|
+
*/
|
|
621
|
+
'workspace/session-activity'( request: SessionActivityRequest, next: () => Promise<readonly SessionActivity[]>, ): Promise<readonly SessionActivity[]>
|
|
622
|
+
```
|
|
623
|
+
|
|
624
|
+
Source: [`packages/workspace/workspace/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/workspace/workspace/src/index.ts)
|
|
625
|
+
|
|
626
|
+
<a id="workspacesession-stop--parallel"></a>
|
|
627
|
+
|
|
628
|
+
#### `workspace/session-stop` — parallel
|
|
629
|
+
|
|
630
|
+
Stop a session's running work because the caller archived it with `stopActivity`; the archive set is durable when this dispatches. Each provider stops its own families — cancelling a turn, its subagent descendants, owned jobs, or active schedules — through the same cancel paths the user's own stop actions use, so the session log ends every open turn regularly and a later unarchive can continue the conversation. Listeners issue their stop requests without waiting for running work to settle; a listener may await its own durability barrier. A rejection is logged by the registry and does not undo the archive.
|
|
631
|
+
|
|
632
|
+
```ts cordis-catalog
|
|
633
|
+
/**
|
|
634
|
+
* Stop a session's running work because the caller archived it with
|
|
635
|
+
* `stopActivity`; the archive set is durable when this dispatches. Each
|
|
636
|
+
* provider stops its own families — cancelling a turn, its subagent
|
|
637
|
+
* descendants, owned jobs, or active schedules — through the same cancel
|
|
638
|
+
* paths the user's own stop actions use, so the session log ends every
|
|
639
|
+
* open turn regularly and a later unarchive can continue the
|
|
640
|
+
* conversation. Listeners issue their stop requests without waiting for
|
|
641
|
+
* running work to settle; a listener may await its own durability
|
|
642
|
+
* barrier. A rejection is logged by the registry and does not undo the
|
|
643
|
+
* archive.
|
|
644
|
+
* @param request - the session being archived.
|
|
645
|
+
* @mode parallel
|
|
646
|
+
*/
|
|
647
|
+
'workspace/session-stop'(request: SessionActivityRequest): Promise<void> | void
|
|
648
|
+
```
|
|
649
|
+
|
|
402
650
|
Source: [`packages/workspace/workspace/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/workspace/workspace/src/index.ts)
|
|
403
651
|
<!-- END GENERATED cordis-surface -->
|