@ai-agent-forge/agent-forge 0.86.7 → 0.87.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 +18 -0
- package/README.md +8 -9
- package/dist/artifacts/artifact-store.d.ts.map +1 -1
- package/dist/artifacts/artifact-store.js +9 -5
- package/dist/artifacts/artifact-store.js.map +1 -1
- package/dist/bundle/.build-manifest.json +410 -371
- package/dist/bundle/chunks/{chunk-A7GUOX2H.js → chunk-6ZKDNZHA.js} +5 -1
- package/dist/bundle/chunks/chunk-BFC2BDVJ.js +13 -0
- package/dist/bundle/chunks/chunk-MOHOLL3F.js +1456 -0
- package/dist/bundle/chunks/image-resize-worker.js +12 -1
- package/dist/bundle/chunks/{virtual-modules-3IZ4MYSQ.js → virtual-modules-KZ5DRH7Q.js} +1 -1
- package/dist/bundle/cli.js +1 -1
- package/dist/bundle/client.js +1 -1
- package/dist/bundle/index.js +2 -2
- package/dist/bundle/rpc-entry.js +1 -1
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +231 -185
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/auth-check.d.ts.map +1 -1
- package/dist/cli/auth-check.js +3 -2
- package/dist/cli/auth-check.js.map +1 -1
- package/dist/cli/auth-command.d.ts.map +1 -1
- package/dist/cli/auth-command.js +15 -9
- package/dist/cli/auth-command.js.map +1 -1
- package/dist/cli/credential-print.d.ts.map +1 -1
- package/dist/cli/credential-print.js +14 -7
- package/dist/cli/credential-print.js.map +1 -1
- package/dist/cli/experimental/command.d.ts.map +1 -1
- package/dist/cli/experimental/command.js +6 -5
- package/dist/cli/experimental/command.js.map +1 -1
- package/dist/cli/list-models.d.ts.map +1 -1
- package/dist/cli/list-models.js +9 -8
- package/dist/cli/list-models.js.map +1 -1
- package/dist/cli/plugin-manager-controller.d.ts.map +1 -1
- package/dist/cli/plugin-manager-controller.js +2 -1
- package/dist/cli/plugin-manager-controller.js.map +1 -1
- package/dist/cli/serve.d.ts.map +1 -1
- package/dist/cli/serve.js +8 -5
- package/dist/cli/serve.js.map +1 -1
- package/dist/client/remote-session.d.ts.map +1 -1
- package/dist/client/remote-session.js +16 -9
- package/dist/client/remote-session.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +2 -1
- package/dist/config.js.map +1 -1
- package/dist/core/agent-capability-contract.d.ts +0 -7
- package/dist/core/agent-capability-contract.d.ts.map +1 -1
- package/dist/core/agent-capability-contract.js +72 -68
- package/dist/core/agent-capability-contract.js.map +1 -1
- package/dist/core/agent-session-bash.d.ts.map +1 -1
- package/dist/core/agent-session-bash.js +5 -4
- package/dist/core/agent-session-bash.js.map +1 -1
- package/dist/core/agent-session-compaction.d.ts.map +1 -1
- package/dist/core/agent-session-compaction.js +28 -22
- package/dist/core/agent-session-compaction.js.map +1 -1
- package/dist/core/agent-session-context.d.ts.map +1 -1
- package/dist/core/agent-session-context.js +18 -13
- package/dist/core/agent-session-context.js.map +1 -1
- package/dist/core/agent-session-model.d.ts.map +1 -1
- package/dist/core/agent-session-model.js +2 -1
- package/dist/core/agent-session-model.js.map +1 -1
- package/dist/core/agent-session-retry.d.ts.map +1 -1
- package/dist/core/agent-session-retry.js +3 -2
- package/dist/core/agent-session-retry.js.map +1 -1
- package/dist/core/agent-session-runtime.d.ts.map +1 -1
- package/dist/core/agent-session-runtime.js +7 -6
- package/dist/core/agent-session-runtime.js.map +1 -1
- package/dist/core/agent-session-services.d.ts +1 -1
- package/dist/core/agent-session-services.d.ts.map +1 -1
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/agent-session-tools.d.ts.map +1 -1
- package/dist/core/agent-session-tools.js +3 -2
- package/dist/core/agent-session-tools.js.map +1 -1
- package/dist/core/agent-session.d.ts +40 -2
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +142 -34
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/auth-guidance.d.ts.map +1 -1
- package/dist/core/auth-guidance.js +11 -5
- package/dist/core/auth-guidance.js.map +1 -1
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +9 -6
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/compaction/compaction.d.ts.map +1 -1
- package/dist/core/compaction/compaction.js +2 -1
- package/dist/core/compaction/compaction.js.map +1 -1
- package/dist/core/embedded-sdk.d.ts.map +1 -1
- package/dist/core/embedded-sdk.js +10 -6
- package/dist/core/embedded-sdk.js.map +1 -1
- package/dist/core/export-html/index.d.ts.map +1 -1
- package/dist/core/export-html/index.js +9 -4
- package/dist/core/export-html/index.js.map +1 -1
- package/dist/core/extensions/agent-composition.d.ts.map +1 -1
- package/dist/core/extensions/agent-composition.js +26 -19
- package/dist/core/extensions/agent-composition.js.map +1 -1
- package/dist/core/extensions/bootstrap-agent-loop.d.ts.map +1 -1
- package/dist/core/extensions/bootstrap-agent-loop.js +3 -2
- package/dist/core/extensions/bootstrap-agent-loop.js.map +1 -1
- package/dist/core/extensions/bootstrap-lifecycle.d.ts.map +1 -1
- package/dist/core/extensions/bootstrap-lifecycle.js +20 -17
- package/dist/core/extensions/bootstrap-lifecycle.js.map +1 -1
- package/dist/core/extensions/bootstrap-overflow-policy.d.ts.map +1 -1
- package/dist/core/extensions/bootstrap-overflow-policy.js +2 -1
- package/dist/core/extensions/bootstrap-overflow-policy.js.map +1 -1
- package/dist/core/extensions/bootstrap-retry-policy.d.ts.map +1 -1
- package/dist/core/extensions/bootstrap-retry-policy.js +2 -1
- package/dist/core/extensions/bootstrap-retry-policy.js.map +1 -1
- package/dist/core/extensions/bootstrap-skills.d.ts.map +1 -1
- package/dist/core/extensions/bootstrap-skills.js +7 -6
- package/dist/core/extensions/bootstrap-skills.js.map +1 -1
- package/dist/core/extensions/bootstrap-tools.d.ts.map +1 -1
- package/dist/core/extensions/bootstrap-tools.js +2 -1
- package/dist/core/extensions/bootstrap-tools.js.map +1 -1
- package/dist/core/extensions/capability-plugin.d.ts.map +1 -1
- package/dist/core/extensions/capability-plugin.js +37 -13
- package/dist/core/extensions/capability-plugin.js.map +1 -1
- package/dist/core/extensions/capability-runtime-events.d.ts.map +1 -1
- package/dist/core/extensions/capability-runtime-events.js +17 -13
- package/dist/core/extensions/capability-runtime-events.js.map +1 -1
- package/dist/core/extensions/capability-runtime-guards.d.ts.map +1 -1
- package/dist/core/extensions/capability-runtime-guards.js +16 -15
- package/dist/core/extensions/capability-runtime-guards.js.map +1 -1
- package/dist/core/extensions/capability-runtime-manifest.d.ts.map +1 -1
- package/dist/core/extensions/capability-runtime-manifest.js +52 -30
- package/dist/core/extensions/capability-runtime-manifest.js.map +1 -1
- package/dist/core/extensions/capability-runtime-validation.d.ts.map +1 -1
- package/dist/core/extensions/capability-runtime-validation.js +66 -65
- package/dist/core/extensions/capability-runtime-validation.js.map +1 -1
- package/dist/core/extensions/capability-runtime.d.ts.map +1 -1
- package/dist/core/extensions/capability-runtime.js +147 -127
- package/dist/core/extensions/capability-runtime.js.map +1 -1
- package/dist/core/extensions/compaction-memory-failure-mode.d.ts.map +1 -1
- package/dist/core/extensions/compaction-memory-failure-mode.js +3 -2
- package/dist/core/extensions/compaction-memory-failure-mode.js.map +1 -1
- package/dist/core/extensions/context-strategy-binding.d.ts.map +1 -1
- package/dist/core/extensions/context-strategy-binding.js +7 -4
- package/dist/core/extensions/context-strategy-binding.js.map +1 -1
- package/dist/core/extensions/lifecycle-catalog.d.ts.map +1 -1
- package/dist/core/extensions/lifecycle-catalog.js +290 -279
- package/dist/core/extensions/lifecycle-catalog.js.map +1 -1
- package/dist/core/extensions/lifecycle-delivery-queue.d.ts.map +1 -1
- package/dist/core/extensions/lifecycle-delivery-queue.js +3 -2
- package/dist/core/extensions/lifecycle-delivery-queue.js.map +1 -1
- package/dist/core/facade/coding-agent-facade.d.ts +6 -0
- package/dist/core/facade/coding-agent-facade.d.ts.map +1 -1
- package/dist/core/facade/coding-agent-facade.js +2 -0
- package/dist/core/facade/coding-agent-facade.js.map +1 -1
- package/dist/core/http-dispatcher.d.ts.map +1 -1
- package/dist/core/http-dispatcher.js +2 -1
- package/dist/core/http-dispatcher.js.map +1 -1
- package/dist/core/i18n/index.d.ts +14 -0
- package/dist/core/i18n/index.d.ts.map +1 -0
- package/dist/core/i18n/index.js +67 -0
- package/dist/core/i18n/index.js.map +1 -0
- package/dist/core/i18n/locales/en/example.d.ts +7 -0
- package/dist/core/i18n/locales/en/example.d.ts.map +1 -0
- package/dist/core/i18n/locales/en/example.js +7 -0
- package/dist/core/i18n/locales/en/example.js.map +1 -0
- package/dist/core/i18n/locales/zh-cn/cli.d.ts +8 -0
- package/dist/core/i18n/locales/zh-cn/cli.d.ts.map +1 -0
- package/dist/core/i18n/locales/zh-cn/cli.js +227 -0
- package/dist/core/i18n/locales/zh-cn/cli.js.map +1 -0
- package/dist/core/i18n/locales/zh-cn/common.d.ts +6 -0
- package/dist/core/i18n/locales/zh-cn/common.d.ts.map +1 -0
- package/dist/core/i18n/locales/zh-cn/common.js +6 -0
- package/dist/core/i18n/locales/zh-cn/common.js.map +1 -0
- package/dist/core/i18n/locales/zh-cn/core-contract-core.d.ts +13 -0
- package/dist/core/i18n/locales/zh-cn/core-contract-core.d.ts.map +1 -0
- package/dist/core/i18n/locales/zh-cn/core-contract-core.js +173 -0
- package/dist/core/i18n/locales/zh-cn/core-contract-core.js.map +1 -0
- package/dist/core/i18n/locales/zh-cn/core-contract-extensions.d.ts +12 -0
- package/dist/core/i18n/locales/zh-cn/core-contract-extensions.d.ts.map +1 -0
- package/dist/core/i18n/locales/zh-cn/core-contract-extensions.js +582 -0
- package/dist/core/i18n/locales/zh-cn/core-contract-extensions.js.map +1 -0
- package/dist/core/i18n/locales/zh-cn/core-contract-final.d.ts +9 -0
- package/dist/core/i18n/locales/zh-cn/core-contract-final.d.ts.map +1 -0
- package/dist/core/i18n/locales/zh-cn/core-contract-final.js +55 -0
- package/dist/core/i18n/locales/zh-cn/core-contract-final.js.map +1 -0
- package/dist/core/i18n/locales/zh-cn/core-contract-plugins.d.ts +11 -0
- package/dist/core/i18n/locales/zh-cn/core-contract-plugins.d.ts.map +1 -0
- package/dist/core/i18n/locales/zh-cn/core-contract-plugins.js +455 -0
- package/dist/core/i18n/locales/zh-cn/core-contract-plugins.js.map +1 -0
- package/dist/core/i18n/locales/zh-cn/core-errors.d.ts +9 -0
- package/dist/core/i18n/locales/zh-cn/core-errors.d.ts.map +1 -0
- package/dist/core/i18n/locales/zh-cn/core-errors.js +191 -0
- package/dist/core/i18n/locales/zh-cn/core-errors.js.map +1 -0
- package/dist/core/i18n/locales/zh-cn/example.d.ts +7 -0
- package/dist/core/i18n/locales/zh-cn/example.d.ts.map +1 -0
- package/dist/core/i18n/locales/zh-cn/example.js +10 -0
- package/dist/core/i18n/locales/zh-cn/example.js.map +1 -0
- package/dist/core/i18n/locales/zh-cn/index.d.ts +2 -0
- package/dist/core/i18n/locales/zh-cn/index.d.ts.map +1 -0
- package/dist/core/i18n/locales/zh-cn/index.js +41 -0
- package/dist/core/i18n/locales/zh-cn/index.js.map +1 -0
- package/dist/core/i18n/locales/zh-cn/interactive-mode.d.ts +10 -0
- package/dist/core/i18n/locales/zh-cn/interactive-mode.d.ts.map +1 -0
- package/dist/core/i18n/locales/zh-cn/interactive-mode.js +265 -0
- package/dist/core/i18n/locales/zh-cn/interactive-mode.js.map +1 -0
- package/dist/core/i18n/locales/zh-cn/keybindings.d.ts +11 -0
- package/dist/core/i18n/locales/zh-cn/keybindings.d.ts.map +1 -0
- package/dist/core/i18n/locales/zh-cn/keybindings.js +67 -0
- package/dist/core/i18n/locales/zh-cn/keybindings.js.map +1 -0
- package/dist/core/i18n/locales/zh-cn/slash-commands.d.ts +7 -0
- package/dist/core/i18n/locales/zh-cn/slash-commands.d.ts.map +1 -0
- package/dist/core/i18n/locales/zh-cn/slash-commands.js +39 -0
- package/dist/core/i18n/locales/zh-cn/slash-commands.js.map +1 -0
- package/dist/core/i18n/locales/zh-cn/tui-builtin.d.ts +10 -0
- package/dist/core/i18n/locales/zh-cn/tui-builtin.d.ts.map +1 -0
- package/dist/core/i18n/locales/zh-cn/tui-builtin.js +15 -0
- package/dist/core/i18n/locales/zh-cn/tui-builtin.js.map +1 -0
- package/dist/core/i18n/locales/zh-cn/tui-components-misc.d.ts +13 -0
- package/dist/core/i18n/locales/zh-cn/tui-components-misc.d.ts.map +1 -0
- package/dist/core/i18n/locales/zh-cn/tui-components-misc.js +102 -0
- package/dist/core/i18n/locales/zh-cn/tui-components-misc.js.map +1 -0
- package/dist/core/i18n/locales/zh-cn/tui-components-selectors.d.ts +12 -0
- package/dist/core/i18n/locales/zh-cn/tui-components-selectors.d.ts.map +1 -0
- package/dist/core/i18n/locales/zh-cn/tui-components-selectors.js +288 -0
- package/dist/core/i18n/locales/zh-cn/tui-components-selectors.js.map +1 -0
- package/dist/core/i18n/locales/zh-cn/tui-interactive-misc.d.ts +9 -0
- package/dist/core/i18n/locales/zh-cn/tui-interactive-misc.d.ts.map +1 -0
- package/dist/core/i18n/locales/zh-cn/tui-interactive-misc.js +79 -0
- package/dist/core/i18n/locales/zh-cn/tui-interactive-misc.js.map +1 -0
- package/dist/core/i18n/locales/zh-cn/tui-self-owned.d.ts +8 -0
- package/dist/core/i18n/locales/zh-cn/tui-self-owned.d.ts.map +1 -0
- package/dist/core/i18n/locales/zh-cn/tui-self-owned.js +72 -0
- package/dist/core/i18n/locales/zh-cn/tui-self-owned.js.map +1 -0
- package/dist/core/keybindings.d.ts +15 -0
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +18 -0
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/logger.d.ts.map +1 -1
- package/dist/core/logger.js +5 -1
- package/dist/core/logger.js.map +1 -1
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +2 -1
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-runtime.d.ts.map +1 -1
- package/dist/core/model-runtime.js +8 -4
- package/dist/core/model-runtime.js.map +1 -1
- package/dist/core/package-install-host.d.ts.map +1 -1
- package/dist/core/package-install-host.js +4 -3
- package/dist/core/package-install-host.js.map +1 -1
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js +15 -10
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/package-resource-collection.d.ts.map +1 -1
- package/dist/core/package-resource-collection.js +2 -1
- package/dist/core/package-resource-collection.js.map +1 -1
- package/dist/core/package-source.d.ts.map +1 -1
- package/dist/core/package-source.js +3 -2
- package/dist/core/package-source.js.map +1 -1
- package/dist/core/provider-composer.d.ts.map +1 -1
- package/dist/core/provider-composer.js +22 -13
- package/dist/core/provider-composer.js.map +1 -1
- package/dist/core/remote-catalog-provider.d.ts.map +1 -1
- package/dist/core/remote-catalog-provider.js +6 -2
- package/dist/core/remote-catalog-provider.js.map +1 -1
- package/dist/core/resolve-config-value.d.ts.map +1 -1
- package/dist/core/resolve-config-value.js +15 -5
- package/dist/core/resolve-config-value.js.map +1 -1
- package/dist/core/sdk.d.ts +19 -5
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +74 -54
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-cwd.d.ts.map +1 -1
- package/dist/core/session-cwd.js +5 -2
- package/dist/core/session-cwd.js.map +1 -1
- package/dist/core/session-export.d.ts.map +1 -1
- package/dist/core/session-export.js +2 -1
- package/dist/core/session-export.js.map +1 -1
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +39 -29
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/session-storage.d.ts.map +1 -1
- package/dist/core/session-storage.js +3 -3
- package/dist/core/session-storage.js.map +1 -1
- package/dist/core/settings-manager.d.ts +11 -0
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +27 -5
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +53 -32
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +25 -2
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +11 -7
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/edit-diff.d.ts.map +1 -1
- package/dist/core/tools/edit-diff.js +9 -4
- package/dist/core/tools/edit-diff.js.map +1 -1
- package/dist/core/tools/edit.d.ts.map +1 -1
- package/dist/core/tools/edit.js +4 -3
- package/dist/core/tools/edit.js.map +1 -1
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js +3 -2
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/output-accumulator.d.ts.map +1 -1
- package/dist/core/tools/output-accumulator.js +2 -1
- package/dist/core/tools/output-accumulator.js.map +1 -1
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +6 -2
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/tools/write.d.ts.map +1 -1
- package/dist/core/tools/write.js +2 -1
- package/dist/core/tools/write.js.map +1 -1
- package/dist/durable/durable-service.d.ts.map +1 -1
- package/dist/durable/durable-service.js +25 -18
- package/dist/durable/durable-service.js.map +1 -1
- package/dist/host/checkpoint-commit.d.ts.map +1 -1
- package/dist/host/checkpoint-commit.js +2 -1
- package/dist/host/checkpoint-commit.js.map +1 -1
- package/dist/host/manual-compaction.d.ts.map +1 -1
- package/dist/host/manual-compaction.js +2 -1
- package/dist/host/manual-compaction.js.map +1 -1
- package/dist/host/output-projection.d.ts +0 -13
- package/dist/host/output-projection.d.ts.map +1 -1
- package/dist/host/output-projection.js +16 -2
- package/dist/host/output-projection.js.map +1 -1
- package/dist/host/summary-retry.d.ts.map +1 -1
- package/dist/host/summary-retry.js +3 -2
- package/dist/host/summary-retry.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +94 -58
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/agents-view.d.ts.map +1 -1
- package/dist/modes/interactive/components/agents-view.js +18 -15
- package/dist/modes/interactive/components/agents-view.js.map +1 -1
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/assistant-message.js +6 -5
- package/dist/modes/interactive/components/assistant-message.js.map +1 -1
- package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/bash-execution.js +12 -7
- package/dist/modes/interactive/components/bash-execution.js.map +1 -1
- package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
- package/dist/modes/interactive/components/bordered-loader.js +2 -1
- package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
- package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/branch-summary-message.js +6 -5
- package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
- package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/compaction-summary-message.js +9 -5
- package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
- package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/config-selector.js +18 -15
- package/dist/modes/interactive/components/config-selector.js.map +1 -1
- package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-entry.js +2 -1
- package/dist/modes/interactive/components/custom-entry.js.map +1 -1
- package/dist/modes/interactive/components/dialog-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/dialog-editor.js +5 -4
- package/dist/modes/interactive/components/dialog-editor.js.map +1 -1
- package/dist/modes/interactive/components/dialog-input.d.ts.map +1 -1
- package/dist/modes/interactive/components/dialog-input.js +2 -1
- package/dist/modes/interactive/components/dialog-input.js.map +1 -1
- package/dist/modes/interactive/components/dialog-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/dialog-selector.js +4 -3
- package/dist/modes/interactive/components/dialog-selector.js.map +1 -1
- package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -1
- package/dist/modes/interactive/components/first-time-setup.js +11 -10
- package/dist/modes/interactive/components/first-time-setup.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +7 -4
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/index.d.ts +1 -0
- package/dist/modes/interactive/components/index.d.ts.map +1 -1
- package/dist/modes/interactive/components/index.js +1 -0
- package/dist/modes/interactive/components/index.js.map +1 -1
- package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
- package/dist/modes/interactive/components/keybinding-hints.js +3 -2
- package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
- package/dist/modes/interactive/components/login-dialog.js +12 -11
- package/dist/modes/interactive/components/login-dialog.js.map +1 -1
- package/dist/modes/interactive/components/mermaid.d.ts.map +1 -1
- package/dist/modes/interactive/components/mermaid.js +6 -2
- package/dist/modes/interactive/components/mermaid.js.map +1 -1
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.js +28 -16
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.js +10 -9
- package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
- package/dist/modes/interactive/components/plugin-manager-entry.d.ts.map +1 -1
- package/dist/modes/interactive/components/plugin-manager-entry.js +22 -13
- package/dist/modes/interactive/components/plugin-manager-entry.js.map +1 -1
- package/dist/modes/interactive/components/plugin-selection-entry.d.ts.map +1 -1
- package/dist/modes/interactive/components/plugin-selection-entry.js +27 -12
- package/dist/modes/interactive/components/plugin-selection-entry.js.map +1 -1
- package/dist/modes/interactive/components/queue-manager-selector.d.ts +60 -0
- package/dist/modes/interactive/components/queue-manager-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/queue-manager-selector.js +166 -0
- package/dist/modes/interactive/components/queue-manager-selector.js.map +1 -0
- package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.js +16 -14
- package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
- package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector.js +43 -31
- package/dist/modes/interactive/components/session-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +2 -0
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +113 -96
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-submenu.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-submenu.js +5 -4
- package/dist/modes/interactive/components/settings-submenu.js.map +1 -1
- package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/show-images-selector.js +3 -2
- package/dist/modes/interactive/components/show-images-selector.js.map +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.js +4 -3
- package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
- package/dist/modes/interactive/components/status-indicator.d.ts.map +1 -1
- package/dist/modes/interactive/components/status-indicator.js +14 -5
- package/dist/modes/interactive/components/status-indicator.js.map +1 -1
- package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/theme-selector.js +2 -1
- package/dist/modes/interactive/components/theme-selector.js.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.js +11 -4
- package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-execution.js +8 -3
- package/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/dist/modes/interactive/components/tree-list.d.ts.map +1 -1
- package/dist/modes/interactive/components/tree-list.js +7 -6
- package/dist/modes/interactive/components/tree-list.js.map +1 -1
- package/dist/modes/interactive/components/tree-render.d.ts.map +1 -1
- package/dist/modes/interactive/components/tree-render.js +28 -23
- package/dist/modes/interactive/components/tree-render.js.map +1 -1
- package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/tree-selector.js +9 -7
- package/dist/modes/interactive/components/tree-selector.js.map +1 -1
- package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/user-message-selector.js +5 -4
- package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
- package/dist/modes/interactive/components/workflow-view.d.ts.map +1 -1
- package/dist/modes/interactive/components/workflow-view.js +36 -21
- package/dist/modes/interactive/components/workflow-view.js.map +1 -1
- package/dist/modes/interactive/external-editor.d.ts.map +1 -1
- package/dist/modes/interactive/external-editor.js +2 -1
- package/dist/modes/interactive/external-editor.js.map +1 -1
- package/dist/modes/interactive/interactive-auth.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-auth.js +71 -40
- package/dist/modes/interactive/interactive-auth.js.map +1 -1
- package/dist/modes/interactive/interactive-commands.d.ts +1 -0
- package/dist/modes/interactive/interactive-commands.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-commands.js +3 -0
- package/dist/modes/interactive/interactive-commands.js.map +1 -1
- package/dist/modes/interactive/interactive-dialog-ui.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-dialog-ui.js +5 -5
- package/dist/modes/interactive/interactive-dialog-ui.js.map +1 -1
- package/dist/modes/interactive/interactive-format.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-format.js +34 -18
- package/dist/modes/interactive/interactive-format.js.map +1 -1
- package/dist/modes/interactive/interactive-helpers.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-helpers.js +7 -2
- package/dist/modes/interactive/interactive-helpers.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +4 -1
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +327 -243
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/interactive-selectors.d.ts +9 -0
- package/dist/modes/interactive/interactive-selectors.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-selectors.js +79 -25
- package/dist/modes/interactive/interactive-selectors.js.map +1 -1
- package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme-controller.js +5 -1
- package/dist/modes/interactive/theme/theme-controller.js.map +1 -1
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js +26 -23
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/dist/modes/json-event.d.ts.map +1 -1
- package/dist/modes/json-event.js +3 -2
- package/dist/modes/json-event.js.map +1 -1
- package/dist/modes/print-mode.d.ts.map +1 -1
- package/dist/modes/print-mode.js +3 -2
- package/dist/modes/print-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js +3 -2
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/package-manager-cli.d.ts.map +1 -1
- package/dist/package-manager-cli.js +28 -13
- package/dist/package-manager-cli.js.map +1 -1
- package/dist/plugins/ecosystem/catalog.d.ts.map +1 -1
- package/dist/plugins/ecosystem/catalog.js +3 -2
- package/dist/plugins/ecosystem/catalog.js.map +1 -1
- package/dist/plugins/ecosystem/cli.d.ts.map +1 -1
- package/dist/plugins/ecosystem/cli.js +2 -1
- package/dist/plugins/ecosystem/cli.js.map +1 -1
- package/dist/plugins/ecosystem/default-plugin-market.d.ts.map +1 -1
- package/dist/plugins/ecosystem/default-plugin-market.js +3 -2
- package/dist/plugins/ecosystem/default-plugin-market.js.map +1 -1
- package/dist/plugins/ecosystem/distribution.d.ts.map +1 -1
- package/dist/plugins/ecosystem/distribution.js +2 -1
- package/dist/plugins/ecosystem/distribution.js.map +1 -1
- package/dist/plugins/ecosystem/installer.d.ts.map +1 -1
- package/dist/plugins/ecosystem/installer.js +3 -2
- package/dist/plugins/ecosystem/installer.js.map +1 -1
- package/dist/plugins/ecosystem/node-disk-registry-source.d.ts.map +1 -1
- package/dist/plugins/ecosystem/node-disk-registry-source.js +20 -17
- package/dist/plugins/ecosystem/node-disk-registry-source.js.map +1 -1
- package/dist/plugins/ecosystem/node-distribution-host.d.ts.map +1 -1
- package/dist/plugins/ecosystem/node-distribution-host.js +35 -34
- package/dist/plugins/ecosystem/node-distribution-host.js.map +1 -1
- package/dist/plugins/ecosystem/node-npm-registry-source.d.ts.map +1 -1
- package/dist/plugins/ecosystem/node-npm-registry-source.js +35 -34
- package/dist/plugins/ecosystem/node-npm-registry-source.js.map +1 -1
- package/dist/plugins/ecosystem/node-package-install-host.d.ts.map +1 -1
- package/dist/plugins/ecosystem/node-package-install-host.js +9 -8
- package/dist/plugins/ecosystem/node-package-install-host.js.map +1 -1
- package/dist/plugins/ecosystem/node-package-install-persistence.d.ts.map +1 -1
- package/dist/plugins/ecosystem/node-package-install-persistence.js +4 -3
- package/dist/plugins/ecosystem/node-package-install-persistence.js.map +1 -1
- package/dist/plugins/ecosystem/node-plugin-bootstrap.d.ts.map +1 -1
- package/dist/plugins/ecosystem/node-plugin-bootstrap.js +21 -5
- package/dist/plugins/ecosystem/node-plugin-bootstrap.js.map +1 -1
- package/dist/plugins/ecosystem/node-plugin-trust-root.d.ts.map +1 -1
- package/dist/plugins/ecosystem/node-plugin-trust-root.js +10 -9
- package/dist/plugins/ecosystem/node-plugin-trust-root.js.map +1 -1
- package/dist/plugins/ecosystem/node-registry-source.d.ts.map +1 -1
- package/dist/plugins/ecosystem/node-registry-source.js +31 -30
- package/dist/plugins/ecosystem/node-registry-source.js.map +1 -1
- package/dist/plugins/ecosystem/node-release-package-source.d.ts.map +1 -1
- package/dist/plugins/ecosystem/node-release-package-source.js +30 -29
- package/dist/plugins/ecosystem/node-release-package-source.js.map +1 -1
- package/dist/plugins/ecosystem/node-tar-writer.d.ts.map +1 -1
- package/dist/plugins/ecosystem/node-tar-writer.js +11 -10
- package/dist/plugins/ecosystem/node-tar-writer.js.map +1 -1
- package/dist/plugins/ecosystem/node-url-package-source.d.ts.map +1 -1
- package/dist/plugins/ecosystem/node-url-package-source.js +21 -20
- package/dist/plugins/ecosystem/node-url-package-source.js.map +1 -1
- package/dist/plugins/ecosystem/plugin-acquisition.d.ts.map +1 -1
- package/dist/plugins/ecosystem/plugin-acquisition.js +3 -2
- package/dist/plugins/ecosystem/plugin-acquisition.js.map +1 -1
- package/dist/plugins/ecosystem/registry-cli-adapter.d.ts.map +1 -1
- package/dist/plugins/ecosystem/registry-cli-adapter.js +2 -1
- package/dist/plugins/ecosystem/registry-cli-adapter.js.map +1 -1
- package/dist/plugins/ecosystem/registry.d.ts.map +1 -1
- package/dist/plugins/ecosystem/registry.js +35 -32
- package/dist/plugins/ecosystem/registry.js.map +1 -1
- package/dist/plugins/ecosystem/resolver.d.ts.map +1 -1
- package/dist/plugins/ecosystem/resolver.js +3 -2
- package/dist/plugins/ecosystem/resolver.js.map +1 -1
- package/dist/plugins/ecosystem/selection-store.d.ts.map +1 -1
- package/dist/plugins/ecosystem/selection-store.js +11 -10
- package/dist/plugins/ecosystem/selection-store.js.map +1 -1
- package/dist/plugins/ecosystem/selection.d.ts.map +1 -1
- package/dist/plugins/ecosystem/selection.js +8 -7
- package/dist/plugins/ecosystem/selection.js.map +1 -1
- package/dist/plugins/ecosystem/state.d.ts.map +1 -1
- package/dist/plugins/ecosystem/state.js +24 -23
- package/dist/plugins/ecosystem/state.js.map +1 -1
- package/dist/plugins/ecosystem/updates.d.ts.map +1 -1
- package/dist/plugins/ecosystem/updates.js +5 -4
- package/dist/plugins/ecosystem/updates.js.map +1 -1
- package/dist/plugins/mcp-http.d.ts +0 -17
- package/dist/plugins/mcp-http.d.ts.map +1 -1
- package/dist/plugins/mcp-http.js +30 -7
- package/dist/plugins/mcp-http.js.map +1 -1
- package/dist/plugins/plugin-supervisor.d.ts.map +1 -1
- package/dist/plugins/plugin-supervisor.js +19 -1
- package/dist/plugins/plugin-supervisor.js.map +1 -1
- package/dist/profile/first-roles.d.ts.map +1 -1
- package/dist/profile/first-roles.js +10 -1
- package/dist/profile/first-roles.js.map +1 -1
- package/dist/profile/goal-plugin.d.ts.map +1 -1
- package/dist/profile/goal-plugin.js +24 -5
- package/dist/profile/goal-plugin.js.map +1 -1
- package/dist/profile/identity.d.ts.map +1 -1
- package/dist/profile/identity.js +7 -6
- package/dist/profile/identity.js.map +1 -1
- package/dist/profile/lock.d.ts.map +1 -1
- package/dist/profile/lock.js +15 -1
- package/dist/profile/lock.js.map +1 -1
- package/dist/profile/plan-plugin.d.ts.map +1 -1
- package/dist/profile/plan-plugin.js +26 -13
- package/dist/profile/plan-plugin.js.map +1 -1
- package/dist/profile/plugin-profiles.d.ts.map +1 -1
- package/dist/profile/plugin-profiles.js +2 -1
- package/dist/profile/plugin-profiles.js.map +1 -1
- package/dist/profile/policy-manifest.d.ts.map +1 -1
- package/dist/profile/policy-manifest.js +5 -4
- package/dist/profile/policy-manifest.js.map +1 -1
- package/dist/profile/profile-registry.d.ts +0 -12
- package/dist/profile/profile-registry.d.ts.map +1 -1
- package/dist/profile/profile-registry.js +14 -1
- package/dist/profile/profile-registry.js.map +1 -1
- package/dist/profile/role-catalog.d.ts +0 -1
- package/dist/profile/role-catalog.d.ts.map +1 -1
- package/dist/profile/role-catalog.js +17 -15
- package/dist/profile/role-catalog.js.map +1 -1
- package/dist/profile/role-orchestrator.d.ts.map +1 -1
- package/dist/profile/role-orchestrator.js +8 -7
- package/dist/profile/role-orchestrator.js.map +1 -1
- package/dist/profile/role-runner.d.ts.map +1 -1
- package/dist/profile/role-runner.js +3 -2
- package/dist/profile/role-runner.js.map +1 -1
- package/dist/profile/root-facade.d.ts.map +1 -1
- package/dist/profile/root-facade.js +2 -1
- package/dist/profile/root-facade.js.map +1 -1
- package/dist/profile/skill-discovery-wiring.d.ts.map +1 -1
- package/dist/profile/skill-discovery-wiring.js +7 -2
- package/dist/profile/skill-discovery-wiring.js.map +1 -1
- package/dist/profile/state-store.d.ts.map +1 -1
- package/dist/profile/state-store.js +13 -9
- package/dist/profile/state-store.js.map +1 -1
- package/dist/profile/todo-plugin.d.ts.map +1 -1
- package/dist/profile/todo-plugin.js +9 -4
- package/dist/profile/todo-plugin.js.map +1 -1
- package/dist/profiles/builtin-suites.d.ts +13 -6
- package/dist/profiles/builtin-suites.d.ts.map +1 -1
- package/dist/profiles/builtin-suites.js +15 -6
- package/dist/profiles/builtin-suites.js.map +1 -1
- package/dist/profiles/suite-loader.d.ts +25 -1
- package/dist/profiles/suite-loader.d.ts.map +1 -1
- package/dist/profiles/suite-loader.js +34 -9
- package/dist/profiles/suite-loader.js.map +1 -1
- package/dist/remote/server-entry.d.ts.map +1 -1
- package/dist/remote/server-entry.js +3 -2
- package/dist/remote/server-entry.js.map +1 -1
- package/dist/remote/session-source.d.ts.map +1 -1
- package/dist/remote/session-source.js +8 -4
- package/dist/remote/session-source.js.map +1 -1
- package/dist/share/session-share.d.ts.map +1 -1
- package/dist/share/session-share.js +14 -2
- package/dist/share/session-share.js.map +1 -1
- package/dist/testing/plugin-testkit.d.ts.map +1 -1
- package/dist/testing/plugin-testkit.js +4 -3
- package/dist/testing/plugin-testkit.js.map +1 -1
- package/dist/testing/runtime-delivery-queue.d.ts.map +1 -1
- package/dist/testing/runtime-delivery-queue.js +2 -1
- package/dist/testing/runtime-delivery-queue.js.map +1 -1
- package/dist/testing/session-plugin-testkit.d.ts.map +1 -1
- package/dist/testing/session-plugin-testkit.js +10 -7
- package/dist/testing/session-plugin-testkit.js.map +1 -1
- package/dist/utils/ansi.d.ts.map +1 -1
- package/dist/utils/ansi.js +2 -1
- package/dist/utils/ansi.js.map +1 -1
- package/dist/utils/clipboard.d.ts.map +1 -1
- package/dist/utils/clipboard.js +7 -6
- package/dist/utils/clipboard.js.map +1 -1
- package/dist/utils/image-resize-worker.d.ts.map +1 -1
- package/dist/utils/image-resize-worker.js +3 -2
- package/dist/utils/image-resize-worker.js.map +1 -1
- package/dist/utils/shell.d.ts.map +1 -1
- package/dist/utils/shell.js +9 -8
- package/dist/utils/shell.js.map +1 -1
- package/dist/utils/tools-manager.d.ts.map +1 -1
- package/dist/utils/tools-manager.js +23 -13
- package/dist/utils/tools-manager.js.map +1 -1
- package/dist/utils/version-check.d.ts.map +1 -1
- package/dist/utils/version-check.js +5 -1
- package/dist/utils/version-check.js.map +1 -1
- package/docs/keybindings.md +3 -0
- package/docs/quickstart.md +1 -1
- package/docs/settings.md +1 -0
- package/docs/terminal-setup.md +2 -3
- package/docs/usage.md +6 -5
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/examples/extensions/with-deps/plugin.json +1 -1
- package/package.json +1 -1
- package/dist/bundle/chunks/chunk-EALJ5DDX.js +0 -1452
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* facts shared by an embedded SDK binding and a service binding; it does not
|
|
6
6
|
* import either binding or a runtime Agent object.
|
|
7
7
|
*/
|
|
8
|
+
import { t } from "./i18n/index.js";
|
|
8
9
|
export const AGENT_CAPABILITY_CONTRACT_ID = "agent-forge/agent-capability-contract";
|
|
9
10
|
export const AGENT_CAPABILITY_CONTRACT_VERSION = 1;
|
|
10
11
|
/** Shared error-code registry for the canonical Agent contract. Extensions may use namespaced codes. */
|
|
@@ -82,7 +83,7 @@ function isPlainRecord(value) {
|
|
|
82
83
|
}
|
|
83
84
|
function assertPlainRecord(value, label) {
|
|
84
85
|
if (!isPlainRecord(value))
|
|
85
|
-
throw new Error(
|
|
86
|
+
throw new Error(t("{label} must be a plain object", { label }));
|
|
86
87
|
}
|
|
87
88
|
function assertExactKeys(value, required, optional, label) {
|
|
88
89
|
const allowed = new Set([...required, ...optional]);
|
|
@@ -90,24 +91,24 @@ function assertExactKeys(value, required, optional, label) {
|
|
|
90
91
|
.filter((key) => !allowed.has(key))
|
|
91
92
|
.sort();
|
|
92
93
|
if (unsupported.length > 0)
|
|
93
|
-
throw new Error(
|
|
94
|
+
throw new Error(t("{label} has unsupported fields: {fields}", { label, fields: unsupported.join(", ") }));
|
|
94
95
|
for (const key of required) {
|
|
95
96
|
if (!(key in value))
|
|
96
|
-
throw new Error(
|
|
97
|
+
throw new Error(t("{label} is missing required field: {key}", { label, key }));
|
|
97
98
|
}
|
|
98
99
|
}
|
|
99
100
|
function assertNonEmptyString(value, label) {
|
|
100
101
|
if (typeof value !== "string" || value.trim().length === 0)
|
|
101
|
-
throw new Error(
|
|
102
|
+
throw new Error(t("{label} must be a non-empty string", { label }));
|
|
102
103
|
}
|
|
103
104
|
function assertPositiveSafeInteger(value, label) {
|
|
104
105
|
if (typeof value !== "number" || !Number.isSafeInteger(value) || value < 1) {
|
|
105
|
-
throw new Error(
|
|
106
|
+
throw new Error(t("{label} must be a positive safe integer", { label }));
|
|
106
107
|
}
|
|
107
108
|
}
|
|
108
109
|
function assertNonNegativeSafeInteger(value, label) {
|
|
109
110
|
if (typeof value !== "number" || !Number.isSafeInteger(value) || value < 0) {
|
|
110
|
-
throw new Error(
|
|
111
|
+
throw new Error(t("{label} must be a non-negative safe integer", { label }));
|
|
111
112
|
}
|
|
112
113
|
}
|
|
113
114
|
function assertJsonValue(value, label, seen = new WeakSet()) {
|
|
@@ -116,12 +117,12 @@ function assertJsonValue(value, label, seen = new WeakSet()) {
|
|
|
116
117
|
if (typeof value === "number") {
|
|
117
118
|
if (Number.isFinite(value))
|
|
118
119
|
return;
|
|
119
|
-
throw new Error(
|
|
120
|
+
throw new Error(t("{label} must contain finite JSON numbers", { label }));
|
|
120
121
|
}
|
|
121
122
|
if (typeof value !== "object")
|
|
122
|
-
throw new Error(
|
|
123
|
+
throw new Error(t("{label} must be JSON-compatible", { label }));
|
|
123
124
|
if (seen.has(value))
|
|
124
|
-
throw new Error(
|
|
125
|
+
throw new Error(t("{label} must not contain cycles", { label }));
|
|
125
126
|
seen.add(value);
|
|
126
127
|
if (Array.isArray(value)) {
|
|
127
128
|
for (const [index, child] of value.entries())
|
|
@@ -129,7 +130,7 @@ function assertJsonValue(value, label, seen = new WeakSet()) {
|
|
|
129
130
|
}
|
|
130
131
|
else {
|
|
131
132
|
if (!isPlainRecord(value))
|
|
132
|
-
throw new Error(
|
|
133
|
+
throw new Error(t("{label} must contain only plain JSON objects", { label }));
|
|
133
134
|
for (const [key, child] of Object.entries(value))
|
|
134
135
|
assertJsonValue(child, `${label}.${key}`, seen);
|
|
135
136
|
}
|
|
@@ -159,13 +160,16 @@ function capabilitySort(left, right) {
|
|
|
159
160
|
}
|
|
160
161
|
function validateCapabilityRefs(value, label) {
|
|
161
162
|
if (!Array.isArray(value))
|
|
162
|
-
throw new Error(
|
|
163
|
+
throw new Error(t("{label} must be an array", { label }));
|
|
163
164
|
const refs = value.map((item, index) => validateCapabilityRefV1(item, `${label}[${index}]`));
|
|
164
165
|
const seen = new Set();
|
|
165
166
|
for (const ref of refs) {
|
|
166
167
|
const key = `${ref.id}\u0000${ref.version}`;
|
|
167
168
|
if (seen.has(key))
|
|
168
|
-
throw new Error(
|
|
169
|
+
throw new Error(t("{label} contains duplicate capability: {capability}", {
|
|
170
|
+
label,
|
|
171
|
+
capability: `${ref.id}@${ref.version}`,
|
|
172
|
+
}));
|
|
169
173
|
seen.add(key);
|
|
170
174
|
}
|
|
171
175
|
return Object.freeze(refs.sort(capabilitySort));
|
|
@@ -177,7 +181,7 @@ function validateHostTransport(value, label) {
|
|
|
177
181
|
value !== "rpc" &&
|
|
178
182
|
value !== "unix" &&
|
|
179
183
|
value !== "websocket") {
|
|
180
|
-
throw new Error(
|
|
184
|
+
throw new Error(t("{label} is invalid", { label }));
|
|
181
185
|
}
|
|
182
186
|
}
|
|
183
187
|
export function validateCapabilityRefV1(value, label = "Capability reference") {
|
|
@@ -194,23 +198,23 @@ export function validateHostContextV1(value) {
|
|
|
194
198
|
assertPlainRecord(value, "Host context");
|
|
195
199
|
assertExactKeys(value, ["mode", "features", "transports"], [], "Host context");
|
|
196
200
|
if (value.mode !== "readonly" && value.mode !== "full-control")
|
|
197
|
-
throw new Error("Host context.mode is invalid");
|
|
201
|
+
throw new Error(t("Host context.mode is invalid"));
|
|
198
202
|
if (!Array.isArray(value.features))
|
|
199
|
-
throw new Error("Host context.features must be an array");
|
|
203
|
+
throw new Error(t("Host context.features must be an array"));
|
|
200
204
|
const features = value.features.map((feature, index) => {
|
|
201
205
|
assertNonEmptyString(feature, `Host context.features[${index}]`);
|
|
202
206
|
return feature;
|
|
203
207
|
});
|
|
204
208
|
if (new Set(features).size !== features.length)
|
|
205
|
-
throw new Error("Host context.features must not contain duplicates");
|
|
209
|
+
throw new Error(t("Host context.features must not contain duplicates"));
|
|
206
210
|
if (!Array.isArray(value.transports))
|
|
207
|
-
throw new Error("Host context.transports must be an array");
|
|
211
|
+
throw new Error(t("Host context.transports must be an array"));
|
|
208
212
|
const transports = value.transports.map((transport, index) => {
|
|
209
213
|
validateHostTransport(transport, `Host context.transports[${index}]`);
|
|
210
214
|
return transport;
|
|
211
215
|
});
|
|
212
216
|
if (new Set(transports).size !== transports.length)
|
|
213
|
-
throw new Error("Host context.transports must not contain duplicates");
|
|
217
|
+
throw new Error(t("Host context.transports must not contain duplicates"));
|
|
214
218
|
return detachedFreeze({
|
|
215
219
|
mode: value.mode,
|
|
216
220
|
features: [...features].sort(),
|
|
@@ -255,34 +259,34 @@ export function validateContractCompatibilityResultV1(value) {
|
|
|
255
259
|
assertPlainRecord(value, "Contract compatibility result");
|
|
256
260
|
assertExactKeys(value, ["version", "compatible", "issues"], [], "Contract compatibility result");
|
|
257
261
|
if (value.version !== 1)
|
|
258
|
-
throw new Error("Contract compatibility result.version must be 1");
|
|
262
|
+
throw new Error(t("Contract compatibility result.version must be 1"));
|
|
259
263
|
if (typeof value.compatible !== "boolean")
|
|
260
|
-
throw new Error("Contract compatibility result.compatible must be boolean");
|
|
264
|
+
throw new Error(t("Contract compatibility result.compatible must be boolean"));
|
|
261
265
|
if (!Array.isArray(value.issues))
|
|
262
|
-
throw new Error("Contract compatibility result.issues must be an array");
|
|
266
|
+
throw new Error(t("Contract compatibility result.issues must be an array"));
|
|
263
267
|
if (value.compatible && value.issues.length > 0) {
|
|
264
|
-
throw new Error("Contract compatibility result.compatible must be false when issues exist");
|
|
268
|
+
throw new Error(t("Contract compatibility result.compatible must be false when issues exist"));
|
|
265
269
|
}
|
|
266
270
|
if (!value.compatible && value.issues.length === 0) {
|
|
267
|
-
throw new Error("Contract compatibility result.compatible must be true when no issues exist");
|
|
271
|
+
throw new Error(t("Contract compatibility result.compatible must be true when no issues exist"));
|
|
268
272
|
}
|
|
269
273
|
const issues = value.issues.map((entry, index) => {
|
|
270
274
|
assertPlainRecord(entry, `Contract compatibility result.issues[${index}]`);
|
|
271
275
|
assertExactKeys(entry, ["code", "error"], ["missingFeatures", "missingTransports", "missingCapabilities"], `Contract compatibility result.issues[${index}]`);
|
|
272
276
|
if (!CONTRACT_COMPATIBILITY_ISSUE_CODES_V1.includes(entry.code)) {
|
|
273
|
-
throw new Error(
|
|
277
|
+
throw new Error(t("Contract compatibility result.issues[{index}].code is invalid", { index }));
|
|
274
278
|
}
|
|
275
279
|
const error = validateErrorEnvelopeV1(entry.error);
|
|
276
280
|
const missingFeatures = entry.missingFeatures;
|
|
277
281
|
if (missingFeatures !== undefined) {
|
|
278
282
|
if (!Array.isArray(missingFeatures) || missingFeatures.some((item) => typeof item !== "string")) {
|
|
279
|
-
throw new Error(
|
|
283
|
+
throw new Error(t("Contract compatibility result.issues[{index}].missingFeatures must be strings", { index }));
|
|
280
284
|
}
|
|
281
285
|
}
|
|
282
286
|
const missingTransports = entry.missingTransports;
|
|
283
287
|
if (missingTransports !== undefined) {
|
|
284
288
|
if (!Array.isArray(missingTransports) || missingTransports.some((item) => typeof item !== "string")) {
|
|
285
|
-
throw new Error(
|
|
289
|
+
throw new Error(t("Contract compatibility result.issues[{index}].missingTransports must be strings", { index }));
|
|
286
290
|
}
|
|
287
291
|
}
|
|
288
292
|
const missingCapabilities = entry.missingCapabilities;
|
|
@@ -314,10 +318,10 @@ export function validateAgentCapabilityContractV1(value) {
|
|
|
314
318
|
assertPlainRecord(value, "Agent capability contract");
|
|
315
319
|
assertExactKeys(value, ["contractId", "version", "capabilities", "hostContext"], [], "Agent capability contract");
|
|
316
320
|
if (value.contractId !== AGENT_CAPABILITY_CONTRACT_ID) {
|
|
317
|
-
throw new Error(
|
|
321
|
+
throw new Error(t("Agent capability contract.contractId must be {contractId}", { contractId: AGENT_CAPABILITY_CONTRACT_ID }));
|
|
318
322
|
}
|
|
319
323
|
if (value.version !== 1)
|
|
320
|
-
throw new Error("Agent capability contract.version must be 1");
|
|
324
|
+
throw new Error(t("Agent capability contract.version must be 1"));
|
|
321
325
|
const capabilities = validateCapabilityRefs(value.capabilities, "Agent capability contract.capabilities");
|
|
322
326
|
const hostContext = validateHostContextV1(value.hostContext);
|
|
323
327
|
return detachedFreeze({ contractId: value.contractId, version: 1, capabilities, hostContext });
|
|
@@ -333,13 +337,13 @@ export function validateAgentProfileV1(value) {
|
|
|
333
337
|
assertNonEmptyString(value.rootAgent, "Agent profile.rootAgent");
|
|
334
338
|
const validatePluginIds = (candidate, label) => {
|
|
335
339
|
if (!Array.isArray(candidate))
|
|
336
|
-
throw new Error(
|
|
340
|
+
throw new Error(t("{label} must be an array", { label }));
|
|
337
341
|
const ids = candidate.map((id, index) => {
|
|
338
342
|
assertNonEmptyString(id, `${label}[${index}]`);
|
|
339
343
|
return id;
|
|
340
344
|
});
|
|
341
345
|
if (new Set(ids).size !== ids.length)
|
|
342
|
-
throw new Error(
|
|
346
|
+
throw new Error(t("{label} must not contain duplicates", { label }));
|
|
343
347
|
return Object.freeze([...ids].sort());
|
|
344
348
|
};
|
|
345
349
|
const requiredPlugins = validatePluginIds(value.requiredPlugins, "Agent profile.requiredPlugins");
|
|
@@ -347,7 +351,7 @@ export function validateAgentProfileV1(value) {
|
|
|
347
351
|
? undefined
|
|
348
352
|
: validatePluginIds(value.optionalPlugins, "Agent profile.optionalPlugins");
|
|
349
353
|
if (optionalPlugins?.some((id) => requiredPlugins.includes(id))) {
|
|
350
|
-
throw new Error("Agent profile.optionalPlugins must not overlap requiredPlugins");
|
|
354
|
+
throw new Error(t("Agent profile.optionalPlugins must not overlap requiredPlugins"));
|
|
351
355
|
}
|
|
352
356
|
if (value.defaults !== undefined)
|
|
353
357
|
assertJsonValue(value.defaults, "Agent profile.defaults");
|
|
@@ -374,7 +378,7 @@ export function validateArtifactRefV1(value) {
|
|
|
374
378
|
if (value.sizeBytes !== undefined)
|
|
375
379
|
assertNonNegativeSafeInteger(value.sizeBytes, "Artifact reference.sizeBytes");
|
|
376
380
|
if (typeof value.truncated !== "boolean")
|
|
377
|
-
throw new Error("Artifact reference.truncated must be boolean");
|
|
381
|
+
throw new Error(t("Artifact reference.truncated must be boolean"));
|
|
378
382
|
assertNonNegativeSafeInteger(value.createdAt, "Artifact reference.createdAt");
|
|
379
383
|
return detachedFreeze({
|
|
380
384
|
sessionId: value.sessionId,
|
|
@@ -438,13 +442,13 @@ export function checkContractCompatibilityV1(candidateInput, requirementsInput)
|
|
|
438
442
|
}
|
|
439
443
|
function validateAgentRole(value, label) {
|
|
440
444
|
if (value !== "root-agent-controller" && value !== "child-agent-controller")
|
|
441
|
-
throw new Error(
|
|
445
|
+
throw new Error(t("{label} is invalid", { label }));
|
|
442
446
|
}
|
|
443
447
|
export function validateAgentDefinitionSnapshotV1(value) {
|
|
444
448
|
assertPlainRecord(value, "Agent definition snapshot");
|
|
445
449
|
assertExactKeys(value, ["version", "id", "definitionVersion", "role", "capabilities"], ["owner"], "Agent definition snapshot");
|
|
446
450
|
if (value.version !== 1)
|
|
447
|
-
throw new Error("Agent definition snapshot.version must be 1");
|
|
451
|
+
throw new Error(t("Agent definition snapshot.version must be 1"));
|
|
448
452
|
assertNonEmptyString(value.id, "Agent definition snapshot.id");
|
|
449
453
|
assertPositiveSafeInteger(value.definitionVersion, "Agent definition snapshot.definitionVersion");
|
|
450
454
|
validateAgentRole(value.role, "Agent definition snapshot.role");
|
|
@@ -467,7 +471,7 @@ export function validateAgentInstanceSnapshotV1(value) {
|
|
|
467
471
|
assertPlainRecord(value, "Agent instance snapshot");
|
|
468
472
|
assertExactKeys(value, ["version", "id", "definitionId", "definitionVersion", "role", "status", "revision"], ["parentInstanceId", "leaseOwner"], "Agent instance snapshot");
|
|
469
473
|
if (value.version !== 1)
|
|
470
|
-
throw new Error("Agent instance snapshot.version must be 1");
|
|
474
|
+
throw new Error(t("Agent instance snapshot.version must be 1"));
|
|
471
475
|
assertNonEmptyString(value.id, "Agent instance snapshot.id");
|
|
472
476
|
assertNonEmptyString(value.definitionId, "Agent instance snapshot.definitionId");
|
|
473
477
|
assertPositiveSafeInteger(value.definitionVersion, "Agent instance snapshot.definitionVersion");
|
|
@@ -478,7 +482,7 @@ export function validateAgentInstanceSnapshotV1(value) {
|
|
|
478
482
|
value.status !== "failed" &&
|
|
479
483
|
value.status !== "cancelled" &&
|
|
480
484
|
value.status !== "disposed") {
|
|
481
|
-
throw new Error("Agent instance snapshot.status is invalid");
|
|
485
|
+
throw new Error(t("Agent instance snapshot.status is invalid"));
|
|
482
486
|
}
|
|
483
487
|
assertNonNegativeSafeInteger(value.revision, "Agent instance snapshot.revision");
|
|
484
488
|
if (value.parentInstanceId !== undefined)
|
|
@@ -504,13 +508,13 @@ export function validateSessionRevisionV1(value) {
|
|
|
504
508
|
assertPlainRecord(value, "Session revision");
|
|
505
509
|
assertExactKeys(value, ["version", "sessionId", "sequence", "leafId"], [], "Session revision");
|
|
506
510
|
if (value.version !== 1)
|
|
507
|
-
throw new Error("Session revision.version must be 1");
|
|
511
|
+
throw new Error(t("Session revision.version must be 1"));
|
|
508
512
|
assertNonEmptyString(value.sessionId, "Session revision.sessionId");
|
|
509
513
|
assertNonNegativeSafeInteger(value.sequence, "Session revision.sequence");
|
|
510
514
|
if (value.leafId !== null && value.leafId !== undefined)
|
|
511
515
|
assertNonEmptyString(value.leafId, "Session revision.leafId");
|
|
512
516
|
if (value.leafId === undefined)
|
|
513
|
-
throw new Error("Session revision.leafId is required");
|
|
517
|
+
throw new Error(t("Session revision.leafId is required"));
|
|
514
518
|
return detachedFreeze({
|
|
515
519
|
version: 1,
|
|
516
520
|
sessionId: value.sessionId,
|
|
@@ -525,11 +529,11 @@ export function validateSessionSnapshotV1(value) {
|
|
|
525
529
|
assertPlainRecord(value, "Session snapshot");
|
|
526
530
|
assertExactKeys(value, ["version", "sessionId", "revision"], [], "Session snapshot");
|
|
527
531
|
if (value.version !== 1)
|
|
528
|
-
throw new Error("Session snapshot.version must be 1");
|
|
532
|
+
throw new Error(t("Session snapshot.version must be 1"));
|
|
529
533
|
assertNonEmptyString(value.sessionId, "Session snapshot.sessionId");
|
|
530
534
|
const revision = validateSessionRevisionV1(value.revision);
|
|
531
535
|
if (revision.sessionId !== value.sessionId)
|
|
532
|
-
throw new Error("Session snapshot.revision.sessionId must match sessionId");
|
|
536
|
+
throw new Error(t("Session snapshot.revision.sessionId must match sessionId"));
|
|
533
537
|
return detachedFreeze({ version: 1, sessionId: value.sessionId, revision });
|
|
534
538
|
}
|
|
535
539
|
export function buildSessionSnapshotV1(input) {
|
|
@@ -539,12 +543,12 @@ export function validateErrorEnvelopeV1(value) {
|
|
|
539
543
|
assertPlainRecord(value, "Error envelope");
|
|
540
544
|
assertExactKeys(value, ["version", "code", "message", "retryable"], ["details", "name"], "Error envelope");
|
|
541
545
|
if (value.version !== 1)
|
|
542
|
-
throw new Error("Error envelope.version must be 1");
|
|
546
|
+
throw new Error(t("Error envelope.version must be 1"));
|
|
543
547
|
assertNonEmptyString(value.code, "Error envelope.code");
|
|
544
548
|
if (typeof value.message !== "string")
|
|
545
|
-
throw new Error("Error envelope.message must be a string");
|
|
549
|
+
throw new Error(t("Error envelope.message must be a string"));
|
|
546
550
|
if (typeof value.retryable !== "boolean")
|
|
547
|
-
throw new Error("Error envelope.retryable must be a boolean");
|
|
551
|
+
throw new Error(t("Error envelope.retryable must be a boolean"));
|
|
548
552
|
if (value.name !== undefined)
|
|
549
553
|
assertNonEmptyString(value.name, "Error envelope.name");
|
|
550
554
|
if (value.details !== undefined)
|
|
@@ -563,16 +567,16 @@ export function buildErrorEnvelopeV1(input) {
|
|
|
563
567
|
}
|
|
564
568
|
function validateOperationTerminalStatus(value, label) {
|
|
565
569
|
if (value !== "succeeded" && value !== "failed" && value !== "cancelled" && value !== "timed_out") {
|
|
566
|
-
throw new Error(
|
|
570
|
+
throw new Error(t("{label} is invalid", { label }));
|
|
567
571
|
}
|
|
568
572
|
}
|
|
569
573
|
export function validateOperationTerminalV1(value) {
|
|
570
574
|
assertPlainRecord(value, "Operation terminal");
|
|
571
575
|
if (!("version" in value) || !("status" in value)) {
|
|
572
|
-
throw new Error("Operation terminal is missing required field: version or status");
|
|
576
|
+
throw new Error(t("Operation terminal is missing required field: version or status"));
|
|
573
577
|
}
|
|
574
578
|
if (value.version !== 1)
|
|
575
|
-
throw new Error("Operation terminal.version must be 1");
|
|
579
|
+
throw new Error(t("Operation terminal.version must be 1"));
|
|
576
580
|
validateOperationTerminalStatus(value.status, "Operation terminal.status");
|
|
577
581
|
if (value.status === "succeeded") {
|
|
578
582
|
assertExactKeys(value, ["version", "status"], ["result"], "Operation terminal");
|
|
@@ -595,7 +599,7 @@ export function validateOperationSnapshotV1(value) {
|
|
|
595
599
|
assertPlainRecord(value, "Operation snapshot");
|
|
596
600
|
assertExactKeys(value, ["version", "operationId", "kind", "status"], ["terminal", "instanceId", "sessionId", "inputRevision"], "Operation snapshot");
|
|
597
601
|
if (value.version !== 1)
|
|
598
|
-
throw new Error("Operation snapshot.version must be 1");
|
|
602
|
+
throw new Error(t("Operation snapshot.version must be 1"));
|
|
599
603
|
assertNonEmptyString(value.operationId, "Operation snapshot.operationId");
|
|
600
604
|
assertNonEmptyString(value.kind, "Operation snapshot.kind");
|
|
601
605
|
if (value.status !== "queued" &&
|
|
@@ -604,24 +608,24 @@ export function validateOperationSnapshotV1(value) {
|
|
|
604
608
|
value.status !== "failed" &&
|
|
605
609
|
value.status !== "cancelled" &&
|
|
606
610
|
value.status !== "timed_out") {
|
|
607
|
-
throw new Error("Operation snapshot.status is invalid");
|
|
611
|
+
throw new Error(t("Operation snapshot.status is invalid"));
|
|
608
612
|
}
|
|
609
613
|
if ((value.status === "queued" || value.status === "running") && value.terminal !== undefined) {
|
|
610
|
-
throw new Error("Operation snapshot active status must not have a terminal");
|
|
614
|
+
throw new Error(t("Operation snapshot active status must not have a terminal"));
|
|
611
615
|
}
|
|
612
616
|
if (value.status !== "queued" && value.status !== "running" && value.terminal === undefined) {
|
|
613
|
-
throw new Error("Operation snapshot terminal status requires a terminal");
|
|
617
|
+
throw new Error(t("Operation snapshot terminal status requires a terminal"));
|
|
614
618
|
}
|
|
615
619
|
const terminal = value.terminal === undefined ? undefined : validateOperationTerminalV1(value.terminal);
|
|
616
620
|
if (terminal !== undefined && terminal.status !== value.status)
|
|
617
|
-
throw new Error("Operation snapshot.terminal.status must match status");
|
|
621
|
+
throw new Error(t("Operation snapshot.terminal.status must match status"));
|
|
618
622
|
if (value.instanceId !== undefined)
|
|
619
623
|
assertNonEmptyString(value.instanceId, "Operation snapshot.instanceId");
|
|
620
624
|
if (value.sessionId !== undefined)
|
|
621
625
|
assertNonEmptyString(value.sessionId, "Operation snapshot.sessionId");
|
|
622
626
|
const inputRevision = value.inputRevision === undefined ? undefined : validateSessionRevisionV1(value.inputRevision);
|
|
623
627
|
if (inputRevision !== undefined && value.sessionId !== undefined && inputRevision.sessionId !== value.sessionId) {
|
|
624
|
-
throw new Error("Operation snapshot.inputRevision.sessionId must match sessionId");
|
|
628
|
+
throw new Error(t("Operation snapshot.inputRevision.sessionId must match sessionId"));
|
|
625
629
|
}
|
|
626
630
|
return detachedFreeze({
|
|
627
631
|
version: 1,
|
|
@@ -641,7 +645,7 @@ export function validateCommandRequestV1(value) {
|
|
|
641
645
|
assertPlainRecord(value, "Command request");
|
|
642
646
|
assertExactKeys(value, ["version", "operationId", "idempotencyKey", "command", "target", "input", "hostContext"], ["expectedRevision"], "Command request");
|
|
643
647
|
if (value.version !== 1)
|
|
644
|
-
throw new Error("Command request.version must be 1");
|
|
648
|
+
throw new Error(t("Command request.version must be 1"));
|
|
645
649
|
assertNonEmptyString(value.operationId, "Command request.operationId");
|
|
646
650
|
assertNonEmptyString(value.idempotencyKey, "Command request.idempotencyKey");
|
|
647
651
|
assertNonEmptyString(value.command, "Command request.command");
|
|
@@ -649,7 +653,7 @@ export function validateCommandRequestV1(value) {
|
|
|
649
653
|
assertJsonValue(value.input, "Command request.input");
|
|
650
654
|
const expectedRevision = value.expectedRevision === undefined ? undefined : validateSessionRevisionV1(value.expectedRevision);
|
|
651
655
|
if (expectedRevision !== undefined && expectedRevision.sessionId !== value.target) {
|
|
652
|
-
throw new Error("Command request.expectedRevision.sessionId does not match target");
|
|
656
|
+
throw new Error(t("Command request.expectedRevision.sessionId does not match target"));
|
|
653
657
|
}
|
|
654
658
|
const hostContext = validateHostContextV1(value.hostContext);
|
|
655
659
|
return detachedFreeze({
|
|
@@ -670,17 +674,17 @@ export function validateCommandAdmissionV1(value) {
|
|
|
670
674
|
assertPlainRecord(value, "Command admission");
|
|
671
675
|
assertExactKeys(value, ["version", "status", "request"], ["operation", "error"], "Command admission");
|
|
672
676
|
if (value.version !== 1)
|
|
673
|
-
throw new Error("Command admission.version must be 1");
|
|
677
|
+
throw new Error(t("Command admission.version must be 1"));
|
|
674
678
|
if (value.status !== "accepted" && value.status !== "existing" && value.status !== "rejected") {
|
|
675
|
-
throw new Error("Command admission.status is invalid");
|
|
679
|
+
throw new Error(t("Command admission.status is invalid"));
|
|
676
680
|
}
|
|
677
681
|
const request = validateCommandRequestV1(value.request);
|
|
678
682
|
const operation = value.operation === undefined ? undefined : validateOperationSnapshotV1(value.operation);
|
|
679
683
|
if ((value.status === "accepted" || value.status === "existing") && operation === undefined) {
|
|
680
|
-
throw new Error("Command admission accepted status requires an operation");
|
|
684
|
+
throw new Error(t("Command admission accepted status requires an operation"));
|
|
681
685
|
}
|
|
682
686
|
if (value.status === "rejected" && value.error === undefined) {
|
|
683
|
-
throw new Error("Command admission rejected status requires an error");
|
|
687
|
+
throw new Error(t("Command admission rejected status requires an error"));
|
|
684
688
|
}
|
|
685
689
|
const error = value.error === undefined ? undefined : validateErrorEnvelopeV1(value.error);
|
|
686
690
|
return detachedFreeze({
|
|
@@ -724,7 +728,7 @@ export function createCommandOperationRegistryV1() {
|
|
|
724
728
|
assertNonEmptyString(operationId, "operationId");
|
|
725
729
|
const entry = entries.get(operationId);
|
|
726
730
|
if (!entry)
|
|
727
|
-
throw new Error(
|
|
731
|
+
throw new Error(t("Operation is not retained: {operationId}", { operationId }));
|
|
728
732
|
return entry;
|
|
729
733
|
};
|
|
730
734
|
const write = (entry, operation) => {
|
|
@@ -784,7 +788,7 @@ export function createCommandOperationRegistryV1() {
|
|
|
784
788
|
if (terminal(entry)) {
|
|
785
789
|
if (canonicalJson(entry.operation.terminal) !==
|
|
786
790
|
canonicalJson(nextTerminal)) {
|
|
787
|
-
throw new Error(
|
|
791
|
+
throw new Error(t("Operation already has a different terminal result: {operationId}", { operationId }));
|
|
788
792
|
}
|
|
789
793
|
return entry.operation;
|
|
790
794
|
}
|
|
@@ -881,7 +885,7 @@ export function buildCanonicalContractVectorsV1() {
|
|
|
881
885
|
const registry = createCommandOperationRegistryV1();
|
|
882
886
|
const accepted = registry.admit(command, command.expectedRevision);
|
|
883
887
|
if (accepted.status !== "accepted" || accepted.operation === undefined) {
|
|
884
|
-
throw new Error("Canonical contract vector admission failed");
|
|
888
|
+
throw new Error(t("Canonical contract vector admission failed"));
|
|
885
889
|
}
|
|
886
890
|
const running = registry.start(command.operationId);
|
|
887
891
|
const terminal = registry.complete(command.operationId, {
|
|
@@ -946,7 +950,7 @@ export function buildCanonicalContractFixtureVectorsV1() {
|
|
|
946
950
|
idempotencyKey: "fixture-request-failed",
|
|
947
951
|
}), request.expectedRevision);
|
|
948
952
|
if (failed.status !== "accepted")
|
|
949
|
-
throw new Error("Canonical contract failed vector admission failed");
|
|
953
|
+
throw new Error(t("Canonical contract failed vector admission failed"));
|
|
950
954
|
const failedTerminal = registry.complete("fixture-operation-failed", {
|
|
951
955
|
version: 1,
|
|
952
956
|
status: "failed",
|
|
@@ -963,7 +967,7 @@ export function buildCanonicalContractFixtureVectorsV1() {
|
|
|
963
967
|
idempotencyKey: "fixture-request-timeout",
|
|
964
968
|
}), request.expectedRevision);
|
|
965
969
|
if (timedOut.status !== "accepted")
|
|
966
|
-
throw new Error("Canonical contract timeout vector admission failed");
|
|
970
|
+
throw new Error(t("Canonical contract timeout vector admission failed"));
|
|
967
971
|
const timedOutTerminal = registry.complete("fixture-operation-timeout", {
|
|
968
972
|
version: 1,
|
|
969
973
|
status: "timed_out",
|
|
@@ -1071,16 +1075,16 @@ export function validateEventEnvelopeV1(value) {
|
|
|
1071
1075
|
assertPlainRecord(value, "Event envelope");
|
|
1072
1076
|
assertExactKeys(value, ["version", "id", "deliveryId", "type", "source", "category", "deliveryGuarantee", "timestamp", "data"], ["operationId", "correlationId", "causationId"], "Event envelope");
|
|
1073
1077
|
if (value.version !== 1)
|
|
1074
|
-
throw new Error("Event envelope.version must be 1");
|
|
1078
|
+
throw new Error(t("Event envelope.version must be 1"));
|
|
1075
1079
|
assertNonEmptyString(value.id, "Event envelope.id");
|
|
1076
1080
|
assertNonEmptyString(value.deliveryId, "Event envelope.deliveryId");
|
|
1077
1081
|
assertNonEmptyString(value.type, "Event envelope.type");
|
|
1078
1082
|
assertNonEmptyString(value.source, "Event envelope.source");
|
|
1079
1083
|
if (value.category !== "authoritative" && value.category !== "progress" && value.category !== "observation") {
|
|
1080
|
-
throw new Error("Event envelope.category is invalid");
|
|
1084
|
+
throw new Error(t("Event envelope.category is invalid"));
|
|
1081
1085
|
}
|
|
1082
1086
|
if (value.deliveryGuarantee !== "best-effort" && value.deliveryGuarantee !== "at-least-once") {
|
|
1083
|
-
throw new Error("Event envelope.deliveryGuarantee is invalid");
|
|
1087
|
+
throw new Error(t("Event envelope.deliveryGuarantee is invalid"));
|
|
1084
1088
|
}
|
|
1085
1089
|
assertNonNegativeSafeInteger(value.timestamp, "Event envelope.timestamp");
|
|
1086
1090
|
assertJsonValue(value.data, "Event envelope.data");
|
|
@@ -1091,10 +1095,10 @@ export function validateEventEnvelopeV1(value) {
|
|
|
1091
1095
|
if (value.causationId !== undefined)
|
|
1092
1096
|
assertNonEmptyString(value.causationId, "Event envelope.causationId");
|
|
1093
1097
|
if (value.operationId === undefined && value.correlationId !== undefined) {
|
|
1094
|
-
throw new Error("Event envelope.correlationId requires a real operationId");
|
|
1098
|
+
throw new Error(t("Event envelope.correlationId requires a real operationId"));
|
|
1095
1099
|
}
|
|
1096
1100
|
if (value.operationId !== undefined && value.correlationId === undefined) {
|
|
1097
|
-
throw new Error("Event envelope.operationId requires correlationId");
|
|
1101
|
+
throw new Error(t("Event envelope.operationId requires correlationId"));
|
|
1098
1102
|
}
|
|
1099
1103
|
return detachedFreeze({
|
|
1100
1104
|
version: 1,
|