@gajae-code/coding-agent 0.10.2 → 0.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +58 -2
- package/dist/types/append-only-mode.d.ts +1 -1
- package/dist/types/async/job-manager.d.ts +46 -7
- package/dist/types/cli/args.d.ts +4 -5
- package/dist/types/cli/daemon-cli.d.ts +12 -1
- package/dist/types/cli/notify-cli.d.ts +21 -1
- package/dist/types/cli.d.ts +3 -0
- package/dist/types/commands/daemon.d.ts +39 -0
- package/dist/types/commands/launch.d.ts +3 -0
- package/dist/types/commands/notify.d.ts +28 -1
- package/dist/types/commands/sdk.d.ts +33 -0
- package/dist/types/config/atomic-yaml-patch.d.ts +85 -0
- package/dist/types/config/model-profile-activation.d.ts +35 -15
- package/dist/types/config/model-profiles.d.ts +11 -5
- package/dist/types/config/model-registry.d.ts +3 -3
- package/dist/types/config/model-resolver.d.ts +39 -6
- package/dist/types/config/model-selector-value.d.ts +17 -0
- package/dist/types/config/models-config-schema.d.ts +10 -6
- package/dist/types/config/settings-schema.d.ts +133 -6
- package/dist/types/config/settings.d.ts +63 -35
- package/dist/types/coordinator-mcp/model-preset.d.ts +7 -6
- package/dist/types/coordinator-mcp/server.d.ts +6 -49
- package/dist/types/daemon/builtin.d.ts +6 -5
- package/dist/types/daemon/control-types.d.ts +1 -1
- package/dist/types/discovery/mcp-json.d.ts +12 -1
- package/dist/types/extensibility/custom-tools/types.d.ts +1 -1
- package/dist/types/extensibility/extensions/compact-handler.d.ts +4 -2
- package/dist/types/extensibility/extensions/get-commands-handler.d.ts +2 -2
- package/dist/types/extensibility/extensions/loader.d.ts +10 -1
- package/dist/types/extensibility/extensions/runner.d.ts +3 -3
- package/dist/types/extensibility/extensions/types.d.ts +141 -16
- package/dist/types/extensibility/hooks/types.d.ts +1 -1
- package/dist/types/gjc-runtime/launch-tmux.d.ts +3 -2
- package/dist/types/gjc-runtime/psmux-detect.d.ts +3 -0
- package/dist/types/gjc-runtime/session-state-sidecar.d.ts +3 -0
- package/dist/types/gjc-runtime/team-runtime.d.ts +3 -4
- package/dist/types/gjc-runtime/tmux-owner-isolation-cli.d.ts +13 -0
- package/dist/types/gjc-runtime/tmux-sessions.d.ts +4 -1
- package/dist/types/gjc-runtime/ultragoal-receipt-freshness.d.ts +11 -0
- package/dist/types/gjc-runtime/windows-powershell-command.d.ts +9 -0
- package/dist/types/harness-control-plane/operate.d.ts +5 -5
- package/dist/types/harness-control-plane/owner.d.ts +18 -4
- package/dist/types/harness-control-plane/receipts.d.ts +0 -1
- package/dist/types/harness-control-plane/sdk-transport.d.ts +43 -0
- package/dist/types/harness-control-plane/session-transport.d.ts +48 -0
- package/dist/types/harness-control-plane/types.d.ts +3 -4
- package/dist/types/lsp/index.d.ts +1 -1
- package/dist/types/main.d.ts +32 -38
- package/dist/types/modes/acp/acp-agent.d.ts +224 -53
- package/dist/types/modes/acp/acp-client-bridge.d.ts +1 -0
- package/dist/types/modes/acp/acp-mode.d.ts +6 -15
- package/dist/types/modes/acp/permission-mode.d.ts +4 -0
- package/dist/types/modes/acp/startup-options.d.ts +6 -0
- package/dist/types/modes/components/agent-dashboard.d.ts +3 -0
- package/dist/types/modes/components/model-selector.d.ts +1 -0
- package/dist/types/modes/components/notifications-settings-editor.d.ts +135 -0
- package/dist/types/modes/components/settings-selector.d.ts +6 -4
- package/dist/types/modes/components/welcome.d.ts +1 -1
- package/dist/types/modes/controllers/command-controller.d.ts +2 -2
- package/dist/types/modes/controllers/extension-ui-controller.d.ts +1 -0
- package/dist/types/modes/controllers/selector-controller.d.ts +35 -1
- package/dist/types/modes/index.d.ts +0 -4
- package/dist/types/modes/interactive-mode.d.ts +5 -2
- package/dist/types/modes/runtime-init.d.ts +2 -2
- package/dist/types/modes/shared/agent-wire/approval-gate.d.ts +6 -9
- package/dist/types/modes/shared/agent-wire/deep-interview-gate.d.ts +4 -6
- package/dist/types/modes/shared/agent-wire/event-contract.d.ts +6 -6
- package/dist/types/modes/shared/agent-wire/event-envelope.d.ts +4 -9
- package/dist/types/modes/shared/agent-wire/event-observation.d.ts +1 -1
- package/dist/types/modes/shared/agent-wire/workflow-gate-broker.d.ts +170 -30
- package/dist/types/modes/shared/agent-wire/workflow-gate-schema.d.ts +7 -7
- package/dist/types/modes/shared/agent-wire/workflow-gate-types.d.ts +105 -0
- package/dist/types/modes/types.d.ts +7 -2
- package/dist/types/runtime-mcp/client.d.ts +2 -0
- package/dist/types/runtime-mcp/config.d.ts +5 -1
- package/dist/types/runtime-mcp/manager.d.ts +8 -1
- package/dist/types/runtime-mcp/types.d.ts +4 -0
- package/dist/types/sdk/acp/adapter.d.ts +67 -0
- package/dist/types/sdk/acp/index.d.ts +2 -0
- package/dist/types/sdk/broker/broker.d.ts +53 -0
- package/dist/types/sdk/broker/discovery.d.ts +30 -0
- package/dist/types/sdk/broker/ensure.d.ts +42 -0
- package/dist/types/sdk/broker/identity.d.ts +3 -0
- package/dist/types/sdk/broker/index.d.ts +8 -0
- package/dist/types/sdk/broker/lifecycle-ledger.d.ts +95 -0
- package/dist/types/sdk/broker/lifecycle.d.ts +85 -0
- package/dist/types/sdk/broker/process-incarnation.d.ts +14 -0
- package/dist/types/sdk/broker/runtime.d.ts +33 -0
- package/dist/types/sdk/broker/session-index.d.ts +57 -0
- package/dist/types/sdk/broker/state-version.d.ts +8 -0
- package/dist/types/sdk/broker/transport.d.ts +9 -0
- package/dist/types/sdk/bus/chat-command-policy.d.ts +49 -0
- package/dist/types/sdk/bus/chat-daemon-cli.d.ts +21 -0
- package/dist/types/sdk/bus/chat-daemon-control.d.ts +111 -0
- package/dist/types/sdk/bus/chat-daemon-runtime.d.ts +77 -0
- package/dist/types/sdk/bus/chat-effect-journal.d.ts +84 -0
- package/dist/types/{notifications → sdk/bus}/config-commands.d.ts +7 -2
- package/dist/types/sdk/bus/config.d.ts +274 -0
- package/dist/types/sdk/bus/conversation-store.d.ts +72 -0
- package/dist/types/sdk/bus/discord-conversation.d.ts +58 -0
- package/dist/types/sdk/bus/discord-daemon.d.ts +50 -0
- package/dist/types/sdk/bus/discord-live-provider.d.ts +70 -0
- package/dist/types/sdk/bus/discord-provider.d.ts +85 -0
- package/dist/types/{notifications → sdk/bus}/html-format.d.ts +2 -2
- package/dist/types/{notifications → sdk/bus}/index.d.ts +113 -13
- package/dist/types/{notifications → sdk/bus}/lifecycle-control-runtime.d.ts +4 -2
- package/dist/types/{notifications → sdk/bus}/lifecycle-orchestrator.d.ts +18 -21
- package/dist/types/{notifications → sdk/bus}/managed-daemon.d.ts +1 -1
- package/dist/types/sdk/bus/native-runtime-compatibility.d.ts +13 -0
- package/dist/types/sdk/bus/notification-orchestration.d.ts +170 -0
- package/dist/types/{notifications → sdk/bus}/notification-service.d.ts +7 -1
- package/dist/types/sdk/bus/session-control.d.ts +83 -0
- package/dist/types/sdk/bus/slack-conversation.d.ts +56 -0
- package/dist/types/sdk/bus/slack-daemon.d.ts +60 -0
- package/dist/types/sdk/bus/slack-live-provider.d.ts +59 -0
- package/dist/types/sdk/bus/slack-provider.d.ts +55 -0
- package/dist/types/{notifications → sdk/bus}/telegram-cli.d.ts +4 -4
- package/dist/types/{notifications → sdk/bus}/telegram-daemon-cli.d.ts +14 -5
- package/dist/types/sdk/bus/telegram-daemon-contract.d.ts +12 -0
- package/dist/types/{notifications → sdk/bus}/telegram-daemon-control.d.ts +2 -2
- package/dist/types/{notifications → sdk/bus}/telegram-daemon.d.ts +78 -17
- package/dist/types/{notifications → sdk/bus}/telegram-reference.d.ts +2 -2
- package/dist/types/sdk/bus/telegram-setup.d.ts +128 -0
- package/dist/types/{notifications → sdk/bus}/topic-registry.d.ts +11 -0
- package/dist/types/sdk/cli/index.d.ts +1 -0
- package/dist/types/sdk/cli/session-cli.d.ts +19 -0
- package/dist/types/sdk/client/client.d.ts +1 -0
- package/dist/types/sdk/client/discovery.d.ts +27 -0
- package/dist/types/sdk/client/index.d.ts +2 -0
- package/dist/types/sdk/host/control/dispatch.d.ts +34 -0
- package/dist/types/sdk/host/control/index.d.ts +2 -0
- package/dist/types/sdk/host/control/operations.d.ts +65 -0
- package/dist/types/sdk/host/events.d.ts +35 -0
- package/dist/types/sdk/host/host.d.ts +35 -0
- package/dist/types/sdk/host/index.d.ts +4 -0
- package/dist/types/sdk/host/query/cursor.d.ts +62 -0
- package/dist/types/sdk/host/query/handlers.d.ts +70 -0
- package/dist/types/sdk/host/query/index.d.ts +3 -0
- package/dist/types/sdk/host/query/revision-store.d.ts +60 -0
- package/dist/types/sdk/host/reverse-leases.d.ts +45 -0
- package/dist/types/sdk/host/types.d.ts +32 -0
- package/dist/types/sdk/index.d.ts +6 -0
- package/dist/types/sdk/lifecycle-session.d.ts +14 -0
- package/dist/types/sdk/mcp/index.d.ts +1 -0
- package/dist/types/sdk/mcp/server.d.ts +37 -0
- package/dist/types/sdk/models.d.ts +44 -0
- package/dist/types/sdk/protocol/adapter-validation.d.ts +14 -0
- package/dist/types/sdk/protocol/operation-registry.d.ts +24 -0
- package/dist/types/{sdk.d.ts → sdk/session.d.ts} +44 -38
- package/dist/types/sdk/startup-capability.d.ts +50 -0
- package/dist/types/session/agent-session.d.ts +114 -21
- package/dist/types/session/default-model-selection.d.ts +25 -0
- package/dist/types/session/fallback-chain-controller.d.ts +52 -0
- package/dist/types/session/session-manager.d.ts +58 -1
- package/dist/types/setup/credential-auto-import.d.ts +36 -6
- package/dist/types/tools/ask-answer-registry.d.ts +1 -1
- package/dist/types/tools/browser/benchmark/detector-report.d.ts +63 -0
- package/dist/types/tools/browser/benchmark/run-suite.d.ts +18 -0
- package/dist/types/tools/browser/launch.d.ts +22 -0
- package/dist/types/tools/browser/profile-discovery.d.ts +31 -0
- package/dist/types/tools/browser/profile-posture.d.ts +37 -0
- package/dist/types/tools/browser/profile-reuse.d.ts +39 -0
- package/dist/types/tools/browser/profile-warmup.d.ts +39 -0
- package/dist/types/tools/browser/registry.d.ts +19 -0
- package/dist/types/tools/browser/tab-protocol.d.ts +4 -0
- package/dist/types/tools/index.d.ts +8 -8
- package/dist/types/tools/subagent-render.d.ts +1 -0
- package/dist/types/tools/subagent.d.ts +6 -1
- package/package.json +34 -13
- package/scripts/build-sdk-package-smoke.ts +99 -0
- package/scripts/capture-notifications-settings-showcase.ts +435 -0
- package/scripts/compile-args.ts +4 -2
- package/scripts/g005-daemon-smoke.ts +4 -5
- package/scripts/g011-daemon-path-smoke.ts +5 -5
- package/scripts/generate-sdk-adapter-parity-manifest.ts +163 -0
- package/scripts/generate-sdk-operation-inventory.ts +867 -0
- package/scripts/generate-telegram-baseline-manifest.ts +128 -0
- package/scripts/manifest-schema.ts +124 -0
- package/scripts/run-test-manifest.ts +153 -0
- package/scripts/run-threat-model-check.ts +157 -0
- package/scripts/verify-gjc-sdk-canonicalization.ts +3467 -0
- package/scripts/verify-gjc-sdk-rename.ts +90 -0
- package/src/append-only-mode.ts +1 -1
- package/src/async/job-manager.ts +406 -63
- package/src/cli/args.ts +43 -12
- package/src/cli/auth-gateway-cli.ts +2 -2
- package/src/cli/config-cli.ts +2 -1
- package/src/cli/daemon-cli.ts +63 -14
- package/src/cli/list-models.ts +1 -1
- package/src/cli/notify-cli.ts +288 -286
- package/src/cli.ts +21 -2
- package/src/commands/daemon.ts +50 -6
- package/src/commands/harness.ts +93 -36
- package/src/commands/launch.ts +5 -2
- package/src/commands/mcp-serve.ts +19 -12
- package/src/commands/notify.ts +36 -3
- package/src/commands/sdk.ts +426 -0
- package/src/commit/agentic/agent.ts +1 -0
- package/src/config/atomic-yaml-patch.ts +423 -0
- package/src/config/model-profile-activation.ts +240 -89
- package/src/config/model-profiles.ts +18 -15
- package/src/config/model-registry.ts +51 -26
- package/src/config/model-resolver.ts +138 -51
- package/src/config/model-selector-value.ts +50 -0
- package/src/config/models-config-schema.ts +14 -21
- package/src/config/settings-schema.ts +128 -10
- package/src/config/settings.ts +1120 -158
- package/src/coordinator-mcp/model-preset.ts +74 -20
- package/src/coordinator-mcp/server.ts +1597 -3052
- package/src/daemon/builtin.ts +8 -5
- package/src/daemon/control-types.ts +1 -1
- package/src/defaults/gjc/skills/team/SKILL.md +4 -4
- package/src/discovery/mcp-json.ts +327 -20
- package/src/extensibility/custom-tools/types.ts +1 -1
- package/src/extensibility/extensions/compact-handler.ts +3 -3
- package/src/extensibility/extensions/get-commands-handler.ts +2 -2
- package/src/extensibility/extensions/loader.ts +69 -5
- package/src/extensibility/extensions/runner.ts +112 -4
- package/src/extensibility/extensions/types.ts +176 -17
- package/src/extensibility/hooks/types.ts +1 -1
- package/src/gjc-runtime/launch-tmux.ts +170 -86
- package/src/gjc-runtime/psmux-detect.ts +82 -4
- package/src/gjc-runtime/session-state-sidecar.ts +41 -31
- package/src/gjc-runtime/team-runtime.ts +54 -35
- package/src/gjc-runtime/tmux-owner-isolation-cli.ts +53 -17
- package/src/gjc-runtime/tmux-owner-isolation.ts +1 -1
- package/src/gjc-runtime/tmux-sessions.ts +19 -13
- package/src/gjc-runtime/ultragoal-guard.ts +108 -14
- package/src/gjc-runtime/ultragoal-receipt-freshness.ts +102 -1
- package/src/gjc-runtime/ultragoal-runtime.ts +227 -11
- package/src/gjc-runtime/windows-powershell-command.ts +58 -0
- package/src/harness-control-plane/operate.ts +9 -9
- package/src/harness-control-plane/owner.ts +283 -39
- package/src/harness-control-plane/receipts.ts +0 -1
- package/src/harness-control-plane/sdk-transport.ts +395 -0
- package/src/harness-control-plane/session-transport.ts +94 -0
- package/src/harness-control-plane/types.ts +1 -1
- package/src/internal-urls/docs-index.generated.ts +34 -35
- package/src/lsp/client.ts +42 -6
- package/src/lsp/index.ts +2 -2
- package/src/main.ts +299 -204
- package/src/modes/DESIGN.md +258 -0
- package/src/modes/acp/acp-agent.ts +1228 -2612
- package/src/modes/acp/acp-client-bridge.ts +2 -20
- package/src/modes/acp/acp-event-mapper.ts +18 -2
- package/src/modes/acp/acp-mode.ts +8 -36
- package/src/modes/acp/permission-mode.ts +25 -0
- package/src/modes/acp/startup-options.ts +6 -0
- package/src/modes/components/agent-dashboard.ts +37 -17
- package/src/modes/components/model-selector.ts +93 -35
- package/src/modes/components/notifications-settings-editor.ts +1379 -0
- package/src/modes/components/settings-selector.ts +60 -11
- package/src/modes/components/welcome.ts +4 -4
- package/src/modes/controllers/command-controller.ts +10 -17
- package/src/modes/controllers/event-controller.ts +11 -16
- package/src/modes/controllers/extension-ui-controller.ts +396 -28
- package/src/modes/controllers/selector-controller.ts +674 -36
- package/src/modes/index.ts +0 -22
- package/src/modes/interactive-mode.ts +87 -36
- package/src/modes/runtime-init.ts +298 -6
- package/src/modes/shared/agent-wire/approval-gate.ts +9 -11
- package/src/modes/shared/agent-wire/deep-interview-gate.ts +10 -11
- package/src/modes/shared/agent-wire/event-contract.ts +7 -8
- package/src/modes/shared/agent-wire/event-envelope.ts +9 -17
- package/src/modes/shared/agent-wire/event-observation.ts +16 -7
- package/src/modes/shared/agent-wire/workflow-gate-broker.ts +1258 -87
- package/src/modes/shared/agent-wire/workflow-gate-schema.ts +15 -15
- package/src/modes/shared/agent-wire/workflow-gate-types.ts +113 -0
- package/src/modes/types.ts +7 -2
- package/src/runtime-mcp/client.ts +94 -19
- package/src/runtime-mcp/config.ts +27 -15
- package/src/runtime-mcp/manager.ts +343 -105
- package/src/runtime-mcp/oauth-flow.ts +42 -12
- package/src/runtime-mcp/transports/http.ts +49 -19
- package/src/runtime-mcp/transports/stdio.ts +47 -28
- package/src/runtime-mcp/types.ts +10 -0
- package/src/sdk/acp/adapter.ts +418 -0
- package/src/sdk/acp/index.ts +2 -0
- package/src/sdk/broker/broker.ts +642 -0
- package/src/sdk/broker/discovery.ts +113 -0
- package/src/sdk/broker/ensure.ts +307 -0
- package/src/sdk/broker/identity.ts +42 -0
- package/src/sdk/broker/index.ts +8 -0
- package/src/sdk/broker/internal-source-marker-2178.txt +1 -0
- package/src/sdk/broker/internal-source.bunfig.toml +1 -0
- package/src/sdk/broker/lifecycle-ledger.ts +286 -0
- package/src/sdk/broker/lifecycle.ts +2157 -0
- package/src/sdk/broker/process-incarnation.ts +159 -0
- package/src/sdk/broker/runtime.ts +164 -0
- package/src/sdk/broker/session-index.ts +318 -0
- package/src/sdk/broker/state-version.ts +23 -0
- package/src/sdk/broker/transport.ts +125 -0
- package/src/sdk/bus/chat-command-policy.ts +107 -0
- package/src/sdk/bus/chat-daemon-cli.ts +214 -0
- package/src/sdk/bus/chat-daemon-control.ts +713 -0
- package/src/sdk/bus/chat-daemon-runtime.ts +526 -0
- package/src/sdk/bus/chat-effect-journal.ts +355 -0
- package/src/{notifications → sdk/bus}/config-commands.ts +39 -10
- package/src/sdk/bus/config.ts +433 -0
- package/src/sdk/bus/conversation-store.ts +391 -0
- package/src/sdk/bus/discord-conversation.ts +85 -0
- package/src/sdk/bus/discord-daemon.ts +2292 -0
- package/src/sdk/bus/discord-live-provider.ts +521 -0
- package/src/sdk/bus/discord-provider.ts +56 -0
- package/src/{notifications → sdk/bus}/html-format.ts +2 -2
- package/src/sdk/bus/index.ts +3979 -0
- package/src/{notifications → sdk/bus}/lifecycle-commands.ts +2 -0
- package/src/{notifications → sdk/bus}/lifecycle-control-runtime.ts +225 -196
- package/src/{notifications → sdk/bus}/lifecycle-orchestrator.ts +161 -74
- package/src/{notifications → sdk/bus}/managed-daemon.ts +2 -2
- package/src/sdk/bus/native-runtime-compatibility.ts +42 -0
- package/src/sdk/bus/natives-augment.d.ts +38 -0
- package/src/sdk/bus/notification-orchestration.ts +535 -0
- package/src/{notifications → sdk/bus}/notification-service.ts +106 -12
- package/src/sdk/bus/session-control.ts +333 -0
- package/src/sdk/bus/slack-conversation.ts +74 -0
- package/src/sdk/bus/slack-daemon.ts +2144 -0
- package/src/sdk/bus/slack-live-provider.ts +380 -0
- package/src/sdk/bus/slack-provider.ts +76 -0
- package/src/{notifications → sdk/bus}/telegram-cli.ts +8 -8
- package/src/sdk/bus/telegram-daemon-cli.ts +330 -0
- package/src/sdk/bus/telegram-daemon-contract.ts +14 -0
- package/src/{notifications → sdk/bus}/telegram-daemon-control.ts +4 -4
- package/src/{notifications → sdk/bus}/telegram-daemon.ts +603 -63
- package/src/{notifications → sdk/bus}/telegram-reference.ts +2 -2
- package/src/sdk/bus/telegram-setup.ts +663 -0
- package/src/{notifications → sdk/bus}/topic-registry.ts +32 -0
- package/src/sdk/cli/index.ts +1 -0
- package/src/sdk/cli/session-cli.ts +275 -0
- package/src/sdk/client/client.ts +1 -0
- package/src/sdk/client/discovery.ts +108 -0
- package/src/sdk/client/index.ts +2 -0
- package/src/sdk/host/control/dispatch.ts +367 -0
- package/src/sdk/host/control/index.ts +10 -0
- package/src/sdk/host/control/operations.ts +63 -0
- package/src/sdk/host/events.ts +91 -0
- package/src/sdk/host/host.ts +296 -0
- package/src/sdk/host/index.ts +4 -0
- package/src/sdk/host/query/cursor.ts +189 -0
- package/src/sdk/host/query/handlers.ts +533 -0
- package/src/sdk/host/query/index.ts +3 -0
- package/src/sdk/host/query/revision-store.ts +1126 -0
- package/src/sdk/host/reverse-leases.ts +325 -0
- package/src/sdk/host/types.ts +29 -0
- package/src/sdk/index.ts +13 -0
- package/src/sdk/lifecycle-session.ts +39 -0
- package/src/sdk/mcp/index.ts +1 -0
- package/src/sdk/mcp/server.ts +332 -0
- package/src/sdk/models.ts +168 -0
- package/src/sdk/protocol/adapter-validation.ts +48 -0
- package/src/sdk/protocol/operation-inventory.generated.json +5654 -0
- package/src/sdk/protocol/operation-registry.ts +312 -0
- package/src/{sdk.ts → sdk/session.ts} +339 -212
- package/src/sdk/startup-capability.ts +189 -0
- package/src/session/agent-session.ts +2650 -944
- package/src/session/default-model-selection.ts +93 -0
- package/src/session/fallback-chain-controller.ts +136 -0
- package/src/session/session-manager.ts +438 -11
- package/src/session/session-storage.ts +8 -1
- package/src/setup/credential-auto-import.ts +290 -35
- package/src/setup/hermes/templates/operator-instructions.v1.md +3 -5
- package/src/slash-commands/builtin-registry.ts +2 -1
- package/src/task/executor.ts +62 -13
- package/src/task/index.ts +26 -16
- package/src/tools/ask-answer-registry.ts +1 -1
- package/src/tools/ask.ts +13 -8
- package/src/tools/browser/STEALTH-THIRD-PARTY-NOTICES.md +26 -0
- package/src/tools/browser/benchmark/detector-report.ts +157 -0
- package/src/tools/browser/benchmark/run-suite.ts +39 -0
- package/src/tools/browser/launch.ts +124 -19
- package/src/tools/browser/profile-discovery.ts +63 -0
- package/src/tools/browser/profile-posture.ts +59 -0
- package/src/tools/browser/profile-reuse.ts +102 -0
- package/src/tools/browser/profile-warmup.ts +109 -0
- package/src/tools/browser/registry.ts +87 -11
- package/src/tools/browser/tab-protocol.ts +1 -0
- package/src/tools/browser/tab-supervisor.ts +1 -0
- package/src/tools/browser/tab-worker.ts +1 -1
- package/src/tools/browser.ts +6 -0
- package/src/tools/index.ts +8 -8
- package/src/tools/puppeteer/14_stealth_permissions.txt +57 -0
- package/src/tools/puppeteer/15_stealth_webrtc.txt +60 -0
- package/src/tools/subagent-render.ts +19 -8
- package/src/tools/subagent.ts +84 -32
- package/src/tools/telegram-send.ts +2 -2
- package/vendor/insane-search/MANIFEST.json +2 -1
- package/vendor/insane-search/engine/bias_check.py +4 -1
- package/vendor/insane-search/engine/phase0.py +26 -1
- package/dist/types/harness-control-plane/rpc-adapter.d.ts +0 -69
- package/dist/types/modes/bridge/auth.d.ts +0 -12
- package/dist/types/modes/bridge/bridge-client-bridge.d.ts +0 -9
- package/dist/types/modes/bridge/bridge-mode.d.ts +0 -47
- package/dist/types/modes/bridge/bridge-ui-context.d.ts +0 -88
- package/dist/types/modes/bridge/event-stream.d.ts +0 -8
- package/dist/types/modes/rpc/host-tools.d.ts +0 -1
- package/dist/types/modes/rpc/host-uris.d.ts +0 -1
- package/dist/types/modes/rpc/rpc-client.d.ts +0 -299
- package/dist/types/modes/rpc/rpc-mode.d.ts +0 -86
- package/dist/types/modes/rpc/rpc-socket-security.d.ts +0 -10
- package/dist/types/modes/rpc/rpc-types.d.ts +0 -810
- package/dist/types/modes/shared/agent-wire/command-contract.d.ts +0 -18
- package/dist/types/modes/shared/agent-wire/command-dispatch.d.ts +0 -37
- package/dist/types/modes/shared/agent-wire/command-validation.d.ts +0 -2
- package/dist/types/modes/shared/agent-wire/handshake.d.ts +0 -56
- package/dist/types/modes/shared/agent-wire/host-tool-bridge.d.ts +0 -16
- package/dist/types/modes/shared/agent-wire/host-uri-bridge.d.ts +0 -17
- package/dist/types/modes/shared/agent-wire/protocol.d.ts +0 -25
- package/dist/types/modes/shared/agent-wire/responses.d.ts +0 -4
- package/dist/types/modes/shared/agent-wire/scopes.d.ts +0 -18
- package/dist/types/modes/shared/agent-wire/session-registry.d.ts +0 -25
- package/dist/types/modes/shared/agent-wire/ui-request-broker.d.ts +0 -42
- package/dist/types/modes/shared/agent-wire/ui-result.d.ts +0 -27
- package/dist/types/modes/shared/agent-wire/unattended-action-policy.d.ts +0 -29
- package/dist/types/modes/shared/agent-wire/unattended-audit.d.ts +0 -68
- package/dist/types/modes/shared/agent-wire/unattended-run-controller.d.ts +0 -166
- package/dist/types/modes/shared/agent-wire/unattended-session.d.ts +0 -127
- package/dist/types/notifications/config.d.ts +0 -132
- package/src/harness-control-plane/rpc-adapter.ts +0 -290
- package/src/modes/bridge/auth.ts +0 -41
- package/src/modes/bridge/bridge-client-bridge.ts +0 -47
- package/src/modes/bridge/bridge-mode.ts +0 -675
- package/src/modes/bridge/bridge-ui-context.ts +0 -200
- package/src/modes/bridge/event-stream.ts +0 -70
- package/src/modes/rpc/host-tools.ts +0 -1
- package/src/modes/rpc/host-uris.ts +0 -1
- package/src/modes/rpc/rpc-client.ts +0 -1166
- package/src/modes/rpc/rpc-mode.ts +0 -1029
- package/src/modes/rpc/rpc-socket-security.ts +0 -115
- package/src/modes/rpc/rpc-types.ts +0 -637
- package/src/modes/shared/agent-wire/command-contract.ts +0 -18
- package/src/modes/shared/agent-wire/command-dispatch.ts +0 -498
- package/src/modes/shared/agent-wire/command-validation.ts +0 -181
- package/src/modes/shared/agent-wire/handshake.ts +0 -157
- package/src/modes/shared/agent-wire/host-tool-bridge.ts +0 -197
- package/src/modes/shared/agent-wire/host-uri-bridge.ts +0 -236
- package/src/modes/shared/agent-wire/protocol.ts +0 -46
- package/src/modes/shared/agent-wire/responses.ts +0 -17
- package/src/modes/shared/agent-wire/scopes.ts +0 -94
- package/src/modes/shared/agent-wire/session-registry.ts +0 -109
- package/src/modes/shared/agent-wire/ui-request-broker.ts +0 -150
- package/src/modes/shared/agent-wire/ui-result.ts +0 -48
- package/src/modes/shared/agent-wire/unattended-action-policy.ts +0 -365
- package/src/modes/shared/agent-wire/unattended-audit.ts +0 -176
- package/src/modes/shared/agent-wire/unattended-run-controller.ts +0 -426
- package/src/modes/shared/agent-wire/unattended-session.ts +0 -528
- package/src/notifications/config.ts +0 -219
- package/src/notifications/index.ts +0 -1835
- package/src/notifications/telegram-daemon-cli.ts +0 -243
- package/src/tools/puppeteer/09_stealth_locale.txt +0 -46
- /package/dist/types/{notifications → sdk/bus}/attachment-registry.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/chat-adapters.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/daemon-paths.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/engine.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/helpers.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/lifecycle-commands.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/operator-runtime.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/rate-limit-pool.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/recent-activity.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/reply-sent-store.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/rich-draft.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/rich-render.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/threaded-inbound.d.ts +0 -0
- /package/dist/types/{notifications → sdk/bus}/threaded-render.d.ts +0 -0
- /package/src/{notifications → sdk/bus}/attachment-registry.ts +0 -0
- /package/src/{notifications → sdk/bus}/chat-adapters.ts +0 -0
- /package/src/{notifications → sdk/bus}/daemon-paths.ts +0 -0
- /package/src/{notifications → sdk/bus}/engine.ts +0 -0
- /package/src/{notifications → sdk/bus}/helpers.ts +0 -0
- /package/src/{notifications → sdk/bus}/operator-runtime.ts +0 -0
- /package/src/{notifications → sdk/bus}/rate-limit-pool.ts +0 -0
- /package/src/{notifications → sdk/bus}/recent-activity.ts +0 -0
- /package/src/{notifications → sdk/bus}/reply-sent-store.ts +0 -0
- /package/src/{notifications → sdk/bus}/rich-draft.ts +0 -0
- /package/src/{notifications → sdk/bus}/rich-render.ts +0 -0
- /package/src/{notifications → sdk/bus}/threaded-inbound.ts +0 -0
- /package/src/{notifications → sdk/bus}/threaded-render.ts +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { type ThinkingLevel as ThinkingLevelValue } from "@gajae-code/agent-core";
|
|
2
2
|
import type { Effort } from "@gajae-code/ai";
|
|
3
|
-
import {
|
|
3
|
+
import { type Component, Container } from "@gajae-code/tui";
|
|
4
4
|
import { type SettingPath } from "../../config/settings";
|
|
5
5
|
import type { StatusLinePreset, StatusLineSegmentId, StatusLineSeparatorStyle } from "../../config/settings-schema";
|
|
6
|
-
import {
|
|
6
|
+
import { type NotificationsEditorOperations } from "./notifications-settings-editor";
|
|
7
7
|
import type { StatusLineSegmentOptions } from "./status-line";
|
|
8
8
|
/**
|
|
9
9
|
* Dynamic context for settings that need runtime data.
|
|
@@ -67,7 +67,9 @@ export declare class SettingsSelectorComponent extends Container {
|
|
|
67
67
|
#private;
|
|
68
68
|
private readonly context;
|
|
69
69
|
private readonly callbacks;
|
|
70
|
-
|
|
71
|
-
|
|
70
|
+
private readonly notificationsOperations?;
|
|
71
|
+
constructor(context: SettingsRuntimeContext, callbacks: SettingsCallbacks, notificationsOperations?: NotificationsEditorOperations | undefined);
|
|
72
|
+
getFocusComponent(): Component;
|
|
73
|
+
dispose(): void;
|
|
72
74
|
handleInput(data: string): void;
|
|
73
75
|
}
|
|
@@ -5,7 +5,7 @@ export interface RecentSession {
|
|
|
5
5
|
}
|
|
6
6
|
export interface LspServerInfo {
|
|
7
7
|
name: string;
|
|
8
|
-
status: "ready" | "error" | "connecting";
|
|
8
|
+
status: "idle" | "ready" | "error" | "connecting";
|
|
9
9
|
fileTypes: string[];
|
|
10
10
|
}
|
|
11
11
|
export type WelcomeLogoMode = "unicode" | "square" | "ascii";
|
|
@@ -22,9 +22,9 @@ export declare class CommandController {
|
|
|
22
22
|
handleToolsCommand(): void;
|
|
23
23
|
handleContextCommand(): void;
|
|
24
24
|
handleMemoryCommand(text: string): Promise<void>;
|
|
25
|
-
handleClearCommand(): Promise<
|
|
25
|
+
handleClearCommand(): Promise<boolean>;
|
|
26
26
|
handleContextClearCommand(): Promise<void>;
|
|
27
|
-
handleDropCommand(): Promise<
|
|
27
|
+
handleDropCommand(): Promise<boolean>;
|
|
28
28
|
handleForkCommand(): Promise<void>;
|
|
29
29
|
handleMoveCommand(targetPath: string): Promise<void>;
|
|
30
30
|
handleRenameCommand(title: string): Promise<void>;
|
|
@@ -2,6 +2,13 @@ import type { Component } from "@gajae-code/tui";
|
|
|
2
2
|
import type { ModelProfileConfig } from "../../config/models-config-schema";
|
|
3
3
|
import { type Settings } from "../../config/settings";
|
|
4
4
|
import type { InteractiveModeContext, OAuthSelectorOptions } from "../../modes/types";
|
|
5
|
+
import { getNotificationConfig, maskToken } from "../../sdk/bus/config";
|
|
6
|
+
import { proposedTelegramIdentity, reconcileCommittedTelegramConfiguration, removeTelegramConfiguration, saveTelegramInactive } from "../../sdk/bus/notification-orchestration";
|
|
7
|
+
import { buildNotificationStatusReport, checkNotificationHealth, recoverNotifications, sanitizeDiagnostic, sendNotificationTest } from "../../sdk/bus/notification-service";
|
|
8
|
+
import { ensureTelegramDaemonRunningDetailed, unregisterNotificationRoot } from "../../sdk/bus/telegram-daemon";
|
|
9
|
+
import { runTelegramSetup } from "../../sdk/bus/telegram-setup";
|
|
10
|
+
import { type CredentialAutoImportStateStore } from "../../setup/credential-auto-import";
|
|
11
|
+
import type { NotificationsEditorOperations } from "../components/notifications-settings-editor";
|
|
5
12
|
import type { StatusLineSettings } from "../components/status-line";
|
|
6
13
|
import type { JobsObserver } from "../jobs-observer";
|
|
7
14
|
import type { SessionObserverRegistry } from "../session-observer-registry";
|
|
@@ -11,10 +18,37 @@ import type { SessionObserverRegistry } from "../session-observer-registry";
|
|
|
11
18
|
* previewed row count (and every other field) can never drift out of sync.
|
|
12
19
|
*/
|
|
13
20
|
export declare function buildStatusLineSettings(settingsInstance: Settings): StatusLineSettings;
|
|
21
|
+
export interface NotificationsEditorAdapterContext {
|
|
22
|
+
settings: Settings;
|
|
23
|
+
session: Pick<InteractiveModeContext["session"], "notificationSessionController">;
|
|
24
|
+
sessionManager: Pick<InteractiveModeContext["sessionManager"], "getCwd" | "getSessionId">;
|
|
25
|
+
notifyConfigChanged?: () => Promise<void> | void;
|
|
26
|
+
}
|
|
27
|
+
export interface NotificationsEditorOperationDependencies {
|
|
28
|
+
getNotificationConfig: typeof getNotificationConfig;
|
|
29
|
+
maskToken: typeof maskToken;
|
|
30
|
+
buildNotificationStatusReport: typeof buildNotificationStatusReport;
|
|
31
|
+
checkNotificationHealth: typeof checkNotificationHealth;
|
|
32
|
+
sendNotificationTest: typeof sendNotificationTest;
|
|
33
|
+
recoverNotifications: typeof recoverNotifications;
|
|
34
|
+
sanitizeDiagnostic: typeof sanitizeDiagnostic;
|
|
35
|
+
ensureTelegramDaemonRunningDetailed: typeof ensureTelegramDaemonRunningDetailed;
|
|
36
|
+
runTelegramSetup: typeof runTelegramSetup;
|
|
37
|
+
proposedTelegramIdentity: typeof proposedTelegramIdentity;
|
|
38
|
+
reconcileCommittedTelegramConfiguration: typeof reconcileCommittedTelegramConfiguration;
|
|
39
|
+
saveTelegramInactive: typeof saveTelegramInactive;
|
|
40
|
+
removeTelegramConfiguration: typeof removeTelegramConfiguration;
|
|
41
|
+
unregisterNotificationRoot: typeof unregisterNotificationRoot;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Concrete service adapter for the direct Notifications settings tab. Secrets remain in this closure's
|
|
45
|
+
* WeakMap and are never exposed through the editor's safe draft contract.
|
|
46
|
+
*/
|
|
47
|
+
export declare function createNotificationsEditorOperations(ctx: NotificationsEditorAdapterContext, overrides?: Partial<NotificationsEditorOperationDependencies>): NotificationsEditorOperations;
|
|
14
48
|
export declare class SelectorController {
|
|
15
49
|
#private;
|
|
16
50
|
private ctx;
|
|
17
|
-
constructor(ctx: InteractiveModeContext);
|
|
51
|
+
constructor(ctx: InteractiveModeContext, credentialAutoImportStateStore?: CredentialAutoImportStateStore);
|
|
18
52
|
/**
|
|
19
53
|
* Shows a selector component in place of the editor.
|
|
20
54
|
* @param create Factory that receives a `done` callback and returns the component and focus target
|
|
@@ -2,9 +2,5 @@
|
|
|
2
2
|
* Run modes for the coding agent.
|
|
3
3
|
*/
|
|
4
4
|
export { runAcpMode } from "./acp";
|
|
5
|
-
export { runBridgeMode } from "./bridge/bridge-mode";
|
|
6
5
|
export { InteractiveMode, type InteractiveModeOptions } from "./interactive-mode";
|
|
7
6
|
export { type PrintModeOptions, runPrintMode } from "./print-mode";
|
|
8
|
-
export { defineRpcClientTool, type ModelInfo, RpcClient, type RpcClientCustomTool, type RpcClientOptions, type RpcClientToolContext, type RpcClientToolResult, type RpcEventListener, } from "./rpc/rpc-client";
|
|
9
|
-
export { runRpcMode } from "./rpc/rpc-mode";
|
|
10
|
-
export type { RpcCommand, RpcHostToolCallRequest, RpcHostToolCancelRequest, RpcHostToolDefinition, RpcHostToolResult, RpcHostToolUpdate, RpcResponse, RpcSessionState, } from "./rpc/rpc-types";
|
|
@@ -9,6 +9,7 @@ import type { ExtensionUIContext, ExtensionUIDialogOptions, ExtensionWidgetConte
|
|
|
9
9
|
import type { CompactOptions } from "../extensibility/extensions/types";
|
|
10
10
|
import { type Skill } from "../extensibility/skills";
|
|
11
11
|
import { type PlanApprovalDetails } from "../plan-mode/approved-plan";
|
|
12
|
+
import type { NotificationSessionReconcileResult, NotificationSessionStatus } from "../sdk/bus/session-control";
|
|
12
13
|
import type { AgentSession, AgentSessionEvent } from "../session/agent-session";
|
|
13
14
|
import { HistoryStorage } from "../session/history-storage";
|
|
14
15
|
import type { SessionContext, SessionManager } from "../session/session-manager";
|
|
@@ -119,6 +120,8 @@ export declare class InteractiveMode implements InteractiveModeContext {
|
|
|
119
120
|
readonly lspServers: LspStartupServerInfo[] | undefined;
|
|
120
121
|
mcpManager?: import("../runtime-mcp").MCPManager;
|
|
121
122
|
constructor(session: AgentSession, version: string, changelogMarkdown?: string | undefined, setToolUIContext?: (uiContext: ExtensionUIContext, hasUI: boolean) => void, lspServers?: LspStartupServerInfo[] | undefined, mcpManager?: import("../runtime-mcp").MCPManager, eventBus?: EventBus);
|
|
123
|
+
getCurrentSessionNotificationStatus(): NotificationSessionStatus | undefined;
|
|
124
|
+
setCurrentSessionNotificationsEnabled(enabled: boolean): Promise<NotificationSessionReconcileResult | undefined>;
|
|
122
125
|
init(): Promise<void>;
|
|
123
126
|
/** Reload slash commands and autocomplete for the provided working directory. */
|
|
124
127
|
refreshSlashCommandState(cwd?: string): Promise<void>;
|
|
@@ -208,9 +211,9 @@ export declare class InteractiveMode implements InteractiveModeContext {
|
|
|
208
211
|
handleHelpCommand(): void;
|
|
209
212
|
handleToolsCommand(): void;
|
|
210
213
|
handleContextCommand(): void;
|
|
211
|
-
handleClearCommand(): Promise<
|
|
214
|
+
handleClearCommand(): Promise<boolean>;
|
|
212
215
|
handleContextClearCommand(): Promise<void>;
|
|
213
|
-
handleDropCommand(): Promise<
|
|
216
|
+
handleDropCommand(): Promise<boolean>;
|
|
214
217
|
handleForkCommand(): Promise<void>;
|
|
215
218
|
handleMoveCommand(targetPath: string): Promise<void>;
|
|
216
219
|
handleRenameCommand(title: string): Promise<void>;
|
|
@@ -7,9 +7,9 @@ export interface InitializeExtensionsOptions {
|
|
|
7
7
|
reportSendError: (action: ExtensionSendAction, error: Error) => void;
|
|
8
8
|
/** Reports a runtime error surfaced through {@link ExtensionRunner.onError}. */
|
|
9
9
|
reportRuntimeError: (error: ExtensionError) => void;
|
|
10
|
-
/** Optional shutdown hook
|
|
10
|
+
/** Optional shutdown hook for caller-specific lifecycle signaling. */
|
|
11
11
|
onShutdown?: () => void;
|
|
12
|
-
/** Optional UI context
|
|
12
|
+
/** Optional interactive UI context; omitted for headless callers. */
|
|
13
13
|
uiContext?: ExtensionUIContext;
|
|
14
14
|
}
|
|
15
15
|
/**
|
|
@@ -7,16 +7,13 @@
|
|
|
7
7
|
* - ultragoal execution sign-off -> `workflow_gate` { kind: "execution" } whose
|
|
8
8
|
* answer is approve / decline (+ optional reason).
|
|
9
9
|
*
|
|
10
|
-
* Gates remain mandatory; the
|
|
11
|
-
*
|
|
12
|
-
* silently treated as approval.
|
|
10
|
+
* Gates remain mandatory; the remote SDK client answers at the gate boundary.
|
|
11
|
+
* Declining / requesting changes is honored and is NEVER silently treated as approval.
|
|
13
12
|
*
|
|
14
|
-
* This is the pure mapping primitive
|
|
15
|
-
* an unattended controller + gate broker are attached is wired with the transport
|
|
16
|
-
* in #321 and exercised end-to-end by #323.
|
|
13
|
+
* This is the pure mapping primitive used by SDK-native workflow gate emitters.
|
|
17
14
|
*/
|
|
18
|
-
import type { RpcWorkflowGateContext } from "../../rpc/rpc-types";
|
|
19
15
|
import type { OpenGateInput } from "./workflow-gate-broker";
|
|
16
|
+
import type { WorkflowGateContext } from "./workflow-gate-types";
|
|
20
17
|
export type ApprovalDecision = "approve" | "request-changes" | "reject";
|
|
21
18
|
export type ExecutionDecision = "approve" | "decline";
|
|
22
19
|
export interface ApprovalGateAnswer {
|
|
@@ -42,9 +39,9 @@ export declare class ApprovalGateError extends Error {
|
|
|
42
39
|
constructor(code: "invalid_answer_shape" | "unknown_decision" | "missing_comments", message: string);
|
|
43
40
|
}
|
|
44
41
|
/** Build the ralplan `pending approval` -> `workflow_gate { kind: "approval" }` open-input. */
|
|
45
|
-
export declare function approvalGate(context?:
|
|
42
|
+
export declare function approvalGate(context?: WorkflowGateContext): OpenGateInput;
|
|
46
43
|
/** Build the ultragoal execution sign-off -> `workflow_gate { kind: "execution" }` open-input. */
|
|
47
|
-
export declare function executionGate(context?:
|
|
44
|
+
export declare function executionGate(context?: WorkflowGateContext): OpenGateInput;
|
|
48
45
|
/**
|
|
49
46
|
* Decode a ralplan approval answer. `request-changes` requires comments and is
|
|
50
47
|
* NEVER treated as approval; only an explicit `approve` advances.
|
|
@@ -7,12 +7,10 @@
|
|
|
7
7
|
* back into the exact QuestionResult shape the human path produces, so ambiguity
|
|
8
8
|
* scoring/state updates proceed identically whether a human or an agent answers.
|
|
9
9
|
*
|
|
10
|
-
* This is the pure mapping primitive
|
|
11
|
-
* the interactive select/editor UI) when an unattended controller + gate broker
|
|
12
|
-
* are attached is wired with the transport in #321 and exercised by #323.
|
|
10
|
+
* This is the pure mapping primitive used by SDK-native workflow gate emitters.
|
|
13
11
|
*/
|
|
14
|
-
import type { RpcWorkflowGateKind, RpcWorkflowStage } from "../../rpc/rpc-types";
|
|
15
12
|
import type { OpenGateInput } from "./workflow-gate-broker";
|
|
13
|
+
import type { WorkflowGateKind, WorkflowStage } from "./workflow-gate-types";
|
|
16
14
|
/** "Other (type your own)" sentinel, mirroring the interactive ask tool. */
|
|
17
15
|
export declare const GATE_OTHER_OPTION = "Other (type your own)";
|
|
18
16
|
/** Optional structured deep-interview round metadata supplied by the agent. */
|
|
@@ -24,8 +22,8 @@ export interface AskGateDeepInterviewState {
|
|
|
24
22
|
ambiguity: number;
|
|
25
23
|
}
|
|
26
24
|
export interface AskGateWorkflowGateMeta {
|
|
27
|
-
stage:
|
|
28
|
-
kind:
|
|
25
|
+
stage: WorkflowStage;
|
|
26
|
+
kind: WorkflowGateKind;
|
|
29
27
|
}
|
|
30
28
|
export interface AskGateQuestion {
|
|
31
29
|
id: string;
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* for AgentSession events and bounded owner observations.
|
|
4
4
|
*
|
|
5
5
|
* Two distinct consumer-facing shapes, deliberately NOT collapsed into one:
|
|
6
|
-
* - `AgentWireEventPayload`: rich, full `AgentSessionEvent` for
|
|
7
|
-
*
|
|
6
|
+
* - `AgentWireEventPayload`: rich, full `AgentSessionEvent` for event
|
|
7
|
+
* consumers on any agent-wire transport.
|
|
8
8
|
* - `AgentWireOwnerObservation`: bounded/redacted owner evidence for control
|
|
9
9
|
* planes (Harness). Never carries assistant text, message deltas, raw tool
|
|
10
10
|
* args, raw command output, raw tool results, answers, or oversize strings.
|
|
@@ -23,8 +23,8 @@ export type AgentWireEventType = AgentSessionEvent["type"];
|
|
|
23
23
|
/** Every agent-session event type, derived from the exhaustive registry. */
|
|
24
24
|
export declare const AGENT_WIRE_EVENT_TYPES: readonly AgentWireEventType[];
|
|
25
25
|
/**
|
|
26
|
-
* Rich event payload. Carries the full `AgentSessionEvent` so
|
|
27
|
-
*
|
|
26
|
+
* Rich event payload. Carries the full `AgentSessionEvent` so event consumers
|
|
27
|
+
* can present message content, tool args/results, todo state, and related data.
|
|
28
28
|
*/
|
|
29
29
|
export interface AgentWireEventPayload {
|
|
30
30
|
event_type: AgentWireEventType;
|
|
@@ -35,7 +35,7 @@ export type AgentWireCompactAssistantMessageEvent = AssistantMessageEvent extend
|
|
|
35
35
|
} ? Omit<TEvent, "partial" | "message" | "error"> : never : never;
|
|
36
36
|
export interface AgentWireCompactMessageUpdatePayload {
|
|
37
37
|
event_type: "message_update";
|
|
38
|
-
/** Compact
|
|
38
|
+
/** Compact opt-in payload: delta-only update plus minimal routing metadata. */
|
|
39
39
|
compact: true;
|
|
40
40
|
message_id: string | null;
|
|
41
41
|
content_index: number | null;
|
|
@@ -66,7 +66,7 @@ export interface AgentWireOwnerObservation {
|
|
|
66
66
|
eventType?: AgentWireEventType;
|
|
67
67
|
/** Set when this observation derives from a non-event wire frame. */
|
|
68
68
|
frameType?: string;
|
|
69
|
-
/** Owner event kind (
|
|
69
|
+
/** Owner event kind (for example, a tool-started observation). */
|
|
70
70
|
kind: string;
|
|
71
71
|
/** Bounded observed signal, or null when the frame carries no signal. */
|
|
72
72
|
signal: AgentWireObservedSignal | null;
|
|
@@ -21,9 +21,6 @@ export declare class AgentWireFrameSequencer {
|
|
|
21
21
|
/** Build the next envelope of the given type with a fresh seq + frame id. */
|
|
22
22
|
next<TType extends AgentWireFrameType, TPayload>(type: TType, payload: TPayload, correlationId?: string): AgentWireFrameEnvelope<TType, TPayload>;
|
|
23
23
|
}
|
|
24
|
-
/** Back-compat alias for {@link AgentWireFrameSequencer}. */
|
|
25
|
-
export declare const BridgeFrameSequencer: typeof AgentWireFrameSequencer;
|
|
26
|
-
export type BridgeFrameSequencer = AgentWireFrameSequencer;
|
|
27
24
|
/** Serialize a single `AgentSessionEvent` into a canonical `event` wire frame. */
|
|
28
25
|
export declare function toAgentWireEventFrame(event: AgentSessionEvent, sequencer: AgentWireFrameSequencer): AgentWireEventFrame;
|
|
29
26
|
/** Build the rich event payload (renderer-facing) for an `AgentSessionEvent`. */
|
|
@@ -35,13 +32,13 @@ export interface AgentWireCompactMessageUpdateOptions {
|
|
|
35
32
|
checkpointInterval?: number;
|
|
36
33
|
}
|
|
37
34
|
/**
|
|
38
|
-
* Stateful compact event serializer for opt-in
|
|
35
|
+
* Stateful compact event serializer for opt-in wire clients (e.g. the SDK).
|
|
39
36
|
*
|
|
40
37
|
* Only `message_update` changes shape: it carries the immutable provider delta
|
|
41
38
|
* plus message/content identifiers, with periodic full-message checkpoints that
|
|
42
39
|
* are cloned synchronously before the caller returns to the event loop. All other
|
|
43
|
-
* event variants remain canonical full event frames so
|
|
44
|
-
*
|
|
40
|
+
* event variants remain canonical full event frames so downstream consumers and
|
|
41
|
+
* terminal `message_end` reconstruction are unchanged.
|
|
45
42
|
*/
|
|
46
43
|
export declare class AgentWireCompactEventEncoder {
|
|
47
44
|
#private;
|
|
@@ -49,12 +46,10 @@ export declare class AgentWireCompactEventEncoder {
|
|
|
49
46
|
frame(event: AgentSessionEvent): AgentWireCompactEventFrame;
|
|
50
47
|
}
|
|
51
48
|
export declare function toAgentWireCompactEventFrame(event: AgentSessionEvent, encoder: AgentWireCompactEventEncoder): AgentWireCompactEventFrame;
|
|
52
|
-
/** Back-compat alias for {@link toAgentWireEventFrame}. */
|
|
53
|
-
export declare const toBridgeEventFrame: typeof toAgentWireEventFrame;
|
|
54
49
|
/**
|
|
55
50
|
* Serialize a `workflow_gate` event into a sequenced wire frame (#321). The
|
|
56
51
|
* gate_id is stamped as the correlation id so the answer (posted to the
|
|
57
52
|
* ui-responses endpoint) can be matched, and the monotonic `seq` gives replay
|
|
58
53
|
* while `frame_id` + gate_id give idempotency.
|
|
59
54
|
*/
|
|
60
|
-
export declare function
|
|
55
|
+
export declare function toAgentWireWorkflowGateFrame(gate: import("./workflow-gate-types").WorkflowGate, sequencer: AgentWireFrameSequencer): AgentWireFrameEnvelope<"workflow_gate", import("./workflow-gate-types").WorkflowGate>;
|
|
@@ -34,4 +34,4 @@ export declare function observeAgentWireEventPayload(payload: AgentWireEventPayl
|
|
|
34
34
|
* frames delegate to {@link observeAgentWireEventPayload}; non-event frames are
|
|
35
35
|
* mapped here so owners never re-parse protocol semantics privately.
|
|
36
36
|
*/
|
|
37
|
-
export declare function
|
|
37
|
+
export declare function observeAgentWireFrame(frame: Record<string, unknown>): AgentWireOwnerObservation | null;
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
import type { AskSelectedAckOutcome } from "../../../tools";
|
|
2
|
-
import type {
|
|
2
|
+
import type { WorkflowGate, WorkflowGateContext, WorkflowGateDiagnostic, WorkflowGateKind, WorkflowGateOption, WorkflowGateQueryRecord, WorkflowGateResolution, WorkflowGateResponse, WorkflowGateValidationError, WorkflowStage } from "./workflow-gate-types";
|
|
3
3
|
export type PersistedSemanticDisposition = "commit" | "resolve_without_commit";
|
|
4
4
|
export type PersistedResolutionOrigin = {
|
|
5
5
|
kind: "generic";
|
|
6
|
-
channel: "
|
|
6
|
+
channel: "sdk" | "other";
|
|
7
7
|
} | {
|
|
8
8
|
kind: "telegram_notification";
|
|
9
9
|
interactionActionId: string;
|
|
10
|
-
} | {
|
|
11
|
-
kind: "legacy_unknown";
|
|
12
10
|
};
|
|
13
11
|
export type PersistedAckPolicy = {
|
|
14
12
|
kind: "none";
|
|
@@ -27,51 +25,154 @@ export interface GateResolutionOptions {
|
|
|
27
25
|
ackPolicy?: PersistedAckPolicy;
|
|
28
26
|
beforeAdvance?: () => Promise<void>;
|
|
29
27
|
}
|
|
28
|
+
export type WorkflowGateTerminalProof = "retired" | "already_terminal" | "not_published";
|
|
29
|
+
export interface WorkflowGateTerminalController {
|
|
30
|
+
completeGateInteractions(gateId: string): WorkflowGateTerminalProof | Promise<WorkflowGateTerminalProof>;
|
|
31
|
+
cancelGateInteractions(gateId: string, reason: string): void | Promise<void>;
|
|
32
|
+
}
|
|
33
|
+
export interface NotificationGateResolutionOptions {
|
|
34
|
+
interactionActionId: string;
|
|
35
|
+
replyReceiptId: string;
|
|
36
|
+
answerJson: string;
|
|
37
|
+
idempotencyKey?: string;
|
|
38
|
+
requestSelectedAck(input: {
|
|
39
|
+
replyReceiptId: string;
|
|
40
|
+
actionId: string;
|
|
41
|
+
commitKey: string;
|
|
42
|
+
daemonDeadlineAt: number;
|
|
43
|
+
hostTimeoutMs: number;
|
|
44
|
+
}): Promise<AskSelectedAckOutcome>;
|
|
45
|
+
resolveClaim(): void;
|
|
46
|
+
closeClaimInvalid(reason: string): void;
|
|
47
|
+
}
|
|
48
|
+
export interface AskSelectedAckRecoveryParticipant {
|
|
49
|
+
requestRecoveredAskSelectedAck(input: {
|
|
50
|
+
sessionId: string;
|
|
51
|
+
actionId: string;
|
|
52
|
+
commitKey: string;
|
|
53
|
+
deadlineAt: number;
|
|
54
|
+
hostTimeoutMs: number;
|
|
55
|
+
}): Promise<AskSelectedAckOutcome>;
|
|
56
|
+
}
|
|
57
|
+
/** SDK-native surface for emitting a workflow gate and awaiting its answer. */
|
|
58
|
+
export interface WorkflowGateEmitter {
|
|
59
|
+
isUnattended(): boolean;
|
|
60
|
+
emitGate(input: OpenGateInput): Promise<unknown>;
|
|
61
|
+
onGateEmitted?(listener: (gate: WorkflowGate) => void): () => void;
|
|
62
|
+
resolveGate?(response: WorkflowGateResponse): Promise<WorkflowGateResolution>;
|
|
63
|
+
resolveGateFromNotification?(response: WorkflowGateResponse, options: NotificationGateResolutionOptions): Promise<WorkflowGateResolution>;
|
|
64
|
+
registerGateTerminalController?(controller: WorkflowGateTerminalController): () => void;
|
|
65
|
+
/** Records the exact terminalization proof established by direct control preparation. */
|
|
66
|
+
prepareTerminalization?(gateId: string, proof: WorkflowGateTerminalProof): boolean;
|
|
67
|
+
/** Discards a prepared proof when the gate remains pending after a rejected direct response. */
|
|
68
|
+
clearPreparedTerminalization?(gateId: string): void;
|
|
69
|
+
listPendingGates?(): WorkflowGate[];
|
|
70
|
+
listGateDiagnostics?(): WorkflowGateDiagnostic[];
|
|
71
|
+
listWorkflowGateQueryRecords?(): WorkflowGateQueryRecord[];
|
|
72
|
+
quarantineGate?(gateId: string): void;
|
|
73
|
+
setAckRecoveryParticipant?(participant: AskSelectedAckRecoveryParticipant | null): void;
|
|
74
|
+
/** Explicit host hook for same-process accepted-but-unadvanced recovery. */
|
|
75
|
+
recoverAcceptedGates?(): Promise<string[]>;
|
|
76
|
+
/** Permanently revoke all in-process continuation authority and reject their waiters. */
|
|
77
|
+
fence?(): void;
|
|
78
|
+
/** Temporarily make this emitter unavailable while a session transition is reversible. */
|
|
79
|
+
suspend?(): void;
|
|
80
|
+
resume?(): void;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* SDK-native workflow-gate emitter backed by a durable broker/store pair.
|
|
84
|
+
*
|
|
85
|
+
* Answers are resolved by the broker, so validation and idempotency have one
|
|
86
|
+
* authority. Listeners replay durable pending gates when attached, allowing an
|
|
87
|
+
* SDK host that starts after a gate was opened to discover it.
|
|
88
|
+
*/
|
|
89
|
+
export declare class BrokerWorkflowGateEmitter implements WorkflowGateEmitter {
|
|
90
|
+
#private;
|
|
91
|
+
constructor(runId: string, store: GateStore, emitterHooks?: Pick<BrokerHooks, "advance">);
|
|
92
|
+
isUnattended(): boolean;
|
|
93
|
+
emitGate(input: OpenGateInput): Promise<unknown>;
|
|
94
|
+
onGateEmitted(listener: (gate: WorkflowGate) => void): () => void;
|
|
95
|
+
resolveGate(response: WorkflowGateResponse): Promise<WorkflowGateResolution>;
|
|
96
|
+
prepareTerminalization(gateId: string, proof: WorkflowGateTerminalProof): boolean;
|
|
97
|
+
clearPreparedTerminalization(gateId: string): void;
|
|
98
|
+
listPendingGates(): WorkflowGate[];
|
|
99
|
+
listGateDiagnostics(): WorkflowGateDiagnostic[];
|
|
100
|
+
listWorkflowGateQueryRecords(): WorkflowGateQueryRecord[];
|
|
101
|
+
suspend(): void;
|
|
102
|
+
resume(): void;
|
|
103
|
+
fence(): void;
|
|
104
|
+
quarantineGate(gateId: string): void;
|
|
105
|
+
registerGateTerminalController(controller: WorkflowGateTerminalController): () => void;
|
|
106
|
+
setAckRecoveryParticipant(participant: AskSelectedAckRecoveryParticipant | null): void;
|
|
107
|
+
recoverAcceptedGates(): Promise<string[]>;
|
|
108
|
+
resolveGateFromNotification(response: WorkflowGateResponse, options: NotificationGateResolutionOptions): Promise<WorkflowGateResolution>;
|
|
109
|
+
}
|
|
30
110
|
export interface PersistedGate {
|
|
31
|
-
gate:
|
|
32
|
-
status: "pending" | "accepted";
|
|
111
|
+
gate: WorkflowGate;
|
|
112
|
+
status: "pending" | "accepted" | "quarantined";
|
|
113
|
+
ownerInstanceId?: string;
|
|
33
114
|
idempotencyKey?: string;
|
|
34
115
|
responseHash?: string;
|
|
35
|
-
/** Raw accepted answer, retained so a
|
|
116
|
+
/** Raw accepted answer, retained so a same-process advance can be replayed. */
|
|
36
117
|
answer?: unknown;
|
|
37
|
-
resolution?:
|
|
118
|
+
resolution?: WorkflowGateResolution;
|
|
38
119
|
advanced: boolean;
|
|
120
|
+
/** Exact presentation terminalization completed before workflow advancement. */
|
|
121
|
+
terminalized?: boolean;
|
|
122
|
+
/** Exact presentation terminalization proof recorded before workflow advancement. */
|
|
123
|
+
terminalProof?: WorkflowGateTerminalProof;
|
|
39
124
|
semanticDisposition?: PersistedSemanticDisposition;
|
|
40
125
|
resolutionOrigin?: PersistedResolutionOrigin;
|
|
41
126
|
ackPolicy?: PersistedAckPolicy;
|
|
127
|
+
lifecycle?: WorkflowGateDiagnostic["lifecycle"];
|
|
42
128
|
}
|
|
43
129
|
export interface GateStore {
|
|
44
|
-
nextSeq(stage:
|
|
130
|
+
nextSeq(stage: WorkflowStage): number;
|
|
45
131
|
put(record: PersistedGate): void;
|
|
46
132
|
get(gateId: string): PersistedGate | undefined;
|
|
47
|
-
/**
|
|
133
|
+
/** Atomically quarantines records owned by a prior runtime before exposure. */
|
|
134
|
+
beginRuntimeInstance(instanceId: string): void;
|
|
135
|
+
/** All persisted gate records (used for same-process recovery and Q12). */
|
|
48
136
|
list(): PersistedGate[];
|
|
49
137
|
}
|
|
50
138
|
export declare class MemoryGateStore implements GateStore {
|
|
51
139
|
private counters;
|
|
52
140
|
private gates;
|
|
53
|
-
|
|
141
|
+
private runtimeInstanceId;
|
|
142
|
+
nextSeq(stage: WorkflowStage): number;
|
|
54
143
|
put(record: PersistedGate): void;
|
|
55
144
|
get(gateId: string): PersistedGate | undefined;
|
|
145
|
+
beginRuntimeInstance(instanceId: string): void;
|
|
56
146
|
list(): PersistedGate[];
|
|
57
147
|
}
|
|
148
|
+
export declare function isUnsupportedWindowsDirectorySyncError(error: unknown, platform?: NodeJS.Platform): boolean;
|
|
149
|
+
/** A write may have reached `rename` but not the directory fsync durability barrier. */
|
|
150
|
+
export declare class GateStoreWriteError extends Error {
|
|
151
|
+
readonly certainty: "not_committed" | "uncertain";
|
|
152
|
+
constructor(certainty: "not_committed" | "uncertain", cause: unknown);
|
|
153
|
+
}
|
|
58
154
|
/** Crash-durable JSON-file backed store. Writes the full state on every mutation. */
|
|
59
155
|
export declare class FileGateStore implements GateStore {
|
|
60
156
|
private readonly filePath;
|
|
157
|
+
private readonly sync;
|
|
61
158
|
private state;
|
|
62
|
-
|
|
159
|
+
private certaintyUnknown;
|
|
160
|
+
constructor(filePath: string, sync?: (fd: number) => void);
|
|
63
161
|
private load;
|
|
64
|
-
private
|
|
65
|
-
|
|
162
|
+
private flushState;
|
|
163
|
+
private commit;
|
|
164
|
+
private reconcileCertainty;
|
|
165
|
+
nextSeq(stage: WorkflowStage): number;
|
|
66
166
|
put(record: PersistedGate): void;
|
|
67
167
|
get(gateId: string): PersistedGate | undefined;
|
|
168
|
+
beginRuntimeInstance(instanceId: string): void;
|
|
68
169
|
list(): PersistedGate[];
|
|
69
170
|
}
|
|
70
171
|
export type GateAuditEvent = {
|
|
71
172
|
event: "gate_emitted";
|
|
72
173
|
gate_id: string;
|
|
73
|
-
stage:
|
|
74
|
-
kind:
|
|
174
|
+
stage: WorkflowStage;
|
|
175
|
+
kind: WorkflowGateKind;
|
|
75
176
|
} | {
|
|
76
177
|
event: "gate_response_accepted";
|
|
77
178
|
gate_id: string;
|
|
@@ -98,49 +199,88 @@ export type GateAuditEvent = {
|
|
|
98
199
|
};
|
|
99
200
|
export interface BrokerHooks {
|
|
100
201
|
/** Called once when a pending gate has been persisted and should be emitted. */
|
|
101
|
-
emit?(gate:
|
|
202
|
+
emit?(gate: WorkflowGate): void;
|
|
102
203
|
/**
|
|
103
204
|
* Invoked to advance the workflow after an accepted resolution is durably
|
|
104
205
|
* committed. MUST be idempotent keyed by `gate.gate_id`: `recover()` replays
|
|
105
206
|
* it for any gate left `accepted` but not `advanced` by a crash.
|
|
106
207
|
*/
|
|
107
|
-
advance?(gate:
|
|
108
|
-
/** Runs after durable acceptance and before
|
|
208
|
+
advance?(gate: WorkflowGate, answer: unknown): void | Promise<void>;
|
|
209
|
+
/** Runs after durable acceptance and before presentation terminalization, including crash recovery. */
|
|
109
210
|
finalizeAccepted?(record: PersistedGate): Promise<void>;
|
|
211
|
+
/**
|
|
212
|
+
* Terminalizes the exact presentation before `advance` can run and returns
|
|
213
|
+
* proof for the durable record. `not_published` explicitly proves that no
|
|
214
|
+
* presentation existed. On failure it MUST revoke authority or throw.
|
|
215
|
+
*/
|
|
216
|
+
terminalizeAccepted?(record: PersistedGate): WorkflowGateTerminalProof | Promise<WorkflowGateTerminalProof>;
|
|
217
|
+
/** Runs only after a successful advance has been durably marked advanced. */
|
|
218
|
+
completeAccepted?(record: PersistedGate): void | Promise<void>;
|
|
110
219
|
/** Append-only audit sink. */
|
|
111
220
|
audit?(event: GateAuditEvent): void;
|
|
112
221
|
}
|
|
222
|
+
/** Live in-process continuation authority for one emitted gate. */
|
|
223
|
+
export interface GateContinuation {
|
|
224
|
+
activate(gate: WorkflowGate): void;
|
|
225
|
+
isLive(gateId: string): boolean;
|
|
226
|
+
release?(gateId: string): void;
|
|
227
|
+
/** Explicitly declares that this direct continuation owns no presentation. */
|
|
228
|
+
terminalProof?: "not_published";
|
|
229
|
+
}
|
|
113
230
|
export interface OpenGateInput {
|
|
114
|
-
stage:
|
|
115
|
-
kind:
|
|
116
|
-
schema:
|
|
117
|
-
options?:
|
|
118
|
-
context?:
|
|
231
|
+
stage: WorkflowStage;
|
|
232
|
+
kind: WorkflowGateKind;
|
|
233
|
+
schema: WorkflowGate["schema"];
|
|
234
|
+
options?: WorkflowGateOption[];
|
|
235
|
+
context?: WorkflowGateContext;
|
|
236
|
+
/** Optional diagnostic gate replaced by this newly persisted gate. */
|
|
237
|
+
supersedesGateId?: string;
|
|
119
238
|
}
|
|
120
239
|
export declare class WorkflowGateBrokerError extends Error {
|
|
121
240
|
readonly code: "unknown_gate" | "already_resolved" | "idempotency_conflict" | "invalid_workflow_stage";
|
|
122
241
|
constructor(code: "unknown_gate" | "already_resolved" | "idempotency_conflict" | "invalid_workflow_stage", message: string);
|
|
123
242
|
}
|
|
124
243
|
export declare class WorkflowGateBroker {
|
|
244
|
+
#private;
|
|
125
245
|
private readonly runId;
|
|
126
246
|
private readonly store;
|
|
127
247
|
private readonly hooks;
|
|
248
|
+
private readonly instanceId;
|
|
128
249
|
private readonly recovering;
|
|
129
250
|
private readonly gateLocks;
|
|
251
|
+
private readonly continuations;
|
|
130
252
|
private withGateLock;
|
|
131
|
-
constructor(runId: string, store: GateStore, hooks?: BrokerHooks);
|
|
253
|
+
constructor(runId: string, store: GateStore, hooks?: BrokerHooks, instanceId?: `${string}-${string}-${string}-${string}-${string}`);
|
|
132
254
|
classifyDisposition(gateId: string, answer: unknown): PersistedSemanticDisposition;
|
|
133
|
-
validationError(gateId: string, keyword: string, message: string):
|
|
255
|
+
validationError(gateId: string, keyword: string, message: string): WorkflowGateValidationError;
|
|
134
256
|
updateAckPolicy(gateId: string, ackPolicy: PersistedAckPolicy): void;
|
|
135
257
|
private runShort;
|
|
258
|
+
private hasLiveContinuation;
|
|
259
|
+
hasRecoverableAcceptedGate(): boolean;
|
|
260
|
+
prepareTerminalization(gateId: string, proof: WorkflowGateTerminalProof): boolean;
|
|
261
|
+
clearPreparedTerminalization(gateId: string): void;
|
|
262
|
+
/**
|
|
263
|
+
* Fences a gate after an uncertain control outcome by deliberately releasing
|
|
264
|
+
* this runtime's continuation authority. The durable diagnostic is retained
|
|
265
|
+
* for recovery; it is never republished as a pending gate.
|
|
266
|
+
*/
|
|
267
|
+
quarantineGate(gateId: string): void;
|
|
268
|
+
/** Revoke every live continuation, including accepted-but-unadvanced recovery authority. */
|
|
269
|
+
fenceContinuations(): void;
|
|
270
|
+
/** Fence a cancelled/lost continuation before it can be exposed or advanced. */
|
|
271
|
+
loseContinuation(gateId: string): void;
|
|
272
|
+
listPendingGates(): WorkflowGate[];
|
|
273
|
+
listGateDiagnostics(): WorkflowGateDiagnostic[];
|
|
274
|
+
listWorkflowGateQueryRecords(): WorkflowGateQueryRecord[];
|
|
136
275
|
/** Open and emit a gate. The pending record is persisted BEFORE emission. */
|
|
137
|
-
openGate(input: OpenGateInput):
|
|
276
|
+
openGate(input: OpenGateInput, continuation?: GateContinuation): WorkflowGate;
|
|
138
277
|
/**
|
|
139
278
|
* Resolve a gate with an answer. Validates against the advertised schema.
|
|
140
|
-
*
|
|
141
|
-
*
|
|
279
|
+
* Accepted answers are persisted first, then their presentation is terminalized,
|
|
280
|
+
* then the workflow advances and commits `advanced:true` exactly once. Invalid
|
|
281
|
+
* answers leave the gate pending (per #315 acceptance).
|
|
142
282
|
*/
|
|
143
|
-
resolve(response:
|
|
283
|
+
resolve(response: WorkflowGateResponse, options?: GateResolutionOptions): Promise<WorkflowGateResolution>;
|
|
144
284
|
private resolveUnlocked;
|
|
145
285
|
/**
|
|
146
286
|
* Recover any gate left `accepted` but not `advanced` by a crash between the
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { JsonSchema, WorkflowGateValidationError } from "./workflow-gate-types";
|
|
2
2
|
export declare const GATE_SCHEMA_LIMITS: {
|
|
3
3
|
readonly maxSchemaBytes: number;
|
|
4
4
|
readonly maxDepth: 16;
|
|
@@ -13,10 +13,10 @@ export declare class WorkflowGateSchemaError extends Error {
|
|
|
13
13
|
}
|
|
14
14
|
/** Canonical (stable-key-ordered) JSON serialization used for hashing. */
|
|
15
15
|
export declare function canonicalJson(value: unknown): string;
|
|
16
|
-
export declare function schemaHash(schema:
|
|
16
|
+
export declare function schemaHash(schema: JsonSchema): string;
|
|
17
17
|
declare function answerHashOf(answer: unknown): string;
|
|
18
18
|
/** Validate the schema *shape*. Throws WorkflowGateSchemaError on any problem. */
|
|
19
|
-
export declare function assertSupportedGateSchema(schema:
|
|
19
|
+
export declare function assertSupportedGateSchema(schema: JsonSchema): void;
|
|
20
20
|
type SchemaError = {
|
|
21
21
|
path: string;
|
|
22
22
|
keyword: string;
|
|
@@ -25,15 +25,15 @@ type SchemaError = {
|
|
|
25
25
|
};
|
|
26
26
|
/** A compiled, cached validator for one schema. */
|
|
27
27
|
export interface CompiledGateSchema {
|
|
28
|
-
readonly schema:
|
|
28
|
+
readonly schema: JsonSchema;
|
|
29
29
|
readonly hash: string;
|
|
30
30
|
validate(answer: unknown): SchemaError[];
|
|
31
31
|
}
|
|
32
32
|
/** Compile (and cache) a validator for a schema. Asserts shape on first compile. */
|
|
33
|
-
export declare function compileGateSchema(schema:
|
|
33
|
+
export declare function compileGateSchema(schema: JsonSchema): CompiledGateSchema;
|
|
34
34
|
/**
|
|
35
35
|
* Validate an answer against a compiled gate schema. Returns `null` on success
|
|
36
|
-
* or a typed {@link
|
|
36
|
+
* or a typed {@link WorkflowGateValidationError} on mismatch.
|
|
37
37
|
*/
|
|
38
|
-
export declare function validateGateAnswer(compiled: CompiledGateSchema, gateId: string, answer: unknown):
|
|
38
|
+
export declare function validateGateAnswer(compiled: CompiledGateSchema, gateId: string, answer: unknown): WorkflowGateValidationError | null;
|
|
39
39
|
export { answerHashOf };
|