@gajae-code/coding-agent 0.13.2 → 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +215 -8
- package/README.md +2 -0
- package/bin/gajaessi.js +4 -0
- package/dist/types/async/job-manager.d.ts +55 -2
- package/dist/types/async/support.d.ts +14 -0
- package/dist/types/capability/mcp.d.ts +6 -0
- package/dist/types/capability/types.d.ts +6 -0
- package/dist/types/cli/accounts-cli.d.ts +19 -0
- package/dist/types/cli/args.d.ts +3 -0
- package/dist/types/cli/config-cli.d.ts +6 -0
- package/dist/types/cli/crash-cli.d.ts +10 -0
- package/dist/types/cli/customize-doctor.d.ts +145 -0
- package/dist/types/cli/daemon-cli.d.ts +3 -1
- package/dist/types/cli/mcp-cli.d.ts +11 -0
- package/dist/types/cli/notify-cli.d.ts +1 -1
- package/dist/types/cli/root-flags.d.ts +12 -0
- package/dist/types/cli/setup-cli.d.ts +3 -1
- package/dist/types/cli/skills-cli.d.ts +2 -1
- package/dist/types/cli/update-cli.d.ts +19 -1
- package/dist/types/cli.d.ts +6 -0
- package/dist/types/commands/accounts.d.ts +40 -0
- package/dist/types/commands/crash.d.ts +24 -0
- package/dist/types/commands/customize.d.ts +22 -0
- package/dist/types/commands/daemon.d.ts +1 -1
- package/dist/types/commands/launch.d.ts +6 -0
- package/dist/types/commands/setup.d.ts +6 -0
- package/dist/types/commands/skills.d.ts +6 -1
- package/dist/types/commands/update.d.ts +7 -0
- package/dist/types/config/atomic-yaml-patch-worker.d.ts +25 -0
- package/dist/types/config/atomic-yaml-patch.d.ts +62 -2
- package/dist/types/config/config-schema-version.d.ts +10 -0
- package/dist/types/config/file-lock.d.ts +18 -0
- package/dist/types/config/model-profile-activation.d.ts +3 -1
- package/dist/types/config/model-registry.d.ts +10 -1
- package/dist/types/config/models-config-schema.d.ts +2 -0
- package/dist/types/config/settings-schema.d.ts +73 -9
- package/dist/types/config/settings.d.ts +63 -0
- package/dist/types/config/skill-settings-defaults.d.ts +26 -0
- package/dist/types/config/task-delegation.d.ts +39 -0
- package/dist/types/config/update-channel.d.ts +10 -0
- package/dist/types/coordinator-mcp/server.d.ts +5 -1
- package/dist/types/crash/index-store.d.ts +87 -0
- package/dist/types/crash/nudge.d.ts +50 -0
- package/dist/types/crash/record-loader.d.ts +17 -0
- package/dist/types/crash/report.d.ts +134 -0
- package/dist/types/crash/sanitize.d.ts +25 -0
- package/dist/types/cursor.d.ts +13 -2
- package/dist/types/customization/import.d.ts +37 -0
- package/dist/types/customization/index.d.ts +4 -0
- package/dist/types/customization/inventory.d.ts +25 -0
- package/dist/types/customization/mutations.d.ts +32 -0
- package/dist/types/customization/types.d.ts +115 -0
- package/dist/types/daemon/control-types.d.ts +8 -1
- package/dist/types/daemon/operator-contract.d.ts +4 -4
- package/dist/types/discovery/claude.d.ts +39 -1
- package/dist/types/discovery/codex.d.ts +39 -1
- package/dist/types/discovery/index.d.ts +2 -0
- package/dist/types/discovery/mcp-compat.d.ts +30 -0
- package/dist/types/edit/renderer.d.ts +23 -0
- package/dist/types/extensibility/extensions/runner.d.ts +3 -0
- package/dist/types/extensibility/extensions/types.d.ts +21 -4
- package/dist/types/extensibility/gjc-plugins/observability.d.ts +6 -1
- package/dist/types/extensibility/gjc-plugins/registry.d.ts +8 -1
- package/dist/types/extensibility/hooks/loader.d.ts +19 -5
- package/dist/types/extensibility/runtime-skill-discovery.d.ts +22 -1
- package/dist/types/extensibility/skill-management.d.ts +107 -0
- package/dist/types/gjc-runtime/deep-interview-runtime.d.ts +3 -1
- package/dist/types/gjc-runtime/launch-worktree.d.ts +8 -0
- package/dist/types/gjc-runtime/linux-proc.d.ts +3 -0
- package/dist/types/gjc-runtime/ralplan-runtime.d.ts +10 -6
- package/dist/types/gjc-runtime/session-state-lock.d.ts +104 -0
- package/dist/types/gjc-runtime/session-state-sidecar.d.ts +120 -2
- package/dist/types/gjc-runtime/state-writer.d.ts +10 -1
- package/dist/types/gjc-runtime/ultragoal-guard.d.ts +4 -2
- package/dist/types/gjc-runtime/ultragoal-runtime.d.ts +8 -6
- package/dist/types/gjc-runtime/workflow-settings.d.ts +109 -0
- package/dist/types/hooks/events.d.ts +60 -0
- package/dist/types/hooks/normalize.d.ts +83 -0
- package/dist/types/hooks/skill-state.d.ts +9 -2
- package/dist/types/main.d.ts +2 -1
- package/dist/types/modes/acp/abort-scope.d.ts +13 -0
- package/dist/types/modes/acp/acp-agent.d.ts +7 -4
- package/dist/types/modes/components/customization/customization-dashboard.d.ts +44 -0
- package/dist/types/modes/components/customization/import-wizard.d.ts +21 -0
- package/dist/types/modes/components/customization/index.d.ts +1 -0
- package/dist/types/modes/components/dynamic-theme-text.d.ts +9 -0
- package/dist/types/modes/components/gajae-pet-widget.d.ts +6 -28
- package/dist/types/modes/components/irc-sidebar.d.ts +1 -0
- package/dist/types/modes/components/iterm-pet-transport.d.ts +122 -0
- package/dist/types/modes/components/oauth-selector.d.ts +10 -4
- package/dist/types/modes/components/pet-capability.d.ts +7 -21
- package/dist/types/modes/components/settings-selector.d.ts +5 -0
- package/dist/types/modes/components/status-line/gh.d.ts +6 -2
- package/dist/types/modes/controllers/extension-ui-controller.d.ts +1 -1
- package/dist/types/modes/controllers/selector-controller.d.ts +7 -8
- package/dist/types/modes/controllers/stt-controller.d.ts +1 -1
- package/dist/types/modes/interactive-mode.d.ts +1 -0
- package/dist/types/modes/theme/defaults/index.d.ts +118 -0
- package/dist/types/modes/types.d.ts +1 -0
- package/dist/types/modes/utils/injected-user-submission.d.ts +10 -0
- package/dist/types/runtime-mcp/config.d.ts +9 -0
- package/dist/types/runtime-mcp/manager.d.ts +26 -1
- package/dist/types/runtime-mcp/oauth-discovery.d.ts +4 -0
- package/dist/types/runtime-mcp/oauth-flow.d.ts +24 -1
- package/dist/types/runtime-mcp/pool-key.d.ts +2 -0
- package/dist/types/runtime-mcp/protocol.d.ts +278 -0
- package/dist/types/runtime-mcp/scope-config.d.ts +29 -0
- package/dist/types/runtime-mcp/tool-bridge.d.ts +15 -13
- package/dist/types/runtime-mcp/transports/http.d.ts +9 -0
- package/dist/types/runtime-mcp/types.d.ts +102 -10
- package/dist/types/sdk/acp/adapter.d.ts +26 -5
- package/dist/types/sdk/broker/broker.d.ts +3 -55
- package/dist/types/sdk/broker/lifecycle.d.ts +18 -12
- package/dist/types/sdk/broker/session-index.d.ts +14 -5
- package/dist/types/sdk/broker/startup-failure.d.ts +16 -1
- package/dist/types/sdk/bus/chat-daemon-control.d.ts +51 -1
- package/dist/types/sdk/bus/chat-daemon-runtime.d.ts +4 -41
- package/dist/types/sdk/bus/config.d.ts +11 -0
- package/dist/types/sdk/bus/conversation-store.d.ts +0 -1
- package/dist/types/sdk/bus/daemon-paths.d.ts +6 -0
- package/dist/types/sdk/bus/discord-conversation.d.ts +2 -0
- package/dist/types/sdk/bus/discord-daemon.d.ts +17 -12
- package/dist/types/sdk/bus/existing-thread-readiness.d.ts +4 -34
- package/dist/types/sdk/bus/inbound-reaction-ordering.d.ts +61 -0
- package/dist/types/sdk/bus/index.d.ts +85 -99
- package/dist/types/sdk/bus/kind-aware-reconciliation.d.ts +29 -7
- package/dist/types/sdk/bus/managed-daemon.d.ts +2 -32
- package/dist/types/sdk/bus/notification-service.d.ts +52 -0
- package/dist/types/sdk/bus/operator-runtime.d.ts +1 -1
- package/dist/types/sdk/bus/prompt-reconciliation.d.ts +16 -5
- package/dist/types/sdk/bus/reconciliation-store.d.ts +113 -5
- package/dist/types/sdk/bus/session-control.d.ts +25 -1
- package/dist/types/sdk/bus/slack-conversation.d.ts +4 -0
- package/dist/types/sdk/bus/slack-daemon.d.ts +9 -17
- package/dist/types/sdk/bus/slack-live-provider.d.ts +3 -1
- package/dist/types/sdk/bus/slack-provider.d.ts +4 -0
- package/dist/types/sdk/bus/slack-thread-binding.d.ts +6 -40
- package/dist/types/sdk/bus/telegram-adoption-intent.d.ts +30 -104
- package/dist/types/sdk/bus/telegram-daemon-cli.d.ts +10 -0
- package/dist/types/sdk/bus/telegram-daemon-contract.d.ts +262 -19
- package/dist/types/sdk/bus/telegram-daemon-orphan-reap.d.ts +125 -0
- package/dist/types/sdk/bus/telegram-daemon-owner-registry.d.ts +22 -0
- package/dist/types/sdk/bus/telegram-daemon.d.ts +119 -310
- package/dist/types/sdk/bus/telegram-reference.d.ts +1 -47
- package/dist/types/sdk/bus/threaded-render.d.ts +1 -0
- package/dist/types/sdk/bus/topic-registry.d.ts +33 -17
- package/dist/types/sdk/cli/rows.d.ts +2 -11
- package/dist/types/sdk/cli/session-cli.d.ts +15 -25
- package/dist/types/sdk/client/client.d.ts +97 -1
- package/dist/types/sdk/host/control/dispatch.d.ts +0 -7
- package/dist/types/sdk/host/control/index.d.ts +1 -1
- package/dist/types/sdk/host/control/operations.d.ts +18 -5
- package/dist/types/sdk/host/control/runtime-gate.d.ts +19 -0
- package/dist/types/sdk/host/host.d.ts +15 -1
- package/dist/types/sdk/host/query/handlers.d.ts +5 -0
- package/dist/types/sdk/host/reverse-leases.d.ts +1 -1
- package/dist/types/sdk/host/session-runtime.d.ts +127 -7
- package/dist/types/sdk/host/types.d.ts +1 -1
- package/dist/types/sdk/host/websocket-transport.d.ts +1 -1
- package/dist/types/sdk/index.d.ts +2 -1
- package/dist/types/sdk/lifecycle/broker-client.d.ts +8 -0
- package/dist/types/sdk/lifecycle/client.d.ts +59 -0
- package/dist/types/sdk/lifecycle/index.d.ts +3 -0
- package/dist/types/sdk/lifecycle/service.d.ts +232 -0
- package/dist/types/sdk/mcp/server.d.ts +9 -6
- package/dist/types/sdk/prompt-deadline-lease.d.ts +43 -0
- package/dist/types/sdk/prompt-deadline-manager.d.ts +28 -0
- package/dist/types/sdk/prompt-status.d.ts +10 -3
- package/dist/types/sdk/protocol/operation-registry.d.ts +5 -0
- package/dist/types/sdk/receipt-state.d.ts +17 -0
- package/dist/types/sdk/reconciliation-extensions.d.ts +2 -0
- package/dist/types/sdk/router/index.d.ts +1 -0
- package/dist/types/sdk/router/session-router.d.ts +152 -0
- package/dist/types/sdk/session-list.d.ts +22 -0
- package/dist/types/sdk/session-reconnect.d.ts +43 -1
- package/dist/types/sdk/session.d.ts +34 -1
- package/dist/types/sdk/transport/serve-cli.d.ts +1 -4
- package/dist/types/session/account-inventory.d.ts +86 -0
- package/dist/types/session/agent-session.d.ts +145 -6
- package/dist/types/session/agent-storage.d.ts +10 -0
- package/dist/types/session/coordinator-tool-label.d.ts +28 -0
- package/dist/types/session/internal/managed-session-storage.d.ts +23 -4
- package/dist/types/session/messages.d.ts +1 -1
- package/dist/types/session/secure-token-file.d.ts +3 -0
- package/dist/types/session/session-manager.d.ts +47 -1
- package/dist/types/session/startup-auth-config.d.ts +44 -0
- package/dist/types/session/terminal-abort.d.ts +378 -0
- package/dist/types/session/yield-queue.d.ts +7 -0
- package/dist/types/session-import/claude.d.ts +26 -0
- package/dist/types/session-import/codex.d.ts +88 -0
- package/dist/types/session-import/command.d.ts +35 -0
- package/dist/types/session-import/detect.d.ts +22 -0
- package/dist/types/session-import/index.d.ts +7 -0
- package/dist/types/session-import/provider-codex.d.ts +22 -0
- package/dist/types/session-import/provider-service.d.ts +38 -0
- package/dist/types/session-import/redact.d.ts +23 -0
- package/dist/types/session-import/service.d.ts +47 -0
- package/dist/types/session-import/types.d.ts +120 -0
- package/dist/types/setup/paseo/check.d.ts +16 -0
- package/dist/types/setup/paseo/install-saga.d.ts +115 -0
- package/dist/types/setup/paseo/json-publisher.d.ts +76 -0
- package/dist/types/setup/paseo/orchestration-preferences.d.ts +24 -0
- package/dist/types/setup/paseo/paseo-ownership.d.ts +87 -0
- package/dist/types/setup/paseo/paseo-setup.d.ts +29 -0
- package/dist/types/setup/paseo/provider-config.d.ts +35 -0
- package/dist/types/setup/paseo/remove.d.ts +14 -0
- package/dist/types/setup/paseo/result-types.d.ts +59 -0
- package/dist/types/setup/paseo/setup-deps.d.ts +73 -0
- package/dist/types/setup/paseo/skills-bridge.d.ts +44 -0
- package/dist/types/skill-state/active-state.d.ts +5 -1
- package/dist/types/slash-commands/acp-builtins.d.ts +5 -1
- package/dist/types/slash-commands/builtin-registry.d.ts +2 -0
- package/dist/types/slash-commands/helpers/credential-switch.d.ts +12 -0
- package/dist/types/slash-commands/helpers/usage-report.d.ts +5 -6
- package/dist/types/slash-commands/types.d.ts +7 -1
- package/dist/types/task/executor.d.ts +10 -0
- package/dist/types/task/index.d.ts +3 -1
- package/dist/types/tools/ask-answer-registry.d.ts +6 -3
- package/dist/types/tools/bash-sleep-advisory.d.ts +14 -0
- package/dist/types/tools/bash.d.ts +2 -6
- package/dist/types/tools/browser/attach.d.ts +11 -0
- package/dist/types/tools/browser/launch.d.ts +20 -0
- package/dist/types/tools/browser/profile-discovery.d.ts +6 -0
- package/dist/types/tools/browser/render.d.ts +1 -0
- package/dist/types/tools/browser.d.ts +3 -1
- package/dist/types/tools/image-gen.d.ts +10 -2
- package/dist/types/tools/index.d.ts +8 -0
- package/dist/types/tools/monitor.d.ts +1 -1
- package/dist/types/tools/skill-discovery.d.ts +8 -1
- package/dist/types/tools/subagent.d.ts +2 -0
- package/dist/types/tools/ultragoal-ask-guard.d.ts +2 -2
- package/dist/types/utils/herdr-pane.d.ts +76 -0
- package/package.json +19 -9
- package/scripts/build-binary.ts +2 -1
- package/scripts/build-sdk-package-smoke.ts +2 -13
- package/scripts/capture-sticky-viewport-showcase.ts +0 -1
- package/scripts/compile-args.ts +2 -0
- package/scripts/generate-sdk-adapter-parity-manifest.ts +31 -16
- package/scripts/generate-sdk-operation-inventory.ts +28 -0
- package/scripts/generate-telegram-baseline-manifest.ts +1 -0
- package/scripts/generate-tool-catalog.ts +6 -4
- package/scripts/verify-gjc-sdk-canonicalization.ts +5 -39
- package/src/async/job-manager.ts +352 -17
- package/src/async/support.ts +25 -0
- package/src/autoresearch/dashboard.ts +28 -13
- package/src/capability/index.ts +3 -1
- package/src/capability/mcp.ts +6 -0
- package/src/capability/types.ts +6 -0
- package/src/cli/accounts-cli.ts +395 -0
- package/src/cli/args.ts +23 -0
- package/src/cli/auth-broker-cli.ts +136 -66
- package/src/cli/auth-gateway-cli.ts +94 -70
- package/src/cli/config-cli.ts +27 -2
- package/src/cli/crash-cli.ts +78 -0
- package/src/cli/customize-doctor.ts +1605 -0
- package/src/cli/daemon-cli.ts +12 -3
- package/src/cli/fast-help.ts +1 -0
- package/src/cli/mcp-cli.ts +128 -60
- package/src/cli/notify-cli.ts +8 -14
- package/src/cli/root-flags.ts +8 -0
- package/src/cli/setup-cli.ts +145 -0
- package/src/cli/skills-cli.ts +38 -2
- package/src/cli/update-cli.ts +167 -12
- package/src/cli.ts +4 -0
- package/src/commands/accounts.ts +71 -0
- package/src/commands/crash.ts +35 -0
- package/src/commands/customize.ts +84 -0
- package/src/commands/daemon.ts +2 -2
- package/src/commands/deep-interview.ts +2 -0
- package/src/commands/launch.ts +1 -0
- package/src/commands/mcp.ts +12 -7
- package/src/commands/ralplan.ts +2 -0
- package/src/commands/sdk.ts +65 -32
- package/src/commands/setup.ts +5 -0
- package/src/commands/skills.ts +14 -4
- package/src/commands/ultragoal.ts +10 -1
- package/src/commands/update.ts +26 -15
- package/src/config/atomic-yaml-patch-worker.ts +57 -0
- package/src/config/atomic-yaml-patch.ts +769 -29
- package/src/config/config-schema-version.ts +10 -0
- package/src/config/file-lock.ts +70 -1
- package/src/config/mcp-schema.json +52 -14
- package/src/config/model-profile-activation.ts +23 -2
- package/src/config/model-profiles.ts +88 -21
- package/src/config/model-registry.ts +147 -21
- package/src/config/models-config-schema.ts +1 -1
- package/src/config/settings-schema.ts +77 -7
- package/src/config/settings.ts +4038 -199
- package/src/config/skill-settings-defaults.ts +41 -3
- package/src/config/task-delegation.ts +87 -0
- package/src/config/update-channel.ts +23 -0
- package/src/coordinator-mcp/server.ts +377 -308
- package/src/crash/index-store.ts +723 -0
- package/src/crash/nudge.ts +89 -0
- package/src/crash/record-loader.ts +149 -0
- package/src/crash/report.ts +551 -0
- package/src/crash/sanitize.ts +129 -0
- package/src/cursor.ts +36 -10
- package/src/customization/import.ts +946 -0
- package/src/customization/index.ts +4 -0
- package/src/customization/inventory.ts +335 -0
- package/src/customization/mutations.ts +141 -0
- package/src/customization/types.ts +223 -0
- package/src/daemon/control-types.ts +8 -1
- package/src/daemon/operator-contract.ts +6 -6
- package/src/defaults/gjc/extensions/grok-cli-vendor/src/models/catalog.ts +31 -6
- package/src/defaults/gjc/skills/deep-interview/SKILL.md +11 -22
- package/src/defaults/gjc/skills/ralplan/SKILL.md +36 -23
- package/src/defaults/gjc/skills/ultragoal/SKILL.md +16 -0
- package/src/discovery/claude-hooks.ts +38 -0
- package/src/discovery/claude.ts +142 -209
- package/src/discovery/codex-hooks.ts +38 -0
- package/src/discovery/codex.ts +132 -198
- package/src/discovery/helpers.ts +8 -1
- package/src/discovery/index.ts +2 -0
- package/src/discovery/mcp-compat.ts +234 -0
- package/src/discovery/mcp-json.ts +6 -0
- package/src/edit/renderer.ts +40 -0
- package/src/edit/streaming.ts +4 -2
- package/src/exec/bash-executor.ts +24 -20
- package/src/export/html/index.ts +51 -2
- package/src/extensibility/extensions/loader.ts +9 -1
- package/src/extensibility/extensions/runner.ts +17 -4
- package/src/extensibility/extensions/types.ts +31 -6
- package/src/extensibility/gjc-plugins/constrained-hooks.ts +33 -0
- package/src/extensibility/gjc-plugins/installer.ts +9 -5
- package/src/extensibility/gjc-plugins/observability.ts +8 -2
- package/src/extensibility/gjc-plugins/registry.ts +13 -2
- package/src/extensibility/gjc-plugins/runtime-adapters.ts +3 -1
- package/src/extensibility/gjc-plugins/schema.ts +222 -39
- package/src/extensibility/hooks/loader.ts +154 -10
- package/src/extensibility/runtime-skill-discovery.ts +257 -60
- package/src/extensibility/skill-management.ts +368 -0
- package/src/extensibility/skills.ts +52 -16
- package/src/gjc-runtime/deep-interview-runtime.ts +45 -61
- package/src/gjc-runtime/launch-worktree.ts +56 -2
- package/src/gjc-runtime/linux-proc.ts +7 -1
- package/src/gjc-runtime/ralplan-runtime.ts +100 -164
- package/src/gjc-runtime/session-state-lock.ts +992 -0
- package/src/gjc-runtime/session-state-sidecar.ts +644 -142
- package/src/gjc-runtime/state-writer.ts +39 -14
- package/src/gjc-runtime/tmux-owner-isolation.ts +5 -4
- package/src/gjc-runtime/ultragoal-guard.ts +11 -4
- package/src/gjc-runtime/ultragoal-runtime.ts +44 -41
- package/src/gjc-runtime/workflow-settings.ts +596 -0
- package/src/goals/tools/goal-tool.ts +6 -1
- package/src/hooks/events.ts +291 -0
- package/src/hooks/native-skill-hook.ts +4 -0
- package/src/hooks/normalize.ts +369 -0
- package/src/hooks/skill-state.ts +165 -46
- package/src/internal-urls/docs-index.generated.ts +41 -32
- package/src/main.ts +36 -5
- package/src/migrate/mcp-mapper.ts +25 -2
- package/src/modes/acp/abort-scope.ts +29 -0
- package/src/modes/acp/acp-agent.ts +423 -98
- package/src/modes/components/assistant-message.ts +6 -1
- package/src/modes/components/chrome.ts +4 -3
- package/src/modes/components/customization/customization-dashboard.ts +443 -0
- package/src/modes/components/customization/import-wizard.ts +372 -0
- package/src/modes/components/customization/index.ts +1 -0
- package/src/modes/components/dynamic-theme-text.ts +22 -0
- package/src/modes/components/gajae-pet-widget.ts +607 -193
- package/src/modes/components/irc-sidebar.ts +11 -0
- package/src/modes/components/iterm-pet-transport.ts +585 -0
- package/src/modes/components/model-selector.ts +1 -6
- package/src/modes/components/oauth-selector.ts +277 -86
- package/src/modes/components/pet-capability.ts +35 -31
- package/src/modes/components/settings-selector.ts +29 -5
- package/src/modes/components/status-line/gh.ts +45 -1
- package/src/modes/components/status-line/segments.ts +19 -4
- package/src/modes/components/tool-status-header.ts +13 -3
- package/src/modes/controllers/command-controller.ts +20 -8
- package/src/modes/controllers/extension-ui-controller.ts +56 -257
- package/src/modes/controllers/input-controller.ts +10 -0
- package/src/modes/controllers/runtime-mcp-command-controller.ts +16 -3
- package/src/modes/controllers/selector-controller.ts +238 -77
- package/src/modes/controllers/stt-controller.ts +3 -3
- package/src/modes/interactive-mode.ts +88 -16
- package/src/modes/print-mode.ts +35 -6
- package/src/modes/runtime-init.ts +21 -68
- package/src/modes/theme/defaults/index.ts +2 -0
- package/src/modes/theme/defaults/ouroboros.json +118 -0
- package/src/modes/types.ts +1 -0
- package/src/modes/utils/injected-user-submission.ts +25 -0
- package/src/modes/utils/terminal-bell.ts +15 -1
- package/src/prompts/agent-fragments/ralplan-persistence.md +1 -1
- package/src/prompts/agent-fragments/restricted-bash.md +1 -1
- package/src/prompts/agents/critic.md +1 -1
- package/src/prompts/system/rlm-research.md +1 -1
- package/src/prompts/system/system-prompt.md +0 -2
- package/src/prompts/tools/bash.md +7 -1
- package/src/prompts/tools/browser.md +1 -1
- package/src/prompts/tools/cron.md +6 -6
- package/src/prompts/tools/read.md +0 -2
- package/src/prompts/tools/skill-discovery.md +4 -2
- package/src/runtime-mcp/client.ts +427 -23
- package/src/runtime-mcp/config.ts +37 -5
- package/src/runtime-mcp/manager-pool.test.ts +56 -0
- package/src/runtime-mcp/manager.ts +52 -2
- package/src/runtime-mcp/oauth-discovery.ts +13 -0
- package/src/runtime-mcp/oauth-flow.ts +46 -1
- package/src/runtime-mcp/pool-key.ts +5 -1
- package/src/runtime-mcp/pool.test.ts +9 -0
- package/src/runtime-mcp/protocol.test.ts +353 -0
- package/src/runtime-mcp/protocol.ts +624 -0
- package/src/runtime-mcp/scope-config.ts +78 -0
- package/src/runtime-mcp/tool-bridge.ts +44 -10
- package/src/runtime-mcp/transports/http.ts +84 -13
- package/src/runtime-mcp/types.ts +123 -12
- package/src/sdk/acp/adapter.ts +328 -97
- package/src/sdk/broker/broker.ts +160 -741
- package/src/sdk/broker/ensure.ts +9 -1
- package/src/sdk/broker/lifecycle.ts +510 -116
- package/src/sdk/broker/operation-receipt-ledger.ts +11 -2
- package/src/sdk/broker/process-incarnation.ts +19 -0
- package/src/sdk/broker/session-index.ts +516 -117
- package/src/sdk/broker/startup-failure.ts +28 -5
- package/src/sdk/broker/transport.ts +1 -13
- package/src/sdk/bus/chat-daemon-cli.ts +4 -2
- package/src/sdk/bus/chat-daemon-control.ts +67 -6
- package/src/sdk/bus/chat-daemon-runtime.ts +183 -859
- package/src/sdk/bus/config.ts +13 -0
- package/src/sdk/bus/conversation-store.ts +59 -171
- package/src/sdk/bus/daemon-paths.ts +20 -0
- package/src/sdk/bus/discord-conversation.ts +2 -0
- package/src/sdk/bus/discord-daemon.ts +524 -126
- package/src/sdk/bus/discord-live-provider.ts +206 -79
- package/src/sdk/bus/existing-thread-readiness.ts +4 -97
- package/src/sdk/bus/inbound-reaction-ordering.ts +122 -0
- package/src/sdk/bus/index.ts +2480 -456
- package/src/sdk/bus/kind-aware-reconciliation.ts +204 -34
- package/src/sdk/bus/lifecycle-commands.ts +2 -2
- package/src/sdk/bus/managed-daemon.ts +2 -145
- package/src/sdk/bus/notification-service.ts +196 -0
- package/src/sdk/bus/operator-runtime.ts +1 -1
- package/src/sdk/bus/prompt-reconciliation.ts +24 -15
- package/src/sdk/bus/reconciliation-store.ts +553 -24
- package/src/sdk/bus/session-control.ts +49 -3
- package/src/sdk/bus/slack-conversation.ts +4 -0
- package/src/sdk/bus/slack-daemon.ts +733 -134
- package/src/sdk/bus/slack-live-provider.ts +65 -15
- package/src/sdk/bus/slack-provider.ts +4 -0
- package/src/sdk/bus/slack-thread-binding.ts +9 -104
- package/src/sdk/bus/telegram-adoption-intent.ts +299 -209
- package/src/sdk/bus/telegram-daemon-cli.ts +194 -7
- package/src/sdk/bus/telegram-daemon-contract.ts +265 -19
- package/src/sdk/bus/telegram-daemon-control.ts +3 -13
- package/src/sdk/bus/telegram-daemon-orphan-reap.ts +498 -0
- package/src/sdk/bus/telegram-daemon-owner-registry.ts +176 -0
- package/src/sdk/bus/telegram-daemon.ts +2552 -2280
- package/src/sdk/bus/telegram-reference.ts +1 -226
- package/src/sdk/bus/telegram-setup.ts +2 -2
- package/src/sdk/bus/threaded-render.ts +1 -0
- package/src/sdk/bus/topic-registry.ts +279 -146
- package/src/sdk/cli/rows.ts +2 -35
- package/src/sdk/cli/session-cli.ts +776 -700
- package/src/sdk/client/client.ts +892 -1
- package/src/sdk/host/control/dispatch.ts +93 -58
- package/src/sdk/host/control/index.ts +1 -1
- package/src/sdk/host/control/operations.ts +18 -10
- package/src/sdk/host/control/runtime-gate.ts +40 -0
- package/src/sdk/host/host.ts +63 -12
- package/src/sdk/host/query/handlers.ts +66 -7
- package/src/sdk/host/reverse-leases.ts +2 -2
- package/src/sdk/host/sdk-surface-parity.test.ts +1 -1
- package/src/sdk/host/session-runtime.test.ts +2787 -34
- package/src/sdk/host/session-runtime.ts +1489 -101
- package/src/sdk/host/surface-policy.ts +12 -8
- package/src/sdk/host/types.ts +1 -1
- package/src/sdk/host/websocket-transport.lifecycle.test.ts +31 -59
- package/src/sdk/host/websocket-transport.ts +85 -50
- package/src/sdk/index.ts +2 -1
- package/src/sdk/lifecycle/broker-client.ts +53 -0
- package/src/sdk/lifecycle/client.ts +234 -0
- package/src/sdk/lifecycle/index.ts +3 -0
- package/src/sdk/{bus/recent-activity.ts → lifecycle/recent-sessions.ts} +5 -2
- package/src/sdk/lifecycle/service.ts +720 -0
- package/src/sdk/mcp/server.ts +226 -188
- package/src/sdk/prompt-deadline-lease.ts +55 -0
- package/src/sdk/prompt-deadline-manager.ts +148 -0
- package/src/sdk/prompt-status.ts +11 -3
- package/src/sdk/protocol/operation-inventory.generated.json +272 -129
- package/src/sdk/protocol/operation-registry.ts +71 -8
- package/src/sdk/receipt-state.ts +43 -0
- package/src/sdk/reconciliation-extensions.ts +14 -0
- package/src/sdk/router/index.ts +1 -0
- package/src/sdk/router/session-router.ts +1658 -0
- package/src/sdk/session-list.ts +93 -0
- package/src/sdk/session-reconnect.ts +45 -1
- package/src/sdk/session.ts +716 -120
- package/src/sdk/transport/serve-cli.ts +18 -34
- package/src/session/account-inventory.ts +603 -0
- package/src/session/agent-session.ts +2873 -559
- package/src/session/agent-storage.ts +35 -0
- package/src/session/blob-store.ts +32 -1
- package/src/session/coordinator-tool-label.ts +40 -0
- package/src/session/internal/managed-session-scope.ts +4 -0
- package/src/session/internal/managed-session-storage.ts +199 -31
- package/src/session/messages.ts +1 -1
- package/src/session/secure-token-file.ts +80 -0
- package/src/session/session-manager.ts +757 -57
- package/src/session/session-storage.ts +25 -16
- package/src/session/startup-auth-config.ts +297 -0
- package/src/session/terminal-abort.ts +1253 -0
- package/src/session/yield-queue.ts +57 -15
- package/src/session-import/claude.ts +334 -0
- package/src/session-import/codex.ts +1033 -0
- package/src/session-import/command.ts +77 -0
- package/src/session-import/detect.ts +133 -0
- package/src/session-import/index.ts +7 -0
- package/src/session-import/provider-codex.ts +327 -0
- package/src/session-import/provider-service.ts +457 -0
- package/src/session-import/redact.ts +128 -0
- package/src/session-import/service.ts +1264 -0
- package/src/session-import/types.ts +148 -0
- package/src/setup/paseo/check.ts +213 -0
- package/src/setup/paseo/install-saga.ts +293 -0
- package/src/setup/paseo/json-publisher.ts +263 -0
- package/src/setup/paseo/orchestration-preferences.ts +86 -0
- package/src/setup/paseo/paseo-ownership.ts +224 -0
- package/src/setup/paseo/paseo-setup.ts +253 -0
- package/src/setup/paseo/provider-config.ts +139 -0
- package/src/setup/paseo/remove.ts +183 -0
- package/src/setup/paseo/result-types.ts +79 -0
- package/src/setup/paseo/setup-deps.ts +175 -0
- package/src/setup/paseo/skills-bridge.ts +260 -0
- package/src/skill-state/active-state.ts +21 -11
- package/src/slash-commands/acp-builtins.ts +9 -1
- package/src/slash-commands/builtin-registry.ts +117 -19
- package/src/slash-commands/helpers/credential-switch.ts +143 -0
- package/src/slash-commands/helpers/mcp.ts +9 -3
- package/src/slash-commands/helpers/usage-report.ts +61 -56
- package/src/slash-commands/types.ts +7 -2
- package/src/task/executor.ts +30 -11
- package/src/task/index.ts +66 -7
- package/src/task/render.ts +23 -9
- package/src/tools/ask-answer-registry.ts +23 -7
- package/src/tools/ask.ts +8 -4
- package/src/tools/bash-sleep-advisory.ts +115 -0
- package/src/tools/bash.ts +98 -18
- package/src/tools/browser/attach.ts +71 -3
- package/src/tools/browser/launch.ts +86 -13
- package/src/tools/browser/profile-discovery.ts +57 -7
- package/src/tools/browser/render.ts +8 -1
- package/src/tools/browser.ts +130 -21
- package/src/tools/computer.enforcement.test.ts +1 -1
- package/src/tools/computer.ts +3 -2
- package/src/tools/cron.ts +12 -1
- package/src/tools/image-gen.ts +349 -142
- package/src/tools/index.ts +8 -0
- package/src/tools/job.ts +33 -6
- package/src/tools/monitor.ts +41 -2
- package/src/tools/skill-discovery.ts +21 -29
- package/src/tools/subagent.ts +142 -24
- package/src/tools/todo-contract.ts +55 -3
- package/src/tools/todo-write.ts +4 -3
- package/src/tools/tool-catalog.generated.ts +6 -6
- package/src/tools/ultragoal-ask-guard.ts +10 -3
- package/src/utils/herdr-pane.ts +345 -0
- package/src/utils/title-generator.ts +2 -0
- package/src/web/scrapers/index.ts +6 -4
- package/dist/types/cli/malloc-env-guard.test.d.ts +0 -1
- package/dist/types/defaults/gjc-defaults.test.d.ts +0 -1
- package/dist/types/memory-backend/lazy-loading.test.d.ts +0 -1
- package/dist/types/runtime/boot-ordering.test.d.ts +0 -1
- package/dist/types/runtime/lazy-service.test.d.ts +0 -1
- package/dist/types/runtime/network-prewarm-service.test.d.ts +0 -1
- package/dist/types/runtime/workspace-tree-service.test.d.ts +0 -1
- package/dist/types/runtime-mcp/config.test.d.ts +0 -1
- package/dist/types/runtime-mcp/http.test.d.ts +0 -1
- package/dist/types/runtime-mcp/manager-pool.test.d.ts +0 -1
- package/dist/types/runtime-mcp/pool-key.test.d.ts +0 -1
- package/dist/types/runtime-mcp/pool.test.d.ts +0 -1
- package/dist/types/sdk/bus/lifecycle-control-runtime.d.ts +0 -117
- package/dist/types/sdk/bus/lifecycle-orchestrator.d.ts +0 -141
- package/dist/types/sdk/bus/telegram-cli.d.ts +0 -31
- package/dist/types/sdk/elevation/allowlist.d.ts +0 -20
- package/dist/types/sdk/elevation/audit.d.ts +0 -93
- package/dist/types/sdk/elevation/capability.d.ts +0 -3
- package/dist/types/sdk/elevation/digest.d.ts +0 -72
- package/dist/types/sdk/elevation/dispatch-receipt.d.ts +0 -85
- package/dist/types/sdk/elevation/grant-ledger.d.ts +0 -163
- package/dist/types/sdk/elevation/owner.d.ts +0 -48
- package/dist/types/sdk/host/import-graph.test.d.ts +0 -1
- package/dist/types/sdk/host/sdk-surface-parity.test.d.ts +0 -1
- package/dist/types/sdk/host/session-runtime.test.d.ts +0 -1
- package/dist/types/sdk/host/websocket-transport.lifecycle.test.d.ts +0 -1
- package/dist/types/session/auth-broker-config.d.ts +0 -13
- package/dist/types/session/heap-eviction-artifacts.test.d.ts +0 -1
- package/dist/types/skills/skills.test.d.ts +0 -1
- package/dist/types/slash-commands/notify-command.test.d.ts +0 -1
- package/dist/types/task/token-log.test.d.ts +0 -1
- package/dist/types/tools/computer.enforcement.test.d.ts +0 -1
- package/dist/types/tools/descriptors.test.d.ts +0 -1
- package/scripts/g005-daemon-smoke.ts +0 -180
- package/scripts/g011-daemon-path-smoke.ts +0 -153
- package/src/sdk/bus/lifecycle-control-runtime.ts +0 -1733
- package/src/sdk/bus/lifecycle-orchestrator.ts +0 -489
- package/src/sdk/bus/telegram-cli.ts +0 -212
- package/src/sdk/elevation/allowlist.ts +0 -54
- package/src/sdk/elevation/audit.ts +0 -208
- package/src/sdk/elevation/capability.ts +0 -41
- package/src/sdk/elevation/digest.ts +0 -129
- package/src/sdk/elevation/dispatch-receipt.ts +0 -184
- package/src/sdk/elevation/grant-ledger.ts +0 -1142
- package/src/sdk/elevation/owner.ts +0 -109
- package/src/session/auth-broker-config.ts +0 -109
- /package/dist/types/{ai-core-import-gate.test.d.ts → discovery/claude-hooks.d.ts} +0 -0
- /package/dist/types/{cli/fixture-report.test.d.ts → discovery/codex-hooks.d.ts} +0 -0
- /package/dist/types/sdk/{bus/recent-activity.d.ts → lifecycle/recent-sessions.d.ts} +0 -0
|
@@ -41,6 +41,9 @@ export default class Index extends Command {
|
|
|
41
41
|
credential: import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
|
|
42
42
|
description: string;
|
|
43
43
|
};
|
|
44
|
+
"prefer-credential": import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
|
|
45
|
+
description: string;
|
|
46
|
+
};
|
|
44
47
|
"system-prompt": import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
|
|
45
48
|
description: string;
|
|
46
49
|
};
|
|
@@ -50,6 +53,9 @@ export default class Index extends Command {
|
|
|
50
53
|
"mcp-config": import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
|
|
51
54
|
description: string;
|
|
52
55
|
};
|
|
56
|
+
"no-mcp": import("@gajae-code/utils/cli").FlagDescriptor<"boolean"> & {
|
|
57
|
+
description: string;
|
|
58
|
+
};
|
|
53
59
|
"clipboard-transport": import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
|
|
54
60
|
description: string;
|
|
55
61
|
options: string[];
|
|
@@ -93,6 +93,12 @@ export default class Setup extends Command {
|
|
|
93
93
|
"models-path": import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
|
|
94
94
|
description: string;
|
|
95
95
|
};
|
|
96
|
+
remove: import("@gajae-code/utils/cli").FlagDescriptor<"boolean"> & {
|
|
97
|
+
description: string;
|
|
98
|
+
};
|
|
99
|
+
mpreset: import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
|
|
100
|
+
description: string;
|
|
101
|
+
};
|
|
96
102
|
yes: import("@gajae-code/utils/cli").FlagDescriptor<"boolean"> & {
|
|
97
103
|
char: string;
|
|
98
104
|
description: string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Inspect bundled workflow skills.
|
|
2
|
+
* Inspect bundled workflow skills and filesystem-discovered custom skills.
|
|
3
3
|
*/
|
|
4
4
|
import { Command } from "@gajae-code/utils/cli";
|
|
5
5
|
import { type SkillsAction } from "../cli/skills-cli";
|
|
@@ -20,6 +20,11 @@ export default class Skills extends Command {
|
|
|
20
20
|
json: import("@gajae-code/utils/cli").FlagDescriptor<"boolean"> & {
|
|
21
21
|
description: string;
|
|
22
22
|
};
|
|
23
|
+
source: import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
|
|
24
|
+
description: string;
|
|
25
|
+
options: string[];
|
|
26
|
+
default: string;
|
|
27
|
+
};
|
|
23
28
|
};
|
|
24
29
|
static examples: string[];
|
|
25
30
|
run(): Promise<void>;
|
|
@@ -16,5 +16,12 @@ export default class Update extends Command {
|
|
|
16
16
|
description: string;
|
|
17
17
|
};
|
|
18
18
|
};
|
|
19
|
+
static args: {
|
|
20
|
+
action: import("@gajae-code/utils/cli").ArgDescriptor & {
|
|
21
|
+
description: string;
|
|
22
|
+
required: false;
|
|
23
|
+
options: string[];
|
|
24
|
+
};
|
|
25
|
+
};
|
|
19
26
|
run(): Promise<void>;
|
|
20
27
|
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { NativeExactFileIdentity, NativeExactUnlinkResult, NativeNoReplaceResult } from "@gajae-code/natives";
|
|
2
|
+
export type AtomicYamlNativeWorkerRequest = {
|
|
3
|
+
operation: "exact-replace";
|
|
4
|
+
sourcePath: string;
|
|
5
|
+
destinationPath: string;
|
|
6
|
+
expectedSource: NativeExactFileIdentity;
|
|
7
|
+
expectedDestination: NativeExactFileIdentity;
|
|
8
|
+
} | {
|
|
9
|
+
operation: "no-replace";
|
|
10
|
+
sourcePath: string;
|
|
11
|
+
destinationPath: string;
|
|
12
|
+
} | {
|
|
13
|
+
operation: "no-replace-link";
|
|
14
|
+
sourcePath: string;
|
|
15
|
+
destinationPath: string;
|
|
16
|
+
};
|
|
17
|
+
export type AtomicYamlNativeWorkerResponse = {
|
|
18
|
+
type: "result";
|
|
19
|
+
result: NativeExactUnlinkResult | NativeNoReplaceResult;
|
|
20
|
+
} | {
|
|
21
|
+
type: "error";
|
|
22
|
+
name?: string;
|
|
23
|
+
message: string;
|
|
24
|
+
stack?: string;
|
|
25
|
+
};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { NativeExactFileIdentity, NativeExactUnlinkResult, NativeNoReplaceResult } from "@gajae-code/natives";
|
|
1
2
|
export interface AtomicYamlExpectedPrecondition {
|
|
2
3
|
path: string;
|
|
3
4
|
hash: string;
|
|
@@ -37,6 +38,8 @@ export type CasRestoreResult = {
|
|
|
37
38
|
paths: readonly string[];
|
|
38
39
|
} | {
|
|
39
40
|
status: "discarded";
|
|
41
|
+
} | {
|
|
42
|
+
status: "not-restorable";
|
|
40
43
|
};
|
|
41
44
|
/**
|
|
42
45
|
* A receipt intentionally exposes only path-level hashes and opaque revisions.
|
|
@@ -55,6 +58,10 @@ export interface AtomicYamlUpdate<T> {
|
|
|
55
58
|
export interface AtomicYamlPatchOptions {
|
|
56
59
|
/** Test seam for deterministic pre-rename and Windows sharing-violation failures. */
|
|
57
60
|
rename?: (from: string, to: string) => Promise<void>;
|
|
61
|
+
/** Test seam for an identity-checked atomic replacement. */
|
|
62
|
+
exactReplace?: (sourcePath: string, destinationPath: string, expectedSource: NativeExactFileIdentity, expectedDestination: NativeExactFileIdentity) => NativeExactUnlinkResult | Promise<NativeExactUnlinkResult>;
|
|
63
|
+
/** Test seam for an atomic no-replace publication. */
|
|
64
|
+
noReplace?: (sourcePath: string, destinationPath: string) => NativeNoReplaceResult | Promise<NativeNoReplaceResult>;
|
|
58
65
|
/** Test seam for bounded retry timing. */
|
|
59
66
|
sleep?: (ms: number) => Promise<void>;
|
|
60
67
|
/** Test seam for Windows rename retry behavior. */
|
|
@@ -69,8 +76,24 @@ export declare class AtomicYamlReplaceError extends Error {
|
|
|
69
76
|
readonly configPath: string;
|
|
70
77
|
readonly attempts: number;
|
|
71
78
|
readonly cause: unknown;
|
|
79
|
+
readonly preserveTempPath: boolean;
|
|
72
80
|
readonly code = "ATOMIC_YAML_REPLACE_FAILED";
|
|
73
|
-
constructor(configPath: string, attempts: number, cause: unknown);
|
|
81
|
+
constructor(configPath: string, attempts: number, cause: unknown, preserveTempPath?: boolean);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Raised when the LEXICAL config path no longer resolves to the canonical
|
|
85
|
+
* target an operation is about to write: e.g. a `config.yml` symlink was
|
|
86
|
+
* repointed while the operation waited in the per-file queue or ran. The
|
|
87
|
+
* native identity check protects only the previously resolved destination, so
|
|
88
|
+
* without this guard the write would modify an unrelated prior target and
|
|
89
|
+
* report success while the now-active configuration is left unchanged.
|
|
90
|
+
*/
|
|
91
|
+
export declare class AtomicYamlRetargetError extends Error {
|
|
92
|
+
readonly lexicalPath: string;
|
|
93
|
+
readonly expectedCanonicalPath: string;
|
|
94
|
+
readonly actualCanonicalPath: string;
|
|
95
|
+
readonly code = "ATOMIC_YAML_RETARGETED";
|
|
96
|
+
constructor(lexicalPath: string, expectedCanonicalPath: string, actualCanonicalPath: string);
|
|
74
97
|
}
|
|
75
98
|
/** Set a dotted YAML path, creating object intermediates as needed. */
|
|
76
99
|
export declare function setByPath(value: Record<string, unknown>, segments: readonly string[], nextValue: unknown): void;
|
|
@@ -80,12 +103,49 @@ export declare function deleteByPath(value: Record<string, unknown>, segments: r
|
|
|
80
103
|
export declare function atomicYamlPathHash(value: Record<string, unknown>, path: string): string;
|
|
81
104
|
/** Build patches from current durable YAML while holding the shared queue and file lock. */
|
|
82
105
|
export declare function applyAtomicYamlPatchesWithCurrent(configPath: string, buildPatches: (current: Readonly<Record<string, unknown>>) => Promise<readonly AtomicYamlPatch[]> | readonly AtomicYamlPatch[], options?: AtomicYamlPatchOptions): Promise<CasReceipt>;
|
|
106
|
+
export interface AtomicYamlConfigTransaction {
|
|
107
|
+
configPath: string;
|
|
108
|
+
root: unknown;
|
|
109
|
+
current: Readonly<Record<string, unknown>>;
|
|
110
|
+
/** True once any write op has durably committed (a later CAS rejection then
|
|
111
|
+
* leaves the target with partial writes, so recovery artifacts must stay). */
|
|
112
|
+
written: boolean;
|
|
113
|
+
applyPatches(patches: readonly AtomicYamlPatch[], options?: AtomicYamlPatchOptions): Promise<CasReceipt>;
|
|
114
|
+
/**
|
|
115
|
+
* Delete top-level keys verbatim, including dotted key names (e.g. a flat
|
|
116
|
+
* `"gjc.ralplan.maxIterations"` key that the patch grammar would otherwise
|
|
117
|
+
* interpret as a nested path). Writes atomically under the same lock.
|
|
118
|
+
*/
|
|
119
|
+
removeTopLevelKeys(keys: readonly string[], options?: AtomicYamlPatchOptions): Promise<CasReceipt>;
|
|
120
|
+
/**
|
|
121
|
+
* Apply patches AND delete top-level keys verbatim in a SINGLE atomic
|
|
122
|
+
* write, so an external editor's change cannot land between the two
|
|
123
|
+
* operations (external editors do not participate in the file lock). The
|
|
124
|
+
* returned receipt is not restorable (the deletions are not journaled).
|
|
125
|
+
*/
|
|
126
|
+
applyPatchesAndRemoveTopLevelKeys(patches: readonly AtomicYamlPatch[], topLevelKeys: readonly string[], options?: AtomicYamlPatchOptions): Promise<CasReceipt>;
|
|
127
|
+
/**
|
|
128
|
+
* Replace the whole document (used to revert the target when a later
|
|
129
|
+
* verification fails). Writes atomically under the same lock; the returned
|
|
130
|
+
* receipt is not restorable.
|
|
131
|
+
*/
|
|
132
|
+
replaceCurrent(next: Readonly<Record<string, unknown>>, options?: AtomicYamlPatchOptions): Promise<CasReceipt>;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Run a caller-owned multi-step mutation under the config file's per-file queue
|
|
136
|
+
* and cross-process lock. The current YAML is read once and exposed as
|
|
137
|
+
* `root`/`current`; the callback may inspect it, decide patches, and apply them
|
|
138
|
+
* (or perform adjacent durable actions such as marker/source transitions)
|
|
139
|
+
* without re-acquiring the lock. A YAML parse failure surfaces before the
|
|
140
|
+
* callback runs, so no migration action can execute against a malformed target.
|
|
141
|
+
*/
|
|
142
|
+
export declare function withAtomicYamlConfigTransaction<T>(configPath: string, operation: (transaction: AtomicYamlConfigTransaction) => Promise<T>): Promise<T>;
|
|
83
143
|
/**
|
|
84
144
|
* Reserve a FIFO operation for a config file immediately. The patch supplier runs
|
|
85
145
|
* only when this operation reaches the front of the in-process queue, which lets
|
|
86
146
|
* Settings debounce/coalesce inside its already-reserved causal slot.
|
|
87
147
|
*/
|
|
88
|
-
export declare function enqueueAtomicYamlOperation<T>(configPath: string, operation: (canonicalConfigPath: string) => Promise<T>): Promise<T>;
|
|
148
|
+
export declare function enqueueAtomicYamlOperation<T>(configPath: string, operation: (canonicalConfigPath: string, lexicalConfigPath: string) => Promise<T>): Promise<T>;
|
|
89
149
|
/**
|
|
90
150
|
* Reserve an atomic patch slot now, producing patches only after earlier slots
|
|
91
151
|
* complete. Writers with state-aware merges use {@link reserveAtomicYamlUpdateSlot}.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The current settings/config schema version. A `config.yml` whose
|
|
3
|
+
* `configSchemaVersion` is newer is treated as read-only by Settings migrations
|
|
4
|
+
* (a future schema must not inherit stale keys); the workflow-settings
|
|
5
|
+
* resolver mirrors that guard when deciding whether a migration target is
|
|
6
|
+
* non-publishable (so the retained legacy fallback still applies). Defined in
|
|
7
|
+
* this dependency-light module so the resolver can import it without pulling in
|
|
8
|
+
* the TUI/AI-heavy settings schema.
|
|
9
|
+
*/
|
|
10
|
+
export declare const CONFIG_SCHEMA_VERSION = 1;
|
|
@@ -45,6 +45,24 @@ export type FileLockGcRemoval = "removed" | "owner_changed" | "missing";
|
|
|
45
45
|
* but the reclaim-after-stale scenario the issue describes is now guarded.
|
|
46
46
|
*/
|
|
47
47
|
export declare function removeFileLockDirForGc(lockDir: string, expected: FileLockOwnerToken): Promise<FileLockGcRemoval>;
|
|
48
|
+
/**
|
|
49
|
+
* @internal
|
|
50
|
+
* READ-ONLY verdict on an EXISTING generic `<file>.lock/` directory that another lock
|
|
51
|
+
* protocol has collided with: is its owner gone, by this protocol's own rules?
|
|
52
|
+
*
|
|
53
|
+
* Exposed so a foreign holder of the same path never has to reimplement this protocol's
|
|
54
|
+
* owner parsing or liveness rules. Reusing them is what makes the two implementations
|
|
55
|
+
* agree: `processStartTime` here is the portable `ps` value that `info.start_time` was
|
|
56
|
+
* written from, so a live owner is proved live rather than compared against a value from a
|
|
57
|
+
* different clock source and then reaped. A live owner is never reported stale by elapsed
|
|
58
|
+
* time alone.
|
|
59
|
+
*
|
|
60
|
+
* Deletion is deliberately NOT offered. This protocol can only re-read an owner token and
|
|
61
|
+
* then unlink a pathname, which a successor can take over in between; a caller that must
|
|
62
|
+
* remove the directory has to do it under an identity-bound primitive that refuses when
|
|
63
|
+
* the object is no longer the one that was judged.
|
|
64
|
+
*/
|
|
65
|
+
export declare function genericFileLockDirIsStale(lockDir: string, staleMs: number): Promise<boolean>;
|
|
48
66
|
/**
|
|
49
67
|
* Serializes all contenders, including callers in the same process. Because this
|
|
50
68
|
* API exposes no ownership token, recursive acquisition is indistinguishable
|
|
@@ -19,6 +19,8 @@ type ModelProfileActivationSession = Pick<AgentSession, "model" | "thinkingLevel
|
|
|
19
19
|
modelRoles: readonly string[];
|
|
20
20
|
agentModelOverrides: readonly string[];
|
|
21
21
|
};
|
|
22
|
+
/** Re-apply vendor-separated delegation (task tool + prompt) after the role layer changed. */
|
|
23
|
+
syncEagerDelegation?: () => Promise<void>;
|
|
22
24
|
getSessionDefaultModelSelector?: () => string | undefined;
|
|
23
25
|
recordResumeDefaultModel?: (selector: string | undefined) => void;
|
|
24
26
|
seedDefaultFallbackResolution?: (activeIndex: number, skips: Array<{
|
|
@@ -39,7 +41,7 @@ type ConfiguredModelChainState = {
|
|
|
39
41
|
};
|
|
40
42
|
export interface PrepareModelProfileActivationOptions {
|
|
41
43
|
session: ModelProfileActivationSession;
|
|
42
|
-
modelRegistry: Pick<ModelRegistry, "getModelProfile" | "getModelProfiles" | "getAvailableModelProfileNames" | "getApiKeyForProvider" | "getAll" | "resolveCanonicalModel" | "getCanonicalVariants" | "getCanonicalId"> & Partial<Pick<ModelRegistry, "getAvailable" | "resolveModelByLookupAlias" | "lookupAliasExists" | "clearCanonicalVariant" | "seedCanonicalVariant" | "getSessionCanonicalVariant" | "restoreSessionCanonicalVariant" | "getConfiguredProviderIds">> & {
|
|
44
|
+
modelRegistry: Pick<ModelRegistry, "getModelProfile" | "getModelProfiles" | "getAvailableModelProfileNames" | "getApiKeyForProvider" | "getAll" | "resolveCanonicalModel" | "getCanonicalVariants" | "getCanonicalId"> & Partial<Pick<ModelRegistry, "getAvailable" | "getAvailableForProfileActivation" | "resolveModelByLookupAlias" | "lookupAliasExists" | "clearCanonicalVariant" | "seedCanonicalVariant" | "getSessionCanonicalVariant" | "restoreSessionCanonicalVariant" | "getConfiguredProviderIds">> & {
|
|
43
45
|
getError?: ModelRegistry["getError"];
|
|
44
46
|
};
|
|
45
47
|
settings: Pick<Settings, "get" | "getGlobal" | "getOverride">;
|
|
@@ -34,6 +34,7 @@ export interface GjcModelAssignmentTargetInfo extends ModelRoleInfo {
|
|
|
34
34
|
}
|
|
35
35
|
export { GJC_MODEL_ASSIGNMENT_TARGET_IDS };
|
|
36
36
|
export declare const GJC_MODEL_ASSIGNMENT_TARGETS: Record<GjcModelAssignmentTargetId, GjcModelAssignmentTargetInfo>;
|
|
37
|
+
export declare function requiresExplicitThinkingChoice(model: Model, role: GjcModelAssignmentTargetId | null): boolean;
|
|
37
38
|
/** Alias for ModelRoleInfo - used for both built-in and custom roles */
|
|
38
39
|
export type RoleInfo = ModelRoleInfo;
|
|
39
40
|
/**
|
|
@@ -106,7 +107,7 @@ export declare const ModelsConfigFile: ConfigFile<{
|
|
|
106
107
|
authHeader?: boolean | undefined;
|
|
107
108
|
auth?: "apiKey" | "none" | "oauth" | undefined;
|
|
108
109
|
discovery?: {
|
|
109
|
-
type: "llama.cpp" | "lm-studio" | "models-dev" | "ollama" | "openai-models-list";
|
|
110
|
+
type: "llama.cpp" | "lm-studio" | "models-dev" | "ollama" | "omlx" | "openai-models-list";
|
|
110
111
|
apiByModelPrefix?: Record<string, "anthropic-messages" | "openai-completions"> | undefined;
|
|
111
112
|
modelsDevProvider?: string | undefined;
|
|
112
113
|
} | undefined;
|
|
@@ -453,6 +454,12 @@ export declare class ModelRegistry {
|
|
|
453
454
|
* This is a fast check that doesn't refresh OAuth tokens.
|
|
454
455
|
*/
|
|
455
456
|
getAvailable(): Model<Api>[];
|
|
457
|
+
/**
|
|
458
|
+
* Get authenticated models, excluding bundled entries that a fresh provider
|
|
459
|
+
* catalog has positively shown to be unavailable. Bundled entries remain
|
|
460
|
+
* usable until live catalog evidence exists so offline startup is unchanged.
|
|
461
|
+
*/
|
|
462
|
+
getAvailableForProfileActivation(): Model<Api>[];
|
|
456
463
|
getActiveProviders(): ActiveProviderDescriptor[];
|
|
457
464
|
/**
|
|
458
465
|
* Check whether auth is configured for a model's provider.
|
|
@@ -486,6 +493,7 @@ export declare class ModelRegistry {
|
|
|
486
493
|
*/
|
|
487
494
|
getApiKey(model: Model<Api>, sessionId?: string, options?: {
|
|
488
495
|
credentialSelector?: AuthCredentialSelector;
|
|
496
|
+
preferredCredentialSelector?: AuthCredentialSelector;
|
|
489
497
|
signal?: AbortSignal;
|
|
490
498
|
}): Promise<string | undefined>;
|
|
491
499
|
/**
|
|
@@ -493,6 +501,7 @@ export declare class ModelRegistry {
|
|
|
493
501
|
*/
|
|
494
502
|
getApiKeyForProvider(provider: string, sessionId?: string, baseUrl?: string, options?: {
|
|
495
503
|
credentialSelector?: AuthCredentialSelector;
|
|
504
|
+
preferredCredentialSelector?: AuthCredentialSelector;
|
|
496
505
|
signal?: AbortSignal;
|
|
497
506
|
}): Promise<string | undefined>;
|
|
498
507
|
/**
|
|
@@ -353,6 +353,7 @@ export declare const ProviderDiscoverySchema: z.ZodObject<{
|
|
|
353
353
|
"lm-studio": "lm-studio";
|
|
354
354
|
"models-dev": "models-dev";
|
|
355
355
|
ollama: "ollama";
|
|
356
|
+
omlx: "omlx";
|
|
356
357
|
"openai-models-list": "openai-models-list";
|
|
357
358
|
}>;
|
|
358
359
|
apiByModelPrefix: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<{
|
|
@@ -475,6 +476,7 @@ export declare const ModelsConfigSchema: z.ZodObject<{
|
|
|
475
476
|
"lm-studio": "lm-studio";
|
|
476
477
|
"models-dev": "models-dev";
|
|
477
478
|
ollama: "ollama";
|
|
479
|
+
omlx: "omlx";
|
|
478
480
|
"openai-models-list": "openai-models-list";
|
|
479
481
|
}>;
|
|
480
482
|
apiByModelPrefix: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<{
|
|
@@ -103,6 +103,8 @@ type RecordValueDef = {
|
|
|
103
103
|
} | {
|
|
104
104
|
type: "string-enum";
|
|
105
105
|
values: readonly string[];
|
|
106
|
+
} | {
|
|
107
|
+
type: "credential-selector";
|
|
106
108
|
};
|
|
107
109
|
interface RecordDef<T> {
|
|
108
110
|
type: "record";
|
|
@@ -132,6 +134,27 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
132
134
|
readonly type: "string";
|
|
133
135
|
readonly default: undefined;
|
|
134
136
|
};
|
|
137
|
+
readonly "auth.credentialRankingMode": {
|
|
138
|
+
readonly type: "enum";
|
|
139
|
+
readonly values: readonly ["balanced", "earliest-reset"];
|
|
140
|
+
readonly default: "balanced";
|
|
141
|
+
readonly ui: {
|
|
142
|
+
readonly tab: "providers";
|
|
143
|
+
readonly label: "Credential Ranking";
|
|
144
|
+
readonly description: "Choose balanced distribution or earliest-reset-first OAuth account selection.";
|
|
145
|
+
};
|
|
146
|
+
};
|
|
147
|
+
readonly "auth.credentialPins": {
|
|
148
|
+
readonly type: "record";
|
|
149
|
+
readonly default: Record<string, string>;
|
|
150
|
+
readonly valueSchema: {
|
|
151
|
+
readonly type: "credential-selector";
|
|
152
|
+
};
|
|
153
|
+
};
|
|
154
|
+
readonly "auth.credentialPinStoreIdentity": {
|
|
155
|
+
readonly type: "string";
|
|
156
|
+
readonly default: undefined;
|
|
157
|
+
};
|
|
135
158
|
readonly "session.directoryMigration": {
|
|
136
159
|
readonly type: "enum";
|
|
137
160
|
readonly values: readonly ["copy-retain", "disabled"];
|
|
@@ -154,6 +177,12 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
154
177
|
readonly description: "SDK-owned prompt deadline; ACP has no separate timeout.";
|
|
155
178
|
readonly validate: (value: number) => boolean;
|
|
156
179
|
};
|
|
180
|
+
readonly "sdk.promptMaxRuntimeMs": {
|
|
181
|
+
readonly type: "number";
|
|
182
|
+
readonly default: 21600000;
|
|
183
|
+
readonly description: "Hard maximum runtime for an SDK prompt from acceptance, bounding progress-aware renewals.";
|
|
184
|
+
readonly validate: (value: number) => boolean;
|
|
185
|
+
};
|
|
157
186
|
readonly "notifications.enabled": {
|
|
158
187
|
readonly type: "boolean";
|
|
159
188
|
readonly default: false;
|
|
@@ -330,7 +359,7 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
330
359
|
readonly ui: {
|
|
331
360
|
readonly tab: "interaction";
|
|
332
361
|
readonly label: "Terminal Bell";
|
|
333
|
-
readonly description: "Emit a BEL character for local terminal notifications. Windows Terminal may keep BEL silent depending on profile/system sound settings; use completion.notifyCommand for a PowerShell Console.Beep workaround.";
|
|
362
|
+
readonly description: "Emit a BEL character for local terminal notifications. macOS enables this by default unless explicitly disabled. Windows Terminal may keep BEL silent depending on profile/system sound settings; use completion.notifyCommand for a PowerShell Console.Beep workaround.";
|
|
334
363
|
};
|
|
335
364
|
};
|
|
336
365
|
readonly "notifications.bellOnComplete": {
|
|
@@ -532,6 +561,11 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
532
561
|
readonly default: 1;
|
|
533
562
|
readonly validate: (value: number) => boolean;
|
|
534
563
|
};
|
|
564
|
+
readonly "gjc.ultragoal.nudgeBudget": {
|
|
565
|
+
readonly type: "number";
|
|
566
|
+
readonly default: 10;
|
|
567
|
+
readonly validate: (value: number) => boolean;
|
|
568
|
+
};
|
|
535
569
|
readonly "theme.dark": {
|
|
536
570
|
readonly type: "string";
|
|
537
571
|
readonly default: "red-claw";
|
|
@@ -704,18 +738,18 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
704
738
|
};
|
|
705
739
|
readonly "pet.mode": {
|
|
706
740
|
readonly type: "enum";
|
|
707
|
-
readonly values: readonly ["off", "red", "blue"];
|
|
741
|
+
readonly values: readonly ["off", "red", "blue", "ouroboros"];
|
|
708
742
|
readonly default: "off";
|
|
709
743
|
readonly ui: {
|
|
710
744
|
readonly tab: "appearance";
|
|
711
745
|
readonly label: "Gajae Pet";
|
|
712
|
-
readonly description: "
|
|
746
|
+
readonly description: "Real-pixel pet living beside the composer (sixel/kitty terminals)";
|
|
713
747
|
readonly options: readonly [{
|
|
714
748
|
readonly value: "off";
|
|
715
749
|
readonly label: "Off";
|
|
716
750
|
readonly description: "No pet";
|
|
717
751
|
}, ...{
|
|
718
|
-
value: "blue" | "red";
|
|
752
|
+
value: "blue" | "ouroboros" | "red";
|
|
719
753
|
label: string;
|
|
720
754
|
description: string;
|
|
721
755
|
}[]];
|
|
@@ -1798,6 +1832,15 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
1798
1832
|
readonly description: "Show the interactive GitHub star reminder when gh is authenticated";
|
|
1799
1833
|
};
|
|
1800
1834
|
};
|
|
1835
|
+
readonly "crashReport.nudge": {
|
|
1836
|
+
readonly type: "boolean";
|
|
1837
|
+
readonly default: true;
|
|
1838
|
+
readonly ui: {
|
|
1839
|
+
readonly tab: "interaction";
|
|
1840
|
+
readonly label: "Crash Report Nudge";
|
|
1841
|
+
readonly description: "At interactive startup, show one rate-limited line when unreported crash signatures exist. Reads local state only; nothing is ever transmitted without the explicit consent flow in `gjc crash report`.";
|
|
1842
|
+
};
|
|
1843
|
+
};
|
|
1801
1844
|
readonly collapseChangelog: {
|
|
1802
1845
|
readonly type: "boolean";
|
|
1803
1846
|
readonly default: false;
|
|
@@ -3752,7 +3795,7 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
3752
3795
|
readonly ui: {
|
|
3753
3796
|
readonly tab: "tasks";
|
|
3754
3797
|
readonly label: "Prefer Task Delegation";
|
|
3755
|
-
readonly description: "Encourage the agent to delegate work to subagents unless changes are trivial";
|
|
3798
|
+
readonly description: "Encourage the agent to delegate work to subagents unless changes are trivial (on by default when executor/planner run on a different provider than the default role)";
|
|
3756
3799
|
};
|
|
3757
3800
|
};
|
|
3758
3801
|
readonly "task.simple": {
|
|
@@ -3962,13 +4005,35 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
3962
4005
|
readonly type: "boolean";
|
|
3963
4006
|
readonly default: boolean | undefined;
|
|
3964
4007
|
};
|
|
4008
|
+
readonly "skills.trustProjectSkills": {
|
|
4009
|
+
readonly type: "boolean";
|
|
4010
|
+
readonly ui: {
|
|
4011
|
+
readonly tab: "customization";
|
|
4012
|
+
readonly label: "Trust Project Skills";
|
|
4013
|
+
readonly description: "Load skills from project .gjc/skills, .claude/skills, and .codex/skills. Set to false to ignore project-controlled skills while keeping user skills.";
|
|
4014
|
+
};
|
|
4015
|
+
};
|
|
4016
|
+
readonly "skills.trustUserSkills": {
|
|
4017
|
+
readonly type: "boolean";
|
|
4018
|
+
readonly ui: {
|
|
4019
|
+
readonly tab: "customization";
|
|
4020
|
+
readonly label: "Trust User Skills";
|
|
4021
|
+
readonly description: "Load skills from ~/.gjc/agent/skills (and legacy ~/.gjc/skills / <config>/skills). Set to false to ignore user-installed skills while keeping project skills.";
|
|
4022
|
+
};
|
|
4023
|
+
};
|
|
3965
4024
|
readonly "skills.enablePiUser": {
|
|
3966
4025
|
readonly type: "boolean";
|
|
3967
|
-
readonly
|
|
4026
|
+
readonly ui: {
|
|
4027
|
+
readonly tab: "customization";
|
|
4028
|
+
readonly label: "Trust User Skills (legacy)";
|
|
4029
|
+
};
|
|
3968
4030
|
};
|
|
3969
4031
|
readonly "skills.enablePiProject": {
|
|
3970
4032
|
readonly type: "boolean";
|
|
3971
|
-
readonly
|
|
4033
|
+
readonly ui: {
|
|
4034
|
+
readonly tab: "customization";
|
|
4035
|
+
readonly label: "Trust Project Skills (legacy)";
|
|
4036
|
+
};
|
|
3972
4037
|
};
|
|
3973
4038
|
readonly "skills.customDirectories": {
|
|
3974
4039
|
readonly type: "array";
|
|
@@ -4313,7 +4378,7 @@ export declare function getPathsForTab(tab: SettingTab): SettingPath[];
|
|
|
4313
4378
|
export declare function getType(path: SettingPath): SettingDef["type"];
|
|
4314
4379
|
/** Get enum values for an enum setting */
|
|
4315
4380
|
export declare function getEnumValues(path: SettingPath): readonly string[] | undefined;
|
|
4316
|
-
export
|
|
4381
|
+
export { CONFIG_SCHEMA_VERSION } from "./config-schema-version";
|
|
4317
4382
|
export type SettingsSchemaIssue = {
|
|
4318
4383
|
path: string;
|
|
4319
4384
|
kind: "unknown" | "invalid" | "coerced" | "pending-migration";
|
|
@@ -4549,4 +4614,3 @@ export interface GroupTypeMap {
|
|
|
4549
4614
|
notifications: NotificationsSettings;
|
|
4550
4615
|
}
|
|
4551
4616
|
export type GroupPrefix = keyof GroupTypeMap;
|
|
4552
|
-
export {};
|
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Settings singleton with sync get/set and background persistence.
|
|
3
|
+
*
|
|
4
|
+
* Usage:
|
|
5
|
+
* import { settings } from "./settings";
|
|
6
|
+
*
|
|
7
|
+
* const enabled = settings.get("compaction.enabled"); // sync read
|
|
8
|
+
* settings.set("theme.dark", "red-claw"); // sync write, saves in background
|
|
9
|
+
*
|
|
10
|
+
* For tests, `Settings.isolated()` seeds explicit user/global settings:
|
|
11
|
+
* const isolated = Settings.isolated({ "compaction.enabled": false });
|
|
12
|
+
*/
|
|
1
13
|
import type { ModelRole } from "../config/model-registry";
|
|
2
14
|
import { type NotificationSettingsReader, type NotificationSettingsSnapshot } from "../sdk/bus/config";
|
|
3
15
|
import { AgentStorage } from "../session/agent-storage";
|
|
@@ -11,6 +23,25 @@ export * from "./settings-schema";
|
|
|
11
23
|
export interface RawSettings {
|
|
12
24
|
[key: string]: unknown;
|
|
13
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Test-only seams for the config-root workflow migration. Production code
|
|
28
|
+
* never sets these; tests use them to interleave external filesystem changes
|
|
29
|
+
* at exact points of the migration state machine (mirroring
|
|
30
|
+
* `FileLockTestHooks` in file-lock.ts).
|
|
31
|
+
*/
|
|
32
|
+
export declare const SettingsMigrationTestHooks: {
|
|
33
|
+
/** Fires after the no-replace backup copy is created and its identity
|
|
34
|
+
* (inode + sha256) has been captured, immediately before the source is
|
|
35
|
+
* re-hashed for the move verification. */
|
|
36
|
+
afterBackupIdentityCaptured?: (backupPath: string) => void | Promise<void>;
|
|
37
|
+
/** Fires after a quarantined backup is verified as this run's file,
|
|
38
|
+
* immediately before the quarantined entry is unlinked. */
|
|
39
|
+
beforeQuarantineRemoval?: (backupPath: string) => void | Promise<void>;
|
|
40
|
+
/** Fires immediately before the project migration's POST-publication marker
|
|
41
|
+
* re-read, after the migrated values already committed: test seams use it
|
|
42
|
+
* to make the marker unreadable so the rollback path is exercised. */
|
|
43
|
+
beforeProjectMarkerMerge?: () => void | Promise<void>;
|
|
44
|
+
};
|
|
14
45
|
export type SettingsAtomicPatch = {
|
|
15
46
|
path: SettingPath;
|
|
16
47
|
op: "set";
|
|
@@ -29,6 +60,13 @@ export interface SettingsOptions {
|
|
|
29
60
|
inMemory?: boolean;
|
|
30
61
|
/** Initial overrides */
|
|
31
62
|
overrides?: Partial<Record<SettingPath, unknown>>;
|
|
63
|
+
/**
|
|
64
|
+
* Read the canonical config.yml from disk but never persist: no DB open,
|
|
65
|
+
* no legacy/config-root/project migrations, no file writes, renames, locks,
|
|
66
|
+
* or mtime changes. Used by read-only inspection surfaces (`gjc customize
|
|
67
|
+
* doctor`). When true, inMemory must be false so config.yml is still read.
|
|
68
|
+
*/
|
|
69
|
+
readonly?: boolean;
|
|
32
70
|
}
|
|
33
71
|
/** Additional layer setup for {@link Settings.isolated}. */
|
|
34
72
|
export interface IsolatedSettingsOptions {
|
|
@@ -56,6 +94,19 @@ export declare class Settings implements NotificationSettingsReader {
|
|
|
56
94
|
cwd: string;
|
|
57
95
|
agentDir?: string;
|
|
58
96
|
}): Promise<Settings>;
|
|
97
|
+
/**
|
|
98
|
+
* Load settings for read-only inspection without any persistence side-effects:
|
|
99
|
+
* no DB open, no legacy/config-root/project migrations, no file writes,
|
|
100
|
+
* renames, locks, or mtime changes. Reads the canonical config.yml and
|
|
101
|
+
* discovers/merges project settings exactly like the durable path, but the
|
|
102
|
+
* result is a transient snapshot. Does not affect the global singleton.
|
|
103
|
+
*
|
|
104
|
+
* Used by `gjc customize doctor` to honor the read-only product contract.
|
|
105
|
+
*/
|
|
106
|
+
static loadReadonly(options: {
|
|
107
|
+
cwd?: string;
|
|
108
|
+
agentDir?: string;
|
|
109
|
+
}): Promise<Settings>;
|
|
59
110
|
/**
|
|
60
111
|
* Create an isolated instance for testing with explicit user/global settings.
|
|
61
112
|
* Does not affect the global singleton.
|
|
@@ -195,6 +246,18 @@ export declare function isSettingsInitialized(): boolean;
|
|
|
195
246
|
* @internal
|
|
196
247
|
*/
|
|
197
248
|
export declare function resetSettingsForTest(): void;
|
|
249
|
+
/**
|
|
250
|
+
* Ensure the one-time legacy workflow settings migrations have run for `cwd`
|
|
251
|
+
* before a workflow runtime resolves settings. The direct CLI commands
|
|
252
|
+
* (`gjc ralplan`, `gjc deep-interview`, `gjc ultragoal`) never initialize
|
|
253
|
+
* Settings, so without this the project `.gjc/settings.json` and config-root
|
|
254
|
+
* `settings.json` workflow keys would silently fall back to defaults after the
|
|
255
|
+
* resolver stopped reading settings.json. No-op when the global Settings
|
|
256
|
+
* singleton is already initialized (session path). Best-effort: a settings
|
|
257
|
+
* load failure must not block the native command, whose resolver falls back to
|
|
258
|
+
* defaults exactly as before.
|
|
259
|
+
*/
|
|
260
|
+
export declare function ensureWorkflowSettingsMigrated(cwd: string): Promise<void>;
|
|
198
261
|
/**
|
|
199
262
|
* The global settings singleton.
|
|
200
263
|
* Must call `Settings.init()` before using.
|
|
@@ -4,11 +4,37 @@ export interface SkillDiscoverySettings {
|
|
|
4
4
|
enableCodexUser?: boolean;
|
|
5
5
|
enableClaudeUser?: boolean;
|
|
6
6
|
enableClaudeProject?: boolean;
|
|
7
|
+
/**
|
|
8
|
+
* User-facing trust controls for filesystem-discovered skills. Discovery is
|
|
9
|
+
* on by default: a valid skill placed in a documented project or user
|
|
10
|
+
* location is loaded without extra configuration ceremony. Setting either of
|
|
11
|
+
* these to `false` disables that scope while leaving the other scope (and
|
|
12
|
+
* the `skills.enabled` master switch) intact.
|
|
13
|
+
*
|
|
14
|
+
* `enablePiUser` / `enablePiProject` are deprecated legacy aliases for the
|
|
15
|
+
* same effective setting: an explicitly configured legacy value is honored
|
|
16
|
+
* only when the corresponding trust flag is not configured.
|
|
17
|
+
*/
|
|
18
|
+
trustProjectSkills?: boolean;
|
|
19
|
+
trustUserSkills?: boolean;
|
|
20
|
+
/** @deprecated Legacy alias for `trustUserSkills`. */
|
|
7
21
|
enablePiUser?: boolean;
|
|
22
|
+
/** @deprecated Legacy alias for `trustProjectSkills`. */
|
|
8
23
|
enablePiProject?: boolean;
|
|
9
24
|
customDirectories?: string[];
|
|
10
25
|
ignoredSkills?: string[];
|
|
11
26
|
includeSkills?: string[];
|
|
12
27
|
}
|
|
28
|
+
/** Default trust for a skill scope when neither the trust flag nor its legacy alias is configured. */
|
|
29
|
+
export declare const DEFAULT_SKILL_SCOPE_TRUST = true;
|
|
30
|
+
/**
|
|
31
|
+
* Resolve whether a skill scope is trusted, honoring the user-facing trust flag
|
|
32
|
+
* first and the deprecated `enablePiUser` / `enablePiProject` aliases second.
|
|
33
|
+
*
|
|
34
|
+
* Because both settings are optional (`undefined` when unconfigured), an
|
|
35
|
+
* explicitly configured legacy value keeps working, and a fresh install with no
|
|
36
|
+
* configuration resolves to the zero-config default (`true`).
|
|
37
|
+
*/
|
|
38
|
+
export declare function resolveSkillScopeTrust(settings: Pick<SkillDiscoverySettings, "trustProjectSkills" | "trustUserSkills" | "enablePiUser" | "enablePiProject">, scope: "project" | "user"): boolean;
|
|
13
39
|
export declare const DEFAULT_SKILL_DISCOVERY_SETTINGS: SkillDiscoverySettings;
|
|
14
40
|
export declare const DEFAULT_DISABLED_EXTENSIONS: string[];
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vendor-separated delegation policy.
|
|
3
|
+
*
|
|
4
|
+
* A model profile that pins worker roles (`executor`, `planner`) to a provider
|
|
5
|
+
* other than the main `default` role exists to move heavy implementation onto
|
|
6
|
+
* that other provider's quota. That only pays off when the main agent actually
|
|
7
|
+
* delegates, and the strong delegation directive is gated behind `task.eager`,
|
|
8
|
+
* whose schema default is `false`. Such a layout therefore used to run
|
|
9
|
+
* everything on the main provider with no signal at all.
|
|
10
|
+
*
|
|
11
|
+
* Vendor separation now implies eager delegation unless `task.eager` is
|
|
12
|
+
* configured explicitly, in which case the user's value always wins.
|
|
13
|
+
*/
|
|
14
|
+
import type { ModelProfileDefinition, ModelProfileRole } from "./model-profiles";
|
|
15
|
+
import { type ModelSelectorValue } from "./model-selector-value";
|
|
16
|
+
import type { Settings } from "./settings";
|
|
17
|
+
/** Worker roles whose provider separation expresses delegation intent. */
|
|
18
|
+
export declare const VENDOR_SEPARATION_WORKER_ROLES: readonly ["executor", "planner"];
|
|
19
|
+
export type VendorSeparationWorkerRole = (typeof VENDOR_SEPARATION_WORKER_ROLES)[number];
|
|
20
|
+
export type RoleSelectorMap = Partial<Record<ModelProfileRole, ModelSelectorValue>>;
|
|
21
|
+
/** Worker roles pinned to a provider other than the `default` role's provider. */
|
|
22
|
+
export declare function findVendorSeparatedWorkerRoles(mapping: RoleSelectorMap): VendorSeparationWorkerRole[];
|
|
23
|
+
export interface EagerTaskDelegationInput {
|
|
24
|
+
settings: Settings;
|
|
25
|
+
/** Active profile, when its bindings are not (yet) installed into settings. */
|
|
26
|
+
profile?: ModelProfileDefinition;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Effective role selectors: profile mapping as the baseline, installed settings
|
|
30
|
+
* bindings on top, since profile activation writes into those same settings.
|
|
31
|
+
*/
|
|
32
|
+
export declare function collectEffectiveRoleSelectors(input: EagerTaskDelegationInput): RoleSelectorMap;
|
|
33
|
+
export interface EagerTaskDelegation {
|
|
34
|
+
eagerTasks: boolean;
|
|
35
|
+
vendorSeparatedRoles: VendorSeparationWorkerRole[];
|
|
36
|
+
/** Vendor-separated workers that an explicit `task.eager false` keeps unused. */
|
|
37
|
+
suppressedByExplicitSetting: boolean;
|
|
38
|
+
}
|
|
39
|
+
export declare function resolveEagerTaskDelegation(input: EagerTaskDelegationInput): EagerTaskDelegation;
|