@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
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type RalplanIndexRow } from "./ledger-event-renderer";
|
|
1
2
|
/**
|
|
2
3
|
* Native implementation of `skc ralplan`.
|
|
3
4
|
*
|
|
@@ -12,7 +13,7 @@
|
|
|
12
13
|
*
|
|
13
14
|
* 2. **Artifact write**: `skc ralplan --write --stage <type> --stage_n <N>
|
|
14
15
|
* (--artifact <path-or-string> | --artifact-env SKC_RALPLAN_ARTIFACT)
|
|
15
|
-
* [--run-id <id>] [--session-id <id>] [--json]` persists Planner / Architect
|
|
16
|
+
* [--run-id <id>] [--session-id <id>] [--lane-verdict <token>] [--json]` persists Planner / Architect
|
|
16
17
|
* / Critic / revision / post-interview / ADR / final markdown under `.skc/plans/ralplan/<run-id>/`, maintains
|
|
17
18
|
* an `index.jsonl` audit log, copies `final` stages to `pending-approval.md`, and advances
|
|
18
19
|
* the HUD chip to reflect the latest persisted stage.
|
|
@@ -22,5 +23,115 @@ export interface RalplanCommandResult {
|
|
|
22
23
|
stdout?: string;
|
|
23
24
|
stderr?: string;
|
|
24
25
|
}
|
|
26
|
+
/** Default consensus iterations (planner + revision openers) per run. Matches SKILL.md re-review cap. */
|
|
27
|
+
export declare const RALPLAN_DEFAULT_MAX_ITERATIONS = 5;
|
|
28
|
+
/** Inclusive upper bound for `skc.ralplan.maxIterations` settings overrides. */
|
|
29
|
+
export declare const RALPLAN_MAX_ITERATIONS_LIMIT = 20;
|
|
30
|
+
/** Operator-visible stuck signal for headless/CI orchestration (#3165). */
|
|
31
|
+
export declare const PLANNING_STUCK_MARKER = "PLANNING-STUCK";
|
|
32
|
+
/** Default architect/critic review passes per consensus iteration. */
|
|
33
|
+
export declare const RALPLAN_DEFAULT_MAX_REVIEW_PASSES_PER_LANE = 1;
|
|
34
|
+
/** Inclusive upper bound for `skc.ralplan.maxReviewPassesPerLane` settings overrides. */
|
|
35
|
+
export declare const RALPLAN_MAX_REVIEW_PASSES_PER_LANE_LIMIT = 10;
|
|
36
|
+
export type RalplanIterationCapDecision = {
|
|
37
|
+
allowed: true;
|
|
38
|
+
currentIterations: number;
|
|
39
|
+
projectedIterations: number;
|
|
40
|
+
maxIterations: number;
|
|
41
|
+
} | {
|
|
42
|
+
allowed: false;
|
|
43
|
+
currentIterations: number;
|
|
44
|
+
projectedIterations: number;
|
|
45
|
+
maxIterations: number;
|
|
46
|
+
reason: string;
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Pure consensus-iteration budget gate (#3165).
|
|
50
|
+
*
|
|
51
|
+
* A `planner` or `revision` write opens a new iteration (same definition as
|
|
52
|
+
* `summarizeRalplanIndex`). Other stages never open iterations and are always
|
|
53
|
+
* allowed by this gate — including `final` after the cap is already reached.
|
|
54
|
+
*
|
|
55
|
+
* `iterationFloor` raises the observed opener count when on-disk evidence or a
|
|
56
|
+
* recovered ledger is higher than the parsed index (fail-closed vs wipe/truncate).
|
|
57
|
+
*/
|
|
58
|
+
export declare function evaluateRalplanIterationCap(input: {
|
|
59
|
+
rows: readonly RalplanIndexRow[];
|
|
60
|
+
stage: string;
|
|
61
|
+
maxIterations?: number;
|
|
62
|
+
/** Minimum opener count (e.g. on-disk stage-*-{planner,revision}.md). */
|
|
63
|
+
iterationFloor?: number;
|
|
64
|
+
}): RalplanIterationCapDecision;
|
|
65
|
+
export type RalplanReviewLane = "architect" | "critic";
|
|
66
|
+
export type RalplanReviewLaneBudgetDecision = {
|
|
67
|
+
allowed: true;
|
|
68
|
+
lane?: RalplanReviewLane;
|
|
69
|
+
currentPasses: number;
|
|
70
|
+
projectedPasses: number;
|
|
71
|
+
maxReviewPassesPerLane: number;
|
|
72
|
+
finalSlot: boolean;
|
|
73
|
+
ledgerNote?: string;
|
|
74
|
+
} | {
|
|
75
|
+
allowed: false;
|
|
76
|
+
lane: RalplanReviewLane;
|
|
77
|
+
currentPasses: number;
|
|
78
|
+
projectedPasses: number;
|
|
79
|
+
maxReviewPassesPerLane: number;
|
|
80
|
+
finalSlot: false;
|
|
81
|
+
ledgerNote?: string;
|
|
82
|
+
reason: string;
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* Pure per-lane review-pass budget gate. Architect and critic passes are limited
|
|
86
|
+
* within the current consensus iteration; all other stages remain unconditionally
|
|
87
|
+
* available as escalation paths.
|
|
88
|
+
*/
|
|
89
|
+
export declare function evaluateRalplanReviewLaneBudget(input: {
|
|
90
|
+
rows: readonly RalplanIndexRow[];
|
|
91
|
+
stage: string;
|
|
92
|
+
maxReviewPassesPerLane?: unknown;
|
|
93
|
+
onDiskLaneCounts?: {
|
|
94
|
+
architect: number;
|
|
95
|
+
critic: number;
|
|
96
|
+
};
|
|
97
|
+
}): RalplanReviewLaneBudgetDecision;
|
|
98
|
+
/**
|
|
99
|
+
* Count on-disk planner/revision stage artifacts for a run. Used as a floor when
|
|
100
|
+
* `index.jsonl` is missing, empty, truncated, or otherwise under-counts openers.
|
|
101
|
+
*/
|
|
102
|
+
export declare function countRalplanOnDiskOpeners(cwd: string, sessionId: string, runId: string): Promise<number>;
|
|
103
|
+
/**
|
|
104
|
+
* Count on-disk Architect/Critic stage artifacts for a run. This is the
|
|
105
|
+
* fail-closed floor for a missing, truncated, or malformed `index.jsonl`.
|
|
106
|
+
*/
|
|
107
|
+
export declare function countRalplanOnDiskLaneArtifacts(cwd: string, sessionId: string, runId: string): Promise<{
|
|
108
|
+
architect: number;
|
|
109
|
+
critic: number;
|
|
110
|
+
}>;
|
|
111
|
+
/**
|
|
112
|
+
* Load index rows for cap enforcement. Unlike HUD reads, returns structural
|
|
113
|
+
* signals so callers can fail closed when the ledger is empty/malformed while
|
|
114
|
+
* opener artifacts already exist on disk.
|
|
115
|
+
*/
|
|
116
|
+
export declare function loadRalplanIndexForCap(cwd: string, sessionId: string, runId: string): Promise<{
|
|
117
|
+
rows: RalplanIndexRow[];
|
|
118
|
+
indexPresent: boolean;
|
|
119
|
+
parseableLines: number;
|
|
120
|
+
rawLineCount: number;
|
|
121
|
+
rawText?: string;
|
|
122
|
+
}>;
|
|
123
|
+
/**
|
|
124
|
+
* Resolve ralplan consensus iteration cap. Project `./.skc/settings.json` overrides
|
|
125
|
+
* user settings, else default 5.
|
|
126
|
+
*/
|
|
127
|
+
export declare function resolveRalplanMaxIterations(cwd: string): Promise<{
|
|
128
|
+
maxIterations: number;
|
|
129
|
+
source: string;
|
|
130
|
+
}>;
|
|
131
|
+
/** Resolve the per-lane review-pass budget with project-over-user precedence. */
|
|
132
|
+
export declare function resolveRalplanMaxReviewPassesPerLane(cwd: string): Promise<{
|
|
133
|
+
maxReviewPassesPerLane: number;
|
|
134
|
+
source: string;
|
|
135
|
+
}>;
|
|
25
136
|
export declare function isRalplanArtifactWriteInvocation(args: readonly string[]): boolean;
|
|
26
137
|
export declare function runNativeRalplanCommand(args: string[], cwd?: string): Promise<RalplanCommandResult>;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { type GitRepository } from "../utils/git";
|
|
2
|
+
export declare const REPOSITORY_BINDING_SCHEMA: "skc.repository_binding.v1";
|
|
3
|
+
export interface RepositoryBinding {
|
|
4
|
+
schema: typeof REPOSITORY_BINDING_SCHEMA;
|
|
5
|
+
/** Canonical realpath of the git worktree root (or resolved cwd root). */
|
|
6
|
+
worktreeRoot: string;
|
|
7
|
+
/** Git common dir realpath when available; null outside a git checkout. */
|
|
8
|
+
commonDir: string | null;
|
|
9
|
+
/** Optional repo-relative subdirectory the lane should operate under. */
|
|
10
|
+
relativeSubdir?: string;
|
|
11
|
+
/** Optional display path (may be non-canonical); never used for authority. */
|
|
12
|
+
displayPath?: string;
|
|
13
|
+
/** Optional baseline HEAD at capture time. */
|
|
14
|
+
head?: string;
|
|
15
|
+
/** Optional branch name at capture time (when not detached). */
|
|
16
|
+
branch?: string;
|
|
17
|
+
}
|
|
18
|
+
export type RepositoryBindingErrorCode = "not_a_repository" | "identity_mismatch" | "path_outside_root" | "invalid_binding";
|
|
19
|
+
export declare class RepositoryBindingError extends Error {
|
|
20
|
+
readonly code: RepositoryBindingErrorCode;
|
|
21
|
+
constructor(code: RepositoryBindingErrorCode, message: string);
|
|
22
|
+
}
|
|
23
|
+
/** Capture a durable binding from the active cwd/worktree. */
|
|
24
|
+
export declare function captureRepositoryBinding(cwd: string, options?: {
|
|
25
|
+
relativeSubdir?: string;
|
|
26
|
+
displayPath?: string;
|
|
27
|
+
}): Promise<RepositoryBinding>;
|
|
28
|
+
/** Parse a binding from JSON/plan payload; fail closed on malformed shapes. */
|
|
29
|
+
export declare function parseRepositoryBinding(value: unknown): RepositoryBinding;
|
|
30
|
+
/** True when two bindings refer to the same repository identity (linked worktrees ok). */
|
|
31
|
+
export declare function repositoryBindingsMatch(left: RepositoryBinding, right: RepositoryBinding): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Ensure `cwd` is inside the bound repository (or the same linked worktree family).
|
|
34
|
+
* Fails closed on sibling-repo drift.
|
|
35
|
+
*/
|
|
36
|
+
export declare function assertCwdMatchesRepositoryBinding(cwd: string, binding: RepositoryBinding): Promise<RepositoryBinding>;
|
|
37
|
+
/** Ensure a declared target path resolves under the bound worktree root. */
|
|
38
|
+
export declare function assertPathUnderRepositoryBinding(binding: RepositoryBinding, targetPath: string): string;
|
|
39
|
+
/**
|
|
40
|
+
* Public identity snapshot for receipts/handoffs (no display-only fields required).
|
|
41
|
+
* Always includes the schema + durable roots so downstream lanes can re-verify.
|
|
42
|
+
*/
|
|
43
|
+
export declare function publicRepositoryBinding(binding: RepositoryBinding): RepositoryBinding;
|
|
44
|
+
/**
|
|
45
|
+
* Resolve the authoritative binding for a delegated task before discovery/spawn.
|
|
46
|
+
*
|
|
47
|
+
* - Missing declaration → stamp from session cwd (never leave authority implicit).
|
|
48
|
+
* - Declared binding → parse + fail closed unless it matches the active session worktree.
|
|
49
|
+
* - relativeSubdir (when present) must resolve under the bound root.
|
|
50
|
+
*/
|
|
51
|
+
export declare function resolveTaskRepositoryBinding(sessionCwd: string, declared: unknown | undefined): Promise<RepositoryBinding>;
|
|
52
|
+
/**
|
|
53
|
+
* Ensure an execution/isolation root (cwd or worktree) still matches the bound identity.
|
|
54
|
+
* Used after isolation workspace creation so linked worktrees keep the source repository.
|
|
55
|
+
*/
|
|
56
|
+
export declare function assertExecutionRootMatchesRepositoryBinding(executionRoot: string, binding: RepositoryBinding): Promise<RepositoryBinding>;
|
|
57
|
+
/** Optional helper for tests and diagnostics. */
|
|
58
|
+
export declare function bindingFromGitRepository(repository: GitRepository, options?: {
|
|
59
|
+
relativeSubdir?: string;
|
|
60
|
+
displayPath?: string;
|
|
61
|
+
head?: string;
|
|
62
|
+
branch?: string;
|
|
63
|
+
}): RepositoryBinding;
|
|
@@ -11,6 +11,7 @@ export interface StateCommandResult {
|
|
|
11
11
|
stdout?: string;
|
|
12
12
|
stderr?: string;
|
|
13
13
|
}
|
|
14
|
+
type StateWarningSink = (warning: string) => void;
|
|
14
15
|
/**
|
|
15
16
|
* Reconcile a workflow skill's mode-state + active-state/HUD from a caller-derived
|
|
16
17
|
* payload. Unlike `skc state write`, this is a derived repair: callers reconcile from
|
|
@@ -34,5 +35,6 @@ export declare function reconcileWorkflowSkillState(options: {
|
|
|
34
35
|
}): Promise<{
|
|
35
36
|
stateFile: string;
|
|
36
37
|
}>;
|
|
37
|
-
export declare function readWorkflowStateJson(cwd: string, skill: CanonicalSkcWorkflowSkill, sessionId?: string): Promise<Record<string, unknown>>;
|
|
38
|
+
export declare function readWorkflowStateJson(cwd: string, skill: CanonicalSkcWorkflowSkill, sessionId?: string, onWarning?: StateWarningSink): Promise<Record<string, unknown>>;
|
|
38
39
|
export declare function runNativeStateCommand(args: string[], cwd?: string): Promise<StateCommandResult>;
|
|
40
|
+
export {};
|
|
@@ -62,7 +62,6 @@ export interface GuardedStateWriterOptions extends StateWriterOptions {
|
|
|
62
62
|
policy: StateWritePolicy;
|
|
63
63
|
expectedRevision?: number;
|
|
64
64
|
sourceRevision?: number;
|
|
65
|
-
lockHeld?: boolean;
|
|
66
65
|
}
|
|
67
66
|
export type GuardedWriteResult = {
|
|
68
67
|
path: string;
|
|
@@ -86,6 +85,11 @@ export interface StateWriterOptions {
|
|
|
86
85
|
* `withFileLock` defaults.
|
|
87
86
|
*/
|
|
88
87
|
lock?: FileLockOptions;
|
|
88
|
+
/**
|
|
89
|
+
* Caller already holds the workflow state lock for this target path (via
|
|
90
|
+
* `withWorkflowStateLock`). Skip re-acquisition to avoid self-deadlock.
|
|
91
|
+
*/
|
|
92
|
+
lockHeld?: boolean;
|
|
89
93
|
}
|
|
90
94
|
export declare class StateWriteConflictError extends Error {
|
|
91
95
|
readonly path: string;
|
|
@@ -2,7 +2,7 @@ import type { SkcTeamConfig, SkcTeamSnapshot, SkcTeamStartOptions, SkcTeamTask,
|
|
|
2
2
|
/** Launch-specific option wiring kept separate from runtime dispatch. */
|
|
3
3
|
export declare function withTeamLaunchTransport(options: SkcTeamStartOptions, mailboxDeliveryTransport: SkcTeamStartOptions["mailboxDeliveryTransport"]): SkcTeamStartOptions;
|
|
4
4
|
/** @internal Exported for unit tests. */
|
|
5
|
-
export declare function buildWorkerCommand(config: SkcTeamConfig, worker: SkcTeamWorker, platform?: NodeJS.Platform): string;
|
|
5
|
+
export declare function buildWorkerCommand(config: SkcTeamConfig, worker: SkcTeamWorker, platform?: NodeJS.Platform, promptOverride?: string): string;
|
|
6
6
|
interface SkcTmuxBinary {
|
|
7
7
|
command: string;
|
|
8
8
|
isPsmux: boolean;
|
|
@@ -267,16 +267,23 @@ export interface WorkerHeartbeatFile {
|
|
|
267
267
|
last_turn_at: string;
|
|
268
268
|
turn_count: number;
|
|
269
269
|
alive: boolean;
|
|
270
|
+
/** Linux process start time, so a recycled PID cannot impersonate this worker. */
|
|
271
|
+
process_start_time?: string;
|
|
270
272
|
}
|
|
271
273
|
export interface SkcWorkerIntegrationAttemptRequestResult {
|
|
272
274
|
requested: boolean;
|
|
273
|
-
reason: "requested" | "not_worker" | "missing_worktree" | "no_changes" | "deduped" | "git_error";
|
|
275
|
+
reason: "requested" | "not_worker" | "missing_worktree" | "no_changes" | "deduped" | "git_error" | "cancelled";
|
|
274
276
|
worker?: string;
|
|
275
277
|
team_name?: string;
|
|
276
278
|
fingerprint?: string;
|
|
277
279
|
head?: string | null;
|
|
278
280
|
status?: SkcWorkerCheckpointClassification["kind"];
|
|
279
281
|
}
|
|
282
|
+
/** Caller-supplied controls for a worker integration attempt. */
|
|
283
|
+
export interface SkcWorkerIntegrationAttemptOptions {
|
|
284
|
+
/** Abort the attempt between its blocking git probes. */
|
|
285
|
+
signal?: AbortSignal;
|
|
286
|
+
}
|
|
280
287
|
export declare const SKC_TEAM_API_OPERATIONS: readonly ["send-message", "broadcast", "mailbox-list", "mailbox-mark-delivered", "mailbox-mark-notified", "notification-list", "notification-read", "notification-replay", "notification-mark-pane-attempt", "worker-startup-ack", "create-task", "read-task", "list-tasks", "update-task", "claim-task", "transition-task-status", "transition-task", "release-task-claim", "read-config", "read-manifest", "read-worker-status", "update-worker-status", "read-worker-heartbeat", "recover-stale-claims", "update-worker-heartbeat", "write-worker-inbox", "write-worker-identity", "append-event", "read-events", "read-traces", "await-event", "write-shutdown-request", "read-shutdown-ack", "read-monitor-snapshot", "write-monitor-snapshot", "read-task-approval", "write-task-approval"];
|
|
281
288
|
export declare function resolveSkcTeamStateRoot(cwd?: string, env?: NodeJS.ProcessEnv): string;
|
|
282
289
|
/** @internal */
|
|
@@ -314,7 +321,7 @@ export declare function classifyWorkerCheckpointStatus(cwd: string): SkcWorkerCh
|
|
|
314
321
|
export declare function startSkcTeam(options: SkcTeamStartOptions): Promise<SkcTeamSnapshot>;
|
|
315
322
|
export declare function readSkcTeamSnapshot(teamName: string, cwd?: string, env?: NodeJS.ProcessEnv, options?: SkcTeamSnapshotOptions): Promise<SkcTeamSnapshot>;
|
|
316
323
|
export declare function monitorSkcTeamSnapshot(teamName: string, cwd?: string, env?: NodeJS.ProcessEnv): Promise<SkcTeamSnapshot>;
|
|
317
|
-
export declare function requestSkcWorkerIntegrationAttempt(cwd?: string, env?: NodeJS.ProcessEnv): Promise<SkcWorkerIntegrationAttemptRequestResult>;
|
|
324
|
+
export declare function requestSkcWorkerIntegrationAttempt(cwd?: string, env?: NodeJS.ProcessEnv, options?: SkcWorkerIntegrationAttemptOptions): Promise<SkcWorkerIntegrationAttemptRequestResult>;
|
|
318
325
|
export declare function buildTeamHudSummary(snapshot: SkcTeamSnapshot, latestEvent?: SkcTeamEvent, latestMessage?: SkcTeamMailboxMessage): Promise<WorkflowHudSummary>;
|
|
319
326
|
export declare function monitorSkcTeam(teamName: string, cwd?: string, env?: NodeJS.ProcessEnv): Promise<SkcTeamSnapshot>;
|
|
320
327
|
export declare function listSkcTeams(cwd?: string, env?: NodeJS.ProcessEnv): Promise<SkcTeamSnapshot[]>;
|
|
@@ -107,6 +107,18 @@ export interface SkcTeamApiClaimResult {
|
|
|
107
107
|
claim_token?: string;
|
|
108
108
|
reason?: string;
|
|
109
109
|
}
|
|
110
|
+
export type SkcTeamWorkerClaimSelection = {
|
|
111
|
+
kind: "none";
|
|
112
|
+
} | {
|
|
113
|
+
kind: "exact";
|
|
114
|
+
task: SkcTeamTask;
|
|
115
|
+
claim: SkcTeamTaskClaim;
|
|
116
|
+
} | {
|
|
117
|
+
kind: "ambiguous";
|
|
118
|
+
tasks: SkcTeamTask[];
|
|
119
|
+
};
|
|
120
|
+
export declare function selectCurrentClaimedTaskForWorker(tasks: readonly SkcTeamTask[], workerId: string): SkcTeamWorkerClaimSelection;
|
|
121
|
+
export declare function findSkcTeamClaimedTaskForWorker(tasks: readonly SkcTeamTask[], workerId: string): SkcTeamTask | undefined;
|
|
110
122
|
type EventAppender = (event: {
|
|
111
123
|
type: string;
|
|
112
124
|
task_id?: string;
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { type StateWriterOptions } from "./state-writer";
|
|
2
|
+
export type SkcTeamWorkerMemoryGuardState = "idle" | "advisory" | "retrying" | "checkpointed" | "replaced" | "blocked";
|
|
3
|
+
export type SkcTeamWorkerMemoryGuardCheckpointKind = "clean" | "eligible" | "protected_only" | "conflicted" | "git_error";
|
|
4
|
+
export type SkcTeamWorkerMemoryGuardPidProbe = {
|
|
5
|
+
kind: "live";
|
|
6
|
+
start_time: string;
|
|
7
|
+
} | {
|
|
8
|
+
kind: "absent";
|
|
9
|
+
} | {
|
|
10
|
+
kind: "unverifiable";
|
|
11
|
+
reason: string;
|
|
12
|
+
};
|
|
13
|
+
export interface SkcTeamWorkerMemoryGuardCheckpoint {
|
|
14
|
+
kind: SkcTeamWorkerMemoryGuardCheckpointKind;
|
|
15
|
+
files: string[];
|
|
16
|
+
head?: string | null;
|
|
17
|
+
commit?: string | null;
|
|
18
|
+
recorded_at: string;
|
|
19
|
+
}
|
|
20
|
+
export interface SkcTeamWorkerMemoryGuardReplacement {
|
|
21
|
+
old_pane_id?: string;
|
|
22
|
+
new_pane_id?: string;
|
|
23
|
+
recorded_at: string;
|
|
24
|
+
}
|
|
25
|
+
export interface SkcTeamWorkerMemoryGuardLedger {
|
|
26
|
+
schema_version: 1;
|
|
27
|
+
worker_id: string;
|
|
28
|
+
platform: string;
|
|
29
|
+
state: SkcTeamWorkerMemoryGuardState;
|
|
30
|
+
automatic_action_allowed: boolean;
|
|
31
|
+
retry_count: number;
|
|
32
|
+
retry_limit: number;
|
|
33
|
+
current_task_id?: string;
|
|
34
|
+
last_incident_id?: string;
|
|
35
|
+
last_reason?: string;
|
|
36
|
+
last_pid_probe?: SkcTeamWorkerMemoryGuardPidProbe;
|
|
37
|
+
last_checkpoint?: SkcTeamWorkerMemoryGuardCheckpoint;
|
|
38
|
+
last_replacement?: SkcTeamWorkerMemoryGuardReplacement;
|
|
39
|
+
updated_at: string;
|
|
40
|
+
}
|
|
41
|
+
export interface SkcTeamWorkerMemoryGuardSelectionCandidate {
|
|
42
|
+
worker_id: string;
|
|
43
|
+
platform: string;
|
|
44
|
+
excess_bytes: number;
|
|
45
|
+
retry_count: number;
|
|
46
|
+
retry_limit: number;
|
|
47
|
+
blocked?: boolean;
|
|
48
|
+
current_task_id?: string;
|
|
49
|
+
}
|
|
50
|
+
export interface SkcTeamWorkerMemoryGuardSelection {
|
|
51
|
+
worker_id: string;
|
|
52
|
+
excess_bytes: number;
|
|
53
|
+
retry_count: number;
|
|
54
|
+
current_task_id?: string;
|
|
55
|
+
}
|
|
56
|
+
export declare function workerMemoryGuardLedgerPath(dir: string, workerId: string): string;
|
|
57
|
+
export declare function normalizeSkcTeamWorkerMemoryGuardPidProbe(value: unknown): SkcTeamWorkerMemoryGuardPidProbe | undefined;
|
|
58
|
+
export declare function isCanonicalSkcTeamWorkerMemoryGuardCheckpoint(value: unknown): value is SkcTeamWorkerMemoryGuardCheckpoint;
|
|
59
|
+
export declare function isCanonicalSkcTeamWorkerMemoryGuardReplacement(value: unknown): value is SkcTeamWorkerMemoryGuardReplacement;
|
|
60
|
+
export declare function isCanonicalSkcTeamWorkerMemoryGuardPidProbe(value: unknown): value is SkcTeamWorkerMemoryGuardPidProbe;
|
|
61
|
+
export declare function isCanonicalSkcTeamWorkerMemoryGuardLedger(value: unknown): value is SkcTeamWorkerMemoryGuardLedger;
|
|
62
|
+
export declare function createInitialSkcTeamWorkerMemoryGuardLedger(input: {
|
|
63
|
+
workerId: string;
|
|
64
|
+
platform: string;
|
|
65
|
+
now: string;
|
|
66
|
+
retryLimit?: number;
|
|
67
|
+
}): SkcTeamWorkerMemoryGuardLedger;
|
|
68
|
+
export declare function selectSkcTeamWorkerMemoryGuardCandidate(candidates: readonly SkcTeamWorkerMemoryGuardSelectionCandidate[]): SkcTeamWorkerMemoryGuardSelection | undefined;
|
|
69
|
+
export type TeamWorkerMemoryGuardAction = "advisory" | "replace" | "blocked";
|
|
70
|
+
export type TeamWorkerMemoryGuardResult = "noop" | "scheduled" | "succeeded" | "failed" | "blocked";
|
|
71
|
+
export interface TeamWorkerMemoryGuardLedgerEntry {
|
|
72
|
+
schema_version: 1;
|
|
73
|
+
recorded_at: string;
|
|
74
|
+
incident_id: string;
|
|
75
|
+
team_name: string;
|
|
76
|
+
worker_id: string;
|
|
77
|
+
task_id: string;
|
|
78
|
+
claim_token: string;
|
|
79
|
+
attempt: number;
|
|
80
|
+
platform: NodeJS.Platform;
|
|
81
|
+
action: TeamWorkerMemoryGuardAction;
|
|
82
|
+
result: TeamWorkerMemoryGuardResult;
|
|
83
|
+
reason: string;
|
|
84
|
+
}
|
|
85
|
+
export declare function isCanonicalTeamWorkerMemoryGuardLedgerEntry(value: unknown): value is TeamWorkerMemoryGuardLedgerEntry;
|
|
86
|
+
export declare function teamWorkerMemoryGuardDir(workerDirPath: string): string;
|
|
87
|
+
export declare function teamWorkerMemoryGuardLedgerPath(workerDirPath: string): string;
|
|
88
|
+
export declare function canMutateTeamWorkerMemoryGuard(platform: NodeJS.Platform): boolean;
|
|
89
|
+
export declare function advisoryReasonForTeamWorkerMemoryGuard(platform: NodeJS.Platform): string | undefined;
|
|
90
|
+
export declare function appendTeamWorkerMemoryGuardLedgerEntry(workerDirPath: string, entry: TeamWorkerMemoryGuardLedgerEntry, options?: StateWriterOptions): Promise<string>;
|
|
91
|
+
export declare function readTeamWorkerMemoryGuardLedger(workerDirPath: string): Promise<TeamWorkerMemoryGuardLedgerEntry[]>;
|
|
92
|
+
export declare function nextTeamWorkerMemoryGuardAttempt(entries: readonly TeamWorkerMemoryGuardLedgerEntry[], incidentId: string): number;
|
|
@@ -267,6 +267,13 @@ export interface LifecyclePaths {
|
|
|
267
267
|
journalFile: string;
|
|
268
268
|
}
|
|
269
269
|
export declare function lifecyclePaths(stateDir: string, sessionId: string, generation: string): LifecyclePaths;
|
|
270
|
+
export interface MemoryGuardClaimPaths {
|
|
271
|
+
root: string;
|
|
272
|
+
databaseFile: string;
|
|
273
|
+
walFile: string;
|
|
274
|
+
shmFile: string;
|
|
275
|
+
}
|
|
276
|
+
export declare function memoryGuardClaimPaths(stateDir: string, sessionId: string): MemoryGuardClaimPaths;
|
|
270
277
|
export declare function replaceOwnerGeneration(stateDir: string, sessionId: string, generation?: string, expectedBaseline?: OwnerGenerationBaseline): Promise<string>;
|
|
271
278
|
export type OwnerGenerationBaseline = {
|
|
272
279
|
state: "absent";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type UltragoalGoal, type UltragoalLedgerEvent, type UltragoalNudgeSurface, type UltragoalPlan, type UltragoalReceiptKind } from "./ultragoal-runtime";
|
|
2
|
-
export type UltragoalGuardState = "inactive" | "unrelated_goal" | "active_verified_complete" | "active_missing_receipt" | "active_stale_receipt" | "active_missing_final_receipt" | "active_dirty_quality_gate" | "active_review_blocked_unrecorded" | "active_review_blocked_recorded" | "unreadable_fail_closed";
|
|
2
|
+
export type UltragoalGuardState = "inactive" | "unrelated_goal" | "active_verified_complete" | "active_missing_receipt" | "active_stale_receipt" | "active_missing_final_receipt" | "active_dirty_quality_gate" | "active_review_blocked_unrecorded" | "active_review_blocked_recorded" | "active_missing_critic_verdict" | "unreadable_fail_closed";
|
|
3
3
|
export interface UltragoalGuardDiagnostic {
|
|
4
4
|
state: UltragoalGuardState;
|
|
5
5
|
message: string;
|
|
@@ -25,6 +25,7 @@ export interface CurrentGoalLike {
|
|
|
25
25
|
source: "user";
|
|
26
26
|
};
|
|
27
27
|
}
|
|
28
|
+
export declare function isKnownUltragoalObjective(currentObjective: string): boolean;
|
|
28
29
|
export declare function validateCompletionReceipt(input: {
|
|
29
30
|
plan: UltragoalPlan;
|
|
30
31
|
ledger: readonly UltragoalLedgerEvent[];
|
|
@@ -78,10 +79,10 @@ export interface UltragoalPauseBlockDiagnostic {
|
|
|
78
79
|
}
|
|
79
80
|
/**
|
|
80
81
|
* While an Ultragoal run is active, `goal({"op":"pause"})` is only allowed when the
|
|
81
|
-
* current durable Ultragoal state is readable
|
|
82
|
-
*
|
|
83
|
-
*
|
|
84
|
-
* blocks pause rather than silently allowing a give-up.
|
|
82
|
+
* current durable Ultragoal state is readable, the latest `blocker_classified`
|
|
83
|
+
* event is `human_blocked`, and a later fresh clean pause terminal critic verdict is bound to
|
|
84
|
+
* that exact classification. Reads fail closed so unreadable durable state or
|
|
85
|
+
* ledger data blocks pause rather than silently allowing a give-up.
|
|
85
86
|
*/
|
|
86
87
|
export declare function isUltragoalPauseBlocked(cwd: string): Promise<UltragoalPauseBlockDiagnostic>;
|
|
87
88
|
export declare function assertUltragoalPauseAllowed(cwd: string): Promise<void>;
|
|
@@ -1,10 +1,30 @@
|
|
|
1
1
|
import type { UltragoalCompletionVerification, UltragoalGoal, UltragoalGoalStatus, UltragoalLedgerEvent, UltragoalPlan, UltragoalReceiptKind } from "./ultragoal-runtime";
|
|
2
|
+
export declare const CRITIC_VERDICT_EVENT = "critic_verdict";
|
|
3
|
+
export declare const CRITIC_GATE_HARD_STOP_EVENT = "critic_gate_hard_stop";
|
|
4
|
+
export declare const CRITIC_GATE_OVERRIDE_EVENT = "critic_gate_override";
|
|
5
|
+
export declare const TERMINAL_CRITIC_CEILING = 5;
|
|
6
|
+
export type CriticVerdict = "OKAY" | "ITERATE" | "REJECT";
|
|
2
7
|
export type UltragoalReceiptFreshnessDiagnostic = {
|
|
3
8
|
state: "inactive" | "unrelated_goal" | "active_verified_complete" | "active_missing_receipt" | "active_stale_receipt" | "active_missing_final_receipt" | "active_dirty_quality_gate" | "active_review_blocked_unrecorded" | "active_review_blocked_recorded" | "unreadable_fail_closed";
|
|
4
9
|
message: string;
|
|
5
10
|
goalId?: string;
|
|
6
11
|
};
|
|
7
12
|
export declare function requiredUltragoalGoals(plan: UltragoalPlan): UltragoalGoal[];
|
|
13
|
+
/** Hash the current required-goal set for terminal critic verdict freshness. */
|
|
14
|
+
export declare function computeCriticVerdictPlanGeneration(plan: UltragoalPlan): string;
|
|
15
|
+
export declare function isCleanPauseCriticVerdictShape(candidate: UltragoalLedgerEvent, planGeneration: string, classificationEventId: string): boolean;
|
|
16
|
+
export declare function isCleanPauseCriticVerdict(event: UltragoalLedgerEvent, opts: {
|
|
17
|
+
planGeneration: string;
|
|
18
|
+
classificationEventId: string;
|
|
19
|
+
}): boolean;
|
|
20
|
+
export declare function findCleanPauseCriticVerdict(plan: UltragoalPlan, ledger: readonly UltragoalLedgerEvent[], classificationEventId: string): UltragoalLedgerEvent | null;
|
|
21
|
+
/** Pure: count all ledger `critic_verdict` rows for an exact plan generation. */
|
|
22
|
+
export declare function countTerminalCriticVerdicts(ledger: readonly UltragoalLedgerEvent[], planGeneration: string): number;
|
|
23
|
+
/** Pure: count every non-OKAY terminal critic verdict recorded for this run. */
|
|
24
|
+
export declare function countNonOkayTerminalCriticVerdicts(ledger: readonly UltragoalLedgerEvent[], _legacyPlanGeneration?: string): number;
|
|
25
|
+
export declare function terminalCriticHardStopReached(ledger: readonly UltragoalLedgerEvent[], _legacyPlanGeneration?: string): boolean;
|
|
26
|
+
export declare function terminalCriticGateOverridden(ledger: readonly UltragoalLedgerEvent[]): boolean;
|
|
27
|
+
export declare function terminalCriticCeilingReached(ledger: readonly UltragoalLedgerEvent[], _legacyPlanGeneration?: string): boolean;
|
|
8
28
|
export declare function receiptRelevantGoals(plan: UltragoalPlan, goal: UltragoalGoal, receiptKind: UltragoalReceiptKind): UltragoalGoal[];
|
|
9
29
|
export declare function computeUltragoalPlanGeneration(input: {
|
|
10
30
|
plan: UltragoalPlan;
|
|
@@ -19,6 +39,14 @@ export declare function computeUltragoalPlanGeneration(input: {
|
|
|
19
39
|
basis: UltragoalCompletionVerification["basis"];
|
|
20
40
|
};
|
|
21
41
|
export declare function findLedgerReceiptEvent(ledger: readonly UltragoalLedgerEvent[], receipt: UltragoalCompletionVerification): UltragoalLedgerEvent | null;
|
|
42
|
+
/**
|
|
43
|
+
* A final-aggregate receipt whose recorded ledger checkpoint quality gate is
|
|
44
|
+
* missing a clean `criticReview` OKAY can never satisfy the completion guard,
|
|
45
|
+
* yet is not "stale" under {@link validateReceiptFreshBase}. Detect it so an
|
|
46
|
+
* identical-evidence complete replay can re-verify and re-mint with a
|
|
47
|
+
* corrected gate instead of no-opping into a permanently blocked run.
|
|
48
|
+
*/
|
|
49
|
+
export declare function finalAggregateReceiptMissingCriticOkay(ledger: readonly UltragoalLedgerEvent[], receipt: UltragoalCompletionVerification): boolean;
|
|
22
50
|
export declare function validateReceiptFreshBase(input: {
|
|
23
51
|
plan: UltragoalPlan;
|
|
24
52
|
ledger: readonly UltragoalLedgerEvent[];
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { WorkflowHudSummary } from "../skill-state/active-state";
|
|
2
|
-
|
|
2
|
+
import { type RepositoryBinding } from "./repository-binding";
|
|
3
|
+
import { type CriticVerdict } from "./ultragoal-receipt-freshness";
|
|
4
|
+
export { CRITIC_GATE_HARD_STOP_EVENT, CRITIC_GATE_OVERRIDE_EVENT, CRITIC_VERDICT_EVENT, type CriticVerdict, computeUltragoalPlanGeneration, countTerminalCriticVerdicts, receiptRelevantGoals, TERMINAL_CRITIC_CEILING, terminalCriticCeilingReached, terminalCriticGateOverridden, } from "./ultragoal-receipt-freshness";
|
|
3
5
|
export { captureUltragoalRecoverySnapshot, parseStrictTerminalTranscript, persistUltragoalRecoveryDecision, planUltragoalOwnerLossRecovery, type UltragoalOwnerLossReceipt, type UltragoalRecoveryBinding, type UltragoalRecoveryDecision, type UltragoalRecoverySnapshot, validateOwnerLossBinding, validateRawUltragoalEvidence, validateRecoveryAdmission, validateRecoveryPath, } from "./ultragoal-owner-loss-recovery";
|
|
4
6
|
export type UltragoalSkcGoalMode = "aggregate" | "per-story";
|
|
5
7
|
export type UltragoalGoalStatus = "pending" | "active" | "complete" | "failed" | "blocked" | "review_blocked" | "superseded";
|
|
@@ -95,6 +97,8 @@ export interface UltragoalPlan {
|
|
|
95
97
|
skcObjective: string;
|
|
96
98
|
skcObjectiveAliases?: string[];
|
|
97
99
|
goals: UltragoalGoal[];
|
|
100
|
+
/** Authoritative repository identity for multi-repo fail-closed spawn (#2901). */
|
|
101
|
+
repositoryBinding?: RepositoryBinding;
|
|
98
102
|
createdAt: string;
|
|
99
103
|
updatedAt: string;
|
|
100
104
|
[key: string]: unknown;
|
|
@@ -307,6 +311,26 @@ export { joinUltragoalPipelineOverlap, rebaselineUltragoalPipelineOverlap, start
|
|
|
307
311
|
export declare function getUltragoalRunCompletionState(plan: UltragoalPlan, options?: {
|
|
308
312
|
retryFailed?: boolean;
|
|
309
313
|
}): UltragoalRunCompletionState;
|
|
314
|
+
/**
|
|
315
|
+
* Discriminated next-action for `complete-goals` handoff (#2903).
|
|
316
|
+
* `none` is reserved for genuine completion; `execute-goal` always carries a goal.
|
|
317
|
+
*/
|
|
318
|
+
export type UltragoalCompleteNextActionKind = "none" | "execute-goal" | "retry-failed" | "resolve-blockers" | "final-aggregate-receipt";
|
|
319
|
+
export type UltragoalCompleteNextAction = {
|
|
320
|
+
kind: UltragoalCompleteNextActionKind;
|
|
321
|
+
goal?: UltragoalGoal;
|
|
322
|
+
blockedGoals?: UltragoalGoal[];
|
|
323
|
+
failedGoals?: UltragoalGoal[];
|
|
324
|
+
};
|
|
325
|
+
/**
|
|
326
|
+
* Resolve the actionable next step after scheduling / complete-goals.
|
|
327
|
+
* Blocked and review_blocked goals remain unschedulable; they surface as
|
|
328
|
+
* `resolve-blockers` instead of a contradictory `execute-goal` without goal_id.
|
|
329
|
+
*/
|
|
330
|
+
export declare function resolveUltragoalCompleteNextAction(plan: UltragoalPlan, options?: {
|
|
331
|
+
retryFailed?: boolean;
|
|
332
|
+
selectedGoal?: UltragoalGoal;
|
|
333
|
+
}): UltragoalCompleteNextAction;
|
|
310
334
|
export declare function startNextUltragoalGoal(input: {
|
|
311
335
|
cwd: string;
|
|
312
336
|
retryFailed?: boolean;
|
|
@@ -315,6 +339,7 @@ export declare function startNextUltragoalGoal(input: {
|
|
|
315
339
|
plan: UltragoalPlan;
|
|
316
340
|
goal?: UltragoalGoal;
|
|
317
341
|
allComplete: boolean;
|
|
342
|
+
nextAction: UltragoalCompleteNextAction;
|
|
318
343
|
}>;
|
|
319
344
|
export declare function qualityGateObject(value: unknown): JsonObject | null;
|
|
320
345
|
export declare function nonEmptyStringArray(value: unknown): string[] | null;
|
|
@@ -401,10 +426,10 @@ export declare function recordUltragoalReviewBlockers(input: {
|
|
|
401
426
|
}): Promise<UltragoalPlan>;
|
|
402
427
|
export type UltragoalBlockerClassification = "human_blocked" | "resolvable";
|
|
403
428
|
/**
|
|
404
|
-
* Record an audited blocker triage classification in the durable ledger.
|
|
405
|
-
* `
|
|
406
|
-
*
|
|
407
|
-
* audit note and never unblocks pause.
|
|
429
|
+
* Record an audited blocker triage classification in the durable ledger. Pause
|
|
430
|
+
* requires the latest `blocker_classified` event to be `human_blocked` and a
|
|
431
|
+
* later clean pause terminal critic verdict bound to that classification; `resolvable`
|
|
432
|
+
* is an audit note and never unblocks pause.
|
|
408
433
|
*/
|
|
409
434
|
export declare function recordUltragoalBlockerClassification(input: {
|
|
410
435
|
cwd: string;
|
|
@@ -412,6 +437,19 @@ export declare function recordUltragoalBlockerClassification(input: {
|
|
|
412
437
|
evidence: string;
|
|
413
438
|
goalId?: string;
|
|
414
439
|
}): Promise<UltragoalLedgerEvent>;
|
|
440
|
+
export declare function recordUltragoalCriticVerdict(input: {
|
|
441
|
+
cwd: string;
|
|
442
|
+
terminus: "completion" | "pause";
|
|
443
|
+
verdict: CriticVerdict;
|
|
444
|
+
evidence: string;
|
|
445
|
+
blockers?: string[];
|
|
446
|
+
goalId?: string;
|
|
447
|
+
classificationEventId?: string;
|
|
448
|
+
}): Promise<UltragoalLedgerEvent>;
|
|
449
|
+
export declare function recordUltragoalCriticGateOverride(input: {
|
|
450
|
+
cwd: string;
|
|
451
|
+
evidence: string;
|
|
452
|
+
}): Promise<UltragoalLedgerEvent>;
|
|
415
453
|
type UltragoalReviewContractStrength = "strong" | "thin-derived";
|
|
416
454
|
interface UltragoalReviewFinding extends JsonObject {
|
|
417
455
|
severity: "blocker";
|
|
@@ -20,6 +20,9 @@ interface RalplanHudState extends WorkflowGateHudState {
|
|
|
20
20
|
iteration?: number;
|
|
21
21
|
iterationFromIndex?: number;
|
|
22
22
|
stages?: string;
|
|
23
|
+
architectPasses?: number;
|
|
24
|
+
criticPasses?: number;
|
|
25
|
+
reviewPassBudget?: number;
|
|
23
26
|
verdict?: string;
|
|
24
27
|
latestSummary?: string;
|
|
25
28
|
pendingApproval?: boolean;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Settings } from "../config/settings";
|
|
1
2
|
import type { AgentDefinition } from "./types";
|
|
2
3
|
/** Result of agent discovery */
|
|
3
4
|
export interface DiscoveryResult {
|
|
@@ -11,8 +12,9 @@ export declare function filterVisibleAgents(agents: readonly AgentDefinition[]):
|
|
|
11
12
|
* Precedence (highest wins): .skc project, .skc user, SKC plugins, then bundled
|
|
12
13
|
*
|
|
13
14
|
* @param cwd - Current working directory for project agent discovery
|
|
15
|
+
* @param activeSettings - Settings used to resolve enabled providers.
|
|
14
16
|
*/
|
|
15
|
-
export declare function discoverAgents(cwd: string, home?: string): Promise<DiscoveryResult>;
|
|
17
|
+
export declare function discoverAgents(cwd: string, home?: string, activeSettings?: Settings): Promise<DiscoveryResult>;
|
|
16
18
|
/**
|
|
17
19
|
* Get an agent by name from discovered agents.
|
|
18
20
|
*/
|
|
@@ -20,6 +20,7 @@ import type { ContextFileEntry } from "../tools";
|
|
|
20
20
|
import type { EventBus } from "../utils/event-bus";
|
|
21
21
|
import type { WorkspaceTree } from "../workspace-tree";
|
|
22
22
|
import { type AgentDefinition, type AgentProgress, type ReviewFinding, type SingleResult } from "./types";
|
|
23
|
+
import { type ExecutorExecutionMode } from "./ultragoal-redteam-activation";
|
|
23
24
|
export declare function trimForkContextSeedForModel(seed: ForkContextSeed, model: Model | undefined): ForkContextSeed;
|
|
24
25
|
/** Options for subagent execution */
|
|
25
26
|
export interface ExecutorOptions {
|
|
@@ -28,6 +29,11 @@ export interface ExecutorOptions {
|
|
|
28
29
|
agent: AgentDefinition;
|
|
29
30
|
task: string;
|
|
30
31
|
assignment?: string;
|
|
32
|
+
/**
|
|
33
|
+
* Typed executor execution mode. When set, overrides assignment-text heuristics
|
|
34
|
+
* for ultragoal red-team prompt injection (#2698 / #2456).
|
|
35
|
+
*/
|
|
36
|
+
executionMode?: ExecutorExecutionMode;
|
|
31
37
|
context?: string;
|
|
32
38
|
description?: string;
|
|
33
39
|
index: number;
|
|
@@ -36,7 +36,9 @@ export declare class TaskTool implements AgentTool<TaskToolSchemaInstance, TaskT
|
|
|
36
36
|
get description(): string;
|
|
37
37
|
private constructor();
|
|
38
38
|
/**
|
|
39
|
-
* Create a TaskTool instance
|
|
39
|
+
* Create a TaskTool instance.
|
|
40
|
+
* Repository authority is captured from session cwd *before* agent discovery so
|
|
41
|
+
* multi-repo workspaces fail closed prior to context/discovery (#2901).
|
|
40
42
|
*/
|
|
41
43
|
static create(session: ToolSession): Promise<TaskTool>;
|
|
42
44
|
execute(_toolCallId: string, rawParams: unknown, signal?: AbortSignal, onUpdate?: AgentToolUpdateCallback<TaskToolDetails>): Promise<AgentToolResult<TaskToolDetails>>;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { AgentProgress, TaskToolDetails } from "./types";
|
|
2
|
+
export type ProviderRetryKind = NonNullable<AgentProgress["retryState"]>["kind"];
|
|
3
|
+
export declare function classifyProviderRetry(errorMessage: string): ProviderRetryKind;
|
|
4
|
+
export declare function providerNameFromModel(model: string | undefined): string | undefined;
|
|
5
|
+
export declare function providerRetryPhaseLabel(kind: ProviderRetryKind): string;
|
|
6
|
+
export declare function providerProgressAgeLabel(retryState: NonNullable<AgentProgress["retryState"]>, nowMs: number): string;
|
|
7
|
+
export declare function hasActiveProviderRetryInTaskDetails(details: TaskToolDetails, seen?: WeakSet<object>): boolean;
|
|
8
|
+
export declare function hasActiveProviderRetryInProgress(progress: AgentProgress, seen?: WeakSet<object>): boolean;
|
|
9
|
+
export interface ProviderDegradationGroup {
|
|
10
|
+
provider: string;
|
|
11
|
+
count: number;
|
|
12
|
+
}
|
|
13
|
+
export declare function collectProviderDegradationGroups(progress: readonly AgentProgress[]): ProviderDegradationGroup[];
|