@calliopelabs/cli 2.5.0 → 3.0.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 (476) hide show
  1. package/README.md +45 -661
  2. package/dist/acp.d.ts +78 -0
  3. package/dist/acp.d.ts.map +1 -0
  4. package/dist/acp.js +572 -0
  5. package/dist/acp.js.map +1 -0
  6. package/dist/bin.d.ts +3 -7
  7. package/dist/bin.d.ts.map +1 -1
  8. package/dist/bin.js +56 -79
  9. package/dist/bin.js.map +1 -1
  10. package/dist/budget.d.ts +64 -0
  11. package/dist/budget.d.ts.map +1 -0
  12. package/dist/budget.js +157 -0
  13. package/dist/budget.js.map +1 -0
  14. package/dist/checkpoint.d.ts +63 -30
  15. package/dist/checkpoint.d.ts.map +1 -1
  16. package/dist/checkpoint.js +247 -160
  17. package/dist/checkpoint.js.map +1 -1
  18. package/dist/circuit-breaker/breaker.js.map +1 -1
  19. package/dist/config.d.ts +86 -81
  20. package/dist/config.d.ts.map +1 -1
  21. package/dist/config.js +236 -304
  22. package/dist/config.js.map +1 -1
  23. package/dist/cost.d.ts +114 -0
  24. package/dist/cost.d.ts.map +1 -0
  25. package/dist/cost.js +499 -0
  26. package/dist/cost.js.map +1 -0
  27. package/dist/diff.d.ts.map +1 -1
  28. package/dist/diff.js +11 -7
  29. package/dist/diff.js.map +1 -1
  30. package/dist/errors.js +3 -3
  31. package/dist/errors.js.map +1 -1
  32. package/dist/files.js.map +1 -1
  33. package/dist/fleet.d.ts +30 -0
  34. package/dist/fleet.d.ts.map +1 -0
  35. package/dist/fleet.js +86 -0
  36. package/dist/fleet.js.map +1 -0
  37. package/dist/fuzzy-search.d.ts.map +1 -1
  38. package/dist/fuzzy-search.js +2 -1
  39. package/dist/fuzzy-search.js.map +1 -1
  40. package/dist/git-status.js.map +1 -1
  41. package/dist/headless.d.ts +1 -2
  42. package/dist/headless.d.ts.map +1 -1
  43. package/dist/headless.js +166 -24
  44. package/dist/headless.js.map +1 -1
  45. package/dist/hud/api.d.ts +3 -18
  46. package/dist/hud/api.d.ts.map +1 -1
  47. package/dist/hud/api.js +9 -352
  48. package/dist/hud/api.js.map +1 -1
  49. package/dist/hud/palettes.d.ts.map +1 -1
  50. package/dist/hud/palettes.js +0 -180
  51. package/dist/hud/palettes.js.map +1 -1
  52. package/dist/hud/skins.d.ts.map +1 -1
  53. package/dist/hud/skins.js +0 -263
  54. package/dist/hud/skins.js.map +1 -1
  55. package/dist/hud/types.d.ts +2 -5
  56. package/dist/hud/types.d.ts.map +1 -1
  57. package/dist/index.d.ts +1 -4
  58. package/dist/index.d.ts.map +1 -1
  59. package/dist/index.js +1 -4
  60. package/dist/index.js.map +1 -1
  61. package/dist/iteration-ledger.d.ts.map +1 -1
  62. package/dist/iteration-ledger.js +3 -2
  63. package/dist/iteration-ledger.js.map +1 -1
  64. package/dist/local-model.d.ts +150 -0
  65. package/dist/local-model.d.ts.map +1 -0
  66. package/dist/local-model.js +408 -0
  67. package/dist/local-model.js.map +1 -0
  68. package/dist/mcp.d.ts.map +1 -1
  69. package/dist/mcp.js +5 -2
  70. package/dist/mcp.js.map +1 -1
  71. package/dist/memory.d.ts.map +1 -1
  72. package/dist/memory.js +6 -4
  73. package/dist/memory.js.map +1 -1
  74. package/dist/model-detection.js +2 -2
  75. package/dist/model-detection.js.map +1 -1
  76. package/dist/parallel-tools.js.map +1 -1
  77. package/dist/plugins.d.ts +32 -1
  78. package/dist/plugins.d.ts.map +1 -1
  79. package/dist/plugins.js +116 -5
  80. package/dist/plugins.js.map +1 -1
  81. package/dist/policy.d.ts +43 -0
  82. package/dist/policy.d.ts.map +1 -0
  83. package/dist/policy.js +139 -0
  84. package/dist/policy.js.map +1 -0
  85. package/dist/project-config.d.ts +1 -2
  86. package/dist/project-config.d.ts.map +1 -1
  87. package/dist/project-config.js +0 -3
  88. package/dist/project-config.js.map +1 -1
  89. package/dist/providers/bedrock.d.ts.map +1 -1
  90. package/dist/providers/bedrock.js +2 -5
  91. package/dist/providers/bedrock.js.map +1 -1
  92. package/dist/providers/compat.d.ts +21 -0
  93. package/dist/providers/compat.d.ts.map +1 -1
  94. package/dist/providers/compat.js +176 -6
  95. package/dist/providers/compat.js.map +1 -1
  96. package/dist/providers/google.js.map +1 -1
  97. package/dist/providers/index.d.ts +19 -4
  98. package/dist/providers/index.d.ts.map +1 -1
  99. package/dist/providers/index.js +61 -10
  100. package/dist/providers/index.js.map +1 -1
  101. package/dist/providers/ollama.d.ts +2 -2
  102. package/dist/providers/ollama.d.ts.map +1 -1
  103. package/dist/providers/ollama.js +26 -6
  104. package/dist/providers/ollama.js.map +1 -1
  105. package/dist/providers/openai.d.ts.map +1 -1
  106. package/dist/providers/openai.js +14 -10
  107. package/dist/providers/openai.js.map +1 -1
  108. package/dist/providers/types.d.ts +8 -0
  109. package/dist/providers/types.d.ts.map +1 -1
  110. package/dist/providers/types.js.map +1 -1
  111. package/dist/replay.d.ts +37 -0
  112. package/dist/replay.d.ts.map +1 -0
  113. package/dist/replay.js +168 -0
  114. package/dist/replay.js.map +1 -0
  115. package/dist/router.d.ts +133 -0
  116. package/dist/router.d.ts.map +1 -0
  117. package/dist/{model-router.js → router.js} +329 -3
  118. package/dist/router.js.map +1 -0
  119. package/dist/runlog.d.ts +185 -0
  120. package/dist/runlog.d.ts.map +1 -0
  121. package/dist/runlog.js +398 -0
  122. package/dist/runlog.js.map +1 -0
  123. package/dist/{sandbox.d.ts → sandbox/docker.d.ts} +1 -1
  124. package/dist/sandbox/docker.d.ts.map +1 -0
  125. package/dist/{sandbox.js → sandbox/docker.js} +1 -1
  126. package/dist/sandbox/docker.js.map +1 -0
  127. package/dist/sandbox/index.d.ts +36 -0
  128. package/dist/sandbox/index.d.ts.map +1 -0
  129. package/dist/sandbox/index.js +62 -0
  130. package/dist/sandbox/index.js.map +1 -0
  131. package/dist/{sandbox-native.d.ts → sandbox/native.d.ts} +1 -1
  132. package/dist/sandbox/native.d.ts.map +1 -0
  133. package/dist/{sandbox-native.js → sandbox/native.js} +1 -1
  134. package/dist/sandbox/native.js.map +1 -0
  135. package/dist/scope.js +1 -1
  136. package/dist/scope.js.map +1 -1
  137. package/dist/scuttlebot/config.js.map +1 -1
  138. package/dist/scuttlebot/irc-client.js.map +1 -1
  139. package/dist/setup.d.ts.map +1 -1
  140. package/dist/setup.js +22 -54
  141. package/dist/setup.js.map +1 -1
  142. package/dist/skills.d.ts +39 -0
  143. package/dist/skills.d.ts.map +1 -1
  144. package/dist/skills.js +90 -8
  145. package/dist/skills.js.map +1 -1
  146. package/dist/storage.d.ts.map +1 -1
  147. package/dist/storage.js +6 -3
  148. package/dist/storage.js.map +1 -1
  149. package/dist/streaming.d.ts +25 -0
  150. package/dist/streaming.d.ts.map +1 -1
  151. package/dist/streaming.js +59 -0
  152. package/dist/streaming.js.map +1 -1
  153. package/dist/styles.d.ts +6 -0
  154. package/dist/styles.d.ts.map +1 -1
  155. package/dist/styles.js +11 -0
  156. package/dist/styles.js.map +1 -1
  157. package/dist/summarization.js.map +1 -1
  158. package/dist/terminal-image.js +1 -1
  159. package/dist/terminal-image.js.map +1 -1
  160. package/dist/themes.d.ts +5 -4
  161. package/dist/themes.d.ts.map +1 -1
  162. package/dist/themes.js +35 -90
  163. package/dist/themes.js.map +1 -1
  164. package/dist/tools.d.ts +27 -3
  165. package/dist/tools.d.ts.map +1 -1
  166. package/dist/tools.js +128 -179
  167. package/dist/tools.js.map +1 -1
  168. package/dist/types.d.ts +4 -3
  169. package/dist/types.d.ts.map +1 -1
  170. package/dist/types.js +21 -40
  171. package/dist/types.js.map +1 -1
  172. package/dist/ui/agent.d.ts +3 -6
  173. package/dist/ui/agent.d.ts.map +1 -1
  174. package/dist/ui/agent.js +328 -38
  175. package/dist/ui/agent.js.map +1 -1
  176. package/dist/ui/animations.d.ts +37 -0
  177. package/dist/ui/animations.d.ts.map +1 -0
  178. package/dist/ui/animations.js +227 -0
  179. package/dist/ui/animations.js.map +1 -0
  180. package/dist/ui/chat-input-keys.d.ts +42 -0
  181. package/dist/ui/chat-input-keys.d.ts.map +1 -0
  182. package/dist/ui/chat-input-keys.js +360 -0
  183. package/dist/ui/chat-input-keys.js.map +1 -0
  184. package/dist/ui/chat-input.d.ts +2 -1
  185. package/dist/ui/chat-input.d.ts.map +1 -1
  186. package/dist/ui/chat-input.js +31 -350
  187. package/dist/ui/chat-input.js.map +1 -1
  188. package/dist/ui/commands.d.ts +14 -46
  189. package/dist/ui/commands.d.ts.map +1 -1
  190. package/dist/ui/commands.js +416 -2899
  191. package/dist/ui/commands.js.map +1 -1
  192. package/dist/ui/completions.d.ts +1 -0
  193. package/dist/ui/completions.d.ts.map +1 -1
  194. package/dist/ui/completions.js +36 -107
  195. package/dist/ui/completions.js.map +1 -1
  196. package/dist/ui/components.d.ts +14 -6
  197. package/dist/ui/components.d.ts.map +1 -1
  198. package/dist/ui/components.js +17 -226
  199. package/dist/ui/components.js.map +1 -1
  200. package/dist/ui/context.js +6 -6
  201. package/dist/ui/context.js.map +1 -1
  202. package/dist/ui/debug-log.d.ts +11 -0
  203. package/dist/ui/debug-log.d.ts.map +1 -0
  204. package/dist/ui/debug-log.js +21 -0
  205. package/dist/ui/debug-log.js.map +1 -0
  206. package/dist/ui/error-boundary.d.ts.map +1 -1
  207. package/dist/ui/error-boundary.js.map +1 -1
  208. package/dist/ui/frame.d.ts.map +1 -1
  209. package/dist/ui/frame.js +1 -3
  210. package/dist/ui/frame.js.map +1 -1
  211. package/dist/ui/index.d.ts +11 -3
  212. package/dist/ui/index.d.ts.map +1 -1
  213. package/dist/ui/index.js +45 -1076
  214. package/dist/ui/index.js.map +1 -1
  215. package/dist/ui/messages.d.ts +4 -7
  216. package/dist/ui/messages.d.ts.map +1 -1
  217. package/dist/ui/messages.js +15 -30
  218. package/dist/ui/messages.js.map +1 -1
  219. package/dist/ui/modals/index.d.ts +11 -0
  220. package/dist/ui/modals/index.d.ts.map +1 -0
  221. package/dist/ui/modals/index.js +10 -0
  222. package/dist/ui/modals/index.js.map +1 -0
  223. package/dist/ui/modals/prompts.d.ts +37 -0
  224. package/dist/ui/modals/prompts.d.ts.map +1 -0
  225. package/dist/ui/modals/prompts.js +124 -0
  226. package/dist/ui/modals/prompts.js.map +1 -0
  227. package/dist/ui/modals/selectors.d.ts +33 -0
  228. package/dist/ui/modals/selectors.d.ts.map +1 -0
  229. package/dist/ui/modals/selectors.js +111 -0
  230. package/dist/ui/modals/selectors.js.map +1 -0
  231. package/dist/ui/modals/setup.d.ts +17 -0
  232. package/dist/ui/modals/setup.d.ts.map +1 -0
  233. package/dist/ui/modals/setup.js +51 -0
  234. package/dist/ui/modals/setup.js.map +1 -0
  235. package/dist/ui/regions/input-region.d.ts +40 -0
  236. package/dist/ui/regions/input-region.d.ts.map +1 -0
  237. package/dist/ui/regions/input-region.js +116 -0
  238. package/dist/ui/regions/input-region.js.map +1 -0
  239. package/dist/ui/regions/modal-host.d.ts +41 -0
  240. package/dist/ui/regions/modal-host.d.ts.map +1 -0
  241. package/dist/ui/regions/modal-host.js +51 -0
  242. package/dist/ui/regions/modal-host.js.map +1 -0
  243. package/dist/ui/regions/render-probe.d.ts +22 -0
  244. package/dist/ui/regions/render-probe.d.ts.map +1 -0
  245. package/dist/ui/regions/render-probe.js +45 -0
  246. package/dist/ui/regions/render-probe.js.map +1 -0
  247. package/dist/ui/regions/static-scrollback.d.ts +39 -0
  248. package/dist/ui/regions/static-scrollback.d.ts.map +1 -0
  249. package/dist/ui/regions/static-scrollback.js +68 -0
  250. package/dist/ui/regions/static-scrollback.js.map +1 -0
  251. package/dist/ui/regions/status-region.d.ts +24 -0
  252. package/dist/ui/regions/status-region.d.ts.map +1 -0
  253. package/dist/ui/regions/status-region.js +17 -0
  254. package/dist/ui/regions/status-region.js.map +1 -0
  255. package/dist/ui/regions/transcript-region.d.ts +41 -0
  256. package/dist/ui/regions/transcript-region.d.ts.map +1 -0
  257. package/dist/ui/regions/transcript-region.js +52 -0
  258. package/dist/ui/regions/transcript-region.js.map +1 -0
  259. package/dist/ui/self-restart.d.ts +9 -0
  260. package/dist/ui/self-restart.d.ts.map +1 -0
  261. package/dist/ui/self-restart.js +24 -0
  262. package/dist/ui/self-restart.js.map +1 -0
  263. package/dist/ui/state/use-chat-controller.d.ts +23 -0
  264. package/dist/ui/state/use-chat-controller.d.ts.map +1 -0
  265. package/dist/ui/state/use-chat-controller.js +643 -0
  266. package/dist/ui/state/use-chat-controller.js.map +1 -0
  267. package/dist/ui/state/use-loop-state.d.ts +23 -0
  268. package/dist/ui/state/use-loop-state.d.ts.map +1 -0
  269. package/dist/ui/state/use-loop-state.js +39 -0
  270. package/dist/ui/state/use-loop-state.js.map +1 -0
  271. package/dist/ui/state/use-modal-state.d.ts +52 -0
  272. package/dist/ui/state/use-modal-state.d.ts.map +1 -0
  273. package/dist/ui/state/use-modal-state.js +44 -0
  274. package/dist/ui/state/use-modal-state.js.map +1 -0
  275. package/dist/ui/state/use-model-state.d.ts +29 -0
  276. package/dist/ui/state/use-model-state.d.ts.map +1 -0
  277. package/dist/ui/state/use-model-state.js +47 -0
  278. package/dist/ui/state/use-model-state.js.map +1 -0
  279. package/dist/ui/state/use-processing-state.d.ts +24 -0
  280. package/dist/ui/state/use-processing-state.d.ts.map +1 -0
  281. package/dist/ui/state/use-processing-state.js +46 -0
  282. package/dist/ui/state/use-processing-state.js.map +1 -0
  283. package/dist/ui/state/use-queue-state.d.ts +19 -0
  284. package/dist/ui/state/use-queue-state.d.ts.map +1 -0
  285. package/dist/ui/state/use-queue-state.js +30 -0
  286. package/dist/ui/state/use-queue-state.js.map +1 -0
  287. package/dist/ui/state/use-session-init.d.ts +22 -0
  288. package/dist/ui/state/use-session-init.d.ts.map +1 -0
  289. package/dist/ui/state/use-session-init.js +77 -0
  290. package/dist/ui/state/use-session-init.js.map +1 -0
  291. package/dist/ui/state/use-session-stats.d.ts +16 -0
  292. package/dist/ui/state/use-session-stats.d.ts.map +1 -0
  293. package/dist/ui/state/use-session-stats.js +18 -0
  294. package/dist/ui/state/use-session-stats.js.map +1 -0
  295. package/dist/ui/state/use-terminal-width.d.ts +8 -0
  296. package/dist/ui/state/use-terminal-width.d.ts.map +1 -0
  297. package/dist/ui/state/use-terminal-width.js +22 -0
  298. package/dist/ui/state/use-terminal-width.js.map +1 -0
  299. package/dist/ui/state/use-transcript-state.d.ts +21 -0
  300. package/dist/ui/state/use-transcript-state.d.ts.map +1 -0
  301. package/dist/ui/state/use-transcript-state.js +49 -0
  302. package/dist/ui/state/use-transcript-state.js.map +1 -0
  303. package/dist/ui/status-bar.d.ts.map +1 -1
  304. package/dist/ui/status-bar.js +2 -3
  305. package/dist/ui/status-bar.js.map +1 -1
  306. package/dist/version-check.d.ts.map +1 -1
  307. package/dist/version-check.js +10 -0
  308. package/dist/version-check.js.map +1 -1
  309. package/package.json +10 -3
  310. package/dist/agents/agent-config-loader.d.ts +0 -60
  311. package/dist/agents/agent-config-loader.d.ts.map +0 -1
  312. package/dist/agents/agent-config-loader.js +0 -402
  313. package/dist/agents/agent-config-loader.js.map +0 -1
  314. package/dist/agents/agent-config-presets.d.ts +0 -10
  315. package/dist/agents/agent-config-presets.d.ts.map +0 -1
  316. package/dist/agents/agent-config-presets.js +0 -940
  317. package/dist/agents/agent-config-presets.js.map +0 -1
  318. package/dist/agents/agent-config-types.d.ts +0 -145
  319. package/dist/agents/agent-config-types.d.ts.map +0 -1
  320. package/dist/agents/agent-config-types.js +0 -12
  321. package/dist/agents/agent-config-types.js.map +0 -1
  322. package/dist/agents/agent-detection.d.ts +0 -35
  323. package/dist/agents/agent-detection.d.ts.map +0 -1
  324. package/dist/agents/agent-detection.js +0 -110
  325. package/dist/agents/agent-detection.js.map +0 -1
  326. package/dist/agents/aggregator.d.ts +0 -19
  327. package/dist/agents/aggregator.d.ts.map +0 -1
  328. package/dist/agents/aggregator.js +0 -141
  329. package/dist/agents/aggregator.js.map +0 -1
  330. package/dist/agents/cli-backend.d.ts +0 -32
  331. package/dist/agents/cli-backend.d.ts.map +0 -1
  332. package/dist/agents/cli-backend.js +0 -271
  333. package/dist/agents/cli-backend.js.map +0 -1
  334. package/dist/agents/council-types.d.ts +0 -115
  335. package/dist/agents/council-types.d.ts.map +0 -1
  336. package/dist/agents/council-types.js +0 -81
  337. package/dist/agents/council-types.js.map +0 -1
  338. package/dist/agents/council.d.ts +0 -112
  339. package/dist/agents/council.d.ts.map +0 -1
  340. package/dist/agents/council.js +0 -722
  341. package/dist/agents/council.js.map +0 -1
  342. package/dist/agents/decomposer.d.ts +0 -33
  343. package/dist/agents/decomposer.d.ts.map +0 -1
  344. package/dist/agents/decomposer.js +0 -138
  345. package/dist/agents/decomposer.js.map +0 -1
  346. package/dist/agents/dynamic-tools.d.ts +0 -52
  347. package/dist/agents/dynamic-tools.d.ts.map +0 -1
  348. package/dist/agents/dynamic-tools.js +0 -424
  349. package/dist/agents/dynamic-tools.js.map +0 -1
  350. package/dist/agents/index.d.ts +0 -29
  351. package/dist/agents/index.d.ts.map +0 -1
  352. package/dist/agents/index.js +0 -29
  353. package/dist/agents/index.js.map +0 -1
  354. package/dist/agents/installer.d.ts +0 -39
  355. package/dist/agents/installer.d.ts.map +0 -1
  356. package/dist/agents/installer.js +0 -205
  357. package/dist/agents/installer.js.map +0 -1
  358. package/dist/agents/orchestrator.d.ts +0 -106
  359. package/dist/agents/orchestrator.d.ts.map +0 -1
  360. package/dist/agents/orchestrator.js +0 -363
  361. package/dist/agents/orchestrator.js.map +0 -1
  362. package/dist/agents/sdk-backend.d.ts +0 -63
  363. package/dist/agents/sdk-backend.d.ts.map +0 -1
  364. package/dist/agents/sdk-backend.js +0 -489
  365. package/dist/agents/sdk-backend.js.map +0 -1
  366. package/dist/agents/swarm-types.d.ts +0 -84
  367. package/dist/agents/swarm-types.d.ts.map +0 -1
  368. package/dist/agents/swarm-types.js +0 -20
  369. package/dist/agents/swarm-types.js.map +0 -1
  370. package/dist/agents/swarm.d.ts +0 -79
  371. package/dist/agents/swarm.d.ts.map +0 -1
  372. package/dist/agents/swarm.js +0 -375
  373. package/dist/agents/swarm.js.map +0 -1
  374. package/dist/agents/tools.d.ts +0 -26
  375. package/dist/agents/tools.d.ts.map +0 -1
  376. package/dist/agents/tools.js +0 -776
  377. package/dist/agents/tools.js.map +0 -1
  378. package/dist/agents/types.d.ts +0 -108
  379. package/dist/agents/types.d.ts.map +0 -1
  380. package/dist/agents/types.js +0 -43
  381. package/dist/agents/types.js.map +0 -1
  382. package/dist/api-server.d.ts +0 -45
  383. package/dist/api-server.d.ts.map +0 -1
  384. package/dist/api-server.js +0 -326
  385. package/dist/api-server.js.map +0 -1
  386. package/dist/auto-checkpoint.d.ts +0 -35
  387. package/dist/auto-checkpoint.d.ts.map +0 -1
  388. package/dist/auto-checkpoint.js +0 -176
  389. package/dist/auto-checkpoint.js.map +0 -1
  390. package/dist/background-jobs.d.ts +0 -45
  391. package/dist/background-jobs.d.ts.map +0 -1
  392. package/dist/background-jobs.js +0 -127
  393. package/dist/background-jobs.js.map +0 -1
  394. package/dist/branching.d.ts +0 -56
  395. package/dist/branching.d.ts.map +0 -1
  396. package/dist/branching.js +0 -224
  397. package/dist/branching.js.map +0 -1
  398. package/dist/cli/agent.d.ts +0 -9
  399. package/dist/cli/agent.d.ts.map +0 -1
  400. package/dist/cli/agent.js +0 -330
  401. package/dist/cli/agent.js.map +0 -1
  402. package/dist/cli/commands.d.ts +0 -12
  403. package/dist/cli/commands.d.ts.map +0 -1
  404. package/dist/cli/commands.js +0 -1042
  405. package/dist/cli/commands.js.map +0 -1
  406. package/dist/cli/index.d.ts +0 -8
  407. package/dist/cli/index.d.ts.map +0 -1
  408. package/dist/cli/index.js +0 -268
  409. package/dist/cli/index.js.map +0 -1
  410. package/dist/cli/types.d.ts +0 -33
  411. package/dist/cli/types.d.ts.map +0 -1
  412. package/dist/cli/types.js +0 -21
  413. package/dist/cli/types.js.map +0 -1
  414. package/dist/companions.d.ts +0 -54
  415. package/dist/companions.d.ts.map +0 -1
  416. package/dist/companions.js +0 -440
  417. package/dist/companions.js.map +0 -1
  418. package/dist/file-watcher.d.ts +0 -91
  419. package/dist/file-watcher.d.ts.map +0 -1
  420. package/dist/file-watcher.js +0 -269
  421. package/dist/file-watcher.js.map +0 -1
  422. package/dist/hud/theme-packs/api.d.ts +0 -51
  423. package/dist/hud/theme-packs/api.d.ts.map +0 -1
  424. package/dist/hud/theme-packs/api.js +0 -145
  425. package/dist/hud/theme-packs/api.js.map +0 -1
  426. package/dist/hud/theme-packs/index.d.ts +0 -18
  427. package/dist/hud/theme-packs/index.d.ts.map +0 -1
  428. package/dist/hud/theme-packs/index.js +0 -38
  429. package/dist/hud/theme-packs/index.js.map +0 -1
  430. package/dist/hud/theme-packs/types.d.ts +0 -29
  431. package/dist/hud/theme-packs/types.d.ts.map +0 -1
  432. package/dist/hud/theme-packs/types.js +0 -9
  433. package/dist/hud/theme-packs/types.js.map +0 -1
  434. package/dist/idle-eviction.d.ts +0 -34
  435. package/dist/idle-eviction.d.ts.map +0 -1
  436. package/dist/idle-eviction.js +0 -85
  437. package/dist/idle-eviction.js.map +0 -1
  438. package/dist/model-router.d.ts +0 -67
  439. package/dist/model-router.d.ts.map +0 -1
  440. package/dist/model-router.js.map +0 -1
  441. package/dist/providers/openai-compat-shims.d.ts +0 -31
  442. package/dist/providers/openai-compat-shims.d.ts.map +0 -1
  443. package/dist/providers/openai-compat-shims.js +0 -179
  444. package/dist/providers/openai-compat-shims.js.map +0 -1
  445. package/dist/sandbox-native.d.ts.map +0 -1
  446. package/dist/sandbox-native.js.map +0 -1
  447. package/dist/sandbox.d.ts.map +0 -1
  448. package/dist/sandbox.js.map +0 -1
  449. package/dist/session-timeout.d.ts +0 -31
  450. package/dist/session-timeout.d.ts.map +0 -1
  451. package/dist/session-timeout.js +0 -100
  452. package/dist/session-timeout.js.map +0 -1
  453. package/dist/smart-router.d.ts +0 -73
  454. package/dist/smart-router.d.ts.map +0 -1
  455. package/dist/smart-router.js +0 -332
  456. package/dist/smart-router.js.map +0 -1
  457. package/dist/terminal-recording.d.ts +0 -55
  458. package/dist/terminal-recording.d.ts.map +0 -1
  459. package/dist/terminal-recording.js +0 -182
  460. package/dist/terminal-recording.js.map +0 -1
  461. package/dist/tmux.d.ts +0 -35
  462. package/dist/tmux.d.ts.map +0 -1
  463. package/dist/tmux.js +0 -106
  464. package/dist/tmux.js.map +0 -1
  465. package/dist/ui/modals.d.ts +0 -72
  466. package/dist/ui/modals.d.ts.map +0 -1
  467. package/dist/ui/modals.js +0 -266
  468. package/dist/ui/modals.js.map +0 -1
  469. package/dist/ui/pack-picker.d.ts +0 -12
  470. package/dist/ui/pack-picker.d.ts.map +0 -1
  471. package/dist/ui/pack-picker.js +0 -101
  472. package/dist/ui/pack-picker.js.map +0 -1
  473. package/dist/ui/theme-picker.d.ts +0 -24
  474. package/dist/ui/theme-picker.d.ts.map +0 -1
  475. package/dist/ui/theme-picker.js +0 -190
  476. package/dist/ui/theme-picker.js.map +0 -1
