@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
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* MCP (Model Context Protocol) type definitions.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Legacy sessionful surface based on MCP specification 2025-03-26; the modern
|
|
5
|
+
* stateless generation (2026-07-28, "MCP v2") is modeled in ./protocol.ts.
|
|
6
|
+
* https://modelcontextprotocol.io/specification/2026-07-28/
|
|
6
7
|
*/
|
|
7
8
|
import type { SourceMeta } from "../capability/types";
|
|
9
|
+
import type { MCPCacheHints, MCPProtocolObservation, MCPProtocolPreference } from "./protocol";
|
|
8
10
|
export interface JsonRpcRequest {
|
|
9
11
|
jsonrpc: "2.0";
|
|
10
12
|
id: string | number;
|
|
@@ -47,15 +49,23 @@ export interface MCPServerConfigBase {
|
|
|
47
49
|
enabled?: boolean;
|
|
48
50
|
/**
|
|
49
51
|
* Whether an explicit runtime MCP consumer should connect this server
|
|
50
|
-
* automatically when that consumer starts (default: true).
|
|
51
|
-
* `gjc`, `gjc --tmux`, and print-mode sessions
|
|
52
|
-
* registrations
|
|
52
|
+
* automatically when that consumer starts (default: true). Ordinary
|
|
53
|
+
* standalone `gjc`, `gjc --tmux`, and print-mode sessions honor autoload for
|
|
54
|
+
* conventional registrations; `autoload: false` keeps a server configured
|
|
55
|
+
* for on-demand `/mcp` connection. `--no-mcp` opts a session out entirely.
|
|
53
56
|
*/
|
|
54
57
|
autoload?: boolean;
|
|
55
58
|
/** Connection timeout in milliseconds (default: 30000) */
|
|
56
59
|
timeout?: number;
|
|
57
60
|
/** Pool identity mode. W2 defaults to one physical connection per session. */
|
|
58
61
|
sharing?: "per-session" | "shared";
|
|
62
|
+
/**
|
|
63
|
+
* Protocol preference for remote (http/sse) servers: `auto` (default) negotiates
|
|
64
|
+
* the modern 2026-07-28 stateless protocol first with a bounded, observable
|
|
65
|
+
* legacy fallback; `2026-07-28` is strict modern-only; `legacy` forces the
|
|
66
|
+
* bounded compatibility handshake. Ignored by stdio servers (always legacy-era).
|
|
67
|
+
*/
|
|
68
|
+
protocol?: MCPProtocolPreference;
|
|
59
69
|
/** Authentication configuration (optional) */
|
|
60
70
|
auth?: MCPAuthConfig;
|
|
61
71
|
/** OAuth configuration for servers requiring explicit client credentials */
|
|
@@ -113,6 +123,10 @@ export interface MCPClientCapabilities {
|
|
|
113
123
|
listChanged?: boolean;
|
|
114
124
|
};
|
|
115
125
|
sampling?: Record<string, never>;
|
|
126
|
+
/** Form-mode elicitation support (modern MRTR `elicitation/create` input requests). */
|
|
127
|
+
elicitation?: {
|
|
128
|
+
form?: Record<string, never>;
|
|
129
|
+
};
|
|
116
130
|
experimental?: Record<string, unknown>;
|
|
117
131
|
}
|
|
118
132
|
/** MCP server capabilities */
|
|
@@ -155,7 +169,7 @@ export interface MCPToolDefinition {
|
|
|
155
169
|
};
|
|
156
170
|
}
|
|
157
171
|
/** tools/list response */
|
|
158
|
-
export interface MCPToolsListResult {
|
|
172
|
+
export interface MCPToolsListResult extends MCPCacheHints {
|
|
159
173
|
tools: MCPToolDefinition[];
|
|
160
174
|
nextCursor?: string;
|
|
161
175
|
}
|
|
@@ -195,12 +209,66 @@ export interface MCPToolCallResult {
|
|
|
195
209
|
export declare class MCPExpectedFailure extends Error {
|
|
196
210
|
constructor(cause?: unknown);
|
|
197
211
|
}
|
|
212
|
+
/** HTTP-level request failure carrying structured detail for era classification. */
|
|
213
|
+
export declare class MCPHttpRequestError extends Error {
|
|
214
|
+
/** HTTP status code. */
|
|
215
|
+
readonly status: number;
|
|
216
|
+
/** Parsed JSON body when the error payload was JSON; undefined otherwise. */
|
|
217
|
+
readonly body: unknown;
|
|
218
|
+
constructor(status: number, message: string, body?: unknown);
|
|
219
|
+
}
|
|
220
|
+
/** JSON-RPC error response failure carrying the protocol error code. */
|
|
221
|
+
export declare class MCPJsonRpcError extends Error {
|
|
222
|
+
readonly code: number;
|
|
223
|
+
readonly data?: unknown;
|
|
224
|
+
constructor(code: number, message: string, data?: unknown);
|
|
225
|
+
}
|
|
198
226
|
export interface MCPRequestOptions {
|
|
199
227
|
/** Abort signal (e.g. Escape-to-interrupt) */
|
|
200
228
|
signal?: AbortSignal;
|
|
201
229
|
/** Shared lease policy: never retry the original request after transport/auth failure. */
|
|
202
230
|
noReplay?: boolean;
|
|
231
|
+
/**
|
|
232
|
+
* Handler for modern MRTR `input_required` results (elicitation, roots, sampling).
|
|
233
|
+
* When absent, an `input_required` result fails explicitly instead of hanging.
|
|
234
|
+
*/
|
|
235
|
+
inputHandler?: MCPInputRequestHandler;
|
|
236
|
+
/** Extra mirrored headers for modern requests (`Mcp-Param-*` from x-mcp-header bindings). */
|
|
237
|
+
mcpParamHeaders?: Record<string, string>;
|
|
238
|
+
}
|
|
239
|
+
/** Context for one server input request gathered during a modern MRTR exchange. */
|
|
240
|
+
export interface MCPInputRequestContext {
|
|
241
|
+
/** Server being called. */
|
|
242
|
+
serverName: string;
|
|
243
|
+
/** Original client request method (`tools/call`, `prompts/get`, `resources/read`). */
|
|
244
|
+
originMethod: string;
|
|
245
|
+
/**
|
|
246
|
+
* Stable correlation id shared by the initial request and its exactly-once
|
|
247
|
+
* retry, fencing the accepted input to this exchange.
|
|
248
|
+
*/
|
|
249
|
+
correlationId: string;
|
|
250
|
+
/** Request-scoped abort signal (cancellation/timeout of the original call). */
|
|
251
|
+
signal?: AbortSignal;
|
|
203
252
|
}
|
|
253
|
+
/**
|
|
254
|
+
* Outcome of gathering one server input request. `result` values are placed in
|
|
255
|
+
* the retry's `inputResponses` under the request key. `failed` outcomes abort
|
|
256
|
+
* the MRTR exchange with an explicit error — except elicitation decline/cancel,
|
|
257
|
+
* which the handler expresses as an ElicitResult-shaped `result`.
|
|
258
|
+
*/
|
|
259
|
+
export type MCPInputRequestHandlerResult = {
|
|
260
|
+
kind: "result";
|
|
261
|
+
result: unknown;
|
|
262
|
+
} | {
|
|
263
|
+
kind: "failed";
|
|
264
|
+
reason: "declined" | "cancelled" | "timeout" | "unavailable" | "error";
|
|
265
|
+
message?: string;
|
|
266
|
+
};
|
|
267
|
+
/** Handler for one server input request inside an `input_required` result. */
|
|
268
|
+
export type MCPInputRequestHandler = (key: string, request: {
|
|
269
|
+
method: string;
|
|
270
|
+
params?: Record<string, unknown>;
|
|
271
|
+
}, context: MCPInputRequestContext) => Promise<MCPInputRequestHandlerResult>;
|
|
204
272
|
/** Transport interface - abstracts stdio/http */
|
|
205
273
|
export interface MCPTransport {
|
|
206
274
|
/** Send a request and wait for response */
|
|
@@ -246,6 +314,15 @@ export interface MCPServerConnection {
|
|
|
246
314
|
instructions?: string;
|
|
247
315
|
/** Cached prompts (populated on demand) */
|
|
248
316
|
prompts?: MCPPrompt[];
|
|
317
|
+
/**
|
|
318
|
+
* Authoritative protocol observation for this connection (preference,
|
|
319
|
+
* negotiated era/version, downgrade decision, deprecation state). Secret-free.
|
|
320
|
+
*/
|
|
321
|
+
protocol: MCPProtocolObservation;
|
|
322
|
+
/** Freshness deadline (ms epoch) for the cached tool catalog, from server ttlMs hints. */
|
|
323
|
+
toolsFreshUntil?: number;
|
|
324
|
+
/** Cache scope of the cached tool catalog; private entries never cross credential identities. */
|
|
325
|
+
toolsCacheScope?: "public" | "private";
|
|
249
326
|
}
|
|
250
327
|
/** MCP tool with server context */
|
|
251
328
|
export interface MCPToolWithServer {
|
|
@@ -278,12 +355,12 @@ export interface MCPResourceTemplate {
|
|
|
278
355
|
annotations?: MCPAnnotations;
|
|
279
356
|
}
|
|
280
357
|
/** Result of resources/list */
|
|
281
|
-
export interface MCPResourcesListResult {
|
|
358
|
+
export interface MCPResourcesListResult extends MCPCacheHints {
|
|
282
359
|
resources: MCPResource[];
|
|
283
360
|
nextCursor?: string;
|
|
284
361
|
}
|
|
285
362
|
/** Result of resources/templates/list */
|
|
286
|
-
export interface MCPResourceTemplatesListResult {
|
|
363
|
+
export interface MCPResourceTemplatesListResult extends MCPCacheHints {
|
|
287
364
|
resourceTemplates: MCPResourceTemplate[];
|
|
288
365
|
nextCursor?: string;
|
|
289
366
|
}
|
|
@@ -295,7 +372,7 @@ export interface MCPResourceContentItem {
|
|
|
295
372
|
blob?: string;
|
|
296
373
|
}
|
|
297
374
|
/** Result of resources/read */
|
|
298
|
-
export interface MCPResourceReadResult {
|
|
375
|
+
export interface MCPResourceReadResult extends MCPCacheHints {
|
|
299
376
|
contents: MCPResourceContentItem[];
|
|
300
377
|
}
|
|
301
378
|
/** Params for resources/read */
|
|
@@ -320,7 +397,7 @@ export interface MCPPrompt {
|
|
|
320
397
|
arguments?: MCPPromptArgument[];
|
|
321
398
|
}
|
|
322
399
|
/** Result of prompts/list */
|
|
323
|
-
export interface MCPPromptsListResult {
|
|
400
|
+
export interface MCPPromptsListResult extends MCPCacheHints {
|
|
324
401
|
prompts: MCPPrompt[];
|
|
325
402
|
nextCursor?: string;
|
|
326
403
|
}
|
|
@@ -347,6 +424,21 @@ export interface MCPGetPromptResult {
|
|
|
347
424
|
description?: string;
|
|
348
425
|
messages: MCPPromptMessage[];
|
|
349
426
|
}
|
|
427
|
+
/** Result of the optional modern `server/discover` request. */
|
|
428
|
+
export interface MCPDiscoverResult extends MCPCacheHints {
|
|
429
|
+
/** Protocol versions the server supports. */
|
|
430
|
+
supportedVersions: string[];
|
|
431
|
+
/** Capabilities the server supports. */
|
|
432
|
+
capabilities: MCPServerCapabilities;
|
|
433
|
+
/** Optional natural-language usage guidance. */
|
|
434
|
+
instructions?: string;
|
|
435
|
+
/** Result metadata; `io.modelcontextprotocol/serverInfo` carries the identity. */
|
|
436
|
+
_meta?: Record<string, unknown>;
|
|
437
|
+
}
|
|
438
|
+
/** Decoded `server/discover` payload with the extracted server identity. */
|
|
439
|
+
export interface MCPDiscoverResultLite extends MCPDiscoverResult {
|
|
440
|
+
serverInfo?: MCPImplementation;
|
|
441
|
+
}
|
|
350
442
|
/** MCP server notification method names */
|
|
351
443
|
export declare const MCPNotificationMethods: {
|
|
352
444
|
readonly TOOLS_LIST_CHANGED: "notifications/tools/list_changed";
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import { SdkClient, SdkClientError
|
|
1
|
+
import { type SdkClient, SdkClientError } from "../client";
|
|
2
|
+
import type { AbortScope } from "../host/control/operations";
|
|
3
|
+
import { type SessionAttachment, type SessionRouter } from "../router";
|
|
2
4
|
import { ACP_SESSION_RECONNECT } from "../session-reconnect";
|
|
3
5
|
import type { SessionLifecycleMcpServer } from "./mcp";
|
|
4
6
|
type JsonObject = Record<string, unknown>;
|
|
@@ -14,9 +16,11 @@ export interface AcpProviderRegistration {
|
|
|
14
16
|
definitions: unknown;
|
|
15
17
|
}
|
|
16
18
|
export interface AcpSdkAdapterOptions {
|
|
17
|
-
|
|
18
|
-
token: string;
|
|
19
|
+
/** Broker lifecycle transport only. Live session work requires `router` plus an opaque attachment. */
|
|
19
20
|
client?: SdkClient;
|
|
21
|
+
router?: SessionRouter;
|
|
22
|
+
attachment?: SessionAttachment;
|
|
23
|
+
sessionId?: string;
|
|
20
24
|
connection?: AcpReverseConnection;
|
|
21
25
|
providers?: AcpProviderRegistration[];
|
|
22
26
|
/** Lease IDs persisted by the ACP host across a WebSocket reconnect. */
|
|
@@ -34,7 +38,7 @@ export declare class AcpSdkAdapterError extends Error {
|
|
|
34
38
|
*/
|
|
35
39
|
export declare function acpMcpLaunchFailure(error: unknown, mcpServers: SessionLifecycleMcpServer[]): unknown;
|
|
36
40
|
export type AcpReconnectFailedHandler = (error: SdkClientError) => void;
|
|
37
|
-
export type AcpFrameHandler = (frame:
|
|
41
|
+
export type AcpFrameHandler = (frame: Record<string, unknown>) => void;
|
|
38
42
|
export { ACP_SESSION_RECONNECT };
|
|
39
43
|
/**
|
|
40
44
|
* Pure ACP-to-SDK adapter. It deliberately owns neither an AgentSession nor an
|
|
@@ -44,6 +48,10 @@ export declare class AcpSdkAdapter {
|
|
|
44
48
|
#private;
|
|
45
49
|
constructor(options: AcpSdkAdapterOptions);
|
|
46
50
|
static connect(options: AcpSdkAdapterOptions): Promise<AcpSdkAdapter>;
|
|
51
|
+
acceptAttachment(attachment: SessionAttachment): void;
|
|
52
|
+
revokeAttachment(attachment: SessionAttachment): void;
|
|
53
|
+
attachmentReady(attachment: SessionAttachment): Promise<void>;
|
|
54
|
+
acceptFrame(frame: Record<string, unknown>): void;
|
|
47
55
|
get leaseIds(): ReadonlyMap<string, string>;
|
|
48
56
|
get connectionId(): string | undefined;
|
|
49
57
|
onReconnectFailed(handler: AcpReconnectFailedHandler): () => void;
|
|
@@ -51,11 +59,24 @@ export declare class AcpSdkAdapter {
|
|
|
51
59
|
start(): Promise<void>;
|
|
52
60
|
close(): Promise<void>;
|
|
53
61
|
prompt(params: JsonObject | string): Promise<unknown>;
|
|
54
|
-
|
|
62
|
+
/**
|
|
63
|
+
* Ends the active turn with a C04 terminal abort. The default `scope:"turn"`
|
|
64
|
+
* only stops the current turn, matching the SDK `turn.abort` default and
|
|
65
|
+
* other ACP clients' cancel behavior; `scope:"owned"` additionally stops
|
|
66
|
+
* exact causal owned work (background Bash/task jobs, detached subagents) so
|
|
67
|
+
* an external client can terminate everything a turn spawned. Paseo keeps
|
|
68
|
+
* owned cancels through its provider config env
|
|
69
|
+
* (`GJC_ACP_ABORT_SCOPE=owned`) without source changes. A fresh bounded
|
|
70
|
+
* idempotency key per call keeps terminal-abort replay deterministic across
|
|
71
|
+
* retries.
|
|
72
|
+
*/
|
|
73
|
+
cancel(scope?: AbortScope): Promise<unknown>;
|
|
55
74
|
setModel(params: JsonObject | string): Promise<unknown>;
|
|
56
75
|
control(operation: string, input?: JsonObject): Promise<unknown>;
|
|
57
76
|
query(query: string, input?: JsonObject, cursor?: string): Promise<unknown>;
|
|
58
77
|
global(operation: string, input?: JsonObject, idempotencyKey?: string): Promise<unknown>;
|
|
78
|
+
/** Uses lifecycle endpoint credentials only inside the ACP session owner. */
|
|
79
|
+
lifecycle(operation: string, input?: JsonObject, idempotencyKey?: string): Promise<unknown>;
|
|
59
80
|
sdkControl(params: {
|
|
60
81
|
operation: string;
|
|
61
82
|
input?: JsonObject;
|
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
import type { NativeDirectoryTreeSnapshot } from "@gajae-code/natives";
|
|
2
2
|
import type { ModelProfileErrorDetails } from "../../config/model-profile-contract";
|
|
3
|
-
import { type ElevationOperation } from "../elevation/digest";
|
|
4
|
-
import { type ElevationAnswerAuthority, type ElevationDispatchOutcome } from "../elevation/dispatch-receipt";
|
|
5
|
-
import { ElevationLedger, type ElevationRequester } from "../elevation/grant-ledger";
|
|
6
3
|
import { type DirectoryMigrationPolicy } from "../session-directory";
|
|
7
4
|
import { type BrokerDiscovery, type BrokerPublicationObservation, type RedactedBrokerDiscovery } from "./discovery";
|
|
8
5
|
import { type LifecycleDurableEffectsReceipt, LifecycleLedger, type LifecycleStartupFailureReceipt } from "./lifecycle-ledger";
|
|
9
|
-
import { OperationReceiptLedger } from "./operation-receipt-ledger";
|
|
10
6
|
import { SessionIndex } from "./session-index";
|
|
11
7
|
export interface BrokerSettings {
|
|
12
8
|
agentDir: string;
|
|
@@ -23,7 +19,7 @@ type ResolvedBrokerSettings = {
|
|
|
23
19
|
heartbeatTtlMs: number;
|
|
24
20
|
resolveDirectoryMigration: (_cwd: string) => Promise<DirectoryMigrationPolicy>;
|
|
25
21
|
};
|
|
26
|
-
export type BrokerErrorCode = "idempotency_conflict" | "terminal_uncertain" | "broker_restarting" | "unavailable" | "endpoint_stale" | "resource_gone" | "invalid_input" | "spawn_failed" | "startup_admission_timeout" | "startup_admission_refused" | "readiness_timeout" | "close_refused" | "not_found" | "live_session" | "cleanup_pending" |
|
|
22
|
+
export type BrokerErrorCode = "idempotency_conflict" | "terminal_uncertain" | "broker_restarting" | "unavailable" | "endpoint_stale" | "resource_gone" | "invalid_input" | "spawn_failed" | "startup_admission_timeout" | "startup_admission_refused" | "readiness_timeout" | "close_refused" | "not_found" | "live_session" | "cleanup_pending" | (string & {});
|
|
27
23
|
export type BrokerCleanupIdentity = {
|
|
28
24
|
dev: string;
|
|
29
25
|
ino: string;
|
|
@@ -200,8 +196,6 @@ export declare class Broker {
|
|
|
200
196
|
readonly settings: ResolvedBrokerSettings;
|
|
201
197
|
readonly index: SessionIndex;
|
|
202
198
|
readonly ledger: LifecycleLedger;
|
|
203
|
-
readonly elevation: ElevationLedger;
|
|
204
|
-
readonly operationReceipts: OperationReceiptLedger;
|
|
205
199
|
discovery: BrokerDiscovery | null;
|
|
206
200
|
constructor(settings: BrokerSettings);
|
|
207
201
|
runStartup<T>(queueWaitMs: number, timing: StartupAdmissionTiming, task: (admittedAt: number) => Promise<T>): Promise<StartupAdmissionResult<T>>;
|
|
@@ -210,14 +204,7 @@ export declare class Broker {
|
|
|
210
204
|
get completion(): Promise<void>;
|
|
211
205
|
status(): RedactedBrokerDiscovery | null;
|
|
212
206
|
heartbeat(): Promise<void>;
|
|
213
|
-
/**
|
|
214
|
-
* Production coalesced heartbeat checkpoint seam (C2): delegates to the session
|
|
215
|
-
* index writer, which appends at most one `host_heartbeat` per session per
|
|
216
|
-
* {@link SESSION_HEARTBEAT_INTERVAL_MS} for hosts that are alive and, when recorded,
|
|
217
|
-
* still carry the same OS process incarnation. Returns the number of checkpoints
|
|
218
|
-
* written. Used by the periodic publication watch, by session reads so a fresh
|
|
219
|
-
* registration is observed as live, and by tests.
|
|
220
|
-
*/
|
|
207
|
+
/** Re-observes provably live session hosts and checkpoints their liveness. */
|
|
221
208
|
heartbeatSessions(now?: number): Promise<number>;
|
|
222
209
|
/**
|
|
223
210
|
* Revalidate retained publication ownership and begin one synchronous effect in
|
|
@@ -238,46 +225,7 @@ export declare class Broker {
|
|
|
238
225
|
* spawns a child the broker has no authority over.
|
|
239
226
|
*/
|
|
240
227
|
stop(): Promise<void>;
|
|
241
|
-
handleRequest(operation: string, input: Record<string, unknown>, idempotencyKey?: string
|
|
242
|
-
/**
|
|
243
|
-
* Elevation issuance (internal). Binds the exact endpoint identity
|
|
244
|
-
* (endpointStateRoot/generation/incarnation) from the live index record;
|
|
245
|
-
* the request digest is broker-computed from the full `{kind,sdkId,input}`
|
|
246
|
-
* triple with the top-level `elevationRequestId` excluded.
|
|
247
|
-
*/
|
|
248
|
-
elevationIssue(params: {
|
|
249
|
-
sessionId: string;
|
|
250
|
-
operation: ElevationOperation;
|
|
251
|
-
input: Record<string, unknown>;
|
|
252
|
-
requester: ElevationRequester;
|
|
253
|
-
elevationRequestId?: string;
|
|
254
|
-
expiresInMs?: number;
|
|
255
|
-
}): Promise<BrokerResponse>;
|
|
256
|
-
/**
|
|
257
|
-
* Elevation answer (internal, operator-only). There is no public
|
|
258
|
-
* `elevation.answer` operation: this entry point is reserved for the local
|
|
259
|
-
* operator approval surface and the separately authorized gate-answer
|
|
260
|
-
* source, and the ledger enforces the distinct-answer-source boundary.
|
|
261
|
-
*/
|
|
262
|
-
elevationAnswer(params: {
|
|
263
|
-
elevationRequestId: string;
|
|
264
|
-
answer: "approve" | "deny";
|
|
265
|
-
presentedDigest: string;
|
|
266
|
-
answerer: ElevationAnswerAuthority;
|
|
267
|
-
}): Promise<BrokerResponse>;
|
|
268
|
-
/** Single-use grant claim (internal): consumes the grant before dispatch. */
|
|
269
|
-
elevationClaim(params: {
|
|
270
|
-
elevationRequestId: string;
|
|
271
|
-
}): Promise<BrokerResponse>;
|
|
272
|
-
/** Records the dispatch outcome for a claimed grant (internal). */
|
|
273
|
-
elevationDispatch(params: {
|
|
274
|
-
elevationRequestId: string;
|
|
275
|
-
outcome: ElevationDispatchOutcome;
|
|
276
|
-
}): Promise<BrokerResponse>;
|
|
277
|
-
/** Truthful elevation status read (internal; reconciles expiry and crash state). */
|
|
278
|
-
elevationResolve(elevationRequestId: string): Promise<BrokerResponse>;
|
|
279
|
-
/** Truthful elevation listing (internal). */
|
|
280
|
-
elevationList(): Promise<BrokerResponse>;
|
|
228
|
+
handleRequest(operation: string, input: Record<string, unknown>, idempotencyKey?: string): Promise<BrokerResponse>;
|
|
281
229
|
}
|
|
282
230
|
/** Test-only hook for simulating a process crash after terminal persistence verification. */
|
|
283
231
|
export declare function setTerminalPersistenceHookForTest(broker: Broker, hook: (() => void) | undefined): void;
|
|
@@ -94,6 +94,7 @@ export declare function sdkSessionCommandOverrideForTest(): {
|
|
|
94
94
|
file: string;
|
|
95
95
|
args: string[];
|
|
96
96
|
} | undefined;
|
|
97
|
+
type BrokerIndex = Pick<Broker, "index">;
|
|
97
98
|
export declare function setProcessIncarnationForTest(broker: Broker, value: ((pid: number) => string | undefined) | undefined): void;
|
|
98
99
|
/** The child writes this only after its endpoint and semantic ready event are both live. */
|
|
99
100
|
export declare function writeSessionLifecycleReady(root: string, id: string, effectMarker: string): Promise<void>;
|
|
@@ -165,14 +166,21 @@ export declare function sessionHostWorkInFlight(): boolean;
|
|
|
165
166
|
* How often a live broker re-checks its own session registrations against OS
|
|
166
167
|
* process liveness.
|
|
167
168
|
*
|
|
168
|
-
* This sweep can never disturb healthy work: a registration is only
|
|
169
|
-
*
|
|
170
|
-
*
|
|
171
|
-
*
|
|
172
|
-
* a corpse for longer than a single poll while costing one index
|
|
173
|
-
* minute on an otherwise idle broker.
|
|
169
|
+
* This sweep can never disturb healthy work: a registration is dropped only when
|
|
170
|
+
* `observeProcess` proves its exact published process identity exited. A live
|
|
171
|
+
* replacement at the same pid retires the stale registration without being
|
|
172
|
+
* signaled. One minute keeps `gjc_sessions`/`session.get_endpoint` from
|
|
173
|
+
* advertising a corpse for longer than a single poll while costing one index
|
|
174
|
+
* refresh per minute on an otherwise idle broker.
|
|
174
175
|
*/
|
|
175
176
|
export declare const BROKER_DEAD_REGISTRATION_SWEEP_MS = 60000;
|
|
177
|
+
/**
|
|
178
|
+
* Registrations reaped per sweep. Every reap is its own locked index transaction,
|
|
179
|
+
* so an uncapped sweep over a long-lived index turns one broker into a continuous
|
|
180
|
+
* holder of the shared session-index lock and starves unrelated `gjc` launches out
|
|
181
|
+
* of their bounded retry budget. Surplus dead rows are reaped by later sweeps.
|
|
182
|
+
*/
|
|
183
|
+
export declare const BROKER_DEAD_REGISTRATION_SWEEP_LIMIT = 64;
|
|
176
184
|
/** One reaped registration, as recorded by {@link reapDeadSessionRegistrations}. */
|
|
177
185
|
export interface ReapedSessionRegistration {
|
|
178
186
|
sessionId: string;
|
|
@@ -188,13 +196,11 @@ export interface ReapedSessionRegistration {
|
|
|
188
196
|
* missing heartbeat merely makes a session read as not-live — the host may
|
|
189
197
|
* still be running ahead of the next heartbeat checkpoint pass, so it is never
|
|
190
198
|
* grounds for a reap. EPERM and unreadable incarnations stay "uncertain", so an
|
|
191
|
-
* alien or unreadable process is never mistaken for a dead one.
|
|
192
|
-
*
|
|
193
|
-
*
|
|
194
|
-
* silently dropping them would turn a fail-closed `session.close`/
|
|
195
|
-
* `session.delete` refusal into `not_found`.
|
|
199
|
+
* alien or unreadable process is never mistaken for a dead one. Terminal and
|
|
200
|
+
* terminal-uncertain identities are retained. Identity-level rows let the sweep
|
|
201
|
+
* retire a dead losing root without disturbing the surviving authority.
|
|
196
202
|
*/
|
|
197
|
-
export declare function reapDeadSessionRegistrations(broker:
|
|
203
|
+
export declare function reapDeadSessionRegistrations(broker: BrokerIndex, limit?: number): Promise<ReapedSessionRegistration[]>;
|
|
198
204
|
/**
|
|
199
205
|
* Runs {@link reapDeadSessionRegistrations} on {@link BROKER_DEAD_REGISTRATION_SWEEP_MS}.
|
|
200
206
|
* The timer is unref'd, so it never keeps an otherwise idle broker process alive.
|
|
@@ -68,11 +68,13 @@ export interface IndexedSession {
|
|
|
68
68
|
activity?: SessionActivity;
|
|
69
69
|
/** Wall-clock timestamp of the latest admitted heartbeat, when one exists. */
|
|
70
70
|
lastHeartbeatAt?: number;
|
|
71
|
-
/** True when
|
|
71
|
+
/** True when more than one unresolved authority-fencing state-root identity claims this session id. */
|
|
72
72
|
ambiguous: boolean;
|
|
73
|
-
/** True when the identity's latest event is
|
|
73
|
+
/** True when the identity's latest event is terminal (DR-1 retains stopped rows for inspection/offline tail). */
|
|
74
74
|
terminal: boolean;
|
|
75
75
|
}
|
|
76
|
+
/** A session can grant endpoint or lifecycle authority only when one authority-fencing state root claims its id. */
|
|
77
|
+
export declare function isSessionAuthorityEligible(session: Pick<IndexedSession, "ambiguous">): boolean;
|
|
76
78
|
export interface SessionList {
|
|
77
79
|
indexSeq: number;
|
|
78
80
|
sessions: IndexedSession[];
|
|
@@ -119,6 +121,7 @@ export declare class SessionIndex {
|
|
|
119
121
|
refresh(): Promise<void>;
|
|
120
122
|
get indexSeq(): number;
|
|
121
123
|
append(input: Omit<SessionIndexEvent, "version" | "indexSeq" | "checksum" | "ts"> & Partial<Pick<SessionIndexEvent, "ts">>): Promise<SessionIndexEvent>;
|
|
124
|
+
unregisterIfCurrent(expected: IndexedSession): Promise<boolean>;
|
|
122
125
|
/** Hold the canonical index lock across an authority-sensitive operation. */
|
|
123
126
|
withLocked<T>(callback: () => Promise<T>): Promise<T>;
|
|
124
127
|
snapshot(): Promise<void>;
|
|
@@ -128,19 +131,25 @@ export declare class SessionIndex {
|
|
|
128
131
|
*/
|
|
129
132
|
compact(): Promise<void>;
|
|
130
133
|
listSessions(): SessionList;
|
|
134
|
+
/**
|
|
135
|
+
* Broker-internal current composite-identity rows. Unlike {@link listSessions},
|
|
136
|
+
* this retains losing roots so an exact dead registration can be retired without
|
|
137
|
+
* disturbing the surviving authority.
|
|
138
|
+
*/
|
|
139
|
+
listSessionIdentities(probedIncarnations?: ReadonlyMap<string, string | undefined>): IndexedSession[];
|
|
131
140
|
/**
|
|
132
141
|
* Production coalesced heartbeat checkpoint pass (C2): appends one
|
|
133
142
|
* `host_heartbeat` per session at most once per {@link SESSION_HEARTBEAT_INTERVAL_MS}.
|
|
134
143
|
* The pass observes liveness the same way the projection does — the host process
|
|
135
144
|
* must be alive and, for composite identities, still carry the recorded OS process
|
|
136
|
-
* incarnation (a reused PID is never checkpointed). Stopped
|
|
137
|
-
* whose heartbeat is still fresh are skipped. After a broker restart, sessions whose
|
|
145
|
+
* incarnation (a reused PID is never checkpointed). Stopped, terminal, and ambiguous rows
|
|
146
|
+
* and rows whose heartbeat is still fresh are skipped. After a broker restart, sessions whose
|
|
138
147
|
* host survived are re-observed as live on the first pass; sessions whose host died
|
|
139
148
|
* while the broker was down keep their stale or missing heartbeat and read as
|
|
140
149
|
* unknown/not-live (never fresh forever). Returns the number of checkpoints written.
|
|
141
150
|
*/
|
|
142
151
|
checkpointLiveHeartbeats(now?: number): Promise<number>;
|
|
143
|
-
hostUnregisteredAfter(registration: Pick<IndexedSession, "sessionId" | "endpointGeneration" | "pid" | "indexSeq" | "lifecycleRequestId">): {
|
|
152
|
+
hostUnregisteredAfter(registration: Pick<IndexedSession, "sessionId" | "locator" | "endpointGeneration" | "pid" | "indexSeq" | "lifecycleRequestId" | "hostIncarnation" | "processIncarnation">): {
|
|
144
153
|
indexSeq: number;
|
|
145
154
|
lifecycleRequestId?: string;
|
|
146
155
|
} | undefined;
|
|
@@ -4,13 +4,28 @@ export interface BrokerStartupFailureMarker {
|
|
|
4
4
|
exitCode: number | null;
|
|
5
5
|
signal: string | null;
|
|
6
6
|
writtenAt: number;
|
|
7
|
+
/**
|
|
8
|
+
* pid of the exact broker process that wrote this marker. `ensureBroker`
|
|
9
|
+
* only trusts a marker whose pid matches the exact spawned child it just
|
|
10
|
+
* reaped -- a marker left behind by a stale or foreign broker process (for
|
|
11
|
+
* example a losing racer from a concurrent spawn, or a marker predating the
|
|
12
|
+
* pre-spawn clear) must never be misattributed to a different spawn's
|
|
13
|
+
* failure.
|
|
14
|
+
*/
|
|
15
|
+
pid: number;
|
|
7
16
|
}
|
|
8
17
|
export declare function brokerStartupFailurePath(agentDir: string): string;
|
|
9
|
-
/**
|
|
18
|
+
/**
|
|
19
|
+
* Best-effort durable marker write; never throws (diagnostics must not mask the
|
|
20
|
+
* exit itself). `pid` must be the writing broker process's own pid
|
|
21
|
+
* (`process.pid`) so a later reader can bind the marker to the exact spawned
|
|
22
|
+
* child it is attributing the failure to.
|
|
23
|
+
*/
|
|
10
24
|
export declare function writeBrokerStartupFailureMarker(agentDir: string, failure: {
|
|
11
25
|
reason: string;
|
|
12
26
|
exitCode: number | null;
|
|
13
27
|
signal: string | null;
|
|
28
|
+
pid: number;
|
|
14
29
|
}): Promise<void>;
|
|
15
30
|
/** Reads a bounded startup-failure marker; `undefined` when absent or malformed. */
|
|
16
31
|
export declare function readBrokerStartupFailureMarker(agentDir: string): Promise<BrokerStartupFailureMarker | undefined>;
|
|
@@ -45,7 +45,57 @@ export type ChatDaemonAction = "stop" | "reload";
|
|
|
45
45
|
* generation 29 / slack generation 28 advance the replay cursor only after a frame is
|
|
46
46
|
* published, so an owner at an earlier generation acknowledges an event before delivering
|
|
47
47
|
* it and loses that event for good the first time a surface refuses it. Discord generation 30 /
|
|
48
|
-
* slack generation 29
|
|
48
|
+
* slack generation 29 move lifecycle and attachment authority into SDK core; generation 30 also
|
|
49
|
+
* isolates per-session Router attachment failures so one stale endpoint cannot block healthy sessions.
|
|
50
|
+
* Discord generation 31 bounds one REST operation across response parsing and multi-request flows.
|
|
51
|
+
* Slack generation 30 bounds shutdown, tracks outbound work, and fences late effect commits.
|
|
52
|
+
* Slack generation 31 fences late post admission and tracks close-marker shutdown work.
|
|
53
|
+
* Slack generation 32 bounds provider teardown and preserves close markers after Router revocation.
|
|
54
|
+
* Slack generation 33 bounds lifecycle predecessors under the shutdown deadline.
|
|
55
|
+
* Slack generation 34 CAS-fences cleanup mapping commits against successors.
|
|
56
|
+
* Slack generation 35 identity-fences detached startup cleanup from restarted daemon state.
|
|
57
|
+
* Slack generation 36 retains stop ownership for every detached lifecycle generation.
|
|
58
|
+
* Discord generation 32 / Slack generation 37 bind cleanup to the removed attachment generation.
|
|
59
|
+
* Discord generation 33 / Slack generation 38 identity-fence cleanup callbacks on exact attachments.
|
|
60
|
+
* Discord generation 34 / Slack generation 39 clear stale attachment identity before provider reassignment.
|
|
61
|
+
* Discord generation 35 / Slack generation 40 capture provider ownership before cleanup awaits.
|
|
62
|
+
* Discord generation 36 / Slack generation 41 drain prior cleanup before provider restart.
|
|
63
|
+
* Discord generation 37 / Slack generation 42 serialize successor attachment visibility after cleanup.
|
|
64
|
+
* Discord generation 38 / Slack generation 43 hold successor frames behind cleanup settlement.
|
|
65
|
+
* Discord generation 39 / Slack generation 44 recover durable cleanup before attachment publication.
|
|
66
|
+
* Slack generation 45 persists exact pending cleanup intent through recovery.
|
|
67
|
+
* Discord generation 40 bounds provider lifecycle joins before Router revocation.
|
|
68
|
+
* Discord generation 41 / Slack generation 46 revoke Router authority despite provider shutdown failure.
|
|
69
|
+
* Discord generation 42 / Slack generation 47 retain daemon objects across restart to preserve detached lifecycle fences.
|
|
70
|
+
* Discord generation 43 / Slack generation 48 fence Router attachment publication and Broker-adopted endpoint authority.
|
|
71
|
+
* Discord generation 44 / Slack generation 49 retain provider shutdown tails and rejected lifecycle errors so no successor transport starts before ownership settles.
|
|
72
|
+
* Discord generation 45 / Slack generation 50 clean predecessor presentation authority before exact Router replacement and reject post-stop Discord callbacks.
|
|
73
|
+
* Discord generation 46 / Slack generation 51 establish replay barriers before reconnect awaits, distinguish replacement from terminal cleanup, and await lifecycle-fenced Discord inbound work.
|
|
74
|
+
* Discord generation 47 / Slack generation 52 preserve presentation continuity across replacement while exact opaque authority fences stale work.
|
|
75
|
+
* Discord generation 48 / Slack generation 53 allow exact publication-time requests without reconciliation deadlock.
|
|
76
|
+
* Discord generation 49 / Slack generation 54 revalidate endpoint authority before exact publication-time requests.
|
|
77
|
+
* Discord generation 50 / Slack generation 55 terminalize predecessor routes only for a changed same-generation endpoint incarnation.
|
|
78
|
+
* Slack generation 56 clears predecessor inbound receipts before same-generation successor publication.
|
|
79
|
+
* Discord generation 51 / Slack generation 57 persist restart-stable Router endpoint-incarnation authority in provider mappings.
|
|
80
|
+
* Discord generation 52 / Slack generation 58 classify reconnect-time endpoint changes before provider retirement.
|
|
81
|
+
* Discord generation 53 / Slack generation 59 serialize successor attach behind predecessor provider retirement.
|
|
82
|
+
* Discord generation 54 / Slack generation 60 version-fence attaches already in flight when retirement begins.
|
|
83
|
+
* Discord generation 55 / Slack generation 61 fence durable inbound work by exact attachment identity.
|
|
84
|
+
* Discord generation 56 / Slack generation 62 fence durable provider-post and thread-effect recovery by attachment identity.
|
|
85
|
+
* Discord generation 57 removes missing-authority wildcard behavior from durable binding checks.
|
|
86
|
+
* Discord generation 58 preserves exact authority through unarchive replacement fallback.
|
|
87
|
+
* Discord generation 59 / Slack generation 63 derive attachment authority ids from one Router function so persisted provider bindings and live attachments cannot drift apart.
|
|
88
|
+
* Discord generation 62 / Slack generation 65 fence the Windows process-incarnation
|
|
89
|
+
* authority change (#4362): the native binding fallback no longer spawns powershell.exe.
|
|
90
|
+
* Discord generation 63 / Slack generation 66 retain the shared ownership fence
|
|
91
|
+
* unless a zero-signal process probe returns ESRCH. EPERM and unknown failures are
|
|
92
|
+
* indeterminate, so earlier owners must not reclaim, replace, or spawn through them.
|
|
93
|
+
* Discord generation 64 / Slack generation 67 contain synchronous provider-
|
|
94
|
+
* subscription admission and ready-hook failures without revoking shared Router
|
|
95
|
+
* attachment authority.
|
|
96
|
+
* Discord generation 65 / Slack generation 68 fence the off-reconcile-tail
|
|
97
|
+
* initial attachment replay introduced by #4542 so pre-upgrade daemon owners
|
|
98
|
+
* cannot retain the earlier SessionRouter attachment contract.
|
|
49
99
|
*/
|
|
50
100
|
export declare const CHAT_DAEMON_GENERATIONS: Readonly<Record<ChatDaemonKind, number>>;
|
|
51
101
|
export declare function chatDaemonGeneration(kind: ChatDaemonKind): number;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { type SdkSessionEndpoint } from "../client/discovery";
|
|
1
|
+
import type { SessionRouterDeps } from "../router";
|
|
3
2
|
import type { ChatDaemonCommandBindInput, ChatDaemonCommandOutcome } from "./chat-daemon-command-channel";
|
|
4
3
|
import type { ChatDaemonKind } from "./chat-daemon-control";
|
|
5
4
|
import type { DiscordProvider } from "./discord-provider";
|
|
@@ -26,22 +25,6 @@ export interface ChatDaemonRuntimeConfig {
|
|
|
26
25
|
verbosity: "lean" | "verbose";
|
|
27
26
|
};
|
|
28
27
|
}
|
|
29
|
-
export interface ChatDaemonSdkClient {
|
|
30
|
-
onFrame(handler: (frame: Record<string, unknown>) => void): () => void;
|
|
31
|
-
/**
|
|
32
|
-
* Announces that a replacement socket is live. Optional because command-scoped
|
|
33
|
-
* clients (the broker client, one-shot doubles) never outlive one socket, while
|
|
34
|
-
* every long-lived attachment's client carries it.
|
|
35
|
-
*/
|
|
36
|
-
onReconnect?(handler: () => void): () => void;
|
|
37
|
-
/** Re-dials a retired socket; a no-op on a live one. */
|
|
38
|
-
connect?(): Promise<void>;
|
|
39
|
-
request(frame: Record<string, unknown>, options?: {
|
|
40
|
-
timeoutMs?: number;
|
|
41
|
-
}): Promise<Record<string, unknown>>;
|
|
42
|
-
close(): Promise<void>;
|
|
43
|
-
send(frame: Record<string, unknown>): void;
|
|
44
|
-
}
|
|
45
28
|
export type ChatDeliveryPhase = "pre_send" | "ambiguous";
|
|
46
29
|
/** An authorized SDK command could not be conclusively delivered. */
|
|
47
30
|
export declare class ChatDeliveryError extends Error {
|
|
@@ -51,19 +34,11 @@ export declare class ChatDeliveryError extends Error {
|
|
|
51
34
|
export interface ChatDaemonRuntimeDeps {
|
|
52
35
|
createDiscordProvider?: (config: NonNullable<ChatDaemonRuntimeConfig["notifications"]["discord"]>) => DiscordProvider;
|
|
53
36
|
createSlackProvider?: (config: NonNullable<ChatDaemonRuntimeConfig["notifications"]["slack"]>) => SlackProviderClient;
|
|
54
|
-
|
|
55
|
-
createIndex?: (agentDir: string) => SessionIndex;
|
|
56
|
-
createBrokerClient?: (endpoint: {
|
|
57
|
-
url: string;
|
|
58
|
-
token: string;
|
|
59
|
-
}) => Promise<ChatDaemonSdkClient>;
|
|
60
|
-
onReconciled?: () => void;
|
|
61
|
-
setInterval?: typeof setInterval;
|
|
62
|
-
clearInterval?: typeof clearInterval;
|
|
37
|
+
routerDeps?: SessionRouterDeps;
|
|
63
38
|
}
|
|
64
39
|
/**
|
|
65
40
|
* Worker-owned session discovery and event fanout. It connects only through the
|
|
66
|
-
* public SDK transport and retains
|
|
41
|
+
* public SDK transport and retains SDK credentials solely in live client objects.
|
|
67
42
|
*/
|
|
68
43
|
export declare class ChatDaemonRuntime {
|
|
69
44
|
#private;
|
|
@@ -77,18 +52,6 @@ export declare class ChatDaemonRuntime {
|
|
|
77
52
|
start(): Promise<void>;
|
|
78
53
|
transportHealthy(): boolean;
|
|
79
54
|
stop(): Promise<void>;
|
|
80
|
-
|
|
81
|
-
private attach;
|
|
82
|
-
private resolveEndpoint;
|
|
83
|
-
/**
|
|
84
|
-
* Adopt an operator-supplied Slack root for one attached session. Returns a
|
|
85
|
-
* machine-readable rejection instead of throwing so the daemon control plane
|
|
86
|
-
* can answer without exposing internal failure detail.
|
|
87
|
-
*/
|
|
55
|
+
/** Adopt an operator-supplied Slack root through the provider's presentation store. */
|
|
88
56
|
bindExistingRoot(request: ChatDaemonCommandBindInput): Promise<ChatDaemonCommandOutcome>;
|
|
89
|
-
private schedule;
|
|
90
|
-
private enqueueFrame;
|
|
91
|
-
private handleFrame;
|
|
92
|
-
private close;
|
|
93
|
-
private resume;
|
|
94
57
|
}
|
|
@@ -10,6 +10,17 @@ import { type LoadResult } from "../../config/config-file";
|
|
|
10
10
|
* site marks it, never by inheriting a marked ancestor's environment.
|
|
11
11
|
*/
|
|
12
12
|
export declare const SPAWN_PROVENANCE_ENV = "GJC_SPAWNED_BY_SESSION";
|
|
13
|
+
/**
|
|
14
|
+
* Telegram session eligibility: whether a session may own a forum topic and be
|
|
15
|
+
* admitted by the notification daemon.
|
|
16
|
+
*
|
|
17
|
+
* This follows the user's configuration, never how the session was launched.
|
|
18
|
+
* Gating it on coordinator/lifecycle provenance made every ordinary
|
|
19
|
+
* interactive session declare itself ineligible, and the daemon refuses an
|
|
20
|
+
* identity header that does so — so no notification was ever delivered even
|
|
21
|
+
* though the daemon looked healthy and attached.
|
|
22
|
+
*/
|
|
23
|
+
export declare function isTelegramSessionEligible(cfg: NotificationConfig): boolean;
|
|
13
24
|
export type TelegramActivationState = "inactive" | "blocked";
|
|
14
25
|
export type TelegramActivationReason = "saved_inactive" | "identity_mismatch";
|
|
15
26
|
/** Non-secret, identity-specific durable Telegram activation state. */
|