@gajae-code/coding-agent 0.13.3 → 0.14.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 +184 -2
- package/README.md +2 -0
- package/bin/gajaessi.js +4 -0
- package/dist/types/async/job-manager.d.ts +55 -2
- package/dist/types/async/support.d.ts +14 -0
- package/dist/types/capability/mcp.d.ts +6 -0
- package/dist/types/capability/types.d.ts +6 -0
- package/dist/types/cli/accounts-cli.d.ts +19 -0
- package/dist/types/cli/args.d.ts +3 -0
- package/dist/types/cli/config-cli.d.ts +6 -0
- package/dist/types/cli/crash-cli.d.ts +10 -0
- package/dist/types/cli/customize-doctor.d.ts +145 -0
- package/dist/types/cli/daemon-cli.d.ts +3 -1
- package/dist/types/cli/mcp-cli.d.ts +11 -0
- package/dist/types/cli/notify-cli.d.ts +1 -1
- package/dist/types/cli/root-flags.d.ts +12 -0
- package/dist/types/cli/setup-cli.d.ts +3 -1
- package/dist/types/cli/skills-cli.d.ts +2 -1
- package/dist/types/cli/update-cli.d.ts +19 -1
- package/dist/types/cli.d.ts +6 -0
- package/dist/types/commands/accounts.d.ts +40 -0
- package/dist/types/commands/crash.d.ts +24 -0
- package/dist/types/commands/customize.d.ts +22 -0
- package/dist/types/commands/daemon.d.ts +1 -1
- package/dist/types/commands/launch.d.ts +6 -0
- package/dist/types/commands/setup.d.ts +6 -0
- package/dist/types/commands/skills.d.ts +6 -1
- package/dist/types/commands/update.d.ts +7 -0
- package/dist/types/config/atomic-yaml-patch-worker.d.ts +25 -0
- package/dist/types/config/atomic-yaml-patch.d.ts +62 -2
- package/dist/types/config/config-schema-version.d.ts +10 -0
- package/dist/types/config/file-lock.d.ts +18 -0
- package/dist/types/config/model-profile-activation.d.ts +3 -1
- package/dist/types/config/model-registry.d.ts +9 -1
- package/dist/types/config/models-config-schema.d.ts +2 -0
- package/dist/types/config/settings-schema.d.ts +70 -6
- package/dist/types/config/settings.d.ts +63 -0
- package/dist/types/config/skill-settings-defaults.d.ts +26 -0
- package/dist/types/config/task-delegation.d.ts +39 -0
- package/dist/types/config/update-channel.d.ts +10 -0
- package/dist/types/coordinator-mcp/server.d.ts +5 -1
- package/dist/types/crash/index-store.d.ts +87 -0
- package/dist/types/crash/nudge.d.ts +50 -0
- package/dist/types/crash/record-loader.d.ts +17 -0
- package/dist/types/crash/report.d.ts +134 -0
- package/dist/types/crash/sanitize.d.ts +25 -0
- package/dist/types/cursor.d.ts +13 -2
- package/dist/types/customization/import.d.ts +37 -0
- package/dist/types/customization/index.d.ts +4 -0
- package/dist/types/customization/inventory.d.ts +25 -0
- package/dist/types/customization/mutations.d.ts +32 -0
- package/dist/types/customization/types.d.ts +115 -0
- package/dist/types/daemon/control-types.d.ts +8 -1
- package/dist/types/daemon/operator-contract.d.ts +4 -4
- package/dist/types/discovery/claude.d.ts +39 -1
- package/dist/types/discovery/codex.d.ts +39 -1
- package/dist/types/discovery/index.d.ts +2 -0
- package/dist/types/discovery/mcp-compat.d.ts +30 -0
- package/dist/types/edit/renderer.d.ts +23 -0
- package/dist/types/extensibility/extensions/runner.d.ts +3 -0
- package/dist/types/extensibility/extensions/types.d.ts +21 -4
- package/dist/types/extensibility/gjc-plugins/observability.d.ts +6 -1
- package/dist/types/extensibility/gjc-plugins/registry.d.ts +8 -1
- package/dist/types/extensibility/hooks/loader.d.ts +19 -5
- package/dist/types/extensibility/runtime-skill-discovery.d.ts +22 -1
- package/dist/types/extensibility/skill-management.d.ts +107 -0
- package/dist/types/gjc-runtime/deep-interview-runtime.d.ts +3 -1
- package/dist/types/gjc-runtime/launch-worktree.d.ts +8 -0
- package/dist/types/gjc-runtime/linux-proc.d.ts +3 -0
- package/dist/types/gjc-runtime/ralplan-runtime.d.ts +10 -6
- package/dist/types/gjc-runtime/session-state-lock.d.ts +104 -0
- package/dist/types/gjc-runtime/session-state-sidecar.d.ts +120 -2
- package/dist/types/gjc-runtime/state-writer.d.ts +10 -1
- package/dist/types/gjc-runtime/ultragoal-guard.d.ts +4 -2
- package/dist/types/gjc-runtime/ultragoal-runtime.d.ts +8 -6
- package/dist/types/gjc-runtime/workflow-settings.d.ts +109 -0
- package/dist/types/hooks/events.d.ts +60 -0
- package/dist/types/hooks/normalize.d.ts +83 -0
- package/dist/types/hooks/skill-state.d.ts +9 -2
- package/dist/types/main.d.ts +1 -1
- package/dist/types/modes/acp/abort-scope.d.ts +13 -0
- package/dist/types/modes/acp/acp-agent.d.ts +7 -4
- package/dist/types/modes/components/customization/customization-dashboard.d.ts +44 -0
- package/dist/types/modes/components/customization/import-wizard.d.ts +21 -0
- package/dist/types/modes/components/customization/index.d.ts +1 -0
- package/dist/types/modes/components/gajae-pet-widget.d.ts +8 -30
- package/dist/types/modes/components/irc-sidebar.d.ts +1 -0
- package/dist/types/modes/components/iterm-pet-transport.d.ts +122 -0
- package/dist/types/modes/components/oauth-selector.d.ts +10 -4
- package/dist/types/modes/components/pet-capability.d.ts +11 -25
- package/dist/types/modes/components/status-line/gh.d.ts +6 -2
- package/dist/types/modes/controllers/extension-ui-controller.d.ts +1 -1
- package/dist/types/modes/controllers/selector-controller.d.ts +7 -8
- package/dist/types/modes/controllers/stt-controller.d.ts +1 -1
- package/dist/types/modes/interactive-mode.d.ts +1 -0
- package/dist/types/modes/types.d.ts +1 -0
- package/dist/types/modes/utils/injected-user-submission.d.ts +10 -0
- package/dist/types/runtime-mcp/config.d.ts +9 -0
- package/dist/types/runtime-mcp/manager.d.ts +26 -1
- package/dist/types/runtime-mcp/oauth-discovery.d.ts +4 -0
- package/dist/types/runtime-mcp/oauth-flow.d.ts +24 -1
- package/dist/types/runtime-mcp/pool-key.d.ts +2 -0
- package/dist/types/runtime-mcp/protocol.d.ts +278 -0
- package/dist/types/runtime-mcp/scope-config.d.ts +29 -0
- package/dist/types/runtime-mcp/tool-bridge.d.ts +15 -13
- package/dist/types/runtime-mcp/transports/http.d.ts +9 -0
- package/dist/types/runtime-mcp/types.d.ts +102 -10
- package/dist/types/sdk/acp/adapter.d.ts +26 -5
- package/dist/types/sdk/broker/broker.d.ts +3 -55
- package/dist/types/sdk/broker/lifecycle.d.ts +18 -12
- package/dist/types/sdk/broker/session-index.d.ts +14 -5
- package/dist/types/sdk/broker/startup-failure.d.ts +16 -1
- package/dist/types/sdk/bus/chat-daemon-control.d.ts +51 -1
- package/dist/types/sdk/bus/chat-daemon-runtime.d.ts +4 -41
- package/dist/types/sdk/bus/config.d.ts +11 -0
- package/dist/types/sdk/bus/conversation-store.d.ts +0 -1
- package/dist/types/sdk/bus/daemon-paths.d.ts +6 -0
- package/dist/types/sdk/bus/discord-conversation.d.ts +2 -0
- package/dist/types/sdk/bus/discord-daemon.d.ts +17 -12
- package/dist/types/sdk/bus/existing-thread-readiness.d.ts +4 -34
- package/dist/types/sdk/bus/inbound-reaction-ordering.d.ts +61 -0
- package/dist/types/sdk/bus/index.d.ts +85 -99
- package/dist/types/sdk/bus/kind-aware-reconciliation.d.ts +29 -7
- package/dist/types/sdk/bus/managed-daemon.d.ts +2 -32
- package/dist/types/sdk/bus/notification-service.d.ts +52 -0
- package/dist/types/sdk/bus/operator-runtime.d.ts +1 -1
- package/dist/types/sdk/bus/prompt-reconciliation.d.ts +16 -5
- package/dist/types/sdk/bus/reconciliation-store.d.ts +113 -5
- package/dist/types/sdk/bus/session-control.d.ts +25 -1
- package/dist/types/sdk/bus/slack-conversation.d.ts +4 -0
- package/dist/types/sdk/bus/slack-daemon.d.ts +9 -17
- package/dist/types/sdk/bus/slack-live-provider.d.ts +3 -1
- package/dist/types/sdk/bus/slack-provider.d.ts +4 -0
- package/dist/types/sdk/bus/slack-thread-binding.d.ts +6 -40
- package/dist/types/sdk/bus/telegram-adoption-intent.d.ts +30 -104
- package/dist/types/sdk/bus/telegram-daemon-cli.d.ts +10 -0
- package/dist/types/sdk/bus/telegram-daemon-contract.d.ts +262 -19
- package/dist/types/sdk/bus/telegram-daemon-orphan-reap.d.ts +125 -0
- package/dist/types/sdk/bus/telegram-daemon-owner-registry.d.ts +22 -0
- package/dist/types/sdk/bus/telegram-daemon.d.ts +119 -310
- package/dist/types/sdk/bus/telegram-reference.d.ts +1 -47
- package/dist/types/sdk/bus/threaded-render.d.ts +1 -0
- package/dist/types/sdk/bus/topic-registry.d.ts +33 -17
- package/dist/types/sdk/cli/rows.d.ts +2 -11
- package/dist/types/sdk/cli/session-cli.d.ts +15 -25
- package/dist/types/sdk/client/client.d.ts +97 -1
- package/dist/types/sdk/host/control/dispatch.d.ts +0 -7
- package/dist/types/sdk/host/control/index.d.ts +1 -1
- package/dist/types/sdk/host/control/operations.d.ts +18 -5
- package/dist/types/sdk/host/control/runtime-gate.d.ts +19 -0
- package/dist/types/sdk/host/host.d.ts +15 -1
- package/dist/types/sdk/host/query/handlers.d.ts +5 -0
- package/dist/types/sdk/host/reverse-leases.d.ts +1 -1
- package/dist/types/sdk/host/session-runtime.d.ts +127 -7
- package/dist/types/sdk/host/types.d.ts +1 -1
- package/dist/types/sdk/host/websocket-transport.d.ts +1 -1
- package/dist/types/sdk/index.d.ts +2 -1
- package/dist/types/sdk/lifecycle/broker-client.d.ts +8 -0
- package/dist/types/sdk/lifecycle/client.d.ts +59 -0
- package/dist/types/sdk/lifecycle/index.d.ts +3 -0
- package/dist/types/sdk/lifecycle/service.d.ts +232 -0
- package/dist/types/sdk/mcp/server.d.ts +9 -6
- package/dist/types/sdk/prompt-deadline-lease.d.ts +43 -0
- package/dist/types/sdk/prompt-deadline-manager.d.ts +28 -0
- package/dist/types/sdk/prompt-status.d.ts +10 -3
- package/dist/types/sdk/protocol/operation-registry.d.ts +5 -0
- package/dist/types/sdk/receipt-state.d.ts +17 -0
- package/dist/types/sdk/reconciliation-extensions.d.ts +2 -0
- package/dist/types/sdk/router/index.d.ts +1 -0
- package/dist/types/sdk/router/session-router.d.ts +152 -0
- package/dist/types/sdk/session-list.d.ts +22 -0
- package/dist/types/sdk/session-reconnect.d.ts +43 -1
- package/dist/types/sdk/session.d.ts +34 -1
- package/dist/types/sdk/transport/serve-cli.d.ts +1 -4
- package/dist/types/session/account-inventory.d.ts +86 -0
- package/dist/types/session/agent-session.d.ts +145 -6
- package/dist/types/session/agent-storage.d.ts +10 -0
- package/dist/types/session/coordinator-tool-label.d.ts +28 -0
- package/dist/types/session/internal/managed-session-storage.d.ts +23 -4
- package/dist/types/session/messages.d.ts +1 -1
- package/dist/types/session/secure-token-file.d.ts +3 -0
- package/dist/types/session/session-manager.d.ts +40 -1
- package/dist/types/session/startup-auth-config.d.ts +44 -0
- package/dist/types/session/terminal-abort.d.ts +378 -0
- package/dist/types/session/yield-queue.d.ts +7 -0
- package/dist/types/session-import/claude.d.ts +26 -0
- package/dist/types/session-import/codex.d.ts +88 -0
- package/dist/types/session-import/command.d.ts +35 -0
- package/dist/types/session-import/detect.d.ts +22 -0
- package/dist/types/session-import/index.d.ts +7 -0
- package/dist/types/session-import/provider-codex.d.ts +22 -0
- package/dist/types/session-import/provider-service.d.ts +38 -0
- package/dist/types/session-import/redact.d.ts +23 -0
- package/dist/types/session-import/service.d.ts +47 -0
- package/dist/types/session-import/types.d.ts +120 -0
- package/dist/types/setup/paseo/check.d.ts +16 -0
- package/dist/types/setup/paseo/install-saga.d.ts +115 -0
- package/dist/types/setup/paseo/json-publisher.d.ts +76 -0
- package/dist/types/setup/paseo/orchestration-preferences.d.ts +24 -0
- package/dist/types/setup/paseo/paseo-ownership.d.ts +87 -0
- package/dist/types/setup/paseo/paseo-setup.d.ts +29 -0
- package/dist/types/setup/paseo/provider-config.d.ts +35 -0
- package/dist/types/setup/paseo/remove.d.ts +14 -0
- package/dist/types/setup/paseo/result-types.d.ts +59 -0
- package/dist/types/setup/paseo/setup-deps.d.ts +73 -0
- package/dist/types/setup/paseo/skills-bridge.d.ts +44 -0
- package/dist/types/skill-state/active-state.d.ts +5 -1
- package/dist/types/slash-commands/acp-builtins.d.ts +5 -1
- package/dist/types/slash-commands/builtin-registry.d.ts +2 -0
- package/dist/types/slash-commands/helpers/credential-switch.d.ts +12 -0
- package/dist/types/slash-commands/helpers/usage-report.d.ts +5 -6
- package/dist/types/slash-commands/types.d.ts +7 -1
- package/dist/types/task/executor.d.ts +10 -0
- package/dist/types/task/index.d.ts +3 -1
- package/dist/types/tools/ask-answer-registry.d.ts +6 -3
- package/dist/types/tools/bash-sleep-advisory.d.ts +14 -0
- package/dist/types/tools/bash.d.ts +2 -6
- package/dist/types/tools/browser/attach.d.ts +11 -0
- package/dist/types/tools/browser/launch.d.ts +20 -0
- package/dist/types/tools/browser/profile-discovery.d.ts +6 -0
- package/dist/types/tools/browser/render.d.ts +1 -0
- package/dist/types/tools/browser.d.ts +3 -1
- package/dist/types/tools/image-gen.d.ts +9 -2
- package/dist/types/tools/index.d.ts +8 -0
- package/dist/types/tools/monitor.d.ts +1 -1
- package/dist/types/tools/skill-discovery.d.ts +8 -1
- package/dist/types/tools/subagent.d.ts +2 -0
- package/dist/types/tools/ultragoal-ask-guard.d.ts +2 -2
- package/dist/types/utils/herdr-pane.d.ts +76 -0
- package/package.json +19 -9
- package/scripts/build-binary.ts +2 -1
- package/scripts/build-sdk-package-smoke.ts +2 -13
- package/scripts/capture-sticky-viewport-showcase.ts +0 -1
- package/scripts/compile-args.ts +2 -0
- package/scripts/generate-sdk-adapter-parity-manifest.ts +31 -16
- package/scripts/generate-sdk-operation-inventory.ts +28 -0
- package/scripts/generate-telegram-baseline-manifest.ts +1 -0
- package/scripts/generate-tool-catalog.ts +6 -4
- package/scripts/verify-gjc-sdk-canonicalization.ts +5 -39
- package/src/async/job-manager.ts +352 -17
- package/src/async/support.ts +25 -0
- package/src/autoresearch/dashboard.ts +28 -13
- package/src/capability/index.ts +3 -1
- package/src/capability/mcp.ts +6 -0
- package/src/capability/types.ts +6 -0
- package/src/cli/accounts-cli.ts +395 -0
- package/src/cli/args.ts +23 -0
- package/src/cli/auth-broker-cli.ts +136 -66
- package/src/cli/auth-gateway-cli.ts +94 -70
- package/src/cli/config-cli.ts +27 -2
- package/src/cli/crash-cli.ts +78 -0
- package/src/cli/customize-doctor.ts +1605 -0
- package/src/cli/daemon-cli.ts +12 -3
- package/src/cli/fast-help.ts +1 -0
- package/src/cli/mcp-cli.ts +128 -60
- package/src/cli/notify-cli.ts +8 -14
- package/src/cli/root-flags.ts +8 -0
- package/src/cli/setup-cli.ts +145 -0
- package/src/cli/skills-cli.ts +38 -2
- package/src/cli/update-cli.ts +167 -12
- package/src/cli.ts +4 -0
- package/src/commands/accounts.ts +71 -0
- package/src/commands/crash.ts +35 -0
- package/src/commands/customize.ts +84 -0
- package/src/commands/daemon.ts +2 -2
- package/src/commands/deep-interview.ts +2 -0
- package/src/commands/launch.ts +1 -0
- package/src/commands/mcp.ts +12 -7
- package/src/commands/ralplan.ts +2 -0
- package/src/commands/sdk.ts +65 -32
- package/src/commands/setup.ts +5 -0
- package/src/commands/skills.ts +14 -4
- package/src/commands/ultragoal.ts +10 -1
- package/src/commands/update.ts +26 -15
- package/src/config/atomic-yaml-patch-worker.ts +57 -0
- package/src/config/atomic-yaml-patch.ts +769 -29
- package/src/config/config-schema-version.ts +10 -0
- package/src/config/file-lock.ts +70 -1
- package/src/config/mcp-schema.json +52 -14
- package/src/config/model-profile-activation.ts +20 -1
- package/src/config/model-profiles.ts +29 -19
- package/src/config/model-registry.ts +132 -21
- package/src/config/models-config-schema.ts +1 -1
- package/src/config/settings-schema.ts +76 -6
- package/src/config/settings.ts +4038 -199
- package/src/config/skill-settings-defaults.ts +41 -3
- package/src/config/task-delegation.ts +87 -0
- package/src/config/update-channel.ts +23 -0
- package/src/coordinator-mcp/server.ts +377 -308
- package/src/crash/index-store.ts +723 -0
- package/src/crash/nudge.ts +89 -0
- package/src/crash/record-loader.ts +149 -0
- package/src/crash/report.ts +551 -0
- package/src/crash/sanitize.ts +129 -0
- package/src/cursor.ts +36 -10
- package/src/customization/import.ts +946 -0
- package/src/customization/index.ts +4 -0
- package/src/customization/inventory.ts +335 -0
- package/src/customization/mutations.ts +141 -0
- package/src/customization/types.ts +223 -0
- package/src/daemon/control-types.ts +8 -1
- package/src/daemon/operator-contract.ts +6 -6
- package/src/defaults/gjc/skills/deep-interview/SKILL.md +11 -22
- package/src/defaults/gjc/skills/ralplan/SKILL.md +36 -23
- package/src/defaults/gjc/skills/ultragoal/SKILL.md +16 -0
- package/src/discovery/claude-hooks.ts +38 -0
- package/src/discovery/claude.ts +142 -209
- package/src/discovery/codex-hooks.ts +38 -0
- package/src/discovery/codex.ts +132 -198
- package/src/discovery/helpers.ts +8 -1
- package/src/discovery/index.ts +2 -0
- package/src/discovery/mcp-compat.ts +234 -0
- package/src/discovery/mcp-json.ts +6 -0
- package/src/edit/renderer.ts +40 -0
- package/src/edit/streaming.ts +4 -2
- package/src/exec/bash-executor.ts +24 -20
- package/src/export/html/index.ts +51 -2
- package/src/extensibility/extensions/loader.ts +9 -1
- package/src/extensibility/extensions/runner.ts +17 -4
- package/src/extensibility/extensions/types.ts +31 -6
- package/src/extensibility/gjc-plugins/constrained-hooks.ts +33 -0
- package/src/extensibility/gjc-plugins/installer.ts +9 -5
- package/src/extensibility/gjc-plugins/observability.ts +8 -2
- package/src/extensibility/gjc-plugins/registry.ts +13 -2
- package/src/extensibility/gjc-plugins/runtime-adapters.ts +3 -1
- package/src/extensibility/gjc-plugins/schema.ts +222 -39
- package/src/extensibility/hooks/loader.ts +154 -10
- package/src/extensibility/runtime-skill-discovery.ts +257 -60
- package/src/extensibility/skill-management.ts +368 -0
- package/src/extensibility/skills.ts +52 -16
- package/src/gjc-runtime/deep-interview-runtime.ts +45 -61
- package/src/gjc-runtime/launch-worktree.ts +56 -2
- package/src/gjc-runtime/linux-proc.ts +7 -1
- package/src/gjc-runtime/ralplan-runtime.ts +100 -164
- package/src/gjc-runtime/session-state-lock.ts +992 -0
- package/src/gjc-runtime/session-state-sidecar.ts +644 -142
- package/src/gjc-runtime/state-writer.ts +39 -14
- package/src/gjc-runtime/tmux-owner-isolation.ts +5 -4
- package/src/gjc-runtime/ultragoal-guard.ts +11 -4
- package/src/gjc-runtime/ultragoal-runtime.ts +44 -41
- package/src/gjc-runtime/workflow-settings.ts +596 -0
- package/src/goals/tools/goal-tool.ts +6 -1
- package/src/hooks/events.ts +291 -0
- package/src/hooks/native-skill-hook.ts +4 -0
- package/src/hooks/normalize.ts +369 -0
- package/src/hooks/skill-state.ts +165 -46
- package/src/internal-urls/docs-index.generated.ts +40 -32
- package/src/main.ts +32 -5
- package/src/migrate/mcp-mapper.ts +25 -2
- package/src/modes/acp/abort-scope.ts +29 -0
- package/src/modes/acp/acp-agent.ts +423 -98
- package/src/modes/components/assistant-message.ts +6 -1
- package/src/modes/components/customization/customization-dashboard.ts +443 -0
- package/src/modes/components/customization/import-wizard.ts +372 -0
- package/src/modes/components/customization/index.ts +1 -0
- package/src/modes/components/gajae-pet-widget.ts +539 -213
- package/src/modes/components/irc-sidebar.ts +11 -0
- package/src/modes/components/iterm-pet-transport.ts +585 -0
- package/src/modes/components/oauth-selector.ts +277 -86
- package/src/modes/components/pet-capability.ts +39 -40
- package/src/modes/components/settings-selector.ts +9 -0
- package/src/modes/components/status-line/gh.ts +45 -1
- package/src/modes/components/status-line/segments.ts +16 -1
- package/src/modes/components/tool-status-header.ts +13 -3
- package/src/modes/controllers/command-controller.ts +20 -8
- package/src/modes/controllers/extension-ui-controller.ts +56 -257
- package/src/modes/controllers/input-controller.ts +10 -0
- package/src/modes/controllers/runtime-mcp-command-controller.ts +16 -3
- package/src/modes/controllers/selector-controller.ts +177 -72
- package/src/modes/controllers/stt-controller.ts +3 -3
- package/src/modes/interactive-mode.ts +88 -16
- package/src/modes/print-mode.ts +35 -6
- package/src/modes/runtime-init.ts +21 -68
- package/src/modes/types.ts +1 -0
- package/src/modes/utils/injected-user-submission.ts +25 -0
- package/src/modes/utils/terminal-bell.ts +15 -1
- package/src/prompts/agent-fragments/ralplan-persistence.md +1 -1
- package/src/prompts/agent-fragments/restricted-bash.md +1 -1
- package/src/prompts/agents/critic.md +1 -1
- package/src/prompts/system/rlm-research.md +1 -1
- package/src/prompts/system/system-prompt.md +0 -2
- package/src/prompts/tools/bash.md +7 -1
- package/src/prompts/tools/browser.md +1 -1
- package/src/prompts/tools/cron.md +6 -6
- package/src/prompts/tools/read.md +0 -2
- package/src/prompts/tools/skill-discovery.md +4 -2
- package/src/runtime-mcp/client.ts +427 -23
- package/src/runtime-mcp/config.ts +37 -5
- package/src/runtime-mcp/manager-pool.test.ts +56 -0
- package/src/runtime-mcp/manager.ts +52 -2
- package/src/runtime-mcp/oauth-discovery.ts +13 -0
- package/src/runtime-mcp/oauth-flow.ts +46 -1
- package/src/runtime-mcp/pool-key.ts +5 -1
- package/src/runtime-mcp/pool.test.ts +9 -0
- package/src/runtime-mcp/protocol.test.ts +353 -0
- package/src/runtime-mcp/protocol.ts +624 -0
- package/src/runtime-mcp/scope-config.ts +78 -0
- package/src/runtime-mcp/tool-bridge.ts +44 -10
- package/src/runtime-mcp/transports/http.ts +84 -13
- package/src/runtime-mcp/types.ts +123 -12
- package/src/sdk/acp/adapter.ts +328 -97
- package/src/sdk/broker/broker.ts +160 -741
- package/src/sdk/broker/ensure.ts +9 -1
- package/src/sdk/broker/lifecycle.ts +510 -116
- package/src/sdk/broker/operation-receipt-ledger.ts +11 -2
- package/src/sdk/broker/process-incarnation.ts +19 -0
- package/src/sdk/broker/session-index.ts +516 -117
- package/src/sdk/broker/startup-failure.ts +28 -5
- package/src/sdk/broker/transport.ts +1 -13
- package/src/sdk/bus/chat-daemon-cli.ts +4 -2
- package/src/sdk/bus/chat-daemon-control.ts +67 -6
- package/src/sdk/bus/chat-daemon-runtime.ts +183 -859
- package/src/sdk/bus/config.ts +13 -0
- package/src/sdk/bus/conversation-store.ts +59 -171
- package/src/sdk/bus/daemon-paths.ts +20 -0
- package/src/sdk/bus/discord-conversation.ts +2 -0
- package/src/sdk/bus/discord-daemon.ts +524 -126
- package/src/sdk/bus/discord-live-provider.ts +206 -79
- package/src/sdk/bus/existing-thread-readiness.ts +4 -97
- package/src/sdk/bus/inbound-reaction-ordering.ts +122 -0
- package/src/sdk/bus/index.ts +2480 -456
- package/src/sdk/bus/kind-aware-reconciliation.ts +204 -34
- package/src/sdk/bus/lifecycle-commands.ts +2 -2
- package/src/sdk/bus/managed-daemon.ts +2 -145
- package/src/sdk/bus/notification-service.ts +196 -0
- package/src/sdk/bus/operator-runtime.ts +1 -1
- package/src/sdk/bus/prompt-reconciliation.ts +24 -15
- package/src/sdk/bus/reconciliation-store.ts +553 -24
- package/src/sdk/bus/session-control.ts +49 -3
- package/src/sdk/bus/slack-conversation.ts +4 -0
- package/src/sdk/bus/slack-daemon.ts +733 -134
- package/src/sdk/bus/slack-live-provider.ts +65 -15
- package/src/sdk/bus/slack-provider.ts +4 -0
- package/src/sdk/bus/slack-thread-binding.ts +9 -104
- package/src/sdk/bus/telegram-adoption-intent.ts +299 -209
- package/src/sdk/bus/telegram-daemon-cli.ts +194 -7
- package/src/sdk/bus/telegram-daemon-contract.ts +265 -19
- package/src/sdk/bus/telegram-daemon-control.ts +3 -13
- package/src/sdk/bus/telegram-daemon-orphan-reap.ts +498 -0
- package/src/sdk/bus/telegram-daemon-owner-registry.ts +176 -0
- package/src/sdk/bus/telegram-daemon.ts +2552 -2280
- package/src/sdk/bus/telegram-reference.ts +1 -226
- package/src/sdk/bus/telegram-setup.ts +2 -2
- package/src/sdk/bus/threaded-render.ts +1 -0
- package/src/sdk/bus/topic-registry.ts +279 -146
- package/src/sdk/cli/rows.ts +2 -35
- package/src/sdk/cli/session-cli.ts +776 -700
- package/src/sdk/client/client.ts +892 -1
- package/src/sdk/host/control/dispatch.ts +93 -58
- package/src/sdk/host/control/index.ts +1 -1
- package/src/sdk/host/control/operations.ts +18 -10
- package/src/sdk/host/control/runtime-gate.ts +40 -0
- package/src/sdk/host/host.ts +63 -12
- package/src/sdk/host/query/handlers.ts +66 -7
- package/src/sdk/host/reverse-leases.ts +2 -2
- package/src/sdk/host/sdk-surface-parity.test.ts +1 -1
- package/src/sdk/host/session-runtime.test.ts +2787 -34
- package/src/sdk/host/session-runtime.ts +1489 -101
- package/src/sdk/host/surface-policy.ts +12 -8
- package/src/sdk/host/types.ts +1 -1
- package/src/sdk/host/websocket-transport.lifecycle.test.ts +31 -59
- package/src/sdk/host/websocket-transport.ts +85 -50
- package/src/sdk/index.ts +2 -1
- package/src/sdk/lifecycle/broker-client.ts +53 -0
- package/src/sdk/lifecycle/client.ts +234 -0
- package/src/sdk/lifecycle/index.ts +3 -0
- package/src/sdk/{bus/recent-activity.ts → lifecycle/recent-sessions.ts} +5 -2
- package/src/sdk/lifecycle/service.ts +720 -0
- package/src/sdk/mcp/server.ts +226 -188
- package/src/sdk/prompt-deadline-lease.ts +55 -0
- package/src/sdk/prompt-deadline-manager.ts +148 -0
- package/src/sdk/prompt-status.ts +11 -3
- package/src/sdk/protocol/operation-inventory.generated.json +272 -129
- package/src/sdk/protocol/operation-registry.ts +71 -8
- package/src/sdk/receipt-state.ts +43 -0
- package/src/sdk/reconciliation-extensions.ts +14 -0
- package/src/sdk/router/index.ts +1 -0
- package/src/sdk/router/session-router.ts +1658 -0
- package/src/sdk/session-list.ts +93 -0
- package/src/sdk/session-reconnect.ts +45 -1
- package/src/sdk/session.ts +716 -120
- package/src/sdk/transport/serve-cli.ts +18 -34
- package/src/session/account-inventory.ts +603 -0
- package/src/session/agent-session.ts +2857 -582
- package/src/session/agent-storage.ts +35 -0
- package/src/session/blob-store.ts +32 -1
- package/src/session/coordinator-tool-label.ts +40 -0
- package/src/session/internal/managed-session-scope.ts +4 -0
- package/src/session/internal/managed-session-storage.ts +173 -12
- package/src/session/messages.ts +1 -1
- package/src/session/secure-token-file.ts +80 -0
- package/src/session/session-manager.ts +730 -58
- package/src/session/session-storage.ts +25 -16
- package/src/session/startup-auth-config.ts +297 -0
- package/src/session/terminal-abort.ts +1253 -0
- package/src/session/yield-queue.ts +57 -15
- package/src/session-import/claude.ts +334 -0
- package/src/session-import/codex.ts +1033 -0
- package/src/session-import/command.ts +77 -0
- package/src/session-import/detect.ts +133 -0
- package/src/session-import/index.ts +7 -0
- package/src/session-import/provider-codex.ts +327 -0
- package/src/session-import/provider-service.ts +457 -0
- package/src/session-import/redact.ts +128 -0
- package/src/session-import/service.ts +1264 -0
- package/src/session-import/types.ts +148 -0
- package/src/setup/paseo/check.ts +213 -0
- package/src/setup/paseo/install-saga.ts +293 -0
- package/src/setup/paseo/json-publisher.ts +263 -0
- package/src/setup/paseo/orchestration-preferences.ts +86 -0
- package/src/setup/paseo/paseo-ownership.ts +224 -0
- package/src/setup/paseo/paseo-setup.ts +253 -0
- package/src/setup/paseo/provider-config.ts +139 -0
- package/src/setup/paseo/remove.ts +183 -0
- package/src/setup/paseo/result-types.ts +79 -0
- package/src/setup/paseo/setup-deps.ts +175 -0
- package/src/setup/paseo/skills-bridge.ts +260 -0
- package/src/skill-state/active-state.ts +21 -11
- package/src/slash-commands/acp-builtins.ts +9 -1
- package/src/slash-commands/builtin-registry.ts +98 -16
- package/src/slash-commands/helpers/credential-switch.ts +143 -0
- package/src/slash-commands/helpers/mcp.ts +9 -3
- package/src/slash-commands/helpers/usage-report.ts +61 -56
- package/src/slash-commands/types.ts +7 -2
- package/src/task/executor.ts +30 -11
- package/src/task/index.ts +66 -7
- package/src/task/render.ts +23 -9
- package/src/tools/ask-answer-registry.ts +23 -7
- package/src/tools/ask.ts +8 -4
- package/src/tools/bash-sleep-advisory.ts +115 -0
- package/src/tools/bash.ts +98 -18
- package/src/tools/browser/attach.ts +71 -3
- package/src/tools/browser/launch.ts +86 -13
- package/src/tools/browser/profile-discovery.ts +57 -7
- package/src/tools/browser/render.ts +8 -1
- package/src/tools/browser.ts +130 -21
- package/src/tools/computer.enforcement.test.ts +1 -1
- package/src/tools/computer.ts +3 -2
- package/src/tools/cron.ts +12 -1
- package/src/tools/image-gen.ts +27 -16
- package/src/tools/index.ts +8 -0
- package/src/tools/job.ts +33 -6
- package/src/tools/monitor.ts +41 -2
- package/src/tools/skill-discovery.ts +21 -29
- package/src/tools/subagent.ts +142 -24
- package/src/tools/tool-catalog.generated.ts +6 -6
- package/src/tools/ultragoal-ask-guard.ts +10 -3
- package/src/utils/herdr-pane.ts +345 -0
- package/src/utils/title-generator.ts +2 -0
- package/src/web/scrapers/index.ts +6 -4
- package/dist/types/cli/malloc-env-guard.test.d.ts +0 -1
- package/dist/types/defaults/gjc-defaults.test.d.ts +0 -1
- package/dist/types/memory-backend/lazy-loading.test.d.ts +0 -1
- package/dist/types/runtime/boot-ordering.test.d.ts +0 -1
- package/dist/types/runtime/lazy-service.test.d.ts +0 -1
- package/dist/types/runtime/network-prewarm-service.test.d.ts +0 -1
- package/dist/types/runtime/workspace-tree-service.test.d.ts +0 -1
- package/dist/types/runtime-mcp/config.test.d.ts +0 -1
- package/dist/types/runtime-mcp/http.test.d.ts +0 -1
- package/dist/types/runtime-mcp/manager-pool.test.d.ts +0 -1
- package/dist/types/runtime-mcp/pool-key.test.d.ts +0 -1
- package/dist/types/runtime-mcp/pool.test.d.ts +0 -1
- package/dist/types/sdk/bus/lifecycle-control-runtime.d.ts +0 -117
- package/dist/types/sdk/bus/lifecycle-orchestrator.d.ts +0 -141
- package/dist/types/sdk/bus/telegram-cli.d.ts +0 -31
- package/dist/types/sdk/elevation/allowlist.d.ts +0 -20
- package/dist/types/sdk/elevation/audit.d.ts +0 -93
- package/dist/types/sdk/elevation/capability.d.ts +0 -3
- package/dist/types/sdk/elevation/digest.d.ts +0 -72
- package/dist/types/sdk/elevation/dispatch-receipt.d.ts +0 -85
- package/dist/types/sdk/elevation/grant-ledger.d.ts +0 -163
- package/dist/types/sdk/elevation/owner.d.ts +0 -48
- package/dist/types/sdk/host/import-graph.test.d.ts +0 -1
- package/dist/types/sdk/host/sdk-surface-parity.test.d.ts +0 -1
- package/dist/types/sdk/host/session-runtime.test.d.ts +0 -1
- package/dist/types/sdk/host/websocket-transport.lifecycle.test.d.ts +0 -1
- package/dist/types/session/auth-broker-config.d.ts +0 -13
- package/dist/types/session/heap-eviction-artifacts.test.d.ts +0 -1
- package/dist/types/skills/skills.test.d.ts +0 -1
- package/dist/types/slash-commands/notify-command.test.d.ts +0 -1
- package/dist/types/task/token-log.test.d.ts +0 -1
- package/dist/types/tools/computer.enforcement.test.d.ts +0 -1
- package/dist/types/tools/descriptors.test.d.ts +0 -1
- package/scripts/g005-daemon-smoke.ts +0 -180
- package/scripts/g011-daemon-path-smoke.ts +0 -153
- package/src/sdk/bus/lifecycle-control-runtime.ts +0 -1733
- package/src/sdk/bus/lifecycle-orchestrator.ts +0 -489
- package/src/sdk/bus/telegram-cli.ts +0 -212
- package/src/sdk/elevation/allowlist.ts +0 -54
- package/src/sdk/elevation/audit.ts +0 -208
- package/src/sdk/elevation/capability.ts +0 -41
- package/src/sdk/elevation/digest.ts +0 -129
- package/src/sdk/elevation/dispatch-receipt.ts +0 -184
- package/src/sdk/elevation/grant-ledger.ts +0 -1142
- package/src/sdk/elevation/owner.ts +0 -109
- package/src/session/auth-broker-config.ts +0 -109
- /package/dist/types/{ai-core-import-gate.test.d.ts → discovery/claude-hooks.d.ts} +0 -0
- /package/dist/types/{cli/fixture-report.test.d.ts → discovery/codex-hooks.d.ts} +0 -0
- /package/dist/types/sdk/{bus/recent-activity.d.ts → lifecycle/recent-sessions.d.ts} +0 -0
|
@@ -29,13 +29,30 @@ import type { AskAnswerSource, AskAnswerSourceResult, AskRemoteControl } from ".
|
|
|
29
29
|
import { type SessionHostRuntimePublication } from "../broker/lifecycle";
|
|
30
30
|
import { type SessionSdkHost } from "../host";
|
|
31
31
|
import { CursorRegistry, RevisionStore } from "../host/query";
|
|
32
|
+
import type { SdkFrame } from "../host/types";
|
|
32
33
|
import { type SdkPromptTerminalOutcome } from "../prompt-status";
|
|
33
34
|
import { type SdkStartupFailure } from "../startup-capability";
|
|
34
35
|
import { type NotificationConfig } from "./config";
|
|
35
36
|
import { NotificationSessionController } from "./session-control";
|
|
36
|
-
import { type EnsureDaemonResult
|
|
37
|
+
import { type EnsureDaemonResult } from "./telegram-daemon";
|
|
37
38
|
export type { IdentityControlSuccessPathInput, IdentityControlTerminalPathInput, TerminalSendOutcome, } from "./control-drain-lease";
|
|
38
39
|
export { isNativeControlDrainAvailable, runIdentityControlSuccessPath, runIdentityControlTerminalPath, } from "./control-drain-lease";
|
|
40
|
+
export type NotificationInboundAdmission = {
|
|
41
|
+
outcome: "accept";
|
|
42
|
+
} | {
|
|
43
|
+
outcome: "drop";
|
|
44
|
+
reason: "inbound_fenced" | "policy_suspended";
|
|
45
|
+
} | {
|
|
46
|
+
outcome: "defer";
|
|
47
|
+
reason: "policy_suspended";
|
|
48
|
+
};
|
|
49
|
+
/** Exact production admission decision for daemon-originated session inbound. */
|
|
50
|
+
export declare function notificationInboundAdmission(input: {
|
|
51
|
+
inboundFenced: boolean;
|
|
52
|
+
policySuspended: boolean;
|
|
53
|
+
notificationOrigin: boolean;
|
|
54
|
+
controlCommand: boolean;
|
|
55
|
+
}): NotificationInboundAdmission;
|
|
39
56
|
type PromptTerminalDiagnostic = {
|
|
40
57
|
reason?: unknown;
|
|
41
58
|
loopStopReason?: string;
|
|
@@ -70,10 +87,6 @@ export type SessionCreateTarget = {
|
|
|
70
87
|
/** Identifies the session a `session_close` targets. */
|
|
71
88
|
export interface SessionCloseTarget {
|
|
72
89
|
sessionId: string;
|
|
73
|
-
/** Expected GJC-managed tmux session name (defense-in-depth match). */
|
|
74
|
-
tmuxSession?: string;
|
|
75
|
-
/** Expected `@gjc-session-state-file` tag (defense-in-depth match). */
|
|
76
|
-
sessionStateFile?: string;
|
|
77
90
|
}
|
|
78
91
|
/** Identifies the session a `session_resume` targets. */
|
|
79
92
|
export interface SessionResumeTarget {
|
|
@@ -81,107 +94,34 @@ export interface SessionResumeTarget {
|
|
|
81
94
|
/** Optional repo/working-dir hint to disambiguate matches. */
|
|
82
95
|
path?: string;
|
|
83
96
|
}
|
|
84
|
-
/** Create a new session. */
|
|
85
|
-
export interface SessionCreateFrame {
|
|
86
|
-
type: "session_create";
|
|
87
|
-
requestId: string;
|
|
88
|
-
/** Deterministic lifecycle marker preallocated by the daemon before spawn. */
|
|
89
|
-
lifecycleRequestId: string;
|
|
90
|
-
/** Session id the daemon preallocated and propagates to the child. */
|
|
91
|
-
intendedSessionId: string;
|
|
92
|
-
/** Telegram update id (idempotency key on the daemon side). */
|
|
93
|
-
updateId: number;
|
|
94
|
-
chatId: string;
|
|
95
|
-
/** Control-endpoint token authorizing this frame. */
|
|
96
|
-
token: string;
|
|
97
|
-
target: SessionCreateTarget;
|
|
98
|
-
/** Reserved for a future capability transport; any supplied value is rejected before lifecycle acceptance. */
|
|
99
|
-
startupPromptRef?: string;
|
|
100
|
-
/** Model profile preset to activate for the spawned session (--mpreset). */
|
|
101
|
-
modelPreset?: string;
|
|
102
|
-
}
|
|
103
|
-
/** Close (hard-kill, history preserved) a session. */
|
|
104
|
-
export interface SessionCloseFrame {
|
|
105
|
-
type: "session_close";
|
|
106
|
-
requestId: string;
|
|
107
|
-
updateId: number;
|
|
108
|
-
chatId: string;
|
|
109
|
-
token: string;
|
|
110
|
-
target: SessionCloseTarget;
|
|
111
|
-
/** Required force-only close flag; false/omitted is rejected by daemon policy. */
|
|
112
|
-
force?: boolean;
|
|
113
|
-
}
|
|
114
|
-
/** Resume a session (reattach if alive, else cold-restart from history). */
|
|
115
|
-
export interface SessionResumeFrame {
|
|
116
|
-
type: "session_resume";
|
|
117
|
-
requestId: string;
|
|
118
|
-
updateId: number;
|
|
119
|
-
chatId: string;
|
|
120
|
-
token: string;
|
|
121
|
-
target: SessionResumeTarget;
|
|
122
|
-
/** Reserved for a future capability transport; any supplied value is rejected before lifecycle acceptance. */
|
|
123
|
-
startupPromptRef?: string;
|
|
124
|
-
}
|
|
125
|
-
/** Any client -> ingress lifecycle request frame. */
|
|
126
|
-
export type SessionLifecycleRequest = SessionCreateFrame | SessionCloseFrame | SessionResumeFrame;
|
|
127
|
-
/** Terminal status of a lifecycle request. */
|
|
128
97
|
export type LifecycleStatus = "ok" | "error";
|
|
129
|
-
/** A connected session's per-session endpoint, returned to the control client. */
|
|
130
|
-
export interface LifecycleEndpoint {
|
|
131
|
-
url: string;
|
|
132
|
-
token: string;
|
|
133
|
-
}
|
|
134
|
-
/** The Telegram topic/thread a session is surfaced in. */
|
|
135
|
-
export interface LifecycleTopic {
|
|
136
|
-
chatId: string;
|
|
137
|
-
threadId: string;
|
|
138
|
-
}
|
|
139
|
-
/** How a create request was correlated to its spawned session. */
|
|
140
|
-
export type MatchedBy = "spawn_marker" | "session_ready";
|
|
141
|
-
/** Response to a successful `session_create`. */
|
|
142
98
|
export interface SessionCreateResponseFrame {
|
|
143
99
|
type: "session_create_response";
|
|
144
100
|
requestId: string;
|
|
145
101
|
status: LifecycleStatus;
|
|
146
|
-
lifecycleRequestId: string;
|
|
147
102
|
sessionId: string;
|
|
148
|
-
matchedBy: MatchedBy;
|
|
149
|
-
endpoint: LifecycleEndpoint;
|
|
150
|
-
topic: LifecycleTopic;
|
|
151
103
|
target: SessionCreateTarget;
|
|
152
104
|
}
|
|
153
|
-
/** Response to a successful `session_close`. */
|
|
154
105
|
export interface SessionCloseResponseFrame {
|
|
155
106
|
type: "session_close_response";
|
|
156
107
|
requestId: string;
|
|
157
108
|
status: LifecycleStatus;
|
|
158
109
|
sessionId: string;
|
|
159
|
-
processGone: boolean;
|
|
160
|
-
historyPreserved: boolean;
|
|
161
|
-
endpointStale: boolean;
|
|
162
110
|
}
|
|
163
|
-
/** Whether a resume reattached to a live session or cold-restarted a dead one. */
|
|
164
111
|
export type ResumeMode = "reattached" | "cold_restarted";
|
|
165
|
-
/** Response to a successful `session_resume`. */
|
|
166
112
|
export interface SessionResumeResponseFrame {
|
|
167
113
|
type: "session_resume_response";
|
|
168
114
|
requestId: string;
|
|
169
115
|
status: LifecycleStatus;
|
|
170
116
|
sessionId: string;
|
|
171
117
|
mode: ResumeMode;
|
|
172
|
-
endpoint: LifecycleEndpoint;
|
|
173
|
-
topic: LifecycleTopic;
|
|
174
118
|
}
|
|
175
|
-
/** Machine-readable reason a lifecycle request failed. */
|
|
176
119
|
export type LifecycleErrorReason = "unauthorized" | "rate_limited" | "duplicate_conflict" | "invalid_target" | "ambiguous_target" | "spawn_failed" | "discovery_timeout" | "readiness_timeout" | "close_refused" | "not_found" | "terminal_uncertain" | "unsupported_platform";
|
|
177
|
-
/** A candidate returned with an `ambiguous_target` resume error. */
|
|
178
120
|
export interface ResumeCandidate {
|
|
179
121
|
sessionId: string;
|
|
180
122
|
path?: string;
|
|
181
|
-
/** Last-activity epoch-millis (session history file mtime), if known. */
|
|
182
123
|
mtimeMs?: number;
|
|
183
124
|
}
|
|
184
|
-
/** A structured lifecycle error frame. */
|
|
185
125
|
export interface SessionLifecycleErrorFrame {
|
|
186
126
|
type: "session_lifecycle_error";
|
|
187
127
|
requestId: string;
|
|
@@ -190,7 +130,6 @@ export interface SessionLifecycleErrorFrame {
|
|
|
190
130
|
message: string;
|
|
191
131
|
candidates?: ResumeCandidate[];
|
|
192
132
|
}
|
|
193
|
-
/** Any ingress -> client lifecycle response frame. */
|
|
194
133
|
export type SessionLifecycleResponse = SessionCreateResponseFrame | SessionCloseResponseFrame | SessionResumeResponseFrame | SessionLifecycleErrorFrame;
|
|
195
134
|
/**
|
|
196
135
|
* Replayable per-session readiness signal (mirror of the Rust `session_ready`
|
|
@@ -327,6 +266,9 @@ export declare class PresentationArbiter {
|
|
|
327
266
|
interface SessionRuntime {
|
|
328
267
|
server: NotificationServer;
|
|
329
268
|
host: SessionSdkHost;
|
|
269
|
+
/** Delivers one ring-positioned event envelope to every attached subscriber
|
|
270
|
+
* connection, applying the same capability gate as event replay. */
|
|
271
|
+
broadcastEventFrame: (event: SdkFrame) => void;
|
|
330
272
|
/** Owns stateRoot-backed revisions and removes their spills on terminal shutdown. */
|
|
331
273
|
revisions: RevisionStore;
|
|
332
274
|
/** Releases all snapshot pins before the revision store is closed. */
|
|
@@ -336,6 +278,8 @@ interface SessionRuntime {
|
|
|
336
278
|
/** Discovery scope is fixed before publication; a live default endpoint is never rotated in place. */
|
|
337
279
|
endpointScope: "default" | "chat";
|
|
338
280
|
idleSeq: number;
|
|
281
|
+
/** Stops delayed session-name observation when this runtime loses authority. */
|
|
282
|
+
stopSessionNameObserver: () => void;
|
|
339
283
|
/** Interactive asks awaiting a remote answer, by action id. */
|
|
340
284
|
pendingInteractive: Map<string, PendingInteractiveAsk>;
|
|
341
285
|
/** Deregisters this session's ask answer source. */
|
|
@@ -348,6 +292,12 @@ interface SessionRuntime {
|
|
|
348
292
|
notificationsActive: boolean;
|
|
349
293
|
/** Provider ownership state is independent from the already-published core SDK runtime. */
|
|
350
294
|
notificationOwnerState: "ready" | "retry" | "blocked";
|
|
295
|
+
/**
|
|
296
|
+
* Ownership-relevant configuration identity this runtime's owner state was
|
|
297
|
+
* proved under. A settled outcome may only be applied while it still matches,
|
|
298
|
+
* so a credential/destination/enablement change forces a re-proof.
|
|
299
|
+
*/
|
|
300
|
+
notificationOwnerKey?: string;
|
|
351
301
|
/** Rejects new SDK frames while a leased terminal response drains. */
|
|
352
302
|
inboundFenced: boolean;
|
|
353
303
|
/** Set as soon as terminal teardown is requested, before startup settles. */
|
|
@@ -381,12 +331,6 @@ interface SessionRuntime {
|
|
|
381
331
|
/** This runtime's own host-liveness publication; only its teardown may retract it. */
|
|
382
332
|
evidencePublication?: SessionHostRuntimePublication;
|
|
383
333
|
brokerRegistrationReleased: boolean;
|
|
384
|
-
/** Managed Telegram root registration released during terminal teardown. */
|
|
385
|
-
notificationRootRegistration?: {
|
|
386
|
-
settings: Settings;
|
|
387
|
-
cwd: string;
|
|
388
|
-
registrationToken: string;
|
|
389
|
-
};
|
|
390
334
|
verbosity: "lean" | "verbose";
|
|
391
335
|
sessionTag: string;
|
|
392
336
|
/** Whether the agent loop is currently running (drives the typing indicator). */
|
|
@@ -396,6 +340,11 @@ interface SessionRuntime {
|
|
|
396
340
|
commandId: string;
|
|
397
341
|
turnId: string;
|
|
398
342
|
}>;
|
|
343
|
+
/** SDK run tokens bind an accepted queued follow-up to only its matching agent_start. */
|
|
344
|
+
pendingPromptCorrelationsBySdkRunToken: Map<string, {
|
|
345
|
+
commandId: string;
|
|
346
|
+
turnId: string;
|
|
347
|
+
}>;
|
|
399
348
|
/** Identity bound to the agent lifecycle currently in flight. */
|
|
400
349
|
activePromptCorrelation?: {
|
|
401
350
|
commandId: string;
|
|
@@ -425,7 +374,7 @@ interface SessionRuntime {
|
|
|
425
374
|
} | {
|
|
426
375
|
type: "agent_failed";
|
|
427
376
|
error: unknown;
|
|
428
|
-
}) => void
|
|
377
|
+
}) => void | Promise<void>;
|
|
429
378
|
/** Settles and emits one sanitized correlated prompt failure. */
|
|
430
379
|
emitPromptFailure: (correlation: {
|
|
431
380
|
commandId: string;
|
|
@@ -473,17 +422,33 @@ interface SessionRuntime {
|
|
|
473
422
|
turnClosed?: boolean;
|
|
474
423
|
/** Finalized while provisional policy was held; flush exactly once on stable activation. */
|
|
475
424
|
pendingFinal?: {
|
|
476
|
-
|
|
477
|
-
|
|
425
|
+
window: number;
|
|
426
|
+
receipts: Array<{
|
|
427
|
+
text: string;
|
|
428
|
+
messageRef?: string;
|
|
429
|
+
origin: "user" | "autonomous" | "continuation";
|
|
430
|
+
}>;
|
|
478
431
|
};
|
|
432
|
+
/** Monotonic user-request boundary for deferred lean delivery. */
|
|
433
|
+
settlementWindow: number;
|
|
434
|
+
/** Provenance of the currently executing assistant turn. */
|
|
435
|
+
currentTurnSettlementOrigin?: "user" | "autonomous" | "continuation";
|
|
436
|
+
/** Immutable settlement boundary captured when the current turn begins. */
|
|
437
|
+
currentTurnSettlementWindow?: number;
|
|
479
438
|
/**
|
|
480
|
-
* Lean-mode deferred
|
|
481
|
-
*
|
|
482
|
-
*
|
|
439
|
+
* Lean-mode deferred receipts for the current user-request settlement window.
|
|
440
|
+
* Ordinary tool-loop turns retain latest-turn-wins behaviour. An autonomous
|
|
441
|
+
* continuation has no new user request, so it appends instead of erasing the
|
|
442
|
+
* prior receipt. The small fixed receipt bound prevents an unbounded idle wait
|
|
443
|
+
* from retaining the full transcript.
|
|
483
444
|
*/
|
|
484
445
|
pendingSettled?: {
|
|
485
|
-
|
|
486
|
-
|
|
446
|
+
window: number;
|
|
447
|
+
receipts: Array<{
|
|
448
|
+
text: string;
|
|
449
|
+
messageRef?: string;
|
|
450
|
+
origin: "user" | "autonomous" | "continuation";
|
|
451
|
+
}>;
|
|
487
452
|
};
|
|
488
453
|
/** SDK control frames received during provisional ownership; replayed only after stable activation. */
|
|
489
454
|
deferredInboundControls: Array<() => void>;
|
|
@@ -594,9 +559,13 @@ export declare class EphemeralTurnHost {
|
|
|
594
559
|
evictTerminalEvents(): void;
|
|
595
560
|
}
|
|
596
561
|
/**
|
|
597
|
-
* Ensures every configured chat-provider daemon is ready
|
|
598
|
-
*
|
|
599
|
-
*
|
|
562
|
+
* Ensures every configured chat-provider daemon is ready.
|
|
563
|
+
*
|
|
564
|
+
* This runs strictly AFTER the SDK publishes session identity and its core
|
|
565
|
+
* endpoint, through the detached ownership coordinator: chat providers are
|
|
566
|
+
* optional notification adapters, never session authority. A rejected ensure
|
|
567
|
+
* therefore degrades notification delivery only — the coordinator records it
|
|
568
|
+
* as `failed`, adapters stay withheld, and a later reconcile re-attempts.
|
|
600
569
|
*/
|
|
601
570
|
export declare function ensureConfiguredProviderDaemons(settings: Settings, cfg: NotificationConfig, ensureProviderDaemon?: (provider: "discord" | "slack", settings: Settings) => Promise<unknown>): Promise<void>;
|
|
602
571
|
/**
|
|
@@ -614,9 +583,6 @@ export declare function createNotificationsExtension(api: ExtensionAPI, options?
|
|
|
614
583
|
settings?: Settings;
|
|
615
584
|
ensureTelegramDaemon?: (input: {
|
|
616
585
|
settings: Settings;
|
|
617
|
-
cwd: string;
|
|
618
|
-
sessionId: string;
|
|
619
|
-
onRegistered?: (registration: RegisterNotificationRootResult) => void;
|
|
620
586
|
}) => Promise<EnsureDaemonResult>;
|
|
621
587
|
ensureProviderDaemon?: (provider: "discord" | "slack", settings: Settings) => Promise<unknown>;
|
|
622
588
|
/** Suppress auto-delivery for a GJC-spawned child under `sessionScope=primary`. */
|
|
@@ -635,4 +601,24 @@ export declare function createNotificationsExtension(api: ExtensionAPI, options?
|
|
|
635
601
|
}) => void;
|
|
636
602
|
readNotificationFile?: (path: string) => Promise<Buffer>;
|
|
637
603
|
readNotificationDiffStat?: (cwd: string) => Promise<string | undefined>;
|
|
604
|
+
/**
|
|
605
|
+
* INTERNAL terminal-abort session seams, threaded directly from the owning
|
|
606
|
+
* session — deliberately NOT on the public ExtensionContext so third-party
|
|
607
|
+
* extensions cannot observe attempt epochs or cancel the session-global
|
|
608
|
+
* preflight outside the durable admission path (review thread P2).
|
|
609
|
+
*/
|
|
610
|
+
terminalAbortSeams?: {
|
|
611
|
+
getTerminalTurnEpoch: () => number | undefined;
|
|
612
|
+
cancelPendingPreflightForTerminalAbort: () => void;
|
|
613
|
+
captureTerminalAbortSteeringSnapshot?: () => void;
|
|
614
|
+
discardTerminalAbortSteeringSnapshot?: (token: number) => void;
|
|
615
|
+
rebindTerminalAbortSteeringSnapshot?: (token: number) => void;
|
|
616
|
+
abortPromptAndWaitWithTerminal: (handle: string, options: {
|
|
617
|
+
graceMs: number;
|
|
618
|
+
terminal?: {
|
|
619
|
+
scope: "turn" | "owned";
|
|
620
|
+
expectedEpoch?: number;
|
|
621
|
+
};
|
|
622
|
+
}) => Promise<RunSettlementProof>;
|
|
623
|
+
};
|
|
638
624
|
}): void;
|
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Kind-aware invocation reconciliation (prompt | skill) with optional durable store.
|
|
3
|
-
* Preserves Q26 admit/first-terminal/capacity/TTL semantics; indexes and caps are per-kind.
|
|
4
|
-
*/
|
|
5
1
|
import type { PromptReconciliationStatus, SdkPromptTerminalOutcome, TurnPromptReconciliation } from "../prompt-status";
|
|
2
|
+
import type { ReceiptState } from "../receipt-state";
|
|
6
3
|
import { type TurnResultContent, type TurnResultPage } from "../turn-result";
|
|
7
4
|
import { type PromptCorrelation } from "./prompt-reconciliation";
|
|
8
5
|
import type { ReconciliationKind, ReconciliationStore } from "./reconciliation-store";
|
|
@@ -11,6 +8,18 @@ export interface KindCorrelation extends PromptCorrelation {
|
|
|
11
8
|
kind: ReconciliationKind;
|
|
12
9
|
content?: TurnResultContent;
|
|
13
10
|
}
|
|
11
|
+
export interface SteerReconciliationResult {
|
|
12
|
+
commandId: string;
|
|
13
|
+
turnId: string;
|
|
14
|
+
clientRef: string;
|
|
15
|
+
status: "accepted" | "rejected" | "uncertain";
|
|
16
|
+
acceptedAt: number;
|
|
17
|
+
terminalAt?: number;
|
|
18
|
+
error?: {
|
|
19
|
+
code: string;
|
|
20
|
+
message: string;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
14
23
|
export interface KindAwareReconciliation {
|
|
15
24
|
admit(kind: ReconciliationKind, clientRef?: string): void;
|
|
16
25
|
releaseAdmission(kind: ReconciliationKind, clientRef?: string): void;
|
|
@@ -25,12 +34,12 @@ export interface KindAwareReconciliation {
|
|
|
25
34
|
error: unknown;
|
|
26
35
|
content?: TurnResultContent;
|
|
27
36
|
}): Promise<void>;
|
|
28
|
-
claimPendingOutcome(correlation: PromptCorrelation, outcome: SdkPromptTerminalOutcome): Promise<SdkPromptTerminalOutcome>;
|
|
29
|
-
|
|
37
|
+
claimPendingOutcome(kind: ReconciliationKind, correlation: PromptCorrelation, outcome: SdkPromptTerminalOutcome, receiptState?: Extract<ReceiptState, "present" | "missing">): Promise<SdkPromptTerminalOutcome>;
|
|
38
|
+
finalizeOutcome(kind: ReconciliationKind, correlation: PromptCorrelation, outcome?: SdkPromptTerminalOutcome, recordError?: {
|
|
30
39
|
code: string;
|
|
31
40
|
message: string;
|
|
32
41
|
}, content?: unknown): Promise<void>;
|
|
33
|
-
peekPendingOutcome(correlation: PromptCorrelation): SdkPromptTerminalOutcome | undefined;
|
|
42
|
+
peekPendingOutcome(kind: ReconciliationKind, correlation: PromptCorrelation): SdkPromptTerminalOutcome | undefined;
|
|
34
43
|
lookup(kind: ReconciliationKind, selector: {
|
|
35
44
|
commandId?: string;
|
|
36
45
|
turnId?: string;
|
|
@@ -41,6 +50,19 @@ export interface KindAwareReconciliation {
|
|
|
41
50
|
turnId?: string;
|
|
42
51
|
clientRef?: string;
|
|
43
52
|
}): TurnResultPage;
|
|
53
|
+
reserveSteer(clientRef: string, text: string): Promise<{
|
|
54
|
+
replay: boolean;
|
|
55
|
+
result: SteerReconciliationResult;
|
|
56
|
+
}>;
|
|
57
|
+
settleSteer(clientRef: string, status: "accepted" | "rejected" | "uncertain", error?: unknown): Promise<SteerReconciliationResult>;
|
|
58
|
+
lookupSteer(selector: string | {
|
|
59
|
+
commandId?: string;
|
|
60
|
+
turnId?: string;
|
|
61
|
+
clientRef?: string;
|
|
62
|
+
}): SteerReconciliationResult | {
|
|
63
|
+
clientRef?: string;
|
|
64
|
+
status: "unknown";
|
|
65
|
+
};
|
|
44
66
|
cleanup(): void;
|
|
45
67
|
activeCount(kind: ReconciliationKind): number;
|
|
46
68
|
/** Hydrate from durable store (call once at session host start). */
|
|
@@ -1,48 +1,18 @@
|
|
|
1
|
-
import type { Settings } from "../../config/settings";
|
|
2
1
|
import { RateLimitPool } from "./rate-limit-pool";
|
|
3
2
|
import { type ThreadedSend } from "./threaded-render";
|
|
4
|
-
|
|
5
|
-
readdir(path: string): Promise<string[]>;
|
|
6
|
-
}
|
|
7
|
-
export interface ManagedSessionSocket {
|
|
8
|
-
sessionId: string;
|
|
9
|
-
token: string;
|
|
10
|
-
ws: WebSocket;
|
|
11
|
-
pending: Map<string, {
|
|
12
|
-
sessionId: string;
|
|
13
|
-
actionId: string;
|
|
14
|
-
}>;
|
|
15
|
-
capable: boolean;
|
|
16
|
-
lastPongAt: number;
|
|
17
|
-
awaitingNonce: string | undefined;
|
|
18
|
-
pingTimer: ReturnType<typeof setInterval> | undefined;
|
|
19
|
-
}
|
|
3
|
+
/** Shared presentation engine for managed notification providers. */
|
|
20
4
|
export interface ManagedNotificationDaemonOptions {
|
|
21
|
-
settings: Settings;
|
|
22
|
-
fs: ManagedNotificationDaemonFs;
|
|
23
|
-
WebSocketImpl?: typeof WebSocket;
|
|
24
5
|
now?: () => number;
|
|
25
|
-
setIntervalImpl?: typeof setInterval;
|
|
26
|
-
clearIntervalImpl?: typeof clearInterval;
|
|
27
6
|
rateLimitPool?: RateLimitPool<{
|
|
28
7
|
send: ThreadedSend;
|
|
29
8
|
topicId?: string;
|
|
30
9
|
}>;
|
|
31
10
|
}
|
|
32
11
|
export declare abstract class ManagedNotificationDaemon {
|
|
33
|
-
protected readonly opts: ManagedNotificationDaemonOptions;
|
|
34
|
-
readonly sessions: Map<string, ManagedSessionSocket>;
|
|
35
12
|
readonly pool: RateLimitPool<{
|
|
36
13
|
send: ThreadedSend;
|
|
37
14
|
topicId?: string;
|
|
38
15
|
}>;
|
|
39
|
-
protected constructor(opts
|
|
40
|
-
scanRoots(): Promise<void>;
|
|
41
|
-
connectSession(sessionId: string, url: string, token: string): ManagedSessionSocket;
|
|
42
|
-
protected handleSessionMessage(session: ManagedSessionSocket, msg: Record<string, unknown>): Promise<boolean>;
|
|
16
|
+
protected constructor(opts?: ManagedNotificationDaemonOptions);
|
|
43
17
|
protected renderFrame(frame: Record<string, unknown>): ThreadedSend | undefined;
|
|
44
|
-
protected dropSession(session: ManagedSessionSocket): void;
|
|
45
|
-
protected abstract readRoots(): Promise<string[]>;
|
|
46
|
-
private sendHello;
|
|
47
|
-
private startLiveness;
|
|
48
18
|
}
|
|
@@ -251,6 +251,14 @@ export interface NotificationRecoveryReport {
|
|
|
251
251
|
endpointsRetainedPlaceholders?: string[];
|
|
252
252
|
/** Cleanup entries retained with unverified or mismatching identity. */
|
|
253
253
|
endpointsRetainedUnknown?: string[];
|
|
254
|
+
/** Stale quarantine/staging debris removed from the endpoint and daemon dirs. */
|
|
255
|
+
debrisRemoved?: string[];
|
|
256
|
+
/** Debris candidates retained by policy (young, live writer). */
|
|
257
|
+
debrisKept?: number;
|
|
258
|
+
/** Debris removals attempted without conclusive success (identity/unlink). */
|
|
259
|
+
debrisFailures?: number;
|
|
260
|
+
/** At least one debris directory listing failed; the sweep was not exhaustive. */
|
|
261
|
+
debrisScanFailed?: boolean;
|
|
254
262
|
daemon: {
|
|
255
263
|
action: DaemonRecoveryAction;
|
|
256
264
|
detail: string;
|
|
@@ -317,6 +325,50 @@ export declare function acquireDaemonTransitionLock(input: {
|
|
|
317
325
|
retryDelayMs?: number;
|
|
318
326
|
randomToken?: () => string;
|
|
319
327
|
}): Promise<DaemonTransitionLock | undefined>;
|
|
328
|
+
/**
|
|
329
|
+
* Minimum age before age-based debris removal. Quarantine artifacts are inert
|
|
330
|
+
* the moment they are detached, but the age bound keeps the sweep clear of any
|
|
331
|
+
* recovery pass still holding a `detachedPath` reference in its report.
|
|
332
|
+
*/
|
|
333
|
+
export declare const NOTIFICATION_DEBRIS_MIN_AGE_MS: number;
|
|
334
|
+
export interface NotificationDebrisSweepReport {
|
|
335
|
+
/** Basenames removed from the swept directory. */
|
|
336
|
+
removed: string[];
|
|
337
|
+
/** Debris candidates retained (young, live writer, or identity/unlink refusal). */
|
|
338
|
+
kept: number;
|
|
339
|
+
/**
|
|
340
|
+
* Candidates whose removal was ATTEMPTED and did not conclusively succeed
|
|
341
|
+
* (identity mismatch, unreadable candidate, unlink error). Distinct from
|
|
342
|
+
* `kept`-by-policy so a caller can see that a sweep was not fully effective.
|
|
343
|
+
*/
|
|
344
|
+
failures: number;
|
|
345
|
+
/** The directory listing itself failed; nothing could be inspected. */
|
|
346
|
+
scanFailed?: boolean;
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* Remove inert filesystem debris from a notification/state directory:
|
|
350
|
+
* quarantine targets of already-detached markers and endpoints, exact-unlink
|
|
351
|
+
* exchange placeholders, and leaked atomic-write staging files.
|
|
352
|
+
*
|
|
353
|
+
* Removal requires positive staleness proof — a dead recorded writer pid for
|
|
354
|
+
* staging files, or an mtime older than {@link NOTIFICATION_DEBRIS_MIN_AGE_MS}
|
|
355
|
+
* for everything else. Canonical files can never match the debris patterns, and
|
|
356
|
+
* a young staging file with a live writer is kept.
|
|
357
|
+
*
|
|
358
|
+
* Age, terminal-scrub proof, and the delete identity all come from ONE
|
|
359
|
+
* no-follow snapshot of the candidate. Judging age from a separate `stat` would
|
|
360
|
+
* prove one pathname stale and then bind the delete to whatever occupied that
|
|
361
|
+
* pathname afterwards, so a live successor could be removed on a predecessor's
|
|
362
|
+
* staleness. A candidate replaced after the snapshot fails the identity match
|
|
363
|
+
* and is retained; a symlinked, non-regular, or unreadable candidate is refused
|
|
364
|
+
* outright. Every inconclusive attempt is counted in `failures` rather than
|
|
365
|
+
* silently folded into `kept`.
|
|
366
|
+
*/
|
|
367
|
+
export declare function sweepNotificationDebris(input: {
|
|
368
|
+
dir: string;
|
|
369
|
+
deps?: NotificationServiceDeps;
|
|
370
|
+
minAgeMs?: number;
|
|
371
|
+
}): Promise<NotificationDebrisSweepReport>;
|
|
320
372
|
/**
|
|
321
373
|
* Ownership-protected cleanup. Removes only DEAD-owner artifacts:
|
|
322
374
|
* per-session endpoint files with positive proof of death (a stale tombstone or
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export interface NotificationOperatorTimerDeps {
|
|
2
2
|
now?: () => number;
|
|
3
|
-
setTimeoutImpl?:
|
|
3
|
+
setTimeoutImpl?: (callback: () => void, ms?: number) => Timer | NodeJS.Timeout;
|
|
4
4
|
clearTimeoutImpl?: typeof clearTimeout;
|
|
5
5
|
setIntervalImpl?: typeof setInterval;
|
|
6
6
|
clearIntervalImpl?: typeof clearInterval;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Bounded
|
|
2
|
+
* Bounded prompt reconciliation state for canonical Q26 `turn.result` with
|
|
3
|
+
* `kind: "prompt"`, plus the legacy `turn.prompt_status` alias.
|
|
3
4
|
*
|
|
4
5
|
* Separate from the lifecycle delivery buffers (promptSubmissions /
|
|
5
6
|
* promptTerminalTombstones), which exist to deliver frames and intentionally
|
|
@@ -9,8 +10,8 @@
|
|
|
9
10
|
*
|
|
10
11
|
* Semantics (public contract, mirrored in sdk/prompt-status.ts):
|
|
11
12
|
* - Active records are NEVER converted to terminal by age or capacity.
|
|
12
|
-
* - Terminal records are
|
|
13
|
-
*
|
|
13
|
+
* - Terminal records are bounded to TERMINAL_CAPACITY and evicted
|
|
14
|
+
* oldest-terminal-first by terminalAt; only then
|
|
14
15
|
* does a lookup honestly report `unknown`.
|
|
15
16
|
* - Process-local durability floor is the live session process: restart means `unknown`.
|
|
16
17
|
* Session-scoped durable retention (kind-aware store) is provided by reconciliation-store.ts (#3032).
|
|
@@ -21,10 +22,10 @@
|
|
|
21
22
|
* record that has none, but never changes status, terminalAt, or retention.
|
|
22
23
|
*/
|
|
23
24
|
import { PROMPT_FAILURE_CODE_MAX, sanitizePromptFailure } from "../prompt-failure";
|
|
25
|
+
import type { ReceiptState } from "../receipt-state";
|
|
24
26
|
export { PROMPT_FAILURE_CODE_MAX, sanitizePromptFailure };
|
|
25
27
|
export declare const PROMPT_RECONCILIATION_ACTIVE_CAPACITY = 128;
|
|
26
28
|
export declare const PROMPT_RECONCILIATION_TERMINAL_CAPACITY = 256;
|
|
27
|
-
export declare const PROMPT_RECONCILIATION_TERMINAL_TTL_MS: number;
|
|
28
29
|
export type PromptReconciliationStatus = "accepted" | "in_flight" | "terminal_ok" | "failed";
|
|
29
30
|
export interface PromptCorrelation {
|
|
30
31
|
commandId: string;
|
|
@@ -40,15 +41,18 @@ export interface PromptReconciliationRecord extends PromptCorrelation {
|
|
|
40
41
|
acceptedAt: number;
|
|
41
42
|
startedAt?: number;
|
|
42
43
|
terminalAt?: number;
|
|
44
|
+
receiptState?: Exclude<ReceiptState, "absent">;
|
|
43
45
|
}
|
|
44
46
|
export type TurnPromptReconciliation = {
|
|
45
47
|
status: "accepted";
|
|
48
|
+
receiptState: "absent";
|
|
46
49
|
commandId: string;
|
|
47
50
|
turnId: string;
|
|
48
51
|
clientRef?: string;
|
|
49
52
|
acceptedAt: number;
|
|
50
53
|
} | {
|
|
51
54
|
status: "in_flight";
|
|
55
|
+
receiptState: "absent";
|
|
52
56
|
commandId: string;
|
|
53
57
|
turnId: string;
|
|
54
58
|
clientRef?: string;
|
|
@@ -56,6 +60,7 @@ export type TurnPromptReconciliation = {
|
|
|
56
60
|
startedAt: number;
|
|
57
61
|
} | {
|
|
58
62
|
status: "terminal_ok";
|
|
63
|
+
receiptState: Exclude<ReceiptState, "absent">;
|
|
59
64
|
commandId: string;
|
|
60
65
|
turnId: string;
|
|
61
66
|
clientRef?: string;
|
|
@@ -69,6 +74,7 @@ export type TurnPromptReconciliation = {
|
|
|
69
74
|
};
|
|
70
75
|
} | {
|
|
71
76
|
status: "failed";
|
|
77
|
+
receiptState: Exclude<ReceiptState, "absent">;
|
|
72
78
|
commandId: string;
|
|
73
79
|
turnId: string;
|
|
74
80
|
clientRef?: string;
|
|
@@ -81,6 +87,7 @@ export type TurnPromptReconciliation = {
|
|
|
81
87
|
};
|
|
82
88
|
} | {
|
|
83
89
|
status: "unknown";
|
|
90
|
+
receiptState: "unknown";
|
|
84
91
|
};
|
|
85
92
|
export interface PromptReconciliation {
|
|
86
93
|
/** Fail-closed admission BEFORE any execution; holds an identity-bound reservation. */
|
|
@@ -91,10 +98,14 @@ export interface PromptReconciliation {
|
|
|
91
98
|
noteAccepted(correlation: PromptCorrelation, clientRef?: string): void;
|
|
92
99
|
/** Lifecycle transition; terminal outcomes settle exactly once. */
|
|
93
100
|
noteTransition(correlation: PromptCorrelation | undefined, frame: {
|
|
94
|
-
type: "agent_start"
|
|
101
|
+
type: "agent_start";
|
|
102
|
+
} | {
|
|
103
|
+
type: "agent_end";
|
|
104
|
+
finalText?: string;
|
|
95
105
|
} | {
|
|
96
106
|
type: "agent_failed";
|
|
97
107
|
error: unknown;
|
|
108
|
+
finalText?: string;
|
|
98
109
|
}): void;
|
|
99
110
|
lookup(selector: {
|
|
100
111
|
commandId?: string;
|