@gajae-code/coding-agent 0.13.2 → 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 +215 -8
- 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 +10 -1
- package/dist/types/config/models-config-schema.d.ts +2 -0
- package/dist/types/config/settings-schema.d.ts +73 -9
- 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 +2 -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/dynamic-theme-text.d.ts +9 -0
- package/dist/types/modes/components/gajae-pet-widget.d.ts +6 -28
- 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 +7 -21
- package/dist/types/modes/components/settings-selector.d.ts +5 -0
- 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/theme/defaults/index.d.ts +118 -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 +47 -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 +10 -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 +23 -2
- package/src/config/model-profiles.ts +88 -21
- package/src/config/model-registry.ts +147 -21
- package/src/config/models-config-schema.ts +1 -1
- package/src/config/settings-schema.ts +77 -7
- 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/extensions/grok-cli-vendor/src/models/catalog.ts +31 -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 +41 -32
- package/src/main.ts +36 -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/chrome.ts +4 -3
- 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/dynamic-theme-text.ts +22 -0
- package/src/modes/components/gajae-pet-widget.ts +607 -193
- package/src/modes/components/irc-sidebar.ts +11 -0
- package/src/modes/components/iterm-pet-transport.ts +585 -0
- package/src/modes/components/model-selector.ts +1 -6
- package/src/modes/components/oauth-selector.ts +277 -86
- package/src/modes/components/pet-capability.ts +35 -31
- package/src/modes/components/settings-selector.ts +29 -5
- package/src/modes/components/status-line/gh.ts +45 -1
- package/src/modes/components/status-line/segments.ts +19 -4
- 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 +238 -77
- 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/theme/defaults/index.ts +2 -0
- package/src/modes/theme/defaults/ouroboros.json +118 -0
- 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 +2873 -559
- 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 +199 -31
- package/src/session/messages.ts +1 -1
- package/src/session/secure-token-file.ts +80 -0
- package/src/session/session-manager.ts +757 -57
- 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 +117 -19
- 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 +349 -142
- 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/todo-contract.ts +55 -3
- package/src/tools/todo-write.ts +4 -3
- 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
|
@@ -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;
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import type { PromptReconciliationStatus, SdkPromptTerminalOutcome } from "../prompt-status";
|
|
2
|
+
import type { ReceiptState } from "../receipt-state";
|
|
2
3
|
import { type TurnResultContent } from "../turn-result";
|
|
3
4
|
import type { PromptCorrelation } from "./prompt-reconciliation";
|
|
4
|
-
export declare const RECONCILIATION_STORE_VERSION =
|
|
5
|
+
export declare const RECONCILIATION_STORE_VERSION = 2;
|
|
6
|
+
export declare const RECONCILIATION_STORE_VERSION_V1 = 1;
|
|
5
7
|
export declare const RECONCILIATION_SESSION_ID_PATTERN: RegExp;
|
|
6
8
|
export declare const RECONCILIATION_DIR_NAME = ".sdk-reconciliation";
|
|
7
|
-
export
|
|
8
|
-
export
|
|
9
|
+
export declare function resolveReconciliationSessionFile(sessionFile: string | undefined | null, stateRoot: string, sessionId: string): string;
|
|
10
|
+
export type ReconciliationKind = "prompt" | "skill" | "terminal";
|
|
11
|
+
export interface DurableExecutionReconciliationRecord extends PromptCorrelation {
|
|
9
12
|
kind: ReconciliationKind;
|
|
10
13
|
clientRef?: string;
|
|
11
14
|
status: PromptReconciliationStatus;
|
|
@@ -17,15 +20,98 @@ export interface DurableReconciliationRecord extends PromptCorrelation {
|
|
|
17
20
|
startedAt?: number;
|
|
18
21
|
terminalAt?: number;
|
|
19
22
|
outcome?: SdkPromptTerminalOutcome;
|
|
23
|
+
receiptState?: Exclude<ReceiptState, "absent">;
|
|
20
24
|
pendingOutcome?: SdkPromptTerminalOutcome;
|
|
25
|
+
pendingReceiptState?: Extract<ReceiptState, "present" | "missing">;
|
|
21
26
|
/** Skill-only safe token; never skill args bodies. */
|
|
22
27
|
skillName?: string;
|
|
23
28
|
content?: TurnResultContent;
|
|
24
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* Durable terminal scope record (approved abort-SDK plan, v2 document).
|
|
32
|
+
* Bounded origin/fence and owned-settlement fields only; no prompt text and no
|
|
33
|
+
* suppressed/deferred receipts for left-running turn work.
|
|
34
|
+
*/
|
|
35
|
+
export interface DurableTerminalScopeRecord {
|
|
36
|
+
selection: "turn" | "owned";
|
|
37
|
+
/** SHA-256 of the bounded idempotency key; the raw key is never persisted. */
|
|
38
|
+
idempotencyKeyHash?: string;
|
|
39
|
+
/** SHA-256 of the canonicalized normalized input; raw input is never persisted. */
|
|
40
|
+
idempotencyInputHash?: string;
|
|
41
|
+
turnDisposition: "pending" | "stopped" | "uncertain" | "no_effect" | "no_effect_reserved" | "no_effect_marker_failure";
|
|
42
|
+
/** Whether the correlated agent_end event was published (AC 19). */
|
|
43
|
+
terminalPublished?: boolean;
|
|
44
|
+
ownedWorkDisposition: "not_requested" | "left_running" | "stopped" | "uncertain";
|
|
45
|
+
automaticDeliveryDisposition: "enabled" | "none";
|
|
46
|
+
resumeOnOwnedCompletion: boolean;
|
|
47
|
+
turnContinuationFence: {
|
|
48
|
+
state: "retained" | "released";
|
|
49
|
+
abortedAttemptEpoch: number;
|
|
50
|
+
blockedContinuationIds: string[];
|
|
51
|
+
predecessorTombstones: string[];
|
|
52
|
+
ownedCompletionPolicy: "enabled" | "disabled";
|
|
53
|
+
};
|
|
54
|
+
ownedDeliverySettlements?: Array<{
|
|
55
|
+
keyHash: string;
|
|
56
|
+
entryIdHash: string;
|
|
57
|
+
status: "settled" | "absent" | "uncertain";
|
|
58
|
+
observedAt: number;
|
|
59
|
+
}>;
|
|
60
|
+
responseState: "pending" | "sent" | "delivered" | "failed";
|
|
61
|
+
responsePayloadHash: string;
|
|
62
|
+
/** Hash of the replay-shaped public result a same-key retry delivers, when
|
|
63
|
+
* it differs from the original response (the replay appends metadata). */
|
|
64
|
+
replayPayloadHash?: string;
|
|
65
|
+
acceptedAt: number;
|
|
66
|
+
terminalAt?: number;
|
|
67
|
+
}
|
|
68
|
+
/** Compact evicted-key tombstone with enough disposition metadata to
|
|
69
|
+
* reconstruct the original terminal replay result (review thread P2). */
|
|
70
|
+
export interface EvictedTerminalKeyEntry {
|
|
71
|
+
keyHash: string;
|
|
72
|
+
inputHash: string;
|
|
73
|
+
turnDisposition?: "stopped" | "uncertain" | "no_effect" | "no_effect_reserved" | "no_effect_marker_failure";
|
|
74
|
+
ownedWorkDisposition?: "not_requested" | "left_running" | "stopped" | "uncertain";
|
|
75
|
+
responseState?: "pending" | "sent" | "delivered" | "failed";
|
|
76
|
+
responsePayloadHash?: string;
|
|
77
|
+
replayPayloadHash?: string;
|
|
78
|
+
terminalPublished?: boolean;
|
|
79
|
+
}
|
|
80
|
+
export interface DurableSteerReconciliationRecord {
|
|
81
|
+
kind: "steer";
|
|
82
|
+
clientRef: string;
|
|
83
|
+
textDigest: string;
|
|
84
|
+
createdAt: number;
|
|
85
|
+
status: "dispatching" | "accepted" | "rejected" | "uncertain";
|
|
86
|
+
settledAt?: number;
|
|
87
|
+
error?: {
|
|
88
|
+
code: string;
|
|
89
|
+
message: string;
|
|
90
|
+
};
|
|
91
|
+
commandId: string;
|
|
92
|
+
turnId: string;
|
|
93
|
+
acceptedAt: number;
|
|
94
|
+
startedAt?: never;
|
|
95
|
+
terminalAt?: never;
|
|
96
|
+
outcome?: never;
|
|
97
|
+
receiptState?: never;
|
|
98
|
+
pendingOutcome?: never;
|
|
99
|
+
pendingReceiptState?: never;
|
|
100
|
+
skillName?: never;
|
|
101
|
+
}
|
|
102
|
+
export type DurableReconciliationRecord = DurableExecutionReconciliationRecord | DurableSteerReconciliationRecord;
|
|
25
103
|
export interface ReconciliationStoreDocument {
|
|
26
104
|
version: typeof RECONCILIATION_STORE_VERSION;
|
|
27
105
|
sessionId: string;
|
|
28
106
|
records: DurableReconciliationRecord[];
|
|
107
|
+
terminalScopes?: DurableTerminalScopeRecord[];
|
|
108
|
+
/**
|
|
109
|
+
* Compact key tombstones for completed terminal rows evicted by the
|
|
110
|
+
* retention cap: the key hash is retained durably so a same-key retry
|
|
111
|
+
* after dispatch-cache expiry/restart still replays instead of aborting an
|
|
112
|
+
* unrelated later prompt (review thread P2).
|
|
113
|
+
*/
|
|
114
|
+
evictedTerminalKeys?: EvictedTerminalKeyEntry[];
|
|
29
115
|
}
|
|
30
116
|
export interface ReconciliationStoreFs {
|
|
31
117
|
mkdir(directory: string, options: {
|
|
@@ -49,9 +135,15 @@ export declare function isSafeReconciliationSessionId(sessionId: string): boolea
|
|
|
49
135
|
export declare function reconciliationStorePath(sessionFile: string, sessionId: string): string;
|
|
50
136
|
/**
|
|
51
137
|
* Settle non-terminal durable records after process death.
|
|
52
|
-
*
|
|
53
|
-
* reconciliation-incomplete result.
|
|
138
|
+
* Any record with a durable pending outcome preserves that exact terminal claim;
|
|
139
|
+
* outcome-less skills retain the existing reconciliation-incomplete result.
|
|
140
|
+
*/
|
|
141
|
+
/**
|
|
142
|
+
* Settle incomplete terminal scopes (turnDisposition "pending") to safe
|
|
143
|
+
* uncertainty after process death. A terminal scope that never finalized its
|
|
144
|
+
* semantic CAS replays as uncertainty, never as success.
|
|
54
145
|
*/
|
|
146
|
+
export declare function settleTerminalScopeRestart(scopes: DurableTerminalScopeRecord[], now: number): DurableTerminalScopeRecord[];
|
|
55
147
|
export declare function settleProcessRestart(records: DurableReconciliationRecord[], now: number): DurableReconciliationRecord[];
|
|
56
148
|
export interface ReconciliationStore {
|
|
57
149
|
readonly path: string | null;
|
|
@@ -61,6 +153,22 @@ export interface ReconciliationStore {
|
|
|
61
153
|
load(): Promise<DurableReconciliationRecord[]>;
|
|
62
154
|
/** Snapshot currently held in memory after last load/transact. */
|
|
63
155
|
snapshot(): DurableReconciliationRecord[];
|
|
156
|
+
/** Terminal-scope mutations through the same serialized full-document owner. */
|
|
157
|
+
transactTerminalScopes(mutator: (scopes: DurableTerminalScopeRecord[]) => DurableTerminalScopeRecord[]): Promise<void>;
|
|
158
|
+
transactTerminalState(mutator: (state: {
|
|
159
|
+
scopes: DurableTerminalScopeRecord[];
|
|
160
|
+
keys: EvictedTerminalKeyEntry[];
|
|
161
|
+
}) => {
|
|
162
|
+
scopes: DurableTerminalScopeRecord[];
|
|
163
|
+
keys: EvictedTerminalKeyEntry[];
|
|
164
|
+
}): Promise<void>;
|
|
165
|
+
/** Wait until every previously admitted reconciliation transaction settles. */
|
|
166
|
+
drain?(): Promise<void>;
|
|
167
|
+
transactTerminalKeys(mutator: (keys: EvictedTerminalKeyEntry[]) => EvictedTerminalKeyEntry[]): Promise<void>;
|
|
168
|
+
snapshotTerminalKeys(): EvictedTerminalKeyEntry[];
|
|
169
|
+
loadTerminalScopes(): Promise<DurableTerminalScopeRecord[]>;
|
|
170
|
+
/** Snapshot of terminal scopes currently held in memory. */
|
|
171
|
+
snapshotTerminalScopes(): DurableTerminalScopeRecord[];
|
|
64
172
|
delete(): Promise<void>;
|
|
65
173
|
}
|
|
66
174
|
export declare function createReconciliationStore(options: {
|
|
@@ -14,7 +14,17 @@ export interface BoundNotificationSession<Context extends NotificationSessionCon
|
|
|
14
14
|
unbind(): void;
|
|
15
15
|
}
|
|
16
16
|
export type NotificationEndpointStartResult = "started" | "already" | "disabled" | "failed";
|
|
17
|
-
|
|
17
|
+
/**
|
|
18
|
+
* Outcome of the Telegram daemon preflight.
|
|
19
|
+
*
|
|
20
|
+
* `pending` means ownership acquisition is in flight and was deliberately NOT
|
|
21
|
+
* awaited: chat daemons are optional notification adapters, never session
|
|
22
|
+
* authority, so reconciliation on an awaited session-lifecycle path must never
|
|
23
|
+
* block on one. A pending preflight neither stops the runtime nor marks it
|
|
24
|
+
* blocked — the runtime starts, adapters stay withheld while the owner state is
|
|
25
|
+
* not ready, and the ensure's settle callback re-reconciles.
|
|
26
|
+
*/
|
|
27
|
+
export type TelegramDaemonPreflightResult = "ready" | "pending" | "blocked_identity" | "failed";
|
|
18
28
|
/**
|
|
19
29
|
* The endpoint implementation is deliberately injected. The controller owns
|
|
20
30
|
* policy and session-local state while the extension continues to own its
|
|
@@ -24,6 +34,20 @@ export interface NotificationSessionRuntime<Context extends NotificationSessionC
|
|
|
24
34
|
isRunning(binding: BoundNotificationSession<Context>): boolean;
|
|
25
35
|
start(binding: BoundNotificationSession<Context>): Promise<NotificationEndpointStartResult>;
|
|
26
36
|
stop(binding: BoundNotificationSession<Context>): Promise<boolean>;
|
|
37
|
+
/**
|
|
38
|
+
* Provider-neutral ownership re-proof, called for ANY effective chat
|
|
39
|
+
* provider before the Telegram-specific preflight.
|
|
40
|
+
*
|
|
41
|
+
* A credential, destination, or actor-authorization change invalidates the
|
|
42
|
+
* ownership proof that authorized this runtime's adapters. The runtime must
|
|
43
|
+
* withhold its LOCAL adapters until the new identity is proved. It does NOT
|
|
44
|
+
* revoke an already-attached external chat daemon's SessionRouter
|
|
45
|
+
* attachment, so such a daemon can still observe host events and reach the
|
|
46
|
+
* host's inbound/control paths during the window; closing that requires an
|
|
47
|
+
* authenticated chat-attachment authority boundary at the Router layer.
|
|
48
|
+
* Implementations must not await the daemon ensure itself.
|
|
49
|
+
*/
|
|
50
|
+
reproveOwnership?(binding: BoundNotificationSession<Context>): Promise<void>;
|
|
27
51
|
/**
|
|
28
52
|
* Proves the complete Telegram owner identity before a generic endpoint can
|
|
29
53
|
* emit a frame. `blocked_identity` is fail-closed and starts nothing.
|
|
@@ -9,6 +9,7 @@ export interface SlackInboundDispatchReceipt {
|
|
|
9
9
|
actionId?: string;
|
|
10
10
|
/** The endpoint generation and SDK effect captured before Socket Mode ACK. */
|
|
11
11
|
endpointGeneration: number;
|
|
12
|
+
attachmentAuthorityId?: string;
|
|
12
13
|
/** Identifier of the protected journal payload; mappings never retain message bodies. */
|
|
13
14
|
effectId: string;
|
|
14
15
|
idempotencyKey: string;
|
|
@@ -22,7 +23,10 @@ export interface SlackConversation extends ConversationRecord {
|
|
|
22
23
|
rootTs?: string;
|
|
23
24
|
sessionId?: string;
|
|
24
25
|
endpointGeneration?: number;
|
|
26
|
+
attachmentAuthorityId?: string;
|
|
25
27
|
clientMsgId?: string;
|
|
28
|
+
/** Exact pending Router-removal cleanup; cleared only after the mapping close CAS commits. */
|
|
29
|
+
cleanupEffectId?: string;
|
|
26
30
|
/** Exclusive, expiring authority for provider reconciliation/publication of the root intent. */
|
|
27
31
|
rootPublicationOwner?: string;
|
|
28
32
|
rootPublicationLeaseExpiresAt?: number;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type SessionAttachment } from "../router";
|
|
2
2
|
import { ConversationStore } from "./conversation-store";
|
|
3
3
|
import { type SlackConversation } from "./slack-conversation";
|
|
4
4
|
export type { SlackThreadBindingErrorCode } from "./slack-thread-binding";
|
|
@@ -7,16 +7,10 @@ export declare class SlackEndpointBindingError extends Error {
|
|
|
7
7
|
constructor(message?: string);
|
|
8
8
|
}
|
|
9
9
|
import type { SlackProvider, SlackSocketEnvelope } from "./slack-provider";
|
|
10
|
-
export interface SlackEndpoint extends SdkSessionEndpoint {
|
|
11
|
-
generation: number;
|
|
12
|
-
}
|
|
13
|
-
export interface SlackSdkClient {
|
|
14
|
-
send(frame: Record<string, unknown>): void;
|
|
15
|
-
}
|
|
16
|
-
/** Proven right to bind one session at one endpoint generation. */
|
|
17
10
|
export interface SlackBindingAuthority {
|
|
18
11
|
sessionId: string;
|
|
19
12
|
endpointGeneration: number;
|
|
13
|
+
attachmentAuthorityId?: string;
|
|
20
14
|
}
|
|
21
15
|
export interface SlackNotificationDaemonOptions {
|
|
22
16
|
agentDir: string;
|
|
@@ -33,15 +27,10 @@ export interface SlackNotificationDaemonOptions {
|
|
|
33
27
|
/** Stable identity for the process attempting durable provider publication. */
|
|
34
28
|
publicationOwnerId?: string;
|
|
35
29
|
publicationLeaseMs?: number;
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* Exact discovery/attachment authority for adopting an existing root. The
|
|
39
|
-
* runtime supplies index, endpoint, and attachment proof; without it only the
|
|
40
|
-
* resolvable endpoint generation can be proven.
|
|
41
|
-
*/
|
|
30
|
+
resolveAttachment: (sessionId: string) => Promise<SessionAttachment | null>;
|
|
31
|
+
/** Exact Router proof for adopting an existing root. */
|
|
42
32
|
resolveBindingAuthority?: (sessionId: string) => Promise<SlackBindingAuthority | undefined>;
|
|
43
|
-
|
|
44
|
-
onCommand?: (sessionId: string, content: string, endpoint: SlackEndpoint, idempotencyKey: string) => Promise<boolean>;
|
|
33
|
+
onCommand?: (sessionId: string, content: string, attachment: SessionAttachment, idempotencyKey: string) => Promise<boolean>;
|
|
45
34
|
}
|
|
46
35
|
/**
|
|
47
36
|
* Slack Socket Mode notification daemon. Accepted inbound SDK effects are
|
|
@@ -54,6 +43,7 @@ export declare class SlackNotificationDaemon {
|
|
|
54
43
|
private readonly options;
|
|
55
44
|
readonly store: ConversationStore<SlackConversation>;
|
|
56
45
|
constructor(options: SlackNotificationDaemonOptions);
|
|
46
|
+
restartBlocked(): boolean;
|
|
57
47
|
start(): Promise<void>;
|
|
58
48
|
stop(): Promise<void>;
|
|
59
49
|
/** Accepted inbound effects are durably claimed before their Socket Mode ACK. */
|
|
@@ -78,7 +68,9 @@ export declare class SlackNotificationDaemon {
|
|
|
78
68
|
/** Posts a safe command outcome to the active mapped root thread. */
|
|
79
69
|
postCommandResult(sessionId: string, content: string): Promise<boolean>;
|
|
80
70
|
resolveAction(sessionId: string, actionId: string): Promise<void>;
|
|
81
|
-
close(sessionId: string, marker?: string): Promise<boolean>;
|
|
71
|
+
close(sessionId: string, marker?: string, endpointGeneration?: number): Promise<boolean>;
|
|
72
|
+
recoverCleanup(sessionId: string, endpointGeneration: number): Promise<void>;
|
|
73
|
+
retireAttachment(sessionId: string, endpointGeneration: number): Promise<void>;
|
|
82
74
|
resume(sessionId: string, body: string, endpointGeneration?: number, publicationId?: string): Promise<SlackConversation>;
|
|
83
75
|
findSession(sessionId: string, includeInactive: boolean): Promise<{
|
|
84
76
|
key: string;
|
|
@@ -28,7 +28,7 @@ export interface SlackLiveProviderOptions {
|
|
|
28
28
|
fetch?: (input: string, init?: RequestInit) => Promise<Response>;
|
|
29
29
|
webSocket?: (url: string) => SlackWebSocket;
|
|
30
30
|
now?: () => number;
|
|
31
|
-
sleep?: (milliseconds: number) => Promise<void>;
|
|
31
|
+
sleep?: (milliseconds: number, signal?: AbortSignal) => Promise<void>;
|
|
32
32
|
reconnectDelayMs?: number;
|
|
33
33
|
maxRateLimitRetries?: number;
|
|
34
34
|
maxRetryAfterMs?: number;
|
|
@@ -57,11 +57,13 @@ export declare class SlackLiveProvider implements SlackProviderClient, SlackDiag
|
|
|
57
57
|
text: string;
|
|
58
58
|
threadTs?: string;
|
|
59
59
|
clientMsgId: string;
|
|
60
|
+
signal?: AbortSignal;
|
|
60
61
|
}): Promise<SlackPostedMessage>;
|
|
61
62
|
findMessageByClientMsgId(input: {
|
|
62
63
|
channel: string;
|
|
63
64
|
clientMsgId: string;
|
|
64
65
|
threadTs?: string;
|
|
66
|
+
signal?: AbortSignal;
|
|
65
67
|
}): Promise<SlackMessageSearchResult | null>;
|
|
66
68
|
/**
|
|
67
69
|
* Confirm that `ts` addresses a real message in `channel`. Slack answers
|
|
@@ -44,11 +44,13 @@ export interface SlackProviderClient {
|
|
|
44
44
|
text: string;
|
|
45
45
|
threadTs?: string;
|
|
46
46
|
clientMsgId: string;
|
|
47
|
+
signal?: AbortSignal;
|
|
47
48
|
}): Promise<SlackPostedMessage>;
|
|
48
49
|
findMessageByClientMsgId?(input: {
|
|
49
50
|
channel: string;
|
|
50
51
|
clientMsgId: string;
|
|
51
52
|
threadTs?: string;
|
|
53
|
+
signal?: AbortSignal;
|
|
52
54
|
}): Promise<SlackMessageSearchResult | null>;
|
|
53
55
|
/**
|
|
54
56
|
* Prove that an operator-supplied timestamp addresses a real message in the
|
|
@@ -77,11 +79,13 @@ export declare class SlackProvider {
|
|
|
77
79
|
text: string;
|
|
78
80
|
threadTs?: string;
|
|
79
81
|
clientMsgId: string;
|
|
82
|
+
signal?: AbortSignal;
|
|
80
83
|
}): Promise<SlackPostedMessage>;
|
|
81
84
|
findMessageByClientMsgId(input: {
|
|
82
85
|
channel: string;
|
|
83
86
|
clientMsgId: string;
|
|
84
87
|
threadTs?: string;
|
|
88
|
+
signal?: AbortSignal;
|
|
85
89
|
}): Promise<SlackMessageSearchResult | null>;
|
|
86
90
|
/** Fail-closed root verification: a client without this capability can never confirm a root. */
|
|
87
91
|
findMessageByTimestamp(input: {
|
|
@@ -7,17 +7,15 @@
|
|
|
7
7
|
* 2. *Daemon*: only the running owner may mutate mappings, and only while it is
|
|
8
8
|
* still the exact owner (`ownerId`/`pid`/`incarnation`/daemon generation)
|
|
9
9
|
* captured before the request was published.
|
|
10
|
-
* 3. *Session*: the
|
|
11
|
-
*
|
|
12
|
-
*
|
|
10
|
+
* 3. *Session*: the running daemon supplies a redacted Router authority proving
|
|
11
|
+
* the exact session and endpoint generation; this module never resolves an
|
|
12
|
+
* endpoint or retains its credentials.
|
|
13
13
|
*
|
|
14
14
|
* Provider verification happens before any lock is taken, and the mapping commit
|
|
15
|
-
* re-proves session authority inside the store lock, so an authority
|
|
16
|
-
* changes mid-flight leaves no mapping behind.
|
|
15
|
+
* re-proves daemon and session authority inside the store lock, so an authority
|
|
16
|
+
* that changes mid-flight leaves no mapping behind.
|
|
17
17
|
*/
|
|
18
18
|
import type { Settings } from "../../config/settings";
|
|
19
|
-
import type { SessionIndex } from "../broker/session-index";
|
|
20
|
-
import { type SdkSessionEndpoint, type SdkSessionEndpointScope } from "../client/discovery";
|
|
21
19
|
import { type EnsureChatDaemonResult } from "./chat-daemon-control";
|
|
22
20
|
import { ConversationStore } from "./conversation-store";
|
|
23
21
|
import { type SlackConversation } from "./slack-conversation";
|
|
@@ -30,39 +28,6 @@ export declare class SlackThreadBindingError extends Error {
|
|
|
30
28
|
export declare function isBoundedSlackRootTs(value: string): boolean;
|
|
31
29
|
/** Reject a non-addressable root before any authority read or persistence. */
|
|
32
30
|
export declare function assertBoundedSlackRootTs(rootTs: string): void;
|
|
33
|
-
export interface SlackSessionBindingAuthority {
|
|
34
|
-
sessionId: string;
|
|
35
|
-
endpointGeneration: number;
|
|
36
|
-
pid: number;
|
|
37
|
-
repo: string;
|
|
38
|
-
/**
|
|
39
|
-
* The exact endpoint this authority was proven against. Callers must use it
|
|
40
|
-
* rather than re-reading discovery: a second read can observe a different
|
|
41
|
-
* process whose endpoint generation happens to repeat, and the numeric
|
|
42
|
-
* generation alone cannot tell the two apart.
|
|
43
|
-
*/
|
|
44
|
-
endpoint: SdkSessionEndpoint;
|
|
45
|
-
scope: SdkSessionEndpointScope;
|
|
46
|
-
endpointMtimeMs: number;
|
|
47
|
-
}
|
|
48
|
-
export interface SessionBindingAuthorityInput {
|
|
49
|
-
sessionIndex: SessionIndex;
|
|
50
|
-
sessionId: string;
|
|
51
|
-
readEndpoint?: (repo: string, sessionId: string, scope?: SdkSessionEndpointScope) => Promise<SdkSessionEndpoint | null>;
|
|
52
|
-
statEndpoint?: (endpointPath: string) => Promise<{
|
|
53
|
-
mtimeMs: number;
|
|
54
|
-
} | undefined>;
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Resolve exact discovery/attachment authority for one session.
|
|
58
|
-
*
|
|
59
|
-
* `IndexedSession.live` alone is only pid liveness, which a terminated or
|
|
60
|
-
* unregistered session can still satisfy through pid reuse or a stale record.
|
|
61
|
-
* Adoption additionally requires an intact index replay, a non-terminal record,
|
|
62
|
-
* and a discovery endpoint that is present, well-formed, not marked stale, and
|
|
63
|
-
* owned by the same host pid the index recorded.
|
|
64
|
-
*/
|
|
65
|
-
export declare function resolveSessionBindingAuthority(input: SessionBindingAuthorityInput): Promise<SlackSessionBindingAuthority | undefined>;
|
|
66
31
|
export interface SlackThreadClaimInput {
|
|
67
32
|
store: ConversationStore<SlackConversation>;
|
|
68
33
|
/** The session root-claim key shared with stock root publication. */
|
|
@@ -72,6 +37,7 @@ export interface SlackThreadClaimInput {
|
|
|
72
37
|
sessionId: string;
|
|
73
38
|
rootTs: string;
|
|
74
39
|
endpointGeneration: number;
|
|
40
|
+
attachmentAuthorityId?: string;
|
|
75
41
|
/**
|
|
76
42
|
* Re-proves session authority inside the store lock, immediately before
|
|
77
43
|
* commit. It may be invoked more than once for one claim: authority here is
|