@prestyj/cli 5.13.0 → 5.16.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 (1249) hide show
  1. package/README.md +7 -2
  2. package/assets/skills/clarify/SKILL.md +30 -0
  3. package/assets/skills/code-review/SKILL.md +30 -0
  4. package/assets/skills/root-cause/SKILL.md +36 -0
  5. package/assets/skills/shared-language/SKILL.md +30 -0
  6. package/assets/skills/tdd/SKILL.md +30 -0
  7. package/dist/app-sidecar.js +394 -67
  8. package/dist/app-sidecar.js.map +1 -1
  9. package/dist/chat-agents/research.d.ts +1 -1
  10. package/dist/chat-agents/research.d.ts.map +1 -1
  11. package/dist/chat-agents/research.js +1 -1
  12. package/dist/chat-agents/research.js.map +1 -1
  13. package/dist/cli/shared.d.ts.map +1 -1
  14. package/dist/cli/shared.js +2 -0
  15. package/dist/cli/shared.js.map +1 -1
  16. package/dist/cli.d.ts.map +1 -1
  17. package/dist/cli.js +10 -3
  18. package/dist/cli.js.map +1 -1
  19. package/dist/config.d.ts.map +1 -1
  20. package/dist/config.js +1 -0
  21. package/dist/config.js.map +1 -1
  22. package/dist/core/agent-session.d.ts +34 -7
  23. package/dist/core/agent-session.d.ts.map +1 -1
  24. package/dist/core/agent-session.js +168 -33
  25. package/dist/core/agent-session.js.map +1 -1
  26. package/dist/core/agents.d.ts +2 -3
  27. package/dist/core/agents.d.ts.map +1 -1
  28. package/dist/core/agents.js +2 -3
  29. package/dist/core/agents.js.map +1 -1
  30. package/dist/core/ask-user.d.ts +63 -0
  31. package/dist/core/ask-user.d.ts.map +1 -0
  32. package/dist/core/ask-user.js +40 -0
  33. package/dist/core/ask-user.js.map +1 -0
  34. package/dist/core/auth-providers.d.ts +6 -0
  35. package/dist/core/auth-providers.d.ts.map +1 -1
  36. package/dist/core/auth-providers.js +30 -24
  37. package/dist/core/auth-providers.js.map +1 -1
  38. package/dist/core/bundled-agents.d.ts.map +1 -1
  39. package/dist/core/bundled-agents.js +13 -4
  40. package/dist/core/bundled-agents.js.map +1 -1
  41. package/dist/core/context-limits.d.ts +35 -0
  42. package/dist/core/context-limits.d.ts.map +1 -0
  43. package/dist/core/context-limits.js +35 -0
  44. package/dist/core/context-limits.js.map +1 -0
  45. package/dist/core/env-delta.d.ts +27 -0
  46. package/dist/core/env-delta.d.ts.map +1 -0
  47. package/dist/core/env-delta.js +65 -0
  48. package/dist/core/env-delta.js.map +1 -0
  49. package/dist/core/event-bus.d.ts +6 -6
  50. package/dist/core/event-bus.d.ts.map +1 -1
  51. package/dist/core/event-bus.js.map +1 -1
  52. package/dist/core/goal-worker.js +1 -1
  53. package/dist/core/goal-worker.js.map +1 -1
  54. package/dist/core/hashline-edit-benchmark.d.ts +2 -0
  55. package/dist/core/hashline-edit-benchmark.d.ts.map +1 -1
  56. package/dist/core/hashline-edit-benchmark.js +5 -1
  57. package/dist/core/hashline-edit-benchmark.js.map +1 -1
  58. package/dist/core/lsp/edit-telemetry.d.ts +27 -0
  59. package/dist/core/lsp/edit-telemetry.d.ts.map +1 -0
  60. package/dist/core/lsp/edit-telemetry.js +50 -0
  61. package/dist/core/lsp/edit-telemetry.js.map +1 -0
  62. package/dist/core/lsp/manager.d.ts +24 -1
  63. package/dist/core/lsp/manager.d.ts.map +1 -1
  64. package/dist/core/lsp/manager.js +53 -2
  65. package/dist/core/lsp/manager.js.map +1 -1
  66. package/dist/core/mcp/client.js +1 -1
  67. package/dist/core/mcp/client.js.map +1 -1
  68. package/dist/core/mcp/content.d.ts +5 -0
  69. package/dist/core/mcp/content.d.ts.map +1 -1
  70. package/dist/core/mcp/content.js +20 -2
  71. package/dist/core/mcp/content.js.map +1 -1
  72. package/dist/core/mcp/defaults.d.ts +4 -2
  73. package/dist/core/mcp/defaults.d.ts.map +1 -1
  74. package/dist/core/mcp/defaults.js +10 -12
  75. package/dist/core/mcp/defaults.js.map +1 -1
  76. package/dist/core/mcp/deferred-catalog.d.ts +9 -0
  77. package/dist/core/mcp/deferred-catalog.d.ts.map +1 -1
  78. package/dist/core/mcp/deferred-catalog.js +15 -1
  79. package/dist/core/mcp/deferred-catalog.js.map +1 -1
  80. package/dist/core/mcp/elicitation-bridge.d.ts.map +1 -1
  81. package/dist/core/mcp/elicitation-bridge.js +12 -28
  82. package/dist/core/mcp/elicitation-bridge.js.map +1 -1
  83. package/dist/core/mcp/shared-pool.d.ts +2 -2
  84. package/dist/core/mcp/shared-pool.js +2 -2
  85. package/dist/core/nolan-prompt.d.ts +1 -1
  86. package/dist/core/nolan-prompt.js +16 -8
  87. package/dist/core/nolan-prompt.js.map +1 -1
  88. package/dist/core/parked-requests.d.ts +44 -0
  89. package/dist/core/parked-requests.d.ts.map +1 -0
  90. package/dist/core/parked-requests.js +34 -0
  91. package/dist/core/parked-requests.js.map +1 -0
  92. package/dist/core/platform-clis.d.ts +16 -0
  93. package/dist/core/platform-clis.d.ts.map +1 -0
  94. package/dist/core/platform-clis.js +299 -0
  95. package/dist/core/platform-clis.js.map +1 -0
  96. package/dist/core/process-manager.d.ts +11 -0
  97. package/dist/core/process-manager.d.ts.map +1 -1
  98. package/dist/core/process-manager.js +9 -2
  99. package/dist/core/process-manager.js.map +1 -1
  100. package/dist/core/prompt-commands.d.ts.map +1 -1
  101. package/dist/core/prompt-commands.js +75 -37
  102. package/dist/core/prompt-commands.js.map +1 -1
  103. package/dist/core/sandbox.d.ts +17 -1
  104. package/dist/core/sandbox.d.ts.map +1 -1
  105. package/dist/core/sandbox.js +140 -9
  106. package/dist/core/sandbox.js.map +1 -1
  107. package/dist/core/session-manager.d.ts +18 -1
  108. package/dist/core/session-manager.d.ts.map +1 -1
  109. package/dist/core/session-manager.js +62 -23
  110. package/dist/core/session-manager.js.map +1 -1
  111. package/dist/core/settings-manager.d.ts +12 -2
  112. package/dist/core/settings-manager.d.ts.map +1 -1
  113. package/dist/core/settings-manager.js +28 -0
  114. package/dist/core/settings-manager.js.map +1 -1
  115. package/dist/core/skills.d.ts +16 -1
  116. package/dist/core/skills.d.ts.map +1 -1
  117. package/dist/core/skills.js +37 -5
  118. package/dist/core/skills.js.map +1 -1
  119. package/dist/core/steroids.d.ts +59 -0
  120. package/dist/core/steroids.d.ts.map +1 -0
  121. package/dist/core/steroids.js +227 -0
  122. package/dist/core/steroids.js.map +1 -0
  123. package/dist/core/subagent-manager.d.ts +17 -0
  124. package/dist/core/subagent-manager.d.ts.map +1 -1
  125. package/dist/core/subagent-manager.js +92 -1
  126. package/dist/core/subagent-manager.js.map +1 -1
  127. package/dist/core/subagent-turn-record.d.ts +17 -0
  128. package/dist/core/subagent-turn-record.d.ts.map +1 -0
  129. package/dist/core/subagent-turn-record.js +82 -0
  130. package/dist/core/subagent-turn-record.js.map +1 -0
  131. package/dist/core/verification-gate.d.ts +81 -13
  132. package/dist/core/verification-gate.d.ts.map +1 -1
  133. package/dist/core/verification-gate.js +288 -30
  134. package/dist/core/verification-gate.js.map +1 -1
  135. package/dist/core/workspace-guard.d.ts +6 -0
  136. package/dist/core/workspace-guard.d.ts.map +1 -1
  137. package/dist/core/workspace-guard.js +58 -7
  138. package/dist/core/workspace-guard.js.map +1 -1
  139. package/dist/hf-pull.d.ts +102 -0
  140. package/dist/hf-pull.d.ts.map +1 -0
  141. package/dist/hf-pull.js +225 -0
  142. package/dist/hf-pull.js.map +1 -0
  143. package/dist/modes/json-mode.d.ts +2 -2
  144. package/dist/modes/json-mode.d.ts.map +1 -1
  145. package/dist/modes/json-mode.js +2 -8
  146. package/dist/modes/json-mode.js.map +1 -1
  147. package/dist/modes/subagent-worker-mode.d.ts.map +1 -1
  148. package/dist/modes/subagent-worker-mode.js +66 -18
  149. package/dist/modes/subagent-worker-mode.js.map +1 -1
  150. package/dist/system-prompt.d.ts +5 -2
  151. package/dist/system-prompt.d.ts.map +1 -1
  152. package/dist/system-prompt.js +90 -36
  153. package/dist/system-prompt.js.map +1 -1
  154. package/dist/tools/ask-user.d.ts +35 -0
  155. package/dist/tools/ask-user.d.ts.map +1 -0
  156. package/dist/tools/ask-user.js +157 -0
  157. package/dist/tools/ask-user.js.map +1 -0
  158. package/dist/tools/bash.d.ts.map +1 -1
  159. package/dist/tools/bash.js +6 -1
  160. package/dist/tools/bash.js.map +1 -1
  161. package/dist/tools/edit.d.ts +2 -1
  162. package/dist/tools/edit.d.ts.map +1 -1
  163. package/dist/tools/edit.js +21 -5
  164. package/dist/tools/edit.js.map +1 -1
  165. package/dist/tools/index.d.ts +9 -0
  166. package/dist/tools/index.d.ts.map +1 -1
  167. package/dist/tools/index.js +8 -2
  168. package/dist/tools/index.js.map +1 -1
  169. package/dist/tools/operations.d.ts +48 -0
  170. package/dist/tools/operations.d.ts.map +1 -1
  171. package/dist/tools/operations.js +92 -2
  172. package/dist/tools/operations.js.map +1 -1
  173. package/dist/tools/path-utils.d.ts +28 -1
  174. package/dist/tools/path-utils.d.ts.map +1 -1
  175. package/dist/tools/path-utils.js +44 -2
  176. package/dist/tools/path-utils.js.map +1 -1
  177. package/dist/tools/prompt-hints.d.ts.map +1 -1
  178. package/dist/tools/prompt-hints.js +7 -6
  179. package/dist/tools/prompt-hints.js.map +1 -1
  180. package/dist/tools/read.d.ts.map +1 -1
  181. package/dist/tools/read.js +35 -3
  182. package/dist/tools/read.js.map +1 -1
  183. package/dist/tools/skill.d.ts +3 -2
  184. package/dist/tools/skill.d.ts.map +1 -1
  185. package/dist/tools/skill.js +10 -7
  186. package/dist/tools/skill.js.map +1 -1
  187. package/dist/tools/steroids.d.ts +46 -0
  188. package/dist/tools/steroids.d.ts.map +1 -0
  189. package/dist/tools/steroids.js +233 -0
  190. package/dist/tools/steroids.js.map +1 -0
  191. package/dist/tools/subagent-shared.d.ts +1 -1
  192. package/dist/tools/subagent-shared.d.ts.map +1 -1
  193. package/dist/tools/subagent-shared.js +1 -4
  194. package/dist/tools/subagent-shared.js.map +1 -1
  195. package/dist/tools/subagent.js +1 -1
  196. package/dist/tools/subagent.js.map +1 -1
  197. package/dist/tools/tool-search.d.ts +2 -1
  198. package/dist/tools/tool-search.d.ts.map +1 -1
  199. package/dist/tools/tool-search.js +28 -3
  200. package/dist/tools/tool-search.js.map +1 -1
  201. package/dist/tools/tool-tiers.d.ts.map +1 -1
  202. package/dist/tools/tool-tiers.js +5 -0
  203. package/dist/tools/tool-tiers.js.map +1 -1
  204. package/dist/tools/web-fetch.d.ts +7 -0
  205. package/dist/tools/web-fetch.d.ts.map +1 -1
  206. package/dist/tools/web-fetch.js +308 -20
  207. package/dist/tools/web-fetch.js.map +1 -1
  208. package/dist/tools/write.d.ts +1 -1
  209. package/dist/tools/write.d.ts.map +1 -1
  210. package/dist/tools/write.js +1 -1
  211. package/dist/tools/write.js.map +1 -1
  212. package/dist/ui/App.d.ts.map +1 -1
  213. package/dist/ui/App.js +21 -31
  214. package/dist/ui/App.js.map +1 -1
  215. package/dist/ui/app-items.d.ts +3 -0
  216. package/dist/ui/app-items.d.ts.map +1 -1
  217. package/dist/ui/app-items.js +3 -0
  218. package/dist/ui/app-items.js.map +1 -1
  219. package/dist/ui/components/Footer.js +1 -1
  220. package/dist/ui/components/Footer.js.map +1 -1
  221. package/dist/ui/components/ModelSelector.d.ts.map +1 -1
  222. package/dist/ui/components/ModelSelector.js +1 -0
  223. package/dist/ui/components/ModelSelector.js.map +1 -1
  224. package/dist/ui/components/ToolExecution.d.ts.map +1 -1
  225. package/dist/ui/components/ToolExecution.js +10 -3
  226. package/dist/ui/components/ToolExecution.js.map +1 -1
  227. package/dist/ui/login.d.ts.map +1 -1
  228. package/dist/ui/login.js +5 -33
  229. package/dist/ui/login.js.map +1 -1
  230. package/dist/ui/prompt-routing.d.ts +2 -2
  231. package/dist/ui/prompt-routing.d.ts.map +1 -1
  232. package/dist/ui/prompt-routing.js +20 -8
  233. package/dist/ui/prompt-routing.js.map +1 -1
  234. package/dist/ui/submit-prompt-command.d.ts.map +1 -1
  235. package/dist/ui/submit-prompt-command.js +1 -1
  236. package/dist/ui/submit-prompt-command.js.map +1 -1
  237. package/dist/ui/terminal-history.js +4 -2
  238. package/dist/ui/terminal-history.js.map +1 -1
  239. package/dist/ui/tool-group-summary.d.ts +2 -0
  240. package/dist/ui/tool-group-summary.d.ts.map +1 -1
  241. package/dist/ui/tool-group-summary.js +11 -25
  242. package/dist/ui/tool-group-summary.js.map +1 -1
  243. package/dist/ui/tool-line-summary.d.ts.map +1 -1
  244. package/dist/ui/tool-line-summary.js +12 -9
  245. package/dist/ui/tool-line-summary.js.map +1 -1
  246. package/dist/ui/transcript/tool-presentation.d.ts.map +1 -1
  247. package/dist/ui/transcript/tool-presentation.js +2 -7
  248. package/dist/ui/transcript/tool-presentation.js.map +1 -1
  249. package/dist/ui/utils/text-utils.d.ts +0 -6
  250. package/dist/ui/utils/text-utils.d.ts.map +1 -1
  251. package/dist/ui/utils/text-utils.js +8 -3
  252. package/dist/ui/utils/text-utils.js.map +1 -1
  253. package/dist/utils/text.d.ts +41 -0
  254. package/dist/utils/text.d.ts.map +1 -1
  255. package/dist/utils/text.js +46 -0
  256. package/dist/utils/text.js.map +1 -1
  257. package/package.json +6 -7
  258. package/dist/app-sidecar-auth-broadcast.test.d.ts +0 -2
  259. package/dist/app-sidecar-auth-broadcast.test.d.ts.map +0 -1
  260. package/dist/app-sidecar-auth-broadcast.test.js +0 -383
  261. package/dist/app-sidecar-auth-broadcast.test.js.map +0 -1
  262. package/dist/app-sidecar-sessions.test.d.ts +0 -2
  263. package/dist/app-sidecar-sessions.test.d.ts.map +0 -1
  264. package/dist/app-sidecar-sessions.test.js +0 -178
  265. package/dist/app-sidecar-sessions.test.js.map +0 -1
  266. package/dist/chat-agents/general.test.d.ts +0 -2
  267. package/dist/chat-agents/general.test.d.ts.map +0 -1
  268. package/dist/chat-agents/general.test.js +0 -52
  269. package/dist/chat-agents/general.test.js.map +0 -1
  270. package/dist/chat-agents/jiwa.test.d.ts +0 -2
  271. package/dist/chat-agents/jiwa.test.d.ts.map +0 -1
  272. package/dist/chat-agents/jiwa.test.js +0 -66
  273. package/dist/chat-agents/jiwa.test.js.map +0 -1
  274. package/dist/chat-agents/memory.test.d.ts +0 -2
  275. package/dist/chat-agents/memory.test.d.ts.map +0 -1
  276. package/dist/chat-agents/memory.test.js +0 -165
  277. package/dist/chat-agents/memory.test.js.map +0 -1
  278. package/dist/chat-agents/specialists.test.d.ts +0 -2
  279. package/dist/chat-agents/specialists.test.d.ts.map +0 -1
  280. package/dist/chat-agents/specialists.test.js +0 -98
  281. package/dist/chat-agents/specialists.test.js.map +0 -1
  282. package/dist/cli/command-routing.test.d.ts +0 -2
  283. package/dist/cli/command-routing.test.d.ts.map +0 -1
  284. package/dist/cli/command-routing.test.js +0 -61
  285. package/dist/cli/command-routing.test.js.map +0 -1
  286. package/dist/config.test.d.ts +0 -2
  287. package/dist/config.test.d.ts.map +0 -1
  288. package/dist/config.test.js +0 -158
  289. package/dist/config.test.js.map +0 -1
  290. package/dist/core/agent-mcp-passthrough.test.d.ts +0 -2
  291. package/dist/core/agent-mcp-passthrough.test.d.ts.map +0 -1
  292. package/dist/core/agent-mcp-passthrough.test.js +0 -61
  293. package/dist/core/agent-mcp-passthrough.test.js.map +0 -1
  294. package/dist/core/agent-notifications.test.d.ts +0 -2
  295. package/dist/core/agent-notifications.test.d.ts.map +0 -1
  296. package/dist/core/agent-notifications.test.js +0 -97
  297. package/dist/core/agent-notifications.test.js.map +0 -1
  298. package/dist/core/agent-session-add-dir.test.d.ts +0 -2
  299. package/dist/core/agent-session-add-dir.test.d.ts.map +0 -1
  300. package/dist/core/agent-session-add-dir.test.js +0 -110
  301. package/dist/core/agent-session-add-dir.test.js.map +0 -1
  302. package/dist/core/agent-session-checkpoint-flush.test.d.ts +0 -2
  303. package/dist/core/agent-session-checkpoint-flush.test.d.ts.map +0 -1
  304. package/dist/core/agent-session-checkpoint-flush.test.js +0 -201
  305. package/dist/core/agent-session-checkpoint-flush.test.js.map +0 -1
  306. package/dist/core/agent-session-compaction.test.d.ts +0 -2
  307. package/dist/core/agent-session-compaction.test.d.ts.map +0 -1
  308. package/dist/core/agent-session-compaction.test.js +0 -1156
  309. package/dist/core/agent-session-compaction.test.js.map +0 -1
  310. package/dist/core/agent-session-crash-durability.test.d.ts +0 -2
  311. package/dist/core/agent-session-crash-durability.test.d.ts.map +0 -1
  312. package/dist/core/agent-session-crash-durability.test.js +0 -102
  313. package/dist/core/agent-session-crash-durability.test.js.map +0 -1
  314. package/dist/core/agent-session-marker-anchors.test.d.ts +0 -2
  315. package/dist/core/agent-session-marker-anchors.test.d.ts.map +0 -1
  316. package/dist/core/agent-session-marker-anchors.test.js +0 -326
  317. package/dist/core/agent-session-marker-anchors.test.js.map +0 -1
  318. package/dist/core/agent-session-memory-tail.test.d.ts +0 -2
  319. package/dist/core/agent-session-memory-tail.test.d.ts.map +0 -1
  320. package/dist/core/agent-session-memory-tail.test.js +0 -119
  321. package/dist/core/agent-session-memory-tail.test.js.map +0 -1
  322. package/dist/core/agent-session-model-switch.test.d.ts +0 -2
  323. package/dist/core/agent-session-model-switch.test.d.ts.map +0 -1
  324. package/dist/core/agent-session-model-switch.test.js +0 -161
  325. package/dist/core/agent-session-model-switch.test.js.map +0 -1
  326. package/dist/core/agent-session-notifications.test.d.ts +0 -2
  327. package/dist/core/agent-session-notifications.test.d.ts.map +0 -1
  328. package/dist/core/agent-session-notifications.test.js +0 -114
  329. package/dist/core/agent-session-notifications.test.js.map +0 -1
  330. package/dist/core/agent-session-process-gate.test.d.ts +0 -2
  331. package/dist/core/agent-session-process-gate.test.d.ts.map +0 -1
  332. package/dist/core/agent-session-process-gate.test.js +0 -98
  333. package/dist/core/agent-session-process-gate.test.js.map +0 -1
  334. package/dist/core/agent-session-queue.test.d.ts +0 -2
  335. package/dist/core/agent-session-queue.test.d.ts.map +0 -1
  336. package/dist/core/agent-session-queue.test.js +0 -184
  337. package/dist/core/agent-session-queue.test.js.map +0 -1
  338. package/dist/core/agent-session-review-coverage.test.d.ts +0 -2
  339. package/dist/core/agent-session-review-coverage.test.d.ts.map +0 -1
  340. package/dist/core/agent-session-review-coverage.test.js +0 -191
  341. package/dist/core/agent-session-review-coverage.test.js.map +0 -1
  342. package/dist/core/agent-session-slash-restore.test.d.ts +0 -2
  343. package/dist/core/agent-session-slash-restore.test.d.ts.map +0 -1
  344. package/dist/core/agent-session-slash-restore.test.js +0 -121
  345. package/dist/core/agent-session-slash-restore.test.js.map +0 -1
  346. package/dist/core/agent-session-subagent-policy.test.d.ts +0 -2
  347. package/dist/core/agent-session-subagent-policy.test.d.ts.map +0 -1
  348. package/dist/core/agent-session-subagent-policy.test.js +0 -40
  349. package/dist/core/agent-session-subagent-policy.test.js.map +0 -1
  350. package/dist/core/agent-session-tool-result-policy.test.d.ts +0 -2
  351. package/dist/core/agent-session-tool-result-policy.test.d.ts.map +0 -1
  352. package/dist/core/agent-session-tool-result-policy.test.js +0 -25
  353. package/dist/core/agent-session-tool-result-policy.test.js.map +0 -1
  354. package/dist/core/agent-session-tool-tiers.test.d.ts +0 -2
  355. package/dist/core/agent-session-tool-tiers.test.d.ts.map +0 -1
  356. package/dist/core/agent-session-tool-tiers.test.js +0 -138
  357. package/dist/core/agent-session-tool-tiers.test.js.map +0 -1
  358. package/dist/core/agent-session-verification-gate.test.d.ts +0 -2
  359. package/dist/core/agent-session-verification-gate.test.d.ts.map +0 -1
  360. package/dist/core/agent-session-verification-gate.test.js +0 -135
  361. package/dist/core/agent-session-verification-gate.test.js.map +0 -1
  362. package/dist/core/agent-tools-allowlist.test.d.ts +0 -2
  363. package/dist/core/agent-tools-allowlist.test.d.ts.map +0 -1
  364. package/dist/core/agent-tools-allowlist.test.js +0 -74
  365. package/dist/core/agent-tools-allowlist.test.js.map +0 -1
  366. package/dist/core/agents.test.d.ts +0 -2
  367. package/dist/core/agents.test.d.ts.map +0 -1
  368. package/dist/core/agents.test.js +0 -147
  369. package/dist/core/agents.test.js.map +0 -1
  370. package/dist/core/auto-update.test.d.ts +0 -2
  371. package/dist/core/auto-update.test.d.ts.map +0 -1
  372. package/dist/core/auto-update.test.js +0 -204
  373. package/dist/core/auto-update.test.js.map +0 -1
  374. package/dist/core/autopilot-cycle.test.d.ts +0 -2
  375. package/dist/core/autopilot-cycle.test.d.ts.map +0 -1
  376. package/dist/core/autopilot-cycle.test.js +0 -375
  377. package/dist/core/autopilot-cycle.test.js.map +0 -1
  378. package/dist/core/autopilot-gate.test.d.ts +0 -2
  379. package/dist/core/autopilot-gate.test.d.ts.map +0 -1
  380. package/dist/core/autopilot-gate.test.js +0 -298
  381. package/dist/core/autopilot-gate.test.js.map +0 -1
  382. package/dist/core/autopilot-verdict.test.d.ts +0 -2
  383. package/dist/core/autopilot-verdict.test.d.ts.map +0 -1
  384. package/dist/core/autopilot-verdict.test.js +0 -153
  385. package/dist/core/autopilot-verdict.test.js.map +0 -1
  386. package/dist/core/checkpoint-store.test.d.ts +0 -2
  387. package/dist/core/checkpoint-store.test.d.ts.map +0 -1
  388. package/dist/core/checkpoint-store.test.js +0 -111
  389. package/dist/core/checkpoint-store.test.js.map +0 -1
  390. package/dist/core/code-retrieval-chunkers.test.d.ts +0 -2
  391. package/dist/core/code-retrieval-chunkers.test.d.ts.map +0 -1
  392. package/dist/core/code-retrieval-chunkers.test.js +0 -203
  393. package/dist/core/code-retrieval-chunkers.test.js.map +0 -1
  394. package/dist/core/compaction/active-context.test.d.ts +0 -2
  395. package/dist/core/compaction/active-context.test.d.ts.map +0 -1
  396. package/dist/core/compaction/active-context.test.js +0 -57
  397. package/dist/core/compaction/active-context.test.js.map +0 -1
  398. package/dist/core/compaction/compactor.test.d.ts +0 -2
  399. package/dist/core/compaction/compactor.test.d.ts.map +0 -1
  400. package/dist/core/compaction/compactor.test.js +0 -1072
  401. package/dist/core/compaction/compactor.test.js.map +0 -1
  402. package/dist/core/compaction/policy.test.d.ts +0 -2
  403. package/dist/core/compaction/policy.test.d.ts.map +0 -1
  404. package/dist/core/compaction/policy.test.js +0 -35
  405. package/dist/core/compaction/policy.test.js.map +0 -1
  406. package/dist/core/compaction/query-aware-selector.test.d.ts +0 -2
  407. package/dist/core/compaction/query-aware-selector.test.d.ts.map +0 -1
  408. package/dist/core/compaction/query-aware-selector.test.js +0 -96
  409. package/dist/core/compaction/query-aware-selector.test.js.map +0 -1
  410. package/dist/core/compaction/token-estimator.test.d.ts +0 -2
  411. package/dist/core/compaction/token-estimator.test.d.ts.map +0 -1
  412. package/dist/core/compaction/token-estimator.test.js +0 -283
  413. package/dist/core/compaction/token-estimator.test.js.map +0 -1
  414. package/dist/core/compaction/tool-result-pruner.test.d.ts +0 -2
  415. package/dist/core/compaction/tool-result-pruner.test.d.ts.map +0 -1
  416. package/dist/core/compaction/tool-result-pruner.test.js +0 -320
  417. package/dist/core/compaction/tool-result-pruner.test.js.map +0 -1
  418. package/dist/core/continue-replay-inventory.test.d.ts +0 -2
  419. package/dist/core/continue-replay-inventory.test.d.ts.map +0 -1
  420. package/dist/core/continue-replay-inventory.test.js +0 -42
  421. package/dist/core/continue-replay-inventory.test.js.map +0 -1
  422. package/dist/core/encode-cwd.test.d.ts +0 -2
  423. package/dist/core/encode-cwd.test.d.ts.map +0 -1
  424. package/dist/core/encode-cwd.test.js +0 -80
  425. package/dist/core/encode-cwd.test.js.map +0 -1
  426. package/dist/core/event-bus.test.d.ts +0 -2
  427. package/dist/core/event-bus.test.d.ts.map +0 -1
  428. package/dist/core/event-bus.test.js +0 -33
  429. package/dist/core/event-bus.test.js.map +0 -1
  430. package/dist/core/extensions/plugin-bundles.test.d.ts +0 -2
  431. package/dist/core/extensions/plugin-bundles.test.d.ts.map +0 -1
  432. package/dist/core/extensions/plugin-bundles.test.js +0 -110
  433. package/dist/core/extensions/plugin-bundles.test.js.map +0 -1
  434. package/dist/core/foreign-session-import.test.d.ts +0 -2
  435. package/dist/core/foreign-session-import.test.d.ts.map +0 -1
  436. package/dist/core/foreign-session-import.test.js +0 -220
  437. package/dist/core/foreign-session-import.test.js.map +0 -1
  438. package/dist/core/goal-controller.test.d.ts +0 -2
  439. package/dist/core/goal-controller.test.d.ts.map +0 -1
  440. package/dist/core/goal-controller.test.js +0 -784
  441. package/dist/core/goal-controller.test.js.map +0 -1
  442. package/dist/core/goal-lifecycle-smoke.test.d.ts +0 -2
  443. package/dist/core/goal-lifecycle-smoke.test.d.ts.map +0 -1
  444. package/dist/core/goal-lifecycle-smoke.test.js +0 -248
  445. package/dist/core/goal-lifecycle-smoke.test.js.map +0 -1
  446. package/dist/core/goal-prerequisites.test.d.ts +0 -2
  447. package/dist/core/goal-prerequisites.test.d.ts.map +0 -1
  448. package/dist/core/goal-prerequisites.test.js +0 -118
  449. package/dist/core/goal-prerequisites.test.js.map +0 -1
  450. package/dist/core/goal-store.test.d.ts +0 -2
  451. package/dist/core/goal-store.test.d.ts.map +0 -1
  452. package/dist/core/goal-store.test.js +0 -398
  453. package/dist/core/goal-store.test.js.map +0 -1
  454. package/dist/core/goal-verifier.test.d.ts +0 -2
  455. package/dist/core/goal-verifier.test.d.ts.map +0 -1
  456. package/dist/core/goal-verifier.test.js +0 -131
  457. package/dist/core/goal-verifier.test.js.map +0 -1
  458. package/dist/core/goal-worker-dev-server-lifecycle.test.d.ts +0 -2
  459. package/dist/core/goal-worker-dev-server-lifecycle.test.d.ts.map +0 -1
  460. package/dist/core/goal-worker-dev-server-lifecycle.test.js +0 -68
  461. package/dist/core/goal-worker-dev-server-lifecycle.test.js.map +0 -1
  462. package/dist/core/goal-worker.test.d.ts +0 -2
  463. package/dist/core/goal-worker.test.d.ts.map +0 -1
  464. package/dist/core/goal-worker.test.js +0 -269
  465. package/dist/core/goal-worker.test.js.map +0 -1
  466. package/dist/core/hashline-edit-benchmark.test.d.ts +0 -2
  467. package/dist/core/hashline-edit-benchmark.test.d.ts.map +0 -1
  468. package/dist/core/hashline-edit-benchmark.test.js +0 -190
  469. package/dist/core/hashline-edit-benchmark.test.js.map +0 -1
  470. package/dist/core/ideal-review.test.d.ts +0 -2
  471. package/dist/core/ideal-review.test.d.ts.map +0 -1
  472. package/dist/core/ideal-review.test.js +0 -242
  473. package/dist/core/ideal-review.test.js.map +0 -1
  474. package/dist/core/input-normalization.test.d.ts +0 -2
  475. package/dist/core/input-normalization.test.d.ts.map +0 -1
  476. package/dist/core/input-normalization.test.js +0 -75
  477. package/dist/core/input-normalization.test.js.map +0 -1
  478. package/dist/core/json-mode-flag-parity.test.d.ts +0 -2
  479. package/dist/core/json-mode-flag-parity.test.d.ts.map +0 -1
  480. package/dist/core/json-mode-flag-parity.test.js +0 -66
  481. package/dist/core/json-mode-flag-parity.test.js.map +0 -1
  482. package/dist/core/language-detector.test.d.ts +0 -2
  483. package/dist/core/language-detector.test.d.ts.map +0 -1
  484. package/dist/core/language-detector.test.js +0 -109
  485. package/dist/core/language-detector.test.js.map +0 -1
  486. package/dist/core/local-endpoint-store.test.d.ts +0 -2
  487. package/dist/core/local-endpoint-store.test.d.ts.map +0 -1
  488. package/dist/core/local-endpoint-store.test.js +0 -131
  489. package/dist/core/local-endpoint-store.test.js.map +0 -1
  490. package/dist/core/loop-breaker.test.d.ts +0 -2
  491. package/dist/core/loop-breaker.test.d.ts.map +0 -1
  492. package/dist/core/loop-breaker.test.js +0 -238
  493. package/dist/core/loop-breaker.test.js.map +0 -1
  494. package/dist/core/lsp/client-navigation.test.d.ts +0 -2
  495. package/dist/core/lsp/client-navigation.test.d.ts.map +0 -1
  496. package/dist/core/lsp/client-navigation.test.js +0 -135
  497. package/dist/core/lsp/client-navigation.test.js.map +0 -1
  498. package/dist/core/lsp/format.test.d.ts +0 -2
  499. package/dist/core/lsp/format.test.d.ts.map +0 -1
  500. package/dist/core/lsp/format.test.js +0 -56
  501. package/dist/core/lsp/format.test.js.map +0 -1
  502. package/dist/core/lsp/integration.test.d.ts +0 -2
  503. package/dist/core/lsp/integration.test.d.ts.map +0 -1
  504. package/dist/core/lsp/integration.test.js +0 -60
  505. package/dist/core/lsp/integration.test.js.map +0 -1
  506. package/dist/core/lsp/jsonrpc.test.d.ts +0 -2
  507. package/dist/core/lsp/jsonrpc.test.d.ts.map +0 -1
  508. package/dist/core/lsp/jsonrpc.test.js +0 -127
  509. package/dist/core/lsp/jsonrpc.test.js.map +0 -1
  510. package/dist/core/lsp/manager-navigation.test.d.ts +0 -2
  511. package/dist/core/lsp/manager-navigation.test.d.ts.map +0 -1
  512. package/dist/core/lsp/manager-navigation.test.js +0 -121
  513. package/dist/core/lsp/manager-navigation.test.js.map +0 -1
  514. package/dist/core/lsp/manager.test.d.ts +0 -2
  515. package/dist/core/lsp/manager.test.d.ts.map +0 -1
  516. package/dist/core/lsp/manager.test.js +0 -220
  517. package/dist/core/lsp/manager.test.js.map +0 -1
  518. package/dist/core/lsp/pool.test.d.ts +0 -2
  519. package/dist/core/lsp/pool.test.d.ts.map +0 -1
  520. package/dist/core/lsp/pool.test.js +0 -286
  521. package/dist/core/lsp/pool.test.js.map +0 -1
  522. package/dist/core/lsp/servers.test.d.ts +0 -2
  523. package/dist/core/lsp/servers.test.d.ts.map +0 -1
  524. package/dist/core/lsp/servers.test.js +0 -67
  525. package/dist/core/lsp/servers.test.js.map +0 -1
  526. package/dist/core/lsp/uri.test.d.ts +0 -2
  527. package/dist/core/lsp/uri.test.d.ts.map +0 -1
  528. package/dist/core/lsp/uri.test.js +0 -56
  529. package/dist/core/lsp/uri.test.js.map +0 -1
  530. package/dist/core/lsp/windows.test.d.ts +0 -2
  531. package/dist/core/lsp/windows.test.d.ts.map +0 -1
  532. package/dist/core/lsp/windows.test.js +0 -239
  533. package/dist/core/lsp/windows.test.js.map +0 -1
  534. package/dist/core/mcp/catalog-cache.test.d.ts +0 -2
  535. package/dist/core/mcp/catalog-cache.test.d.ts.map +0 -1
  536. package/dist/core/mcp/catalog-cache.test.js +0 -99
  537. package/dist/core/mcp/catalog-cache.test.js.map +0 -1
  538. package/dist/core/mcp/client-session-recovery.test.d.ts +0 -2
  539. package/dist/core/mcp/client-session-recovery.test.d.ts.map +0 -1
  540. package/dist/core/mcp/client-session-recovery.test.js +0 -231
  541. package/dist/core/mcp/client-session-recovery.test.js.map +0 -1
  542. package/dist/core/mcp/content.test.d.ts +0 -2
  543. package/dist/core/mcp/content.test.d.ts.map +0 -1
  544. package/dist/core/mcp/content.test.js +0 -135
  545. package/dist/core/mcp/content.test.js.map +0 -1
  546. package/dist/core/mcp/defaults.test.d.ts +0 -2
  547. package/dist/core/mcp/defaults.test.d.ts.map +0 -1
  548. package/dist/core/mcp/defaults.test.js +0 -60
  549. package/dist/core/mcp/defaults.test.js.map +0 -1
  550. package/dist/core/mcp/elicitation.test.d.ts +0 -2
  551. package/dist/core/mcp/elicitation.test.d.ts.map +0 -1
  552. package/dist/core/mcp/elicitation.test.js +0 -158
  553. package/dist/core/mcp/elicitation.test.js.map +0 -1
  554. package/dist/core/mcp/legacy-negotiation.test.d.ts +0 -2
  555. package/dist/core/mcp/legacy-negotiation.test.d.ts.map +0 -1
  556. package/dist/core/mcp/legacy-negotiation.test.js +0 -80
  557. package/dist/core/mcp/legacy-negotiation.test.js.map +0 -1
  558. package/dist/core/mcp/loopback.test.d.ts +0 -2
  559. package/dist/core/mcp/loopback.test.d.ts.map +0 -1
  560. package/dist/core/mcp/loopback.test.js +0 -87
  561. package/dist/core/mcp/loopback.test.js.map +0 -1
  562. package/dist/core/mcp/oauth-store.test.d.ts +0 -2
  563. package/dist/core/mcp/oauth-store.test.d.ts.map +0 -1
  564. package/dist/core/mcp/oauth-store.test.js +0 -94
  565. package/dist/core/mcp/oauth-store.test.js.map +0 -1
  566. package/dist/core/mcp/parse-add-command.test.d.ts +0 -2
  567. package/dist/core/mcp/parse-add-command.test.d.ts.map +0 -1
  568. package/dist/core/mcp/parse-add-command.test.js +0 -81
  569. package/dist/core/mcp/parse-add-command.test.js.map +0 -1
  570. package/dist/core/mcp/resolve-stdio.test.d.ts +0 -2
  571. package/dist/core/mcp/resolve-stdio.test.d.ts.map +0 -1
  572. package/dist/core/mcp/resolve-stdio.test.js +0 -239
  573. package/dist/core/mcp/resolve-stdio.test.js.map +0 -1
  574. package/dist/core/mcp/session-elicitation-wiring.test.d.ts +0 -2
  575. package/dist/core/mcp/session-elicitation-wiring.test.d.ts.map +0 -1
  576. package/dist/core/mcp/session-elicitation-wiring.test.js +0 -138
  577. package/dist/core/mcp/session-elicitation-wiring.test.js.map +0 -1
  578. package/dist/core/mcp/shared-pool.test.d.ts +0 -2
  579. package/dist/core/mcp/shared-pool.test.d.ts.map +0 -1
  580. package/dist/core/mcp/shared-pool.test.js +0 -425
  581. package/dist/core/mcp/shared-pool.test.js.map +0 -1
  582. package/dist/core/mcp/store.test.d.ts +0 -2
  583. package/dist/core/mcp/store.test.d.ts.map +0 -1
  584. package/dist/core/mcp/store.test.js +0 -110
  585. package/dist/core/mcp/store.test.js.map +0 -1
  586. package/dist/core/mcp/when-connected.test.d.ts +0 -2
  587. package/dist/core/mcp/when-connected.test.d.ts.map +0 -1
  588. package/dist/core/mcp/when-connected.test.js +0 -46
  589. package/dist/core/mcp/when-connected.test.js.map +0 -1
  590. package/dist/core/message-images.test.d.ts +0 -2
  591. package/dist/core/message-images.test.d.ts.map +0 -1
  592. package/dist/core/message-images.test.js +0 -62
  593. package/dist/core/message-images.test.js.map +0 -1
  594. package/dist/core/network-guard.test.d.ts +0 -2
  595. package/dist/core/network-guard.test.d.ts.map +0 -1
  596. package/dist/core/network-guard.test.js +0 -72
  597. package/dist/core/network-guard.test.js.map +0 -1
  598. package/dist/core/nolan-context.test.d.ts +0 -2
  599. package/dist/core/nolan-context.test.d.ts.map +0 -1
  600. package/dist/core/nolan-context.test.js +0 -342
  601. package/dist/core/nolan-context.test.js.map +0 -1
  602. package/dist/core/nolan-model.test.d.ts +0 -2
  603. package/dist/core/nolan-model.test.d.ts.map +0 -1
  604. package/dist/core/nolan-model.test.js +0 -51
  605. package/dist/core/nolan-model.test.js.map +0 -1
  606. package/dist/core/nolan-prompt.test.d.ts +0 -2
  607. package/dist/core/nolan-prompt.test.d.ts.map +0 -1
  608. package/dist/core/nolan-prompt.test.js +0 -160
  609. package/dist/core/nolan-prompt.test.js.map +0 -1
  610. package/dist/core/persistent-shell.test.d.ts +0 -2
  611. package/dist/core/persistent-shell.test.d.ts.map +0 -1
  612. package/dist/core/persistent-shell.test.js +0 -84
  613. package/dist/core/persistent-shell.test.js.map +0 -1
  614. package/dist/core/pixel-fix.test.d.ts +0 -2
  615. package/dist/core/pixel-fix.test.d.ts.map +0 -1
  616. package/dist/core/pixel-fix.test.js +0 -310
  617. package/dist/core/pixel-fix.test.js.map +0 -1
  618. package/dist/core/pixel.test.d.ts +0 -2
  619. package/dist/core/pixel.test.d.ts.map +0 -1
  620. package/dist/core/pixel.test.js +0 -269
  621. package/dist/core/pixel.test.js.map +0 -1
  622. package/dist/core/process-gate.test.d.ts +0 -2
  623. package/dist/core/process-gate.test.d.ts.map +0 -1
  624. package/dist/core/process-gate.test.js +0 -87
  625. package/dist/core/process-gate.test.js.map +0 -1
  626. package/dist/core/process-manager-dev-server-repro.test.d.ts +0 -2
  627. package/dist/core/process-manager-dev-server-repro.test.d.ts.map +0 -1
  628. package/dist/core/process-manager-dev-server-repro.test.js +0 -225
  629. package/dist/core/process-manager-dev-server-repro.test.js.map +0 -1
  630. package/dist/core/process-manager-notifications.test.d.ts +0 -2
  631. package/dist/core/process-manager-notifications.test.d.ts.map +0 -1
  632. package/dist/core/process-manager-notifications.test.js +0 -227
  633. package/dist/core/process-manager-notifications.test.js.map +0 -1
  634. package/dist/core/process-manager-wake.test.d.ts +0 -2
  635. package/dist/core/process-manager-wake.test.d.ts.map +0 -1
  636. package/dist/core/process-manager-wake.test.js +0 -96
  637. package/dist/core/process-manager-wake.test.js.map +0 -1
  638. package/dist/core/progress/engine.test.d.ts +0 -2
  639. package/dist/core/progress/engine.test.d.ts.map +0 -1
  640. package/dist/core/progress/engine.test.js +0 -136
  641. package/dist/core/progress/engine.test.js.map +0 -1
  642. package/dist/core/progress/git-xp.test.d.ts +0 -2
  643. package/dist/core/progress/git-xp.test.d.ts.map +0 -1
  644. package/dist/core/progress/git-xp.test.js +0 -88
  645. package/dist/core/progress/git-xp.test.js.map +0 -1
  646. package/dist/core/progress/ranks.test.d.ts +0 -2
  647. package/dist/core/progress/ranks.test.d.ts.map +0 -1
  648. package/dist/core/progress/ranks.test.js +0 -100
  649. package/dist/core/progress/ranks.test.js.map +0 -1
  650. package/dist/core/progress/rebuild.test.d.ts +0 -2
  651. package/dist/core/progress/rebuild.test.d.ts.map +0 -1
  652. package/dist/core/progress/rebuild.test.js +0 -103
  653. package/dist/core/progress/rebuild.test.js.map +0 -1
  654. package/dist/core/progress/store.test.d.ts +0 -2
  655. package/dist/core/progress/store.test.d.ts.map +0 -1
  656. package/dist/core/progress/store.test.js +0 -108
  657. package/dist/core/progress/store.test.js.map +0 -1
  658. package/dist/core/project-discovery.test.d.ts +0 -2
  659. package/dist/core/project-discovery.test.d.ts.map +0 -1
  660. package/dist/core/project-discovery.test.js +0 -519
  661. package/dist/core/project-discovery.test.js.map +0 -1
  662. package/dist/core/prompt-commands.test.d.ts +0 -2
  663. package/dist/core/prompt-commands.test.d.ts.map +0 -1
  664. package/dist/core/prompt-commands.test.js +0 -175
  665. package/dist/core/prompt-commands.test.js.map +0 -1
  666. package/dist/core/provider-cache.e2e.test.d.ts +0 -2
  667. package/dist/core/provider-cache.e2e.test.d.ts.map +0 -1
  668. package/dist/core/provider-cache.e2e.test.js +0 -125
  669. package/dist/core/provider-cache.e2e.test.js.map +0 -1
  670. package/dist/core/radio.test.d.ts +0 -2
  671. package/dist/core/radio.test.d.ts.map +0 -1
  672. package/dist/core/radio.test.js +0 -117
  673. package/dist/core/radio.test.js.map +0 -1
  674. package/dist/core/regrounding.test.d.ts +0 -2
  675. package/dist/core/regrounding.test.d.ts.map +0 -1
  676. package/dist/core/regrounding.test.js +0 -38
  677. package/dist/core/regrounding.test.js.map +0 -1
  678. package/dist/core/resolve-start.test.d.ts +0 -2
  679. package/dist/core/resolve-start.test.d.ts.map +0 -1
  680. package/dist/core/resolve-start.test.js +0 -68
  681. package/dist/core/resolve-start.test.js.map +0 -1
  682. package/dist/core/run-claim.test.d.ts +0 -2
  683. package/dist/core/run-claim.test.d.ts.map +0 -1
  684. package/dist/core/run-claim.test.js +0 -107
  685. package/dist/core/run-claim.test.js.map +0 -1
  686. package/dist/core/run-journal.test.d.ts +0 -2
  687. package/dist/core/run-journal.test.d.ts.map +0 -1
  688. package/dist/core/run-journal.test.js +0 -195
  689. package/dist/core/run-journal.test.js.map +0 -1
  690. package/dist/core/run-lifecycle.test.d.ts +0 -2
  691. package/dist/core/run-lifecycle.test.d.ts.map +0 -1
  692. package/dist/core/run-lifecycle.test.js +0 -64
  693. package/dist/core/run-lifecycle.test.js.map +0 -1
  694. package/dist/core/sandbox-feedback.test.d.ts +0 -2
  695. package/dist/core/sandbox-feedback.test.d.ts.map +0 -1
  696. package/dist/core/sandbox-feedback.test.js +0 -32
  697. package/dist/core/sandbox-feedback.test.js.map +0 -1
  698. package/dist/core/sandbox.test.d.ts +0 -2
  699. package/dist/core/sandbox.test.d.ts.map +0 -1
  700. package/dist/core/sandbox.test.js +0 -157
  701. package/dist/core/sandbox.test.js.map +0 -1
  702. package/dist/core/semantic-search-benchmark.test.d.ts +0 -2
  703. package/dist/core/semantic-search-benchmark.test.d.ts.map +0 -1
  704. package/dist/core/semantic-search-benchmark.test.js +0 -89
  705. package/dist/core/semantic-search-benchmark.test.js.map +0 -1
  706. package/dist/core/session-compaction.test.d.ts +0 -2
  707. package/dist/core/session-compaction.test.d.ts.map +0 -1
  708. package/dist/core/session-compaction.test.js +0 -92
  709. package/dist/core/session-compaction.test.js.map +0 -1
  710. package/dist/core/session-export.test.d.ts +0 -2
  711. package/dist/core/session-export.test.d.ts.map +0 -1
  712. package/dist/core/session-export.test.js +0 -353
  713. package/dist/core/session-export.test.js.map +0 -1
  714. package/dist/core/session-history.test.d.ts +0 -2
  715. package/dist/core/session-history.test.d.ts.map +0 -1
  716. package/dist/core/session-history.test.js +0 -272
  717. package/dist/core/session-history.test.js.map +0 -1
  718. package/dist/core/session-injections.test.d.ts +0 -2
  719. package/dist/core/session-injections.test.d.ts.map +0 -1
  720. package/dist/core/session-injections.test.js +0 -117
  721. package/dist/core/session-injections.test.js.map +0 -1
  722. package/dist/core/session-manager.test.d.ts +0 -2
  723. package/dist/core/session-manager.test.d.ts.map +0 -1
  724. package/dist/core/session-manager.test.js +0 -573
  725. package/dist/core/session-manager.test.js.map +0 -1
  726. package/dist/core/session-notification-visibility.test.d.ts +0 -2
  727. package/dist/core/session-notification-visibility.test.d.ts.map +0 -1
  728. package/dist/core/session-notification-visibility.test.js +0 -113
  729. package/dist/core/session-notification-visibility.test.js.map +0 -1
  730. package/dist/core/session-reconstructability.test.d.ts +0 -2
  731. package/dist/core/session-reconstructability.test.d.ts.map +0 -1
  732. package/dist/core/session-reconstructability.test.js +0 -105
  733. package/dist/core/session-reconstructability.test.js.map +0 -1
  734. package/dist/core/session-restore-display.test.d.ts +0 -2
  735. package/dist/core/session-restore-display.test.d.ts.map +0 -1
  736. package/dist/core/session-restore-display.test.js +0 -103
  737. package/dist/core/session-restore-display.test.js.map +0 -1
  738. package/dist/core/session-storage-fd-leak.test.d.ts +0 -2
  739. package/dist/core/session-storage-fd-leak.test.d.ts.map +0 -1
  740. package/dist/core/session-storage-fd-leak.test.js +0 -116
  741. package/dist/core/session-storage-fd-leak.test.js.map +0 -1
  742. package/dist/core/session-storage.test.d.ts +0 -2
  743. package/dist/core/session-storage.test.d.ts.map +0 -1
  744. package/dist/core/session-storage.test.js +0 -277
  745. package/dist/core/session-storage.test.js.map +0 -1
  746. package/dist/core/setup-history.test.d.ts +0 -2
  747. package/dist/core/setup-history.test.d.ts.map +0 -1
  748. package/dist/core/setup-history.test.js +0 -59
  749. package/dist/core/setup-history.test.js.map +0 -1
  750. package/dist/core/shell.test.d.ts +0 -2
  751. package/dist/core/shell.test.d.ts.map +0 -1
  752. package/dist/core/shell.test.js +0 -87
  753. package/dist/core/shell.test.js.map +0 -1
  754. package/dist/core/shutdown.test.d.ts +0 -2
  755. package/dist/core/shutdown.test.d.ts.map +0 -1
  756. package/dist/core/shutdown.test.js +0 -160
  757. package/dist/core/shutdown.test.js.map +0 -1
  758. package/dist/core/sidecar-error-reporter.d.ts +0 -12
  759. package/dist/core/sidecar-error-reporter.d.ts.map +0 -1
  760. package/dist/core/sidecar-error-reporter.js +0 -57
  761. package/dist/core/sidecar-error-reporter.js.map +0 -1
  762. package/dist/core/sidecar-error-reporter.test.d.ts +0 -2
  763. package/dist/core/sidecar-error-reporter.test.d.ts.map +0 -1
  764. package/dist/core/sidecar-error-reporter.test.js +0 -61
  765. package/dist/core/sidecar-error-reporter.test.js.map +0 -1
  766. package/dist/core/skills-routing.test.d.ts +0 -2
  767. package/dist/core/skills-routing.test.d.ts.map +0 -1
  768. package/dist/core/skills-routing.test.js +0 -214
  769. package/dist/core/skills-routing.test.js.map +0 -1
  770. package/dist/core/slash-commands.test.d.ts +0 -2
  771. package/dist/core/slash-commands.test.d.ts.map +0 -1
  772. package/dist/core/slash-commands.test.js +0 -59
  773. package/dist/core/slash-commands.test.js.map +0 -1
  774. package/dist/core/source-maps.test.d.ts +0 -2
  775. package/dist/core/source-maps.test.d.ts.map +0 -1
  776. package/dist/core/source-maps.test.js +0 -175
  777. package/dist/core/source-maps.test.js.map +0 -1
  778. package/dist/core/speed-benchmark.test.d.ts +0 -2
  779. package/dist/core/speed-benchmark.test.d.ts.map +0 -1
  780. package/dist/core/speed-benchmark.test.js +0 -102
  781. package/dist/core/speed-benchmark.test.js.map +0 -1
  782. package/dist/core/subagent-manager.test.d.ts +0 -2
  783. package/dist/core/subagent-manager.test.d.ts.map +0 -1
  784. package/dist/core/subagent-manager.test.js +0 -375
  785. package/dist/core/subagent-manager.test.js.map +0 -1
  786. package/dist/core/subagent-store.test.d.ts +0 -2
  787. package/dist/core/subagent-store.test.d.ts.map +0 -1
  788. package/dist/core/subagent-store.test.js +0 -106
  789. package/dist/core/subagent-store.test.js.map +0 -1
  790. package/dist/core/verification-evidence.test.d.ts +0 -2
  791. package/dist/core/verification-evidence.test.d.ts.map +0 -1
  792. package/dist/core/verification-evidence.test.js +0 -103
  793. package/dist/core/verification-evidence.test.js.map +0 -1
  794. package/dist/core/verification-gate.test.d.ts +0 -2
  795. package/dist/core/verification-gate.test.d.ts.map +0 -1
  796. package/dist/core/verification-gate.test.js +0 -102
  797. package/dist/core/verification-gate.test.js.map +0 -1
  798. package/dist/core/verify-commands.test.d.ts +0 -2
  799. package/dist/core/verify-commands.test.d.ts.map +0 -1
  800. package/dist/core/verify-commands.test.js +0 -81
  801. package/dist/core/verify-commands.test.js.map +0 -1
  802. package/dist/core/workspace-guard.test.d.ts +0 -2
  803. package/dist/core/workspace-guard.test.d.ts.map +0 -1
  804. package/dist/core/workspace-guard.test.js +0 -107
  805. package/dist/core/workspace-guard.test.js.map +0 -1
  806. package/dist/modes/acp-mode.test.d.ts +0 -2
  807. package/dist/modes/acp-mode.test.d.ts.map +0 -1
  808. package/dist/modes/acp-mode.test.js +0 -1067
  809. package/dist/modes/acp-mode.test.js.map +0 -1
  810. package/dist/modes/json-mode.test.d.ts +0 -2
  811. package/dist/modes/json-mode.test.d.ts.map +0 -1
  812. package/dist/modes/json-mode.test.js +0 -84
  813. package/dist/modes/json-mode.test.js.map +0 -1
  814. package/dist/modes/subagent-worker-mode.test.d.ts +0 -2
  815. package/dist/modes/subagent-worker-mode.test.d.ts.map +0 -1
  816. package/dist/modes/subagent-worker-mode.test.js +0 -52
  817. package/dist/modes/subagent-worker-mode.test.js.map +0 -1
  818. package/dist/session.test.d.ts +0 -2
  819. package/dist/session.test.d.ts.map +0 -1
  820. package/dist/session.test.js +0 -35
  821. package/dist/session.test.js.map +0 -1
  822. package/dist/system-prompt.test.d.ts +0 -2
  823. package/dist/system-prompt.test.d.ts.map +0 -1
  824. package/dist/system-prompt.test.js +0 -616
  825. package/dist/system-prompt.test.js.map +0 -1
  826. package/dist/system-prompt.tiering.test.d.ts +0 -2
  827. package/dist/system-prompt.tiering.test.d.ts.map +0 -1
  828. package/dist/system-prompt.tiering.test.js +0 -108
  829. package/dist/system-prompt.tiering.test.js.map +0 -1
  830. package/dist/tools/bash.test.d.ts +0 -2
  831. package/dist/tools/bash.test.d.ts.map +0 -1
  832. package/dist/tools/bash.test.js +0 -241
  833. package/dist/tools/bash.test.js.map +0 -1
  834. package/dist/tools/checkpoint-hook.test.d.ts +0 -2
  835. package/dist/tools/checkpoint-hook.test.d.ts.map +0 -1
  836. package/dist/tools/checkpoint-hook.test.js +0 -65
  837. package/dist/tools/checkpoint-hook.test.js.map +0 -1
  838. package/dist/tools/code-nav.test.d.ts +0 -2
  839. package/dist/tools/code-nav.test.d.ts.map +0 -1
  840. package/dist/tools/code-nav.test.js +0 -136
  841. package/dist/tools/code-nav.test.js.map +0 -1
  842. package/dist/tools/code-skeleton.test.d.ts +0 -2
  843. package/dist/tools/code-skeleton.test.d.ts.map +0 -1
  844. package/dist/tools/code-skeleton.test.js +0 -115
  845. package/dist/tools/code-skeleton.test.js.map +0 -1
  846. package/dist/tools/compress-integration.test.d.ts +0 -2
  847. package/dist/tools/compress-integration.test.d.ts.map +0 -1
  848. package/dist/tools/compress-integration.test.js +0 -59
  849. package/dist/tools/compress-integration.test.js.map +0 -1
  850. package/dist/tools/compress.test.d.ts +0 -2
  851. package/dist/tools/compress.test.d.ts.map +0 -1
  852. package/dist/tools/compress.test.js +0 -60
  853. package/dist/tools/compress.test.js.map +0 -1
  854. package/dist/tools/edit-diff.test.d.ts +0 -2
  855. package/dist/tools/edit-diff.test.d.ts.map +0 -1
  856. package/dist/tools/edit-diff.test.js +0 -329
  857. package/dist/tools/edit-diff.test.js.map +0 -1
  858. package/dist/tools/edit-robustness.test.d.ts +0 -2
  859. package/dist/tools/edit-robustness.test.d.ts.map +0 -1
  860. package/dist/tools/edit-robustness.test.js +0 -417
  861. package/dist/tools/edit-robustness.test.js.map +0 -1
  862. package/dist/tools/edit.test.d.ts +0 -2
  863. package/dist/tools/edit.test.d.ts.map +0 -1
  864. package/dist/tools/edit.test.js +0 -984
  865. package/dist/tools/edit.test.js.map +0 -1
  866. package/dist/tools/exit-plan.test.d.ts +0 -2
  867. package/dist/tools/exit-plan.test.d.ts.map +0 -1
  868. package/dist/tools/exit-plan.test.js +0 -72
  869. package/dist/tools/exit-plan.test.js.map +0 -1
  870. package/dist/tools/generate-image.test.d.ts +0 -2
  871. package/dist/tools/generate-image.test.d.ts.map +0 -1
  872. package/dist/tools/generate-image.test.js +0 -240
  873. package/dist/tools/generate-image.test.js.map +0 -1
  874. package/dist/tools/goal-mode.test.d.ts +0 -2
  875. package/dist/tools/goal-mode.test.d.ts.map +0 -1
  876. package/dist/tools/goal-mode.test.js +0 -121
  877. package/dist/tools/goal-mode.test.js.map +0 -1
  878. package/dist/tools/goals.test.d.ts +0 -2
  879. package/dist/tools/goals.test.d.ts.map +0 -1
  880. package/dist/tools/goals.test.js +0 -795
  881. package/dist/tools/goals.test.js.map +0 -1
  882. package/dist/tools/grep-parity.test.d.ts +0 -2
  883. package/dist/tools/grep-parity.test.d.ts.map +0 -1
  884. package/dist/tools/grep-parity.test.js +0 -92
  885. package/dist/tools/grep-parity.test.js.map +0 -1
  886. package/dist/tools/grep-recall.test.d.ts +0 -2
  887. package/dist/tools/grep-recall.test.d.ts.map +0 -1
  888. package/dist/tools/grep-recall.test.js +0 -114
  889. package/dist/tools/grep-recall.test.js.map +0 -1
  890. package/dist/tools/grep-spawn.test.d.ts +0 -2
  891. package/dist/tools/grep-spawn.test.d.ts.map +0 -1
  892. package/dist/tools/grep-spawn.test.js +0 -66
  893. package/dist/tools/grep-spawn.test.js.map +0 -1
  894. package/dist/tools/grep.test.d.ts +0 -2
  895. package/dist/tools/grep.test.d.ts.map +0 -1
  896. package/dist/tools/grep.test.js +0 -82
  897. package/dist/tools/grep.test.js.map +0 -1
  898. package/dist/tools/html-extract.test.d.ts +0 -2
  899. package/dist/tools/html-extract.test.d.ts.map +0 -1
  900. package/dist/tools/html-extract.test.js +0 -60
  901. package/dist/tools/html-extract.test.js.map +0 -1
  902. package/dist/tools/index.test.d.ts +0 -2
  903. package/dist/tools/index.test.d.ts.map +0 -1
  904. package/dist/tools/index.test.js +0 -55
  905. package/dist/tools/index.test.js.map +0 -1
  906. package/dist/tools/overflow.test.d.ts +0 -2
  907. package/dist/tools/overflow.test.d.ts.map +0 -1
  908. package/dist/tools/overflow.test.js +0 -59
  909. package/dist/tools/overflow.test.js.map +0 -1
  910. package/dist/tools/path-utils.test.d.ts +0 -2
  911. package/dist/tools/path-utils.test.d.ts.map +0 -1
  912. package/dist/tools/path-utils.test.js +0 -54
  913. package/dist/tools/path-utils.test.js.map +0 -1
  914. package/dist/tools/pdf-extract.test.d.ts +0 -2
  915. package/dist/tools/pdf-extract.test.d.ts.map +0 -1
  916. package/dist/tools/pdf-extract.test.js +0 -15
  917. package/dist/tools/pdf-extract.test.js.map +0 -1
  918. package/dist/tools/plan-mode.test.d.ts +0 -2
  919. package/dist/tools/plan-mode.test.d.ts.map +0 -1
  920. package/dist/tools/plan-mode.test.js +0 -116
  921. package/dist/tools/plan-mode.test.js.map +0 -1
  922. package/dist/tools/read-only-bash.test.d.ts +0 -2
  923. package/dist/tools/read-only-bash.test.d.ts.map +0 -1
  924. package/dist/tools/read-only-bash.test.js +0 -96
  925. package/dist/tools/read-only-bash.test.js.map +0 -1
  926. package/dist/tools/read.test.d.ts +0 -2
  927. package/dist/tools/read.test.d.ts.map +0 -1
  928. package/dist/tools/read.test.js +0 -146
  929. package/dist/tools/read.test.js.map +0 -1
  930. package/dist/tools/screenshot.test.d.ts +0 -2
  931. package/dist/tools/screenshot.test.d.ts.map +0 -1
  932. package/dist/tools/screenshot.test.js +0 -145
  933. package/dist/tools/screenshot.test.js.map +0 -1
  934. package/dist/tools/search-code.test.d.ts +0 -2
  935. package/dist/tools/search-code.test.d.ts.map +0 -1
  936. package/dist/tools/search-code.test.js +0 -83
  937. package/dist/tools/search-code.test.js.map +0 -1
  938. package/dist/tools/source-path.test.d.ts +0 -2
  939. package/dist/tools/source-path.test.d.ts.map +0 -1
  940. package/dist/tools/source-path.test.js +0 -80
  941. package/dist/tools/source-path.test.js.map +0 -1
  942. package/dist/tools/subagent-control.test.d.ts +0 -2
  943. package/dist/tools/subagent-control.test.d.ts.map +0 -1
  944. package/dist/tools/subagent-control.test.js +0 -73
  945. package/dist/tools/subagent-control.test.js.map +0 -1
  946. package/dist/tools/subagent-shared.test.d.ts +0 -2
  947. package/dist/tools/subagent-shared.test.d.ts.map +0 -1
  948. package/dist/tools/subagent-shared.test.js +0 -83
  949. package/dist/tools/subagent-shared.test.js.map +0 -1
  950. package/dist/tools/subagent.test.d.ts +0 -2
  951. package/dist/tools/subagent.test.d.ts.map +0 -1
  952. package/dist/tools/subagent.test.js +0 -180
  953. package/dist/tools/subagent.test.js.map +0 -1
  954. package/dist/tools/task-send.test.d.ts +0 -2
  955. package/dist/tools/task-send.test.d.ts.map +0 -1
  956. package/dist/tools/task-send.test.js +0 -104
  957. package/dist/tools/task-send.test.js.map +0 -1
  958. package/dist/tools/tasks.test.d.ts +0 -2
  959. package/dist/tools/tasks.test.d.ts.map +0 -1
  960. package/dist/tools/tasks.test.js +0 -62
  961. package/dist/tools/tasks.test.js.map +0 -1
  962. package/dist/tools/tool-catalog.test.d.ts +0 -2
  963. package/dist/tools/tool-catalog.test.d.ts.map +0 -1
  964. package/dist/tools/tool-catalog.test.js +0 -124
  965. package/dist/tools/tool-catalog.test.js.map +0 -1
  966. package/dist/tools/tool-search.test.d.ts +0 -2
  967. package/dist/tools/tool-search.test.d.ts.map +0 -1
  968. package/dist/tools/tool-search.test.js +0 -69
  969. package/dist/tools/tool-search.test.js.map +0 -1
  970. package/dist/tools/tool-tiers.test.d.ts +0 -2
  971. package/dist/tools/tool-tiers.test.d.ts.map +0 -1
  972. package/dist/tools/tool-tiers.test.js +0 -48
  973. package/dist/tools/tool-tiers.test.js.map +0 -1
  974. package/dist/tools/truncate-utils.test.d.ts +0 -2
  975. package/dist/tools/truncate-utils.test.d.ts.map +0 -1
  976. package/dist/tools/truncate-utils.test.js +0 -93
  977. package/dist/tools/truncate-utils.test.js.map +0 -1
  978. package/dist/tools/truncate.test.d.ts +0 -2
  979. package/dist/tools/truncate.test.d.ts.map +0 -1
  980. package/dist/tools/truncate.test.js +0 -100
  981. package/dist/tools/truncate.test.js.map +0 -1
  982. package/dist/tools/web-fetch.test.d.ts +0 -2
  983. package/dist/tools/web-fetch.test.d.ts.map +0 -1
  984. package/dist/tools/web-fetch.test.js +0 -539
  985. package/dist/tools/web-fetch.test.js.map +0 -1
  986. package/dist/tools/web-search.test.d.ts +0 -2
  987. package/dist/tools/web-search.test.d.ts.map +0 -1
  988. package/dist/tools/web-search.test.js +0 -333
  989. package/dist/tools/web-search.test.js.map +0 -1
  990. package/dist/tools/write.test.d.ts +0 -2
  991. package/dist/tools/write.test.d.ts.map +0 -1
  992. package/dist/tools/write.test.js +0 -176
  993. package/dist/tools/write.test.js.map +0 -1
  994. package/dist/ui/anchor-pad-reclaim.test.d.ts +0 -2
  995. package/dist/ui/anchor-pad-reclaim.test.d.ts.map +0 -1
  996. package/dist/ui/anchor-pad-reclaim.test.js +0 -146
  997. package/dist/ui/anchor-pad-reclaim.test.js.map +0 -1
  998. package/dist/ui/app-items.test.d.ts +0 -2
  999. package/dist/ui/app-items.test.d.ts.map +0 -1
  1000. package/dist/ui/app-items.test.js +0 -54
  1001. package/dist/ui/app-items.test.js.map +0 -1
  1002. package/dist/ui/app-state-persistence.test.d.ts +0 -2
  1003. package/dist/ui/app-state-persistence.test.d.ts.map +0 -1
  1004. package/dist/ui/app-state-persistence.test.js +0 -71
  1005. package/dist/ui/app-state-persistence.test.js.map +0 -1
  1006. package/dist/ui/assistant-stream-flush-parity.test.d.ts +0 -2
  1007. package/dist/ui/assistant-stream-flush-parity.test.d.ts.map +0 -1
  1008. package/dist/ui/assistant-stream-flush-parity.test.js +0 -85
  1009. package/dist/ui/assistant-stream-flush-parity.test.js.map +0 -1
  1010. package/dist/ui/atomic-flush-regression.test.d.ts +0 -2
  1011. package/dist/ui/atomic-flush-regression.test.d.ts.map +0 -1
  1012. package/dist/ui/atomic-flush-regression.test.js +0 -218
  1013. package/dist/ui/atomic-flush-regression.test.js.map +0 -1
  1014. package/dist/ui/chat-layout-pinning.test.d.ts +0 -2
  1015. package/dist/ui/chat-layout-pinning.test.d.ts.map +0 -1
  1016. package/dist/ui/chat-layout-pinning.test.js +0 -525
  1017. package/dist/ui/chat-layout-pinning.test.js.map +0 -1
  1018. package/dist/ui/components/ActivityIndicator.test.d.ts +0 -2
  1019. package/dist/ui/components/ActivityIndicator.test.d.ts.map +0 -1
  1020. package/dist/ui/components/ActivityIndicator.test.js +0 -40
  1021. package/dist/ui/components/ActivityIndicator.test.js.map +0 -1
  1022. package/dist/ui/components/AssistantMessage.test.d.ts +0 -2
  1023. package/dist/ui/components/AssistantMessage.test.d.ts.map +0 -1
  1024. package/dist/ui/components/AssistantMessage.test.js +0 -418
  1025. package/dist/ui/components/AssistantMessage.test.js.map +0 -1
  1026. package/dist/ui/components/Footer.test.d.ts +0 -2
  1027. package/dist/ui/components/Footer.test.d.ts.map +0 -1
  1028. package/dist/ui/components/Footer.test.js +0 -16
  1029. package/dist/ui/components/Footer.test.js.map +0 -1
  1030. package/dist/ui/components/InputArea.test.d.ts +0 -2
  1031. package/dist/ui/components/InputArea.test.d.ts.map +0 -1
  1032. package/dist/ui/components/InputArea.test.js +0 -95
  1033. package/dist/ui/components/InputArea.test.js.map +0 -1
  1034. package/dist/ui/components/PlanOverlay.test.d.ts +0 -2
  1035. package/dist/ui/components/PlanOverlay.test.d.ts.map +0 -1
  1036. package/dist/ui/components/PlanOverlay.test.js +0 -24
  1037. package/dist/ui/components/PlanOverlay.test.js.map +0 -1
  1038. package/dist/ui/components/StreamingArea.test.d.ts +0 -2
  1039. package/dist/ui/components/StreamingArea.test.d.ts.map +0 -1
  1040. package/dist/ui/components/StreamingArea.test.js +0 -18
  1041. package/dist/ui/components/StreamingArea.test.js.map +0 -1
  1042. package/dist/ui/components/UserMessage.test.d.ts +0 -2
  1043. package/dist/ui/components/UserMessage.test.d.ts.map +0 -1
  1044. package/dist/ui/components/UserMessage.test.js +0 -39
  1045. package/dist/ui/components/UserMessage.test.js.map +0 -1
  1046. package/dist/ui/components/themed-output.test.d.ts +0 -2
  1047. package/dist/ui/components/themed-output.test.d.ts.map +0 -1
  1048. package/dist/ui/components/themed-output.test.js +0 -111
  1049. package/dist/ui/components/themed-output.test.js.map +0 -1
  1050. package/dist/ui/footer-jump-regression.test.d.ts +0 -2
  1051. package/dist/ui/footer-jump-regression.test.d.ts.map +0 -1
  1052. package/dist/ui/footer-jump-regression.test.js +0 -224
  1053. package/dist/ui/footer-jump-regression.test.js.map +0 -1
  1054. package/dist/ui/footer-status-layout.test.d.ts +0 -2
  1055. package/dist/ui/footer-status-layout.test.d.ts.map +0 -1
  1056. package/dist/ui/footer-status-layout.test.js +0 -71
  1057. package/dist/ui/footer-status-layout.test.js.map +0 -1
  1058. package/dist/ui/frame-clip-regression.test.d.ts +0 -2
  1059. package/dist/ui/frame-clip-regression.test.d.ts.map +0 -1
  1060. package/dist/ui/frame-clip-regression.test.js +0 -215
  1061. package/dist/ui/frame-clip-regression.test.js.map +0 -1
  1062. package/dist/ui/goal-events.test.d.ts +0 -2
  1063. package/dist/ui/goal-events.test.d.ts.map +0 -1
  1064. package/dist/ui/goal-events.test.js +0 -350
  1065. package/dist/ui/goal-events.test.js.map +0 -1
  1066. package/dist/ui/goal-lifecycle-orchestration.test.d.ts +0 -2
  1067. package/dist/ui/goal-lifecycle-orchestration.test.d.ts.map +0 -1
  1068. package/dist/ui/goal-lifecycle-orchestration.test.js +0 -512
  1069. package/dist/ui/goal-lifecycle-orchestration.test.js.map +0 -1
  1070. package/dist/ui/goal-overlay.test.d.ts +0 -2
  1071. package/dist/ui/goal-overlay.test.d.ts.map +0 -1
  1072. package/dist/ui/goal-overlay.test.js +0 -384
  1073. package/dist/ui/goal-overlay.test.js.map +0 -1
  1074. package/dist/ui/goal-status-bar.test.d.ts +0 -2
  1075. package/dist/ui/goal-status-bar.test.d.ts.map +0 -1
  1076. package/dist/ui/goal-status-bar.test.js +0 -172
  1077. package/dist/ui/goal-status-bar.test.js.map +0 -1
  1078. package/dist/ui/hooks/stall-retry-duplicate.test.d.ts +0 -2
  1079. package/dist/ui/hooks/stall-retry-duplicate.test.d.ts.map +0 -1
  1080. package/dist/ui/hooks/stall-retry-duplicate.test.js +0 -94
  1081. package/dist/ui/hooks/stall-retry-duplicate.test.js.map +0 -1
  1082. package/dist/ui/hooks/useAgentLoop.test.d.ts +0 -2
  1083. package/dist/ui/hooks/useAgentLoop.test.d.ts.map +0 -1
  1084. package/dist/ui/hooks/useAgentLoop.test.js +0 -66
  1085. package/dist/ui/hooks/useAgentLoop.test.js.map +0 -1
  1086. package/dist/ui/hooks/useContextCompaction.test.d.ts +0 -2
  1087. package/dist/ui/hooks/useContextCompaction.test.d.ts.map +0 -1
  1088. package/dist/ui/hooks/useContextCompaction.test.js +0 -135
  1089. package/dist/ui/hooks/useContextCompaction.test.js.map +0 -1
  1090. package/dist/ui/hooks/useTranscriptHistory.sessionstore.test.d.ts +0 -2
  1091. package/dist/ui/hooks/useTranscriptHistory.sessionstore.test.d.ts.map +0 -1
  1092. package/dist/ui/hooks/useTranscriptHistory.sessionstore.test.js +0 -81
  1093. package/dist/ui/hooks/useTranscriptHistory.sessionstore.test.js.map +0 -1
  1094. package/dist/ui/hooks/useTranscriptHistory.test.d.ts +0 -2
  1095. package/dist/ui/hooks/useTranscriptHistory.test.d.ts.map +0 -1
  1096. package/dist/ui/hooks/useTranscriptHistory.test.js +0 -61
  1097. package/dist/ui/hooks/useTranscriptHistory.test.js.map +0 -1
  1098. package/dist/ui/hooks/useTranscriptScroll.test.d.ts +0 -2
  1099. package/dist/ui/hooks/useTranscriptScroll.test.d.ts.map +0 -1
  1100. package/dist/ui/hooks/useTranscriptScroll.test.js +0 -119
  1101. package/dist/ui/hooks/useTranscriptScroll.test.js.map +0 -1
  1102. package/dist/ui/live-area-clamp.test.d.ts +0 -2
  1103. package/dist/ui/live-area-clamp.test.d.ts.map +0 -1
  1104. package/dist/ui/live-area-clamp.test.js +0 -125
  1105. package/dist/ui/live-area-clamp.test.js.map +0 -1
  1106. package/dist/ui/live-area-height.test.d.ts +0 -2
  1107. package/dist/ui/live-area-height.test.d.ts.map +0 -1
  1108. package/dist/ui/live-area-height.test.js +0 -76
  1109. package/dist/ui/live-area-height.test.js.map +0 -1
  1110. package/dist/ui/live-frame-height.test.d.ts +0 -2
  1111. package/dist/ui/live-frame-height.test.d.ts.map +0 -1
  1112. package/dist/ui/live-frame-height.test.js +0 -116
  1113. package/dist/ui/live-frame-height.test.js.map +0 -1
  1114. package/dist/ui/live-item-flush.test.d.ts +0 -2
  1115. package/dist/ui/live-item-flush.test.d.ts.map +0 -1
  1116. package/dist/ui/live-item-flush.test.js +0 -437
  1117. package/dist/ui/live-item-flush.test.js.map +0 -1
  1118. package/dist/ui/long-prompt-regression-harness.test.d.ts +0 -2
  1119. package/dist/ui/long-prompt-regression-harness.test.d.ts.map +0 -1
  1120. package/dist/ui/long-prompt-regression-harness.test.js +0 -195
  1121. package/dist/ui/long-prompt-regression-harness.test.js.map +0 -1
  1122. package/dist/ui/pixel.test.d.ts +0 -2
  1123. package/dist/ui/pixel.test.d.ts.map +0 -1
  1124. package/dist/ui/pixel.test.js +0 -138
  1125. package/dist/ui/pixel.test.js.map +0 -1
  1126. package/dist/ui/plan-overlay.test.d.ts +0 -2
  1127. package/dist/ui/plan-overlay.test.d.ts.map +0 -1
  1128. package/dist/ui/plan-overlay.test.js +0 -305
  1129. package/dist/ui/plan-overlay.test.js.map +0 -1
  1130. package/dist/ui/queued-message.test.d.ts +0 -2
  1131. package/dist/ui/queued-message.test.d.ts.map +0 -1
  1132. package/dist/ui/queued-message.test.js +0 -172
  1133. package/dist/ui/queued-message.test.js.map +0 -1
  1134. package/dist/ui/render.test.d.ts +0 -2
  1135. package/dist/ui/render.test.d.ts.map +0 -1
  1136. package/dist/ui/render.test.js +0 -42
  1137. package/dist/ui/render.test.js.map +0 -1
  1138. package/dist/ui/scroll-stabilization.test.d.ts +0 -2
  1139. package/dist/ui/scroll-stabilization.test.d.ts.map +0 -1
  1140. package/dist/ui/scroll-stabilization.test.js +0 -64
  1141. package/dist/ui/scroll-stabilization.test.js.map +0 -1
  1142. package/dist/ui/slash-command-images.test.d.ts +0 -2
  1143. package/dist/ui/slash-command-images.test.d.ts.map +0 -1
  1144. package/dist/ui/slash-command-images.test.js +0 -110
  1145. package/dist/ui/slash-command-images.test.js.map +0 -1
  1146. package/dist/ui/startup-banner-order.test.d.ts +0 -2
  1147. package/dist/ui/startup-banner-order.test.d.ts.map +0 -1
  1148. package/dist/ui/startup-banner-order.test.js +0 -105
  1149. package/dist/ui/startup-banner-order.test.js.map +0 -1
  1150. package/dist/ui/stores/transcript-scroll-store.test.d.ts +0 -2
  1151. package/dist/ui/stores/transcript-scroll-store.test.d.ts.map +0 -1
  1152. package/dist/ui/stores/transcript-scroll-store.test.js +0 -73
  1153. package/dist/ui/stores/transcript-scroll-store.test.js.map +0 -1
  1154. package/dist/ui/streaming-flush-bounce.test.d.ts +0 -2
  1155. package/dist/ui/streaming-flush-bounce.test.d.ts.map +0 -1
  1156. package/dist/ui/streaming-flush-bounce.test.js +0 -177
  1157. package/dist/ui/streaming-flush-bounce.test.js.map +0 -1
  1158. package/dist/ui/submit-boundary-gap.test.d.ts +0 -2
  1159. package/dist/ui/submit-boundary-gap.test.d.ts.map +0 -1
  1160. package/dist/ui/submit-boundary-gap.test.js +0 -180
  1161. package/dist/ui/submit-boundary-gap.test.js.map +0 -1
  1162. package/dist/ui/terminal-history-repaint.test.d.ts +0 -2
  1163. package/dist/ui/terminal-history-repaint.test.d.ts.map +0 -1
  1164. package/dist/ui/terminal-history-repaint.test.js +0 -73
  1165. package/dist/ui/terminal-history-repaint.test.js.map +0 -1
  1166. package/dist/ui/terminal-history-retry-dedup.test.d.ts +0 -2
  1167. package/dist/ui/terminal-history-retry-dedup.test.d.ts.map +0 -1
  1168. package/dist/ui/terminal-history-retry-dedup.test.js +0 -61
  1169. package/dist/ui/terminal-history-retry-dedup.test.js.map +0 -1
  1170. package/dist/ui/terminal-history.test.d.ts +0 -2
  1171. package/dist/ui/terminal-history.test.d.ts.map +0 -1
  1172. package/dist/ui/terminal-history.test.js +0 -557
  1173. package/dist/ui/terminal-history.test.js.map +0 -1
  1174. package/dist/ui/thinking-level-cycle.test.d.ts +0 -2
  1175. package/dist/ui/thinking-level-cycle.test.d.ts.map +0 -1
  1176. package/dist/ui/thinking-level-cycle.test.js +0 -45
  1177. package/dist/ui/thinking-level-cycle.test.js.map +0 -1
  1178. package/dist/ui/tool-group-summary.test.d.ts +0 -2
  1179. package/dist/ui/tool-group-summary.test.d.ts.map +0 -1
  1180. package/dist/ui/tool-group-summary.test.js +0 -79
  1181. package/dist/ui/tool-group-summary.test.js.map +0 -1
  1182. package/dist/ui/transcript/spacing.test.d.ts +0 -2
  1183. package/dist/ui/transcript/spacing.test.d.ts.map +0 -1
  1184. package/dist/ui/transcript/spacing.test.js +0 -191
  1185. package/dist/ui/transcript/spacing.test.js.map +0 -1
  1186. package/dist/ui/transcript/transcript-lines.test.d.ts +0 -2
  1187. package/dist/ui/transcript/transcript-lines.test.d.ts.map +0 -1
  1188. package/dist/ui/transcript/transcript-lines.test.js +0 -76
  1189. package/dist/ui/transcript/transcript-lines.test.js.map +0 -1
  1190. package/dist/ui/transcript-viewport-pinning.test.d.ts +0 -2
  1191. package/dist/ui/transcript-viewport-pinning.test.d.ts.map +0 -1
  1192. package/dist/ui/transcript-viewport-pinning.test.js +0 -148
  1193. package/dist/ui/transcript-viewport-pinning.test.js.map +0 -1
  1194. package/dist/ui/tui-history-parity.test.d.ts +0 -2
  1195. package/dist/ui/tui-history-parity.test.d.ts.map +0 -1
  1196. package/dist/ui/tui-history-parity.test.js +0 -388
  1197. package/dist/ui/tui-history-parity.test.js.map +0 -1
  1198. package/dist/ui/tui-simulation.test.d.ts +0 -2
  1199. package/dist/ui/tui-simulation.test.d.ts.map +0 -1
  1200. package/dist/ui/tui-simulation.test.js +0 -145
  1201. package/dist/ui/tui-simulation.test.js.map +0 -1
  1202. package/dist/ui/tui-terminal-recorder.test.d.ts +0 -2
  1203. package/dist/ui/tui-terminal-recorder.test.d.ts.map +0 -1
  1204. package/dist/ui/tui-terminal-recorder.test.js +0 -134
  1205. package/dist/ui/tui-terminal-recorder.test.js.map +0 -1
  1206. package/dist/ui/utils/assistant-stream-split.test.d.ts +0 -2
  1207. package/dist/ui/utils/assistant-stream-split.test.d.ts.map +0 -1
  1208. package/dist/ui/utils/assistant-stream-split.test.js +0 -74
  1209. package/dist/ui/utils/assistant-stream-split.test.js.map +0 -1
  1210. package/dist/ui/utils/markdown-renderer.test.d.ts +0 -2
  1211. package/dist/ui/utils/markdown-renderer.test.d.ts.map +0 -1
  1212. package/dist/ui/utils/markdown-renderer.test.js +0 -63
  1213. package/dist/ui/utils/markdown-renderer.test.js.map +0 -1
  1214. package/dist/ui/utils/table-text.test.d.ts +0 -2
  1215. package/dist/ui/utils/table-text.test.d.ts.map +0 -1
  1216. package/dist/ui/utils/table-text.test.js +0 -202
  1217. package/dist/ui/utils/table-text.test.js.map +0 -1
  1218. package/dist/ui/utils/terminal-graphics.test.d.ts +0 -2
  1219. package/dist/ui/utils/terminal-graphics.test.d.ts.map +0 -1
  1220. package/dist/ui/utils/terminal-graphics.test.js +0 -100
  1221. package/dist/ui/utils/terminal-graphics.test.js.map +0 -1
  1222. package/dist/ui/utils/terminal-input.test.d.ts +0 -2
  1223. package/dist/ui/utils/terminal-input.test.d.ts.map +0 -1
  1224. package/dist/ui/utils/terminal-input.test.js +0 -15
  1225. package/dist/ui/utils/terminal-input.test.js.map +0 -1
  1226. package/dist/utils/git.test.d.ts +0 -2
  1227. package/dist/utils/git.test.d.ts.map +0 -1
  1228. package/dist/utils/git.test.js +0 -36
  1229. package/dist/utils/git.test.js.map +0 -1
  1230. package/dist/utils/github.test.d.ts +0 -2
  1231. package/dist/utils/github.test.d.ts.map +0 -1
  1232. package/dist/utils/github.test.js +0 -23
  1233. package/dist/utils/github.test.js.map +0 -1
  1234. package/dist/utils/http-body.test.d.ts +0 -2
  1235. package/dist/utils/http-body.test.d.ts.map +0 -1
  1236. package/dist/utils/http-body.test.js +0 -68
  1237. package/dist/utils/http-body.test.js.map +0 -1
  1238. package/dist/utils/image.test.d.ts +0 -2
  1239. package/dist/utils/image.test.d.ts.map +0 -1
  1240. package/dist/utils/image.test.js +0 -139
  1241. package/dist/utils/image.test.js.map +0 -1
  1242. package/dist/utils/plan-steps.test.d.ts +0 -2
  1243. package/dist/utils/plan-steps.test.d.ts.map +0 -1
  1244. package/dist/utils/plan-steps.test.js +0 -159
  1245. package/dist/utils/plan-steps.test.js.map +0 -1
  1246. package/dist/utils/process.test.d.ts +0 -2
  1247. package/dist/utils/process.test.d.ts.map +0 -1
  1248. package/dist/utils/process.test.js +0 -42
  1249. package/dist/utils/process.test.js.map +0 -1
