@sayknow-cli/coding-agent 0.4.7 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (428) hide show
  1. package/CHANGELOG.md +97 -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
@@ -0,0 +1,42 @@
1
+ import type { AuthStorage } from "@sayknow-cli/ai/auth-storage";
2
+
3
+ /**
4
+ * Most recent OAuth validation outcome per provider, used only as an ordering
5
+ * hint so `/model` can rank a provider whose stored credentials failed
6
+ * validation below one that is healthy, without re-running validation itself.
7
+ *
8
+ * Entries are scoped to the `AuthStorage` that produced them and to its
9
+ * credential generation, so any login, logout, import, or deletion discards the
10
+ * stale result instead of overriding current auth state.
11
+ */
12
+ export type ProviderAuthHealth = "valid" | "invalid";
13
+
14
+ interface HealthEntry {
15
+ generation: number;
16
+ health: ProviderAuthHealth;
17
+ }
18
+
19
+ const healthByStorage = new WeakMap<AuthStorage, Map<string, HealthEntry>>();
20
+
21
+ export function recordProviderAuthHealth(
22
+ authStorage: AuthStorage,
23
+ providerId: string,
24
+ health: ProviderAuthHealth,
25
+ ): void {
26
+ let entries = healthByStorage.get(authStorage);
27
+ if (!entries) {
28
+ entries = new Map();
29
+ healthByStorage.set(authStorage, entries);
30
+ }
31
+ entries.set(providerId, { generation: authStorage.getGeneration(), health });
32
+ }
33
+
34
+ export function getProviderAuthHealth(authStorage: AuthStorage, providerId: string): ProviderAuthHealth | undefined {
35
+ const entry = healthByStorage.get(authStorage)?.get(providerId);
36
+ if (!entry || entry.generation !== authStorage.getGeneration()) return undefined;
37
+ return entry.health;
38
+ }
39
+
40
+ export function clearProviderAuthHealth(authStorage: AuthStorage): void {
41
+ healthByStorage.delete(authStorage);
42
+ }
@@ -0,0 +1,119 @@
1
+ /**
2
+ * Shared provider ordering used by every provider-facing selector (`/login`,
3
+ * `/model`, `/provider`).
4
+ *
5
+ * Providers the user already has come first, then a curated list of well-known
6
+ * providers, then everything else alphabetically. This is the single source of
7
+ * truth for that order — surfaces must not keep their own famous-provider list.
8
+ */
9
+
10
+ /**
11
+ * Auth/config state of a provider as seen by the calling surface.
12
+ *
13
+ * - `valid` — stored credentials that validated successfully.
14
+ * - `checking` — stored credentials whose async validation is still in flight.
15
+ * Ranked with `valid` so rows do not reflow when validation resolves.
16
+ * - `configured` — no OAuth record, but the provider is present in the model
17
+ * registry with a working API key (custom/API-compatible providers).
18
+ * - `invalid` — stored credentials that failed validation (problematic login).
19
+ * - `none` — nothing stored and nothing configured.
20
+ */
21
+ export type ProviderAuthState = "valid" | "checking" | "configured" | "invalid" | "none";
22
+
23
+ export const PROVIDER_RANK_TIER = {
24
+ existing: 0,
25
+ problematic: 1,
26
+ famous: 2,
27
+ other: 3,
28
+ } as const;
29
+
30
+ export type ProviderRankTier = (typeof PROVIDER_RANK_TIER)[keyof typeof PROVIDER_RANK_TIER];
31
+
32
+ /**
33
+ * Curated provider order for the famous tier. Regional and device variants sit
34
+ * immediately behind their primary so related entries stay grouped.
35
+ */
36
+ export const FAMOUS_PROVIDER_ORDER: readonly string[] = [
37
+ "openai-codex",
38
+ "openai-codex-device",
39
+ "anthropic",
40
+ "xai",
41
+ "opencode-go",
42
+ "zai",
43
+ "glm-zcode",
44
+ "alibaba-token-plan",
45
+ "qwen-portal",
46
+ "kimi-code",
47
+ "moonshot",
48
+ "minimax-code",
49
+ "minimax-code-cn",
50
+ "xiaomi",
51
+ "xiaomi-token-plan-sgp",
52
+ "xiaomi-token-plan-ams",
53
+ "xiaomi-token-plan-cn",
54
+ "opengateway",
55
+ "bizrouter",
56
+ "github-copilot",
57
+ "cursor",
58
+ ];
59
+
60
+ const FAMOUS_PROVIDER_INDEX = new Map(FAMOUS_PROVIDER_ORDER.map((id, index) => [id, index]));
61
+
62
+ /** A provider as ranked by a surface. `label` is what the user sees. */
63
+ export interface RankableProvider {
64
+ id: string;
65
+ label: string;
66
+ authState: ProviderAuthState;
67
+ }
68
+
69
+ /** A provider's position in the ordering: its tier plus its rank inside that tier. */
70
+ export interface ProviderRank {
71
+ tier: ProviderRankTier;
72
+ intraTierRank: number;
73
+ }
74
+
75
+ /**
76
+ * The single ranking result for a provider. `intraTierRank` is the curated
77
+ * famous-list position, or `Number.MAX_SAFE_INTEGER` for providers that are not
78
+ * on the list and therefore order by display label.
79
+ */
80
+ export function rankProvider(provider: RankableProvider): ProviderRank {
81
+ return {
82
+ tier: providerRankTier(provider.authState, provider.id),
83
+ intraTierRank: FAMOUS_PROVIDER_INDEX.get(provider.id) ?? Number.MAX_SAFE_INTEGER,
84
+ };
85
+ }
86
+
87
+ export function providerRankTier(authState: ProviderAuthState, id: string): ProviderRankTier {
88
+ if (authState === "valid" || authState === "checking" || authState === "configured") {
89
+ return PROVIDER_RANK_TIER.existing;
90
+ }
91
+ if (authState === "invalid") return PROVIDER_RANK_TIER.problematic;
92
+ return FAMOUS_PROVIDER_INDEX.has(id) ? PROVIDER_RANK_TIER.famous : PROVIDER_RANK_TIER.other;
93
+ }
94
+
95
+ /** Position within the famous list, or `undefined` for providers not on it. */
96
+ export function famousProviderIndex(id: string): number | undefined {
97
+ return FAMOUS_PROVIDER_INDEX.get(id);
98
+ }
99
+
100
+ /**
101
+ * Total order over providers: tier, then famous-list position, then display
102
+ * label, then id. The trailing id comparison guarantees no ties.
103
+ */
104
+ export function compareRankedProviders(left: RankableProvider, right: RankableProvider): number {
105
+ const leftRank = rankProvider(left);
106
+ const rightRank = rankProvider(right);
107
+ if (leftRank.tier !== rightRank.tier) return leftRank.tier - rightRank.tier;
108
+ if (leftRank.intraTierRank !== rightRank.intraTierRank) return leftRank.intraTierRank - rightRank.intraTierRank;
109
+
110
+ const label = left.label.localeCompare(right.label);
111
+ if (label !== 0) return label;
112
+
113
+ return left.id.localeCompare(right.id);
114
+ }
115
+
116
+ /** Convenience wrapper returning a new array in ranked order. */
117
+ export function sortRankedProviders<T extends RankableProvider>(providers: readonly T[]): T[] {
118
+ return [...providers].sort(compareRankedProviders);
119
+ }
@@ -313,7 +313,7 @@ export const SETTINGS_SCHEMA = {
313
313
  },
