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