@@ -18,6 +18,7 @@ import os from "node:os";
18
18
  import path from "node:path";
19
19
  import { randomUUID } from "node:crypto";
20
20
  import { parseArgs } from "node:util";
21
+ import { spawn } from "node:child_process";
21
22
  import { environmentSecrets, formatError, redactValue } from "@prestyj/ai";
22
23
  import { runJsonMode } from "./modes/json-mode.js";
23
24
  import { runSubagentWorkerMode } from "./modes/subagent-worker-mode.js";
@@ -37,6 +38,7 @@ import { validateNolanModelPref, effectiveNolanModel, } from "./core/nolan-model
37
38
  import { normalizeAutopilotMarkersForHistory, normalizeAppMarkersForHistory, normalizeNolanTurnsForHistory, getHistoryMessageVisibility, replayMessagesInOrder, restoreUserRow, restoreAssistantTexts, resolveRestoredCommand, autopilotMarkerCopySeed, } from "./core/session-history.js";
38
39
  import { sessionToMarkdown, defaultExportFilename, } from "./core/session-export.js";
39
40
  import { AuthStorage } from "./core/auth-storage.js";
41
+ import { advancesPhase, explainPullFailure, isGgufShard, isValidHfRepoId, parseOllamaPullLine, pickGgufQuant, SHARDED_MESSAGE, toHfSearchRow, } from "./hf-pull.js";
40
42
  import { cleanupToolOutputs } from "./tools/overflow.js";
