@calliopelabs/cli 3.1.0 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (856) hide show
  1. package/README.md +54 -7
  2. package/dist/acp.d.ts +1 -4
  3. package/dist/acp.d.ts.map +1 -1
  4. package/dist/acp.js +118 -217
  5. package/dist/acp.js.map +1 -1
  6. package/dist/approvals/commands.d.ts +35 -0
  7. package/dist/approvals/commands.d.ts.map +1 -0
  8. package/dist/approvals/commands.js +51 -0
  9. package/dist/approvals/commands.js.map +1 -0
  10. package/dist/approvals/index.d.ts +6 -0
  11. package/dist/approvals/index.d.ts.map +1 -0
  12. package/dist/approvals/index.js +6 -0
  13. package/dist/approvals/index.js.map +1 -0
  14. package/dist/approvals/queue.d.ts +18 -0
  15. package/dist/approvals/queue.d.ts.map +1 -0
  16. package/dist/approvals/queue.js +46 -0
  17. package/dist/approvals/queue.js.map +1 -0
  18. package/dist/approvals/request.d.ts +13 -0
  19. package/dist/approvals/request.d.ts.map +1 -0
  20. package/dist/approvals/request.js +102 -0
  21. package/dist/approvals/request.js.map +1 -0
  22. package/dist/approvals/store.d.ts +24 -0
  23. package/dist/approvals/store.d.ts.map +1 -0
  24. package/dist/approvals/store.js +229 -0
  25. package/dist/approvals/store.js.map +1 -0
  26. package/dist/approvals/types.d.ts +27 -0
  27. package/dist/approvals/types.d.ts.map +1 -0
  28. package/dist/approvals/types.js +4 -0
  29. package/dist/approvals/types.js.map +1 -0
  30. package/dist/auto-compressor.d.ts +3 -2
  31. package/dist/auto-compressor.d.ts.map +1 -1
  32. package/dist/auto-compressor.js +9 -9
  33. package/dist/auto-compressor.js.map +1 -1
  34. package/dist/bin.d.ts.map +1 -1
  35. package/dist/bin.js +125 -22
  36. package/dist/bin.js.map +1 -1
  37. package/dist/brain/access.d.ts +65 -0
  38. package/dist/brain/access.d.ts.map +1 -0
  39. package/dist/brain/access.js +216 -0
  40. package/dist/brain/access.js.map +1 -0
  41. package/dist/brain/actions.d.ts +120 -0
  42. package/dist/brain/actions.d.ts.map +1 -0
  43. package/dist/brain/actions.js +270 -0
  44. package/dist/brain/actions.js.map +1 -0
  45. package/dist/brain/cli.d.ts +17 -0
  46. package/dist/brain/cli.d.ts.map +1 -0
  47. package/dist/brain/cli.js +206 -0
  48. package/dist/brain/cli.js.map +1 -0
  49. package/dist/brain/index.d.ts +16 -0
  50. package/dist/brain/index.d.ts.map +1 -0
  51. package/dist/brain/index.js +16 -0
  52. package/dist/brain/index.js.map +1 -0
  53. package/dist/brain/journal.d.ts +17 -0
  54. package/dist/brain/journal.d.ts.map +1 -0
  55. package/dist/brain/journal.js +189 -0
  56. package/dist/brain/journal.js.map +1 -0
  57. package/dist/brain/kg.d.ts +23 -0
  58. package/dist/brain/kg.d.ts.map +1 -0
  59. package/dist/brain/kg.js +36 -0
  60. package/dist/brain/kg.js.map +1 -0
  61. package/dist/brain/presentation.d.ts +3 -0
  62. package/dist/brain/presentation.d.ts.map +1 -0
  63. package/dist/brain/presentation.js +48 -0
  64. package/dist/brain/presentation.js.map +1 -0
  65. package/dist/brain/queries.d.ts +179 -0
  66. package/dist/brain/queries.d.ts.map +1 -0
  67. package/dist/brain/queries.js +210 -0
  68. package/dist/brain/queries.js.map +1 -0
  69. package/dist/brain/run-ingest.d.ts +29 -0
  70. package/dist/brain/run-ingest.d.ts.map +1 -0
  71. package/dist/brain/run-ingest.js +200 -0
  72. package/dist/brain/run-ingest.js.map +1 -0
  73. package/dist/brain/sqlite.d.ts +19 -0
  74. package/dist/brain/sqlite.d.ts.map +1 -0
  75. package/dist/brain/sqlite.js +252 -0
  76. package/dist/brain/sqlite.js.map +1 -0
  77. package/dist/brain/store.d.ts +31 -0
  78. package/dist/brain/store.d.ts.map +1 -0
  79. package/dist/brain/store.js +324 -0
  80. package/dist/brain/store.js.map +1 -0
  81. package/dist/brain/tool-query.d.ts +6 -0
  82. package/dist/brain/tool-query.d.ts.map +1 -0
  83. package/dist/brain/tool-query.js +42 -0
  84. package/dist/brain/tool-query.js.map +1 -0
  85. package/dist/brain/tools.d.ts +13 -0
  86. package/dist/brain/tools.d.ts.map +1 -0
  87. package/dist/brain/tools.js +20 -0
  88. package/dist/brain/tools.js.map +1 -0
  89. package/dist/brain/transfer.d.ts +57 -0
  90. package/dist/brain/transfer.d.ts.map +1 -0
  91. package/dist/brain/transfer.js +266 -0
  92. package/dist/brain/transfer.js.map +1 -0
  93. package/dist/brain/types.d.ts +145 -0
  94. package/dist/brain/types.d.ts.map +1 -0
  95. package/dist/brain/types.js +38 -0
  96. package/dist/brain/types.js.map +1 -0
  97. package/dist/brain/validation.d.ts +15 -0
  98. package/dist/brain/validation.d.ts.map +1 -0
  99. package/dist/brain/validation.js +163 -0
  100. package/dist/brain/validation.js.map +1 -0
  101. package/dist/budget.d.ts +5 -4
  102. package/dist/budget.d.ts.map +1 -1
  103. package/dist/budget.js +16 -38
  104. package/dist/budget.js.map +1 -1
  105. package/dist/cancellation.d.ts +8 -0
  106. package/dist/cancellation.d.ts.map +1 -0
  107. package/dist/cancellation.js +42 -0
  108. package/dist/cancellation.js.map +1 -0
  109. package/dist/checkpoint.d.ts +2 -2
  110. package/dist/checkpoint.d.ts.map +1 -1
  111. package/dist/checkpoint.js +5 -5
  112. package/dist/checkpoint.js.map +1 -1
  113. package/dist/config.d.ts +13 -0
  114. package/dist/config.d.ts.map +1 -1
  115. package/dist/config.js +32 -8
  116. package/dist/config.js.map +1 -1
  117. package/dist/doctor.d.ts +30 -0
  118. package/dist/doctor.d.ts.map +1 -0
  119. package/dist/doctor.js +124 -0
  120. package/dist/doctor.js.map +1 -0
  121. package/dist/errors.d.ts +15 -0
  122. package/dist/errors.d.ts.map +1 -1
  123. package/dist/errors.js +33 -9
  124. package/dist/errors.js.map +1 -1
  125. package/dist/execution/attribution.d.ts +17 -0
  126. package/dist/execution/attribution.d.ts.map +1 -0
  127. package/dist/execution/attribution.js +21 -0
  128. package/dist/execution/attribution.js.map +1 -0
  129. package/dist/execution/authority.d.ts +22 -0
  130. package/dist/execution/authority.d.ts.map +1 -0
  131. package/dist/execution/authority.js +134 -0
  132. package/dist/execution/authority.js.map +1 -0
  133. package/dist/execution/billing.d.ts +100 -0
  134. package/dist/execution/billing.d.ts.map +1 -0
  135. package/dist/execution/billing.js +166 -0
  136. package/dist/execution/billing.js.map +1 -0
  137. package/dist/execution/child-grants.d.ts +9 -0
  138. package/dist/execution/child-grants.d.ts.map +1 -0
  139. package/dist/execution/child-grants.js +55 -0
  140. package/dist/execution/child-grants.js.map +1 -0
  141. package/dist/execution/files.d.ts +6 -0
  142. package/dist/execution/files.d.ts.map +1 -0
  143. package/dist/execution/files.js +159 -0
  144. package/dist/execution/files.js.map +1 -0
  145. package/dist/execution/guard.d.ts +50 -0
  146. package/dist/execution/guard.d.ts.map +1 -0
  147. package/dist/execution/guard.js +158 -0
  148. package/dist/execution/guard.js.map +1 -0
  149. package/dist/execution/index.d.ts +12 -0
  150. package/dist/execution/index.d.ts.map +1 -0
  151. package/dist/execution/index.js +12 -0
  152. package/dist/execution/index.js.map +1 -0
  153. package/dist/execution/ledger.d.ts +23 -0
  154. package/dist/execution/ledger.d.ts.map +1 -0
  155. package/dist/execution/ledger.js +379 -0
  156. package/dist/execution/ledger.js.map +1 -0
  157. package/dist/execution/project-spend.d.ts +45 -0
  158. package/dist/execution/project-spend.d.ts.map +1 -0
  159. package/dist/execution/project-spend.js +274 -0
  160. package/dist/execution/project-spend.js.map +1 -0
  161. package/dist/execution/quote.d.ts +19 -0
  162. package/dist/execution/quote.d.ts.map +1 -0
  163. package/dist/execution/quote.js +116 -0
  164. package/dist/execution/quote.js.map +1 -0
  165. package/dist/execution/types.d.ts +113 -0
  166. package/dist/execution/types.d.ts.map +1 -0
  167. package/dist/execution/types.js +9 -0
  168. package/dist/execution/types.js.map +1 -0
  169. package/dist/execution/writer-recovery.d.ts +3 -0
  170. package/dist/execution/writer-recovery.d.ts.map +1 -0
  171. package/dist/execution/writer-recovery.js +85 -0
  172. package/dist/execution/writer-recovery.js.map +1 -0
  173. package/dist/goals/accounting.d.ts +69 -0
  174. package/dist/goals/accounting.d.ts.map +1 -0
  175. package/dist/goals/accounting.js +100 -0
  176. package/dist/goals/accounting.js.map +1 -0
  177. package/dist/goals/actions.d.ts +33 -0
  178. package/dist/goals/actions.d.ts.map +1 -0
  179. package/dist/goals/actions.js +261 -0
  180. package/dist/goals/actions.js.map +1 -0
  181. package/dist/goals/authority.d.ts +9 -0
  182. package/dist/goals/authority.d.ts.map +1 -0
  183. package/dist/goals/authority.js +47 -0
  184. package/dist/goals/authority.js.map +1 -0
  185. package/dist/goals/cli.d.ts +10 -0
  186. package/dist/goals/cli.d.ts.map +1 -0
  187. package/dist/goals/cli.js +169 -0
  188. package/dist/goals/cli.js.map +1 -0
  189. package/dist/goals/contracts.d.ts +18 -0
  190. package/dist/goals/contracts.d.ts.map +1 -0
  191. package/dist/goals/contracts.js +127 -0
  192. package/dist/goals/contracts.js.map +1 -0
  193. package/dist/goals/index.d.ts +17 -0
  194. package/dist/goals/index.d.ts.map +1 -0
  195. package/dist/goals/index.js +16 -0
  196. package/dist/goals/index.js.map +1 -0
  197. package/dist/goals/journal.d.ts +5 -0
  198. package/dist/goals/journal.d.ts.map +1 -0
  199. package/dist/goals/journal.js +142 -0
  200. package/dist/goals/journal.js.map +1 -0
  201. package/dist/goals/metrics.d.ts +53 -0
  202. package/dist/goals/metrics.d.ts.map +1 -0
  203. package/dist/goals/metrics.js +141 -0
  204. package/dist/goals/metrics.js.map +1 -0
  205. package/dist/goals/repair.d.ts +10 -0
  206. package/dist/goals/repair.d.ts.map +1 -0
  207. package/dist/goals/repair.js +50 -0
  208. package/dist/goals/repair.js.map +1 -0
  209. package/dist/goals/routing.d.ts +18 -0
  210. package/dist/goals/routing.d.ts.map +1 -0
  211. package/dist/goals/routing.js +60 -0
  212. package/dist/goals/routing.js.map +1 -0
  213. package/dist/goals/store.d.ts +30 -0
  214. package/dist/goals/store.d.ts.map +1 -0
  215. package/dist/goals/store.js +314 -0
  216. package/dist/goals/store.js.map +1 -0
  217. package/dist/goals/supervised-cli.d.ts +5 -0
  218. package/dist/goals/supervised-cli.d.ts.map +1 -0
  219. package/dist/goals/supervised-cli.js +44 -0
  220. package/dist/goals/supervised-cli.js.map +1 -0
  221. package/dist/goals/supervised.d.ts +8 -0
  222. package/dist/goals/supervised.d.ts.map +1 -0
  223. package/dist/goals/supervised.js +65 -0
  224. package/dist/goals/supervised.js.map +1 -0
  225. package/dist/goals/team.d.ts +8 -0
  226. package/dist/goals/team.d.ts.map +1 -0
  227. package/dist/goals/team.js +64 -0
  228. package/dist/goals/team.js.map +1 -0
  229. package/dist/goals/types.d.ts +174 -0
  230. package/dist/goals/types.d.ts.map +1 -0
  231. package/dist/goals/types.js +2 -0
  232. package/dist/goals/types.js.map +1 -0
  233. package/dist/goals/validation.d.ts +17 -0
  234. package/dist/goals/validation.d.ts.map +1 -0
  235. package/dist/goals/validation.js +172 -0
  236. package/dist/goals/validation.js.map +1 -0
  237. package/dist/headless.d.ts +1 -0
  238. package/dist/headless.d.ts.map +1 -1
  239. package/dist/headless.js +98 -275
  240. package/dist/headless.js.map +1 -1
  241. package/dist/health/index.d.ts +5 -0
  242. package/dist/health/index.d.ts.map +1 -0
  243. package/dist/health/index.js +5 -0
  244. package/dist/health/index.js.map +1 -0
  245. package/dist/health/store.d.ts +24 -0
  246. package/dist/health/store.d.ts.map +1 -0
  247. package/dist/health/store.js +190 -0
  248. package/dist/health/store.js.map +1 -0
  249. package/dist/health/summary.d.ts +10 -0
  250. package/dist/health/summary.d.ts.map +1 -0
  251. package/dist/health/summary.js +95 -0
  252. package/dist/health/summary.js.map +1 -0
  253. package/dist/health/target.d.ts +3 -0
  254. package/dist/health/target.d.ts.map +1 -0
  255. package/dist/health/target.js +53 -0
  256. package/dist/health/target.js.map +1 -0
  257. package/dist/health/types.d.ts +72 -0
  258. package/dist/health/types.d.ts.map +1 -0
  259. package/dist/health/types.js +2 -0
  260. package/dist/health/types.js.map +1 -0
  261. package/dist/hooks.d.ts +7 -2
  262. package/dist/hooks.d.ts.map +1 -1
  263. package/dist/hooks.js +35 -17
  264. package/dist/hooks.js.map +1 -1
  265. package/dist/improvement/actions.d.ts +27 -0
  266. package/dist/improvement/actions.d.ts.map +1 -0
  267. package/dist/improvement/actions.js +116 -0
  268. package/dist/improvement/actions.js.map +1 -0
  269. package/dist/improvement/cli.d.ts +9 -0
  270. package/dist/improvement/cli.d.ts.map +1 -0
  271. package/dist/improvement/cli.js +58 -0
  272. package/dist/improvement/cli.js.map +1 -0
  273. package/dist/improvement/feedback.d.ts +30 -0
  274. package/dist/improvement/feedback.d.ts.map +1 -0
  275. package/dist/improvement/feedback.js +7 -0
  276. package/dist/improvement/feedback.js.map +1 -0
  277. package/dist/improvement/index.d.ts +7 -0
  278. package/dist/improvement/index.d.ts.map +1 -0
  279. package/dist/improvement/index.js +7 -0
  280. package/dist/improvement/index.js.map +1 -0
  281. package/dist/improvement/metrics.d.ts +4 -0
  282. package/dist/improvement/metrics.d.ts.map +1 -0
  283. package/dist/improvement/metrics.js +38 -0
  284. package/dist/improvement/metrics.js.map +1 -0
  285. package/dist/improvement/projection.d.ts +7 -0
  286. package/dist/improvement/projection.d.ts.map +1 -0
  287. package/dist/improvement/projection.js +135 -0
  288. package/dist/improvement/projection.js.map +1 -0
  289. package/dist/improvement/types.d.ts +115 -0
  290. package/dist/improvement/types.d.ts.map +1 -0
  291. package/dist/improvement/types.js +2 -0
  292. package/dist/improvement/types.js.map +1 -0
  293. package/dist/index.d.ts +3 -0
  294. package/dist/index.d.ts.map +1 -1
  295. package/dist/index.js +3 -0
  296. package/dist/index.js.map +1 -1
  297. package/dist/instructions.d.ts +10 -0
  298. package/dist/instructions.d.ts.map +1 -0
  299. package/dist/instructions.js +93 -0
  300. package/dist/instructions.js.map +1 -0
  301. package/dist/isolation/contracts.d.ts +42 -0
  302. package/dist/isolation/contracts.d.ts.map +1 -0
  303. package/dist/isolation/contracts.js +33 -0
  304. package/dist/isolation/contracts.js.map +1 -0
  305. package/dist/isolation/coordinator.d.ts +10 -0
  306. package/dist/isolation/coordinator.d.ts.map +1 -0
  307. package/dist/isolation/coordinator.js +79 -0
  308. package/dist/isolation/coordinator.js.map +1 -0
  309. package/dist/isolation/index.d.ts +5 -0
  310. package/dist/isolation/index.d.ts.map +1 -0
  311. package/dist/isolation/index.js +5 -0
  312. package/dist/isolation/index.js.map +1 -0
  313. package/dist/isolation/process.d.ts +11 -0
  314. package/dist/isolation/process.d.ts.map +1 -0
  315. package/dist/isolation/process.js +131 -0
  316. package/dist/isolation/process.js.map +1 -0
  317. package/dist/isolation/worktree.d.ts +25 -0
  318. package/dist/isolation/worktree.d.ts.map +1 -0
  319. package/dist/isolation/worktree.js +282 -0
  320. package/dist/isolation/worktree.js.map +1 -0
  321. package/dist/memory.d.ts.map +1 -1
  322. package/dist/memory.js +5 -1
  323. package/dist/memory.js.map +1 -1
  324. package/dist/model-detection.d.ts +14 -18
  325. package/dist/model-detection.d.ts.map +1 -1
  326. package/dist/model-detection.js +287 -149
  327. package/dist/model-detection.js.map +1 -1
  328. package/dist/models/index.d.ts +3 -0
  329. package/dist/models/index.d.ts.map +1 -0
  330. package/dist/models/index.js +3 -0
  331. package/dist/models/index.js.map +1 -0
  332. package/dist/models/metadata.d.ts +43 -0
  333. package/dist/models/metadata.d.ts.map +1 -0
  334. package/dist/models/metadata.js +72 -0
  335. package/dist/models/metadata.js.map +1 -0
  336. package/dist/models/openrouter.d.ts +6 -0
  337. package/dist/models/openrouter.d.ts.map +1 -0
  338. package/dist/models/openrouter.js +38 -0
  339. package/dist/models/openrouter.js.map +1 -0
  340. package/dist/orchestration/accounting.d.ts +35 -0
  341. package/dist/orchestration/accounting.d.ts.map +1 -0
  342. package/dist/orchestration/accounting.js +27 -0
  343. package/dist/orchestration/accounting.js.map +1 -0
  344. package/dist/orchestration/actions.d.ts +23 -0
  345. package/dist/orchestration/actions.d.ts.map +1 -0
  346. package/dist/orchestration/actions.js +65 -0
  347. package/dist/orchestration/actions.js.map +1 -0
  348. package/dist/orchestration/cli.d.ts +28 -0
  349. package/dist/orchestration/cli.d.ts.map +1 -0
  350. package/dist/orchestration/cli.js +178 -0
  351. package/dist/orchestration/cli.js.map +1 -0
  352. package/dist/orchestration/coordinator-actions.d.ts +15 -0
  353. package/dist/orchestration/coordinator-actions.d.ts.map +1 -0
  354. package/dist/orchestration/coordinator-actions.js +79 -0
  355. package/dist/orchestration/coordinator-actions.js.map +1 -0
  356. package/dist/orchestration/coordinator-types.d.ts +193 -0
  357. package/dist/orchestration/coordinator-types.d.ts.map +1 -0
  358. package/dist/orchestration/coordinator-types.js +2 -0
  359. package/dist/orchestration/coordinator-types.js.map +1 -0
  360. package/dist/orchestration/coordinator.d.ts +32 -0
  361. package/dist/orchestration/coordinator.d.ts.map +1 -0
  362. package/dist/orchestration/coordinator.js +405 -0
  363. package/dist/orchestration/coordinator.js.map +1 -0
  364. package/dist/orchestration/execution-cli.d.ts +11 -0
  365. package/dist/orchestration/execution-cli.d.ts.map +1 -0
  366. package/dist/orchestration/execution-cli.js +183 -0
  367. package/dist/orchestration/execution-cli.js.map +1 -0
  368. package/dist/orchestration/execution-journal.d.ts +15 -0
  369. package/dist/orchestration/execution-journal.d.ts.map +1 -0
  370. package/dist/orchestration/execution-journal.js +477 -0
  371. package/dist/orchestration/execution-journal.js.map +1 -0
  372. package/dist/orchestration/execution-store.d.ts +39 -0
  373. package/dist/orchestration/execution-store.d.ts.map +1 -0
  374. package/dist/orchestration/execution-store.js +325 -0
  375. package/dist/orchestration/execution-store.js.map +1 -0
  376. package/dist/orchestration/execution.d.ts +8 -0
  377. package/dist/orchestration/execution.d.ts.map +1 -0
  378. package/dist/orchestration/execution.js +47 -0
  379. package/dist/orchestration/execution.js.map +1 -0
  380. package/dist/orchestration/index.d.ts +20 -0
  381. package/dist/orchestration/index.d.ts.map +1 -0
  382. package/dist/orchestration/index.js +17 -0
  383. package/dist/orchestration/index.js.map +1 -0
  384. package/dist/orchestration/progress.d.ts +19 -0
  385. package/dist/orchestration/progress.d.ts.map +1 -0
  386. package/dist/orchestration/progress.js +20 -0
  387. package/dist/orchestration/progress.js.map +1 -0
  388. package/dist/orchestration/recovery.d.ts +4 -0
  389. package/dist/orchestration/recovery.d.ts.map +1 -0
  390. package/dist/orchestration/recovery.js +121 -0
  391. package/dist/orchestration/recovery.js.map +1 -0
  392. package/dist/orchestration/request-accounting.d.ts +35 -0
  393. package/dist/orchestration/request-accounting.d.ts.map +1 -0
  394. package/dist/orchestration/request-accounting.js +71 -0
  395. package/dist/orchestration/request-accounting.js.map +1 -0
  396. package/dist/orchestration/routing.d.ts +20 -0
  397. package/dist/orchestration/routing.d.ts.map +1 -0
  398. package/dist/orchestration/routing.js +38 -0
  399. package/dist/orchestration/routing.js.map +1 -0
  400. package/dist/orchestration/store.d.ts +26 -0
  401. package/dist/orchestration/store.d.ts.map +1 -0
  402. package/dist/orchestration/store.js +381 -0
  403. package/dist/orchestration/store.js.map +1 -0
  404. package/dist/orchestration/types.d.ts +201 -0
  405. package/dist/orchestration/types.d.ts.map +1 -0
  406. package/dist/orchestration/types.js +11 -0
  407. package/dist/orchestration/types.js.map +1 -0
  408. package/dist/orchestration/validation.d.ts +29 -0
  409. package/dist/orchestration/validation.d.ts.map +1 -0
  410. package/dist/orchestration/validation.js +440 -0
  411. package/dist/orchestration/validation.js.map +1 -0
  412. package/dist/orchestration/verification.d.ts +30 -0
  413. package/dist/orchestration/verification.d.ts.map +1 -0
  414. package/dist/orchestration/verification.js +204 -0
  415. package/dist/orchestration/verification.js.map +1 -0
  416. package/dist/orchestration/worker-context.d.ts +33 -0
  417. package/dist/orchestration/worker-context.d.ts.map +1 -0
  418. package/dist/orchestration/worker-context.js +31 -0
  419. package/dist/orchestration/worker-context.js.map +1 -0
  420. package/dist/policy.d.ts +1 -0
  421. package/dist/policy.d.ts.map +1 -1
  422. package/dist/policy.js +25 -5
  423. package/dist/policy.js.map +1 -1
  424. package/dist/preferences/controls.d.ts +21 -0
  425. package/dist/preferences/controls.d.ts.map +1 -0
  426. package/dist/preferences/controls.js +36 -0
  427. package/dist/preferences/controls.js.map +1 -0
  428. package/dist/preferences/flags.d.ts +8 -0
  429. package/dist/preferences/flags.d.ts.map +1 -0
  430. package/dist/preferences/flags.js +27 -0
  431. package/dist/preferences/flags.js.map +1 -0
  432. package/dist/preferences/index.d.ts +9 -0
  433. package/dist/preferences/index.d.ts.map +1 -0
  434. package/dist/preferences/index.js +9 -0
  435. package/dist/preferences/index.js.map +1 -0
  436. package/dist/preferences/once.d.ts +8 -0
  437. package/dist/preferences/once.d.ts.map +1 -0
  438. package/dist/preferences/once.js +28 -0
  439. package/dist/preferences/once.js.map +1 -0
  440. package/dist/preferences/resolve.d.ts +14 -0
  441. package/dist/preferences/resolve.d.ts.map +1 -0
  442. package/dist/preferences/resolve.js +58 -0
  443. package/dist/preferences/resolve.js.map +1 -0
  444. package/dist/preferences/store.d.ts +19 -0
  445. package/dist/preferences/store.d.ts.map +1 -0
  446. package/dist/preferences/store.js +147 -0
  447. package/dist/preferences/store.js.map +1 -0
  448. package/dist/preferences/submission.d.ts +16 -0
  449. package/dist/preferences/submission.d.ts.map +1 -0
  450. package/dist/preferences/submission.js +29 -0
  451. package/dist/preferences/submission.js.map +1 -0
  452. package/dist/preferences/types.d.ts +23 -0
  453. package/dist/preferences/types.d.ts.map +1 -0
  454. package/dist/preferences/types.js +2 -0
  455. package/dist/preferences/types.js.map +1 -0
  456. package/dist/preferences/validate.d.ts +3 -0
  457. package/dist/preferences/validate.d.ts.map +1 -0
  458. package/dist/preferences/validate.js +15 -0
  459. package/dist/preferences/validate.js.map +1 -0
  460. package/dist/process-cancellation.d.ts +6 -0
  461. package/dist/process-cancellation.d.ts.map +1 -0
  462. package/dist/process-cancellation.js +39 -0
  463. package/dist/process-cancellation.js.map +1 -0
  464. package/dist/providers/anthropic.d.ts +7 -2
  465. package/dist/providers/anthropic.d.ts.map +1 -1
  466. package/dist/providers/anthropic.js +72 -41
  467. package/dist/providers/anthropic.js.map +1 -1
  468. package/dist/providers/bedrock.d.ts +1 -1
  469. package/dist/providers/bedrock.d.ts.map +1 -1
  470. package/dist/providers/bedrock.js +39 -23
  471. package/dist/providers/bedrock.js.map +1 -1
  472. package/dist/providers/compat.d.ts +4 -3
  473. package/dist/providers/compat.d.ts.map +1 -1
  474. package/dist/providers/compat.js +49 -31
  475. package/dist/providers/compat.js.map +1 -1
  476. package/dist/providers/deepseek-reasoning.d.ts +64 -0
  477. package/dist/providers/deepseek-reasoning.d.ts.map +1 -0
  478. package/dist/providers/deepseek-reasoning.js +28 -0
  479. package/dist/providers/deepseek-reasoning.js.map +1 -0
  480. package/dist/providers/google.d.ts +4 -3
  481. package/dist/providers/google.d.ts.map +1 -1
  482. package/dist/providers/google.js +128 -19
  483. package/dist/providers/google.js.map +1 -1
  484. package/dist/providers/index.d.ts +2 -0
  485. package/dist/providers/index.d.ts.map +1 -1
  486. package/dist/providers/index.js +216 -36
  487. package/dist/providers/index.js.map +1 -1
  488. package/dist/providers/ollama.d.ts.map +1 -1
  489. package/dist/providers/ollama.js +79 -43
  490. package/dist/providers/ollama.js.map +1 -1
  491. package/dist/providers/openai.d.ts +2 -2
  492. package/dist/providers/openai.d.ts.map +1 -1
  493. package/dist/providers/openai.js +50 -46
  494. package/dist/providers/openai.js.map +1 -1
  495. package/dist/providers/openrouter-bounds.d.ts +22 -0
  496. package/dist/providers/openrouter-bounds.d.ts.map +1 -0
  497. package/dist/providers/openrouter-bounds.js +16 -0
  498. package/dist/providers/openrouter-bounds.js.map +1 -0
  499. package/dist/providers/stream-attempt.d.ts +29 -0
  500. package/dist/providers/stream-attempt.d.ts.map +1 -0
  501. package/dist/providers/stream-attempt.js +63 -0
  502. package/dist/providers/stream-attempt.js.map +1 -0
  503. package/dist/providers/types.d.ts +40 -4
  504. package/dist/providers/types.d.ts.map +1 -1
  505. package/dist/providers/types.js +19 -0
  506. package/dist/providers/types.js.map +1 -1
  507. package/dist/replay.d.ts.map +1 -1
  508. package/dist/replay.js +16 -0
  509. package/dist/replay.js.map +1 -1
  510. package/dist/risk.d.ts.map +1 -1
  511. package/dist/risk.js +5 -0
  512. package/dist/risk.js.map +1 -1
  513. package/dist/router.d.ts +7 -110
  514. package/dist/router.d.ts.map +1 -1
  515. package/dist/router.js +0 -451
  516. package/dist/router.js.map +1 -1
  517. package/dist/routing/index.d.ts +6 -0
  518. package/dist/routing/index.d.ts.map +1 -0
  519. package/dist/routing/index.js +5 -0
  520. package/dist/routing/index.js.map +1 -0
  521. package/dist/routing/prompt.d.ts +4 -0
  522. package/dist/routing/prompt.d.ts.map +1 -0
  523. package/dist/routing/prompt.js +14 -0
  524. package/dist/routing/prompt.js.map +1 -0
  525. package/dist/routing/select.d.ts +9 -0
  526. package/dist/routing/select.d.ts.map +1 -0
  527. package/dist/routing/select.js +279 -0
  528. package/dist/routing/select.js.map +1 -0
  529. package/dist/routing/smart.d.ts +31 -0
  530. package/dist/routing/smart.d.ts.map +1 -0
  531. package/dist/routing/smart.js +46 -0
  532. package/dist/routing/smart.js.map +1 -0
  533. package/dist/routing/types.d.ts +79 -0
  534. package/dist/routing/types.d.ts.map +1 -0
  535. package/dist/routing/types.js +2 -0
  536. package/dist/routing/types.js.map +1 -0
  537. package/dist/runlog.d.ts +32 -4
  538. package/dist/runlog.d.ts.map +1 -1
  539. package/dist/runlog.js +22 -6
  540. package/dist/runlog.js.map +1 -1
  541. package/dist/runtime/index.d.ts +6 -0
  542. package/dist/runtime/index.d.ts.map +1 -0
  543. package/dist/runtime/index.js +6 -0
  544. package/dist/runtime/index.js.map +1 -0
  545. package/dist/runtime/permissions.d.ts +21 -0
  546. package/dist/runtime/permissions.d.ts.map +1 -0
  547. package/dist/runtime/permissions.js +110 -0
  548. package/dist/runtime/permissions.js.map +1 -0
  549. package/dist/runtime/repair.d.ts +20 -0
  550. package/dist/runtime/repair.d.ts.map +1 -0
  551. package/dist/runtime/repair.js +50 -0
  552. package/dist/runtime/repair.js.map +1 -0
  553. package/dist/runtime/tool-retry.d.ts +3 -0
  554. package/dist/runtime/tool-retry.d.ts.map +1 -0
  555. package/dist/runtime/tool-retry.js +12 -0
  556. package/dist/runtime/tool-retry.js.map +1 -0
  557. package/dist/runtime/turn.d.ts +97 -0
  558. package/dist/runtime/turn.d.ts.map +1 -0
  559. package/dist/runtime/turn.js +437 -0
  560. package/dist/runtime/turn.js.map +1 -0
  561. package/dist/runtime/types.d.ts +11 -0
  562. package/dist/runtime/types.d.ts.map +1 -0
  563. package/dist/runtime/types.js +5 -0
  564. package/dist/runtime/types.js.map +1 -0
  565. package/dist/sandbox/docker.d.ts +4 -4
  566. package/dist/sandbox/docker.d.ts.map +1 -1
  567. package/dist/sandbox/docker.js +55 -16
  568. package/dist/sandbox/docker.js.map +1 -1
  569. package/dist/sandbox/native.d.ts +1 -0
  570. package/dist/sandbox/native.d.ts.map +1 -1
  571. package/dist/sandbox/native.js +11 -2
  572. package/dist/sandbox/native.js.map +1 -1
  573. package/dist/scope.d.ts +5 -9
  574. package/dist/scope.d.ts.map +1 -1
  575. package/dist/scope.js +43 -20
  576. package/dist/scope.js.map +1 -1
  577. package/dist/session-management/actions.d.ts +28 -0
  578. package/dist/session-management/actions.d.ts.map +1 -0
  579. package/dist/session-management/actions.js +78 -0
  580. package/dist/session-management/actions.js.map +1 -0
  581. package/dist/session-management/cli.d.ts +24 -0
  582. package/dist/session-management/cli.d.ts.map +1 -0
  583. package/dist/session-management/cli.js +92 -0
  584. package/dist/session-management/cli.js.map +1 -0
  585. package/dist/session-management/files.d.ts +5 -0
  586. package/dist/session-management/files.d.ts.map +1 -0
  587. package/dist/session-management/files.js +92 -0
  588. package/dist/session-management/files.js.map +1 -0
  589. package/dist/session-management/index.d.ts +7 -0
  590. package/dist/session-management/index.d.ts.map +1 -0
  591. package/dist/session-management/index.js +7 -0
  592. package/dist/session-management/index.js.map +1 -0
  593. package/dist/session-management/permissions.d.ts +12 -0
  594. package/dist/session-management/permissions.d.ts.map +1 -0
  595. package/dist/session-management/permissions.js +33 -0
  596. package/dist/session-management/permissions.js.map +1 -0
  597. package/dist/session-management/presentation.d.ts +5 -0
  598. package/dist/session-management/presentation.d.ts.map +1 -0
  599. package/dist/session-management/presentation.js +10 -0
  600. package/dist/session-management/presentation.js.map +1 -0
  601. package/dist/session-management/transfer.d.ts +9 -0
  602. package/dist/session-management/transfer.d.ts.map +1 -0
  603. package/dist/session-management/transfer.js +39 -0
  604. package/dist/session-management/transfer.js.map +1 -0
  605. package/dist/sessions/context.d.ts +4 -0
  606. package/dist/sessions/context.d.ts.map +1 -0
  607. package/dist/sessions/context.js +6 -0
  608. package/dist/sessions/context.js.map +1 -0
  609. package/dist/sessions/format.d.ts +38 -0
  610. package/dist/sessions/format.d.ts.map +1 -0
  611. package/dist/sessions/format.js +116 -0
  612. package/dist/sessions/format.js.map +1 -0
  613. package/dist/sessions/history.d.ts +37 -0
  614. package/dist/sessions/history.d.ts.map +1 -0
  615. package/dist/sessions/history.js +197 -0
  616. package/dist/sessions/history.js.map +1 -0
  617. package/dist/sessions/index.d.ts +8 -0
  618. package/dist/sessions/index.d.ts.map +1 -0
  619. package/dist/sessions/index.js +8 -0
  620. package/dist/sessions/index.js.map +1 -0
  621. package/dist/sessions/output.d.ts +31 -0
  622. package/dist/sessions/output.d.ts.map +1 -0
  623. package/dist/sessions/output.js +115 -0
  624. package/dist/sessions/output.js.map +1 -0
  625. package/dist/sessions/portable.d.ts +26 -0
  626. package/dist/sessions/portable.d.ts.map +1 -0
  627. package/dist/sessions/portable.js +105 -0
  628. package/dist/sessions/portable.js.map +1 -0
  629. package/dist/sessions/snapshot.d.ts +11 -0
  630. package/dist/sessions/snapshot.d.ts.map +1 -0
  631. package/dist/sessions/snapshot.js +118 -0
  632. package/dist/sessions/snapshot.js.map +1 -0
  633. package/dist/sessions/tool-state.d.ts +11 -0
  634. package/dist/sessions/tool-state.d.ts.map +1 -0
  635. package/dist/sessions/tool-state.js +152 -0
  636. package/dist/sessions/tool-state.js.map +1 -0
  637. package/dist/setup.d.ts.map +1 -1
  638. package/dist/setup.js +13 -5
  639. package/dist/setup.js.map +1 -1
  640. package/dist/spawning/actions.d.ts +23 -0
  641. package/dist/spawning/actions.d.ts.map +1 -0
  642. package/dist/spawning/actions.js +120 -0
  643. package/dist/spawning/actions.js.map +1 -0
  644. package/dist/spawning/authority.d.ts +15 -0
  645. package/dist/spawning/authority.d.ts.map +1 -0
  646. package/dist/spawning/authority.js +16 -0
  647. package/dist/spawning/authority.js.map +1 -0
  648. package/dist/spawning/cli.d.ts +4 -0
  649. package/dist/spawning/cli.d.ts.map +1 -0
  650. package/dist/spawning/cli.js +46 -0
  651. package/dist/spawning/cli.js.map +1 -0
  652. package/dist/spawning/execution.d.ts +13 -0
  653. package/dist/spawning/execution.d.ts.map +1 -0
  654. package/dist/spawning/execution.js +59 -0
  655. package/dist/spawning/execution.js.map +1 -0
  656. package/dist/spawning/index.d.ts +8 -0
  657. package/dist/spawning/index.d.ts.map +1 -0
  658. package/dist/spawning/index.js +8 -0
  659. package/dist/spawning/index.js.map +1 -0
  660. package/dist/spawning/store.d.ts +12 -0
  661. package/dist/spawning/store.d.ts.map +1 -0
  662. package/dist/spawning/store.js +93 -0
  663. package/dist/spawning/store.js.map +1 -0
  664. package/dist/spawning/types.d.ts +34 -0
  665. package/dist/spawning/types.d.ts.map +1 -0
  666. package/dist/spawning/types.js +2 -0
  667. package/dist/spawning/types.js.map +1 -0
  668. package/dist/spawning/validation.d.ts +14 -0
  669. package/dist/spawning/validation.d.ts.map +1 -0
  670. package/dist/spawning/validation.js +95 -0
  671. package/dist/spawning/validation.js.map +1 -0
  672. package/dist/storage.d.ts +29 -1
  673. package/dist/storage.d.ts.map +1 -1
  674. package/dist/storage.js +112 -40
  675. package/dist/storage.js.map +1 -1
  676. package/dist/supervision/approval.d.ts +4 -0
  677. package/dist/supervision/approval.d.ts.map +1 -0
  678. package/dist/supervision/approval.js +7 -0
  679. package/dist/supervision/approval.js.map +1 -0
  680. package/dist/supervision/availability.d.ts +34 -0
  681. package/dist/supervision/availability.d.ts.map +1 -0
  682. package/dist/supervision/availability.js +44 -0
  683. package/dist/supervision/availability.js.map +1 -0
  684. package/dist/supervision/context.d.ts +36 -0
  685. package/dist/supervision/context.d.ts.map +1 -0
  686. package/dist/supervision/context.js +52 -0
  687. package/dist/supervision/context.js.map +1 -0
  688. package/dist/supervision/contracts.d.ts +7 -0
  689. package/dist/supervision/contracts.d.ts.map +1 -0
  690. package/dist/supervision/contracts.js +86 -0
  691. package/dist/supervision/contracts.js.map +1 -0
  692. package/dist/supervision/effects.d.ts +15 -0
  693. package/dist/supervision/effects.d.ts.map +1 -0
  694. package/dist/supervision/effects.js +19 -0
  695. package/dist/supervision/effects.js.map +1 -0
  696. package/dist/supervision/evidence.d.ts +32 -0
  697. package/dist/supervision/evidence.d.ts.map +1 -0
  698. package/dist/supervision/evidence.js +68 -0
  699. package/dist/supervision/evidence.js.map +1 -0
  700. package/dist/supervision/health.d.ts +16 -0
  701. package/dist/supervision/health.d.ts.map +1 -0
  702. package/dist/supervision/health.js +86 -0
  703. package/dist/supervision/health.js.map +1 -0
  704. package/dist/supervision/index.d.ts +13 -0
  705. package/dist/supervision/index.d.ts.map +1 -0
  706. package/dist/supervision/index.js +13 -0
  707. package/dist/supervision/index.js.map +1 -0
  708. package/dist/supervision/journal.d.ts +16 -0
  709. package/dist/supervision/journal.d.ts.map +1 -0
  710. package/dist/supervision/journal.js +311 -0
  711. package/dist/supervision/journal.js.map +1 -0
  712. package/dist/supervision/receipts.d.ts +4 -0
  713. package/dist/supervision/receipts.d.ts.map +1 -0
  714. package/dist/supervision/receipts.js +21 -0
  715. package/dist/supervision/receipts.js.map +1 -0
  716. package/dist/supervision/reply.d.ts +12 -0
  717. package/dist/supervision/reply.d.ts.map +1 -0
  718. package/dist/supervision/reply.js +50 -0
  719. package/dist/supervision/reply.js.map +1 -0
  720. package/dist/supervision/runtime.d.ts +8 -0
  721. package/dist/supervision/runtime.d.ts.map +1 -0
  722. package/dist/supervision/runtime.js +188 -0
  723. package/dist/supervision/runtime.js.map +1 -0
  724. package/dist/supervision/types.d.ts +174 -0
  725. package/dist/supervision/types.d.ts.map +1 -0
  726. package/dist/supervision/types.js +2 -0
  727. package/dist/supervision/types.js.map +1 -0
  728. package/dist/tools.d.ts +12 -0
  729. package/dist/tools.d.ts.map +1 -1
  730. package/dist/tools.js +131 -23
  731. package/dist/tools.js.map +1 -1
  732. package/dist/turn-controller.d.ts +12 -0
  733. package/dist/turn-controller.d.ts.map +1 -0
  734. package/dist/turn-controller.js +51 -0
  735. package/dist/turn-controller.js.map +1 -0
  736. package/dist/types.d.ts +7 -1
  737. package/dist/types.d.ts.map +1 -1
  738. package/dist/types.js +3 -0
  739. package/dist/types.js.map +1 -1
  740. package/dist/ui/agent.d.ts +11 -10
  741. package/dist/ui/agent.d.ts.map +1 -1
  742. package/dist/ui/agent.js +293 -897
  743. package/dist/ui/agent.js.map +1 -1
  744. package/dist/ui/commands.d.ts +20 -2
  745. package/dist/ui/commands.d.ts.map +1 -1
  746. package/dist/ui/commands.js +208 -155
  747. package/dist/ui/commands.js.map +1 -1
  748. package/dist/ui/completions.d.ts.map +1 -1
  749. package/dist/ui/completions.js +16 -5
  750. package/dist/ui/completions.js.map +1 -1
  751. package/dist/ui/index.d.ts +6 -2
  752. package/dist/ui/index.d.ts.map +1 -1
  753. package/dist/ui/index.js +13 -11
  754. package/dist/ui/index.js.map +1 -1
  755. package/dist/ui/messages.d.ts.map +1 -1
  756. package/dist/ui/messages.js +5 -0
  757. package/dist/ui/messages.js.map +1 -1
  758. package/dist/ui/modals/index.d.ts +1 -0
  759. package/dist/ui/modals/index.d.ts.map +1 -1
  760. package/dist/ui/modals/index.js +1 -0
  761. package/dist/ui/modals/index.js.map +1 -1
  762. package/dist/ui/modals/prompts.d.ts +4 -7
  763. package/dist/ui/modals/prompts.d.ts.map +1 -1
  764. package/dist/ui/modals/prompts.js +14 -10
  765. package/dist/ui/modals/prompts.js.map +1 -1
  766. package/dist/ui/modals/selectors.d.ts +1 -0
  767. package/dist/ui/modals/selectors.d.ts.map +1 -1
  768. package/dist/ui/modals/selectors.js +3 -2
  769. package/dist/ui/modals/selectors.js.map +1 -1
  770. package/dist/ui/modals/tool-output.d.ts +8 -0
  771. package/dist/ui/modals/tool-output.d.ts.map +1 -0
  772. package/dist/ui/modals/tool-output.js +26 -0
  773. package/dist/ui/modals/tool-output.js.map +1 -0
  774. package/dist/ui/model-commands.d.ts +4 -0
  775. package/dist/ui/model-commands.d.ts.map +1 -0
  776. package/dist/ui/model-commands.js +69 -0
  777. package/dist/ui/model-commands.js.map +1 -0
  778. package/dist/ui/regions/modal-host.d.ts +3 -0
  779. package/dist/ui/regions/modal-host.d.ts.map +1 -1
  780. package/dist/ui/regions/modal-host.js +7 -1
  781. package/dist/ui/regions/modal-host.js.map +1 -1
  782. package/dist/ui/regions/status-region.d.ts +2 -1
  783. package/dist/ui/regions/status-region.d.ts.map +1 -1
  784. package/dist/ui/regions/status-region.js +2 -2
  785. package/dist/ui/regions/status-region.js.map +1 -1
  786. package/dist/ui/regions/tool-activity.d.ts +6 -0
  787. package/dist/ui/regions/tool-activity.d.ts.map +1 -0
  788. package/dist/ui/regions/tool-activity.js +9 -0
  789. package/dist/ui/regions/tool-activity.js.map +1 -0
  790. package/dist/ui/regions/transcript-region.d.ts.map +1 -1
  791. package/dist/ui/regions/transcript-region.js +2 -1
  792. package/dist/ui/regions/transcript-region.js.map +1 -1
  793. package/dist/ui/regions/workflow-region.d.ts +9 -0
  794. package/dist/ui/regions/workflow-region.d.ts.map +1 -0
  795. package/dist/ui/regions/workflow-region.js +11 -0
  796. package/dist/ui/regions/workflow-region.js.map +1 -0
  797. package/dist/ui/session-commands.d.ts +3 -0
  798. package/dist/ui/session-commands.d.ts.map +1 -0
  799. package/dist/ui/session-commands.js +141 -0
  800. package/dist/ui/session-commands.js.map +1 -0
  801. package/dist/ui/state/use-approval-state.d.ts +9 -0
  802. package/dist/ui/state/use-approval-state.d.ts.map +1 -0
  803. package/dist/ui/state/use-approval-state.js +18 -0
  804. package/dist/ui/state/use-approval-state.js.map +1 -0
  805. package/dist/ui/state/use-chat-controller.d.ts +4 -1
  806. package/dist/ui/state/use-chat-controller.d.ts.map +1 -1
  807. package/dist/ui/state/use-chat-controller.js +256 -180
  808. package/dist/ui/state/use-chat-controller.js.map +1 -1
  809. package/dist/ui/state/use-modal-state.d.ts +6 -8
  810. package/dist/ui/state/use-modal-state.d.ts.map +1 -1
  811. package/dist/ui/state/use-modal-state.js +3 -4
  812. package/dist/ui/state/use-modal-state.js.map +1 -1
  813. package/dist/ui/state/use-model-state.d.ts +7 -3
  814. package/dist/ui/state/use-model-state.d.ts.map +1 -1
  815. package/dist/ui/state/use-model-state.js +24 -17
  816. package/dist/ui/state/use-model-state.js.map +1 -1
  817. package/dist/ui/state/use-queue-state.d.ts +4 -3
  818. package/dist/ui/state/use-queue-state.d.ts.map +1 -1
  819. package/dist/ui/state/use-queue-state.js +11 -8
  820. package/dist/ui/state/use-queue-state.js.map +1 -1
  821. package/dist/ui/state/use-session-init.d.ts +4 -0
  822. package/dist/ui/state/use-session-init.d.ts.map +1 -1
  823. package/dist/ui/state/use-session-init.js +19 -3
  824. package/dist/ui/state/use-session-init.js.map +1 -1
  825. package/dist/ui/state/use-transcript-state.d.ts +6 -3
  826. package/dist/ui/state/use-transcript-state.d.ts.map +1 -1
  827. package/dist/ui/state/use-transcript-state.js +27 -15
  828. package/dist/ui/state/use-transcript-state.js.map +1 -1
  829. package/dist/ui/status-bar.d.ts +2 -1
  830. package/dist/ui/status-bar.d.ts.map +1 -1
  831. package/dist/ui/status-bar.js +2 -2
  832. package/dist/ui/status-bar.js.map +1 -1
  833. package/dist/ui/tool-output-cache.d.ts +12 -0
  834. package/dist/ui/tool-output-cache.d.ts.map +1 -0
  835. package/dist/ui/tool-output-cache.js +27 -0
  836. package/dist/ui/tool-output-cache.js.map +1 -0
  837. package/dist/ui/tool-output-commands.d.ts +3 -0
  838. package/dist/ui/tool-output-commands.d.ts.map +1 -0
  839. package/dist/ui/tool-output-commands.js +37 -0
  840. package/dist/ui/tool-output-commands.js.map +1 -0
  841. package/dist/ui/tool-output-wrap.d.ts +3 -0
  842. package/dist/ui/tool-output-wrap.d.ts.map +1 -0
  843. package/dist/ui/tool-output-wrap.js +24 -0
  844. package/dist/ui/tool-output-wrap.js.map +1 -0
  845. package/dist/ui/tool-progress.d.ts +23 -0
  846. package/dist/ui/tool-progress.d.ts.map +1 -0
  847. package/dist/ui/tool-progress.js +42 -0
  848. package/dist/ui/tool-progress.js.map +1 -0
  849. package/dist/ui/types.d.ts +8 -0
  850. package/dist/ui/types.d.ts.map +1 -1
  851. package/dist/ui/workflow-progress.d.ts +21 -0
  852. package/dist/ui/workflow-progress.d.ts.map +1 -0
  853. package/dist/ui/workflow-progress.js +107 -0
  854. package/dist/ui/workflow-progress.js.map +1 -0
  855. package/package.json +13 -4
  856. package/scripts/verify-runlog.mjs +208 -0
