@sayknow-cli/coding-agent 0.4.6 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +112 -0
- package/dist/types/capability/index.d.ts +10 -20
- package/dist/types/capability/types.d.ts +3 -0
- package/dist/types/cli/args.d.ts +0 -2
- package/dist/types/cli/read-cli.d.ts +1 -0
- package/dist/types/cli.d.ts +9 -1
- package/dist/types/commands/daemon.d.ts +2 -2
- package/dist/types/commands/deep-interview.d.ts +9 -0
- package/dist/types/commands/harness.d.ts +22 -0
- package/dist/types/commands/read.d.ts +6 -0
- package/dist/types/commands/sdk.d.ts +20 -2
- package/dist/types/config/keybindings.d.ts +34 -4
- package/dist/types/config/model-profile-contract.d.ts +40 -0
- package/dist/types/config/model-profiles.d.ts +2 -3
- package/dist/types/config/model-registry.d.ts +5 -0
- package/dist/types/config/provider-auth-health.d.ts +14 -0
- package/dist/types/config/provider-ranking.d.ts +59 -0
- package/dist/types/config/settings-schema.d.ts +156 -10
- package/dist/types/config/settings.d.ts +3 -0
- package/dist/types/edit/modes/patch.d.ts +13 -0
- package/dist/types/edit/path-mutation-lock.d.ts +15 -0
- package/dist/types/eval/py/executor.d.ts +1 -1
- package/dist/types/eval/py/runner-artifact.d.ts +8 -0
- package/dist/types/eval/py/tool-bridge.d.ts +1 -2
- package/dist/types/extensibility/extensions/types.d.ts +43 -2
- package/dist/types/extensibility/shared-events.d.ts +6 -0
- package/dist/types/internal-urls/local-root-gc.d.ts +2 -0
- package/dist/types/main.d.ts +33 -2
- package/dist/types/memories/index.d.ts +2 -0
- package/dist/types/modes/acp/acp-agent.d.ts +22 -9
- package/dist/types/modes/components/assistant-message.d.ts +3 -1
- package/dist/types/modes/components/btw-panel.d.ts +1 -0
- package/dist/types/modes/components/irc-sidebar.d.ts +41 -0
- package/dist/types/modes/components/queue-pane.d.ts +8 -0
- package/dist/types/modes/components/queued-message-selector.d.ts +6 -0
- package/dist/types/modes/components/read-tool-group.d.ts +4 -4
- package/dist/types/modes/components/runtime-mcp-add-wizard.d.ts +2 -1
- package/dist/types/modes/components/session-observer-overlay.d.ts +4 -0
- package/dist/types/modes/components/settings-selector.d.ts +2 -0
- package/dist/types/modes/components/tool-execution.d.ts +8 -0
- package/dist/types/modes/components/tool-status-header.d.ts +4 -2
- package/dist/types/modes/components/welcome.d.ts +5 -0
- package/dist/types/modes/controllers/btw-controller.d.ts +5 -0
- package/dist/types/modes/controllers/command-controller.d.ts +2 -0
- package/dist/types/modes/controllers/event-controller.d.ts +3 -0
- package/dist/types/modes/interactive-mode.d.ts +13 -2
- package/dist/types/modes/irc-observation-ledger.d.ts +17 -1
- package/dist/types/modes/prompt-action-autocomplete.d.ts +6 -1
- package/dist/types/modes/prompt-suggestion-controller.d.ts +35 -0
- package/dist/types/modes/shared/agent-wire/workflow-gate-broker.d.ts +2 -2
- package/dist/types/modes/types.d.ts +6 -0
- package/dist/types/modes/utils/hotkeys-markdown.d.ts +2 -1
- package/dist/types/modes/utils/ui-helpers.d.ts +16 -0
- package/dist/types/runtime/memory-domain.d.ts +9 -0
- package/dist/types/runtime/memory-guard-contract.d.ts +71 -0
- package/dist/types/runtime/memory-guard.d.ts +39 -0
- package/dist/types/runtime/memory-limit.d.ts +11 -0
- package/dist/types/runtime-mcp/content-limits.d.ts +7 -0
- package/dist/types/runtime-mcp/discoverable-tool-metadata.d.ts +1 -1
- package/dist/types/runtime-mcp/manager.d.ts +9 -1
- package/dist/types/runtime-mcp/oauth-flow.d.ts +0 -5
- package/dist/types/runtime-mcp/plugin-network-boundary.d.ts +14 -0
- package/dist/types/runtime-mcp/redaction.d.ts +2 -0
- package/dist/types/runtime-mcp/smithery-auth.d.ts +5 -0
- package/dist/types/sdk/acp/final-text.d.ts +19 -0
- package/dist/types/sdk/acp/mcp.d.ts +23 -0
- package/dist/types/sdk/broker/broker.d.ts +2 -0
- package/dist/types/sdk/broker/lifecycle.d.ts +13 -0
- package/dist/types/sdk/bus/chat-daemon-control.d.ts +9 -1
- package/dist/types/sdk/bus/config-commands.d.ts +2 -2
- package/dist/types/sdk/bus/config.d.ts +2 -0
- package/dist/types/sdk/bus/control-drain-lease.d.ts +52 -0
- package/dist/types/sdk/bus/conversation-store.d.ts +1 -0
- package/dist/types/sdk/bus/daemon-paths.d.ts +1 -0
- package/dist/types/sdk/bus/index.d.ts +52 -4
- package/dist/types/sdk/bus/kind-aware-reconciliation.d.ts +37 -0
- package/dist/types/sdk/bus/lifecycle-commands.d.ts +5 -4
- package/dist/types/sdk/bus/notification-orchestration.d.ts +1 -0
- package/dist/types/sdk/bus/notification-service.d.ts +34 -0
- package/dist/types/sdk/bus/operator-runtime.d.ts +1 -0
- package/dist/types/sdk/bus/prompt-reconciliation.d.ts +106 -0
- package/dist/types/sdk/bus/rate-limit-pool.d.ts +2 -0
- package/dist/types/sdk/bus/reconciliation-store.d.ts +65 -0
- package/dist/types/sdk/bus/telegram-daemon-contract.d.ts +33 -9
- package/dist/types/sdk/bus/telegram-daemon-control.d.ts +5 -1
- package/dist/types/sdk/bus/telegram-daemon.d.ts +286 -12
- package/dist/types/sdk/bus/telegram-reference.d.ts +2 -0
- package/dist/types/sdk/bus/topic-registry.d.ts +88 -2
- package/dist/types/sdk/client/discovery.d.ts +2 -0
- package/dist/types/sdk/client/liveness.d.ts +7 -0
- package/dist/types/sdk/host/control/operations.d.ts +3 -2
- package/dist/types/sdk/host/host.d.ts +3 -1
- package/dist/types/sdk/host/query/handlers.d.ts +14 -0
- package/dist/types/sdk/index.d.ts +2 -0
- package/dist/types/sdk/lifecycle-session.d.ts +10 -1
- package/dist/types/sdk/prompt-status.d.ts +88 -0
- package/dist/types/sdk/session-directory.d.ts +1 -1
- package/dist/types/sdk/session.d.ts +7 -0
- package/dist/types/sdk/startup-capability.d.ts +9 -0
- package/dist/types/sdk/transport/auth-preface.d.ts +9 -0
- package/dist/types/sdk/transport/index.d.ts +12 -0
- package/dist/types/sdk/transport/relay.d.ts +43 -0
- package/dist/types/sdk/transport/serve-cli.d.ts +4 -0
- package/dist/types/sdk/transport/socket.d.ts +7 -0
- package/dist/types/sdk/transport/stdio.d.ts +3 -0
- package/dist/types/session/agent-session.d.ts +83 -24
- package/dist/types/session/btw-contract.d.ts +16 -0
- package/dist/types/session/fallback-chain-controller.d.ts +18 -2
- package/dist/types/session/internal/managed-session-scope.d.ts +70 -10
- package/dist/types/session/internal/managed-session-storage.d.ts +34 -12
- package/dist/types/session/internal/native-publish-outcome.d.ts +48 -0
- package/dist/types/session/memory-guard-checkpoint-participant.d.ts +69 -0
- package/dist/types/session/session-manager.d.ts +89 -18
- package/dist/types/session/session-storage.d.ts +31 -0
- package/dist/types/session/streaming-output.d.ts +60 -5
- package/dist/types/setup/credential-import.d.ts +5 -1
- package/dist/types/setup/provider-onboarding.d.ts +2 -0
- package/dist/types/skc-runtime/deep-interview-runtime.d.ts +1 -1
- package/dist/types/skc-runtime/deep-interview-stage.d.ts +37 -0
- package/dist/types/skc-runtime/gc-runtime.d.ts +1 -1
- package/dist/types/skc-runtime/linux-proc.d.ts +22 -14
- package/dist/types/skc-runtime/memory-guard-owner-claims.d.ts +47 -0
- package/dist/types/skc-runtime/ralplan-runtime.d.ts +112 -1
- package/dist/types/skc-runtime/repository-binding.d.ts +63 -0
- package/dist/types/skc-runtime/state-runtime.d.ts +3 -1
- package/dist/types/skc-runtime/state-writer.d.ts +5 -1
- package/dist/types/skc-runtime/team-launch.d.ts +1 -1
- package/dist/types/skc-runtime/team-runtime.d.ts +9 -2
- package/dist/types/skc-runtime/team-store.d.ts +12 -0
- package/dist/types/skc-runtime/team-worker-memory-guard.d.ts +92 -0
- package/dist/types/skc-runtime/tmux-owner-isolation.d.ts +7 -0
- package/dist/types/skc-runtime/ultragoal-guard.d.ts +6 -5
- package/dist/types/skc-runtime/ultragoal-receipt-freshness.d.ts +28 -0
- package/dist/types/skc-runtime/ultragoal-runtime.d.ts +43 -5
- package/dist/types/skill-state/workflow-hud.d.ts +3 -0
- package/dist/types/ssh/utils.d.ts +1 -0
- package/dist/types/task/discovery.d.ts +3 -1
- package/dist/types/task/executor.d.ts +6 -0
- package/dist/types/task/index.d.ts +3 -1
- package/dist/types/task/provider-retry-status.d.ts +13 -0
- package/dist/types/task/receipt.d.ts +2 -0
- package/dist/types/task/types.d.ts +133 -0
- package/dist/types/task/ultragoal-redteam-activation.d.ts +33 -0
- package/dist/types/tools/browser/launch.d.ts +7 -0
- package/dist/types/tools/fetch.d.ts +22 -9
- package/dist/types/tools/image-gen.d.ts +63 -1
- package/dist/types/tools/index.d.ts +7 -1
- package/dist/types/tools/output-meta.d.ts +21 -1
- package/dist/types/tools/read-internals.d.ts +12 -0
- package/dist/types/tools/read.d.ts +45 -1
- package/dist/types/tools/resource-gc.d.ts +23 -0
- package/dist/types/tools/skill-discovery.d.ts +7 -0
- package/dist/types/tools/sqlite-reader.d.ts +7 -0
- package/dist/types/tools/tool-result.d.ts +7 -1
- package/dist/types/utils/prompt-suggestion.d.ts +33 -0
- package/dist/types/utils/shell-snapshot.d.ts +12 -0
- package/dist/types/web/insane/bridge.d.ts +1 -0
- package/dist/types/web/insane/url-guard.d.ts +17 -0
- package/package.json +8 -12
- package/scripts/benchmark-sticky-viewport-pr1.ts +239 -0
- package/scripts/capture-platform-shortcut-labels-showcase.ts +342 -0
- package/scripts/capture-sticky-viewport-showcase.ts +292 -0
- package/scripts/compile-args.ts +0 -1
- package/scripts/dogfood-repository-binding.ts +209 -0
- package/scripts/generate-docs-index.ts +4 -1
- package/scripts/generate-sdk-operation-inventory.ts +9 -0
- package/scripts/run-test-manifest.ts +6 -4
- package/scripts/verify-skc-sdk-canonicalization.ts +122 -18
- package/scripts/verify-sticky-viewport-showcase.ts +611 -0
- package/src/capability/index.ts +58 -42
- package/src/capability/types.ts +3 -0
- package/src/cli/args.ts +16 -100
- package/src/cli/fast-help.ts +1 -1
- package/src/cli/mcp-cli.ts +4 -21
- package/src/cli/notify-cli.ts +6 -38
- package/src/cli/read-cli.ts +2 -1
- package/src/cli/setup-cli.ts +10 -4
- package/src/cli.ts +133 -11
- package/src/commands/daemon.ts +22 -5
- package/src/commands/deep-interview.ts +26 -1
- package/src/commands/harness.ts +35 -12
- package/src/commands/read.ts +11 -2
- package/src/commands/sdk.ts +134 -17
- package/src/commands/team.ts +1 -1
- package/src/commit/agentic/index.ts +3 -3
- package/src/commit/map-reduce/index.ts +2 -2
- package/src/config/keybindings.ts +158 -25
- package/src/config/model-profile-contract.ts +174 -0
- package/src/config/model-profiles.ts +51 -10
- package/src/config/model-registry.ts +24 -4
- package/src/config/model-resolver.ts +2 -2
- package/src/config/provider-auth-health.ts +42 -0
- package/src/config/provider-ranking.ts +119 -0
- package/src/config/settings-schema.ts +157 -10
- package/src/config/settings.ts +254 -108
- package/src/coordinator-mcp/model-preset.ts +21 -74
- package/src/defaults/skc/skills/deep-interview/SKILL.md +147 -24
- package/src/defaults/skc/skills/ralplan/SKILL.md +91 -34
- package/src/defaults/skc/skills/team/SKILL.md +1 -1
- package/src/defaults/skc/skills/ultragoal/SKILL.md +68 -17
- package/src/discovery/ssh.ts +12 -1
- package/src/edit/index.ts +3 -6
- package/src/edit/modes/patch.ts +38 -1
- package/src/edit/modes/replace.ts +42 -0
- package/src/edit/path-mutation-lock.ts +112 -0
- package/src/eval/js/tool-bridge.ts +1 -1
- package/src/eval/py/executor.ts +37 -13
- package/src/eval/py/kernel.ts +1 -21
- package/src/eval/py/prelude.py +2 -2
- package/src/eval/py/runner-artifact.ts +84 -0
- package/src/eval/py/tool-bridge.ts +34 -18
- package/src/extensibility/extensions/runner.ts +4 -0
- package/src/extensibility/extensions/types.ts +42 -4
- package/src/extensibility/plugins/marketplace/fetcher.ts +191 -7
- package/src/extensibility/shared-events.ts +5 -0
- package/src/extensibility/skc-plugins/runtime-adapters.ts +2 -1
- package/src/hooks/native-skill-hook.ts +17 -4
- package/src/internal-urls/docs-index.generated.ts +17 -16
- package/src/internal-urls/local-protocol.ts +87 -25
- package/src/internal-urls/local-root-gc.ts +127 -0
- package/src/internal-urls/mcp-protocol.ts +73 -11
- package/src/main.ts +120 -42
- package/src/memories/index.ts +10 -0
- package/src/modes/DESIGN.md +52 -0
- package/src/modes/acp/acp-agent.ts +647 -83
- package/src/modes/acp/acp-event-mapper.ts +106 -12
- package/src/modes/acp/acp-mode.ts +39 -3
- package/src/modes/action-registry.ts +1 -1
- package/src/modes/components/assistant-message.ts +123 -22
- package/src/modes/components/btw-panel.ts +82 -16
- package/src/modes/components/irc-sidebar.ts +176 -62
- package/src/modes/components/model-selector.ts +61 -4
- package/src/modes/components/notifications-settings-editor.ts +1 -1
- package/src/modes/components/oauth-selector.ts +42 -12
- package/src/modes/components/plan-preview-overlay.ts +1 -1
- package/src/modes/components/queue-pane.ts +55 -9
- package/src/modes/components/queued-message-selector.ts +53 -10
- package/src/modes/components/read-tool-group.ts +82 -14
- package/src/modes/components/runtime-mcp-add-wizard.ts +5 -0
- package/src/modes/components/sayknow-pet-widget.ts +27 -8
- package/src/modes/components/session-observer-overlay.ts +187 -32
- package/src/modes/components/settings-selector.ts +60 -18
- package/src/modes/components/tool-execution.ts +138 -27
- package/src/modes/components/tool-status-header.ts +26 -8
- package/src/modes/components/welcome.ts +50 -23
- package/src/modes/controllers/btw-controller.ts +119 -36
- package/src/modes/controllers/command-controller.ts +101 -54
- package/src/modes/controllers/event-controller.ts +119 -27
- package/src/modes/controllers/extension-ui-controller.ts +23 -12
- package/src/modes/controllers/input-controller.ts +100 -8
- package/src/modes/controllers/runtime-mcp-command-controller.ts +29 -6
- package/src/modes/controllers/selector-controller.ts +4 -1
- package/src/modes/interactive-mode.ts +201 -60
- package/src/modes/irc-observation-ledger.ts +71 -15
- package/src/modes/prompt-action-autocomplete.ts +32 -13
- package/src/modes/prompt-suggestion-controller.ts +96 -0
- package/src/modes/runtime-init.ts +20 -2
- package/src/modes/shared/agent-wire/command-dispatch.ts +3 -3
- package/src/modes/shared/agent-wire/workflow-gate-broker.ts +2 -2
- package/src/modes/types.ts +6 -0
- package/src/modes/utils/hotkeys-markdown.ts +64 -36
- package/src/modes/utils/ui-helpers.ts +99 -4
- package/src/prompts/agent-fragments/restricted-bash.md +1 -1
- package/src/prompts/agents/architect.md +17 -3
- package/src/prompts/agents/critic.md +17 -2
- package/src/prompts/agents/executor.md +1 -1
- package/src/prompts/agents/planner.md +8 -1
- package/src/prompts/system/btw-user.md +3 -8
- package/src/prompts/system/prompt-suggestion-system.md +32 -0
- package/src/prompts/system/system-prompt.md +6 -3
- package/src/prompts/tools/cron.md +3 -1
- package/src/prompts/tools/read.md +4 -2
- package/src/prompts/tools/skill-discovery.md +1 -0
- package/src/runtime/memory-domain.ts +66 -0
- package/src/runtime/memory-guard-contract.ts +73 -0
- package/src/runtime/memory-guard.ts +292 -0
- package/src/runtime/memory-limit.ts +50 -0
- package/src/runtime-mcp/client.ts +41 -55
- package/src/runtime-mcp/content-limits.ts +71 -0
- package/src/runtime-mcp/discoverable-tool-metadata.ts +1 -1
- package/src/runtime-mcp/json-rpc.ts +28 -11
- package/src/runtime-mcp/manager.ts +77 -59
- package/src/runtime-mcp/oauth-flow.ts +0 -72
- package/src/runtime-mcp/plugin-network-boundary.ts +101 -0
- package/src/runtime-mcp/redaction.ts +30 -0
- package/src/runtime-mcp/smithery-auth.ts +17 -2
- package/src/runtime-mcp/smithery-connect.ts +11 -1
- package/src/runtime-mcp/transports/http.ts +63 -22
- package/src/sdk/acp/adapter.ts +8 -1
- package/src/sdk/acp/final-text.ts +40 -0
- package/src/sdk/acp/mcp.ts +26 -0
- package/src/sdk/broker/broker.ts +34 -20
- package/src/sdk/broker/identity.ts +22 -12
- package/src/sdk/broker/lifecycle.ts +293 -43
- package/src/sdk/broker/session-index.ts +11 -1
- package/src/sdk/bus/chat-daemon-cli.ts +2 -2
- package/src/sdk/bus/chat-daemon-control.ts +22 -5
- package/src/sdk/bus/config-commands.ts +2 -2
- package/src/sdk/bus/config.ts +10 -2
- package/src/sdk/bus/control-drain-lease.ts +104 -0
- package/src/sdk/bus/conversation-store.ts +40 -6
- package/src/sdk/bus/daemon-paths.ts +2 -0
- package/src/sdk/bus/index.ts +793 -121
- package/src/sdk/bus/kind-aware-reconciliation.ts +242 -0
- package/src/sdk/bus/lifecycle-commands.ts +63 -10
- package/src/sdk/bus/lifecycle-control-runtime.ts +11 -2
- package/src/sdk/bus/lifecycle-orchestrator.ts +32 -1
- package/src/sdk/bus/notification-orchestration.ts +12 -0
- package/src/sdk/bus/notification-service.ts +87 -25
- package/src/sdk/bus/operator-runtime.ts +31 -5
- package/src/sdk/bus/prompt-reconciliation.ts +240 -0
- package/src/sdk/bus/rate-limit-pool.ts +8 -0
- package/src/sdk/bus/recent-activity.ts +90 -26
- package/src/sdk/bus/reconciliation-store.ts +224 -0
- package/src/sdk/bus/telegram-cli.ts +6 -13
- package/src/sdk/bus/telegram-daemon-cli.ts +8 -3
- package/src/sdk/bus/telegram-daemon-contract.ts +34 -9
- package/src/sdk/bus/telegram-daemon-control.ts +161 -40
- package/src/sdk/bus/telegram-daemon.ts +3649 -593
- package/src/sdk/bus/telegram-reference.ts +20 -2
- package/src/sdk/bus/topic-registry.ts +451 -12
- package/src/sdk/cli/session-cli.ts +15 -2
- package/src/sdk/client/discovery.ts +19 -3
- package/src/sdk/client/liveness.ts +49 -0
- package/src/sdk/host/control/dispatch.ts +8 -2
- package/src/sdk/host/control/operations.ts +3 -2
- package/src/sdk/host/host.ts +27 -9
- package/src/sdk/host/query/handlers.ts +125 -5
- package/src/sdk/index.ts +12 -0
- package/src/sdk/lifecycle-session.ts +19 -3
- package/src/sdk/mcp/server.ts +46 -18
- package/src/sdk/prompt-status.ts +97 -0
- package/src/sdk/protocol/operation-inventory.generated.json +145 -0
- package/src/sdk/protocol/operation-registry.ts +24 -4
- package/src/sdk/session-directory.ts +5 -1
- package/src/sdk/session.ts +69 -8
- package/src/sdk/startup-capability.ts +15 -1
- package/src/sdk/transport/auth-preface.ts +82 -0
- package/src/sdk/transport/index.ts +18 -0
- package/src/sdk/transport/relay.ts +252 -0
- package/src/sdk/transport/serve-cli.ts +105 -0
- package/src/sdk/transport/socket.ts +197 -0
- package/src/sdk/transport/stdio.ts +17 -0
- package/src/session/agent-session.ts +1112 -314
- package/src/session/blob-store.ts +25 -7
- package/src/session/btw-contract.ts +59 -0
- package/src/session/fallback-chain-controller.ts +47 -8
- package/src/session/internal/managed-session-scope.ts +1426 -259
- package/src/session/internal/managed-session-storage.ts +414 -238
- package/src/session/internal/native-publish-outcome.ts +271 -0
- package/src/session/memory-guard-checkpoint-participant.ts +131 -0
- package/src/session/session-manager.ts +2079 -469
- package/src/session/session-storage.ts +151 -11
- package/src/session/streaming-output.ts +262 -43
- package/src/setup/credential-import.ts +28 -3
- package/src/setup/provider-onboarding.ts +49 -5
- package/src/setup/provider-presets.json +2 -1
- package/src/skc-runtime/deep-interview-runtime.ts +303 -36
- package/src/skc-runtime/deep-interview-stage.ts +1016 -0
- package/src/skc-runtime/deep-interview-state.ts +8 -5
- package/src/skc-runtime/gc-render.ts +1 -0
- package/src/skc-runtime/gc-runtime.ts +11 -1
- package/src/skc-runtime/linux-proc.ts +70 -36
- package/src/skc-runtime/managed-owner-supervisor.ts +83 -4
- package/src/skc-runtime/memory-guard-owner-claims.ts +389 -0
- package/src/skc-runtime/ralplan-runtime.ts +1057 -75
- package/src/skc-runtime/repository-binding.ts +267 -0
- package/src/skc-runtime/session-state-sidecar.ts +25 -9
- package/src/skc-runtime/state-runtime.ts +50 -12
- package/src/skc-runtime/state-writer.ts +68 -56
- package/src/skc-runtime/team-launch.ts +34 -5
- package/src/skc-runtime/team-runtime.ts +41 -1
- package/src/skc-runtime/team-store.ts +32 -0
- package/src/skc-runtime/team-worker-memory-guard.ts +363 -0
- package/src/skc-runtime/team-workers.ts +1 -0
- package/src/skc-runtime/tmux-common.ts +13 -2
- package/src/skc-runtime/tmux-owner-isolation.ts +20 -1
- package/src/skc-runtime/tmux-sessions.ts +45 -6
- package/src/skc-runtime/ultragoal-guard.ts +93 -15
- package/src/skc-runtime/ultragoal-receipt-freshness.ts +123 -0
- package/src/skc-runtime/ultragoal-runtime.ts +469 -38
- package/src/skc-runtime/workflow-manifest.generated.json +195 -5
- package/src/skc-runtime/workflow-manifest.ts +67 -3
- package/src/skill-state/workflow-hud.ts +25 -2
- package/src/skill-state/workflow-mutation-guard.ts +104 -12
- package/src/slash-commands/builtin-registry.ts +1 -1
- package/src/ssh/utils.ts +14 -0
- package/src/task/discovery.ts +8 -2
- package/src/task/executor.ts +165 -47
- package/src/task/index.ts +123 -15
- package/src/task/provider-retry-status.ts +88 -0
- package/src/task/receipt.ts +3 -0
- package/src/task/render.ts +45 -26
- package/src/task/skc-command.ts +2 -2
- package/src/task/types.ts +55 -10
- package/src/task/ultragoal-redteam-activation.ts +75 -0
- package/src/tools/ask.ts +1 -1
- package/src/tools/ast-edit.ts +2 -2
- package/src/tools/bash-allowed-prefixes.ts +45 -1
- package/src/tools/bash-pty-selection.ts +2 -2
- package/src/tools/browser/launch.ts +41 -6
- package/src/tools/browser/screenshot-format.ts +6 -1
- package/src/tools/cron.ts +1 -1
- package/src/tools/fetch.ts +127 -154
- package/src/tools/image-gen.ts +476 -23
- package/src/tools/index.ts +7 -1
- package/src/tools/output-meta.ts +176 -9
- package/src/tools/path-utils.ts +5 -1
- package/src/tools/read-internals.ts +44 -0
- package/src/tools/read.ts +1544 -310
- package/src/tools/resource-gc.ts +665 -125
- package/src/tools/skill-discovery.ts +39 -3
- package/src/tools/sqlite-reader.ts +63 -5
- package/src/tools/subagent-render.ts +74 -16
- package/src/tools/subagent.ts +2 -0
- package/src/tools/tool-result.ts +14 -1
- package/src/utils/edit-mode.ts +2 -2
- package/src/utils/pasted-image-path.ts +15 -6
- package/src/utils/prompt-suggestion.ts +265 -0
- package/src/utils/shell-snapshot.ts +173 -63
- package/src/utils/sixel.ts +3 -3
- package/src/web/insane/bridge.ts +5 -1
- package/src/web/insane/url-guard.ts +140 -27
- package/src/web/scrapers/docs-rs.ts +30 -5
- package/src/web/scrapers/types.ts +19 -49
- package/src/web/scrapers/utils.ts +12 -26
- package/src/web/search/providers/codex.ts +1 -1
- package/src/workflow/workflow-intent-diff.ts +4 -1
|
@@ -180,7 +180,7 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
180
180
|
};
|
|
181
181
|
readonly "notifications.telegram.toolActivity.enabled": {
|
|
182
182
|
readonly type: "boolean";
|
|
183
|
-
readonly default:
|
|
183
|
+
readonly default: false;
|
|
184
184
|
readonly ui: {
|
|
185
185
|
readonly tab: "notifications";
|
|
186
186
|
readonly label: "Telegram Tool Activity";
|
|
@@ -427,6 +427,16 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
427
427
|
readonly default: 0.05;
|
|
428
428
|
readonly validate: (value: number) => boolean;
|
|
429
429
|
};
|
|
430
|
+
readonly "skc.ralplan.maxIterations": {
|
|
431
|
+
readonly type: "number";
|
|
432
|
+
readonly default: 5;
|
|
433
|
+
readonly validate: (value: number) => boolean;
|
|
434
|
+
};
|
|
435
|
+
readonly "skc.ralplan.maxReviewPassesPerLane": {
|
|
436
|
+
readonly type: "number";
|
|
437
|
+
readonly default: 1;
|
|
438
|
+
readonly validate: (value: number) => boolean;
|
|
439
|
+
};
|
|
430
440
|
readonly "theme.dark": {
|
|
431
441
|
readonly type: "string";
|
|
432
442
|
readonly default: "blue-octopus";
|
|
@@ -984,6 +994,15 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
984
994
|
readonly type: "boolean";
|
|
985
995
|
readonly default: true;
|
|
986
996
|
};
|
|
997
|
+
readonly "statusLine.showActionHints": {
|
|
998
|
+
readonly type: "boolean";
|
|
999
|
+
readonly default: true;
|
|
1000
|
+
readonly ui: {
|
|
1001
|
+
readonly tab: "appearance";
|
|
1002
|
+
readonly label: "Status Line Action Hints";
|
|
1003
|
+
readonly description: "Show contextual keyboard shortcuts in the status line";
|
|
1004
|
+
};
|
|
1005
|
+
};
|
|
987
1006
|
readonly "statusLine.leftSegments": {
|
|
988
1007
|
readonly type: "array";
|
|
989
1008
|
readonly default: StatusLineSegmentId[];
|
|
@@ -1499,7 +1518,7 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
1499
1518
|
readonly ui: {
|
|
1500
1519
|
readonly tab: "interaction";
|
|
1501
1520
|
readonly label: "Mouse Support";
|
|
1502
|
-
readonly description: "Enable
|
|
1521
|
+
readonly description: "Enable SKC session scrolling, drag-to-copy text selection, and overlay row selection with the mouse. Disabled by default to preserve native terminal or tmux scrollback and selection.";
|
|
1503
1522
|
};
|
|
1504
1523
|
};
|
|
1505
1524
|
readonly steeringMode: {
|
|
@@ -1599,6 +1618,15 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
1599
1618
|
readonly description: "Suggest emojis from `:name:` shortcodes and expand text emoticons like `:D` or `:-)`";
|
|
1600
1619
|
};
|
|
1601
1620
|
};
|
|
1621
|
+
readonly promptSuggestions: {
|
|
1622
|
+
readonly type: "boolean";
|
|
1623
|
+
readonly default: false;
|
|
1624
|
+
readonly ui: {
|
|
1625
|
+
readonly tab: "interaction";
|
|
1626
|
+
readonly label: "Prompt Suggestions";
|
|
1627
|
+
readonly description: "Predict your likely next prompt after each turn (smol-model call) and show it as ghost text; Tab accepts";
|
|
1628
|
+
};
|
|
1629
|
+
};
|
|
1602
1630
|
readonly "startup.quiet": {
|
|
1603
1631
|
readonly type: "boolean";
|
|
1604
1632
|
readonly default: false;
|
|
@@ -2488,7 +2516,7 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
2488
2516
|
readonly ui: {
|
|
2489
2517
|
readonly tab: "editing";
|
|
2490
2518
|
readonly label: "Default Read Limit";
|
|
2491
|
-
readonly description: "Default
|
|
2519
|
+
readonly description: "Default collection/selection limit for read operations; bare local receipts use the separate 50-line / 10 KiB receipt budgets";
|
|
2492
2520
|
readonly options: readonly [{
|
|
2493
2521
|
readonly value: "200";
|
|
2494
2522
|
readonly label: "200 lines";
|
|
@@ -2556,6 +2584,29 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
2556
2584
|
}];
|
|
2557
2585
|
};
|
|
2558
2586
|
};
|
|
2587
|
+
readonly "read.truncation": {
|
|
2588
|
+
readonly type: "enum";
|
|
2589
|
+
readonly values: readonly ["head", "last", "both"];
|
|
2590
|
+
readonly default: "last";
|
|
2591
|
+
readonly ui: {
|
|
2592
|
+
readonly tab: "editing";
|
|
2593
|
+
readonly label: "Read Truncation";
|
|
2594
|
+
readonly description: "Configured default direction for routes that support directional truncation; bare local and archive reads use this value (factory default: last), while explicit truncation always wins";
|
|
2595
|
+
readonly options: readonly [{
|
|
2596
|
+
readonly value: "head";
|
|
2597
|
+
readonly label: "Head";
|
|
2598
|
+
readonly description: "Keep the first N lines";
|
|
2599
|
+
}, {
|
|
2600
|
+
readonly value: "last";
|
|
2601
|
+
readonly label: "Last";
|
|
2602
|
+
readonly description: "Keep the last N lines (default)";
|
|
2603
|
+
}, {
|
|
2604
|
+
readonly value: "both";
|
|
2605
|
+
readonly label: "Both";
|
|
2606
|
+
readonly description: "Keep the start and the end, elide the middle";
|
|
2607
|
+
}];
|
|
2608
|
+
};
|
|
2609
|
+
};
|
|
2559
2610
|
readonly "read.summaryMaxBytes": {
|
|
2560
2611
|
readonly type: "number";
|
|
2561
2612
|
readonly default: 20;
|
|
@@ -2962,8 +3013,8 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
2962
3013
|
readonly default: false;
|
|
2963
3014
|
readonly ui: {
|
|
2964
3015
|
readonly tab: "tools";
|
|
2965
|
-
readonly label: "Insane Search Fallback";
|
|
2966
|
-
readonly description: "
|
|
3016
|
+
readonly label: "Insane Search Fallback (Compatibility)";
|
|
3017
|
+
readonly description: "Compatibility-only preference. Remote renderer fallback stays disabled because it cannot preserve validated per-hop network routing.";
|
|
2967
3018
|
};
|
|
2968
3019
|
};
|
|
2969
3020
|
readonly "github.enabled": {
|
|
@@ -3132,6 +3183,45 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
3132
3183
|
readonly description: "How often the resource GC sweeps browser tabs and stale screenshot directories.";
|
|
3133
3184
|
};
|
|
3134
3185
|
};
|
|
3186
|
+
readonly "memoryGuard.enabled": {
|
|
3187
|
+
readonly type: "boolean";
|
|
3188
|
+
readonly default: false;
|
|
3189
|
+
};
|
|
3190
|
+
readonly "memoryGuard.checkIntervalMs": {
|
|
3191
|
+
readonly type: "number";
|
|
3192
|
+
readonly default: 30000;
|
|
3193
|
+
readonly validate: (value: number) => boolean;
|
|
3194
|
+
};
|
|
3195
|
+
readonly "memoryGuard.gcThresholdPercent": {
|
|
3196
|
+
readonly type: "number";
|
|
3197
|
+
readonly default: 70;
|
|
3198
|
+
readonly validate: (value: number) => boolean;
|
|
3199
|
+
};
|
|
3200
|
+
readonly "memoryGuard.restartThresholdPercent": {
|
|
3201
|
+
readonly type: "number";
|
|
3202
|
+
readonly default: 85;
|
|
3203
|
+
readonly validate: (value: number) => boolean;
|
|
3204
|
+
};
|
|
3205
|
+
readonly "memoryGuard.restartThresholdWindowMs": {
|
|
3206
|
+
readonly type: "number";
|
|
3207
|
+
readonly default: 90000;
|
|
3208
|
+
readonly validate: (value: number) => boolean;
|
|
3209
|
+
};
|
|
3210
|
+
readonly "memoryGuard.cooldownMs": {
|
|
3211
|
+
readonly type: "number";
|
|
3212
|
+
readonly default: 600000;
|
|
3213
|
+
readonly validate: (value: number) => boolean;
|
|
3214
|
+
};
|
|
3215
|
+
readonly "memoryGuard.parentReserveMb": {
|
|
3216
|
+
readonly type: "number";
|
|
3217
|
+
readonly default: 1024;
|
|
3218
|
+
readonly validate: (value: number) => boolean;
|
|
3219
|
+
};
|
|
3220
|
+
readonly "memoryGuard.policyLimitMb": {
|
|
3221
|
+
readonly type: "number";
|
|
3222
|
+
readonly default: 0;
|
|
3223
|
+
readonly validate: (value: number) => boolean;
|
|
3224
|
+
};
|
|
3135
3225
|
readonly "computer.enabled": {
|
|
3136
3226
|
readonly type: "boolean";
|
|
3137
3227
|
readonly default: false;
|
|
@@ -3824,20 +3914,20 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
3824
3914
|
};
|
|
3825
3915
|
readonly "providers.image": {
|
|
3826
3916
|
readonly type: "enum";
|
|
3827
|
-
readonly values: readonly ["auto", "openai", "gemini", "openrouter", "antigravity"];
|
|
3917
|
+
readonly values: readonly ["auto", "openai", "gemini", "openrouter", "antigravity", "alibaba", "custom"];
|
|
3828
3918
|
readonly default: "auto";
|
|
3829
3919
|
readonly ui: {
|
|
3830
3920
|
readonly tab: "providers";
|
|
3831
|
-
readonly label: "Image
|
|
3832
|
-
readonly description: "Provider for image generation tool";
|
|
3921
|
+
readonly label: "Image Generation";
|
|
3922
|
+
readonly description: "Provider and model for image generation tool";
|
|
3833
3923
|
readonly options: readonly [{
|
|
3834
3924
|
readonly value: "auto";
|
|
3835
3925
|
readonly label: "Auto";
|
|
3836
|
-
readonly description: "Priority: GPT model image tool > Antigravity > OpenRouter > Gemini";
|
|
3926
|
+
readonly description: "Priority: GPT model image tool > Antigravity > OpenRouter > Gemini > Alibaba";
|
|
3837
3927
|
}, {
|
|
3838
3928
|
readonly value: "openai";
|
|
3839
3929
|
readonly label: "OpenAI";
|
|
3840
|
-
readonly description: "Uses
|
|
3930
|
+
readonly description: "Uses gpt-image-2 via OpenAI Responses/Codex";
|
|
3841
3931
|
}, {
|
|
3842
3932
|
readonly value: "gemini";
|
|
3843
3933
|
readonly label: "Gemini";
|
|
@@ -3850,9 +3940,53 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
3850
3940
|
readonly value: "antigravity";
|
|
3851
3941
|
readonly label: "Antigravity";
|
|
3852
3942
|
readonly description: "Requires login with google-antigravity";
|
|
3943
|
+
}, {
|
|
3944
|
+
readonly value: "alibaba";
|
|
3945
|
+
readonly label: "Alibaba Bailian";
|
|
3946
|
+
readonly description: "Requires ALIBABA_TOKEN_PLAN_API_KEY (wan2.7-image via Token Plan)";
|
|
3947
|
+
}, {
|
|
3948
|
+
readonly value: "custom";
|
|
3949
|
+
readonly label: "Custom";
|
|
3950
|
+
readonly description: "OpenAI-compatible endpoint (set providers.imageCustomUrl)";
|
|
3853
3951
|
}];
|
|
3854
3952
|
};
|
|
3855
3953
|
};
|
|
3954
|
+
readonly "providers.imageModel": {
|
|
3955
|
+
readonly type: "string";
|
|
3956
|
+
readonly default: undefined;
|
|
3957
|
+
readonly ui: {
|
|
3958
|
+
readonly tab: "providers";
|
|
3959
|
+
readonly label: "Image Model";
|
|
3960
|
+
readonly description: "Override the default image generation model for the selected provider";
|
|
3961
|
+
};
|
|
3962
|
+
};
|
|
3963
|
+
readonly "providers.imageCustomUrl": {
|
|
3964
|
+
readonly type: "string";
|
|
3965
|
+
readonly default: undefined;
|
|
3966
|
+
readonly ui: {
|
|
3967
|
+
readonly tab: "providers";
|
|
3968
|
+
readonly label: "Image Custom URL";
|
|
3969
|
+
readonly description: "Base URL for custom OpenAI-compatible image endpoint";
|
|
3970
|
+
};
|
|
3971
|
+
};
|
|
3972
|
+
readonly "providers.imageCustomKey": {
|
|
3973
|
+
readonly type: "string";
|
|
3974
|
+
readonly default: undefined;
|
|
3975
|
+
readonly ui: {
|
|
3976
|
+
readonly tab: "providers";
|
|
3977
|
+
readonly label: "Image Custom API Key";
|
|
3978
|
+
readonly description: "API key for custom OpenAI-compatible image endpoint";
|
|
3979
|
+
};
|
|
3980
|
+
};
|
|
3981
|
+
readonly "providers.imageCustomKeyEnv": {
|
|
3982
|
+
readonly type: "string";
|
|
3983
|
+
readonly default: undefined;
|
|
3984
|
+
readonly ui: {
|
|
3985
|
+
readonly tab: "providers";
|
|
3986
|
+
readonly label: "Image Custom API Key Env";
|
|
3987
|
+
readonly description: "Environment variable name holding the API key for custom image endpoint";
|
|
3988
|
+
};
|
|
3989
|
+
};
|
|
3856
3990
|
readonly "providers.kimiApiFormat": {
|
|
3857
3991
|
readonly type: "enum";
|
|
3858
3992
|
readonly values: readonly ["openai", "anthropic"];
|
|
@@ -4385,6 +4519,7 @@ export interface StatusLineSettings {
|
|
|
4385
4519
|
maxRows: number;
|
|
4386
4520
|
showHookStatus: boolean;
|
|
4387
4521
|
showSkillHud: boolean;
|
|
4522
|
+
showActionHints: boolean;
|
|
4388
4523
|
leftSegments: StatusLineSegmentId[];
|
|
4389
4524
|
rightSegments: StatusLineSegmentId[];
|
|
4390
4525
|
segmentOptions: Record<string, unknown>;
|
|
@@ -4418,6 +4553,16 @@ export interface ShellMinimizerSettings {
|
|
|
4418
4553
|
except: string[];
|
|
4419
4554
|
maxCaptureBytes: number;
|
|
4420
4555
|
}
|
|
4556
|
+
export interface MemoryGuardSettings {
|
|
4557
|
+
enabled: boolean;
|
|
4558
|
+
checkIntervalMs: number;
|
|
4559
|
+
gcThresholdPercent: number;
|
|
4560
|
+
restartThresholdPercent: number;
|
|
4561
|
+
restartThresholdWindowMs: number;
|
|
4562
|
+
cooldownMs: number;
|
|
4563
|
+
parentReserveMb: number;
|
|
4564
|
+
policyLimitMb: number;
|
|
4565
|
+
}
|
|
4421
4566
|
export interface NotificationsSettings {
|
|
4422
4567
|
enabled: boolean;
|
|
4423
4568
|
telegram: {
|
|
@@ -4503,6 +4648,7 @@ export interface GroupTypeMap {
|
|
|
4503
4648
|
statusLine: StatusLineSettings;
|
|
4504
4649
|
thinkingBudgets: ThinkingBudgetsSettings;
|
|
4505
4650
|
stt: SttSettings;
|
|
4651
|
+
memoryGuard: MemoryGuardSettings;
|
|
4506
4652
|
modelRoles: Record<string, ModelSelectorValue>;
|
|
4507
4653
|
modelTags: ModelTagsSettings;
|
|
4508
4654
|
cycleOrder: string[];
|
|
@@ -89,6 +89,9 @@ export declare class Settings implements NotificationSettingsReader {
|
|
|
89
89
|
has(path: SettingPath): boolean;
|
|
90
90
|
/** Diagnostics from schema reconciliation during the most recent load. */
|
|
91
91
|
getSchemaReport(): SettingsSchemaReport;
|
|
92
|
+
onChanged(listener: (path: SettingPath) => void): () => void;
|
|
93
|
+
/** Whether durable settings mutations are permitted for the loaded configuration. */
|
|
94
|
+
canWriteDurableConfig(): boolean;
|
|
92
95
|
/**
|
|
93
96
|
* Set a setting value (sync).
|
|
94
97
|
* Updates global settings and reserves its background persistence slot before
|
|
@@ -41,11 +41,24 @@ export interface ApplyPatchOptions {
|
|
|
41
41
|
fuzzyThreshold?: number;
|
|
42
42
|
allowFuzzy?: boolean;
|
|
43
43
|
fs?: FileSystem;
|
|
44
|
+
/**
|
|
45
|
+
* When false, skip durable cross-process file locks (in-process path mutex
|
|
46
|
+
* still serializes). Defaults to true only for the real `defaultFileSystem`
|
|
47
|
+
* (or when `fs` is omitted). Disk-backed adapters that are not
|
|
48
|
+
* `defaultFileSystem` (notably production `LspFileSystem` via
|
|
49
|
+
* `executePatchSingle`) MUST pass `crossProcessLock: true` explicitly —
|
|
50
|
+
* object identity is not a durable-lock capability probe.
|
|
51
|
+
*/
|
|
52
|
+
crossProcessLock?: boolean;
|
|
44
53
|
}
|
|
45
54
|
/** Default filesystem implementation using Bun APIs */
|
|
46
55
|
export declare const defaultFileSystem: FileSystem;
|
|
47
56
|
/**
|
|
48
57
|
* Apply a patch operation to the filesystem.
|
|
58
|
+
*
|
|
59
|
+
* Concurrent mutations of the same absolute path are serialized (in-process always;
|
|
60
|
+
* cross-process file lock when using the real filesystem) so disjoint concurrent
|
|
61
|
+
* edits cannot silently overwrite each other (#2900).
|
|
49
62
|
*/
|
|
50
63
|
export declare function applyPatch(input: PatchInput, options: ApplyPatchOptions): Promise<ApplyPatchResult>;
|
|
51
64
|
/**
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type FileLockOptions } from "../config/file-lock";
|
|
2
|
+
export type EditPathMutationOptions = {
|
|
3
|
+
/**
|
|
4
|
+
* When true (default), also acquire a durable cross-process file lock.
|
|
5
|
+
* Disable for injectible/in-memory filesystem tests that do not touch disk.
|
|
6
|
+
*/
|
|
7
|
+
crossProcess?: boolean;
|
|
8
|
+
fileLock?: FileLockOptions;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Run `fn` while holding exclusive mutation rights for every absolute path.
|
|
12
|
+
* Paths are locked in lexicographic order to avoid deadlocks on multi-path ops
|
|
13
|
+
* (e.g. rename source + destination).
|
|
14
|
+
*/
|
|
15
|
+
export declare function withEditPathMutation<T>(absolutePaths: readonly string[], fn: () => Promise<T>, options?: EditPathMutationOptions): Promise<T>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface RunnerScriptCache {
|
|
2
|
+
ensureRunnerScript(): Promise<string>;
|
|
3
|
+
cleanup(): Promise<void>;
|
|
4
|
+
}
|
|
5
|
+
export declare function createRunnerScriptCache(tempRoot: string): RunnerScriptCache;
|
|
6
|
+
/** @internal Test-only initializer for isolated artifact assertions. */
|
|
7
|
+
export declare function createRunnerScriptInitializer(tempRoot: string): () => Promise<string>;
|
|
8
|
+
export declare const ensureRunnerScript: () => Promise<string>;
|
|
@@ -7,7 +7,6 @@ export interface PyToolBridgeEntry {
|
|
|
7
7
|
}
|
|
8
8
|
export interface PyToolBridgeInfo {
|
|
9
9
|
url: string;
|
|
10
|
-
token: string;
|
|
11
10
|
}
|
|
12
11
|
/** Starts the bridge server lazily and returns its connection info. */
|
|
13
12
|
export declare function ensurePyToolBridge(): Promise<PyToolBridgeInfo>;
|
|
@@ -15,6 +14,6 @@ export declare function ensurePyToolBridge(): Promise<PyToolBridgeInfo>;
|
|
|
15
14
|
* Register a tool session for the duration of one execution. The returned
|
|
16
15
|
* function MUST be called to remove the entry once execution finishes.
|
|
17
16
|
*/
|
|
18
|
-
export declare function registerPyToolBridge(sessionId: string, entry: PyToolBridgeEntry): () => void;
|
|
17
|
+
export declare function registerPyToolBridge(sessionId: string, capability: string, entry: PyToolBridgeEntry): () => void;
|
|
19
18
|
/** Stop the bridge and clear registrations. Test-only / shutdown helper. */
|
|
20
19
|
export declare function disposePyToolBridge(): Promise<void>;
|
|
@@ -186,6 +186,25 @@ export interface ExtensionTranscriptEntry {
|
|
|
186
186
|
textSummary: string;
|
|
187
187
|
ts: string;
|
|
188
188
|
body?: string;
|
|
189
|
+
/**
|
|
190
|
+
* Durable, image-free message blocks used by rich transcript consumers such
|
|
191
|
+
* as ACP replay. Binary image payloads intentionally remain unavailable.
|
|
192
|
+
*/
|
|
193
|
+
content?: Array<{
|
|
194
|
+
type: "text";
|
|
195
|
+
text: string;
|
|
196
|
+
} | {
|
|
197
|
+
type: "thinking";
|
|
198
|
+
thinking: string;
|
|
199
|
+
} | {
|
|
200
|
+
type: "toolCall";
|
|
201
|
+
id: string;
|
|
202
|
+
name: string;
|
|
203
|
+
arguments: unknown;
|
|
204
|
+
}>;
|
|
205
|
+
toolCallId?: string;
|
|
206
|
+
toolName?: string;
|
|
207
|
+
isError?: boolean;
|
|
189
208
|
}
|
|
190
209
|
export interface ContextUsage {
|
|
191
210
|
/** Context tokens, or null if unknown (e.g. right after compaction, before next LLM response). */
|
|
@@ -255,6 +274,7 @@ export interface ExtensionContext {
|
|
|
255
274
|
model: Model;
|
|
256
275
|
thinkingLevel: ThinkingLevel | undefined;
|
|
257
276
|
} | undefined>;
|
|
277
|
+
setModelProfile?(name: string): Promise<boolean>;
|
|
258
278
|
cycleThinkingLevel(): ThinkingLevel | undefined;
|
|
259
279
|
setQueueMode(kind: "steering" | "follow_up" | "interrupt", mode: unknown): boolean;
|
|
260
280
|
getSkillState(): unknown;
|
|
@@ -271,7 +291,16 @@ export interface ExtensionContext {
|
|
|
271
291
|
} | undefined>;
|
|
272
292
|
getJobs(): unknown;
|
|
273
293
|
/** Typed skill and mode controls exposed to the SDK host. */
|
|
274
|
-
invokeSkill?(name: string, args?: string
|
|
294
|
+
invokeSkill?(name: string, args?: string, options?: {
|
|
295
|
+
onPreflightAccepted?: () => void;
|
|
296
|
+
onPreflightAcceptCommit?: () => void | Promise<void>;
|
|
297
|
+
onSkillPrepared?: (meta: {
|
|
298
|
+
name: string;
|
|
299
|
+
path: string;
|
|
300
|
+
lineCount?: number;
|
|
301
|
+
cleanedArgs?: string;
|
|
302
|
+
}) => void;
|
|
303
|
+
}): Promise<unknown>;
|
|
275
304
|
setPlanMode?(on: boolean): unknown;
|
|
276
305
|
operateGoal?(op: "create" | "get" | "resume" | "pause" | "complete" | "drop", objective?: string): Promise<unknown>;
|
|
277
306
|
/** Typed nonvisual session controls exposed to the SDK host. */
|
|
@@ -740,6 +769,7 @@ export interface ExtensionAPI {
|
|
|
740
769
|
sendUserMessage(content: string | (TextContent | ImageContent)[], options?: {
|
|
741
770
|
deliverAs?: "steer" | "followUp";
|
|
742
771
|
onPreflightAccepted?: () => void;
|
|
772
|
+
onPreflightAcceptCommit?: () => void | Promise<void>;
|
|
743
773
|
}): Promise<void>;
|
|
744
774
|
/** Append a custom entry to the session for state persistence (not sent to LLM). */
|
|
745
775
|
appendEntry<T = unknown>(customType: string, data?: T): void;
|
|
@@ -913,6 +943,7 @@ options?: {
|
|
|
913
943
|
export type SendUserMessageHandler = (content: string | (TextContent | ImageContent)[], options?: {
|
|
914
944
|
deliverAs?: "steer" | "followUp";
|
|
915
945
|
onPreflightAccepted?: () => void;
|
|
946
|
+
onPreflightAcceptCommit?: () => void | Promise<void>;
|
|
916
947
|
}) => void | Promise<void>;
|
|
917
948
|
export type AppendEntryHandler = <T = unknown>(customType: string, data?: T) => void;
|
|
918
949
|
export type GetActiveToolsHandler = () => string[];
|
|
@@ -999,6 +1030,7 @@ export interface ExtensionContextActions {
|
|
|
999
1030
|
model: Model;
|
|
1000
1031
|
thinkingLevel: ThinkingLevel | undefined;
|
|
1001
1032
|
} | undefined>;
|
|
1033
|
+
setModelProfile?: (name: string) => Promise<boolean>;
|
|
1002
1034
|
cycleThinkingLevel?: () => ThinkingLevel | undefined;
|
|
1003
1035
|
setQueueMode?: (kind: "steering" | "follow_up" | "interrupt", mode: unknown) => boolean;
|
|
1004
1036
|
getSkillState?: () => unknown;
|
|
@@ -1016,7 +1048,16 @@ export interface ExtensionContextActions {
|
|
|
1016
1048
|
getJobs?: () => unknown;
|
|
1017
1049
|
setSdkPermissionProvider?: (provider: ((toolCall: ClientBridgePermissionToolCall, options: ClientBridgePermissionOption[], signal?: AbortSignal) => Promise<ClientBridgePermissionOutcome>) | undefined) => void;
|
|
1018
1050
|
sdkControl?: (operation: string, input: Record<string, unknown>) => unknown | Promise<unknown>;
|
|
1019
|
-
invokeSkill?: (name: string, args?: string
|
|
1051
|
+
invokeSkill?: (name: string, args?: string, options?: {
|
|
1052
|
+
onPreflightAccepted?: () => void;
|
|
1053
|
+
onPreflightAcceptCommit?: () => void | Promise<void>;
|
|
1054
|
+
onSkillPrepared?: (meta: {
|
|
1055
|
+
name: string;
|
|
1056
|
+
path: string;
|
|
1057
|
+
lineCount?: number;
|
|
1058
|
+
cleanedArgs?: string;
|
|
1059
|
+
}) => void;
|
|
1060
|
+
}) => Promise<unknown>;
|
|
1020
1061
|
setPlanMode?: (on: boolean) => unknown;
|
|
1021
1062
|
operateGoal?: (op: "create" | "get" | "resume" | "pause" | "complete" | "drop", objective?: string) => Promise<unknown>;
|
|
1022
1063
|
}
|
|
@@ -31,6 +31,8 @@ export interface SessionBeforeSwitchEvent {
|
|
|
31
31
|
/** Session file we're switching to (only for "resume") */
|
|
32
32
|
targetSessionFile?: string;
|
|
33
33
|
}
|
|
34
|
+
/** Origin used when an interactive session selector resumes a session. */
|
|
35
|
+
export declare const INTERACTIVE_SELECTOR_RESUME_ORIGIN = "interactive_selector_resume";
|
|
34
36
|
/** Fired after switching to another session */
|
|
35
37
|
export interface SessionSwitchEvent {
|
|
36
38
|
type: "session_switch";
|
|
@@ -38,6 +40,10 @@ export interface SessionSwitchEvent {
|
|
|
38
40
|
reason: "new" | "resume" | "fork";
|
|
39
41
|
/** Session file we came from */
|
|
40
42
|
previousSessionFile: string | undefined;
|
|
43
|
+
/** Optional provenance for this session transition. */
|
|
44
|
+
transition?: {
|
|
45
|
+
origin: string;
|
|
46
|
+
};
|
|
41
47
|
}
|
|
42
48
|
/** Fired before branching a session (can be cancelled) */
|
|
43
49
|
export interface SessionBeforeBranchEvent {
|
package/dist/types/main.d.ts
CHANGED
|
@@ -85,14 +85,18 @@ interface InteractiveModeFactoryOptions {
|
|
|
85
85
|
}
|
|
86
86
|
type CreateInteractiveMode = (options: InteractiveModeFactoryOptions) => InteractiveMode;
|
|
87
87
|
type ResumePickerTerminalCheck = () => boolean;
|
|
88
|
-
type ListForResumePickerReadOnly = (cwd: string, sessionDir?: string) => Promise<SessionInfo[]>;
|
|
88
|
+
type ListForResumePickerReadOnly = (cwd: string, sessionDir?: string, storage?: undefined) => Promise<SessionInfo[]>;
|
|
89
|
+
type ListManagedForResumePickerReadOnly = (cwd: string, managedAgentDir?: string, storage?: undefined) => Promise<SessionInfo[]>;
|
|
90
|
+
type ResolveManagedAgentDirForScope = (cwd: string) => string;
|
|
89
91
|
type SelectResumeSession = (sessions: SessionInfo[]) => Promise<SessionSelectionResult>;
|
|
90
92
|
type OpenExistingSessionStrict = (identity: ResumeSessionIdentity, destination: SessionDestination, storage?: undefined, migrationPolicy?: SessionDirectoryMigrationPolicy) => Promise<StrictSessionOpenResult>;
|
|
91
93
|
export declare const BARE_RESUME_CONFLICT_ERROR = "--resume without a session cannot be combined with --continue, --fork, or --no-session.";
|
|
92
94
|
export declare const BARE_RESUME_INTERACTIVE_ERROR = "--resume requires an interactive terminal; use --resume <id>.";
|
|
95
|
+
/** Resolves only the managed agent root needed for pre-consent picker inventory. */
|
|
96
|
+
export declare function resolveManagedAgentDirForScope(_cwd: string): string;
|
|
93
97
|
export declare const BARE_RESUME_OPEN_ERROR = "Could not open the selected session. Use --resume <id>.";
|
|
94
98
|
export declare function runInteractiveMode(session: AgentSession, version: string, changelogMarkdown: string | undefined, notifs: (InteractiveModeNotify | null)[], startupUpdate: StartupUpdateOrchestrator, initialMessages: string[], setExtensionUIContext: (uiContext: ExtensionUIContext, hasUI: boolean) => void, lspServers: LspStartupServerInfo[] | undefined, mcpManager: MCPManager | undefined, eventBus?: EventBus, initialMessage?: string, initialImages?: ImageContent[], createInteractiveMode?: CreateInteractiveMode, resumeAction?: "continue-tail" | "open-idle"): Promise<void>;
|
|
95
|
-
declare function getChangelogForDisplay(parsed: Args): Promise<string | undefined>;
|
|
99
|
+
export declare function getChangelogForDisplay(parsed: Args): Promise<string | undefined>;
|
|
96
100
|
export declare function createSessionManager(parsed: Args, cwd: string, activeSettings?: Settings): Promise<SessionManager | undefined>;
|
|
97
101
|
/**
|
|
98
102
|
* Research-mode (RLM) preset hook. Lets `skc rlm` augment the session options
|
|
@@ -125,11 +129,38 @@ export interface RunRootCommandDependencies {
|
|
|
125
129
|
runPrintMode?: RunPrintMode;
|
|
126
130
|
isResumePickerTerminal?: ResumePickerTerminalCheck;
|
|
127
131
|
listForResumePickerReadOnly?: ListForResumePickerReadOnly;
|
|
132
|
+
listManagedForResumePickerReadOnly?: ListManagedForResumePickerReadOnly;
|
|
133
|
+
resolveManagedAgentDirForScope?: ResolveManagedAgentDirForScope;
|
|
128
134
|
selectResumeSession?: SelectResumeSession;
|
|
129
135
|
openExistingSessionStrict?: OpenExistingSessionStrict;
|
|
130
136
|
initializeSettings?: typeof Settings.init;
|
|
131
137
|
loadSettingsForScope?: typeof Settings.loadForScope;
|
|
132
138
|
}
|
|
139
|
+
export interface ModelRoleOverrides {
|
|
140
|
+
smol?: string;
|
|
141
|
+
slow?: string;
|
|
142
|
+
plan?: string;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Resolve the ephemeral `smol`/`slow`/`plan` model-role overrides.
|
|
146
|
+
*
|
|
147
|
+
* Precedence per role is CLI flag > documented `SKC_*_MODEL` > legacy
|
|
148
|
+
* `PI_*_MODEL`, matching the repo-wide SKC-first/PI-fallback convention.
|
|
149
|
+
* Resolution reads the process environment via `$pickenv`, which trims values
|
|
150
|
+
* and treats empty/whitespace as unset; it is deliberately kept separate from
|
|
151
|
+
* credential env resolution (`$credentialEnv`/`$pickCredentialEnv`). The
|
|
152
|
+
* function is pure and stateless, so it reads fresh each call and a later
|
|
153
|
+
* invocation never inherits an earlier one's values.
|
|
154
|
+
*/
|
|
155
|
+
export declare function resolveModelRoleOverrides(parsed: Pick<Args, "smol" | "slow" | "plan">): ModelRoleOverrides;
|
|
156
|
+
/**
|
|
157
|
+
* Apply the `--no-pty` / `--no-title` terminal-control flags to the environment.
|
|
158
|
+
*
|
|
159
|
+
* Sets the canonical `SKC_*` name (so an explicit flag wins over a user-set
|
|
160
|
+
* `SKC_*` value under the SKC-first resolver — CLI authority) and the legacy
|
|
161
|
+
* `PI_*` name for backward compatibility. `--acp` mode implies `--no-title`.
|
|
162
|
+
*/
|
|
163
|
+
export declare function applyTerminalControlFlagsToEnv(parsed: Pick<Args, "noPty" | "noTitle" | "mode">, env?: NodeJS.ProcessEnv): void;
|
|
133
164
|
export declare function runRootCommand(parsed: Args, rawArgs: string[], deps?: RunRootCommandDependencies): Promise<void>;
|
|
134
165
|
export declare function main(args: string[]): Promise<void>;
|
|
135
166
|
export {};
|
|
@@ -25,4 +25,6 @@ export declare function clearMemoryData(agentDir: string, cwd: string): Promise<
|
|
|
25
25
|
* Force-enqueue global consolidation maintenance work.
|
|
26
26
|
*/
|
|
27
27
|
export declare function enqueueMemoryConsolidation(agentDir: string, cwd: string, sourceUpdatedAt?: number): void;
|
|
28
|
+
/** Secret scrubbing applied to every phase-2 consolidation output. Test seam. */
|
|
29
|
+
export declare function redactMemorySecretsForTesting(input: string): string;
|
|
28
30
|
export declare function getMemoryRoot(agentDir: string, cwd: string): string;
|
|
@@ -1,10 +1,15 @@
|
|
|
1
|
-
import { type Agent, type AgentSideConnection, type AuthenticateRequest, type AuthenticateResponse, type ClientCapabilities, type CloseSessionRequest, type CloseSessionResponse, type DeleteSessionRequest, type DeleteSessionResponse, type ForkSessionRequest, type ForkSessionResponse, type InitializeRequest, type InitializeResponse, type ListSessionsRequest, type ListSessionsResponse, type LoadSessionRequest, type LoadSessionResponse, type NewSessionRequest, type NewSessionResponse, type PromptRequest, type PromptResponse, type ResumeSessionRequest, type ResumeSessionResponse, type SetSessionConfigOptionRequest, type SetSessionConfigOptionResponse, type SetSessionModeRequest, type SetSessionModeResponse } from "@agentclientprotocol/sdk";
|
|
1
|
+
import { type Agent, type AgentSideConnection, type AuthenticateRequest, type AuthenticateResponse, type AvailableCommand, type ClientCapabilities, type CloseSessionRequest, type CloseSessionResponse, type DeleteSessionRequest, type DeleteSessionResponse, type ForkSessionRequest, type ForkSessionResponse, type InitializeRequest, type InitializeResponse, type ListSessionsRequest, type ListSessionsResponse, type LoadSessionRequest, type LoadSessionResponse, type NewSessionRequest, type NewSessionResponse, type PromptRequest, type PromptResponse, type ResumeSessionRequest, type ResumeSessionResponse, type SetSessionConfigOptionRequest, type SetSessionConfigOptionResponse, type SetSessionModeRequest, type SetSessionModeResponse } from "@agentclientprotocol/sdk";
|
|
2
2
|
import { type AcpProviderRegistration, AcpSdkAdapter } from "../../sdk/acp";
|
|
3
3
|
import type { AcpStartupOptions } from "./startup-options";
|
|
4
4
|
export declare const ACP_BOOTSTRAP_RACE_GUARD_MS = 50;
|
|
5
5
|
type JsonObject = Record<string, unknown>;
|
|
6
6
|
/** Applies ACP's offset cursor after narrowing the broker listing to the requested cwd. */
|
|
7
|
-
export declare function paginateAcpSessions(listed: unknown[], cwd: string | undefined, offset: number
|
|
7
|
+
export declare function paginateAcpSessions(listed: unknown[], cwd: string | undefined, offset: number, sessionMetadata?: ReadonlyMap<string, {
|
|
8
|
+
title?: string;
|
|
9
|
+
updatedAt?: string;
|
|
10
|
+
}>): ListSessionsResponse;
|
|
11
|
+
/** Build the ACP command palette from the shared builtins and live SDK skill state. */
|
|
12
|
+
export declare function acpAvailableCommandsFromSkills(query: unknown): AvailableCommand[];
|
|
8
13
|
export type TranscriptReplayBlock = {
|
|
9
14
|
type: "text";
|
|
10
15
|
text: string;
|
|
@@ -27,8 +32,8 @@ export interface TranscriptReplayContent {
|
|
|
27
32
|
};
|
|
28
33
|
}
|
|
29
34
|
export declare function transcriptReplayContent(entry: unknown): TranscriptReplayContent;
|
|
30
|
-
/** Maps live canonical SDK config and model
|
|
31
|
-
export declare function acpSessionStateFromConfig(query: unknown,
|
|
35
|
+
/** Maps live canonical SDK config and the selected model catalog into the ACP 1.2.1 session state surface. */
|
|
36
|
+
export declare function acpSessionStateFromConfig(query: unknown, modelCatalogQuery?: unknown, modelPreset?: string): {
|
|
32
37
|
configOptions: ({
|
|
33
38
|
type: "select";
|
|
34
39
|
currentValue: string;
|
|
@@ -54,8 +59,8 @@ export declare function acpSessionStateFromConfig(query: unknown, modelsQuery?:
|
|
|
54
59
|
readonly value: "wait";
|
|
55
60
|
readonly name: "Wait";
|
|
56
61
|
})[];
|
|
62
|
+
name: string;
|
|
57
63
|
id: "model";
|
|
58
|
-
name: "Model";
|
|
59
64
|
} | {
|
|
60
65
|
type: "select";
|
|
61
66
|
currentValue: string;
|
|
@@ -81,8 +86,8 @@ export declare function acpSessionStateFromConfig(query: unknown, modelsQuery?:
|
|
|
81
86
|
readonly value: "wait";
|
|
82
87
|
readonly name: "Wait";
|
|
83
88
|
})[];
|
|
89
|
+
name: string;
|
|
84
90
|
id: "thinking";
|
|
85
|
-
name: "Thinking";
|
|
86
91
|
} | {
|
|
87
92
|
type: "select";
|
|
88
93
|
currentValue: string;
|
|
@@ -108,8 +113,8 @@ export declare function acpSessionStateFromConfig(query: unknown, modelsQuery?:
|
|
|
108
113
|
readonly value: "wait";
|
|
109
114
|
readonly name: "Wait";
|
|
110
115
|
})[];
|
|
116
|
+
name: string;
|
|
111
117
|
id: "steeringMode";
|
|
112
|
-
name: "Steering queue";
|
|
113
118
|
} | {
|
|
114
119
|
type: "select";
|
|
115
120
|
currentValue: string;
|
|
@@ -135,8 +140,8 @@ export declare function acpSessionStateFromConfig(query: unknown, modelsQuery?:
|
|
|
135
140
|
readonly value: "wait";
|
|
136
141
|
readonly name: "Wait";
|
|
137
142
|
})[];
|
|
143
|
+
name: string;
|
|
138
144
|
id: "followUpMode";
|
|
139
|
-
name: "Follow-up queue";
|
|
140
145
|
} | {
|
|
141
146
|
type: "select";
|
|
142
147
|
currentValue: string;
|
|
@@ -162,8 +167,8 @@ export declare function acpSessionStateFromConfig(query: unknown, modelsQuery?:
|
|
|
162
167
|
readonly value: "wait";
|
|
163
168
|
readonly name: "Wait";
|
|
164
169
|
})[];
|
|
170
|
+
name: string;
|
|
165
171
|
id: "interruptMode";
|
|
166
|
-
name: "Interrupt mode";
|
|
167
172
|
} | {
|
|
168
173
|
id: string;
|
|
169
174
|
name: string;
|
|
@@ -190,6 +195,14 @@ export declare function acpPromptPayload(blocks: PromptRequest["prompt"]): {
|
|
|
190
195
|
mimeType: string;
|
|
191
196
|
}>;
|
|
192
197
|
};
|
|
198
|
+
/**
|
|
199
|
+
* `AcpSdkAdapterError.code` is an internal string, but the SDK only derives a
|
|
200
|
+
* JSON-RPC code from a `RequestError`. Everything else collapses to an opaque
|
|
201
|
+
* `-32603 Internal error`, which hides the reason and defeats client-side
|
|
202
|
+
* recovery (an ACP client cannot see that it must authenticate). Map the codes
|
|
203
|
+
* that have a defined ACP/JSON-RPC counterpart onto a real `RequestError`.
|
|
204
|
+
*/
|
|
205
|
+
export declare function acpRequestFailure(error: unknown): unknown;
|
|
193
206
|
/** Registers a permission provider only when the ACP client requires prompts. */
|
|
194
207
|
export declare function acpProviderRegistrations(capabilities: ClientCapabilities | undefined, env?: NodeJS.ProcessEnv): AcpProviderRegistration[];
|
|
195
208
|
/** Maps ACP permission handling to the session's canonical SDK policy. */
|
|
@@ -10,11 +10,13 @@ export declare class AssistantMessageComponent extends Container {
|
|
|
10
10
|
#private;
|
|
11
11
|
private hideThinkingBlock;
|
|
12
12
|
private readonly onImageUpdate?;
|
|
13
|
-
|
|
13
|
+
private readonly onVisibleMutation?;
|
|
14
|
+
constructor(message?: AssistantMessage, hideThinkingBlock?: boolean, onImageUpdate?: (() => void) | undefined, viewportAnchorId?: string, onVisibleMutation?: (() => void) | undefined);
|
|
14
15
|
invalidate(): void;
|
|
15
16
|
setHideThinkingBlock(hide: boolean): void;
|
|
16
17
|
setToolResultImages(toolCallId: string, images: ImageContent[]): void;
|
|
17
18
|
setUsageInfo(usage: Usage): void;
|
|
18
19
|
updateContent(message: AssistantMessage, options?: AssistantMessageUpdateOptions): void;
|
|
20
|
+
dispose(): void;
|
|
19
21
|
}
|
|
20
22
|
export {};
|