dsh-plugin-guide 0.3.21 → 0.3.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README-es.md +15 -12
- package/README-hi.md +15 -12
- package/README-pt.md +15 -12
- package/README-zh.md +15 -12
- package/README.md +290 -280
- package/SKILL.md +36 -19
- package/dist/dsh-plugin-dev.js +113 -9
- package/guide/choosing-a-plugin.md +412 -0
- package/guide/choosing-a-plugin.zh-CN.md +414 -0
- package/guide/links.md +20 -2
- package/guide/migration-0.2.md +219 -0
- package/guide/plugin-dev-guide.md +99 -24
- package/guide/quick-reference.es.md +14 -8
- package/guide/quick-reference.hi.md +15 -9
- package/guide/quick-reference.md +18 -10
- package/guide/quick-reference.pt.md +15 -9
- package/guide/quick-reference.zh-CN.md +19 -11
- package/guide/release-engineering.md +2 -2
- package/guide/release-engineering.zh-CN.md +2 -2
- package/guide/unfixed-issues.md +117 -82
- package/guide/when-to-retire-a-plugin.md +127 -0
- package/guide/when-to-retire-a-plugin.zh-CN.md +127 -0
- package/icon.svg +5 -0
- package/locale/en.json +6 -0
- package/locale/zh.json +6 -0
- package/package.json +8 -4
- package/references/official-docs/AGENTS.md +8 -5
- package/references/official-docs/CONTRIBUTING.i18n.yaml +6 -5
- package/references/official-docs/README.i18n.yaml +33 -5
- package/references/official-docs/README.zh.md +3 -3
- package/references/official-docs/SNAPSHOT.md +3 -3
- package/references/official-docs/THIRD_PARTY_NOTICES.md +34 -6
- package/references/official-docs/docs/AGENTS.md +4 -4
- package/references/official-docs/docs/agent-lifecycle.i18n.yaml +9 -5
- package/references/official-docs/docs/api-gateway.i18n.yaml +27 -5
- package/references/official-docs/docs/api-gateway.md +10 -9
- package/references/official-docs/docs/api-gateway.zh.md +10 -9
- package/references/official-docs/docs/architecture.i18n.yaml +36 -5
- package/references/official-docs/docs/architecture.md +10 -8
- package/references/official-docs/docs/architecture.zh.md +10 -8
- package/references/official-docs/docs/capability-seams.i18n.yaml +9 -5
- package/references/official-docs/docs/capability-seams.md +76 -32
- package/references/official-docs/docs/capability-seams.zh.md +76 -32
- package/references/official-docs/docs/config-catalog.i18n.yaml +18 -5
- package/references/official-docs/docs/config-catalog.md +1360 -765
- package/references/official-docs/docs/config-catalog.zh.md +1363 -767
- package/references/official-docs/docs/cookbook/adding-a-package.i18n.yaml +27 -5
- package/references/official-docs/docs/cookbook/adding-a-package.md +56 -3
- package/references/official-docs/docs/cookbook/adding-a-package.zh.md +54 -3
- package/references/official-docs/docs/cookbook/adding-a-remote-api.i18n.yaml +24 -5
- package/references/official-docs/docs/cookbook/adding-a-remote-api.md +2 -2
- package/references/official-docs/docs/cookbook/adding-a-remote-api.zh.md +2 -2
- package/references/official-docs/docs/cookbook/adding-a-session-format-version.i18n.yaml +39 -5
- package/references/official-docs/docs/cookbook/adding-a-session-format-version.md +46 -6
- package/references/official-docs/docs/cookbook/adding-a-session-format-version.zh.md +46 -6
- package/references/official-docs/docs/cookbook/adding-a-settings-card.i18n.yaml +21 -5
- package/references/official-docs/docs/cookbook/adding-a-settings-card.md +34 -64
- package/references/official-docs/docs/cookbook/adding-a-settings-card.zh.md +34 -64
- package/references/official-docs/docs/cookbook/adding-a-tool.i18n.yaml +30 -5
- package/references/official-docs/docs/cookbook/adding-a-tool.md +2 -2
- package/references/official-docs/docs/cookbook/adding-a-tool.zh.md +2 -2
- package/references/official-docs/docs/cookbook/adding-a-vendored-package.i18n.yaml +18 -5
- package/references/official-docs/docs/cookbook/adding-an-llm-adapter.i18n.yaml +18 -5
- package/references/official-docs/docs/cookbook/extension-cookbook.i18n.yaml +24 -5
- package/references/official-docs/docs/cookbook/extension-cookbook.md +3 -3
- package/references/official-docs/docs/cookbook/extension-cookbook.zh.md +3 -3
- package/references/official-docs/docs/cookbook/maintaining-dsh-code-review.i18n.yaml +21 -5
- package/references/official-docs/docs/cookbook/responding-to-pr-review-on-a-stack.i18n.yaml +15 -5
- package/references/official-docs/docs/cookbook/reviewing-persistence-type-changes.i18n.yaml +30 -5
- package/references/official-docs/docs/cookbook/reviewing-persistence-type-changes.md +13 -1
- package/references/official-docs/docs/cookbook/reviewing-persistence-type-changes.zh.md +13 -1
- package/references/official-docs/docs/cordis-api/context.i18n.yaml +72 -5
- package/references/official-docs/docs/cordis-api/events.i18n.yaml +36 -5
- package/references/official-docs/docs/cordis-api/fiber.i18n.yaml +75 -5
- package/references/official-docs/docs/cordis-api/inherited.md +15 -13
- package/references/official-docs/docs/cordis-api/registry.i18n.yaml +21 -5
- package/references/official-docs/docs/cordis-api/service.i18n.yaml +36 -5
- package/references/official-docs/docs/cordis-primer.i18n.yaml +21 -5
- package/references/official-docs/docs/cordis-tutorial/01-first-plugin.i18n.yaml +21 -5
- package/references/official-docs/docs/cordis-tutorial/02-lifecycle-and-effects.i18n.yaml +15 -5
- package/references/official-docs/docs/cordis-tutorial/03-services.i18n.yaml +21 -5
- package/references/official-docs/docs/cordis-tutorial/04-events.i18n.yaml +15 -5
- package/references/official-docs/docs/cordis-tutorial/05-config.i18n.yaml +18 -5
- package/references/official-docs/docs/cordis-tutorial/05-config.md +27 -0
- package/references/official-docs/docs/cordis-tutorial/05-config.zh.md +27 -0
- package/references/official-docs/docs/cordis-tutorial/06-composition-and-hmr.i18n.yaml +15 -5
- package/references/official-docs/docs/cordis-tutorial/07-into-the-harness.i18n.yaml +18 -5
- package/references/official-docs/docs/cordis-tutorial/index.i18n.yaml +15 -5
- package/references/official-docs/docs/deepseek-llm-api-wire-extensions.i18n.yaml +33 -5
- package/references/official-docs/docs/deepseek-llm-api-wire-extensions.md +7 -7
- package/references/official-docs/docs/deepseek-llm-api-wire-extensions.zh.md +7 -7
- package/references/official-docs/docs/defensive-patterns.i18n.yaml +27 -5
- package/references/official-docs/docs/dependency-catalog.json +2 -2
- package/references/official-docs/docs/development.i18n.yaml +48 -5
- package/references/official-docs/docs/development.md +27 -10
- package/references/official-docs/docs/development.zh.md +27 -10
- package/references/official-docs/docs/event-producer-consumer.i18n.yaml +12 -5
- package/references/official-docs/docs/event-producer-consumer.md +78 -66
- package/references/official-docs/docs/event-producer-consumer.zh.md +78 -66
- package/references/official-docs/docs/glossary.i18n.yaml +24 -5
- package/references/official-docs/docs/graph-atlas.i18n.yaml +9 -5
- package/references/official-docs/docs/i18n/README.i18n.yaml +18 -5
- package/references/official-docs/docs/i18n/README.md +12 -8
- package/references/official-docs/docs/i18n/README.zh.md +12 -8
- package/references/official-docs/docs/i18n/terminology.md +4 -4
- package/references/official-docs/docs/i18n/translation-prompt.md +2 -2
- package/references/official-docs/docs/i18n/translation-rules.i18n.yaml +27 -5
- package/references/official-docs/docs/module-graph.i18n.yaml +9 -5
- package/references/official-docs/docs/module-graph.md +348 -245
- package/references/official-docs/docs/module-graph.zh.md +348 -245
- package/references/official-docs/docs/persistence-catalog.i18n.yaml +2064 -5
- package/references/official-docs/docs/persistence-catalog.md +5275 -3205
- package/references/official-docs/docs/persistence-catalog.zh.md +5275 -3205
- package/references/official-docs/docs/persistence-changes/2026-09-11-initial.i18n.yaml +27 -5
- package/references/official-docs/docs/persistence-changes/2026-09-12-auto-review-error-metadata.i18n.yaml +27 -5
- package/references/official-docs/docs/persistence-changes/2026-09-14-image-offload.i18n.yaml +27 -5
- package/references/official-docs/docs/persistence-changes/2026-09-14-workspace-changes-event.i18n.yaml +27 -5
- package/references/official-docs/docs/persistence-changes/2026-09-16-session-format-v4.i18n.yaml +28 -0
- package/references/official-docs/docs/persistence-changes/2026-09-16-session-format-v4.md +120 -0
- package/references/official-docs/docs/persistence-changes/2026-09-16-session-format-v4.schema.json +16212 -0
- package/references/official-docs/docs/persistence-changes/2026-09-16-session-format-v4.zh.md +120 -0
- package/references/official-docs/docs/persistence-changes/2026-09-18-schedule-optional-title.i18n.yaml +28 -0
- package/references/official-docs/docs/persistence-changes/2026-09-18-schedule-optional-title.md +48 -0
- package/references/official-docs/docs/persistence-changes/2026-09-18-schedule-optional-title.schema.json +302 -0
- package/references/official-docs/docs/persistence-changes/2026-09-18-schedule-optional-title.zh.md +48 -0
- package/references/official-docs/docs/persistence-changes/2026-09-20-unknown-child-catalog.i18n.yaml +28 -0
- package/references/official-docs/docs/persistence-changes/2026-09-20-unknown-child-catalog.md +48 -0
- package/references/official-docs/docs/persistence-changes/2026-09-20-unknown-child-catalog.schema.json +250 -0
- package/references/official-docs/docs/persistence-changes/2026-09-20-unknown-child-catalog.zh.md +48 -0
- package/references/official-docs/docs/persistence-changes/2026-09-21-user-question-reply.i18n.yaml +28 -0
- package/references/official-docs/docs/persistence-changes/2026-09-21-user-question-reply.md +60 -0
- package/references/official-docs/docs/persistence-changes/2026-09-21-user-question-reply.schema.json +11405 -0
- package/references/official-docs/docs/persistence-changes/2026-09-21-user-question-reply.zh.md +60 -0
- package/references/official-docs/docs/persistence-changes/README.i18n.yaml +27 -5
- package/references/official-docs/docs/persistence-changes/README.md +17 -3
- package/references/official-docs/docs/persistence-changes/README.zh.md +17 -3
- package/references/official-docs/docs/persistence-changes/finalized/v4.json +379 -0
- package/references/official-docs/docs/persistence-changes/historical-formats/README.i18n.yaml +27 -5
- package/references/official-docs/docs/persistence-changes/historical-formats/README.md +3 -2
- package/references/official-docs/docs/persistence-changes/historical-formats/README.zh.md +3 -2
- package/references/official-docs/docs/persistence-changes/historical-formats/v0.i18n.yaml +1284 -5
- package/references/official-docs/docs/persistence-changes/historical-formats/v1.i18n.yaml +1284 -5
- package/references/official-docs/docs/persistence-changes/historical-formats/v2.i18n.yaml +1344 -5
- package/references/official-docs/docs/persistence-changes/historical-formats/v3.i18n.yaml +1441 -0
- package/references/official-docs/docs/persistence-changes/historical-formats/v3.md +5634 -0
- package/references/official-docs/docs/persistence-changes/historical-formats/v3.schema.json +61307 -0
- package/references/official-docs/docs/persistence-changes/historical-formats/v3.zh.md +5634 -0
- package/references/official-docs/docs/persistence-changes/releases/README.i18n.yaml +30 -5
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.1.i18n.yaml +30 -5
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.2.i18n.yaml +30 -5
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.3.i18n.yaml +30 -5
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.4.i18n.yaml +30 -5
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.5.i18n.yaml +30 -5
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.1.i18n.yaml +30 -5
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.2.i18n.yaml +30 -5
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.3.i18n.yaml +30 -5
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.5.i18n.yaml +30 -5
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.6.i18n.yaml +30 -5
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.7.i18n.yaml +30 -5
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.8.i18n.yaml +30 -5
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.1.i18n.yaml +30 -5
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.2.i18n.yaml +30 -5
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.1.i18n.yaml +30 -5
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.2.i18n.yaml +30 -5
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.3.i18n.yaml +30 -5
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.4.i18n.yaml +30 -5
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.5.i18n.yaml +30 -5
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-rc.1.i18n.yaml +30 -5
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.1.i18n.yaml +30 -5
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.2.i18n.yaml +30 -5
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.1.i18n.yaml +30 -5
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.2.i18n.yaml +30 -5
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.2.schema.json +3 -3
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-rc.1.i18n.yaml +30 -5
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-rc.2.i18n.yaml +30 -5
- package/references/official-docs/docs/persistence-schema.json +12692 -48753
- package/references/official-docs/docs/postmortem/0001-acp-default-export-drops-inject.i18n.yaml +33 -5
- package/references/official-docs/docs/postmortem/0002-js-expression-disabled-filesystem-tools.i18n.yaml +27 -5
- package/references/official-docs/docs/postmortem/0003-web-agent-gui-feedback-loop.i18n.yaml +27 -5
- package/references/official-docs/docs/postmortem/0004-landlock-partial-notice-misclassified-child-failures.i18n.yaml +27 -5
- package/references/official-docs/docs/postmortem/README.i18n.yaml +6 -5
- package/references/official-docs/docs/rescope.i18n.yaml +18 -5
- package/references/official-docs/docs/rescope.md +1 -1
- package/references/official-docs/docs/rescope.zh.md +1 -1
- package/references/official-docs/docs/session-format-status.i18n.yaml +27 -5
- package/references/official-docs/docs/session-format-status.md +17 -3
- package/references/official-docs/docs/session-format-status.zh.md +17 -3
- package/references/official-docs/docs/subsystems/README.i18n.yaml +6 -5
- package/references/official-docs/docs/subsystems/README.md +6 -3
- package/references/official-docs/docs/subsystems/README.zh.md +6 -3
- package/references/official-docs/docs/subsystems/agent-team.i18n.yaml +21 -5
- package/references/official-docs/docs/subsystems/agent-team.md +52 -28
- package/references/official-docs/docs/subsystems/agent-team.zh.md +52 -28
- package/references/official-docs/docs/subsystems/approval.i18n.yaml +18 -5
- package/references/official-docs/docs/subsystems/approval.md +1 -1
- package/references/official-docs/docs/subsystems/approval.zh.md +1 -1
- package/references/official-docs/docs/subsystems/attachment.i18n.yaml +12 -5
- package/references/official-docs/docs/subsystems/attachment.md +2 -2
- package/references/official-docs/docs/subsystems/attachment.zh.md +2 -2
- package/references/official-docs/docs/subsystems/boot.i18n.yaml +9 -5
- package/references/official-docs/docs/subsystems/boot.md +117 -17
- package/references/official-docs/docs/subsystems/boot.zh.md +117 -17
- package/references/official-docs/docs/subsystems/browser-use.i18n.yaml +18 -5
- package/references/official-docs/docs/subsystems/claude-code-mods.i18n.yaml +28 -0
- package/references/official-docs/docs/subsystems/claude-code-mods.md +146 -0
- package/references/official-docs/docs/subsystems/claude-code-mods.zh.md +146 -0
- package/references/official-docs/docs/subsystems/client-modules.i18n.yaml +18 -5
- package/references/official-docs/docs/subsystems/client-modules.md +13 -7
- package/references/official-docs/docs/subsystems/client-modules.zh.md +13 -7
- package/references/official-docs/docs/subsystems/client-resources.i18n.yaml +21 -5
- package/references/official-docs/docs/subsystems/commands.i18n.yaml +18 -5
- package/references/official-docs/docs/subsystems/commands.md +1 -1
- package/references/official-docs/docs/subsystems/commands.zh.md +1 -1
- package/references/official-docs/docs/subsystems/compaction.i18n.yaml +21 -5
- package/references/official-docs/docs/subsystems/compaction.md +2 -2
- package/references/official-docs/docs/subsystems/compaction.zh.md +2 -2
- package/references/official-docs/docs/subsystems/computer-use.i18n.yaml +15 -5
- package/references/official-docs/docs/subsystems/conversation.i18n.yaml +30 -5
- package/references/official-docs/docs/subsystems/conversation.md +35 -6
- package/references/official-docs/docs/subsystems/conversation.zh.md +34 -5
- package/references/official-docs/docs/subsystems/core.i18n.yaml +36 -5
- package/references/official-docs/docs/subsystems/core.md +70 -214
- package/references/official-docs/docs/subsystems/core.zh.md +70 -214
- package/references/official-docs/docs/subsystems/credentials.i18n.yaml +24 -5
- package/references/official-docs/docs/subsystems/credentials.md +168 -5
- package/references/official-docs/docs/subsystems/credentials.zh.md +168 -5
- package/references/official-docs/docs/subsystems/deliverables.i18n.yaml +27 -5
- package/references/official-docs/docs/subsystems/extensions.i18n.yaml +6 -5
- package/references/official-docs/docs/subsystems/extensions.md +6 -4
- package/references/official-docs/docs/subsystems/extensions.zh.md +6 -4
- package/references/official-docs/docs/subsystems/feedback.i18n.yaml +27 -5
- package/references/official-docs/docs/subsystems/filesystem.i18n.yaml +33 -5
- package/references/official-docs/docs/subsystems/filesystem.md +10 -0
- package/references/official-docs/docs/subsystems/filesystem.zh.md +10 -0
- package/references/official-docs/docs/subsystems/goal.i18n.yaml +18 -5
- package/references/official-docs/docs/subsystems/goal.md +1 -1
- package/references/official-docs/docs/subsystems/goal.zh.md +1 -1
- package/references/official-docs/docs/subsystems/jobs.i18n.yaml +24 -5
- package/references/official-docs/docs/subsystems/jobs.md +335 -126
- package/references/official-docs/docs/subsystems/jobs.zh.md +335 -126
- package/references/official-docs/docs/subsystems/llm-streaming.i18n.yaml +48 -5
- package/references/official-docs/docs/subsystems/llm-streaming.md +60 -31
- package/references/official-docs/docs/subsystems/llm-streaming.zh.md +60 -31
- package/references/official-docs/docs/subsystems/lsp.i18n.yaml +18 -5
- package/references/official-docs/docs/subsystems/mcp.i18n.yaml +33 -5
- package/references/official-docs/docs/subsystems/mcp.md +2 -2
- package/references/official-docs/docs/subsystems/mcp.zh.md +2 -2
- package/references/official-docs/docs/subsystems/office-to-pdf.i18n.yaml +18 -5
- package/references/official-docs/docs/subsystems/office-to-pdf.md +4 -4
- package/references/official-docs/docs/subsystems/office-to-pdf.zh.md +4 -4
- package/references/official-docs/docs/subsystems/otel.i18n.yaml +7 -0
- package/references/official-docs/docs/subsystems/otel.md +44 -0
- package/references/official-docs/docs/subsystems/otel.zh.md +44 -0
- package/references/official-docs/docs/subsystems/permission-presets.i18n.yaml +18 -5
- package/references/official-docs/docs/subsystems/permission-presets.md +7 -6
- package/references/official-docs/docs/subsystems/permission-presets.zh.md +7 -6
- package/references/official-docs/docs/subsystems/persistence.i18n.yaml +36 -5
- package/references/official-docs/docs/subsystems/persistence.md +3 -3
- package/references/official-docs/docs/subsystems/persistence.zh.md +3 -3
- package/references/official-docs/docs/subsystems/plan.i18n.yaml +21 -5
- package/references/official-docs/docs/subsystems/plan.md +1 -1
- package/references/official-docs/docs/subsystems/plan.zh.md +1 -1
- package/references/official-docs/docs/subsystems/product-telemetry.i18n.yaml +10 -0
- package/references/official-docs/docs/subsystems/product-telemetry.md +79 -0
- package/references/official-docs/docs/subsystems/product-telemetry.zh.md +79 -0
- package/references/official-docs/docs/subsystems/ptc-runtime.i18n.yaml +18 -5
- package/references/official-docs/docs/subsystems/sandbox.i18n.yaml +18 -5
- package/references/official-docs/docs/subsystems/sandbox.md +1 -1
- package/references/official-docs/docs/subsystems/sandbox.zh.md +1 -1
- package/references/official-docs/docs/subsystems/schedule.i18n.yaml +39 -5
- package/references/official-docs/docs/subsystems/schedule.md +391 -33
- package/references/official-docs/docs/subsystems/schedule.zh.md +391 -33
- package/references/official-docs/docs/subsystems/scope.i18n.yaml +15 -5
- package/references/official-docs/docs/subsystems/scope.md +1 -1
- package/references/official-docs/docs/subsystems/scope.zh.md +1 -1
- package/references/official-docs/docs/subsystems/session-projection.i18n.yaml +15 -5
- package/references/official-docs/docs/subsystems/session-projection.md +20 -18
- package/references/official-docs/docs/subsystems/session-projection.zh.md +20 -18
- package/references/official-docs/docs/subsystems/session-query.i18n.yaml +27 -5
- package/references/official-docs/docs/subsystems/session-reference.i18n.yaml +18 -5
- package/references/official-docs/docs/subsystems/session-telemetry.i18n.yaml +21 -5
- package/references/official-docs/docs/subsystems/session-telemetry.md +6 -4
- package/references/official-docs/docs/subsystems/session-telemetry.zh.md +6 -4
- package/references/official-docs/docs/subsystems/session-title.i18n.yaml +15 -5
- package/references/official-docs/docs/subsystems/session.i18n.yaml +66 -5
- package/references/official-docs/docs/subsystems/session.md +113 -62
- package/references/official-docs/docs/subsystems/session.zh.md +113 -62
- package/references/official-docs/docs/subsystems/settings.i18n.yaml +12 -5
- package/references/official-docs/docs/subsystems/settings.md +42 -292
- package/references/official-docs/docs/subsystems/settings.zh.md +42 -292
- package/references/official-docs/docs/subsystems/shell.i18n.yaml +24 -5
- package/references/official-docs/docs/subsystems/shell.md +29 -22
- package/references/official-docs/docs/subsystems/shell.zh.md +29 -22
- package/references/official-docs/docs/subsystems/sidebar-right.i18n.yaml +36 -5
- package/references/official-docs/docs/subsystems/sidebar-right.md +14 -9
- package/references/official-docs/docs/subsystems/sidebar-right.zh.md +14 -9
- package/references/official-docs/docs/subsystems/skills.i18n.yaml +27 -5
- package/references/official-docs/docs/subsystems/skills.md +2 -2
- package/references/official-docs/docs/subsystems/skills.zh.md +2 -2
- package/references/official-docs/docs/subsystems/slots.i18n.yaml +27 -5
- package/references/official-docs/docs/subsystems/slots.md +21 -7
- package/references/official-docs/docs/subsystems/slots.zh.md +21 -7
- package/references/official-docs/docs/subsystems/spill.i18n.yaml +15 -5
- package/references/official-docs/docs/subsystems/spill.md +1 -1
- package/references/official-docs/docs/subsystems/spill.zh.md +1 -1
- package/references/official-docs/docs/subsystems/ssh.i18n.yaml +21 -5
- package/references/official-docs/docs/subsystems/storage.i18n.yaml +24 -5
- package/references/official-docs/docs/subsystems/storage.md +1 -2
- package/references/official-docs/docs/subsystems/storage.zh.md +1 -2
- package/references/official-docs/docs/subsystems/subagent.i18n.yaml +30 -5
- package/references/official-docs/docs/subsystems/subagent.md +35 -60
- package/references/official-docs/docs/subsystems/subagent.zh.md +35 -60
- package/references/official-docs/docs/subsystems/subprocess.i18n.yaml +30 -5
- package/references/official-docs/docs/subsystems/system-prompt.i18n.yaml +18 -5
- package/references/official-docs/docs/subsystems/terminal.i18n.yaml +18 -5
- package/references/official-docs/docs/subsystems/todo.i18n.yaml +12 -5
- package/references/official-docs/docs/subsystems/todo.md +3 -3
- package/references/official-docs/docs/subsystems/todo.zh.md +3 -3
- package/references/official-docs/docs/subsystems/token-meter.i18n.yaml +12 -5
- package/references/official-docs/docs/subsystems/tools.i18n.yaml +24 -5
- package/references/official-docs/docs/subsystems/tools.md +15 -4
- package/references/official-docs/docs/subsystems/tools.zh.md +15 -4
- package/references/official-docs/docs/subsystems/typert.i18n.yaml +21 -5
- package/references/official-docs/docs/subsystems/typert.md +147 -6
- package/references/official-docs/docs/subsystems/typert.zh.md +147 -6
- package/references/official-docs/docs/subsystems/user-questions.i18n.yaml +27 -5
- package/references/official-docs/docs/subsystems/user-questions.md +128 -1
- package/references/official-docs/docs/subsystems/user-questions.zh.md +129 -2
- package/references/official-docs/docs/subsystems/voice-input.i18n.yaml +19 -0
- package/references/official-docs/docs/subsystems/voice-input.md +164 -0
- package/references/official-docs/docs/subsystems/voice-input.zh.md +164 -0
- package/references/official-docs/docs/subsystems/web-client.i18n.yaml +36 -5
- package/references/official-docs/docs/subsystems/web-client.md +10 -5
- package/references/official-docs/docs/subsystems/web-client.zh.md +10 -5
- package/references/official-docs/docs/subsystems/web-server.i18n.yaml +15 -5
- package/references/official-docs/docs/subsystems/web-server.md +12 -4
- package/references/official-docs/docs/subsystems/web-server.zh.md +12 -4
- package/references/official-docs/docs/subsystems/web.i18n.yaml +27 -5
- package/references/official-docs/docs/subsystems/webhook.i18n.yaml +18 -5
- package/references/official-docs/docs/subsystems/webhook.md +1 -1
- package/references/official-docs/docs/subsystems/webhook.zh.md +1 -1
- package/references/official-docs/docs/subsystems/workflow.i18n.yaml +27 -5
- package/references/official-docs/docs/subsystems/workflow.md +2 -2
- package/references/official-docs/docs/subsystems/workflow.zh.md +2 -2
- package/references/official-docs/docs/subsystems/workspace.i18n.yaml +27 -5
- package/references/official-docs/docs/subsystems/workspace.md +175 -35
- package/references/official-docs/docs/subsystems/workspace.zh.md +175 -35
- package/references/official-docs/docs/testing.i18n.yaml +33 -5
- package/references/official-docs/docs/testing.md +2 -2
- package/references/official-docs/docs/testing.zh.md +2 -2
- package/references/official-docs/docs/tool-catalog.i18n.yaml +312 -5
- package/references/official-docs/docs/tool-catalog.md +321 -92
- package/references/official-docs/docs/tool-catalog.zh.md +321 -92
- package/references/official-docs/docs/tool-execution-pipeline.i18n.yaml +9 -5
- package/references/official-docs/docs/tool-execution-pipeline.md +6 -3
- package/references/official-docs/docs/tool-execution-pipeline.zh.md +6 -3
- package/references/official-docs/docs/ui-radius.i18n.yaml +31 -0
- package/references/official-docs/docs/ui-radius.md +115 -0
- package/references/official-docs/docs/ui-radius.zh.md +115 -0
- package/references/official-docs/docs/upgrade-guide/v0.1.7-rc.2/schedule-optional-bundle/guide.i18n.yaml +16 -0
- package/references/official-docs/docs/upgrade-guide/v0.1.7-rc.2/schedule-optional-bundle/guide.md +22 -0
- package/references/official-docs/docs/upgrade-guide/v0.1.7-rc.2/schedule-optional-bundle/guide.zh.md +22 -0
- package/references/official-docs/docs/upgrade-guide/v0.1.7-rc.2/transcript-view-legacy-normal/guide.i18n.yaml +16 -0
- package/references/official-docs/docs/upgrade-guide/v0.1.7-rc.2/transcript-view-legacy-normal/guide.md +25 -0
- package/references/official-docs/docs/upgrade-guide/v0.1.7-rc.2/transcript-view-legacy-normal/guide.zh.md +25 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/account-sign-in-errors/guide.i18n.yaml +16 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/account-sign-in-errors/guide.md +18 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/account-sign-in-errors/guide.zh.md +18 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/remove-runtime-invariants/guide.i18n.yaml +16 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/remove-runtime-invariants/guide.md +23 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/remove-runtime-invariants/guide.zh.md +23 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/schedule-bundle-retired/guide.i18n.yaml +16 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/schedule-bundle-retired/guide.md +22 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/schedule-bundle-retired/guide.zh.md +22 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/subpath-plugin-display-manifest/guide.i18n.yaml +16 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/subpath-plugin-display-manifest/guide.md +27 -0
- package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/subpath-plugin-display-manifest/guide.zh.md +27 -0
- package/references/official-docs/docs/user/develop/basic/config.i18n.yaml +27 -5
- package/references/official-docs/docs/user/develop/basic/index.i18n.yaml +36 -5
- package/references/official-docs/docs/user/develop/basic/publish.i18n.yaml +30 -5
- package/references/official-docs/docs/user/develop/basic/publish.md +7 -1
- package/references/official-docs/docs/user/develop/basic/publish.zh.md +7 -1
- package/references/official-docs/docs/user/develop/basic/tool.i18n.yaml +15 -5
- package/references/official-docs/docs/user/develop/framework/events.i18n.yaml +45 -5
- package/references/official-docs/docs/user/develop/framework/index.i18n.yaml +30 -5
- package/references/official-docs/docs/user/develop/framework/service.i18n.yaml +39 -5
- package/references/official-docs/docs/user/develop/practice/dynamic-cordis.i18n.yaml +9 -5
- package/references/official-docs/docs/user/develop/practice/index.i18n.yaml +45 -5
- package/references/official-docs/docs/user/develop/practice/llm-adapter.i18n.yaml +33 -5
- package/references/official-docs/docs/user/develop/practice/llm-adapter.md +1 -1
- package/references/official-docs/docs/user/develop/practice/llm-adapter.zh.md +1 -1
- package/references/official-docs/docs/user/guide/github-review.i18n.yaml +24 -5
- package/references/official-docs/docs/user/guide/index.i18n.yaml +18 -5
- package/references/official-docs/docs/user/guide/index.md +1 -0
- package/references/official-docs/docs/user/guide/index.zh.md +1 -0
- package/references/official-docs/docs/user/guide/mcp-memory.i18n.yaml +36 -5
- package/references/official-docs/docs/user/guide/network-proxy.i18n.yaml +24 -5
- package/references/official-docs/docs/user/guide/providers-custom-form.png +0 -0
- package/references/official-docs/docs/user/guide/providers-custom-form.zh.png +0 -0
- package/references/official-docs/docs/user/guide/providers-models-page.png +0 -0
- package/references/official-docs/docs/user/guide/providers-models-page.zh.png +0 -0
- package/references/official-docs/docs/user/guide/providers.i18n.yaml +36 -5
- package/references/official-docs/docs/user/guide/providers.md +88 -78
- package/references/official-docs/docs/user/guide/providers.zh.md +102 -92
- package/references/official-docs/docs/user/guide/public-deployments.i18n.yaml +19 -0
- package/references/official-docs/docs/user/guide/public-deployments.md +33 -0
- package/references/official-docs/docs/user/guide/public-deployments.zh.md +33 -0
- package/references/official-docs/docs/user/guide/python-sdk.i18n.yaml +27 -5
- package/references/official-docs/docs/user/guide/python-sdk.md +1 -1
- package/references/official-docs/docs/user/guide/python-sdk.zh.md +1 -1
- package/references/official-docs/docs/user/guide/schedule.i18n.yaml +30 -5
- package/references/official-docs/docs/user/guide/schedule.md +69 -11
- package/references/official-docs/docs/user/guide/schedule.zh.md +69 -11
- package/references/official-docs/docs/user/index.i18n.yaml +9 -5
- package/references/official-docs/docs/web-styling.i18n.yaml +18 -5
- package/references/official-docs/docs/web-styling.md +12 -3
- package/references/official-docs/docs/web-styling.zh.md +12 -3
- package/references/official-docs/packages/AGENTS.md +1 -2
- package/references/official-docs/packages/README.md +5 -5
- package/references/official-docs/vendor/README.md +6 -2
- package/references/official-docs/website-docs.ts +10 -3
- package/references/official-plugin-dev-skill.md +124 -0
- package/references/sources.md +10 -5
- package/scripts/archive-discussions.ps1 +9 -1
- package/scripts/build-llms-full.mjs +64 -0
- package/scripts/check-docs-drift.ps1 +1 -1
- package/scripts/sync-official-docs.ps1 +1 -1
- package/templates/js/icon.svg +4 -0
- package/templates/js/locale/en.json +6 -0
- package/templates/js/locale/zh.json +6 -0
- package/templates/js/package.json +9 -1
- package/templates/ts/icon.svg +4 -0
- package/templates/ts/locale/en.json +6 -0
- package/templates/ts/locale/zh.json +6 -0
- package/templates/ts/package.json +9 -1
- package/references/official-docs/docs/subsystems/invariants.i18n.yaml +0 -6
- package/references/official-docs/docs/subsystems/invariants.md +0 -88
- package/references/official-docs/docs/subsystems/invariants.zh.md +0 -88
|
@@ -1,6 +1,49 @@
|
|
|
1
|
-
# Bilingual-pair consistency record (docs/i18n/README.md):
|
|
2
|
-
#
|
|
3
|
-
#
|
|
1
|
+
# Bilingual-pair consistency record for llm-streaming.md (docs/i18n/README.md): per heading
|
|
2
|
+
# section, a hash of its English and Chinese blocks outside code blocks and generated regions.
|
|
3
|
+
# After editing either side, bring the other along and re-record with:
|
|
4
4
|
# pnpm run verify-translation-pairing --write docs/subsystems/llm-streaming.md
|
|
5
|
-
llm-streaming
|
|
6
|
-
|
|
5
|
+
/llm-streaming:
|
|
6
|
+
en: 989057ec9786a505
|
|
7
|
+
zh: 03e20367da473086
|
|
8
|
+
/llm-streaming/content-blocks-and-messages:
|
|
9
|
+
en: 365ecc228f756098
|
|
10
|
+
zh: 396e68661a789854
|
|
11
|
+
/llm-streaming/streamchunk-the-raw-protocol:
|
|
12
|
+
en: a18fe401763efde4
|
|
13
|
+
zh: ef59a76d9c694654
|
|
14
|
+
/llm-streaming/compact-assistant-streams:
|
|
15
|
+
en: a2d35127e0b8ca72
|
|
16
|
+
zh: fb1ba6e5a69adef7
|
|
17
|
+
/llm-streaming/llmfailure:
|
|
18
|
+
en: 13415501869b4ca9
|
|
19
|
+
zh: 723c7533cce3d1d6
|
|
20
|
+
/llm-streaming/request-image-pricing:
|
|
21
|
+
en: 10598e1a98262415
|
|
22
|
+
zh: 7fb85b22174a1497
|
|
23
|
+
/llm-streaming/the-adapter-contract:
|
|
24
|
+
en: f9dacddf34a48d66
|
|
25
|
+
zh: 1a426c55909c081f
|
|
26
|
+
/llm-streaming/resolvedretrypolicy:
|
|
27
|
+
en: cbab49d689311d4d
|
|
28
|
+
zh: 76246140eabaa55e
|
|
29
|
+
/llm-streaming/appidentity-app-attribution:
|
|
30
|
+
en: e053f18c7dc070a8
|
|
31
|
+
zh: 90ded9a892ed2fd5
|
|
32
|
+
/llm-streaming/tokenusage:
|
|
33
|
+
en: 33830f78fdb845fa
|
|
34
|
+
zh: f43a4502c4c3bfff
|
|
35
|
+
/llm-streaming/blockassembler:
|
|
36
|
+
en: 58dec2259b0b1c6f
|
|
37
|
+
zh: fc99fe965acaabf3
|
|
38
|
+
/llm-streaming/the-model-request:
|
|
39
|
+
en: ddca84b082554567
|
|
40
|
+
zh: 804ffb1cb0c94bfa
|
|
41
|
+
/llm-streaming/the-model-request/the-request-envelope-llmcallconfig-and-the-logged-header:
|
|
42
|
+
en: f2e6932e211f179b
|
|
43
|
+
zh: 75112586a6f3f4aa
|
|
44
|
+
/llm-streaming/official-deepseek-request-extensions:
|
|
45
|
+
en: b19f291f094157ed
|
|
46
|
+
zh: 682f13a833e8bb52
|
|
47
|
+
/llm-streaming/service-and-provider-contracts:
|
|
48
|
+
en: 8dc79d4cc82824c2
|
|
49
|
+
zh: 3ebabd3a117ad717
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
English | [中文](llm-streaming.zh.md)
|
|
4
4
|
|
|
5
|
-
The conversation and streaming types from [`packages/llm`](../../packages/llm/README.md):
|
|
5
|
+
The conversation and streaming types from [`packages/llm`](../../packages/llm/README.md): durable `Message` values, request-only user inputs, shared `ContentBlock` variants, the fully assembled model request, the raw `StreamChunk` protocol, the adapter contract every adapter must implement, and the shared assembler. The [core packages](core.md) hold and log these values on every turn; this page declares them.
|
|
6
6
|
|
|
7
7
|
Source: [`packages/llm/llm/src/types.ts`](../../packages/llm/llm/src/types.ts)
|
|
8
8
|
|
|
@@ -17,7 +17,8 @@ Source: [`packages/llm/llm/src/types.ts`](../../packages/llm/llm/src/types.ts)
|
|
|
17
17
|
```ts type-equiv
|
|
18
18
|
/**
|
|
19
19
|
* Merge-extensible content blocks keyed by `type`. New core blocks must land
|
|
20
|
-
* with adapter, UI, and compaction support.
|
|
20
|
+
* with adapter, UI, and compaction support. Tool-change blocks belong to
|
|
21
|
+
* developer messages; `projectToolUpdates` selects what each route receives.
|
|
21
22
|
*/
|
|
22
23
|
interface ContentBlockMap {
|
|
23
24
|
'text': TextBlock
|
|
@@ -25,11 +26,12 @@ interface ContentBlockMap {
|
|
|
25
26
|
'image': ImageBlock
|
|
26
27
|
'file': FileBlock
|
|
27
28
|
'tool-call': ToolCallBlock
|
|
28
|
-
'tool-
|
|
29
|
+
'tool-addition': ToolAdditionBlock
|
|
30
|
+
'tool-removal': ToolRemovalBlock
|
|
29
31
|
}
|
|
30
32
|
```
|
|
31
33
|
|
|
32
|
-
The block interfaces (full fields in source): `TextBlock` (`text`), `ReasoningBlock` (thinking, distinct from visible text), `ImageBlock` (a durable [image attachment](attachment.md)), `FileBlock` (a durable verbatim [file attachment](attachment.md) that request assembly projects to handle text for every route), `ToolCallBlock` (`id: ToolCallId`, `name`, raw-JSON `arguments`)
|
|
34
|
+
The block interfaces (full fields in source): `TextBlock` (`text`), `ReasoningBlock` (thinking, distinct from visible text), `ImageBlock` (a durable [image attachment](attachment.md)), `FileBlock` (a durable verbatim [file attachment](attachment.md) that request assembly projects to handle text for every route), and `ToolCallBlock` (`id: ToolCallId`, `name`, raw-JSON `arguments`). Tool results are first-class `ToolResultMessage` values with `toolCallId`, result `content`, and optional `isError`; they are not content blocks. `ContentBlock = ContentBlockMap[ContentBlockType]`. A new modality belongs in the merge-extensible map only when its adapter, UI, compaction, and durable replay paths honor it. Developer tool-change blocks are projected according to the resolved route capability.
|
|
33
35
|
|
|
34
36
|
Image access belongs to request serialization rather than the durable attachment or deterministic request-image version. `resolveImageAttachmentAccess()` combines the attachment provider's optional host object path with a mapping supplied by the consumer for the current tool execution filesystem. The result is available only for that request and does not participate in `variantId`.
|
|
35
37
|
|
|
@@ -64,31 +66,27 @@ interface AssistantProviderMetadata {
|
|
|
64
66
|
```
|
|
65
67
|
|
|
66
68
|
```ts type-equiv
|
|
67
|
-
/**
|
|
68
|
-
|
|
69
|
-
/** Stable identity preserved across every representation boundary. */
|
|
70
|
-
readonly id: MessageId
|
|
71
|
-
/** Provider-neutral conversation role. */
|
|
72
|
-
readonly role: 'system' | 'user' | 'assistant'
|
|
73
|
-
/** Exact model-facing blocks. */
|
|
74
|
-
readonly content: ContentBlock[]
|
|
75
|
-
/** Required source fields supplied by the producer. */
|
|
76
|
-
readonly source: MessageSource
|
|
77
|
-
}
|
|
69
|
+
/** Any persisted conversation message, discriminated by its `role`. */
|
|
70
|
+
type Message = MessageRoleMap[keyof MessageRoleMap]
|
|
78
71
|
```
|
|
79
72
|
|
|
73
|
+
`DeveloperMessage` records incremental agent session changes in conversation order with the `developer` role. `ToolAdditionBlock.toolName` activates the definition selected by the containing Session event's historical header reference; `ToolRemovalBlock.toolName` removes the active definition. Both blocks are rejected in other message roles. `deferLoading` independently requests deferred definition loading without requiring an addition record. See [Session](../../packages/core/session/README.md) for header binding and the [LLM package](../../packages/llm/llm/README.md#known-limitations-and-deferred-work) for provider support limits. `ToolUpdate` is `in-history` or `addition-only` on resolved and prepared model metadata. `GenerateOptions.toolHistory` carries `ToolHistory`: initial `tools` and ordered `updates`, each binding a developer `messageId` to its historically resolved `additions`. The runtime projects this state into provider declarations; it does not change the active tool list in logged headers.
|
|
74
|
+
|
|
80
75
|
Where a message came from is itself a merge-extensible sum type:
|
|
81
76
|
|
|
82
77
|
```ts type-equiv
|
|
83
78
|
/**
|
|
84
|
-
* Where a message (or injected content) came from
|
|
85
|
-
* Merge-extensible sum type —
|
|
79
|
+
* Where a message (or injected content) came from, in the harness's own
|
|
80
|
+
* vocabulary. Merge-extensible sum type — each producer declares its own
|
|
81
|
+
* `kind` in its own module; there is no shared catch-all `plugin` kind.
|
|
82
|
+
* Model and tool sources answer their role messages; user messages carry any
|
|
83
|
+
* producer's kind, and consumers fall through unknown kinds.
|
|
86
84
|
*/
|
|
87
85
|
interface MessageSourceMap {
|
|
88
86
|
user: { kind: 'user' }
|
|
89
|
-
plugin: { kind: 'plugin'; plugin: string } & ContextFormed
|
|
90
87
|
model: ModelMessageSource
|
|
91
88
|
tool: ToolMessageSource
|
|
89
|
+
'system-prompt': SystemPromptMessageSource
|
|
92
90
|
}
|
|
93
91
|
```
|
|
94
92
|
|
|
@@ -225,7 +223,7 @@ type StreamChunk =
|
|
|
225
223
|
|
|
226
224
|
`snapshot()` returns a detached immutable stream. `expandAssistantStream()` strictly checks record keys, member counts, indexes, timestamps, tool-call identity, and lossless JSON before recreating the exact timed chunk sequence. The Session log embeds this stream in `assistant/message` for a surface result or `assistant/attempt` for an attempt with no surface message.
|
|
227
225
|
|
|
228
|
-
Process-local `agent/assistant-stream` frames carry live presentation. Durable replay and restore validation still expand the embedded settlement; telemetry, token accounting, and Host folds read the compact records directly. Record-level readers (`assistantStreamFirstTokenTime`, `assistantStreamHasVisibleContent`, `assistantStreamHasVisibleText`, `lastAssistantStreamChunk`, `assistantStreamChunks`, `joinAssistantStreamText`, `assembleAssistantStream`, and the per-run `runFirstTokenTime` and `runFirstVisibleTime`) answer consumer questions in one pass over the records with early exit, so a large history costs O(records) per settlement instead of O(members) expansion ([fold
|
|
226
|
+
Process-local `agent/assistant-stream` frames carry live presentation. Durable replay and restore validation still expand the embedded settlement; telemetry, token accounting, and Host folds read the compact records directly. Record-level readers (`assistantStreamFirstTokenTime`, `assistantStreamHasVisibleContent`, `assistantStreamHasVisibleText`, `lastAssistantStreamChunk`, `assistantStreamChunks`, `joinAssistantStreamText`, `assembleAssistantStream`, and the per-run `runFirstTokenTime` and `runFirstVisibleTime`) answer consumer questions in one pass over the records with early exit, so a large history costs O(records) per settlement instead of O(members) expansion ([fold reference](../../packages/llm/llm/README.md)). `expandAssistantStream()` remains the validating path for records read at a durable boundary and for consumers that need every member.
|
|
229
227
|
|
|
230
228
|
## `LlmFailure`
|
|
231
229
|
|
|
@@ -313,7 +311,7 @@ Retry configuration resolves before route registration into an immutable discrim
|
|
|
313
311
|
|
|
314
312
|
## `AppIdentity` — app attribution
|
|
315
313
|
|
|
316
|
-
The static public application identity every adapter sends to providers ([`packages/llm/llm/src/attribution.ts`](../../packages/llm/llm/src/attribution.ts)). `attributionHeaders(identity?)` maps it to the standard `User-Agent` header only; OpenRouter-specific app attribution headers are intentionally not supported by this contract. The default `APP_IDENTITY` sources its version from the package manifest; every field is a public product fact - no secrets, paths, session ids, or per-user identifiers, and nothing per-request may influence the values.
|
|
314
|
+
The static public application identity every adapter sends to providers ([`packages/llm/llm/src/attribution.ts`](../../packages/llm/llm/src/attribution.ts)). `attributionHeaders(identity?)` maps it to the standard `User-Agent` header only; OpenRouter-specific app attribution headers are intentionally not supported by this contract. The default `APP_IDENTITY` sources its version from the package manifest; every field is a public product fact - no secrets, paths, session ids, or per-user identifiers, and nothing per-request may influence the values.
|
|
317
315
|
|
|
318
316
|
```ts type-equiv
|
|
319
317
|
/**
|
|
@@ -415,10 +413,10 @@ declare class BlockAssembler {
|
|
|
415
413
|
get replayState(): ReplayEnvelope | undefined;
|
|
416
414
|
/**
|
|
417
415
|
* The assembled assistant message.
|
|
418
|
-
* @param source -
|
|
416
|
+
* @param source - provider/model attribution (without the `kind` tag) for the assembled message.
|
|
419
417
|
* @returns a frozen assistant-role message over `blocks()` (same open-block assembly rules).
|
|
420
418
|
*/
|
|
421
|
-
message(source:
|
|
419
|
+
message(source: Omit<ModelMessageSource, 'kind'>): AssistantMessage;
|
|
422
420
|
}
|
|
423
421
|
```
|
|
424
422
|
|
|
@@ -574,9 +572,28 @@ interface LlmResolvedModelInfo extends LlmModelInfo {
|
|
|
574
572
|
reasoning?: LlmModelReasoningInfo
|
|
575
573
|
/** Declared mid-conversation system prompt handling; absent means only a leading system message is read. */
|
|
576
574
|
systemPromptUpdate?: SystemPromptUpdate
|
|
575
|
+
/** Declared mid-conversation tool declaration handling; absent means every request declares the complete tool list. */
|
|
576
|
+
toolUpdate?: ToolUpdate
|
|
577
|
+
}
|
|
578
|
+
```
|
|
579
|
+
|
|
580
|
+
Auxiliary callers can provide user content without a durable identity or source. Existing `Message[]` histories remain valid request inputs. Session writes, Agent delivery, and recorded title requests continue to require durable messages.
|
|
581
|
+
|
|
582
|
+
```ts type-equiv
|
|
583
|
+
/** User input for one LLM request; it has no durable Session identity or source. */
|
|
584
|
+
interface RequestUserInput {
|
|
585
|
+
readonly role: 'user'
|
|
586
|
+
readonly content: UserMessage['content']
|
|
587
|
+
readonly id?: never
|
|
588
|
+
readonly source?: never
|
|
577
589
|
}
|
|
578
590
|
```
|
|
579
591
|
|
|
592
|
+
```ts type-equiv
|
|
593
|
+
/** A durable conversation message or a user input used only for one request. */
|
|
594
|
+
type RequestMessage = Message | RequestUserInput
|
|
595
|
+
```
|
|
596
|
+
|
|
580
597
|
```ts type-equiv
|
|
581
598
|
/** A single model request, fully assembled. */
|
|
582
599
|
interface GenerateOptions {
|
|
@@ -589,9 +606,9 @@ interface GenerateOptions {
|
|
|
589
606
|
* Ordered conversation messages, exactly as the provider sees them. A
|
|
590
607
|
* loop-built request passes the derived history (dsh-agent-loop), whose
|
|
591
608
|
* leading system-role message carries the system prompt; a hand-built
|
|
592
|
-
* one-shot
|
|
609
|
+
* one-shot may include identity-free user inputs.
|
|
593
610
|
*/
|
|
594
|
-
messages:
|
|
611
|
+
messages: RequestMessage[]
|
|
595
612
|
/**
|
|
596
613
|
* System prompt text for one-shot callers; adapters map it to the provider's
|
|
597
614
|
* system slot ahead of `messages`. Loop-built requests leave it undefined.
|
|
@@ -599,6 +616,8 @@ interface GenerateOptions {
|
|
|
599
616
|
system?: string
|
|
600
617
|
/** Tool schemas (adapters map to the provider's `tools` field). */
|
|
601
618
|
tools?: ToolSchema[]
|
|
619
|
+
/** Session-folded tool history used for route projection; omission sends complete declarations without tool updates. */
|
|
620
|
+
toolHistory?: ToolHistory
|
|
602
621
|
temperature?: number
|
|
603
622
|
maxTokens?: number
|
|
604
623
|
/**
|
|
@@ -651,6 +670,12 @@ interface FinishReasonMap {
|
|
|
651
670
|
* it from this package.
|
|
652
671
|
*/
|
|
653
672
|
interface ToolSchema {
|
|
673
|
+
/**
|
|
674
|
+
* Requests deferred loading of the tool definition into model context,
|
|
675
|
+
* independently of whether a tool-addition block records the tool.
|
|
676
|
+
* Uses Anthropic's defer_loading terminology.
|
|
677
|
+
*/
|
|
678
|
+
deferLoading?: true
|
|
654
679
|
name: string
|
|
655
680
|
description: string
|
|
656
681
|
/** JSON Schema object for the arguments. */
|
|
@@ -715,7 +740,7 @@ The loop builds each request from logged state. `EpochHeader` records call confi
|
|
|
715
740
|
|
|
716
741
|
`agent/request` receives a frozen call-config seed and may return a replacement to switch provider, model, reasoning effort, or sampling. Before the waterfall, the loop removes values marked as adapter defaults so exact-model preparation materializes the selected route's current values; unmarked explicit settings remain in the proposal. After the waterfall, preparation rejects unsupported explicit effort ids without clamping and logs the effective config plus the fields supplied by adapter defaults under the turn signal. On step admission, this waterfall and preparation run after assembly and `step/start` but before the system prompt and accepted user batch are committed; cancellation during either commits neither. The prepared capability governs prompt reconciliation, and the call keeps one adapter registration through dispatch. Requests reaching `llm/stream` are deep-frozen, so mutation throws, and carry a process-local loop identity so observers do not confuse separately logged frozen auxiliary calls with conversation requests.
|
|
717
742
|
|
|
718
|
-
On the wire, a loop-built request is the derived history alone: the rendered prompt travels as the leading `system`-role message (surface node 0, a `system/message` event) and, when the prepared call declares `systemPromptUpdate: 'in-history'`, a non-empty changed prompt may follow the cached history as a later `system`-role message that the model reads as the effective prompt; the request's `system` field is unset — `GenerateOptions.system` serves direct one-shot callers such as title providers. An empty rendering leaves no system messages in derived history, even when earlier requests retained several prompt versions. The logged request ends with the newest `user/message` on a turn's first step and the previous step's tool results on later steps.
|
|
743
|
+
On the wire, a loop-built request is the derived history alone: the rendered prompt travels as the leading `system`-role message (surface node 0, a `system/message` event) and, when the prepared call declares `systemPromptUpdate: 'in-history'`, a non-empty changed prompt may follow the cached history as a later `system`-role message that the model reads as the effective prompt; the request's `system` field is unset — `GenerateOptions.system` serves direct one-shot callers such as title providers. An empty rendering leaves no system messages in derived history, even when earlier requests retained several prompt versions. The logged request ends with the newest `user/message` on a turn's first step and the previous step's tool results on later steps.
|
|
719
744
|
|
|
720
745
|
FIXME(call-config-shape): revisit which remaining fields are genuinely epoch-level for cache purposes (`model` and the model-owned reasoning effort are explicit; the sampling scalars sit here out of caution).
|
|
721
746
|
|
|
@@ -749,7 +774,7 @@ interface LlmCallConfigAdapterDefaults {
|
|
|
749
774
|
|
|
750
775
|
## Official DeepSeek request extensions
|
|
751
776
|
|
|
752
|
-
`ctx.deepseekLlmApiExtensions` is the provider-specific registry for additive top-level fields on `deepseek-official` requests. Contributor plugins use `register(field, provider)` to claim one field; the adapter calls `prepare(request)` after serializing its base body and merges the returned fields before HTTP. The prepared `accept()` transaction runs after 2xx, so a contributor can commit delivery state without treating a transport or provider rejection as acceptance. Preparation, collision, and acceptance failures use `REQUEST_EXTENSION` and fail the model request.
|
|
777
|
+
`ctx.deepseekLlmApiExtensions` is the provider-specific registry for additive top-level fields on `deepseek-official` requests. Contributor plugins use `register(field, provider)` to claim one field; the adapter calls `prepare(request)` after serializing its base body and merges the returned fields before HTTP. The prepared `accept()` transaction runs after 2xx, so a contributor can commit delivery state without treating a transport or provider rejection as acceptance. Preparation, collision, and acceptance failures use `REQUEST_EXTENSION` and fail the model request. A merged body that fails to serialize is sent without extension fields; acceptance is skipped and the provider plugin logs the omitted field names.
|
|
753
778
|
|
|
754
779
|
The [wire reference](../deepseek-llm-api-wire-extensions.md) defines the exact request headers, extension transaction, field versions, and receiver obligations. The shipped composition registers [`dsh_session_log`](../../packages/session/session-log-deepseek/README.md) as a lossless incremental canonical-log suffix and [`dsh_plugin_packages`](../../packages/llm/plugin-package-inventory-deepseek/README.md) as the complete active Loader-backed package set. These fields remain outside model messages and are absent from the pi-ai adapter path.
|
|
755
780
|
|
|
@@ -770,6 +795,8 @@ interface PreparedLlmCall {
|
|
|
770
795
|
readonly inputModalities?: readonly ModelModality[]
|
|
771
796
|
/** Exact model system prompt update mode captured with the adapter dispatch generation. */
|
|
772
797
|
readonly systemPromptUpdate?: SystemPromptUpdate
|
|
798
|
+
/** Exact model tool update mode captured with the adapter dispatch generation. */
|
|
799
|
+
readonly toolUpdate?: ToolUpdate
|
|
773
800
|
/** Config fields materialized by the captured adapter rather than proposed by the caller. */
|
|
774
801
|
readonly adapterDefaults: LlmCallConfigAdapterDefaults
|
|
775
802
|
/**
|
|
@@ -815,8 +842,9 @@ declare abstract class LlmAdapter {
|
|
|
815
842
|
imageRequestPricing(_provider: string, _model: string): LlmImageRequestPricing | undefined;
|
|
816
843
|
/**
|
|
817
844
|
* List models this adapter can currently advertise for one owned provider.
|
|
818
|
-
*
|
|
819
|
-
*
|
|
845
|
+
* Core routing accepts unlisted model ids; catalog-driven entry points such
|
|
846
|
+
* as the GUI may require membership. Adapters used there must advertise
|
|
847
|
+
* their available models; the base empty catalog offers no GUI selection.
|
|
820
848
|
* @param _provider - one provider route owned by this adapter.
|
|
821
849
|
* @returns discoverable models in adapter-preferred order.
|
|
822
850
|
*/
|
|
@@ -992,7 +1020,8 @@ fileRequestText(ref: FileAttachmentRef): string
|
|
|
992
1020
|
|
|
993
1021
|
/**
|
|
994
1022
|
* Discover models advertised by one registered provider. Catalog membership
|
|
995
|
-
*
|
|
1023
|
+
* does not constrain core routing. Catalog-driven entry points may restrict
|
|
1024
|
+
* selection and submission to the advertised models.
|
|
996
1025
|
* @param provider - registered provider route to inspect.
|
|
997
1026
|
* @returns detached model metadata in adapter-preferred order.
|
|
998
1027
|
*/
|
|
@@ -1089,8 +1118,8 @@ Waterfall around every streaming model call (retry, replay, routing). Bound to t
|
|
|
1089
1118
|
* process-local {@link markAgentLoopRequest} identity and arrives deep-frozen
|
|
1090
1119
|
* (mutation throws): its content is a pure function of the session log (the
|
|
1091
1120
|
* reconstructability Agent Note), so listeners read it, never rewrite it.
|
|
1092
|
-
* Hand-built calls do not carry that marker;
|
|
1093
|
-
* the
|
|
1121
|
+
* Hand-built calls do not carry that marker; callers own their request
|
|
1122
|
+
* inputs and must keep them unchanged until the stream settles.
|
|
1094
1123
|
* @mode waterfall
|
|
1095
1124
|
*/
|
|
1096
1125
|
'llm/stream'(this: LlmRuntime, options: GenerateOptions, next: () => AsyncIterable<StreamChunk>): AsyncIterable<StreamChunk>
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[English](llm-streaming.md) | 中文
|
|
4
4
|
|
|
5
|
-
[`packages/llm`](../../packages/llm/README.zh.md)
|
|
5
|
+
[`packages/llm`](../../packages/llm/README.zh.md) 提供对话与流式输出类型:持久 `Message` 值、仅供请求使用的 user 输入、共用的 `ContentBlock` 变体、完整组装的模型请求、原始 `StreamChunk` 协议、每个适配器必须实现的适配器约定(adapter contract),以及共享的 assembler。[核心包](core.zh.md)在每个轮次持有并记录这些值;本页声明它们。
|
|
6
6
|
|
|
7
7
|
源码:[`packages/llm/llm/src/types.ts`](../../packages/llm/llm/src/types.ts)
|
|
8
8
|
|
|
@@ -17,7 +17,8 @@
|
|
|
17
17
|
```ts type-equiv
|
|
18
18
|
/**
|
|
19
19
|
* Merge-extensible content blocks keyed by `type`. New core blocks must land
|
|
20
|
-
* with adapter, UI, and compaction support.
|
|
20
|
+
* with adapter, UI, and compaction support. Tool-change blocks belong to
|
|
21
|
+
* developer messages; `projectToolUpdates` selects what each route receives.
|
|
21
22
|
*/
|
|
22
23
|
interface ContentBlockMap {
|
|
23
24
|
'text': TextBlock
|
|
@@ -25,11 +26,12 @@ interface ContentBlockMap {
|
|
|
25
26
|
'image': ImageBlock
|
|
26
27
|
'file': FileBlock
|
|
27
28
|
'tool-call': ToolCallBlock
|
|
28
|
-
'tool-
|
|
29
|
+
'tool-addition': ToolAdditionBlock
|
|
30
|
+
'tool-removal': ToolRemovalBlock
|
|
29
31
|
}
|
|
30
32
|
```
|
|
31
33
|
|
|
32
|
-
各块接口(完整字段见源码):`TextBlock`(`text`)、`ReasoningBlock`(thinking,区别于可见文本)、`ImageBlock`(一个持久的[图片附件](attachment.zh.md))、`FileBlock`(一个持久的原样[文件附件](attachment.zh.md),请求组装对每条路由都把它投影为 handle
|
|
34
|
+
各块接口(完整字段见源码):`TextBlock`(`text`)、`ReasoningBlock`(thinking,区别于可见文本)、`ImageBlock`(一个持久的[图片附件](attachment.zh.md))、`FileBlock`(一个持久的原样[文件附件](attachment.zh.md),请求组装对每条路由都把它投影为 handle 文本)和 `ToolCallBlock`(`id: ToolCallId`、`name`、原始 JSON `arguments`)。工具结果是一等 `ToolResultMessage`,含有 `toolCallId`、结果 `content` 与可选的 `isError`;它不是内容块。`ContentBlock = ContentBlockMap[ContentBlockType]`。仅当适配器、UI、压缩(compaction)和持久回放路径均支持某种新模态时,才将其纳入可合并扩展的 map。 Developer 工具变更块按已解析路由的能力投影。
|
|
33
35
|
|
|
34
36
|
图片访问方式属于请求序列化,不属于持久附件或确定性请求图片版本。`resolveImageAttachmentAccess()` 把附件提供方可选的宿主对象路径,与消费方为当前工具执行文件系统提供的映射组合起来。结果只适用于本次请求,不参与 `variantId`。
|
|
35
37
|
|
|
@@ -64,31 +66,27 @@ interface AssistantProviderMetadata {
|
|
|
64
66
|
```
|
|
65
67
|
|
|
66
68
|
```ts type-equiv
|
|
67
|
-
/**
|
|
68
|
-
|
|
69
|
-
/** Stable identity preserved across every representation boundary. */
|
|
70
|
-
readonly id: MessageId
|
|
71
|
-
/** Provider-neutral conversation role. */
|
|
72
|
-
readonly role: 'system' | 'user' | 'assistant'
|
|
73
|
-
/** Exact model-facing blocks. */
|
|
74
|
-
readonly content: ContentBlock[]
|
|
75
|
-
/** Required source fields supplied by the producer. */
|
|
76
|
-
readonly source: MessageSource
|
|
77
|
-
}
|
|
69
|
+
/** Any persisted conversation message, discriminated by its `role`. */
|
|
70
|
+
type Message = MessageRoleMap[keyof MessageRoleMap]
|
|
78
71
|
```
|
|
79
72
|
|
|
73
|
+
`DeveloperMessage` 以 `developer` 角色按对话顺序记录增量智能体 Session 变更。`ToolAdditionBlock.toolName` 激活由所在 Session 事件的历史请求头引用所选定的定义;`ToolRemovalBlock.toolName` 移除当前生效的定义。其他消息角色拒绝这两种内容块。`deferLoading` 独立控制工具定义的加载请求,不要求存在添加记录。请求头绑定见 [Session](../../packages/core/session/README.zh.md),提供方支持限制见 [LLM 包](../../packages/llm/llm/README.zh.md#known-limitations-and-deferred-work)。 已解析和已准备模型元数据中的 `ToolUpdate` 为 `in-history` 或 `addition-only`。`GenerateOptions.toolHistory` 携带 `ToolHistory`:初始 `tools` 和有序 `updates`,每项把 developer `messageId` 绑定到已解析历史定义的 `additions`。运行时将此状态投影为提供方声明,不修改已记录请求头中的有效工具列表。
|
|
74
|
+
|
|
80
75
|
消息来源本身也是一个可合并扩展的和类型:
|
|
81
76
|
|
|
82
77
|
```ts type-equiv
|
|
83
78
|
/**
|
|
84
|
-
* Where a message (or injected content) came from
|
|
85
|
-
* Merge-extensible sum type —
|
|
79
|
+
* Where a message (or injected content) came from, in the harness's own
|
|
80
|
+
* vocabulary. Merge-extensible sum type — each producer declares its own
|
|
81
|
+
* `kind` in its own module; there is no shared catch-all `plugin` kind.
|
|
82
|
+
* Model and tool sources answer their role messages; user messages carry any
|
|
83
|
+
* producer's kind, and consumers fall through unknown kinds.
|
|
86
84
|
*/
|
|
87
85
|
interface MessageSourceMap {
|
|
88
86
|
user: { kind: 'user' }
|
|
89
|
-
plugin: { kind: 'plugin'; plugin: string } & ContextFormed
|
|
90
87
|
model: ModelMessageSource
|
|
91
88
|
tool: ToolMessageSource
|
|
89
|
+
'system-prompt': SystemPromptMessageSource
|
|
92
90
|
}
|
|
93
91
|
```
|
|
94
92
|
|
|
@@ -225,7 +223,7 @@ type StreamChunk =
|
|
|
225
223
|
|
|
226
224
|
`snapshot()` 返回分离且不可变的 stream。`expandAssistantStream()` 会严格检查 record key、成员数、index、时间戳、tool-call identity 与无损 JSON,再重建精确的带时间 chunk 序列。Session 日志会把该 stream 嵌入作为 surface result 的 `assistant/message`,或嵌入没有 surface message 的 `assistant/attempt`。
|
|
227
225
|
|
|
228
|
-
进程本地 `agent/assistant-stream` frame 承载实时呈现。持久回放与恢复校验仍会展开内嵌 settlement;遥测、token 记账与 Host 折叠直接读取紧凑记录。记录级读取器(`assistantStreamFirstTokenTime`、`assistantStreamHasVisibleContent`、`assistantStreamHasVisibleText`、`lastAssistantStreamChunk`、`assistantStreamChunks`、`joinAssistantStreamText`、`assembleAssistantStream` 以及按 run 的 `runFirstTokenTime` 与 `runFirstVisibleTime`)以提前退出在一次扫描内回答消费方问题,因此大历史每次结算的代价为 O(records) 而非 O(members) 展开([
|
|
226
|
+
进程本地 `agent/assistant-stream` frame 承载实时呈现。持久回放与恢复校验仍会展开内嵌 settlement;遥测、token 记账与 Host 折叠直接读取紧凑记录。记录级读取器(`assistantStreamFirstTokenTime`、`assistantStreamHasVisibleContent`、`assistantStreamHasVisibleText`、`lastAssistantStreamChunk`、`assistantStreamChunks`、`joinAssistantStreamText`、`assembleAssistantStream` 以及按 run 的 `runFirstTokenTime` 与 `runFirstVisibleTime`)以提前退出在一次扫描内回答消费方问题,因此大历史每次结算的代价为 O(records) 而非 O(members) 展开([折叠参考](../../packages/llm/llm/README.zh.md))。`expandAssistantStream()` 仍是持久边界读取记录与需要每个成员的消费方的校验路径。
|
|
229
227
|
|
|
230
228
|
<a id="llmfailure"></a>
|
|
231
229
|
|
|
@@ -315,7 +313,7 @@ interface LlmImageRequestPricing {
|
|
|
315
313
|
|
|
316
314
|
## `AppIdentity`:应用归属
|
|
317
315
|
|
|
318
|
-
每个适配器都会向提供方发送的静态公开应用标识([`packages/llm/llm/src/attribution.ts`](../../packages/llm/llm/src/attribution.ts))。`attributionHeaders(identity?)` 只把它映射到标准 `User-Agent` header;该约定有意不支持 OpenRouter 特有的应用归属 header。默认 `APP_IDENTITY` 从包 manifest(元数据清单)获取版本;每个字段都是公开产品事实——不含 secret、路径、会话 id
|
|
316
|
+
每个适配器都会向提供方发送的静态公开应用标识([`packages/llm/llm/src/attribution.ts`](../../packages/llm/llm/src/attribution.ts))。`attributionHeaders(identity?)` 只把它映射到标准 `User-Agent` header;该约定有意不支持 OpenRouter 特有的应用归属 header。默认 `APP_IDENTITY` 从包 manifest(元数据清单)获取版本;每个字段都是公开产品事实——不含 secret、路径、会话 id 或逐用户标识,且任何逐请求信息都不得影响这些值。
|
|
319
317
|
|
|
320
318
|
```ts type-equiv
|
|
321
319
|
/**
|
|
@@ -421,10 +419,10 @@ declare class BlockAssembler {
|
|
|
421
419
|
get replayState(): ReplayEnvelope | undefined;
|
|
422
420
|
/**
|
|
423
421
|
* The assembled assistant message.
|
|
424
|
-
* @param source -
|
|
422
|
+
* @param source - provider/model attribution (without the `kind` tag) for the assembled message.
|
|
425
423
|
* @returns a frozen assistant-role message over `blocks()` (same open-block assembly rules).
|
|
426
424
|
*/
|
|
427
|
-
message(source:
|
|
425
|
+
message(source: Omit<ModelMessageSource, 'kind'>): AssistantMessage;
|
|
428
426
|
}
|
|
429
427
|
```
|
|
430
428
|
|
|
@@ -580,9 +578,28 @@ interface LlmResolvedModelInfo extends LlmModelInfo {
|
|
|
580
578
|
reasoning?: LlmModelReasoningInfo
|
|
581
579
|
/** Declared mid-conversation system prompt handling; absent means only a leading system message is read. */
|
|
582
580
|
systemPromptUpdate?: SystemPromptUpdate
|
|
581
|
+
/** Declared mid-conversation tool declaration handling; absent means every request declares the complete tool list. */
|
|
582
|
+
toolUpdate?: ToolUpdate
|
|
583
|
+
}
|
|
584
|
+
```
|
|
585
|
+
|
|
586
|
+
辅助调用方可以提供不含持久身份或来源的 user 内容。既有 `Message[]` 历史仍然是有效的请求输入。Session 写入、Agent 投递和已记录的标题请求仍然要求持久消息。
|
|
587
|
+
|
|
588
|
+
```ts type-equiv
|
|
589
|
+
/** User input for one LLM request; it has no durable Session identity or source. */
|
|
590
|
+
interface RequestUserInput {
|
|
591
|
+
readonly role: 'user'
|
|
592
|
+
readonly content: UserMessage['content']
|
|
593
|
+
readonly id?: never
|
|
594
|
+
readonly source?: never
|
|
583
595
|
}
|
|
584
596
|
```
|
|
585
597
|
|
|
598
|
+
```ts type-equiv
|
|
599
|
+
/** A durable conversation message or a user input used only for one request. */
|
|
600
|
+
type RequestMessage = Message | RequestUserInput
|
|
601
|
+
```
|
|
602
|
+
|
|
586
603
|
```ts type-equiv
|
|
587
604
|
/** A single model request, fully assembled. */
|
|
588
605
|
interface GenerateOptions {
|
|
@@ -595,9 +612,9 @@ interface GenerateOptions {
|
|
|
595
612
|
* Ordered conversation messages, exactly as the provider sees them. A
|
|
596
613
|
* loop-built request passes the derived history (dsh-agent-loop), whose
|
|
597
614
|
* leading system-role message carries the system prompt; a hand-built
|
|
598
|
-
* one-shot
|
|
615
|
+
* one-shot may include identity-free user inputs.
|
|
599
616
|
*/
|
|
600
|
-
messages:
|
|
617
|
+
messages: RequestMessage[]
|
|
601
618
|
/**
|
|
602
619
|
* System prompt text for one-shot callers; adapters map it to the provider's
|
|
603
620
|
* system slot ahead of `messages`. Loop-built requests leave it undefined.
|
|
@@ -605,6 +622,8 @@ interface GenerateOptions {
|
|
|
605
622
|
system?: string
|
|
606
623
|
/** Tool schemas (adapters map to the provider's `tools` field). */
|
|
607
624
|
tools?: ToolSchema[]
|
|
625
|
+
/** Session-folded tool history used for route projection; omission sends complete declarations without tool updates. */
|
|
626
|
+
toolHistory?: ToolHistory
|
|
608
627
|
temperature?: number
|
|
609
628
|
maxTokens?: number
|
|
610
629
|
/**
|
|
@@ -657,6 +676,12 @@ interface FinishReasonMap {
|
|
|
657
676
|
* it from this package.
|
|
658
677
|
*/
|
|
659
678
|
interface ToolSchema {
|
|
679
|
+
/**
|
|
680
|
+
* Requests deferred loading of the tool definition into model context,
|
|
681
|
+
* independently of whether a tool-addition block records the tool.
|
|
682
|
+
* Uses Anthropic's defer_loading terminology.
|
|
683
|
+
*/
|
|
684
|
+
deferLoading?: true
|
|
660
685
|
name: string
|
|
661
686
|
description: string
|
|
662
687
|
/** JSON Schema object for the arguments. */
|
|
@@ -721,7 +746,7 @@ interface LlmDiscoveredModel {
|
|
|
721
746
|
|
|
722
747
|
`agent/request` 接收冻结的调用配置种子,并可返回替代值以切换提供方、模型、推理强度或采样参数。waterfall(瀑布式事件)开始前,循环会移除标记为适配器默认值的值,使确切模型准备过程填入所选路由的当前值;未带标记的显式设置仍保留在提议中。waterfall 结束后,准备过程会在轮次信号控制下拒绝显式指定但不受支持的推理强度 ID(不自动调整),并记录生效配置以及由适配器默认值提供的字段。步骤准入时,该 waterfall 与准备过程在组装和 `step/start` 之后、系统提示词与已接纳用户批次提交之前运行;在任一阶段取消都不会提交这两者。已准备调用的能力决定提示词协调,调用直至分派完成始终持有同一项适配器注册。到达 `llm/stream` 的请求会被深度冻结,因此变更会抛异常;请求还携带进程本地循环标识,使观察者不会把单独记录的冻结辅助调用误认成对话请求。
|
|
723
748
|
|
|
724
|
-
在协议中,循环构建的请求只有派生历史:渲染后的提示词作为开头的 `system` 角色消息(surface 第 0 号节点,即一个 `system/message` 事件)传输,并且当已准备调用声明 `systemPromptUpdate: 'in-history'` 时,变化后的非空提示词可以作为后续的 `system` 角色消息跟在已缓存历史之后,由模型读作有效提示词;请求的 `system` 字段不设置——`GenerateOptions.system` 服务于标题提供方等直接单次调用方。空渲染文本使派生历史不包含任何系统消息,即使先前请求保留了多个提示词版本。已记录的请求会以最新的 `user/message
|
|
749
|
+
在协议中,循环构建的请求只有派生历史:渲染后的提示词作为开头的 `system` 角色消息(surface 第 0 号节点,即一个 `system/message` 事件)传输,并且当已准备调用声明 `systemPromptUpdate: 'in-history'` 时,变化后的非空提示词可以作为后续的 `system` 角色消息跟在已缓存历史之后,由模型读作有效提示词;请求的 `system` 字段不设置——`GenerateOptions.system` 服务于标题提供方等直接单次调用方。空渲染文本使派生历史不包含任何系统消息,即使先前请求保留了多个提示词版本。已记录的请求会以最新的 `user/message`(轮次首步)或上一步的工具结果(后续步骤)结尾。
|
|
725
750
|
|
|
726
751
|
FIXME(call-config-shape):重新审视其余哪些字段出于缓存目的确实属于 epoch 层级(`model` 和模型持有的推理强度已明确属于;采样标量目前出于谨慎保留在此)。
|
|
727
752
|
|
|
@@ -755,7 +780,7 @@ interface LlmCallConfigAdapterDefaults {
|
|
|
755
780
|
|
|
756
781
|
## DeepSeek 官方请求扩展
|
|
757
782
|
|
|
758
|
-
`ctx.deepseekLlmApiExtensions` 是用于向 `deepseek-official` 请求添加顶层字段的提供方特定注册表。贡献插件通过 `register(field, provider)` 认领一个字段;适配器在序列化基础正文后调用 `prepare(request)`,并在 HTTP 前合并返回字段。已准备的 `accept()` 事务会在 2xx 后运行,因此贡献方可以提交交付状态,而不会把传输失败或提供方拒绝当作接受。准备、冲突与接受失败会使用 `REQUEST_EXTENSION
|
|
783
|
+
`ctx.deepseekLlmApiExtensions` 是用于向 `deepseek-official` 请求添加顶层字段的提供方特定注册表。贡献插件通过 `register(field, provider)` 认领一个字段;适配器在序列化基础正文后调用 `prepare(request)`,并在 HTTP 前合并返回字段。已准备的 `accept()` 事务会在 2xx 后运行,因此贡献方可以提交交付状态,而不会把传输失败或提供方拒绝当作接受。准备、冲突与接受失败会使用 `REQUEST_EXTENSION`,并使模型请求失败。合并后的正文无法序列化时,请求不带扩展字段发出,跳过接受,并由提供方插件记录被省略的字段名。
|
|
759
784
|
|
|
760
785
|
[协议参考](../deepseek-llm-api-wire-extensions.zh.md)定义确切的请求标头、扩展事务、字段版本和接收方义务。随附组合会将 [`dsh_session_log`](../../packages/session/session-log-deepseek/README.zh.md) 注册为无损增量权威日志后缀,并将 [`dsh_plugin_packages`](../../packages/llm/plugin-package-inventory-deepseek/README.zh.md) 注册为完整存活 Loader 包集合。这些字段仍位于模型消息之外,也不会进入 pi-ai 适配器路径。
|
|
761
786
|
|
|
@@ -776,6 +801,8 @@ interface PreparedLlmCall {
|
|
|
776
801
|
readonly inputModalities?: readonly ModelModality[]
|
|
777
802
|
/** Exact model system prompt update mode captured with the adapter dispatch generation. */
|
|
778
803
|
readonly systemPromptUpdate?: SystemPromptUpdate
|
|
804
|
+
/** Exact model tool update mode captured with the adapter dispatch generation. */
|
|
805
|
+
readonly toolUpdate?: ToolUpdate
|
|
779
806
|
/** Config fields materialized by the captured adapter rather than proposed by the caller. */
|
|
780
807
|
readonly adapterDefaults: LlmCallConfigAdapterDefaults
|
|
781
808
|
/**
|
|
@@ -821,8 +848,9 @@ declare abstract class LlmAdapter {
|
|
|
821
848
|
imageRequestPricing(_provider: string, _model: string): LlmImageRequestPricing | undefined;
|
|
822
849
|
/**
|
|
823
850
|
* List models this adapter can currently advertise for one owned provider.
|
|
824
|
-
*
|
|
825
|
-
*
|
|
851
|
+
* Core routing accepts unlisted model ids; catalog-driven entry points such
|
|
852
|
+
* as the GUI may require membership. Adapters used there must advertise
|
|
853
|
+
* their available models; the base empty catalog offers no GUI selection.
|
|
826
854
|
* @param _provider - one provider route owned by this adapter.
|
|
827
855
|
* @returns discoverable models in adapter-preferred order.
|
|
828
856
|
*/
|
|
@@ -998,7 +1026,8 @@ fileRequestText(ref: FileAttachmentRef): string
|
|
|
998
1026
|
|
|
999
1027
|
/**
|
|
1000
1028
|
* Discover models advertised by one registered provider. Catalog membership
|
|
1001
|
-
*
|
|
1029
|
+
* does not constrain core routing. Catalog-driven entry points may restrict
|
|
1030
|
+
* selection and submission to the advertised models.
|
|
1002
1031
|
* @param provider - registered provider route to inspect.
|
|
1003
1032
|
* @returns detached model metadata in adapter-preferred order.
|
|
1004
1033
|
*/
|
|
@@ -1095,8 +1124,8 @@ Waterfall around every streaming model call (retry, replay, routing). Bound to t
|
|
|
1095
1124
|
* process-local {@link markAgentLoopRequest} identity and arrives deep-frozen
|
|
1096
1125
|
* (mutation throws): its content is a pure function of the session log (the
|
|
1097
1126
|
* reconstructability Agent Note), so listeners read it, never rewrite it.
|
|
1098
|
-
* Hand-built calls do not carry that marker;
|
|
1099
|
-
* the
|
|
1127
|
+
* Hand-built calls do not carry that marker; callers own their request
|
|
1128
|
+
* inputs and must keep them unchanged until the stream settles.
|
|
1100
1129
|
* @mode waterfall
|
|
1101
1130
|
*/
|
|
1102
1131
|
'llm/stream'(this: LlmRuntime, options: GenerateOptions, next: () => AsyncIterable<StreamChunk>): AsyncIterable<StreamChunk>
|
|
@@ -1,6 +1,19 @@
|
|
|
1
|
-
# Bilingual-pair consistency record (docs/i18n/README.md):
|
|
2
|
-
#
|
|
3
|
-
#
|
|
1
|
+
# Bilingual-pair consistency record for lsp.md (docs/i18n/README.md): per heading
|
|
2
|
+
# section, a hash of its English and Chinese blocks outside code blocks and generated regions.
|
|
3
|
+
# After editing either side, bring the other along and re-record with:
|
|
4
4
|
# pnpm run verify-translation-pairing --write docs/subsystems/lsp.md
|
|
5
|
-
lsp
|
|
6
|
-
|
|
5
|
+
/lsp-navigation:
|
|
6
|
+
en: fa02506f51df9966
|
|
7
|
+
zh: eaa24f7154cccb1a
|
|
8
|
+
/lsp-navigation/operations-and-coordinates:
|
|
9
|
+
en: 42204b23027154f4
|
|
10
|
+
zh: 20f3db54da245f99
|
|
11
|
+
/lsp-navigation/request:
|
|
12
|
+
en: 90429192a7758437
|
|
13
|
+
zh: 36145358e1918c38
|
|
14
|
+
/lsp-navigation/result:
|
|
15
|
+
en: d260facb7ad22440
|
|
16
|
+
zh: f4868aae5be01eb6
|
|
17
|
+
/lsp-navigation/provider-and-service:
|
|
18
|
+
en: 754b4f1a0c80e332
|
|
19
|
+
zh: aaacbc912dd6337b
|
|
@@ -1,6 +1,34 @@
|
|
|
1
|
-
# Bilingual-pair consistency record (docs/i18n/README.md):
|
|
2
|
-
#
|
|
3
|
-
#
|
|
1
|
+
# Bilingual-pair consistency record for mcp.md (docs/i18n/README.md): per heading
|
|
2
|
+
# section, a hash of its English and Chinese blocks outside code blocks and generated regions.
|
|
3
|
+
# After editing either side, bring the other along and re-record with:
|
|
4
4
|
# pnpm run verify-translation-pairing --write docs/subsystems/mcp.md
|
|
5
|
-
mcp
|
|
6
|
-
|
|
5
|
+
/mcp:
|
|
6
|
+
en: 8e65e07d162dcc41
|
|
7
|
+
zh: 5f4ae607cd468767
|
|
8
|
+
/mcp/summary:
|
|
9
|
+
en: 7855928245a9ae43
|
|
10
|
+
zh: 41a2e31cfe7c68c3
|
|
11
|
+
/mcp/table-of-contents:
|
|
12
|
+
en: 5c0aa5a2e528af97
|
|
13
|
+
zh: ae2ba2297294e3de
|
|
14
|
+
/mcp/configuration:
|
|
15
|
+
en: 2f81683ec4a5d00a
|
|
16
|
+
zh: 24d09bf8c02029da
|
|
17
|
+
/mcp/responsibilities-and-scope:
|
|
18
|
+
en: dd1323247f70625e
|
|
19
|
+
zh: 10a7eb288d7bd223
|
|
20
|
+
/mcp/protocol-and-results:
|
|
21
|
+
en: 46e9b914f016b636
|
|
22
|
+
zh: e1e9ee92a22f2562
|
|
23
|
+
/mcp/resources-and-instructions:
|
|
24
|
+
en: df9cc13a5d6eb923
|
|
25
|
+
zh: 3276d65c19d4c446
|
|
26
|
+
/mcp/resource-provider-types:
|
|
27
|
+
en: 16ae356364b54262
|
|
28
|
+
zh: 28fa0c87dbbd5e88
|
|
29
|
+
/mcp/limits:
|
|
30
|
+
en: 27a59706525c88ed
|
|
31
|
+
zh: 1fb1684bc03bb6ae
|
|
32
|
+
/mcp/further-reading:
|
|
33
|
+
en: d9bb664b4fd11b99
|
|
34
|
+
zh: f1a1d6badffdfb74
|
|
@@ -107,9 +107,9 @@ MCP prompt templates, human-input elicitation, task-based execution, and resourc
|
|
|
107
107
|
|
|
108
108
|
- [MCP package group](../../packages/mcp/README.md) — package entry points.
|
|
109
109
|
- [MCP resources](../../packages/mcp/mcp-resources/README.md) — shared tools and resource-provider semantics.
|
|
110
|
-
- [Resource visibility
|
|
110
|
+
- [Resource visibility reference](../../packages/mcp/mcp-resources/README.md) — shared profile mounting and visibility from configured servers.
|
|
111
111
|
- [Third-party memory servers](../user/guide/mcp-memory.md) — product configuration guide.
|
|
112
|
-
- [Protocol negotiation
|
|
112
|
+
- [Protocol negotiation reference](../../packages/mcp/mcp-client/README.md) — SDK ownership and compatibility decisions.
|
|
113
113
|
|
|
114
114
|
<!-- BEGIN GENERATED cordis-surface (gen-cordis-catalog.ts) — do not edit between markers -->
|
|
115
115
|
|
|
@@ -107,9 +107,9 @@ interface McpResourceProvider {
|
|
|
107
107
|
|
|
108
108
|
- [MCP 包组](../../packages/mcp/README.zh.md) — 包入口。
|
|
109
109
|
- [MCP 资源](../../packages/mcp/mcp-resources/README.zh.md) — 共享工具与资源提供方语义。
|
|
110
|
-
- [
|
|
110
|
+
- [资源可见性参考](../../packages/mcp/mcp-resources/README.zh.md) — profile 统一挂载及由已配置服务器决定的可见性。
|
|
111
111
|
- [第三方记忆服务器](../user/guide/mcp-memory.zh.md) — 产品配置指南。
|
|
112
|
-
- [
|
|
112
|
+
- [协议协商参考](../../packages/mcp/mcp-client/README.zh.md) — SDK 职责与兼容性决策。
|
|
113
113
|
|
|
114
114
|
<!-- BEGIN GENERATED cordis-surface (gen-cordis-catalog.ts) — do not edit between markers -->
|
|
115
115
|
|