@@ -1,73 +0,0 @@
1
- /**
2
- * Smart Router - Cross-Provider Model Selection
3
- *
4
- * Analyzes each prompt's task type and routes to the best model
5
- * across all configured providers. Unlike autoRoute (single-provider
6
- * tier selection), smart routing considers strength matrices across
7
- * provider boundaries.
8
- *
9
- * Pure functions, no API calls - easy to test.
10
- */
11
- import type { LLMProvider } from './types.js';
12
- import { type TaskComplexity } from './model-router.js';
13
- export type TaskType = 'code' | 'research' | 'creative' | 'analysis' | 'simple-qa' | 'general';
14
- export interface SmartRouteCandidate {
15
- provider: LLMProvider;
16
- model: string;
17
- tier: 'fast' | 'balanced' | 'smart';
18
- score: number;
19
- reason: string;
20
- }
21
- export interface SmartRouteDecision {
22
- selected: SmartRouteCandidate;
23
- alternatives: SmartRouteCandidate[];
24
- taskType: TaskType;
25
- complexity: TaskComplexity;
26
- confidence: number;
27
- }
28
- export interface SmartRoutingConfig {
29
- enabled: boolean;
30
- providerPool: LLMProvider[];
31
- costSensitivity: number;
32
- preferredProviders: LLMProvider[];
33
- }
34
- interface ModelInfo {
35
- model: string;
36
- costPer1kInput: number;
37
- costPer1kOutput: number;
38
- }
39
- interface ProviderStrengths {
40
- tiers: Record<'fast' | 'balanced' | 'smart', ModelInfo>;
41
- strengths: Record<TaskType, number>;
42
- }
43
- export declare const MODEL_STRENGTHS: Partial<Record<LLMProvider, ProviderStrengths>>;
44
- /**
45
- * Detect the task type from a user message.
46
- */
47
- export declare function detectTaskType(message: string): {
48
- taskType: TaskType;
49
- confidence: number;
50
- signals: string[];
51
- };
52
- /**
53
- * Route to the best model across all configured providers.
54
- *
55
- * Algorithm:
56
- * 1. analyzeComplexity() → tier (fast/balanced/smart)
57
- * 2. detectTaskType() → task type
58
- * 3. Score each (provider, tier) pair:
59
- * score = strength * (1 - costWeight) + costEfficiency * costWeight
60
- * 4. Return best candidate + alternatives
61
- */
62
- export declare function smartRoute(message: string, routingConfig: SmartRoutingConfig, context?: {
63
- messageCount?: number;
64
- hasCode?: boolean;
65
- fileCount?: number;
66
- toolsUsed?: string[];
67
- }): SmartRouteDecision;
68
- /**
69
- * Get default smart routing config.
70
- */
71
- export declare function getDefaultSmartRoutingConfig(): SmartRoutingConfig;
72
- export {};
73
- //# sourceMappingURL=smart-router.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"smart-router.d.ts","sourceRoot":"","sources":["../src/smart-router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAO3E,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,CAAC;AAE/F,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,WAAW,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,YAAY,EAAE,mBAAmB,EAAE,CAAC;IACpC,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,EAAE,cAAc,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,WAAW,EAAE,CAAC;CACnC;AAMD,UAAU,SAAS;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,UAAU,iBAAiB;IACzB,KAAK,EAAE,MAAM,CAAC,MAAM,GAAG,UAAU,GAAG,OAAO,EAAE,SAAS,CAAC,CAAC;IACxD,SAAS,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;CACrC;AAED,eAAO,MAAM,eAAe,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAwI3E,CAAC;AAsCF;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CA0C7G;AAiBD;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,kBAAkB,EACjC,OAAO,CAAC,EAAE;IACR,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB,GACA,kBAAkB,CA+EpB;AAED;;GAEG;AACH,wBAAgB,4BAA4B,IAAI,kBAAkB,CAOjE"}
@@ -1,332 +0,0 @@
1
- /**
2
- * Smart Router - Cross-Provider Model Selection
3
- *
4
- * Analyzes each prompt's task type and routes to the best model
5
- * across all configured providers. Unlike autoRoute (single-provider
6
- * tier selection), smart routing considers strength matrices across
7
- * provider boundaries.
8
- *
9
- * Pure functions, no API calls - easy to test.
10
- */
11
- import { analyzeComplexity } from './model-router.js';
12
- import { getConfiguredProviders } from './config.js';
13
- export const MODEL_STRENGTHS = {
14
- anthropic: {
15
- tiers: {
16
- fast: { model: 'claude-haiku-4-5', costPer1kInput: 0.001, costPer1kOutput: 0.005 },
17
- balanced: { model: 'claude-sonnet-4-6', costPer1kInput: 0.003, costPer1kOutput: 0.015 },
18
- smart: { model: 'claude-opus-4-8', costPer1kInput: 0.005, costPer1kOutput: 0.025 },
19
- },
20
- strengths: {
21
- 'code': 0.95,
22
- 'research': 0.85,
23
- 'creative': 0.90,
24
- 'analysis': 0.90,
25
- 'simple-qa': 0.80,
26
- 'general': 0.90,
27
- },
28
- },
29
- openai: {
30
- tiers: {
31
- fast: { model: 'gpt-4o-mini', costPer1kInput: 0.00015, costPer1kOutput: 0.0006 },
32
- balanced: { model: 'gpt-4o', costPer1kInput: 0.0025, costPer1kOutput: 0.01 },
33
- smart: { model: 'o1', costPer1kInput: 0.015, costPer1kOutput: 0.06 },
34
- },
35
- strengths: {
36
- 'code': 0.90,
37
- 'research': 0.85,
38
- 'creative': 0.85,
39
- 'analysis': 0.90,
40
- 'simple-qa': 0.85,
41
- 'general': 0.88,
42
- },
43
- },
44
- google: {
45
- tiers: {
46
- fast: { model: 'gemini-2.0-flash', costPer1kInput: 0.000075, costPer1kOutput: 0.0003 },
47
- balanced: { model: 'gemini-1.5-pro', costPer1kInput: 0.00125, costPer1kOutput: 0.005 },
48
- smart: { model: 'gemini-1.5-pro', costPer1kInput: 0.00125, costPer1kOutput: 0.005 },
49
- },
50
- strengths: {
51
- 'code': 0.80,
52
- 'research': 0.90,
53
- 'creative': 0.80,
54
- 'analysis': 0.85,
55
- 'simple-qa': 0.90,
56
- 'general': 0.85,
57
- },
58
- },
59
- groq: {
60
- tiers: {
61
- fast: { model: 'llama-3.1-8b-instant', costPer1kInput: 0.00005, costPer1kOutput: 0.00008 },
62
- balanced: { model: 'llama-3.3-70b-versatile', costPer1kInput: 0.00059, costPer1kOutput: 0.00079 },
63
- smart: { model: 'llama-3.3-70b-versatile', costPer1kInput: 0.00059, costPer1kOutput: 0.00079 },
64
- },
65
- strengths: {
66
- 'code': 0.70,
67
- 'research': 0.65,
68
- 'creative': 0.65,
69
- 'analysis': 0.65,
70
- 'simple-qa': 0.80,
71
- 'general': 0.70,
72
- },
73
- },
74
- together: {
75
- tiers: {
76
- fast: { model: 'meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo', costPer1kInput: 0.00018, costPer1kOutput: 0.00018 },
77
- balanced: { model: 'meta-llama/Llama-3.3-70B-Instruct-Turbo', costPer1kInput: 0.00088, costPer1kOutput: 0.00088 },
78
- smart: { model: 'meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo', costPer1kInput: 0.003, costPer1kOutput: 0.003 },
79
- },
80
- strengths: {
81
- 'code': 0.75,
82
- 'research': 0.70,
83
- 'creative': 0.70,
84
- 'analysis': 0.70,
85
- 'simple-qa': 0.80,
86
- 'general': 0.72,
87
- },
88
- },
89
- openrouter: {
90
- tiers: {
91
- fast: { model: 'anthropic/claude-3.5-haiku', costPer1kInput: 0.0008, costPer1kOutput: 0.004 },
92
- balanced: { model: 'anthropic/claude-sonnet-4', costPer1kInput: 0.003, costPer1kOutput: 0.015 },
93
- smart: { model: 'anthropic/claude-opus-4', costPer1kInput: 0.015, costPer1kOutput: 0.075 },
94
- },
95
- strengths: {
96
- 'code': 0.93,
97
- 'research': 0.83,
98
- 'creative': 0.88,
99
- 'analysis': 0.88,
100
- 'simple-qa': 0.78,
101
- 'general': 0.88,
102
- },
103
- },
104
- fireworks: {
105
- tiers: {
106
- fast: { model: 'accounts/fireworks/models/llama-v3p1-8b-instruct', costPer1kInput: 0.0002, costPer1kOutput: 0.0002 },
107
- balanced: { model: 'accounts/fireworks/models/llama-v3p1-70b-instruct', costPer1kInput: 0.0009, costPer1kOutput: 0.0009 },
108
- smart: { model: 'accounts/fireworks/models/llama-v3p1-405b-instruct', costPer1kInput: 0.003, costPer1kOutput: 0.003 },
109
- },
110
- strengths: {
111
- 'code': 0.73,
112
- 'research': 0.68,
113
- 'creative': 0.68,
114
- 'analysis': 0.68,
115
- 'simple-qa': 0.78,
116
- 'general': 0.70,
117
- },
118
- },
119
- mistral: {
120
- tiers: {
121
- fast: { model: 'mistral-small-latest', costPer1kInput: 0.001, costPer1kOutput: 0.003 },
122
- balanced: { model: 'mistral-large-latest', costPer1kInput: 0.003, costPer1kOutput: 0.009 },
123
- smart: { model: 'mistral-large-latest', costPer1kInput: 0.003, costPer1kOutput: 0.009 },
124
- },
125
- strengths: {
126
- 'code': 0.78,
127
- 'research': 0.75,
128
- 'creative': 0.75,
129
- 'analysis': 0.78,
130
- 'simple-qa': 0.82,
131
- 'general': 0.78,
132
- },
133
- },
134
- ollama: {
135
- tiers: {
136
- fast: { model: 'llama3.1:8b', costPer1kInput: 0, costPer1kOutput: 0 },
137
- balanced: { model: 'llama3.3', costPer1kInput: 0, costPer1kOutput: 0 },
138
- smart: { model: 'llama3.3', costPer1kInput: 0, costPer1kOutput: 0 },
139
- },
140
- strengths: {
141
- 'code': 0.65,
142
- 'research': 0.60,
143
- 'creative': 0.60,
144
- 'analysis': 0.60,
145
- 'simple-qa': 0.75,
146
- 'general': 0.65,
147
- },
148
- },
149
- };
150
- // ============================================================================
151
- // Task Type Detection
152
- // ============================================================================
153
- const TASK_TYPE_PATTERNS = {
154
- 'code': [
155
- /\b(implement|refactor|bug|fix|debug|code|function|class|method|module)\b/i,
156
- /\b(typescript|javascript|python|rust|java|go|ruby|c\+\+)\b/i,
157
- /\.(ts|js|tsx|jsx|py|rs|go|java|rb|cpp|c|h|css|html|sql)\b/,
158
- /```[\s\S]*```/,
159
- /\b(npm|pip|cargo|maven|yarn|pnpm|git)\b/i,
160
- /\b(compile|build|test|lint|deploy)\b/i,
161
- ],
162
- 'research': [
163
- /\b(explain|compare|documentation|how\s+does|what\s+is|describe|overview)\b/i,
164
- /\b(research|investigate|look\s+into|find\s+out|summarize)\b/i,
165
- /\b(pros\s+and\s+cons|tradeoffs?|trade-offs?|differences?\s+between)\b/i,
166
- ],
167
- 'creative': [
168
- /\b(write|story|brainstorm|imagine|creative|poem|narrative)\b/i,
169
- /\b(generate|compose|craft|design|invent|create\s+a)\b/i,
170
- /\b(naming|tagline|slogan|pitch|headline)\b/i,
171
- ],
172
- 'analysis': [
173
- /\b(analyze|review|audit|evaluate|assess|inspect)\b/i,
174
- /\b(metrics|performance|benchmark|profil|optimize)\b/i,
175
- /\b(security|vulnerability|risk|compliance)\b/i,
176
- /\b(data|statistics|trends|patterns|correlat)\b/i,
177
- ],
178
- 'simple-qa': [
179
- /^.{0,80}$/, // Very short messages
180
- /^(what|who|when|where|why|how|is|are|do|does|can|could|will|would)\b/i,
181
- /\?$/,
182
- ],
183
- };
184
- /**
185
- * Detect the task type from a user message.
186
- */
187
- export function detectTaskType(message) {
188
- const scores = {
189
- 'code': 0,
190
- 'research': 0,
191
- 'creative': 0,
192
- 'analysis': 0,
193
- 'simple-qa': 0,
194
- 'general': 0,
195
- };
196
- const signals = [];
197
- for (const [type, patterns] of Object.entries(TASK_TYPE_PATTERNS)) {
198
- if (!patterns)
199
- continue;
200
- for (const pattern of patterns) {
201
- if (pattern.test(message)) {
202
- scores[type] += 1;
203
- if (scores[type] === 1) {
204
- signals.push(type);
205
- }
206
- }
207
- }
208
- }
209
- // Find highest scoring type
210
- let bestType = 'general';
211
- let bestScore = 0;
212
- for (const [type, score] of Object.entries(scores)) {
213
- if (score > bestScore) {
214
- bestScore = score;
215
- bestType = type;
216
- }
217
- }
218
- // If simple-qa is the only match but it's a short question, keep it
219
- // If code or analysis also matches, those take priority
220
- if (bestType === 'simple-qa' && scores['code'] > 0)
221
- bestType = 'code';
222
- if (bestType === 'simple-qa' && scores['analysis'] > 0)
223
- bestType = 'analysis';
224
- if (bestType === 'simple-qa' && scores['research'] > 0)
225
- bestType = 'research';
226
- const confidence = bestScore > 0 ? Math.min(0.95, 0.5 + bestScore * 0.15) : 0.3;
227
- return { taskType: bestType, confidence, signals };
228
- }
229
- // ============================================================================
230
- // Cost Efficiency
231
- // ============================================================================
232
- function costEfficiency(info) {
233
- const avgCost = (info.costPer1kInput + info.costPer1kOutput) / 2;
234
- if (avgCost === 0)
235
- return 1.0; // Free (local) = max efficiency
236
- // Normalize: lower cost = higher efficiency. Cap at 1.0
237
- return Math.min(1.0, 0.01 / avgCost);
238
- }
239
- // ============================================================================
240
- // Smart Routing
241
- // ============================================================================
242
- /**
243
- * Route to the best model across all configured providers.
244
- *
245
- * Algorithm:
246
- * 1. analyzeComplexity() → tier (fast/balanced/smart)
247
- * 2. detectTaskType() → task type
248
- * 3. Score each (provider, tier) pair:
249
- * score = strength * (1 - costWeight) + costEfficiency * costWeight
250
- * 4. Return best candidate + alternatives
251
- */
252
- export function smartRoute(message, routingConfig, context) {
253
- // Step 1: Determine complexity → tier
254
- const { complexity, confidence: complexityConfidence } = analyzeComplexity(message, context);
255
- let tier;
256
- switch (complexity) {
257
- case 'trivial':
258
- case 'simple':
259
- tier = 'fast';
260
- break;
261
- case 'moderate':
262
- tier = 'balanced';
263
- break;
264
- case 'complex':
265
- case 'expert':
266
- tier = 'smart';
267
- break;
268
- }
269
- // Step 2: Detect task type
270
- const { taskType, confidence: typeConfidence } = detectTaskType(message);
271
- // Step 3: Score each (provider, tier) pair
272
- const pool = routingConfig.providerPool.length > 0
273
- ? routingConfig.providerPool
274
- : getConfiguredProviders();
275
- const costWeight = routingConfig.costSensitivity;
276
- const candidates = [];
277
- for (const provider of pool) {
278
- const strengths = MODEL_STRENGTHS[provider];
279
- if (!strengths)
280
- continue;
281
- const modelInfo = strengths.tiers[tier];
282
- const taskStrength = strengths.strengths[taskType] ?? 0.5;
283
- const efficiency = costEfficiency(modelInfo);
284
- const score = taskStrength * (1 - costWeight) + efficiency * costWeight;
285
- // Preference bonus for preferred providers (small tie-breaker)
286
- const preferenceBonus = routingConfig.preferredProviders.includes(provider) ? 0.01 : 0;
287
- candidates.push({
288
- provider,
289
- model: modelInfo.model,
290
- tier,
291
- score: score + preferenceBonus,
292
- reason: `${taskType}/${complexity} - strength ${(taskStrength * 100).toFixed(0)}%, cost efficiency ${(efficiency * 100).toFixed(0)}%`,
293
- });
294
- }
295
- // Sort by score descending
296
- candidates.sort((a, b) => b.score - a.score);
297
- // If no candidates found, return a fallback
298
- if (candidates.length === 0) {
299
- return {
300
- selected: {
301
- provider: 'anthropic',
302
- model: 'claude-sonnet-4-6',
303
- tier,
304
- score: 0.5,
305
- reason: 'fallback - no providers available',
306
- },
307
- alternatives: [],
308
- taskType,
309
- complexity,
310
- confidence: Math.min(complexityConfidence, typeConfidence),
311
- };
312
- }
313
- return {
314
- selected: candidates[0],
315
- alternatives: candidates.slice(1),
316
- taskType,
317
- complexity,
318
- confidence: Math.min(complexityConfidence, typeConfidence),
319
- };
320
- }
321
- /**
322
- * Get default smart routing config.
323
- */
324
- export function getDefaultSmartRoutingConfig() {
325
- return {
326
- enabled: false,
327
- providerPool: [],
328
- costSensitivity: 0.3,
329
- preferredProviders: [],
330
- };
331
- }
332
- //# sourceMappingURL=smart-router.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"smart-router.js","sourceRoot":"","sources":["../src/smart-router.ts"],"names":[],"mappings":"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"}
@@ -1,55 +0,0 @@
1
- /**
2
- * Calliope CLI - Terminal Recording & Playback
3
- *
4
- * Record session events (user input, assistant output, tool calls/results)
5
- * with timestamps for replay, review, and debugging.
6
- */
7
- export interface RecordingEvent {
8
- type: 'input' | 'output' | 'tool_call' | 'tool_result' | 'system' | 'error';
9
- timestamp: number;
10
- data: string;
11
- metadata?: Record<string, unknown>;
12
- }
13
- export interface Recording {
14
- id: string;
15
- startTime: string;
16
- endTime?: string;
17
- events: RecordingEvent[];
18
- metadata: {
19
- provider?: string;
20
- model?: string;
21
- cwd?: string;
22
- version?: string;
23
- };
24
- }
25
- /** Enable or disable recording globally */
26
- export declare function setRecordingEnabled(enabled: boolean): void;
27
- /** Check if recording is enabled */
28
- export declare function isRecordingEnabled(): boolean;
29
- /** Start a new recording. Returns id, or null if recording is disabled. */
30
- export declare function startRecording(metadata?: Recording['metadata']): string | null;
31
- /** Stop active recording and save to disk */
32
- export declare function stopRecording(): Recording | null;
33
- /** Record an event */
34
- export declare function recordEvent(type: RecordingEvent['type'], data: string, metadata?: Record<string, unknown>): void;
35
- /** Check if recording is active */
36
- export declare function isRecording(): boolean;
37
- /** Get active recording ID */
38
- export declare function getActiveRecordingId(): string | null;
39
- /** List saved recordings */
40
- export declare function listRecordings(): Array<{
41
- id: string;
42
- startTime: string;
43
- eventCount: number;
44
- duration: number;
45
- }>;
46
- /** Load a recording by ID */
47
- export declare function loadRecording(id: string): Recording | null;
48
- /** Delete a recording */
49
- export declare function deleteRecording(id: string): boolean;
50
- /** Format recording for display (text playback) */
51
- export declare function formatRecording(recording: Recording): string;
52
- export declare function setRetentionDays(days: number): void;
53
- /** Clean up old recordings (older than retentionDays) */
54
- export declare function cleanupRecordings(retentionDays?: number): number;
55
- //# sourceMappingURL=terminal-recording.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"terminal-recording.d.ts","sourceRoot":"","sources":["../src/terminal-recording.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,aAAa,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC5E,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,QAAQ,EAAE;QACR,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAiBD,2CAA2C;AAC3C,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAE1D;AAED,oCAAoC;AACpC,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;AAED,2EAA2E;AAC3E,wBAAgB,cAAc,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,UAAU,CAAC,GAAG,MAAM,GAAG,IAAI,CAiB9E;AAED,6CAA6C;AAC7C,wBAAgB,aAAa,IAAI,SAAS,GAAG,IAAI,CAYhD;AAED,sBAAsB;AACtB,wBAAgB,WAAW,CAAC,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAQhH;AAED,mCAAmC;AACnC,wBAAgB,WAAW,IAAI,OAAO,CAErC;AAED,8BAA8B;AAC9B,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,IAAI,CAEpD;AAED,4BAA4B;AAC5B,wBAAgB,cAAc,IAAI,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAa/G;AAED,6BAA6B;AAC7B,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAK1D;AAED,yBAAyB;AACzB,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAMnD;AAED,mDAAmD;AACnD,wBAAgB,eAAe,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CA+B5D;AAWD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAEnD;AAED,yDAAyD;AACzD,wBAAgB,iBAAiB,CAAC,aAAa,SAAsB,GAAG,MAAM,CAc7E"}
@@ -1,182 +0,0 @@
1
- /**
2
- * Calliope CLI - Terminal Recording & Playback
3
- *
4
- * Record session events (user input, assistant output, tool calls/results)
5
- * with timestamps for replay, review, and debugging.
6
- */
7
- import * as fs from 'fs';
8
- import * as path from 'path';
9
- // Recording state
10
- let activeRecording = null;
11
- let recordingStartMs = 0;
12
- let recordingEnabled = true;
13
- // Storage directory
14
- function getRecordingsDir() {
15
- const home = process.env.HOME || '/tmp';
16
- const dir = path.join(home, '.calliope-cli', 'recordings');
17
- if (!fs.existsSync(dir)) {
18
- fs.mkdirSync(dir, { recursive: true });
19
- }
20
- return dir;
21
- }
22
- /** Enable or disable recording globally */
23
- export function setRecordingEnabled(enabled) {
24
- recordingEnabled = enabled;
25
- }
26
- /** Check if recording is enabled */
27
- export function isRecordingEnabled() {
28
- return recordingEnabled;
29
- }
30
- /** Start a new recording. Returns id, or null if recording is disabled. */
31
- export function startRecording(metadata) {
32
- if (!recordingEnabled)
33
- return null;
34
- // Auto-rotate only if retention is explicitly configured
35
- if (retentionDaysConfig > 0) {
36
- cleanupRecordings();
37
- }
38
- const id = `rec-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
39
- activeRecording = {
40
- id,
41
- startTime: new Date().toISOString(),
42
- events: [],
43
- metadata: metadata || {},
44
- };
45
- recordingStartMs = Date.now();
46
- return id;
47
- }
48
- /** Stop active recording and save to disk */
49
- export function stopRecording() {
50
- if (!activeRecording)
51
- return null;
52
- activeRecording.endTime = new Date().toISOString();
53
- const recording = { ...activeRecording };
54
- // Save to disk
55
- const filePath = path.join(getRecordingsDir(), `${recording.id}.json`);
56
- fs.writeFileSync(filePath, JSON.stringify(recording, null, 2));
57
- activeRecording = null;
58
- recordingStartMs = 0;
59
- return recording;
60
- }
61
- /** Record an event */
62
- export function recordEvent(type, data, metadata) {
63
- if (!activeRecording)
64
- return;
65
- activeRecording.events.push({
66
- type,
67
- timestamp: Date.now() - recordingStartMs,
68
- data: data.slice(0, 10000), // Cap event data at 10KB
69
- metadata,
70
- });
71
- }
72
- /** Check if recording is active */
73
- export function isRecording() {
74
- return activeRecording !== null;
75
- }
76
- /** Get active recording ID */
77
- export function getActiveRecordingId() {
78
- return activeRecording?.id ?? null;
79
- }
80
- /** List saved recordings */
81
- export function listRecordings() {
82
- const dir = getRecordingsDir();
83
- try {
84
- const files = fs.readdirSync(dir).filter(f => f.endsWith('.json'));
85
- return files.map(f => {
86
- try {
87
- const data = JSON.parse(fs.readFileSync(path.join(dir, f), 'utf-8'));
88
- const duration = data.events.length > 0 ? data.events[data.events.length - 1].timestamp : 0;
89
- return { id: data.id, startTime: data.startTime, eventCount: data.events.length, duration };
90
- }
91
- catch {
92
- return null;
93
- }
94
- }).filter((r) => r !== null)
95
- .sort((a, b) => b.startTime.localeCompare(a.startTime));
96
- }
97
- catch {
98
- return [];
99
- }
100
- }
101
- /** Load a recording by ID */
102
- export function loadRecording(id) {
103
- const filePath = path.join(getRecordingsDir(), `${id}.json`);
104
- try {
105
- return JSON.parse(fs.readFileSync(filePath, 'utf-8'));
106
- }
107
- catch {
108
- return null;
109
- }
110
- }
111
- /** Delete a recording */
112
- export function deleteRecording(id) {
113
- const filePath = path.join(getRecordingsDir(), `${id}.json`);
114
- try {
115
- fs.unlinkSync(filePath);
116
- return true;
117
- }
118
- catch {
119
- return false;
120
- }
121
- }
122
- /** Format recording for display (text playback) */
123
- export function formatRecording(recording) {
124
- const lines = [];
125
- lines.push(`Recording: ${recording.id}`);
126
- lines.push(`Started: ${recording.startTime}`);
127
- lines.push(`Events: ${recording.events.length}`);
128
- lines.push('---');
129
- for (const event of recording.events) {
130
- const time = formatMs(event.timestamp);
131
- switch (event.type) {
132
- case 'input':
133
- lines.push(`[${time}] > ${event.data}`);
134
- break;
135
- case 'output':
136
- lines.push(`[${time}] ${event.data}`);
137
- break;
138
- case 'tool_call':
139
- lines.push(`[${time}] [tool:${event.metadata?.name || 'unknown'}] ${event.data}`);
140
- break;
141
- case 'tool_result':
142
- lines.push(`[${time}] [result] ${event.data.slice(0, 200)}`);
143
- break;
144
- case 'system':
145
- lines.push(`[${time}] [system] ${event.data}`);
146
- break;
147
- case 'error':
148
- lines.push(`[${time}] [ERROR] ${event.data}`);
149
- break;
150
- }
151
- }
152
- return lines.join('\n');
153
- }
154
- function formatMs(ms) {
155
- const secs = Math.floor(ms / 1000);
156
- const mins = Math.floor(secs / 60);
157
- const s = secs % 60;
158
- return `${mins}:${String(s).padStart(2, '0')}`;
159
- }
160
- /** Set retention days for auto-cleanup (0 = no auto-cleanup) */
161
- let retentionDaysConfig = 0;
162
- export function setRetentionDays(days) {
163
- retentionDaysConfig = days;
164
- }
165
- /** Clean up old recordings (older than retentionDays) */
166
- export function cleanupRecordings(retentionDays = retentionDaysConfig) {
167
- const dir = getRecordingsDir();
168
- const cutoff = Date.now() - retentionDays * 24 * 60 * 60 * 1000;
169
- let cleaned = 0;
170
- try {
171
- for (const f of fs.readdirSync(dir).filter(f => f.endsWith('.json'))) {
172
- const stat = fs.statSync(path.join(dir, f));
173
- if (stat.mtimeMs < cutoff) {
174
- fs.unlinkSync(path.join(dir, f));
175
- cleaned++;
176
- }
177
- }
178
- }
179
- catch { /* ignore */ }
180
- return cleaned;
181
- }
182
- //# sourceMappingURL=terminal-recording.js.map