dsh-plugin-dev-kb 1.3.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 +15 -0
- package/README.en.md +4 -4
- package/README.md +5 -5
- package/kb/INDEX.md +18 -18
- package/kb/README.md +6 -4
- 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 +48 -6
- package/kb/extra/cookbook/adding-a-session-format-version.zh.md +48 -6
- 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 +18 -19
- package/kb/extra/deepseek-llm-api-wire-extensions.zh.md +17 -18
- package/kb/extra/development.md +27 -10
- package/kb/extra/development.zh.md +27 -10
- package/kb/extra/event-producer-consumer.md +89 -68
- package/kb/extra/event-producer-consumer.zh.md +90 -69
- package/kb/extra/glossary.md +1 -1
- package/kb/extra/glossary.zh.md +1 -1
- package/kb/extra/i18n/README.md +15 -7
- package/kb/extra/i18n/README.zh.md +15 -7
- package/kb/extra/i18n/terminology.md +4 -4
- package/kb/extra/i18n/translation-prompt.md +2 -2
- package/kb/extra/module-graph.md +574 -326
- package/kb/extra/module-graph.zh.md +574 -326
- 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 +1 -1
- package/kb/extra/rescope.zh.md +1 -1
- package/kb/extra/session-format-status.md +22 -6
- package/kb/extra/session-format-status.zh.md +22 -6
- 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 +4 -4
- package/kb/extra/subsystems/feedback.zh.md +4 -4
- 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 +3 -3
- package/kb/extra/testing.zh.md +3 -3
- 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 -3
- package/kb/extra/web-styling.zh.md +12 -3
- package/kb/meta/search-index.json +976 -256
- package/kb/meta/site-pages.txt +188 -188
- package/kb/meta/source.json +6 -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 +9 -2
- 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 +9 -2
- 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 +97 -82
- package/kb/site/en/guide/public-deployments.md +36 -0
- package/kb/site/en/guide/python-sdk.md +42 -21
- 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 +13 -11
- package/kb/site/en/reference/capability-seams.md +177 -59
- package/kb/site/en/reference/config-catalog.md +1758 -821
- 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/index.md +18 -11
- package/kb/site/en/reference/persistence-catalog.md +7687 -54
- package/kb/site/en/reference/subsystems/approval.md +2 -1
- package/kb/site/en/reference/subsystems/client-modules.md +23 -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 +36 -6
- package/kb/site/en/reference/subsystems/core.md +97 -257
- package/kb/site/en/reference/subsystems/credentials.md +169 -5
- 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 +16 -5
- package/kb/site/en/reference/subsystems/jobs.md +337 -127
- package/kb/site/en/reference/subsystems/llm-streaming.md +76 -36
- 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 +4 -3
- 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 +8 -6
- package/kb/site/en/reference/subsystems/session-telemetry.md +7 -4
- package/kb/site/en/reference/subsystems/session-title.md +6 -5
- package/kb/site/en/reference/subsystems/session.md +199 -81
- 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 +23 -12
- package/kb/site/en/reference/subsystems/skills.md +5 -6
- package/kb/site/en/reference/subsystems/slots.md +34 -13
- 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 +50 -64
- package/kb/site/en/reference/subsystems/subprocess.md +17 -18
- package/kb/site/en/reference/subsystems/system-prompt.md +4 -1
- 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 +40 -12
- 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 +294 -34
- package/kb/site/en/reference/tool-catalog.md +782 -331
- package/kb/site/en/reference/tool-execution-pipeline.md +7 -3
- 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 +42 -21
- 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 +13 -11
- package/kb/site/reference/capability-seams.md +177 -59
- package/kb/site/reference/config-catalog.md +1760 -822
- 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/index.md +18 -11
- package/kb/site/reference/persistence-catalog.md +7693 -60
- package/kb/site/reference/subsystems/approval.md +2 -1
- package/kb/site/reference/subsystems/client-modules.md +23 -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 +35 -5
- package/kb/site/reference/subsystems/core.md +97 -257
- package/kb/site/reference/subsystems/credentials.md +169 -5
- 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 +16 -5
- package/kb/site/reference/subsystems/jobs.md +336 -126
- package/kb/site/reference/subsystems/llm-streaming.md +76 -36
- 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 +4 -3
- 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 +8 -6
- package/kb/site/reference/subsystems/session-telemetry.md +7 -4
- package/kb/site/reference/subsystems/session-title.md +6 -5
- package/kb/site/reference/subsystems/session.md +199 -81
- 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 +23 -12
- package/kb/site/reference/subsystems/skills.md +5 -6
- package/kb/site/reference/subsystems/slots.md +34 -13
- 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 +49 -63
- package/kb/site/reference/subsystems/subprocess.md +17 -18
- package/kb/site/reference/subsystems/system-prompt.md +4 -1
- 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 +40 -12
- 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 +294 -34
- package/kb/site/reference/tool-catalog.md +784 -333
- package/kb/site/reference/tool-execution-pipeline.md +7 -3
- package/package.json +2 -2
- package/skills/dsh-plugin-dev-kb.md +5 -4
- 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,135 @@
|
|
|
1
|
+
# SSH
|
|
2
|
+
|
|
3
|
+
English | [中文](ssh.zh.md)
|
|
4
|
+
|
|
5
|
+
The [SSH provider family](../../packages/ssh/README.md) supplies one remote filesystem/process world through a deployment-owned OpenSSH connection. The Harness, model transport and Session storage remain on the host. The family implements the existing filesystem, subprocess and sandbox APIs; it introduces no SSH-specific model tools.
|
|
6
|
+
|
|
7
|
+
## Execution coordinates
|
|
8
|
+
|
|
9
|
+
Filesystem identities, executable lookup, process cwd, sandbox workspace roots and language-server file URLs refer to the SSH host. Providers canonicalize paths where the files exist, preserving filesystem interpretation of `symlink/..`. The policy resolver carries absolute execution-world spelling without trying to resolve remote paths on the Harness host.
|
|
10
|
+
|
|
11
|
+
`processPath()` supplies a path usable by the paired subprocess provider. `processPathFromHostPath()` remains unavailable for SSH; installing a remote artifact does not make an arbitrary host path portable. [`NodePtcRuntime`](../../packages/ptc-runtime/ptc-runtime-node/README.md) therefore takes an explicitly installed, digest-verified remote bootstrap.
|
|
12
|
+
|
|
13
|
+
## Transport and trust
|
|
14
|
+
|
|
15
|
+
Administrative RPC uses the helper’s SSH exec streams. Ordinary stdin, stdout, stderr, terminal output and optional fd 7 control traffic use separately authenticated forwarded Unix sockets. Each forwarded stream has its own SSH channel window; paused program output does not share the control or administrative window. All channels still share connection bandwidth and transport failure.
|
|
16
|
+
|
|
17
|
+
Deployment authentication, installed artifact verification and per-stream TLS authentication belong to [`dsh-ssh`](../../packages/ssh/ssh/README.md). The helper executes filesystem and process requests with trusted local providers on the remote machine. SSH is a transport; the selected remote sandbox provider enforces file effects.
|
|
18
|
+
|
|
19
|
+
## Process lifetime and cancellation
|
|
20
|
+
|
|
21
|
+
A process is reserved before its streams are connected, and launch is accepted at most once. `done` reports the direct result; `waitForExit` observes the remote managed range. Terminal operations retain the asynchronous shared API. Preparation cancellation, launched-process termination and provider disposal release their owned resources through the helper.
|
|
22
|
+
|
|
23
|
+
Administrative deadlines bound individual RPC observations; they do not replace the execution deadline chosen by a Bash or ptc-runtime consumer. Remote waits can remain pending while other requests progress. SSH loss invalidates pending operations; helper EOF, signals and lease expiry start remote cleanup. The client reports unconfirmed outcomes honestly and never reconnects to replay a possibly executed action.
|
|
24
|
+
|
|
25
|
+
## Composition scope
|
|
26
|
+
|
|
27
|
+
Headless records and checks Session cwd through the mounted filesystem provider. Remote FS, Bash, terminal, LSP and PTC consumers can therefore share those coordinates. Web workspace views that assume host filesystem access need separate integration; replacing providers alone does not make those views remote-aware.
|
|
28
|
+
|
|
29
|
+
See the [decision record](../../.agents/notes/implemented/architecture/2026-09-11-posix-ssh-runtime.md) for the alternatives and verification obligations.
|
|
30
|
+
|
|
31
|
+
## Connection API
|
|
32
|
+
|
|
33
|
+
```ts type-equiv
|
|
34
|
+
/** Deployment-owned SSH identity and installed helper; no model argument selects these values. */
|
|
35
|
+
interface Config {
|
|
36
|
+
/** OpenSSH host alias, including its existing user, key and known-host configuration. */
|
|
37
|
+
host: string
|
|
38
|
+
/** Absolute remote Node executable. */
|
|
39
|
+
node: string
|
|
40
|
+
/** Absolute path to the installed, bundled helper entry. */
|
|
41
|
+
helper: string
|
|
42
|
+
/** SHA-256 of that bundled helper; mismatches refuse the connection. */
|
|
43
|
+
helperHash: string
|
|
44
|
+
/** Absolute remote default workspace. */
|
|
45
|
+
workspace: string
|
|
46
|
+
/** Optional preinstalled built PTC entry, paired with its expected digest. */
|
|
47
|
+
bootstrapPath?: string
|
|
48
|
+
/** SHA-256 of bootstrapPath; both fields must be supplied together. */
|
|
49
|
+
bootstrapHash?: string
|
|
50
|
+
/** Connection and administrative-request deadline, at most 2,147,483,647 milliseconds. */
|
|
51
|
+
requestTimeoutMs?: number
|
|
52
|
+
/** Maximum JSON payload bytes per helper request or response. */
|
|
53
|
+
maxFrameBytes?: number
|
|
54
|
+
/** Maximum ordinary requests; heartbeat and bounded resource cleanup have reserved capacity. */
|
|
55
|
+
maxPending?: number
|
|
56
|
+
/** Remote helper lease; loss of heartbeats starts remote managed cleanup. */
|
|
57
|
+
leaseMs?: number
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
```ts public-api
|
|
62
|
+
/** One non-reconnecting SSH session; loss invalidates all active operations. */
|
|
63
|
+
declare class SshConnection extends Service {
|
|
64
|
+
static Config: schema<Config>;
|
|
65
|
+
/** Verified remote helper coordinates; callers must await this before launch. */
|
|
66
|
+
readonly ready: Promise<Hello>;
|
|
67
|
+
constructor(ctx: Context, config: Config);
|
|
68
|
+
/** Hold plugin readiness until the remote identity and helper digest are verified. */
|
|
69
|
+
async [Service.init](): Promise<void>;
|
|
70
|
+
/** Verified remote Node executable for the paired PTC runtime. */
|
|
71
|
+
get nodeExecutable(): string;
|
|
72
|
+
/** Verified preinstalled PTC entry; unconfigured runtimes fail before program execution. */
|
|
73
|
+
get bootstrapPath(): string;
|
|
74
|
+
/**
|
|
75
|
+
* Send a helper operation; cancellation never replays an ambiguous mutation.
|
|
76
|
+
* @param method - the private helper operation.
|
|
77
|
+
* @param params - JSON request fields validated by the helper.
|
|
78
|
+
* @param result - response validation before returning provider-visible data.
|
|
79
|
+
* @param signal - cancellation, which does not undo completed remote effects.
|
|
80
|
+
* @param wait - allow a process observation to outlast the administrative deadline.
|
|
81
|
+
* @returns the validated remote result.
|
|
82
|
+
*/
|
|
83
|
+
async request<T>(method: string, params: unknown, result: z.ZodType<T>, signal?: AbortSignal, wait: boolean = false): Promise<T>;
|
|
84
|
+
/**
|
|
85
|
+
* Forward one authenticated stream through an independent SSH channel.
|
|
86
|
+
* @param endpoint - private coordinates issued by this connection's helper.
|
|
87
|
+
* @param signal - cancellation of allocation and the resulting socket.
|
|
88
|
+
* @returns a paused socket; attach a consumer before resuming it.
|
|
89
|
+
*/
|
|
90
|
+
async connectStream(endpoint: SshStreamEndpoint, signal?: AbortSignal): Promise<Socket>;
|
|
91
|
+
/** Tear down the helper's remote managed ranges before releasing the SSH master when reachable. */
|
|
92
|
+
dispose(): Promise<void>;
|
|
93
|
+
}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
<!-- BEGIN GENERATED cordis-surface (gen-cordis-catalog.ts) — do not edit between markers -->
|
|
97
|
+
|
|
98
|
+
<a id="cordis-surface"></a>
|
|
99
|
+
|
|
100
|
+
## Cordis API
|
|
101
|
+
|
|
102
|
+
Generated from source by `scripts/gen-cordis-catalog.ts` (verified fresh by `pnpm run verify-cordis-catalog` in doc-sync; regenerate with `pnpm run gen-cordis-catalog`) — the language sides differ only in locale-specific paired document paths. Signature blocks use a `ts cordis-catalog` fence and keep the original source JSDoc; dispatch modes are defined in the [primer](../cordis-primer.md#dispatch-modes), and the framework-inherited `ctx` API lives in [cordis-api/inherited.md](../cordis-api/inherited.md).
|
|
103
|
+
|
|
104
|
+
<a id="ctxssh--sshconnection"></a>
|
|
105
|
+
|
|
106
|
+
### `ctx.ssh` — `SshConnection`
|
|
107
|
+
|
|
108
|
+
One non-reconnecting SSH session; loss invalidates all active operations.
|
|
109
|
+
|
|
110
|
+
```ts cordis-catalog
|
|
111
|
+
/**
|
|
112
|
+
* Send a helper operation; cancellation never replays an ambiguous mutation.
|
|
113
|
+
* @param method - the private helper operation.
|
|
114
|
+
* @param params - JSON request fields validated by the helper.
|
|
115
|
+
* @param result - response validation before returning provider-visible data.
|
|
116
|
+
* @param signal - cancellation, which does not undo completed remote effects.
|
|
117
|
+
* @param wait - allow a process observation to outlast the administrative deadline.
|
|
118
|
+
* @returns the validated remote result.
|
|
119
|
+
*/
|
|
120
|
+
async request<T>(method: string, params: unknown, result: z.ZodType<T>, signal?: AbortSignal, wait: boolean = false): Promise<T>
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Forward one authenticated stream through an independent SSH channel.
|
|
124
|
+
* @param endpoint - private coordinates issued by this connection's helper.
|
|
125
|
+
* @param signal - cancellation of allocation and the resulting socket.
|
|
126
|
+
* @returns a paused socket; attach a consumer before resuming it.
|
|
127
|
+
*/
|
|
128
|
+
async connectStream(endpoint: SshStreamEndpoint, signal?: AbortSignal): Promise<Socket>
|
|
129
|
+
|
|
130
|
+
/** Tear down the helper's remote managed ranges before releasing the SSH master when reachable. */
|
|
131
|
+
dispose(): Promise<void>
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
Source: [`packages/ssh/ssh/src/index.ts`](../../packages/ssh/ssh/src/index.ts)
|
|
135
|
+
<!-- END GENERATED cordis-surface -->
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
# SSH
|
|
2
|
+
|
|
3
|
+
[English](ssh.md) | 中文
|
|
4
|
+
|
|
5
|
+
[SSH 提供方家族](../../packages/ssh/README.zh.md) 通过部署方持有的 OpenSSH 连接提供一个远端文件系统/进程环境。Harness、模型传输及 Session 存储留在主机。该家族实现既有文件系统、子进程及沙箱 API,不引入 SSH 专用模型工具。
|
|
6
|
+
|
|
7
|
+
## 执行坐标
|
|
8
|
+
|
|
9
|
+
文件系统身份、可执行文件查找、进程 cwd、沙箱工作区根目录及语言服务器文件 URL 都指向 SSH 主机。提供方在文件实际存在的位置规范化路径,保留文件系统对 `symlink/..` 的解释。策略解析器保留执行环境中的绝对路径写法,不尝试在 Harness 主机上解析远端路径。
|
|
10
|
+
|
|
11
|
+
`processPath()` 提供配套子进程提供方可用的路径。SSH 的 `processPathFromHostPath()` 仍不可用;安装远端产物不意味着任意主机路径可移植。因此 [`NodePtcRuntime`](../../packages/ptc-runtime/ptc-runtime-node/README.zh.md) 使用显式安装并经过摘要验证的远端引导程序。
|
|
12
|
+
|
|
13
|
+
## 传输与信任
|
|
14
|
+
|
|
15
|
+
管理 RPC 使用辅助进程的 SSH exec 流。普通 stdin、stdout、stderr、终端输出及可选 fd 7 控制流使用分别认证的转发 Unix 套接字。每条转发流拥有独立 SSH 通道窗口;暂停的程序输出不与控制或管理消息共用窗口。所有通道仍共享连接带宽及传输失败。
|
|
16
|
+
|
|
17
|
+
部署认证、已安装产物验证及逐流 TLS 认证属于 [`dsh-ssh`](../../packages/ssh/ssh/README.zh.md)。辅助进程使用远端机器上的可信本地提供方执行文件系统与进程请求。SSH 是传输方式;文件效果限制由所选远端沙箱提供方执行。
|
|
18
|
+
|
|
19
|
+
## 进程生命周期与取消
|
|
20
|
+
|
|
21
|
+
进程先预留,再连接流,且启动最多接受一次。`done` 报告直接结果,`waitForExit` 观察远端托管进程范围。终端操作保留共享异步 API。准备阶段取消、已启动进程终止及提供方释放都通过辅助进程释放各自资源。
|
|
22
|
+
|
|
23
|
+
管理截止时限约束单次 RPC 观察,不替代 Bash 或 PTC 运行时消费方选择的执行截止时限。远端等待可以持续挂起,同时其他请求继续推进。SSH 丢失会使待处理操作失效;辅助进程 EOF、信号及租期到期会启动远端清理。客户端如实报告未确认结果,绝不通过重连重放可能已执行的操作。
|
|
24
|
+
|
|
25
|
+
## 组合范围
|
|
26
|
+
|
|
27
|
+
headless 通过已挂载的文件系统提供方记录和检查 Session cwd。因此远端 FS、Bash、终端、LSP 及 PTC 消费方可以共享这些坐标。假定可访问主机文件系统的 Web 工作区视图需要单独集成;仅替换提供方并不会使这些视图支持远端。
|
|
28
|
+
|
|
29
|
+
替代方案与验证责任见[决策记录](../../.agents/notes/implemented/architecture/2026-09-11-posix-ssh-runtime.zh.md)。
|
|
30
|
+
|
|
31
|
+
## 连接 API
|
|
32
|
+
|
|
33
|
+
```ts type-equiv
|
|
34
|
+
/** Deployment-owned SSH identity and installed helper; no model argument selects these values. */
|
|
35
|
+
interface Config {
|
|
36
|
+
/** OpenSSH host alias, including its existing user, key and known-host configuration. */
|
|
37
|
+
host: string
|
|
38
|
+
/** Absolute remote Node executable. */
|
|
39
|
+
node: string
|
|
40
|
+
/** Absolute path to the installed, bundled helper entry. */
|
|
41
|
+
helper: string
|
|
42
|
+
/** SHA-256 of that bundled helper; mismatches refuse the connection. */
|
|
43
|
+
helperHash: string
|
|
44
|
+
/** Absolute remote default workspace. */
|
|
45
|
+
workspace: string
|
|
46
|
+
/** Optional preinstalled built PTC entry, paired with its expected digest. */
|
|
47
|
+
bootstrapPath?: string
|
|
48
|
+
/** SHA-256 of bootstrapPath; both fields must be supplied together. */
|
|
49
|
+
bootstrapHash?: string
|
|
50
|
+
/** Connection and administrative-request deadline, at most 2,147,483,647 milliseconds. */
|
|
51
|
+
requestTimeoutMs?: number
|
|
52
|
+
/** Maximum JSON payload bytes per helper request or response. */
|
|
53
|
+
maxFrameBytes?: number
|
|
54
|
+
/** Maximum ordinary requests; heartbeat and bounded resource cleanup have reserved capacity. */
|
|
55
|
+
maxPending?: number
|
|
56
|
+
/** Remote helper lease; loss of heartbeats starts remote managed cleanup. */
|
|
57
|
+
leaseMs?: number
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
```ts public-api
|
|
62
|
+
/** One non-reconnecting SSH session; loss invalidates all active operations. */
|
|
63
|
+
declare class SshConnection extends Service {
|
|
64
|
+
static Config: schema<Config>;
|
|
65
|
+
/** Verified remote helper coordinates; callers must await this before launch. */
|
|
66
|
+
readonly ready: Promise<Hello>;
|
|
67
|
+
constructor(ctx: Context, config: Config);
|
|
68
|
+
/** Hold plugin readiness until the remote identity and helper digest are verified. */
|
|
69
|
+
async [Service.init](): Promise<void>;
|
|
70
|
+
/** Verified remote Node executable for the paired PTC runtime. */
|
|
71
|
+
get nodeExecutable(): string;
|
|
72
|
+
/** Verified preinstalled PTC entry; unconfigured runtimes fail before program execution. */
|
|
73
|
+
get bootstrapPath(): string;
|
|
74
|
+
/**
|
|
75
|
+
* Send a helper operation; cancellation never replays an ambiguous mutation.
|
|
76
|
+
* @param method - the private helper operation.
|
|
77
|
+
* @param params - JSON request fields validated by the helper.
|
|
78
|
+
* @param result - response validation before returning provider-visible data.
|
|
79
|
+
* @param signal - cancellation, which does not undo completed remote effects.
|
|
80
|
+
* @param wait - allow a process observation to outlast the administrative deadline.
|
|
81
|
+
* @returns the validated remote result.
|
|
82
|
+
*/
|
|
83
|
+
async request<T>(method: string, params: unknown, result: z.ZodType<T>, signal?: AbortSignal, wait: boolean = false): Promise<T>;
|
|
84
|
+
/**
|
|
85
|
+
* Forward one authenticated stream through an independent SSH channel.
|
|
86
|
+
* @param endpoint - private coordinates issued by this connection's helper.
|
|
87
|
+
* @param signal - cancellation of allocation and the resulting socket.
|
|
88
|
+
* @returns a paused socket; attach a consumer before resuming it.
|
|
89
|
+
*/
|
|
90
|
+
async connectStream(endpoint: SshStreamEndpoint, signal?: AbortSignal): Promise<Socket>;
|
|
91
|
+
/** Tear down the helper's remote managed ranges before releasing the SSH master when reachable. */
|
|
92
|
+
dispose(): Promise<void>;
|
|
93
|
+
}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
<!-- BEGIN GENERATED cordis-surface (gen-cordis-catalog.ts) — do not edit between markers -->
|
|
97
|
+
|
|
98
|
+
<a id="cordis-surface"></a>
|
|
99
|
+
|
|
100
|
+
## Cordis API
|
|
101
|
+
|
|
102
|
+
Generated from source by `scripts/gen-cordis-catalog.ts` (verified fresh by `pnpm run verify-cordis-catalog` in doc-sync; regenerate with `pnpm run gen-cordis-catalog`) — the language sides differ only in locale-specific paired document paths. Signature blocks use a `ts cordis-catalog` fence and keep the original source JSDoc; dispatch modes are defined in the [primer](../cordis-primer.zh.md#dispatch-modes), and the framework-inherited `ctx` API lives in [cordis-api/inherited.md](../cordis-api/inherited.md).
|
|
103
|
+
|
|
104
|
+
<a id="ctxssh--sshconnection"></a>
|
|
105
|
+
|
|
106
|
+
### `ctx.ssh` — `SshConnection`
|
|
107
|
+
|
|
108
|
+
One non-reconnecting SSH session; loss invalidates all active operations.
|
|
109
|
+
|
|
110
|
+
```ts cordis-catalog
|
|
111
|
+
/**
|
|
112
|
+
* Send a helper operation; cancellation never replays an ambiguous mutation.
|
|
113
|
+
* @param method - the private helper operation.
|
|
114
|
+
* @param params - JSON request fields validated by the helper.
|
|
115
|
+
* @param result - response validation before returning provider-visible data.
|
|
116
|
+
* @param signal - cancellation, which does not undo completed remote effects.
|
|
117
|
+
* @param wait - allow a process observation to outlast the administrative deadline.
|
|
118
|
+
* @returns the validated remote result.
|
|
119
|
+
*/
|
|
120
|
+
async request<T>(method: string, params: unknown, result: z.ZodType<T>, signal?: AbortSignal, wait: boolean = false): Promise<T>
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Forward one authenticated stream through an independent SSH channel.
|
|
124
|
+
* @param endpoint - private coordinates issued by this connection's helper.
|
|
125
|
+
* @param signal - cancellation of allocation and the resulting socket.
|
|
126
|
+
* @returns a paused socket; attach a consumer before resuming it.
|
|
127
|
+
*/
|
|
128
|
+
async connectStream(endpoint: SshStreamEndpoint, signal?: AbortSignal): Promise<Socket>
|
|
129
|
+
|
|
130
|
+
/** Tear down the helper's remote managed ranges before releasing the SSH master when reachable. */
|
|
131
|
+
dispose(): Promise<void>
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
Source: [`packages/ssh/ssh/src/index.ts`](../../packages/ssh/ssh/src/index.ts)
|
|
135
|
+
<!-- END GENERATED cordis-surface -->
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
English | [中文](todo.zh.md)
|
|
4
4
|
|
|
5
|
-
The durable todo vocabulary owned by [`@deepseek-ai/dsh-tool-todo`](../../packages/todo/tool-todo/README.md). The model-facing tool replaces one agent session's whole list; the package also owns the event declaration
|
|
5
|
+
The durable todo vocabulary owned by [`@deepseek-ai/dsh-tool-todo`](../../packages/todo/tool-todo/README.md). The model-facing tool replaces one agent session's whole list; the package also owns the event declaration and replay projection. Tool behavior and configuration are on the [package README](../../packages/todo/tool-todo/README.md).
|
|
6
6
|
|
|
7
7
|
Source: [`packages/todo/tool-todo/src/types.ts`](../../packages/todo/tool-todo/src/types.ts)
|
|
8
8
|
|
|
@@ -27,6 +27,6 @@ interface TodoItem {
|
|
|
27
27
|
}
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
-
## Durable event
|
|
30
|
+
## Durable event
|
|
31
31
|
|
|
32
|
-
The package declaration-merges `todo/write: { todos: TodoItem[] }` into `SessionEventMap`. The event is log-only and carries the complete replacement list; the generated [persistence catalog](../persistence-catalog.md#todowrite--log-only) records its declaration site.
|
|
32
|
+
The package declaration-merges `todo/write: { todos: TodoItem[] }` into `SessionEventMap`. The event is log-only and carries the complete replacement list; the generated [persistence catalog](../persistence-catalog.md#todowrite--log-only) records its declaration site.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[English](todo.md) | 中文
|
|
4
4
|
|
|
5
|
-
本页记录 [`@deepseek-ai/dsh-tool-todo`](../../packages/todo/tool-todo/README.zh.md) 拥有的持久 todo 词汇。面向模型的工具会整体替换一个 agent
|
|
5
|
+
本页记录 [`@deepseek-ai/dsh-tool-todo`](../../packages/todo/tool-todo/README.zh.md) 拥有的持久 todo 词汇。面向模型的工具会整体替换一个 agent(智能体)会话的列表;该包还拥有事件声明和回放投影。工具行为与配置见[包 README](../../packages/todo/tool-todo/README.zh.md)。
|
|
6
6
|
|
|
7
7
|
源码:[`packages/todo/tool-todo/src/types.ts`](../../packages/todo/tool-todo/src/types.ts)
|
|
8
8
|
|
|
@@ -27,6 +27,6 @@ interface TodoItem {
|
|
|
27
27
|
}
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
-
##
|
|
30
|
+
## 持久事件
|
|
31
31
|
|
|
32
|
-
该包通过声明合并把 `todo/write: { todos: TodoItem[] }` 加入 `SessionEventMap`。此事件仅写入日志,并携带完整替换列表;生成的[持久化目录](../persistence-catalog.zh.md#todowrite--log-only)
|
|
32
|
+
该包通过声明合并把 `todo/write: { todos: TodoItem[] }` 加入 `SessionEventMap`。此事件仅写入日志,并携带完整替换列表;生成的[持久化目录](../persistence-catalog.zh.md#todowrite--log-only)会记录其声明位置。
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
# Voice input
|
|
2
|
+
|
|
3
|
+
English | [中文](voice-input.zh.md)
|
|
4
|
+
|
|
5
|
+
Experimental speech recognition has three roles: the [Service Definition](../../packages/experimental/speech-to-text/README.md) routes named providers, the [SenseVoice provider](../../packages/experimental/speech-to-text-sensevoice/README.md) owns local inference, and the [Remote consumer](../../packages/experimental/api-speech-to-text/README.md) serves the browser. The [optional bundle](../../packages/experimental/voice-input-bundle/README.md) composes them with the microphone UI.
|
|
6
|
+
|
|
7
|
+
## Provider selection
|
|
8
|
+
|
|
9
|
+
`SpeechProviderId` brands the registration identity. `SpeechProviderInfo` carries a display name, accepted `languages` hints and `host-local` or `cloud` processing location. `SpeechRequest` contains WAV bytes and optional provider/language selection; `resolve()` produces `SpeechSpec` with one captured provider instance. A missing provider or unsupported language fails; replacement or withdrawal invalidates resolved work. Audio never falls back to a different provider.
|
|
10
|
+
|
|
11
|
+
`SpeechProvider.transcribe()` accepts one complete `SpeechInput` and an `AbortSignal`. `Transcript` returns plain `text`, `audioSeconds` and `inferenceSeconds`. Providers honor cancellation and settle their work before deregistration completes. The local provider serializes calls, bounds its queue and manages its worker lifetime independently of Sessions.
|
|
12
|
+
|
|
13
|
+
## Browser and Host ownership
|
|
14
|
+
|
|
15
|
+
The browser owns microphone tracks and the unsent draft. `TranscriptionRequest` sends canonical base64 PCM16 WAV through the authenticated Remote. `SpeechCatalog` advertises available providers, the default selection and recording byte/duration limits. The API validates this process input before recognition.
|
|
16
|
+
|
|
17
|
+
The input facade captures a revision-bearing selection before recording. `InputActions.insertText()` inserts one undoable plain-text edit only while the selection revision is current and submission permits editing. A rejected insertion leaves the transcript available for explicit insertion. Switching Sessions or disposing the plugin invalidates late results. Recognition itself writes no Session event; ordinary user submission owns the final model-visible text.
|
|
18
|
+
|
|
19
|
+
## Preparation and settings
|
|
20
|
+
|
|
21
|
+
`SpeechProviderInfo.downloadSources` advertises preparation origins. `SpeechPreparationOptions.downloadSource` selects one for a task; omission preserves provider policy. SenseVoice validates the advertised choice, pins a manual source without fallback, and rejects source changes during active preparation. The UI keeps a choice for retries in the current card; it is not a persisted recognition preference.
|
|
22
|
+
|
|
23
|
+
The Host provider owns one preparation task across page and Session changes. The Client shares one `follow()` subscription across the composer, setup prompt and bundle details. Optional `SpeechSetupEstimate` metadata supplies provider-specific planning hints, separate from measured progress. `SpeechPreparationStepKind` identifies ordered resource operations; `SpeechPreparationStep` records each status and start time. The complete `SpeechPreparationState` retains these steps after cancellation or failure. The collapsed UI shows the current operation; expanding lists all steps, with byte progress or elapsed time only for the running step. Closing an observer never cancels preparation. Verified files survive retries and idle worker reclamation.
|
|
24
|
+
|
|
25
|
+
Failed preparation can include `SpeechDownloadFailure` with the asset, source origin, classified reason and optional diagnostic code or HTTP status. The Client localizes recovery advice; raw download causes remain on the Host.
|
|
26
|
+
|
|
27
|
+
The microphone occupies `conversation.input.activity`, between the model selector and Send. Clicking starts capture and expands the toolbar; Stop transcribes and inserts into the draft. The activity preserves the editor and submit action, owns local feedback, and releases expansion on unmount. Cancel, Escape or hiding the page discards capture. Waveform history displays measured microphone amplitude. Bundle details contain recognition preferences, preparation state and progress. Explicit enablement uses `plugins.bundle.activation` to guide users with missing models to setup; the list shows only the bundle description and switch.
|
|
28
|
+
|
|
29
|
+
## Design rationale
|
|
30
|
+
|
|
31
|
+
The [voice input decision](../../.agents/notes/implemented/architecture/2026-09-16-experimental-voice-input.md) explains transient audio, explicit provider selection and lazy local preparation.
|
|
32
|
+
|
|
33
|
+
<!-- BEGIN GENERATED cordis-surface (gen-cordis-catalog.ts) — do not edit between markers -->
|
|
34
|
+
|
|
35
|
+
<a id="cordis-surface"></a>
|
|
36
|
+
|
|
37
|
+
## Cordis API
|
|
38
|
+
|
|
39
|
+
Generated from source by `scripts/gen-cordis-catalog.ts` (verified fresh by `pnpm run verify-cordis-catalog` in doc-sync; regenerate with `pnpm run gen-cordis-catalog`) — the language sides differ only in locale-specific paired document paths. Signature blocks use a `ts cordis-catalog` fence and keep the original source JSDoc; dispatch modes are defined in the [primer](../cordis-primer.md#dispatch-modes), and the framework-inherited `ctx` API lives in [cordis-api/inherited.md](../cordis-api/inherited.md).
|
|
40
|
+
|
|
41
|
+
<a id="ctxspeechcontroller--speechcontroller"></a>
|
|
42
|
+
|
|
43
|
+
### `ctx.speechController` — `SpeechController`
|
|
44
|
+
|
|
45
|
+
Speech calls never activate or submit to an Agent.
|
|
46
|
+
|
|
47
|
+
```ts cordis-catalog
|
|
48
|
+
/**
|
|
49
|
+
* Read provider choices without preparing a recognizer.
|
|
50
|
+
* @returns available providers, resolved default, and recording limits.
|
|
51
|
+
*/
|
|
52
|
+
@Remote catalog(): SpeechCatalog
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Follow provider readiness independently of Session and preparation lifetimes.
|
|
56
|
+
* @param signal - Client observation lifetime.
|
|
57
|
+
* @returns initial and subsequent complete readiness snapshots.
|
|
58
|
+
*/
|
|
59
|
+
@Remote({ mode: 'stream' }) async *follow(signal: AbortSignal): AsyncIterable<SpeechCatalog>
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Persist the user's recognition preferences.
|
|
63
|
+
* @param patch - changed preference fields.
|
|
64
|
+
* @returns after preferences are saved.
|
|
65
|
+
*/
|
|
66
|
+
@Remote configure(patch: SpeechSelectionPatch): Promise<void>
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Start or join one Host-owned preparation task.
|
|
70
|
+
* @param providerId - selected recognizer.
|
|
71
|
+
* @param options - task-local source selection validated by the provider.
|
|
72
|
+
*/
|
|
73
|
+
@Remote prepare(providerId: SpeechProviderId, options?: SpeechPreparationOptions): void
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Explicitly cancel resource preparation.
|
|
77
|
+
* @param providerId - selected recognizer.
|
|
78
|
+
* @returns after the preparation task settles.
|
|
79
|
+
*/
|
|
80
|
+
@Remote cancelPreparation(providerId: SpeechProviderId): Promise<void>
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Validate and transcribe one recording through the explicit provider selection.
|
|
84
|
+
* @param request - canonical WAV encoded as base64, provider id and language hint.
|
|
85
|
+
* @param signal - Client cancellation or Remote contribution disposal.
|
|
86
|
+
* @returns final transcript without adding a Session event.
|
|
87
|
+
*/
|
|
88
|
+
@Remote async transcribe(request: TranscriptionRequest, signal: AbortSignal): Promise<Transcript>
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Source: [`packages/experimental/api-speech-to-text/src/index.ts`](../../packages/experimental/api-speech-to-text/src/index.ts)
|
|
92
|
+
|
|
93
|
+
<a id="ctxspeechtotext--speechtotext"></a>
|
|
94
|
+
|
|
95
|
+
### `ctx.speechToText` — `SpeechToText`
|
|
96
|
+
|
|
97
|
+
Registry shared by all transcription consumers in one Host composition.
|
|
98
|
+
|
|
99
|
+
```ts cordis-catalog
|
|
100
|
+
/**
|
|
101
|
+
* Register one recognizer; duplicate ids fail without replacing the original.
|
|
102
|
+
* @param provider - recognizer owned by the contributing fiber.
|
|
103
|
+
* @returns idempotent disposer which rejects admission, cancels, and joins accepted work.
|
|
104
|
+
*/
|
|
105
|
+
register(provider: SpeechProvider): () => Promise<void>
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Read the current recognizer roster.
|
|
109
|
+
* @returns available provider facts in registration order.
|
|
110
|
+
*/
|
|
111
|
+
listProviders(): readonly SpeechProviderInfo[]
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Observe complete readiness snapshots; a slow reader coalesces intermediate progress.
|
|
115
|
+
* @param caller - observer lifetime, independent of any preparation task.
|
|
116
|
+
* @returns an initial snapshot followed by the latest provider states.
|
|
117
|
+
*/
|
|
118
|
+
async *follow(caller: AbortSignal): AsyncIterable<SpeechSnapshot>
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Read provider readiness and current user preferences together.
|
|
122
|
+
* @returns one detached complete observation.
|
|
123
|
+
*/
|
|
124
|
+
snapshot(): SpeechSnapshot
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Persist changed selection fields into this plugin's profile entry; the resulting language must be accepted by the selected provider.
|
|
128
|
+
* @param patch - explicit provider or language changes.
|
|
129
|
+
* @returns after the profile write and the live update it applies.
|
|
130
|
+
*/
|
|
131
|
+
async configure(patch: SpeechSelectionPatch): Promise<void>
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Start or join provider-owned preparation.
|
|
135
|
+
* @param id - exact registered provider identity.
|
|
136
|
+
* @param options - task-local source selection validated by the provider.
|
|
137
|
+
*/
|
|
138
|
+
prepare(id: SpeechProviderId, options?: SpeechPreparationOptions): void
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Explicitly cancel provider preparation without tying it to a browser connection.
|
|
142
|
+
* @param id - exact registered provider identity.
|
|
143
|
+
* @returns after the preparation task settles.
|
|
144
|
+
*/
|
|
145
|
+
async cancelPreparation(id: SpeechProviderId): Promise<void>
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Apply composition defaults and capture the selected provider. Missing providers and unsupported languages fail explicitly.
|
|
149
|
+
* @param request - complete recording and optional selection.
|
|
150
|
+
* @returns provider-pinned input for transcribe().
|
|
151
|
+
*/
|
|
152
|
+
resolve(request: SpeechRequest): SpeechSpec
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Execute exactly the resolved provider; no fallback sends audio elsewhere.
|
|
156
|
+
* @param spec - resolved input; a withdrawn or replaced registration is rejected.
|
|
157
|
+
* @param signal - caller cancellation.
|
|
158
|
+
* @returns final transcript after provider settlement.
|
|
159
|
+
*/
|
|
160
|
+
async transcribe(spec: SpeechSpec, signal: AbortSignal): Promise<Transcript>
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
Source: [`packages/experimental/speech-to-text/src/index.ts`](../../packages/experimental/speech-to-text/src/index.ts)
|
|
164
|
+
<!-- END GENERATED cordis-surface -->
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
# 语音输入
|
|
2
|
+
|
|
3
|
+
[English](voice-input.md) | 中文
|
|
4
|
+
|
|
5
|
+
实验性语音识别包含三个角色:[服务定义](../../packages/experimental/speech-to-text/README.zh.md)路由具名 Provider,[SenseVoice Provider](../../packages/experimental/speech-to-text-sensevoice/README.zh.md)拥有本地推理,[Remote 消费者](../../packages/experimental/api-speech-to-text/README.zh.md)服务浏览器。[可选 Bundle](../../packages/experimental/voice-input-bundle/README.zh.md)将它们与麦克风 UI 组合。
|
|
6
|
+
|
|
7
|
+
## Provider 选择
|
|
8
|
+
|
|
9
|
+
`SpeechProviderId` 为注册标识添加类型品牌。`SpeechProviderInfo` 携带显示名称、支持的 `languages` 语言提示及 `host-local` 或 `cloud` 处理位置。`SpeechRequest` 包含 WAV 字节和可选的 Provider、语言选择;`resolve()` 生成捕获一个 Provider 实例的 `SpeechSpec`。缺失的 Provider 或不支持的语言会报错;替换或撤销会使已解析的任务失效。音频不会回退到其他 Provider。
|
|
10
|
+
|
|
11
|
+
`SpeechProvider.transcribe()` 接收完整的 `SpeechInput` 与 `AbortSignal`。`Transcript` 返回纯文本 `text`、`audioSeconds` 和 `inferenceSeconds`。Provider 响应取消,并在注销完成前结束其任务。本地 Provider 串行执行调用、限制队列,并独立于 Session 管理工作进程生命周期。
|
|
12
|
+
|
|
13
|
+
## 浏览器与 Host 所有权
|
|
14
|
+
|
|
15
|
+
浏览器拥有麦克风轨道与未发送的草稿。`TranscriptionRequest` 通过带认证的 Remote 发送规范 base64 PCM16 WAV。`SpeechCatalog` 公布可用 Provider、默认选择及录音字节和时长限制。API 在识别前校验这些进程输入。
|
|
16
|
+
|
|
17
|
+
输入门面在录音前捕获带版本的选区。`InputActions.insertText()` 仅在选区版本仍有效且提交状态允许编辑时,插入一次可撤销的纯文本编辑。插入被拒绝时,转写文字保留以供显式插入。切换 Session 或释放插件使迟到结果失效。识别本身不写入 Session 事件;普通用户提交拥有最终的模型可见文字。
|
|
18
|
+
|
|
19
|
+
## 准备与设置
|
|
20
|
+
|
|
21
|
+
`SpeechProviderInfo.downloadSources` 公布准备阶段的源。`SpeechPreparationOptions.downloadSource` 为单次任务选择一个源;省略时保留提供方策略。SenseVoice 校验公布的选项,固定使用手动指定的源而不回退,并拒绝在准备期间改源。UI 为当前卡片中的重试保留选择,但不会将其保存为识别偏好。
|
|
22
|
+
|
|
23
|
+
Host Provider 在页面和 Session 变化期间拥有同一个准备任务。Client 在输入框、安装引导弹窗、Bundle 详情之间共享一份 `follow()` 订阅。可选 `SpeechSetupEstimate` 元数据提供各 Provider 的资源预期,与实测进度分开。`SpeechPreparationStepKind` 标识有序资源操作;`SpeechPreparationStep` 记录各步骤状态与开始时间。完整 `SpeechPreparationState` 在取消或失败后保留这些步骤。折叠 UI 显示当前操作,展开后列出所有步骤,仅进行中步骤显示字节进度或等待时间。关闭观察者不会取消准备。已校验文件在重试及空闲进程回收后继续复用。
|
|
24
|
+
|
|
25
|
+
准备失败时可包含 `SpeechDownloadFailure`,提供文件、下载源、原因分类以及可选错误码或 HTTP 状态。Client 将恢复建议本地化;原始下载错误留在 Host。
|
|
26
|
+
|
|
27
|
+
麦克风占用模型选择器与发送按钮之间的 `conversation.input.activity`。点击开始录音并展开工具栏;停止后转写并插入草稿。活动栏保留编辑器与提交按钮,拥有局部反馈,并在卸载时释放展开状态。取消、Escape 或隐藏页面会丢弃录音。波形历史展示实测麦克风音量。Bundle 详情包含识别偏好、准备状态和进度。显式启用时通过 `plugins.bundle.activation` 引导缺少模型的用户前往安装;列表只显示 Bundle 描述和开关。
|
|
28
|
+
|
|
29
|
+
## 设计依据
|
|
30
|
+
|
|
31
|
+
[语音输入决策](../../.agents/notes/implemented/architecture/2026-09-16-experimental-voice-input.zh.md)解释临时音频、显式 Provider 选择和延迟准备本地运行时。
|
|
32
|
+
|
|
33
|
+
<!-- BEGIN GENERATED cordis-surface (gen-cordis-catalog.ts) — do not edit between markers -->
|
|
34
|
+
|
|
35
|
+
<a id="cordis-surface"></a>
|
|
36
|
+
|
|
37
|
+
## Cordis API
|
|
38
|
+
|
|
39
|
+
Generated from source by `scripts/gen-cordis-catalog.ts` (verified fresh by `pnpm run verify-cordis-catalog` in doc-sync; regenerate with `pnpm run gen-cordis-catalog`) — the language sides differ only in locale-specific paired document paths. Signature blocks use a `ts cordis-catalog` fence and keep the original source JSDoc; dispatch modes are defined in the [primer](../cordis-primer.zh.md#dispatch-modes), and the framework-inherited `ctx` API lives in [cordis-api/inherited.md](../cordis-api/inherited.md).
|
|
40
|
+
|
|
41
|
+
<a id="ctxspeechcontroller--speechcontroller"></a>
|
|
42
|
+
|
|
43
|
+
### `ctx.speechController` — `SpeechController`
|
|
44
|
+
|
|
45
|
+
Speech calls never activate or submit to an Agent.
|
|
46
|
+
|
|
47
|
+
```ts cordis-catalog
|
|
48
|
+
/**
|
|
49
|
+
* Read provider choices without preparing a recognizer.
|
|
50
|
+
* @returns available providers, resolved default, and recording limits.
|
|
51
|
+
*/
|
|
52
|
+
@Remote catalog(): SpeechCatalog
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Follow provider readiness independently of Session and preparation lifetimes.
|
|
56
|
+
* @param signal - Client observation lifetime.
|
|
57
|
+
* @returns initial and subsequent complete readiness snapshots.
|
|
58
|
+
*/
|
|
59
|
+
@Remote({ mode: 'stream' }) async *follow(signal: AbortSignal): AsyncIterable<SpeechCatalog>
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Persist the user's recognition preferences.
|
|
63
|
+
* @param patch - changed preference fields.
|
|
64
|
+
* @returns after preferences are saved.
|
|
65
|
+
*/
|
|
66
|
+
@Remote configure(patch: SpeechSelectionPatch): Promise<void>
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Start or join one Host-owned preparation task.
|
|
70
|
+
* @param providerId - selected recognizer.
|
|
71
|
+
* @param options - task-local source selection validated by the provider.
|
|
72
|
+
*/
|
|
73
|
+
@Remote prepare(providerId: SpeechProviderId, options?: SpeechPreparationOptions): void
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Explicitly cancel resource preparation.
|
|
77
|
+
* @param providerId - selected recognizer.
|
|
78
|
+
* @returns after the preparation task settles.
|
|
79
|
+
*/
|
|
80
|
+
@Remote cancelPreparation(providerId: SpeechProviderId): Promise<void>
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Validate and transcribe one recording through the explicit provider selection.
|
|
84
|
+
* @param request - canonical WAV encoded as base64, provider id and language hint.
|
|
85
|
+
* @param signal - Client cancellation or Remote contribution disposal.
|
|
86
|
+
* @returns final transcript without adding a Session event.
|
|
87
|
+
*/
|
|
88
|
+
@Remote async transcribe(request: TranscriptionRequest, signal: AbortSignal): Promise<Transcript>
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Source: [`packages/experimental/api-speech-to-text/src/index.ts`](../../packages/experimental/api-speech-to-text/src/index.ts)
|
|
92
|
+
|
|
93
|
+
<a id="ctxspeechtotext--speechtotext"></a>
|
|
94
|
+
|
|
95
|
+
### `ctx.speechToText` — `SpeechToText`
|
|
96
|
+
|
|
97
|
+
Registry shared by all transcription consumers in one Host composition.
|
|
98
|
+
|
|
99
|
+
```ts cordis-catalog
|
|
100
|
+
/**
|
|
101
|
+
* Register one recognizer; duplicate ids fail without replacing the original.
|
|
102
|
+
* @param provider - recognizer owned by the contributing fiber.
|
|
103
|
+
* @returns idempotent disposer which rejects admission, cancels, and joins accepted work.
|
|
104
|
+
*/
|
|
105
|
+
register(provider: SpeechProvider): () => Promise<void>
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Read the current recognizer roster.
|
|
109
|
+
* @returns available provider facts in registration order.
|
|
110
|
+
*/
|
|
111
|
+
listProviders(): readonly SpeechProviderInfo[]
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Observe complete readiness snapshots; a slow reader coalesces intermediate progress.
|
|
115
|
+
* @param caller - observer lifetime, independent of any preparation task.
|
|
116
|
+
* @returns an initial snapshot followed by the latest provider states.
|
|
117
|
+
*/
|
|
118
|
+
async *follow(caller: AbortSignal): AsyncIterable<SpeechSnapshot>
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Read provider readiness and current user preferences together.
|
|
122
|
+
* @returns one detached complete observation.
|
|
123
|
+
*/
|
|
124
|
+
snapshot(): SpeechSnapshot
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Persist changed selection fields into this plugin's profile entry; the resulting language must be accepted by the selected provider.
|
|
128
|
+
* @param patch - explicit provider or language changes.
|
|
129
|
+
* @returns after the profile write and the live update it applies.
|
|
130
|
+
*/
|
|
131
|
+
async configure(patch: SpeechSelectionPatch): Promise<void>
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Start or join provider-owned preparation.
|
|
135
|
+
* @param id - exact registered provider identity.
|
|
136
|
+
* @param options - task-local source selection validated by the provider.
|
|
137
|
+
*/
|
|
138
|
+
prepare(id: SpeechProviderId, options?: SpeechPreparationOptions): void
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Explicitly cancel provider preparation without tying it to a browser connection.
|
|
142
|
+
* @param id - exact registered provider identity.
|
|
143
|
+
* @returns after the preparation task settles.
|
|
144
|
+
*/
|
|
145
|
+
async cancelPreparation(id: SpeechProviderId): Promise<void>
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Apply composition defaults and capture the selected provider. Missing providers and unsupported languages fail explicitly.
|
|
149
|
+
* @param request - complete recording and optional selection.
|
|
150
|
+
* @returns provider-pinned input for transcribe().
|
|
151
|
+
*/
|
|
152
|
+
resolve(request: SpeechRequest): SpeechSpec
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Execute exactly the resolved provider; no fallback sends audio elsewhere.
|
|
156
|
+
* @param spec - resolved input; a withdrawn or replaced registration is rejected.
|
|
157
|
+
* @param signal - caller cancellation.
|
|
158
|
+
* @returns final transcript after provider settlement.
|
|
159
|
+
*/
|
|
160
|
+
async transcribe(spec: SpeechSpec, signal: AbortSignal): Promise<Transcript>
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
Source: [`packages/experimental/speech-to-text/src/index.ts`](../../packages/experimental/speech-to-text/src/index.ts)
|
|
164
|
+
<!-- END GENERATED cordis-surface -->
|