@gajae-code/coding-agent 0.11.0 → 0.11.2
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 +63 -1
- package/dist/types/async/job-manager.d.ts +46 -7
- package/dist/types/cli/config-cli.d.ts +11 -1
- package/dist/types/cli/notify-cli.d.ts +1 -0
- package/dist/types/cli/session-picker.d.ts +2 -1
- package/dist/types/cli/setup-cli.d.ts +1 -1
- package/dist/types/commands/mcp-serve.d.ts +33 -0
- package/dist/types/commands/mcp.d.ts +1 -1
- package/dist/types/commands/notify.d.ts +0 -2
- package/dist/types/commands/sdk.d.ts +1 -1
- package/dist/types/config/atomic-yaml-patch.d.ts +18 -0
- package/dist/types/config/file-lock.d.ts +14 -4
- package/dist/types/config/keybindings.d.ts +42 -1
- package/dist/types/config/model-auth.d.ts +3 -0
- package/dist/types/config/model-bindings-applier.d.ts +13 -0
- package/dist/types/config/model-discovery-manager.d.ts +49 -0
- package/dist/types/config/model-equivalence.d.ts +20 -0
- package/dist/types/config/model-registry.d.ts +16 -15
- package/dist/types/config/model-resolver.d.ts +28 -18
- package/dist/types/config/models-config-schema.d.ts +11 -0
- package/dist/types/config/settings-schema.d.ts +56 -1
- package/dist/types/config/settings.d.ts +14 -11
- package/dist/types/coordinator-mcp/policy.d.ts +5 -0
- package/dist/types/coordinator-mcp/question-gate-codec.d.ts +129 -0
- package/dist/types/coordinator-mcp/question-state.d.ts +356 -0
- package/dist/types/coordinator-mcp/server.d.ts +4 -0
- package/dist/types/discovery/helpers.d.ts +0 -6
- package/dist/types/edit/index.d.ts +3 -0
- package/dist/types/eval/py/env.d.ts +9 -0
- package/dist/types/extensibility/extensions/loader.d.ts +2 -1
- package/dist/types/extensibility/extensions/runner.d.ts +2 -2
- package/dist/types/extensibility/extensions/types.d.ts +34 -3
- package/dist/types/extensibility/hooks/runner.d.ts +1 -1
- package/dist/types/extensibility/shared-events.d.ts +2 -0
- package/dist/types/gjc-runtime/deep-interview-recorder.d.ts +10 -1
- package/dist/types/gjc-runtime/deep-interview-state.d.ts +44 -0
- package/dist/types/gjc-runtime/goal-mode-request.d.ts +11 -1
- package/dist/types/gjc-runtime/launch-worktree.d.ts +4 -2
- package/dist/types/gjc-runtime/linux-proc.d.ts +29 -0
- package/dist/types/gjc-runtime/session-resolution.d.ts +2 -2
- package/dist/types/gjc-runtime/state-migrations.d.ts +1 -1
- package/dist/types/gjc-runtime/state-writer.d.ts +2 -1
- package/dist/types/gjc-runtime/team-launch.d.ts +59 -0
- package/dist/types/gjc-runtime/team-notify.d.ts +45 -0
- package/dist/types/gjc-runtime/team-runtime.d.ts +29 -121
- package/dist/types/gjc-runtime/team-store.d.ts +160 -0
- package/dist/types/gjc-runtime/team-workers.d.ts +78 -0
- package/dist/types/gjc-runtime/tmux-owner-isolation.d.ts +8 -0
- package/dist/types/gjc-runtime/ultragoal-change-set.d.ts +13 -0
- package/dist/types/gjc-runtime/ultragoal-evidence.d.ts +38 -0
- package/dist/types/gjc-runtime/ultragoal-guard.d.ts +7 -0
- package/dist/types/gjc-runtime/ultragoal-pipeline.d.ts +23 -0
- package/dist/types/gjc-runtime/ultragoal-receipt-freshness.d.ts +11 -0
- package/dist/types/gjc-runtime/ultragoal-runtime.d.ts +55 -33
- package/dist/types/gjc-runtime/workflow-cli-common.d.ts +8 -0
- package/dist/types/gjc-runtime/workflow-manifest.d.ts +3 -0
- package/dist/types/goals/continuation-timeout-guard.d.ts +22 -0
- package/dist/types/goals/runtime.d.ts +1 -0
- package/dist/types/goals/state.d.ts +8 -0
- package/dist/types/harness-control-plane/lifecycle-reconciliation.d.ts +17 -0
- package/dist/types/harness-control-plane/phase-rollup.d.ts +4 -7
- package/dist/types/harness-control-plane/receipt-ingest.d.ts +5 -0
- package/dist/types/harness-control-plane/receipt-spool.d.ts +4 -0
- package/dist/types/hindsight/state.d.ts +11 -4
- package/dist/types/lsp/lspmux.d.ts +5 -3
- package/dist/types/lsp/path-trust.d.ts +1 -0
- package/dist/types/main.d.ts +3 -2
- package/dist/types/memories/storage.d.ts +1 -0
- package/dist/types/modes/action-registry.d.ts +29 -0
- package/dist/types/modes/components/chrome.d.ts +14 -0
- package/dist/types/modes/components/command-palette.d.ts +27 -0
- package/dist/types/modes/components/custom-provider-wizard.d.ts +1 -0
- package/dist/types/modes/components/index.d.ts +2 -1
- package/dist/types/modes/components/pet-selector.d.ts +1 -1
- package/dist/types/modes/components/plan-preview-overlay.d.ts +43 -0
- package/dist/types/modes/components/queue-mode-selector.d.ts +1 -1
- package/dist/types/modes/components/queue-pane.d.ts +12 -0
- package/dist/types/modes/components/read-tool-group.d.ts +6 -0
- package/dist/types/modes/components/session-observer-overlay.d.ts +3 -4
- package/dist/types/modes/components/sessions-dashboard.d.ts +32 -0
- package/dist/types/modes/components/settings-selector.d.ts +1 -1
- package/dist/types/modes/components/show-images-selector.d.ts +1 -1
- package/dist/types/modes/components/status-line/types.d.ts +1 -1
- package/dist/types/modes/components/status-line.d.ts +1 -94
- package/dist/types/modes/components/tasks-pane.d.ts +15 -0
- package/dist/types/modes/components/theme-selector.d.ts +1 -1
- package/dist/types/modes/components/tool-execution.d.ts +15 -0
- package/dist/types/modes/components/tool-status-header.d.ts +111 -0
- package/dist/types/modes/components/transcript-viewer-overlay.d.ts +42 -0
- package/dist/types/modes/controllers/command-controller.d.ts +2 -2
- package/dist/types/modes/controllers/extension-ui-controller.d.ts +1 -0
- package/dist/types/modes/controllers/goal-mode-controller.d.ts +62 -0
- package/dist/types/modes/controllers/input-controller.d.ts +8 -1
- package/dist/types/modes/controllers/mode-gate.d.ts +8 -0
- package/dist/types/modes/controllers/plan-mode-controller.d.ts +65 -0
- package/dist/types/modes/controllers/selector-controller.d.ts +15 -3
- package/dist/types/modes/controllers/stt-controller.d.ts +26 -0
- package/dist/types/modes/interactive-mode.d.ts +21 -19
- package/dist/types/modes/jobs-observer.d.ts +2 -0
- package/dist/types/modes/shared/agent-wire/deep-interview-gate.d.ts +4 -11
- package/dist/types/modes/shared/agent-wire/workflow-gate-broker.d.ts +21 -2
- package/dist/types/modes/shared/agent-wire/workflow-gate-types.d.ts +31 -0
- package/dist/types/modes/tasks-aggregator.d.ts +39 -0
- package/dist/types/modes/transcript-item-registry.d.ts +60 -0
- package/dist/types/modes/types.d.ts +22 -15
- package/dist/types/modes/utils/ui-helpers.d.ts +2 -2
- package/dist/types/runtime-mcp/manager.d.ts +1 -1
- package/dist/types/sdk/broker/broker.d.ts +78 -12
- package/dist/types/sdk/broker/ensure.d.ts +9 -0
- package/dist/types/sdk/broker/lifecycle-codec.d.ts +4 -0
- package/dist/types/sdk/broker/lifecycle-ledger.d.ts +15 -1
- package/dist/types/sdk/broker/lifecycle.d.ts +6 -2
- package/dist/types/sdk/broker/process-incarnation.d.ts +2 -0
- package/dist/types/sdk/broker/session-index.d.ts +0 -1
- package/dist/types/sdk/broker/state-version.d.ts +2 -0
- package/dist/types/sdk/bus/chat-effect-journal.d.ts +1 -0
- package/dist/types/sdk/bus/config-commands.d.ts +1 -1
- package/dist/types/sdk/bus/config.d.ts +11 -0
- package/dist/types/sdk/bus/daemon-paths.d.ts +1 -0
- package/dist/types/sdk/bus/discord-daemon.d.ts +5 -0
- package/dist/types/sdk/bus/html-format.d.ts +3 -2
- package/dist/types/sdk/bus/index.d.ts +27 -0
- package/dist/types/sdk/bus/lifecycle-control-runtime.d.ts +4 -0
- package/dist/types/sdk/bus/notification-service.d.ts +20 -0
- package/dist/types/sdk/bus/rate-limit-pool.d.ts +13 -2
- package/dist/types/sdk/bus/recent-activity.d.ts +21 -12
- package/dist/types/sdk/bus/rich-document.d.ts +7 -0
- package/dist/types/sdk/bus/rich-render.d.ts +18 -41
- package/dist/types/sdk/bus/telegram-daemon-contract.d.ts +9 -4
- package/dist/types/sdk/bus/telegram-daemon.d.ts +69 -3
- package/dist/types/sdk/bus/threaded-inbound.d.ts +1 -1
- package/dist/types/sdk/bus/threaded-render.d.ts +13 -0
- package/dist/types/sdk/bus/topic-registry.d.ts +24 -2
- package/dist/types/sdk/host/control/operations.d.ts +1 -1
- package/dist/types/sdk/host/host.d.ts +2 -0
- package/dist/types/sdk/index.d.ts +1 -0
- package/dist/types/sdk/session-directory.d.ts +56 -0
- package/dist/types/session/agent-session.d.ts +82 -47
- package/dist/types/session/agent-storage.d.ts +7 -0
- package/dist/types/session/fallback-chain-controller.d.ts +10 -2
- package/dist/types/session/internal/managed-session-scope.d.ts +102 -0
- package/dist/types/session/internal/managed-session-storage.d.ts +38 -0
- package/dist/types/session/messages.d.ts +16 -0
- package/dist/types/session/session-manager-internal.d.ts +14 -0
- package/dist/types/session/session-manager.d.ts +82 -12
- package/dist/types/session/session-storage.d.ts +43 -3
- package/dist/types/session/volatile-context-pruning.d.ts +15 -0
- package/dist/types/skill-state/{deep-interview-mutation-guard.d.ts → workflow-mutation-guard.d.ts} +24 -8
- package/dist/types/skill-state/workflow-state-contract.d.ts +1 -3
- package/dist/types/slash-commands/builtin-registry.d.ts +4 -1
- package/dist/types/system-prompt.d.ts +2 -11
- package/dist/types/task/executor.d.ts +3 -1
- package/dist/types/thinking.d.ts +7 -0
- package/dist/types/tool-discovery/tool-index.d.ts +1 -50
- package/dist/types/tools/ask.d.ts +64 -2
- package/dist/types/tools/bash.d.ts +3 -0
- package/dist/types/tools/browser/dead-tab-recovery.d.ts +24 -0
- package/dist/types/tools/browser/tab-supervisor.d.ts +21 -0
- package/dist/types/tools/cron.d.ts +2 -0
- package/dist/types/tools/fetch.d.ts +1 -0
- package/dist/types/tools/index.d.ts +30 -15
- package/dist/types/tools/output-meta.d.ts +1 -0
- package/dist/types/tools/read.d.ts +3 -0
- package/dist/types/tools/search-tool-bm25.d.ts +3 -4
- package/dist/types/tools/subagent-render.d.ts +1 -0
- package/dist/types/tools/subagent.d.ts +6 -1
- package/dist/types/utils/event-bus.d.ts +1 -1
- package/dist/types/web/search/index.d.ts +3 -1
- package/package.json +21 -9
- package/scripts/build-sdk-package-smoke.ts +39 -1
- package/scripts/generate-hotkeys-docs.ts +74 -0
- package/scripts/generate-sdk-operation-inventory.ts +64 -20
- package/scripts/verify-gjc-sdk-canonicalization.ts +182 -2
- package/src/async/job-manager.ts +455 -69
- package/src/cli/config-cli.ts +75 -2
- package/src/cli/notify-cli.ts +92 -26
- package/src/cli/session-picker.ts +20 -3
- package/src/cli/setup-cli.ts +1 -1
- package/src/cli.ts +1 -1
- package/src/commands/config.ts +1 -1
- package/src/commands/harness.ts +34 -106
- package/src/commands/launch.ts +6 -4
- package/src/commands/mcp-serve.ts +85 -8
- package/src/commands/mcp.ts +2 -2
- package/src/commands/notify.ts +8 -4
- package/src/commands/sdk.ts +61 -40
- package/src/commands/ultragoal.ts +4 -1
- package/src/config/atomic-yaml-patch.ts +80 -13
- package/src/config/file-lock.ts +105 -43
- package/src/config/keybindings.ts +64 -20
- package/src/config/model-auth.ts +9 -0
- package/src/config/model-bindings-applier.ts +139 -0
- package/src/config/model-discovery-manager.ts +224 -0
- package/src/config/model-equivalence.ts +66 -0
- package/src/config/model-registry.ts +169 -302
- package/src/config/model-resolver.ts +361 -369
- package/src/config/models-config-schema.ts +5 -4
- package/src/config/settings-schema.ts +159 -2
- package/src/config/settings.ts +458 -482
- package/src/coordinator-mcp/policy.ts +76 -11
- package/src/coordinator-mcp/question-gate-codec.ts +274 -0
- package/src/coordinator-mcp/question-state.ts +778 -0
- package/src/coordinator-mcp/server.ts +1702 -238
- package/src/debug/index.ts +1 -1
- package/src/defaults/gjc/skills/deep-interview/SKILL.md +13 -1
- package/src/defaults/gjc/skills/team/SKILL.md +16 -0
- package/src/discovery/helpers.ts +1 -50
- package/src/edit/index.ts +64 -0
- package/src/eval/py/env.ts +26 -0
- package/src/eval/py/kernel.ts +5 -3
- package/src/extensibility/extensions/loader.ts +9 -1
- package/src/extensibility/extensions/runner.ts +12 -3
- package/src/extensibility/extensions/types.ts +39 -1
- package/src/extensibility/gjc-plugins/installer.ts +16 -16
- package/src/extensibility/hooks/runner.ts +2 -2
- package/src/extensibility/runtime-skill-discovery.ts +33 -13
- package/src/extensibility/shared-events.ts +2 -0
- package/src/gjc-runtime/deep-interview-recorder.ts +63 -3
- package/src/gjc-runtime/deep-interview-runtime.ts +76 -27
- package/src/gjc-runtime/deep-interview-state.ts +317 -5
- package/src/gjc-runtime/goal-mode-request.ts +55 -8
- package/src/gjc-runtime/launch-tmux.ts +2 -5
- package/src/gjc-runtime/launch-worktree.ts +5 -5
- package/src/gjc-runtime/linux-proc.ts +71 -0
- package/src/gjc-runtime/ralplan-runtime.ts +74 -90
- package/src/gjc-runtime/session-resolution.ts +18 -3
- package/src/gjc-runtime/session-state-sidecar.ts +6 -107
- package/src/gjc-runtime/state-migrations.ts +1 -1
- package/src/gjc-runtime/state-runtime.ts +320 -249
- package/src/gjc-runtime/state-writer.ts +36 -40
- package/src/gjc-runtime/team-launch.ts +319 -0
- package/src/gjc-runtime/team-notify.ts +326 -0
- package/src/gjc-runtime/team-runtime.ts +1099 -1482
- package/src/gjc-runtime/team-store.ts +828 -0
- package/src/gjc-runtime/team-workers.ts +962 -0
- package/src/gjc-runtime/tmux-owner-isolation-cli.ts +2 -11
- package/src/gjc-runtime/tmux-owner-isolation.ts +14 -9
- package/src/gjc-runtime/tmux-sessions.ts +4 -21
- package/src/gjc-runtime/ultragoal-change-set.ts +172 -0
- package/src/gjc-runtime/ultragoal-evidence.ts +874 -0
- package/src/gjc-runtime/ultragoal-guard.ts +83 -12
- package/src/gjc-runtime/ultragoal-pipeline.ts +306 -0
- package/src/gjc-runtime/ultragoal-receipt-freshness.ts +102 -1
- package/src/gjc-runtime/ultragoal-runtime.ts +156 -1319
- package/src/gjc-runtime/workflow-cli-common.ts +30 -0
- package/src/gjc-runtime/workflow-manifest.generated.json +58 -0
- package/src/gjc-runtime/workflow-manifest.ts +18 -0
- package/src/goals/continuation-timeout-guard.ts +79 -0
- package/src/goals/runtime.ts +7 -5
- package/src/goals/state.ts +18 -0
- package/src/harness-control-plane/lifecycle-reconciliation.ts +64 -0
- package/src/harness-control-plane/phase-rollup.ts +4 -7
- package/src/harness-control-plane/receipt-ingest.ts +5 -0
- package/src/harness-control-plane/receipt-spool.ts +51 -7
- package/src/harness-control-plane/session-lease.ts +12 -130
- package/src/hindsight/backend.ts +26 -27
- package/src/hindsight/state.ts +101 -32
- package/src/hooks/skill-state.ts +17 -11
- package/src/internal-urls/docs-index.generated.ts +21 -18
- package/src/lsp/client.ts +1 -1
- package/src/lsp/config.ts +145 -26
- package/src/lsp/index.ts +1 -1
- package/src/lsp/lspmux.ts +39 -10
- package/src/lsp/path-trust.ts +81 -0
- package/src/main.ts +28 -8
- package/src/memories/index.ts +1 -0
- package/src/memories/storage.ts +6 -2
- package/src/modes/action-registry.ts +165 -0
- package/src/modes/components/chrome.ts +40 -0
- package/src/modes/components/command-palette.ts +168 -0
- package/src/modes/components/custom-editor.ts +1 -1
- package/src/modes/components/custom-provider-wizard.ts +51 -14
- package/src/modes/components/index.ts +2 -1
- package/src/modes/components/pet-selector.ts +11 -17
- package/src/modes/components/plan-preview-overlay.ts +295 -0
- package/src/modes/components/queue-mode-selector.ts +10 -27
- package/src/modes/components/queue-pane.ts +79 -0
- package/src/modes/components/read-tool-group.ts +13 -0
- package/src/modes/components/session-observer-overlay.ts +207 -772
- package/src/modes/components/sessions-dashboard.ts +181 -0
- package/src/modes/components/settings-selector.ts +1 -1
- package/src/modes/components/show-images-selector.ts +10 -24
- package/src/modes/components/status-line/types.ts +1 -1
- package/src/modes/components/status-line.ts +1 -969
- package/src/modes/components/tasks-pane.ts +73 -0
- package/src/modes/components/theme-selector.ts +11 -31
- package/src/modes/components/tool-execution.ts +22 -0
- package/src/modes/components/tool-status-header.ts +1056 -0
- package/src/modes/components/transcript-viewer-overlay.ts +384 -0
- package/src/modes/controllers/btw-controller.ts +1 -0
- package/src/modes/controllers/command-controller.ts +9 -15
- package/src/modes/controllers/event-controller.ts +3 -2
- package/src/modes/controllers/extension-ui-controller.ts +72 -25
- package/src/modes/controllers/goal-mode-controller.ts +474 -0
- package/src/modes/controllers/input-controller.ts +764 -229
- package/src/modes/controllers/mode-gate.ts +24 -0
- package/src/modes/controllers/plan-mode-controller.ts +517 -0
- package/src/modes/controllers/selector-controller.ts +225 -10
- package/src/modes/controllers/stt-controller.ts +125 -0
- package/src/modes/interactive-mode.ts +302 -1151
- package/src/modes/jobs-observer.ts +3 -0
- package/src/modes/runtime-init.ts +8 -0
- package/src/modes/shared/agent-wire/deep-interview-gate.ts +31 -106
- package/src/modes/shared/agent-wire/workflow-gate-broker.ts +78 -19
- package/src/modes/shared/agent-wire/workflow-gate-types.ts +177 -0
- package/src/modes/tasks-aggregator.ts +199 -0
- package/src/modes/transcript-item-registry.ts +229 -0
- package/src/modes/types.ts +47 -20
- package/src/modes/utils/ui-helpers.ts +17 -9
- package/src/prompts/agent-fragments/ralplan-persistence.md +6 -0
- package/src/prompts/agent-fragments/restricted-bash.md +1 -0
- package/src/prompts/agents/architect.md +2 -8
- package/src/prompts/agents/critic.md +2 -8
- package/src/prompts/agents/executor.md +3 -0
- package/src/prompts/agents/planner.md +4 -12
- package/src/prompts/system/custom-system-prompt.md +1 -23
- package/src/prompts/system/plan-mode-approved.md +8 -0
- package/src/prompts/system/system-prompt.md +17 -96
- package/src/prompts/tools/bash.md +4 -4
- package/src/prompts/tools/browser.md +15 -52
- package/src/prompts/tools/find.md +2 -2
- package/src/prompts/tools/hashline.md +13 -55
- package/src/prompts/tools/read.md +3 -6
- package/src/prompts/tools/search-tool-bm25.md +0 -2
- package/src/prompts/tools/search.md +2 -4
- package/src/prompts/tools/skill-discovery.md +1 -2
- package/src/prompts/tools/task.md +1 -1
- package/src/runtime-mcp/manager.ts +1 -1
- package/src/sdk/broker/broker.ts +206 -78
- package/src/sdk/broker/discovery.ts +21 -2
- package/src/sdk/broker/ensure.ts +85 -25
- package/src/sdk/broker/lifecycle-codec.ts +11 -0
- package/src/sdk/broker/lifecycle-ledger.ts +371 -74
- package/src/sdk/broker/lifecycle.ts +1399 -142
- package/src/sdk/broker/process-incarnation.ts +5 -13
- package/src/sdk/broker/session-index.ts +145 -56
- package/src/sdk/broker/state-version.ts +21 -0
- package/src/sdk/broker/transport.ts +1 -1
- package/src/sdk/bus/chat-daemon-cli.ts +2 -0
- package/src/sdk/bus/chat-daemon-control.ts +8 -28
- package/src/sdk/bus/chat-effect-journal.ts +14 -4
- package/src/sdk/bus/config-commands.ts +5 -4
- package/src/sdk/bus/config.ts +98 -0
- package/src/sdk/bus/conversation-store.ts +5 -29
- package/src/sdk/bus/daemon-paths.ts +2 -0
- package/src/sdk/bus/discord-daemon.ts +25 -8
- package/src/sdk/bus/html-format.ts +20 -3
- package/src/sdk/bus/index.ts +834 -113
- package/src/sdk/bus/lifecycle-control-runtime.ts +91 -33
- package/src/sdk/bus/native-runtime-compatibility.ts +1 -1
- package/src/sdk/bus/natives-augment.d.ts +26 -1
- package/src/sdk/bus/notification-service.ts +168 -20
- package/src/sdk/bus/rate-limit-pool.ts +58 -14
- package/src/sdk/bus/recent-activity.ts +188 -74
- package/src/sdk/bus/rich-document.ts +258 -0
- package/src/sdk/bus/rich-render.ts +62 -70
- package/src/sdk/bus/telegram-daemon-cli.ts +15 -59
- package/src/sdk/bus/telegram-daemon-contract.ts +9 -4
- package/src/sdk/bus/telegram-daemon.ts +1491 -247
- package/src/sdk/bus/threaded-inbound.ts +8 -3
- package/src/sdk/bus/threaded-render.ts +57 -1
- package/src/sdk/bus/topic-registry.ts +120 -13
- package/src/sdk/host/control/dispatch.ts +14 -2
- package/src/sdk/host/control/operations.ts +6 -1
- package/src/sdk/host/host.ts +31 -1
- package/src/sdk/host/query/handlers.ts +20 -22
- package/src/sdk/host/query/revision-store.ts +80 -57
- package/src/sdk/index.ts +1 -0
- package/src/sdk/protocol/operation-inventory.generated.json +943 -1907
- package/src/sdk/session-directory.ts +141 -0
- package/src/sdk/session.ts +458 -479
- package/src/session/agent-session.ts +1901 -637
- package/src/session/agent-storage.ts +18 -0
- package/src/session/cache-economics.ts +25 -8
- package/src/session/fallback-chain-controller.ts +53 -3
- package/src/session/internal/managed-session-scope.ts +2226 -0
- package/src/session/internal/managed-session-storage.ts +453 -0
- package/src/session/messages.ts +91 -2
- package/src/session/session-manager-internal.ts +33 -0
- package/src/session/session-manager.ts +1112 -333
- package/src/session/session-storage.ts +444 -39
- package/src/session/volatile-context-pruning.ts +78 -0
- package/src/setup/credential-auto-import.ts +2 -1
- package/src/setup/hermes/templates/operator-instructions.v1.md +1 -1
- package/src/setup/provider-onboarding.ts +36 -61
- package/src/setup/provider-presets.json +5 -0
- package/src/skill-state/active-state.ts +3 -13
- package/src/skill-state/{deep-interview-mutation-guard.ts → workflow-mutation-guard.ts} +47 -29
- package/src/skill-state/workflow-state-contract.ts +6 -41
- package/src/slash-commands/builtin-registry.ts +46 -11
- package/src/system-prompt.ts +37 -44
- package/src/task/agents.ts +19 -1
- package/src/task/executor.ts +90 -6
- package/src/task/index.ts +62 -37
- package/src/thinking.ts +21 -6
- package/src/tool-discovery/tool-index.ts +2 -134
- package/src/tools/ask.ts +157 -21
- package/src/tools/ast-edit.ts +1 -1
- package/src/tools/bash.ts +38 -0
- package/src/tools/browser/dead-tab-recovery.ts +78 -0
- package/src/tools/browser/tab-supervisor.ts +282 -36
- package/src/tools/computer.ts +10 -3
- package/src/tools/cron.ts +30 -16
- package/src/tools/eval.ts +1 -2
- package/src/tools/fetch.ts +11 -4
- package/src/tools/index.ts +76 -24
- package/src/tools/output-meta.ts +13 -5
- package/src/tools/read.ts +37 -1
- package/src/tools/resource-gc.ts +2 -2
- package/src/tools/search-tool-bm25.ts +11 -74
- package/src/tools/subagent-render.ts +19 -8
- package/src/tools/subagent.ts +84 -32
- package/src/utils/event-bus.ts +9 -4
- package/src/web/search/index.ts +3 -3
- package/dist/types/discovery/plugin-dir-roots.d.ts +0 -15
- package/dist/types/runtime-mcp/discoverable-tool-metadata.d.ts +0 -7
- package/src/discovery/plugin-dir-roots.ts +0 -28
- package/src/runtime-mcp/discoverable-tool-metadata.ts +0 -25
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { CompactionOutcome } from "@gajae-code/agent-core/compaction";
|
|
2
|
+
import { Container, type KeyId } from "@gajae-code/tui";
|
|
3
|
+
import { type PlanApprovalDetails } from "../../plan-mode/approved-plan";
|
|
4
|
+
import type { AgentSession } from "../../session/agent-session";
|
|
5
|
+
import type { SessionContext, SessionManager } from "../../session/session-manager";
|
|
6
|
+
import { type PlanPreviewOptions, type PlanPreviewResult } from "../components/plan-preview-overlay";
|
|
7
|
+
import type { SubmittedUserInput } from "../types";
|
|
8
|
+
import type { ModeGate } from "./mode-gate";
|
|
9
|
+
type PlanModeControllerContext = {
|
|
10
|
+
readonly session: AgentSession;
|
|
11
|
+
readonly sessionManager: SessionManager;
|
|
12
|
+
readonly modeGate: ModeGate;
|
|
13
|
+
readonly chatContainer: Container;
|
|
14
|
+
readonly inputCallback: ((input: SubmittedUserInput) => void) | undefined;
|
|
15
|
+
readonly externalEditorKey: string | undefined;
|
|
16
|
+
readonly externalEditorKeys: readonly KeyId[];
|
|
17
|
+
startPendingSubmission(input: {
|
|
18
|
+
text: string;
|
|
19
|
+
}): SubmittedUserInput;
|
|
20
|
+
addChatChild(child: Container): void;
|
|
21
|
+
requestRender(full?: boolean): void;
|
|
22
|
+
stopUi(): void;
|
|
23
|
+
startUi(): void;
|
|
24
|
+
showStatus(message: string): void;
|
|
25
|
+
showWarning(message: string): void;
|
|
26
|
+
showError(message: string): void;
|
|
27
|
+
showHookConfirm(title: string, message: string): Promise<boolean>;
|
|
28
|
+
showPlanPreview(content: string | null, options?: PlanPreviewOptions): Promise<PlanPreviewResult>;
|
|
29
|
+
flushCompactionQueue(options?: {
|
|
30
|
+
willRetry?: boolean;
|
|
31
|
+
}): Promise<void>;
|
|
32
|
+
updatePlanModeStatus(status: {
|
|
33
|
+
enabled: boolean;
|
|
34
|
+
paused: boolean;
|
|
35
|
+
} | undefined): void;
|
|
36
|
+
handleClearCommand(): Promise<boolean>;
|
|
37
|
+
handleCompactCommand(instructions?: string): Promise<CompactionOutcome>;
|
|
38
|
+
updateEditorChrome(): void;
|
|
39
|
+
};
|
|
40
|
+
/** Owns plan-mode state, model scope, plan review, approval, and restoration. */
|
|
41
|
+
export declare class PlanModeController {
|
|
42
|
+
#private;
|
|
43
|
+
private readonly ctx;
|
|
44
|
+
constructor(ctx: PlanModeControllerContext);
|
|
45
|
+
get enabled(): boolean;
|
|
46
|
+
get paused(): boolean;
|
|
47
|
+
get planFilePath(): string | undefined;
|
|
48
|
+
setEnabledForCompatibility(enabled: boolean): void;
|
|
49
|
+
setPausedForCompatibility(paused: boolean): void;
|
|
50
|
+
setPlanFilePathForCompatibility(planFilePath: string | undefined): void;
|
|
51
|
+
clearReview(): void;
|
|
52
|
+
restoreFromSession(sessionContext: SessionContext): Promise<void>;
|
|
53
|
+
enter(options?: {
|
|
54
|
+
planFilePath?: string;
|
|
55
|
+
workflow?: "parallel" | "iterative";
|
|
56
|
+
}): Promise<void>;
|
|
57
|
+
exit(options?: {
|
|
58
|
+
silent?: boolean;
|
|
59
|
+
paused?: boolean;
|
|
60
|
+
}): Promise<void>;
|
|
61
|
+
flushPendingModelSwitch(): Promise<void>;
|
|
62
|
+
handleCommand(initialPrompt?: string): Promise<void>;
|
|
63
|
+
handleApproval(details: PlanApprovalDetails): Promise<void>;
|
|
64
|
+
}
|
|
65
|
+
export {};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Component } from "@gajae-code/tui";
|
|
1
|
+
import type { Component, SlashCommand } from "@gajae-code/tui";
|
|
2
2
|
import type { ModelProfileConfig } from "../../config/models-config-schema";
|
|
3
3
|
import { type Settings } from "../../config/settings";
|
|
4
4
|
import type { InteractiveModeContext, OAuthSelectorOptions } from "../../modes/types";
|
|
@@ -8,10 +8,14 @@ import { buildNotificationStatusReport, checkNotificationHealth, recoverNotifica
|
|
|
8
8
|
import { ensureTelegramDaemonRunningDetailed, unregisterNotificationRoot } from "../../sdk/bus/telegram-daemon";
|
|
9
9
|
import { runTelegramSetup } from "../../sdk/bus/telegram-setup";
|
|
10
10
|
import { type CredentialAutoImportStateStore } from "../../setup/credential-auto-import";
|
|
11
|
+
import { type CommandPaletteAction } from "../components/command-palette";
|
|
11
12
|
import type { NotificationsEditorOperations } from "../components/notifications-settings-editor";
|
|
12
|
-
import type
|
|
13
|
+
import { type PlanPreviewOptions, type PlanPreviewResult } from "../components/plan-preview-overlay";
|
|
14
|
+
import type { StatusLineSettings } from "../components/tool-status-header";
|
|
13
15
|
import type { JobsObserver } from "../jobs-observer";
|
|
14
16
|
import type { SessionObserverRegistry } from "../session-observer-registry";
|
|
17
|
+
import type { TasksAggregator } from "../tasks-aggregator";
|
|
18
|
+
import type { TranscriptItemRegistry } from "../transcript-item-registry";
|
|
15
19
|
/**
|
|
16
20
|
* Snapshot the persisted status-line settings that the status-line component
|
|
17
21
|
* cares about. Preview, cancel-restore, and commit paths all share this so the
|
|
@@ -48,7 +52,10 @@ export declare function createNotificationsEditorOperations(ctx: NotificationsEd
|
|
|
48
52
|
export declare class SelectorController {
|
|
49
53
|
#private;
|
|
50
54
|
private ctx;
|
|
51
|
-
|
|
55
|
+
private readonly clipboard;
|
|
56
|
+
constructor(ctx: InteractiveModeContext, credentialAutoImportStateStore?: CredentialAutoImportStateStore, clipboard?: (text: string) => void);
|
|
57
|
+
isTranscriptViewerOpen(): boolean;
|
|
58
|
+
refreshTranscriptViewer(identityMap?: ReadonlyMap<string, string>): void;
|
|
52
59
|
/**
|
|
53
60
|
* Shows a selector component in place of the editor.
|
|
54
61
|
* @param create Factory that receives a `done` callback and returns the component and focus target
|
|
@@ -57,6 +64,7 @@ export declare class SelectorController {
|
|
|
57
64
|
component: Component;
|
|
58
65
|
focus: Component;
|
|
59
66
|
}): void;
|
|
67
|
+
showCommandPalette(commands: SlashCommand[], actions: CommandPaletteAction[], executeSlashCommand: (name: string) => Promise<void>): void;
|
|
60
68
|
showProviderOnboarding(): void;
|
|
61
69
|
showCustomModelPresetWizard(snapshot: ModelProfileConfig): void;
|
|
62
70
|
showCustomProviderWizard(): void;
|
|
@@ -92,6 +100,9 @@ export declare class SelectorController {
|
|
|
92
100
|
showOAuthSelector(mode: "login" | "logout", providerId?: string, options?: OAuthSelectorOptions): Promise<void>;
|
|
93
101
|
showDebugSelector(): void;
|
|
94
102
|
showSessionObserver(registry: SessionObserverRegistry): void;
|
|
103
|
+
showSessionsDashboard(): Promise<void>;
|
|
104
|
+
showTranscriptViewer(registry: TranscriptItemRegistry): void;
|
|
105
|
+
showPlanPreview(content: string | null, options?: PlanPreviewOptions): Promise<PlanPreviewResult>;
|
|
95
106
|
/**
|
|
96
107
|
* Jobs overlay: navigate ongoing monitor + cron jobs (Monitors then Crons,
|
|
97
108
|
* newest-first), drill into per-type detail, and cancel/delete with a y/N
|
|
@@ -99,4 +110,5 @@ export declare class SelectorController {
|
|
|
99
110
|
* stays on the active SelectList.
|
|
100
111
|
*/
|
|
101
112
|
showJobsOverlay(observer: JobsObserver): void;
|
|
113
|
+
showTasksPane(aggregator: TasksAggregator): void;
|
|
102
114
|
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
interface SttEditor {
|
|
2
|
+
cursorOverride: string | undefined;
|
|
3
|
+
cursorOverrideWidth: number | undefined;
|
|
4
|
+
getUseTerminalCursor(): boolean;
|
|
5
|
+
insertText(text: string): void;
|
|
6
|
+
setUseTerminalCursor(enabled: boolean): void;
|
|
7
|
+
}
|
|
8
|
+
interface SttUi {
|
|
9
|
+
getShowHardwareCursor(): boolean;
|
|
10
|
+
requestRender(): void;
|
|
11
|
+
setShowHardwareCursor(enabled: boolean): void;
|
|
12
|
+
}
|
|
13
|
+
export interface SttModeContext {
|
|
14
|
+
editor: SttEditor;
|
|
15
|
+
showStatus(message: string): void;
|
|
16
|
+
showWarning(message: string): void;
|
|
17
|
+
ui: SttUi;
|
|
18
|
+
updateEditorChrome(): void;
|
|
19
|
+
}
|
|
20
|
+
/** Coordinates STT state with the interactive composer presentation. */
|
|
21
|
+
export declare class SttModeController {
|
|
22
|
+
#private;
|
|
23
|
+
toggle(ctx: SttModeContext): Promise<void>;
|
|
24
|
+
dispose(ctx: Pick<SttModeContext, "editor" | "ui">): void;
|
|
25
|
+
}
|
|
26
|
+
export {};
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import { type Agent, type AgentMessage } from "@gajae-code/agent-core";
|
|
2
2
|
import type { CompactionOutcome } from "@gajae-code/agent-core/compaction";
|
|
3
|
-
import {
|
|
4
|
-
import type { Component, EditorTheme } from "@gajae-code/tui";
|
|
3
|
+
import type { AssistantMessage, ImageContent, Message, UsageReport } from "@gajae-code/ai";
|
|
4
|
+
import type { Component, EditorTheme, SlashCommand } from "@gajae-code/tui";
|
|
5
5
|
import { Container, Loader, Spacer, Text, TUI } from "@gajae-code/tui";
|
|
6
6
|
import { KeybindingsManager } from "../config/keybindings";
|
|
7
7
|
import { type Settings } from "../config/settings";
|
|
8
8
|
import type { ExtensionUIContext, ExtensionUIDialogOptions, ExtensionWidgetContent, ExtensionWidgetOptions } from "../extensibility/extensions";
|
|
9
9
|
import type { CompactOptions } from "../extensibility/extensions/types";
|
|
10
10
|
import { type Skill } from "../extensibility/skills";
|
|
11
|
-
import { type PlanApprovalDetails } from "../plan-mode/approved-plan";
|
|
12
11
|
import type { NotificationSessionReconcileResult, NotificationSessionStatus } from "../sdk/bus/session-control";
|
|
13
12
|
import type { AgentSession, AgentSessionEvent } from "../session/agent-session";
|
|
14
13
|
import { HistoryStorage } from "../session/history-storage";
|
|
@@ -17,19 +16,22 @@ import type { LspStartupServerInfo } from "../tools";
|
|
|
17
16
|
import type { EventBus } from "../utils/event-bus";
|
|
18
17
|
import type { AssistantMessageComponent } from "./components/assistant-message";
|
|
19
18
|
import type { BashExecutionComponent } from "./components/bash-execution";
|
|
19
|
+
import type { CommandPaletteAction } from "./components/command-palette";
|
|
20
20
|
import { CustomEditor } from "./components/custom-editor";
|
|
21
21
|
import type { EvalExecutionComponent } from "./components/eval-execution";
|
|
22
22
|
import { GajaePetWidget, type PetMode } from "./components/gajae-pet-widget";
|
|
23
23
|
import type { HookEditorComponent } from "./components/hook-editor";
|
|
24
24
|
import type { HookInputComponent } from "./components/hook-input";
|
|
25
25
|
import type { HookSelectorComponent } from "./components/hook-selector";
|
|
26
|
-
import { StatusLineComponent } from "./components/status-line";
|
|
27
26
|
import type { ToolExecutionHandle } from "./components/tool-execution";
|
|
27
|
+
import { StatusLineComponent } from "./components/tool-status-header";
|
|
28
28
|
import { type WelcomeLogoMode } from "./components/welcome";
|
|
29
|
+
import { GoalModeController } from "./controllers/goal-mode-controller";
|
|
30
|
+
import { PlanModeController } from "./controllers/plan-mode-controller";
|
|
29
31
|
import { IrcObservationLedger } from "./irc-observation-ledger";
|
|
30
32
|
import { OAuthManualInputManager } from "./oauth-manual-input";
|
|
31
33
|
import type { Theme } from "./theme/theme";
|
|
32
|
-
import type
|
|
34
|
+
import { type CompactionQueuedMessage, type ComposerSubmissionOptions, type InteractiveModeContext, type IrcArrivalSnapshot, type SubmittedUserInput, type TodoItem, type TodoPhase, type TranscriptRebuildPolicy } from "./types";
|
|
33
35
|
import type { ParsedIrcMessage } from "./utils/irc-message";
|
|
34
36
|
export declare const DEFAULT_COMPOSER_PLACEHOLDER: string;
|
|
35
37
|
export declare function getWelcomeTranscriptReservedRows(chatContainer: Container, width: number): number;
|
|
@@ -76,11 +78,6 @@ export declare class InteractiveMode implements InteractiveModeContext {
|
|
|
76
78
|
isBashNoContext: boolean;
|
|
77
79
|
toolOutputExpanded: boolean;
|
|
78
80
|
todoExpanded: boolean;
|
|
79
|
-
planModeEnabled: boolean;
|
|
80
|
-
planModePaused: boolean;
|
|
81
|
-
goalModeEnabled: boolean;
|
|
82
|
-
goalModePaused: boolean;
|
|
83
|
-
planModePlanFilePath: string | undefined;
|
|
84
81
|
todoPhases: TodoPhase[];
|
|
85
82
|
hideThinkingBlock: boolean;
|
|
86
83
|
pendingImages: ImageContent[];
|
|
@@ -119,10 +116,14 @@ export declare class InteractiveMode implements InteractiveModeContext {
|
|
|
119
116
|
oauthManualInput: OAuthManualInputManager;
|
|
120
117
|
readonly lspServers: LspStartupServerInfo[] | undefined;
|
|
121
118
|
mcpManager?: import("../runtime-mcp").MCPManager;
|
|
119
|
+
/** Direct controller capabilities for consumers that coordinate mode transitions. */
|
|
120
|
+
get planModeController(): PlanModeController;
|
|
121
|
+
get goalModeController(): GoalModeController;
|
|
122
122
|
constructor(session: AgentSession, version: string, changelogMarkdown?: string | undefined, setToolUIContext?: (uiContext: ExtensionUIContext, hasUI: boolean) => void, lspServers?: LspStartupServerInfo[] | undefined, mcpManager?: import("../runtime-mcp").MCPManager, eventBus?: EventBus);
|
|
123
123
|
getCurrentSessionNotificationStatus(): NotificationSessionStatus | undefined;
|
|
124
124
|
setCurrentSessionNotificationsEnabled(enabled: boolean): Promise<NotificationSessionReconcileResult | undefined>;
|
|
125
125
|
init(): Promise<void>;
|
|
126
|
+
getSlashCommands(): readonly SlashCommand[];
|
|
126
127
|
/** Reload slash commands and autocomplete for the provided working directory. */
|
|
127
128
|
refreshSlashCommandState(cwd?: string): Promise<void>;
|
|
128
129
|
getUserInput(): Promise<SubmittedUserInput>;
|
|
@@ -135,7 +136,7 @@ export declare class InteractiveMode implements InteractiveModeContext {
|
|
|
135
136
|
images?: ImageContent[];
|
|
136
137
|
customType?: string;
|
|
137
138
|
display?: boolean;
|
|
138
|
-
}): SubmittedUserInput;
|
|
139
|
+
}, options?: ComposerSubmissionOptions): SubmittedUserInput;
|
|
139
140
|
cancelPendingSubmission(): boolean;
|
|
140
141
|
markPendingSubmissionStarted(input: SubmittedUserInput): boolean;
|
|
141
142
|
finishPendingSubmission(input: SubmittedUserInput): void;
|
|
@@ -147,11 +148,6 @@ export declare class InteractiveMode implements InteractiveModeContext {
|
|
|
147
148
|
commitPetPreviewMode(mode: PetMode): boolean;
|
|
148
149
|
restoreComposer(): void;
|
|
149
150
|
rebuildChatFromMessages(policy: TranscriptRebuildPolicy): void;
|
|
150
|
-
/** Apply any deferred model switch after the current stream ends. */
|
|
151
|
-
flushPendingModelSwitch(): Promise<void>;
|
|
152
|
-
handlePlanModeCommand(initialPrompt?: string): Promise<void>;
|
|
153
|
-
handleGoalModeCommand(rest?: string): Promise<void>;
|
|
154
|
-
handlePlanApproval(details: PlanApprovalDetails): Promise<void>;
|
|
155
151
|
stop(): void;
|
|
156
152
|
shutdown(): Promise<void>;
|
|
157
153
|
checkShutdownRequested(): Promise<void>;
|
|
@@ -171,7 +167,7 @@ export declare class InteractiveMode implements InteractiveModeContext {
|
|
|
171
167
|
showNewVersionNotification(newVersion: string): void;
|
|
172
168
|
clearEditor(): void;
|
|
173
169
|
updatePendingMessagesDisplay(): void;
|
|
174
|
-
queueCompactionMessage(text: string, mode: "steer" | "followUp"): void;
|
|
170
|
+
queueCompactionMessage(text: string, mode: "steer" | "followUp", options?: ComposerSubmissionOptions): void;
|
|
175
171
|
flushCompactionQueue(options?: {
|
|
176
172
|
willRetry?: boolean;
|
|
177
173
|
}): Promise<void>;
|
|
@@ -211,9 +207,9 @@ export declare class InteractiveMode implements InteractiveModeContext {
|
|
|
211
207
|
handleHelpCommand(): void;
|
|
212
208
|
handleToolsCommand(): void;
|
|
213
209
|
handleContextCommand(): void;
|
|
214
|
-
handleClearCommand(): Promise<
|
|
210
|
+
handleClearCommand(): Promise<boolean>;
|
|
215
211
|
handleContextClearCommand(): Promise<void>;
|
|
216
|
-
handleDropCommand(): Promise<
|
|
212
|
+
handleDropCommand(): Promise<boolean>;
|
|
217
213
|
handleForkCommand(): Promise<void>;
|
|
218
214
|
handleMoveCommand(targetPath: string): Promise<void>;
|
|
219
215
|
handleRenameCommand(title: string): Promise<void>;
|
|
@@ -221,7 +217,12 @@ export declare class InteractiveMode implements InteractiveModeContext {
|
|
|
221
217
|
handleSTTToggle(): Promise<void>;
|
|
222
218
|
showDebugSelector(): void;
|
|
223
219
|
showSessionObserver(): void;
|
|
220
|
+
showSessionsDashboard(): void;
|
|
221
|
+
isTranscriptViewerOpen(): boolean;
|
|
222
|
+
refreshTranscriptViewer(): void;
|
|
223
|
+
showTranscriptViewer(): void;
|
|
224
224
|
showJobsOverlay(): void;
|
|
225
|
+
showTasksPane(): void;
|
|
225
226
|
resetObserverRegistry(): void;
|
|
226
227
|
handleBashCommand(command: string, excludeFromContext?: boolean): Promise<void>;
|
|
227
228
|
handlePythonCommand(code: string, excludeFromContext?: boolean): Promise<void>;
|
|
@@ -232,6 +233,7 @@ export declare class InteractiveMode implements InteractiveModeContext {
|
|
|
232
233
|
handleContributionPrepCommand(customInstructions?: string): Promise<void>;
|
|
233
234
|
executeCompaction(customInstructionsOrOptions?: string | CompactOptions, isAuto?: boolean): Promise<CompactionOutcome>;
|
|
234
235
|
openInBrowser(urlOrPath: string): void;
|
|
236
|
+
showCommandPalette(commands: SlashCommand[], actions: CommandPaletteAction[], executeSlashCommand: (name: string) => Promise<void>): void;
|
|
235
237
|
showSettingsSelector(): void;
|
|
236
238
|
showThemeSelector(): void;
|
|
237
239
|
showPetSelector(): void;
|
|
@@ -10,17 +10,8 @@
|
|
|
10
10
|
* This is the pure mapping primitive used by SDK-native workflow gate emitters.
|
|
11
11
|
*/
|
|
12
12
|
import type { OpenGateInput } from "./workflow-gate-broker";
|
|
13
|
-
import type
|
|
14
|
-
|
|
15
|
-
export declare const GATE_OTHER_OPTION = "Other (type your own)";
|
|
16
|
-
/** Optional structured deep-interview round metadata supplied by the agent. */
|
|
17
|
-
export interface AskGateDeepInterviewState {
|
|
18
|
-
round_id?: string;
|
|
19
|
-
round: number;
|
|
20
|
-
component: string;
|
|
21
|
-
dimension: string;
|
|
22
|
-
ambiguity: number;
|
|
23
|
-
}
|
|
13
|
+
import { type AskGateDeepInterviewState, type WorkflowGateKind, type WorkflowStage } from "./workflow-gate-types";
|
|
14
|
+
export { type AskGateDeepInterviewState, buildAskGateAnswerSchema, GATE_OTHER_OPTION, validateAskGateStageState, } from "./workflow-gate-types";
|
|
24
15
|
export interface AskGateWorkflowGateMeta {
|
|
25
16
|
stage: WorkflowStage;
|
|
26
17
|
kind: WorkflowGateKind;
|
|
@@ -81,6 +72,8 @@ export declare class DeepInterviewGateError extends Error {
|
|
|
81
72
|
readonly code: "invalid_answer_shape" | "unknown_option" | "multi_not_allowed" | "missing_custom" | "missing_clarification" | "empty_selection" | "duplicate_selection";
|
|
82
73
|
constructor(code: "invalid_answer_shape" | "unknown_option" | "multi_not_allowed" | "missing_custom" | "missing_clarification" | "empty_selection" | "duplicate_selection", message: string);
|
|
83
74
|
}
|
|
75
|
+
/** Build and validate exact producer-compatible `stage_state` metadata for one ask question. */
|
|
76
|
+
export declare function buildAskGateStageState(question: AskGateQuestion, labels: string[]): Record<string, unknown>;
|
|
84
77
|
/** Build the `workflow_gate` open-input for one ask question. */
|
|
85
78
|
export declare function questionToGate(question: AskGateQuestion): OpenGateInput;
|
|
86
79
|
/**
|
|
@@ -73,6 +73,10 @@ export interface WorkflowGateEmitter {
|
|
|
73
73
|
setAckRecoveryParticipant?(participant: AskSelectedAckRecoveryParticipant | null): void;
|
|
74
74
|
/** Explicit host hook for same-process accepted-but-unadvanced recovery. */
|
|
75
75
|
recoverAcceptedGates?(): Promise<string[]>;
|
|
76
|
+
/** Reads a durable completed resolution before any presentation claim. */
|
|
77
|
+
lookupCompletedResolution?(response: WorkflowGateResponse): WorkflowGateCompletedResolutionLookup;
|
|
78
|
+
/** Supplies the active runtime turn captured immediately before a gate is opened. */
|
|
79
|
+
setRuntimeTurnProvider?(provider: (() => string | undefined) | null): void;
|
|
76
80
|
/** Permanently revoke all in-process continuation authority and reject their waiters. */
|
|
77
81
|
fence?(): void;
|
|
78
82
|
/** Temporarily make this emitter unavailable while a session transition is reversible. */
|
|
@@ -90,9 +94,11 @@ export declare class BrokerWorkflowGateEmitter implements WorkflowGateEmitter {
|
|
|
90
94
|
#private;
|
|
91
95
|
constructor(runId: string, store: GateStore, emitterHooks?: Pick<BrokerHooks, "advance">);
|
|
92
96
|
isUnattended(): boolean;
|
|
97
|
+
setRuntimeTurnProvider(provider: (() => string | undefined) | null): void;
|
|
93
98
|
emitGate(input: OpenGateInput): Promise<unknown>;
|
|
94
99
|
onGateEmitted(listener: (gate: WorkflowGate) => void): () => void;
|
|
95
100
|
resolveGate(response: WorkflowGateResponse): Promise<WorkflowGateResolution>;
|
|
101
|
+
lookupCompletedResolution(response: WorkflowGateResponse): WorkflowGateCompletedResolutionLookup;
|
|
96
102
|
prepareTerminalization(gateId: string, proof: WorkflowGateTerminalProof): boolean;
|
|
97
103
|
clearPreparedTerminalization(gateId: string): void;
|
|
98
104
|
listPendingGates(): WorkflowGate[];
|
|
@@ -145,6 +151,7 @@ export declare class MemoryGateStore implements GateStore {
|
|
|
145
151
|
beginRuntimeInstance(instanceId: string): void;
|
|
146
152
|
list(): PersistedGate[];
|
|
147
153
|
}
|
|
154
|
+
export declare function isUnsupportedWindowsDirectorySyncError(error: unknown, platform?: NodeJS.Platform): boolean;
|
|
148
155
|
/** A write may have reached `rename` but not the directory fsync durability barrier. */
|
|
149
156
|
export declare class GateStoreWriteError extends Error {
|
|
150
157
|
readonly certainty: "not_committed" | "uncertain";
|
|
@@ -234,10 +241,21 @@ export interface OpenGateInput {
|
|
|
234
241
|
context?: WorkflowGateContext;
|
|
235
242
|
/** Optional diagnostic gate replaced by this newly persisted gate. */
|
|
236
243
|
supersedesGateId?: string;
|
|
244
|
+
/** Optional immutable runtime turn captured by the emitter before broker persistence. */
|
|
245
|
+
runtimeTurnId?: string;
|
|
237
246
|
}
|
|
247
|
+
/** Durable resolution state used to safely replay direct control after presentation retirement. */
|
|
248
|
+
export type WorkflowGateCompletedResolutionLookup = {
|
|
249
|
+
kind: "none";
|
|
250
|
+
} | {
|
|
251
|
+
kind: "completed";
|
|
252
|
+
resolution: WorkflowGateResolution;
|
|
253
|
+
} | {
|
|
254
|
+
kind: "accepted_incomplete";
|
|
255
|
+
};
|
|
238
256
|
export declare class WorkflowGateBrokerError extends Error {
|
|
239
|
-
readonly code: "unknown_gate" | "already_resolved" | "idempotency_conflict" | "invalid_workflow_stage";
|
|
240
|
-
constructor(code: "unknown_gate" | "already_resolved" | "idempotency_conflict" | "invalid_workflow_stage", message: string);
|
|
257
|
+
readonly code: "unknown_gate" | "already_resolved" | "idempotency_conflict" | "invalid_workflow_stage" | "invalid_runtime_turn";
|
|
258
|
+
constructor(code: "unknown_gate" | "already_resolved" | "idempotency_conflict" | "invalid_workflow_stage" | "invalid_runtime_turn", message: string);
|
|
241
259
|
}
|
|
242
260
|
export declare class WorkflowGateBroker {
|
|
243
261
|
#private;
|
|
@@ -253,6 +271,7 @@ export declare class WorkflowGateBroker {
|
|
|
253
271
|
classifyDisposition(gateId: string, answer: unknown): PersistedSemanticDisposition;
|
|
254
272
|
validationError(gateId: string, keyword: string, message: string): WorkflowGateValidationError;
|
|
255
273
|
updateAckPolicy(gateId: string, ackPolicy: PersistedAckPolicy): void;
|
|
274
|
+
lookupCompletedResolution(response: WorkflowGateResponse): WorkflowGateCompletedResolutionLookup;
|
|
256
275
|
private runShort;
|
|
257
276
|
private hasLiveContinuation;
|
|
258
277
|
hasRecoverableAcceptedGate(): boolean;
|
|
@@ -1,9 +1,38 @@
|
|
|
1
1
|
/** Transport-neutral workflow gate contract used by SDK workflow coordination. */
|
|
2
2
|
/** Lifecycle stages that emit machine-addressable SDK workflow gates. */
|
|
3
3
|
export type WorkflowStage = "deep-interview" | "ralplan" | "ultragoal";
|
|
4
|
+
/** Lifecycle stages included in the v1 workflow-gate contract. */
|
|
5
|
+
export declare const WORKFLOW_GATE_V1_STAGES: readonly WorkflowStage[];
|
|
4
6
|
/** Reserved stage names that are explicitly not part of the v1 contract. */
|
|
5
7
|
export declare const RESERVED_WORKFLOW_STAGES: readonly string[];
|
|
6
8
|
export type WorkflowGateKind = "question" | "approval" | "execution";
|
|
9
|
+
/** "Other (type your own)" sentinel, mirroring the interactive ask tool. */
|
|
10
|
+
export declare const GATE_OTHER_OPTION = "Other (type your own)";
|
|
11
|
+
export interface AskGateDeepInterviewState {
|
|
12
|
+
round_id?: string;
|
|
13
|
+
round: number;
|
|
14
|
+
component: string;
|
|
15
|
+
dimension: string;
|
|
16
|
+
ambiguity: number;
|
|
17
|
+
}
|
|
18
|
+
export interface AskGateStageStateInput {
|
|
19
|
+
id: string;
|
|
20
|
+
multi?: boolean;
|
|
21
|
+
allowEmpty?: boolean;
|
|
22
|
+
navigationLabel?: "Next" | "Done";
|
|
23
|
+
deepInterview?: AskGateDeepInterviewState;
|
|
24
|
+
fallbackState?: Record<string, unknown>;
|
|
25
|
+
}
|
|
26
|
+
export interface AskGateSchemaInput {
|
|
27
|
+
multi?: boolean;
|
|
28
|
+
allowEmpty?: boolean;
|
|
29
|
+
}
|
|
30
|
+
/** Rejects stage state that is not exactly compatible with the generic ask-gate producer. */
|
|
31
|
+
export declare function validateAskGateStageState(value: unknown): asserts value is Record<string, unknown>;
|
|
32
|
+
/** Builds the canonical generic ask answer schema. */
|
|
33
|
+
export declare function buildAskGateAnswerSchema(question: AskGateSchemaInput, labels: string[]): JsonSchema;
|
|
34
|
+
/** Builds and validates exact generic ask stage-state metadata. */
|
|
35
|
+
export declare function buildAskGateStageState(input: AskGateStageStateInput, labels: string[]): Record<string, unknown>;
|
|
7
36
|
/** The documented JSON Schema 2020-12 subset supported by the gate validator. */
|
|
8
37
|
export interface JsonSchema {
|
|
9
38
|
type?: "string" | "number" | "integer" | "boolean" | "object" | "array" | "null";
|
|
@@ -57,6 +86,8 @@ export interface WorkflowGate {
|
|
|
57
86
|
context: WorkflowGateContext;
|
|
58
87
|
created_at: string;
|
|
59
88
|
required: true;
|
|
89
|
+
/** Immutable runtime turn correlation captured before durable gate visibility. */
|
|
90
|
+
runtime_turn_id?: string;
|
|
60
91
|
}
|
|
61
92
|
/** Non-actionable durable-gate state retained for restart diagnostics. */
|
|
62
93
|
export interface WorkflowGateLifecycle {
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { AsyncJob, AsyncJobManager, SubagentRecord } from "../async/job-manager";
|
|
2
|
+
import type { CronJobView, JobsObserver } from "./jobs-observer";
|
|
3
|
+
import type { ObservableSession, SessionObserverRegistry } from "./session-observer-registry";
|
|
4
|
+
export type TaskStatus = "running" | "waiting" | "done" | "failed" | "cancelled";
|
|
5
|
+
export type TaskKind = "bash" | "subagent" | "cron";
|
|
6
|
+
export interface TaskRow {
|
|
7
|
+
id: string;
|
|
8
|
+
kind: TaskKind;
|
|
9
|
+
label: string;
|
|
10
|
+
status: TaskStatus;
|
|
11
|
+
startedAt: number;
|
|
12
|
+
resumable?: boolean;
|
|
13
|
+
monitorOutputLines?: number;
|
|
14
|
+
}
|
|
15
|
+
export interface TasksSnapshot {
|
|
16
|
+
rows: TaskRow[];
|
|
17
|
+
worstState: TaskStatus | "none";
|
|
18
|
+
failedUnacknowledged: boolean;
|
|
19
|
+
}
|
|
20
|
+
export declare const EMPTY_TASKS_SNAPSHOT: TasksSnapshot;
|
|
21
|
+
export declare function mapAsyncJobStatus(status: AsyncJob["status"]): TaskStatus;
|
|
22
|
+
export declare function mapSessionStatus(status: ObservableSession["status"]): TaskStatus;
|
|
23
|
+
export declare function mapSubagentStatus(status: SubagentRecord["status"]): TaskStatus;
|
|
24
|
+
export declare function mapCronStatus(cron: Pick<CronJobView, "firing">): TaskStatus;
|
|
25
|
+
/** Joins manager jobs, monitor/cron views, and live session metadata. Stable
|
|
26
|
+
* subagent records are canonical for lifecycle state; the registry contributes
|
|
27
|
+
* only the current display label and timestamp. */
|
|
28
|
+
export declare class TasksAggregator {
|
|
29
|
+
#private;
|
|
30
|
+
readonly manager: AsyncJobManager;
|
|
31
|
+
readonly jobsObserver: JobsObserver;
|
|
32
|
+
readonly sessions: SessionObserverRegistry;
|
|
33
|
+
readonly ownerId?: string | undefined;
|
|
34
|
+
constructor(manager: AsyncJobManager, jobsObserver: JobsObserver, sessions: SessionObserverRegistry, ownerId?: string | undefined);
|
|
35
|
+
onChange(cb: () => void): () => void;
|
|
36
|
+
getSnapshot(): TasksSnapshot;
|
|
37
|
+
acknowledgeFailures(): void;
|
|
38
|
+
dispose(): void;
|
|
39
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
export type TranscriptItemKind = "user" | "assistant-text" | "assistant-thinking" | "tool" | "read-group" | "custom";
|
|
2
|
+
export type TranscriptItemCapabilities = {
|
|
3
|
+
copyable: boolean;
|
|
4
|
+
foldable: boolean;
|
|
5
|
+
rawViewable: boolean;
|
|
6
|
+
};
|
|
7
|
+
export type TranscriptSourcePayload = {
|
|
8
|
+
text: string;
|
|
9
|
+
metadata: Readonly<Record<string, unknown>>;
|
|
10
|
+
source: unknown;
|
|
11
|
+
};
|
|
12
|
+
export type TranscriptItem = {
|
|
13
|
+
id: string;
|
|
14
|
+
kind: TranscriptItemKind;
|
|
15
|
+
source: unknown;
|
|
16
|
+
getPayload?: (source: unknown) => TranscriptSourcePayload;
|
|
17
|
+
capabilities?: Partial<TranscriptItemCapabilities>;
|
|
18
|
+
};
|
|
19
|
+
export type RegisterTranscriptItem = Omit<TranscriptItem, "id"> & {
|
|
20
|
+
id?: string;
|
|
21
|
+
};
|
|
22
|
+
export type StreamingItemOptions = Omit<RegisterTranscriptItem, "id" | "kind"> & {
|
|
23
|
+
promptGeneration: number | string;
|
|
24
|
+
messageOrdinal: number;
|
|
25
|
+
kind?: "assistant-text" | "assistant-thinking";
|
|
26
|
+
};
|
|
27
|
+
/** Stable transcript identities shared by the inline and overlay projections. */
|
|
28
|
+
export declare const transcriptItemId: {
|
|
29
|
+
entry: (entryId: string) => string;
|
|
30
|
+
assistantContent: (entryId: string, contentIndex: number) => string;
|
|
31
|
+
tool: (toolCallId: string) => string;
|
|
32
|
+
readGroup: (groupId: string) => string;
|
|
33
|
+
custom: (customId: string) => string;
|
|
34
|
+
stream: (promptGeneration: number | string, messageOrdinal: number) => string;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* A session-local index of transcript projection items. It deliberately stores only
|
|
38
|
+
* structural sources, allowing interactive mode to supply live streaming objects
|
|
39
|
+
* and persisted session records without importing either implementation here.
|
|
40
|
+
*/
|
|
41
|
+
export declare class TranscriptItemRegistry {
|
|
42
|
+
#private;
|
|
43
|
+
get sessionId(): string | undefined;
|
|
44
|
+
/** Ordered snapshot for read-only transcript projections. */
|
|
45
|
+
items(): readonly TranscriptItem[];
|
|
46
|
+
register(item: RegisterTranscriptItem): string;
|
|
47
|
+
replace(id: string, item: Omit<TranscriptItem, "id">): boolean;
|
|
48
|
+
startStream(options: StreamingItemOptions): string;
|
|
49
|
+
/** Reconciles one exact live stream with its persisted canonical item. */
|
|
50
|
+
endStream(streamId: string, item: RegisterTranscriptItem): string | undefined;
|
|
51
|
+
retireStream(id: string): boolean;
|
|
52
|
+
coalesceReadGroup(groupId: string, source: unknown, toolCallIds?: readonly string[]): string;
|
|
53
|
+
rebuild(items: readonly RegisterTranscriptItem[]): void;
|
|
54
|
+
evict(id: string): boolean;
|
|
55
|
+
switchSession(sessionId: string): void;
|
|
56
|
+
resolveSourcePayload(id: string): TranscriptSourcePayload | undefined;
|
|
57
|
+
capabilities(id: string): TranscriptItemCapabilities | undefined;
|
|
58
|
+
has(id: string): boolean;
|
|
59
|
+
canonicalId(id: string): string | undefined;
|
|
60
|
+
}
|