@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle-catalog.js","sourceRoot":"","sources":["../../../src/core/extensions/lifecycle-catalog.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AssistantMessage, ImageContent, TextContent, ToolResultMessage } from \"@agent-forge/ai/compat\";\nimport type { BuildSystemPromptOptions } from \"../system-prompt.ts\";\nimport type {\n\tContextOperationOptions,\n\tLifecycleEventDefinition,\n\tLifecycleRegistrationKind,\n\tPluginConfigValue,\n\tSessionRevisionV1,\n} from \"./public-api.ts\";\n\nexport const PLUGIN_DISPOSE_EVENT_ID = \"plugin.dispose\";\nexport const PLUGIN_DISPOSE_EVENT_VERSION = 1;\n\nexport const PLUGIN_READY_EVENT_ID = \"plugin.ready\";\nexport const PLUGIN_READY_EVENT_VERSION = 1;\n\nexport const SESSION_CONTEXT_REPLACED_EVENT_ID = \"session.context.replaced\";\nexport const SESSION_CONTEXT_REPLACED_EVENT_VERSION = 1;\n\nexport const SESSION_RELOAD_EVENT_ID = \"session.reload\";\nexport const SESSION_RELOAD_EVENT_VERSION = 1;\n\nexport const AGENT_START_EVENT_ID = \"agent.start\";\nexport const AGENT_START_EVENT_VERSION = 1;\n\nexport const AGENT_SETTLED_EVENT_ID = \"agent.settled\";\nexport const AGENT_SETTLED_EVENT_VERSION = 1;\n\nexport const TURN_START_EVENT_ID = \"turn.start\";\nexport const TURN_START_EVENT_VERSION = 1;\n\nexport const TURN_END_EVENT_ID = \"turn.end\";\nexport const TURN_END_EVENT_VERSION = 1;\n\nexport const MESSAGE_START_EVENT_ID = \"message.start\";\nexport const MESSAGE_START_EVENT_VERSION = 1;\n\nexport const MESSAGE_END_EVENT_ID = \"message.end\";\nexport const MESSAGE_END_EVENT_VERSION = 1;\n\nexport const TOOL_EXECUTION_START_EVENT_ID = \"tool.execution.start\";\nexport const TOOL_EXECUTION_START_EVENT_VERSION = 1;\n\nexport const MODEL_SELECT_EVENT_ID = \"model.select\";\nexport const MODEL_SELECT_EVENT_VERSION = 1;\n\nexport const THINKING_LEVEL_SELECT_EVENT_ID = \"thinking_level.select\";\nexport const THINKING_LEVEL_SELECT_EVENT_VERSION = 1;\n\nexport const SESSION_INFO_CHANGED_EVENT_ID = \"session.info.changed\";\nexport const SESSION_INFO_CHANGED_EVENT_VERSION = 1;\n\nexport const SESSION_ENTRY_APPENDED_EVENT_ID = \"session.entry.appended\";\nexport const SESSION_ENTRY_APPENDED_EVENT_VERSION = 1;\n\nexport const AGENT_END_EVENT_ID = \"agent.end\";\nexport const AGENT_END_EVENT_VERSION = 1;\n\nexport const BEFORE_AGENT_START_EVENT_ID = \"before.agent.start\";\nexport const BEFORE_AGENT_START_EVENT_VERSION = 1;\nexport const BEFORE_AGENT_START_EVENT_VERSION_V2 = 2;\n\nexport const UI_PROMPT_START_EVENT_ID = \"ui.prompt.start\";\nexport const UI_PROMPT_START_EVENT_VERSION = 1;\n\nexport const UI_PROMPT_END_EVENT_ID = \"ui.prompt.end\";\nexport const UI_PROMPT_END_EVENT_VERSION = 1;\n\nexport const RESOURCES_DISCOVER_EVENT_ID = \"resources.discover\";\nexport const RESOURCES_DISCOVER_EVENT_VERSION = 1;\nexport const RESOURCES_DISCOVER_EVENT_VERSION_V2 = 2;\n\nexport const CONTEXT_ASSEMBLED_EVENT_ID = \"context.assembled\";\nexport const CONTEXT_ASSEMBLED_EVENT_VERSION = 1;\n\nexport const INPUT_RECEIVED_EVENT_ID = \"input.received\";\nexport const INPUT_RECEIVED_EVENT_VERSION = 1;\n\nexport const USER_BASH_EVENT_ID = \"user.bash\";\nexport const USER_BASH_EVENT_VERSION = 1;\n\nexport const SESSION_START_EVENT_ID = \"session.start\";\nexport const SESSION_START_EVENT_VERSION = 1;\n\nexport const MODEL_RESPONSE_EVENT_ID = \"model.response\";\nexport const MODEL_RESPONSE_EVENT_VERSION = 1;\n\nexport const MODEL_STREAM_EVENT_ID = \"model.stream\";\nexport const MODEL_STREAM_EVENT_VERSION = 1;\n\nexport type ModelStreamEventNameV1 =\n\t| \"start\"\n\t| \"text_start\"\n\t| \"text_delta\"\n\t| \"text_end\"\n\t| \"thinking_start\"\n\t| \"thinking_delta\"\n\t| \"thinking_end\"\n\t| \"toolcall_start\"\n\t| \"toolcall_delta\"\n\t| \"toolcall_end\"\n\t| \"done\"\n\t| \"error\";\n\nexport interface ModelStreamEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\tstreamId: string;\n\tsequence: number;\n\tphase: \"raw\" | \"candidate\" | \"committed\";\n\tevent: ModelStreamEventNameV1;\n\tpartial: unknown | null;\n\tterminal: boolean;\n\terror: { code: string; message: string; name?: string } | null;\n}\n\nexport const TOOL_RESULT_EVENT_ID = \"tool.result\";\nexport const TOOL_RESULT_EVENT_VERSION = 1;\n\nexport const TOOL_CALL_EVENT_ID = \"tool.call\";\nexport const TOOL_CALL_EVENT_VERSION = 1;\n\nexport const TOOL_RESULT_RAW_EVENT_ID = \"tool.result.raw\";\nexport const TOOL_RESULT_RAW_EVENT_VERSION = 1;\n\nexport const TOOL_EXECUTE_EVENT_ID = \"tool.execute\";\nexport const TOOL_EXECUTE_EVENT_VERSION = 1;\n\nexport const TOOL_COMMIT_EVENT_ID = \"tool.commit\";\nexport const TOOL_COMMIT_EVENT_VERSION = 1;\n\nexport const TOOL_GATE_BLOCKED_EVENT_ID = \"tool.gate.blocked\";\nexport const TOOL_GATE_BLOCKED_EVENT_VERSION = 1;\n\nexport const INPUT_GATE_BLOCKED_EVENT_ID = \"input.gate.blocked\";\nexport const INPUT_GATE_BLOCKED_EVENT_VERSION = 1;\n\nexport const OPERATION_END_EVENT_ID = \"operation.end\";\nexport const OPERATION_END_EVENT_VERSION = 1;\n\nexport interface PluginDisposeEventDataV1 {\n\tversion: 1;\n\tpluginId: string;\n\tpluginVersion: string;\n\tstatus: \"disposed\" | \"failed\";\n}\n\n/** A plugin factory has completed and its public registrations are active. */\nexport interface PluginReadyEventDataV1 {\n\tversion: 1;\n\tpluginId: string;\n\tpluginVersion: string;\n}\n\n/** A context projection has become the session's active runtime context. */\nexport interface SessionContextReplacedEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\treason: NonNullable<ContextOperationOptions[\"reason\"]>;\n\tmessageCount: number;\n\tstrategyName?: string;\n}\n\n/** A session runtime has been completely rebuilt and its reload work committed. */\nexport interface SessionReloadEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\tgeneration: number;\n\treason: \"reload\";\n}\n\n/** A finalized assistant response after its session entry has been appended. */\nexport interface ModelResponseEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\tentryId: string;\n\trevision: {\n\t\tversion: 1;\n\t\tsessionId: string;\n\t\tsequence: number;\n\t\tleafId: string | null;\n\t};\n\tprovider: string;\n\tmodel: string;\n\tstopReason: \"pending\" | \"stop\" | \"length\" | \"toolUse\" | \"error\" | \"aborted\" | \"deferred\";\n\tmessage: AssistantMessage;\n\terrorMessage?: string;\n}\n\n/** A finalized tool result after its session entry has been appended. */\nexport interface ToolResultEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\tentryId: string;\n\trevision: {\n\t\tversion: 1;\n\t\tsessionId: string;\n\t\tsequence: number;\n\t\tleafId: string | null;\n\t};\n\ttoolCallId: string;\n\ttoolName: string;\n\tisError: boolean;\n\tmessage: ToolResultMessage;\n}\n\n/** A validated tool candidate immediately before execution. */\nexport interface ToolCallEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\trevision: SessionRevisionV1;\n\ttoolCallId: string;\n\ttoolName: string;\n\tinput: unknown;\n}\n\n/** A raw result from an executed tool, before legacy result transforms run. */\nexport interface ToolResultRawEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\trevision: SessionRevisionV1;\n\ttoolCallId: string;\n\ttoolName: string;\n\tisError: boolean;\n\tcontent: readonly (TextContent | ImageContent)[];\n}\n\n/** A settled registered-tool invocation before result transforms and session commit. */\nexport interface ToolExecuteEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\trevision: SessionRevisionV1;\n\ttoolCallId: string;\n\ttoolName: string;\n\tinput: unknown;\n\tisError: boolean;\n\tcontent: readonly (TextContent | ImageContent)[];\n}\n\n/** A tool result after its session message has been appended. */\nexport interface ToolCommitEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\tentryId: string;\n\trevision: SessionRevisionV1;\n\ttoolCallId: string;\n\ttoolName: string;\n\tisError: boolean;\n}\n\n/** A terminal fact for an operation registered through CapabilityAPI. */\nexport interface OperationEndEventDataV1 {\n\tversion: 1;\n\toperationId: string;\n\toperationKind: string;\n\tstatus: \"succeeded\" | \"failed\" | \"cancelled\";\n\terrorMessage?: string;\n\treason?: string;\n}\n\nfunction assertString(value: unknown, label: string): asserts value is string {\n\tif (typeof value !== \"string\" || value.trim() === \"\") throw new Error(`${label} must be a non-empty string`);\n}\n\nfunction assertJsonSafe(value: unknown, label: string, seen = new Set<object>()): void {\n\tif (value === null || typeof value === \"string\" || typeof value === \"boolean\") return;\n\tif (typeof value === \"number\") {\n\t\tif (Number.isFinite(value)) return;\n\t\tthrow new Error(`${label} must contain only finite JSON numbers`);\n\t}\n\tif (typeof value !== \"object\") throw new Error(`${label} must be JSON-safe`);\n\tif (seen.has(value)) throw new Error(`${label} must not contain cycles`);\n\tseen.add(value);\n\tif (Array.isArray(value)) {\n\t\tfor (const [index, entry] of value.entries()) assertJsonSafe(entry, `${label}[${index}]`, seen);\n\t} else if (isPlainRecord(value)) {\n\t\tfor (const [key, entry] of Object.entries(value)) assertJsonSafe(entry, `${label}.${key}`, seen);\n\t} else {\n\t\tthrow new Error(`${label} must contain only JSON arrays and plain objects`);\n\t}\n\tseen.delete(value);\n}\n\nexport function validatePluginDisposeEventDataV1(value: unknown): PluginDisposeEventDataV1 {\n\tif (\n\t\t!value ||\n\t\ttypeof value !== \"object\" ||\n\t\tArray.isArray(value) ||\n\t\tObject.getPrototypeOf(value) !== Object.prototype\n\t) {\n\t\tthrow new Error(\"plugin.dispose data must be a plain object\");\n\t}\n\tconst record = value as Record<string, unknown>;\n\tconst keys = Object.keys(record).sort();\n\tif (keys.join(\",\") !== \"pluginId,pluginVersion,status,version\") {\n\t\tthrow new Error(\"plugin.dispose data has unsupported fields\");\n\t}\n\tif (record.version !== 1) throw new Error(\"plugin.dispose data.version must be 1\");\n\tassertString(record.pluginId, \"plugin.dispose data.pluginId\");\n\tassertString(record.pluginVersion, \"plugin.dispose data.pluginVersion\");\n\tif (record.status !== \"disposed\" && record.status !== \"failed\") {\n\t\tthrow new Error(\"plugin.dispose data.status is invalid\");\n\t}\n\treturn value as PluginDisposeEventDataV1;\n}\n\nexport function pluginDisposeEventDefinition(): LifecycleEventDefinition<PluginDisposeEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: PLUGIN_DISPOSE_EVENT_ID,\n\t\tversion: PLUGIN_DISPOSE_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/plugin.dispose@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validatePluginDisposeEventDataV1,\n\t};\n}\n\nexport function validatePluginReadyEventDataV1(value: unknown): PluginReadyEventDataV1 {\n\tif (\n\t\t!value ||\n\t\ttypeof value !== \"object\" ||\n\t\tArray.isArray(value) ||\n\t\tObject.getPrototypeOf(value) !== Object.prototype\n\t) {\n\t\tthrow new Error(\"plugin.ready data must be a plain object\");\n\t}\n\tconst record = value as Record<string, unknown>;\n\tconst keys = Object.keys(record).sort();\n\tif (keys.join(\",\") !== \"pluginId,pluginVersion,version\") {\n\t\tthrow new Error(\"plugin.ready data has unsupported fields\");\n\t}\n\tif (record.version !== 1) throw new Error(\"plugin.ready data.version must be 1\");\n\tassertString(record.pluginId, \"plugin.ready data.pluginId\");\n\tassertString(record.pluginVersion, \"plugin.ready data.pluginVersion\");\n\treturn value as PluginReadyEventDataV1;\n}\n\nexport function pluginReadyEventDefinition(): LifecycleEventDefinition<PluginReadyEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: PLUGIN_READY_EVENT_ID,\n\t\tversion: PLUGIN_READY_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/plugin.ready@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validatePluginReadyEventDataV1,\n\t};\n}\n\nexport const PLUGIN_REJECTED_EVENT_ID = \"plugin.rejected\";\nexport const PLUGIN_REJECTED_EVENT_VERSION = 1;\n\nexport interface PluginRejectedEventDataV1 {\n\tversion: 1;\n\t/** Plugin id when the manifest could be parsed; otherwise absent. */\n\tpluginId?: string;\n\tmanifestPath: string;\n\tcode: \"invalid_manifest\" | \"duplicate_plugin_id\" | \"missing_dependency\" | \"plugin_load_failed\";\n\tmessage: string;\n}\n\nexport function validatePluginRejectedEventDataV1(value: unknown): PluginRejectedEventDataV1 {\n\tif (\n\t\t!value ||\n\t\ttypeof value !== \"object\" ||\n\t\tArray.isArray(value) ||\n\t\tObject.getPrototypeOf(value) !== Object.prototype\n\t) {\n\t\tthrow new Error(\"plugin.rejected data must be a plain object\");\n\t}\n\tconst record = value as Record<string, unknown>;\n\tconst keys = Object.keys(record)\n\t\t.filter((key) => key !== \"pluginId\")\n\t\t.sort();\n\tif (keys.join(\",\") !== \"code,manifestPath,message,version\") {\n\t\tthrow new Error(\"plugin.rejected data has unsupported fields\");\n\t}\n\tif (record.version !== 1) throw new Error(\"plugin.rejected data.version must be 1\");\n\tif (record.pluginId !== undefined && typeof record.pluginId !== \"string\") {\n\t\tthrow new Error(\"plugin.rejected data.pluginId must be a string when present\");\n\t}\n\tassertString(record.manifestPath, \"plugin.rejected data.manifestPath\");\n\tassertString(record.message, \"plugin.rejected data.message\");\n\tif (\n\t\trecord.code !== \"invalid_manifest\" &&\n\t\trecord.code !== \"duplicate_plugin_id\" &&\n\t\trecord.code !== \"missing_dependency\" &&\n\t\trecord.code !== \"plugin_load_failed\"\n\t) {\n\t\tthrow new Error(\"plugin.rejected data.code is invalid\");\n\t}\n\treturn value as PluginRejectedEventDataV1;\n}\n\nexport function pluginRejectedEventDefinition(): LifecycleEventDefinition<PluginRejectedEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: PLUGIN_REJECTED_EVENT_ID,\n\t\tversion: PLUGIN_REJECTED_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/plugin.rejected@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validatePluginRejectedEventDataV1,\n\t};\n}\n\nconst contextReasons = new Set<NonNullable<ContextOperationOptions[\"reason\"]>>([\n\t\"request\",\n\t\"reload\",\n\t\"session_replace\",\n\t\"compaction\",\n\t\"overflow_recovery\",\n\t\"retry\",\n\t\"tree\",\n]);\n\nexport function validateSessionContextReplacedEventDataV1(value: unknown): SessionContextReplacedEventDataV1 {\n\tif (\n\t\t!value ||\n\t\ttypeof value !== \"object\" ||\n\t\tArray.isArray(value) ||\n\t\tObject.getPrototypeOf(value) !== Object.prototype\n\t) {\n\t\tthrow new Error(\"session.context.replaced data must be a plain object\");\n\t}\n\tconst record = value as Record<string, unknown>;\n\tconst allowed = new Set([\"version\", \"sessionId\", \"reason\", \"messageCount\", \"strategyName\"]);\n\tconst unsupported = Object.keys(record).filter((key) => !allowed.has(key));\n\tif (unsupported.length > 0) {\n\t\tthrow new Error(`session.context.replaced data has unsupported fields: ${unsupported.join(\", \")}`);\n\t}\n\tfor (const key of [\"version\", \"sessionId\", \"reason\", \"messageCount\"]) {\n\t\tif (!(key in record)) throw new Error(`session.context.replaced data is missing required field: ${key}`);\n\t}\n\tif (record.version !== 1) throw new Error(\"session.context.replaced data.version must be 1\");\n\tassertString(record.sessionId, \"session.context.replaced data.sessionId\");\n\tif (\n\t\ttypeof record.reason !== \"string\" ||\n\t\t!contextReasons.has(record.reason as NonNullable<ContextOperationOptions[\"reason\"]>)\n\t) {\n\t\tthrow new Error(\"session.context.replaced data.reason is invalid\");\n\t}\n\tif (\n\t\ttypeof record.messageCount !== \"number\" ||\n\t\t!Number.isSafeInteger(record.messageCount) ||\n\t\trecord.messageCount < 0\n\t) {\n\t\tthrow new Error(\"session.context.replaced data.messageCount must be a non-negative safe integer\");\n\t}\n\tif (record.strategyName !== undefined) {\n\t\tassertString(record.strategyName, \"session.context.replaced data.strategyName\");\n\t}\n\treturn value as SessionContextReplacedEventDataV1;\n}\n\nexport function sessionContextReplacedEventDefinition(): LifecycleEventDefinition<SessionContextReplacedEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: SESSION_CONTEXT_REPLACED_EVENT_ID,\n\t\tversion: SESSION_CONTEXT_REPLACED_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/session.context.replaced@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateSessionContextReplacedEventDataV1,\n\t};\n}\n\nexport function validateSessionReloadEventDataV1(value: unknown): SessionReloadEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(\"session.reload data must be a plain object\");\n\tif (Object.keys(value).sort().join(\",\") !== \"generation,reason,sessionId,version\") {\n\t\tthrow new Error(\"session.reload data has unsupported fields\");\n\t}\n\tif (value.version !== 1) throw new Error(\"session.reload data.version must be 1\");\n\tassertString(value.sessionId, \"session.reload data.sessionId\");\n\tif (typeof value.generation !== \"number\" || !Number.isSafeInteger(value.generation) || value.generation < 1) {\n\t\tthrow new Error(\"session.reload data.generation must be a positive safe integer\");\n\t}\n\tif (value.reason !== \"reload\") throw new Error(\"session.reload data.reason is invalid\");\n\treturn value as unknown as SessionReloadEventDataV1;\n}\n\nexport function sessionReloadEventDefinition(): LifecycleEventDefinition<SessionReloadEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: SESSION_RELOAD_EVENT_ID,\n\t\tversion: SESSION_RELOAD_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/session.reload@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateSessionReloadEventDataV1,\n\t};\n}\n\nexport interface AgentLifecycleEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n}\n\nexport function validateAgentLifecycleEventDataV1(value: unknown): AgentLifecycleEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(\"agent lifecycle data must be a plain object\");\n\tif (Object.keys(value).sort().join(\",\") !== \"sessionId,version\") {\n\t\tthrow new Error(\"agent lifecycle data has unsupported fields\");\n\t}\n\tif (value.version !== 1) throw new Error(\"agent lifecycle data.version must be 1\");\n\tassertString(value.sessionId, \"agent lifecycle data.sessionId\");\n\treturn value as unknown as AgentLifecycleEventDataV1;\n}\n\nexport function agentStartEventDefinition(): LifecycleEventDefinition<AgentLifecycleEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: AGENT_START_EVENT_ID,\n\t\tversion: AGENT_START_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/agent.start@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateAgentLifecycleEventDataV1,\n\t};\n}\n\nexport function agentSettledEventDefinition(): LifecycleEventDefinition<AgentLifecycleEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: AGENT_SETTLED_EVENT_ID,\n\t\tversion: AGENT_SETTLED_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/agent.settled@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateAgentLifecycleEventDataV1,\n\t};\n}\n\nexport interface TurnStartEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\tturnIndex: number;\n}\n\nexport function validateTurnStartEventDataV1(value: unknown): TurnStartEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(\"turn.start data must be a plain object\");\n\tif (Object.keys(value).sort().join(\",\") !== \"sessionId,turnIndex,version\") {\n\t\tthrow new Error(\"turn.start data has unsupported fields\");\n\t}\n\tif (value.version !== 1) throw new Error(\"turn.start data.version must be 1\");\n\tassertString(value.sessionId, \"turn.start data.sessionId\");\n\tif (typeof value.turnIndex !== \"number\" || !Number.isSafeInteger(value.turnIndex) || value.turnIndex < 0) {\n\t\tthrow new Error(\"turn.start data.turnIndex must be a non-negative safe integer\");\n\t}\n\treturn value as unknown as TurnStartEventDataV1;\n}\n\n/**\n * One finished turn. A turn that ended in a deviation carries the turn-level\n * `outcome` (\"aborted\" | \"error\", judged from the turn's assistant message\n * stopReason); a completed turn omits the key entirely — normal stays silent,\n * deviation is recorded.\n */\nexport interface TurnEndEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\tturnIndex: number;\n\tmessageCount: number;\n\toutcome?: \"aborted\" | \"error\";\n}\n\nexport function validateTurnEndEventDataV1(value: unknown): TurnEndEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(\"turn.end data must be a plain object\");\n\tconst keys = Object.keys(value).sort().join(\",\");\n\tif (\n\t\tkeys !== \"messageCount,sessionId,turnIndex,version\" &&\n\t\tkeys !== \"messageCount,outcome,sessionId,turnIndex,version\"\n\t) {\n\t\tthrow new Error(\"turn.end data has unsupported fields\");\n\t}\n\tif (value.version !== 1) throw new Error(\"turn.end data.version must be 1\");\n\tassertString(value.sessionId, \"turn.end data.sessionId\");\n\tif (typeof value.turnIndex !== \"number\" || !Number.isSafeInteger(value.turnIndex) || value.turnIndex < 0) {\n\t\tthrow new Error(\"turn.end data.turnIndex must be a non-negative safe integer\");\n\t}\n\tif (typeof value.messageCount !== \"number\" || !Number.isSafeInteger(value.messageCount) || value.messageCount < 0) {\n\t\tthrow new Error(\"turn.end data.messageCount must be a non-negative safe integer\");\n\t}\n\tif (value.outcome !== undefined && value.outcome !== \"aborted\" && value.outcome !== \"error\") {\n\t\tthrow new Error(\"turn.end data.outcome is invalid\");\n\t}\n\treturn value as unknown as TurnEndEventDataV1;\n}\n\nexport interface MessageBoundaryEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\trole: string;\n}\n\nexport function validateMessageBoundaryEventDataV1(value: unknown): MessageBoundaryEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(\"message lifecycle data must be a plain object\");\n\tif (Object.keys(value).sort().join(\",\") !== \"role,sessionId,version\") {\n\t\tthrow new Error(\"message lifecycle data has unsupported fields\");\n\t}\n\tif (value.version !== 1) throw new Error(\"message lifecycle data.version must be 1\");\n\tassertString(value.sessionId, \"message lifecycle data.sessionId\");\n\tassertString(value.role, \"message lifecycle data.role\");\n\treturn value as unknown as MessageBoundaryEventDataV1;\n}\n\nexport function turnStartEventDefinition(): LifecycleEventDefinition<TurnStartEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: TURN_START_EVENT_ID,\n\t\tversion: TURN_START_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/turn.start@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateTurnStartEventDataV1,\n\t};\n}\n\nexport function turnEndEventDefinition(): LifecycleEventDefinition<TurnEndEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: TURN_END_EVENT_ID,\n\t\tversion: TURN_END_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/turn.end@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateTurnEndEventDataV1,\n\t};\n}\n\nexport function messageStartEventDefinition(): LifecycleEventDefinition<MessageBoundaryEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: MESSAGE_START_EVENT_ID,\n\t\tversion: MESSAGE_START_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/message.start@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateMessageBoundaryEventDataV1,\n\t};\n}\n\nexport function messageEndEventDefinition(): LifecycleEventDefinition<MessageBoundaryEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: MESSAGE_END_EVENT_ID,\n\t\tversion: MESSAGE_END_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/message.end@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateMessageBoundaryEventDataV1,\n\t};\n}\n\nexport interface ToolExecutionStartEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\ttoolCallId: string;\n\ttoolName: string;\n}\n\nexport function validateToolExecutionStartEventDataV1(value: unknown): ToolExecutionStartEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(\"tool.execution.start data must be a plain object\");\n\tif (Object.keys(value).sort().join(\",\") !== \"sessionId,toolCallId,toolName,version\") {\n\t\tthrow new Error(\"tool.execution.start data has unsupported fields\");\n\t}\n\tif (value.version !== 1) throw new Error(\"tool.execution.start data.version must be 1\");\n\tassertString(value.sessionId, \"tool.execution.start data.sessionId\");\n\tassertString(value.toolCallId, \"tool.execution.start data.toolCallId\");\n\tassertString(value.toolName, \"tool.execution.start data.toolName\");\n\treturn value as unknown as ToolExecutionStartEventDataV1;\n}\n\nexport function toolExecutionStartEventDefinition(): LifecycleEventDefinition<ToolExecutionStartEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: TOOL_EXECUTION_START_EVENT_ID,\n\t\tversion: TOOL_EXECUTION_START_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/tool.execution.start@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateToolExecutionStartEventDataV1,\n\t};\n}\n\nexport interface ModelSelectEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\tprovider: string;\n\tid: string;\n\tsource: \"set\" | \"cycle\" | \"restore\";\n}\n\nexport function validateModelSelectEventDataV1(value: unknown): ModelSelectEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(\"model.select data must be a plain object\");\n\tif (Object.keys(value).sort().join(\",\") !== \"id,provider,sessionId,source,version\") {\n\t\tthrow new Error(\"model.select data has unsupported fields\");\n\t}\n\tif (value.version !== 1) throw new Error(\"model.select data.version must be 1\");\n\tassertString(value.sessionId, \"model.select data.sessionId\");\n\tassertString(value.provider, \"model.select data.provider\");\n\tassertString(value.id, \"model.select data.id\");\n\tif (value.source !== \"set\" && value.source !== \"cycle\" && value.source !== \"restore\") {\n\t\tthrow new Error(\"model.select data.source is invalid\");\n\t}\n\treturn value as unknown as ModelSelectEventDataV1;\n}\n\nexport interface ThinkingLevelSelectEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\tlevel: string;\n\tpreviousLevel: string;\n}\n\nexport function validateThinkingLevelSelectEventDataV1(value: unknown): ThinkingLevelSelectEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(\"thinking_level.select data must be a plain object\");\n\tif (Object.keys(value).sort().join(\",\") !== \"level,previousLevel,sessionId,version\") {\n\t\tthrow new Error(\"thinking_level.select data has unsupported fields\");\n\t}\n\tif (value.version !== 1) throw new Error(\"thinking_level.select data.version must be 1\");\n\tassertString(value.sessionId, \"thinking_level.select data.sessionId\");\n\tassertString(value.level, \"thinking_level.select data.level\");\n\tassertString(value.previousLevel, \"thinking_level.select data.previousLevel\");\n\treturn value as unknown as ThinkingLevelSelectEventDataV1;\n}\n\nexport function modelSelectEventDefinition(): LifecycleEventDefinition<ModelSelectEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: MODEL_SELECT_EVENT_ID,\n\t\tversion: MODEL_SELECT_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/model.select@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateModelSelectEventDataV1,\n\t};\n}\n\nexport function thinkingLevelSelectEventDefinition(): LifecycleEventDefinition<ThinkingLevelSelectEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: THINKING_LEVEL_SELECT_EVENT_ID,\n\t\tversion: THINKING_LEVEL_SELECT_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/thinking_level.select@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateThinkingLevelSelectEventDataV1,\n\t};\n}\n\nexport interface SessionInfoChangedEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\t/** Current normalized session name. Absent when the name is cleared. */\n\tname?: string;\n}\n\nexport function validateSessionInfoChangedEventDataV1(value: unknown): SessionInfoChangedEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(\"session.info.changed data must be a plain object\");\n\tif (\n\t\tObject.keys(value).sort().join(\",\") !== \"sessionId,version\" &&\n\t\tObject.keys(value).sort().join(\",\") !== \"name,sessionId,version\"\n\t) {\n\t\tthrow new Error(\"session.info.changed data has unsupported fields\");\n\t}\n\tif (value.version !== 1) throw new Error(\"session.info.changed data.version must be 1\");\n\tassertString(value.sessionId, \"session.info.changed data.sessionId\");\n\tif (value.name !== undefined) assertString(value.name, \"session.info.changed data.name\");\n\treturn value as unknown as SessionInfoChangedEventDataV1;\n}\n\nexport interface SessionEntryAppendedEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\tentryId: string;\n\tentryType: string;\n}\n\nexport function validateSessionEntryAppendedEventDataV1(value: unknown): SessionEntryAppendedEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(\"session.entry.appended data must be a plain object\");\n\tif (Object.keys(value).sort().join(\",\") !== \"entryId,entryType,sessionId,version\") {\n\t\tthrow new Error(\"session.entry.appended data has unsupported fields\");\n\t}\n\tif (value.version !== 1) throw new Error(\"session.entry.appended data.version must be 1\");\n\tassertString(value.sessionId, \"session.entry.appended data.sessionId\");\n\tassertString(value.entryId, \"session.entry.appended data.entryId\");\n\tassertString(value.entryType, \"session.entry.appended data.entryType\");\n\treturn value as unknown as SessionEntryAppendedEventDataV1;\n}\n\nexport function sessionInfoChangedEventDefinition(): LifecycleEventDefinition<SessionInfoChangedEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: SESSION_INFO_CHANGED_EVENT_ID,\n\t\tversion: SESSION_INFO_CHANGED_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/session.info.changed@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateSessionInfoChangedEventDataV1,\n\t};\n}\n\nexport function sessionEntryAppendedEventDefinition(): LifecycleEventDefinition<SessionEntryAppendedEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: SESSION_ENTRY_APPENDED_EVENT_ID,\n\t\tversion: SESSION_ENTRY_APPENDED_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/session.entry.appended@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateSessionEntryAppendedEventDataV1,\n\t};\n}\n\nexport interface AgentEndEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\tmessageCount: number;\n}\n\nexport function validateAgentEndEventDataV1(value: unknown): AgentEndEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(\"agent.end data must be a plain object\");\n\tif (Object.keys(value).sort().join(\",\") !== \"messageCount,sessionId,version\") {\n\t\tthrow new Error(\"agent.end data has unsupported fields\");\n\t}\n\tif (value.version !== 1) throw new Error(\"agent.end data.version must be 1\");\n\tassertString(value.sessionId, \"agent.end data.sessionId\");\n\tif (typeof value.messageCount !== \"number\" || !Number.isSafeInteger(value.messageCount) || value.messageCount < 0) {\n\t\tthrow new Error(\"agent.end data.messageCount must be a non-negative safe integer\");\n\t}\n\treturn value as unknown as AgentEndEventDataV1;\n}\n\nexport interface BeforeAgentStartEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\thasImages: boolean;\n}\n\nexport function validateBeforeAgentStartEventDataV1(value: unknown): BeforeAgentStartEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(\"before.agent.start data must be a plain object\");\n\tif (Object.keys(value).sort().join(\",\") !== \"hasImages,sessionId,version\") {\n\t\tthrow new Error(\"before.agent.start data has unsupported fields\");\n\t}\n\tif (value.version !== 1) throw new Error(\"before.agent.start data.version must be 1\");\n\tassertString(value.sessionId, \"before.agent.start data.sessionId\");\n\tif (typeof value.hasImages !== \"boolean\") throw new Error(\"before.agent.start data.hasImages must be a boolean\");\n\treturn value as unknown as BeforeAgentStartEventDataV1;\n}\n\nexport function agentEndEventDefinition(): LifecycleEventDefinition<AgentEndEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: AGENT_END_EVENT_ID,\n\t\tversion: AGENT_END_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/agent.end@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateAgentEndEventDataV1,\n\t};\n}\n\nexport function beforeAgentStartEventDefinition(): LifecycleEventDefinition<BeforeAgentStartEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: BEFORE_AGENT_START_EVENT_ID,\n\t\tversion: BEFORE_AGENT_START_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/before.agent.start@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateBeforeAgentStartEventDataV1,\n\t};\n}\n\n/**\n * Candidate-phase sibling of before.agent.start@1: the effective base system\n * prompt and its build options enter the envelope so capability transforms\n * (system-prompt customizers) can rewrite the prompt before the first model\n * call. A transform returns the full data with a replaced `systemPrompt`;\n * returning the input verbatim means \"no replacement\".\n */\nexport interface BeforeAgentStartEventDataV2 {\n\tversion: 2;\n\tsessionId: string;\n\tsystemPrompt: string;\n\tsystemPromptOptions: BuildSystemPromptOptions;\n}\n\nexport function validateBeforeAgentStartEventDataV2(value: unknown): BeforeAgentStartEventDataV2 {\n\tif (!isPlainRecord(value)) throw new Error(\"before.agent.start data must be a plain object\");\n\tconst allowed = new Set([\"version\", \"sessionId\", \"systemPrompt\", \"systemPromptOptions\"]);\n\tconst unsupported = Object.keys(value).filter((key) => !allowed.has(key));\n\tif (unsupported.length > 0) {\n\t\tthrow new Error(`before.agent.start data has unsupported fields: ${unsupported.join(\", \")}`);\n\t}\n\tfor (const key of [\"version\", \"sessionId\", \"systemPrompt\", \"systemPromptOptions\"]) {\n\t\tif (!(key in value)) throw new Error(`before.agent.start data is missing required field: ${key}`);\n\t}\n\tif (value.version !== 2) throw new Error(\"before.agent.start data.version must be 2\");\n\tassertString(value.sessionId, \"before.agent.start data.sessionId\");\n\tif (typeof value.systemPrompt !== \"string\") {\n\t\tthrow new Error(\"before.agent.start data.systemPrompt must be a string\");\n\t}\n\t// Only the shape is enforced here: JSON-safety (no functions, cycles, or\n\t// non-finite numbers) is already guaranteed because the dispatcher runs the\n\t// payload through a detached structured clone before validation, and the\n\t// build-options snapshot legitimately carries explicit `undefined` fields.\n\tif (!isPlainRecord(value.systemPromptOptions)) {\n\t\tthrow new Error(\"before.agent.start data.systemPromptOptions must be a plain object\");\n\t}\n\treturn value as unknown as BeforeAgentStartEventDataV2;\n}\n\nexport function beforeAgentStartV2EventDefinition(): LifecycleEventDefinition<BeforeAgentStartEventDataV2> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"transform\"];\n\treturn {\n\t\tid: BEFORE_AGENT_START_EVENT_ID,\n\t\tversion: BEFORE_AGENT_START_EVENT_VERSION_V2,\n\t\tphase: \"candidate\",\n\t\tschema: \"agent-forge/before.agent.start@2\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateBeforeAgentStartEventDataV2,\n\t};\n}\n\nexport interface UIPromptBoundaryEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\tkind: string;\n\ttitle?: string;\n}\n\nexport function validateUIPromptBoundaryEventDataV1(value: unknown): UIPromptBoundaryEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(\"ui.prompt lifecycle data must be a plain object\");\n\tconst keys = Object.keys(value).sort();\n\tif (keys.join(\",\") !== \"kind,sessionId,version\" && keys.join(\",\") !== \"kind,sessionId,title,version\") {\n\t\tthrow new Error(\"ui.prompt lifecycle data has unsupported fields\");\n\t}\n\tif (value.version !== 1) throw new Error(\"ui.prompt lifecycle data.version must be 1\");\n\tassertString(value.sessionId, \"ui.prompt lifecycle data.sessionId\");\n\tassertString(value.kind, \"ui.prompt lifecycle data.kind\");\n\tif (value.title !== undefined) assertString(value.title, \"ui.prompt lifecycle data.title\");\n\treturn value as unknown as UIPromptBoundaryEventDataV1;\n}\n\nexport interface ResourcesDiscoverEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\tcwd: string;\n\treason: \"startup\" | \"reload\";\n}\n\nexport function validateResourcesDiscoverEventDataV1(value: unknown): ResourcesDiscoverEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(\"resources.discover data must be a plain object\");\n\tif (Object.keys(value).sort().join(\",\") !== \"cwd,reason,sessionId,version\") {\n\t\tthrow new Error(\"resources.discover data has unsupported fields\");\n\t}\n\tif (value.version !== 1) throw new Error(\"resources.discover data.version must be 1\");\n\tassertString(value.sessionId, \"resources.discover data.sessionId\");\n\tassertString(value.cwd, \"resources.discover data.cwd\");\n\tif (value.reason !== \"startup\" && value.reason !== \"reload\") {\n\t\tthrow new Error(\"resources.discover data.reason is invalid\");\n\t}\n\treturn value as unknown as ResourcesDiscoverEventDataV1;\n}\n\nexport function uiPromptStartEventDefinition(): LifecycleEventDefinition<UIPromptBoundaryEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: UI_PROMPT_START_EVENT_ID,\n\t\tversion: UI_PROMPT_START_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/ui.prompt.start@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateUIPromptBoundaryEventDataV1,\n\t};\n}\n\nexport function uiPromptEndEventDefinition(): LifecycleEventDefinition<UIPromptBoundaryEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: UI_PROMPT_END_EVENT_ID,\n\t\tversion: UI_PROMPT_END_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/ui.prompt.end@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateUIPromptBoundaryEventDataV1,\n\t};\n}\n\nexport function resourcesDiscoverEventDefinition(): LifecycleEventDefinition<ResourcesDiscoverEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: RESOURCES_DISCOVER_EVENT_ID,\n\t\tversion: RESOURCES_DISCOVER_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/resources.discover@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateResourcesDiscoverEventDataV1,\n\t};\n}\n\n/** One contributed resource path, shaped identically to the legacy collection. */\nexport interface ResourcesDiscoverContributionV2 {\n\tpath: string;\n\textensionPath: string;\n}\n\n/**\n * Candidate-phase sibling of resources.discover@1: same envelope with the\n * version bumped to 2, plus optional transform contributions. A transform\n * returns the full data with any of the three contribution arrays attached;\n * each entry keeps the legacy `{ path, extensionPath }` collection shape.\n */\nexport interface ResourcesDiscoverEventDataV2 {\n\tversion: 2;\n\tsessionId: string;\n\tcwd: string;\n\treason: \"startup\" | \"reload\";\n\tskillPaths?: ResourcesDiscoverContributionV2[];\n\tpromptPaths?: ResourcesDiscoverContributionV2[];\n\tthemePaths?: ResourcesDiscoverContributionV2[];\n}\n\nfunction validateResourcesDiscoverContributionV2(value: unknown, label: string): void {\n\tif (!Array.isArray(value)) throw new Error(`${label} must be an array`);\n\tfor (const [index, entry] of value.entries()) {\n\t\tif (!isPlainRecord(entry)) throw new Error(`${label}[${index}] must be a plain object`);\n\t\tif (Object.keys(entry).sort().join(\",\") !== \"extensionPath,path\") {\n\t\t\tthrow new Error(`${label}[${index}] has unsupported fields`);\n\t\t}\n\t\tassertString(entry.path, `${label}[${index}].path`);\n\t\tassertString(entry.extensionPath, `${label}[${index}].extensionPath`);\n\t}\n}\n\nexport function validateResourcesDiscoverEventDataV2(value: unknown): ResourcesDiscoverEventDataV2 {\n\tif (!isPlainRecord(value)) throw new Error(\"resources.discover data must be a plain object\");\n\tconst allowed = new Set([\"version\", \"sessionId\", \"cwd\", \"reason\", \"skillPaths\", \"promptPaths\", \"themePaths\"]);\n\tconst unsupported = Object.keys(value).filter((key) => !allowed.has(key));\n\tif (unsupported.length > 0) {\n\t\tthrow new Error(`resources.discover data has unsupported fields: ${unsupported.join(\", \")}`);\n\t}\n\tfor (const key of [\"version\", \"sessionId\", \"cwd\", \"reason\"]) {\n\t\tif (!(key in value)) throw new Error(`resources.discover data is missing required field: ${key}`);\n\t}\n\tif (value.version !== 2) throw new Error(\"resources.discover data.version must be 2\");\n\tassertString(value.sessionId, \"resources.discover data.sessionId\");\n\tassertString(value.cwd, \"resources.discover data.cwd\");\n\tif (value.reason !== \"startup\" && value.reason !== \"reload\") {\n\t\tthrow new Error(\"resources.discover data.reason is invalid\");\n\t}\n\tif (value.skillPaths !== undefined) {\n\t\tvalidateResourcesDiscoverContributionV2(value.skillPaths, \"resources.discover data.skillPaths\");\n\t}\n\tif (value.promptPaths !== undefined) {\n\t\tvalidateResourcesDiscoverContributionV2(value.promptPaths, \"resources.discover data.promptPaths\");\n\t}\n\tif (value.themePaths !== undefined) {\n\t\tvalidateResourcesDiscoverContributionV2(value.themePaths, \"resources.discover data.themePaths\");\n\t}\n\treturn value as unknown as ResourcesDiscoverEventDataV2;\n}\n\nexport function resourcesDiscoverV2EventDefinition(): LifecycleEventDefinition<ResourcesDiscoverEventDataV2> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"transform\"];\n\treturn {\n\t\tid: RESOURCES_DISCOVER_EVENT_ID,\n\t\tversion: RESOURCES_DISCOVER_EVENT_VERSION_V2,\n\t\tphase: \"candidate\",\n\t\tschema: \"agent-forge/resources.discover@2\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateResourcesDiscoverEventDataV2,\n\t};\n}\n\nexport interface ContextAssembledEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\tmessageCount: number;\n}\n\nexport function validateContextAssembledEventDataV1(value: unknown): ContextAssembledEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(\"context.assembled data must be a plain object\");\n\tif (Object.keys(value).sort().join(\",\") !== \"messageCount,sessionId,version\") {\n\t\tthrow new Error(\"context.assembled data has unsupported fields\");\n\t}\n\tif (value.version !== 1) throw new Error(\"context.assembled data.version must be 1\");\n\tassertString(value.sessionId, \"context.assembled data.sessionId\");\n\tif (typeof value.messageCount !== \"number\" || !Number.isSafeInteger(value.messageCount) || value.messageCount < 0) {\n\t\tthrow new Error(\"context.assembled data.messageCount must be a non-negative safe integer\");\n\t}\n\treturn value as unknown as ContextAssembledEventDataV1;\n}\n\nexport interface InputReceivedEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\tsource: string;\n\ttextLength: number;\n}\n\nexport function validateInputReceivedEventDataV1(value: unknown): InputReceivedEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(\"input.received data must be a plain object\");\n\tif (Object.keys(value).sort().join(\",\") !== \"sessionId,textLength,version,source\".split(\",\").sort().join(\",\")) {\n\t\tthrow new Error(\"input.received data has unsupported fields\");\n\t}\n\tif (value.version !== 1) throw new Error(\"input.received data.version must be 1\");\n\tassertString(value.sessionId, \"input.received data.sessionId\");\n\tassertString(value.source, \"input.received data.source\");\n\tif (typeof value.textLength !== \"number\" || !Number.isSafeInteger(value.textLength) || value.textLength < 0) {\n\t\tthrow new Error(\"input.received data.textLength must be a non-negative safe integer\");\n\t}\n\treturn value as unknown as InputReceivedEventDataV1;\n}\n\nexport interface UserBashEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\tcwd: string;\n\texcludeFromContext: boolean;\n}\n\nexport function validateUserBashEventDataV1(value: unknown): UserBashEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(\"user.bash data must be a plain object\");\n\tif (Object.keys(value).sort().join(\",\") !== \"cwd,excludeFromContext,sessionId,version\") {\n\t\tthrow new Error(\"user.bash data has unsupported fields\");\n\t}\n\tif (value.version !== 1) throw new Error(\"user.bash data.version must be 1\");\n\tassertString(value.sessionId, \"user.bash data.sessionId\");\n\tassertString(value.cwd, \"user.bash data.cwd\");\n\tif (typeof value.excludeFromContext !== \"boolean\") {\n\t\tthrow new Error(\"user.bash data.excludeFromContext must be a boolean\");\n\t}\n\treturn value as unknown as UserBashEventDataV1;\n}\n\nexport function contextAssembledEventDefinition(): LifecycleEventDefinition<ContextAssembledEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: CONTEXT_ASSEMBLED_EVENT_ID,\n\t\tversion: CONTEXT_ASSEMBLED_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/context.assembled@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateContextAssembledEventDataV1,\n\t};\n}\n\nexport function inputReceivedEventDefinition(): LifecycleEventDefinition<InputReceivedEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: INPUT_RECEIVED_EVENT_ID,\n\t\tversion: INPUT_RECEIVED_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/input.received@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateInputReceivedEventDataV1,\n\t};\n}\n\nexport function userBashEventDefinition(): LifecycleEventDefinition<UserBashEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: USER_BASH_EVENT_ID,\n\t\tversion: USER_BASH_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/user.bash@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateUserBashEventDataV1,\n\t};\n}\n\nexport interface SessionStartEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\treason: \"startup\" | \"reload\" | \"new\" | \"resume\" | \"fork\";\n\tpreviousSessionFile?: string;\n}\n\nexport function validateSessionStartEventDataV1(value: unknown): SessionStartEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(\"session.start data must be a plain object\");\n\tconst keys = Object.keys(value).sort();\n\tif (\n\t\tkeys.join(\",\") !== \"reason,sessionId,version\" &&\n\t\tkeys.join(\",\") !== \"previousSessionFile,reason,sessionId,version\"\n\t) {\n\t\tthrow new Error(\"session.start data has unsupported fields\");\n\t}\n\tif (value.version !== 1) throw new Error(\"session.start data.version must be 1\");\n\tassertString(value.sessionId, \"session.start data.sessionId\");\n\tif (\n\t\tvalue.reason !== \"startup\" &&\n\t\tvalue.reason !== \"reload\" &&\n\t\tvalue.reason !== \"new\" &&\n\t\tvalue.reason !== \"resume\" &&\n\t\tvalue.reason !== \"fork\"\n\t) {\n\t\tthrow new Error(\"session.start data.reason is invalid\");\n\t}\n\tif (value.previousSessionFile !== undefined)\n\t\tassertString(value.previousSessionFile, \"session.start data.previousSessionFile\");\n\treturn value as unknown as SessionStartEventDataV1;\n}\n\nexport function sessionStartEventDefinition(): LifecycleEventDefinition<SessionStartEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: SESSION_START_EVENT_ID,\n\t\tversion: SESSION_START_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/session.start@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateSessionStartEventDataV1,\n\t};\n}\n\nexport function validateModelResponseEventDataV1(value: unknown): ModelResponseEventDataV1 {\n\tif (\n\t\t!value ||\n\t\ttypeof value !== \"object\" ||\n\t\tArray.isArray(value) ||\n\t\tObject.getPrototypeOf(value) !== Object.prototype\n\t) {\n\t\tthrow new Error(\"model.response data must be a plain object\");\n\t}\n\tconst record = value as Record<string, unknown>;\n\tconst allowed = new Set([\n\t\t\"version\",\n\t\t\"sessionId\",\n\t\t\"entryId\",\n\t\t\"revision\",\n\t\t\"provider\",\n\t\t\"model\",\n\t\t\"stopReason\",\n\t\t\"message\",\n\t\t\"errorMessage\",\n\t]);\n\tconst unsupported = Object.keys(record).filter((key) => !allowed.has(key));\n\tif (unsupported.length > 0) throw new Error(`model.response data has unsupported fields: ${unsupported.join(\", \")}`);\n\tfor (const key of [\"version\", \"sessionId\", \"entryId\", \"revision\", \"provider\", \"model\", \"stopReason\", \"message\"]) {\n\t\tif (!(key in record)) throw new Error(`model.response data is missing required field: ${key}`);\n\t}\n\tif (record.version !== 1) throw new Error(\"model.response data.version must be 1\");\n\tassertString(record.sessionId, \"model.response data.sessionId\");\n\tassertString(record.entryId, \"model.response data.entryId\");\n\tassertString(record.provider, \"model.response data.provider\");\n\tassertString(record.model, \"model.response data.model\");\n\tif (\n\t\trecord.stopReason !== \"pending\" &&\n\t\trecord.stopReason !== \"stop\" &&\n\t\trecord.stopReason !== \"length\" &&\n\t\trecord.stopReason !== \"toolUse\" &&\n\t\trecord.stopReason !== \"error\" &&\n\t\trecord.stopReason !== \"aborted\" &&\n\t\trecord.stopReason !== \"deferred\"\n\t) {\n\t\tthrow new Error(\"model.response data.stopReason is invalid\");\n\t}\n\tif (!record.message || typeof record.message !== \"object\" || Array.isArray(record.message)) {\n\t\tthrow new Error(\"model.response data.message must be an assistant message object\");\n\t}\n\tconst message = record.message as Record<string, unknown>;\n\tif (message.role !== \"assistant\") throw new Error(\"model.response data.message.role must be assistant\");\n\tif (!isPlainRecord(record.revision)) throw new Error(\"model.response data.revision must be a plain object\");\n\tconst revision = record.revision;\n\tif (Object.keys(revision).sort().join(\",\") !== \"leafId,sequence,sessionId,version\") {\n\t\tthrow new Error(\"model.response data.revision has unsupported fields\");\n\t}\n\tif (revision.version !== 1) throw new Error(\"model.response data.revision.version must be 1\");\n\tassertString(revision.sessionId, \"model.response data.revision.sessionId\");\n\tif (typeof revision.sequence !== \"number\" || !Number.isSafeInteger(revision.sequence) || revision.sequence < 0) {\n\t\tthrow new Error(\"model.response data.revision.sequence must be a non-negative safe integer\");\n\t}\n\tif (revision.leafId !== null) assertString(revision.leafId, \"model.response data.revision.leafId\");\n\tif (revision.sessionId !== record.sessionId) {\n\t\tthrow new Error(\"model.response data.revision.sessionId must match sessionId\");\n\t}\n\tif (record.errorMessage !== undefined) assertString(record.errorMessage, \"model.response data.errorMessage\");\n\treturn value as ModelResponseEventDataV1;\n}\n\nfunction isPlainRecord(value: unknown): value is Record<string, unknown> {\n\treturn (\n\t\ttypeof value === \"object\" &&\n\t\tvalue !== null &&\n\t\t!Array.isArray(value) &&\n\t\tObject.getPrototypeOf(value) === Object.prototype\n\t);\n}\n\nexport function modelResponseEventDefinition(): LifecycleEventDefinition<ModelResponseEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: MODEL_RESPONSE_EVENT_ID,\n\t\tversion: MODEL_RESPONSE_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/model.response@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateModelResponseEventDataV1,\n\t};\n}\n\nconst modelStreamEvents = new Set<ModelStreamEventNameV1>([\n\t\"start\",\n\t\"text_start\",\n\t\"text_delta\",\n\t\"text_end\",\n\t\"thinking_start\",\n\t\"thinking_delta\",\n\t\"thinking_end\",\n\t\"toolcall_start\",\n\t\"toolcall_delta\",\n\t\"toolcall_end\",\n\t\"done\",\n\t\"error\",\n]);\n\nexport function validateModelStreamEventDataV1(value: unknown): ModelStreamEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(\"model.stream data must be a plain object\");\n\tconst allowed = new Set([\n\t\t\"version\",\n\t\t\"sessionId\",\n\t\t\"streamId\",\n\t\t\"sequence\",\n\t\t\"phase\",\n\t\t\"event\",\n\t\t\"partial\",\n\t\t\"terminal\",\n\t\t\"error\",\n\t]);\n\tconst unsupported = Object.keys(value).filter((key) => !allowed.has(key));\n\tif (unsupported.length > 0) throw new Error(`model.stream data has unsupported fields: ${unsupported.join(\", \")}`);\n\tfor (const key of [\n\t\t\"version\",\n\t\t\"sessionId\",\n\t\t\"streamId\",\n\t\t\"sequence\",\n\t\t\"phase\",\n\t\t\"event\",\n\t\t\"partial\",\n\t\t\"terminal\",\n\t\t\"error\",\n\t]) {\n\t\tif (!(key in value)) throw new Error(`model.stream data is missing required field: ${key}`);\n\t}\n\tif (value.version !== 1) throw new Error(\"model.stream data.version must be 1\");\n\tassertString(value.sessionId, \"model.stream data.sessionId\");\n\tassertString(value.streamId, \"model.stream data.streamId\");\n\tif (typeof value.sequence !== \"number\" || !Number.isSafeInteger(value.sequence) || value.sequence < 1) {\n\t\tthrow new Error(\"model.stream data.sequence must be a positive safe integer\");\n\t}\n\tif (value.phase !== \"raw\" && value.phase !== \"candidate\" && value.phase !== \"committed\") {\n\t\tthrow new Error(\"model.stream data.phase is invalid\");\n\t}\n\tif (typeof value.event !== \"string\" || !modelStreamEvents.has(value.event as ModelStreamEventNameV1)) {\n\t\tthrow new Error(\"model.stream data.event is invalid\");\n\t}\n\tif (value.phase === \"committed\" && value.event !== \"done\" && value.event !== \"error\") {\n\t\tthrow new Error(\"model.stream committed phase only permits terminal events\");\n\t}\n\tconst terminal = value.event === \"done\" || value.event === \"error\";\n\tif (value.terminal !== terminal) throw new Error(\"model.stream data.terminal does not match event\");\n\tif (value.partial !== null) assertJsonSafe(value.partial, \"model.stream data.partial\");\n\tif (terminal && value.event === \"done\" && value.error !== null) {\n\t\tthrow new Error(\"model.stream done event cannot contain error\");\n\t}\n\tif (terminal && value.event === \"error\") {\n\t\tif (!isPlainRecord(value.error)) throw new Error(\"model.stream error event requires error object\");\n\t\tconst errorKeys = Object.keys(value.error);\n\t\tif (errorKeys.some((key) => key !== \"code\" && key !== \"message\" && key !== \"name\")) {\n\t\t\tthrow new Error(\"model.stream error has unsupported fields\");\n\t\t}\n\t\tassertString(value.error.code, \"model.stream data.error.code\");\n\t\tassertString(value.error.message, \"model.stream data.error.message\");\n\t\tif (value.error.name !== undefined) assertString(value.error.name, \"model.stream data.error.name\");\n\t} else if (value.error !== null) {\n\t\tthrow new Error(\"model.stream non-terminal event cannot contain error\");\n\t}\n\treturn value as unknown as ModelStreamEventDataV1;\n}\n\nexport function modelStreamEventDefinition(): LifecycleEventDefinition<ModelStreamEventDataV1> {\n\treturn {\n\t\tid: MODEL_STREAM_EVENT_ID,\n\t\tversion: MODEL_STREAM_EVENT_VERSION,\n\t\tphase: \"raw\",\n\t\tallowedPhases: [\"raw\", \"candidate\", \"committed\"],\n\t\tschema: \"agent-forge/model.stream@1\",\n\t\tallowedRegistrationKinds: [\"observe\"],\n\t\tvalidate: validateModelStreamEventDataV1,\n\t};\n}\n\nexport function validateToolResultEventDataV1(value: unknown): ToolResultEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(\"tool.result data must be a plain object\");\n\tconst allowed = new Set([\n\t\t\"version\",\n\t\t\"sessionId\",\n\t\t\"entryId\",\n\t\t\"revision\",\n\t\t\"toolCallId\",\n\t\t\"toolName\",\n\t\t\"isError\",\n\t\t\"message\",\n\t]);\n\tconst unsupported = Object.keys(value).filter((key) => !allowed.has(key));\n\tif (unsupported.length > 0) throw new Error(`tool.result data has unsupported fields: ${unsupported.join(\", \")}`);\n\tfor (const key of [\"version\", \"sessionId\", \"entryId\", \"revision\", \"toolCallId\", \"toolName\", \"isError\", \"message\"]) {\n\t\tif (!(key in value)) throw new Error(`tool.result data is missing required field: ${key}`);\n\t}\n\tif (value.version !== 1) throw new Error(\"tool.result data.version must be 1\");\n\tassertString(value.sessionId, \"tool.result data.sessionId\");\n\tassertString(value.entryId, \"tool.result data.entryId\");\n\tassertString(value.toolCallId, \"tool.result data.toolCallId\");\n\tassertString(value.toolName, \"tool.result data.toolName\");\n\tif (typeof value.isError !== \"boolean\") throw new Error(\"tool.result data.isError must be boolean\");\n\tif (!isPlainRecord(value.message)) throw new Error(\"tool.result data.message must be a tool result message object\");\n\tif (value.message.role !== \"toolResult\") throw new Error(\"tool.result data.message.role must be toolResult\");\n\tassertString(value.message.toolCallId, \"tool.result data.message.toolCallId\");\n\tassertString(value.message.toolName, \"tool.result data.message.toolName\");\n\tif (!Array.isArray(value.message.content)) throw new Error(\"tool.result data.message.content must be an array\");\n\tif (typeof value.message.isError !== \"boolean\") throw new Error(\"tool.result data.message.isError must be boolean\");\n\tif (value.message.toolCallId !== value.toolCallId) {\n\t\tthrow new Error(\"tool.result data.message.toolCallId must match toolCallId\");\n\t}\n\tif (value.message.toolName !== value.toolName) {\n\t\tthrow new Error(\"tool.result data.message.toolName must match toolName\");\n\t}\n\tif (value.message.isError !== value.isError) {\n\t\tthrow new Error(\"tool.result data.message.isError must match isError\");\n\t}\n\tif (!isPlainRecord(value.revision)) throw new Error(\"tool.result data.revision must be a plain object\");\n\tconst revision = value.revision;\n\tif (Object.keys(revision).sort().join(\",\") !== \"leafId,sequence,sessionId,version\") {\n\t\tthrow new Error(\"tool.result data.revision has unsupported fields\");\n\t}\n\tif (revision.version !== 1) throw new Error(\"tool.result data.revision.version must be 1\");\n\tassertString(revision.sessionId, \"tool.result data.revision.sessionId\");\n\tif (typeof revision.sequence !== \"number\" || !Number.isSafeInteger(revision.sequence) || revision.sequence < 0) {\n\t\tthrow new Error(\"tool.result data.revision.sequence must be a non-negative safe integer\");\n\t}\n\tif (revision.leafId !== null) assertString(revision.leafId, \"tool.result data.revision.leafId\");\n\tif (revision.sessionId !== value.sessionId) {\n\t\tthrow new Error(\"tool.result data.revision.sessionId must match sessionId\");\n\t}\n\treturn value as unknown as ToolResultEventDataV1;\n}\n\nexport function toolResultEventDefinition(): LifecycleEventDefinition<ToolResultEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: TOOL_RESULT_EVENT_ID,\n\t\tversion: TOOL_RESULT_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/tool.result@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateToolResultEventDataV1,\n\t};\n}\n\nexport function validateToolCallEventDataV1(value: unknown): ToolCallEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(\"tool.call data must be a plain object\");\n\tconst allowed = new Set([\"version\", \"sessionId\", \"revision\", \"toolCallId\", \"toolName\", \"input\"]);\n\tconst unsupported = Object.keys(value).filter((key) => !allowed.has(key));\n\tif (unsupported.length > 0) throw new Error(`tool.call data has unsupported fields: ${unsupported.join(\", \")}`);\n\tfor (const key of [\"version\", \"sessionId\", \"revision\", \"toolCallId\", \"toolName\", \"input\"]) {\n\t\tif (!(key in value)) throw new Error(`tool.call data is missing required field: ${key}`);\n\t}\n\tif (value.version !== 1) throw new Error(\"tool.call data.version must be 1\");\n\tassertString(value.sessionId, \"tool.call data.sessionId\");\n\tassertString(value.toolCallId, \"tool.call data.toolCallId\");\n\tassertString(value.toolName, \"tool.call data.toolName\");\n\tif (!isPlainRecord(value.revision)) throw new Error(\"tool.call data.revision must be a plain object\");\n\tconst revision = value.revision;\n\tif (Object.keys(revision).sort().join(\",\") !== \"leafId,sequence,sessionId,version\") {\n\t\tthrow new Error(\"tool.call data.revision has unsupported fields\");\n\t}\n\tif (revision.version !== 1) throw new Error(\"tool.call data.revision.version must be 1\");\n\tassertString(revision.sessionId, \"tool.call data.revision.sessionId\");\n\tif (typeof revision.sequence !== \"number\" || !Number.isSafeInteger(revision.sequence) || revision.sequence < 0) {\n\t\tthrow new Error(\"tool.call data.revision.sequence must be a non-negative safe integer\");\n\t}\n\tif (revision.leafId !== null) assertString(revision.leafId, \"tool.call data.revision.leafId\");\n\tif (revision.sessionId !== value.sessionId)\n\t\tthrow new Error(\"tool.call data.revision.sessionId must match sessionId\");\n\tassertJsonSafe(value.input, \"tool.call data.input\");\n\treturn value as unknown as ToolCallEventDataV1;\n}\n\nexport function toolCallEventDefinition(): LifecycleEventDefinition<ToolCallEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"transform\"];\n\treturn {\n\t\tid: TOOL_CALL_EVENT_ID,\n\t\tversion: TOOL_CALL_EVENT_VERSION,\n\t\tphase: \"candidate\",\n\t\tschema: \"agent-forge/tool.call@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateToolCallEventDataV1,\n\t};\n}\n\nexport function validateToolExecuteEventDataV1(value: unknown): ToolExecuteEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(\"tool.execute data must be a plain object\");\n\tconst allowed = new Set([\n\t\t\"version\",\n\t\t\"sessionId\",\n\t\t\"revision\",\n\t\t\"toolCallId\",\n\t\t\"toolName\",\n\t\t\"input\",\n\t\t\"isError\",\n\t\t\"content\",\n\t]);\n\tconst unsupported = Object.keys(value).filter((key) => !allowed.has(key));\n\tif (unsupported.length > 0) throw new Error(`tool.execute data has unsupported fields: ${unsupported.join(\", \")}`);\n\tfor (const key of [\"version\", \"sessionId\", \"revision\", \"toolCallId\", \"toolName\", \"input\", \"isError\", \"content\"]) {\n\t\tif (!(key in value)) throw new Error(`tool.execute data is missing required field: ${key}`);\n\t}\n\tif (value.version !== 1) throw new Error(\"tool.execute data.version must be 1\");\n\tassertString(value.sessionId, \"tool.execute data.sessionId\");\n\tassertString(value.toolCallId, \"tool.execute data.toolCallId\");\n\tassertString(value.toolName, \"tool.execute data.toolName\");\n\tif (typeof value.isError !== \"boolean\") throw new Error(\"tool.execute data.isError must be boolean\");\n\tassertJsonSafe(value.input, \"tool.execute data.input\");\n\tvalidateToolResultRawEventDataV1({\n\t\tversion: 1,\n\t\tsessionId: value.sessionId,\n\t\trevision: value.revision,\n\t\ttoolCallId: value.toolCallId,\n\t\ttoolName: value.toolName,\n\t\tisError: value.isError,\n\t\tcontent: value.content,\n\t});\n\treturn value as unknown as ToolExecuteEventDataV1;\n}\n\nexport function toolExecuteEventDefinition(): LifecycleEventDefinition<ToolExecuteEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"execute\"];\n\treturn {\n\t\tid: TOOL_EXECUTE_EVENT_ID,\n\t\tversion: TOOL_EXECUTE_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/tool.execute@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateToolExecuteEventDataV1,\n\t};\n}\n\nexport function validateToolCommitEventDataV1(value: unknown): ToolCommitEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(\"tool.commit data must be a plain object\");\n\tconst allowed = new Set([\"version\", \"sessionId\", \"entryId\", \"revision\", \"toolCallId\", \"toolName\", \"isError\"]);\n\tconst unsupported = Object.keys(value).filter((key) => !allowed.has(key));\n\tif (unsupported.length > 0) throw new Error(`tool.commit data has unsupported fields: ${unsupported.join(\", \")}`);\n\tfor (const key of [\"version\", \"sessionId\", \"entryId\", \"revision\", \"toolCallId\", \"toolName\", \"isError\"]) {\n\t\tif (!(key in value)) throw new Error(`tool.commit data is missing required field: ${key}`);\n\t}\n\tif (value.version !== 1) throw new Error(\"tool.commit data.version must be 1\");\n\tassertString(value.sessionId, \"tool.commit data.sessionId\");\n\tassertString(value.entryId, \"tool.commit data.entryId\");\n\tassertString(value.toolCallId, \"tool.commit data.toolCallId\");\n\tassertString(value.toolName, \"tool.commit data.toolName\");\n\tif (typeof value.isError !== \"boolean\") throw new Error(\"tool.commit data.isError must be boolean\");\n\tif (!isPlainRecord(value.revision)) throw new Error(\"tool.commit data.revision must be a plain object\");\n\tconst revision = value.revision;\n\tif (Object.keys(revision).sort().join(\",\") !== \"leafId,sequence,sessionId,version\") {\n\t\tthrow new Error(\"tool.commit data.revision has unsupported fields\");\n\t}\n\tif (revision.version !== 1) throw new Error(\"tool.commit data.revision.version must be 1\");\n\tassertString(revision.sessionId, \"tool.commit data.revision.sessionId\");\n\tif (typeof revision.sequence !== \"number\" || !Number.isSafeInteger(revision.sequence) || revision.sequence < 0) {\n\t\tthrow new Error(\"tool.commit data.revision.sequence must be a non-negative safe integer\");\n\t}\n\tif (revision.leafId !== null) assertString(revision.leafId, \"tool.commit data.revision.leafId\");\n\tif (revision.sessionId !== value.sessionId)\n\t\tthrow new Error(\"tool.commit data.revision.sessionId must match sessionId\");\n\treturn value as unknown as ToolCommitEventDataV1;\n}\n\nexport function toolCommitEventDefinition(): LifecycleEventDefinition<ToolCommitEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: TOOL_COMMIT_EVENT_ID,\n\t\tversion: TOOL_COMMIT_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/tool.commit@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateToolCommitEventDataV1,\n\t};\n}\n\nexport function validateToolResultRawEventDataV1(value: unknown): ToolResultRawEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(\"tool.result.raw data must be a plain object\");\n\tconst allowed = new Set([\"version\", \"sessionId\", \"revision\", \"toolCallId\", \"toolName\", \"isError\", \"content\"]);\n\tconst unsupported = Object.keys(value).filter((key) => !allowed.has(key));\n\tif (unsupported.length > 0) {\n\t\tthrow new Error(`tool.result.raw data has unsupported fields: ${unsupported.join(\", \")}`);\n\t}\n\tfor (const key of [\"version\", \"sessionId\", \"revision\", \"toolCallId\", \"toolName\", \"isError\", \"content\"]) {\n\t\tif (!(key in value)) throw new Error(`tool.result.raw data is missing required field: ${key}`);\n\t}\n\tif (value.version !== 1) throw new Error(\"tool.result.raw data.version must be 1\");\n\tassertString(value.sessionId, \"tool.result.raw data.sessionId\");\n\tassertString(value.toolCallId, \"tool.result.raw data.toolCallId\");\n\tassertString(value.toolName, \"tool.result.raw data.toolName\");\n\tif (typeof value.isError !== \"boolean\") throw new Error(\"tool.result.raw data.isError must be boolean\");\n\tif (!isPlainRecord(value.revision)) throw new Error(\"tool.result.raw data.revision must be a plain object\");\n\tconst revision = value.revision;\n\tif (Object.keys(revision).sort().join(\",\") !== \"leafId,sequence,sessionId,version\") {\n\t\tthrow new Error(\"tool.result.raw data.revision has unsupported fields\");\n\t}\n\tif (revision.version !== 1) throw new Error(\"tool.result.raw data.revision.version must be 1\");\n\tassertString(revision.sessionId, \"tool.result.raw data.revision.sessionId\");\n\tif (typeof revision.sequence !== \"number\" || !Number.isSafeInteger(revision.sequence) || revision.sequence < 0) {\n\t\tthrow new Error(\"tool.result.raw data.revision.sequence must be a non-negative safe integer\");\n\t}\n\tif (revision.leafId !== null) assertString(revision.leafId, \"tool.result.raw data.revision.leafId\");\n\tif (revision.sessionId !== value.sessionId) {\n\t\tthrow new Error(\"tool.result.raw data.revision.sessionId must match sessionId\");\n\t}\n\tif (!Array.isArray(value.content)) throw new Error(\"tool.result.raw data.content must be an array\");\n\tfor (const [index, content] of value.content.entries()) {\n\t\tif (!isPlainRecord(content)) throw new Error(`tool.result.raw data.content[${index}] must be a plain object`);\n\t\tif (content.type === \"text\") {\n\t\t\tconst keys = Object.keys(content).sort().join(\",\");\n\t\t\tif (keys !== \"text,type\" && keys !== \"text,textSignature,type\") {\n\t\t\t\tthrow new Error(`tool.result.raw data.content[${index}] has unsupported text fields`);\n\t\t\t}\n\t\t\tassertString(content.text, `tool.result.raw data.content[${index}].text`);\n\t\t\tif (content.textSignature !== undefined) {\n\t\t\t\tassertString(content.textSignature, `tool.result.raw data.content[${index}].textSignature`);\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tif (content.type === \"image\") {\n\t\t\tif (Object.keys(content).sort().join(\",\") !== \"data,mimeType,type\") {\n\t\t\t\tthrow new Error(`tool.result.raw data.content[${index}] has unsupported image fields`);\n\t\t\t}\n\t\t\tassertString(content.data, `tool.result.raw data.content[${index}].data`);\n\t\t\tassertString(content.mimeType, `tool.result.raw data.content[${index}].mimeType`);\n\t\t\tcontinue;\n\t\t}\n\t\tthrow new Error(`tool.result.raw data.content[${index}].type is invalid`);\n\t}\n\treturn value as unknown as ToolResultRawEventDataV1;\n}\n\nexport function toolResultRawEventDefinition(): LifecycleEventDefinition<ToolResultRawEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\"];\n\treturn {\n\t\tid: TOOL_RESULT_RAW_EVENT_ID,\n\t\tversion: TOOL_RESULT_RAW_EVENT_VERSION,\n\t\tphase: \"raw\",\n\t\tschema: \"agent-forge/tool.result.raw@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateToolResultRawEventDataV1,\n\t};\n}\n\nexport const TOOL_RESULT_TRANSFORM_EVENT_ID = \"tool.result.transform\";\nexport const TOOL_RESULT_TRANSFORM_EVENT_VERSION = 1;\n\nexport interface ToolResultTransformEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\trevision: SessionRevisionV1;\n\ttoolCallId: string;\n\ttoolName: string;\n\tisError: boolean;\n\tcontent: readonly (TextContent | ImageContent)[];\n}\n\nexport function validateToolResultTransformEventDataV1(value: unknown): ToolResultTransformEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(\"tool.result.transform data must be a plain object\");\n\tconst allowed = new Set([\"version\", \"sessionId\", \"revision\", \"toolCallId\", \"toolName\", \"isError\", \"content\"]);\n\tconst unsupported = Object.keys(value).filter((key) => !allowed.has(key));\n\tif (unsupported.length > 0) {\n\t\tthrow new Error(`tool.result.transform data has unsupported fields: ${unsupported.join(\", \")}`);\n\t}\n\tfor (const key of [\"version\", \"sessionId\", \"revision\", \"toolCallId\", \"toolName\", \"isError\", \"content\"]) {\n\t\tif (!(key in value)) throw new Error(`tool.result.transform data is missing required field: ${key}`);\n\t}\n\tif (value.version !== 1) throw new Error(\"tool.result.transform data.version must be 1\");\n\tassertString(value.sessionId, \"tool.result.transform data.sessionId\");\n\tassertString(value.toolCallId, \"tool.result.transform data.toolCallId\");\n\tassertString(value.toolName, \"tool.result.transform data.toolName\");\n\tif (typeof value.isError !== \"boolean\") throw new Error(\"tool.result.transform data.isError must be boolean\");\n\tif (!isPlainRecord(value.revision)) throw new Error(\"tool.result.transform data.revision must be a plain object\");\n\tconst revision = value.revision;\n\tif (Object.keys(revision).sort().join(\",\") !== \"leafId,sequence,sessionId,version\") {\n\t\tthrow new Error(\"tool.result.transform data.revision has unsupported fields\");\n\t}\n\tif (revision.version !== 1) throw new Error(\"tool.result.transform data.revision.version must be 1\");\n\tassertString(revision.sessionId, \"tool.result.transform data.revision.sessionId\");\n\tif (typeof revision.sequence !== \"number\" || !Number.isSafeInteger(revision.sequence) || revision.sequence < 0) {\n\t\tthrow new Error(\"tool.result.transform data.revision.sequence must be a non-negative safe integer\");\n\t}\n\tif (revision.leafId !== null) assertString(revision.leafId, \"tool.result.transform data.revision.leafId\");\n\tif (revision.sessionId !== value.sessionId) {\n\t\tthrow new Error(\"tool.result.transform data.revision.sessionId must match sessionId\");\n\t}\n\tif (!Array.isArray(value.content)) throw new Error(\"tool.result.transform data.content must be an array\");\n\tfor (const [index, content] of value.content.entries()) {\n\t\tif (!isPlainRecord(content)) {\n\t\t\tthrow new Error(`tool.result.transform data.content[${index}] must be a plain object`);\n\t\t}\n\t\tif (content.type === \"text\") {\n\t\t\tconst keys = Object.keys(content).sort().join(\",\");\n\t\t\tif (keys !== \"text,type\" && keys !== \"text,textSignature,type\") {\n\t\t\t\tthrow new Error(`tool.result.transform data.content[${index}] has unsupported text fields`);\n\t\t\t}\n\t\t\tassertString(content.text, `tool.result.transform data.content[${index}].text`);\n\t\t\tif (content.textSignature !== undefined) {\n\t\t\t\tassertString(content.textSignature, `tool.result.transform data.content[${index}].textSignature`);\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tif (content.type === \"image\") {\n\t\t\tif (Object.keys(content).sort().join(\",\") !== \"data,mimeType,type\") {\n\t\t\t\tthrow new Error(`tool.result.transform data.content[${index}] has unsupported image fields`);\n\t\t\t}\n\t\t\tassertString(content.data, `tool.result.transform data.content[${index}].data`);\n\t\t\tassertString(content.mimeType, `tool.result.transform data.content[${index}].mimeType`);\n\t\t\tcontinue;\n\t\t}\n\t\tthrow new Error(`tool.result.transform data.content[${index}].type is invalid`);\n\t}\n\treturn value as unknown as ToolResultTransformEventDataV1;\n}\n\nexport function toolResultTransformEventDefinition(): LifecycleEventDefinition<ToolResultTransformEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"transform\"];\n\treturn {\n\t\tid: TOOL_RESULT_TRANSFORM_EVENT_ID,\n\t\tversion: TOOL_RESULT_TRANSFORM_EVENT_VERSION,\n\t\tphase: \"candidate\",\n\t\tschema: \"agent-forge/tool.result.transform@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateToolResultTransformEventDataV1,\n\t};\n}\n\nexport function validateOperationEndEventDataV1(value: unknown): OperationEndEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(\"operation.end data must be a plain object\");\n\tconst allowed = new Set([\"version\", \"operationId\", \"operationKind\", \"status\", \"errorMessage\", \"reason\"]);\n\tconst unsupported = Object.keys(value).filter((key) => !allowed.has(key));\n\tif (unsupported.length > 0) throw new Error(`operation.end data has unsupported fields: ${unsupported.join(\", \")}`);\n\tfor (const key of [\"version\", \"operationId\", \"operationKind\", \"status\"]) {\n\t\tif (!(key in value)) throw new Error(`operation.end data is missing required field: ${key}`);\n\t}\n\tif (value.version !== 1) throw new Error(\"operation.end data.version must be 1\");\n\tassertString(value.operationId, \"operation.end data.operationId\");\n\tassertString(value.operationKind, \"operation.end data.operationKind\");\n\tif (value.status !== \"succeeded\" && value.status !== \"failed\" && value.status !== \"cancelled\") {\n\t\tthrow new Error(\"operation.end data.status is invalid\");\n\t}\n\tif (value.errorMessage !== undefined) assertString(value.errorMessage, \"operation.end data.errorMessage\");\n\tif (value.reason !== undefined) assertString(value.reason, \"operation.end data.reason\");\n\treturn value as unknown as OperationEndEventDataV1;\n}\n\nexport function operationEndEventDefinition(): LifecycleEventDefinition<OperationEndEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: OPERATION_END_EVENT_ID,\n\t\tversion: OPERATION_END_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/operation.end@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateOperationEndEventDataV1,\n\t};\n}\n\nexport const CAPABILITY_CALL_EVENT_ID = \"capability.call\";\nexport const CAPABILITY_CALL_EVENT_VERSION = 1;\n\nexport type CapabilityCallEventNameV1 = \"start\" | \"cancel\" | \"end\";\nexport type CapabilityCallStatusV1 = \"succeeded\" | \"failed\" | \"cancelled\";\n\nexport interface CapabilityCallEventDataV1 {\n\tversion: 1;\n\toperationId: string;\n\tcapabilityId: string;\n\tcapabilityVersion: number;\n\tcapabilityKind: \"service\" | \"contribution\" | \"transform\";\n\tcallerPluginId: string;\n\tproviderPluginId: string;\n\tevent: CapabilityCallEventNameV1;\n\tstatus?: CapabilityCallStatusV1;\n\terror?: { code: string; message: string; name?: string };\n}\n\nconst capabilityCallEvents = new Set<CapabilityCallEventNameV1>([\"start\", \"cancel\", \"end\"]);\nconst capabilityCallStatuses = new Set<CapabilityCallStatusV1>([\"succeeded\", \"failed\", \"cancelled\"]);\n\nexport function validateCapabilityCallEventDataV1(value: unknown): CapabilityCallEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(\"capability.call data must be a plain object\");\n\tconst allowed = new Set([\n\t\t\"version\",\n\t\t\"operationId\",\n\t\t\"capabilityId\",\n\t\t\"capabilityVersion\",\n\t\t\"capabilityKind\",\n\t\t\"callerPluginId\",\n\t\t\"providerPluginId\",\n\t\t\"event\",\n\t\t\"status\",\n\t\t\"error\",\n\t]);\n\tconst unsupported = Object.keys(value).filter((key) => !allowed.has(key));\n\tif (unsupported.length > 0) {\n\t\tthrow new Error(`capability.call data has unsupported fields: ${unsupported.join(\", \")}`);\n\t}\n\tfor (const key of [\n\t\t\"version\",\n\t\t\"operationId\",\n\t\t\"capabilityId\",\n\t\t\"capabilityVersion\",\n\t\t\"capabilityKind\",\n\t\t\"callerPluginId\",\n\t\t\"providerPluginId\",\n\t\t\"event\",\n\t]) {\n\t\tif (!(key in value)) throw new Error(`capability.call data is missing required field: ${key}`);\n\t}\n\tif (value.version !== 1) throw new Error(\"capability.call data.version must be 1\");\n\tassertString(value.operationId, \"capability.call data.operationId\");\n\tassertString(value.capabilityId, \"capability.call data.capabilityId\");\n\tif (\n\t\ttypeof value.capabilityVersion !== \"number\" ||\n\t\t!Number.isSafeInteger(value.capabilityVersion) ||\n\t\tvalue.capabilityVersion < 1\n\t) {\n\t\tthrow new Error(\"capability.call data.capabilityVersion must be a positive safe integer\");\n\t}\n\tif (\n\t\tvalue.capabilityKind !== \"service\" &&\n\t\tvalue.capabilityKind !== \"contribution\" &&\n\t\tvalue.capabilityKind !== \"transform\"\n\t) {\n\t\tthrow new Error(\"capability.call data.capabilityKind is invalid\");\n\t}\n\tassertString(value.callerPluginId, \"capability.call data.callerPluginId\");\n\tassertString(value.providerPluginId, \"capability.call data.providerPluginId\");\n\tif (typeof value.event !== \"string\" || !capabilityCallEvents.has(value.event as CapabilityCallEventNameV1)) {\n\t\tthrow new Error(\"capability.call data.event is invalid\");\n\t}\n\tif ((value.event === \"start\" || value.event === \"cancel\") && value.status !== undefined) {\n\t\tthrow new Error(\"capability.call start/cancel must not include status\");\n\t}\n\tif (value.event === \"end\" && value.status === undefined) {\n\t\tthrow new Error(\"capability.call end requires status\");\n\t}\n\tif (value.status !== undefined) {\n\t\tif (typeof value.status !== \"string\" || !capabilityCallStatuses.has(value.status as CapabilityCallStatusV1)) {\n\t\t\tthrow new Error(\"capability.call data.status is invalid\");\n\t\t}\n\t}\n\tif (value.error !== undefined) {\n\t\tif (!isPlainRecord(value.error)) throw new Error(\"capability.call data.error must be a plain object\");\n\t\tconst errorKeys = Object.keys(value.error);\n\t\tif (errorKeys.some((key) => key !== \"code\" && key !== \"message\" && key !== \"name\")) {\n\t\t\tthrow new Error(\"capability.call data.error has unsupported fields\");\n\t\t}\n\t\tif (!(\"code\" in value.error)) throw new Error(\"capability.call data.error is missing required field: code\");\n\t\tif (!(\"message\" in value.error)) throw new Error(\"capability.call data.error is missing required field: message\");\n\t\tassertString(value.error.code, \"capability.call data.error.code\");\n\t\tassertString(value.error.message, \"capability.call data.error.message\");\n\t\tif (value.error.name !== undefined) assertString(value.error.name, \"capability.call data.error.name\");\n\t}\n\tif (value.event !== \"end\" && value.error !== undefined) {\n\t\tthrow new Error(\"capability.call start/cancel must not include error\");\n\t}\n\tif (value.event === \"end\" && value.status === \"succeeded\" && value.error !== undefined) {\n\t\tthrow new Error(\"capability.call succeeded end must not include error\");\n\t}\n\treturn value as unknown as CapabilityCallEventDataV1;\n}\n\nexport function capabilityCallEventDefinition(): LifecycleEventDefinition<CapabilityCallEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: CAPABILITY_CALL_EVENT_ID,\n\t\tversion: CAPABILITY_CALL_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/capability.call@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateCapabilityCallEventDataV1,\n\t};\n}\n\nexport const OPERATION_START_EVENT_ID = \"operation.start\";\nexport const OPERATION_START_EVENT_VERSION = 1;\n\nexport const OPERATION_STEP_EVENT_ID = \"operation.step\";\nexport const OPERATION_STEP_EVENT_VERSION = 1;\n\nexport interface OperationStartEventDataV1 {\n\tversion: 1;\n\toperationId: string;\n\toperationKind: string;\n}\n\nexport function validateOperationStartEventDataV1(value: unknown): OperationStartEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(\"operation.start data must be a plain object\");\n\tconst keys = Object.keys(value).sort().join(\",\");\n\tif (keys !== \"operationId,operationKind,version\") {\n\t\tthrow new Error(\"operation.start data has unsupported fields\");\n\t}\n\tif (value.version !== 1) throw new Error(\"operation.start data.version must be 1\");\n\tassertString(value.operationId, \"operation.start data.operationId\");\n\tassertString(value.operationKind, \"operation.start data.operationKind\");\n\treturn value as unknown as OperationStartEventDataV1;\n}\n\nexport function operationStartEventDefinition(): LifecycleEventDefinition<OperationStartEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: OPERATION_START_EVENT_ID,\n\t\tversion: OPERATION_START_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/operation.start@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateOperationStartEventDataV1,\n\t};\n}\n\nexport interface OperationStepEventDataV1 {\n\tversion: 1;\n\toperationId: string;\n\toperationKind: string;\n\tstep: number;\n\tmessage?: string;\n\tdata?: PluginConfigValue;\n}\n\nexport function validateOperationStepEventDataV1(value: unknown): OperationStepEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(\"operation.step data must be a plain object\");\n\tconst allowed = new Set([\"version\", \"operationId\", \"operationKind\", \"step\", \"message\", \"data\"]);\n\tconst unsupported = Object.keys(value).filter((key) => !allowed.has(key));\n\tif (unsupported.length > 0) throw new Error(\"operation.step data has unsupported fields\");\n\tif (value.version !== 1) throw new Error(\"operation.step data.version must be 1\");\n\tassertString(value.operationId, \"operation.step data.operationId\");\n\tassertString(value.operationKind, \"operation.step data.operationKind\");\n\tif (typeof value.step !== \"number\" || !Number.isSafeInteger(value.step) || value.step < 1) {\n\t\tthrow new Error(\"operation.step data.step must be a positive safe integer\");\n\t}\n\tif (value.message !== undefined) assertString(value.message, \"operation.step data.message\");\n\tif (value.data !== undefined) assertJsonSafe(value.data, \"operation.step data.data\");\n\treturn value as unknown as OperationStepEventDataV1;\n}\n\nexport function operationStepEventDefinition(): LifecycleEventDefinition<OperationStepEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: OPERATION_STEP_EVENT_ID,\n\t\tversion: OPERATION_STEP_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/operation.step@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateOperationStepEventDataV1,\n\t};\n}\n\nexport const OPERATION_CANCEL_EVENT_ID = \"operation.cancel\";\nexport const OPERATION_CANCEL_EVENT_VERSION = 1;\n\nexport interface OperationCancelEventDataV1 {\n\tversion: 1;\n\toperationId: string;\n\toperationKind: string;\n}\n\nexport function validateOperationCancelEventDataV1(value: unknown): OperationCancelEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(\"operation.cancel data must be a plain object\");\n\tconst keys = Object.keys(value).sort().join(\",\");\n\tif (keys !== \"operationId,operationKind,version\") {\n\t\tthrow new Error(\"operation.cancel data has unsupported fields\");\n\t}\n\tif (value.version !== 1) throw new Error(\"operation.cancel data.version must be 1\");\n\tassertString(value.operationId, \"operation.cancel data.operationId\");\n\tassertString(value.operationKind, \"operation.cancel data.operationKind\");\n\treturn value as unknown as OperationCancelEventDataV1;\n}\n\nexport function operationCancelEventDefinition(): LifecycleEventDefinition<OperationCancelEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: OPERATION_CANCEL_EVENT_ID,\n\t\tversion: OPERATION_CANCEL_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/operation.cancel@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateOperationCancelEventDataV1,\n\t};\n}\n\nexport const SESSION_AUTO_RETRY_EVENT_ID = \"session.auto.retry\";\nexport const SESSION_AUTO_RETRY_EVENT_VERSION = 1;\n\nexport const SESSION_COMPACTION_DECISION_EVENT_ID = \"session.compaction.decision\";\nexport const SESSION_COMPACTION_DECISION_EVENT_VERSION = 1;\n\nexport const SESSION_COMPACTION_FAILED_EVENT_ID = \"session.compaction.failed\";\nexport const SESSION_COMPACTION_FAILED_EVENT_VERSION = 1;\n\n/** The host entered the actual retry path after a retryable agent failure. */\nexport interface SessionAutoRetryEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\tattempt: number;\n\tmaxAttempts: number;\n\tdelayMs: number;\n\terrorMessage: string;\n}\n\nexport type SessionCompactionDecisionReasonV1 = \"overflow\" | \"threshold\";\n\n/**\n * One compaction policy decision observed by the host, including the negative\n * pre-check verdicts. The threshold triplet is present only when the host\n * measured it (threshold paths); the overflow path's policy request carries no\n * contextUsage, so the fields are omitted rather than fabricated.\n */\nexport interface SessionCompactionDecisionEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\treason: SessionCompactionDecisionReasonV1;\n\tcompact: boolean;\n\twillRetry: boolean;\n\tcontextTokens?: number;\n\tcontextWindow?: number;\n\treserveTokens?: number;\n\tfailureMessage?: string;\n}\n\nexport type SessionCompactionFailedReasonV1 = \"manual\" | \"overflow\" | \"threshold\";\n\n/** A compaction that genuinely failed; extension/user cancellation stays unreported. */\nexport interface SessionCompactionFailedEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\treason: SessionCompactionFailedReasonV1;\n\terrorMessage: string;\n}\n\nfunction assertNonNegativeSafeInteger(value: unknown, label: string): void {\n\tif (typeof value !== \"number\" || !Number.isSafeInteger(value) || value < 0) {\n\t\tthrow new Error(`${label} must be a non-negative safe integer`);\n\t}\n}\n\nfunction assertPositiveSafeInteger(value: unknown, label: string): void {\n\tif (typeof value !== \"number\" || !Number.isSafeInteger(value) || value < 1) {\n\t\tthrow new Error(`${label} must be a positive safe integer`);\n\t}\n}\n\nexport function validateSessionAutoRetryEventDataV1(value: unknown): SessionAutoRetryEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(\"session.auto.retry data must be a plain object\");\n\tconst allowed = new Set([\"version\", \"sessionId\", \"attempt\", \"maxAttempts\", \"delayMs\", \"errorMessage\"]);\n\tconst unsupported = Object.keys(value).filter((key) => !allowed.has(key));\n\tif (unsupported.length > 0) {\n\t\tthrow new Error(`session.auto.retry data has unsupported fields: ${unsupported.join(\", \")}`);\n\t}\n\tfor (const key of [\"version\", \"sessionId\", \"attempt\", \"maxAttempts\", \"delayMs\", \"errorMessage\"]) {\n\t\tif (!(key in value)) throw new Error(`session.auto.retry data is missing required field: ${key}`);\n\t}\n\tif (value.version !== 1) throw new Error(\"session.auto.retry data.version must be 1\");\n\tassertString(value.sessionId, \"session.auto.retry data.sessionId\");\n\tassertPositiveSafeInteger(value.attempt, \"session.auto.retry data.attempt\");\n\tassertPositiveSafeInteger(value.maxAttempts, \"session.auto.retry data.maxAttempts\");\n\tassertNonNegativeSafeInteger(value.delayMs, \"session.auto.retry data.delayMs\");\n\tassertString(value.errorMessage, \"session.auto.retry data.errorMessage\");\n\treturn value as unknown as SessionAutoRetryEventDataV1;\n}\n\nexport function sessionAutoRetryEventDefinition(): LifecycleEventDefinition<SessionAutoRetryEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: SESSION_AUTO_RETRY_EVENT_ID,\n\t\tversion: SESSION_AUTO_RETRY_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/session.auto.retry@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateSessionAutoRetryEventDataV1,\n\t};\n}\n\nconst sessionCompactionDecisionReasons = new Set<SessionCompactionDecisionReasonV1>([\"overflow\", \"threshold\"]);\n\nfunction assertOptionalPositiveSafeInteger(value: unknown, label: string): void {\n\tif (value === undefined) return;\n\tassertPositiveSafeInteger(value, label);\n}\n\nexport function validateSessionCompactionDecisionEventDataV1(value: unknown): SessionCompactionDecisionEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(\"session.compaction.decision data must be a plain object\");\n\tconst allowed = new Set([\n\t\t\"version\",\n\t\t\"sessionId\",\n\t\t\"reason\",\n\t\t\"compact\",\n\t\t\"willRetry\",\n\t\t\"contextTokens\",\n\t\t\"contextWindow\",\n\t\t\"reserveTokens\",\n\t\t\"failureMessage\",\n\t]);\n\tconst unsupported = Object.keys(value).filter((key) => !allowed.has(key));\n\tif (unsupported.length > 0) {\n\t\tthrow new Error(`session.compaction.decision data has unsupported fields: ${unsupported.join(\", \")}`);\n\t}\n\tfor (const key of [\"version\", \"sessionId\", \"reason\", \"compact\", \"willRetry\"]) {\n\t\tif (!(key in value)) throw new Error(`session.compaction.decision data is missing required field: ${key}`);\n\t}\n\tif (value.version !== 1) throw new Error(\"session.compaction.decision data.version must be 1\");\n\tassertString(value.sessionId, \"session.compaction.decision data.sessionId\");\n\tif (\n\t\ttypeof value.reason !== \"string\" ||\n\t\t!sessionCompactionDecisionReasons.has(value.reason as SessionCompactionDecisionReasonV1)\n\t) {\n\t\tthrow new Error(\"session.compaction.decision data.reason is invalid\");\n\t}\n\tif (typeof value.compact !== \"boolean\") {\n\t\tthrow new Error(\"session.compaction.decision data.compact must be a boolean\");\n\t}\n\tif (typeof value.willRetry !== \"boolean\") {\n\t\tthrow new Error(\"session.compaction.decision data.willRetry must be a boolean\");\n\t}\n\tassertOptionalPositiveSafeInteger(value.contextTokens, \"session.compaction.decision data.contextTokens\");\n\tassertOptionalPositiveSafeInteger(value.contextWindow, \"session.compaction.decision data.contextWindow\");\n\tassertOptionalPositiveSafeInteger(value.reserveTokens, \"session.compaction.decision data.reserveTokens\");\n\tif (value.failureMessage !== undefined) {\n\t\tassertString(value.failureMessage, \"session.compaction.decision data.failureMessage\");\n\t}\n\treturn value as unknown as SessionCompactionDecisionEventDataV1;\n}\n\nexport function sessionCompactionDecisionEventDefinition(): LifecycleEventDefinition<SessionCompactionDecisionEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: SESSION_COMPACTION_DECISION_EVENT_ID,\n\t\tversion: SESSION_COMPACTION_DECISION_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/session.compaction.decision@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateSessionCompactionDecisionEventDataV1,\n\t};\n}\n\nconst sessionCompactionFailedReasons = new Set<SessionCompactionFailedReasonV1>([\"manual\", \"overflow\", \"threshold\"]);\n\nexport function validateSessionCompactionFailedEventDataV1(value: unknown): SessionCompactionFailedEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(\"session.compaction.failed data must be a plain object\");\n\tconst allowed = new Set([\"version\", \"sessionId\", \"reason\", \"errorMessage\"]);\n\tconst unsupported = Object.keys(value).filter((key) => !allowed.has(key));\n\tif (unsupported.length > 0) {\n\t\tthrow new Error(`session.compaction.failed data has unsupported fields: ${unsupported.join(\", \")}`);\n\t}\n\tfor (const key of [\"version\", \"sessionId\", \"reason\", \"errorMessage\"]) {\n\t\tif (!(key in value)) throw new Error(`session.compaction.failed data is missing required field: ${key}`);\n\t}\n\tif (value.version !== 1) throw new Error(\"session.compaction.failed data.version must be 1\");\n\tassertString(value.sessionId, \"session.compaction.failed data.sessionId\");\n\tif (\n\t\ttypeof value.reason !== \"string\" ||\n\t\t!sessionCompactionFailedReasons.has(value.reason as SessionCompactionFailedReasonV1)\n\t) {\n\t\tthrow new Error(\"session.compaction.failed data.reason is invalid\");\n\t}\n\tassertString(value.errorMessage, \"session.compaction.failed data.errorMessage\");\n\treturn value as unknown as SessionCompactionFailedEventDataV1;\n}\n\nexport function sessionCompactionFailedEventDefinition(): LifecycleEventDefinition<SessionCompactionFailedEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: SESSION_COMPACTION_FAILED_EVENT_ID,\n\t\tversion: SESSION_COMPACTION_FAILED_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/session.compaction.failed@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateSessionCompactionFailedEventDataV1,\n\t};\n}\n\nexport const SESSION_END_EVENT_ID = \"session.end\";\nexport const SESSION_END_EVENT_VERSION = 1;\n\n/**\n * Terminal fact of a session dispose. A reload does not dispatch this event:\n * a reload is covered by session.start(reason:\"reload\") plus session.reload@1.\n */\nexport interface SessionEndEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n}\n\nexport function validateSessionEndEventDataV1(value: unknown): SessionEndEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(\"session.end data must be a plain object\");\n\tif (Object.keys(value).sort().join(\",\") !== \"sessionId,version\") {\n\t\tthrow new Error(\"session.end data has unsupported fields\");\n\t}\n\tif (value.version !== 1) throw new Error(\"session.end data.version must be 1\");\n\tassertString(value.sessionId, \"session.end data.sessionId\");\n\treturn value as unknown as SessionEndEventDataV1;\n}\n\nexport function sessionEndEventDefinition(): LifecycleEventDefinition<SessionEndEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: SESSION_END_EVENT_ID,\n\t\tversion: SESSION_END_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/session.end@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateSessionEndEventDataV1,\n\t};\n}\n\nexport const AGENT_TASK_SETTLED_EVENT_ID = \"agent.task.settled\";\nexport const AGENT_TASK_SETTLED_EVENT_VERSION = 1;\n\n/** Scheduler-authoritative settlement status; mirrors SubagentRuntimeStatus verbatim. */\nexport type AgentTaskSettledStatusV1 =\n\t| \"queued\"\n\t| \"admitted\"\n\t| \"running\"\n\t| \"succeeded\"\n\t| \"failed\"\n\t| \"cancelled\"\n\t| \"timed_out\"\n\t| \"drain_timeout\"\n\t| \"runner_lost\";\n\n/**\n * One settled background delegation task. `sessionId` is the parent session\n * that owns the task; `taskSessionId` is the child session the task ran in.\n */\nexport interface AgentTaskSettledEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\ttaskSessionId: string;\n\ttaskId: string;\n\tstatus: AgentTaskSettledStatusV1;\n\treasonCode?: string;\n}\n\nconst agentTaskSettledStatuses = new Set<AgentTaskSettledStatusV1>([\n\t\"queued\",\n\t\"admitted\",\n\t\"running\",\n\t\"succeeded\",\n\t\"failed\",\n\t\"cancelled\",\n\t\"timed_out\",\n\t\"drain_timeout\",\n\t\"runner_lost\",\n]);\n\nexport function validateAgentTaskSettledEventDataV1(value: unknown): AgentTaskSettledEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(\"agent.task.settled data must be a plain object\");\n\tconst allowed = new Set([\"version\", \"sessionId\", \"taskSessionId\", \"taskId\", \"status\", \"reasonCode\"]);\n\tconst unsupported = Object.keys(value).filter((key) => !allowed.has(key));\n\tif (unsupported.length > 0) {\n\t\tthrow new Error(`agent.task.settled data has unsupported fields: ${unsupported.join(\", \")}`);\n\t}\n\tfor (const key of [\"version\", \"sessionId\", \"taskSessionId\", \"taskId\", \"status\"]) {\n\t\tif (!(key in value)) throw new Error(`agent.task.settled data is missing required field: ${key}`);\n\t}\n\tif (value.version !== 1) throw new Error(\"agent.task.settled data.version must be 1\");\n\tassertString(value.sessionId, \"agent.task.settled data.sessionId\");\n\tassertString(value.taskSessionId, \"agent.task.settled data.taskSessionId\");\n\tassertString(value.taskId, \"agent.task.settled data.taskId\");\n\tif (typeof value.status !== \"string\" || !agentTaskSettledStatuses.has(value.status as AgentTaskSettledStatusV1)) {\n\t\tthrow new Error(\"agent.task.settled data.status is invalid\");\n\t}\n\tif (value.reasonCode !== undefined) assertString(value.reasonCode, \"agent.task.settled data.reasonCode\");\n\treturn value as unknown as AgentTaskSettledEventDataV1;\n}\n\nexport function agentTaskSettledEventDefinition(): LifecycleEventDefinition<AgentTaskSettledEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: AGENT_TASK_SETTLED_EVENT_ID,\n\t\tversion: AGENT_TASK_SETTLED_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/agent.task.settled@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateAgentTaskSettledEventDataV1,\n\t};\n}\n\n/**\n * Observed fact of one beforeToolCall chain link returning a block\n * short-circuit. The blocking plugin's identity is deliberately absent: the\n * hook chain has no identity surface.\n */\nexport interface ToolGateBlockedEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\ttoolCallId: string;\n\ttoolName: string;\n\treason?: string;\n}\n\nexport function validateToolGateBlockedEventDataV1(value: unknown): ToolGateBlockedEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(\"tool.gate.blocked data must be a plain object\");\n\tconst allowed = new Set([\"version\", \"sessionId\", \"toolCallId\", \"toolName\", \"reason\"]);\n\tconst unsupported = Object.keys(value).filter((key) => !allowed.has(key));\n\tif (unsupported.length > 0)\n\t\tthrow new Error(`tool.gate.blocked data has unsupported fields: ${unsupported.join(\", \")}`);\n\tfor (const key of [\"version\", \"sessionId\", \"toolCallId\", \"toolName\"]) {\n\t\tif (!(key in value)) throw new Error(`tool.gate.blocked data is missing required field: ${key}`);\n\t}\n\tif (value.version !== 1) throw new Error(\"tool.gate.blocked data.version must be 1\");\n\tassertString(value.sessionId, \"tool.gate.blocked data.sessionId\");\n\tassertString(value.toolCallId, \"tool.gate.blocked data.toolCallId\");\n\tassertString(value.toolName, \"tool.gate.blocked data.toolName\");\n\tif (value.reason !== undefined) assertString(value.reason, \"tool.gate.blocked data.reason\");\n\treturn value as unknown as ToolGateBlockedEventDataV1;\n}\n\nexport function toolGateBlockedEventDefinition(): LifecycleEventDefinition<ToolGateBlockedEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: TOOL_GATE_BLOCKED_EVENT_ID,\n\t\tversion: TOOL_GATE_BLOCKED_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/tool.gate.blocked@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateToolGateBlockedEventDataV1,\n\t};\n}\n\n/**\n * Observed fact of one beforeInput chain link returning a block short-circuit\n * (输入 gate 拒绝,扩展位盘点 A3). Facts only — the rejected input's text never\n * enters the envelope, matching input.received@1's privacy posture. The\n * blocking plugin's identity is deliberately absent: the hook chain has no\n * identity surface.\n */\nexport interface InputGateBlockedEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\tsource: string;\n\ttextLength: number;\n\treason?: string;\n}\n\nexport function validateInputGateBlockedEventDataV1(value: unknown): InputGateBlockedEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(\"input.gate.blocked data must be a plain object\");\n\tconst allowed = new Set([\"version\", \"sessionId\", \"source\", \"textLength\", \"reason\"]);\n\tconst unsupported = Object.keys(value).filter((key) => !allowed.has(key));\n\tif (unsupported.length > 0)\n\t\tthrow new Error(`input.gate.blocked data has unsupported fields: ${unsupported.join(\", \")}`);\n\tfor (const key of [\"version\", \"sessionId\", \"source\", \"textLength\"]) {\n\t\tif (!(key in value)) throw new Error(`input.gate.blocked data is missing required field: ${key}`);\n\t}\n\tif (value.version !== 1) throw new Error(\"input.gate.blocked data.version must be 1\");\n\tassertString(value.sessionId, \"input.gate.blocked data.sessionId\");\n\tassertString(value.source, \"input.gate.blocked data.source\");\n\tif (typeof value.textLength !== \"number\" || !Number.isInteger(value.textLength) || value.textLength < 0) {\n\t\tthrow new Error(\"input.gate.blocked data.textLength must be a non-negative integer\");\n\t}\n\tif (value.reason !== undefined) assertString(value.reason, \"input.gate.blocked data.reason\");\n\treturn value as unknown as InputGateBlockedEventDataV1;\n}\n\nexport function inputGateBlockedEventDefinition(): LifecycleEventDefinition<InputGateBlockedEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: INPUT_GATE_BLOCKED_EVENT_ID,\n\t\tversion: INPUT_GATE_BLOCKED_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/input.gate.blocked@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateInputGateBlockedEventDataV1,\n\t};\n}\n\nexport const PROVIDER_FAILOVER_SWITCHED_EVENT_ID = \"provider.failover.switched\";\nexport const PROVIDER_FAILOVER_SWITCHED_EVENT_VERSION = 1;\n\nexport const PROVIDER_FAILOVER_RECOVERED_EVENT_ID = \"provider.failover.recovered\";\nexport const PROVIDER_FAILOVER_RECOVERED_EVENT_VERSION = 1;\n\nexport const PROVIDER_FAILOVER_PROBE_FAILED_EVENT_ID = \"provider.failover.probe.failed\";\nexport const PROVIDER_FAILOVER_PROBE_FAILED_EVENT_VERSION = 1;\n\n/**\n * Observed fact of one provider-failover reroute (设计 供应商能力槽位与主备切换\n * §4.7): the request left `from` for `to` after a failed attempt with no\n * user-visible content yet. `chainId` is the primary `provider/modelId` the\n * breaker state hangs on; `attempt` is the 1-based switch ordinal within the\n * request; `rawError` is the truncated original error text of the failed\n * attempt — display-only attribution that never feeds the decision.\n */\nexport interface ProviderFailoverSwitchedEventDataV1 {\n\tversion: 1;\n\tchainId: string;\n\tfrom: string;\n\tto: string;\n\tattempt: number;\n\trawError: string;\n}\n\n/** Observed fact of a successful primary probe: the breaker closed and traffic returned to the primary. */\nexport interface ProviderFailoverRecoveredEventDataV1 {\n\tversion: 1;\n\tchainId: string;\n\tprovider: string;\n}\n\n/**\n * Observed fact of a failed primary probe: the breaker reopened with a doubled\n * cooldown. `rawError` is the truncated original error text (display-only);\n * `nextCooldownMs` is the cooldown the next probe must wait out.\n */\nexport interface ProviderFailoverProbeFailedEventDataV1 {\n\tversion: 1;\n\tchainId: string;\n\tprovider: string;\n\trawError: string;\n\tnextCooldownMs: number;\n}\n\nconst isModelReference = (value: string): boolean => {\n\tconst separator = value.indexOf(\"/\");\n\treturn separator > 0 && separator < value.length - 1;\n};\n\nfunction validateFailoverModelReference(value: unknown, label: string): asserts value is string {\n\tassertString(value, label);\n\tif (!isModelReference(value)) throw new Error(`${label} must be a provider/modelId reference`);\n}\n\nexport function validateProviderFailoverSwitchedEventDataV1(value: unknown): ProviderFailoverSwitchedEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(\"provider.failover.switched data must be a plain object\");\n\tconst allowed = new Set([\"version\", \"chainId\", \"from\", \"to\", \"attempt\", \"rawError\"]);\n\tconst unsupported = Object.keys(value).filter((key) => !allowed.has(key));\n\tif (unsupported.length > 0) {\n\t\tthrow new Error(`provider.failover.switched data has unsupported fields: ${unsupported.join(\", \")}`);\n\t}\n\tfor (const key of [\"version\", \"chainId\", \"from\", \"to\", \"attempt\", \"rawError\"]) {\n\t\tif (!(key in value)) throw new Error(`provider.failover.switched data is missing required field: ${key}`);\n\t}\n\tif (value.version !== 1) throw new Error(\"provider.failover.switched data.version must be 1\");\n\tvalidateFailoverModelReference(value.chainId, \"provider.failover.switched data.chainId\");\n\tvalidateFailoverModelReference(value.from, \"provider.failover.switched data.from\");\n\tvalidateFailoverModelReference(value.to, \"provider.failover.switched data.to\");\n\tassertPositiveSafeInteger(value.attempt, \"provider.failover.switched data.attempt\");\n\tassertString(value.rawError, \"provider.failover.switched data.rawError\");\n\treturn value as unknown as ProviderFailoverSwitchedEventDataV1;\n}\n\nexport function providerFailoverSwitchedEventDefinition(): LifecycleEventDefinition<ProviderFailoverSwitchedEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: PROVIDER_FAILOVER_SWITCHED_EVENT_ID,\n\t\tversion: PROVIDER_FAILOVER_SWITCHED_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/provider.failover.switched@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateProviderFailoverSwitchedEventDataV1,\n\t};\n}\n\nexport function validateProviderFailoverRecoveredEventDataV1(value: unknown): ProviderFailoverRecoveredEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(\"provider.failover.recovered data must be a plain object\");\n\tif (Object.keys(value).sort().join(\",\") !== \"chainId,provider,version\") {\n\t\tthrow new Error(\"provider.failover.recovered data has unsupported fields\");\n\t}\n\tif (value.version !== 1) throw new Error(\"provider.failover.recovered data.version must be 1\");\n\tvalidateFailoverModelReference(value.chainId, \"provider.failover.recovered data.chainId\");\n\tassertString(value.provider, \"provider.failover.recovered data.provider\");\n\treturn value as unknown as ProviderFailoverRecoveredEventDataV1;\n}\n\nexport function providerFailoverRecoveredEventDefinition(): LifecycleEventDefinition<ProviderFailoverRecoveredEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: PROVIDER_FAILOVER_RECOVERED_EVENT_ID,\n\t\tversion: PROVIDER_FAILOVER_RECOVERED_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/provider.failover.recovered@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateProviderFailoverRecoveredEventDataV1,\n\t};\n}\n\nexport function validateProviderFailoverProbeFailedEventDataV1(value: unknown): ProviderFailoverProbeFailedEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(\"provider.failover.probe.failed data must be a plain object\");\n\tconst allowed = new Set([\"version\", \"chainId\", \"provider\", \"rawError\", \"nextCooldownMs\"]);\n\tconst unsupported = Object.keys(value).filter((key) => !allowed.has(key));\n\tif (unsupported.length > 0) {\n\t\tthrow new Error(`provider.failover.probe.failed data has unsupported fields: ${unsupported.join(\", \")}`);\n\t}\n\tfor (const key of [\"version\", \"chainId\", \"provider\", \"rawError\", \"nextCooldownMs\"]) {\n\t\tif (!(key in value)) throw new Error(`provider.failover.probe.failed data is missing required field: ${key}`);\n\t}\n\tif (value.version !== 1) throw new Error(\"provider.failover.probe.failed data.version must be 1\");\n\tvalidateFailoverModelReference(value.chainId, \"provider.failover.probe.failed data.chainId\");\n\tassertString(value.provider, \"provider.failover.probe.failed data.provider\");\n\tassertString(value.rawError, \"provider.failover.probe.failed data.rawError\");\n\tassertPositiveSafeInteger(value.nextCooldownMs, \"provider.failover.probe.failed data.nextCooldownMs\");\n\treturn value as unknown as ProviderFailoverProbeFailedEventDataV1;\n}\n\nexport function providerFailoverProbeFailedEventDefinition(): LifecycleEventDefinition<ProviderFailoverProbeFailedEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: PROVIDER_FAILOVER_PROBE_FAILED_EVENT_ID,\n\t\tversion: PROVIDER_FAILOVER_PROBE_FAILED_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/provider.failover.probe.failed@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateProviderFailoverProbeFailedEventDataV1,\n\t};\n}\n"]}
|
|
1
|
+
{"version":3,"file":"lifecycle-catalog.js","sourceRoot":"","sources":["../../../src/core/extensions/lifecycle-catalog.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AssistantMessage, ImageContent, TextContent, ToolResultMessage } from \"@agent-forge/ai/compat\";\nimport { t } from \"../i18n/index.ts\";\nimport type { BuildSystemPromptOptions } from \"../system-prompt.ts\";\nimport type {\n\tContextOperationOptions,\n\tLifecycleEventDefinition,\n\tLifecycleRegistrationKind,\n\tPluginConfigValue,\n\tSessionRevisionV1,\n} from \"./public-api.ts\";\n\nexport const PLUGIN_DISPOSE_EVENT_ID = \"plugin.dispose\";\nexport const PLUGIN_DISPOSE_EVENT_VERSION = 1;\n\nexport const PLUGIN_READY_EVENT_ID = \"plugin.ready\";\nexport const PLUGIN_READY_EVENT_VERSION = 1;\n\nexport const SESSION_CONTEXT_REPLACED_EVENT_ID = \"session.context.replaced\";\nexport const SESSION_CONTEXT_REPLACED_EVENT_VERSION = 1;\n\nexport const SESSION_RELOAD_EVENT_ID = \"session.reload\";\nexport const SESSION_RELOAD_EVENT_VERSION = 1;\n\nexport const AGENT_START_EVENT_ID = \"agent.start\";\nexport const AGENT_START_EVENT_VERSION = 1;\n\nexport const AGENT_SETTLED_EVENT_ID = \"agent.settled\";\nexport const AGENT_SETTLED_EVENT_VERSION = 1;\n\nexport const TURN_START_EVENT_ID = \"turn.start\";\nexport const TURN_START_EVENT_VERSION = 1;\n\nexport const TURN_END_EVENT_ID = \"turn.end\";\nexport const TURN_END_EVENT_VERSION = 1;\n\nexport const MESSAGE_START_EVENT_ID = \"message.start\";\nexport const MESSAGE_START_EVENT_VERSION = 1;\n\nexport const MESSAGE_END_EVENT_ID = \"message.end\";\nexport const MESSAGE_END_EVENT_VERSION = 1;\n\nexport const TOOL_EXECUTION_START_EVENT_ID = \"tool.execution.start\";\nexport const TOOL_EXECUTION_START_EVENT_VERSION = 1;\n\nexport const MODEL_SELECT_EVENT_ID = \"model.select\";\nexport const MODEL_SELECT_EVENT_VERSION = 1;\n\nexport const THINKING_LEVEL_SELECT_EVENT_ID = \"thinking_level.select\";\nexport const THINKING_LEVEL_SELECT_EVENT_VERSION = 1;\n\nexport const SESSION_INFO_CHANGED_EVENT_ID = \"session.info.changed\";\nexport const SESSION_INFO_CHANGED_EVENT_VERSION = 1;\n\nexport const SESSION_ENTRY_APPENDED_EVENT_ID = \"session.entry.appended\";\nexport const SESSION_ENTRY_APPENDED_EVENT_VERSION = 1;\n\nexport const AGENT_END_EVENT_ID = \"agent.end\";\nexport const AGENT_END_EVENT_VERSION = 1;\n\nexport const BEFORE_AGENT_START_EVENT_ID = \"before.agent.start\";\nexport const BEFORE_AGENT_START_EVENT_VERSION = 1;\nexport const BEFORE_AGENT_START_EVENT_VERSION_V2 = 2;\n\nexport const UI_PROMPT_START_EVENT_ID = \"ui.prompt.start\";\nexport const UI_PROMPT_START_EVENT_VERSION = 1;\n\nexport const UI_PROMPT_END_EVENT_ID = \"ui.prompt.end\";\nexport const UI_PROMPT_END_EVENT_VERSION = 1;\n\nexport const RESOURCES_DISCOVER_EVENT_ID = \"resources.discover\";\nexport const RESOURCES_DISCOVER_EVENT_VERSION = 1;\nexport const RESOURCES_DISCOVER_EVENT_VERSION_V2 = 2;\n\nexport const CONTEXT_ASSEMBLED_EVENT_ID = \"context.assembled\";\nexport const CONTEXT_ASSEMBLED_EVENT_VERSION = 1;\n\nexport const INPUT_RECEIVED_EVENT_ID = \"input.received\";\nexport const INPUT_RECEIVED_EVENT_VERSION = 1;\n\nexport const USER_BASH_EVENT_ID = \"user.bash\";\nexport const USER_BASH_EVENT_VERSION = 1;\n\nexport const SESSION_START_EVENT_ID = \"session.start\";\nexport const SESSION_START_EVENT_VERSION = 1;\n\nexport const MODEL_RESPONSE_EVENT_ID = \"model.response\";\nexport const MODEL_RESPONSE_EVENT_VERSION = 1;\n\nexport const MODEL_STREAM_EVENT_ID = \"model.stream\";\nexport const MODEL_STREAM_EVENT_VERSION = 1;\n\nexport type ModelStreamEventNameV1 =\n\t| \"start\"\n\t| \"text_start\"\n\t| \"text_delta\"\n\t| \"text_end\"\n\t| \"thinking_start\"\n\t| \"thinking_delta\"\n\t| \"thinking_end\"\n\t| \"toolcall_start\"\n\t| \"toolcall_delta\"\n\t| \"toolcall_end\"\n\t| \"done\"\n\t| \"error\";\n\nexport interface ModelStreamEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\tstreamId: string;\n\tsequence: number;\n\tphase: \"raw\" | \"candidate\" | \"committed\";\n\tevent: ModelStreamEventNameV1;\n\tpartial: unknown | null;\n\tterminal: boolean;\n\terror: { code: string; message: string; name?: string } | null;\n}\n\nexport const TOOL_RESULT_EVENT_ID = \"tool.result\";\nexport const TOOL_RESULT_EVENT_VERSION = 1;\n\nexport const TOOL_CALL_EVENT_ID = \"tool.call\";\nexport const TOOL_CALL_EVENT_VERSION = 1;\n\nexport const TOOL_RESULT_RAW_EVENT_ID = \"tool.result.raw\";\nexport const TOOL_RESULT_RAW_EVENT_VERSION = 1;\n\nexport const TOOL_EXECUTE_EVENT_ID = \"tool.execute\";\nexport const TOOL_EXECUTE_EVENT_VERSION = 1;\n\nexport const TOOL_COMMIT_EVENT_ID = \"tool.commit\";\nexport const TOOL_COMMIT_EVENT_VERSION = 1;\n\nexport const TOOL_GATE_BLOCKED_EVENT_ID = \"tool.gate.blocked\";\nexport const TOOL_GATE_BLOCKED_EVENT_VERSION = 1;\n\nexport const INPUT_GATE_BLOCKED_EVENT_ID = \"input.gate.blocked\";\nexport const INPUT_GATE_BLOCKED_EVENT_VERSION = 1;\n\nexport const OPERATION_END_EVENT_ID = \"operation.end\";\nexport const OPERATION_END_EVENT_VERSION = 1;\n\nexport interface PluginDisposeEventDataV1 {\n\tversion: 1;\n\tpluginId: string;\n\tpluginVersion: string;\n\tstatus: \"disposed\" | \"failed\";\n}\n\n/** A plugin factory has completed and its public registrations are active. */\nexport interface PluginReadyEventDataV1 {\n\tversion: 1;\n\tpluginId: string;\n\tpluginVersion: string;\n}\n\n/** A context projection has become the session's active runtime context. */\nexport interface SessionContextReplacedEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\treason: NonNullable<ContextOperationOptions[\"reason\"]>;\n\tmessageCount: number;\n\tstrategyName?: string;\n}\n\n/** A session runtime has been completely rebuilt and its reload work committed. */\nexport interface SessionReloadEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\tgeneration: number;\n\treason: \"reload\";\n}\n\n/** A finalized assistant response after its session entry has been appended. */\nexport interface ModelResponseEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\tentryId: string;\n\trevision: {\n\t\tversion: 1;\n\t\tsessionId: string;\n\t\tsequence: number;\n\t\tleafId: string | null;\n\t};\n\tprovider: string;\n\tmodel: string;\n\tstopReason: \"pending\" | \"stop\" | \"length\" | \"toolUse\" | \"error\" | \"aborted\" | \"deferred\";\n\tmessage: AssistantMessage;\n\terrorMessage?: string;\n}\n\n/** A finalized tool result after its session entry has been appended. */\nexport interface ToolResultEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\tentryId: string;\n\trevision: {\n\t\tversion: 1;\n\t\tsessionId: string;\n\t\tsequence: number;\n\t\tleafId: string | null;\n\t};\n\ttoolCallId: string;\n\ttoolName: string;\n\tisError: boolean;\n\tmessage: ToolResultMessage;\n}\n\n/** A validated tool candidate immediately before execution. */\nexport interface ToolCallEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\trevision: SessionRevisionV1;\n\ttoolCallId: string;\n\ttoolName: string;\n\tinput: unknown;\n}\n\n/** A raw result from an executed tool, before legacy result transforms run. */\nexport interface ToolResultRawEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\trevision: SessionRevisionV1;\n\ttoolCallId: string;\n\ttoolName: string;\n\tisError: boolean;\n\tcontent: readonly (TextContent | ImageContent)[];\n}\n\n/** A settled registered-tool invocation before result transforms and session commit. */\nexport interface ToolExecuteEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\trevision: SessionRevisionV1;\n\ttoolCallId: string;\n\ttoolName: string;\n\tinput: unknown;\n\tisError: boolean;\n\tcontent: readonly (TextContent | ImageContent)[];\n}\n\n/** A tool result after its session message has been appended. */\nexport interface ToolCommitEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\tentryId: string;\n\trevision: SessionRevisionV1;\n\ttoolCallId: string;\n\ttoolName: string;\n\tisError: boolean;\n}\n\n/** A terminal fact for an operation registered through CapabilityAPI. */\nexport interface OperationEndEventDataV1 {\n\tversion: 1;\n\toperationId: string;\n\toperationKind: string;\n\tstatus: \"succeeded\" | \"failed\" | \"cancelled\";\n\terrorMessage?: string;\n\treason?: string;\n}\n\nfunction assertString(value: unknown, label: string): asserts value is string {\n\tif (typeof value !== \"string\" || value.trim() === \"\")\n\t\tthrow new Error(t(\"{label} must be a non-empty string\", { label }));\n}\n\nfunction assertJsonSafe(value: unknown, label: string, seen = new Set<object>()): void {\n\tif (value === null || typeof value === \"string\" || typeof value === \"boolean\") return;\n\tif (typeof value === \"number\") {\n\t\tif (Number.isFinite(value)) return;\n\t\tthrow new Error(t(\"{label} must contain only finite JSON numbers\", { label }));\n\t}\n\tif (typeof value !== \"object\") throw new Error(t(\"{label} must be JSON-safe\", { label }));\n\tif (seen.has(value)) throw new Error(t(\"{label} must not contain cycles\", { label }));\n\tseen.add(value);\n\tif (Array.isArray(value)) {\n\t\tfor (const [index, entry] of value.entries()) assertJsonSafe(entry, `${label}[${index}]`, seen);\n\t} else if (isPlainRecord(value)) {\n\t\tfor (const [key, entry] of Object.entries(value)) assertJsonSafe(entry, `${label}.${key}`, seen);\n\t} else {\n\t\tthrow new Error(t(\"{label} must contain only JSON arrays and plain objects\", { label }));\n\t}\n\tseen.delete(value);\n}\n\nexport function validatePluginDisposeEventDataV1(value: unknown): PluginDisposeEventDataV1 {\n\tif (\n\t\t!value ||\n\t\ttypeof value !== \"object\" ||\n\t\tArray.isArray(value) ||\n\t\tObject.getPrototypeOf(value) !== Object.prototype\n\t) {\n\t\tthrow new Error(t(\"plugin.dispose data must be a plain object\"));\n\t}\n\tconst record = value as Record<string, unknown>;\n\tconst keys = Object.keys(record).sort();\n\tif (keys.join(\",\") !== \"pluginId,pluginVersion,status,version\") {\n\t\tthrow new Error(t(\"plugin.dispose data has unsupported fields\"));\n\t}\n\tif (record.version !== 1) throw new Error(t(\"plugin.dispose data.version must be 1\"));\n\tassertString(record.pluginId, \"plugin.dispose data.pluginId\");\n\tassertString(record.pluginVersion, \"plugin.dispose data.pluginVersion\");\n\tif (record.status !== \"disposed\" && record.status !== \"failed\") {\n\t\tthrow new Error(t(\"plugin.dispose data.status is invalid\"));\n\t}\n\treturn value as PluginDisposeEventDataV1;\n}\n\nexport function pluginDisposeEventDefinition(): LifecycleEventDefinition<PluginDisposeEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: PLUGIN_DISPOSE_EVENT_ID,\n\t\tversion: PLUGIN_DISPOSE_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/plugin.dispose@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validatePluginDisposeEventDataV1,\n\t};\n}\n\nexport function validatePluginReadyEventDataV1(value: unknown): PluginReadyEventDataV1 {\n\tif (\n\t\t!value ||\n\t\ttypeof value !== \"object\" ||\n\t\tArray.isArray(value) ||\n\t\tObject.getPrototypeOf(value) !== Object.prototype\n\t) {\n\t\tthrow new Error(t(\"plugin.ready data must be a plain object\"));\n\t}\n\tconst record = value as Record<string, unknown>;\n\tconst keys = Object.keys(record).sort();\n\tif (keys.join(\",\") !== \"pluginId,pluginVersion,version\") {\n\t\tthrow new Error(t(\"plugin.ready data has unsupported fields\"));\n\t}\n\tif (record.version !== 1) throw new Error(t(\"plugin.ready data.version must be 1\"));\n\tassertString(record.pluginId, \"plugin.ready data.pluginId\");\n\tassertString(record.pluginVersion, \"plugin.ready data.pluginVersion\");\n\treturn value as PluginReadyEventDataV1;\n}\n\nexport function pluginReadyEventDefinition(): LifecycleEventDefinition<PluginReadyEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: PLUGIN_READY_EVENT_ID,\n\t\tversion: PLUGIN_READY_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/plugin.ready@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validatePluginReadyEventDataV1,\n\t};\n}\n\nexport const PLUGIN_REJECTED_EVENT_ID = \"plugin.rejected\";\nexport const PLUGIN_REJECTED_EVENT_VERSION = 1;\n\nexport interface PluginRejectedEventDataV1 {\n\tversion: 1;\n\t/** Plugin id when the manifest could be parsed; otherwise absent. */\n\tpluginId?: string;\n\tmanifestPath: string;\n\tcode: \"invalid_manifest\" | \"duplicate_plugin_id\" | \"missing_dependency\" | \"plugin_load_failed\";\n\tmessage: string;\n}\n\nexport function validatePluginRejectedEventDataV1(value: unknown): PluginRejectedEventDataV1 {\n\tif (\n\t\t!value ||\n\t\ttypeof value !== \"object\" ||\n\t\tArray.isArray(value) ||\n\t\tObject.getPrototypeOf(value) !== Object.prototype\n\t) {\n\t\tthrow new Error(t(\"plugin.rejected data must be a plain object\"));\n\t}\n\tconst record = value as Record<string, unknown>;\n\tconst keys = Object.keys(record)\n\t\t.filter((key) => key !== \"pluginId\")\n\t\t.sort();\n\tif (keys.join(\",\") !== \"code,manifestPath,message,version\") {\n\t\tthrow new Error(t(\"plugin.rejected data has unsupported fields\"));\n\t}\n\tif (record.version !== 1) throw new Error(t(\"plugin.rejected data.version must be 1\"));\n\tif (record.pluginId !== undefined && typeof record.pluginId !== \"string\") {\n\t\tthrow new Error(t(\"plugin.rejected data.pluginId must be a string when present\"));\n\t}\n\tassertString(record.manifestPath, \"plugin.rejected data.manifestPath\");\n\tassertString(record.message, \"plugin.rejected data.message\");\n\tif (\n\t\trecord.code !== \"invalid_manifest\" &&\n\t\trecord.code !== \"duplicate_plugin_id\" &&\n\t\trecord.code !== \"missing_dependency\" &&\n\t\trecord.code !== \"plugin_load_failed\"\n\t) {\n\t\tthrow new Error(t(\"plugin.rejected data.code is invalid\"));\n\t}\n\treturn value as PluginRejectedEventDataV1;\n}\n\nexport function pluginRejectedEventDefinition(): LifecycleEventDefinition<PluginRejectedEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: PLUGIN_REJECTED_EVENT_ID,\n\t\tversion: PLUGIN_REJECTED_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/plugin.rejected@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validatePluginRejectedEventDataV1,\n\t};\n}\n\nconst contextReasons = new Set<NonNullable<ContextOperationOptions[\"reason\"]>>([\n\t\"request\",\n\t\"reload\",\n\t\"session_replace\",\n\t\"compaction\",\n\t\"overflow_recovery\",\n\t\"retry\",\n\t\"tree\",\n]);\n\nexport function validateSessionContextReplacedEventDataV1(value: unknown): SessionContextReplacedEventDataV1 {\n\tif (\n\t\t!value ||\n\t\ttypeof value !== \"object\" ||\n\t\tArray.isArray(value) ||\n\t\tObject.getPrototypeOf(value) !== Object.prototype\n\t) {\n\t\tthrow new Error(t(\"session.context.replaced data must be a plain object\"));\n\t}\n\tconst record = value as Record<string, unknown>;\n\tconst allowed = new Set([\"version\", \"sessionId\", \"reason\", \"messageCount\", \"strategyName\"]);\n\tconst unsupported = Object.keys(record).filter((key) => !allowed.has(key));\n\tif (unsupported.length > 0) {\n\t\tthrow new Error(\n\t\t\tt(\"session.context.replaced data has unsupported fields: {unsupported}\", {\n\t\t\t\tunsupported: unsupported.join(\", \"),\n\t\t\t}),\n\t\t);\n\t}\n\tfor (const key of [\"version\", \"sessionId\", \"reason\", \"messageCount\"]) {\n\t\tif (!(key in record))\n\t\t\tthrow new Error(t(\"session.context.replaced data is missing required field: {key}\", { key }));\n\t}\n\tif (record.version !== 1) throw new Error(t(\"session.context.replaced data.version must be 1\"));\n\tassertString(record.sessionId, \"session.context.replaced data.sessionId\");\n\tif (\n\t\ttypeof record.reason !== \"string\" ||\n\t\t!contextReasons.has(record.reason as NonNullable<ContextOperationOptions[\"reason\"]>)\n\t) {\n\t\tthrow new Error(t(\"session.context.replaced data.reason is invalid\"));\n\t}\n\tif (\n\t\ttypeof record.messageCount !== \"number\" ||\n\t\t!Number.isSafeInteger(record.messageCount) ||\n\t\trecord.messageCount < 0\n\t) {\n\t\tthrow new Error(t(\"session.context.replaced data.messageCount must be a non-negative safe integer\"));\n\t}\n\tif (record.strategyName !== undefined) {\n\t\tassertString(record.strategyName, \"session.context.replaced data.strategyName\");\n\t}\n\treturn value as SessionContextReplacedEventDataV1;\n}\n\nexport function sessionContextReplacedEventDefinition(): LifecycleEventDefinition<SessionContextReplacedEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: SESSION_CONTEXT_REPLACED_EVENT_ID,\n\t\tversion: SESSION_CONTEXT_REPLACED_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/session.context.replaced@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateSessionContextReplacedEventDataV1,\n\t};\n}\n\nexport function validateSessionReloadEventDataV1(value: unknown): SessionReloadEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(t(\"session.reload data must be a plain object\"));\n\tif (Object.keys(value).sort().join(\",\") !== \"generation,reason,sessionId,version\") {\n\t\tthrow new Error(t(\"session.reload data has unsupported fields\"));\n\t}\n\tif (value.version !== 1) throw new Error(t(\"session.reload data.version must be 1\"));\n\tassertString(value.sessionId, \"session.reload data.sessionId\");\n\tif (typeof value.generation !== \"number\" || !Number.isSafeInteger(value.generation) || value.generation < 1) {\n\t\tthrow new Error(t(\"session.reload data.generation must be a positive safe integer\"));\n\t}\n\tif (value.reason !== \"reload\") throw new Error(t(\"session.reload data.reason is invalid\"));\n\treturn value as unknown as SessionReloadEventDataV1;\n}\n\nexport function sessionReloadEventDefinition(): LifecycleEventDefinition<SessionReloadEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: SESSION_RELOAD_EVENT_ID,\n\t\tversion: SESSION_RELOAD_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/session.reload@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateSessionReloadEventDataV1,\n\t};\n}\n\nexport interface AgentLifecycleEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n}\n\nexport function validateAgentLifecycleEventDataV1(value: unknown): AgentLifecycleEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(t(\"agent lifecycle data must be a plain object\"));\n\tif (Object.keys(value).sort().join(\",\") !== \"sessionId,version\") {\n\t\tthrow new Error(t(\"agent lifecycle data has unsupported fields\"));\n\t}\n\tif (value.version !== 1) throw new Error(t(\"agent lifecycle data.version must be 1\"));\n\tassertString(value.sessionId, \"agent lifecycle data.sessionId\");\n\treturn value as unknown as AgentLifecycleEventDataV1;\n}\n\nexport function agentStartEventDefinition(): LifecycleEventDefinition<AgentLifecycleEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: AGENT_START_EVENT_ID,\n\t\tversion: AGENT_START_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/agent.start@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateAgentLifecycleEventDataV1,\n\t};\n}\n\nexport function agentSettledEventDefinition(): LifecycleEventDefinition<AgentLifecycleEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: AGENT_SETTLED_EVENT_ID,\n\t\tversion: AGENT_SETTLED_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/agent.settled@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateAgentLifecycleEventDataV1,\n\t};\n}\n\nexport interface TurnStartEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\tturnIndex: number;\n}\n\nexport function validateTurnStartEventDataV1(value: unknown): TurnStartEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(t(\"turn.start data must be a plain object\"));\n\tif (Object.keys(value).sort().join(\",\") !== \"sessionId,turnIndex,version\") {\n\t\tthrow new Error(t(\"turn.start data has unsupported fields\"));\n\t}\n\tif (value.version !== 1) throw new Error(t(\"turn.start data.version must be 1\"));\n\tassertString(value.sessionId, \"turn.start data.sessionId\");\n\tif (typeof value.turnIndex !== \"number\" || !Number.isSafeInteger(value.turnIndex) || value.turnIndex < 0) {\n\t\tthrow new Error(t(\"turn.start data.turnIndex must be a non-negative safe integer\"));\n\t}\n\treturn value as unknown as TurnStartEventDataV1;\n}\n\n/**\n * One finished turn. A turn that ended in a deviation carries the turn-level\n * `outcome` (\"aborted\" | \"error\", judged from the turn's assistant message\n * stopReason); a completed turn omits the key entirely — normal stays silent,\n * deviation is recorded.\n */\nexport interface TurnEndEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\tturnIndex: number;\n\tmessageCount: number;\n\toutcome?: \"aborted\" | \"error\";\n}\n\nexport function validateTurnEndEventDataV1(value: unknown): TurnEndEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(t(\"turn.end data must be a plain object\"));\n\tconst keys = Object.keys(value).sort().join(\",\");\n\tif (\n\t\tkeys !== \"messageCount,sessionId,turnIndex,version\" &&\n\t\tkeys !== \"messageCount,outcome,sessionId,turnIndex,version\"\n\t) {\n\t\tthrow new Error(t(\"turn.end data has unsupported fields\"));\n\t}\n\tif (value.version !== 1) throw new Error(t(\"turn.end data.version must be 1\"));\n\tassertString(value.sessionId, \"turn.end data.sessionId\");\n\tif (typeof value.turnIndex !== \"number\" || !Number.isSafeInteger(value.turnIndex) || value.turnIndex < 0) {\n\t\tthrow new Error(t(\"turn.end data.turnIndex must be a non-negative safe integer\"));\n\t}\n\tif (typeof value.messageCount !== \"number\" || !Number.isSafeInteger(value.messageCount) || value.messageCount < 0) {\n\t\tthrow new Error(t(\"turn.end data.messageCount must be a non-negative safe integer\"));\n\t}\n\tif (value.outcome !== undefined && value.outcome !== \"aborted\" && value.outcome !== \"error\") {\n\t\tthrow new Error(t(\"turn.end data.outcome is invalid\"));\n\t}\n\treturn value as unknown as TurnEndEventDataV1;\n}\n\nexport interface MessageBoundaryEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\trole: string;\n}\n\nexport function validateMessageBoundaryEventDataV1(value: unknown): MessageBoundaryEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(t(\"message lifecycle data must be a plain object\"));\n\tif (Object.keys(value).sort().join(\",\") !== \"role,sessionId,version\") {\n\t\tthrow new Error(t(\"message lifecycle data has unsupported fields\"));\n\t}\n\tif (value.version !== 1) throw new Error(t(\"message lifecycle data.version must be 1\"));\n\tassertString(value.sessionId, \"message lifecycle data.sessionId\");\n\tassertString(value.role, \"message lifecycle data.role\");\n\treturn value as unknown as MessageBoundaryEventDataV1;\n}\n\nexport function turnStartEventDefinition(): LifecycleEventDefinition<TurnStartEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: TURN_START_EVENT_ID,\n\t\tversion: TURN_START_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/turn.start@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateTurnStartEventDataV1,\n\t};\n}\n\nexport function turnEndEventDefinition(): LifecycleEventDefinition<TurnEndEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: TURN_END_EVENT_ID,\n\t\tversion: TURN_END_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/turn.end@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateTurnEndEventDataV1,\n\t};\n}\n\nexport function messageStartEventDefinition(): LifecycleEventDefinition<MessageBoundaryEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: MESSAGE_START_EVENT_ID,\n\t\tversion: MESSAGE_START_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/message.start@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateMessageBoundaryEventDataV1,\n\t};\n}\n\nexport function messageEndEventDefinition(): LifecycleEventDefinition<MessageBoundaryEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: MESSAGE_END_EVENT_ID,\n\t\tversion: MESSAGE_END_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/message.end@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateMessageBoundaryEventDataV1,\n\t};\n}\n\nexport interface ToolExecutionStartEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\ttoolCallId: string;\n\ttoolName: string;\n}\n\nexport function validateToolExecutionStartEventDataV1(value: unknown): ToolExecutionStartEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(t(\"tool.execution.start data must be a plain object\"));\n\tif (Object.keys(value).sort().join(\",\") !== \"sessionId,toolCallId,toolName,version\") {\n\t\tthrow new Error(t(\"tool.execution.start data has unsupported fields\"));\n\t}\n\tif (value.version !== 1) throw new Error(t(\"tool.execution.start data.version must be 1\"));\n\tassertString(value.sessionId, \"tool.execution.start data.sessionId\");\n\tassertString(value.toolCallId, \"tool.execution.start data.toolCallId\");\n\tassertString(value.toolName, \"tool.execution.start data.toolName\");\n\treturn value as unknown as ToolExecutionStartEventDataV1;\n}\n\nexport function toolExecutionStartEventDefinition(): LifecycleEventDefinition<ToolExecutionStartEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: TOOL_EXECUTION_START_EVENT_ID,\n\t\tversion: TOOL_EXECUTION_START_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/tool.execution.start@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateToolExecutionStartEventDataV1,\n\t};\n}\n\nexport interface ModelSelectEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\tprovider: string;\n\tid: string;\n\tsource: \"set\" | \"cycle\" | \"restore\";\n}\n\nexport function validateModelSelectEventDataV1(value: unknown): ModelSelectEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(t(\"model.select data must be a plain object\"));\n\tif (Object.keys(value).sort().join(\",\") !== \"id,provider,sessionId,source,version\") {\n\t\tthrow new Error(t(\"model.select data has unsupported fields\"));\n\t}\n\tif (value.version !== 1) throw new Error(t(\"model.select data.version must be 1\"));\n\tassertString(value.sessionId, \"model.select data.sessionId\");\n\tassertString(value.provider, \"model.select data.provider\");\n\tassertString(value.id, \"model.select data.id\");\n\tif (value.source !== \"set\" && value.source !== \"cycle\" && value.source !== \"restore\") {\n\t\tthrow new Error(t(\"model.select data.source is invalid\"));\n\t}\n\treturn value as unknown as ModelSelectEventDataV1;\n}\n\nexport interface ThinkingLevelSelectEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\tlevel: string;\n\tpreviousLevel: string;\n}\n\nexport function validateThinkingLevelSelectEventDataV1(value: unknown): ThinkingLevelSelectEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(t(\"thinking_level.select data must be a plain object\"));\n\tif (Object.keys(value).sort().join(\",\") !== \"level,previousLevel,sessionId,version\") {\n\t\tthrow new Error(t(\"thinking_level.select data has unsupported fields\"));\n\t}\n\tif (value.version !== 1) throw new Error(t(\"thinking_level.select data.version must be 1\"));\n\tassertString(value.sessionId, \"thinking_level.select data.sessionId\");\n\tassertString(value.level, \"thinking_level.select data.level\");\n\tassertString(value.previousLevel, \"thinking_level.select data.previousLevel\");\n\treturn value as unknown as ThinkingLevelSelectEventDataV1;\n}\n\nexport function modelSelectEventDefinition(): LifecycleEventDefinition<ModelSelectEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: MODEL_SELECT_EVENT_ID,\n\t\tversion: MODEL_SELECT_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/model.select@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateModelSelectEventDataV1,\n\t};\n}\n\nexport function thinkingLevelSelectEventDefinition(): LifecycleEventDefinition<ThinkingLevelSelectEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: THINKING_LEVEL_SELECT_EVENT_ID,\n\t\tversion: THINKING_LEVEL_SELECT_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/thinking_level.select@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateThinkingLevelSelectEventDataV1,\n\t};\n}\n\nexport interface SessionInfoChangedEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\t/** Current normalized session name. Absent when the name is cleared. */\n\tname?: string;\n}\n\nexport function validateSessionInfoChangedEventDataV1(value: unknown): SessionInfoChangedEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(t(\"session.info.changed data must be a plain object\"));\n\tif (\n\t\tObject.keys(value).sort().join(\",\") !== \"sessionId,version\" &&\n\t\tObject.keys(value).sort().join(\",\") !== \"name,sessionId,version\"\n\t) {\n\t\tthrow new Error(t(\"session.info.changed data has unsupported fields\"));\n\t}\n\tif (value.version !== 1) throw new Error(t(\"session.info.changed data.version must be 1\"));\n\tassertString(value.sessionId, \"session.info.changed data.sessionId\");\n\tif (value.name !== undefined) assertString(value.name, \"session.info.changed data.name\");\n\treturn value as unknown as SessionInfoChangedEventDataV1;\n}\n\nexport interface SessionEntryAppendedEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\tentryId: string;\n\tentryType: string;\n}\n\nexport function validateSessionEntryAppendedEventDataV1(value: unknown): SessionEntryAppendedEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(t(\"session.entry.appended data must be a plain object\"));\n\tif (Object.keys(value).sort().join(\",\") !== \"entryId,entryType,sessionId,version\") {\n\t\tthrow new Error(t(\"session.entry.appended data has unsupported fields\"));\n\t}\n\tif (value.version !== 1) throw new Error(t(\"session.entry.appended data.version must be 1\"));\n\tassertString(value.sessionId, \"session.entry.appended data.sessionId\");\n\tassertString(value.entryId, \"session.entry.appended data.entryId\");\n\tassertString(value.entryType, \"session.entry.appended data.entryType\");\n\treturn value as unknown as SessionEntryAppendedEventDataV1;\n}\n\nexport function sessionInfoChangedEventDefinition(): LifecycleEventDefinition<SessionInfoChangedEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: SESSION_INFO_CHANGED_EVENT_ID,\n\t\tversion: SESSION_INFO_CHANGED_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/session.info.changed@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateSessionInfoChangedEventDataV1,\n\t};\n}\n\nexport function sessionEntryAppendedEventDefinition(): LifecycleEventDefinition<SessionEntryAppendedEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: SESSION_ENTRY_APPENDED_EVENT_ID,\n\t\tversion: SESSION_ENTRY_APPENDED_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/session.entry.appended@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateSessionEntryAppendedEventDataV1,\n\t};\n}\n\nexport interface AgentEndEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\tmessageCount: number;\n}\n\nexport function validateAgentEndEventDataV1(value: unknown): AgentEndEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(t(\"agent.end data must be a plain object\"));\n\tif (Object.keys(value).sort().join(\",\") !== \"messageCount,sessionId,version\") {\n\t\tthrow new Error(t(\"agent.end data has unsupported fields\"));\n\t}\n\tif (value.version !== 1) throw new Error(t(\"agent.end data.version must be 1\"));\n\tassertString(value.sessionId, \"agent.end data.sessionId\");\n\tif (typeof value.messageCount !== \"number\" || !Number.isSafeInteger(value.messageCount) || value.messageCount < 0) {\n\t\tthrow new Error(t(\"agent.end data.messageCount must be a non-negative safe integer\"));\n\t}\n\treturn value as unknown as AgentEndEventDataV1;\n}\n\nexport interface BeforeAgentStartEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\thasImages: boolean;\n}\n\nexport function validateBeforeAgentStartEventDataV1(value: unknown): BeforeAgentStartEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(t(\"before.agent.start data must be a plain object\"));\n\tif (Object.keys(value).sort().join(\",\") !== \"hasImages,sessionId,version\") {\n\t\tthrow new Error(t(\"before.agent.start data has unsupported fields\"));\n\t}\n\tif (value.version !== 1) throw new Error(t(\"before.agent.start data.version must be 1\"));\n\tassertString(value.sessionId, \"before.agent.start data.sessionId\");\n\tif (typeof value.hasImages !== \"boolean\") throw new Error(t(\"before.agent.start data.hasImages must be a boolean\"));\n\treturn value as unknown as BeforeAgentStartEventDataV1;\n}\n\nexport function agentEndEventDefinition(): LifecycleEventDefinition<AgentEndEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: AGENT_END_EVENT_ID,\n\t\tversion: AGENT_END_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/agent.end@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateAgentEndEventDataV1,\n\t};\n}\n\nexport function beforeAgentStartEventDefinition(): LifecycleEventDefinition<BeforeAgentStartEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: BEFORE_AGENT_START_EVENT_ID,\n\t\tversion: BEFORE_AGENT_START_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/before.agent.start@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateBeforeAgentStartEventDataV1,\n\t};\n}\n\n/**\n * Candidate-phase sibling of before.agent.start@1: the effective base system\n * prompt and its build options enter the envelope so capability transforms\n * (system-prompt customizers) can rewrite the prompt before the first model\n * call. A transform returns the full data with a replaced `systemPrompt`;\n * returning the input verbatim means \"no replacement\".\n */\nexport interface BeforeAgentStartEventDataV2 {\n\tversion: 2;\n\tsessionId: string;\n\tsystemPrompt: string;\n\tsystemPromptOptions: BuildSystemPromptOptions;\n}\n\nexport function validateBeforeAgentStartEventDataV2(value: unknown): BeforeAgentStartEventDataV2 {\n\tif (!isPlainRecord(value)) throw new Error(t(\"before.agent.start data must be a plain object\"));\n\tconst allowed = new Set([\"version\", \"sessionId\", \"systemPrompt\", \"systemPromptOptions\"]);\n\tconst unsupported = Object.keys(value).filter((key) => !allowed.has(key));\n\tif (unsupported.length > 0) {\n\t\tthrow new Error(\n\t\t\tt(\"before.agent.start data has unsupported fields: {unsupported}\", { unsupported: unsupported.join(\", \") }),\n\t\t);\n\t}\n\tfor (const key of [\"version\", \"sessionId\", \"systemPrompt\", \"systemPromptOptions\"]) {\n\t\tif (!(key in value)) throw new Error(t(\"before.agent.start data is missing required field: {key}\", { key }));\n\t}\n\tif (value.version !== 2) throw new Error(t(\"before.agent.start data.version must be 2\"));\n\tassertString(value.sessionId, \"before.agent.start data.sessionId\");\n\tif (typeof value.systemPrompt !== \"string\") {\n\t\tthrow new Error(t(\"before.agent.start data.systemPrompt must be a string\"));\n\t}\n\t// Only the shape is enforced here: JSON-safety (no functions, cycles, or\n\t// non-finite numbers) is already guaranteed because the dispatcher runs the\n\t// payload through a detached structured clone before validation, and the\n\t// build-options snapshot legitimately carries explicit `undefined` fields.\n\tif (!isPlainRecord(value.systemPromptOptions)) {\n\t\tthrow new Error(t(\"before.agent.start data.systemPromptOptions must be a plain object\"));\n\t}\n\treturn value as unknown as BeforeAgentStartEventDataV2;\n}\n\nexport function beforeAgentStartV2EventDefinition(): LifecycleEventDefinition<BeforeAgentStartEventDataV2> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"transform\"];\n\treturn {\n\t\tid: BEFORE_AGENT_START_EVENT_ID,\n\t\tversion: BEFORE_AGENT_START_EVENT_VERSION_V2,\n\t\tphase: \"candidate\",\n\t\tschema: \"agent-forge/before.agent.start@2\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateBeforeAgentStartEventDataV2,\n\t};\n}\n\nexport interface UIPromptBoundaryEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\tkind: string;\n\ttitle?: string;\n}\n\nexport function validateUIPromptBoundaryEventDataV1(value: unknown): UIPromptBoundaryEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(t(\"ui.prompt lifecycle data must be a plain object\"));\n\tconst keys = Object.keys(value).sort();\n\tif (keys.join(\",\") !== \"kind,sessionId,version\" && keys.join(\",\") !== \"kind,sessionId,title,version\") {\n\t\tthrow new Error(t(\"ui.prompt lifecycle data has unsupported fields\"));\n\t}\n\tif (value.version !== 1) throw new Error(t(\"ui.prompt lifecycle data.version must be 1\"));\n\tassertString(value.sessionId, \"ui.prompt lifecycle data.sessionId\");\n\tassertString(value.kind, \"ui.prompt lifecycle data.kind\");\n\tif (value.title !== undefined) assertString(value.title, \"ui.prompt lifecycle data.title\");\n\treturn value as unknown as UIPromptBoundaryEventDataV1;\n}\n\nexport interface ResourcesDiscoverEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\tcwd: string;\n\treason: \"startup\" | \"reload\";\n}\n\nexport function validateResourcesDiscoverEventDataV1(value: unknown): ResourcesDiscoverEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(t(\"resources.discover data must be a plain object\"));\n\tif (Object.keys(value).sort().join(\",\") !== \"cwd,reason,sessionId,version\") {\n\t\tthrow new Error(t(\"resources.discover data has unsupported fields\"));\n\t}\n\tif (value.version !== 1) throw new Error(t(\"resources.discover data.version must be 1\"));\n\tassertString(value.sessionId, \"resources.discover data.sessionId\");\n\tassertString(value.cwd, \"resources.discover data.cwd\");\n\tif (value.reason !== \"startup\" && value.reason !== \"reload\") {\n\t\tthrow new Error(t(\"resources.discover data.reason is invalid\"));\n\t}\n\treturn value as unknown as ResourcesDiscoverEventDataV1;\n}\n\nexport function uiPromptStartEventDefinition(): LifecycleEventDefinition<UIPromptBoundaryEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: UI_PROMPT_START_EVENT_ID,\n\t\tversion: UI_PROMPT_START_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/ui.prompt.start@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateUIPromptBoundaryEventDataV1,\n\t};\n}\n\nexport function uiPromptEndEventDefinition(): LifecycleEventDefinition<UIPromptBoundaryEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: UI_PROMPT_END_EVENT_ID,\n\t\tversion: UI_PROMPT_END_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/ui.prompt.end@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateUIPromptBoundaryEventDataV1,\n\t};\n}\n\nexport function resourcesDiscoverEventDefinition(): LifecycleEventDefinition<ResourcesDiscoverEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: RESOURCES_DISCOVER_EVENT_ID,\n\t\tversion: RESOURCES_DISCOVER_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/resources.discover@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateResourcesDiscoverEventDataV1,\n\t};\n}\n\n/** One contributed resource path, shaped identically to the legacy collection. */\nexport interface ResourcesDiscoverContributionV2 {\n\tpath: string;\n\textensionPath: string;\n}\n\n/**\n * Candidate-phase sibling of resources.discover@1: same envelope with the\n * version bumped to 2, plus optional transform contributions. A transform\n * returns the full data with any of the three contribution arrays attached;\n * each entry keeps the legacy `{ path, extensionPath }` collection shape.\n */\nexport interface ResourcesDiscoverEventDataV2 {\n\tversion: 2;\n\tsessionId: string;\n\tcwd: string;\n\treason: \"startup\" | \"reload\";\n\tskillPaths?: ResourcesDiscoverContributionV2[];\n\tpromptPaths?: ResourcesDiscoverContributionV2[];\n\tthemePaths?: ResourcesDiscoverContributionV2[];\n}\n\nfunction validateResourcesDiscoverContributionV2(value: unknown, label: string): void {\n\tif (!Array.isArray(value)) throw new Error(t(\"{label} must be an array\", { label }));\n\tfor (const [index, entry] of value.entries()) {\n\t\tif (!isPlainRecord(entry)) throw new Error(t(\"{label}[{index}] must be a plain object\", { label, index }));\n\t\tif (Object.keys(entry).sort().join(\",\") !== \"extensionPath,path\") {\n\t\t\tthrow new Error(t(\"{label}[{index}] has unsupported fields\", { label, index }));\n\t\t}\n\t\tassertString(entry.path, `${label}[${index}].path`);\n\t\tassertString(entry.extensionPath, `${label}[${index}].extensionPath`);\n\t}\n}\n\nexport function validateResourcesDiscoverEventDataV2(value: unknown): ResourcesDiscoverEventDataV2 {\n\tif (!isPlainRecord(value)) throw new Error(t(\"resources.discover data must be a plain object\"));\n\tconst allowed = new Set([\"version\", \"sessionId\", \"cwd\", \"reason\", \"skillPaths\", \"promptPaths\", \"themePaths\"]);\n\tconst unsupported = Object.keys(value).filter((key) => !allowed.has(key));\n\tif (unsupported.length > 0) {\n\t\tthrow new Error(\n\t\t\tt(\"resources.discover data has unsupported fields: {unsupported}\", { unsupported: unsupported.join(\", \") }),\n\t\t);\n\t}\n\tfor (const key of [\"version\", \"sessionId\", \"cwd\", \"reason\"]) {\n\t\tif (!(key in value)) throw new Error(t(\"resources.discover data is missing required field: {key}\", { key }));\n\t}\n\tif (value.version !== 2) throw new Error(t(\"resources.discover data.version must be 2\"));\n\tassertString(value.sessionId, \"resources.discover data.sessionId\");\n\tassertString(value.cwd, \"resources.discover data.cwd\");\n\tif (value.reason !== \"startup\" && value.reason !== \"reload\") {\n\t\tthrow new Error(t(\"resources.discover data.reason is invalid\"));\n\t}\n\tif (value.skillPaths !== undefined) {\n\t\tvalidateResourcesDiscoverContributionV2(value.skillPaths, \"resources.discover data.skillPaths\");\n\t}\n\tif (value.promptPaths !== undefined) {\n\t\tvalidateResourcesDiscoverContributionV2(value.promptPaths, \"resources.discover data.promptPaths\");\n\t}\n\tif (value.themePaths !== undefined) {\n\t\tvalidateResourcesDiscoverContributionV2(value.themePaths, \"resources.discover data.themePaths\");\n\t}\n\treturn value as unknown as ResourcesDiscoverEventDataV2;\n}\n\nexport function resourcesDiscoverV2EventDefinition(): LifecycleEventDefinition<ResourcesDiscoverEventDataV2> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"transform\"];\n\treturn {\n\t\tid: RESOURCES_DISCOVER_EVENT_ID,\n\t\tversion: RESOURCES_DISCOVER_EVENT_VERSION_V2,\n\t\tphase: \"candidate\",\n\t\tschema: \"agent-forge/resources.discover@2\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateResourcesDiscoverEventDataV2,\n\t};\n}\n\nexport interface ContextAssembledEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\tmessageCount: number;\n}\n\nexport function validateContextAssembledEventDataV1(value: unknown): ContextAssembledEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(t(\"context.assembled data must be a plain object\"));\n\tif (Object.keys(value).sort().join(\",\") !== \"messageCount,sessionId,version\") {\n\t\tthrow new Error(t(\"context.assembled data has unsupported fields\"));\n\t}\n\tif (value.version !== 1) throw new Error(t(\"context.assembled data.version must be 1\"));\n\tassertString(value.sessionId, \"context.assembled data.sessionId\");\n\tif (typeof value.messageCount !== \"number\" || !Number.isSafeInteger(value.messageCount) || value.messageCount < 0) {\n\t\tthrow new Error(t(\"context.assembled data.messageCount must be a non-negative safe integer\"));\n\t}\n\treturn value as unknown as ContextAssembledEventDataV1;\n}\n\nexport interface InputReceivedEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\tsource: string;\n\ttextLength: number;\n}\n\nexport function validateInputReceivedEventDataV1(value: unknown): InputReceivedEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(t(\"input.received data must be a plain object\"));\n\tif (Object.keys(value).sort().join(\",\") !== \"sessionId,textLength,version,source\".split(\",\").sort().join(\",\")) {\n\t\tthrow new Error(t(\"input.received data has unsupported fields\"));\n\t}\n\tif (value.version !== 1) throw new Error(t(\"input.received data.version must be 1\"));\n\tassertString(value.sessionId, \"input.received data.sessionId\");\n\tassertString(value.source, \"input.received data.source\");\n\tif (typeof value.textLength !== \"number\" || !Number.isSafeInteger(value.textLength) || value.textLength < 0) {\n\t\tthrow new Error(t(\"input.received data.textLength must be a non-negative safe integer\"));\n\t}\n\treturn value as unknown as InputReceivedEventDataV1;\n}\n\nexport interface UserBashEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\tcwd: string;\n\texcludeFromContext: boolean;\n}\n\nexport function validateUserBashEventDataV1(value: unknown): UserBashEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(t(\"user.bash data must be a plain object\"));\n\tif (Object.keys(value).sort().join(\",\") !== \"cwd,excludeFromContext,sessionId,version\") {\n\t\tthrow new Error(t(\"user.bash data has unsupported fields\"));\n\t}\n\tif (value.version !== 1) throw new Error(t(\"user.bash data.version must be 1\"));\n\tassertString(value.sessionId, \"user.bash data.sessionId\");\n\tassertString(value.cwd, \"user.bash data.cwd\");\n\tif (typeof value.excludeFromContext !== \"boolean\") {\n\t\tthrow new Error(t(\"user.bash data.excludeFromContext must be a boolean\"));\n\t}\n\treturn value as unknown as UserBashEventDataV1;\n}\n\nexport function contextAssembledEventDefinition(): LifecycleEventDefinition<ContextAssembledEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: CONTEXT_ASSEMBLED_EVENT_ID,\n\t\tversion: CONTEXT_ASSEMBLED_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/context.assembled@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateContextAssembledEventDataV1,\n\t};\n}\n\nexport function inputReceivedEventDefinition(): LifecycleEventDefinition<InputReceivedEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: INPUT_RECEIVED_EVENT_ID,\n\t\tversion: INPUT_RECEIVED_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/input.received@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateInputReceivedEventDataV1,\n\t};\n}\n\nexport function userBashEventDefinition(): LifecycleEventDefinition<UserBashEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: USER_BASH_EVENT_ID,\n\t\tversion: USER_BASH_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/user.bash@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateUserBashEventDataV1,\n\t};\n}\n\nexport interface SessionStartEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\treason: \"startup\" | \"reload\" | \"new\" | \"resume\" | \"fork\";\n\tpreviousSessionFile?: string;\n}\n\nexport function validateSessionStartEventDataV1(value: unknown): SessionStartEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(t(\"session.start data must be a plain object\"));\n\tconst keys = Object.keys(value).sort();\n\tif (\n\t\tkeys.join(\",\") !== \"reason,sessionId,version\" &&\n\t\tkeys.join(\",\") !== \"previousSessionFile,reason,sessionId,version\"\n\t) {\n\t\tthrow new Error(t(\"session.start data has unsupported fields\"));\n\t}\n\tif (value.version !== 1) throw new Error(t(\"session.start data.version must be 1\"));\n\tassertString(value.sessionId, \"session.start data.sessionId\");\n\tif (\n\t\tvalue.reason !== \"startup\" &&\n\t\tvalue.reason !== \"reload\" &&\n\t\tvalue.reason !== \"new\" &&\n\t\tvalue.reason !== \"resume\" &&\n\t\tvalue.reason !== \"fork\"\n\t) {\n\t\tthrow new Error(t(\"session.start data.reason is invalid\"));\n\t}\n\tif (value.previousSessionFile !== undefined)\n\t\tassertString(value.previousSessionFile, \"session.start data.previousSessionFile\");\n\treturn value as unknown as SessionStartEventDataV1;\n}\n\nexport function sessionStartEventDefinition(): LifecycleEventDefinition<SessionStartEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: SESSION_START_EVENT_ID,\n\t\tversion: SESSION_START_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/session.start@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateSessionStartEventDataV1,\n\t};\n}\n\nexport function validateModelResponseEventDataV1(value: unknown): ModelResponseEventDataV1 {\n\tif (\n\t\t!value ||\n\t\ttypeof value !== \"object\" ||\n\t\tArray.isArray(value) ||\n\t\tObject.getPrototypeOf(value) !== Object.prototype\n\t) {\n\t\tthrow new Error(t(\"model.response data must be a plain object\"));\n\t}\n\tconst record = value as Record<string, unknown>;\n\tconst allowed = new Set([\n\t\t\"version\",\n\t\t\"sessionId\",\n\t\t\"entryId\",\n\t\t\"revision\",\n\t\t\"provider\",\n\t\t\"model\",\n\t\t\"stopReason\",\n\t\t\"message\",\n\t\t\"errorMessage\",\n\t]);\n\tconst unsupported = Object.keys(record).filter((key) => !allowed.has(key));\n\tif (unsupported.length > 0)\n\t\tthrow new Error(\n\t\t\tt(\"model.response data has unsupported fields: {unsupported}\", { unsupported: unsupported.join(\", \") }),\n\t\t);\n\tfor (const key of [\"version\", \"sessionId\", \"entryId\", \"revision\", \"provider\", \"model\", \"stopReason\", \"message\"]) {\n\t\tif (!(key in record)) throw new Error(t(\"model.response data is missing required field: {key}\", { key }));\n\t}\n\tif (record.version !== 1) throw new Error(t(\"model.response data.version must be 1\"));\n\tassertString(record.sessionId, \"model.response data.sessionId\");\n\tassertString(record.entryId, \"model.response data.entryId\");\n\tassertString(record.provider, \"model.response data.provider\");\n\tassertString(record.model, \"model.response data.model\");\n\tif (\n\t\trecord.stopReason !== \"pending\" &&\n\t\trecord.stopReason !== \"stop\" &&\n\t\trecord.stopReason !== \"length\" &&\n\t\trecord.stopReason !== \"toolUse\" &&\n\t\trecord.stopReason !== \"error\" &&\n\t\trecord.stopReason !== \"aborted\" &&\n\t\trecord.stopReason !== \"deferred\"\n\t) {\n\t\tthrow new Error(t(\"model.response data.stopReason is invalid\"));\n\t}\n\tif (!record.message || typeof record.message !== \"object\" || Array.isArray(record.message)) {\n\t\tthrow new Error(t(\"model.response data.message must be an assistant message object\"));\n\t}\n\tconst message = record.message as Record<string, unknown>;\n\tif (message.role !== \"assistant\") throw new Error(t(\"model.response data.message.role must be assistant\"));\n\tif (!isPlainRecord(record.revision)) throw new Error(t(\"model.response data.revision must be a plain object\"));\n\tconst revision = record.revision;\n\tif (Object.keys(revision).sort().join(\",\") !== \"leafId,sequence,sessionId,version\") {\n\t\tthrow new Error(t(\"model.response data.revision has unsupported fields\"));\n\t}\n\tif (revision.version !== 1) throw new Error(t(\"model.response data.revision.version must be 1\"));\n\tassertString(revision.sessionId, \"model.response data.revision.sessionId\");\n\tif (typeof revision.sequence !== \"number\" || !Number.isSafeInteger(revision.sequence) || revision.sequence < 0) {\n\t\tthrow new Error(t(\"model.response data.revision.sequence must be a non-negative safe integer\"));\n\t}\n\tif (revision.leafId !== null) assertString(revision.leafId, \"model.response data.revision.leafId\");\n\tif (revision.sessionId !== record.sessionId) {\n\t\tthrow new Error(t(\"model.response data.revision.sessionId must match sessionId\"));\n\t}\n\tif (record.errorMessage !== undefined) assertString(record.errorMessage, \"model.response data.errorMessage\");\n\treturn value as ModelResponseEventDataV1;\n}\n\nfunction isPlainRecord(value: unknown): value is Record<string, unknown> {\n\treturn (\n\t\ttypeof value === \"object\" &&\n\t\tvalue !== null &&\n\t\t!Array.isArray(value) &&\n\t\tObject.getPrototypeOf(value) === Object.prototype\n\t);\n}\n\nexport function modelResponseEventDefinition(): LifecycleEventDefinition<ModelResponseEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: MODEL_RESPONSE_EVENT_ID,\n\t\tversion: MODEL_RESPONSE_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/model.response@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateModelResponseEventDataV1,\n\t};\n}\n\nconst modelStreamEvents = new Set<ModelStreamEventNameV1>([\n\t\"start\",\n\t\"text_start\",\n\t\"text_delta\",\n\t\"text_end\",\n\t\"thinking_start\",\n\t\"thinking_delta\",\n\t\"thinking_end\",\n\t\"toolcall_start\",\n\t\"toolcall_delta\",\n\t\"toolcall_end\",\n\t\"done\",\n\t\"error\",\n]);\n\nexport function validateModelStreamEventDataV1(value: unknown): ModelStreamEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(t(\"model.stream data must be a plain object\"));\n\tconst allowed = new Set([\n\t\t\"version\",\n\t\t\"sessionId\",\n\t\t\"streamId\",\n\t\t\"sequence\",\n\t\t\"phase\",\n\t\t\"event\",\n\t\t\"partial\",\n\t\t\"terminal\",\n\t\t\"error\",\n\t]);\n\tconst unsupported = Object.keys(value).filter((key) => !allowed.has(key));\n\tif (unsupported.length > 0)\n\t\tthrow new Error(\n\t\t\tt(\"model.stream data has unsupported fields: {unsupported}\", { unsupported: unsupported.join(\", \") }),\n\t\t);\n\tfor (const key of [\n\t\t\"version\",\n\t\t\"sessionId\",\n\t\t\"streamId\",\n\t\t\"sequence\",\n\t\t\"phase\",\n\t\t\"event\",\n\t\t\"partial\",\n\t\t\"terminal\",\n\t\t\"error\",\n\t]) {\n\t\tif (!(key in value)) throw new Error(t(\"model.stream data is missing required field: {key}\", { key }));\n\t}\n\tif (value.version !== 1) throw new Error(t(\"model.stream data.version must be 1\"));\n\tassertString(value.sessionId, \"model.stream data.sessionId\");\n\tassertString(value.streamId, \"model.stream data.streamId\");\n\tif (typeof value.sequence !== \"number\" || !Number.isSafeInteger(value.sequence) || value.sequence < 1) {\n\t\tthrow new Error(t(\"model.stream data.sequence must be a positive safe integer\"));\n\t}\n\tif (value.phase !== \"raw\" && value.phase !== \"candidate\" && value.phase !== \"committed\") {\n\t\tthrow new Error(t(\"model.stream data.phase is invalid\"));\n\t}\n\tif (typeof value.event !== \"string\" || !modelStreamEvents.has(value.event as ModelStreamEventNameV1)) {\n\t\tthrow new Error(t(\"model.stream data.event is invalid\"));\n\t}\n\tif (value.phase === \"committed\" && value.event !== \"done\" && value.event !== \"error\") {\n\t\tthrow new Error(t(\"model.stream committed phase only permits terminal events\"));\n\t}\n\tconst terminal = value.event === \"done\" || value.event === \"error\";\n\tif (value.terminal !== terminal) throw new Error(t(\"model.stream data.terminal does not match event\"));\n\tif (value.partial !== null) assertJsonSafe(value.partial, \"model.stream data.partial\");\n\tif (terminal && value.event === \"done\" && value.error !== null) {\n\t\tthrow new Error(t(\"model.stream done event cannot contain error\"));\n\t}\n\tif (terminal && value.event === \"error\") {\n\t\tif (!isPlainRecord(value.error)) throw new Error(t(\"model.stream error event requires error object\"));\n\t\tconst errorKeys = Object.keys(value.error);\n\t\tif (errorKeys.some((key) => key !== \"code\" && key !== \"message\" && key !== \"name\")) {\n\t\t\tthrow new Error(t(\"model.stream error has unsupported fields\"));\n\t\t}\n\t\tassertString(value.error.code, \"model.stream data.error.code\");\n\t\tassertString(value.error.message, \"model.stream data.error.message\");\n\t\tif (value.error.name !== undefined) assertString(value.error.name, \"model.stream data.error.name\");\n\t} else if (value.error !== null) {\n\t\tthrow new Error(t(\"model.stream non-terminal event cannot contain error\"));\n\t}\n\treturn value as unknown as ModelStreamEventDataV1;\n}\n\nexport function modelStreamEventDefinition(): LifecycleEventDefinition<ModelStreamEventDataV1> {\n\treturn {\n\t\tid: MODEL_STREAM_EVENT_ID,\n\t\tversion: MODEL_STREAM_EVENT_VERSION,\n\t\tphase: \"raw\",\n\t\tallowedPhases: [\"raw\", \"candidate\", \"committed\"],\n\t\tschema: \"agent-forge/model.stream@1\",\n\t\tallowedRegistrationKinds: [\"observe\"],\n\t\tvalidate: validateModelStreamEventDataV1,\n\t};\n}\n\nexport function validateToolResultEventDataV1(value: unknown): ToolResultEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(t(\"tool.result data must be a plain object\"));\n\tconst allowed = new Set([\n\t\t\"version\",\n\t\t\"sessionId\",\n\t\t\"entryId\",\n\t\t\"revision\",\n\t\t\"toolCallId\",\n\t\t\"toolName\",\n\t\t\"isError\",\n\t\t\"message\",\n\t]);\n\tconst unsupported = Object.keys(value).filter((key) => !allowed.has(key));\n\tif (unsupported.length > 0)\n\t\tthrow new Error(\n\t\t\tt(\"tool.result data has unsupported fields: {unsupported}\", { unsupported: unsupported.join(\", \") }),\n\t\t);\n\tfor (const key of [\"version\", \"sessionId\", \"entryId\", \"revision\", \"toolCallId\", \"toolName\", \"isError\", \"message\"]) {\n\t\tif (!(key in value)) throw new Error(t(\"tool.result data is missing required field: {key}\", { key }));\n\t}\n\tif (value.version !== 1) throw new Error(t(\"tool.result data.version must be 1\"));\n\tassertString(value.sessionId, \"tool.result data.sessionId\");\n\tassertString(value.entryId, \"tool.result data.entryId\");\n\tassertString(value.toolCallId, \"tool.result data.toolCallId\");\n\tassertString(value.toolName, \"tool.result data.toolName\");\n\tif (typeof value.isError !== \"boolean\") throw new Error(t(\"tool.result data.isError must be boolean\"));\n\tif (!isPlainRecord(value.message))\n\t\tthrow new Error(t(\"tool.result data.message must be a tool result message object\"));\n\tif (value.message.role !== \"toolResult\") throw new Error(t(\"tool.result data.message.role must be toolResult\"));\n\tassertString(value.message.toolCallId, \"tool.result data.message.toolCallId\");\n\tassertString(value.message.toolName, \"tool.result data.message.toolName\");\n\tif (!Array.isArray(value.message.content)) throw new Error(t(\"tool.result data.message.content must be an array\"));\n\tif (typeof value.message.isError !== \"boolean\")\n\t\tthrow new Error(t(\"tool.result data.message.isError must be boolean\"));\n\tif (value.message.toolCallId !== value.toolCallId) {\n\t\tthrow new Error(t(\"tool.result data.message.toolCallId must match toolCallId\"));\n\t}\n\tif (value.message.toolName !== value.toolName) {\n\t\tthrow new Error(t(\"tool.result data.message.toolName must match toolName\"));\n\t}\n\tif (value.message.isError !== value.isError) {\n\t\tthrow new Error(t(\"tool.result data.message.isError must match isError\"));\n\t}\n\tif (!isPlainRecord(value.revision)) throw new Error(t(\"tool.result data.revision must be a plain object\"));\n\tconst revision = value.revision;\n\tif (Object.keys(revision).sort().join(\",\") !== \"leafId,sequence,sessionId,version\") {\n\t\tthrow new Error(t(\"tool.result data.revision has unsupported fields\"));\n\t}\n\tif (revision.version !== 1) throw new Error(t(\"tool.result data.revision.version must be 1\"));\n\tassertString(revision.sessionId, \"tool.result data.revision.sessionId\");\n\tif (typeof revision.sequence !== \"number\" || !Number.isSafeInteger(revision.sequence) || revision.sequence < 0) {\n\t\tthrow new Error(t(\"tool.result data.revision.sequence must be a non-negative safe integer\"));\n\t}\n\tif (revision.leafId !== null) assertString(revision.leafId, \"tool.result data.revision.leafId\");\n\tif (revision.sessionId !== value.sessionId) {\n\t\tthrow new Error(t(\"tool.result data.revision.sessionId must match sessionId\"));\n\t}\n\treturn value as unknown as ToolResultEventDataV1;\n}\n\nexport function toolResultEventDefinition(): LifecycleEventDefinition<ToolResultEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: TOOL_RESULT_EVENT_ID,\n\t\tversion: TOOL_RESULT_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/tool.result@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateToolResultEventDataV1,\n\t};\n}\n\nexport function validateToolCallEventDataV1(value: unknown): ToolCallEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(t(\"tool.call data must be a plain object\"));\n\tconst allowed = new Set([\"version\", \"sessionId\", \"revision\", \"toolCallId\", \"toolName\", \"input\"]);\n\tconst unsupported = Object.keys(value).filter((key) => !allowed.has(key));\n\tif (unsupported.length > 0)\n\t\tthrow new Error(\n\t\t\tt(\"tool.call data has unsupported fields: {unsupported}\", { unsupported: unsupported.join(\", \") }),\n\t\t);\n\tfor (const key of [\"version\", \"sessionId\", \"revision\", \"toolCallId\", \"toolName\", \"input\"]) {\n\t\tif (!(key in value)) throw new Error(t(\"tool.call data is missing required field: {key}\", { key }));\n\t}\n\tif (value.version !== 1) throw new Error(t(\"tool.call data.version must be 1\"));\n\tassertString(value.sessionId, \"tool.call data.sessionId\");\n\tassertString(value.toolCallId, \"tool.call data.toolCallId\");\n\tassertString(value.toolName, \"tool.call data.toolName\");\n\tif (!isPlainRecord(value.revision)) throw new Error(t(\"tool.call data.revision must be a plain object\"));\n\tconst revision = value.revision;\n\tif (Object.keys(revision).sort().join(\",\") !== \"leafId,sequence,sessionId,version\") {\n\t\tthrow new Error(t(\"tool.call data.revision has unsupported fields\"));\n\t}\n\tif (revision.version !== 1) throw new Error(t(\"tool.call data.revision.version must be 1\"));\n\tassertString(revision.sessionId, \"tool.call data.revision.sessionId\");\n\tif (typeof revision.sequence !== \"number\" || !Number.isSafeInteger(revision.sequence) || revision.sequence < 0) {\n\t\tthrow new Error(t(\"tool.call data.revision.sequence must be a non-negative safe integer\"));\n\t}\n\tif (revision.leafId !== null) assertString(revision.leafId, \"tool.call data.revision.leafId\");\n\tif (revision.sessionId !== value.sessionId)\n\t\tthrow new Error(t(\"tool.call data.revision.sessionId must match sessionId\"));\n\tassertJsonSafe(value.input, \"tool.call data.input\");\n\treturn value as unknown as ToolCallEventDataV1;\n}\n\nexport function toolCallEventDefinition(): LifecycleEventDefinition<ToolCallEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"transform\"];\n\treturn {\n\t\tid: TOOL_CALL_EVENT_ID,\n\t\tversion: TOOL_CALL_EVENT_VERSION,\n\t\tphase: \"candidate\",\n\t\tschema: \"agent-forge/tool.call@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateToolCallEventDataV1,\n\t};\n}\n\nexport function validateToolExecuteEventDataV1(value: unknown): ToolExecuteEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(t(\"tool.execute data must be a plain object\"));\n\tconst allowed = new Set([\n\t\t\"version\",\n\t\t\"sessionId\",\n\t\t\"revision\",\n\t\t\"toolCallId\",\n\t\t\"toolName\",\n\t\t\"input\",\n\t\t\"isError\",\n\t\t\"content\",\n\t]);\n\tconst unsupported = Object.keys(value).filter((key) => !allowed.has(key));\n\tif (unsupported.length > 0)\n\t\tthrow new Error(\n\t\t\tt(\"tool.execute data has unsupported fields: {unsupported}\", { unsupported: unsupported.join(\", \") }),\n\t\t);\n\tfor (const key of [\"version\", \"sessionId\", \"revision\", \"toolCallId\", \"toolName\", \"input\", \"isError\", \"content\"]) {\n\t\tif (!(key in value)) throw new Error(t(\"tool.execute data is missing required field: {key}\", { key }));\n\t}\n\tif (value.version !== 1) throw new Error(t(\"tool.execute data.version must be 1\"));\n\tassertString(value.sessionId, \"tool.execute data.sessionId\");\n\tassertString(value.toolCallId, \"tool.execute data.toolCallId\");\n\tassertString(value.toolName, \"tool.execute data.toolName\");\n\tif (typeof value.isError !== \"boolean\") throw new Error(t(\"tool.execute data.isError must be boolean\"));\n\tassertJsonSafe(value.input, \"tool.execute data.input\");\n\tvalidateToolResultRawEventDataV1({\n\t\tversion: 1,\n\t\tsessionId: value.sessionId,\n\t\trevision: value.revision,\n\t\ttoolCallId: value.toolCallId,\n\t\ttoolName: value.toolName,\n\t\tisError: value.isError,\n\t\tcontent: value.content,\n\t});\n\treturn value as unknown as ToolExecuteEventDataV1;\n}\n\nexport function toolExecuteEventDefinition(): LifecycleEventDefinition<ToolExecuteEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"execute\"];\n\treturn {\n\t\tid: TOOL_EXECUTE_EVENT_ID,\n\t\tversion: TOOL_EXECUTE_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/tool.execute@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateToolExecuteEventDataV1,\n\t};\n}\n\nexport function validateToolCommitEventDataV1(value: unknown): ToolCommitEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(t(\"tool.commit data must be a plain object\"));\n\tconst allowed = new Set([\"version\", \"sessionId\", \"entryId\", \"revision\", \"toolCallId\", \"toolName\", \"isError\"]);\n\tconst unsupported = Object.keys(value).filter((key) => !allowed.has(key));\n\tif (unsupported.length > 0)\n\t\tthrow new Error(\n\t\t\tt(\"tool.commit data has unsupported fields: {unsupported}\", { unsupported: unsupported.join(\", \") }),\n\t\t);\n\tfor (const key of [\"version\", \"sessionId\", \"entryId\", \"revision\", \"toolCallId\", \"toolName\", \"isError\"]) {\n\t\tif (!(key in value)) throw new Error(t(\"tool.commit data is missing required field: {key}\", { key }));\n\t}\n\tif (value.version !== 1) throw new Error(t(\"tool.commit data.version must be 1\"));\n\tassertString(value.sessionId, \"tool.commit data.sessionId\");\n\tassertString(value.entryId, \"tool.commit data.entryId\");\n\tassertString(value.toolCallId, \"tool.commit data.toolCallId\");\n\tassertString(value.toolName, \"tool.commit data.toolName\");\n\tif (typeof value.isError !== \"boolean\") throw new Error(t(\"tool.commit data.isError must be boolean\"));\n\tif (!isPlainRecord(value.revision)) throw new Error(t(\"tool.commit data.revision must be a plain object\"));\n\tconst revision = value.revision;\n\tif (Object.keys(revision).sort().join(\",\") !== \"leafId,sequence,sessionId,version\") {\n\t\tthrow new Error(t(\"tool.commit data.revision has unsupported fields\"));\n\t}\n\tif (revision.version !== 1) throw new Error(t(\"tool.commit data.revision.version must be 1\"));\n\tassertString(revision.sessionId, \"tool.commit data.revision.sessionId\");\n\tif (typeof revision.sequence !== \"number\" || !Number.isSafeInteger(revision.sequence) || revision.sequence < 0) {\n\t\tthrow new Error(t(\"tool.commit data.revision.sequence must be a non-negative safe integer\"));\n\t}\n\tif (revision.leafId !== null) assertString(revision.leafId, \"tool.commit data.revision.leafId\");\n\tif (revision.sessionId !== value.sessionId)\n\t\tthrow new Error(t(\"tool.commit data.revision.sessionId must match sessionId\"));\n\treturn value as unknown as ToolCommitEventDataV1;\n}\n\nexport function toolCommitEventDefinition(): LifecycleEventDefinition<ToolCommitEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: TOOL_COMMIT_EVENT_ID,\n\t\tversion: TOOL_COMMIT_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/tool.commit@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateToolCommitEventDataV1,\n\t};\n}\n\nexport function validateToolResultRawEventDataV1(value: unknown): ToolResultRawEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(t(\"tool.result.raw data must be a plain object\"));\n\tconst allowed = new Set([\"version\", \"sessionId\", \"revision\", \"toolCallId\", \"toolName\", \"isError\", \"content\"]);\n\tconst unsupported = Object.keys(value).filter((key) => !allowed.has(key));\n\tif (unsupported.length > 0) {\n\t\tthrow new Error(\n\t\t\tt(\"tool.result.raw data has unsupported fields: {unsupported}\", { unsupported: unsupported.join(\", \") }),\n\t\t);\n\t}\n\tfor (const key of [\"version\", \"sessionId\", \"revision\", \"toolCallId\", \"toolName\", \"isError\", \"content\"]) {\n\t\tif (!(key in value)) throw new Error(t(\"tool.result.raw data is missing required field: {key}\", { key }));\n\t}\n\tif (value.version !== 1) throw new Error(t(\"tool.result.raw data.version must be 1\"));\n\tassertString(value.sessionId, \"tool.result.raw data.sessionId\");\n\tassertString(value.toolCallId, \"tool.result.raw data.toolCallId\");\n\tassertString(value.toolName, \"tool.result.raw data.toolName\");\n\tif (typeof value.isError !== \"boolean\") throw new Error(t(\"tool.result.raw data.isError must be boolean\"));\n\tif (!isPlainRecord(value.revision)) throw new Error(t(\"tool.result.raw data.revision must be a plain object\"));\n\tconst revision = value.revision;\n\tif (Object.keys(revision).sort().join(\",\") !== \"leafId,sequence,sessionId,version\") {\n\t\tthrow new Error(t(\"tool.result.raw data.revision has unsupported fields\"));\n\t}\n\tif (revision.version !== 1) throw new Error(t(\"tool.result.raw data.revision.version must be 1\"));\n\tassertString(revision.sessionId, \"tool.result.raw data.revision.sessionId\");\n\tif (typeof revision.sequence !== \"number\" || !Number.isSafeInteger(revision.sequence) || revision.sequence < 0) {\n\t\tthrow new Error(t(\"tool.result.raw data.revision.sequence must be a non-negative safe integer\"));\n\t}\n\tif (revision.leafId !== null) assertString(revision.leafId, \"tool.result.raw data.revision.leafId\");\n\tif (revision.sessionId !== value.sessionId) {\n\t\tthrow new Error(t(\"tool.result.raw data.revision.sessionId must match sessionId\"));\n\t}\n\tif (!Array.isArray(value.content)) throw new Error(t(\"tool.result.raw data.content must be an array\"));\n\tfor (const [index, content] of value.content.entries()) {\n\t\tif (!isPlainRecord(content))\n\t\t\tthrow new Error(t(\"tool.result.raw data.content[{index}] must be a plain object\", { index }));\n\t\tif (content.type === \"text\") {\n\t\t\tconst keys = Object.keys(content).sort().join(\",\");\n\t\t\tif (keys !== \"text,type\" && keys !== \"text,textSignature,type\") {\n\t\t\t\tthrow new Error(t(\"tool.result.raw data.content[{index}] has unsupported text fields\", { index }));\n\t\t\t}\n\t\t\tassertString(content.text, `tool.result.raw data.content[${index}].text`);\n\t\t\tif (content.textSignature !== undefined) {\n\t\t\t\tassertString(content.textSignature, `tool.result.raw data.content[${index}].textSignature`);\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tif (content.type === \"image\") {\n\t\t\tif (Object.keys(content).sort().join(\",\") !== \"data,mimeType,type\") {\n\t\t\t\tthrow new Error(t(\"tool.result.raw data.content[{index}] has unsupported image fields\", { index }));\n\t\t\t}\n\t\t\tassertString(content.data, `tool.result.raw data.content[${index}].data`);\n\t\t\tassertString(content.mimeType, `tool.result.raw data.content[${index}].mimeType`);\n\t\t\tcontinue;\n\t\t}\n\t\tthrow new Error(t(\"tool.result.raw data.content[{index}].type is invalid\", { index }));\n\t}\n\treturn value as unknown as ToolResultRawEventDataV1;\n}\n\nexport function toolResultRawEventDefinition(): LifecycleEventDefinition<ToolResultRawEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\"];\n\treturn {\n\t\tid: TOOL_RESULT_RAW_EVENT_ID,\n\t\tversion: TOOL_RESULT_RAW_EVENT_VERSION,\n\t\tphase: \"raw\",\n\t\tschema: \"agent-forge/tool.result.raw@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateToolResultRawEventDataV1,\n\t};\n}\n\nexport const TOOL_RESULT_TRANSFORM_EVENT_ID = \"tool.result.transform\";\nexport const TOOL_RESULT_TRANSFORM_EVENT_VERSION = 1;\n\nexport interface ToolResultTransformEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\trevision: SessionRevisionV1;\n\ttoolCallId: string;\n\ttoolName: string;\n\tisError: boolean;\n\tcontent: readonly (TextContent | ImageContent)[];\n}\n\nexport function validateToolResultTransformEventDataV1(value: unknown): ToolResultTransformEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(t(\"tool.result.transform data must be a plain object\"));\n\tconst allowed = new Set([\"version\", \"sessionId\", \"revision\", \"toolCallId\", \"toolName\", \"isError\", \"content\"]);\n\tconst unsupported = Object.keys(value).filter((key) => !allowed.has(key));\n\tif (unsupported.length > 0) {\n\t\tthrow new Error(\n\t\t\tt(\"tool.result.transform data has unsupported fields: {unsupported}\", { unsupported: unsupported.join(\", \") }),\n\t\t);\n\t}\n\tfor (const key of [\"version\", \"sessionId\", \"revision\", \"toolCallId\", \"toolName\", \"isError\", \"content\"]) {\n\t\tif (!(key in value)) throw new Error(t(\"tool.result.transform data is missing required field: {key}\", { key }));\n\t}\n\tif (value.version !== 1) throw new Error(t(\"tool.result.transform data.version must be 1\"));\n\tassertString(value.sessionId, \"tool.result.transform data.sessionId\");\n\tassertString(value.toolCallId, \"tool.result.transform data.toolCallId\");\n\tassertString(value.toolName, \"tool.result.transform data.toolName\");\n\tif (typeof value.isError !== \"boolean\") throw new Error(t(\"tool.result.transform data.isError must be boolean\"));\n\tif (!isPlainRecord(value.revision)) throw new Error(t(\"tool.result.transform data.revision must be a plain object\"));\n\tconst revision = value.revision;\n\tif (Object.keys(revision).sort().join(\",\") !== \"leafId,sequence,sessionId,version\") {\n\t\tthrow new Error(t(\"tool.result.transform data.revision has unsupported fields\"));\n\t}\n\tif (revision.version !== 1) throw new Error(t(\"tool.result.transform data.revision.version must be 1\"));\n\tassertString(revision.sessionId, \"tool.result.transform data.revision.sessionId\");\n\tif (typeof revision.sequence !== \"number\" || !Number.isSafeInteger(revision.sequence) || revision.sequence < 0) {\n\t\tthrow new Error(t(\"tool.result.transform data.revision.sequence must be a non-negative safe integer\"));\n\t}\n\tif (revision.leafId !== null) assertString(revision.leafId, \"tool.result.transform data.revision.leafId\");\n\tif (revision.sessionId !== value.sessionId) {\n\t\tthrow new Error(t(\"tool.result.transform data.revision.sessionId must match sessionId\"));\n\t}\n\tif (!Array.isArray(value.content)) throw new Error(t(\"tool.result.transform data.content must be an array\"));\n\tfor (const [index, content] of value.content.entries()) {\n\t\tif (!isPlainRecord(content)) {\n\t\t\tthrow new Error(t(\"tool.result.transform data.content[{index}] must be a plain object\", { index }));\n\t\t}\n\t\tif (content.type === \"text\") {\n\t\t\tconst keys = Object.keys(content).sort().join(\",\");\n\t\t\tif (keys !== \"text,type\" && keys !== \"text,textSignature,type\") {\n\t\t\t\tthrow new Error(t(\"tool.result.transform data.content[{index}] has unsupported text fields\", { index }));\n\t\t\t}\n\t\t\tassertString(content.text, `tool.result.transform data.content[${index}].text`);\n\t\t\tif (content.textSignature !== undefined) {\n\t\t\t\tassertString(content.textSignature, `tool.result.transform data.content[${index}].textSignature`);\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tif (content.type === \"image\") {\n\t\t\tif (Object.keys(content).sort().join(\",\") !== \"data,mimeType,type\") {\n\t\t\t\tthrow new Error(t(\"tool.result.transform data.content[{index}] has unsupported image fields\", { index }));\n\t\t\t}\n\t\t\tassertString(content.data, `tool.result.transform data.content[${index}].data`);\n\t\t\tassertString(content.mimeType, `tool.result.transform data.content[${index}].mimeType`);\n\t\t\tcontinue;\n\t\t}\n\t\tthrow new Error(t(\"tool.result.transform data.content[{index}].type is invalid\", { index }));\n\t}\n\treturn value as unknown as ToolResultTransformEventDataV1;\n}\n\nexport function toolResultTransformEventDefinition(): LifecycleEventDefinition<ToolResultTransformEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"transform\"];\n\treturn {\n\t\tid: TOOL_RESULT_TRANSFORM_EVENT_ID,\n\t\tversion: TOOL_RESULT_TRANSFORM_EVENT_VERSION,\n\t\tphase: \"candidate\",\n\t\tschema: \"agent-forge/tool.result.transform@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateToolResultTransformEventDataV1,\n\t};\n}\n\nexport function validateOperationEndEventDataV1(value: unknown): OperationEndEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(t(\"operation.end data must be a plain object\"));\n\tconst allowed = new Set([\"version\", \"operationId\", \"operationKind\", \"status\", \"errorMessage\", \"reason\"]);\n\tconst unsupported = Object.keys(value).filter((key) => !allowed.has(key));\n\tif (unsupported.length > 0)\n\t\tthrow new Error(\n\t\t\tt(\"operation.end data has unsupported fields: {unsupported}\", { unsupported: unsupported.join(\", \") }),\n\t\t);\n\tfor (const key of [\"version\", \"operationId\", \"operationKind\", \"status\"]) {\n\t\tif (!(key in value)) throw new Error(t(\"operation.end data is missing required field: {key}\", { key }));\n\t}\n\tif (value.version !== 1) throw new Error(t(\"operation.end data.version must be 1\"));\n\tassertString(value.operationId, \"operation.end data.operationId\");\n\tassertString(value.operationKind, \"operation.end data.operationKind\");\n\tif (value.status !== \"succeeded\" && value.status !== \"failed\" && value.status !== \"cancelled\") {\n\t\tthrow new Error(t(\"operation.end data.status is invalid\"));\n\t}\n\tif (value.errorMessage !== undefined) assertString(value.errorMessage, \"operation.end data.errorMessage\");\n\tif (value.reason !== undefined) assertString(value.reason, \"operation.end data.reason\");\n\treturn value as unknown as OperationEndEventDataV1;\n}\n\nexport function operationEndEventDefinition(): LifecycleEventDefinition<OperationEndEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: OPERATION_END_EVENT_ID,\n\t\tversion: OPERATION_END_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/operation.end@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateOperationEndEventDataV1,\n\t};\n}\n\nexport const CAPABILITY_CALL_EVENT_ID = \"capability.call\";\nexport const CAPABILITY_CALL_EVENT_VERSION = 1;\n\nexport type CapabilityCallEventNameV1 = \"start\" | \"cancel\" | \"end\";\nexport type CapabilityCallStatusV1 = \"succeeded\" | \"failed\" | \"cancelled\";\n\nexport interface CapabilityCallEventDataV1 {\n\tversion: 1;\n\toperationId: string;\n\tcapabilityId: string;\n\tcapabilityVersion: number;\n\tcapabilityKind: \"service\" | \"contribution\" | \"transform\";\n\tcallerPluginId: string;\n\tproviderPluginId: string;\n\tevent: CapabilityCallEventNameV1;\n\tstatus?: CapabilityCallStatusV1;\n\terror?: { code: string; message: string; name?: string };\n}\n\nconst capabilityCallEvents = new Set<CapabilityCallEventNameV1>([\"start\", \"cancel\", \"end\"]);\nconst capabilityCallStatuses = new Set<CapabilityCallStatusV1>([\"succeeded\", \"failed\", \"cancelled\"]);\n\nexport function validateCapabilityCallEventDataV1(value: unknown): CapabilityCallEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(t(\"capability.call data must be a plain object\"));\n\tconst allowed = new Set([\n\t\t\"version\",\n\t\t\"operationId\",\n\t\t\"capabilityId\",\n\t\t\"capabilityVersion\",\n\t\t\"capabilityKind\",\n\t\t\"callerPluginId\",\n\t\t\"providerPluginId\",\n\t\t\"event\",\n\t\t\"status\",\n\t\t\"error\",\n\t]);\n\tconst unsupported = Object.keys(value).filter((key) => !allowed.has(key));\n\tif (unsupported.length > 0) {\n\t\tthrow new Error(\n\t\t\tt(\"capability.call data has unsupported fields: {unsupported}\", { unsupported: unsupported.join(\", \") }),\n\t\t);\n\t}\n\tfor (const key of [\n\t\t\"version\",\n\t\t\"operationId\",\n\t\t\"capabilityId\",\n\t\t\"capabilityVersion\",\n\t\t\"capabilityKind\",\n\t\t\"callerPluginId\",\n\t\t\"providerPluginId\",\n\t\t\"event\",\n\t]) {\n\t\tif (!(key in value)) throw new Error(t(\"capability.call data is missing required field: {key}\", { key }));\n\t}\n\tif (value.version !== 1) throw new Error(t(\"capability.call data.version must be 1\"));\n\tassertString(value.operationId, \"capability.call data.operationId\");\n\tassertString(value.capabilityId, \"capability.call data.capabilityId\");\n\tif (\n\t\ttypeof value.capabilityVersion !== \"number\" ||\n\t\t!Number.isSafeInteger(value.capabilityVersion) ||\n\t\tvalue.capabilityVersion < 1\n\t) {\n\t\tthrow new Error(t(\"capability.call data.capabilityVersion must be a positive safe integer\"));\n\t}\n\tif (\n\t\tvalue.capabilityKind !== \"service\" &&\n\t\tvalue.capabilityKind !== \"contribution\" &&\n\t\tvalue.capabilityKind !== \"transform\"\n\t) {\n\t\tthrow new Error(t(\"capability.call data.capabilityKind is invalid\"));\n\t}\n\tassertString(value.callerPluginId, \"capability.call data.callerPluginId\");\n\tassertString(value.providerPluginId, \"capability.call data.providerPluginId\");\n\tif (typeof value.event !== \"string\" || !capabilityCallEvents.has(value.event as CapabilityCallEventNameV1)) {\n\t\tthrow new Error(t(\"capability.call data.event is invalid\"));\n\t}\n\tif ((value.event === \"start\" || value.event === \"cancel\") && value.status !== undefined) {\n\t\tthrow new Error(t(\"capability.call start/cancel must not include status\"));\n\t}\n\tif (value.event === \"end\" && value.status === undefined) {\n\t\tthrow new Error(t(\"capability.call end requires status\"));\n\t}\n\tif (value.status !== undefined) {\n\t\tif (typeof value.status !== \"string\" || !capabilityCallStatuses.has(value.status as CapabilityCallStatusV1)) {\n\t\t\tthrow new Error(t(\"capability.call data.status is invalid\"));\n\t\t}\n\t}\n\tif (value.error !== undefined) {\n\t\tif (!isPlainRecord(value.error)) throw new Error(t(\"capability.call data.error must be a plain object\"));\n\t\tconst errorKeys = Object.keys(value.error);\n\t\tif (errorKeys.some((key) => key !== \"code\" && key !== \"message\" && key !== \"name\")) {\n\t\t\tthrow new Error(t(\"capability.call data.error has unsupported fields\"));\n\t\t}\n\t\tif (!(\"code\" in value.error)) throw new Error(t(\"capability.call data.error is missing required field: code\"));\n\t\tif (!(\"message\" in value.error))\n\t\t\tthrow new Error(t(\"capability.call data.error is missing required field: message\"));\n\t\tassertString(value.error.code, \"capability.call data.error.code\");\n\t\tassertString(value.error.message, \"capability.call data.error.message\");\n\t\tif (value.error.name !== undefined) assertString(value.error.name, \"capability.call data.error.name\");\n\t}\n\tif (value.event !== \"end\" && value.error !== undefined) {\n\t\tthrow new Error(t(\"capability.call start/cancel must not include error\"));\n\t}\n\tif (value.event === \"end\" && value.status === \"succeeded\" && value.error !== undefined) {\n\t\tthrow new Error(t(\"capability.call succeeded end must not include error\"));\n\t}\n\treturn value as unknown as CapabilityCallEventDataV1;\n}\n\nexport function capabilityCallEventDefinition(): LifecycleEventDefinition<CapabilityCallEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: CAPABILITY_CALL_EVENT_ID,\n\t\tversion: CAPABILITY_CALL_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/capability.call@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateCapabilityCallEventDataV1,\n\t};\n}\n\nexport const OPERATION_START_EVENT_ID = \"operation.start\";\nexport const OPERATION_START_EVENT_VERSION = 1;\n\nexport const OPERATION_STEP_EVENT_ID = \"operation.step\";\nexport const OPERATION_STEP_EVENT_VERSION = 1;\n\nexport interface OperationStartEventDataV1 {\n\tversion: 1;\n\toperationId: string;\n\toperationKind: string;\n}\n\nexport function validateOperationStartEventDataV1(value: unknown): OperationStartEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(t(\"operation.start data must be a plain object\"));\n\tconst keys = Object.keys(value).sort().join(\",\");\n\tif (keys !== \"operationId,operationKind,version\") {\n\t\tthrow new Error(t(\"operation.start data has unsupported fields\"));\n\t}\n\tif (value.version !== 1) throw new Error(t(\"operation.start data.version must be 1\"));\n\tassertString(value.operationId, \"operation.start data.operationId\");\n\tassertString(value.operationKind, \"operation.start data.operationKind\");\n\treturn value as unknown as OperationStartEventDataV1;\n}\n\nexport function operationStartEventDefinition(): LifecycleEventDefinition<OperationStartEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: OPERATION_START_EVENT_ID,\n\t\tversion: OPERATION_START_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/operation.start@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateOperationStartEventDataV1,\n\t};\n}\n\nexport interface OperationStepEventDataV1 {\n\tversion: 1;\n\toperationId: string;\n\toperationKind: string;\n\tstep: number;\n\tmessage?: string;\n\tdata?: PluginConfigValue;\n}\n\nexport function validateOperationStepEventDataV1(value: unknown): OperationStepEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(t(\"operation.step data must be a plain object\"));\n\tconst allowed = new Set([\"version\", \"operationId\", \"operationKind\", \"step\", \"message\", \"data\"]);\n\tconst unsupported = Object.keys(value).filter((key) => !allowed.has(key));\n\tif (unsupported.length > 0) throw new Error(t(\"operation.step data has unsupported fields\"));\n\tif (value.version !== 1) throw new Error(t(\"operation.step data.version must be 1\"));\n\tassertString(value.operationId, \"operation.step data.operationId\");\n\tassertString(value.operationKind, \"operation.step data.operationKind\");\n\tif (typeof value.step !== \"number\" || !Number.isSafeInteger(value.step) || value.step < 1) {\n\t\tthrow new Error(t(\"operation.step data.step must be a positive safe integer\"));\n\t}\n\tif (value.message !== undefined) assertString(value.message, \"operation.step data.message\");\n\tif (value.data !== undefined) assertJsonSafe(value.data, \"operation.step data.data\");\n\treturn value as unknown as OperationStepEventDataV1;\n}\n\nexport function operationStepEventDefinition(): LifecycleEventDefinition<OperationStepEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: OPERATION_STEP_EVENT_ID,\n\t\tversion: OPERATION_STEP_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/operation.step@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateOperationStepEventDataV1,\n\t};\n}\n\nexport const OPERATION_CANCEL_EVENT_ID = \"operation.cancel\";\nexport const OPERATION_CANCEL_EVENT_VERSION = 1;\n\nexport interface OperationCancelEventDataV1 {\n\tversion: 1;\n\toperationId: string;\n\toperationKind: string;\n}\n\nexport function validateOperationCancelEventDataV1(value: unknown): OperationCancelEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(t(\"operation.cancel data must be a plain object\"));\n\tconst keys = Object.keys(value).sort().join(\",\");\n\tif (keys !== \"operationId,operationKind,version\") {\n\t\tthrow new Error(t(\"operation.cancel data has unsupported fields\"));\n\t}\n\tif (value.version !== 1) throw new Error(t(\"operation.cancel data.version must be 1\"));\n\tassertString(value.operationId, \"operation.cancel data.operationId\");\n\tassertString(value.operationKind, \"operation.cancel data.operationKind\");\n\treturn value as unknown as OperationCancelEventDataV1;\n}\n\nexport function operationCancelEventDefinition(): LifecycleEventDefinition<OperationCancelEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: OPERATION_CANCEL_EVENT_ID,\n\t\tversion: OPERATION_CANCEL_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/operation.cancel@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateOperationCancelEventDataV1,\n\t};\n}\n\nexport const SESSION_AUTO_RETRY_EVENT_ID = \"session.auto.retry\";\nexport const SESSION_AUTO_RETRY_EVENT_VERSION = 1;\n\nexport const SESSION_COMPACTION_DECISION_EVENT_ID = \"session.compaction.decision\";\nexport const SESSION_COMPACTION_DECISION_EVENT_VERSION = 1;\n\nexport const SESSION_COMPACTION_FAILED_EVENT_ID = \"session.compaction.failed\";\nexport const SESSION_COMPACTION_FAILED_EVENT_VERSION = 1;\n\n/** The host entered the actual retry path after a retryable agent failure. */\nexport interface SessionAutoRetryEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\tattempt: number;\n\tmaxAttempts: number;\n\tdelayMs: number;\n\terrorMessage: string;\n}\n\nexport type SessionCompactionDecisionReasonV1 = \"overflow\" | \"threshold\";\n\n/**\n * One compaction policy decision observed by the host, including the negative\n * pre-check verdicts. The threshold triplet is present only when the host\n * measured it (threshold paths); the overflow path's policy request carries no\n * contextUsage, so the fields are omitted rather than fabricated.\n */\nexport interface SessionCompactionDecisionEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\treason: SessionCompactionDecisionReasonV1;\n\tcompact: boolean;\n\twillRetry: boolean;\n\tcontextTokens?: number;\n\tcontextWindow?: number;\n\treserveTokens?: number;\n\tfailureMessage?: string;\n}\n\nexport type SessionCompactionFailedReasonV1 = \"manual\" | \"overflow\" | \"threshold\";\n\n/** A compaction that genuinely failed; extension/user cancellation stays unreported. */\nexport interface SessionCompactionFailedEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\treason: SessionCompactionFailedReasonV1;\n\terrorMessage: string;\n}\n\nfunction assertNonNegativeSafeInteger(value: unknown, label: string): void {\n\tif (typeof value !== \"number\" || !Number.isSafeInteger(value) || value < 0) {\n\t\tthrow new Error(t(\"{label} must be a non-negative safe integer\", { label }));\n\t}\n}\n\nfunction assertPositiveSafeInteger(value: unknown, label: string): void {\n\tif (typeof value !== \"number\" || !Number.isSafeInteger(value) || value < 1) {\n\t\tthrow new Error(t(\"{label} must be a positive safe integer\", { label }));\n\t}\n}\n\nexport function validateSessionAutoRetryEventDataV1(value: unknown): SessionAutoRetryEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(t(\"session.auto.retry data must be a plain object\"));\n\tconst allowed = new Set([\"version\", \"sessionId\", \"attempt\", \"maxAttempts\", \"delayMs\", \"errorMessage\"]);\n\tconst unsupported = Object.keys(value).filter((key) => !allowed.has(key));\n\tif (unsupported.length > 0) {\n\t\tthrow new Error(\n\t\t\tt(\"session.auto.retry data has unsupported fields: {unsupported}\", { unsupported: unsupported.join(\", \") }),\n\t\t);\n\t}\n\tfor (const key of [\"version\", \"sessionId\", \"attempt\", \"maxAttempts\", \"delayMs\", \"errorMessage\"]) {\n\t\tif (!(key in value)) throw new Error(t(\"session.auto.retry data is missing required field: {key}\", { key }));\n\t}\n\tif (value.version !== 1) throw new Error(t(\"session.auto.retry data.version must be 1\"));\n\tassertString(value.sessionId, \"session.auto.retry data.sessionId\");\n\tassertPositiveSafeInteger(value.attempt, \"session.auto.retry data.attempt\");\n\tassertPositiveSafeInteger(value.maxAttempts, \"session.auto.retry data.maxAttempts\");\n\tassertNonNegativeSafeInteger(value.delayMs, \"session.auto.retry data.delayMs\");\n\tassertString(value.errorMessage, \"session.auto.retry data.errorMessage\");\n\treturn value as unknown as SessionAutoRetryEventDataV1;\n}\n\nexport function sessionAutoRetryEventDefinition(): LifecycleEventDefinition<SessionAutoRetryEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: SESSION_AUTO_RETRY_EVENT_ID,\n\t\tversion: SESSION_AUTO_RETRY_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/session.auto.retry@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateSessionAutoRetryEventDataV1,\n\t};\n}\n\nconst sessionCompactionDecisionReasons = new Set<SessionCompactionDecisionReasonV1>([\"overflow\", \"threshold\"]);\n\nfunction assertOptionalPositiveSafeInteger(value: unknown, label: string): void {\n\tif (value === undefined) return;\n\tassertPositiveSafeInteger(value, label);\n}\n\nexport function validateSessionCompactionDecisionEventDataV1(value: unknown): SessionCompactionDecisionEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(t(\"session.compaction.decision data must be a plain object\"));\n\tconst allowed = new Set([\n\t\t\"version\",\n\t\t\"sessionId\",\n\t\t\"reason\",\n\t\t\"compact\",\n\t\t\"willRetry\",\n\t\t\"contextTokens\",\n\t\t\"contextWindow\",\n\t\t\"reserveTokens\",\n\t\t\"failureMessage\",\n\t]);\n\tconst unsupported = Object.keys(value).filter((key) => !allowed.has(key));\n\tif (unsupported.length > 0) {\n\t\tthrow new Error(\n\t\t\tt(\"session.compaction.decision data has unsupported fields: {unsupported}\", {\n\t\t\t\tunsupported: unsupported.join(\", \"),\n\t\t\t}),\n\t\t);\n\t}\n\tfor (const key of [\"version\", \"sessionId\", \"reason\", \"compact\", \"willRetry\"]) {\n\t\tif (!(key in value))\n\t\t\tthrow new Error(t(\"session.compaction.decision data is missing required field: {key}\", { key }));\n\t}\n\tif (value.version !== 1) throw new Error(t(\"session.compaction.decision data.version must be 1\"));\n\tassertString(value.sessionId, \"session.compaction.decision data.sessionId\");\n\tif (\n\t\ttypeof value.reason !== \"string\" ||\n\t\t!sessionCompactionDecisionReasons.has(value.reason as SessionCompactionDecisionReasonV1)\n\t) {\n\t\tthrow new Error(t(\"session.compaction.decision data.reason is invalid\"));\n\t}\n\tif (typeof value.compact !== \"boolean\") {\n\t\tthrow new Error(t(\"session.compaction.decision data.compact must be a boolean\"));\n\t}\n\tif (typeof value.willRetry !== \"boolean\") {\n\t\tthrow new Error(t(\"session.compaction.decision data.willRetry must be a boolean\"));\n\t}\n\tassertOptionalPositiveSafeInteger(value.contextTokens, \"session.compaction.decision data.contextTokens\");\n\tassertOptionalPositiveSafeInteger(value.contextWindow, \"session.compaction.decision data.contextWindow\");\n\tassertOptionalPositiveSafeInteger(value.reserveTokens, \"session.compaction.decision data.reserveTokens\");\n\tif (value.failureMessage !== undefined) {\n\t\tassertString(value.failureMessage, \"session.compaction.decision data.failureMessage\");\n\t}\n\treturn value as unknown as SessionCompactionDecisionEventDataV1;\n}\n\nexport function sessionCompactionDecisionEventDefinition(): LifecycleEventDefinition<SessionCompactionDecisionEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: SESSION_COMPACTION_DECISION_EVENT_ID,\n\t\tversion: SESSION_COMPACTION_DECISION_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/session.compaction.decision@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateSessionCompactionDecisionEventDataV1,\n\t};\n}\n\nconst sessionCompactionFailedReasons = new Set<SessionCompactionFailedReasonV1>([\"manual\", \"overflow\", \"threshold\"]);\n\nexport function validateSessionCompactionFailedEventDataV1(value: unknown): SessionCompactionFailedEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(t(\"session.compaction.failed data must be a plain object\"));\n\tconst allowed = new Set([\"version\", \"sessionId\", \"reason\", \"errorMessage\"]);\n\tconst unsupported = Object.keys(value).filter((key) => !allowed.has(key));\n\tif (unsupported.length > 0) {\n\t\tthrow new Error(\n\t\t\tt(\"session.compaction.failed data has unsupported fields: {unsupported}\", {\n\t\t\t\tunsupported: unsupported.join(\", \"),\n\t\t\t}),\n\t\t);\n\t}\n\tfor (const key of [\"version\", \"sessionId\", \"reason\", \"errorMessage\"]) {\n\t\tif (!(key in value))\n\t\t\tthrow new Error(t(\"session.compaction.failed data is missing required field: {key}\", { key }));\n\t}\n\tif (value.version !== 1) throw new Error(t(\"session.compaction.failed data.version must be 1\"));\n\tassertString(value.sessionId, \"session.compaction.failed data.sessionId\");\n\tif (\n\t\ttypeof value.reason !== \"string\" ||\n\t\t!sessionCompactionFailedReasons.has(value.reason as SessionCompactionFailedReasonV1)\n\t) {\n\t\tthrow new Error(t(\"session.compaction.failed data.reason is invalid\"));\n\t}\n\tassertString(value.errorMessage, \"session.compaction.failed data.errorMessage\");\n\treturn value as unknown as SessionCompactionFailedEventDataV1;\n}\n\nexport function sessionCompactionFailedEventDefinition(): LifecycleEventDefinition<SessionCompactionFailedEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: SESSION_COMPACTION_FAILED_EVENT_ID,\n\t\tversion: SESSION_COMPACTION_FAILED_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/session.compaction.failed@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateSessionCompactionFailedEventDataV1,\n\t};\n}\n\nexport const SESSION_END_EVENT_ID = \"session.end\";\nexport const SESSION_END_EVENT_VERSION = 1;\n\n/**\n * Terminal fact of a session dispose. A reload does not dispatch this event:\n * a reload is covered by session.start(reason:\"reload\") plus session.reload@1.\n */\nexport interface SessionEndEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n}\n\nexport function validateSessionEndEventDataV1(value: unknown): SessionEndEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(t(\"session.end data must be a plain object\"));\n\tif (Object.keys(value).sort().join(\",\") !== \"sessionId,version\") {\n\t\tthrow new Error(t(\"session.end data has unsupported fields\"));\n\t}\n\tif (value.version !== 1) throw new Error(t(\"session.end data.version must be 1\"));\n\tassertString(value.sessionId, \"session.end data.sessionId\");\n\treturn value as unknown as SessionEndEventDataV1;\n}\n\nexport function sessionEndEventDefinition(): LifecycleEventDefinition<SessionEndEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: SESSION_END_EVENT_ID,\n\t\tversion: SESSION_END_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/session.end@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateSessionEndEventDataV1,\n\t};\n}\n\nexport const AGENT_TASK_SETTLED_EVENT_ID = \"agent.task.settled\";\nexport const AGENT_TASK_SETTLED_EVENT_VERSION = 1;\n\n/** Scheduler-authoritative settlement status; mirrors SubagentRuntimeStatus verbatim. */\nexport type AgentTaskSettledStatusV1 =\n\t| \"queued\"\n\t| \"admitted\"\n\t| \"running\"\n\t| \"succeeded\"\n\t| \"failed\"\n\t| \"cancelled\"\n\t| \"timed_out\"\n\t| \"drain_timeout\"\n\t| \"runner_lost\";\n\n/**\n * One settled background delegation task. `sessionId` is the parent session\n * that owns the task; `taskSessionId` is the child session the task ran in.\n */\nexport interface AgentTaskSettledEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\ttaskSessionId: string;\n\ttaskId: string;\n\tstatus: AgentTaskSettledStatusV1;\n\treasonCode?: string;\n}\n\nconst agentTaskSettledStatuses = new Set<AgentTaskSettledStatusV1>([\n\t\"queued\",\n\t\"admitted\",\n\t\"running\",\n\t\"succeeded\",\n\t\"failed\",\n\t\"cancelled\",\n\t\"timed_out\",\n\t\"drain_timeout\",\n\t\"runner_lost\",\n]);\n\nexport function validateAgentTaskSettledEventDataV1(value: unknown): AgentTaskSettledEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(t(\"agent.task.settled data must be a plain object\"));\n\tconst allowed = new Set([\"version\", \"sessionId\", \"taskSessionId\", \"taskId\", \"status\", \"reasonCode\"]);\n\tconst unsupported = Object.keys(value).filter((key) => !allowed.has(key));\n\tif (unsupported.length > 0) {\n\t\tthrow new Error(\n\t\t\tt(\"agent.task.settled data has unsupported fields: {unsupported}\", { unsupported: unsupported.join(\", \") }),\n\t\t);\n\t}\n\tfor (const key of [\"version\", \"sessionId\", \"taskSessionId\", \"taskId\", \"status\"]) {\n\t\tif (!(key in value)) throw new Error(t(\"agent.task.settled data is missing required field: {key}\", { key }));\n\t}\n\tif (value.version !== 1) throw new Error(t(\"agent.task.settled data.version must be 1\"));\n\tassertString(value.sessionId, \"agent.task.settled data.sessionId\");\n\tassertString(value.taskSessionId, \"agent.task.settled data.taskSessionId\");\n\tassertString(value.taskId, \"agent.task.settled data.taskId\");\n\tif (typeof value.status !== \"string\" || !agentTaskSettledStatuses.has(value.status as AgentTaskSettledStatusV1)) {\n\t\tthrow new Error(t(\"agent.task.settled data.status is invalid\"));\n\t}\n\tif (value.reasonCode !== undefined) assertString(value.reasonCode, \"agent.task.settled data.reasonCode\");\n\treturn value as unknown as AgentTaskSettledEventDataV1;\n}\n\nexport function agentTaskSettledEventDefinition(): LifecycleEventDefinition<AgentTaskSettledEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: AGENT_TASK_SETTLED_EVENT_ID,\n\t\tversion: AGENT_TASK_SETTLED_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/agent.task.settled@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateAgentTaskSettledEventDataV1,\n\t};\n}\n\n/**\n * Observed fact of one beforeToolCall chain link returning a block\n * short-circuit. The blocking plugin's identity is deliberately absent: the\n * hook chain has no identity surface.\n */\nexport interface ToolGateBlockedEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\ttoolCallId: string;\n\ttoolName: string;\n\treason?: string;\n}\n\nexport function validateToolGateBlockedEventDataV1(value: unknown): ToolGateBlockedEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(t(\"tool.gate.blocked data must be a plain object\"));\n\tconst allowed = new Set([\"version\", \"sessionId\", \"toolCallId\", \"toolName\", \"reason\"]);\n\tconst unsupported = Object.keys(value).filter((key) => !allowed.has(key));\n\tif (unsupported.length > 0)\n\t\tthrow new Error(\n\t\t\tt(\"tool.gate.blocked data has unsupported fields: {unsupported}\", { unsupported: unsupported.join(\", \") }),\n\t\t);\n\tfor (const key of [\"version\", \"sessionId\", \"toolCallId\", \"toolName\"]) {\n\t\tif (!(key in value)) throw new Error(t(\"tool.gate.blocked data is missing required field: {key}\", { key }));\n\t}\n\tif (value.version !== 1) throw new Error(t(\"tool.gate.blocked data.version must be 1\"));\n\tassertString(value.sessionId, \"tool.gate.blocked data.sessionId\");\n\tassertString(value.toolCallId, \"tool.gate.blocked data.toolCallId\");\n\tassertString(value.toolName, \"tool.gate.blocked data.toolName\");\n\tif (value.reason !== undefined) assertString(value.reason, \"tool.gate.blocked data.reason\");\n\treturn value as unknown as ToolGateBlockedEventDataV1;\n}\n\nexport function toolGateBlockedEventDefinition(): LifecycleEventDefinition<ToolGateBlockedEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: TOOL_GATE_BLOCKED_EVENT_ID,\n\t\tversion: TOOL_GATE_BLOCKED_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/tool.gate.blocked@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateToolGateBlockedEventDataV1,\n\t};\n}\n\n/**\n * Observed fact of one beforeInput chain link returning a block short-circuit\n * (输入 gate 拒绝,扩展位盘点 A3). Facts only — the rejected input's text never\n * enters the envelope, matching input.received@1's privacy posture. The\n * blocking plugin's identity is deliberately absent: the hook chain has no\n * identity surface.\n */\nexport interface InputGateBlockedEventDataV1 {\n\tversion: 1;\n\tsessionId: string;\n\tsource: string;\n\ttextLength: number;\n\treason?: string;\n}\n\nexport function validateInputGateBlockedEventDataV1(value: unknown): InputGateBlockedEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(t(\"input.gate.blocked data must be a plain object\"));\n\tconst allowed = new Set([\"version\", \"sessionId\", \"source\", \"textLength\", \"reason\"]);\n\tconst unsupported = Object.keys(value).filter((key) => !allowed.has(key));\n\tif (unsupported.length > 0)\n\t\tthrow new Error(\n\t\t\tt(\"input.gate.blocked data has unsupported fields: {unsupported}\", { unsupported: unsupported.join(\", \") }),\n\t\t);\n\tfor (const key of [\"version\", \"sessionId\", \"source\", \"textLength\"]) {\n\t\tif (!(key in value)) throw new Error(t(\"input.gate.blocked data is missing required field: {key}\", { key }));\n\t}\n\tif (value.version !== 1) throw new Error(t(\"input.gate.blocked data.version must be 1\"));\n\tassertString(value.sessionId, \"input.gate.blocked data.sessionId\");\n\tassertString(value.source, \"input.gate.blocked data.source\");\n\tif (typeof value.textLength !== \"number\" || !Number.isInteger(value.textLength) || value.textLength < 0) {\n\t\tthrow new Error(t(\"input.gate.blocked data.textLength must be a non-negative integer\"));\n\t}\n\tif (value.reason !== undefined) assertString(value.reason, \"input.gate.blocked data.reason\");\n\treturn value as unknown as InputGateBlockedEventDataV1;\n}\n\nexport function inputGateBlockedEventDefinition(): LifecycleEventDefinition<InputGateBlockedEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: INPUT_GATE_BLOCKED_EVENT_ID,\n\t\tversion: INPUT_GATE_BLOCKED_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/input.gate.blocked@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateInputGateBlockedEventDataV1,\n\t};\n}\n\nexport const PROVIDER_FAILOVER_SWITCHED_EVENT_ID = \"provider.failover.switched\";\nexport const PROVIDER_FAILOVER_SWITCHED_EVENT_VERSION = 1;\n\nexport const PROVIDER_FAILOVER_RECOVERED_EVENT_ID = \"provider.failover.recovered\";\nexport const PROVIDER_FAILOVER_RECOVERED_EVENT_VERSION = 1;\n\nexport const PROVIDER_FAILOVER_PROBE_FAILED_EVENT_ID = \"provider.failover.probe.failed\";\nexport const PROVIDER_FAILOVER_PROBE_FAILED_EVENT_VERSION = 1;\n\n/**\n * Observed fact of one provider-failover reroute (设计 供应商能力槽位与主备切换\n * §4.7): the request left `from` for `to` after a failed attempt with no\n * user-visible content yet. `chainId` is the primary `provider/modelId` the\n * breaker state hangs on; `attempt` is the 1-based switch ordinal within the\n * request; `rawError` is the truncated original error text of the failed\n * attempt — display-only attribution that never feeds the decision.\n */\nexport interface ProviderFailoverSwitchedEventDataV1 {\n\tversion: 1;\n\tchainId: string;\n\tfrom: string;\n\tto: string;\n\tattempt: number;\n\trawError: string;\n}\n\n/** Observed fact of a successful primary probe: the breaker closed and traffic returned to the primary. */\nexport interface ProviderFailoverRecoveredEventDataV1 {\n\tversion: 1;\n\tchainId: string;\n\tprovider: string;\n}\n\n/**\n * Observed fact of a failed primary probe: the breaker reopened with a doubled\n * cooldown. `rawError` is the truncated original error text (display-only);\n * `nextCooldownMs` is the cooldown the next probe must wait out.\n */\nexport interface ProviderFailoverProbeFailedEventDataV1 {\n\tversion: 1;\n\tchainId: string;\n\tprovider: string;\n\trawError: string;\n\tnextCooldownMs: number;\n}\n\nconst isModelReference = (value: string): boolean => {\n\tconst separator = value.indexOf(\"/\");\n\treturn separator > 0 && separator < value.length - 1;\n};\n\nfunction validateFailoverModelReference(value: unknown, label: string): asserts value is string {\n\tassertString(value, label);\n\tif (!isModelReference(value)) throw new Error(t(\"{label} must be a provider/modelId reference\", { label }));\n}\n\nexport function validateProviderFailoverSwitchedEventDataV1(value: unknown): ProviderFailoverSwitchedEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(t(\"provider.failover.switched data must be a plain object\"));\n\tconst allowed = new Set([\"version\", \"chainId\", \"from\", \"to\", \"attempt\", \"rawError\"]);\n\tconst unsupported = Object.keys(value).filter((key) => !allowed.has(key));\n\tif (unsupported.length > 0) {\n\t\tthrow new Error(\n\t\t\tt(\"provider.failover.switched data has unsupported fields: {unsupported}\", {\n\t\t\t\tunsupported: unsupported.join(\", \"),\n\t\t\t}),\n\t\t);\n\t}\n\tfor (const key of [\"version\", \"chainId\", \"from\", \"to\", \"attempt\", \"rawError\"]) {\n\t\tif (!(key in value))\n\t\t\tthrow new Error(t(\"provider.failover.switched data is missing required field: {key}\", { key }));\n\t}\n\tif (value.version !== 1) throw new Error(t(\"provider.failover.switched data.version must be 1\"));\n\tvalidateFailoverModelReference(value.chainId, \"provider.failover.switched data.chainId\");\n\tvalidateFailoverModelReference(value.from, \"provider.failover.switched data.from\");\n\tvalidateFailoverModelReference(value.to, \"provider.failover.switched data.to\");\n\tassertPositiveSafeInteger(value.attempt, \"provider.failover.switched data.attempt\");\n\tassertString(value.rawError, \"provider.failover.switched data.rawError\");\n\treturn value as unknown as ProviderFailoverSwitchedEventDataV1;\n}\n\nexport function providerFailoverSwitchedEventDefinition(): LifecycleEventDefinition<ProviderFailoverSwitchedEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: PROVIDER_FAILOVER_SWITCHED_EVENT_ID,\n\t\tversion: PROVIDER_FAILOVER_SWITCHED_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/provider.failover.switched@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateProviderFailoverSwitchedEventDataV1,\n\t};\n}\n\nexport function validateProviderFailoverRecoveredEventDataV1(value: unknown): ProviderFailoverRecoveredEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(t(\"provider.failover.recovered data must be a plain object\"));\n\tif (Object.keys(value).sort().join(\",\") !== \"chainId,provider,version\") {\n\t\tthrow new Error(t(\"provider.failover.recovered data has unsupported fields\"));\n\t}\n\tif (value.version !== 1) throw new Error(t(\"provider.failover.recovered data.version must be 1\"));\n\tvalidateFailoverModelReference(value.chainId, \"provider.failover.recovered data.chainId\");\n\tassertString(value.provider, \"provider.failover.recovered data.provider\");\n\treturn value as unknown as ProviderFailoverRecoveredEventDataV1;\n}\n\nexport function providerFailoverRecoveredEventDefinition(): LifecycleEventDefinition<ProviderFailoverRecoveredEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: PROVIDER_FAILOVER_RECOVERED_EVENT_ID,\n\t\tversion: PROVIDER_FAILOVER_RECOVERED_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/provider.failover.recovered@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateProviderFailoverRecoveredEventDataV1,\n\t};\n}\n\nexport function validateProviderFailoverProbeFailedEventDataV1(value: unknown): ProviderFailoverProbeFailedEventDataV1 {\n\tif (!isPlainRecord(value)) throw new Error(t(\"provider.failover.probe.failed data must be a plain object\"));\n\tconst allowed = new Set([\"version\", \"chainId\", \"provider\", \"rawError\", \"nextCooldownMs\"]);\n\tconst unsupported = Object.keys(value).filter((key) => !allowed.has(key));\n\tif (unsupported.length > 0) {\n\t\tthrow new Error(\n\t\t\tt(\"provider.failover.probe.failed data has unsupported fields: {unsupported}\", {\n\t\t\t\tunsupported: unsupported.join(\", \"),\n\t\t\t}),\n\t\t);\n\t}\n\tfor (const key of [\"version\", \"chainId\", \"provider\", \"rawError\", \"nextCooldownMs\"]) {\n\t\tif (!(key in value))\n\t\t\tthrow new Error(t(\"provider.failover.probe.failed data is missing required field: {key}\", { key }));\n\t}\n\tif (value.version !== 1) throw new Error(t(\"provider.failover.probe.failed data.version must be 1\"));\n\tvalidateFailoverModelReference(value.chainId, \"provider.failover.probe.failed data.chainId\");\n\tassertString(value.provider, \"provider.failover.probe.failed data.provider\");\n\tassertString(value.rawError, \"provider.failover.probe.failed data.rawError\");\n\tassertPositiveSafeInteger(value.nextCooldownMs, \"provider.failover.probe.failed data.nextCooldownMs\");\n\treturn value as unknown as ProviderFailoverProbeFailedEventDataV1;\n}\n\nexport function providerFailoverProbeFailedEventDefinition(): LifecycleEventDefinition<ProviderFailoverProbeFailedEventDataV1> {\n\tconst allowedRegistrationKinds: readonly LifecycleRegistrationKind[] = [\"observe\", \"after-commit\"];\n\treturn {\n\t\tid: PROVIDER_FAILOVER_PROBE_FAILED_EVENT_ID,\n\t\tversion: PROVIDER_FAILOVER_PROBE_FAILED_EVENT_VERSION,\n\t\tphase: \"committed\",\n\t\tschema: \"agent-forge/provider.failover.probe.failed@1\",\n\t\tallowedRegistrationKinds,\n\t\tvalidate: validateProviderFailoverProbeFailedEventDataV1,\n\t};\n}\n"]}
|