@gajae-code/coding-agent 0.13.3 → 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +184 -2
- package/README.md +2 -0
- package/bin/gajaessi.js +4 -0
- package/dist/types/async/job-manager.d.ts +55 -2
- package/dist/types/async/support.d.ts +14 -0
- package/dist/types/capability/mcp.d.ts +6 -0
- package/dist/types/capability/types.d.ts +6 -0
- package/dist/types/cli/accounts-cli.d.ts +19 -0
- package/dist/types/cli/args.d.ts +3 -0
- package/dist/types/cli/config-cli.d.ts +6 -0
- package/dist/types/cli/crash-cli.d.ts +10 -0
- package/dist/types/cli/customize-doctor.d.ts +145 -0
- package/dist/types/cli/daemon-cli.d.ts +3 -1
- package/dist/types/cli/mcp-cli.d.ts +11 -0
- package/dist/types/cli/notify-cli.d.ts +1 -1
- package/dist/types/cli/root-flags.d.ts +12 -0
- package/dist/types/cli/setup-cli.d.ts +3 -1
- package/dist/types/cli/skills-cli.d.ts +2 -1
- package/dist/types/cli/update-cli.d.ts +19 -1
- package/dist/types/cli.d.ts +6 -0
- package/dist/types/commands/accounts.d.ts +40 -0
- package/dist/types/commands/crash.d.ts +24 -0
- package/dist/types/commands/customize.d.ts +22 -0
- package/dist/types/commands/daemon.d.ts +1 -1
- package/dist/types/commands/launch.d.ts +6 -0
- package/dist/types/commands/setup.d.ts +6 -0
- package/dist/types/commands/skills.d.ts +6 -1
- package/dist/types/commands/update.d.ts +7 -0
- package/dist/types/config/atomic-yaml-patch-worker.d.ts +25 -0
- package/dist/types/config/atomic-yaml-patch.d.ts +62 -2
- package/dist/types/config/config-schema-version.d.ts +10 -0
- package/dist/types/config/file-lock.d.ts +18 -0
- package/dist/types/config/model-profile-activation.d.ts +3 -1
- package/dist/types/config/model-registry.d.ts +9 -1
- package/dist/types/config/models-config-schema.d.ts +2 -0
- package/dist/types/config/settings-schema.d.ts +70 -6
- package/dist/types/config/settings.d.ts +63 -0
- package/dist/types/config/skill-settings-defaults.d.ts +26 -0
- package/dist/types/config/task-delegation.d.ts +39 -0
- package/dist/types/config/update-channel.d.ts +10 -0
- package/dist/types/coordinator-mcp/server.d.ts +5 -1
- package/dist/types/crash/index-store.d.ts +87 -0
- package/dist/types/crash/nudge.d.ts +50 -0
- package/dist/types/crash/record-loader.d.ts +17 -0
- package/dist/types/crash/report.d.ts +134 -0
- package/dist/types/crash/sanitize.d.ts +25 -0
- package/dist/types/cursor.d.ts +13 -2
- package/dist/types/customization/import.d.ts +37 -0
- package/dist/types/customization/index.d.ts +4 -0
- package/dist/types/customization/inventory.d.ts +25 -0
- package/dist/types/customization/mutations.d.ts +32 -0
- package/dist/types/customization/types.d.ts +115 -0
- package/dist/types/daemon/control-types.d.ts +8 -1
- package/dist/types/daemon/operator-contract.d.ts +4 -4
- package/dist/types/discovery/claude.d.ts +39 -1
- package/dist/types/discovery/codex.d.ts +39 -1
- package/dist/types/discovery/index.d.ts +2 -0
- package/dist/types/discovery/mcp-compat.d.ts +30 -0
- package/dist/types/edit/renderer.d.ts +23 -0
- package/dist/types/extensibility/extensions/runner.d.ts +3 -0
- package/dist/types/extensibility/extensions/types.d.ts +21 -4
- package/dist/types/extensibility/gjc-plugins/observability.d.ts +6 -1
- package/dist/types/extensibility/gjc-plugins/registry.d.ts +8 -1
- package/dist/types/extensibility/hooks/loader.d.ts +19 -5
- package/dist/types/extensibility/runtime-skill-discovery.d.ts +22 -1
- package/dist/types/extensibility/skill-management.d.ts +107 -0
- package/dist/types/gjc-runtime/deep-interview-runtime.d.ts +3 -1
- package/dist/types/gjc-runtime/launch-worktree.d.ts +8 -0
- package/dist/types/gjc-runtime/linux-proc.d.ts +3 -0
- package/dist/types/gjc-runtime/ralplan-runtime.d.ts +10 -6
- package/dist/types/gjc-runtime/session-state-lock.d.ts +104 -0
- package/dist/types/gjc-runtime/session-state-sidecar.d.ts +120 -2
- package/dist/types/gjc-runtime/state-writer.d.ts +10 -1
- package/dist/types/gjc-runtime/ultragoal-guard.d.ts +4 -2
- package/dist/types/gjc-runtime/ultragoal-runtime.d.ts +8 -6
- package/dist/types/gjc-runtime/workflow-settings.d.ts +109 -0
- package/dist/types/hooks/events.d.ts +60 -0
- package/dist/types/hooks/normalize.d.ts +83 -0
- package/dist/types/hooks/skill-state.d.ts +9 -2
- package/dist/types/main.d.ts +1 -1
- package/dist/types/modes/acp/abort-scope.d.ts +13 -0
- package/dist/types/modes/acp/acp-agent.d.ts +7 -4
- package/dist/types/modes/components/customization/customization-dashboard.d.ts +44 -0
- package/dist/types/modes/components/customization/import-wizard.d.ts +21 -0
- package/dist/types/modes/components/customization/index.d.ts +1 -0
- package/dist/types/modes/components/gajae-pet-widget.d.ts +8 -30
- package/dist/types/modes/components/irc-sidebar.d.ts +1 -0
- package/dist/types/modes/components/iterm-pet-transport.d.ts +122 -0
- package/dist/types/modes/components/oauth-selector.d.ts +10 -4
- package/dist/types/modes/components/pet-capability.d.ts +11 -25
- package/dist/types/modes/components/status-line/gh.d.ts +6 -2
- package/dist/types/modes/controllers/extension-ui-controller.d.ts +1 -1
- package/dist/types/modes/controllers/selector-controller.d.ts +7 -8
- package/dist/types/modes/controllers/stt-controller.d.ts +1 -1
- package/dist/types/modes/interactive-mode.d.ts +1 -0
- package/dist/types/modes/types.d.ts +1 -0
- package/dist/types/modes/utils/injected-user-submission.d.ts +10 -0
- package/dist/types/runtime-mcp/config.d.ts +9 -0
- package/dist/types/runtime-mcp/manager.d.ts +26 -1
- package/dist/types/runtime-mcp/oauth-discovery.d.ts +4 -0
- package/dist/types/runtime-mcp/oauth-flow.d.ts +24 -1
- package/dist/types/runtime-mcp/pool-key.d.ts +2 -0
- package/dist/types/runtime-mcp/protocol.d.ts +278 -0
- package/dist/types/runtime-mcp/scope-config.d.ts +29 -0
- package/dist/types/runtime-mcp/tool-bridge.d.ts +15 -13
- package/dist/types/runtime-mcp/transports/http.d.ts +9 -0
- package/dist/types/runtime-mcp/types.d.ts +102 -10
- package/dist/types/sdk/acp/adapter.d.ts +26 -5
- package/dist/types/sdk/broker/broker.d.ts +3 -55
- package/dist/types/sdk/broker/lifecycle.d.ts +18 -12
- package/dist/types/sdk/broker/session-index.d.ts +14 -5
- package/dist/types/sdk/broker/startup-failure.d.ts +16 -1
- package/dist/types/sdk/bus/chat-daemon-control.d.ts +51 -1
- package/dist/types/sdk/bus/chat-daemon-runtime.d.ts +4 -41
- package/dist/types/sdk/bus/config.d.ts +11 -0
- package/dist/types/sdk/bus/conversation-store.d.ts +0 -1
- package/dist/types/sdk/bus/daemon-paths.d.ts +6 -0
- package/dist/types/sdk/bus/discord-conversation.d.ts +2 -0
- package/dist/types/sdk/bus/discord-daemon.d.ts +17 -12
- package/dist/types/sdk/bus/existing-thread-readiness.d.ts +4 -34
- package/dist/types/sdk/bus/inbound-reaction-ordering.d.ts +61 -0
- package/dist/types/sdk/bus/index.d.ts +85 -99
- package/dist/types/sdk/bus/kind-aware-reconciliation.d.ts +29 -7
- package/dist/types/sdk/bus/managed-daemon.d.ts +2 -32
- package/dist/types/sdk/bus/notification-service.d.ts +52 -0
- package/dist/types/sdk/bus/operator-runtime.d.ts +1 -1
- package/dist/types/sdk/bus/prompt-reconciliation.d.ts +16 -5
- package/dist/types/sdk/bus/reconciliation-store.d.ts +113 -5
- package/dist/types/sdk/bus/session-control.d.ts +25 -1
- package/dist/types/sdk/bus/slack-conversation.d.ts +4 -0
- package/dist/types/sdk/bus/slack-daemon.d.ts +9 -17
- package/dist/types/sdk/bus/slack-live-provider.d.ts +3 -1
- package/dist/types/sdk/bus/slack-provider.d.ts +4 -0
- package/dist/types/sdk/bus/slack-thread-binding.d.ts +6 -40
- package/dist/types/sdk/bus/telegram-adoption-intent.d.ts +30 -104
- package/dist/types/sdk/bus/telegram-daemon-cli.d.ts +10 -0
- package/dist/types/sdk/bus/telegram-daemon-contract.d.ts +262 -19
- package/dist/types/sdk/bus/telegram-daemon-orphan-reap.d.ts +125 -0
- package/dist/types/sdk/bus/telegram-daemon-owner-registry.d.ts +22 -0
- package/dist/types/sdk/bus/telegram-daemon.d.ts +119 -310
- package/dist/types/sdk/bus/telegram-reference.d.ts +1 -47
- package/dist/types/sdk/bus/threaded-render.d.ts +1 -0
- package/dist/types/sdk/bus/topic-registry.d.ts +33 -17
- package/dist/types/sdk/cli/rows.d.ts +2 -11
- package/dist/types/sdk/cli/session-cli.d.ts +15 -25
- package/dist/types/sdk/client/client.d.ts +97 -1
- package/dist/types/sdk/host/control/dispatch.d.ts +0 -7
- package/dist/types/sdk/host/control/index.d.ts +1 -1
- package/dist/types/sdk/host/control/operations.d.ts +18 -5
- package/dist/types/sdk/host/control/runtime-gate.d.ts +19 -0
- package/dist/types/sdk/host/host.d.ts +15 -1
- package/dist/types/sdk/host/query/handlers.d.ts +5 -0
- package/dist/types/sdk/host/reverse-leases.d.ts +1 -1
- package/dist/types/sdk/host/session-runtime.d.ts +127 -7
- package/dist/types/sdk/host/types.d.ts +1 -1
- package/dist/types/sdk/host/websocket-transport.d.ts +1 -1
- package/dist/types/sdk/index.d.ts +2 -1
- package/dist/types/sdk/lifecycle/broker-client.d.ts +8 -0
- package/dist/types/sdk/lifecycle/client.d.ts +59 -0
- package/dist/types/sdk/lifecycle/index.d.ts +3 -0
- package/dist/types/sdk/lifecycle/service.d.ts +232 -0
- package/dist/types/sdk/mcp/server.d.ts +9 -6
- package/dist/types/sdk/prompt-deadline-lease.d.ts +43 -0
- package/dist/types/sdk/prompt-deadline-manager.d.ts +28 -0
- package/dist/types/sdk/prompt-status.d.ts +10 -3
- package/dist/types/sdk/protocol/operation-registry.d.ts +5 -0
- package/dist/types/sdk/receipt-state.d.ts +17 -0
- package/dist/types/sdk/reconciliation-extensions.d.ts +2 -0
- package/dist/types/sdk/router/index.d.ts +1 -0
- package/dist/types/sdk/router/session-router.d.ts +152 -0
- package/dist/types/sdk/session-list.d.ts +22 -0
- package/dist/types/sdk/session-reconnect.d.ts +43 -1
- package/dist/types/sdk/session.d.ts +34 -1
- package/dist/types/sdk/transport/serve-cli.d.ts +1 -4
- package/dist/types/session/account-inventory.d.ts +86 -0
- package/dist/types/session/agent-session.d.ts +145 -6
- package/dist/types/session/agent-storage.d.ts +10 -0
- package/dist/types/session/coordinator-tool-label.d.ts +28 -0
- package/dist/types/session/internal/managed-session-storage.d.ts +23 -4
- package/dist/types/session/messages.d.ts +1 -1
- package/dist/types/session/secure-token-file.d.ts +3 -0
- package/dist/types/session/session-manager.d.ts +40 -1
- package/dist/types/session/startup-auth-config.d.ts +44 -0
- package/dist/types/session/terminal-abort.d.ts +378 -0
- package/dist/types/session/yield-queue.d.ts +7 -0
- package/dist/types/session-import/claude.d.ts +26 -0
- package/dist/types/session-import/codex.d.ts +88 -0
- package/dist/types/session-import/command.d.ts +35 -0
- package/dist/types/session-import/detect.d.ts +22 -0
- package/dist/types/session-import/index.d.ts +7 -0
- package/dist/types/session-import/provider-codex.d.ts +22 -0
- package/dist/types/session-import/provider-service.d.ts +38 -0
- package/dist/types/session-import/redact.d.ts +23 -0
- package/dist/types/session-import/service.d.ts +47 -0
- package/dist/types/session-import/types.d.ts +120 -0
- package/dist/types/setup/paseo/check.d.ts +16 -0
- package/dist/types/setup/paseo/install-saga.d.ts +115 -0
- package/dist/types/setup/paseo/json-publisher.d.ts +76 -0
- package/dist/types/setup/paseo/orchestration-preferences.d.ts +24 -0
- package/dist/types/setup/paseo/paseo-ownership.d.ts +87 -0
- package/dist/types/setup/paseo/paseo-setup.d.ts +29 -0
- package/dist/types/setup/paseo/provider-config.d.ts +35 -0
- package/dist/types/setup/paseo/remove.d.ts +14 -0
- package/dist/types/setup/paseo/result-types.d.ts +59 -0
- package/dist/types/setup/paseo/setup-deps.d.ts +73 -0
- package/dist/types/setup/paseo/skills-bridge.d.ts +44 -0
- package/dist/types/skill-state/active-state.d.ts +5 -1
- package/dist/types/slash-commands/acp-builtins.d.ts +5 -1
- package/dist/types/slash-commands/builtin-registry.d.ts +2 -0
- package/dist/types/slash-commands/helpers/credential-switch.d.ts +12 -0
- package/dist/types/slash-commands/helpers/usage-report.d.ts +5 -6
- package/dist/types/slash-commands/types.d.ts +7 -1
- package/dist/types/task/executor.d.ts +10 -0
- package/dist/types/task/index.d.ts +3 -1
- package/dist/types/tools/ask-answer-registry.d.ts +6 -3
- package/dist/types/tools/bash-sleep-advisory.d.ts +14 -0
- package/dist/types/tools/bash.d.ts +2 -6
- package/dist/types/tools/browser/attach.d.ts +11 -0
- package/dist/types/tools/browser/launch.d.ts +20 -0
- package/dist/types/tools/browser/profile-discovery.d.ts +6 -0
- package/dist/types/tools/browser/render.d.ts +1 -0
- package/dist/types/tools/browser.d.ts +3 -1
- package/dist/types/tools/image-gen.d.ts +9 -2
- package/dist/types/tools/index.d.ts +8 -0
- package/dist/types/tools/monitor.d.ts +1 -1
- package/dist/types/tools/skill-discovery.d.ts +8 -1
- package/dist/types/tools/subagent.d.ts +2 -0
- package/dist/types/tools/ultragoal-ask-guard.d.ts +2 -2
- package/dist/types/utils/herdr-pane.d.ts +76 -0
- package/package.json +19 -9
- package/scripts/build-binary.ts +2 -1
- package/scripts/build-sdk-package-smoke.ts +2 -13
- package/scripts/capture-sticky-viewport-showcase.ts +0 -1
- package/scripts/compile-args.ts +2 -0
- package/scripts/generate-sdk-adapter-parity-manifest.ts +31 -16
- package/scripts/generate-sdk-operation-inventory.ts +28 -0
- package/scripts/generate-telegram-baseline-manifest.ts +1 -0
- package/scripts/generate-tool-catalog.ts +6 -4
- package/scripts/verify-gjc-sdk-canonicalization.ts +5 -39
- package/src/async/job-manager.ts +352 -17
- package/src/async/support.ts +25 -0
- package/src/autoresearch/dashboard.ts +28 -13
- package/src/capability/index.ts +3 -1
- package/src/capability/mcp.ts +6 -0
- package/src/capability/types.ts +6 -0
- package/src/cli/accounts-cli.ts +395 -0
- package/src/cli/args.ts +23 -0
- package/src/cli/auth-broker-cli.ts +136 -66
- package/src/cli/auth-gateway-cli.ts +94 -70
- package/src/cli/config-cli.ts +27 -2
- package/src/cli/crash-cli.ts +78 -0
- package/src/cli/customize-doctor.ts +1605 -0
- package/src/cli/daemon-cli.ts +12 -3
- package/src/cli/fast-help.ts +1 -0
- package/src/cli/mcp-cli.ts +128 -60
- package/src/cli/notify-cli.ts +8 -14
- package/src/cli/root-flags.ts +8 -0
- package/src/cli/setup-cli.ts +145 -0
- package/src/cli/skills-cli.ts +38 -2
- package/src/cli/update-cli.ts +167 -12
- package/src/cli.ts +4 -0
- package/src/commands/accounts.ts +71 -0
- package/src/commands/crash.ts +35 -0
- package/src/commands/customize.ts +84 -0
- package/src/commands/daemon.ts +2 -2
- package/src/commands/deep-interview.ts +2 -0
- package/src/commands/launch.ts +1 -0
- package/src/commands/mcp.ts +12 -7
- package/src/commands/ralplan.ts +2 -0
- package/src/commands/sdk.ts +65 -32
- package/src/commands/setup.ts +5 -0
- package/src/commands/skills.ts +14 -4
- package/src/commands/ultragoal.ts +10 -1
- package/src/commands/update.ts +26 -15
- package/src/config/atomic-yaml-patch-worker.ts +57 -0
- package/src/config/atomic-yaml-patch.ts +769 -29
- package/src/config/config-schema-version.ts +10 -0
- package/src/config/file-lock.ts +70 -1
- package/src/config/mcp-schema.json +52 -14
- package/src/config/model-profile-activation.ts +20 -1
- package/src/config/model-profiles.ts +29 -19
- package/src/config/model-registry.ts +132 -21
- package/src/config/models-config-schema.ts +1 -1
- package/src/config/settings-schema.ts +76 -6
- package/src/config/settings.ts +4038 -199
- package/src/config/skill-settings-defaults.ts +41 -3
- package/src/config/task-delegation.ts +87 -0
- package/src/config/update-channel.ts +23 -0
- package/src/coordinator-mcp/server.ts +377 -308
- package/src/crash/index-store.ts +723 -0
- package/src/crash/nudge.ts +89 -0
- package/src/crash/record-loader.ts +149 -0
- package/src/crash/report.ts +551 -0
- package/src/crash/sanitize.ts +129 -0
- package/src/cursor.ts +36 -10
- package/src/customization/import.ts +946 -0
- package/src/customization/index.ts +4 -0
- package/src/customization/inventory.ts +335 -0
- package/src/customization/mutations.ts +141 -0
- package/src/customization/types.ts +223 -0
- package/src/daemon/control-types.ts +8 -1
- package/src/daemon/operator-contract.ts +6 -6
- package/src/defaults/gjc/skills/deep-interview/SKILL.md +11 -22
- package/src/defaults/gjc/skills/ralplan/SKILL.md +36 -23
- package/src/defaults/gjc/skills/ultragoal/SKILL.md +16 -0
- package/src/discovery/claude-hooks.ts +38 -0
- package/src/discovery/claude.ts +142 -209
- package/src/discovery/codex-hooks.ts +38 -0
- package/src/discovery/codex.ts +132 -198
- package/src/discovery/helpers.ts +8 -1
- package/src/discovery/index.ts +2 -0
- package/src/discovery/mcp-compat.ts +234 -0
- package/src/discovery/mcp-json.ts +6 -0
- package/src/edit/renderer.ts +40 -0
- package/src/edit/streaming.ts +4 -2
- package/src/exec/bash-executor.ts +24 -20
- package/src/export/html/index.ts +51 -2
- package/src/extensibility/extensions/loader.ts +9 -1
- package/src/extensibility/extensions/runner.ts +17 -4
- package/src/extensibility/extensions/types.ts +31 -6
- package/src/extensibility/gjc-plugins/constrained-hooks.ts +33 -0
- package/src/extensibility/gjc-plugins/installer.ts +9 -5
- package/src/extensibility/gjc-plugins/observability.ts +8 -2
- package/src/extensibility/gjc-plugins/registry.ts +13 -2
- package/src/extensibility/gjc-plugins/runtime-adapters.ts +3 -1
- package/src/extensibility/gjc-plugins/schema.ts +222 -39
- package/src/extensibility/hooks/loader.ts +154 -10
- package/src/extensibility/runtime-skill-discovery.ts +257 -60
- package/src/extensibility/skill-management.ts +368 -0
- package/src/extensibility/skills.ts +52 -16
- package/src/gjc-runtime/deep-interview-runtime.ts +45 -61
- package/src/gjc-runtime/launch-worktree.ts +56 -2
- package/src/gjc-runtime/linux-proc.ts +7 -1
- package/src/gjc-runtime/ralplan-runtime.ts +100 -164
- package/src/gjc-runtime/session-state-lock.ts +992 -0
- package/src/gjc-runtime/session-state-sidecar.ts +644 -142
- package/src/gjc-runtime/state-writer.ts +39 -14
- package/src/gjc-runtime/tmux-owner-isolation.ts +5 -4
- package/src/gjc-runtime/ultragoal-guard.ts +11 -4
- package/src/gjc-runtime/ultragoal-runtime.ts +44 -41
- package/src/gjc-runtime/workflow-settings.ts +596 -0
- package/src/goals/tools/goal-tool.ts +6 -1
- package/src/hooks/events.ts +291 -0
- package/src/hooks/native-skill-hook.ts +4 -0
- package/src/hooks/normalize.ts +369 -0
- package/src/hooks/skill-state.ts +165 -46
- package/src/internal-urls/docs-index.generated.ts +40 -32
- package/src/main.ts +32 -5
- package/src/migrate/mcp-mapper.ts +25 -2
- package/src/modes/acp/abort-scope.ts +29 -0
- package/src/modes/acp/acp-agent.ts +423 -98
- package/src/modes/components/assistant-message.ts +6 -1
- package/src/modes/components/customization/customization-dashboard.ts +443 -0
- package/src/modes/components/customization/import-wizard.ts +372 -0
- package/src/modes/components/customization/index.ts +1 -0
- package/src/modes/components/gajae-pet-widget.ts +539 -213
- package/src/modes/components/irc-sidebar.ts +11 -0
- package/src/modes/components/iterm-pet-transport.ts +585 -0
- package/src/modes/components/oauth-selector.ts +277 -86
- package/src/modes/components/pet-capability.ts +39 -40
- package/src/modes/components/settings-selector.ts +9 -0
- package/src/modes/components/status-line/gh.ts +45 -1
- package/src/modes/components/status-line/segments.ts +16 -1
- package/src/modes/components/tool-status-header.ts +13 -3
- package/src/modes/controllers/command-controller.ts +20 -8
- package/src/modes/controllers/extension-ui-controller.ts +56 -257
- package/src/modes/controllers/input-controller.ts +10 -0
- package/src/modes/controllers/runtime-mcp-command-controller.ts +16 -3
- package/src/modes/controllers/selector-controller.ts +177 -72
- package/src/modes/controllers/stt-controller.ts +3 -3
- package/src/modes/interactive-mode.ts +88 -16
- package/src/modes/print-mode.ts +35 -6
- package/src/modes/runtime-init.ts +21 -68
- package/src/modes/types.ts +1 -0
- package/src/modes/utils/injected-user-submission.ts +25 -0
- package/src/modes/utils/terminal-bell.ts +15 -1
- package/src/prompts/agent-fragments/ralplan-persistence.md +1 -1
- package/src/prompts/agent-fragments/restricted-bash.md +1 -1
- package/src/prompts/agents/critic.md +1 -1
- package/src/prompts/system/rlm-research.md +1 -1
- package/src/prompts/system/system-prompt.md +0 -2
- package/src/prompts/tools/bash.md +7 -1
- package/src/prompts/tools/browser.md +1 -1
- package/src/prompts/tools/cron.md +6 -6
- package/src/prompts/tools/read.md +0 -2
- package/src/prompts/tools/skill-discovery.md +4 -2
- package/src/runtime-mcp/client.ts +427 -23
- package/src/runtime-mcp/config.ts +37 -5
- package/src/runtime-mcp/manager-pool.test.ts +56 -0
- package/src/runtime-mcp/manager.ts +52 -2
- package/src/runtime-mcp/oauth-discovery.ts +13 -0
- package/src/runtime-mcp/oauth-flow.ts +46 -1
- package/src/runtime-mcp/pool-key.ts +5 -1
- package/src/runtime-mcp/pool.test.ts +9 -0
- package/src/runtime-mcp/protocol.test.ts +353 -0
- package/src/runtime-mcp/protocol.ts +624 -0
- package/src/runtime-mcp/scope-config.ts +78 -0
- package/src/runtime-mcp/tool-bridge.ts +44 -10
- package/src/runtime-mcp/transports/http.ts +84 -13
- package/src/runtime-mcp/types.ts +123 -12
- package/src/sdk/acp/adapter.ts +328 -97
- package/src/sdk/broker/broker.ts +160 -741
- package/src/sdk/broker/ensure.ts +9 -1
- package/src/sdk/broker/lifecycle.ts +510 -116
- package/src/sdk/broker/operation-receipt-ledger.ts +11 -2
- package/src/sdk/broker/process-incarnation.ts +19 -0
- package/src/sdk/broker/session-index.ts +516 -117
- package/src/sdk/broker/startup-failure.ts +28 -5
- package/src/sdk/broker/transport.ts +1 -13
- package/src/sdk/bus/chat-daemon-cli.ts +4 -2
- package/src/sdk/bus/chat-daemon-control.ts +67 -6
- package/src/sdk/bus/chat-daemon-runtime.ts +183 -859
- package/src/sdk/bus/config.ts +13 -0
- package/src/sdk/bus/conversation-store.ts +59 -171
- package/src/sdk/bus/daemon-paths.ts +20 -0
- package/src/sdk/bus/discord-conversation.ts +2 -0
- package/src/sdk/bus/discord-daemon.ts +524 -126
- package/src/sdk/bus/discord-live-provider.ts +206 -79
- package/src/sdk/bus/existing-thread-readiness.ts +4 -97
- package/src/sdk/bus/inbound-reaction-ordering.ts +122 -0
- package/src/sdk/bus/index.ts +2480 -456
- package/src/sdk/bus/kind-aware-reconciliation.ts +204 -34
- package/src/sdk/bus/lifecycle-commands.ts +2 -2
- package/src/sdk/bus/managed-daemon.ts +2 -145
- package/src/sdk/bus/notification-service.ts +196 -0
- package/src/sdk/bus/operator-runtime.ts +1 -1
- package/src/sdk/bus/prompt-reconciliation.ts +24 -15
- package/src/sdk/bus/reconciliation-store.ts +553 -24
- package/src/sdk/bus/session-control.ts +49 -3
- package/src/sdk/bus/slack-conversation.ts +4 -0
- package/src/sdk/bus/slack-daemon.ts +733 -134
- package/src/sdk/bus/slack-live-provider.ts +65 -15
- package/src/sdk/bus/slack-provider.ts +4 -0
- package/src/sdk/bus/slack-thread-binding.ts +9 -104
- package/src/sdk/bus/telegram-adoption-intent.ts +299 -209
- package/src/sdk/bus/telegram-daemon-cli.ts +194 -7
- package/src/sdk/bus/telegram-daemon-contract.ts +265 -19
- package/src/sdk/bus/telegram-daemon-control.ts +3 -13
- package/src/sdk/bus/telegram-daemon-orphan-reap.ts +498 -0
- package/src/sdk/bus/telegram-daemon-owner-registry.ts +176 -0
- package/src/sdk/bus/telegram-daemon.ts +2552 -2280
- package/src/sdk/bus/telegram-reference.ts +1 -226
- package/src/sdk/bus/telegram-setup.ts +2 -2
- package/src/sdk/bus/threaded-render.ts +1 -0
- package/src/sdk/bus/topic-registry.ts +279 -146
- package/src/sdk/cli/rows.ts +2 -35
- package/src/sdk/cli/session-cli.ts +776 -700
- package/src/sdk/client/client.ts +892 -1
- package/src/sdk/host/control/dispatch.ts +93 -58
- package/src/sdk/host/control/index.ts +1 -1
- package/src/sdk/host/control/operations.ts +18 -10
- package/src/sdk/host/control/runtime-gate.ts +40 -0
- package/src/sdk/host/host.ts +63 -12
- package/src/sdk/host/query/handlers.ts +66 -7
- package/src/sdk/host/reverse-leases.ts +2 -2
- package/src/sdk/host/sdk-surface-parity.test.ts +1 -1
- package/src/sdk/host/session-runtime.test.ts +2787 -34
- package/src/sdk/host/session-runtime.ts +1489 -101
- package/src/sdk/host/surface-policy.ts +12 -8
- package/src/sdk/host/types.ts +1 -1
- package/src/sdk/host/websocket-transport.lifecycle.test.ts +31 -59
- package/src/sdk/host/websocket-transport.ts +85 -50
- package/src/sdk/index.ts +2 -1
- package/src/sdk/lifecycle/broker-client.ts +53 -0
- package/src/sdk/lifecycle/client.ts +234 -0
- package/src/sdk/lifecycle/index.ts +3 -0
- package/src/sdk/{bus/recent-activity.ts → lifecycle/recent-sessions.ts} +5 -2
- package/src/sdk/lifecycle/service.ts +720 -0
- package/src/sdk/mcp/server.ts +226 -188
- package/src/sdk/prompt-deadline-lease.ts +55 -0
- package/src/sdk/prompt-deadline-manager.ts +148 -0
- package/src/sdk/prompt-status.ts +11 -3
- package/src/sdk/protocol/operation-inventory.generated.json +272 -129
- package/src/sdk/protocol/operation-registry.ts +71 -8
- package/src/sdk/receipt-state.ts +43 -0
- package/src/sdk/reconciliation-extensions.ts +14 -0
- package/src/sdk/router/index.ts +1 -0
- package/src/sdk/router/session-router.ts +1658 -0
- package/src/sdk/session-list.ts +93 -0
- package/src/sdk/session-reconnect.ts +45 -1
- package/src/sdk/session.ts +716 -120
- package/src/sdk/transport/serve-cli.ts +18 -34
- package/src/session/account-inventory.ts +603 -0
- package/src/session/agent-session.ts +2857 -582
- package/src/session/agent-storage.ts +35 -0
- package/src/session/blob-store.ts +32 -1
- package/src/session/coordinator-tool-label.ts +40 -0
- package/src/session/internal/managed-session-scope.ts +4 -0
- package/src/session/internal/managed-session-storage.ts +173 -12
- package/src/session/messages.ts +1 -1
- package/src/session/secure-token-file.ts +80 -0
- package/src/session/session-manager.ts +730 -58
- package/src/session/session-storage.ts +25 -16
- package/src/session/startup-auth-config.ts +297 -0
- package/src/session/terminal-abort.ts +1253 -0
- package/src/session/yield-queue.ts +57 -15
- package/src/session-import/claude.ts +334 -0
- package/src/session-import/codex.ts +1033 -0
- package/src/session-import/command.ts +77 -0
- package/src/session-import/detect.ts +133 -0
- package/src/session-import/index.ts +7 -0
- package/src/session-import/provider-codex.ts +327 -0
- package/src/session-import/provider-service.ts +457 -0
- package/src/session-import/redact.ts +128 -0
- package/src/session-import/service.ts +1264 -0
- package/src/session-import/types.ts +148 -0
- package/src/setup/paseo/check.ts +213 -0
- package/src/setup/paseo/install-saga.ts +293 -0
- package/src/setup/paseo/json-publisher.ts +263 -0
- package/src/setup/paseo/orchestration-preferences.ts +86 -0
- package/src/setup/paseo/paseo-ownership.ts +224 -0
- package/src/setup/paseo/paseo-setup.ts +253 -0
- package/src/setup/paseo/provider-config.ts +139 -0
- package/src/setup/paseo/remove.ts +183 -0
- package/src/setup/paseo/result-types.ts +79 -0
- package/src/setup/paseo/setup-deps.ts +175 -0
- package/src/setup/paseo/skills-bridge.ts +260 -0
- package/src/skill-state/active-state.ts +21 -11
- package/src/slash-commands/acp-builtins.ts +9 -1
- package/src/slash-commands/builtin-registry.ts +98 -16
- package/src/slash-commands/helpers/credential-switch.ts +143 -0
- package/src/slash-commands/helpers/mcp.ts +9 -3
- package/src/slash-commands/helpers/usage-report.ts +61 -56
- package/src/slash-commands/types.ts +7 -2
- package/src/task/executor.ts +30 -11
- package/src/task/index.ts +66 -7
- package/src/task/render.ts +23 -9
- package/src/tools/ask-answer-registry.ts +23 -7
- package/src/tools/ask.ts +8 -4
- package/src/tools/bash-sleep-advisory.ts +115 -0
- package/src/tools/bash.ts +98 -18
- package/src/tools/browser/attach.ts +71 -3
- package/src/tools/browser/launch.ts +86 -13
- package/src/tools/browser/profile-discovery.ts +57 -7
- package/src/tools/browser/render.ts +8 -1
- package/src/tools/browser.ts +130 -21
- package/src/tools/computer.enforcement.test.ts +1 -1
- package/src/tools/computer.ts +3 -2
- package/src/tools/cron.ts +12 -1
- package/src/tools/image-gen.ts +27 -16
- package/src/tools/index.ts +8 -0
- package/src/tools/job.ts +33 -6
- package/src/tools/monitor.ts +41 -2
- package/src/tools/skill-discovery.ts +21 -29
- package/src/tools/subagent.ts +142 -24
- package/src/tools/tool-catalog.generated.ts +6 -6
- package/src/tools/ultragoal-ask-guard.ts +10 -3
- package/src/utils/herdr-pane.ts +345 -0
- package/src/utils/title-generator.ts +2 -0
- package/src/web/scrapers/index.ts +6 -4
- package/dist/types/cli/malloc-env-guard.test.d.ts +0 -1
- package/dist/types/defaults/gjc-defaults.test.d.ts +0 -1
- package/dist/types/memory-backend/lazy-loading.test.d.ts +0 -1
- package/dist/types/runtime/boot-ordering.test.d.ts +0 -1
- package/dist/types/runtime/lazy-service.test.d.ts +0 -1
- package/dist/types/runtime/network-prewarm-service.test.d.ts +0 -1
- package/dist/types/runtime/workspace-tree-service.test.d.ts +0 -1
- package/dist/types/runtime-mcp/config.test.d.ts +0 -1
- package/dist/types/runtime-mcp/http.test.d.ts +0 -1
- package/dist/types/runtime-mcp/manager-pool.test.d.ts +0 -1
- package/dist/types/runtime-mcp/pool-key.test.d.ts +0 -1
- package/dist/types/runtime-mcp/pool.test.d.ts +0 -1
- package/dist/types/sdk/bus/lifecycle-control-runtime.d.ts +0 -117
- package/dist/types/sdk/bus/lifecycle-orchestrator.d.ts +0 -141
- package/dist/types/sdk/bus/telegram-cli.d.ts +0 -31
- package/dist/types/sdk/elevation/allowlist.d.ts +0 -20
- package/dist/types/sdk/elevation/audit.d.ts +0 -93
- package/dist/types/sdk/elevation/capability.d.ts +0 -3
- package/dist/types/sdk/elevation/digest.d.ts +0 -72
- package/dist/types/sdk/elevation/dispatch-receipt.d.ts +0 -85
- package/dist/types/sdk/elevation/grant-ledger.d.ts +0 -163
- package/dist/types/sdk/elevation/owner.d.ts +0 -48
- package/dist/types/sdk/host/import-graph.test.d.ts +0 -1
- package/dist/types/sdk/host/sdk-surface-parity.test.d.ts +0 -1
- package/dist/types/sdk/host/session-runtime.test.d.ts +0 -1
- package/dist/types/sdk/host/websocket-transport.lifecycle.test.d.ts +0 -1
- package/dist/types/session/auth-broker-config.d.ts +0 -13
- package/dist/types/session/heap-eviction-artifacts.test.d.ts +0 -1
- package/dist/types/skills/skills.test.d.ts +0 -1
- package/dist/types/slash-commands/notify-command.test.d.ts +0 -1
- package/dist/types/task/token-log.test.d.ts +0 -1
- package/dist/types/tools/computer.enforcement.test.d.ts +0 -1
- package/dist/types/tools/descriptors.test.d.ts +0 -1
- package/scripts/g005-daemon-smoke.ts +0 -180
- package/scripts/g011-daemon-path-smoke.ts +0 -153
- package/src/sdk/bus/lifecycle-control-runtime.ts +0 -1733
- package/src/sdk/bus/lifecycle-orchestrator.ts +0 -489
- package/src/sdk/bus/telegram-cli.ts +0 -212
- package/src/sdk/elevation/allowlist.ts +0 -54
- package/src/sdk/elevation/audit.ts +0 -208
- package/src/sdk/elevation/capability.ts +0 -41
- package/src/sdk/elevation/digest.ts +0 -129
- package/src/sdk/elevation/dispatch-receipt.ts +0 -184
- package/src/sdk/elevation/grant-ledger.ts +0 -1142
- package/src/sdk/elevation/owner.ts +0 -109
- package/src/session/auth-broker-config.ts +0 -109
- /package/dist/types/{ai-core-import-gate.test.d.ts → discovery/claude-hooks.d.ts} +0 -0
- /package/dist/types/{cli/fixture-report.test.d.ts → discovery/codex-hooks.d.ts} +0 -0
- /package/dist/types/sdk/{bus/recent-activity.d.ts → lifecycle/recent-sessions.d.ts} +0 -0
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
import type { LifecycleErrorReason, ResumeCandidate, SessionCreateFrame, SessionLifecycleRequest } from "./index";
|
|
2
|
-
/** Durable idempotency state for a single lifecycle request. */
|
|
3
|
-
export type LedgerState = "in_progress" | "success" | "failure" | "terminal_uncertain";
|
|
4
|
-
/** One persisted idempotency entry, keyed by `chatId:updateId`. */
|
|
5
|
-
export interface LedgerEntry {
|
|
6
|
-
requestHash: string;
|
|
7
|
-
state: LedgerState;
|
|
8
|
-
requestId: string;
|
|
9
|
-
verb: SessionLifecycleRequest["type"];
|
|
10
|
-
intendedSessionId?: string;
|
|
11
|
-
startupPromptRef?: string;
|
|
12
|
-
createdAt: number;
|
|
13
|
-
updatedAt: number;
|
|
14
|
-
targetSummary: Record<string, unknown>;
|
|
15
|
-
sessionId?: string;
|
|
16
|
-
tmuxSession?: string;
|
|
17
|
-
sessionStateFile?: string;
|
|
18
|
-
endpointUrl?: string;
|
|
19
|
-
/** Close effect outcome: whether the tmux process is confirmed gone. */
|
|
20
|
-
processGone?: boolean;
|
|
21
|
-
reason?: LifecycleErrorReason;
|
|
22
|
-
resumeMode?: ResumeEffectResult["mode"];
|
|
23
|
-
}
|
|
24
|
-
/** The full on-disk ledger document. */
|
|
25
|
-
export interface LedgerDoc {
|
|
26
|
-
version: 1;
|
|
27
|
-
entries: Record<string, LedgerEntry>;
|
|
28
|
-
}
|
|
29
|
-
/** Persistence boundary: atomic + fsynced read/write of the ledger document. */
|
|
30
|
-
export interface LedgerStore {
|
|
31
|
-
read(): Promise<LedgerDoc>;
|
|
32
|
-
/** Write atomically (temp + fsync + rename) under a per-ledger lock. */
|
|
33
|
-
write(doc: LedgerDoc): Promise<void>;
|
|
34
|
-
}
|
|
35
|
-
/** Redacted audit-v2 event. */
|
|
36
|
-
export interface AuditEvent {
|
|
37
|
-
schemaVersion: 2;
|
|
38
|
-
ts: string;
|
|
39
|
-
event: "accepted" | "rejected" | "duplicate_reack" | "rate_limited" | "spawn_started" | "recovered_in_progress" | "success" | "failure" | "terminal_uncertain";
|
|
40
|
-
chatRef: string;
|
|
41
|
-
updateId: number;
|
|
42
|
-
requestRef: string;
|
|
43
|
-
verb: SessionLifecycleRequest["type"];
|
|
44
|
-
targetKind: CanonicalTargetKind;
|
|
45
|
-
targetRef: string;
|
|
46
|
-
reason?: LifecycleErrorReason;
|
|
47
|
-
}
|
|
48
|
-
export interface CreateEffectResult {
|
|
49
|
-
sessionId: string;
|
|
50
|
-
tmuxSession: string;
|
|
51
|
-
sessionStateFile?: string;
|
|
52
|
-
endpointUrl: string;
|
|
53
|
-
topicThreadId: string;
|
|
54
|
-
}
|
|
55
|
-
export interface ResumeEffectResult extends CreateEffectResult {
|
|
56
|
-
mode: "reattached" | "cold_restarted";
|
|
57
|
-
}
|
|
58
|
-
/** Injected effects + policy. Pure orchestration calls into these. */
|
|
59
|
-
export interface OrchestratorDeps {
|
|
60
|
-
/** The single paired chat id. Anything else is rejected before parsing. */
|
|
61
|
-
pairedChatId: string;
|
|
62
|
-
/** In-memory, derived 32-byte audit-v2 HMAC key. */
|
|
63
|
-
auditRedactionKey: Uint8Array;
|
|
64
|
-
now: () => number;
|
|
65
|
-
store: LedgerStore;
|
|
66
|
-
audit: (event: AuditEvent) => Promise<void> | void;
|
|
67
|
-
/** Resolves the returned tmux provider once per request for psmux preflight. */
|
|
68
|
-
isPsmuxProvider: () => boolean;
|
|
69
|
-
/** Per-chat create rate limiter: returns true when allowed. */
|
|
70
|
-
allowCreate: (chatId: string, nowMs: number) => boolean;
|
|
71
|
-
/** Persist the once-consumed 0600 startup-prompt file after durably recording its ref. */
|
|
72
|
-
writeStartupPrompt: (requestId: string, prompt: string | undefined, persistRef: (ref: string) => Promise<void>) => Promise<string | undefined>;
|
|
73
|
-
/** Spawn a session for a create/cold-restart. */
|
|
74
|
-
spawnCreate: (frame: SessionCreateFrame, ids: {
|
|
75
|
-
lifecycleRequestId: string;
|
|
76
|
-
intendedSessionId: string;
|
|
77
|
-
startupPromptRef?: string;
|
|
78
|
-
}) => Promise<CreateEffectResult>;
|
|
79
|
-
closeSession: (target: {
|
|
80
|
-
sessionId: string;
|
|
81
|
-
tmuxSession?: string;
|
|
82
|
-
sessionStateFile?: string;
|
|
83
|
-
}) => Promise<{
|
|
84
|
-
processGone: boolean;
|
|
85
|
-
}>;
|
|
86
|
-
resumeSession: (target: {
|
|
87
|
-
sessionIdOrPrefix: string;
|
|
88
|
-
path?: string;
|
|
89
|
-
}) => Promise<ResumeEffectResult | {
|
|
90
|
-
ambiguous: ResumeCandidate[];
|
|
91
|
-
} | {
|
|
92
|
-
notFound: true;
|
|
93
|
-
}>;
|
|
94
|
-
}
|
|
95
|
-
export type CanonicalTargetKind = "existing_path" | "worktree" | "plain_dir" | "session_close" | "session_resume";
|
|
96
|
-
export declare function canonicalTarget(frame: SessionLifecycleRequest): string;
|
|
97
|
-
export declare function canonicalRequest(frame: SessionLifecycleRequest): string;
|
|
98
|
-
export declare function requestHash(frame: SessionLifecycleRequest): string;
|
|
99
|
-
export declare function auditRedactionRef(key: Uint8Array, domain: string, value: string): string;
|
|
100
|
-
export declare function summarizeTarget(frame: SessionLifecycleRequest): Record<string, unknown>;
|
|
101
|
-
export declare function ledgerKey(chatId: string, updateId: number): string;
|
|
102
|
-
/** How a freshly-arrived request relates to the durable ledger. */
|
|
103
|
-
export type DuplicateClass = {
|
|
104
|
-
kind: "new";
|
|
105
|
-
} | {
|
|
106
|
-
kind: "reack_success";
|
|
107
|
-
entry: LedgerEntry;
|
|
108
|
-
} | {
|
|
109
|
-
kind: "reack_failure";
|
|
110
|
-
entry: LedgerEntry;
|
|
111
|
-
} | {
|
|
112
|
-
kind: "in_progress";
|
|
113
|
-
entry: LedgerEntry;
|
|
114
|
-
} | {
|
|
115
|
-
kind: "terminal_uncertain";
|
|
116
|
-
entry: LedgerEntry;
|
|
117
|
-
} | {
|
|
118
|
-
kind: "conflict";
|
|
119
|
-
entry: LedgerEntry;
|
|
120
|
-
};
|
|
121
|
-
/** Classify a request against an existing ledger entry (pure). */
|
|
122
|
-
export declare function classifyDuplicate(existing: LedgerEntry | undefined, hash: string): DuplicateClass;
|
|
123
|
-
/** The structured outcome the daemon translates into a wire response frame. */
|
|
124
|
-
export type LifecycleOutcome = {
|
|
125
|
-
status: "ok";
|
|
126
|
-
entry: LedgerEntry;
|
|
127
|
-
mode?: "reattached" | "cold_restarted";
|
|
128
|
-
} | {
|
|
129
|
-
status: "error";
|
|
130
|
-
reason: LifecycleErrorReason;
|
|
131
|
-
message: string;
|
|
132
|
-
candidates?: ResumeCandidate[];
|
|
133
|
-
} | {
|
|
134
|
-
status: "pending";
|
|
135
|
-
entry: LedgerEntry;
|
|
136
|
-
};
|
|
137
|
-
/**
|
|
138
|
-
* Handle one authenticated lifecycle request. Enforces paired-chat gating,
|
|
139
|
-
* idempotency, and rate limiting BEFORE any side effect, then dispatches.
|
|
140
|
-
*/
|
|
141
|
-
export declare function handleLifecycleRequest(frame: SessionLifecycleRequest, deps: OrchestratorDeps): Promise<LifecycleOutcome>;
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bun
|
|
2
|
-
/**
|
|
3
|
-
* Reference CLI for the Gajae-Code SDK Telegram client.
|
|
4
|
-
*
|
|
5
|
-
* Bridges a running GJC session's notification endpoint to a Telegram bot so you
|
|
6
|
-
* can answer asks / see idle pings from your phone — no RPC mode required. This
|
|
7
|
-
* is an EXAMPLE/template (the SDK contract is in `docs/sdk.md`);
|
|
8
|
-
* Discord/Slack clients are written the same way.
|
|
9
|
-
*
|
|
10
|
-
* Usage:
|
|
11
|
-
* bun run packages/coding-agent/src/sdk/bus/telegram-cli.ts \
|
|
12
|
-
* --bot-token <token> [--chat-id <id>] [--endpoint-file <path> | --session-id <id>] [--repo <dir>]
|
|
13
|
-
*
|
|
14
|
-
* Env fallbacks: GJC_TG_BOT_TOKEN, GJC_TG_CHAT_ID.
|
|
15
|
-
* If --chat-id is omitted it is auto-resolved from getUpdates (message the bot once).
|
|
16
|
-
* If neither --endpoint-file nor --session-id is given, the newest endpoint file
|
|
17
|
-
* under <repo>/.gjc/state/sdk/ is used.
|
|
18
|
-
*/
|
|
19
|
-
import { type TelegramNotificationSound } from "./telegram-reference";
|
|
20
|
-
interface CliArgs {
|
|
21
|
-
botToken?: string;
|
|
22
|
-
chatId?: string;
|
|
23
|
-
endpointFile?: string;
|
|
24
|
-
sessionId?: string;
|
|
25
|
-
repo: string;
|
|
26
|
-
apiBase?: string;
|
|
27
|
-
sound: TelegramNotificationSound;
|
|
28
|
-
force: boolean;
|
|
29
|
-
}
|
|
30
|
-
export declare function parseArgs(argv: string[]): CliArgs;
|
|
31
|
-
export {};
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Exact elevation-gated allowlist, fully qualified and enumerative.
|
|
3
|
-
*
|
|
4
|
-
* The elevation allowlist is the exact set of registry operations below (the
|
|
5
|
-
* raw destructive lifecycle and workflow-approval operations). It is declared
|
|
6
|
-
* ONCE here as a `Set<string>` of `"kind:sdkId"` keys and mechanically pinned
|
|
7
|
-
* against `operation-registry.ts` by the allowlist unit test: every key must
|
|
8
|
-
* resolve via `findOperation(kind, sdkId)` and no elevatable operation may be
|
|
9
|
-
* silently missing. Any operation NOT in this set is rejected at issue with
|
|
10
|
-
* `elevation_not_allowlisted` before any ledger reservation. There is no
|
|
11
|
-
* generalized policy engine: this is the deterministic predicate.
|
|
12
|
-
*/
|
|
13
|
-
export declare const ELEVATION_ALLOWLIST_KEYS: readonly ["global:session.close", "global:session.delete", "control:session.delete", "control:session.close", "control:context.clear", "control:session.cwd.move", "control:compaction.run", "control:bash.execute", "control:bash.background", "control:queue.message.remove", "control:queue.message.update", "control:retry.abort", "control:retry.now", "control:bash.abort", "control:retry.auto.set", "control:compaction.auto.set", "control:extension.set_enabled", "control:queue.interrupt_mode.set", "control:queue.follow_up_mode.set", "control:queue.steering_mode.set", "control:tools.active.set", "control:permission_mode.set", "control:service_tier.set", "control:workflow.gate_answer", "control:workflow.plan_approve"];
|
|
14
|
-
/**
|
|
15
|
-
* Whether `(kind, sdkId)` is the fully qualified identity of an allowlisted
|
|
16
|
-
* elevation-gated operation. The pair is validated against the operation
|
|
17
|
-
* registry before any elevation is admitted, so a key can never name an
|
|
18
|
-
* operation that does not exist.
|
|
19
|
-
*/
|
|
20
|
-
export declare function isElevationAllowlisted(kind: unknown, sdkId: unknown): boolean;
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import { SDK_STATE_VERSION } from "../broker/state-version";
|
|
2
|
-
import { classifyProcessIncarnationLiveness } from "./owner";
|
|
3
|
-
/**
|
|
4
|
-
* Durable elevation audit trail.
|
|
5
|
-
*
|
|
6
|
-
* Append-only JSONL under the same elevation-local lock as the grant ledger,
|
|
7
|
-
* mode 0600. Every state transition of a grant — issue, operator answer,
|
|
8
|
-
* expiry, misuse, duplicate answer, claim, and dispatch outcome — is
|
|
9
|
-
* recorded with the exact identity evidence the transition consumed, so an
|
|
10
|
-
* auditor can reproduce why a grant reached its terminal state without
|
|
11
|
-
* trusting in-memory state.
|
|
12
|
-
*
|
|
13
|
-
* The audit stream is an evidence trail, never an authority: audit rows are
|
|
14
|
-
* append-only, are never re-read to drive decisions, and a corrupted row is
|
|
15
|
-
* quarantined (like ledger rows) instead of failing the ledger.
|
|
16
|
-
*/
|
|
17
|
-
export type ElevationAuditEvent = {
|
|
18
|
-
kind: "issued";
|
|
19
|
-
} | {
|
|
20
|
-
kind: "answered";
|
|
21
|
-
outcome: "granted" | "denied" | "expired" | "misused" | "target_unavailable" | "duplicate_answer";
|
|
22
|
-
} | {
|
|
23
|
-
kind: "expired";
|
|
24
|
-
} | {
|
|
25
|
-
kind: "misused";
|
|
26
|
-
} | {
|
|
27
|
-
kind: "duplicate_answer";
|
|
28
|
-
} | {
|
|
29
|
-
kind: "claimed";
|
|
30
|
-
claim: {
|
|
31
|
-
ownerId: string;
|
|
32
|
-
epoch: number;
|
|
33
|
-
pid: number;
|
|
34
|
-
incarnation: string;
|
|
35
|
-
};
|
|
36
|
-
} | {
|
|
37
|
-
kind: "dispatched";
|
|
38
|
-
dispatch: {
|
|
39
|
-
ownerId: string;
|
|
40
|
-
epoch: number;
|
|
41
|
-
dispatchedAt: number;
|
|
42
|
-
};
|
|
43
|
-
outcome: {
|
|
44
|
-
status: "ok" | "failed";
|
|
45
|
-
code?: string;
|
|
46
|
-
message?: string;
|
|
47
|
-
dispatchedAt: number;
|
|
48
|
-
};
|
|
49
|
-
} | {
|
|
50
|
-
kind: "consumed";
|
|
51
|
-
message: string;
|
|
52
|
-
} | {
|
|
53
|
-
kind: "unavailable";
|
|
54
|
-
reason: string;
|
|
55
|
-
};
|
|
56
|
-
export interface ElevationAuditEntry {
|
|
57
|
-
version: typeof SDK_STATE_VERSION;
|
|
58
|
-
ts: number;
|
|
59
|
-
elevationRequestId: string;
|
|
60
|
-
issueIndex: number;
|
|
61
|
-
event: ElevationAuditEvent;
|
|
62
|
-
}
|
|
63
|
-
export type ElevationAuditEventName = ElevationAuditEvent["kind"];
|
|
64
|
-
export declare function isElevationAuditEntry(value: unknown): value is ElevationAuditEntry;
|
|
65
|
-
export interface ElevationAuditOptions {
|
|
66
|
-
/** Injectable clock. */
|
|
67
|
-
now?: () => number;
|
|
68
|
-
/**
|
|
69
|
-
* Injectable tri-state process-incarnation liveness classifier, defaulting
|
|
70
|
-
* to `classifyProcessIncarnationLiveness`. The audit trail records the
|
|
71
|
-
* liveness verdict behind `consumed`/`unavailable` settlements so the
|
|
72
|
-
* crash-truth settlement is reproducible; the verdict never drives the
|
|
73
|
-
* settlement itself (that lives in the ledger).
|
|
74
|
-
*/
|
|
75
|
-
classifyLiveness?: typeof classifyProcessIncarnationLiveness;
|
|
76
|
-
}
|
|
77
|
-
export declare class ElevationAudit {
|
|
78
|
-
#private;
|
|
79
|
-
constructor(agentDir: string, options?: ElevationAuditOptions);
|
|
80
|
-
get warnings(): readonly string[];
|
|
81
|
-
/**
|
|
82
|
-
* Appends one audit row for an elevation grant transition. Callers MUST
|
|
83
|
-
* hold the same elevation-local lock that guards the grant ledger; the
|
|
84
|
-
* audit row and the grant row therefore commit together.
|
|
85
|
-
*/
|
|
86
|
-
append(entry: Omit<ElevationAuditEntry, "version">): Promise<void>;
|
|
87
|
-
/**
|
|
88
|
-
* Opens the audit stream: creates the 0600 directory/file if absent and
|
|
89
|
-
* quarantines any corrupt tail so subsequent appends are always readable.
|
|
90
|
-
* Called under the same lock as `ElevationLedger.open()`.
|
|
91
|
-
*/
|
|
92
|
-
open(): Promise<this>;
|
|
93
|
-
}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export declare function signElevationCapability(authorityToken: string, requestId: string, sdkId: string, input: Record<string, unknown>): string;
|
|
2
|
-
export declare function verifyElevationCapability(authorityToken: string, capability: string, sdkId: string, input: Record<string, unknown>): boolean;
|
|
3
|
-
export declare function elevationAuthorityPath(stateRoot: string, sessionId: string): string;
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Fully qualified elevation request digest.
|
|
3
|
-
*
|
|
4
|
-
* An elevation grant binds the exact operation the operator approved. The
|
|
5
|
-
* digest covers the complete `{kind, sdkId, input}` triple so substituting a
|
|
6
|
-
* different operation or different input bytes changes the digest and the
|
|
7
|
-
* gate presentation fails closed (`misused`). The top-level
|
|
8
|
-
* `elevationRequestId` correlation field is deliberately excluded: it is the
|
|
9
|
-
* durable correlation ID assigned to a request, not part of the approved
|
|
10
|
-
* content, and the same content re-issued under a new ID must produce the
|
|
11
|
-
* same digest.
|
|
12
|
-
*
|
|
13
|
-
* Only allowlisted operations can be elevated; anything else is refused so a
|
|
14
|
-
* caller cannot mint a grant for an operation outside the elevation policy.
|
|
15
|
-
*/
|
|
16
|
-
export declare const ELEVATION_OPERATION_KINDS: readonly ["control", "query", "global"];
|
|
17
|
-
export type ElevationOperationKind = (typeof ELEVATION_OPERATION_KINDS)[number];
|
|
18
|
-
export interface ElevationOperation {
|
|
19
|
-
kind: ElevationOperationKind;
|
|
20
|
-
sdkId: string;
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Operations that require an elevation grant. Default SDK scope
|
|
24
|
-
* (list/query/send/tail) stays grant-free; destructive lifecycle operations
|
|
25
|
-
* and workflow approval operations are elevatable and therefore gated.
|
|
26
|
-
*/
|
|
27
|
-
export declare const ELEVATION_ALLOWLIST: readonly {
|
|
28
|
-
kind: ElevationOperationKind;
|
|
29
|
-
sdkId: string;
|
|
30
|
-
}[];
|
|
31
|
-
export declare function isElevatableOperation(kind: unknown, sdkId: unknown): boolean;
|
|
32
|
-
/**
|
|
33
|
-
* Whether the `(kind, sdkId)` pair names a registry operation that the
|
|
34
|
-
* elevation allowlist recognizes. Used by the ledger row validator so a
|
|
35
|
-
* persisted row can never bind an operation outside the allowlist.
|
|
36
|
-
*/
|
|
37
|
-
export declare function isKnownElevationOperation(kind: unknown, sdkId: unknown): boolean;
|
|
38
|
-
/**
|
|
39
|
-
* Canonical JSON encoding for elevation digest leaves.
|
|
40
|
-
*
|
|
41
|
-
* Intentionally byte-compatible with the broker's identity canonicalization
|
|
42
|
-
* (`canonicalJson` in `sdk/broker/broker.ts`): object keys sorted, compact
|
|
43
|
-
* separators, `undefined` fields preserved verbatim, arrays joined without
|
|
44
|
-
* separators. The broker computes the request digest at issue time and the
|
|
45
|
-
* ledger recomputes/compares the same encoding, so digest verification is
|
|
46
|
-
* stable across issue, gate presentation, and answer.
|
|
47
|
-
*/
|
|
48
|
-
export declare function canonicalElevationJson(value: unknown): string;
|
|
49
|
-
export type ElevationDigestResult = {
|
|
50
|
-
ok: true;
|
|
51
|
-
digest: string;
|
|
52
|
-
} | {
|
|
53
|
-
ok: false;
|
|
54
|
-
error: {
|
|
55
|
-
code: string;
|
|
56
|
-
message: string;
|
|
57
|
-
};
|
|
58
|
-
};
|
|
59
|
-
/**
|
|
60
|
-
* Computes the fully qualified digest for an elevation request.
|
|
61
|
-
*
|
|
62
|
-
* `input` is digested exactly as supplied except that a top-level
|
|
63
|
-
* `elevationRequestId` field is removed first (it is the correlation ID, not
|
|
64
|
-
* approved content). Operations outside `ELEVATION_ALLOWLIST` are refused
|
|
65
|
-
* with `elevation_not_required` so the broker never mints a grant for an
|
|
66
|
-
* operation that does not need one.
|
|
67
|
-
*/
|
|
68
|
-
export declare function elevationRequestDigest(request: {
|
|
69
|
-
kind: unknown;
|
|
70
|
-
sdkId: unknown;
|
|
71
|
-
input: unknown;
|
|
72
|
-
}): ElevationDigestResult;
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
export declare const ELEVATION_RECEIPT_VERSION = 1;
|
|
2
|
-
/**
|
|
3
|
-
* Identity of the broker tenure that claims a grant and dispatches it.
|
|
4
|
-
*
|
|
5
|
-
* `ownerId` is the broker instance owner id and `epoch` increments per broker
|
|
6
|
-
* start, so a restart (even of the same object) yields a new tenure. `pid` and
|
|
7
|
-
* `incarnation` are retained for truthful tri-state liveness replay.
|
|
8
|
-
*/
|
|
9
|
-
export interface ElevationClaimIdentity {
|
|
10
|
-
ownerId: string;
|
|
11
|
-
epoch: number;
|
|
12
|
-
pid: number;
|
|
13
|
-
incarnation: string;
|
|
14
|
-
}
|
|
15
|
-
export type ElevationReceiptState = "claimed" | "dispatched" | "uncertain";
|
|
16
|
-
/**
|
|
17
|
-
* Durable dispatch outcome. `unknown` is the crash truth: the grant was
|
|
18
|
-
* consumed by a claim but the dispatch outcome is not knowable, so retry
|
|
19
|
-
* requires a new grant.
|
|
20
|
-
*/
|
|
21
|
-
export type ElevationDispatchOutcome = {
|
|
22
|
-
status: "ok";
|
|
23
|
-
dispatchedAt: number;
|
|
24
|
-
} | {
|
|
25
|
-
status: "failed";
|
|
26
|
-
code: string;
|
|
27
|
-
message: string;
|
|
28
|
-
dispatchedAt: number;
|
|
29
|
-
} | {
|
|
30
|
-
status: "unknown";
|
|
31
|
-
message: string;
|
|
32
|
-
dispatchedAt: number;
|
|
33
|
-
};
|
|
34
|
-
/**
|
|
35
|
-
* Owner/epoch-bound dispatch receipt.
|
|
36
|
-
*
|
|
37
|
-
* State machine: `claimed` (grant spent, dispatch in flight, bound to the
|
|
38
|
-
* claiming broker tenure) -> `dispatched` (terminal, outcome recorded) or
|
|
39
|
-
* `uncertain` (terminal truth: the claim's outcome is unknowable after its
|
|
40
|
-
* broker tenure died). Replay never fabricates an outcome: a receipt left in
|
|
41
|
-
* `claimed` by a dead tenure is truthfully terminalized to `uncertain`.
|
|
42
|
-
*/
|
|
43
|
-
export interface ElevationDispatchReceipt {
|
|
44
|
-
version: typeof ELEVATION_RECEIPT_VERSION;
|
|
45
|
-
elevationRequestId: string;
|
|
46
|
-
issueIndex: number;
|
|
47
|
-
state: ElevationReceiptState;
|
|
48
|
-
claim: ElevationClaimIdentity & {
|
|
49
|
-
claimedAt: number;
|
|
50
|
-
};
|
|
51
|
-
dispatch?: {
|
|
52
|
-
ownerId: string;
|
|
53
|
-
epoch: number;
|
|
54
|
-
dispatchedAt: number;
|
|
55
|
-
};
|
|
56
|
-
outcome?: ElevationDispatchOutcome;
|
|
57
|
-
ts: number;
|
|
58
|
-
}
|
|
59
|
-
export declare function isElevationRequestId(value: unknown): value is string;
|
|
60
|
-
export declare function isElevationClaimIdentity(value: unknown): value is ElevationClaimIdentity;
|
|
61
|
-
export declare function isElevationDispatchOutcome(value: unknown): value is ElevationDispatchOutcome;
|
|
62
|
-
export declare function isElevationDispatchReceipt(value: unknown): value is ElevationDispatchReceipt;
|
|
63
|
-
export declare function claimReceipt(requestId: string, issueIndex: number, claim: ElevationClaimIdentity, claimedAt: number): ElevationDispatchReceipt;
|
|
64
|
-
export declare function dispatchReceipt(receipt: ElevationDispatchReceipt, dispatch: {
|
|
65
|
-
ownerId: string;
|
|
66
|
-
epoch: number;
|
|
67
|
-
dispatchedAt: number;
|
|
68
|
-
}, outcome: ElevationDispatchOutcome): ElevationDispatchReceipt;
|
|
69
|
-
export declare function uncertainReceipt(receipt: ElevationDispatchReceipt, at: number): ElevationDispatchReceipt;
|
|
70
|
-
export declare function receiptClaimMatches(receipt: ElevationDispatchReceipt, identity: ElevationClaimIdentity): boolean;
|
|
71
|
-
/**
|
|
72
|
-
* Who may answer an elevation gate.
|
|
73
|
-
*
|
|
74
|
-
* Internal operator-only: the answer boundary is the broker's internal
|
|
75
|
-
* operator attestation (`local_operator`), reached only through broker-owned
|
|
76
|
-
* surfaces. There is no public `elevation.answer` operation and no
|
|
77
|
-
* requester-correlation check: the answerer is structurally an operator
|
|
78
|
-
* attestation, so requester self-approval is impossible by construction.
|
|
79
|
-
*/
|
|
80
|
-
export type ElevationAnswerAuthority = {
|
|
81
|
-
source: "local_operator";
|
|
82
|
-
attestedBy: string;
|
|
83
|
-
};
|
|
84
|
-
/** Structural guard for the internal operator attestation. */
|
|
85
|
-
export declare function isElevationAnswerAuthority(value: unknown): value is ElevationAnswerAuthority;
|
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
import { SDK_STATE_VERSION } from "../broker/state-version";
|
|
2
|
-
import { type ElevationOperation } from "./digest";
|
|
3
|
-
import { type ElevationAnswerAuthority, type ElevationClaimIdentity, type ElevationDispatchOutcome, type ElevationDispatchReceipt } from "./dispatch-receipt";
|
|
4
|
-
import { type BrokerOwnerPrincipal, classifyProcessIncarnationLiveness } from "./owner";
|
|
5
|
-
/**
|
|
6
|
-
* Broker-owned elevation grant ledger.
|
|
7
|
-
*
|
|
8
|
-
* Durable state machine (per elevation request):
|
|
9
|
-
* `requested -> granted -> claimed -> dispatched(outcome)`; terminal
|
|
10
|
-
* `denied`/`expired`/`misused`/`target_unavailable`; crash truth
|
|
11
|
-
* `consumed` (claimed but outcome unknown). Grants are single-use: the claim
|
|
12
|
-
* CAS consumes the grant before dispatch, and a crash between consume and
|
|
13
|
-
* dispatch is replayed truthfully as `consumed` with outcome `unknown`
|
|
14
|
-
* (retry requires a new grant — fail closed).
|
|
15
|
-
*
|
|
16
|
-
* All mutations and reads serialize on one elevation-local
|
|
17
|
-
* `withFileLock` transaction covering grants (`grants.jsonl`), dispatch
|
|
18
|
-
* receipts (`receipts.jsonl`), the issue index (`index.json`), and the
|
|
19
|
-
* audit trail (`audit.jsonl`), so a claim, its receipt, and the issue
|
|
20
|
-
* sequence commit together.
|
|
21
|
-
*
|
|
22
|
-
* The answer boundary is internal operator-only: there is no public
|
|
23
|
-
* `elevation.answer` operation; answers are admitted only from the internal
|
|
24
|
-
* operator attestation, so requester self-approval is impossible by
|
|
25
|
-
* construction.
|
|
26
|
-
*/
|
|
27
|
-
export type ElevationGrantState = "requested" | "granted" | "claimed" | "dispatched" | "consumed" | "denied" | "expired" | "misused" | "target_unavailable";
|
|
28
|
-
export interface ElevationSessionIdentity {
|
|
29
|
-
sessionId: string;
|
|
30
|
-
/** Exact endpoint state root bound at issue time; never the repo root. */
|
|
31
|
-
endpointStateRoot: string;
|
|
32
|
-
endpointGeneration: number;
|
|
33
|
-
endpointIncarnation: string;
|
|
34
|
-
}
|
|
35
|
-
/** Audit-only requester binding; never an identity claim. */
|
|
36
|
-
export interface ElevationRequester {
|
|
37
|
-
source: "broker_connection";
|
|
38
|
-
connectionId: string;
|
|
39
|
-
}
|
|
40
|
-
export interface ElevationGrantRecord {
|
|
41
|
-
version: typeof SDK_STATE_VERSION;
|
|
42
|
-
/** Durable correlation ID; UUID, path-safe. */
|
|
43
|
-
elevationRequestId: string;
|
|
44
|
-
/** Monotonic path-safe issue sequence, allocated under the ledger lock. */
|
|
45
|
-
issueIndex: number;
|
|
46
|
-
state: ElevationGrantState;
|
|
47
|
-
operation: ElevationOperation;
|
|
48
|
-
requestDigest: string;
|
|
49
|
-
sessionIdentity: ElevationSessionIdentity;
|
|
50
|
-
principal: BrokerOwnerPrincipal;
|
|
51
|
-
requester: ElevationRequester;
|
|
52
|
-
requestedAt: number;
|
|
53
|
-
expiresAt: number;
|
|
54
|
-
outcome?: ElevationDispatchOutcome;
|
|
55
|
-
ts: number;
|
|
56
|
-
}
|
|
57
|
-
export type ElevationErrorCode = "not_found" | "invalid_input" | "idempotency_conflict" | "grant_spent" | "elevation_claim_in_progress" | "elevation_required" | "elevation_unavailable" | "elevation_not_required" | "endpoint_stale" | "target_unavailable" | "expired" | "misused" | "duplicate_answer" | "terminal_uncertain" | (string & {});
|
|
58
|
-
export type ElevationResult<T> = {
|
|
59
|
-
ok: true;
|
|
60
|
-
value: T;
|
|
61
|
-
} | {
|
|
62
|
-
ok: false;
|
|
63
|
-
error: {
|
|
64
|
-
code: ElevationErrorCode;
|
|
65
|
-
message: string;
|
|
66
|
-
};
|
|
67
|
-
};
|
|
68
|
-
export interface ElevationIssueParams {
|
|
69
|
-
/** Optional caller-supplied correlation ID for idempotent retry; the broker generates a UUID otherwise. */
|
|
70
|
-
elevationRequestId?: string;
|
|
71
|
-
operation: ElevationOperation;
|
|
72
|
-
input: Record<string, unknown>;
|
|
73
|
-
sessionIdentity: ElevationSessionIdentity;
|
|
74
|
-
principal: BrokerOwnerPrincipal;
|
|
75
|
-
requester: ElevationRequester;
|
|
76
|
-
expiresInMs?: number;
|
|
77
|
-
}
|
|
78
|
-
export interface ElevationIssueValue {
|
|
79
|
-
replay: boolean;
|
|
80
|
-
elevationRequestId: string;
|
|
81
|
-
issueIndex: number;
|
|
82
|
-
requestDigest: string;
|
|
83
|
-
state: ElevationGrantState;
|
|
84
|
-
requestedAt: number;
|
|
85
|
-
expiresAt: number;
|
|
86
|
-
grant: ElevationGrantRecord;
|
|
87
|
-
}
|
|
88
|
-
export interface ElevationAnswerParams {
|
|
89
|
-
elevationRequestId: string;
|
|
90
|
-
answer: "approve" | "deny";
|
|
91
|
-
/** Digest the answering surface presented from the gate payload. */
|
|
92
|
-
presentedDigest: string;
|
|
93
|
-
/** Broker-owner principal attesting the answer authority. */
|
|
94
|
-
principal: BrokerOwnerPrincipal;
|
|
95
|
-
answerer: ElevationAnswerAuthority;
|
|
96
|
-
/** Current broker-resolved target identity; undefined means the session is unreachable. */
|
|
97
|
-
currentSessionIdentity?: ElevationSessionIdentity;
|
|
98
|
-
}
|
|
99
|
-
export type ElevationAnswerOutcome = "granted" | "denied" | "expired" | "misused" | "target_unavailable" | "duplicate_answer";
|
|
100
|
-
export interface ElevationAnswerValue {
|
|
101
|
-
outcome: ElevationAnswerOutcome;
|
|
102
|
-
grant: ElevationGrantRecord;
|
|
103
|
-
}
|
|
104
|
-
export interface ElevationClaimParams {
|
|
105
|
-
elevationRequestId: string;
|
|
106
|
-
claimIdentity: ElevationClaimIdentity;
|
|
107
|
-
/** Current broker-resolved target identity; undefined means the session is unreachable. */
|
|
108
|
-
currentSessionIdentity?: ElevationSessionIdentity;
|
|
109
|
-
}
|
|
110
|
-
export interface ElevationClaimValue {
|
|
111
|
-
grant: ElevationGrantRecord;
|
|
112
|
-
receipt: ElevationDispatchReceipt;
|
|
113
|
-
}
|
|
114
|
-
export interface ElevationDispatchParams {
|
|
115
|
-
elevationRequestId: string;
|
|
116
|
-
dispatchIdentity: ElevationClaimIdentity;
|
|
117
|
-
outcome: ElevationDispatchOutcome;
|
|
118
|
-
}
|
|
119
|
-
export interface ElevationDispatchValue {
|
|
120
|
-
grant: ElevationGrantRecord;
|
|
121
|
-
receipt: ElevationDispatchReceipt;
|
|
122
|
-
}
|
|
123
|
-
export interface ElevationReadValue {
|
|
124
|
-
grant: ElevationGrantRecord;
|
|
125
|
-
receipt?: ElevationDispatchReceipt;
|
|
126
|
-
}
|
|
127
|
-
export interface ElevationListValue {
|
|
128
|
-
grants: ElevationReadValue[];
|
|
129
|
-
}
|
|
130
|
-
export interface ElevationLedgerOptions {
|
|
131
|
-
/** Defaults to the GJC_SDK_ELEVATION_ENABLED environment flag. */
|
|
132
|
-
enabled?: boolean;
|
|
133
|
-
/** Request lifetime before the grant expires. */
|
|
134
|
-
ttlMs?: number;
|
|
135
|
-
/** Injectable clock. */
|
|
136
|
-
now?: () => number;
|
|
137
|
-
/**
|
|
138
|
-
* Injectable tri-state process-incarnation liveness classifier (defaults to
|
|
139
|
-
* `classifyProcessIncarnationLiveness`). Test seam for crash-state replay:
|
|
140
|
-
* "unknown" must always fail closed as `elevation_claim_in_progress`.
|
|
141
|
-
*/
|
|
142
|
-
classifyLiveness?: typeof classifyProcessIncarnationLiveness;
|
|
143
|
-
}
|
|
144
|
-
declare function isElevationOperation(value: unknown): value is ElevationOperation;
|
|
145
|
-
declare function isElevationGrantRecord(value: unknown): value is ElevationGrantRecord;
|
|
146
|
-
export declare class ElevationLedger {
|
|
147
|
-
#private;
|
|
148
|
-
constructor(agentDir: string, options?: ElevationLedgerOptions);
|
|
149
|
-
get warnings(): readonly string[];
|
|
150
|
-
open(): Promise<this>;
|
|
151
|
-
assertSupportedStateVersions(): Promise<void>;
|
|
152
|
-
issue(params: ElevationIssueParams): Promise<ElevationResult<ElevationIssueValue>>;
|
|
153
|
-
answer(params: ElevationAnswerParams): Promise<ElevationResult<ElevationAnswerValue>>;
|
|
154
|
-
claim(params: ElevationClaimParams): Promise<ElevationResult<ElevationClaimValue>>;
|
|
155
|
-
dispatch(params: ElevationDispatchParams): Promise<ElevationResult<ElevationDispatchValue>>;
|
|
156
|
-
/** Pure read without reconciliation writes; used before actions. */
|
|
157
|
-
get(elevationRequestId: string): Promise<ElevationResult<ElevationReadValue>>;
|
|
158
|
-
/** Truthful read: reconciles expiry and crash-state claims before returning. */
|
|
159
|
-
resolve(elevationRequestId: string, claimIdentity: ElevationClaimIdentity): Promise<ElevationResult<ElevationReadValue>>;
|
|
160
|
-
/** Truthful listing: reconciles every grant before returning. */
|
|
161
|
-
list(claimIdentity: ElevationClaimIdentity): Promise<ElevationResult<ElevationListValue>>;
|
|
162
|
-
}
|
|
163
|
-
export { isElevationGrantRecord, isElevationOperation };
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Broker-owner principal.
|
|
3
|
-
*
|
|
4
|
-
* The elevation authority is the broker itself under the existing loopback
|
|
5
|
-
* trust model: one local OS-user/broker authority derived entirely from
|
|
6
|
-
* broker-owned state, never from caller input. `agentDirUid` is the uid that
|
|
7
|
-
* owns the agent directory, `brokerPid`/`brokerIncarnation` identify the
|
|
8
|
-
* broker process tenure so a restarted broker cannot attest the same
|
|
9
|
-
* authority.
|
|
10
|
-
*/
|
|
11
|
-
export interface BrokerOwnerPrincipal {
|
|
12
|
-
kind: "broker_owner";
|
|
13
|
-
owner: {
|
|
14
|
-
agentDirUid: number;
|
|
15
|
-
brokerPid: number;
|
|
16
|
-
brokerIncarnation: string;
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
export declare function isBrokerOwnerPrincipal(value: unknown): value is BrokerOwnerPrincipal;
|
|
20
|
-
export declare function sameBrokerOwnerPrincipal(left: BrokerOwnerPrincipal, right: BrokerOwnerPrincipal): boolean;
|
|
21
|
-
/**
|
|
22
|
-
* Reads the broker-owner principal from broker-owned state. Throws when the
|
|
23
|
-
* broker cannot attest a canonical process incarnation (the broker refuses to
|
|
24
|
-
* start in that case anyway), so callers treat a throw as "authority
|
|
25
|
-
* unavailable".
|
|
26
|
-
*/
|
|
27
|
-
export declare function readBrokerOwnerPrincipal(agentDir: string, brokerPid: number, brokerIncarnation: string): Promise<BrokerOwnerPrincipal>;
|
|
28
|
-
export type ProcessIncarnationLiveness = "alive" | "dead" | "unknown";
|
|
29
|
-
/**
|
|
30
|
-
* Tri-state liveness of a process incarnation.
|
|
31
|
-
*
|
|
32
|
-
* - `alive`: the pid is running and its current incarnation matches the
|
|
33
|
-
* stored one, so the original process tenure is still live.
|
|
34
|
-
* - `dead`: ESRCH (the pid is provably gone — independent of any persisted
|
|
35
|
-
* incarnation text), or the pid is running under a *different* canonical
|
|
36
|
-
* incarnation (PID reuse), which provably means the original process
|
|
37
|
-
* ended.
|
|
38
|
-
* - `unknown`: the pid is malformed, the persisted or observed incarnation
|
|
39
|
-
* is malformed/undefined, or the current incarnation cannot be read.
|
|
40
|
-
* Unknown never implies death: elevation claims must fail closed with
|
|
41
|
-
* `elevation_claim_in_progress` instead of terminalizing state on
|
|
42
|
-
* unprovable liveness.
|
|
43
|
-
*
|
|
44
|
-
* ESRCH is independent positive death proof: a pid that provably does not
|
|
45
|
-
* exist is dead regardless of the persisted incarnation text, so a corrupt
|
|
46
|
-
* persisted incarnation can never stall recovery forever.
|
|
47
|
-
*/
|
|
48
|
-
export declare function classifyProcessIncarnationLiveness(pid: unknown, incarnation: unknown): ProcessIncarnationLiveness;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|