41
43
  import { readCappedBody } from "./utils/http-body.js";
42
44
  import { fetchSubscriptionUsage, SubscriptionUsageError, XIAOMI_CREDITS_KEY, dualAuthProvider, oauthStorageKey, discoverLocalModels, findProbedModel, formatLocalModelId, parseLocalModelId, probeEndpoint, toModelInfo as localModelInfo, } from "@prestyj/core";
@@ -67,14 +69,16 @@ import { RADIO_STATIONS, getCurrentStation, getRadioVolume, playRadio, setRadioV
67
69
  import { enrichProcessPath } from "./core/shell-path.js";
68
70
  import { downscaleForPreview, shrinkToFit, validateVisionImage } from "./utils/image.js";
69
71
  import { startServeMode } from "./modes/serve-mode.js";
72
+ import { installSteroids, probeSteroids } from "./core/steroids.js";
70
73
  import { loadTelegramConfig, saveTelegramConfig, verifyBotToken } from "./core/telegram-config.js";
71
74
  import { loadServers, addServer, removeServer, getServer, parseMcpAddCommand, MCPClientManager, McpOAuthStore, createElicitationBridge, } from "./core/mcp/index.js";
75
+ import { createAskUserBridge } from "./core/ask-user.js";
76
+ import { createAskUserTool } from "./tools/ask-user.js";
72
77
  import { buildSnapshot, levelForXp, rankForLevel } from "./core/progress/ranks.js";
73
78
  import { loadProgress, peekProgress, updateProgress } from "./core/progress/store.js";
74
79
  import { awardPrompt, awardCommits } from "./core/progress/engine.js";
75
80
  import { detectNewCommits, repoKey } from "./core/progress/git-xp.js";
76
81
  import { rebuildFromSessions } from "./core/progress/rebuild.js";
77
- import { captureSidecarError, flushSidecarErrors, shouldCaptureToolFailure, shouldCaptureUsagePollingError, wrapSidecarHandler, } from "./core/sidecar-error-reporter.js";
78
82
  const AUTOMATION_PROVENANCE = {
79
83
  source: "runtime",
80
84
  kind: "automation",
@@ -92,6 +96,8 @@ const ALL_PROVIDERS = [
92
96
  "minimax",
93
97
  "xiaomi",
94
98
  "deepseek",
99
+ // Open-community gateway, before the provider-agnostic one
100
+ "huggingface",
95
101
  // Japan, then provider-agnostic gateway last
96
102
  "sakana",
97
103
  "openrouter",
@@ -193,7 +199,6 @@ async function persistModelSelection(settingsFile, provider, model) {
193
199
  await sm.set("defaultModel", model);
194
200
  }
195
201
  catch (err) {
196
- captureSidecarError(err, "app-sidecar.settings.persist-model");
197
202
  log("WARN", "app-sidecar", "failed to persist model selection", { err: String(err) });
198
203
  }
199
204
  }
@@ -210,7 +215,6 @@ async function persistThinkingLevel(settingsFile, level) {
210
215
  await sm.set("thinkingLevel", level);
211
216
  }
212
217
  catch (err) {
213
- captureSidecarError(err, "app-sidecar.settings.persist-thinking");
214
218
  log("WARN", "app-sidecar", "failed to persist thinking level", { err: String(err) });
215
219
  }
216
220
  }
@@ -516,10 +520,6 @@ async function runJsonModeIfRequested() {
516
520
  allowedMcpServers,
517
521
  promptCacheKey: values["prompt-cache-key"],
518
522
  }).catch(async (err) => {
519
- captureSidecarError(err, "app-sidecar.json-mode", {
520
- provider: String(values.provider ?? "anthropic"),
521
- });
522
- await flushSidecarErrors();
523
523
  process.stderr.write((err instanceof Error ? err.message : String(err)) + "\n");
524
524
  process.exit(1);
525
525
  });