@@ -9,10 +9,8 @@
9
9
  import * as fs from 'fs';
10
10
  import * as path from 'path';
11
11
  import * as config from '../config.js';
12
- import { selectProvider, getAvailableProviders } from '../providers/index.js';
13
12
  import { MODE_CONFIG } from '../types.js';
14
13
  import { getSystemPromptForProvider } from '../local-model.js';
15
- import { getAvailableModels, getModelContextLimit } from '../model-detection.js';
16
14
  import * as storage from '../storage.js';
17
15
  import * as mcp from '../mcp.js';
18
16
  import * as skills from '../skills.js';
@@ -41,10 +39,30 @@ export const COMMAND_NAMES = [
41
39
  '/quit',
42
40
  '/model',
43
41
  '/provider',
42
+ '/doctor',
43
+ '/permissions',
44
+ '/auto',
45
+ '/tools',
46
+ '/run',
47
+ '/orchestrate',
48
+ '/brain',
49
+ '/kg',
50
+ '/improve',
51
+ '/agents',
52
+ '/tasks',
53
+ '/defaults',
54
+ '/once',
44
55
  '/mode',
45
56
  '/undo',
46
57
  '/export',
58
+ '/import',
59
+ '/branch',
60
+ '/checkout',
61
+ '/diff',
62
+ '/replay',
47
63
  '/resume',
64
+ '/new',
65
+ '/sessions',
48
66
  '/compact',
49
67
  '/scope',
50
68
  '/memory',
@@ -70,6 +88,19 @@ function buildFullSystemPrompt(dir, provider) {
70
88
  function getActiveProjectDir(ctx) {
71
89
  return ctx.sessionRef.current?.projectPath ?? process.cwd();
72
90
  }
91
+ /** Refresh the active prompt; a failed reload must not retain revoked context. */
92
+ function refreshProjectContext(ctx) {
93
+ ctx.reloadDefaults?.(getActiveProjectDir(ctx));
94
+ let content = getSystemPromptForProvider(ctx.actualProvider);
95
+ try {
96
+ content = buildFullSystemPrompt(getActiveProjectDir(ctx), ctx.actualProvider);
97
+ }
98
+ finally {
99
+ const messages = ctx.llmMessages.current;
100
+ ctx.llmMessages.current = [{ role: 'system', content }, ...messages.filter(message => message.role !== 'system')];
101
+ ctx.setContextTokens(ctx.estimateContextTokens());
102
+ }
103
+ }
73
104
  function formatSessionLogLimit(limit) {
74
105
  return limit > 0 ? String(limit) : 'unlimited';
75
106
  }
@@ -110,12 +141,47 @@ export async function handleCommand(cmd, ctx) {
110
141
  Model & Mode
111
142
  /model [name|list] Switch model, or list/pick available models
112
143
  /provider [name|list] Switch provider, or list providers
113
- /mode [plan|hybrid|work] Switch mode (Shift+Tab to cycle)
144
+ /doctor [providers|provider <name>] Provider health; --probe checks discovery
145
+ /defaults [save|reset] Inspect or persist project model defaults
146
+ /once --provider <name> -- <prompt> Override one turn (also --model)
147
+ /mode [plan|hybrid|work|auto] Switch execution mode (Shift+Tab cycles safe modes)
114
148
 
115
149
  Conversation
116
150
  /undo Undo the last change (up to 10 steps)
117
- /export [file.md] Export conversation to markdown
118
- /resume [sessionId] Resume a saved session (restores full context)
151
+ /branch [name] Branch and switch conversation with current tool state
152
+ /checkout <id|name> Switch conversation; workspace files stay in place
153
+ /diff <id|name> Compare another conversation with the current one
154
+ /replay [revision] Read recorded conversation without executing tools
155
+ /auto [on|off] Run without prompts for this REPL session
156
+ /permissions [off|on|list|reset|revoke <id>] Control prompts and saved approvals
157
+ /brain init|status|ingest|search|entity|neighbors|path Project knowledge
158
+ /kg search|graph Knowledge graph
159
+ /improve history|propose|run|rollback [--run <id>] Bounded improvement cycles
160
+ /orchestrate <goal> Plan, review and run within one goal budget
161
+ /orchestrate <goal> --worker-provider NAME --worker-model ID --reviewer-provider NAME --reviewer-model ID --attempts 1..4
162
+ /orchestrate <goal> --supervise --isolation-image sha256:ID --principle robustness
163
+ --controller-provider NAME --controller-model ID [--supervision-reviewer-provider NAME --supervision-reviewer-model ID]
164
+ /orchestrate status|proposal|replay|resume|cancel <id> Inspect or control a goal
165
+ /orchestrate approve <id> <hash> Review and approve the exact proposal
166
+ /orchestrate revise <id> <plan> Correct a proposal before execution
167
+ /run <plan> --dry-run Validate a task plan without starting agents
168
+ /run prepare <plan> Record an inactive orchestration run
169
+ /run <plan> Execute a reviewed task graph with tool approvals
170
+ /run execute|resume <id> Start or resume bounded workers
171
+ /run retry|accept <id> <task> Retry work or accept recorded evidence
172
+ /run status|approve|cancel <id> Inspect or review a prepared run
173
+ /agents hud agents|workflows|off Choose compact live progress
174
+ /agents [tree] [run-id] Inspect declared agents
175
+ /agents stop|retry <agent> --run <id> Control a bounded agent
176
+ /agents spawn <children.json> --run <id> Review and execute bounded children
177
+ /agents spawn --resume <hash> --run <id> Recover an approved child admission
178
+ /tasks [graph] [run-id] Inspect task dependencies
179
+ /tools [list|last|output-id] Inspect retained tool output; expand/collapse and page
180
+ /export [file.json|file.md] Save private history JSON or readable markdown
181
+ /import <file.json> Validate and import into a separate inactive session
182
+ /new Start a separate session
183
+ /sessions List saved sessions
184
+ /resume [sessionId] Resume validated conversation and tool context
119
185
  /compact [status] Compress conversation context; status shows a summary
120
186
 
121
187
  Workspace
@@ -146,79 +212,110 @@ File references: @filename, ./path, /absolute/path`;
146
212
  ctx.addMessage('system', help);
147
213
  break;
148
214
  }
149
- case '/provider':
150
- if (parts[1] && parts[1] !== 'list') {
151
- const requested = parts[1].toLowerCase();
152
- const available = getAvailableProviders();
153
- if (!available.includes(requested)) {
154
- ctx.addMessage('error', `Provider "${requested}" is not configured. Run /provider (no args) for an interactive picker with setup.`);
155
- break;
215
+ case '/brain':
216
+ case '/kg': {
217
+ const { runBrainCommand } = await import('../brain/index.js');
218
+ const { parseOrchestrationArgs } = await import('../orchestration/index.js');
219
+ await runBrainCommand(parseOrchestrationArgs(cmd.slice(parts[0].length)), { kg: parts[0] === '/kg', cwd: getActiveProjectDir(ctx), signal: ctx.signal, mode: ctx.mode, confirmation: ctx.confirmMode ? 'mutating' : 'none', approve: ctx.approve ? (decision) => ctx.approve(decision, ctx.signal) : undefined, write: text => ctx.addMessage('system', text.trimEnd()) });
220
+ break;
221
+ }
222
+ case '/improve': {
223
+ const { runImprovementCommand } = await import('../improvement/index.js');
224
+ const { parseOrchestrationArgs } = await import('../orchestration/index.js');
225
+ await runImprovementCommand(parseOrchestrationArgs(cmd.slice(parts[0].length)), { onProgress: ctx.onWorkflowProgress, cwd: getActiveProjectDir(ctx), signal: ctx.signal, mode: ctx.mode, source: 'repl', approvals: ctx.approvals, confirmation: ctx.confirmMode ? 'mutating' : 'none', approve: ctx.approve ? (decision, signal) => ctx.approve(decision, signal ?? ctx.signal) : undefined, write: text => ctx.addMessage('system', text.trimEnd()) });
226
+ break;
227
+ }
228
+ case '/orchestrate': {
229
+ const { runGoalCommand } = await import('../goals/index.js');
230
+ const { parseOrchestrationArgs } = await import('../orchestration/index.js');
231
+ await runGoalCommand(parseOrchestrationArgs(cmd.slice(parts[0].length)), { onProgress: ctx.onWorkflowProgress, cwd: getActiveProjectDir(ctx), signal: ctx.signal, mode: ctx.mode, source: 'repl', ...(ctx.provider ? { preference: { provider: ctx.provider, ...(ctx.model ? { model: ctx.model } : {}) } } : {}), approvals: ctx.approvals, confirmation: ctx.confirmMode ? 'mutating' : 'none', approve: ctx.approve ? (decision, signal) => ctx.approve(decision, signal ?? ctx.signal) : undefined, write: text => ctx.addMessage('system', text.trimEnd()) });
232
+ break;
233
+ }
234
+ case '/run':
235
+ case '/agents':
236
+ case '/tasks': {
237
+ const { runOrchestrationCommand, parseOrchestrationArgs } = await import('../orchestration/index.js');
238
+ if (command === '/agents' && parts[1] === 'hud') {
239
+ const mode = parts[2] ?? 'agents';
240
+ if (parts.length > 3 || !['agents', 'workflows', 'off'].includes(mode)) {
241
+ ctx.addMessage('error', 'Usage: /agents hud agents|workflows|off');
242
+ return;
156
243
  }
157
- ctx.setProvider(requested);
158
- // Explicit switches persist as the new defaults; a stale model from
159
- // the previous provider must not leak into this one (#233).
160
- config.set('defaultProvider', requested);
161
- config.unset('defaultModel');
162
- ctx.addMessage('system', `Provider: ${selectProvider(requested)} (saved as default)`);
163
- }
164
- else if (parts[1] === 'list') {
165
- ctx.addMessage('system', `Provider: ${ctx.actualProvider} | Available: ${getAvailableProviders().join(', ')}`);
244
+ ctx.setWorkflowHudMode?.(mode);
245
+ ctx.addMessage('system', `Workflow HUD: ${mode}.`);
246
+ return;
166
247
  }
167
- else if (ctx.openProviderPicker) {
168
- ctx.openProviderPicker();
248
+ await runOrchestrationCommand(command.slice(1), parseOrchestrationArgs(cmd.slice(parts[0].length)), { onProgress: ctx.onWorkflowProgress, cwd: getActiveProjectDir(ctx), signal: ctx.signal, mode: ctx.mode, source: 'repl', approvals: ctx.approvals, confirmation: ctx.confirmMode ? 'mutating' : 'none', approve: ctx.approve ? (decision, signal) => ctx.approve(decision, signal ?? ctx.signal) : undefined, write: text => ctx.addMessage('system', text.trimEnd()) });
249
+ break;
250
+ }
251
+ case '/tools': {
252
+ const { handleToolOutputCommand } = await import('./tool-output-commands.js');
253
+ handleToolOutputCommand(parts, ctx);
254
+ break;
255
+ }
256
+ case '/auto':
257
+ case '/permissions': {
258
+ const setting = parts[1]?.toLowerCase();
259
+ const enableAuto = command === '/auto' && setting === 'on'
260
+ || command === '/permissions' && ['off', 'auto'].includes(setting ?? '');
261
+ const disableAuto = command === '/auto' && setting === 'off'
262
+ || command === '/permissions' && ['on', 'ask'].includes(setting ?? '');
263
+ if (enableAuto || disableAuto) {
264
+ if (enableAuto)
265
+ ctx.setMode('work');
266
+ ctx.setConfirmMode(disableAuto);
267
+ ctx.addMessage('system', enableAuto
268
+ ? 'Auto mode ON — tool confirmation prompts are disabled for this REPL session. Project policy, scope, sandbox and orchestration authority still apply.'
269
+ : 'Auto mode OFF — tool confirmation prompts are enabled.');
270
+ break;
169
271
  }
170
- else {
171
- ctx.addMessage('system', `Provider: ${ctx.actualProvider} | Available: ${getAvailableProviders().join(', ')}`);
272
+ if (command === '/auto') {
273
+ ctx.addMessage('system', `Auto mode ${ctx.confirmMode ? 'OFF' : 'ON'}. Use /auto on or /auto off.`);
274
+ break;
172
275
  }
276
+ const { runPermissions } = await import('../approvals/index.js');
277
+ await runPermissions(parts.slice(1), { cwd: getActiveProjectDir(ctx), sessionId: ctx.sessionRef.current?.id,
278
+ store: ctx.approvals, signal: ctx.signal, write: text => ctx.addMessage('system', text.trimEnd()) });
173
279
  break;
280
+ }
281
+ case '/doctor': {
282
+ const { diagnoseProviders, formatDoctor } = await import('../doctor.js');
283
+ const { report, exitCode } = await diagnoseProviders(parts.slice(1), {
284
+ signal: ctx.signal,
285
+ onProgress: provider => ctx.addMessage('system', `Checking ${provider} model discovery...`),
286
+ });
287
+ ctx.addMessage(exitCode ? 'error' : 'system', parts.includes('--json') ? JSON.stringify(report) : formatDoctor(report));
288
+ break;
289
+ }
290
+ case '/provider':
174
291
  case '/model':
175
- if (parts[1] && parts[1] !== 'list') {
176
- const newModel = parts[1];
177
- const oldModel = ctx.model || ctx.actualModel;
178
- // Check context compatibility before switching (#26)
179
- const oldLimit = getModelContextLimit(ctx.actualProvider, oldModel);
180
- const newLimit = getModelContextLimit(ctx.actualProvider, newModel);
181
- const currentTokens = ctx.estimateContextTokens();
182
- const newPct = Math.round((currentTokens / newLimit) * 100);
183
- ctx.setModel(newModel);
184
- config.set('defaultModel', newModel);
185
- ctx.setContextTokens(currentTokens);
186
- let switchWarning = '';
187
- if (newPct > 80) {
188
- switchWarning = `\n⚠️ Context at ${newPct}% of new model limit (${Math.round(currentTokens / 1000)}K/${Math.round(newLimit / 1000)}K). Consider /compact.`;
189
- }
190
- else if (newLimit < oldLimit) {
191
- switchWarning = `\n📉 Context window: ${Math.round(oldLimit / 1000)}K → ${Math.round(newLimit / 1000)}K (${newPct}% used)`;
192
- }
193
- ctx.addMessage('system', `Model: ${oldModel} → ${newModel} (saved as default)${switchWarning}`);
194
- }
195
- else {
196
- // No arg or `list`: open the model picker (absorbs the old /models listing)
197
- ctx.addMessage('system', `Fetching models for ${ctx.actualProvider}...`);
198
- try {
199
- const models = await getAvailableModels(ctx.actualProvider, { throwOnError: true });
200
- if (models.length > 0) {
201
- ctx.setAvailableModels(models);
202
- ctx.setModalMode('model');
203
- }
204
- else {
205
- ctx.addMessage('error', `No models found for ${ctx.actualProvider} — API key may be invalid`);
206
- }
207
- }
208
- catch (e) {
209
- ctx.addMessage('error', `Failed to fetch models for ${ctx.actualProvider}: ${e instanceof Error ? e.message : String(e)}. Check your API key.`);
210
- }
211
- }
292
+ case '/defaults': {
293
+ const { handleModelCommand } = await import('./model-commands.js');
294
+ await handleModelCommand(cmd, ctx);
295
+ break;
296
+ }
297
+ case '/once': {
298
+ if (ctx.submitOnce)
299
+ await ctx.submitOnce(cmd);
300
+ else
301
+ ctx.addMessage('error', 'Usage: /once [--provider <name>] [--model <id>] -- <prompt>');
212
302
  break;
303
+ }
213
304
  case '/mode':
214
- if (parts[1] && ['plan', 'hybrid', 'work'].includes(parts[1])) {
305
+ if (parts[1] === 'auto') {
306
+ ctx.setMode('work');
307
+ ctx.setConfirmMode(false);
308
+ ctx.addMessage('system', 'Mode: ⚡ Auto — work mode with tool confirmation prompts disabled for this REPL session. Project policy, scope, sandbox and orchestration authority still apply.');
309
+ }
310
+ else if (parts[1] && ['plan', 'hybrid', 'work'].includes(parts[1])) {
215
311
  const m = parts[1];
216
312
  ctx.setMode(m);
313
+ ctx.setConfirmMode(true);
217
314
  ctx.addMessage('system', `Mode: ${MODE_CONFIG[m].icon} ${MODE_CONFIG[m].label} - ${MODE_CONFIG[m].description}`);
218
315
  }
219
316
  else {
220
317
  const currentConfig = MODE_CONFIG[ctx.mode];
221
- ctx.addMessage('system', `Mode: ${currentConfig.icon} ${currentConfig.label}\nOptions: plan (\u{1F4CB}), hybrid (\u{1F504}), work (\u{1F527})\nUse Shift+Tab to cycle`);
318
+ ctx.addMessage('system', `Mode: ${ctx.confirmMode ? `${currentConfig.icon} ${currentConfig.label}` : '⚡ Auto'}\nOptions: plan (\u{1F4CB}), hybrid (\u{1F504}), work (\u{1F527}), auto (⚡)\nUse Shift+Tab to cycle safe modes`);
222
319
  }
223
320
  break;
224
321
  case '/clear':
@@ -228,37 +325,6 @@ File references: @filename, ./path, /absolute/path`;
228
325
  ctx.setStats({ inputTokens: 0, outputTokens: 0, cost: 0, messageCount: 0 });
229
326
  resetContextWarnings(); // Reset context warning state
230
327
  break;
231
- case '/export': {
232
- // Export conversation to markdown
233
- const filename = parts[1] || `calliope-export-${Date.now()}.md`;
234
- const fsModule = await import('fs');
235
- const path = await import('path');
236
- let markdown = `# Calliope Conversation Export\n\n`;
237
- markdown += `**Date:** ${new Date().toLocaleString()}\n`;
238
- markdown += `**Provider:** ${ctx.actualProvider}\n`;
239
- markdown += `**Model:** ${ctx.actualModel}\n\n---\n\n`;
240
- for (const msg of ctx.messages) {
241
- if (msg.type === 'user') {
242
- markdown += `## \u{1F464} User\n\n${msg.content}\n\n`;
243
- }
244
- else if (msg.type === 'assistant') {
245
- markdown += `## \u{1F916} Assistant\n\n${msg.content}\n\n`;
246
- }
247
- else if (msg.type === 'tool') {
248
- markdown += `> \u{1F527} Tool: ${msg.content}\n\n`;
249
- }
250
- else if (msg.type === 'system') {
251
- markdown += `> \u{2139}\u{FE0F} ${msg.content}\n\n`;
252
- }
253
- else if (msg.type === 'error') {
254
- markdown += `> \u{26A0}\u{FE0F} Error: ${msg.content}\n\n`;
255
- }
256
- }
257
- const filepath = path.resolve(process.cwd(), filename);
258
- fsModule.writeFileSync(filepath, markdown);
259
- ctx.addMessage('system', `✓ Exported to ${filename}`);
260
- break;
261
- }
262
328
  case '/undo': {
263
329
  if (ctx.undoStack.current.length === 0) {
264
330
  ctx.addMessage('system', 'Nothing to undo.');
@@ -280,7 +346,7 @@ File references: @filename, ./path, /absolute/path`;
280
346
  }
281
347
  case '/status': {
282
348
  const imgInfo = getTerminalImageInfo();
283
- let statusMsg = `${ctx.actualProvider}:${ctx.actualModel} | ${ctx.stats.messageCount} msgs | ${ctx.stats.inputTokens + ctx.stats.outputTokens} tokens | terminal: ${getImageModeLabel(imgInfo.mode)}${imgInfo.truecolor ? ' (truecolor)' : ''} ${imgInfo.width}cols`;
349
+ let statusMsg = `${ctx.actualProvider}:${ctx.actualModel} | mode: ${ctx.confirmMode ? ctx.mode : 'auto'} | ${ctx.stats.messageCount} msgs | ${ctx.stats.inputTokens + ctx.stats.outputTokens} tokens | terminal: ${getImageModeLabel(imgInfo.mode)}${imgInfo.truecolor ? ' (truecolor)' : ''} ${imgInfo.width}cols`;
284
350
  // Add fleet status if active
285
351
  const fleetSt = fleetStatus();
286
352
  if (fleetSt) {
@@ -509,6 +575,7 @@ Available keys:
509
575
  if (parts[1] === 'stop') {
510
576
  if (ctx.loopActive) {
511
577
  ctx.loopCancelledRef.current = true;
578
+ ctx.cancelActiveTurn?.();
512
579
  ctx.setLoopActive(false);
513
580
  ctx.addMessage('system', '\u{1F6D1} Loop cancelled');
514
581
  }
@@ -522,6 +589,10 @@ Available keys:
522
589
  ctx.addMessage('system', 'Loop already running. Use /loop stop to stop it first.');
523
590
  break;
524
591
  }
592
+ if (ctx.isProcessing) {
593
+ ctx.addMessage('system', 'A turn is already running. Cancel it before starting a loop.');
594
+ break;
595
+ }
525
596
  const loopArgs = parts.slice(1).join(' ');
526
597
  const maxIterMatch = loopArgs.match(/--max-iterations\s+(\d+)/);
527
598
  const completionMatch = loopArgs.match(/--completion-promise\s+"([^"]+)"/);
@@ -717,8 +788,24 @@ Stop a running loop with /loop stop`);
717
788
  case '/memory': {
718
789
  const memoryModule = await import('../memory.js');
719
790
  const subCmd = parts[1];
720
- const cwd = process.cwd();
721
- if (subCmd === 'init') {
791
+ const cwd = getActiveProjectDir(ctx);
792
+ if (subCmd === 'sources' || subCmd === 'reload') {
793
+ try {
794
+ if (subCmd === 'reload')
795
+ refreshProjectContext(ctx);
796
+ const { loadRepositoryInstructions } = await import('../instructions.js');
797
+ const sources = loadRepositoryInstructions(cwd);
798
+ ctx.addMessage('system', [
799
+ subCmd === 'reload' ? 'Project context reloaded for subsequent turns.' : 'Applicable AGENTS.md files on disk (use /memory reload after edits):',
800
+ ...sources.map(source => `${source.path}\n Scope: ${source.scope} (${Buffer.byteLength(source.content)} bytes)`),
801
+ ...(sources.length ? [] : ['No trusted AGENTS.md files apply. Use /trust status to inspect project trust.']),
802
+ ].join('\n'));
803
+ }
804
+ catch (error) {
805
+ ctx.addMessage('error', error instanceof Error ? error.message : String(error));
806
+ }
807
+ }
808
+ else if (subCmd === 'init') {
722
809
  const memPath = memoryModule.initProjectMemory(cwd);
723
810
  ctx.addMessage('system', `Created: ${memPath}\nEdit the file to add context and preferences.`);
724
811
  }
@@ -779,7 +866,7 @@ Stop a running loop with /loop stop`);
779
866
  ctx.addMessage('system', info || 'No global memories yet.');
780
867
  }
781
868
  else {
782
- ctx.addMessage('system', 'Usage: /memory [init|show|add <type> <text>|remove <type> <text>|global]');
869
+ ctx.addMessage('system', 'Usage: /memory [init|show|sources|reload|add <type> <text>|remove <type> <text>|global]');
783
870
  }
784
871
  break;
785
872
  }
@@ -833,17 +920,17 @@ Stop a running loop with /loop stop`);
833
920
  const { checkTrust, trustProject, untrustProject, listTrustedProjects, removeFromRegistry } = await import('../trust.js');
834
921
  const trustSubCmd = parts[1] || 'status';
835
922
  if (trustSubCmd === 'status') {
836
- const trust = checkTrust(process.cwd());
923
+ const trust = checkTrust(getActiveProjectDir(ctx));
837
924
  ctx.addMessage('system', `Trust: ${trust.trusted ? '✓ Trusted' : '✗ Untrusted'}\n${trust.reason}${trust.changed ? '\n⚠️ CALLIOPE.md has changed since trust was granted' : ''}`);
838
925
  }
839
926
  else if (trustSubCmd === 'add' || trustSubCmd === 'yes') {
840
- const dir = parts[2] || process.cwd();
927
+ const dir = parts[2] || getActiveProjectDir(ctx);
841
928
  trustProject(dir, parts.slice(3).join(' ') || undefined);
842
929
  ctx.addMessage('system', `✓ Trusted: ${dir}`);
843
930
  }
844
931
  else if (trustSubCmd === 'remove' || trustSubCmd === 'no') {
845
932
  // Absorbs the old /untrust
846
- const dir = parts[2] || process.cwd();
933
+ const dir = parts[2] || getActiveProjectDir(ctx);
847
934
  untrustProject(dir);
848
935
  ctx.addMessage('system', `✗ Untrusted: ${dir}`);
849
936
  }
@@ -858,13 +945,21 @@ Stop a running loop with /loop stop`);
858
945
  }
859
946
  }
860
947
  else if (trustSubCmd === 'clear') {
861
- const dir = parts[2] || process.cwd();
948
+ const dir = parts[2] || getActiveProjectDir(ctx);
862
949
  removeFromRegistry(dir);
863
950
  ctx.addMessage('system', `Removed from trust registry: ${dir}`);
864
951
  }
865
952
  else {
866
953
  ctx.addMessage('system', 'Usage: /trust [status|add|remove|list|clear]\n /trust add [path] - trust a project\n /trust remove [path] - untrust a project');
867
954
  }
955
+ if (['add', 'yes', 'remove', 'no', 'clear'].includes(trustSubCmd)) {
956
+ try {
957
+ refreshProjectContext(ctx);
958
+ }
959
+ catch (error) {
960
+ ctx.addMessage('error', error instanceof Error ? error.message : String(error));
961
+ }
962
+ }
868
963
  break;
869
964
  }
870
965
  case '/cost': {
@@ -941,59 +1036,17 @@ Stop a running loop with /loop stop`);
941
1036
  }
942
1037
  break;
943
1038
  }
1039
+ case '/export':
1040
+ case '/import':
1041
+ case '/branch':
1042
+ case '/checkout':
1043
+ case '/diff':
1044
+ case '/replay':
1045
+ case '/new':
1046
+ case '/sessions':
944
1047
  case '/resume': {
945
- // Resume a session by loading saved LLM message history
946
- // Usage: /resume [sessionId] - resume a specific session, or current session if no ID
947
- const targetSessionId = parts[1];
948
- if (targetSessionId) {
949
- const resumedSession = storage.setCurrentSessionById(targetSessionId);
950
- if (!resumedSession) {
951
- ctx.addMessage('system', `Session not found: ${targetSessionId}`);
952
- break;
953
- }
954
- ctx.sessionRef.current = resumedSession;
955
- }
956
- if (ctx.ledger) {
957
- ctx.ledger.loadSnapshot(storage.loadIterationLedger(targetSessionId || ctx.sessionRef.current?.id));
958
- if (ctx.sessionRef.current?.id) {
959
- storage.saveIterationLedger(ctx.ledger, ctx.sessionRef.current.id);
960
- }
961
- }
962
- // Try loading full message history first (preferred - preserves tool calls etc.)
963
- const savedMessages = storage.loadMessageHistory(targetSessionId);
964
- if (savedMessages && savedMessages.length > 0) {
965
- // Replace current LLM messages with saved ones
966
- ctx.llmMessages.current.length = 0;
967
- for (const msg of savedMessages) {
968
- ctx.llmMessages.current.push(msg);
969
- }
970
- ctx.addMessage('system', `Restored ${savedMessages.length} messages from saved session${targetSessionId ? ` (${targetSessionId})` : ''}`);
971
- ctx.setContextTokens(ctx.estimateContextTokens());
972
- }
973
- else {
974
- // Fall back to chat.log history (legacy format, user/assistant only)
975
- const history = storage.getChatHistory(20, targetSessionId);
976
- if (history.length === 0) {
977
- ctx.addMessage('system', 'No previous messages to resume. Start a conversation first, messages are auto-saved.');
978
- }
979
- else {
980
- ctx.llmMessages.current.length = 0;
981
- ctx.llmMessages.current.push({
982
- role: 'system',
983
- content: buildFullSystemPrompt(getActiveProjectDir(ctx), ctx.actualProvider),
984
- });
985
- for (const msg of history) {
986
- if (msg.role === 'user' || msg.role === 'assistant') {
987
- ctx.llmMessages.current.push({
988
- role: msg.role,
989
- content: msg.content,
990
- });
991
- }
992
- }
993
- ctx.addMessage('system', `Loaded ${history.length} messages from chat log (legacy format, tool context not preserved)`);
994
- ctx.setContextTokens(ctx.estimateContextTokens());
995
- }
996
- }
1048
+ const { handleSessionCommand } = await import('./session-commands.js');
1049
+ await handleSessionCommand(parts, ctx);
997
1050
  break;
998
1051
  }
999
1052
  case '/restore': {