@sayknow-cli/coding-agent 0.4.7 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +122 -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 +20 -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
|
@@ -38,8 +38,22 @@ export interface TopicRecord {
|
|
|
38
38
|
replaySeq?: number;
|
|
39
39
|
/** Serialized authority epoch; a late create may commit only in its starting epoch. */
|
|
40
40
|
authorityEpoch?: number;
|
|
41
|
+
/** Immutable authority epoch held when this remote topic create began. */
|
|
42
|
+
creationLeaseEpoch?: number;
|
|
41
43
|
/** An uncertain delete fences future creation and inbound routing. */
|
|
42
44
|
authorityState?: "active" | "delete_pending";
|
|
45
|
+
/** Telegram chat and endpoint authority last proven to use this topic. */
|
|
46
|
+
chatId?: string;
|
|
47
|
+
/** Canonical endpoint tuple (URL + token) that currently holds the lease. */
|
|
48
|
+
endpointKey?: string;
|
|
49
|
+
/** Authenticated endpoint authority digest, excluding transport presentation. */
|
|
50
|
+
endpointDigest?: string;
|
|
51
|
+
/** SDK event generation associated with the current endpoint lease. */
|
|
52
|
+
endpointGeneration?: number;
|
|
53
|
+
/** Monotonic authenticated endpoint handoffs; legacy bindings begin at zero. */
|
|
54
|
+
endpointIncarnation?: number;
|
|
55
|
+
/** True when persisted binding fields were present but malformed; recovery must fail closed. */
|
|
56
|
+
bindingMalformed?: true;
|
|
43
57
|
}
|
|
44
58
|
/** Serialisable shape persisted to disk. */
|
|
45
59
|
export interface TopicRegistryState {
|
|
@@ -47,6 +61,34 @@ export interface TopicRegistryState {
|
|
|
47
61
|
topics: Record<string, TopicRecord>;
|
|
48
62
|
/** Durable deletion epochs retained after a definite delete. */
|
|
49
63
|
fences?: Record<string, number>;
|
|
64
|
+
/** Closed transport endpoint leases; unchanged endpoint discovery remains fenced across restart. */
|
|
65
|
+
closedEndpoints?: Record<string, TopicEndpointBinding>;
|
|
66
|
+
}
|
|
67
|
+
/** Authenticated runtime binding for a durable topic lease. */
|
|
68
|
+
export interface TopicEndpointBinding {
|
|
69
|
+
chatId: string;
|
|
70
|
+
endpointKey: string;
|
|
71
|
+
endpointDigest: string;
|
|
72
|
+
endpointGeneration?: number;
|
|
73
|
+
}
|
|
74
|
+
/** Discriminated durable endpoint authority for identity-less replay admission. */
|
|
75
|
+
export type TopicEndpointAuthority = {
|
|
76
|
+
state: "none";
|
|
77
|
+
} | {
|
|
78
|
+
state: "unique";
|
|
79
|
+
sessionId: string;
|
|
80
|
+
} | {
|
|
81
|
+
state: "ambiguous";
|
|
82
|
+
};
|
|
83
|
+
/** Conditional rollback token for a delete fence publication. */
|
|
84
|
+
export interface TopicDeleteAuthoritySnapshot {
|
|
85
|
+
sessionId: string;
|
|
86
|
+
topicId?: string;
|
|
87
|
+
authorityEpoch?: number;
|
|
88
|
+
authorityState?: TopicRecord["authorityState"];
|
|
89
|
+
fenceEpoch?: number;
|
|
90
|
+
/** Exact fenced record, retained to restore an in-memory tombstone after a failed clear publication. */
|
|
91
|
+
record?: TopicRecord;
|
|
50
92
|
}
|
|
51
93
|
export declare function emptyTopicRegistryState(): TopicRegistryState;
|
|
52
94
|
/**
|
|
@@ -61,9 +103,17 @@ export declare class TopicRegistry {
|
|
|
61
103
|
private readonly byTopic;
|
|
62
104
|
/** In-flight create promises, keyed by session, to dedupe concurrent creates. */
|
|
63
105
|
private readonly inflight;
|
|
106
|
+
/** Newly-created records being durably published; never routable until committed. */
|
|
107
|
+
private readonly staged;
|
|
108
|
+
/** Socket-specific provenance for transient endpoint claims. */
|
|
109
|
+
private readonly transientClaimants;
|
|
110
|
+
/** Endpoint claims registered before a remote topic create can publish a record. */
|
|
111
|
+
private readonly creatingBindings;
|
|
64
112
|
/** Monotonic authority epochs, including deletion fences for absent records. */
|
|
65
113
|
private readonly epochs;
|
|
66
114
|
constructor(state?: TopicRegistryState);
|
|
115
|
+
/** Replace all runtime state after a successfully persisted staged publication. */
|
|
116
|
+
replace(state: TopicRegistryState): void;
|
|
67
117
|
/** Merge serialized state and normalize authority fields from older releases. */
|
|
68
118
|
load(state: TopicRegistryState): void;
|
|
69
119
|
private rebuildInboundRoutes;
|
|
@@ -71,13 +121,39 @@ export declare class TopicRegistry {
|
|
|
71
121
|
sessionForTopic(topicId: string): string | undefined;
|
|
72
122
|
/** All session ids with a persisted topic record. */
|
|
73
123
|
sessionIds(): string[];
|
|
124
|
+
/** Persisted remote deletes that must be reconciled before recovery can proceed. */
|
|
125
|
+
deletePendingSessionIds(): string[];
|
|
74
126
|
/** The existing topic record for a session, if any. */
|
|
75
127
|
get(sessionId: string): TopicRecord | undefined;
|
|
128
|
+
/** Current immutable authority epoch for a creation lease. */
|
|
129
|
+
authorityEpoch(sessionId: string): number;
|
|
130
|
+
/** Whether this session has an active, unambiguous topic authority. */
|
|
131
|
+
isActiveUnambiguous(sessionId: string): boolean;
|
|
132
|
+
/**
|
|
133
|
+
* Resolve endpoint authority for identity-less replay. An endpoint may bootstrap
|
|
134
|
+
* only when no committed, staged, or pre-create claim can own it; malformed
|
|
135
|
+
* partial bindings and deletion fences deliberately fail closed.
|
|
136
|
+
*/
|
|
137
|
+
endpointAuthority(binding: TopicEndpointBinding, excludedTransientClaimant?: object): TopicEndpointAuthority;
|
|
138
|
+
/** Resolve a uniquely bound logical owner for callers that only need the owner. */
|
|
139
|
+
uniqueSessionForEndpoint(binding: TopicEndpointBinding): string | undefined;
|
|
140
|
+
/** Whether this exact session owns the complete durable endpoint binding. */
|
|
141
|
+
matchesEndpoint(sessionId: string, binding: TopicEndpointBinding): boolean;
|
|
142
|
+
/**
|
|
143
|
+
* Rebind an existing topic to an authenticated successor endpoint. The exact
|
|
144
|
+
* logical session id is proved by replay before this method is called. A
|
|
145
|
+
* rotated credential may replace only an inactive incumbent; concurrent
|
|
146
|
+
* incumbents, cross-chat records, malformed evidence, collisions, and delete
|
|
147
|
+
* fences remain fail-closed.
|
|
148
|
+
*/
|
|
149
|
+
bindEndpoint(sessionId: string, binding: TopicEndpointBinding, activeEndpointKeys?: ReadonlySet<string>, allowEndpointRotation?: boolean): "bound" | "unchanged" | "rejected";
|
|
150
|
+
/** Undo a failed durable endpoint migration without disturbing concurrent metadata writers. */
|
|
151
|
+
restoreEndpointBinding(sessionId: string, expected: TopicEndpointBinding, previous: Pick<TopicRecord, "chatId" | "endpointKey" | "endpointDigest" | "endpointGeneration" | "endpointIncarnation">): boolean;
|
|
76
152
|
/**
|
|
77
153
|
* Return the existing active topic for `sessionId`, or create one via
|
|
78
154
|
* `create` (called only on first use).
|
|
79
155
|
*/
|
|
80
|
-
getOrCreateTopic(sessionId: string, create: () => Promise<unknown>, now?: () => number, name?: string): Promise<TopicRecord>;
|
|
156
|
+
getOrCreateTopic(sessionId: string, create: () => Promise<unknown>, now?: () => number, name?: string, binding?: TopicEndpointBinding, commit?: () => Promise<void>, transientClaimant?: object): Promise<TopicRecord>;
|
|
81
157
|
/** Mark the identity header as sent for a session. Idempotent. */
|
|
82
158
|
markIdentitySent(sessionId: string): void;
|
|
83
159
|
/** Whether the identity header still needs sending for this session. */
|
|
@@ -109,14 +185,24 @@ export declare class TopicRegistry {
|
|
|
109
185
|
markUserNamePending(sessionId: string, name: string): boolean;
|
|
110
186
|
/** Commit a successfully-applied daemon topic title. */
|
|
111
187
|
markNameApplied(sessionId: string, name: string): void;
|
|
188
|
+
/** Capture only authority fields that a failed delete publication may restore. */
|
|
189
|
+
captureDeleteAuthority(sessionId: string): TopicDeleteAuthoritySnapshot;
|
|
190
|
+
/** Restore a failed delete fence only while its exact authority mutation remains current. */
|
|
191
|
+
restoreDeleteAuthority(snapshot: TopicDeleteAuthoritySnapshot): boolean;
|
|
192
|
+
/** Restore the exact delete fence after a failed compensation publication. */
|
|
193
|
+
restoreDeleteFence(snapshot: TopicDeleteAuthoritySnapshot): boolean;
|
|
112
194
|
/** Fence new work before the remote delete starts, including an absent in-flight create. */
|
|
113
195
|
beginDelete(sessionId: string): TopicRecord | undefined;
|
|
196
|
+
/** Retain an accepted create as deletion-fenced before remote compensation can begin. */
|
|
197
|
+
fenceAcceptedCreate(sessionId: string, topicId: string, now?: () => number, name?: string, binding?: TopicEndpointBinding): TopicRecord;
|
|
198
|
+
/** Fence an accepted create only when its exact creator lease still owns the record. */
|
|
199
|
+
fenceAcceptedCreateForLease(sessionId: string, topicId: string, creationLeaseEpoch: number, now?: () => number, name?: string, binding?: TopicEndpointBinding): TopicRecord | undefined;
|
|
114
200
|
/** Wait for a revoked create to settle before admitting a later lifecycle epoch. */
|
|
115
201
|
awaitInflight(sessionId: string): Promise<void>;
|
|
116
202
|
/** Remove only after a definite remote deletion; ambiguity deliberately retains its fence. */
|
|
117
203
|
settleDelete(sessionId: string, topicId: string): boolean;
|
|
118
204
|
/** Remove a topic record immediately for local/test cleanup compatibility. */
|
|
119
205
|
delete(sessionId: string): boolean;
|
|
120
|
-
/** Serialise
|
|
206
|
+
/** Serialise active records plus unpublished staged creates for atomic commit. */
|
|
121
207
|
serialize(): TopicRegistryState;
|
|
122
208
|
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { SdkSessionEndpoint } from "./discovery";
|
|
2
|
+
export type SdkEndpointLiveness = "live" | "stale" | "dead" | "unknown";
|
|
3
|
+
export interface SdkEndpointSelectionError {
|
|
4
|
+
code: "endpoint_stale" | "endpoint_dead" | "endpoint_unknown" | "no_live_endpoint" | "multiple_live_endpoints" | "not_found";
|
|
5
|
+
}
|
|
6
|
+
export declare function classifyEndpoint(endpoint: SdkSessionEndpoint): SdkEndpointLiveness;
|
|
7
|
+
export declare function selectLiveEndpoint(records: readonly SdkSessionEndpoint[], explicitSessionId?: string): SdkSessionEndpoint | SdkEndpointSelectionError;
|
|
@@ -5,7 +5,7 @@ export type ControlInput = Record<string, unknown>;
|
|
|
5
5
|
* AgentSession and its controllers without exposing those concrete types here.
|
|
6
6
|
*/
|
|
7
7
|
export interface ControlSurface {
|
|
8
|
-
prompt(text: string, images?: ControlValue): Promise<ControlValue> | ControlValue;
|
|
8
|
+
prompt(text: string, images?: ControlValue, clientRef?: string): Promise<ControlValue> | ControlValue;
|
|
9
9
|
steer(text: string): Promise<ControlValue> | ControlValue;
|
|
10
10
|
followUp(text: string): Promise<ControlValue> | ControlValue;
|
|
11
11
|
abort(): Promise<ControlValue> | ControlValue;
|
|
@@ -13,11 +13,12 @@ export interface ControlSurface {
|
|
|
13
13
|
answerAsk(id: string, answer: ControlValue): Promise<ControlValue> | ControlValue;
|
|
14
14
|
answerGate(id: string, response: ControlValue, expectedSessionId?: string, idempotencyKey?: string): Promise<ControlValue> | ControlValue;
|
|
15
15
|
approvePlan(id: string, choice: ControlValue, expectedSessionId?: string): Promise<ControlValue> | ControlValue;
|
|
16
|
-
invokeSkill(name: string, args: ControlValue): Promise<ControlValue> | ControlValue;
|
|
16
|
+
invokeSkill(name: string, args: ControlValue, clientRef?: string): Promise<ControlValue> | ControlValue;
|
|
17
17
|
setPlanMode(on: boolean): Promise<ControlValue> | ControlValue;
|
|
18
18
|
operateGoal(op: string, objective?: string): Promise<ControlValue> | ControlValue;
|
|
19
19
|
replaceTodo(items: ControlValue): Promise<ControlValue> | ControlValue;
|
|
20
20
|
setModel(id: string, thinkingLevel?: ControlValue): Promise<ControlValue> | ControlValue;
|
|
21
|
+
setModelProfile(id: string): Promise<ControlValue> | ControlValue;
|
|
21
22
|
cycleModel(): Promise<ControlValue> | ControlValue;
|
|
22
23
|
setThinking(level: ControlValue): Promise<ControlValue> | ControlValue;
|
|
23
24
|
cycleThinking(): Promise<ControlValue> | ControlValue;
|
|
@@ -7,13 +7,15 @@ export interface SessionSdkHostOptions extends HostEndpointAdapters {
|
|
|
7
7
|
query?: (connectionId: string, frame: SdkFrame) => unknown | Promise<unknown>;
|
|
8
8
|
/** Best-effort diagnostic observation of accepted control/query frames. */
|
|
9
9
|
onRequest?: SdkRequestObserver;
|
|
10
|
+
/** Runs before a control response is sent; identity transitions use sendTerminal. */
|
|
11
|
+
beforeControlResponse?: (connectionId: string, request: SdkFrame, response: SdkFrame, sendTerminal: () => Promise<void>) => void | Promise<void>;
|
|
10
12
|
/** Runs only after a successful control response has been sent to the client. */
|
|
11
13
|
afterControlResponse?: (connectionId: string, request: SdkFrame, response: SdkFrame) => void | Promise<void>;
|
|
12
14
|
installProviderDefinitions?: (capability: string, definitions: unknown) => void;
|
|
13
15
|
onProviderDefinitionsRemoved?: (capability: string) => void;
|
|
14
16
|
onReverseCancel?: (requestId: string, reason: "provider_disconnected" | "lease_released") => void;
|
|
15
17
|
/** Best-effort capabilities mirrored from the native transport for out-of-band consumers. */
|
|
16
|
-
connectionCapabilities?: (connectionId: string) => ReadonlySet<string
|
|
18
|
+
connectionCapabilities?: (connectionId: string) => ReadonlySet<string> | undefined;
|
|
17
19
|
}
|
|
18
20
|
/** SDK hosting is independent of notification configuration. Only root sessions host an endpoint. */
|
|
19
21
|
export declare function shouldHostSdk(_settings: unknown, isTopLevel: boolean, env?: NodeJS.ProcessEnv): boolean;
|
|
@@ -31,6 +31,19 @@ export interface SessionSurface {
|
|
|
31
31
|
totalBytes: number;
|
|
32
32
|
} | undefined>;
|
|
33
33
|
getJobs(): unknown | Promise<unknown>;
|
|
34
|
+
/** Q26 keyed lookup of a submitted prompt's authoritative reconciliation status. */
|
|
35
|
+
getPromptStatus?(selector: {
|
|
36
|
+
commandId?: string;
|
|
37
|
+
turnId?: string;
|
|
38
|
+
clientRef?: string;
|
|
39
|
+
}): unknown | Promise<unknown>;
|
|
40
|
+
getSkillInvokeStatus?(selector: {
|
|
41
|
+
commandId?: string;
|
|
42
|
+
turnId?: string;
|
|
43
|
+
clientRef?: string;
|
|
44
|
+
}): unknown | Promise<unknown>;
|
|
45
|
+
/** Q27 effective model-profile catalog from the live session registry. */
|
|
46
|
+
getModelProfiles?(): unknown[] | Promise<unknown[]>;
|
|
34
47
|
/** Query rows backed by the session's installed binding map. */
|
|
35
48
|
installedQueries?: ReadonlySet<string>;
|
|
36
49
|
}
|
|
@@ -57,6 +70,7 @@ export interface QueryResponse {
|
|
|
57
70
|
code: string;
|
|
58
71
|
message: string;
|
|
59
72
|
restartQuery?: boolean;
|
|
73
|
+
details?: unknown;
|
|
60
74
|
};
|
|
61
75
|
}
|
|
62
76
|
export declare class QueryHandlers {
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
export { MODEL_PROFILE_DISCOVERY_QUERY, MODEL_PROFILE_ERROR_DETAIL_MAX_BYTES, type ModelProfileCatalogItem, type ModelProfileErrorCode, type ModelProfileErrorDetails, ModelProfileRegistryError, type ModelProfileRegistryErrorDetails, type UnknownModelProfileDetails, UnknownModelProfileError, } from "../config/model-profile-contract";
|
|
1
2
|
export * as bus from "./bus";
|
|
2
3
|
export * from "./client";
|
|
3
4
|
export * as host from "./host";
|
|
4
5
|
export * as mcp from "./mcp";
|
|
5
6
|
export type { Q10CurrentThinkingLevel, Q10Model, Q10SettableThinkingLevel, Q10ThinkingCapabilities, Q10ThinkingEffort, Q10ThinkingMode, } from "./models";
|
|
7
|
+
export * from "./prompt-status";
|
|
6
8
|
export * from "./session";
|
|
7
9
|
export * from "./session-directory";
|
|
@@ -10,5 +10,14 @@ export type CreateLifecycleAgentSessionResult = {
|
|
|
10
10
|
rollback: SdkStartupRollbackTracker;
|
|
11
11
|
failure: SdkStartupFailure;
|
|
12
12
|
};
|
|
13
|
+
/** Options accepted by lifecycle-only session construction. */
|
|
14
|
+
export type CreateLifecycleAgentSessionOptions = CreateAgentSessionOptions & {
|
|
15
|
+
/**
|
|
16
|
+
* Startup budget for ACP lifecycle MCP launches, in milliseconds. Set only
|
|
17
|
+
* when the lifecycle request supplies `mcpServers`; ordinary consumers keep
|
|
18
|
+
* the manager's short default ceiling.
|
|
19
|
+
*/
|
|
20
|
+
mcpStartupTimeoutMs?: number;
|
|
21
|
+
};
|
|
13
22
|
/** Internal lifecycle-only session construction with an owner-bound SDK startup result. */
|
|
14
|
-
export declare function createLifecycleAgentSession(options?:
|
|
23
|
+
export declare function createLifecycleAgentSession(options?: CreateLifecycleAgentSessionOptions): Promise<CreateLifecycleAgentSessionResult>;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public DTO contract for Q26 `turn.prompt_status` and the `clientRef`
|
|
3
|
+
* correlation field on `turn.prompt`.
|
|
4
|
+
*
|
|
5
|
+
* Semantics:
|
|
6
|
+
* - `turn.prompt` remains ordered and non-idempotent. An envelope
|
|
7
|
+
* `idempotencyKey` is ignored for replay/conflict purposes on ordered
|
|
8
|
+
* operations (no replay cache, no `idempotency_conflict`).
|
|
9
|
+
* - `clientRef` is a caller-chosen correlation key (trimmed, non-empty,
|
|
10
|
+
* 1..PROMPT_CLIENT_REF_MAX_LENGTH chars; one fresh value per logical prompt)
|
|
11
|
+
* mapped to the generated commandId/turnId at preflight acceptance so a
|
|
12
|
+
* caller can reconcile after a lost acknowledgement frame.
|
|
13
|
+
* - The clientRef index is scoped to one live session runtime: identical refs
|
|
14
|
+
* may coexist in different sessions, lookups never cross sessions, a ref
|
|
15
|
+
* conflicts only while its record is retained (`client_ref_conflict`), and
|
|
16
|
+
* after terminal TTL/capacity eviction a ref may be admitted again with the
|
|
17
|
+
* prior outcome unknown — callers MUST NOT reuse a clientRef as a retry
|
|
18
|
+
* mechanism and MUST treat `unknown` as uncertainty, not proof of
|
|
19
|
+
* non-execution.
|
|
20
|
+
* - The durability floor is the live session process: after restart or
|
|
21
|
+
* retained-record eviction, a lookup honestly reports `unknown`.
|
|
22
|
+
* - Q26 tracks prompts accepted through the SDK control surface (which always
|
|
23
|
+
* carries a requesting connection); submissions without a delivery owner are
|
|
24
|
+
* outside the reconciliation contract and hold no reservation.
|
|
25
|
+
*/
|
|
26
|
+
export declare const PROMPT_CLIENT_REF_MAX_LENGTH = 128;
|
|
27
|
+
export interface TurnPromptImageInput {
|
|
28
|
+
data: string;
|
|
29
|
+
mimeType?: string;
|
|
30
|
+
}
|
|
31
|
+
/** Public input contract for ordered `turn.prompt`. */
|
|
32
|
+
export interface TurnPromptInput {
|
|
33
|
+
text: string;
|
|
34
|
+
images?: TurnPromptImageInput[];
|
|
35
|
+
clientRef?: string;
|
|
36
|
+
}
|
|
37
|
+
/** Terminal outcome is preserved exactly; active records never age into terminal. */
|
|
38
|
+
export type PromptReconciliationStatus = "accepted" | "in_flight" | "terminal_ok" | "failed";
|
|
39
|
+
/** Exactly one selector per lookup. */
|
|
40
|
+
export type TurnPromptStatusSelector = {
|
|
41
|
+
clientRef: string;
|
|
42
|
+
} | {
|
|
43
|
+
commandId: string;
|
|
44
|
+
turnId: string;
|
|
45
|
+
};
|
|
46
|
+
interface TurnPromptReconciliationIdentity {
|
|
47
|
+
commandId: string;
|
|
48
|
+
turnId: string;
|
|
49
|
+
clientRef?: string;
|
|
50
|
+
/** Epoch milliseconds of preflight acceptance. */
|
|
51
|
+
acceptedAt: number;
|
|
52
|
+
}
|
|
53
|
+
export interface TurnPromptReconciliationAccepted extends TurnPromptReconciliationIdentity {
|
|
54
|
+
status: "accepted";
|
|
55
|
+
}
|
|
56
|
+
export interface TurnPromptReconciliationInFlight extends TurnPromptReconciliationIdentity {
|
|
57
|
+
status: "in_flight";
|
|
58
|
+
/** Epoch milliseconds of the agent_start transition. */
|
|
59
|
+
startedAt: number;
|
|
60
|
+
}
|
|
61
|
+
export interface TurnPromptReconciliationTerminalOk extends TurnPromptReconciliationIdentity {
|
|
62
|
+
status: "terminal_ok";
|
|
63
|
+
startedAt?: number;
|
|
64
|
+
/** Epoch milliseconds of the terminal transition. */
|
|
65
|
+
terminalAt: number;
|
|
66
|
+
}
|
|
67
|
+
export interface TurnPromptReconciliationFailed extends TurnPromptReconciliationIdentity {
|
|
68
|
+
status: "failed";
|
|
69
|
+
startedAt?: number;
|
|
70
|
+
terminalAt: number;
|
|
71
|
+
/** Bounded, sanitized failure detail (code safe-token ≤64, message ≤512). */
|
|
72
|
+
error: {
|
|
73
|
+
code: string;
|
|
74
|
+
message: string;
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
export interface TurnPromptReconciliationUnknown {
|
|
78
|
+
status: "unknown";
|
|
79
|
+
}
|
|
80
|
+
export type TurnPromptReconciliation = TurnPromptReconciliationAccepted | TurnPromptReconciliationInFlight | TurnPromptReconciliationTerminalOk | TurnPromptReconciliationFailed | TurnPromptReconciliationUnknown;
|
|
81
|
+
/** Result of a successful `turn.prompt` preflight acknowledgement. */
|
|
82
|
+
export interface TurnPromptAcceptedResult {
|
|
83
|
+
commandId: string;
|
|
84
|
+
turnId: string;
|
|
85
|
+
accepted: true;
|
|
86
|
+
clientRef?: string;
|
|
87
|
+
}
|
|
88
|
+
export {};
|
|
@@ -20,7 +20,7 @@ export type ResolveManagedSessionScopeResult = {
|
|
|
20
20
|
scope: ManagedSessionScope;
|
|
21
21
|
} | {
|
|
22
22
|
kind: "error";
|
|
23
|
-
code: "cwd_missing" | "cwd_not_directory" | "identity_unavailable" | "network_unsupported" | "sessions_root_unavailable" | "binding_conflict" | "binding_invalid";
|
|
23
|
+
code: "cwd_missing" | "cwd_not_directory" | "identity_unavailable" | "network_unsupported" | "sessions_root_unavailable" | "binding_conflict" | "binding_invalid" | "atomic_unavailable" | "durability_not_provable" | "durability_failed" | "invalid_request";
|
|
24
24
|
message: string;
|
|
25
25
|
};
|
|
26
26
|
export interface LogicalSessionCandidate {
|
|
@@ -149,6 +149,13 @@ export interface CreateAgentSessionOptions {
|
|
|
149
149
|
goalToolAllowedOps?: readonly ("create" | "get" | "complete" | "resume" | "drop" | "pause")[];
|
|
150
150
|
/** Optional per-session allowlist for tools exposed through search_tool_bm25. */
|
|
151
151
|
discoverableToolAllowedNames?: readonly string[];
|
|
152
|
+
/**
|
|
153
|
+
* Discoverable built-in tools that must stay in the initial active set even when
|
|
154
|
+
* `tools.discoveryMode === "all"` would otherwise hide them behind `search_tool_bm25`.
|
|
155
|
+
* Used for coordination tools (e.g. `irc`) that a subagent must be able to use
|
|
156
|
+
* immediately without first spending a discovery round-trip to find them.
|
|
157
|
+
*/
|
|
158
|
+
alwaysActiveToolNames?: readonly string[];
|
|
152
159
|
/** Optional shared agent registry for IRC routing. Default: AgentRegistry.global(). */
|
|
153
160
|
agentRegistry?: AgentRegistry;
|
|
154
161
|
/** Parent task ID prefix for nested artifact naming (e.g., "6-Extensions") */
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
+
import { type ModelProfileErrorCode, type ModelProfileErrorDetails } from "../config/model-profile-contract";
|
|
1
2
|
export type SdkStartupPhase = "registration" | "startup";
|
|
2
3
|
export type SdkStartupReason = "disabled" | "ineligible" | "factory_absent" | "runner_absent" | "pending" | "failed";
|
|
3
4
|
export interface SdkStartupFailure {
|
|
4
5
|
phase: SdkStartupPhase;
|
|
5
6
|
reason: SdkStartupReason;
|
|
6
7
|
message: string;
|
|
8
|
+
code?: ModelProfileErrorCode;
|
|
9
|
+
details?: ModelProfileErrorDetails;
|
|
7
10
|
}
|
|
8
11
|
export type SdkStartupResult = {
|
|
9
12
|
status: "started";
|
|
@@ -13,6 +16,12 @@ export type SdkStartupResult = {
|
|
|
13
16
|
};
|
|
14
17
|
/** Internal symbols for lifecycle-only SDK startup construction and bus wiring. */
|
|
15
18
|
export declare const lifecycleStartupCapabilityOption: unique symbol;
|
|
19
|
+
/**
|
|
20
|
+
* Internal option carrying the startup budget for ACP lifecycle MCP launches.
|
|
21
|
+
* Only set when the lifecycle request actually supplies `mcpServers`, so the
|
|
22
|
+
* longer ceiling never leaks to ordinary CLI/SDK `mcpConfigPath` consumers.
|
|
23
|
+
*/
|
|
24
|
+
export declare const lifecycleMcpStartupTimeoutOption: unique symbol;
|
|
16
25
|
export declare function attachLifecycleStartupCapability(api: object, capability: SdkStartupCapability): void;
|
|
17
26
|
export declare function lifecycleStartupCapabilityForApi(api: object): SdkStartupCapability | undefined;
|
|
18
27
|
export interface SdkStartupRollbackResult {
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type * as net from "node:net";
|
|
2
|
+
type AuthFailureCode = "auth_missing" | "auth_malformed" | "auth_invalid" | "auth_oversize" | "auth_timeout" | "unsupported_version";
|
|
3
|
+
export declare class AuthPrefaceError extends Error {
|
|
4
|
+
readonly code: AuthFailureCode;
|
|
5
|
+
constructor(code: AuthFailureCode);
|
|
6
|
+
}
|
|
7
|
+
/** Consumes the one-shot socket authentication preface and leaves later bytes readable. */
|
|
8
|
+
export declare function authenticatePreface(socket: net.Socket, token: string): Promise<Buffer>;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { DEFAULT_PENDING_CEILING_BYTES, MIN_PENDING_CEILING_BYTES, REQUEST_FRAME_BYTES, } from "./relay";
|
|
2
|
+
export { startSocketServe } from "./socket";
|
|
3
|
+
export { startStdioServe } from "./stdio";
|
|
4
|
+
export type ServeOptions = {
|
|
5
|
+
url: string;
|
|
6
|
+
token: string;
|
|
7
|
+
pendingCeilingBytes: number;
|
|
8
|
+
};
|
|
9
|
+
export type ServeHandle = {
|
|
10
|
+
close(): Promise<void>;
|
|
11
|
+
readonly done: Promise<void>;
|
|
12
|
+
};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { Readable, Writable } from "node:stream";
|
|
2
|
+
export declare const REQUEST_FRAME_BYTES: number;
|
|
3
|
+
export declare const DEFAULT_PENDING_CEILING_BYTES: number;
|
|
4
|
+
export declare const MIN_PENDING_CEILING_BYTES: number;
|
|
5
|
+
export type RelayDirection = "downstream->ws" | "ws->downstream";
|
|
6
|
+
export type TransportError = {
|
|
7
|
+
type: "transport_error";
|
|
8
|
+
code: "frame_oversize" | "pending_overflow" | "protocol_error";
|
|
9
|
+
direction?: RelayDirection;
|
|
10
|
+
};
|
|
11
|
+
export type RelayPair = {
|
|
12
|
+
close(): Promise<void>;
|
|
13
|
+
readonly done: Promise<void>;
|
|
14
|
+
};
|
|
15
|
+
export declare class RelayOpenAbortedError extends Error {
|
|
16
|
+
constructor();
|
|
17
|
+
}
|
|
18
|
+
export type RelayWebSocketEvent = {
|
|
19
|
+
data?: unknown;
|
|
20
|
+
};
|
|
21
|
+
export type RelayWebSocket = {
|
|
22
|
+
readonly bufferedAmount: number;
|
|
23
|
+
readonly readyState: number;
|
|
24
|
+
close(): void;
|
|
25
|
+
send(data: string): void;
|
|
26
|
+
addEventListener(type: string, listener: (event: RelayWebSocketEvent) => void, options?: {
|
|
27
|
+
once?: boolean;
|
|
28
|
+
}): void;
|
|
29
|
+
removeEventListener(type: string, listener: (event: RelayWebSocketEvent) => void): void;
|
|
30
|
+
};
|
|
31
|
+
export type RelayOptions = {
|
|
32
|
+
url: string;
|
|
33
|
+
token: string;
|
|
34
|
+
pendingCeilingBytes: number;
|
|
35
|
+
downstream: Readable;
|
|
36
|
+
downstreamSink: Writable;
|
|
37
|
+
initialDownstreamBytes?: Buffer;
|
|
38
|
+
onTransportError: (error: TransportError) => void;
|
|
39
|
+
webSocketFactory?: (url: string) => RelayWebSocket;
|
|
40
|
+
signal?: AbortSignal;
|
|
41
|
+
};
|
|
42
|
+
/** Starts a dedicated raw-WebSocket relay for exactly one downstream stream. */
|
|
43
|
+
export declare function startRelayPair(options: RelayOptions): Promise<RelayPair>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/** Resolves the pending ceiling with flag > env > default precedence; exported for tests. */
|
|
2
|
+
export declare function resolveServePendingCeiling(flagValue: string | undefined, envValue: string | undefined): number;
|
|
3
|
+
/** Attaches a stdio or Unix-socket relay to one live SDK session endpoint. */
|
|
4
|
+
export declare function runSdkServe(argv: string[]): Promise<void>;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ServeHandle, ServeOptions } from "./index";
|
|
2
|
+
import type { RelayOptions } from "./relay";
|
|
3
|
+
/** Serves authenticated SDK JSONL clients over a private Unix-domain socket. */
|
|
4
|
+
export declare function startSocketServe(options: ServeOptions & {
|
|
5
|
+
socketPath: string;
|
|
6
|
+
webSocketFactory?: RelayOptions["webSocketFactory"];
|
|
7
|
+
}): Promise<ServeHandle>;
|