@sayknow-cli/coding-agent 0.3.16 → 0.4.1
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 +52 -0
- package/package.json +133 -116
- package/scripts/build-sdk-package-smoke.ts +132 -0
- package/scripts/capture-notifications-settings-showcase.ts +435 -0
- package/scripts/compile-args.ts +5 -2
- package/scripts/g005-daemon-smoke.ts +4 -5
- package/scripts/g011-daemon-path-smoke.ts +5 -5
- package/scripts/generate-hotkeys-docs.ts +74 -0
- package/scripts/generate-sdk-adapter-parity-manifest.ts +163 -0
- package/scripts/generate-sdk-operation-inventory.ts +914 -0
- package/scripts/generate-telegram-baseline-manifest.ts +128 -0
- package/scripts/manifest-schema.ts +124 -0
- package/scripts/run-test-manifest.ts +153 -0
- package/scripts/run-threat-model-check.ts +217 -0
- package/scripts/verify-skc-sdk-canonicalization.ts +3647 -0
- package/scripts/verify-skc-sdk-rename.ts +90 -0
- package/src/append-only-mode.ts +1 -1
- package/src/async/job-manager.ts +455 -69
- package/src/cli/args.ts +43 -12
- package/src/cli/auth-gateway-cli.ts +2 -2
- package/src/cli/config-cli.ts +77 -3
- package/src/cli/daemon-cli.ts +63 -14
- package/src/cli/launch-disposition.ts +42 -0
- package/src/cli/list-models.ts +1 -1
- package/src/cli/notify-cli.ts +373 -283
- package/src/cli/session-picker.ts +20 -3
- package/src/cli/setup-cli.ts +1 -1
- package/src/cli/worktree-cli.ts +9 -287
- package/src/cli.ts +31 -11
- package/src/commands/config.ts +1 -1
- package/src/commands/daemon.ts +50 -6
- package/src/commands/gc.ts +11 -1
- package/src/commands/harness.ts +127 -142
- package/src/commands/launch.ts +11 -6
- package/src/commands/mcp-serve.ts +97 -13
- package/src/commands/mcp.ts +2 -2
- package/src/commands/notify.ts +44 -7
- package/src/commands/sdk.ts +453 -0
- package/src/commands/ultragoal.ts +4 -1
- package/src/commands/worktree.ts +10 -53
- package/src/commit/agentic/agent.ts +1 -0
- package/src/config/atomic-yaml-patch.ts +490 -0
- 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-profile-activation.ts +233 -86
- package/src/config/model-profiles.ts +52 -49
- package/src/config/model-registry.ts +5 -4
- package/src/config/model-resolver.ts +487 -410
- package/src/config/model-selector-value.ts +50 -0
- package/src/config/models-config-schema.ts +17 -23
- package/src/config/settings-schema.ts +372 -21
- package/src/config/settings.ts +1120 -182
- package/src/coordinator-mcp/model-preset.ts +74 -20
- 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 +3120 -3111
- package/src/daemon/builtin.ts +8 -5
- package/src/daemon/control-types.ts +1 -1
- package/src/daemon/runtime.ts +2 -2
- package/src/debug/index.ts +1 -1
- package/src/defaults/skc/skills/team/SKILL.md +27 -13
- package/src/defaults/skc/skills/ultragoal/SKILL.md +0 -2
- package/src/discovery/helpers.ts +1 -50
- package/src/discovery/mcp-json.ts +327 -20
- package/src/edit/index.ts +64 -0
- package/src/eval/js/shared/runtime.ts +1 -1
- package/src/eval/py/env.ts +26 -0
- package/src/eval/py/index.ts +2 -2
- package/src/eval/py/kernel.ts +5 -3
- package/src/export/html/template.generated.ts +1 -1
- package/src/export/html/template.js +52 -18
- package/src/extensibility/custom-tools/types.ts +1 -1
- package/src/extensibility/extensions/compact-handler.ts +3 -3
- package/src/extensibility/extensions/get-commands-handler.ts +2 -2
- package/src/extensibility/extensions/loader.ts +77 -5
- package/src/extensibility/extensions/runner.ts +124 -7
- package/src/extensibility/extensions/types.ts +215 -18
- package/src/extensibility/hooks/runner.ts +2 -2
- package/src/extensibility/hooks/types.ts +1 -1
- package/src/extensibility/plugins/marketplace/manager.ts +94 -10
- package/src/extensibility/runtime-skill-discovery.ts +33 -13
- package/src/extensibility/shared-events.ts +2 -0
- package/src/extensibility/skc-plugins/installer.ts +16 -16
- package/src/extensibility/slash-commands.ts +3 -3
- 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/operate.ts +9 -9
- package/src/harness-control-plane/owner.ts +341 -41
- 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/receipts.ts +0 -1
- package/src/harness-control-plane/sdk-transport.ts +395 -0
- package/src/harness-control-plane/session-lease.ts +12 -130
- package/src/harness-control-plane/session-transport.ts +94 -0
- package/src/harness-control-plane/types.ts +1 -1
- package/src/hindsight/backend.ts +26 -27
- package/src/hindsight/client.ts +65 -2
- package/src/hindsight/state.ts +101 -32
- package/src/hooks/skill-state.ts +17 -11
- package/src/i18n/messages/en.ts +1 -0
- package/src/internal-urls/agent-protocol.ts +76 -5
- package/src/internal-urls/docs-index.generated.ts +44 -37
- package/src/internal-urls/local-protocol.ts +420 -18
- package/src/lsp/client.ts +43 -7
- package/src/lsp/config.ts +145 -26
- package/src/lsp/index.ts +7 -91
- package/src/lsp/lspmux.ts +39 -10
- package/src/lsp/path-trust.ts +81 -0
- package/src/main.ts +451 -236
- package/src/memories/index.ts +1 -0
- package/src/memories/storage.ts +6 -2
- package/src/modes/DESIGN.md +258 -0
- package/src/modes/acp/acp-agent.ts +1236 -2612
- package/src/modes/acp/acp-client-bridge.ts +2 -20
- package/src/modes/acp/acp-event-mapper.ts +18 -2
- package/src/modes/acp/acp-mode.ts +8 -36
- package/src/modes/acp/permission-mode.ts +25 -0
- package/src/modes/acp/startup-options.ts +6 -0
- package/src/modes/action-registry.ts +165 -0
- package/src/modes/bridge/bridge-mode.ts +6 -4
- package/src/modes/components/agent-dashboard.ts +37 -17
- package/src/modes/components/ansi-display-validator.ts +54 -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 +105 -33
- package/src/modes/components/custom-provider-wizard.ts +77 -15
- package/src/modes/components/index.ts +2 -1
- package/src/modes/components/model-selector.ts +93 -35
- package/src/modes/components/notifications-settings-editor.ts +1403 -0
- package/src/modes/components/pet-capability.ts +115 -0
- package/src/modes/components/pet-selector.ts +15 -23
- 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/sayknow-pet-widget.ts +169 -20
- package/src/modes/components/session-observer-overlay.ts +213 -775
- package/src/modes/components/sessions-dashboard.ts +181 -0
- package/src/modes/components/settings-selector.ts +89 -12
- 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/tool-transcript-format.ts +393 -0
- package/src/modes/components/transcript-viewer-overlay.ts +446 -0
- package/src/modes/components/welcome.ts +4 -4
- package/src/modes/controllers/btw-controller.ts +1 -0
- package/src/modes/controllers/command-controller.ts +25 -17
- package/src/modes/controllers/event-controller.ts +14 -18
- package/src/modes/controllers/extension-ui-controller.ts +441 -37
- package/src/modes/controllers/goal-mode-controller.ts +493 -0
- package/src/modes/controllers/input-controller.ts +889 -263
- package/src/modes/controllers/mode-gate.ts +24 -0
- package/src/modes/controllers/plan-mode-controller.ts +519 -0
- package/src/modes/controllers/runtime-mcp-command-controller.ts +3 -0
- package/src/modes/controllers/selector-controller.ts +957 -54
- package/src/modes/controllers/stt-controller.ts +125 -0
- package/src/modes/index.ts +0 -22
- package/src/modes/interactive-mode.ts +376 -1130
- package/src/modes/jobs-observer.ts +3 -0
- package/src/modes/prompt-action-autocomplete.ts +7 -0
- package/src/modes/rpc/rpc-mode.ts +3 -1
- package/src/modes/runtime-init.ts +320 -6
- package/src/modes/shared/agent-wire/approval-gate.ts +9 -11
- package/src/modes/shared/agent-wire/command-dispatch.ts +3 -1
- package/src/modes/shared/agent-wire/deep-interview-gate.ts +65 -111
- package/src/modes/shared/agent-wire/event-contract.ts +7 -8
- package/src/modes/shared/agent-wire/event-envelope.ts +9 -17
- package/src/modes/shared/agent-wire/event-observation.ts +16 -7
- package/src/modes/shared/agent-wire/workflow-gate-broker.ts +1331 -89
- package/src/modes/shared/agent-wire/workflow-gate-schema.ts +19 -17
- package/src/modes/shared/agent-wire/workflow-gate-types.ts +407 -0
- package/src/modes/tasks-aggregator.ts +199 -0
- package/src/modes/transcript-item-registry.ts +229 -0
- package/src/modes/types.ts +63 -21
- package/src/modes/utils/ui-helpers.ts +17 -9
- package/src/notifications/index.ts +8 -2
- package/src/plan-mode/approved-plan.ts +3 -1
- 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 +3 -8
- package/src/prompts/agents/critic.md +3 -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 +2 -24
- package/src/prompts/system/plan-mode-approved.md +8 -0
- package/src/prompts/system/system-prompt.md +18 -94
- 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/lsp.md +3 -3
- 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/client.ts +94 -19
- package/src/runtime-mcp/config.ts +27 -15
- package/src/runtime-mcp/discoverable-tool-metadata.ts +16 -13
- package/src/runtime-mcp/manager.ts +359 -106
- package/src/runtime-mcp/oauth-discovery.ts +116 -26
- package/src/runtime-mcp/oauth-flow.ts +42 -12
- package/src/runtime-mcp/transports/http.ts +49 -19
- package/src/runtime-mcp/transports/stdio.ts +47 -28
- package/src/runtime-mcp/types.ts +10 -0
- package/src/sdk/acp/adapter.ts +418 -0
- package/src/sdk/acp/index.ts +2 -0
- package/src/sdk/broker/broker.ts +877 -0
- package/src/sdk/broker/discovery.ts +238 -0
- package/src/sdk/broker/ensure.ts +393 -0
- package/src/sdk/broker/identity.ts +42 -0
- package/src/sdk/broker/index.ts +8 -0
- package/src/sdk/broker/internal-source-marker-2178.txt +1 -0
- package/src/sdk/broker/internal-source.bunfig.toml +1 -0
- package/src/sdk/broker/internal.ts +10 -0
- package/src/sdk/broker/lifecycle-codec.ts +11 -0
- package/src/sdk/broker/lifecycle-ledger.ts +583 -0
- package/src/sdk/broker/lifecycle.ts +3413 -0
- package/src/sdk/broker/process-incarnation.ts +151 -0
- package/src/sdk/broker/runtime.ts +164 -0
- package/src/sdk/broker/session-index.ts +678 -0
- package/src/sdk/broker/state-version.ts +47 -0
- package/src/sdk/broker/transport.ts +125 -0
- package/src/sdk/bus/attachment-registry.ts +23 -0
- package/src/sdk/bus/chat-adapters.ts +147 -0
- package/src/sdk/bus/chat-command-policy.ts +107 -0
- package/src/sdk/bus/chat-daemon-cli.ts +278 -0
- package/src/sdk/bus/chat-daemon-control.ts +1101 -0
- package/src/sdk/bus/chat-daemon-runtime.ts +527 -0
- package/src/sdk/bus/chat-effect-journal.ts +363 -0
- package/src/sdk/bus/config-commands.ts +192 -0
- package/src/sdk/bus/config.ts +568 -0
- package/src/sdk/bus/conversation-store.ts +367 -0
- package/src/sdk/bus/daemon-paths.ts +34 -0
- package/src/sdk/bus/discord-conversation.ts +85 -0
- package/src/sdk/bus/discord-daemon.ts +2292 -0
- package/src/sdk/bus/discord-live-provider.ts +521 -0
- package/src/sdk/bus/discord-provider.ts +56 -0
- package/src/sdk/bus/engine.ts +100 -0
- package/src/sdk/bus/helpers.ts +135 -0
- package/src/sdk/bus/html-format.ts +518 -0
- package/src/sdk/bus/index.ts +4961 -0
- package/src/sdk/bus/lifecycle-commands.ts +291 -0
- package/src/sdk/bus/lifecycle-control-runtime.ts +1409 -0
- package/src/sdk/bus/lifecycle-orchestrator.ts +458 -0
- package/src/sdk/bus/managed-daemon.ts +163 -0
- package/src/sdk/bus/native-runtime-compatibility.ts +42 -0
- package/src/sdk/bus/natives-augment.d.ts +63 -0
- package/src/sdk/bus/notification-orchestration.ts +535 -0
- package/src/sdk/bus/notification-service.ts +1174 -0
- package/src/sdk/bus/operator-runtime.ts +171 -0
- package/src/sdk/bus/rate-limit-pool.ts +276 -0
- package/src/sdk/bus/recent-activity.ts +279 -0
- package/src/sdk/bus/reply-sent-store.ts +134 -0
- package/src/sdk/bus/rich-document.ts +258 -0
- package/src/sdk/bus/rich-draft.ts +107 -0
- package/src/sdk/bus/rich-render.ts +135 -0
- package/src/sdk/bus/session-control.ts +439 -0
- package/src/sdk/bus/slack-conversation.ts +74 -0
- package/src/sdk/bus/slack-daemon.ts +2144 -0
- package/src/sdk/bus/slack-live-provider.ts +380 -0
- package/src/sdk/bus/slack-provider.ts +76 -0
- package/src/sdk/bus/telegram-cli.ts +194 -0
- package/src/sdk/bus/telegram-daemon-cli.ts +292 -0
- package/src/sdk/bus/telegram-daemon-contract.ts +27 -0
- package/src/sdk/bus/telegram-daemon-control.ts +642 -0
- package/src/sdk/bus/telegram-daemon.ts +6675 -0
- package/src/sdk/bus/telegram-reference.ts +436 -0
- package/src/sdk/bus/telegram-setup.ts +663 -0
- package/src/sdk/bus/threaded-inbound.ts +141 -0
- package/src/sdk/bus/threaded-render.ts +294 -0
- package/src/sdk/bus/topic-registry.ts +364 -0
- package/src/sdk/cli/index.ts +1 -0
- package/src/sdk/cli/session-cli.ts +275 -0
- package/src/sdk/client/client.ts +1 -0
- package/src/sdk/client/discovery.ts +108 -0
- package/src/sdk/client/index.ts +2 -0
- package/src/sdk/host/control/dispatch.ts +388 -0
- package/src/sdk/host/control/index.ts +10 -0
- package/src/sdk/host/control/operations.ts +68 -0
- package/src/sdk/host/events.ts +91 -0
- package/src/sdk/host/host.ts +338 -0
- package/src/sdk/host/index.ts +4 -0
- package/src/sdk/host/query/cursor.ts +189 -0
- package/src/sdk/host/query/handlers.ts +531 -0
- package/src/sdk/host/query/index.ts +3 -0
- package/src/sdk/host/query/revision-store.ts +1149 -0
- package/src/sdk/host/reverse-leases.ts +325 -0
- package/src/sdk/host/types.ts +29 -0
- package/src/sdk/index.ts +14 -0
- package/src/sdk/lifecycle-session.ts +39 -0
- package/src/sdk/mcp/index.ts +1 -0
- package/src/sdk/mcp/server.ts +332 -0
- package/src/sdk/models.ts +168 -0
- package/src/sdk/protocol/adapter-validation.ts +48 -0
- package/src/sdk/protocol/operation-inventory.generated.json +4719 -0
- package/src/sdk/protocol/operation-registry.ts +312 -0
- package/src/sdk/session-directory.ts +141 -0
- package/src/sdk/session.ts +2869 -0
- package/src/sdk/startup-capability.ts +189 -0
- package/src/secrets/index.ts +53 -10
- package/src/secrets/obfuscator.ts +21 -18
- package/src/secrets/regex.ts +2 -0
- package/src/session/agent-session.ts +5602 -2138
- package/src/session/agent-storage.ts +18 -0
- package/src/session/artifacts.ts +188 -23
- package/src/session/cache-economics.ts +25 -8
- package/src/session/context-estimation.ts +7 -2
- package/src/session/default-model-selection.ts +93 -0
- package/src/session/fallback-chain-controller.ts +186 -0
- package/src/session/internal/managed-session-scope.ts +2402 -0
- package/src/session/internal/managed-session-storage.ts +1559 -0
- package/src/session/messages.ts +91 -2
- package/src/session/session-manager-internal.ts +33 -0
- package/src/session/session-manager.ts +2578 -392
- package/src/session/session-storage.ts +550 -40
- package/src/session/streaming-output.ts +6 -0
- package/src/session/volatile-context-pruning.ts +78 -0
- package/src/session/yield-queue.ts +20 -0
- package/src/setup/credential-auto-import.ts +291 -35
- package/src/setup/hermes/templates/operator-instructions.v1.md +4 -6
- package/src/setup/provider-onboarding.ts +36 -61
- package/src/setup/provider-presets.json +5 -0
- package/src/skc-runtime/deep-interview-recorder.ts +70 -3
- package/src/skc-runtime/deep-interview-state.ts +441 -5
- package/src/skc-runtime/gc-render.ts +19 -1
- package/src/skc-runtime/gc-runtime.ts +68 -3
- package/src/skc-runtime/goal-mode-request.ts +55 -8
- package/src/skc-runtime/launch-worktree.ts +5 -5
- package/src/skc-runtime/linux-proc.ts +71 -0
- package/src/skc-runtime/managed-owner-admission.ts +352 -0
- package/src/skc-runtime/managed-owner-supervisor.ts +162 -0
- package/src/skc-runtime/psmux-detect.ts +82 -4
- package/src/skc-runtime/ralplan-runtime.ts +74 -90
- package/src/skc-runtime/session-resolution.ts +18 -3
- package/src/skc-runtime/session-state-sidecar.ts +47 -138
- package/src/skc-runtime/state-argv.ts +292 -0
- package/src/skc-runtime/state-migrations.ts +1 -1
- package/src/skc-runtime/state-runtime.ts +387 -451
- package/src/skc-runtime/state-writer.ts +36 -40
- package/src/skc-runtime/team-launch.ts +319 -0
- package/src/skc-runtime/team-notify.ts +326 -0
- package/src/skc-runtime/team-runtime.ts +8 -2
- package/src/skc-runtime/team-store.ts +828 -0
- package/src/skc-runtime/team-workers.ts +962 -0
- package/src/skc-runtime/tmux-owner-isolation-cli.ts +55 -28
- package/src/skc-runtime/tmux-owner-isolation.ts +136 -11
- package/src/skc-runtime/tmux-sessions.ts +23 -34
- package/src/skc-runtime/ultragoal-change-set.ts +172 -0
- package/src/skc-runtime/ultragoal-evidence.ts +874 -0
- package/src/skc-runtime/ultragoal-guard.ts +136 -18
- package/src/skc-runtime/ultragoal-owner-loss-recovery.ts +328 -0
- package/src/skc-runtime/ultragoal-pipeline.ts +306 -0
- package/src/skc-runtime/ultragoal-receipt-freshness.ts +102 -1
- package/src/skc-runtime/ultragoal-runtime.ts +325 -1322
- package/src/skc-runtime/windows-powershell-command.ts +58 -0
- package/src/skc-runtime/workflow-cli-common.ts +30 -0
- package/src/skc-runtime/workflow-manifest.generated.json +58 -0
- package/src/skc-runtime/workflow-manifest.ts +18 -0
- package/src/skill-state/active-state.ts +3 -13
- package/src/skill-state/workflow-mutation-guard.ts +661 -0
- package/src/skill-state/workflow-state-contract.ts +6 -41
- package/src/slash-commands/builtin-registry.ts +115 -41
- package/src/system-prompt.ts +37 -44
- package/src/task/agents.ts +19 -1
- package/src/task/executor.ts +223 -45
- package/src/task/index.ts +124 -56
- package/src/thinking.ts +21 -6
- package/src/tool-discovery/tool-index.ts +20 -134
- package/src/tools/ask-answer-registry.ts +16 -2
- package/src/tools/ast-edit.ts +1 -1
- package/src/tools/bash-allowed-prefixes.ts +79 -29
- package/src/tools/bash-skill-urls.ts +14 -3
- package/src/tools/bash.ts +40 -2
- package/src/tools/browser/STEALTH-THIRD-PARTY-NOTICES.md +26 -0
- package/src/tools/browser/benchmark/detector-report.ts +157 -0
- package/src/tools/browser/benchmark/run-suite.ts +39 -0
- package/src/tools/browser/dead-tab-recovery.ts +78 -0
- package/src/tools/browser/launch.ts +127 -20
- package/src/tools/browser/profile-discovery.ts +63 -0
- package/src/tools/browser/profile-posture.ts +59 -0
- package/src/tools/browser/profile-reuse.ts +102 -0
- package/src/tools/browser/profile-warmup.ts +109 -0
- package/src/tools/browser/readable.ts +1 -1
- package/src/tools/browser/registry.ts +87 -11
- package/src/tools/browser/screenshot-format.ts +34 -0
- package/src/tools/browser/tab-protocol.ts +4 -0
- package/src/tools/browser/tab-supervisor.ts +392 -142
- package/src/tools/browser/tab-worker-entry.ts +33 -14
- package/src/tools/browser/tab-worker-path-resolver.ts +67 -0
- package/src/tools/browser/tab-worker-smoke.ts +87 -0
- package/src/tools/browser/tab-worker.ts +8 -6
- package/src/tools/browser.ts +6 -0
- package/src/tools/computer.ts +10 -3
- package/src/tools/cron.ts +30 -16
- package/src/tools/fetch.ts +11 -4
- package/src/tools/index.ts +88 -32
- package/src/tools/output-meta.ts +19 -7
- package/src/tools/path-utils.ts +42 -35
- package/src/tools/plan-mode-guard.ts +1 -0
- package/src/tools/puppeteer/14_stealth_permissions.txt +57 -0
- package/src/tools/puppeteer/15_stealth_webrtc.txt +60 -0
- package/src/tools/read.ts +226 -65
- package/src/tools/resource-gc.ts +125 -36
- package/src/tools/search-tool-bm25.ts +11 -74
- package/src/tools/sqlite-reader.ts +3 -2
- package/src/tools/subagent-render.ts +19 -8
- package/src/tools/subagent.ts +129 -34
- package/src/tools/telegram-send.ts +2 -2
- package/src/utils/event-bus.ts +9 -4
- package/src/utils/file-mentions.ts +4 -4
- package/src/utils/image-loading.ts +85 -34
- package/src/utils/image-resize.ts +16 -9
- package/src/utils/pasted-image-loading.ts +514 -0
- package/src/utils/pasted-image-path.ts +223 -98
- package/src/web/scrapers/html-to-markdown.ts +68 -0
- package/src/web/scrapers/readthedocs.ts +1 -1
- package/src/web/scrapers/types.ts +1 -68
- package/src/web/search/index.ts +3 -3
- package/src/web/search/providers/openai-compatible.ts +76 -23
- package/dist/types/append-only-mode.d.ts +0 -31
- package/dist/types/async/index.d.ts +0 -2
- package/dist/types/async/job-manager.d.ts +0 -328
- package/dist/types/async/support.d.ts +0 -2
- package/dist/types/autoresearch/dashboard.d.ts +0 -4
- package/dist/types/autoresearch/git.d.ts +0 -36
- package/dist/types/autoresearch/helpers.d.ts +0 -24
- package/dist/types/autoresearch/index.d.ts +0 -2
- package/dist/types/autoresearch/state.d.ts +0 -17
- package/dist/types/autoresearch/storage.d.ts +0 -142
- package/dist/types/autoresearch/tools/init-experiment.d.ts +0 -31
- package/dist/types/autoresearch/tools/log-experiment.d.ts +0 -23
- package/dist/types/autoresearch/tools/run-experiment.d.ts +0 -8
- package/dist/types/autoresearch/tools/update-notes.d.ts +0 -12
- package/dist/types/autoresearch/types.d.ts +0 -154
- package/dist/types/build-metadata.d.ts +0 -7
- package/dist/types/capability/context-file.d.ts +0 -17
- package/dist/types/capability/extension-module.d.ts +0 -15
- package/dist/types/capability/extension.d.ts +0 -28
- package/dist/types/capability/fs.d.ts +0 -20
- package/dist/types/capability/hook.d.ts +0 -19
- package/dist/types/capability/index.d.ts +0 -80
- package/dist/types/capability/instruction.d.ts +0 -17
- package/dist/types/capability/mcp.d.ts +0 -49
- package/dist/types/capability/prompt.d.ts +0 -15
- package/dist/types/capability/rule.d.ts +0 -69
- package/dist/types/capability/settings.d.ts +0 -15
- package/dist/types/capability/skill.d.ts +0 -36
- package/dist/types/capability/slash-command.d.ts +0 -17
- package/dist/types/capability/ssh.d.ts +0 -23
- package/dist/types/capability/system-prompt.d.ts +0 -15
- package/dist/types/capability/tool.d.ts +0 -19
- package/dist/types/capability/types.d.ts +0 -154
- package/dist/types/cli/agents-cli.d.ts +0 -12
- package/dist/types/cli/args.d.ts +0 -57
- package/dist/types/cli/auth-broker-cli.d.ts +0 -25
- package/dist/types/cli/auth-gateway-cli.d.ts +0 -18
- package/dist/types/cli/classify-install-target.d.ts +0 -8
- package/dist/types/cli/commands/init-xdg.d.ts +0 -1
- package/dist/types/cli/completion-cli.d.ts +0 -41
- package/dist/types/cli/config-cli.d.ts +0 -23
- package/dist/types/cli/daemon-cli.d.ts +0 -27
- package/dist/types/cli/fast-help.d.ts +0 -1
- package/dist/types/cli/file-processor.d.ts +0 -11
- package/dist/types/cli/fixture-report.d.ts +0 -20
- package/dist/types/cli/fixture-report.test.d.ts +0 -1
- package/dist/types/cli/grep-cli.d.ts +0 -17
- package/dist/types/cli/initial-message.d.ts +0 -17
- package/dist/types/cli/list-models.d.ts +0 -36
- package/dist/types/cli/local-provider-smoke.d.ts +0 -59
- package/dist/types/cli/malloc-env-guard.d.ts +0 -65
- package/dist/types/cli/malloc-env-guard.test.d.ts +0 -1
- package/dist/types/cli/mcp-cli.d.ts +0 -25
- package/dist/types/cli/migrate-cli.d.ts +0 -20
- package/dist/types/cli/nofile-limit.d.ts +0 -11
- package/dist/types/cli/notify-cli.d.ts +0 -39
- package/dist/types/cli/plugin-cli.d.ts +0 -34
- package/dist/types/cli/read-cli.d.ts +0 -4
- package/dist/types/cli/session-picker.d.ts +0 -4
- package/dist/types/cli/setup-cli.d.ts +0 -73
- package/dist/types/cli/shell-cli.d.ts +0 -8
- package/dist/types/cli/skills-cli.d.ts +0 -9
- package/dist/types/cli/ssh-cli.d.ts +0 -21
- package/dist/types/cli/stats-cli.d.ts +0 -17
- package/dist/types/cli/telegram-cli.d.ts +0 -13
- package/dist/types/cli/update-cli.d.ts +0 -108
- package/dist/types/cli/web-search-cli.d.ts +0 -32
- package/dist/types/cli/worktree-cli.d.ts +0 -26
- package/dist/types/cli.d.ts +0 -140
- package/dist/types/commands/acp.d.ts +0 -12
- package/dist/types/commands/agents.d.ts +0 -34
- package/dist/types/commands/auth-broker.d.ts +0 -54
- package/dist/types/commands/auth-gateway.d.ts +0 -32
- package/dist/types/commands/codex-native-hook.d.ts +0 -6
- package/dist/types/commands/commit.d.ts +0 -27
- package/dist/types/commands/completion.d.ts +0 -29
- package/dist/types/commands/config.d.ts +0 -33
- package/dist/types/commands/contribution-prep.d.ts +0 -18
- package/dist/types/commands/coordinator.d.ts +0 -19
- package/dist/types/commands/daemon.d.ts +0 -45
- package/dist/types/commands/deep-interview.d.ts +0 -54
- package/dist/types/commands/gc.d.ts +0 -26
- package/dist/types/commands/grep.d.ts +0 -42
- package/dist/types/commands/harness.d.ts +0 -43
- package/dist/types/commands/launch.d.ts +0 -131
- package/dist/types/commands/local-provider.d.ts +0 -34
- package/dist/types/commands/mcp-serve.d.ts +0 -24
- package/dist/types/commands/mcp.d.ts +0 -70
- package/dist/types/commands/migrate.d.ts +0 -33
- package/dist/types/commands/notify.d.ts +0 -47
- package/dist/types/commands/plugin.d.ts +0 -58
- package/dist/types/commands/ralplan.d.ts +0 -7
- package/dist/types/commands/read.d.ts +0 -15
- package/dist/types/commands/rlm.d.ts +0 -10
- package/dist/types/commands/session.d.ts +0 -30
- package/dist/types/commands/setup.d.ts +0 -105
- package/dist/types/commands/shell.d.ts +0 -21
- package/dist/types/commands/skills.d.ts +0 -26
- package/dist/types/commands/ssh.d.ts +0 -48
- package/dist/types/commands/state.d.ts +0 -7
- package/dist/types/commands/stats.d.ts +0 -25
- package/dist/types/commands/team.d.ts +0 -24
- package/dist/types/commands/telegram.d.ts +0 -22
- package/dist/types/commands/ultragoal.d.ts +0 -8
- package/dist/types/commands/update.d.ts +0 -20
- package/dist/types/commands/web-search.d.ts +0 -87
- package/dist/types/commands/worktree.d.ts +0 -34
- package/dist/types/commit/agentic/agent.d.ts +0 -31
- package/dist/types/commit/agentic/fallback.d.ts +0 -5
- package/dist/types/commit/agentic/index.d.ts +0 -2
- package/dist/types/commit/agentic/state.d.ts +0 -58
- package/dist/types/commit/agentic/tools/analyze-file.d.ts +0 -19
- package/dist/types/commit/agentic/tools/git-file-diff.d.ts +0 -10
- package/dist/types/commit/agentic/tools/git-hunk.d.ts +0 -9
- package/dist/types/commit/agentic/tools/git-overview.d.ts +0 -9
- package/dist/types/commit/agentic/tools/index.d.ts +0 -16
- package/dist/types/commit/agentic/tools/propose-changelog.d.ts +0 -28
- package/dist/types/commit/agentic/tools/propose-commit.d.ts +0 -36
- package/dist/types/commit/agentic/tools/recent-commits.d.ts +0 -7
- package/dist/types/commit/agentic/tools/schemas.d.ts +0 -27
- package/dist/types/commit/agentic/tools/split-commit.d.ts +0 -53
- package/dist/types/commit/agentic/topo-sort.d.ts +0 -4
- package/dist/types/commit/agentic/trivial.d.ts +0 -7
- package/dist/types/commit/agentic/validation.d.ts +0 -20
- package/dist/types/commit/analysis/conventional.d.ts +0 -22
- package/dist/types/commit/analysis/index.d.ts +0 -4
- package/dist/types/commit/analysis/scope.d.ts +0 -6
- package/dist/types/commit/analysis/summary.d.ts +0 -19
- package/dist/types/commit/analysis/validation.d.ts +0 -8
- package/dist/types/commit/changelog/detect.d.ts +0 -2
- package/dist/types/commit/changelog/generate.d.ts +0 -30
- package/dist/types/commit/changelog/index.d.ts +0 -30
- package/dist/types/commit/changelog/parse.d.ts +0 -2
- package/dist/types/commit/cli.d.ts +0 -3
- package/dist/types/commit/git/diff.d.ts +0 -5
- package/dist/types/commit/index.d.ts +0 -4
- package/dist/types/commit/map-reduce/index.d.ts +0 -28
- package/dist/types/commit/map-reduce/map-phase.d.ts +0 -17
- package/dist/types/commit/map-reduce/reduce-phase.d.ts +0 -13
- package/dist/types/commit/map-reduce/utils.d.ts +0 -2
- package/dist/types/commit/message.d.ts +0 -2
- package/dist/types/commit/model-selection.d.ts +0 -15
- package/dist/types/commit/pipeline.d.ts +0 -5
- package/dist/types/commit/shared-llm.d.ts +0 -54
- package/dist/types/commit/types.d.ts +0 -78
- package/dist/types/commit/utils/exclusions.d.ts +0 -4
- package/dist/types/commit/utils.d.ts +0 -20
- package/dist/types/config/config-file.d.ts +0 -58
- package/dist/types/config/file-lock-gc.d.ts +0 -5
- package/dist/types/config/file-lock.d.ts +0 -36
- package/dist/types/config/keybindings.d.ts +0 -364
- package/dist/types/config/model-equivalence.d.ts +0 -24
- package/dist/types/config/model-profile-activation.d.ts +0 -65
- package/dist/types/config/model-profiles.d.ts +0 -39
- package/dist/types/config/model-registry.d.ts +0 -473
- package/dist/types/config/model-resolver.d.ts +0 -217
- package/dist/types/config/models-config-schema.d.ts +0 -700
- package/dist/types/config/prompt-templates.d.ts +0 -32
- package/dist/types/config/resolve-config-value.d.ts +0 -17
- package/dist/types/config/settings-schema.d.ts +0 -4223
- package/dist/types/config/settings.d.ts +0 -158
- package/dist/types/config/skill-settings-defaults.d.ts +0 -14
- package/dist/types/config/telegram-autostart.d.ts +0 -14
- package/dist/types/config/telegram-env-bridge.d.ts +0 -18
- package/dist/types/config.d.ts +0 -66
- package/dist/types/coordinator/contract.d.ts +0 -4
- package/dist/types/coordinator-mcp/model-preset.d.ts +0 -45
- package/dist/types/coordinator-mcp/policy.d.ts +0 -27
- package/dist/types/coordinator-mcp/safety.d.ts +0 -26
- package/dist/types/coordinator-mcp/server.d.ts +0 -139
- package/dist/types/coordinator-mcp/session-reaper.d.ts +0 -53
- package/dist/types/cursor.d.ts +0 -24
- package/dist/types/daemon/builtin.d.ts +0 -20
- package/dist/types/daemon/control-types.d.ts +0 -67
- package/dist/types/daemon/operator-contract.d.ts +0 -47
- package/dist/types/daemon/runtime.d.ts +0 -25
- package/dist/types/dap/client.d.ts +0 -39
- package/dist/types/dap/config.d.ts +0 -6
- package/dist/types/dap/index.d.ts +0 -4
- package/dist/types/dap/session.d.ts +0 -108
- package/dist/types/dap/types.d.ts +0 -524
- package/dist/types/debug/crash-diagnostics.d.ts +0 -45
- package/dist/types/debug/index.d.ts +0 -15
- package/dist/types/debug/log-formatting.d.ts +0 -4
- package/dist/types/debug/log-viewer.d.ts +0 -68
- package/dist/types/debug/profiler.d.ts +0 -24
- package/dist/types/debug/raw-sse-buffer.d.ts +0 -44
- package/dist/types/debug/raw-sse.d.ts +0 -16
- package/dist/types/debug/report-bundle.d.ts +0 -55
- package/dist/types/debug/runtime-gauges.d.ts +0 -6
- package/dist/types/debug/system-info.d.ts +0 -26
- package/dist/types/deep-interview/plaintext-gate-guard.d.ts +0 -11
- package/dist/types/deep-interview/render-middleware.d.ts +0 -6
- package/dist/types/defaults/skc/extensions/grok-build/index.d.ts +0 -1
- package/dist/types/defaults/skc/extensions/grok-cli-vendor/src/index.d.ts +0 -1
- package/dist/types/defaults/skc/extensions/grok-cli-vendor/src/models/catalog.d.ts +0 -29
- package/dist/types/defaults/skc/extensions/grok-cli-vendor/src/payload/sanitize.d.ts +0 -27
- package/dist/types/defaults/skc/extensions/grok-cli-vendor/src/provider/billing.d.ts +0 -8
- package/dist/types/defaults/skc/extensions/grok-cli-vendor/src/provider/register.d.ts +0 -5
- package/dist/types/defaults/skc/extensions/grok-cli-vendor/src/provider/stream.d.ts +0 -10
- package/dist/types/defaults/skc/extensions/grok-cli-vendor/src/provider/usage.d.ts +0 -2
- package/dist/types/defaults/skc/extensions/grok-cli-vendor/src/shared/base-url.d.ts +0 -2
- package/dist/types/defaults/skc/extensions/grok-cli-vendor/src/shared/errors.d.ts +0 -38
- package/dist/types/defaults/skc-defaults.d.ts +0 -64
- package/dist/types/defaults/skc-grok-cli.d.ts +0 -5
- package/dist/types/discovery/agents-md.d.ts +0 -1
- package/dist/types/discovery/agents.d.ts +0 -12
- package/dist/types/discovery/builtin.d.ts +0 -1
- package/dist/types/discovery/claude-plugins.d.ts +0 -1
- package/dist/types/discovery/claude.d.ts +0 -1
- package/dist/types/discovery/cline.d.ts +0 -1
- package/dist/types/discovery/codex.d.ts +0 -1
- package/dist/types/discovery/cursor.d.ts +0 -19
- package/dist/types/discovery/gemini.d.ts +0 -1
- package/dist/types/discovery/github.d.ts +0 -1
- package/dist/types/discovery/helpers.d.ts +0 -271
- package/dist/types/discovery/index.d.ts +0 -48
- package/dist/types/discovery/mcp-json.d.ts +0 -1
- package/dist/types/discovery/opencode.d.ts +0 -1
- package/dist/types/discovery/plugin-dir-roots.d.ts +0 -15
- package/dist/types/discovery/ssh.d.ts +0 -1
- package/dist/types/discovery/substitute-plugin-root.d.ts +0 -1
- package/dist/types/discovery/vscode.d.ts +0 -1
- package/dist/types/discovery/windsurf.d.ts +0 -15
- package/dist/types/edit/apply-patch/index.d.ts +0 -35
- package/dist/types/edit/apply-patch/parser.d.ts +0 -34
- package/dist/types/edit/diff.d.ts +0 -75
- package/dist/types/edit/file-read-cache.d.ts +0 -25
- package/dist/types/edit/index.d.ts +0 -58
- package/dist/types/edit/modes/apply-patch.d.ts +0 -24
- package/dist/types/edit/modes/patch.d.ts +0 -99
- package/dist/types/edit/modes/replace.d.ts +0 -149
- package/dist/types/edit/normalize.d.ts +0 -43
- package/dist/types/edit/notebook.d.ts +0 -26
- package/dist/types/edit/read-file.d.ts +0 -8
- package/dist/types/edit/renderer.d.ts +0 -110
- package/dist/types/edit/streaming.d.ts +0 -66
- package/dist/types/eval/backend.d.ts +0 -40
- package/dist/types/eval/index.d.ts +0 -4
- package/dist/types/eval/js/context-manager.d.ts +0 -27
- package/dist/types/eval/js/executor.d.ts +0 -29
- package/dist/types/eval/js/index.d.ts +0 -10
- package/dist/types/eval/js/shared/helpers.d.ts +0 -38
- package/dist/types/eval/js/shared/indirect-eval.d.ts +0 -14
- package/dist/types/eval/js/shared/prelude.d.ts +0 -1
- package/dist/types/eval/js/shared/rewrite-imports.d.ts +0 -6
- package/dist/types/eval/js/shared/runtime.d.ts +0 -47
- package/dist/types/eval/js/shared/types.d.ts +0 -24
- package/dist/types/eval/js/tool-bridge.d.ts +0 -18
- package/dist/types/eval/js/worker-core.d.ts +0 -5
- package/dist/types/eval/js/worker-entry.d.ts +0 -1
- package/dist/types/eval/js/worker-protocol.d.ts +0 -77
- package/dist/types/eval/py/display.d.ts +0 -25
- package/dist/types/eval/py/executor.d.ts +0 -88
- package/dist/types/eval/py/index.d.ts +0 -10
- package/dist/types/eval/py/kernel.d.ts +0 -65
- package/dist/types/eval/py/prelude.d.ts +0 -1
- package/dist/types/eval/py/runtime.d.ts +0 -29
- package/dist/types/eval/py/tool-bridge.d.ts +0 -20
- package/dist/types/eval/types.d.ts +0 -52
- package/dist/types/exa/factory.d.ts +0 -13
- package/dist/types/exa/index.d.ts +0 -20
- package/dist/types/exa/mcp-client.d.ts +0 -45
- package/dist/types/exa/render.d.ts +0 -19
- package/dist/types/exa/researcher.d.ts +0 -9
- package/dist/types/exa/search.d.ts +0 -9
- package/dist/types/exa/types.d.ts +0 -155
- package/dist/types/exa/websets.d.ts +0 -9
- package/dist/types/exec/bash-executor.d.ts +0 -64
- package/dist/types/exec/exec.d.ts +0 -25
- package/dist/types/exec/idle-timeout-watchdog.d.ts +0 -18
- package/dist/types/exec/non-interactive-env.d.ts +0 -1
- package/dist/types/export/custom-share.d.ts +0 -20
- package/dist/types/export/html/index.d.ts +0 -10
- package/dist/types/export/html/template.generated.d.ts +0 -1
- package/dist/types/export/html/template.macro.d.ts +0 -5
- package/dist/types/export/ttsr.d.ts +0 -55
- package/dist/types/extensibility/custom-commands/bundled/ci-green/index.d.ts +0 -9
- package/dist/types/extensibility/custom-commands/index.d.ts +0 -2
- package/dist/types/extensibility/custom-commands/loader.d.ts +0 -29
- package/dist/types/extensibility/custom-commands/types.d.ts +0 -106
- package/dist/types/extensibility/custom-tools/index.d.ts +0 -6
- package/dist/types/extensibility/custom-tools/loader.d.ts +0 -69
- package/dist/types/extensibility/custom-tools/types.d.ts +0 -229
- package/dist/types/extensibility/custom-tools/wrapper.d.ts +0 -24
- package/dist/types/extensibility/extensions/compact-handler.d.ts +0 -26
- package/dist/types/extensibility/extensions/get-commands-handler.d.ts +0 -29
- package/dist/types/extensibility/extensions/index.d.ts +0 -9
- package/dist/types/extensibility/extensions/loader.d.ts +0 -43
- package/dist/types/extensibility/extensions/prefix-command-bridge.d.ts +0 -35
- package/dist/types/extensibility/extensions/runner.d.ts +0 -135
- package/dist/types/extensibility/extensions/types.d.ts +0 -920
- package/dist/types/extensibility/extensions/wrapper.d.ts +0 -55
- package/dist/types/extensibility/hooks/index.d.ts +0 -5
- package/dist/types/extensibility/hooks/loader.d.ts +0 -89
- package/dist/types/extensibility/hooks/runner.d.ts +0 -126
- package/dist/types/extensibility/hooks/tool-wrapper.d.ts +0 -25
- package/dist/types/extensibility/hooks/types.d.ts +0 -431
- package/dist/types/extensibility/plugins/doctor.d.ts +0 -3
- package/dist/types/extensibility/plugins/git-url.d.ts +0 -34
- package/dist/types/extensibility/plugins/index.d.ts +0 -8
- package/dist/types/extensibility/plugins/installer.d.ts +0 -5
- package/dist/types/extensibility/plugins/legacy-pi-compat.d.ts +0 -2
- package/dist/types/extensibility/plugins/loader.d.ts +0 -31
- package/dist/types/extensibility/plugins/manager.d.ts +0 -65
- package/dist/types/extensibility/plugins/marketplace/cache.d.ts +0 -41
- package/dist/types/extensibility/plugins/marketplace/fetcher.d.ts +0 -48
- package/dist/types/extensibility/plugins/marketplace/index.d.ts +0 -6
- package/dist/types/extensibility/plugins/marketplace/manager.d.ts +0 -57
- package/dist/types/extensibility/plugins/marketplace/registry.d.ts +0 -34
- package/dist/types/extensibility/plugins/marketplace/source-resolver.d.ts +0 -28
- package/dist/types/extensibility/plugins/marketplace/types.d.ts +0 -130
- package/dist/types/extensibility/plugins/parser.d.ts +0 -52
- package/dist/types/extensibility/plugins/security-scanner.d.ts +0 -31
- package/dist/types/extensibility/plugins/types.d.ts +0 -149
- package/dist/types/extensibility/runtime-skill-discovery.d.ts +0 -20
- package/dist/types/extensibility/shared-events.d.ts +0 -281
- package/dist/types/extensibility/skc-plugins/activation.d.ts +0 -14
- package/dist/types/extensibility/skc-plugins/compiler.d.ts +0 -19
- package/dist/types/extensibility/skc-plugins/constrained-hooks.d.ts +0 -29
- package/dist/types/extensibility/skc-plugins/index.d.ts +0 -18
- package/dist/types/extensibility/skc-plugins/injection.d.ts +0 -40
- package/dist/types/extensibility/skc-plugins/installer.d.ts +0 -13
- package/dist/types/extensibility/skc-plugins/loader.d.ts +0 -3
- package/dist/types/extensibility/skc-plugins/mcp-policy.d.ts +0 -26
- package/dist/types/extensibility/skc-plugins/observability.d.ts +0 -27
- package/dist/types/extensibility/skc-plugins/paths.d.ts +0 -8
- package/dist/types/extensibility/skc-plugins/prompt-appendix.d.ts +0 -16
- package/dist/types/extensibility/skc-plugins/registry.d.ts +0 -32
- package/dist/types/extensibility/skc-plugins/runtime-adapters.d.ts +0 -64
- package/dist/types/extensibility/skc-plugins/schema.d.ts +0 -3
- package/dist/types/extensibility/skc-plugins/session-validation.d.ts +0 -42
- package/dist/types/extensibility/skc-plugins/state.d.ts +0 -9
- package/dist/types/extensibility/skc-plugins/tools.d.ts +0 -8
- package/dist/types/extensibility/skc-plugins/types.d.ts +0 -220
- package/dist/types/extensibility/skc-plugins/validation.d.ts +0 -11
- package/dist/types/extensibility/skills.d.ts +0 -82
- package/dist/types/extensibility/slash-commands.d.ts +0 -48
- package/dist/types/extensibility/tool-proxy.d.ts +0 -4
- package/dist/types/extensibility/typebox.d.ts +0 -155
- package/dist/types/extensibility/utils.d.ts +0 -12
- package/dist/types/goals/index.d.ts +0 -3
- package/dist/types/goals/runtime.d.ts +0 -63
- package/dist/types/goals/state.d.ts +0 -32
- package/dist/types/goals/tools/goal-tool.d.ts +0 -62
- package/dist/types/harness-control-plane/classifier.d.ts +0 -13
- package/dist/types/harness-control-plane/control-endpoint.d.ts +0 -31
- package/dist/types/harness-control-plane/finalize.d.ts +0 -60
- package/dist/types/harness-control-plane/gc-adapter.d.ts +0 -3
- package/dist/types/harness-control-plane/operate.d.ts +0 -35
- package/dist/types/harness-control-plane/owner.d.ts +0 -53
- package/dist/types/harness-control-plane/phase-rollup.d.ts +0 -23
- package/dist/types/harness-control-plane/preserve.d.ts +0 -19
- package/dist/types/harness-control-plane/receipt-ingest.d.ts +0 -19
- package/dist/types/harness-control-plane/receipt-spool.d.ts +0 -19
- package/dist/types/harness-control-plane/receipts.d.ts +0 -149
- package/dist/types/harness-control-plane/rpc-adapter.d.ts +0 -69
- package/dist/types/harness-control-plane/seams.d.ts +0 -21
- package/dist/types/harness-control-plane/session-lease.d.ts +0 -65
- package/dist/types/harness-control-plane/state-machine.d.ts +0 -24
- package/dist/types/harness-control-plane/storage.d.ts +0 -81
- package/dist/types/harness-control-plane/types.d.ts +0 -187
- package/dist/types/hashline/anchors.d.ts +0 -20
- package/dist/types/hashline/apply.d.ts +0 -14
- package/dist/types/hashline/constants.d.ts +0 -19
- package/dist/types/hashline/diff-preview.d.ts +0 -2
- package/dist/types/hashline/diff.d.ts +0 -17
- package/dist/types/hashline/execute.d.ts +0 -4
- package/dist/types/hashline/hash.d.ts +0 -123
- package/dist/types/hashline/index.d.ts +0 -13
- package/dist/types/hashline/input.d.ts +0 -11
- package/dist/types/hashline/parser.d.ts +0 -7
- package/dist/types/hashline/prefixes.d.ts +0 -7
- package/dist/types/hashline/recovery.d.ts +0 -27
- package/dist/types/hashline/stream.d.ts +0 -2
- package/dist/types/hashline/types.d.ts +0 -77
- package/dist/types/hindsight/backend.d.ts +0 -13
- package/dist/types/hindsight/bank.d.ts +0 -54
- package/dist/types/hindsight/client.d.ts +0 -224
- package/dist/types/hindsight/config.d.ts +0 -51
- package/dist/types/hindsight/content.d.ts +0 -70
- package/dist/types/hindsight/index.d.ts +0 -8
- package/dist/types/hindsight/mental-models.d.ts +0 -125
- package/dist/types/hindsight/state.d.ts +0 -99
- package/dist/types/hindsight/transcript.d.ts +0 -28
- package/dist/types/hooks/codex-native-hooks-config.d.ts +0 -29
- package/dist/types/hooks/native-skill-hook.d.ts +0 -28
- package/dist/types/hooks/skill-keywords.d.ts +0 -18
- package/dist/types/hooks/skill-state.d.ts +0 -93
- package/dist/types/i18n/index.d.ts +0 -38
- package/dist/types/i18n/messages/de.d.ts +0 -2
- package/dist/types/i18n/messages/de.messages.d.ts +0 -1
- package/dist/types/i18n/messages/de.settings.d.ts +0 -1
- package/dist/types/i18n/messages/en.d.ts +0 -81
- package/dist/types/i18n/messages/es.d.ts +0 -2
- package/dist/types/i18n/messages/es.messages.d.ts +0 -1
- package/dist/types/i18n/messages/es.settings.d.ts +0 -1
- package/dist/types/i18n/messages/fr.d.ts +0 -2
- package/dist/types/i18n/messages/fr.messages.d.ts +0 -1
- package/dist/types/i18n/messages/fr.settings.d.ts +0 -1
- package/dist/types/i18n/messages/ja.d.ts +0 -2
- package/dist/types/i18n/messages/ja.messages.d.ts +0 -1
- package/dist/types/i18n/messages/ja.settings.d.ts +0 -1
- package/dist/types/i18n/messages/ko.d.ts +0 -2
- package/dist/types/i18n/messages/ko.messages.d.ts +0 -1
- package/dist/types/i18n/messages/ko.settings.d.ts +0 -1
- package/dist/types/i18n/messages/zh.d.ts +0 -2
- package/dist/types/i18n/messages/zh.messages.d.ts +0 -1
- package/dist/types/i18n/messages/zh.settings.d.ts +0 -1
- package/dist/types/index.d.ts +0 -33
- package/dist/types/internal-urls/agent-protocol.d.ts +0 -12
- package/dist/types/internal-urls/artifact-protocol.d.ts +0 -6
- package/dist/types/internal-urls/docs-index.generated.d.ts +0 -2
- package/dist/types/internal-urls/index.d.ts +0 -20
- package/dist/types/internal-urls/issue-pr-protocol.d.ts +0 -17
- package/dist/types/internal-urls/json-query.d.ts +0 -30
- package/dist/types/internal-urls/local-protocol.d.ts +0 -43
- package/dist/types/internal-urls/mcp-protocol.d.ts +0 -12
- package/dist/types/internal-urls/memory-protocol.d.ts +0 -23
- package/dist/types/internal-urls/parse.d.ts +0 -19
- package/dist/types/internal-urls/registry-helpers.d.ts +0 -11
- package/dist/types/internal-urls/router.d.ts +0 -14
- package/dist/types/internal-urls/rule-protocol.d.ts +0 -6
- package/dist/types/internal-urls/skc-protocol.d.ts +0 -12
- package/dist/types/internal-urls/skill-protocol.d.ts +0 -13
- package/dist/types/internal-urls/types.d.ts +0 -109
- package/dist/types/lsp/client.d.ts +0 -66
- package/dist/types/lsp/clients/biome-client.d.ts +0 -16
- package/dist/types/lsp/clients/index.d.ts +0 -19
- package/dist/types/lsp/clients/lsp-linter-client.d.ts +0 -16
- package/dist/types/lsp/clients/swiftlint-client.d.ts +0 -20
- package/dist/types/lsp/config.d.ts +0 -65
- package/dist/types/lsp/edits.d.ts +0 -23
- package/dist/types/lsp/index.d.ts +0 -130
- package/dist/types/lsp/lspmux.d.ts +0 -58
- package/dist/types/lsp/render.d.ts +0 -32
- package/dist/types/lsp/startup-events.d.ts +0 -12
- package/dist/types/lsp/types.d.ts +0 -306
- package/dist/types/lsp/utils.d.ts +0 -108
- package/dist/types/main.d.ts +0 -139
- package/dist/types/memories/index.d.ts +0 -28
- package/dist/types/memories/storage.d.ts +0 -110
- package/dist/types/memory-backend/index.d.ts +0 -4
- package/dist/types/memory-backend/local-backend.d.ts +0 -9
- package/dist/types/memory-backend/off-backend.d.ts +0 -7
- package/dist/types/memory-backend/resolve.d.ts +0 -15
- package/dist/types/memory-backend/types.d.ts +0 -61
- package/dist/types/migrate/action-planner.d.ts +0 -11
- package/dist/types/migrate/adapters/claude-code.d.ts +0 -2
- package/dist/types/migrate/adapters/codex.d.ts +0 -5
- package/dist/types/migrate/adapters/index.d.ts +0 -45
- package/dist/types/migrate/adapters/opencode.d.ts +0 -2
- package/dist/types/migrate/executor.d.ts +0 -2
- package/dist/types/migrate/mcp-mapper.d.ts +0 -20
- package/dist/types/migrate/report.d.ts +0 -18
- package/dist/types/migrate/skill-normalizer.d.ts +0 -27
- package/dist/types/migrate/types.d.ts +0 -126
- package/dist/types/modes/acp/acp-agent.d.ts +0 -78
- package/dist/types/modes/acp/acp-client-bridge.d.ts +0 -9
- package/dist/types/modes/acp/acp-event-mapper.d.ts +0 -36
- package/dist/types/modes/acp/acp-mode.d.ts +0 -17
- package/dist/types/modes/acp/index.d.ts +0 -2
- package/dist/types/modes/acp/terminal-auth.d.ts +0 -6
- package/dist/types/modes/bridge/auth.d.ts +0 -12
- package/dist/types/modes/bridge/bridge-client-bridge.d.ts +0 -9
- package/dist/types/modes/bridge/bridge-mode.d.ts +0 -47
- package/dist/types/modes/bridge/bridge-ui-context.d.ts +0 -88
- package/dist/types/modes/bridge/event-stream.d.ts +0 -8
- package/dist/types/modes/components/agent-dashboard.d.ts +0 -21
- package/dist/types/modes/components/assistant-message.d.ts +0 -20
- package/dist/types/modes/components/bash-execution.d.ts +0 -29
- package/dist/types/modes/components/bordered-loader.d.ts +0 -11
- package/dist/types/modes/components/branch-summary-message.d.ts +0 -13
- package/dist/types/modes/components/btw-panel.d.ts +0 -16
- package/dist/types/modes/components/compaction-summary-message.d.ts +0 -13
- package/dist/types/modes/components/countdown-timer.d.ts +0 -14
- package/dist/types/modes/components/custom-editor.d.ts +0 -69
- package/dist/types/modes/components/custom-message.d.ts +0 -15
- package/dist/types/modes/components/custom-model-preset-wizard.d.ts +0 -12
- package/dist/types/modes/components/custom-provider-wizard.d.ts +0 -10
- package/dist/types/modes/components/diff.d.ts +0 -11
- package/dist/types/modes/components/dynamic-border.d.ts +0 -14
- package/dist/types/modes/components/eval-execution.d.ts +0 -23
- package/dist/types/modes/components/execution-shared.d.ts +0 -46
- package/dist/types/modes/components/extensions/extension-dashboard.d.ts +0 -26
- package/dist/types/modes/components/extensions/extension-list.d.ts +0 -39
- package/dist/types/modes/components/extensions/index.d.ts +0 -8
- package/dist/types/modes/components/extensions/inspector-panel.d.ts +0 -8
- package/dist/types/modes/components/extensions/state-manager.d.ts +0 -50
- package/dist/types/modes/components/extensions/types.d.ts +0 -151
- package/dist/types/modes/components/footer.d.ts +0 -30
- package/dist/types/modes/components/history-search.d.ts +0 -7
- package/dist/types/modes/components/hook-editor.d.ts +0 -18
- package/dist/types/modes/components/hook-input.d.ts +0 -15
- package/dist/types/modes/components/hook-message.d.ts +0 -15
- package/dist/types/modes/components/hook-selector.d.ts +0 -59
- package/dist/types/modes/components/index.d.ts +0 -35
- package/dist/types/modes/components/irc-sidebar.d.ts +0 -32
- package/dist/types/modes/components/jobs-overlay-model.d.ts +0 -31
- package/dist/types/modes/components/jobs-overlay.d.ts +0 -30
- package/dist/types/modes/components/keybinding-hints.d.ts +0 -40
- package/dist/types/modes/components/login-dialog.d.ts +0 -32
- package/dist/types/modes/components/message-frame.d.ts +0 -42
- package/dist/types/modes/components/model-selector.d.ts +0 -60
- package/dist/types/modes/components/oauth-selector.d.ts +0 -17
- package/dist/types/modes/components/pet-selector.d.ts +0 -11
- package/dist/types/modes/components/plugin-selector.d.ts +0 -26
- package/dist/types/modes/components/plugin-settings.d.ts +0 -66
- package/dist/types/modes/components/provider-onboarding-selector.d.ts +0 -7
- package/dist/types/modes/components/queue-mode-selector.d.ts +0 -9
- package/dist/types/modes/components/queued-message-selector.d.ts +0 -12
- package/dist/types/modes/components/read-tool-group.d.ts +0 -30
- package/dist/types/modes/components/runtime-mcp-add-wizard.d.ts +0 -26
- package/dist/types/modes/components/sayknow-pet-widget.d.ts +0 -59
- package/dist/types/modes/components/session-observer-overlay.d.ts +0 -11
- package/dist/types/modes/components/session-selector.d.ts +0 -43
- package/dist/types/modes/components/settings-defs.d.ts +0 -50
- package/dist/types/modes/components/settings-selector.d.ts +0 -64
- package/dist/types/modes/components/show-images-selector.d.ts +0 -9
- package/dist/types/modes/components/skill-hud/render.d.ts +0 -2
- package/dist/types/modes/components/skill-message.d.ts +0 -10
- package/dist/types/modes/components/status-line/context-thresholds.d.ts +0 -4
- package/dist/types/modes/components/status-line/git-utils.d.ts +0 -28
- package/dist/types/modes/components/status-line/index.d.ts +0 -4
- package/dist/types/modes/components/status-line/presets.d.ts +0 -3
- package/dist/types/modes/components/status-line/segments.d.ts +0 -5
- package/dist/types/modes/components/status-line/separators.d.ts +0 -3
- package/dist/types/modes/components/status-line/token-rate.d.ts +0 -10
- package/dist/types/modes/components/status-line/types.d.ts +0 -83
- package/dist/types/modes/components/status-line.d.ts +0 -94
- package/dist/types/modes/components/theme-selector.d.ts +0 -10
- package/dist/types/modes/components/thinking-selector.d.ts +0 -15
- package/dist/types/modes/components/todo-reminder.d.ts +0 -13
- package/dist/types/modes/components/tool-execution.d.ts +0 -55
- package/dist/types/modes/components/tree-selector.d.ts +0 -31
- package/dist/types/modes/components/ttsr-notification.d.ts +0 -13
- package/dist/types/modes/components/two-column-body.d.ts +0 -9
- package/dist/types/modes/components/user-message-selector.d.ts +0 -28
- package/dist/types/modes/components/user-message.d.ts +0 -8
- package/dist/types/modes/components/visual-truncate.d.ts +0 -19
- package/dist/types/modes/components/welcome.d.ts +0 -46
- package/dist/types/modes/controllers/btw-controller.d.ts +0 -10
- package/dist/types/modes/controllers/command-controller-shared.d.ts +0 -47
- package/dist/types/modes/controllers/command-controller.d.ts +0 -40
- package/dist/types/modes/controllers/event-controller.d.ts +0 -21
- package/dist/types/modes/controllers/extension-ui-controller.d.ts +0 -80
- package/dist/types/modes/controllers/input-controller.d.ts +0 -42
- package/dist/types/modes/controllers/runtime-mcp-command-controller.d.ts +0 -10
- package/dist/types/modes/controllers/selector-controller.d.ts +0 -68
- package/dist/types/modes/controllers/ssh-command-controller.d.ts +0 -10
- package/dist/types/modes/controllers/todo-command-controller.d.ts +0 -7
- package/dist/types/modes/emoji-autocomplete.d.ts +0 -16
- package/dist/types/modes/index.d.ts +0 -10
- package/dist/types/modes/interactive-mode.d.ts +0 -297
- package/dist/types/modes/irc-observation-ledger.d.ts +0 -22
- package/dist/types/modes/jobs-observer.d.ts +0 -57
- package/dist/types/modes/oauth-manual-input.d.ts +0 -8
- package/dist/types/modes/print-mode.d.ts +0 -44
- package/dist/types/modes/prompt-action-autocomplete.d.ts +0 -50
- package/dist/types/modes/rpc/host-tools.d.ts +0 -1
- package/dist/types/modes/rpc/host-uris.d.ts +0 -1
- package/dist/types/modes/rpc/rpc-client.d.ts +0 -299
- package/dist/types/modes/rpc/rpc-mode.d.ts +0 -86
- package/dist/types/modes/rpc/rpc-socket-security.d.ts +0 -10
- package/dist/types/modes/rpc/rpc-types.d.ts +0 -810
- package/dist/types/modes/runtime-init.d.ts +0 -21
- package/dist/types/modes/session-observer-registry.d.ts +0 -26
- package/dist/types/modes/shared/agent-wire/approval-gate.d.ts +0 -57
- package/dist/types/modes/shared/agent-wire/command-contract.d.ts +0 -18
- package/dist/types/modes/shared/agent-wire/command-dispatch.d.ts +0 -37
- package/dist/types/modes/shared/agent-wire/command-validation.d.ts +0 -2
- package/dist/types/modes/shared/agent-wire/deep-interview-gate.d.ts +0 -102
- package/dist/types/modes/shared/agent-wire/event-contract.d.ts +0 -103
- package/dist/types/modes/shared/agent-wire/event-envelope.d.ts +0 -60
- package/dist/types/modes/shared/agent-wire/event-observation.d.ts +0 -37
- package/dist/types/modes/shared/agent-wire/handshake.d.ts +0 -56
- package/dist/types/modes/shared/agent-wire/host-tool-bridge.d.ts +0 -16
- package/dist/types/modes/shared/agent-wire/host-uri-bridge.d.ts +0 -17
- package/dist/types/modes/shared/agent-wire/protocol.d.ts +0 -25
- package/dist/types/modes/shared/agent-wire/responses.d.ts +0 -4
- package/dist/types/modes/shared/agent-wire/scopes.d.ts +0 -18
- package/dist/types/modes/shared/agent-wire/session-registry.d.ts +0 -25
- package/dist/types/modes/shared/agent-wire/ui-request-broker.d.ts +0 -42
- package/dist/types/modes/shared/agent-wire/ui-result.d.ts +0 -27
- package/dist/types/modes/shared/agent-wire/unattended-action-policy.d.ts +0 -29
- package/dist/types/modes/shared/agent-wire/unattended-audit.d.ts +0 -68
- package/dist/types/modes/shared/agent-wire/unattended-run-controller.d.ts +0 -166
- package/dist/types/modes/shared/agent-wire/unattended-session.d.ts +0 -127
- package/dist/types/modes/shared/agent-wire/workflow-gate-broker.d.ts +0 -154
- package/dist/types/modes/shared/agent-wire/workflow-gate-schema.d.ts +0 -39
- package/dist/types/modes/shared.d.ts +0 -15
- package/dist/types/modes/slash-command-visibility.d.ts +0 -1
- package/dist/types/modes/theme/defaults/index.d.ts +0 -652
- package/dist/types/modes/theme/mermaid-cache.d.ts +0 -9
- package/dist/types/modes/theme/shimmer.d.ts +0 -38
- package/dist/types/modes/theme/theme.d.ts +0 -275
- package/dist/types/modes/tmux-scroll.d.ts +0 -18
- package/dist/types/modes/types.d.ts +0 -318
- package/dist/types/modes/utils/abort-message.d.ts +0 -4
- package/dist/types/modes/utils/context-usage.d.ts +0 -36
- package/dist/types/modes/utils/hotkeys-markdown.d.ts +0 -5
- package/dist/types/modes/utils/injected-user-submission.d.ts +0 -52
- package/dist/types/modes/utils/irc-message.d.ts +0 -38
- package/dist/types/modes/utils/keybinding-matchers.d.ts +0 -10
- package/dist/types/modes/utils/terminal-bell.d.ts +0 -3
- package/dist/types/modes/utils/tools-markdown.d.ts +0 -5
- package/dist/types/modes/utils/ui-helpers.d.ts +0 -75
- package/dist/types/notifications/attachment-registry.d.ts +0 -17
- package/dist/types/notifications/chat-adapters.d.ts +0 -9
- package/dist/types/notifications/config-commands.d.ts +0 -64
- package/dist/types/notifications/config.d.ts +0 -132
- package/dist/types/notifications/daemon-paths.d.ts +0 -17
- package/dist/types/notifications/engine.d.ts +0 -59
- package/dist/types/notifications/helpers.d.ts +0 -55
- package/dist/types/notifications/html-format.d.ts +0 -75
- package/dist/types/notifications/index.d.ts +0 -219
- package/dist/types/notifications/lifecycle-commands.d.ts +0 -69
- package/dist/types/notifications/lifecycle-control-runtime.d.ts +0 -107
- package/dist/types/notifications/lifecycle-orchestrator.d.ts +0 -144
- package/dist/types/notifications/managed-daemon.d.ts +0 -48
- package/dist/types/notifications/notification-service.d.ts +0 -144
- package/dist/types/notifications/operator-runtime.d.ts +0 -52
- package/dist/types/notifications/rate-limit-pool.d.ts +0 -113
- package/dist/types/notifications/recent-activity.d.ts +0 -39
- package/dist/types/notifications/reply-sent-store.d.ts +0 -53
- package/dist/types/notifications/rich-draft.d.ts +0 -68
- package/dist/types/notifications/rich-render.d.ts +0 -90
- package/dist/types/notifications/telegram-cli.d.ts +0 -19
- package/dist/types/notifications/telegram-daemon-cli.d.ts +0 -28
- package/dist/types/notifications/telegram-daemon-control.d.ts +0 -70
- package/dist/types/notifications/telegram-daemon.d.ts +0 -558
- package/dist/types/notifications/telegram-reference.d.ts +0 -136
- package/dist/types/notifications/threaded-inbound.d.ts +0 -77
- package/dist/types/notifications/threaded-render.d.ts +0 -88
- package/dist/types/notifications/topic-registry.d.ts +0 -89
- package/dist/types/plan-mode/approved-plan.d.ts +0 -49
- package/dist/types/plan-mode/state.d.ts +0 -6
- package/dist/types/registry/agent-registry.d.ts +0 -64
- package/dist/types/reminders/star-reminder.d.ts +0 -115
- package/dist/types/research-plan/index.d.ts +0 -1
- package/dist/types/research-plan/ledger.d.ts +0 -33
- package/dist/types/rlm/artifacts.d.ts +0 -9
- package/dist/types/rlm/complete-research-tool.d.ts +0 -35
- package/dist/types/rlm/data-context.d.ts +0 -6
- package/dist/types/rlm/index.d.ts +0 -47
- package/dist/types/rlm/notebook.d.ts +0 -12
- package/dist/types/rlm/preset.d.ts +0 -23
- package/dist/types/rlm/python-tool.d.ts +0 -16
- package/dist/types/rlm/report.d.ts +0 -14
- package/dist/types/rlm/types.d.ts +0 -37
- package/dist/types/runtime/process-lifecycle.d.ts +0 -108
- package/dist/types/runtime-api-key.d.ts +0 -7
- package/dist/types/runtime-credential-selector.d.ts +0 -7
- package/dist/types/runtime-mcp/client.d.ts +0 -74
- package/dist/types/runtime-mcp/config-writer.d.ts +0 -89
- package/dist/types/runtime-mcp/config.d.ts +0 -77
- package/dist/types/runtime-mcp/discoverable-tool-metadata.d.ts +0 -7
- package/dist/types/runtime-mcp/index.d.ts +0 -18
- package/dist/types/runtime-mcp/json-rpc.d.ts +0 -22
- package/dist/types/runtime-mcp/loader.d.ts +0 -45
- package/dist/types/runtime-mcp/manager.d.ts +0 -195
- package/dist/types/runtime-mcp/oauth-discovery.d.ts +0 -40
- package/dist/types/runtime-mcp/oauth-flow.d.ts +0 -59
- package/dist/types/runtime-mcp/render.d.ts +0 -25
- package/dist/types/runtime-mcp/smithery-auth.d.ts +0 -16
- package/dist/types/runtime-mcp/smithery-connect.d.ts +0 -38
- package/dist/types/runtime-mcp/smithery-registry.d.ts +0 -51
- package/dist/types/runtime-mcp/tool-bridge.d.ts +0 -86
- package/dist/types/runtime-mcp/tool-cache.d.ts +0 -8
- package/dist/types/runtime-mcp/transports/http.d.ts +0 -36
- package/dist/types/runtime-mcp/transports/index.d.ts +0 -5
- package/dist/types/runtime-mcp/transports/stdio.d.ts +0 -29
- package/dist/types/runtime-mcp/types.d.ts +0 -349
- package/dist/types/sdk.d.ts +0 -256
- package/dist/types/secrets/index.d.ts +0 -9
- package/dist/types/secrets/obfuscator.d.ts +0 -23
- package/dist/types/secrets/regex.d.ts +0 -2
- package/dist/types/session/agent-session.d.ts +0 -1238
- package/dist/types/session/agent-storage.d.ts +0 -101
- package/dist/types/session/artifacts.d.ts +0 -64
- package/dist/types/session/auth-broker-config.d.ts +0 -13
- package/dist/types/session/auth-storage.d.ts +0 -6
- package/dist/types/session/blob-store.d.ts +0 -160
- package/dist/types/session/cache-economics.d.ts +0 -79
- package/dist/types/session/client-bridge.d.ts +0 -88
- package/dist/types/session/context-estimation.d.ts +0 -31
- package/dist/types/session/contribution-prep.d.ts +0 -47
- package/dist/types/session/file-mention-pruning.d.ts +0 -8
- package/dist/types/session/history-storage.d.ts +0 -16
- package/dist/types/session/messages.d.ts +0 -169
- package/dist/types/session/provider-safety-stop.d.ts +0 -5
- package/dist/types/session/session-dump-format.d.ts +0 -22
- package/dist/types/session/session-manager.d.ts +0 -781
- package/dist/types/session/session-storage.d.ts +0 -230
- package/dist/types/session/streaming-output.d.ts +0 -209
- package/dist/types/session/tool-choice-queue.d.ts +0 -84
- package/dist/types/session/yield-queue.d.ts +0 -24
- package/dist/types/setup/credential-auto-import.d.ts +0 -63
- package/dist/types/setup/credential-import.d.ts +0 -82
- package/dist/types/setup/hermes-setup.d.ts +0 -78
- package/dist/types/setup/host-plugin-setup.d.ts +0 -39
- package/dist/types/setup/model-onboarding-guidance.d.ts +0 -9
- package/dist/types/setup/provider-onboarding.d.ts +0 -52
- package/dist/types/skc-runtime/cli-write-receipt.d.ts +0 -24
- package/dist/types/skc-runtime/deep-interview-ambiguity.d.ts +0 -39
- package/dist/types/skc-runtime/deep-interview-recorder.d.ts +0 -114
- package/dist/types/skc-runtime/deep-interview-runtime.d.ts +0 -36
- package/dist/types/skc-runtime/deep-interview-state.d.ts +0 -127
- package/dist/types/skc-runtime/gc-render.d.ts +0 -6
- package/dist/types/skc-runtime/gc-runtime.d.ts +0 -134
- package/dist/types/skc-runtime/goal-mode-request.d.ts +0 -53
- package/dist/types/skc-runtime/launch-tmux.d.ts +0 -78
- package/dist/types/skc-runtime/launch-worktree.d.ts +0 -46
- package/dist/types/skc-runtime/ledger-event-renderer.d.ts +0 -68
- package/dist/types/skc-runtime/psmux-detect.d.ts +0 -78
- package/dist/types/skc-runtime/ralplan-runtime.d.ts +0 -26
- package/dist/types/skc-runtime/restricted-role-agent-bash.d.ts +0 -3
- package/dist/types/skc-runtime/session-layout.d.ts +0 -59
- package/dist/types/skc-runtime/session-resolution.d.ts +0 -47
- package/dist/types/skc-runtime/session-state-sidecar.d.ts +0 -70
- package/dist/types/skc-runtime/state-graph.d.ts +0 -4
- package/dist/types/skc-runtime/state-migrations.d.ts +0 -33
- package/dist/types/skc-runtime/state-renderer.d.ts +0 -70
- package/dist/types/skc-runtime/state-runtime.d.ts +0 -38
- package/dist/types/skc-runtime/state-schema.d.ts +0 -319
- package/dist/types/skc-runtime/state-validation.d.ts +0 -6
- package/dist/types/skc-runtime/state-writer.d.ts +0 -244
- package/dist/types/skc-runtime/team-gc.d.ts +0 -7
- package/dist/types/skc-runtime/team-runtime.d.ts +0 -355
- package/dist/types/skc-runtime/tmux-common.d.ts +0 -111
- package/dist/types/skc-runtime/tmux-gc.d.ts +0 -7
- package/dist/types/skc-runtime/tmux-owner-isolation-cli.d.ts +0 -5
- package/dist/types/skc-runtime/tmux-owner-isolation.d.ts +0 -309
- package/dist/types/skc-runtime/tmux-sessions.d.ts +0 -94
- package/dist/types/skc-runtime/ultragoal-guard.d.ts +0 -93
- package/dist/types/skc-runtime/ultragoal-receipt-freshness.d.ts +0 -42
- package/dist/types/skc-runtime/ultragoal-runtime.d.ts +0 -410
- package/dist/types/skc-runtime/workflow-command-ref.d.ts +0 -43
- package/dist/types/skc-runtime/workflow-manifest.d.ts +0 -54
- package/dist/types/skill-state/active-state.d.ts +0 -126
- package/dist/types/skill-state/canonical-skills.d.ts +0 -3
- package/dist/types/skill-state/deep-interview-mutation-guard.d.ts +0 -38
- package/dist/types/skill-state/initial-phase.d.ts +0 -12
- package/dist/types/skill-state/workflow-hud.d.ts +0 -83
- package/dist/types/skill-state/workflow-state-contract.d.ts +0 -57
- package/dist/types/skill-state/workflow-state-version.d.ts +0 -3
- package/dist/types/slash-commands/acp-builtins.d.ts +0 -18
- package/dist/types/slash-commands/builtin-registry.d.ts +0 -24
- package/dist/types/slash-commands/helpers/context-report.d.ts +0 -7
- package/dist/types/slash-commands/helpers/fast-status-report.d.ts +0 -82
- package/dist/types/slash-commands/helpers/format.d.ts +0 -10
- package/dist/types/slash-commands/helpers/mcp.d.ts +0 -3
- package/dist/types/slash-commands/helpers/parse.d.ts +0 -33
- package/dist/types/slash-commands/helpers/ssh.d.ts +0 -3
- package/dist/types/slash-commands/helpers/todo.d.ts +0 -3
- package/dist/types/slash-commands/helpers/usage-report.d.ts +0 -7
- package/dist/types/slash-commands/types.d.ts +0 -120
- package/dist/types/ssh/config-writer.d.ts +0 -49
- package/dist/types/ssh/connection-manager.d.ts +0 -33
- package/dist/types/ssh/ssh-executor.d.ts +0 -37
- package/dist/types/ssh/sshfs-mount.d.ts +0 -6
- package/dist/types/ssh/utils.d.ts +0 -2
- package/dist/types/stt/downloader.d.ts +0 -9
- package/dist/types/stt/index.d.ts +0 -3
- package/dist/types/stt/recorder.d.ts +0 -13
- package/dist/types/stt/setup.d.ts +0 -18
- package/dist/types/stt/stt-controller.d.ts +0 -16
- package/dist/types/stt/transcriber.d.ts +0 -16
- package/dist/types/system-prompt.d.ts +0 -118
- package/dist/types/task/agents.d.ts +0 -28
- package/dist/types/task/commands.d.ts +0 -35
- package/dist/types/task/discovery.d.ts +0 -19
- package/dist/types/task/executor.d.ts +0 -127
- package/dist/types/task/fork-context-advisory.d.ts +0 -13
- package/dist/types/task/fork-context-budget.d.ts +0 -7
- package/dist/types/task/id.d.ts +0 -7
- package/dist/types/task/index.d.ts +0 -43
- package/dist/types/task/name-generator.d.ts +0 -16
- package/dist/types/task/output-manager.d.ts +0 -36
- package/dist/types/task/parallel.d.ts +0 -34
- package/dist/types/task/receipt.d.ts +0 -89
- package/dist/types/task/render.d.ts +0 -28
- package/dist/types/task/roi-reconciliation.d.ts +0 -27
- package/dist/types/task/simple-mode.d.ts +0 -8
- package/dist/types/task/skc-command.d.ts +0 -7
- package/dist/types/task/spawn-gate.d.ts +0 -29
- package/dist/types/task/subprocess-tool-registry.d.ts +0 -72
- package/dist/types/task/token-log.d.ts +0 -30
- package/dist/types/task/token-log.test.d.ts +0 -1
- package/dist/types/task/types.d.ts +0 -516
- package/dist/types/task/worktree.d.ts +0 -94
- package/dist/types/thinking-metadata.d.ts +0 -16
- package/dist/types/thinking.d.ts +0 -22
- package/dist/types/tool-discovery/tool-index.d.ts +0 -112
- package/dist/types/tools/archive-reader.d.ts +0 -40
- package/dist/types/tools/ask-answer-registry.d.ts +0 -18
- package/dist/types/tools/ask.d.ts +0 -123
- package/dist/types/tools/ast-edit.d.ts +0 -77
- package/dist/types/tools/ast-grep.d.ts +0 -69
- package/dist/types/tools/auto-generated-guard.d.ts +0 -17
- package/dist/types/tools/bash-allowed-prefixes.d.ts +0 -10
- package/dist/types/tools/bash-command-fixup.d.ts +0 -11
- package/dist/types/tools/bash-interactive.d.ts +0 -16
- package/dist/types/tools/bash-interceptor.d.ts +0 -24
- package/dist/types/tools/bash-pty-selection.d.ts +0 -7
- package/dist/types/tools/bash-skill-urls.d.ts +0 -31
- package/dist/types/tools/bash.d.ts +0 -157
- package/dist/types/tools/bisect.d.ts +0 -81
- package/dist/types/tools/browser/actions.d.ts +0 -54
- package/dist/types/tools/browser/attach.d.ts +0 -50
- package/dist/types/tools/browser/launch.d.ts +0 -62
- package/dist/types/tools/browser/readable.d.ts +0 -17
- package/dist/types/tools/browser/registry.d.ts +0 -57
- package/dist/types/tools/browser/render.d.ts +0 -53
- package/dist/types/tools/browser/tab-protocol.d.ts +0 -144
- package/dist/types/tools/browser/tab-supervisor.d.ts +0 -109
- package/dist/types/tools/browser/tab-worker-entry.d.ts +0 -1
- package/dist/types/tools/browser/tab-worker.d.ts +0 -19
- package/dist/types/tools/browser.d.ts +0 -211
- package/dist/types/tools/calculator.d.ts +0 -76
- package/dist/types/tools/checkpoint.d.ts +0 -63
- package/dist/types/tools/composer-bash-policy.d.ts +0 -14
- package/dist/types/tools/computer/render.d.ts +0 -17
- package/dist/types/tools/computer-gc.d.ts +0 -23
- package/dist/types/tools/computer.d.ts +0 -465
- package/dist/types/tools/conflict-detect.d.ts +0 -205
- package/dist/types/tools/context.d.ts +0 -19
- package/dist/types/tools/cron.d.ts +0 -91
- package/dist/types/tools/debug.d.ts +0 -209
- package/dist/types/tools/eval.d.ts +0 -108
- package/dist/types/tools/fetch.d.ts +0 -84
- package/dist/types/tools/file-recorder.d.ts +0 -13
- package/dist/types/tools/find.d.ts +0 -95
- package/dist/types/tools/fs-cache-invalidation.d.ts +0 -15
- package/dist/types/tools/gh-format.d.ts +0 -6
- package/dist/types/tools/gh-renderer.d.ts +0 -25
- package/dist/types/tools/gh.d.ts +0 -356
- package/dist/types/tools/github-cache.d.ts +0 -103
- package/dist/types/tools/grouped-file-output.d.ts +0 -36
- package/dist/types/tools/hindsight-recall.d.ts +0 -21
- package/dist/types/tools/hindsight-reflect.d.ts +0 -23
- package/dist/types/tools/hindsight-retain.d.ts +0 -27
- package/dist/types/tools/image-gen.d.ts +0 -79
- package/dist/types/tools/index.d.ts +0 -371
- package/dist/types/tools/irc.d.ts +0 -79
- package/dist/types/tools/job.d.ts +0 -78
- package/dist/types/tools/json-tree.d.ts +0 -23
- package/dist/types/tools/jtd-to-json-schema.d.ts +0 -29
- package/dist/types/tools/jtd-to-typescript.d.ts +0 -26
- package/dist/types/tools/jtd-utils.d.ts +0 -42
- package/dist/types/tools/list-limit.d.ts +0 -12
- package/dist/types/tools/match-line-format.d.ts +0 -11
- package/dist/types/tools/monitor.d.ts +0 -54
- package/dist/types/tools/output-meta.d.ts +0 -204
- package/dist/types/tools/path-utils.d.ts +0 -147
- package/dist/types/tools/plan-mode-guard.d.ts +0 -18
- package/dist/types/tools/read.d.ts +0 -85
- package/dist/types/tools/recipe/index.d.ts +0 -45
- package/dist/types/tools/recipe/render.d.ts +0 -36
- package/dist/types/tools/recipe/runner.d.ts +0 -60
- package/dist/types/tools/recipe/runners/cargo.d.ts +0 -16
- package/dist/types/tools/recipe/runners/index.d.ts +0 -2
- package/dist/types/tools/recipe/runners/just.d.ts +0 -2
- package/dist/types/tools/recipe/runners/make.d.ts +0 -2
- package/dist/types/tools/recipe/runners/pkg.d.ts +0 -2
- package/dist/types/tools/recipe/runners/task.d.ts +0 -2
- package/dist/types/tools/render-mermaid.d.ts +0 -37
- package/dist/types/tools/render-utils.d.ts +0 -158
- package/dist/types/tools/renderers.d.ts +0 -26
- package/dist/types/tools/resolve.d.ts +0 -80
- package/dist/types/tools/resource-gc.d.ts +0 -54
- package/dist/types/tools/review.d.ts +0 -63
- package/dist/types/tools/search-tool-bm25.d.ts +0 -65
- package/dist/types/tools/search.d.ts +0 -93
- package/dist/types/tools/skill-discovery.d.ts +0 -40
- package/dist/types/tools/skill.d.ts +0 -48
- package/dist/types/tools/sqlite-reader.d.ts +0 -94
- package/dist/types/tools/ssh.d.ts +0 -67
- package/dist/types/tools/subagent-render.d.ts +0 -31
- package/dist/types/tools/subagent.d.ts +0 -117
- package/dist/types/tools/telegram-send.d.ts +0 -39
- package/dist/types/tools/todo-write.d.ts +0 -120
- package/dist/types/tools/tool-errors.d.ts +0 -33
- package/dist/types/tools/tool-result.d.ts +0 -30
- package/dist/types/tools/tool-timeouts.d.ts +0 -56
- package/dist/types/tools/ultragoal-ask-guard.d.ts +0 -12
- package/dist/types/tools/vim.d.ts +0 -58
- package/dist/types/tools/write.d.ts +0 -59
- package/dist/types/tools/yield.d.ts +0 -25
- package/dist/types/tui/code-cell.d.ts +0 -32
- package/dist/types/tui/file-list.d.ts +0 -22
- package/dist/types/tui/hyperlink.d.ts +0 -42
- package/dist/types/tui/index.d.ts +0 -11
- package/dist/types/tui/output-block.d.ts +0 -28
- package/dist/types/tui/status-line.d.ts +0 -18
- package/dist/types/tui/tree-list.d.ts +0 -19
- package/dist/types/tui/types.d.ts +0 -13
- package/dist/types/tui/utils.d.ts +0 -36
- package/dist/types/utils/changelog.d.ts +0 -37
- package/dist/types/utils/clipboard.d.ts +0 -22
- package/dist/types/utils/cmux-workspace.d.ts +0 -52
- package/dist/types/utils/command-args.d.ts +0 -9
- package/dist/types/utils/commit-message-generator.d.ts +0 -7
- package/dist/types/utils/edit-mode.d.ts +0 -13
- package/dist/types/utils/event-bus.d.ts +0 -6
- package/dist/types/utils/external-editor.d.ts +0 -19
- package/dist/types/utils/file-display-mode.d.ts +0 -27
- package/dist/types/utils/file-mentions.d.ts +0 -25
- package/dist/types/utils/git.d.ts +0 -393
- package/dist/types/utils/image-loading.d.ts +0 -26
- package/dist/types/utils/image-resize.d.ts +0 -39
- package/dist/types/utils/lang-from-path.d.ts +0 -8
- package/dist/types/utils/linkedom.d.ts +0 -4
- package/dist/types/utils/markit.d.ts +0 -7
- package/dist/types/utils/open.d.ts +0 -2
- package/dist/types/utils/pasted-image-path.d.ts +0 -32
- package/dist/types/utils/session-color.d.ts +0 -10
- package/dist/types/utils/shell-snapshot.d.ts +0 -5
- package/dist/types/utils/sixel.d.ts +0 -21
- package/dist/types/utils/title-generator.d.ts +0 -31
- package/dist/types/utils/tool-choice.d.ts +0 -20
- package/dist/types/utils/tools-manager.d.ts +0 -9
- package/dist/types/vim/buffer.d.ts +0 -41
- package/dist/types/vim/commands.d.ts +0 -6
- package/dist/types/vim/engine.d.ts +0 -47
- package/dist/types/vim/parser.d.ts +0 -3
- package/dist/types/vim/render.d.ts +0 -25
- package/dist/types/vim/types.d.ts +0 -182
- package/dist/types/web/insane/bridge.d.ts +0 -103
- package/dist/types/web/insane/url-guard.d.ts +0 -25
- package/dist/types/web/kagi.d.ts +0 -23
- package/dist/types/web/parallel.d.ts +0 -58
- package/dist/types/web/scrapers/artifacthub.d.ts +0 -6
- package/dist/types/web/scrapers/arxiv.d.ts +0 -5
- package/dist/types/web/scrapers/aur.d.ts +0 -5
- package/dist/types/web/scrapers/biorxiv.d.ts +0 -5
- package/dist/types/web/scrapers/bluesky.d.ts +0 -5
- package/dist/types/web/scrapers/brew.d.ts +0 -5
- package/dist/types/web/scrapers/cheatsh.d.ts +0 -8
- package/dist/types/web/scrapers/chocolatey.d.ts +0 -5
- package/dist/types/web/scrapers/choosealicense.d.ts +0 -2
- package/dist/types/web/scrapers/cisa-kev.d.ts +0 -5
- package/dist/types/web/scrapers/clojars.d.ts +0 -5
- package/dist/types/web/scrapers/coingecko.d.ts +0 -5
- package/dist/types/web/scrapers/crates-io.d.ts +0 -5
- package/dist/types/web/scrapers/crossref.d.ts +0 -2
- package/dist/types/web/scrapers/devto.d.ts +0 -5
- package/dist/types/web/scrapers/discogs.d.ts +0 -8
- package/dist/types/web/scrapers/discourse.d.ts +0 -5
- package/dist/types/web/scrapers/dockerhub.d.ts +0 -5
- package/dist/types/web/scrapers/docs-rs.d.ts +0 -2
- package/dist/types/web/scrapers/fdroid.d.ts +0 -5
- package/dist/types/web/scrapers/firefox-addons.d.ts +0 -2
- package/dist/types/web/scrapers/flathub.d.ts +0 -2
- package/dist/types/web/scrapers/github-gist.d.ts +0 -5
- package/dist/types/web/scrapers/github.d.ts +0 -12
- package/dist/types/web/scrapers/gitlab.d.ts +0 -5
- package/dist/types/web/scrapers/go-pkg.d.ts +0 -5
- package/dist/types/web/scrapers/hackage.d.ts +0 -5
- package/dist/types/web/scrapers/hackernews.d.ts +0 -2
- package/dist/types/web/scrapers/hex.d.ts +0 -5
- package/dist/types/web/scrapers/huggingface.d.ts +0 -2
- package/dist/types/web/scrapers/iacr.d.ts +0 -5
- package/dist/types/web/scrapers/index.d.ts +0 -84
- package/dist/types/web/scrapers/jetbrains-marketplace.d.ts +0 -2
- package/dist/types/web/scrapers/lemmy.d.ts +0 -2
- package/dist/types/web/scrapers/lobsters.d.ts +0 -5
- package/dist/types/web/scrapers/mastodon.d.ts +0 -5
- package/dist/types/web/scrapers/maven.d.ts +0 -6
- package/dist/types/web/scrapers/mdn.d.ts +0 -2
- package/dist/types/web/scrapers/metacpan.d.ts +0 -5
- package/dist/types/web/scrapers/musicbrainz.d.ts +0 -5
- package/dist/types/web/scrapers/npm.d.ts +0 -5
- package/dist/types/web/scrapers/nuget.d.ts +0 -5
- package/dist/types/web/scrapers/nvd.d.ts +0 -5
- package/dist/types/web/scrapers/ollama.d.ts +0 -2
- package/dist/types/web/scrapers/open-vsx.d.ts +0 -5
- package/dist/types/web/scrapers/opencorporates.d.ts +0 -5
- package/dist/types/web/scrapers/openlibrary.d.ts +0 -5
- package/dist/types/web/scrapers/orcid.d.ts +0 -5
- package/dist/types/web/scrapers/osv.d.ts +0 -5
- package/dist/types/web/scrapers/packagist.d.ts +0 -5
- package/dist/types/web/scrapers/pub-dev.d.ts +0 -5
- package/dist/types/web/scrapers/pubmed.d.ts +0 -5
- package/dist/types/web/scrapers/pypi.d.ts +0 -5
- package/dist/types/web/scrapers/rawg.d.ts +0 -2
- package/dist/types/web/scrapers/readthedocs.d.ts +0 -2
- package/dist/types/web/scrapers/reddit.d.ts +0 -5
- package/dist/types/web/scrapers/repology.d.ts +0 -5
- package/dist/types/web/scrapers/rfc.d.ts +0 -5
- package/dist/types/web/scrapers/rubygems.d.ts +0 -5
- package/dist/types/web/scrapers/searchcode.d.ts +0 -2
- package/dist/types/web/scrapers/sec-edgar.d.ts +0 -5
- package/dist/types/web/scrapers/semantic-scholar.d.ts +0 -2
- package/dist/types/web/scrapers/snapcraft.d.ts +0 -2
- package/dist/types/web/scrapers/sourcegraph.d.ts +0 -2
- package/dist/types/web/scrapers/spdx.d.ts +0 -5
- package/dist/types/web/scrapers/spotify.d.ts +0 -8
- package/dist/types/web/scrapers/stackoverflow.d.ts +0 -6
- package/dist/types/web/scrapers/terraform.d.ts +0 -5
- package/dist/types/web/scrapers/tldr.d.ts +0 -7
- package/dist/types/web/scrapers/twitter.d.ts +0 -5
- package/dist/types/web/scrapers/types.d.ts +0 -83
- package/dist/types/web/scrapers/utils.d.ts +0 -32
- package/dist/types/web/scrapers/vimeo.d.ts +0 -5
- package/dist/types/web/scrapers/vscode-marketplace.d.ts +0 -5
- package/dist/types/web/scrapers/w3c.d.ts +0 -2
- package/dist/types/web/scrapers/wikidata.d.ts +0 -5
- package/dist/types/web/scrapers/wikipedia.d.ts +0 -5
- package/dist/types/web/scrapers/youtube.d.ts +0 -13
- package/dist/types/web/search/index.d.ts +0 -118
- package/dist/types/web/search/provider.d.ts +0 -55
- package/dist/types/web/search/providers/anthropic.d.ts +0 -32
- package/dist/types/web/search/providers/base.d.ts +0 -90
- package/dist/types/web/search/providers/brave.d.ts +0 -27
- package/dist/types/web/search/providers/codex.d.ts +0 -35
- package/dist/types/web/search/providers/duckduckgo.d.ts +0 -57
- package/dist/types/web/search/providers/exa.d.ts +0 -52
- package/dist/types/web/search/providers/gemini.d.ts +0 -57
- package/dist/types/web/search/providers/insane.d.ts +0 -53
- package/dist/types/web/search/providers/jina.d.ts +0 -26
- package/dist/types/web/search/providers/kagi.d.ts +0 -24
- package/dist/types/web/search/providers/kimi.d.ts +0 -27
- package/dist/types/web/search/providers/openai-compatible.d.ts +0 -9
- package/dist/types/web/search/providers/parallel.d.ts +0 -15
- package/dist/types/web/search/providers/perplexity.d.ts +0 -38
- package/dist/types/web/search/providers/searxng.d.ts +0 -44
- package/dist/types/web/search/providers/synthetic.d.ts +0 -21
- package/dist/types/web/search/providers/tavily.d.ts +0 -29
- package/dist/types/web/search/providers/text-citations.d.ts +0 -23
- package/dist/types/web/search/providers/utils.d.ts +0 -88
- package/dist/types/web/search/providers/xai.d.ts +0 -64
- package/dist/types/web/search/providers/zai.d.ts +0 -28
- package/dist/types/web/search/render.d.ts +0 -36
- package/dist/types/web/search/types.d.ts +0 -372
- package/dist/types/web/search/utils.d.ts +0 -4
- package/dist/types/workflow/workflow-intent-diff.d.ts +0 -25
- package/dist/types/workflow/workflow-intent-report-consumer.d.ts +0 -50
- package/dist/types/workflow/workflow-intent-report-schema.d.ts +0 -2
- package/dist/types/workflow/workflow-intent-report.d.ts +0 -48
- package/dist/types/workspace-tree.d.ts +0 -42
- package/src/sdk.ts +0 -2623
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
1
2
|
import * as fs from "node:fs/promises";
|
|
2
3
|
import * as path from "node:path";
|
|
3
4
|
import type { WorkflowHudSummary } from "../skill-state/active-state";
|
|
@@ -27,7 +28,17 @@ import {
|
|
|
27
28
|
} from "../skill-state/workflow-state-contract";
|
|
28
29
|
import { renderCliWriteReceipt } from "./cli-write-receipt";
|
|
29
30
|
import { applyAmbiguityFloorToEnvelope } from "./deep-interview-ambiguity";
|
|
30
|
-
import {
|
|
31
|
+
import {
|
|
32
|
+
assertDeepInterviewEnvelopeInputLimits,
|
|
33
|
+
assertDeepInterviewInputWithinLimit,
|
|
34
|
+
assertDeepInterviewIntentManifest,
|
|
35
|
+
assertDeepInterviewIntentReview,
|
|
36
|
+
assertDeepInterviewStructuredResponseWithinLimit,
|
|
37
|
+
type DeepInterviewIntentManifest,
|
|
38
|
+
MAX_DEEP_INTERVIEW_STRUCTURED_RESPONSE_LENGTH,
|
|
39
|
+
mergeDeepInterviewEnvelope,
|
|
40
|
+
normalizeDeepInterviewEnvelope,
|
|
41
|
+
} from "./deep-interview-state";
|
|
31
42
|
import { activeSnapshotPath, auditPath, modeStatePath, sessionStateDir } from "./session-layout";
|
|
32
43
|
import {
|
|
33
44
|
resolveSkcSessionForRead,
|
|
@@ -35,6 +46,7 @@ import {
|
|
|
35
46
|
SessionResolutionError,
|
|
36
47
|
writeSessionActivityMarker,
|
|
37
48
|
} from "./session-resolution";
|
|
49
|
+
import { classifyStateArgv, firstStateFlagValue, type StateAction, type StateArgvClassification } from "./state-argv";
|
|
38
50
|
import { renderStateGraph, type StateGraphFormat } from "./state-graph";
|
|
39
51
|
import { migrateAndPersistLegacyState, migrateWorkflowState } from "./state-migrations";
|
|
40
52
|
import {
|
|
@@ -61,9 +73,11 @@ import {
|
|
|
61
73
|
softDelete,
|
|
62
74
|
updateWorkflowTransactionJournal,
|
|
63
75
|
type WorkflowEnvelopeIntegrityMismatch,
|
|
76
|
+
withWorkflowStateLock,
|
|
64
77
|
writeGuardedWorkflowEnvelopeAtomic,
|
|
65
78
|
} from "./state-writer";
|
|
66
|
-
import {
|
|
79
|
+
import { assertSafePathComponent, CommandError, flagValue, hasFlag, isPlainObject } from "./workflow-cli-common";
|
|
80
|
+
import { getSkillManifest, isKnownWorkflowState, isValidTransition } from "./workflow-manifest";
|
|
67
81
|
|
|
68
82
|
/**
|
|
69
83
|
* Native implementation of the `skc state read|write|clear` command surface.
|
|
@@ -80,168 +94,21 @@ export interface StateCommandResult {
|
|
|
80
94
|
}
|
|
81
95
|
|
|
82
96
|
const SKILL_ACTIVE_STATE_FILE = "skill-active-state.json";
|
|
83
|
-
const TERMINAL_CLEAR_PHASES = new Set(["complete", "completed", "cancelled", "canceled", "failed"]);
|
|
84
|
-
const PATH_COMPONENT_RE = /^[A-Za-z0-9_-][A-Za-z0-9._-]{0,63}$/;
|
|
85
97
|
const KNOWN_MODES: readonly string[] = CANONICAL_SKC_WORKFLOW_SKILLS;
|
|
86
98
|
|
|
87
|
-
class StateCommandError extends
|
|
88
|
-
constructor(
|
|
89
|
-
|
|
90
|
-
message: string,
|
|
91
|
-
) {
|
|
92
|
-
super(message);
|
|
99
|
+
class StateCommandError extends CommandError {
|
|
100
|
+
constructor(exitStatus: number, message: string) {
|
|
101
|
+
super(exitStatus, message);
|
|
93
102
|
this.name = "StateCommandError";
|
|
94
103
|
}
|
|
95
104
|
}
|
|
96
105
|
|
|
97
|
-
function flagValue(args: readonly string[], flag: string): string | undefined {
|
|
98
|
-
const index = args.indexOf(flag);
|
|
99
|
-
if (index < 0) return undefined;
|
|
100
|
-
return args[index + 1];
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
function hasFlag(args: readonly string[], flag: string): boolean {
|
|
104
|
-
return args.includes(flag);
|
|
105
|
-
}
|
|
106
|
-
|
|
107
106
|
const GRAPH_FORMATS = new Set(["ascii", "mermaid", "dot"]);
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
"--session-id",
|
|
112
|
-
"--thread-id",
|
|
113
|
-
"--turn-id",
|
|
114
|
-
"--to",
|
|
115
|
-
"--skill",
|
|
116
|
-
"--format",
|
|
117
|
-
"--older-than",
|
|
118
|
-
"--status",
|
|
119
|
-
"--fields",
|
|
120
|
-
"--since",
|
|
121
|
-
"--limit",
|
|
122
|
-
]);
|
|
123
|
-
const ACTION_NAMES = new Set([
|
|
124
|
-
"read",
|
|
125
|
-
"write",
|
|
126
|
-
"clear",
|
|
127
|
-
"contract",
|
|
128
|
-
"handoff",
|
|
129
|
-
"graph",
|
|
130
|
-
"prune",
|
|
131
|
-
"gc",
|
|
132
|
-
"migrate",
|
|
133
|
-
"status",
|
|
134
|
-
"doctor",
|
|
135
|
-
]);
|
|
136
|
-
const BOOLEAN_FLAGS = new Set([
|
|
137
|
-
"--json",
|
|
138
|
-
"--replace",
|
|
139
|
-
"--hard",
|
|
140
|
-
"--dry-run",
|
|
141
|
-
"--migrate",
|
|
142
|
-
"--compact",
|
|
143
|
-
"--history",
|
|
144
|
-
"--force",
|
|
145
|
-
]);
|
|
146
|
-
const VERB_SPECIFIC_FLAGS = new Set([
|
|
147
|
-
"--skill",
|
|
148
|
-
"--format",
|
|
149
|
-
"--older-than",
|
|
150
|
-
"--status",
|
|
151
|
-
"--fields",
|
|
152
|
-
"--since",
|
|
153
|
-
"--limit",
|
|
154
|
-
"--history",
|
|
155
|
-
]);
|
|
156
|
-
|
|
157
|
-
function flagName(arg: string): string | undefined {
|
|
158
|
-
if (!arg.startsWith("--")) return undefined;
|
|
159
|
-
const equalsIndex = arg.indexOf("=");
|
|
160
|
-
return equalsIndex >= 0 ? arg.slice(0, equalsIndex) : arg;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
function manifestFlagNames(action: ParsedInvocation["action"], positionalSkill: string | undefined): Set<string> {
|
|
164
|
-
const names = new Set<string>();
|
|
165
|
-
const skills =
|
|
166
|
-
positionalSkill && KNOWN_MODES.includes(positionalSkill)
|
|
167
|
-
? [positionalSkill as CanonicalSkcWorkflowSkill]
|
|
168
|
-
: CANONICAL_SKC_WORKFLOW_SKILLS;
|
|
169
|
-
for (const skill of skills) {
|
|
170
|
-
for (const arg of typedArgsFor(skill, action)) names.add(`--${arg.name}`);
|
|
171
|
-
}
|
|
172
|
-
return names;
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
function assertKnownFlags(args: readonly string[], parsed: ParsedInvocation): void {
|
|
176
|
-
const manifestFlags = manifestFlagNames(parsed.action, parsed.positionalSkill);
|
|
177
|
-
for (const arg of args) {
|
|
178
|
-
const flag = flagName(arg);
|
|
179
|
-
if (!flag) continue;
|
|
180
|
-
if (
|
|
181
|
-
FLAGS_WITH_VALUES.has(flag) ||
|
|
182
|
-
BOOLEAN_FLAGS.has(flag) ||
|
|
183
|
-
VERB_SPECIFIC_FLAGS.has(flag) ||
|
|
184
|
-
manifestFlags.has(flag)
|
|
185
|
-
) {
|
|
186
|
-
continue;
|
|
187
|
-
}
|
|
188
|
-
throw new StateCommandError(2, `unknown skc state flag: ${flag}`);
|
|
189
|
-
}
|
|
107
|
+
function assertKnownFlags(classification: StateArgvClassification): void {
|
|
108
|
+
const [unknownFlag] = classification.unknownFlags;
|
|
109
|
+
if (unknownFlag) throw new StateCommandError(2, `unknown skc state flag: ${unknownFlag}`);
|
|
190
110
|
}
|
|
191
111
|
|
|
192
|
-
interface ParsedInvocation {
|
|
193
|
-
action:
|
|
194
|
-
| "read"
|
|
195
|
-
| "write"
|
|
196
|
-
| "clear"
|
|
197
|
-
| "contract"
|
|
198
|
-
| "handoff"
|
|
199
|
-
| "graph"
|
|
200
|
-
| "prune"
|
|
201
|
-
| "gc"
|
|
202
|
-
| "migrate"
|
|
203
|
-
| "status"
|
|
204
|
-
| "doctor";
|
|
205
|
-
positionalSkill?: string;
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
function parsePositionalArgs(args: readonly string[]): ParsedInvocation {
|
|
209
|
-
let skipNext = false;
|
|
210
|
-
const positional: string[] = [];
|
|
211
|
-
for (const arg of args) {
|
|
212
|
-
if (skipNext) {
|
|
213
|
-
skipNext = false;
|
|
214
|
-
continue;
|
|
215
|
-
}
|
|
216
|
-
if (FLAGS_WITH_VALUES.has(arg)) {
|
|
217
|
-
skipNext = true;
|
|
218
|
-
continue;
|
|
219
|
-
}
|
|
220
|
-
if (!arg.startsWith("-")) positional.push(arg);
|
|
221
|
-
}
|
|
222
|
-
// Documented argv shapes:
|
|
223
|
-
// skc state read|write|clear|contract ...
|
|
224
|
-
// skc state <skill> read|write|contract ...
|
|
225
|
-
const first = positional[0];
|
|
226
|
-
const second = positional[1];
|
|
227
|
-
if (first && ACTION_NAMES.has(first)) {
|
|
228
|
-
return { action: first as ParsedInvocation["action"], positionalSkill: second };
|
|
229
|
-
}
|
|
230
|
-
if (first && second && ACTION_NAMES.has(second)) {
|
|
231
|
-
return { action: second as ParsedInvocation["action"], positionalSkill: first };
|
|
232
|
-
}
|
|
233
|
-
// `skc state <skill>` alone defaults to read for that skill.
|
|
234
|
-
if (first && !second) {
|
|
235
|
-
return { action: "read", positionalSkill: first };
|
|
236
|
-
}
|
|
237
|
-
return { action: "read" };
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
function assertSafePathComponent(value: string, label: string): void {
|
|
241
|
-
if (!PATH_COMPONENT_RE.test(value) || value.includes("..")) {
|
|
242
|
-
throw new StateCommandError(2, `invalid path component for --${label}: ${value}`);
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
112
|
function isKnownMode(mode: string): mode is CanonicalSkcWorkflowSkill {
|
|
246
113
|
return KNOWN_MODES.includes(mode);
|
|
247
114
|
}
|
|
@@ -290,19 +157,16 @@ interface ResolvedSelectors {
|
|
|
290
157
|
// `clear` resolves like a read (explicit -> payload -> env -> latest-activity marker)
|
|
291
158
|
// per the spec: read/status/clear may fall back to the most-recent session. Commands
|
|
292
159
|
// that create or mutate new state roots still require an explicit/env session id.
|
|
293
|
-
const WRITE_SESSION_ACTIONS = new Set<
|
|
160
|
+
const WRITE_SESSION_ACTIONS = new Set<StateAction>(["write", "handoff", "prune", "migrate"]);
|
|
294
161
|
|
|
295
|
-
async function resolveSelectors(
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
positionalSkill: string | undefined,
|
|
299
|
-
action: ParsedInvocation["action"],
|
|
300
|
-
): Promise<ResolvedSelectors> {
|
|
301
|
-
const payload = await readInputJson(flagValue(args, "--input"), cwd);
|
|
162
|
+
async function resolveSelectors(args: readonly string[], cwd: string, action: StateAction): Promise<ResolvedSelectors> {
|
|
163
|
+
const classification = classifyStateArgv(args);
|
|
164
|
+
const payload = await readInputJson(firstStateFlagValue(classification, "--input"), cwd);
|
|
302
165
|
|
|
166
|
+
const [modeCandidate, positionalCandidate] = classification.runtimeSelectorCandidates;
|
|
303
167
|
const candidates: Array<string | undefined> = [
|
|
304
|
-
|
|
305
|
-
|
|
168
|
+
modeCandidate?.value,
|
|
169
|
+
positionalCandidate?.value,
|
|
306
170
|
typeof payload?.mode === "string" ? (payload.mode as string).trim() || undefined : undefined,
|
|
307
171
|
typeof payload?.skill === "string" ? (payload.skill as string).trim() || undefined : undefined,
|
|
308
172
|
];
|
|
@@ -391,7 +255,9 @@ async function describeStaleClearState(
|
|
|
391
255
|
existing: Record<string, unknown>,
|
|
392
256
|
): Promise<string | undefined> {
|
|
393
257
|
const phase = typeof existing.current_phase === "string" ? existing.current_phase.trim() : undefined;
|
|
394
|
-
if (phase &&
|
|
258
|
+
if (phase && getSkillManifest(mode).stopReleasingPhases.includes(phase) && phase !== "inactive") {
|
|
259
|
+
return `mode-state is already terminal (${phase})`;
|
|
260
|
+
}
|
|
395
261
|
const activePhase = await readActivePhaseForSkill(cwd, sessionId, mode);
|
|
396
262
|
if (activePhase && phase && activePhase !== phase) {
|
|
397
263
|
return `active-state phase ${activePhase} differs from mode-state phase ${phase}`;
|
|
@@ -504,22 +370,11 @@ function phaseFromActiveValue(value: unknown): string | undefined {
|
|
|
504
370
|
return phase || undefined;
|
|
505
371
|
}
|
|
506
372
|
|
|
507
|
-
const RALPLAN_CANONICAL_PHASE_OVERRIDES = new Set([
|
|
508
|
-
"final",
|
|
509
|
-
"handoff",
|
|
510
|
-
"complete",
|
|
511
|
-
"completed",
|
|
512
|
-
"failed",
|
|
513
|
-
"cancelled",
|
|
514
|
-
"canceled",
|
|
515
|
-
"inactive",
|
|
516
|
-
]);
|
|
517
|
-
|
|
518
373
|
function modeStatePhase(value: unknown): string | undefined {
|
|
519
374
|
if (!isPlainObject(value) || typeof value.current_phase !== "string") return undefined;
|
|
520
375
|
const phase = value.current_phase.trim();
|
|
521
376
|
if (!phase) return undefined;
|
|
522
|
-
if (value.active === false && !
|
|
377
|
+
if (value.active === false && !getSkillManifest("ralplan").canonicalOverrides.includes(phase)) return undefined;
|
|
523
378
|
return phase;
|
|
524
379
|
}
|
|
525
380
|
|
|
@@ -821,6 +676,7 @@ async function writeJsonAtomic(
|
|
|
821
676
|
fromPhase?: string;
|
|
822
677
|
toPhase?: string;
|
|
823
678
|
owner?: WorkflowStateMutationOwner;
|
|
679
|
+
lockHeld?: boolean;
|
|
824
680
|
},
|
|
825
681
|
): Promise<{ warning?: string; stamped: Record<string, unknown>; revision: number }> {
|
|
826
682
|
const warning = options?.skill
|
|
@@ -850,6 +706,7 @@ async function writeJsonAtomic(
|
|
|
850
706
|
toPhase: options?.toPhase,
|
|
851
707
|
forced: options?.force ?? false,
|
|
852
708
|
},
|
|
709
|
+
lockHeld: options?.lockHeld ?? false,
|
|
853
710
|
});
|
|
854
711
|
// `writeResult.stamped` and `.revision` are computed inside the writer lock, so they are
|
|
855
712
|
// the envelope/revision this write actually owns. Never post-lock re-read here: a concurrent
|
|
@@ -938,10 +795,6 @@ async function readAuditWindow(
|
|
|
938
795
|
return { entries: selected.reverse(), limit, ...(since ? { since } : {}), truncated: matched > limit };
|
|
939
796
|
}
|
|
940
797
|
|
|
941
|
-
function isPlainObject(value: unknown): value is Record<string, unknown> {
|
|
942
|
-
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
943
|
-
}
|
|
944
|
-
|
|
945
798
|
/**
|
|
946
799
|
* Shallow-merge `source` into `target`, with the convention that a `source` key whose value is
|
|
947
800
|
* `null` deletes that key from `target`. Nested objects are replaced wholesale (not deep-merged)
|
|
@@ -1127,12 +980,23 @@ export async function reconcileWorkflowSkillState(options: {
|
|
|
1127
980
|
payload: Record<string, unknown>;
|
|
1128
981
|
sourceRevision?: number;
|
|
1129
982
|
}): Promise<{ stateFile: string }> {
|
|
1130
|
-
const {
|
|
1131
|
-
const { skcSessionId: sessionId } = resolveSkcSessionForWrite(cwd, {
|
|
983
|
+
const { skcSessionId: sessionId } = resolveSkcSessionForWrite(options.cwd, {
|
|
1132
984
|
payloadSessionId: options.sessionId,
|
|
1133
985
|
envSessionId: process.env.SKC_SESSION_ID,
|
|
1134
986
|
});
|
|
987
|
+
return withWorkflowStateLock(
|
|
988
|
+
path.relative(options.cwd, modeStateFile(options.cwd, options.mode, sessionId)),
|
|
989
|
+
async () => reconcileWorkflowSkillStateUnlocked(options, sessionId),
|
|
990
|
+
);
|
|
991
|
+
}
|
|
992
|
+
|
|
993
|
+
async function reconcileWorkflowSkillStateUnlocked(
|
|
994
|
+
options: Parameters<typeof reconcileWorkflowSkillState>[0],
|
|
995
|
+
sessionId: string,
|
|
996
|
+
): Promise<{ stateFile: string }> {
|
|
997
|
+
const { cwd, mode, threadId, turnId, active, payload } = options;
|
|
1135
998
|
const filePath = modeStateFile(cwd, mode, sessionId);
|
|
999
|
+
if (mode === "deep-interview") assertDeepInterviewStructuredResponseWithinLimit(payload);
|
|
1136
1000
|
const existingRead = await readExistingStateForMutation(filePath);
|
|
1137
1001
|
const existingPayload = existingRead.kind === "valid" ? existingRead.value : {};
|
|
1138
1002
|
const nowIsoStr = nowIso();
|
|
@@ -1169,6 +1033,7 @@ export async function reconcileWorkflowSkillState(options: {
|
|
|
1169
1033
|
unknown
|
|
1170
1034
|
>)
|
|
1171
1035
|
: mergeWithNullDelete(existingPayload, payload);
|
|
1036
|
+
if (mode === "deep-interview") assertDeepInterviewEnvelopeInputLimits(merged);
|
|
1172
1037
|
merged.skill = mode;
|
|
1173
1038
|
merged.current_phase = trimmedPhase;
|
|
1174
1039
|
merged.active = active;
|
|
@@ -1181,9 +1046,10 @@ export async function reconcileWorkflowSkillState(options: {
|
|
|
1181
1046
|
if (!validation.valid) throw new StateCommandError(2, validation.error ?? `invalid ${mode} state envelope`);
|
|
1182
1047
|
|
|
1183
1048
|
if (existingRead.kind === "corrupt") await fs.rm(filePath, { force: true });
|
|
1184
|
-
await writeGuardedWorkflowEnvelopeAtomic(filePath, merged, {
|
|
1049
|
+
const writeResult = await writeGuardedWorkflowEnvelopeAtomic(filePath, merged, {
|
|
1185
1050
|
cwd,
|
|
1186
1051
|
policy: "source",
|
|
1052
|
+
lockHeld: true,
|
|
1187
1053
|
receipt: {
|
|
1188
1054
|
cwd,
|
|
1189
1055
|
skill: mode,
|
|
@@ -1209,8 +1075,7 @@ export async function reconcileWorkflowSkillState(options: {
|
|
|
1209
1075
|
toPhase: trimmedPhase,
|
|
1210
1076
|
},
|
|
1211
1077
|
});
|
|
1212
|
-
const
|
|
1213
|
-
const sourceRevision = options.sourceRevision ?? existingStateRevision(persisted);
|
|
1078
|
+
const sourceRevision = options.sourceRevision ?? writeResult.revision;
|
|
1214
1079
|
|
|
1215
1080
|
// Reconciliation drives the active-state/HUD update directly (not via the
|
|
1216
1081
|
// best-effort syncWorkflowSkillState wrapper) so a failed HUD/active-state write
|
|
@@ -1244,12 +1109,8 @@ export async function readWorkflowStateJson(
|
|
|
1244
1109
|
return (await readJsonFile(modeStateFile(cwd, skill, session.skcSessionId))) ?? {};
|
|
1245
1110
|
}
|
|
1246
1111
|
|
|
1247
|
-
async function handleRead(
|
|
1248
|
-
args
|
|
1249
|
-
cwd: string,
|
|
1250
|
-
positionalSkill: string | undefined,
|
|
1251
|
-
): Promise<StateCommandResult> {
|
|
1252
|
-
const selectors = await resolveSelectors(args, cwd, positionalSkill, "read");
|
|
1112
|
+
async function handleRead(args: readonly string[], cwd: string): Promise<StateCommandResult> {
|
|
1113
|
+
const selectors = await resolveSelectors(args, cwd, "read");
|
|
1253
1114
|
const mode = selectors.mode ?? (await inferModeFromActiveState(cwd, selectors.skcSessionId));
|
|
1254
1115
|
const fields = parseFieldsFlag(args);
|
|
1255
1116
|
if (mode) {
|
|
@@ -1288,12 +1149,8 @@ async function handleRead(
|
|
|
1288
1149
|
return { status: 0, stdout: `${JSON.stringify(existing ?? {}, null, 2)}\n` };
|
|
1289
1150
|
}
|
|
1290
1151
|
|
|
1291
|
-
async function handleStatus(
|
|
1292
|
-
args
|
|
1293
|
-
cwd: string,
|
|
1294
|
-
positionalSkill: string | undefined,
|
|
1295
|
-
): Promise<StateCommandResult> {
|
|
1296
|
-
const selectors = await resolveSelectors(args, cwd, positionalSkill, "read");
|
|
1152
|
+
async function handleStatus(args: readonly string[], cwd: string): Promise<StateCommandResult> {
|
|
1153
|
+
const selectors = await resolveSelectors(args, cwd, "read");
|
|
1297
1154
|
const mode = selectors.mode ?? (await inferModeFromActiveState(cwd, selectors.skcSessionId));
|
|
1298
1155
|
if (!mode) {
|
|
1299
1156
|
throw new StateCommandError(
|
|
@@ -1315,12 +1172,8 @@ async function handleStatus(
|
|
|
1315
1172
|
};
|
|
1316
1173
|
}
|
|
1317
1174
|
|
|
1318
|
-
async function handleWrite(
|
|
1319
|
-
args
|
|
1320
|
-
cwd: string,
|
|
1321
|
-
positionalSkill: string | undefined,
|
|
1322
|
-
): Promise<StateCommandResult> {
|
|
1323
|
-
const selectors = await resolveSelectors(args, cwd, positionalSkill, "write");
|
|
1175
|
+
async function handleWrite(args: readonly string[], cwd: string): Promise<StateCommandResult> {
|
|
1176
|
+
const selectors = await resolveSelectors(args, cwd, "write");
|
|
1324
1177
|
const { skcSessionId: sessionId, threadId, turnId, payload } = selectors;
|
|
1325
1178
|
if (!payload) throw new StateCommandError(2, "skc state write requires --input '<json>'");
|
|
1326
1179
|
const mode = selectors.mode ?? (await inferModeFromActiveState(cwd, sessionId));
|
|
@@ -1330,142 +1183,167 @@ async function handleWrite(
|
|
|
1330
1183
|
"skc state write requires --mode <skill>, positional <skill>, input.skill, or an active workflow in the current session active state",
|
|
1331
1184
|
);
|
|
1332
1185
|
|
|
1333
|
-
const filePath = modeStateFile(cwd, mode, sessionId);
|
|
1334
|
-
const forced = hasFlag(args, "--force");
|
|
1335
|
-
const existingRead = await readExistingStateForMutation(filePath);
|
|
1336
|
-
if (existingRead.kind === "corrupt" && !forced) {
|
|
1337
|
-
throw new StateCommandError(
|
|
1338
|
-
2,
|
|
1339
|
-
`existing state for ${mode} is corrupt or tampered (${existingRead.error}); use --force to overwrite`,
|
|
1340
|
-
);
|
|
1341
|
-
}
|
|
1342
|
-
const existingPayload = existingRead.kind === "valid" ? existingRead.value : {};
|
|
1343
|
-
const nowIsoStr = nowIso();
|
|
1344
|
-
const mutationId = `${mode}:${nowIsoStr}`;
|
|
1345
|
-
const receipt = buildWorkflowStateReceipt({
|
|
1346
|
-
cwd,
|
|
1347
|
-
skill: mode,
|
|
1348
|
-
owner: "skc-state-cli",
|
|
1349
|
-
command: `skc state ${mode} write`,
|
|
1350
|
-
sessionId,
|
|
1351
|
-
nowIso: nowIsoStr,
|
|
1352
|
-
mutationId,
|
|
1353
|
-
});
|
|
1354
|
-
const innerState = (payload.state as Record<string, unknown> | undefined) ?? {};
|
|
1355
|
-
const incomingPhase =
|
|
1356
|
-
typeof payload.current_phase === "string" && payload.current_phase.trim()
|
|
1357
|
-
? payload.current_phase.trim()
|
|
1358
|
-
: typeof payload.phase === "string" && payload.phase.trim()
|
|
1359
|
-
? payload.phase.trim()
|
|
1360
|
-
: typeof innerState.current_phase === "string" && (innerState.current_phase as string).trim()
|
|
1361
|
-
? (innerState.current_phase as string).trim()
|
|
1362
|
-
: undefined;
|
|
1363
|
-
let merged: Record<string, unknown>;
|
|
1364
1186
|
if (mode === "deep-interview") {
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
merged = applyAmbiguityFloorToEnvelope(
|
|
1370
|
-
mergeDeepInterviewEnvelope(existingPayload, payload, { replace: hasFlag(args, "--replace") }),
|
|
1371
|
-
).envelope;
|
|
1372
|
-
} else if (hasFlag(args, "--replace")) {
|
|
1373
|
-
merged = { ...payload };
|
|
1374
|
-
} else {
|
|
1375
|
-
merged = mergeWithNullDelete(existingPayload, payload);
|
|
1376
|
-
// Flatten payload.state.* into the top-level envelope so downstream consumers
|
|
1377
|
-
// see a single canonical structure with the receipt at top level.
|
|
1378
|
-
if (payload.state && typeof payload.state === "object" && !Array.isArray(payload.state)) {
|
|
1379
|
-
merged = mergeWithNullDelete(merged, payload.state as Record<string, unknown>);
|
|
1380
|
-
delete merged.state;
|
|
1381
|
-
}
|
|
1382
|
-
}
|
|
1383
|
-
const preDefaultValidation = validateWorkflowStateEnvelope(mode, merged);
|
|
1384
|
-
if (!preDefaultValidation.valid) {
|
|
1385
|
-
throw new StateCommandError(2, preDefaultValidation.error ?? `invalid ${mode} state envelope`);
|
|
1386
|
-
}
|
|
1387
|
-
merged.skill = mode;
|
|
1388
|
-
if (incomingPhase) {
|
|
1389
|
-
merged.current_phase = incomingPhase;
|
|
1390
|
-
} else if (typeof merged.current_phase !== "string" || !merged.current_phase.trim()) {
|
|
1391
|
-
const retainedPhase =
|
|
1392
|
-
typeof existingPayload.current_phase === "string" ? existingPayload.current_phase.trim() : "";
|
|
1393
|
-
merged.current_phase = retainedPhase || initialPhaseForSkill(mode);
|
|
1394
|
-
} else {
|
|
1395
|
-
merged.current_phase = merged.current_phase.trim();
|
|
1396
|
-
}
|
|
1397
|
-
merged.version = WORKFLOW_STATE_VERSION;
|
|
1398
|
-
if (typeof merged.active !== "boolean") merged.active = true;
|
|
1399
|
-
merged.updated_at = nowIsoStr;
|
|
1400
|
-
merged.receipt = receipt;
|
|
1401
|
-
if (sessionId && typeof merged.session_id !== "string") merged.session_id = sessionId;
|
|
1402
|
-
|
|
1403
|
-
const fromPhase =
|
|
1404
|
-
typeof existingPayload.current_phase === "string" ? existingPayload.current_phase.trim() : undefined;
|
|
1405
|
-
const toPhase = merged.current_phase as string;
|
|
1406
|
-
const manifestStates = new Set(getSkillManifest(mode).states.map(state => state.id));
|
|
1407
|
-
if (!manifestStates.has(toPhase) && !forced) {
|
|
1408
|
-
throw new StateCommandError(2, `unknown ${mode} phase "${toPhase}"; use --force to bypass`);
|
|
1409
|
-
}
|
|
1410
|
-
if (fromPhase && toPhase && isKnownWorkflowState(mode, fromPhase) && isKnownWorkflowState(mode, toPhase)) {
|
|
1411
|
-
if (!isValidTransition(mode, fromPhase, toPhase) && !forced) {
|
|
1412
|
-
throw new StateCommandError(
|
|
1413
|
-
2,
|
|
1414
|
-
`invalid ${mode} phase transition from ${fromPhase} to ${toPhase}; use --force to bypass`,
|
|
1415
|
-
);
|
|
1187
|
+
try {
|
|
1188
|
+
assertDeepInterviewStructuredResponseWithinLimit(payload);
|
|
1189
|
+
} catch (error) {
|
|
1190
|
+
throw new StateCommandError(2, error instanceof Error ? error.message : String(error));
|
|
1416
1191
|
}
|
|
1417
1192
|
}
|
|
1193
|
+
const filePath = modeStateFile(cwd, mode, sessionId);
|
|
1194
|
+
const forced = hasFlag(args, "--force");
|
|
1195
|
+
return await withWorkflowStateLock(
|
|
1196
|
+
filePath,
|
|
1197
|
+
async () => {
|
|
1198
|
+
const existingRead = await readExistingStateForMutation(filePath);
|
|
1199
|
+
if (existingRead.kind === "corrupt" && !forced) {
|
|
1200
|
+
throw new StateCommandError(
|
|
1201
|
+
2,
|
|
1202
|
+
`existing state for ${mode} is corrupt or tampered (${existingRead.error}); use --force to overwrite`,
|
|
1203
|
+
);
|
|
1204
|
+
}
|
|
1205
|
+
const existingPayload = existingRead.kind === "valid" ? existingRead.value : {};
|
|
1206
|
+
const nowIsoStr = nowIso();
|
|
1207
|
+
const mutationId = `${mode}:${nowIsoStr}`;
|
|
1208
|
+
const receipt = buildWorkflowStateReceipt({
|
|
1209
|
+
cwd,
|
|
1210
|
+
skill: mode,
|
|
1211
|
+
owner: "skc-state-cli",
|
|
1212
|
+
command: `skc state ${mode} write`,
|
|
1213
|
+
sessionId,
|
|
1214
|
+
nowIso: nowIsoStr,
|
|
1215
|
+
mutationId,
|
|
1216
|
+
});
|
|
1217
|
+
const innerState = (payload.state as Record<string, unknown> | undefined) ?? {};
|
|
1218
|
+
const incomingPhase =
|
|
1219
|
+
typeof payload.current_phase === "string" && payload.current_phase.trim()
|
|
1220
|
+
? payload.current_phase.trim()
|
|
1221
|
+
: typeof payload.phase === "string" && payload.phase.trim()
|
|
1222
|
+
? payload.phase.trim()
|
|
1223
|
+
: typeof innerState.current_phase === "string" && (innerState.current_phase as string).trim()
|
|
1224
|
+
? (innerState.current_phase as string).trim()
|
|
1225
|
+
: undefined;
|
|
1226
|
+
let merged: Record<string, unknown>;
|
|
1227
|
+
if (mode === "deep-interview") {
|
|
1228
|
+
// Deep-interview keeps interview data nested under `state` and merges rounds
|
|
1229
|
+
// losslessly by durable key; never flatten or delete `state` (that drops recorder history).
|
|
1230
|
+
// The deterministic ambiguity floor is applied after the merge so a reported
|
|
1231
|
+
// score written through the CLI can never undercut persisted contradiction evidence.
|
|
1232
|
+
merged = applyAmbiguityFloorToEnvelope(
|
|
1233
|
+
mergeDeepInterviewEnvelope(existingPayload, payload, { replace: hasFlag(args, "--replace") }),
|
|
1234
|
+
).envelope;
|
|
1235
|
+
try {
|
|
1236
|
+
assertDeepInterviewEnvelopeInputLimits(merged);
|
|
1237
|
+
} catch (error) {
|
|
1238
|
+
throw new StateCommandError(2, error instanceof Error ? error.message : String(error));
|
|
1239
|
+
}
|
|
1240
|
+
} else if (hasFlag(args, "--replace")) {
|
|
1241
|
+
merged = { ...payload };
|
|
1242
|
+
} else {
|
|
1243
|
+
merged = mergeWithNullDelete(existingPayload, payload);
|
|
1244
|
+
// Flatten payload.state.* into the top-level envelope so downstream consumers
|
|
1245
|
+
// see a single canonical structure with the receipt at top level.
|
|
1246
|
+
if (payload.state && typeof payload.state === "object" && !Array.isArray(payload.state)) {
|
|
1247
|
+
merged = mergeWithNullDelete(merged, payload.state as Record<string, unknown>);
|
|
1248
|
+
delete merged.state;
|
|
1249
|
+
}
|
|
1250
|
+
}
|
|
1251
|
+
const preDefaultValidation = validateWorkflowStateEnvelope(mode, merged);
|
|
1252
|
+
if (!preDefaultValidation.valid) {
|
|
1253
|
+
throw new StateCommandError(2, preDefaultValidation.error ?? `invalid ${mode} state envelope`);
|
|
1254
|
+
}
|
|
1255
|
+
merged.skill = mode;
|
|
1256
|
+
if (incomingPhase) {
|
|
1257
|
+
merged.current_phase = incomingPhase;
|
|
1258
|
+
} else if (typeof merged.current_phase !== "string" || !merged.current_phase.trim()) {
|
|
1259
|
+
const retainedPhase =
|
|
1260
|
+
typeof existingPayload.current_phase === "string" ? existingPayload.current_phase.trim() : "";
|
|
1261
|
+
merged.current_phase = retainedPhase || initialPhaseForSkill(mode);
|
|
1262
|
+
} else {
|
|
1263
|
+
merged.current_phase = merged.current_phase.trim();
|
|
1264
|
+
}
|
|
1265
|
+
merged.version = WORKFLOW_STATE_VERSION;
|
|
1266
|
+
if (typeof merged.active !== "boolean") merged.active = true;
|
|
1267
|
+
merged.updated_at = nowIsoStr;
|
|
1268
|
+
merged.receipt = receipt;
|
|
1269
|
+
if (sessionId && typeof merged.session_id !== "string") merged.session_id = sessionId;
|
|
1270
|
+
|
|
1271
|
+
const fromPhase =
|
|
1272
|
+
typeof existingPayload.current_phase === "string" ? existingPayload.current_phase.trim() : undefined;
|
|
1273
|
+
const toPhase = merged.current_phase as string;
|
|
1274
|
+
const manifestStates = new Set(getSkillManifest(mode).states.map(state => state.id));
|
|
1275
|
+
if (!manifestStates.has(toPhase) && !forced) {
|
|
1276
|
+
throw new StateCommandError(2, `unknown ${mode} phase "${toPhase}"; use --force to bypass`);
|
|
1277
|
+
}
|
|
1278
|
+
if (fromPhase && toPhase && isKnownWorkflowState(mode, fromPhase) && isKnownWorkflowState(mode, toPhase)) {
|
|
1279
|
+
if (!isValidTransition(mode, fromPhase, toPhase) && !forced) {
|
|
1280
|
+
throw new StateCommandError(
|
|
1281
|
+
2,
|
|
1282
|
+
`invalid ${mode} phase transition from ${fromPhase} to ${toPhase}; use --force to bypass`,
|
|
1283
|
+
);
|
|
1284
|
+
}
|
|
1285
|
+
}
|
|
1418
1286
|
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1287
|
+
const validation = validateWorkflowStateEnvelope(mode, merged);
|
|
1288
|
+
if (!validation.valid) throw new StateCommandError(2, validation.error ?? `invalid ${mode} state envelope`);
|
|
1289
|
+
|
|
1290
|
+
const {
|
|
1291
|
+
warning: outOfBandWarning,
|
|
1292
|
+
stamped,
|
|
1293
|
+
revision: stampedRevision,
|
|
1294
|
+
} = await writeJsonAtomic(cwd, filePath, merged, "write", {
|
|
1295
|
+
sessionId,
|
|
1296
|
+
skill: mode,
|
|
1297
|
+
mutationId,
|
|
1298
|
+
force: forced,
|
|
1299
|
+
fromPhase,
|
|
1300
|
+
toPhase,
|
|
1301
|
+
lockHeld: true,
|
|
1302
|
+
});
|
|
1303
|
+
const stampedReceipt = isPlainObject(stamped.receipt) ? stamped.receipt : {};
|
|
1304
|
+
|
|
1305
|
+
const phase = typeof merged.current_phase === "string" ? merged.current_phase : undefined;
|
|
1306
|
+
const active = merged.active !== false;
|
|
1307
|
+
// Reflect the lock-owned mode-state revision onto the in-memory payload so the active-state/HUD
|
|
1308
|
+
// sync derives a `sourceRevision` from the revision this write actually owns (computed inside the
|
|
1309
|
+
// writer lock), not the stale pre-write value or a post-lock re-read a concurrent writer could
|
|
1310
|
+
// have advanced; otherwise the active-state writer stale-skips the update and the mirror keeps the
|
|
1311
|
+
// prior phase (e.g. staying "interviewing" after a "handoff" write).
|
|
1312
|
+
merged.state_revision = stampedRevision;
|
|
1313
|
+
await syncWorkflowSkillState({
|
|
1314
|
+
cwd,
|
|
1315
|
+
mode,
|
|
1316
|
+
sessionId,
|
|
1317
|
+
threadId,
|
|
1318
|
+
turnId,
|
|
1319
|
+
active,
|
|
1320
|
+
phase,
|
|
1321
|
+
payload: merged,
|
|
1322
|
+
receipt,
|
|
1323
|
+
});
|
|
1324
|
+
await touchStateActivityMarker(cwd, sessionId, filePath);
|
|
1446
1325
|
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1326
|
+
return {
|
|
1327
|
+
status: 0,
|
|
1328
|
+
stdout: renderCliWriteReceipt({
|
|
1329
|
+
ok: true,
|
|
1330
|
+
skill: mode,
|
|
1331
|
+
state_path: receipt.state_path,
|
|
1332
|
+
current_phase: phase,
|
|
1333
|
+
active,
|
|
1334
|
+
mutation_id: typeof stampedReceipt.mutation_id === "string" ? stampedReceipt.mutation_id : mutationId,
|
|
1335
|
+
status: typeof stampedReceipt.status === "string" ? stampedReceipt.status : undefined,
|
|
1336
|
+
content_sha256: stampedReceipt.content_sha256,
|
|
1337
|
+
}),
|
|
1338
|
+
...(outOfBandWarning ? { stderr: `${outOfBandWarning}\n` } : {}),
|
|
1339
|
+
};
|
|
1340
|
+
},
|
|
1341
|
+
{ cwd },
|
|
1342
|
+
);
|
|
1461
1343
|
}
|
|
1462
1344
|
|
|
1463
|
-
async function handleClear(
|
|
1464
|
-
args
|
|
1465
|
-
cwd: string,
|
|
1466
|
-
positionalSkill: string | undefined,
|
|
1467
|
-
): Promise<StateCommandResult> {
|
|
1468
|
-
const selectors = await resolveSelectors(args, cwd, positionalSkill, "clear");
|
|
1345
|
+
async function handleClear(args: readonly string[], cwd: string): Promise<StateCommandResult> {
|
|
1346
|
+
const selectors = await resolveSelectors(args, cwd, "clear");
|
|
1469
1347
|
const { skcSessionId: sessionId, threadId, turnId } = selectors;
|
|
1470
1348
|
const mode = selectors.mode ?? (await inferModeFromActiveState(cwd, sessionId));
|
|
1471
1349
|
if (!mode)
|
|
@@ -1476,74 +1354,143 @@ async function handleClear(
|
|
|
1476
1354
|
|
|
1477
1355
|
const filePath = modeStateFile(cwd, mode, sessionId);
|
|
1478
1356
|
const forced = hasFlag(args, "--force");
|
|
1479
|
-
|
|
1480
|
-
|
|
1357
|
+
return await withWorkflowStateLock(
|
|
1358
|
+
filePath,
|
|
1359
|
+
async () => {
|
|
1360
|
+
const existingRead = await readExistingStateForMutation(filePath);
|
|
1361
|
+
if (existingRead.kind === "corrupt" && !forced) {
|
|
1362
|
+
throw new StateCommandError(
|
|
1363
|
+
2,
|
|
1364
|
+
`existing state for ${mode} is corrupt or tampered (${existingRead.error}); use --force to overwrite`,
|
|
1365
|
+
);
|
|
1366
|
+
}
|
|
1367
|
+
const existing = existingRead.kind === "valid" ? existingRead.value : {};
|
|
1368
|
+
const staleReason = await describeStaleClearState(cwd, sessionId, mode, existing);
|
|
1369
|
+
if (staleReason && !forced) {
|
|
1370
|
+
throw new StateCommandError(
|
|
1371
|
+
2,
|
|
1372
|
+
`existing state for ${mode} is stale (${staleReason}); use --force to clear`,
|
|
1373
|
+
);
|
|
1374
|
+
}
|
|
1375
|
+
const clearedAt = nowIso();
|
|
1376
|
+
const cleared: Record<string, unknown> = {
|
|
1377
|
+
skill: mode,
|
|
1378
|
+
...existing,
|
|
1379
|
+
active: false,
|
|
1380
|
+
current_phase: "complete",
|
|
1381
|
+
updated_at: clearedAt,
|
|
1382
|
+
version: WORKFLOW_STATE_VERSION,
|
|
1383
|
+
};
|
|
1384
|
+
cleared.skill = mode;
|
|
1385
|
+
const mutationId = `${mode}:clear:${clearedAt}`;
|
|
1386
|
+
const receipt = buildWorkflowStateReceipt({
|
|
1387
|
+
cwd,
|
|
1388
|
+
skill: mode,
|
|
1389
|
+
owner: "skc-state-cli",
|
|
1390
|
+
command: `skc state ${mode} clear`,
|
|
1391
|
+
sessionId,
|
|
1392
|
+
nowIso: clearedAt,
|
|
1393
|
+
mutationId,
|
|
1394
|
+
});
|
|
1395
|
+
cleared.receipt = receipt;
|
|
1396
|
+
const { warning: outOfBandWarning, stamped } = await writeJsonAtomic(cwd, filePath, cleared, "clear", {
|
|
1397
|
+
sessionId,
|
|
1398
|
+
skill: mode,
|
|
1399
|
+
mutationId,
|
|
1400
|
+
force: forced,
|
|
1401
|
+
fromPhase: typeof existing.current_phase === "string" ? existing.current_phase : undefined,
|
|
1402
|
+
toPhase: "complete",
|
|
1403
|
+
lockHeld: true,
|
|
1404
|
+
});
|
|
1405
|
+
const stampedReceipt = isPlainObject(stamped.receipt) ? stamped.receipt : {};
|
|
1406
|
+
|
|
1407
|
+
await syncWorkflowSkillState({
|
|
1408
|
+
cwd,
|
|
1409
|
+
mode,
|
|
1410
|
+
sessionId,
|
|
1411
|
+
threadId,
|
|
1412
|
+
turnId,
|
|
1413
|
+
active: false,
|
|
1414
|
+
phase: "complete",
|
|
1415
|
+
payload: cleared,
|
|
1416
|
+
});
|
|
1417
|
+
await touchStateActivityMarker(cwd, sessionId, filePath);
|
|
1418
|
+
return {
|
|
1419
|
+
status: 0,
|
|
1420
|
+
stdout: renderCliWriteReceipt({
|
|
1421
|
+
ok: true,
|
|
1422
|
+
skill: mode,
|
|
1423
|
+
state_path: receipt.state_path,
|
|
1424
|
+
active: false,
|
|
1425
|
+
current_phase: typeof cleared.current_phase === "string" ? cleared.current_phase : undefined,
|
|
1426
|
+
mutation_id: typeof stampedReceipt.mutation_id === "string" ? stampedReceipt.mutation_id : mutationId,
|
|
1427
|
+
status: typeof stampedReceipt.status === "string" ? stampedReceipt.status : undefined,
|
|
1428
|
+
content_sha256: stampedReceipt.content_sha256,
|
|
1429
|
+
}),
|
|
1430
|
+
...(outOfBandWarning ? { stderr: `${outOfBandWarning}\n` } : {}),
|
|
1431
|
+
};
|
|
1432
|
+
},
|
|
1433
|
+
{ cwd },
|
|
1434
|
+
);
|
|
1435
|
+
}
|
|
1436
|
+
|
|
1437
|
+
const DEEP_INTERVIEW_INTENT_ID_RE = /(?:artifact|surface|integration|constraint):[a-z0-9][a-z0-9._/-]{0,127}/g;
|
|
1438
|
+
|
|
1439
|
+
async function assertDeepInterviewHandoffReady(state: Record<string, unknown>): Promise<void> {
|
|
1440
|
+
const specPath = typeof state.spec_path === "string" ? state.spec_path : undefined;
|
|
1441
|
+
const expectedSha = typeof state.spec_sha256 === "string" ? state.spec_sha256 : undefined;
|
|
1442
|
+
let content: string | undefined;
|
|
1443
|
+
if (specPath) {
|
|
1444
|
+
try {
|
|
1445
|
+
content = await fs.readFile(specPath, "utf-8");
|
|
1446
|
+
} catch (error) {
|
|
1447
|
+
throw new StateCommandError(
|
|
1448
|
+
2,
|
|
1449
|
+
`deep-interview handoff cannot read persisted spec: ${error instanceof Error ? error.message : String(error)}`,
|
|
1450
|
+
);
|
|
1451
|
+
}
|
|
1452
|
+
const boundedContent = content.endsWith("\n") ? content.slice(0, -1) : content;
|
|
1453
|
+
assertDeepInterviewInputWithinLimit(
|
|
1454
|
+
boundedContent,
|
|
1455
|
+
MAX_DEEP_INTERVIEW_STRUCTURED_RESPONSE_LENGTH,
|
|
1456
|
+
"persisted deep-interview spec",
|
|
1457
|
+
);
|
|
1458
|
+
}
|
|
1459
|
+
const envelope = normalizeDeepInterviewEnvelope(state);
|
|
1460
|
+
const inner = envelope.state;
|
|
1461
|
+
if (!inner) return;
|
|
1462
|
+
if (inner.intent_contract === undefined) {
|
|
1463
|
+
if (inner.intent_contract_required === true)
|
|
1464
|
+
throw new StateCommandError(2, "deep-interview handoff requires a locked Round 0 intent contract");
|
|
1465
|
+
return;
|
|
1466
|
+
}
|
|
1467
|
+
assertDeepInterviewIntentManifest(inner.intent_contract);
|
|
1468
|
+
if (!specPath || !expectedSha || content === undefined)
|
|
1469
|
+
throw new StateCommandError(2, "deep-interview handoff requires a persisted intent-validated spec");
|
|
1470
|
+
if (createHash("sha256").update(content).digest("hex") !== expectedSha)
|
|
1471
|
+
throw new StateCommandError(2, "deep-interview handoff spec hash mismatch");
|
|
1472
|
+
const observedIds = [...new Set(content.match(DEEP_INTERVIEW_INTENT_ID_RE) ?? [])].sort();
|
|
1473
|
+
const rounds = Array.isArray(inner.rounds)
|
|
1474
|
+
? inner.rounds
|
|
1475
|
+
.filter(
|
|
1476
|
+
(round): round is Record<string, unknown> =>
|
|
1477
|
+
Boolean(round) && typeof round === "object" && !Array.isArray(round),
|
|
1478
|
+
)
|
|
1479
|
+
.map(round => ({ round: round.round, answer_hash: round.answer_hash }))
|
|
1480
|
+
: [];
|
|
1481
|
+
try {
|
|
1482
|
+
assertDeepInterviewIntentReview(
|
|
1483
|
+
inner.intent_review,
|
|
1484
|
+
inner.intent_contract as DeepInterviewIntentManifest,
|
|
1485
|
+
observedIds,
|
|
1486
|
+
rounds,
|
|
1487
|
+
);
|
|
1488
|
+
} catch (error) {
|
|
1481
1489
|
throw new StateCommandError(
|
|
1482
1490
|
2,
|
|
1483
|
-
`
|
|
1491
|
+
`deep-interview handoff intent validation failed: ${error instanceof Error ? error.message : String(error)}`,
|
|
1484
1492
|
);
|
|
1485
1493
|
}
|
|
1486
|
-
const existing = existingRead.kind === "valid" ? existingRead.value : {};
|
|
1487
|
-
const staleReason = await describeStaleClearState(cwd, sessionId, mode, existing);
|
|
1488
|
-
if (staleReason && !forced) {
|
|
1489
|
-
throw new StateCommandError(2, `existing state for ${mode} is stale (${staleReason}); use --force to clear`);
|
|
1490
|
-
}
|
|
1491
|
-
const clearedAt = nowIso();
|
|
1492
|
-
const cleared: Record<string, unknown> = {
|
|
1493
|
-
skill: mode,
|
|
1494
|
-
...existing,
|
|
1495
|
-
active: false,
|
|
1496
|
-
current_phase: "complete",
|
|
1497
|
-
updated_at: clearedAt,
|
|
1498
|
-
version: WORKFLOW_STATE_VERSION,
|
|
1499
|
-
};
|
|
1500
|
-
cleared.skill = mode;
|
|
1501
|
-
const mutationId = `${mode}:clear:${clearedAt}`;
|
|
1502
|
-
const receipt = buildWorkflowStateReceipt({
|
|
1503
|
-
cwd,
|
|
1504
|
-
skill: mode,
|
|
1505
|
-
owner: "skc-state-cli",
|
|
1506
|
-
command: `skc state ${mode} clear`,
|
|
1507
|
-
sessionId,
|
|
1508
|
-
nowIso: clearedAt,
|
|
1509
|
-
mutationId,
|
|
1510
|
-
});
|
|
1511
|
-
cleared.receipt = receipt;
|
|
1512
|
-
const { warning: outOfBandWarning, stamped } = await writeJsonAtomic(cwd, filePath, cleared, "clear", {
|
|
1513
|
-
sessionId,
|
|
1514
|
-
skill: mode,
|
|
1515
|
-
mutationId,
|
|
1516
|
-
force: forced,
|
|
1517
|
-
fromPhase: typeof existing.current_phase === "string" ? existing.current_phase : undefined,
|
|
1518
|
-
toPhase: "complete",
|
|
1519
|
-
});
|
|
1520
|
-
const stampedReceipt = isPlainObject(stamped.receipt) ? stamped.receipt : {};
|
|
1521
|
-
|
|
1522
|
-
await syncWorkflowSkillState({
|
|
1523
|
-
cwd,
|
|
1524
|
-
mode,
|
|
1525
|
-
sessionId,
|
|
1526
|
-
threadId,
|
|
1527
|
-
turnId,
|
|
1528
|
-
active: false,
|
|
1529
|
-
phase: "complete",
|
|
1530
|
-
payload: cleared,
|
|
1531
|
-
});
|
|
1532
|
-
await touchStateActivityMarker(cwd, sessionId, filePath);
|
|
1533
|
-
return {
|
|
1534
|
-
status: 0,
|
|
1535
|
-
stdout: renderCliWriteReceipt({
|
|
1536
|
-
ok: true,
|
|
1537
|
-
skill: mode,
|
|
1538
|
-
state_path: filePath,
|
|
1539
|
-
active: false,
|
|
1540
|
-
current_phase: typeof cleared.current_phase === "string" ? cleared.current_phase : undefined,
|
|
1541
|
-
mutation_id: typeof stampedReceipt.mutation_id === "string" ? stampedReceipt.mutation_id : mutationId,
|
|
1542
|
-
status: typeof stampedReceipt.status === "string" ? stampedReceipt.status : undefined,
|
|
1543
|
-
content_sha256: stampedReceipt.content_sha256,
|
|
1544
|
-
}),
|
|
1545
|
-
...(outOfBandWarning ? { stderr: `${outOfBandWarning}\n` } : {}),
|
|
1546
|
-
};
|
|
1547
1494
|
}
|
|
1548
1495
|
|
|
1549
1496
|
/**
|
|
@@ -1565,12 +1512,8 @@ async function handleClear(
|
|
|
1565
1512
|
* the phase remains in `skill-active-state.json` until a chain call (or
|
|
1566
1513
|
* explicit `clear`) demotes it.
|
|
1567
1514
|
*/
|
|
1568
|
-
async function
|
|
1569
|
-
args
|
|
1570
|
-
cwd: string,
|
|
1571
|
-
positionalSkill: string | undefined,
|
|
1572
|
-
): Promise<StateCommandResult> {
|
|
1573
|
-
const selectors = await resolveSelectors(args, cwd, positionalSkill, "handoff");
|
|
1515
|
+
async function handleHandoffUnlocked(args: readonly string[], cwd: string): Promise<StateCommandResult> {
|
|
1516
|
+
const selectors = await resolveSelectors(args, cwd, "handoff");
|
|
1574
1517
|
const { skcSessionId: sessionId, threadId, turnId } = selectors;
|
|
1575
1518
|
const caller = selectors.mode ?? (await inferModeFromActiveState(cwd, sessionId));
|
|
1576
1519
|
if (!caller) {
|
|
@@ -1619,18 +1562,19 @@ async function handleHandoff(
|
|
|
1619
1562
|
nowIso: handoffAt,
|
|
1620
1563
|
mutationId,
|
|
1621
1564
|
});
|
|
1565
|
+
const normalizedCaller =
|
|
1566
|
+
caller === "deep-interview"
|
|
1567
|
+
? (normalizeDeepInterviewEnvelope(migrateWorkflowState(existingCaller, caller).state) as Record<
|
|
1568
|
+
string,
|
|
1569
|
+
unknown
|
|
1570
|
+
>)
|
|
1571
|
+
: migrateWorkflowState(existingCaller, caller).state;
|
|
1572
|
+
if (caller === "deep-interview") await assertDeepInterviewHandoffReady(normalizedCaller);
|
|
1622
1573
|
|
|
1623
1574
|
// Runtime callees have no native mode-state to clear later, so do not
|
|
1624
1575
|
// persist them as active-state entries; the prompt observer tracks them
|
|
1625
1576
|
// in memory the same way direct `/skill:<runtime>` invocation does.
|
|
1626
1577
|
if (!calleeIsWorkflow) {
|
|
1627
|
-
const normalizedCaller =
|
|
1628
|
-
caller === "deep-interview"
|
|
1629
|
-
? (normalizeDeepInterviewEnvelope(migrateWorkflowState(existingCaller, caller).state) as Record<
|
|
1630
|
-
string,
|
|
1631
|
-
unknown
|
|
1632
|
-
>)
|
|
1633
|
-
: migrateWorkflowState(existingCaller, caller).state;
|
|
1634
1578
|
const mergedCallerState: Record<string, unknown> = {
|
|
1635
1579
|
...normalizedCaller,
|
|
1636
1580
|
skill: caller,
|
|
@@ -1727,13 +1671,6 @@ async function handleHandoff(
|
|
|
1727
1671
|
});
|
|
1728
1672
|
|
|
1729
1673
|
const calleeInitial = initialPhaseForSkill(callee);
|
|
1730
|
-
const normalizedCaller =
|
|
1731
|
-
caller === "deep-interview"
|
|
1732
|
-
? (normalizeDeepInterviewEnvelope(migrateWorkflowState(existingCaller, caller).state) as Record<
|
|
1733
|
-
string,
|
|
1734
|
-
unknown
|
|
1735
|
-
>)
|
|
1736
|
-
: migrateWorkflowState(existingCaller, caller).state;
|
|
1737
1674
|
const normalizedCallee =
|
|
1738
1675
|
callee === "deep-interview"
|
|
1739
1676
|
? (normalizeDeepInterviewEnvelope(migrateWorkflowState(existingCallee, callee).state) as Record<
|
|
@@ -1884,12 +1821,22 @@ async function handleHandoff(
|
|
|
1884
1821
|
};
|
|
1885
1822
|
}
|
|
1886
1823
|
|
|
1887
|
-
async function
|
|
1888
|
-
args
|
|
1889
|
-
|
|
1890
|
-
|
|
1891
|
-
|
|
1892
|
-
|
|
1824
|
+
async function handleHandoff(args: readonly string[], cwd: string): Promise<StateCommandResult> {
|
|
1825
|
+
const selectors = await resolveSelectors(args, cwd, "handoff");
|
|
1826
|
+
// Serialize concurrent handoffs on a dedicated sentinel lock, NOT on the
|
|
1827
|
+
// derived `skill-active-state.json` cache. The inner transaction
|
|
1828
|
+
// (applyHandoffToActiveState / syncSkillActiveState -> rebuildActiveSnapshot)
|
|
1829
|
+
// re-locks that cache file, and `withFileLock` is not reentrant: holding the
|
|
1830
|
+
// active-state lock here made the inner rebuild self-contend and fail after
|
|
1831
|
+
// all retries whenever `cwd === process.cwd()` (the real CLI case). Pass
|
|
1832
|
+
// `{ cwd }` so the sentinel resolves against the handoff cwd rather than
|
|
1833
|
+
// `process.cwd()`.
|
|
1834
|
+
const handoffLock = path.join(sessionStateDir(cwd, selectors.skcSessionId), "handoff");
|
|
1835
|
+
return withWorkflowStateLock(handoffLock, async () => handleHandoffUnlocked(args, cwd), { cwd });
|
|
1836
|
+
}
|
|
1837
|
+
|
|
1838
|
+
async function handleContract(args: readonly string[], cwd: string): Promise<StateCommandResult> {
|
|
1839
|
+
const { mode } = await resolveSelectors(args, cwd, "read");
|
|
1893
1840
|
if (!mode) {
|
|
1894
1841
|
throw new StateCommandError(2, "skc state contract requires --mode <skill>, positional <skill>, or input.skill");
|
|
1895
1842
|
}
|
|
@@ -2117,12 +2064,8 @@ async function handleGraph(
|
|
|
2117
2064
|
};
|
|
2118
2065
|
}
|
|
2119
2066
|
|
|
2120
|
-
async function handlePrune(
|
|
2121
|
-
args
|
|
2122
|
-
cwd: string,
|
|
2123
|
-
positionalSkill: string | undefined,
|
|
2124
|
-
): Promise<StateCommandResult> {
|
|
2125
|
-
const selectors = await resolveSelectors(args, cwd, positionalSkill, "prune");
|
|
2067
|
+
async function handlePrune(args: readonly string[], cwd: string): Promise<StateCommandResult> {
|
|
2068
|
+
const selectors = await resolveSelectors(args, cwd, "prune");
|
|
2126
2069
|
const mode = selectors.mode ?? (await inferModeFromActiveState(cwd, selectors.skcSessionId));
|
|
2127
2070
|
if (!mode) {
|
|
2128
2071
|
throw new StateCommandError(
|
|
@@ -2187,12 +2130,8 @@ async function handleGc(
|
|
|
2187
2130
|
return { status: 0, stdout: `${JSON.stringify(summary, null, 2)}\n` };
|
|
2188
2131
|
}
|
|
2189
2132
|
|
|
2190
|
-
async function handleMigrate(
|
|
2191
|
-
args
|
|
2192
|
-
cwd: string,
|
|
2193
|
-
positionalSkill: string | undefined,
|
|
2194
|
-
): Promise<StateCommandResult> {
|
|
2195
|
-
const selectors = await resolveSelectors(args, cwd, positionalSkill, "migrate");
|
|
2133
|
+
async function handleMigrate(args: readonly string[], cwd: string): Promise<StateCommandResult> {
|
|
2134
|
+
const selectors = await resolveSelectors(args, cwd, "migrate");
|
|
2196
2135
|
const mode = selectors.mode ?? (await inferModeFromActiveState(cwd, selectors.skcSessionId));
|
|
2197
2136
|
if (!mode) {
|
|
2198
2137
|
throw new StateCommandError(
|
|
@@ -2223,37 +2162,34 @@ async function handleMigrate(
|
|
|
2223
2162
|
|
|
2224
2163
|
export async function runNativeStateCommand(args: string[], cwd = process.cwd()): Promise<StateCommandResult> {
|
|
2225
2164
|
try {
|
|
2226
|
-
const parsed =
|
|
2227
|
-
assertKnownFlags(
|
|
2228
|
-
switch (parsed.
|
|
2165
|
+
const parsed = classifyStateArgv(args);
|
|
2166
|
+
assertKnownFlags(parsed);
|
|
2167
|
+
switch (parsed.effectiveAction) {
|
|
2229
2168
|
case "read":
|
|
2230
|
-
|
|
2231
|
-
return await handleRead(args, cwd, parsed.positionalSkill);
|
|
2169
|
+
return await handleRead(args, cwd);
|
|
2232
2170
|
case "write":
|
|
2233
|
-
return await handleWrite(args, cwd
|
|
2171
|
+
return await handleWrite(args, cwd);
|
|
2234
2172
|
case "clear":
|
|
2235
|
-
return await handleClear(args, cwd
|
|
2173
|
+
return await handleClear(args, cwd);
|
|
2236
2174
|
case "contract":
|
|
2237
|
-
return await handleContract(args, cwd
|
|
2175
|
+
return await handleContract(args, cwd);
|
|
2238
2176
|
case "status":
|
|
2239
|
-
return await handleStatus(args, cwd
|
|
2177
|
+
return await handleStatus(args, cwd);
|
|
2240
2178
|
case "doctor":
|
|
2241
2179
|
return await handleDoctor(args, cwd, parsed.positionalSkill);
|
|
2242
2180
|
case "handoff":
|
|
2243
|
-
return await handleHandoff(args, cwd
|
|
2181
|
+
return await handleHandoff(args, cwd);
|
|
2244
2182
|
case "graph":
|
|
2245
2183
|
return await handleGraph(args, cwd, parsed.positionalSkill);
|
|
2246
2184
|
case "prune":
|
|
2247
|
-
return await handlePrune(args, cwd
|
|
2185
|
+
return await handlePrune(args, cwd);
|
|
2248
2186
|
case "gc":
|
|
2249
2187
|
return await handleGc(args, cwd, parsed.positionalSkill);
|
|
2250
2188
|
case "migrate":
|
|
2251
|
-
return await handleMigrate(args, cwd
|
|
2252
|
-
default:
|
|
2253
|
-
return { status: 2, stderr: `Unknown skc state command: ${parsed.action}\n` };
|
|
2189
|
+
return await handleMigrate(args, cwd);
|
|
2254
2190
|
}
|
|
2255
2191
|
} catch (error) {
|
|
2256
|
-
if (error instanceof
|
|
2192
|
+
if (error instanceof CommandError) return { status: error.exitStatus, stderr: `${error.message}\n` };
|
|
2257
2193
|
if (error instanceof SessionResolutionError) return { status: 2, stderr: `${error.message}\n` };
|
|
2258
2194
|
return { status: 1, stderr: `${error instanceof Error ? error.message : String(error)}\n` };
|
|
2259
2195
|
}
|