314
314
  "notifications.telegram.toolActivity.enabled": {
315
315
  type: "boolean",
316
- default: true,
316
+ default: false,
317
317
  ui: {
318
318
  tab: "notifications",
319
319
  label: "Telegram Tool Activity",
@@ -506,6 +506,16 @@ export const SETTINGS_SCHEMA = {
506
506
  default: 0.05,
507
507
  validate: (value: number) => Number.isFinite(value) && value > 0 && value <= 1,
508
508
  },
509
+ "skc.ralplan.maxIterations": {
510
+ type: "number",
511
+ default: 5,
512
+ validate: (value: number) => Number.isInteger(value) && value >= 1 && value <= 20,
513
+ },
514
+ "skc.ralplan.maxReviewPassesPerLane": {
515
+ type: "number",
516
+ default: 1,
517
+ validate: (value: number) => Number.isInteger(value) && value >= 1 && value <= 10,
518
+ },
509
519
 
510
520
  // ────────────────────────────────────────────────────────────────────────
511
521
  // Appearance
@@ -845,6 +855,15 @@ export const SETTINGS_SCHEMA = {
845
855
  type: "boolean",
846
856
  default: true,
847
857
  },
858
+ "statusLine.showActionHints": {
859
+ type: "boolean",
860
+ default: true,
861
+ ui: {
862
+ tab: "appearance",
863
+ label: "Status Line Action Hints",
864
+ description: "Show contextual keyboard shortcuts in the status line",
865
+ },
866
+ },
848
867
 
849
868
  "statusLine.leftSegments": { type: "array", default: [] as StatusLineSegmentId[] },
850
869
 
@@ -1261,7 +1280,8 @@ export const SETTINGS_SCHEMA = {
1261
1280
  ui: {
1262
1281
  tab: "interaction",
1263
1282
  label: "Mouse Support",
1264
- description: "Enable SGR mouse wheel scrolling and overlay row selection. Disabled in tmux and screen.",
1283
+ description:
1284
+ "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.",
1265
1285
  },
1266
1286
  },
1267
1287
  // Conversation flow
@@ -1360,6 +1380,16 @@ export const SETTINGS_SCHEMA = {
1360
1380
  description: "Suggest emojis from `:name:` shortcodes and expand text emoticons like `:D` or `:-)`",
1361
1381
  },
1362
1382
  },
1383
+ promptSuggestions: {
1384
+ type: "boolean",
1385
+ default: false,
1386
+ ui: {
1387
+ tab: "interaction",
1388
+ label: "Prompt Suggestions",
1389
+ description:
1390
+ "Predict your likely next prompt after each turn (smol-model call) and show it as ghost text; Tab accepts",
1391
+ },
1392
+ },
1363
1393
 
1364
1394
  "startup.quiet": {
1365
1395
  type: "boolean",
@@ -2055,7 +2085,8 @@ export const SETTINGS_SCHEMA = {
2055
2085
  ui: {
2056
2086
  tab: "editing",
2057
2087
  label: "Default Read Limit",
2058
- description: "Default number of lines returned when agent calls read without a limit",
2088
+ description:
2089
+ "Default collection/selection limit for read operations; bare local receipts use the separate 50-line / 10 KiB receipt budgets",
2059
2090
  options: [
2060
2091
  { value: "200", label: "200 lines" },
2061
2092
  { value: "300", label: "300 lines" },
@@ -2095,6 +2126,22 @@ export const SETTINGS_SCHEMA = {
2095
2126
  ],
2096
2127
  },
2097
2128
  },
2129
+ "read.truncation": {
2130
+ type: "enum",
2131
+ values: ["head", "last", "both"] as const,
2132
+ default: "last",
2133
+ ui: {
2134
+ tab: "editing",
2135
+ label: "Read Truncation",
2136
+ description:
2137
+ "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",
2138
+ options: [
2139
+ { value: "head", label: "Head", description: "Keep the first N lines" },
2140
+ { value: "last", label: "Last", description: "Keep the last N lines (default)" },
2141
+ { value: "both", label: "Both", description: "Keep the start and the end, elide the middle" },
2142
+ ],
2143
+ },
2144
+ },
2098
2145
  "read.summaryMaxBytes": {
2099
2146
  type: "number",
2100
2147
  default: 20,
@@ -2477,9 +2524,9 @@ export const SETTINGS_SCHEMA = {
2477
2524
  default: false,
2478
2525
  ui: {
2479
2526
  tab: "tools",
2480
- label: "Insane Search Fallback",
2527
+ label: "Insane Search Fallback (Compatibility)",
2481
2528
  description:
2482
- "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.",
2529
+ "Compatibility-only preference. Remote renderer fallback stays disabled because it cannot preserve validated per-hop network routing.",
2483
2530
  },
2484
2531
  },
2485
2532
 
@@ -2660,6 +2707,47 @@ export const SETTINGS_SCHEMA = {
2660
2707
  description: "How often the resource GC sweeps browser tabs and stale screenshot directories.",
2661
2708
  },
2662
2709
  },
2710
+ "memoryGuard.enabled": {
2711
+ type: "boolean",
2712
+ default: false,
2713
+ },
2714
+ "memoryGuard.checkIntervalMs": {
2715
+ type: "number",
2716
+ default: 30_000,
2717
+ validate: (value: number) => Number.isFinite(value) && value > 0,
2718
+ },
2719
+ "memoryGuard.gcThresholdPercent": {
2720
+ type: "number",
2721
+ default: 70,
2722
+ validate: (value: number) => Number.isFinite(value) && value >= 0 && value <= 100,
2723
+ },
2724
+ "memoryGuard.restartThresholdPercent": {
2725
+ type: "number",
2726
+ default: 85,
2727
+ validate: (value: number) => Number.isFinite(value) && value >= 0 && value <= 100,
2728
+ },
2729
+ "memoryGuard.restartThresholdWindowMs": {
2730
+ type: "number",
2731
+ default: 90_000,
2732
+ validate: (value: number) => Number.isFinite(value) && value > 0,
2733
+ },
2734
+ "memoryGuard.cooldownMs": {
2735
+ type: "number",
2736
+ default: 600_000,
2737
+ validate: (value: number) => Number.isFinite(value) && value >= 0,
2738
+ },
2739
+ "memoryGuard.parentReserveMb": {
2740
+ type: "number",
2741
+ default: 1024,
2742
+ validate: (value: number) =>
2743
+ Number.isFinite(value) && value >= 0 && value <= Number.MAX_SAFE_INTEGER / (1024 * 1024),
2744
+ },
2745
+ "memoryGuard.policyLimitMb": {
2746
+ type: "number",
2747
+ default: 0,
2748
+ validate: (value: number) =>
2749
+ Number.isFinite(value) && value >= 0 && value <= Number.MAX_SAFE_INTEGER / (1024 * 1024),
2750
+ },
2663
2751
 
2664
2752
  "computer.enabled": {
2665
2753
  type: "boolean",
@@ -3316,25 +3404,71 @@ export const SETTINGS_SCHEMA = {
3316
3404
  },
3317
3405
  "providers.image": {
3318
3406
  type: "enum",
3319
- values: ["auto", "openai", "gemini", "openrouter", "antigravity"] as const,
3407
+ values: ["auto", "openai", "gemini", "openrouter", "antigravity", "alibaba", "custom"] as const,
3320
3408
  default: "auto",
3321
3409
  ui: {
3322
3410
  tab: "providers",
3323
- label: "Image Provider",
3324
- description: "Provider for image generation tool",
3411
+ label: "Image Generation",
3412
+ description: "Provider and model for image generation tool",
3325
3413
  options: [
3326
3414
  {
3327
3415
  value: "auto",
3328
3416
  label: "Auto",
3329
- description: "Priority: GPT model image tool > Antigravity > OpenRouter > Gemini",
3417
+ description: "Priority: GPT model image tool > Antigravity > OpenRouter > Gemini > Alibaba",
3330
3418
  },
3331
- { value: "openai", label: "OpenAI", description: "Uses the active GPT Responses/Codex model" },
3419
+ { value: "openai", label: "OpenAI", description: "Uses gpt-image-2 via OpenAI Responses/Codex" },
3332
3420
  { value: "gemini", label: "Gemini", description: "Requires GEMINI_API_KEY" },
3333
3421
  { value: "openrouter", label: "OpenRouter", description: "Requires OPENROUTER_API_KEY" },
3334
3422
  { value: "antigravity", label: "Antigravity", description: "Requires login with google-antigravity" },
3423
+ {
3424
+ value: "alibaba",
3425
+ label: "Alibaba Bailian",
3426
+ description: "Requires ALIBABA_TOKEN_PLAN_API_KEY (wan2.7-image via Token Plan)",
3427
+ },
3428
+ {
3429
+ value: "custom",
3430
+ label: "Custom",
3431
+ description: "OpenAI-compatible endpoint (set providers.imageCustomUrl)",
3432
+ },
3335
3433
  ],
3336
3434
  },
3337
3435
  },
3436
+ "providers.imageModel": {
3437
+ type: "string",
3438
+ default: undefined,
3439
+ ui: {
3440
+ tab: "providers",
3441
+ label: "Image Model",
3442
+ description: "Override the default image generation model for the selected provider",
3443
+ },
3444
+ },
3445
+ "providers.imageCustomUrl": {
3446
+ type: "string",
3447
+ default: undefined,
3448
+ ui: {
3449
+ tab: "providers",
3450
+ label: "Image Custom URL",
3451
+ description: "Base URL for custom OpenAI-compatible image endpoint",
3452
+ },
3453
+ },
3454
+ "providers.imageCustomKey": {
3455
+ type: "string",
3456
+ default: undefined,
3457
+ ui: {
3458
+ tab: "providers",
3459
+ label: "Image Custom API Key",
3460
+ description: "API key for custom OpenAI-compatible image endpoint",
3461
+ },
3462
+ },
3463
+ "providers.imageCustomKeyEnv": {
3464
+ type: "string",
3465
+ default: undefined,
3466
+ ui: {
3467
+ tab: "providers",
3468
+ label: "Image Custom API Key Env",
3469
+ description: "Environment variable name holding the API key for custom image endpoint",
3470
+ },
3471
+ },
3338
3472
 
3339
3473
  "providers.kimiApiFormat": {
3340
3474
  type: "enum",
@@ -3943,6 +4077,7 @@ export interface StatusLineSettings {
3943
4077
  maxRows: number;
3944
4078
  showHookStatus: boolean;
3945
4079
  showSkillHud: boolean;
4080
+ showActionHints: boolean;
3946
4081
  leftSegments: StatusLineSegmentId[];
3947
4082
  rightSegments: StatusLineSegmentId[];
3948
4083
  segmentOptions: Record<string, unknown>;
@@ -3981,6 +4116,17 @@ export interface ShellMinimizerSettings {
3981
4116
  maxCaptureBytes: number;
3982
4117
  }
3983
4118
 
4119
+ export interface MemoryGuardSettings {
4120
+ enabled: boolean;
4121
+ checkIntervalMs: number;
4122
+ gcThresholdPercent: number;
4123
+ restartThresholdPercent: number;
4124
+ restartThresholdWindowMs: number;
4125
+ cooldownMs: number;
4126
+ parentReserveMb: number;
4127
+ policyLimitMb: number;
4128
+ }
4129
+
3984
4130
  export interface NotificationsSettings {
3985
4131
  enabled: boolean;
3986
4132
  telegram: {
@@ -4068,6 +4214,7 @@ export interface GroupTypeMap {
4068
4214
  statusLine: StatusLineSettings;
4069
4215
  thinkingBudgets: ThinkingBudgetsSettings;
4070
4216
  stt: SttSettings;
4217
+ memoryGuard: MemoryGuardSettings;
4071
4218
  modelRoles: Record<string, ModelSelectorValue>;
4072
4219
  modelTags: ModelTagsSettings;
4073
4220
  cycleOrder: string[];