@@ -573,7 +573,9 @@ async function main() {
573
573
  const includeRuntime = phase === "idle_timeout_fired" ||
574
574
  phase === "hard_timeout_fired" ||
575
575
  phase === "stall_exhausted";
576
- log("INFO", "stream", phase, {
576
+ // A session stuck on the non-streaming fallback costs real money and real
577
+ // latency; it does not belong in the INFO noise floor.
578
+ log(phase === "non_streaming_session" ? "WARN" : "INFO", "stream", phase, {
577
579
  ...(data ?? {}),
578
580
  ...(includeRuntime
579
581
  ? {
@@ -722,9 +724,6 @@ async function main() {
722
724
  }
723
725
  catch (error) {
724
726
  const message = error instanceof Error ? error.message : String(error);
725
- if (shouldCaptureUsagePollingError(error)) {
726
- captureSidecarError(error, "app-sidecar.usage.fetch", { provider });
727
- }
728
727
  let backoffMs;
729
728
  if (error instanceof SubscriptionUsageError && error.status === 429) {
730
729
  backoffMs = Math.min(USAGE_RATE_LIMIT_MAX_BACKOFF_MS, Math.max(USAGE_RATE_LIMIT_MIN_BACKOFF_MS, error.retryAfterMs ?? USAGE_RATE_LIMIT_FALLBACK_BACKOFF_MS));
@@ -807,7 +806,7 @@ async function main() {
807
806
  return null;
808
807
  }
809
808
  }
810
- const server = http.createServer(wrapSidecarHandler((req, res) => {
809
+ const server = http.createServer((req, res) => {
811
810
  const url = req.url ?? "/";
812
811
  const method = req.method ?? "GET";
813
812
  // Answer preflights with a bare 204 but grant NO origins — the webview
@@ -871,7 +870,6 @@ async function main() {
871
870
  }
872
871
  catch (err) {
873
872
  const message = err instanceof Error ? err.message : String(err);
874
- captureSidecarError(err, "app-sidecar.session.create");
875
873
  log("ERROR", "app-sidecar", "session create failed", { message });
876
874
  daemonJson(res, 500, { error: message });
877
875
  }
@@ -908,7 +906,6 @@ async function main() {
908
906
  }
909
907
  daemonJson(res, 200, await subscriptionUsage(provider));
910
908
  })().catch((error) => {
911
- captureSidecarError(error, "app-sidecar.usage.request");
912
909
  log("ERROR", "app-sidecar", "subscription usage request failed", {
913
910
  message: error instanceof Error ? error.message : String(error),
914
911
  });
@@ -924,7 +921,7 @@ async function main() {
924
921
  return;
925
922
  }
926
923
  ctx.handle(req, res, url, method);
927
- }, "app-sidecar.http"));
924
+ });
928
925
  server.listen(port, host, () => {
929
926
  const addr = server.address();
930
927
  // The Rust shell reads this line to learn the daemon port (it already
@@ -986,11 +983,10 @@ const NOLAN_ALLOWED_TOOLS = [
986
983
  "web_fetch",
987
984
  "web_search",
988
985
  "screenshot",
986
+ // Local corpus of real repos: lets Nolan verify against code that ships
987
+ // instead of assuming — core to how he's meant to work. Read-only.
988
+ "steroids",
989
989
  ];
990
- /** MCP servers Nolan is allowed to use. kencode-search lets him look into real
991
- * public repos / verify against actual code instead of assuming — core to how
992
- * he's meant to work. Read-only research; no other MCP server is connected. */
993
- const NOLAN_ALLOWED_MCP_SERVERS = ["kencode-search"];
994
990
  /** Extract the plain text of the most recent assistant message (Nolan's reply).
995
991
  * Strips tool-call / image blocks, returning just the prose Nolan streamed. */
996
992
  function lastAssistantText(messages) {
@@ -1077,7 +1073,6 @@ async function createProgressManager(agentDir, broadcastAll) {
1077
1073
  broadcastAll(buildSnapshot(updated), originId);
1078
1074
  }
1079
1075
  catch (err) {
1080
- captureSidecarError(err, "app-sidecar.progress.award");
1081
1076
  log("DEBUG", "app-sidecar", "progress award failed", {
1082
1077
  message: err instanceof Error ? err.message : String(err),
1083
1078
  });
@@ -1111,7 +1106,6 @@ async function createProgressManager(agentDir, broadcastAll) {
1111
1106
  progressWatcher = watcher;
1112
1107
  }
1113
1108
  catch (err) {
1114
- captureSidecarError(err, "app-sidecar.progress.watch");
1115
1109
  log("DEBUG", "app-sidecar", "progress watch unavailable", {
1116
1110
  message: err instanceof Error ? err.message : String(err),
1117
1111
  });
@@ -1209,7 +1203,7 @@ async function createSession(deps, opts) {
1209
1203
  // command that doesn't exist in the app.
1210
1204
  .replaceAll(/Run \/compact to shrink history, or start a new session\./gi, "Start a new session to reset the context.")
1211
1205
  // /model: handle each phrasing pattern
1212
- .replaceAll(/switch to claude-fable-5 with \/model/gi, "switch to claude-fable-5 using the model selector")
1206
+ .replaceAll(/switch to (\S+) with \/model/gi, "switch to $1 using the model selector")
1213
1207
  .replaceAll(/Switch with \/model\./gi, "Switch using the model selector.")
1214
1208
  .replaceAll(/try a different model with \/model\./gi, "try a different model using the model selector.")
1215
1209
  .replaceAll(/Use \/model to switch/gi, "Use the model selector to switch")
@@ -1245,11 +1239,6 @@ async function createSession(deps, opts) {
1245
1239
  const f = formatError(err);
1246
1240
  const message = f.message ? desktopGuidance(f.message) : undefined;
1247
1241
  const guidance = localNetworkGuidance(f.source) ?? desktopGuidance(f.guidance);
1248
- captureSidecarError(err, `app-sidecar.${logLabel.replaceAll(" ", "-")}`, {
1249
- scope: type,
1250
- ...(f.provider ? { provider: f.provider } : {}),
1251
- ...(f.statusCode != null ? { status: String(f.statusCode) } : {}),
1252
- });
1253
1242
  log("ERROR", "app-sidecar", logLabel, {
1254
1243
  headline: f.headline,
1255
1244
  source: f.source,
@@ -1288,6 +1277,16 @@ async function createSession(deps, opts) {
1288
1277
  server: prompt.server,
1289
1278
  }),
1290
1279
  });
1280
+ // ── ask_user bridge ────────────────────────────────────────
1281
+ // The `ask_user` tool parks the turn on a human answer. Same shape as the
1282
+ // MCP bridge above: broadcast over SSE, resolved when the webview POSTs
1283
+ // /ask/:id. Registered ONLY here — a TUI/headless/subagent run has nobody to
1284
+ // answer, so the tool is absent there rather than hanging on a dead channel.
1285
+ const asks = createAskUserBridge({
1286
+ broadcast: (prompt) => broadcast("ask_user", prompt),
1287
+ onTimeout: (prompt) => log("WARN", "app-sidecar", "ask_user timed out", { id: prompt.id }),
1288
+ });
1289
+ const askUserTool = createAskUserTool(asks.park);
1291
1290
  // The session file path to resume (passed by the daemon's POST /session);
1292
1291
  // empty/unset starts a fresh session.
1293
1292
  const resumeSessionPath = opts.sessionPath;
@@ -1313,13 +1312,16 @@ async function createSession(deps, opts) {
1313
1312
  session = createChatAgent(chatAgent, {
1314
1313
  ...baseSessionOptions,
1315
1314
  sessionsDir: paths.sessionsDir,
1316
- additionalTools: [...buildMemoryTools(memoryStore), ...buildJiwaTools(jiwaStore)],
1315
+ additionalTools: [
1316
+ askUserTool,
1317
+ ...buildMemoryTools(memoryStore),
1318
+ ...buildJiwaTools(jiwaStore),
1319
+ ],
1317
1320
  getSystemPromptTail: () => `${memoryStore.renderForPrompt()}\n\n${jiwaStore.renderForPrompt()}`,
1318
1321
  onAgentChange: async (nextAgent) => {
1319
1322
  chatAgent = nextAgent;
1320
1323
  broadcast("chat_agent_change", { chatAgent: nextAgent });
1321
1324
  await session.persistAppMarker("agent_handoff", { chatAgent: nextAgent }).catch((error) => {
1322
- captureSidecarError(error, "app-sidecar.chat-agent.persist-handoff");
1323
1325
  log("WARN", "app-sidecar", "agent handoff marker persist failed", {
1324
1326
  message: error instanceof Error ? error.message : String(error),
1325
1327
  });
@@ -1330,6 +1332,7 @@ async function createSession(deps, opts) {
1330
1332
  else {
1331
1333
  session = new AgentSession({
1332
1334
  ...baseSessionOptions,
1335
+ additionalTools: [askUserTool],
1333
1336
  // Plan mode belongs only to the coding agent.
1334
1337
  onEnterPlan: async (reason) => {
1335
1338
  // Unattended task runs cannot approve plans; implement directly instead.
@@ -1372,8 +1375,8 @@ async function createSession(deps, opts) {
1372
1375
  }
1373
1376
  }
1374
1377
  log("INFO", "app-sidecar", "session ready", { provider, model, mode, chatAgent, cwd });
1375
- // ── Local models (Ollama / LM Studio / llama.cpp / vLLM) ──
1376
- // Probing four HTTP endpoints must never delay readiness, so this runs in the
1378
+ // ── Local models (Ollama, plus user-added custom endpoints) ──
1379
+ // Probing endpoints must never delay readiness, so this runs in the
1377
1380
  // background (same shape as backgroundMcpConnect) and pushes a models_change
1378
1381
  // frame when it lands.
1379
1382
  let localProbes = [];
@@ -1416,6 +1419,204 @@ async function createSession(deps, opts) {
1416
1419
  })),
1417
1420
  };
1418
1421
  }
1422
+ let hfPull = null;
1423
+ const hfPullPayload = (s) => ({
1424
+ repo: s.repo,
1425
+ model: s.model,
1426
+ tag: s.tag,
1427
+ file: s.file,
1428
+ sizeBytes: s.sizeBytes,
1429
+ phase: s.phase,
1430
+ percent: s.percent,
1431
+ ...(s.detail ? { detail: s.detail } : {}),
1432
+ ...(s.error ? { error: s.error } : {}),
1433
+ });
1434
+ /** Stored HF token, if the user connected the huggingface provider. */
1435
+ async function hfToken() {
1436
+ try {
1437
+ const auth = new AuthStorage(paths.authFile);
1438
+ const creds = await auth.resolveCredentials("huggingface");
1439
+ return creds.accessToken || undefined;
1440
+ }
1441
+ catch {
1442
+ return undefined;
1443
+ }
1444
+ }
1445
+ async function hfHubJson(pathname) {
1446
+ const token = await hfToken();
1447
+ const res = await fetch(`https://huggingface.co${pathname}`, {
1448
+ headers: token ? { authorization: `Bearer ${token}` } : {},
1449
+ signal: AbortSignal.timeout(10_000),
1450
+ });
1451
+ if (!res.ok)
1452
+ throw new Error(`Hugging Face responded ${res.status}`);
1453
+ return res.json();
1454
+ }
1455
+ /** Search the Hub for GGUF repos (what Ollama can pull). */
1456
+ async function hfSearch(query) {
1457
+ // `filter=gguf` (the tag the Hub applies to repos that actually contain
1458
+ // GGUF files) — `library=gguf` also matches safetensors-only base repos,
1459
+ // which then fail at pull time. `expand[]=gguf` confirms per row.
1460
+ const params = new URLSearchParams({
1461
+ search: query,
1462
+ filter: "gguf",
1463
+ sort: "downloads",
1464
+ direction: "-1",
1465
+ limit: "12",
1466
+ });
1467
+ for (const field of ["gguf", "downloads", "likes", "lastModified"]) {
1468
+ params.append("expand[]", field);
1469
+ }
1470
+ const data = (await hfHubJson(`/api/models?${params.toString()}`));
1471
+ return (Array.isArray(data) ? data : [])
1472
+ .map(toHfSearchRow)
1473
+ .filter((r) => r !== null);
1474
+ }
1475
+ /**
1476
+ * Start `ollama pull hf.co/<repo>[:quant]`. Resolves once the child is
1477
+ * spawned; progress streams as `hf_pull` events. The chosen quant comes from
1478
+ * the repo's real file list — the client only ever sends a repo id, so there
1479
+ * is no injection surface into argv.
1480
+ */
1481
+ async function startHfPull(repo) {
1482
+ if (hfPull?.child) {
1483
+ throw Object.assign(new Error("A download is already running."), { status: 409 });
1484
+ }
1485
+ // `recursive=true`: many repos (unsloth, mradermacher) keep quants in
1486
+ // per-quant subfolders, and a flat listing reports them as GGUF-less.
1487
+ const tree = (await hfHubJson(`/api/models/${repo}/tree/main?recursive=true`));
1488
+ const files = (Array.isArray(tree) ? tree : []).flatMap((entry) => {
1489
+ const e = entry;
1490
+ // `type` guards a directory entry (size 0) from beating real files in the
1491
+ // size fallback; the Hub marks folders as "directory".
1492
+ if (e.type !== undefined && e.type !== "file")
1493
+ return [];
1494
+ if (typeof e.path !== "string" || !e.path.toLowerCase().endsWith(".gguf"))
1495
+ return [];
1496
+ const size = Number(e.lfs?.size ?? e.size ?? 0);
1497
+ return [{ path: e.path, sizeBytes: Number.isFinite(size) ? size : 0 }];
1498
+ });
1499
+ const choice = pickGgufQuant(files);
1500
+ if (!choice) {
1501
+ const sharded = files.some((f) => isGgufShard(f.path));
1502
+ throw Object.assign(new Error(sharded ? SHARDED_MESSAGE : "That repo has no GGUF file for Ollama to pull."), { status: 400 });
1503
+ }
1504
+ const model = `hf.co/${repo}${choice.tag ? `:${choice.tag}` : ""}`;
1505
+ const token = await hfToken();
1506
+ const state = {
1507
+ repo,
1508
+ model,
1509
+ tag: choice.tag,
1510
+ file: choice.file.path,
1511
+ sizeBytes: choice.file.sizeBytes,
1512
+ phase: "preparing",
1513
+ percent: 0,
1514
+ child: null,
1515
+ };
1516
+ hfPull = state;
1517
+ broadcast("hf_pull", hfPullPayload(state));
1518
+ // ollama prints progress to stderr (stdout on some builds); parse both.
1519
+ let stderrTail = "";
1520
+ let lastBroadcast = "";
1521
+ const feed = (chunk) => {
1522
+ // Once the pull is terminal (success, failure, or user cancel) stop
1523
+ // parsing: a killed ollama dumps a burst of stderr that would otherwise
1524
+ // spam the modal with garbage frames after the outcome is already shown.
1525
+ if (state.phase === "success" || state.phase === "error")
1526
+ return;
1527
+ for (const line of chunk.split(/\r\n|\r|\n/)) {
1528
+ const parsed = parseOllamaPullLine(line);
1529
+ if (!parsed)
1530
+ continue;
1531
+ // A redrawn frame repeats `pulling manifest` next to live progress; it
1532
+ // must not drag the modal back to "Contacting Ollama…".
1533
+ if (!advancesPhase(state.phase, parsed.phase))
1534
+ continue;
1535
+ if (parsed.phase !== "error") {
1536
+ state.phase = parsed.phase;
1537
+ if (parsed.percent !== undefined)
1538
+ state.percent = parsed.percent;
1539
+ state.detail = parsed.detail;
1540
+ }
1541
+ // ollama redraws its TUI frame several times a second, mostly with
1542
+ // identical numbers. Broadcasting each one re-rendered the modal for no
1543
+ // visible change; only a frame that actually reads differently ships.
1544
+ const next = JSON.stringify(hfPullPayload(state));
1545
+ if (next === lastBroadcast)
1546
+ continue;
1547
+ lastBroadcast = next;
1548
+ broadcast("hf_pull", hfPullPayload(state));
1549
+ }
1550
+ };
1551
+ try {
1552
+ const child = spawn("ollama", ["pull", model], {
1553
+ env: { ...process.env, ...(token ? { HF_TOKEN: token } : {}) },
1554
+ stdio: ["ignore", "pipe", "pipe"],
1555
+ });
1556
+ state.child = child;
1557
+ child.stdout?.setEncoding("utf8");
1558
+ child.stderr?.setEncoding("utf8");
1559
+ child.stdout?.on("data", feed);
1560
+ child.stderr?.on("data", (d) => {
1561
+ stderrTail = (stderrTail + d).slice(-2000);
1562
+ feed(d);
1563
+ });
1564
+ child.on("error", (err) => {
1565
+ state.child = null;
1566
+ state.phase = "error";
1567
+ state.error =
1568
+ err.code === "ENOENT"
1569
+ ? "Ollama isn't installed (or isn't on PATH). Install it from ollama.com, then retry."
1570
+ : `Could not start Ollama: ${err.message}`;
1571
+ broadcast("hf_pull", hfPullPayload(state));
1572
+ });
1573
+ child.on("close", (code) => {
1574
+ state.child = null;
1575
+ if (state.phase === "success" || state.phase === "error")
1576
+ return; // cancelled
1577
+ if (code === 0) {
1578
+ state.phase = "success";
1579
+ state.percent = 100;
1580
+ state.detail = undefined;
1581
+ broadcast("hf_pull", hfPullPayload(state));
1582
+ // The new model only exists to the app once Ollama lists it. Ollama's
1583
+ // library is machine-wide, like the shared auth file, so every window
1584
+ // gets the refresh — not just the one that ran the download.
1585
+ void scanLocalModels(true)
1586
+ .then(() => broadcastAll("models_change", { local: localStatePayload() }))
1587
+ .catch(() => undefined);
1588
+ }
1589
+ else {
1590
+ state.phase = "error";
1591
+ state.error = state.error ?? explainPullFailure(stderrTail);
1592
+ broadcast("hf_pull", hfPullPayload(state));
1593
+ }
1594
+ });
1595
+ }
1596
+ catch (err) {
1597
+ state.child = null;
1598
+ state.phase = "error";
1599
+ state.error = `Could not start Ollama: ${err instanceof Error ? err.message : String(err)}`;
1600
+ broadcast("hf_pull", hfPullPayload(state));
1601
+ }
1602
+ return hfPullPayload(state);
1603
+ }
1604
+ function cancelHfPull() {
1605
+ const child = hfPull?.child;
1606
+ if (!child)
1607
+ return false;
1608
+ // Terminal state FIRST, then the kill: the child's death rattle must not
1609
+ // overwrite the clean "cancelled" outcome with raw stderr.
1610
+ if (hfPull) {
1611
+ hfPull.phase = "error";
1612
+ hfPull.error = "Download cancelled.";
1613
+ hfPull.detail = undefined;
1614
+ hfPull.child = null;
1615
+ broadcast("hf_pull", hfPullPayload(hfPull));
1616
+ }
1617
+ child.kill("SIGTERM");
1618
+ return true;
1619
+ }
1419
1620
  /**
1420
1621
  * Why `modelId` can't be selected right now, or `undefined` when it can.
1421
1622
  * Two real footguns get a clear answer instead of a mid-run provider error:
@@ -1577,7 +1778,6 @@ async function createSession(deps, opts) {
1577
1778
  .catch(() => false)
1578
1779
  .then(() => syncApprovedPlanProgress(generation))
1579
1780
  .catch((error) => {
1580
- captureSidecarError(error, "app-sidecar.plan.refresh-progress");
1581
1781
  log("WARN", "app-sidecar", "plan progress refresh failed", {
1582
1782
  message: error instanceof Error ? error.message : String(error),
1583
1783
  });
@@ -1636,11 +1836,6 @@ async function createSession(deps, opts) {
1636
1836
  session.eventBus.on("tool_call_end", (d) => {
1637
1837
  const name = toolCallNames.get(d.toolCallId) ?? "unknown";
1638
1838
  toolCallNames.delete(d.toolCallId);
1639
- if (d.isError && shouldCaptureToolFailure(name, d.result)) {
1640
- // Expected model-correctable validation failures stay in the local log and
1641
- // conversation. Unexpected failures are reported without private result data.
1642
- captureSidecarError(new Error(`Tool ${name} failed`), `tool.${name}`, { tool: name });
1643
- }
1644
1839
  log(d.isError ? "ERROR" : "INFO", "tool", `Tool call ended: ${name}`, {
1645
1840
  id: d.toolCallId,
1646
1841
  durationMs: String(d.durationMs),
@@ -1854,7 +2049,6 @@ async function createSession(deps, opts) {
1854
2049
  cwd,
1855
2050
  systemPrompt: await buildNolanSystemPrompt(cwd),
1856
2051
  allowedTools: NOLAN_ALLOWED_TOOLS,
1857
- allowedMcpServers: NOLAN_ALLOWED_MCP_SERVERS,
1858
2052
  transient: true,
1859
2053
  signal: nolanAbort.signal,
1860
2054
  // Nolan belongs to this window, so route MCP elicitation prompts there.
@@ -1926,7 +2120,6 @@ async function createSession(deps, opts) {
1926
2120
  cwd,
1927
2121
  systemPrompt: await buildNolanAutopilotSystemPrompt(cwd),
1928
2122
  allowedTools: NOLAN_ALLOWED_TOOLS,
1929
- allowedMcpServers: NOLAN_ALLOWED_MCP_SERVERS,
1930
2123
  transient: true,
1931
2124
  signal: nolanAutoAbort.signal,
1932
2125
  // Route this window's MCP elicitation prompts through the shared bridge.
@@ -1953,8 +2146,9 @@ async function createSession(deps, opts) {
1953
2146
  abort.abort();
1954
2147
  // An MCP tool call parked on user input is not cancelled by the signal —
1955
2148
  // the promise lives in the bridge. Release it, or the aborted turn's tool
1956
- // call never returns.
2149
+ // call never returns. Same for a question parked on the user.
1957
2150
  elicitations.cancelAll();
2151
+ asks.cancelAll();
1958
2152
  // Stop a run-all sweep and every async child through AgentSession's signal.
1959
2153
  taskRunAll = false;
1960
2154
  autopilotCancelled = true;
@@ -2040,7 +2234,6 @@ async function createSession(deps, opts) {
2040
2234
  catch (error) {
2041
2235
  // Keep tracking when prompt cleanup fails; hiding the widget here
2042
2236
  // would claim completion while the approved-plan contract remained.
2043
- captureSidecarError(error, "app-sidecar.plan.cleanup");
2044
2237
  log("WARN", "app-sidecar", "completed plan cleanup failed", {
2045
2238
  message: error instanceof Error ? error.message : String(error),
2046
2239
  });
@@ -2600,7 +2793,6 @@ async function createSession(deps, opts) {
2600
2793
  .snapshot()
2601
2794
  .then((snapshot) => json(res, 200, snapshot))
2602
2795
  .catch((error) => {
2603
- captureSidecarError(error, "app-sidecar.memory.snapshot");
2604
2796
  json(res, 500, { error: error instanceof Error ? error.message : String(error) });
2605
2797
  });
2606
2798
  return;
@@ -2616,7 +2808,6 @@ async function createSession(deps, opts) {
2616
2808
  .then(() => memoryStore.snapshot())
2617
2809
  .then((snapshot) => json(res, 200, snapshot))
2618
2810
  .catch((error) => {
2619
- captureSidecarError(error, "app-sidecar.memory.forget");
2620
2811
  json(res, 500, { error: error instanceof Error ? error.message : String(error) });
2621
2812
  });
2622
2813
  return;
@@ -2626,7 +2817,6 @@ async function createSession(deps, opts) {
2626
2817
  .snapshot()
2627
2818
  .then((snapshot) => json(res, 200, snapshot))
2628
2819
  .catch((error) => {
2629
- captureSidecarError(error, "app-sidecar.jiwa.snapshot");
2630
2820
  json(res, 500, { error: error instanceof Error ? error.message : String(error) });
2631
2821
  });
2632
2822
  return;
@@ -2642,7 +2832,6 @@ async function createSession(deps, opts) {
2642
2832
  .then(() => jiwaStore.snapshot())
2643
2833
  .then((snapshot) => json(res, 200, snapshot))
2644
2834
  .catch((error) => {
2645
- captureSidecarError(error, "app-sidecar.jiwa.forget");
2646
2835
  json(res, 500, { error: error instanceof Error ? error.message : String(error) });
2647
2836
  });
2648
2837
  return;
@@ -2684,7 +2873,6 @@ async function createSession(deps, opts) {
2684
2873
  void listInstalledPlugins(paths.extensionsDir)
2685
2874
  .then((plugins) => json(res, 200, { plugins }))
2686
2875
  .catch((error) => {
2687
- captureSidecarError(error, "app-sidecar.plugins.list");
2688
2876
  json(res, 500, { error: error instanceof Error ? error.message : String(error) });
2689
2877
  });
2690
2878
  return;
@@ -2703,7 +2891,6 @@ async function createSession(deps, opts) {
2703
2891
  json(res, 200, { plugin, restartRequired: true });
2704
2892
  }
2705
2893
  catch (error) {
2706
- captureSidecarError(error, "app-sidecar.plugins.install");
2707
2894
  json(res, 400, { error: error instanceof Error ? error.message : String(error) });
2708
2895
  }
2709
2896
  });
@@ -2714,7 +2901,6 @@ async function createSession(deps, opts) {
2714
2901
  void removePlugin(pluginId, paths.extensionsDir)
2715
2902
  .then(() => json(res, 200, { removed: pluginId, restartRequired: true }))
2716
2903
  .catch((error) => {
2717
- captureSidecarError(error, "app-sidecar.plugins.remove");
2718
2904
  json(res, 400, { error: error instanceof Error ? error.message : String(error) });
2719
2905
  });
2720
2906
  return;
@@ -2799,7 +2985,6 @@ async function createSession(deps, opts) {
2799
2985
  json(res, 200, { path: dir });
2800
2986
  }
2801
2987
  catch (err) {
2802
- captureSidecarError(err, "app-sidecar.project.create");
2803
2988
  json(res, 500, { error: err instanceof Error ? err.message : String(err) });
2804
2989
  }
2805
2990
  });
@@ -2838,7 +3023,6 @@ async function createSession(deps, opts) {
2838
3023
  json(res, 200, { hidden: Array.from(current) });
2839
3024
  }
2840
3025
  catch (err) {
2841
- captureSidecarError(err, "app-sidecar.projects.hidden");
2842
3026
  json(res, 500, { error: err instanceof Error ? err.message : String(err) });
2843
3027
  }
2844
3028
  });
@@ -2854,7 +3038,6 @@ async function createSession(deps, opts) {
2854
3038
  }))
2855
3039
  .then((projects) => json(res, 200, { projects }))
2856
3040
  .catch((err) => {
2857
- captureSidecarError(err, "app-sidecar.projects.discover");
2858
3041
  log("ERROR", "app-sidecar", "discoverProjects failed", {
2859
3042
  message: err instanceof Error ? err.message : String(err),
2860
3043
  });
@@ -2873,10 +3056,7 @@ async function createSession(deps, opts) {
2873
3056
  // agent or request the combined, recency-sorted "all" listing.
2874
3057
  void listSidecarSessions(target, requestedAgent, paths.sessionsDir)
2875
3058
  .then((sessions) => json(res, 200, { sessions }))
2876
- .catch((error) => {
2877
- captureSidecarError(error, "app-sidecar.sessions.list");
2878
- json(res, 200, { sessions: [] });
2879
- });
3059
+ .catch(() => json(res, 200, { sessions: [] }));
2880
3060
  return;
2881
3061
  }
2882
3062
  if (method === "GET" && url.startsWith("/files")) {
@@ -2884,7 +3064,6 @@ async function createSession(deps, opts) {
2884
3064
  void searchProjectFiles(cwd, q)
2885
3065
  .then((files) => json(res, 200, { files }))
2886
3066
  .catch((err) => {
2887
- captureSidecarError(err, "app-sidecar.files.search");
2888
3067
  log("ERROR", "app-sidecar", "searchProjectFiles failed", {
2889
3068
  message: err instanceof Error ? err.message : String(err),
2890
3069
  });
@@ -3328,6 +3507,13 @@ async function createSession(deps, opts) {
3328
3507
  json(res, 400, { error: "empty prompt" });
3329
3508
  return;
3330
3509
  }
3510
+ // A typed prompt supersedes any question parked on the user: they
3511
+ // answered with a message of their own. Release the blocked tool call
3512
+ // NOW — otherwise it waits out its ten-minute timeout while this very
3513
+ // message sits behind it as steering that only drains once the tool
3514
+ // returns, so the turn looks frozen. The webview closes the band on
3515
+ // send; a racing /ask POST just 409s.
3516
+ asks.cancelAll({ action: "cancel", superseded: true });
3331
3517
  if (runLifecycle.running &&
3332
3518
  runLifecycle.isCancellationRequested(runLifecycle.generation)) {
3333
3519
  json(res, 409, {
@@ -3572,7 +3758,6 @@ async function createSession(deps, opts) {
3572
3758
  }
3573
3759
  catch (err) {
3574
3760
  const message = err instanceof Error ? err.message : String(err);
3575
- captureSidecarError(err, "app-sidecar.prompt-enhancer");
3576
3761
  log("ERROR", "app-sidecar", "enhance failed", { message });
3577
3762
  json(res, 500, { error: message });
3578
3763
  }
@@ -3912,6 +4097,14 @@ async function createSession(deps, opts) {
3912
4097
  json(res, 400, { error: "invalid JSON body" });
3913
4098
  return;
3914
4099
  }
4100
+ // Same lock as POST /model, for the same reason: this retargets Nolan's
4101
+ // chat session AND the autopilot reviewer, and `switchModel` on a
4102
+ // session mid-turn races the stream it is already consuming. The
4103
+ // footer picker is disabled to match; this is the enforcement.
4104
+ if (running || nolanRunning || autopilotReviewing) {
4105
+ json(res, 409, { error: "cannot switch Nolan's model while running" });
4106
+ return;
4107
+ }
3915
4108
  if (modelId === null) {
3916
4109
  // Clear the pin → follow EZ Coder again, syncing both sessions back.
3917
4110
  nolanModelOverride = null;
@@ -4028,6 +4221,14 @@ async function createSession(deps, opts) {
4028
4221
  return;
4029
4222
  }
4030
4223
  if (method === "POST" && url === "/thinking") {
4224
+ // The in-flight request already carries its reasoning config, so a
4225
+ // mid-run cycle cannot affect the turn the user is watching — it just
4226
+ // persists a level the footer then reports for a run that never used it.
4227
+ // Locked like POST /model; the footer button is disabled to match.
4228
+ if (running) {
4229
+ json(res, 409, { error: "cannot change reasoning level while running" });
4230
+ return;
4231
+ }
4031
4232
  const st = session.getState();
4032
4233
  const next = getNextThinkingLevel(st.provider, st.model, session.getThinkingLevel());
4033
4234
  session.setThinkingLevel(next);
@@ -4085,7 +4286,6 @@ async function createSession(deps, opts) {
4085
4286
  drained,
4086
4287
  });
4087
4288
  })().catch((error) => {
4088
- captureSidecarError(error, "app-sidecar.run.cancel");
4089
4289
  broadcast("cancel_failed", { error: "cancel_failed", runState: runLifecycle.state });
4090
4290
  json(res, 500, {
4091
4291
  error: "cancel_failed",
@@ -4113,7 +4313,6 @@ async function createSession(deps, opts) {
4113
4313
  json(res, 200, { ok: true });
4114
4314
  })
4115
4315
  .catch((err) => {
4116
- captureSidecarError(err, "app-sidecar.session.new");
4117
4316
  json(res, 500, { error: err instanceof Error ? err.message : String(err) });
4118
4317
  });
4119
4318
  return;
@@ -4170,7 +4369,6 @@ async function createSession(deps, opts) {
4170
4369
  json(res, 200, { ok: true, planTotal });
4171
4370
  }
4172
4371
  catch (err) {
4173
- captureSidecarError(err, "app-sidecar.plan.accept");
4174
4372
  json(res, 500, { error: err instanceof Error ? err.message : String(err) });
4175
4373
  }
4176
4374
  });
@@ -4300,7 +4498,6 @@ async function createSession(deps, opts) {
4300
4498
  broadcastAll("models_change", {});
4301
4499
  }
4302
4500
  catch (err) {
4303
- captureSidecarError(err, "app-sidecar.auth.oauth", { provider });
4304
4501
  // Deliberately session-scoped: this is the outcome of ONE window's
4305
4502
  // attempt. Another window that never pressed Connect has nothing to
4306
4503
  // show an error about, and its modal correctly still offers login.
@@ -4373,6 +4570,50 @@ async function createSession(deps, opts) {
4373
4570
  });
4374
4571
  return;
4375
4572
  }
4573
+ // Answer (or dismiss) an `ask_user` question band. The turn is blocked on
4574
+ // this, so both paths must land: "answer" carries the picked values,
4575
+ // "cancel" releases the tool call with no answer.
4576
+ if (method === "POST" && url.startsWith("/ask/")) {
4577
+ const id = decodeURIComponent(url.slice("/ask/".length));
4578
+ void readBody(req, res).then((raw) => {
4579
+ if (raw === null)
4580
+ return;
4581
+ let result;
4582
+ try {
4583
+ const parsed = JSON.parse(raw);
4584
+ if (parsed.action !== "answer" && parsed.action !== "cancel") {
4585
+ json(res, 400, { error: "action must be answer or cancel" });
4586
+ return;
4587
+ }
4588
+ if (parsed.action === "cancel") {
4589
+ result = { action: "cancel" };
4590
+ }
4591
+ else {
4592
+ // Only strings and string arrays are answers; anything else is a
4593
+ // malformed client, not a value to hand the model.
4594
+ const answers = {};
4595
+ for (const [key, value] of Object.entries(parsed.answers ?? {})) {
4596
+ if (typeof value === "string")
4597
+ answers[key] = value;
4598
+ else if (Array.isArray(value) && value.every((v) => typeof v === "string")) {
4599
+ answers[key] = value;
4600
+ }
4601
+ }
4602
+ result = { action: "answer", answers };
4603
+ }
4604
+ }
4605
+ catch {
4606
+ json(res, 400, { error: "invalid JSON body" });
4607
+ return;
4608
+ }
4609
+ if (!asks.settle(id, result)) {
4610
+ json(res, 409, { error: "no question is awaiting an answer" });
4611
+ return;
4612
+ }
4613
+ json(res, 200, { ok: true });
4614
+ });
4615
+ return;
4616
+ }
4376
4617
  if (method === "POST" && url === "/auth/logout") {
4377
4618
  void readBody(req, res).then(async (raw) => {
4378
4619
  if (raw === null)
@@ -4489,6 +4730,80 @@ async function createSession(deps, opts) {
4489
4730
  })();
4490
4731
  return;
4491
4732
  }
4733
+ // ── Hugging Face search & pull (the "Add from Hugging Face" modal) ──
4734
+ if (method === "GET" && url === "/hf/pull") {
4735
+ json(res, 200, hfPull ? { active: hfPullPayload(hfPull) } : { active: null });
4736
+ return;
4737
+ }
4738
+ if (method === "POST" && url === "/hf/search") {
4739
+ void readBody(req, res).then(async (raw) => {
4740
+ if (raw === null)
4741
+ return;
4742
+ let body;
4743
+ try {
4744
+ body = JSON.parse(raw);
4745
+ }
4746
+ catch {
4747
+ json(res, 400, { error: "invalid JSON body" });
4748
+ return;
4749
+ }
4750
+ // Strip control characters and cap length — this goes into a URL query.
4751
+ const query = String(body.query ?? "")
4752
+ // eslint-disable-next-line no-control-regex -- stripping control characters is the point
4753
+ .replace(/[\u0000-\u001f]/g, "")
4754
+ .trim()
4755
+ .slice(0, 100);
4756
+ if (!query) {
4757
+ json(res, 400, { error: "Type something to search for." });
4758
+ return;
4759
+ }
4760
+ try {
4761
+ json(res, 200, { models: await hfSearch(query) });
4762
+ }
4763
+ catch (err) {
4764
+ broadcastError("error", "hugging face search failed", err);
4765
+ json(res, 502, {
4766
+ error: `Hugging Face search failed — ${err instanceof Error ? err.message : "network error"}.`,
4767
+ });
4768
+ }
4769
+ });
4770
+ return;
4771
+ }
4772
+ if (method === "POST" && url === "/hf/pull") {
4773
+ void readBody(req, res).then(async (raw) => {
4774
+ if (raw === null)
4775
+ return;
4776
+ let body;
4777
+ try {
4778
+ body = JSON.parse(raw);
4779
+ }
4780
+ catch {
4781
+ json(res, 400, { error: "invalid JSON body" });
4782
+ return;
4783
+ }
4784
+ const repo = String(body.repo ?? "").trim();
4785
+ if (!isValidHfRepoId(repo)) {
4786
+ json(res, 400, { error: 'Expected a Hugging Face repo like "org/model".' });
4787
+ return;
4788
+ }
4789
+ try {
4790
+ json(res, 200, await startHfPull(repo));
4791
+ }
4792
+ catch (err) {
4793
+ const status = err instanceof Error && "status" in err && typeof err.status === "number"
4794
+ ? err.status
4795
+ : 502;
4796
+ if (status >= 500)
4797
+ broadcastError("error", "hugging face pull failed", err);
4798
+ json(res, status, { error: err instanceof Error ? err.message : "Pull failed." });
4799
+ }
4800
+ });
4801
+ return;
4802
+ }
4803
+ if (method === "POST" && url === "/hf/pull/cancel") {
4804
+ json(res, 200, { ok: cancelHfPull() });
4805
+ return;
4806
+ }
4492
4807
  // ── Telegram config (mirrors `ezcoder telegram`) ─────────
4493
4808
  if (method === "GET" && url === "/telegram") {
4494
4809
  void loadTelegramConfig().then((cfg) => {
@@ -4575,7 +4890,6 @@ async function createSession(deps, opts) {
4575
4890
  }
4576
4891
  catch (err) {
4577
4892
  serveController = null;
4578
- captureSidecarError(err, "app-sidecar.serve.start", { provider: st.provider });
4579
4893
  json(res, 400, { error: err instanceof Error ? err.message : String(err) });
4580
4894
  }
4581
4895
  })();
@@ -4593,6 +4907,23 @@ async function createSession(deps, opts) {
4593
4907
  })();
4594
4908
  return;
4595
4909
  }
4910
+ // ── Agent Steroids (local code corpus) ───────────────────────────────
4911
+ if (method === "GET" && url === "/steroids") {
4912
+ void probeSteroids().then((status) => json(res, 200, status));
4913
+ return;
4914
+ }
4915
+ if (method === "POST" && url === "/steroids/install") {
4916
+ void installSteroids()
4917
+ .then((status) => {
4918
+ broadcast("steroids_change", status);
4919
+ log("INFO", "app-sidecar", "steroids installed", { version: status.version });
4920
+ json(res, 200, status);
4921
+ })
4922
+ .catch((err) => {
4923
+ json(res, 400, { error: err instanceof Error ? err.message : String(err) });
4924
+ });
4925
+ return;
4926
+ }
4596
4927
  // ── MCP server management (mirrors `ezcoder mcp`) ──────────────────
4597
4928
  // `targetCwd` (project scope) overrides the window cwd so a server can be
4598
4929
  // added/removed for ANY discovered project, not just this window's. Global
@@ -4602,7 +4933,6 @@ async function createSession(deps, opts) {
4602
4933
  void buildMcpRows(targetCwd, paths.settingsFile)
4603
4934
  .then((servers) => json(res, 200, { servers }))
4604
4935
  .catch((err) => {
4605
- captureSidecarError(err, "app-sidecar.mcp.list");
4606
4936
  log("ERROR", "app-sidecar", "buildMcpRows failed", {
4607
4937
  message: err instanceof Error ? err.message : String(err),
4608
4938
  });
@@ -4667,7 +4997,6 @@ async function createSession(deps, opts) {
4667
4997
  });
4668
4998
  }
4669
4999
  catch (err) {
4670
- captureSidecarError(err, "app-sidecar.mcp.add", { server: config.name });
4671
5000
  json(res, 500, {
4672
5001
  error: err instanceof Error ? err.message : String(err),
4673
5002
  });
@@ -4761,7 +5090,6 @@ async function createSession(deps, opts) {
4761
5090
  }
4762
5091
  }
4763
5092
  catch (err) {
4764
- captureSidecarError(err, "app-sidecar.mcp.login", { server: name });
4765
5093
  broadcast("mcp_auth_error", {
4766
5094
  name,
4767
5095
  message: err instanceof Error ? err.message : String(err),
@@ -4777,6 +5105,7 @@ async function createSession(deps, opts) {
4777
5105
  }
4778
5106
  async function dispose() {
4779
5107
  elicitations.cancelAll();
5108
+ asks.cancelAll();
4780
5109
  tasksPollStopped = true;
4781
5110
  if (tasksPoll)
4782
5111
  clearTimeout(tasksPoll);
@@ -4813,8 +5142,6 @@ async function createSession(deps, opts) {
4813
5142
  };
4814
5143
  }
4815
5144
  main().catch(async (err) => {
4816
- captureSidecarError(err, "app-sidecar.main", { severity: "fatal" });
4817
- await flushSidecarErrors();
4818
5145
  const message = err instanceof Error ? err.message : String(err);
4819
5146
  process.stderr.write(`GG_APP_FATAL ${message}\n`);
4820
5147
  process.exit(1);