@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
package/src/commands/sdk.ts
CHANGED
|
@@ -8,6 +8,7 @@ import type { Args as ParsedArgs } from "../cli/args";
|
|
|
8
8
|
import { Settings } from "../config/settings";
|
|
9
9
|
import { applyStartupModelProfiles, createSessionManager } from "../main";
|
|
10
10
|
import { initializeExtensions } from "../modes/runtime-init";
|
|
11
|
+
import { initTheme } from "../modes/theme/theme";
|
|
11
12
|
import { ACP_MCP_REQUEST_TIMEOUT_MS, ACP_MCP_STARTUP_HEADROOM_MS } from "../sdk/acp/mcp";
|
|
12
13
|
import { Broker } from "../sdk/broker/broker";
|
|
13
14
|
import { readBrokerDiscovery } from "../sdk/broker/discovery";
|
|
@@ -510,6 +511,12 @@ export async function runSessionHost(
|
|
|
510
511
|
throw await registrationFailure(error);
|
|
511
512
|
}
|
|
512
513
|
|
|
514
|
+
try {
|
|
515
|
+
await initTheme(false);
|
|
516
|
+
} catch (error) {
|
|
517
|
+
throw await registrationFailure(error);
|
|
518
|
+
}
|
|
519
|
+
|
|
513
520
|
// The longer MCP startup ceiling is scoped to ACP lifecycle launches only:
|
|
514
521
|
// it applies when this request actually carried `mcpServers`. Ordinary
|
|
515
522
|
// CLI/SDK `mcpConfigPath` consumers keep the manager's short default.
|
|
@@ -518,8 +525,8 @@ export async function runSessionHost(
|
|
|
518
525
|
// Inside it, the throw would be caught, reclassified as
|
|
519
526
|
// `registration`/`failed`, and written a second time, losing the
|
|
520
527
|
// `startup`/`pending` outcome the readiness cutoff is supposed to report.
|
|
521
|
-
// Session-manager open
|
|
522
|
-
// budget, so re-read the clock here
|
|
528
|
+
// Session-manager open, MCP config write, and theme initialization already
|
|
529
|
+
// consumed part of the budget, so re-read the clock here.
|
|
523
530
|
let mcpStartupTimeoutMs: number | undefined;
|
|
524
531
|
if (mcpConfigPath !== undefined) {
|
|
525
532
|
const remaining = request.semanticReadyDeadlineAt - now() - ACP_MCP_STARTUP_HEADROOM_MS;
|
|
@@ -606,9 +613,43 @@ export async function runSessionHost(
|
|
|
606
613
|
})();
|
|
607
614
|
return failureRollback;
|
|
608
615
|
};
|
|
616
|
+
const sessionEndpointPath = path.join(request.stateRoot, "sdk", `${request.sessionId}.json`);
|
|
617
|
+
const exitAfterSessionDisposal = async (): Promise<void> => {
|
|
618
|
+
await disposeSession();
|
|
619
|
+
let failure: SdkStartupFailure | undefined;
|
|
620
|
+
try {
|
|
621
|
+
const endpoint = JSON.parse(await fs.readFile(sessionEndpointPath, "utf8")) as {
|
|
622
|
+
pid?: unknown;
|
|
623
|
+
sessionId?: unknown;
|
|
624
|
+
};
|
|
625
|
+
if (endpoint.pid === process.pid && endpoint.sessionId === request.sessionId)
|
|
626
|
+
failure = {
|
|
627
|
+
phase: "startup",
|
|
628
|
+
reason: "failed",
|
|
629
|
+
message: `SDK host endpoint remained after graceful shutdown: ${request.sessionId}`,
|
|
630
|
+
};
|
|
631
|
+
} catch (error) {
|
|
632
|
+
if ((error as NodeJS.ErrnoException).code !== "ENOENT") {
|
|
633
|
+
failure = {
|
|
634
|
+
phase: "startup",
|
|
635
|
+
reason: "failed",
|
|
636
|
+
message: `SDK host endpoint cleanup could not be verified: ${request.sessionId}`,
|
|
637
|
+
};
|
|
638
|
+
}
|
|
639
|
+
}
|
|
640
|
+
if (failure) {
|
|
641
|
+
process.exitCode = 1;
|
|
642
|
+
process.stderr.write(`${failure.message}\n`);
|
|
643
|
+
await writeFailure(failure, rollback.result).catch(() => {});
|
|
644
|
+
}
|
|
645
|
+
process.exit(process.exitCode ?? 0);
|
|
646
|
+
};
|
|
647
|
+
let stopping = false;
|
|
609
648
|
const stop = () => {
|
|
610
649
|
if (capability.result?.status === "started") {
|
|
611
|
-
|
|
650
|
+
if (stopping) return;
|
|
651
|
+
stopping = true;
|
|
652
|
+
void exitAfterSessionDisposal();
|
|
612
653
|
return;
|
|
613
654
|
}
|
|
614
655
|
const failure = capability.normalizeFailure("startup", "failed", "SDK lifecycle host terminated.");
|
|
@@ -733,50 +774,45 @@ class SdkServeHelp extends Command {
|
|
|
733
774
|
|
|
734
775
|
class SdkSessionHelp extends Command {
|
|
735
776
|
static description =
|
|
736
|
-
"Manage SDK sessions: `gjc sdk session list|inspect|send|status|tail
|
|
777
|
+
"Manage SDK sessions: `gjc sdk session list|inspect|send|status|tail`, or the explicit raw hatch `gjc sdk session raw control|query|global`. The session CLI is broker-bound and credential-free.";
|
|
737
778
|
static args = {
|
|
738
779
|
verb: Args.string({
|
|
739
780
|
description: "Session verb",
|
|
740
781
|
required: false,
|
|
741
|
-
options: ["list", "inspect", "send", "status", "tail", "
|
|
782
|
+
options: ["list", "inspect", "send", "status", "tail", "raw"],
|
|
742
783
|
}),
|
|
743
784
|
target: Args.string({
|
|
744
785
|
description: "Session id (or the raw kind control|query|global for `raw`)",
|
|
745
786
|
required: false,
|
|
746
787
|
}),
|
|
747
|
-
opRef: Args.string({
|
|
788
|
+
opRef: Args.string({
|
|
789
|
+
description: "Operation reference for status, or session id for raw control/query",
|
|
790
|
+
required: false,
|
|
791
|
+
}),
|
|
748
792
|
};
|
|
749
793
|
static flags = {
|
|
750
794
|
"agent-dir": Flags.string({ description: "SDK broker state directory" }),
|
|
751
|
-
json: Flags.boolean({ description: "Emit JSON output (default for SDK session commands)" }),
|
|
752
795
|
repo: Flags.string({
|
|
753
796
|
description: "Workspace directory for saved-session resolution (default: current directory)",
|
|
754
797
|
}),
|
|
755
798
|
op: Flags.string({ description: "Raw control or global operation" }),
|
|
756
799
|
query: Flags.string({ description: "Raw query name" }),
|
|
757
|
-
kind: Flags.string({ description: "Elevation operation kind (control|global)", options: ["control", "global"] }),
|
|
758
800
|
"json-input": Flags.string({ description: "SDK request JSON object" }),
|
|
759
801
|
"json-input-file": Flags.string({ description: "Read SDK request JSON from a 0600 file" }),
|
|
760
802
|
"json-input-stdin": Flags.boolean({ description: "Read SDK request JSON from standard input" }),
|
|
761
803
|
"idempotency-key": Flags.string({ description: "Caller idempotency key required for SDK lifecycle globals" }),
|
|
762
|
-
"elevation-request-id": Flags.string({ description: "Approved elevation grant id for allowlisted raw controls" }),
|
|
763
804
|
confirm: Flags.boolean({ description: "Confirm a destructive SDK control operation" }),
|
|
764
805
|
cursor: Flags.string({
|
|
765
|
-
description:
|
|
766
|
-
"Raw query continuation cursor, or a saved checkpoint token to resume tail from (re-minted per connection)",
|
|
806
|
+
description: "Raw query continuation cursor, or a saved checkpoint token to resume tail from",
|
|
767
807
|
}),
|
|
768
|
-
"show-endpoint-credential": Flags.boolean({ description: "Allow session.get_endpoint secret output" }),
|
|
769
|
-
yes: Flags.boolean({ description: "Confirm endpoint credential output on a TTY" }),
|
|
770
808
|
text: Flags.string({ description: "Prompt text for send (alternative to --json-input)" }),
|
|
771
809
|
"op-ref": Flags.string({ description: "Operation reference for send (defaults to a generated ULID)" }),
|
|
772
810
|
wait: Flags.boolean({
|
|
773
|
-
description: "send --wait: poll turn.
|
|
811
|
+
description: "send --wait: poll turn.result with kind=prompt until terminal or the wait window elapses",
|
|
774
812
|
}),
|
|
775
813
|
"timeout-ms": Flags.string({ description: "Wait window for send --wait, status, and live tail follow" }),
|
|
776
|
-
strict: Flags.boolean({ description: "tail --strict: fail closed
|
|
777
|
-
"until-idle": Flags.boolean({
|
|
778
|
-
description: "tail --until-idle: exit once the observed event stream reaches a terminal turn state",
|
|
779
|
-
}),
|
|
814
|
+
strict: Flags.boolean({ description: "tail --strict: fail closed on retention gaps" }),
|
|
815
|
+
"until-idle": Flags.boolean({ description: "tail --until-idle: exit after an observed terminal turn state" }),
|
|
780
816
|
"all-events": Flags.boolean({ description: "tail --all-events: include every event-ring kind" }),
|
|
781
817
|
};
|
|
782
818
|
async run(): Promise<void> {}
|
|
@@ -791,7 +827,6 @@ class SdkSessionCommand extends Command {
|
|
|
791
827
|
const verb = args.verb;
|
|
792
828
|
const target = args.target;
|
|
793
829
|
const flagRec = flags as Record<string, unknown>;
|
|
794
|
-
const timeoutMs = parsePositiveTimeout(flagRec["timeout-ms"] as string | undefined, "--timeout-ms");
|
|
795
830
|
await runSdkSessionCli({
|
|
796
831
|
action: verb,
|
|
797
832
|
...(verb === "raw"
|
|
@@ -809,13 +844,9 @@ class SdkSessionCommand extends Command {
|
|
|
809
844
|
jsonInputStdin: Boolean(flagRec["json-input-stdin"]),
|
|
810
845
|
confirm: Boolean(flagRec.confirm),
|
|
811
846
|
idempotencyKey: flagRec["idempotency-key"] as string | undefined,
|
|
812
|
-
elevationRequestId: flagRec["elevation-request-id"] as string | undefined,
|
|
813
|
-
operationKind: flagRec.kind as "control" | "global" | undefined,
|
|
814
847
|
cursor: flagRec.cursor as string | undefined,
|
|
815
|
-
showEndpointCredential: Boolean(flagRec["show-endpoint-credential"]),
|
|
816
|
-
yes: Boolean(flagRec.yes),
|
|
817
848
|
wait: Boolean(flagRec.wait),
|
|
818
|
-
timeoutMs,
|
|
849
|
+
timeoutMs: parsePositiveTimeout(flagRec["timeout-ms"] as string | undefined, "--timeout-ms"),
|
|
819
850
|
strict: Boolean(flagRec.strict),
|
|
820
851
|
untilIdle: Boolean(flagRec["until-idle"]),
|
|
821
852
|
allEvents: Boolean(flagRec["all-events"]),
|
|
@@ -832,7 +863,7 @@ class SdkGuidesHelp extends Command {
|
|
|
832
863
|
guideId: Args.string({ required: false, description: "Guide id for show" }),
|
|
833
864
|
};
|
|
834
865
|
static flags = {
|
|
835
|
-
"agent-dir": Flags.string({ description: "SDK
|
|
866
|
+
"agent-dir": Flags.string({ description: "SDK state directory for the verified guide cache" }),
|
|
836
867
|
url: Flags.string({ description: "HTTPS allowlisted manifest URL for refresh" }),
|
|
837
868
|
"timeout-ms": Flags.string({ description: "Bounded refresh timeout in milliseconds" }),
|
|
838
869
|
};
|
|
@@ -886,13 +917,11 @@ export default class Sdk extends Command {
|
|
|
886
917
|
return;
|
|
887
918
|
}
|
|
888
919
|
if (action === "session") {
|
|
889
|
-
|
|
890
|
-
await instance.run();
|
|
920
|
+
await new SdkSessionCommand(this.argv.slice(1), this.config).run();
|
|
891
921
|
return;
|
|
892
922
|
}
|
|
893
923
|
if (action === "guides") {
|
|
894
|
-
|
|
895
|
-
await instance.run();
|
|
924
|
+
await new SdkGuidesCommand(this.argv.slice(1), this.config).run();
|
|
896
925
|
return;
|
|
897
926
|
}
|
|
898
927
|
if (action === "serve") {
|
|
@@ -917,22 +946,26 @@ export default class Sdk extends Command {
|
|
|
917
946
|
try {
|
|
918
947
|
await broker.start();
|
|
919
948
|
} catch (error) {
|
|
920
|
-
//
|
|
921
|
-
//
|
|
949
|
+
// This process spawns detached with stdio ignored (see ensure.ts), so the
|
|
950
|
+
// durable marker is the only channel the caller has to see why start()
|
|
951
|
+
// failed instead of a bare exit code (#3963).
|
|
922
952
|
await writeBrokerStartupFailureMarker(agentDir, {
|
|
923
953
|
reason: error instanceof Error ? error.message : String(error),
|
|
924
954
|
exitCode: 1,
|
|
925
955
|
signal: null,
|
|
956
|
+
pid: process.pid,
|
|
926
957
|
});
|
|
927
958
|
throw error;
|
|
928
959
|
}
|
|
929
960
|
if (!broker.ownsDiscovery) {
|
|
930
961
|
// Another broker owns discovery; this process exits cleanly (code 0) as
|
|
931
|
-
// the race loser. Record why so
|
|
962
|
+
// the race loser. Record why so a caller polling for a winner that never
|
|
963
|
+
// appears can diagnose the loss instead of seeing only a bare exit 0.
|
|
932
964
|
await writeBrokerStartupFailureMarker(agentDir, {
|
|
933
965
|
reason: "Another broker owns the lock/discovery; this broker exited as the race loser.",
|
|
934
966
|
exitCode: 0,
|
|
935
967
|
signal: null,
|
|
968
|
+
pid: process.pid,
|
|
936
969
|
});
|
|
937
970
|
return;
|
|
938
971
|
}
|
package/src/commands/setup.ts
CHANGED
|
@@ -12,6 +12,7 @@ const COMPONENTS: SetupComponent[] = [
|
|
|
12
12
|
"defaults",
|
|
13
13
|
"hermes",
|
|
14
14
|
"hooks",
|
|
15
|
+
"paseo",
|
|
15
16
|
"provider",
|
|
16
17
|
"python",
|
|
17
18
|
"stt",
|
|
@@ -59,6 +60,8 @@ export default class Setup extends Command {
|
|
|
59
60
|
"api-key-env": Flags.string({ description: "Read provider API key from this environment variable" }),
|
|
60
61
|
model: Flags.string({ description: "Model id to add (repeat or comma-separate)", multiple: true }),
|
|
61
62
|
"models-path": Flags.string({ description: "Override models config path" }),
|
|
63
|
+
remove: Flags.boolean({ description: "Roll back the Paseo registration GJC created" }),
|
|
64
|
+
mpreset: Flags.string({ description: "Register an additional gjc-<preset> Paseo provider" }),
|
|
62
65
|
yes: Flags.boolean({ char: "y", description: "Import discovered credentials without an interactive prompt" }),
|
|
63
66
|
"dry-run": Flags.boolean({ description: "Preview discovered credentials without importing" }),
|
|
64
67
|
};
|
|
@@ -93,6 +96,8 @@ export default class Setup extends Command {
|
|
|
93
96
|
gjcCommand: flags["gjc-command"],
|
|
94
97
|
target: flags.target,
|
|
95
98
|
profileDir: flags["profile-dir"],
|
|
99
|
+
remove: flags.remove,
|
|
100
|
+
mpreset: flags.mpreset,
|
|
96
101
|
yes: flags.yes,
|
|
97
102
|
dryRun: flags["dry-run"],
|
|
98
103
|
},
|
package/src/commands/skills.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Inspect bundled workflow skills.
|
|
2
|
+
* Inspect bundled workflow skills and filesystem-discovered custom skills.
|
|
3
3
|
*/
|
|
4
4
|
import { Args, Command, Flags, renderCommandHelp } from "@gajae-code/utils/cli";
|
|
5
5
|
import { runSkillsCommand, type SkillsAction, type SkillsCommandArgs } from "../cli/skills-cli";
|
|
6
6
|
|
|
7
|
-
const ACTIONS: SkillsAction[] = ["list", "read"];
|
|
7
|
+
const ACTIONS: SkillsAction[] = ["list", "read", "discover"];
|
|
8
8
|
|
|
9
9
|
export default class Skills extends Command {
|
|
10
|
-
static description = "Inspect bundled GJC workflow skills";
|
|
10
|
+
static description = "Inspect bundled GJC workflow skills and discover custom filesystem skills";
|
|
11
11
|
|
|
12
12
|
static args = {
|
|
13
13
|
action: Args.string({
|
|
@@ -23,12 +23,19 @@ export default class Skills extends Command {
|
|
|
23
23
|
|
|
24
24
|
static flags = {
|
|
25
25
|
json: Flags.boolean({ description: "Output JSON" }),
|
|
26
|
+
source: Flags.string({
|
|
27
|
+
description: "Scope for discover: all, project, or user",
|
|
28
|
+
options: ["all", "project", "user"],
|
|
29
|
+
default: "all",
|
|
30
|
+
}),
|
|
26
31
|
};
|
|
27
32
|
|
|
28
33
|
static examples = [
|
|
29
34
|
"# List bundled workflow skills\n gjc skills list",
|
|
30
35
|
"# Read an embedded workflow skill without requiring .gjc files\n gjc skills read ultragoal",
|
|
31
36
|
"# Machine-readable embedded skill content\n gjc skills read ralplan --json",
|
|
37
|
+
"# Show filesystem-discovered skills (project and user) with diagnostics\n gjc skills discover",
|
|
38
|
+
"# Show only project-scope skills (project .gjc/skills locations)\n gjc skills discover --source project --json",
|
|
32
39
|
];
|
|
33
40
|
|
|
34
41
|
async run(): Promise<void> {
|
|
@@ -41,7 +48,10 @@ export default class Skills extends Command {
|
|
|
41
48
|
const cmd: SkillsCommandArgs = {
|
|
42
49
|
action: args.action as SkillsAction,
|
|
43
50
|
name: args.name,
|
|
44
|
-
flags: {
|
|
51
|
+
flags: {
|
|
52
|
+
json: flags.json,
|
|
53
|
+
source: (flags.source as "all" | "project" | "user" | undefined) ?? "all",
|
|
54
|
+
},
|
|
45
55
|
};
|
|
46
56
|
await runSkillsCommand(cmd);
|
|
47
57
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { Command } from "@gajae-code/utils/cli";
|
|
1
|
+
import { Command, renderCommandHelp } from "@gajae-code/utils/cli";
|
|
2
|
+
import { ensureWorkflowSettingsMigrated } from "../config/settings";
|
|
2
3
|
import {
|
|
3
4
|
GJC_SESSION_FILE_ENV,
|
|
4
5
|
GJC_SESSION_ID_ENV,
|
|
@@ -16,6 +17,14 @@ export default class Ultragoal extends Command {
|
|
|
16
17
|
static delegateHelp = true;
|
|
17
18
|
|
|
18
19
|
async run(): Promise<void> {
|
|
20
|
+
// A read-only help request must not perform the workflow-settings
|
|
21
|
+
// migration (which can create/drain agent.db, write config.yml, and
|
|
22
|
+
// retire legacy settings.json): render help before the trigger.
|
|
23
|
+
if (this.argv.includes("--help") || this.argv.includes("-h")) {
|
|
24
|
+
renderCommandHelp("gjc", "ultragoal", Ultragoal);
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
await ensureWorkflowSettingsMigrated(process.cwd());
|
|
19
28
|
const isReviewStart = this.argv.includes("review") && this.argv.includes("review-start");
|
|
20
29
|
const shouldActivateGoalMode = isUltragoalCreateGoalsInvocation(this.argv);
|
|
21
30
|
const result = await runNativeUltragoalCommand(this.argv);
|
package/src/commands/update.ts
CHANGED
|
@@ -2,10 +2,15 @@
|
|
|
2
2
|
* Check for and install updates.
|
|
3
3
|
*/
|
|
4
4
|
import { getProjectDir } from "@gajae-code/utils";
|
|
5
|
-
import { Command, Flags } from "@gajae-code/utils/cli";
|
|
6
|
-
import { runUpdateCommand } from "../cli/update-cli";
|
|
5
|
+
import { Args, Command, Flags } from "@gajae-code/utils/cli";
|
|
6
|
+
import { runManagedNotifyRecovery, runUpdateCommand } from "../cli/update-cli";
|
|
7
7
|
import { Settings } from "../config/settings";
|
|
8
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
isUpdateChannel,
|
|
10
|
+
resolveMachineLocalUpdateChannel,
|
|
11
|
+
UPDATE_CHANNELS,
|
|
12
|
+
type UpdateChannel,
|
|
13
|
+
} from "../config/update-channel";
|
|
9
14
|
import { initTheme } from "../modes/theme/theme";
|
|
10
15
|
|
|
11
16
|
export default class Update extends Command {
|
|
@@ -19,8 +24,20 @@ export default class Update extends Command {
|
|
|
19
24
|
}),
|
|
20
25
|
};
|
|
21
26
|
|
|
27
|
+
static args = {
|
|
28
|
+
action: Args.string({
|
|
29
|
+
description: "Internal post-update recovery action (update-recovery)",
|
|
30
|
+
required: false,
|
|
31
|
+
options: ["update-recovery"],
|
|
32
|
+
}),
|
|
33
|
+
};
|
|
34
|
+
|
|
22
35
|
async run(): Promise<void> {
|
|
23
|
-
const { flags } = await this.parse(Update);
|
|
36
|
+
const { args, flags } = await this.parse(Update);
|
|
37
|
+
if (args.action === "update-recovery") {
|
|
38
|
+
await runManagedNotifyRecovery({});
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
24
41
|
let channel: UpdateChannel | undefined;
|
|
25
42
|
if (flags.channel !== undefined) {
|
|
26
43
|
if (!isUpdateChannel(flags.channel)) {
|
|
@@ -32,17 +49,11 @@ export default class Update extends Command {
|
|
|
32
49
|
channel = flags.channel;
|
|
33
50
|
} else {
|
|
34
51
|
const settings = await Settings.init({ cwd: getProjectDir() });
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
// leaking into output or the registry lookup.
|
|
41
|
-
process.stderr.write(
|
|
42
|
-
`Ignoring invalid startup.updateChannel "${configured}". Expected one of: ${UPDATE_CHANNELS.join(", ")}; using stable.\n`,
|
|
43
|
-
);
|
|
44
|
-
channel = "stable";
|
|
45
|
-
}
|
|
52
|
+
// Update selection is machine-local: a project `.gjc/config.yml`
|
|
53
|
+
// startup.updateChannel override must never silently pick the
|
|
54
|
+
// global release channel, so read the user/global layer only and
|
|
55
|
+
// fall back to the stable schema default when it is unset.
|
|
56
|
+
channel = resolveMachineLocalUpdateChannel(settings);
|
|
46
57
|
}
|
|
47
58
|
await initTheme();
|
|
48
59
|
await runUpdateCommand({ force: flags.force, check: flags.check, channel });
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import * as nodeWorkerThreads from "node:worker_threads";
|
|
2
|
+
import type { NativeExactFileIdentity, NativeExactUnlinkResult, NativeNoReplaceResult } from "@gajae-code/natives";
|
|
3
|
+
import { exactReplacePath, linkNoReplacePath, renameNoReplacePath } from "@gajae-code/natives";
|
|
4
|
+
|
|
5
|
+
export type AtomicYamlNativeWorkerRequest =
|
|
6
|
+
| {
|
|
7
|
+
operation: "exact-replace";
|
|
8
|
+
sourcePath: string;
|
|
9
|
+
destinationPath: string;
|
|
10
|
+
expectedSource: NativeExactFileIdentity;
|
|
11
|
+
expectedDestination: NativeExactFileIdentity;
|
|
12
|
+
}
|
|
13
|
+
| {
|
|
14
|
+
operation: "no-replace";
|
|
15
|
+
sourcePath: string;
|
|
16
|
+
destinationPath: string;
|
|
17
|
+
}
|
|
18
|
+
| {
|
|
19
|
+
operation: "no-replace-link";
|
|
20
|
+
sourcePath: string;
|
|
21
|
+
destinationPath: string;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export type AtomicYamlNativeWorkerResponse =
|
|
25
|
+
| { type: "result"; result: NativeExactUnlinkResult | NativeNoReplaceResult }
|
|
26
|
+
| { type: "error"; name?: string; message: string; stack?: string };
|
|
27
|
+
|
|
28
|
+
const { parentPort } = nodeWorkerThreads;
|
|
29
|
+
if (!parentPort) throw new Error("atomic YAML native worker: missing parentPort");
|
|
30
|
+
|
|
31
|
+
const port = parentPort;
|
|
32
|
+
port.once("message", (request: AtomicYamlNativeWorkerRequest) => {
|
|
33
|
+
try {
|
|
34
|
+
const result =
|
|
35
|
+
request.operation === "exact-replace"
|
|
36
|
+
? exactReplacePath(
|
|
37
|
+
request.sourcePath,
|
|
38
|
+
request.destinationPath,
|
|
39
|
+
request.expectedSource,
|
|
40
|
+
request.expectedDestination,
|
|
41
|
+
)
|
|
42
|
+
: request.operation === "no-replace-link"
|
|
43
|
+
? linkNoReplacePath(request.sourcePath, request.destinationPath)
|
|
44
|
+
: renameNoReplacePath(request.sourcePath, request.destinationPath);
|
|
45
|
+
port.postMessage({ type: "result", result } satisfies AtomicYamlNativeWorkerResponse);
|
|
46
|
+
} catch (error) {
|
|
47
|
+
const failure = error instanceof Error ? error : new Error(String(error));
|
|
48
|
+
port.postMessage({
|
|
49
|
+
type: "error",
|
|
50
|
+
name: failure.name,
|
|
51
|
+
message: failure.message,
|
|
52
|
+
stack: failure.stack,
|
|
53
|
+
} satisfies AtomicYamlNativeWorkerResponse);
|
|
54
|
+
} finally {
|
|
55
|
+
port.close();
|
|
56
|
+
}
|
|
57
|
+
});
|