@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 +1,39 @@
|
|
|
1
|
-
|
|
1
|
+
import type { ExtensionModule } from "../capability/extension-module";
|
|
2
|
+
import type { Hook } from "../capability/hook";
|
|
3
|
+
import type { MCPServer } from "../capability/mcp";
|
|
4
|
+
import type { Skill } from "../capability/skill";
|
|
5
|
+
import type { SlashCommand } from "../capability/slash-command";
|
|
6
|
+
import type { CustomTool } from "../capability/tool";
|
|
7
|
+
import type { LoadContext, LoadResult, SourceMeta } from "../capability/types";
|
|
8
|
+
export declare const CODEX_PROVIDER_ID = "codex";
|
|
9
|
+
export declare const CODEX_DISPLAY_NAME = "OpenAI Codex";
|
|
10
|
+
export declare const CODEX_CONFIG_DIR = ".codex";
|
|
11
|
+
/**
|
|
12
|
+
* Enumerate the project-local `.codex/skills` layout (cwd only), mirroring the
|
|
13
|
+
* OpenAI Codex project convention.
|
|
14
|
+
*/
|
|
15
|
+
export declare function scanCodexProjectSkills(ctx: LoadContext): Promise<LoadResult<Skill>>;
|
|
16
|
+
/**
|
|
17
|
+
* Enumerate the user-global `~/.codex/skills` layout. This is an explicit
|
|
18
|
+
* import candidate only; GJC never loads it without an explicit import action.
|
|
19
|
+
*/
|
|
20
|
+
export declare function scanCodexUserSkills(ctx: LoadContext): Promise<LoadResult<Skill>>;
|
|
21
|
+
export declare function codexSkillSourceMeta(filePath: string, level: "user" | "project"): SourceMeta;
|
|
22
|
+
export interface CodexConventionInspection {
|
|
23
|
+
mcps: LoadResult<MCPServer>;
|
|
24
|
+
skills: LoadResult<Skill>;
|
|
25
|
+
hooks: LoadResult<Hook>;
|
|
26
|
+
tools: LoadResult<CustomTool>;
|
|
27
|
+
extensions: LoadResult<ExtensionModule>;
|
|
28
|
+
commands: LoadResult<SlashCommand>;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Inspect what the Codex project convention (.codex/) would surface.
|
|
32
|
+
*
|
|
33
|
+
* Reuses the shared discovery scan helpers without registering any provider,
|
|
34
|
+
* so diagnostics can report the convention's files while keeping the runtime
|
|
35
|
+
* load path exactly as configured (none of these surfaces are registered for
|
|
36
|
+
* session loading; hooks are covered by the separate registered codex-hooks
|
|
37
|
+
* provider).
|
|
38
|
+
*/
|
|
39
|
+
export declare function inspectCodexConvention(ctx: LoadContext): Promise<CodexConventionInspection>;
|
|
@@ -20,10 +20,12 @@ import "../capability/system-prompt";
|
|
|
20
20
|
import "../capability/tool";
|
|
21
21
|
import "./agents-md";
|
|
22
22
|
import "./builtin";
|
|
23
|
+
import "./claude-hooks";
|
|
23
24
|
import "./claude-plugins";
|
|
24
25
|
import "./cline";
|
|
25
26
|
import "./agents";
|
|
26
27
|
import "./cursor";
|
|
28
|
+
import "./codex-hooks";
|
|
27
29
|
import "./gemini";
|
|
28
30
|
import "./opencode";
|
|
29
31
|
import "./github";
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type MCPServer } from "../capability/mcp";
|
|
2
|
+
import type { LoadResult } from "../capability/types";
|
|
3
|
+
/** Result of normalizing a foreign MCP config into the internal contract. */
|
|
4
|
+
export interface MCPCompatNormalizeResult extends LoadResult<MCPServer> {
|
|
5
|
+
/** Normalization diagnostics (always present, possibly empty). */
|
|
6
|
+
warnings: string[];
|
|
7
|
+
/** Path the definitions were normalized from (for provenance). */
|
|
8
|
+
sourcePath: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Normalize a Claude Code `.mcp.json` file body into the internal MCP contract.
|
|
12
|
+
*
|
|
13
|
+
* The Claude project format uses the same `{ "mcpServers": { name: {...} } }`
|
|
14
|
+
* JSON shape as GJC's config; `enabled`/`autoload` are preserved so a caller
|
|
15
|
+
* can decide startup behavior after import. Bounded to the supplied content:
|
|
16
|
+
* no filesystem scanning, no user-home reads.
|
|
17
|
+
*/
|
|
18
|
+
export declare function normalizeClaudeMcpJson(content: string, sourcePath: string, level?: "project" | "user"): MCPCompatNormalizeResult;
|
|
19
|
+
/**
|
|
20
|
+
* Normalize a Codex `config.toml` file body into the internal MCP contract.
|
|
21
|
+
* Only the `[mcp_servers.*]` sections are read; everything else is ignored.
|
|
22
|
+
*/
|
|
23
|
+
export declare function normalizeCodexMcpToml(content: string, sourcePath: string, level?: "project" | "user"): MCPCompatNormalizeResult;
|
|
24
|
+
/**
|
|
25
|
+
* Validate a normalized server against the internal MCP contract. Returns an
|
|
26
|
+
* error message, or undefined when the definition is importable. Callers use
|
|
27
|
+
* this to fail closed before writing a malformed/untrusted definition into
|
|
28
|
+
* `.gjc` (mcpCapability.validate is reused so import and runtime share one rule).
|
|
29
|
+
*/
|
|
30
|
+
export declare function validateMCPCompatServer(server: MCPServer): string | undefined;
|
|
@@ -53,6 +53,29 @@ export interface EditToolDetails {
|
|
|
53
53
|
/** Source-of-truth content after the edit; `undefined` for delete operations. */
|
|
54
54
|
newText?: string;
|
|
55
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* Bounded durable identity of one edit snapshot (#4566).
|
|
58
|
+
*
|
|
59
|
+
* Live edit results carry full `oldText`/`newText` file bodies so in-process
|
|
60
|
+
* consumers (ACP `diff` ToolCallContent, editors) keep working. Every persisted
|
|
61
|
+
* transcript entry replaces those bodies with this fixed-size receipt: byte
|
|
62
|
+
* length plus SHA-256 content digest, enough to detect source drift and to
|
|
63
|
+
* account for the edit durably without re-writing the whole file per edit.
|
|
64
|
+
*/
|
|
65
|
+
export interface EditSnapshotReceipt {
|
|
66
|
+
/** UTF-8 byte length of the snapshot (`0` for create/delete-absent sides). */
|
|
67
|
+
bytes: number;
|
|
68
|
+
/** SHA-256 hex digest of the exact snapshot text (empty string for length 0). */
|
|
69
|
+
sha256: string;
|
|
70
|
+
}
|
|
71
|
+
/** Per-edit-mode cap on any single persisted edit-result string field (#4566). */
|
|
72
|
+
export declare const EDIT_PERSIST_FIELD_MAX_CHARS: number;
|
|
73
|
+
/** Fixed marker used when a snapshot receipt replaces a full body. */
|
|
74
|
+
export declare const EDIT_SNAPSHOT_EXTERNALIZED_NOTICE = "[edit snapshot externalized: see oldTextDigest/newTextDigest; full body omitted from transcript]";
|
|
75
|
+
/** Build the bounded durable receipt for one snapshot body. */
|
|
76
|
+
export declare function editSnapshotReceipt(text: string | undefined): EditSnapshotReceipt | undefined;
|
|
77
|
+
/** True when a snapshot body is small enough to persist inline without amplification. */
|
|
78
|
+
export declare function editSnapshotPersistableInline(text: string | undefined): boolean;
|
|
56
79
|
export interface EditRenderArgs {
|
|
57
80
|
path?: string;
|
|
58
81
|
file_path?: string;
|
|
@@ -14,8 +14,11 @@ interface BeforeAgentStartCombinedResult {
|
|
|
14
14
|
systemPrompt?: string[];
|
|
15
15
|
}
|
|
16
16
|
export type ExtensionErrorListener = (error: ExtensionError) => void;
|
|
17
|
+
/** Bounded timeout for session_shutdown handlers — generous but never infinite. */
|
|
18
|
+
export declare const SESSION_SHUTDOWN_HANDLER_TIMEOUT_MS = 60000;
|
|
17
19
|
export declare const EXTENSION_HANDLER_TIMEOUT_MS = 30000;
|
|
18
20
|
export declare function testSetExtensionHandlerTimeoutMs(timeoutMs: number): void;
|
|
21
|
+
export declare function testSetSessionShutdownHandlerTimeoutMs(timeoutMs: number): void;
|
|
19
22
|
/**
|
|
20
23
|
* Events handled by the generic emit() method.
|
|
21
24
|
* Events with dedicated emitXxx() methods are excluded for stronger type safety.
|
|
@@ -27,7 +27,7 @@ import type { CustomMessage } from "../../session/messages";
|
|
|
27
27
|
import type { ReadonlySessionManager, SessionManager } from "../../session/session-manager";
|
|
28
28
|
import type { BashToolDetails, BashToolInput, FindToolDetails, FindToolInput, ReadToolDetails, ReadToolInput, SearchToolDetails, SearchToolInput, WriteToolInput } from "../../tools";
|
|
29
29
|
import type { EventBus } from "../../utils/event-bus";
|
|
30
|
-
import type { AgentEndEvent,
|
|
30
|
+
import type { AgentEndEvent, AutoCompactionEndEvent, AutoCompactionStartEvent, AutoRetryEndEvent, AutoRetryStartEvent, ContextEvent, GoalUpdatedEvent, SessionBeforeBranchEvent, SessionBeforeBranchResult, SessionBeforeCompactEvent, SessionBeforeCompactResult, SessionBeforeSwitchEvent, SessionBeforeSwitchResult, SessionBeforeTreeEvent, SessionBeforeTreeResult, SessionBranchEvent, SessionCompactEvent, SessionCompactingEvent, SessionCompactingResult, SessionEvent, SessionShutdownEvent, SessionStartEvent, SessionSwitchEvent, SessionTreeEvent, AgentStartEvent as SharedAgentStartEvent, TodoReminderEvent, ToolCallEventResult, ToolResultEventResult, TtsrTriggeredEvent, TurnEndEvent, TurnStartEvent } from "../shared-events";
|
|
31
31
|
import type { SlashCommandInfo } from "../slash-commands";
|
|
32
32
|
export type { AppKeybinding, KeybindingsManager } from "../../config/keybindings";
|
|
33
33
|
export type { ExecOptions, ExecResult } from "../../exec/exec";
|
|
@@ -256,7 +256,7 @@ export interface ExtensionContext {
|
|
|
256
256
|
/** Stable resource ownership identifier for the active prompt run. */
|
|
257
257
|
getActivePromptHandle(): string | undefined;
|
|
258
258
|
/** Abort the current agent operation */
|
|
259
|
-
abort(): void
|
|
259
|
+
abort(): void | Promise<void>;
|
|
260
260
|
/** Abort and prove whether resources for a specific prompt settled. */
|
|
261
261
|
abortPromptAndWait?(handle: string, options: {
|
|
262
262
|
graceMs: number;
|
|
@@ -322,6 +322,7 @@ export interface ExtensionContext {
|
|
|
322
322
|
lineCount?: number;
|
|
323
323
|
cleanedArgs?: string;
|
|
324
324
|
}) => void;
|
|
325
|
+
preflightSignal?: AbortSignal;
|
|
325
326
|
}): Promise<unknown>;
|
|
326
327
|
setPlanMode?(on: boolean): unknown;
|
|
327
328
|
operateGoal?(op: "create" | "get" | "resume" | "pause" | "complete" | "drop", objective?: string): Promise<unknown>;
|
|
@@ -459,7 +460,11 @@ export interface BeforeAgentStartEvent {
|
|
|
459
460
|
images?: ImageContent[];
|
|
460
461
|
systemPrompt: string[];
|
|
461
462
|
}
|
|
462
|
-
export type { AgentEndEvent,
|
|
463
|
+
export type { AgentEndEvent, TurnEndEvent, TurnStartEvent } from "../shared-events";
|
|
464
|
+
/** Fired when an agent loop starts. `sdkRunToken` is an internal SDK queue-owner binding. */
|
|
465
|
+
export interface AgentStartEvent extends SharedAgentStartEvent {
|
|
466
|
+
sdkRunToken?: string;
|
|
467
|
+
}
|
|
463
468
|
/** Fired when a message starts (user, assistant, or toolResult) */
|
|
464
469
|
export interface MessageStartEvent {
|
|
465
470
|
type: "message_start";
|
|
@@ -792,8 +797,14 @@ export interface ExtensionAPI {
|
|
|
792
797
|
/** Send a user message to the agent, or queue it when deliverAs is set. */
|
|
793
798
|
sendUserMessage(content: string | (TextContent | ImageContent)[], options?: {
|
|
794
799
|
deliverAs?: "steer" | "followUp";
|
|
800
|
+
/** Internal SDK signal preserving a busy dispatch across async admission fences. */
|
|
801
|
+
queuedAtDispatch?: boolean;
|
|
795
802
|
onPreflightAccepted?: () => void;
|
|
796
803
|
onPreflightAcceptCommit?: () => void | Promise<void>;
|
|
804
|
+
onQueuedPromoted?: () => void;
|
|
805
|
+
preflightSignal?: AbortSignal;
|
|
806
|
+
/** Internal SDK correlation owner for an exact queued follow-up. */
|
|
807
|
+
sdkRunToken?: string;
|
|
797
808
|
}): Promise<void>;
|
|
798
809
|
/** Append a custom entry to the session for state persistence (not sent to LLM). */
|
|
799
810
|
appendEntry<T = unknown>(customType: string, data?: T): void;
|
|
@@ -968,6 +979,11 @@ export type SendUserMessageHandler = (content: string | (TextContent | ImageCont
|
|
|
968
979
|
deliverAs?: "steer" | "followUp";
|
|
969
980
|
onPreflightAccepted?: () => void;
|
|
970
981
|
onPreflightAcceptCommit?: () => void | Promise<void>;
|
|
982
|
+
/** Fired when a queued submission (steering or follow-up) is promoted to its own run (SDK ownership correlation). */
|
|
983
|
+
onQueuedPromoted?: () => void;
|
|
984
|
+
preflightSignal?: AbortSignal;
|
|
985
|
+
/** Internal SDK correlation owner for an exact queued follow-up. */
|
|
986
|
+
sdkRunToken?: string;
|
|
971
987
|
}) => void | Promise<void>;
|
|
972
988
|
export type AppendEntryHandler = <T = unknown>(customType: string, data?: T) => void;
|
|
973
989
|
export type GetActiveToolsHandler = () => string[];
|
|
@@ -1034,7 +1050,7 @@ export interface ExtensionContextActions {
|
|
|
1034
1050
|
isIdle: () => boolean;
|
|
1035
1051
|
/** Stable resource ownership identifier for the active prompt run. */
|
|
1036
1052
|
getActivePromptHandle?: () => string | undefined;
|
|
1037
|
-
abort: () => void
|
|
1053
|
+
abort: () => void | Promise<void>;
|
|
1038
1054
|
abortPromptAndWait?: (handle: string, options: {
|
|
1039
1055
|
graceMs: number;
|
|
1040
1056
|
}) => Promise<RunSettlementProof>;
|
|
@@ -1103,6 +1119,7 @@ export interface ExtensionContextActions {
|
|
|
1103
1119
|
lineCount?: number;
|
|
1104
1120
|
cleanedArgs?: string;
|
|
1105
1121
|
}) => void;
|
|
1122
|
+
preflightSignal?: AbortSignal;
|
|
1106
1123
|
}) => Promise<unknown>;
|
|
1107
1124
|
setPlanMode?: (on: boolean) => unknown;
|
|
1108
1125
|
operateGoal?: (op: "create" | "get" | "resume" | "pause" | "complete" | "drop", objective?: string) => Promise<unknown>;
|
|
@@ -23,5 +23,10 @@ export interface PluginObservabilitySummary {
|
|
|
23
23
|
/**
|
|
24
24
|
* Build the observability summary for the effective registry at `cwd`, including
|
|
25
25
|
* hash-drift and session-collision quarantine status.
|
|
26
|
+
*
|
|
27
|
+
* Pass `{ migrate: false }` from read-only inspection surfaces (for example
|
|
28
|
+
* `gjc customize doctor`) so reporting never persists registry migrations.
|
|
26
29
|
*/
|
|
27
|
-
export declare function summarizeGjcPluginObservability(cwd: string
|
|
30
|
+
export declare function summarizeGjcPluginObservability(cwd: string, options?: {
|
|
31
|
+
migrate?: boolean;
|
|
32
|
+
}): Promise<PluginObservabilitySummary>;
|
|
@@ -29,6 +29,13 @@ export declare function writeRegistry(registry: GjcPluginRegistry, cwd: string,
|
|
|
29
29
|
export declare function updateRegistry(scope: GjcPluginScope, cwd: string, mutator: (entries: GjcPluginRegistryEntry[]) => GjcPluginRegistryEntry[]): Promise<GjcPluginRegistry>;
|
|
30
30
|
/**
|
|
31
31
|
* Effective registry for a cwd: user + project entries in deterministic order.
|
|
32
|
+
*
|
|
33
|
+
* Defaults to the startup semantics (legacy-entry discovery + migration, which
|
|
34
|
+
* may persist the migrated registry). Read-only inspection surfaces (for
|
|
35
|
+
* example `gjc customize doctor`) pass `{ migrate: false }` so reporting never
|
|
36
|
+
* writes to the registry.
|
|
32
37
|
*/
|
|
33
|
-
export declare function loadEffectiveGjcPluginRegistry(cwd: string
|
|
38
|
+
export declare function loadEffectiveGjcPluginRegistry(cwd: string, options?: {
|
|
39
|
+
migrate?: boolean;
|
|
40
|
+
}): Promise<GjcPluginRegistryEntry[]>;
|
|
34
41
|
export declare function registryEntryFingerprint(entry: GjcPluginRegistryEntry): string;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { type NormalizedHook } from "../../hooks/normalize";
|
|
1
2
|
import type { HookMessage } from "../../session/messages";
|
|
2
3
|
import type { SessionManager } from "../../session/session-manager";
|
|
4
|
+
import type { ExtensionFactory } from "../extensions/types";
|
|
3
5
|
import type { HookMessageRenderer, RegisteredCommand } from "./types";
|
|
4
6
|
/**
|
|
5
7
|
* Generic handler function type.
|
|
@@ -57,6 +59,8 @@ export interface LoadedHook {
|
|
|
57
59
|
setSendMessageHandler: (handler: SendMessageHandler) => void;
|
|
58
60
|
/** Set the append entry handler for this hook's pi.appendEntry() */
|
|
59
61
|
setAppendEntryHandler: (handler: AppendEntryHandler) => void;
|
|
62
|
+
/** Canonical discovery descriptor when loaded from a known hook convention. */
|
|
63
|
+
normalization?: NormalizedHook;
|
|
60
64
|
}
|
|
61
65
|
/**
|
|
62
66
|
* Result of loading hooks.
|
|
@@ -70,6 +74,16 @@ export interface LoadHooksResult {
|
|
|
70
74
|
error: string;
|
|
71
75
|
}>;
|
|
72
76
|
}
|
|
77
|
+
export interface LoadHookExtensionsResult {
|
|
78
|
+
factories: Array<{
|
|
79
|
+
factory: ExtensionFactory;
|
|
80
|
+
name: string;
|
|
81
|
+
}>;
|
|
82
|
+
errors: Array<{
|
|
83
|
+
path: string;
|
|
84
|
+
error: string;
|
|
85
|
+
}>;
|
|
86
|
+
}
|
|
73
87
|
/**
|
|
74
88
|
* Load all hooks from configuration.
|
|
75
89
|
* @param paths - Array of hook file paths
|
|
@@ -77,13 +91,13 @@ export interface LoadHooksResult {
|
|
|
77
91
|
*/
|
|
78
92
|
export declare function loadHooks(paths: string[], cwd: string): Promise<LoadHooksResult>;
|
|
79
93
|
/**
|
|
80
|
-
* Discover and load hooks from
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
* 2. Installed plugins
|
|
84
|
-
* 3. Other editor/IDE configurations
|
|
94
|
+
* Discover and load hooks from canonical native GJC configuration.
|
|
95
|
+
* Claude Code and Codex hook layouts remain registered capability providers for
|
|
96
|
+
* explicit import and diagnostics, but are not competing runtime authorities.
|
|
85
97
|
*
|
|
86
98
|
* Plus any explicitly configured paths from settings.
|
|
87
99
|
*/
|
|
88
100
|
export declare function discoverAndLoadHooks(configuredPaths: string[], cwd: string): Promise<LoadHooksResult>;
|
|
101
|
+
/** Load normalized directory hooks and adapt them into the authoritative ExtensionRunner path. */
|
|
102
|
+
export declare function discoverAndLoadHookExtensions(configuredPaths: string[], cwd: string): Promise<LoadHookExtensionsResult>;
|
|
89
103
|
export {};
|
|
@@ -8,6 +8,19 @@ export interface RuntimeSkillDiscoveryCandidate {
|
|
|
8
8
|
path: string;
|
|
9
9
|
useWhen?: string[];
|
|
10
10
|
}
|
|
11
|
+
/**
|
|
12
|
+
* Human-readable diagnostics collected while scanning, so an empty or partial
|
|
13
|
+
* result is explainable: protected-name collisions with bundled workflow
|
|
14
|
+
* skills, skills filtered by include/ignore/disable policy, invalid frontmatter,
|
|
15
|
+
* and scan warnings. Bounded to avoid flooding tool output.
|
|
16
|
+
*/
|
|
17
|
+
export interface RuntimeSkillDiscoveryDiagnostics {
|
|
18
|
+
messages: string[];
|
|
19
|
+
}
|
|
20
|
+
export interface RuntimeSkillDiscoveryResult {
|
|
21
|
+
candidates: RuntimeSkillDiscoveryCandidate[];
|
|
22
|
+
diagnostics: RuntimeSkillDiscoveryDiagnostics;
|
|
23
|
+
}
|
|
11
24
|
export interface DiscoverRuntimeSkillsOptions {
|
|
12
25
|
cwd: string;
|
|
13
26
|
home?: string;
|
|
@@ -16,5 +29,13 @@ export interface DiscoverRuntimeSkillsOptions {
|
|
|
16
29
|
source?: RuntimeSkillDiscoverySource | "all";
|
|
17
30
|
policy?: SkillsSettings;
|
|
18
31
|
}
|
|
19
|
-
|
|
32
|
+
/**
|
|
33
|
+
* Explain an empty result that is caused by disabled discovery config rather
|
|
34
|
+
* than by an actually empty skill catalog. Uses the user-facing trust
|
|
35
|
+
* settings; the legacy `skills.enablePiUser` / `skills.enablePiProject`
|
|
36
|
+
* aliases map onto the same effective values. Shared by the skill_discovery
|
|
37
|
+
* tool and `gjc skills discover`.
|
|
38
|
+
*/
|
|
39
|
+
export declare function describeDisabledSkillScopes(source: RuntimeSkillDiscoverySource | "all", policy: SkillsSettings | undefined): string | undefined;
|
|
40
|
+
export declare function discoverRuntimeSkills(options: DiscoverRuntimeSkillsOptions): Promise<RuntimeSkillDiscoveryResult>;
|
|
20
41
|
export declare function findRuntimeSkillByName(cwd: string, name: string, policy?: SkillsSettings, home?: string): Promise<Skill | undefined>;
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
export type SkillScope = "project" | "user";
|
|
2
|
+
export type ConventionSkillHost = "claude" | "codex";
|
|
3
|
+
export interface SkillManagementPolicy {
|
|
4
|
+
enabled?: boolean;
|
|
5
|
+
trustProjectSkills?: boolean;
|
|
6
|
+
trustUserSkills?: boolean;
|
|
7
|
+
ignoredSkills?: string[];
|
|
8
|
+
includeSkills?: string[];
|
|
9
|
+
disabledExtensions?: string[];
|
|
10
|
+
}
|
|
11
|
+
export type SkillDisabledReason = "protected" | "scope-trust" | "ignored" | "include" | "disabled-extension";
|
|
12
|
+
/** A discovered native skill with provenance and enablement state. */
|
|
13
|
+
export interface ManagedSkillRecord {
|
|
14
|
+
name: string;
|
|
15
|
+
description: string;
|
|
16
|
+
path: string;
|
|
17
|
+
scope: SkillScope;
|
|
18
|
+
/** Canonical source label, e.g. "project .gjc/skills" or "user ~/.gjc/agent/skills". */
|
|
19
|
+
source: string;
|
|
20
|
+
hidden: boolean;
|
|
21
|
+
enabled: boolean;
|
|
22
|
+
disabledReason?: SkillDisabledReason;
|
|
23
|
+
}
|
|
24
|
+
/** A Claude Code / Codex skill enumerated as an explicit import source into `.gjc`. */
|
|
25
|
+
export interface ConventionSkillImportSource {
|
|
26
|
+
host: ConventionSkillHost;
|
|
27
|
+
scope: SkillScope;
|
|
28
|
+
name: string;
|
|
29
|
+
description: string;
|
|
30
|
+
path: string;
|
|
31
|
+
}
|
|
32
|
+
export interface WriteNativeSkillInput {
|
|
33
|
+
cwd: string;
|
|
34
|
+
home?: string;
|
|
35
|
+
scope: SkillScope;
|
|
36
|
+
name: string;
|
|
37
|
+
content: string;
|
|
38
|
+
}
|
|
39
|
+
export interface WriteNativeSkillReceipt {
|
|
40
|
+
name: string;
|
|
41
|
+
scope: SkillScope;
|
|
42
|
+
directory: string;
|
|
43
|
+
path: string;
|
|
44
|
+
}
|
|
45
|
+
/** Raised when a write targets one of the four bundled workflow skill names. */
|
|
46
|
+
export declare class SkillNameProtectedError extends Error {
|
|
47
|
+
readonly code = "SKILL_NAME_PROTECTED";
|
|
48
|
+
constructor(name: string);
|
|
49
|
+
}
|
|
50
|
+
/** Raised when skill content has no parseable frontmatter or lacks a description. */
|
|
51
|
+
export declare class SkillFrontmatterError extends Error {
|
|
52
|
+
readonly code = "SKILL_FRONTMATTER_INVALID";
|
|
53
|
+
constructor(message: string);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Canonical project skill directories in precedence order: `.gjc/skills` in
|
|
57
|
+
* every ancestor from `cwd` up to the repo root (closest first).
|
|
58
|
+
*/
|
|
59
|
+
export declare function getProjectSkillDirs(cwd: string, home: string): Promise<{
|
|
60
|
+
dirs: string[];
|
|
61
|
+
repoRoot: string | null;
|
|
62
|
+
}>;
|
|
63
|
+
/** Canonical user skill directories in precedence order (same resolution as runtime discovery). */
|
|
64
|
+
export declare function getUserSkillDirs(home: string): string[];
|
|
65
|
+
/**
|
|
66
|
+
* The canonical directory a write targets for a scope: the repo root (or `cwd`)
|
|
67
|
+
* `.gjc/skills` for project scope, the canonical `<config>/agent/skills` user
|
|
68
|
+
* root for user scope (honoring `GJC_CONFIG_DIR` / `PI_CONFIG_DIR`).
|
|
69
|
+
*/
|
|
70
|
+
export declare function resolveNativeSkillScopeDir(cwd: string, scope: SkillScope, home?: string): Promise<string>;
|
|
71
|
+
/**
|
|
72
|
+
* Authoritative discovery of native skills with provenance and enablement
|
|
73
|
+
* state. Unlike runtime session discovery, this lists every scanned skill —
|
|
74
|
+
* including disabled, shadowed, and protected ones — so `/extensions` and SDK
|
|
75
|
+
* consumers can show and toggle the full catalog.
|
|
76
|
+
*/
|
|
77
|
+
export declare function listNativeSkillsForManagement(options: {
|
|
78
|
+
cwd: string;
|
|
79
|
+
home?: string;
|
|
80
|
+
policy?: SkillManagementPolicy;
|
|
81
|
+
}): Promise<ManagedSkillRecord[]>;
|
|
82
|
+
/**
|
|
83
|
+
* Write a native skill into the canonical `.gjc` scope directory. The content
|
|
84
|
+
* must parse as frontmatter with a non-empty `description`; the effective name
|
|
85
|
+
* comes from `frontmatter.name` when present, else the requested `name`. Bundled
|
|
86
|
+
* workflow skill names are rejected.
|
|
87
|
+
*/
|
|
88
|
+
export declare function writeNativeSkill(input: WriteNativeSkillInput): Promise<WriteNativeSkillReceipt>;
|
|
89
|
+
/** Whether a skill is enabled under the current policy (disabledExtensions/ignored/scope trust). */
|
|
90
|
+
export declare function isNativeSkillEnabled(name: string, policy: SkillManagementPolicy | undefined): boolean;
|
|
91
|
+
/**
|
|
92
|
+
* Toggle per-skill enablement by adding/removing the `skill:<name>` entry in
|
|
93
|
+
* `disabledExtensions`. Returns the updated list; the caller persists it through
|
|
94
|
+
* Settings. Bundled workflow skill names cannot be disabled.
|
|
95
|
+
*/
|
|
96
|
+
export declare function setNativeSkillEnabled(name: string, enabled: boolean, disabledExtensions: string[]): string[];
|
|
97
|
+
/**
|
|
98
|
+
* Enumerate Claude Code / Codex skills (project and user scope) as explicit
|
|
99
|
+
* import sources into `.gjc`. This only reads the foreign layouts for
|
|
100
|
+
* inspection/import; nothing is loaded into sessions and user-home content is
|
|
101
|
+
* never used without an explicit import action (#4291).
|
|
102
|
+
*/
|
|
103
|
+
export declare function listConventionSkillImportSources(options: {
|
|
104
|
+
cwd: string;
|
|
105
|
+
home?: string;
|
|
106
|
+
host?: ConventionSkillHost | "all";
|
|
107
|
+
}): Promise<ConventionSkillImportSource[]>;
|
|
@@ -33,4 +33,6 @@ export interface PersistedDeepInterviewSpec {
|
|
|
33
33
|
statePath: string;
|
|
34
34
|
}
|
|
35
35
|
export declare function persistDeepInterviewSpec(cwd: string, resolved: ResolvedDeepInterviewSpecWriteArgs): Promise<PersistedDeepInterviewSpec>;
|
|
36
|
-
export declare function runNativeDeepInterviewCommand(args: string[], cwd?: string
|
|
36
|
+
export declare function runNativeDeepInterviewCommand(args: string[], cwd?: string, options?: {
|
|
37
|
+
agentDir?: string;
|
|
38
|
+
}): Promise<DeepInterviewCommandResult>;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import * as path from "node:path";
|
|
1
2
|
export type GjcLaunchWorktreeMode = {
|
|
2
3
|
enabled: false;
|
|
3
4
|
} | {
|
|
@@ -27,6 +28,13 @@ export interface GjcLaunchWorktreeResult extends GjcLaunchWorktreePlan {
|
|
|
27
28
|
createdBranch: boolean;
|
|
28
29
|
dirty?: boolean;
|
|
29
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* Pure core of {@link resolveWorktreeBucket}, exported for tests.
|
|
33
|
+
*
|
|
34
|
+
* Injecting the home directory and path implementation lets tests exercise
|
|
35
|
+
* Windows drive/UNC/separator semantics (`path.win32`) on any host.
|
|
36
|
+
*/
|
|
37
|
+
export declare function resolveWorktreeBucketForPath(repoRoot: string, envValue: string | undefined, home: string, pathApi: typeof path.posix): string;
|
|
30
38
|
export declare function parseLaunchWorktreeMode(args: string[]): ParsedLaunchWorktreeMode;
|
|
31
39
|
export declare function planLaunchWorktree(cwd: string, mode: GjcLaunchWorktreeMode): GjcLaunchWorktreePlan | {
|
|
32
40
|
enabled: false;
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
* (`tty_nr`) is the 5th token after the closing paren (index 4).
|
|
9
9
|
*/
|
|
10
10
|
export interface LinuxProcStatIdentity {
|
|
11
|
+
state?: string;
|
|
11
12
|
startTime: string;
|
|
12
13
|
ttyDevice: string;
|
|
13
14
|
}
|
|
@@ -23,6 +24,8 @@ export type LinuxProcPidProbeResult = ({
|
|
|
23
24
|
export declare function parseLinuxProcStartTime(stat: string | null | undefined): string | null;
|
|
24
25
|
/** Parse field 7 (`tty_nr`) from a `/proc/<pid>/stat` record. */
|
|
25
26
|
export declare function parseLinuxProcTtyDevice(stat: string | null | undefined): string | null;
|
|
27
|
+
/** Parse field 3 (single-letter process state) from a `/proc/<pid>/stat` record. */
|
|
28
|
+
export declare function parseLinuxProcState(stat: string | null | undefined): string | null;
|
|
26
29
|
export declare function probeLinuxProcPidSync(pid: number): LinuxProcPidProbeResult;
|
|
27
30
|
export declare function probeLinuxProcPid(pid: number): Promise<LinuxProcPidProbeResult>;
|
|
28
31
|
/**
|
|
@@ -130,10 +130,10 @@ export declare function loadRalplanIndexForCap(cwd: string, sessionId: string, r
|
|
|
130
130
|
rawText?: string;
|
|
131
131
|
}>;
|
|
132
132
|
/**
|
|
133
|
-
* Resolve ralplan consensus iteration cap
|
|
134
|
-
*
|
|
133
|
+
* Resolve the ralplan consensus iteration cap through the shared resolver.
|
|
134
|
+
* Project `.gjc/config.yml` and `.gjc/settings.json` beat user layers.
|
|
135
135
|
*/
|
|
136
|
-
export declare function resolveRalplanMaxIterations(cwd: string): Promise<{
|
|
136
|
+
export declare function resolveRalplanMaxIterations(cwd: string, agentDir?: string): Promise<{
|
|
137
137
|
maxIterations: number;
|
|
138
138
|
source: string;
|
|
139
139
|
}>;
|
|
@@ -145,13 +145,17 @@ type RalplanAutoHandoffOptions = {
|
|
|
145
145
|
available: false;
|
|
146
146
|
reason: string;
|
|
147
147
|
};
|
|
148
|
+
/** The session's effective agent directory (see resolveWorkflowSetting). */
|
|
149
|
+
agentDir?: string;
|
|
148
150
|
};
|
|
149
151
|
export declare function resolveRalplanAutoHandoff(cwd: string, options?: RalplanAutoHandoffOptions): Promise<RalplanAutoHandoffResolution>;
|
|
150
|
-
/** Resolve the per-lane review-pass budget
|
|
151
|
-
export declare function resolveRalplanMaxReviewPassesPerLane(cwd: string): Promise<{
|
|
152
|
+
/** Resolve the per-lane review-pass budget through the shared resolver. */
|
|
153
|
+
export declare function resolveRalplanMaxReviewPassesPerLane(cwd: string, agentDir?: string): Promise<{
|
|
152
154
|
maxReviewPassesPerLane: number;
|
|
153
155
|
source: string;
|
|
154
156
|
}>;
|
|
155
157
|
export declare function isRalplanArtifactWriteInvocation(args: readonly string[]): boolean;
|
|
156
|
-
export declare function runNativeRalplanCommand(args: string[], cwd?: string
|
|
158
|
+
export declare function runNativeRalplanCommand(args: string[], cwd?: string, options?: {
|
|
159
|
+
agentDir?: string;
|
|
160
|
+
}): Promise<RalplanCommandResult>;
|
|
157
161
|
export {};
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How a `<file>.lock` owner record can be opened safely on this platform.
|
|
3
|
+
*
|
|
4
|
+
* `posix-nofollow` proves the object's TYPE from the descriptor the bytes come off, so the
|
|
5
|
+
* pathname can change freely without ever being followed. Windows has neither `O_NOFOLLOW`
|
|
6
|
+
* nor `O_NONBLOCK`, so no such descriptor exists there and `windows-validated` brackets the
|
|
7
|
+
* open with `lstat`/`fstat` identity proofs instead. `unsupported` is neither, and the
|
|
8
|
+
* owner protocol fails closed rather than reading a pathname it cannot vouch for.
|
|
9
|
+
*/
|
|
10
|
+
export type SessionStateLockOwnerAccessStrategy = "posix-nofollow" | "windows-validated" | "unsupported";
|
|
11
|
+
/**
|
|
12
|
+
* Select the safe owner-record access protocol for one platform/runtime pair.
|
|
13
|
+
*
|
|
14
|
+
* Platform identity comes first. A win32 runtime may expose numeric compatibility constants
|
|
15
|
+
* without providing POSIX no-follow semantics, so their mere presence must never select the
|
|
16
|
+
* POSIX path there.
|
|
17
|
+
*
|
|
18
|
+
* @internal Pure seam for cross-platform detection tests.
|
|
19
|
+
*/
|
|
20
|
+
export declare function detectedSessionStateLockOwnerAccessStrategy(platform: NodeJS.Platform, posixNoFollowAvailable: boolean): SessionStateLockOwnerAccessStrategy;
|
|
21
|
+
/**
|
|
22
|
+
* Test seams for the windows a reclaim passes through: the moment the path's TYPE has just
|
|
23
|
+
* been decided and its owner has not been read yet, the stale verdict, and the FINAL
|
|
24
|
+
* identity validation immediately before the unlink. Production code never sets them.
|
|
25
|
+
*/
|
|
26
|
+
export declare const SessionStateLockTestHooks: {
|
|
27
|
+
afterLockTypeDecision?: (lockFile: string) => void | Promise<void>;
|
|
28
|
+
afterStaleInspection?: (lockFile: string) => void | Promise<void>;
|
|
29
|
+
beforeStaleRemoval?: (lockFile: string) => void | Promise<void>;
|
|
30
|
+
afterTransitionStaleInspection?: (transitionFile: string) => void | Promise<void>;
|
|
31
|
+
beforeTransitionStaleRemoval?: (transitionFile: string) => void | Promise<void>;
|
|
32
|
+
afterLegacyDirectoryStaleVerdict?: (lockDir: string) => void | Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* @internal Which owner-access strategy to exercise, so the Windows path can be proved
|
|
35
|
+
* on the test filesystem this suite actually runs on. Production code never sets it,
|
|
36
|
+
* and it is never serialized or exposed as runtime configuration.
|
|
37
|
+
*/
|
|
38
|
+
ownerAccessStrategy?: SessionStateLockOwnerAccessStrategy;
|
|
39
|
+
/**
|
|
40
|
+
* @internal How an owner pid is probed for liveness. Whether a signal is permitted is a
|
|
41
|
+
* property of the OS and this process's privileges, so it cannot be arranged on disk.
|
|
42
|
+
* Production code never sets it, and it is never serialized or exposed as runtime
|
|
43
|
+
* configuration.
|
|
44
|
+
*/
|
|
45
|
+
probeProcessSignal?: (pid: number) => void;
|
|
46
|
+
/**
|
|
47
|
+
* @internal Runs inside a NEW owner record's write, after the exclusive create has
|
|
48
|
+
* taken the pathname and before the record's bytes land. Throwing from it fails that
|
|
49
|
+
* write exactly as an I/O fault does, which is the only deterministic way to reach the
|
|
50
|
+
* write-failure cleanup and prove what that cleanup is authorized to delete.
|
|
51
|
+
* Production code never sets it, and it is never serialized or exposed as runtime
|
|
52
|
+
* configuration.
|
|
53
|
+
*/
|
|
54
|
+
ownerRecordWriteFault?: (file: string) => void | Promise<void>;
|
|
55
|
+
beforeLegacyDirectoryRemoval?: (lockDir: string) => void | Promise<void>;
|
|
56
|
+
};
|
|
57
|
+
/** Raised when the lock could not be acquired; callers map it to their own refusal. */
|
|
58
|
+
export declare class SessionStateLockUnavailableError extends Error {
|
|
59
|
+
constructor(cause?: unknown);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* The identity-bound deletion primitives this lock is built on.
|
|
63
|
+
*
|
|
64
|
+
* There is no portable atomic compare-and-delete in `fs`: validating a record and then
|
|
65
|
+
* unlinking its PATHNAME is always two syscalls, and a successor that claims the path in
|
|
66
|
+
* between loses its brand-new lock to the first reclaimer. These natives close that hole
|
|
67
|
+
* for real — every removal is descriptor-relative, no-follow, and refuses unless the
|
|
68
|
+
* object still carries the exact `dev`/`ino`/`nlink`/`size`/`mtimeNs`/SHA-256 identity the
|
|
69
|
+
* caller proved. A replacement is therefore never deleted, by construction rather than by
|
|
70
|
+
* a narrower window.
|
|
71
|
+
*/
|
|
72
|
+
export type SessionStateLockNativeBindings = Pick<typeof import("@gajae-code/natives"), "exactRemoveDirectoryTree" | "exactUnlink" | "snapshotDirectoryTree">;
|
|
73
|
+
/** How the deletion primitives are obtained. Throwing means they are unavailable. */
|
|
74
|
+
type SessionStateLockNativeLoader = () => SessionStateLockNativeBindings;
|
|
75
|
+
/**
|
|
76
|
+
* @internal The seam focused TS tests bind a faithful in-process implementation to.
|
|
77
|
+
*
|
|
78
|
+
* It exists because the deletion contract — "refuse unless the object on disk still has
|
|
79
|
+
* exactly this identity" — is the thing under test, and a test double that merely reports
|
|
80
|
+
* success would assert nothing.
|
|
81
|
+
*
|
|
82
|
+
* A LOADER rather than a value, so the unavailable case needs no special production
|
|
83
|
+
* branch: a loader that throws is indistinguishable from an addon that will not load,
|
|
84
|
+
* which is the only way to observe that path where the addon is present. Passing
|
|
85
|
+
* `undefined` restores the real addon.
|
|
86
|
+
*/
|
|
87
|
+
export declare function setSessionStateLockNativeBindings(load: SessionStateLockNativeLoader | undefined): void;
|
|
88
|
+
/**
|
|
89
|
+
* Decide what actually occupies the lock path, without following it.
|
|
90
|
+
*
|
|
91
|
+
* @internal exported as the seam these decisions are tested through: a live legacy
|
|
92
|
+
* directory owner must be provably left alone without waiting out a real stale window.
|
|
93
|
+
*/
|
|
94
|
+
export declare function reclaimStaleSessionStateLock(lockFile: string): Promise<void>;
|
|
95
|
+
/**
|
|
96
|
+
* Serialize one read-modify-write of `stateFile` against every other holder of
|
|
97
|
+
* `<stateFile>.lock`.
|
|
98
|
+
*
|
|
99
|
+
* Taking the path, cleaning up a failed write, and releasing are all pathname transitions,
|
|
100
|
+
* so each runs under the transition claim — never the caller's operation, which holds the
|
|
101
|
+
* lock file itself and may run for as long as it needs.
|
|
102
|
+
*/
|
|
103
|
+
export declare function withSessionStateFileLock<T>(stateFile: string, operation: () => Promise<T>): Promise<T>;
|
|
104
|
+
export {};
|