@calliopelabs/cli 2.3.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 (538) hide show
  1. package/README.md +45 -644
  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/auto-compressor.d.ts.map +1 -1
  7. package/dist/auto-compressor.js +9 -5
  8. package/dist/auto-compressor.js.map +1 -1
  9. package/dist/bin.d.ts +9 -5
  10. package/dist/bin.d.ts.map +1 -1
  11. package/dist/bin.js +108 -76
  12. package/dist/bin.js.map +1 -1
  13. package/dist/budget.d.ts +64 -0
  14. package/dist/budget.d.ts.map +1 -0
  15. package/dist/budget.js +157 -0
  16. package/dist/budget.js.map +1 -0
  17. package/dist/checkpoint.d.ts +63 -30
  18. package/dist/checkpoint.d.ts.map +1 -1
  19. package/dist/checkpoint.js +249 -150
  20. package/dist/checkpoint.js.map +1 -1
  21. package/dist/circuit-breaker/breaker.js.map +1 -1
  22. package/dist/config.d.ts +86 -81
  23. package/dist/config.d.ts.map +1 -1
  24. package/dist/config.js +237 -305
  25. package/dist/config.js.map +1 -1
  26. package/dist/cost.d.ts +114 -0
  27. package/dist/cost.d.ts.map +1 -0
  28. package/dist/cost.js +499 -0
  29. package/dist/cost.js.map +1 -0
  30. package/dist/diff.d.ts.map +1 -1
  31. package/dist/diff.js +53 -11
  32. package/dist/diff.js.map +1 -1
  33. package/dist/errors.d.ts.map +1 -1
  34. package/dist/errors.js +33 -6
  35. package/dist/errors.js.map +1 -1
  36. package/dist/files.js.map +1 -1
  37. package/dist/fleet.d.ts +30 -0
  38. package/dist/fleet.d.ts.map +1 -0
  39. package/dist/fleet.js +86 -0
  40. package/dist/fleet.js.map +1 -0
  41. package/dist/fuzzy-search.d.ts.map +1 -1
  42. package/dist/fuzzy-search.js +2 -1
  43. package/dist/fuzzy-search.js.map +1 -1
  44. package/dist/git-status.js.map +1 -1
  45. package/dist/headless.d.ts +1 -2
  46. package/dist/headless.d.ts.map +1 -1
  47. package/dist/headless.js +222 -26
  48. package/dist/headless.js.map +1 -1
  49. package/dist/hooks.d.ts +8 -2
  50. package/dist/hooks.d.ts.map +1 -1
  51. package/dist/hooks.js +97 -11
  52. package/dist/hooks.js.map +1 -1
  53. package/dist/hud/api.d.ts +3 -18
  54. package/dist/hud/api.d.ts.map +1 -1
  55. package/dist/hud/api.js +9 -352
  56. package/dist/hud/api.js.map +1 -1
  57. package/dist/hud/palettes.d.ts.map +1 -1
  58. package/dist/hud/palettes.js +0 -180
  59. package/dist/hud/palettes.js.map +1 -1
  60. package/dist/hud/skins.d.ts.map +1 -1
  61. package/dist/hud/skins.js +0 -263
  62. package/dist/hud/skins.js.map +1 -1
  63. package/dist/hud/types.d.ts +2 -5
  64. package/dist/hud/types.d.ts.map +1 -1
  65. package/dist/index.d.ts +1 -4
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/index.js +1 -4
  68. package/dist/index.js.map +1 -1
  69. package/dist/iteration-ledger.d.ts.map +1 -1
  70. package/dist/iteration-ledger.js +3 -2
  71. package/dist/iteration-ledger.js.map +1 -1
  72. package/dist/local-model.d.ts +150 -0
  73. package/dist/local-model.d.ts.map +1 -0
  74. package/dist/local-model.js +408 -0
  75. package/dist/local-model.js.map +1 -0
  76. package/dist/markdown.d.ts.map +1 -1
  77. package/dist/markdown.js +32 -10
  78. package/dist/markdown.js.map +1 -1
  79. package/dist/mcp.d.ts +35 -5
  80. package/dist/mcp.d.ts.map +1 -1
  81. package/dist/mcp.js +190 -13
  82. package/dist/mcp.js.map +1 -1
  83. package/dist/memory.d.ts.map +1 -1
  84. package/dist/memory.js +6 -4
  85. package/dist/memory.js.map +1 -1
  86. package/dist/model-detection.d.ts +14 -1
  87. package/dist/model-detection.d.ts.map +1 -1
  88. package/dist/model-detection.js +308 -115
  89. package/dist/model-detection.js.map +1 -1
  90. package/dist/parallel-tools.d.ts +9 -1
  91. package/dist/parallel-tools.d.ts.map +1 -1
  92. package/dist/parallel-tools.js +6 -5
  93. package/dist/parallel-tools.js.map +1 -1
  94. package/dist/plugins.d.ts +68 -0
  95. package/dist/plugins.d.ts.map +1 -1
  96. package/dist/plugins.js +201 -3
  97. package/dist/plugins.js.map +1 -1
  98. package/dist/policy.d.ts +43 -0
  99. package/dist/policy.d.ts.map +1 -0
  100. package/dist/policy.js +139 -0
  101. package/dist/policy.js.map +1 -0
  102. package/dist/project-config.d.ts +1 -2
  103. package/dist/project-config.d.ts.map +1 -1
  104. package/dist/project-config.js +0 -3
  105. package/dist/project-config.js.map +1 -1
  106. package/dist/providers/anthropic.d.ts.map +1 -1
  107. package/dist/providers/anthropic.js +36 -2
  108. package/dist/providers/anthropic.js.map +1 -1
  109. package/dist/providers/bedrock.d.ts.map +1 -1
  110. package/dist/providers/bedrock.js +83 -22
  111. package/dist/providers/bedrock.js.map +1 -1
  112. package/dist/providers/compat.d.ts +21 -0
  113. package/dist/providers/compat.d.ts.map +1 -1
  114. package/dist/providers/compat.js +176 -6
  115. package/dist/providers/compat.js.map +1 -1
  116. package/dist/providers/google.js.map +1 -1
  117. package/dist/providers/index.d.ts +19 -4
  118. package/dist/providers/index.d.ts.map +1 -1
  119. package/dist/providers/index.js +62 -9
  120. package/dist/providers/index.js.map +1 -1
  121. package/dist/providers/ollama.d.ts +2 -2
  122. package/dist/providers/ollama.d.ts.map +1 -1
  123. package/dist/providers/ollama.js +26 -6
  124. package/dist/providers/ollama.js.map +1 -1
  125. package/dist/providers/openai.d.ts.map +1 -1
  126. package/dist/providers/openai.js +14 -10
  127. package/dist/providers/openai.js.map +1 -1
  128. package/dist/providers/types.d.ts +8 -0
  129. package/dist/providers/types.d.ts.map +1 -1
  130. package/dist/providers/types.js +19 -10
  131. package/dist/providers/types.js.map +1 -1
  132. package/dist/replay.d.ts +37 -0
  133. package/dist/replay.d.ts.map +1 -0
  134. package/dist/replay.js +168 -0
  135. package/dist/replay.js.map +1 -0
  136. package/dist/risk.d.ts.map +1 -1
  137. package/dist/risk.js +15 -5
  138. package/dist/risk.js.map +1 -1
  139. package/dist/router.d.ts +133 -0
  140. package/dist/router.d.ts.map +1 -0
  141. package/dist/{model-router.js → router.js} +336 -10
  142. package/dist/router.js.map +1 -0
  143. package/dist/runlog.d.ts +185 -0
  144. package/dist/runlog.d.ts.map +1 -0
  145. package/dist/runlog.js +398 -0
  146. package/dist/runlog.js.map +1 -0
  147. package/dist/{sandbox.d.ts → sandbox/docker.d.ts} +1 -1
  148. package/dist/sandbox/docker.d.ts.map +1 -0
  149. package/dist/{sandbox.js → sandbox/docker.js} +1 -1
  150. package/dist/sandbox/docker.js.map +1 -0
  151. package/dist/sandbox/index.d.ts +36 -0
  152. package/dist/sandbox/index.d.ts.map +1 -0
  153. package/dist/sandbox/index.js +62 -0
  154. package/dist/sandbox/index.js.map +1 -0
  155. package/dist/{sandbox-native.d.ts → sandbox/native.d.ts} +2 -1
  156. package/dist/sandbox/native.d.ts.map +1 -0
  157. package/dist/{sandbox-native.js → sandbox/native.js} +38 -6
  158. package/dist/sandbox/native.js.map +1 -0
  159. package/dist/scope.d.ts +10 -0
  160. package/dist/scope.d.ts.map +1 -1
  161. package/dist/scope.js +76 -16
  162. package/dist/scope.js.map +1 -1
  163. package/dist/scuttlebot/client.d.ts +83 -0
  164. package/dist/scuttlebot/client.d.ts.map +1 -0
  165. package/dist/scuttlebot/client.js +350 -0
  166. package/dist/scuttlebot/client.js.map +1 -0
  167. package/dist/scuttlebot/config.d.ts +28 -0
  168. package/dist/scuttlebot/config.d.ts.map +1 -0
  169. package/dist/scuttlebot/config.js +91 -0
  170. package/dist/scuttlebot/config.js.map +1 -0
  171. package/dist/scuttlebot/http-client.d.ts +63 -0
  172. package/dist/scuttlebot/http-client.d.ts.map +1 -0
  173. package/dist/scuttlebot/http-client.js +124 -0
  174. package/dist/scuttlebot/http-client.js.map +1 -0
  175. package/dist/scuttlebot/index.d.ts +13 -0
  176. package/dist/scuttlebot/index.d.ts.map +1 -0
  177. package/dist/scuttlebot/index.js +10 -0
  178. package/dist/scuttlebot/index.js.map +1 -0
  179. package/dist/scuttlebot/irc-client.d.ts +124 -0
  180. package/dist/scuttlebot/irc-client.d.ts.map +1 -0
  181. package/dist/scuttlebot/irc-client.js +599 -0
  182. package/dist/scuttlebot/irc-client.js.map +1 -0
  183. package/dist/setup.d.ts.map +1 -1
  184. package/dist/setup.js +22 -54
  185. package/dist/setup.js.map +1 -1
  186. package/dist/skills.d.ts +58 -0
  187. package/dist/skills.d.ts.map +1 -1
  188. package/dist/skills.js +186 -16
  189. package/dist/skills.js.map +1 -1
  190. package/dist/storage.d.ts +0 -4
  191. package/dist/storage.d.ts.map +1 -1
  192. package/dist/storage.js +87 -8
  193. package/dist/storage.js.map +1 -1
  194. package/dist/streaming.d.ts +25 -0
  195. package/dist/streaming.d.ts.map +1 -1
  196. package/dist/streaming.js +59 -0
  197. package/dist/streaming.js.map +1 -1
  198. package/dist/styles.d.ts +6 -0
  199. package/dist/styles.d.ts.map +1 -1
  200. package/dist/styles.js +11 -0
  201. package/dist/styles.js.map +1 -1
  202. package/dist/summarization.js.map +1 -1
  203. package/dist/terminal-image.js +1 -1
  204. package/dist/terminal-image.js.map +1 -1
  205. package/dist/themes.d.ts +5 -4
  206. package/dist/themes.d.ts.map +1 -1
  207. package/dist/themes.js +35 -90
  208. package/dist/themes.js.map +1 -1
  209. package/dist/tools.d.ts +27 -3
  210. package/dist/tools.d.ts.map +1 -1
  211. package/dist/tools.js +352 -209
  212. package/dist/tools.js.map +1 -1
  213. package/dist/trust.d.ts +16 -3
  214. package/dist/trust.d.ts.map +1 -1
  215. package/dist/trust.js +23 -4
  216. package/dist/trust.js.map +1 -1
  217. package/dist/types.d.ts +4 -3
  218. package/dist/types.d.ts.map +1 -1
  219. package/dist/types.js +34 -44
  220. package/dist/types.js.map +1 -1
  221. package/dist/ui/agent.d.ts +4 -7
  222. package/dist/ui/agent.d.ts.map +1 -1
  223. package/dist/ui/agent.js +354 -73
  224. package/dist/ui/agent.js.map +1 -1
  225. package/dist/ui/animations.d.ts +37 -0
  226. package/dist/ui/animations.d.ts.map +1 -0
  227. package/dist/ui/animations.js +227 -0
  228. package/dist/ui/animations.js.map +1 -0
  229. package/dist/ui/chat-input-keys.d.ts +42 -0
  230. package/dist/ui/chat-input-keys.d.ts.map +1 -0
  231. package/dist/ui/chat-input-keys.js +360 -0
  232. package/dist/ui/chat-input-keys.js.map +1 -0
  233. package/dist/ui/chat-input.d.ts +5 -2
  234. package/dist/ui/chat-input.d.ts.map +1 -1
  235. package/dist/ui/chat-input.js +54 -308
  236. package/dist/ui/chat-input.js.map +1 -1
  237. package/dist/ui/commands.d.ts +15 -45
  238. package/dist/ui/commands.d.ts.map +1 -1
  239. package/dist/ui/commands.js +461 -2636
  240. package/dist/ui/commands.js.map +1 -1
  241. package/dist/ui/completions.d.ts +1 -0
  242. package/dist/ui/completions.d.ts.map +1 -1
  243. package/dist/ui/completions.js +36 -107
  244. package/dist/ui/completions.js.map +1 -1
  245. package/dist/ui/components.d.ts +14 -6
  246. package/dist/ui/components.d.ts.map +1 -1
  247. package/dist/ui/components.js +17 -226
  248. package/dist/ui/components.js.map +1 -1
  249. package/dist/ui/context.js +6 -6
  250. package/dist/ui/context.js.map +1 -1
  251. package/dist/ui/debug-log.d.ts +11 -0
  252. package/dist/ui/debug-log.d.ts.map +1 -0
  253. package/dist/ui/debug-log.js +21 -0
  254. package/dist/ui/debug-log.js.map +1 -0
  255. package/dist/ui/error-boundary.d.ts.map +1 -1
  256. package/dist/ui/error-boundary.js.map +1 -1
  257. package/dist/ui/frame.d.ts.map +1 -1
  258. package/dist/ui/frame.js +1 -3
  259. package/dist/ui/frame.js.map +1 -1
  260. package/dist/ui/index.d.ts +11 -3
  261. package/dist/ui/index.d.ts.map +1 -1
  262. package/dist/ui/index.js +46 -887
  263. package/dist/ui/index.js.map +1 -1
  264. package/dist/ui/input-utils.d.ts +20 -0
  265. package/dist/ui/input-utils.d.ts.map +1 -0
  266. package/dist/ui/input-utils.js +35 -0
  267. package/dist/ui/input-utils.js.map +1 -0
  268. package/dist/ui/messages.d.ts +8 -7
  269. package/dist/ui/messages.d.ts.map +1 -1
  270. package/dist/ui/messages.js +51 -35
  271. package/dist/ui/messages.js.map +1 -1
  272. package/dist/ui/modals/index.d.ts +11 -0
  273. package/dist/ui/modals/index.d.ts.map +1 -0
  274. package/dist/ui/modals/index.js +10 -0
  275. package/dist/ui/modals/index.js.map +1 -0
  276. package/dist/ui/{modals.d.ts → modals/prompts.d.ts} +5 -20
  277. package/dist/ui/modals/prompts.d.ts.map +1 -0
  278. package/dist/ui/{modals.js → modals/prompts.js} +14 -94
  279. package/dist/ui/modals/prompts.js.map +1 -0
  280. package/dist/ui/modals/selectors.d.ts +33 -0
  281. package/dist/ui/modals/selectors.d.ts.map +1 -0
  282. package/dist/ui/modals/selectors.js +111 -0
  283. package/dist/ui/modals/selectors.js.map +1 -0
  284. package/dist/ui/modals/setup.d.ts +17 -0
  285. package/dist/ui/modals/setup.d.ts.map +1 -0
  286. package/dist/ui/modals/setup.js +51 -0
  287. package/dist/ui/modals/setup.js.map +1 -0
  288. package/dist/ui/regions/input-region.d.ts +40 -0
  289. package/dist/ui/regions/input-region.d.ts.map +1 -0
  290. package/dist/ui/regions/input-region.js +116 -0
  291. package/dist/ui/regions/input-region.js.map +1 -0
  292. package/dist/ui/regions/modal-host.d.ts +41 -0
  293. package/dist/ui/regions/modal-host.d.ts.map +1 -0
  294. package/dist/ui/regions/modal-host.js +51 -0
  295. package/dist/ui/regions/modal-host.js.map +1 -0
  296. package/dist/ui/regions/render-probe.d.ts +22 -0
  297. package/dist/ui/regions/render-probe.d.ts.map +1 -0
  298. package/dist/ui/regions/render-probe.js +45 -0
  299. package/dist/ui/regions/render-probe.js.map +1 -0
  300. package/dist/ui/regions/static-scrollback.d.ts +39 -0
  301. package/dist/ui/regions/static-scrollback.d.ts.map +1 -0
  302. package/dist/ui/regions/static-scrollback.js +68 -0
  303. package/dist/ui/regions/static-scrollback.js.map +1 -0
  304. package/dist/ui/regions/status-region.d.ts +24 -0
  305. package/dist/ui/regions/status-region.d.ts.map +1 -0
  306. package/dist/ui/regions/status-region.js +17 -0
  307. package/dist/ui/regions/status-region.js.map +1 -0
  308. package/dist/ui/regions/transcript-region.d.ts +41 -0
  309. package/dist/ui/regions/transcript-region.d.ts.map +1 -0
  310. package/dist/ui/regions/transcript-region.js +52 -0
  311. package/dist/ui/regions/transcript-region.js.map +1 -0
  312. package/dist/ui/self-restart.d.ts +9 -0
  313. package/dist/ui/self-restart.d.ts.map +1 -0
  314. package/dist/ui/self-restart.js +24 -0
  315. package/dist/ui/self-restart.js.map +1 -0
  316. package/dist/ui/state/use-chat-controller.d.ts +23 -0
  317. package/dist/ui/state/use-chat-controller.d.ts.map +1 -0
  318. package/dist/ui/state/use-chat-controller.js +643 -0
  319. package/dist/ui/state/use-chat-controller.js.map +1 -0
  320. package/dist/ui/state/use-loop-state.d.ts +23 -0
  321. package/dist/ui/state/use-loop-state.d.ts.map +1 -0
  322. package/dist/ui/state/use-loop-state.js +39 -0
  323. package/dist/ui/state/use-loop-state.js.map +1 -0
  324. package/dist/ui/state/use-modal-state.d.ts +52 -0
  325. package/dist/ui/state/use-modal-state.d.ts.map +1 -0
  326. package/dist/ui/state/use-modal-state.js +44 -0
  327. package/dist/ui/state/use-modal-state.js.map +1 -0
  328. package/dist/ui/state/use-model-state.d.ts +29 -0
  329. package/dist/ui/state/use-model-state.d.ts.map +1 -0
  330. package/dist/ui/state/use-model-state.js +47 -0
  331. package/dist/ui/state/use-model-state.js.map +1 -0
  332. package/dist/ui/state/use-processing-state.d.ts +24 -0
  333. package/dist/ui/state/use-processing-state.d.ts.map +1 -0
  334. package/dist/ui/state/use-processing-state.js +46 -0
  335. package/dist/ui/state/use-processing-state.js.map +1 -0
  336. package/dist/ui/state/use-queue-state.d.ts +19 -0
  337. package/dist/ui/state/use-queue-state.d.ts.map +1 -0
  338. package/dist/ui/state/use-queue-state.js +30 -0
  339. package/dist/ui/state/use-queue-state.js.map +1 -0
  340. package/dist/ui/state/use-session-init.d.ts +22 -0
  341. package/dist/ui/state/use-session-init.d.ts.map +1 -0
  342. package/dist/ui/state/use-session-init.js +77 -0
  343. package/dist/ui/state/use-session-init.js.map +1 -0
  344. package/dist/ui/state/use-session-stats.d.ts +16 -0
  345. package/dist/ui/state/use-session-stats.d.ts.map +1 -0
  346. package/dist/ui/state/use-session-stats.js +18 -0
  347. package/dist/ui/state/use-session-stats.js.map +1 -0
  348. package/dist/ui/state/use-terminal-width.d.ts +8 -0
  349. package/dist/ui/state/use-terminal-width.d.ts.map +1 -0
  350. package/dist/ui/state/use-terminal-width.js +22 -0
  351. package/dist/ui/state/use-terminal-width.js.map +1 -0
  352. package/dist/ui/state/use-transcript-state.d.ts +21 -0
  353. package/dist/ui/state/use-transcript-state.d.ts.map +1 -0
  354. package/dist/ui/state/use-transcript-state.js +49 -0
  355. package/dist/ui/state/use-transcript-state.js.map +1 -0
  356. package/dist/ui/status-bar.d.ts +4 -1
  357. package/dist/ui/status-bar.d.ts.map +1 -1
  358. package/dist/ui/status-bar.js +13 -3
  359. package/dist/ui/status-bar.js.map +1 -1
  360. package/dist/ui/types.d.ts +3 -0
  361. package/dist/ui/types.d.ts.map +1 -1
  362. package/dist/version-check.d.ts.map +1 -1
  363. package/dist/version-check.js +10 -0
  364. package/dist/version-check.js.map +1 -1
  365. package/package.json +12 -8
  366. package/dist/agents/agent-config-loader.d.ts +0 -60
  367. package/dist/agents/agent-config-loader.d.ts.map +0 -1
  368. package/dist/agents/agent-config-loader.js +0 -402
  369. package/dist/agents/agent-config-loader.js.map +0 -1
  370. package/dist/agents/agent-config-presets.d.ts +0 -10
  371. package/dist/agents/agent-config-presets.d.ts.map +0 -1
  372. package/dist/agents/agent-config-presets.js +0 -940
  373. package/dist/agents/agent-config-presets.js.map +0 -1
  374. package/dist/agents/agent-config-types.d.ts +0 -145
  375. package/dist/agents/agent-config-types.d.ts.map +0 -1
  376. package/dist/agents/agent-config-types.js +0 -12
  377. package/dist/agents/agent-config-types.js.map +0 -1
  378. package/dist/agents/agent-detection.d.ts +0 -35
  379. package/dist/agents/agent-detection.d.ts.map +0 -1
  380. package/dist/agents/agent-detection.js +0 -110
  381. package/dist/agents/agent-detection.js.map +0 -1
  382. package/dist/agents/aggregator.d.ts +0 -19
  383. package/dist/agents/aggregator.d.ts.map +0 -1
  384. package/dist/agents/aggregator.js +0 -141
  385. package/dist/agents/aggregator.js.map +0 -1
  386. package/dist/agents/cli-backend.d.ts +0 -32
  387. package/dist/agents/cli-backend.d.ts.map +0 -1
  388. package/dist/agents/cli-backend.js +0 -271
  389. package/dist/agents/cli-backend.js.map +0 -1
  390. package/dist/agents/council-types.d.ts +0 -115
  391. package/dist/agents/council-types.d.ts.map +0 -1
  392. package/dist/agents/council-types.js +0 -81
  393. package/dist/agents/council-types.js.map +0 -1
  394. package/dist/agents/council.d.ts +0 -112
  395. package/dist/agents/council.d.ts.map +0 -1
  396. package/dist/agents/council.js +0 -722
  397. package/dist/agents/council.js.map +0 -1
  398. package/dist/agents/decomposer.d.ts +0 -33
  399. package/dist/agents/decomposer.d.ts.map +0 -1
  400. package/dist/agents/decomposer.js +0 -138
  401. package/dist/agents/decomposer.js.map +0 -1
  402. package/dist/agents/dynamic-tools.d.ts +0 -52
  403. package/dist/agents/dynamic-tools.d.ts.map +0 -1
  404. package/dist/agents/dynamic-tools.js +0 -395
  405. package/dist/agents/dynamic-tools.js.map +0 -1
  406. package/dist/agents/index.d.ts +0 -29
  407. package/dist/agents/index.d.ts.map +0 -1
  408. package/dist/agents/index.js +0 -29
  409. package/dist/agents/index.js.map +0 -1
  410. package/dist/agents/installer.d.ts +0 -39
  411. package/dist/agents/installer.d.ts.map +0 -1
  412. package/dist/agents/installer.js +0 -205
  413. package/dist/agents/installer.js.map +0 -1
  414. package/dist/agents/orchestrator.d.ts +0 -106
  415. package/dist/agents/orchestrator.d.ts.map +0 -1
  416. package/dist/agents/orchestrator.js +0 -363
  417. package/dist/agents/orchestrator.js.map +0 -1
  418. package/dist/agents/sdk-backend.d.ts +0 -63
  419. package/dist/agents/sdk-backend.d.ts.map +0 -1
  420. package/dist/agents/sdk-backend.js +0 -489
  421. package/dist/agents/sdk-backend.js.map +0 -1
  422. package/dist/agents/swarm-types.d.ts +0 -84
  423. package/dist/agents/swarm-types.d.ts.map +0 -1
  424. package/dist/agents/swarm-types.js +0 -20
  425. package/dist/agents/swarm-types.js.map +0 -1
  426. package/dist/agents/swarm.d.ts +0 -79
  427. package/dist/agents/swarm.d.ts.map +0 -1
  428. package/dist/agents/swarm.js +0 -375
  429. package/dist/agents/swarm.js.map +0 -1
  430. package/dist/agents/tools.d.ts +0 -26
  431. package/dist/agents/tools.d.ts.map +0 -1
  432. package/dist/agents/tools.js +0 -776
  433. package/dist/agents/tools.js.map +0 -1
  434. package/dist/agents/types.d.ts +0 -108
  435. package/dist/agents/types.d.ts.map +0 -1
  436. package/dist/agents/types.js +0 -43
  437. package/dist/agents/types.js.map +0 -1
  438. package/dist/api-server.d.ts +0 -36
  439. package/dist/api-server.d.ts.map +0 -1
  440. package/dist/api-server.js +0 -255
  441. package/dist/api-server.js.map +0 -1
  442. package/dist/auto-checkpoint.d.ts +0 -35
  443. package/dist/auto-checkpoint.d.ts.map +0 -1
  444. package/dist/auto-checkpoint.js +0 -143
  445. package/dist/auto-checkpoint.js.map +0 -1
  446. package/dist/background-jobs.d.ts +0 -45
  447. package/dist/background-jobs.d.ts.map +0 -1
  448. package/dist/background-jobs.js +0 -127
  449. package/dist/background-jobs.js.map +0 -1
  450. package/dist/branching.d.ts +0 -56
  451. package/dist/branching.d.ts.map +0 -1
  452. package/dist/branching.js +0 -211
  453. package/dist/branching.js.map +0 -1
  454. package/dist/cli/agent.d.ts +0 -9
  455. package/dist/cli/agent.d.ts.map +0 -1
  456. package/dist/cli/agent.js +0 -314
  457. package/dist/cli/agent.js.map +0 -1
  458. package/dist/cli/commands.d.ts +0 -12
  459. package/dist/cli/commands.d.ts.map +0 -1
  460. package/dist/cli/commands.js +0 -943
  461. package/dist/cli/commands.js.map +0 -1
  462. package/dist/cli/index.d.ts +0 -8
  463. package/dist/cli/index.d.ts.map +0 -1
  464. package/dist/cli/index.js +0 -237
  465. package/dist/cli/index.js.map +0 -1
  466. package/dist/cli/types.d.ts +0 -33
  467. package/dist/cli/types.d.ts.map +0 -1
  468. package/dist/cli/types.js +0 -21
  469. package/dist/cli/types.js.map +0 -1
  470. package/dist/companions.d.ts +0 -54
  471. package/dist/companions.d.ts.map +0 -1
  472. package/dist/companions.js +0 -440
  473. package/dist/companions.js.map +0 -1
  474. package/dist/completion.d.ts +0 -75
  475. package/dist/completion.d.ts.map +0 -1
  476. package/dist/completion.js +0 -234
  477. package/dist/completion.js.map +0 -1
  478. package/dist/file-watcher.d.ts +0 -91
  479. package/dist/file-watcher.d.ts.map +0 -1
  480. package/dist/file-watcher.js +0 -269
  481. package/dist/file-watcher.js.map +0 -1
  482. package/dist/hud/theme-packs/api.d.ts +0 -51
  483. package/dist/hud/theme-packs/api.d.ts.map +0 -1
  484. package/dist/hud/theme-packs/api.js +0 -145
  485. package/dist/hud/theme-packs/api.js.map +0 -1
  486. package/dist/hud/theme-packs/index.d.ts +0 -18
  487. package/dist/hud/theme-packs/index.d.ts.map +0 -1
  488. package/dist/hud/theme-packs/index.js +0 -38
  489. package/dist/hud/theme-packs/index.js.map +0 -1
  490. package/dist/hud/theme-packs/types.d.ts +0 -29
  491. package/dist/hud/theme-packs/types.d.ts.map +0 -1
  492. package/dist/hud/theme-packs/types.js +0 -9
  493. package/dist/hud/theme-packs/types.js.map +0 -1
  494. package/dist/idle-eviction.d.ts +0 -34
  495. package/dist/idle-eviction.d.ts.map +0 -1
  496. package/dist/idle-eviction.js +0 -78
  497. package/dist/idle-eviction.js.map +0 -1
  498. package/dist/keyboard.d.ts +0 -57
  499. package/dist/keyboard.d.ts.map +0 -1
  500. package/dist/keyboard.js +0 -265
  501. package/dist/keyboard.js.map +0 -1
  502. package/dist/model-router.d.ts +0 -67
  503. package/dist/model-router.d.ts.map +0 -1
  504. package/dist/model-router.js.map +0 -1
  505. package/dist/providers/openai-compat-shims.d.ts +0 -31
  506. package/dist/providers/openai-compat-shims.d.ts.map +0 -1
  507. package/dist/providers/openai-compat-shims.js +0 -179
  508. package/dist/providers/openai-compat-shims.js.map +0 -1
  509. package/dist/sandbox-native.d.ts.map +0 -1
  510. package/dist/sandbox-native.js.map +0 -1
  511. package/dist/sandbox.d.ts.map +0 -1
  512. package/dist/sandbox.js.map +0 -1
  513. package/dist/session-timeout.d.ts +0 -31
  514. package/dist/session-timeout.d.ts.map +0 -1
  515. package/dist/session-timeout.js +0 -100
  516. package/dist/session-timeout.js.map +0 -1
  517. package/dist/smart-router.d.ts +0 -73
  518. package/dist/smart-router.d.ts.map +0 -1
  519. package/dist/smart-router.js +0 -332
  520. package/dist/smart-router.js.map +0 -1
  521. package/dist/terminal-recording.d.ts +0 -55
  522. package/dist/terminal-recording.d.ts.map +0 -1
  523. package/dist/terminal-recording.js +0 -182
  524. package/dist/terminal-recording.js.map +0 -1
  525. package/dist/tmux.d.ts +0 -35
  526. package/dist/tmux.d.ts.map +0 -1
  527. package/dist/tmux.js +0 -106
  528. package/dist/tmux.js.map +0 -1
  529. package/dist/ui/modals.d.ts.map +0 -1
  530. package/dist/ui/modals.js.map +0 -1
  531. package/dist/ui/pack-picker.d.ts +0 -12
  532. package/dist/ui/pack-picker.d.ts.map +0 -1
  533. package/dist/ui/pack-picker.js +0 -101
  534. package/dist/ui/pack-picker.js.map +0 -1
  535. package/dist/ui/theme-picker.d.ts +0 -24
  536. package/dist/ui/theme-picker.d.ts.map +0 -1
  537. package/dist/ui/theme-picker.js +0 -190
  538. package/dist/ui/theme-picker.js.map +0 -1
package/dist/setup.js CHANGED
@@ -93,7 +93,7 @@ export async function runSetup(force = false) {
93
93
  message: 'Enter your Ollama base URL:',
94
94
  default: 'http://localhost:11434',
95
95
  });
96
- config.set('ollamaBaseUrl', baseUrl);
96
+ config.setProviderCred('ollama', { baseUrl });
97
97
  }
98
98
  else if (providerChoice === 'litellm' && needsKey) {
99
99
  console.log();
@@ -102,7 +102,7 @@ export async function runSetup(force = false) {
102
102
  message: 'Enter your LiteLLM proxy URL:',
103
103
  default: 'http://localhost:4000',
104
104
  });
105
- config.set('litellmBaseUrl', baseUrl);
105
+ config.setProviderCred('litellm', { baseUrl });
106
106
  const needsApiKey = await confirm({
107
107
  message: 'Does your LiteLLM proxy require an API key?',
108
108
  default: false,
@@ -113,7 +113,7 @@ export async function runSetup(force = false) {
113
113
  mask: '*',
114
114
  });
115
115
  if (apiKey && apiKey.length > 0) {
116
- config.set('litellmApiKey', apiKey);
116
+ config.setProviderCred('litellm', { apiKey });
117
117
  }
118
118
  }
119
119
  }
@@ -124,7 +124,7 @@ export async function runSetup(force = false) {
124
124
  message: 'Enter your Bedrock gateway/proxy URL:',
125
125
  default: 'http://localhost:8080',
126
126
  });
127
- config.set('bedrockBaseUrl', baseUrl);
127
+ config.setProviderCred('bedrock', { baseUrl });
128
128
  const needsApiKey = await confirm({
129
129
  message: 'Does your Bedrock gateway require an API key?',
130
130
  default: false,
@@ -135,7 +135,7 @@ export async function runSetup(force = false) {
135
135
  mask: '*',
136
136
  });
137
137
  if (apiKey && apiKey.length > 0) {
138
- config.set('bedrockApiKey', apiKey);
138
+ config.setProviderCred('bedrock', { apiKey });
139
139
  }
140
140
  }
141
141
  }
@@ -144,11 +144,13 @@ export async function runSetup(force = false) {
144
144
  console.log(c(' Any server that speaks the OpenAI chat completions API.', 'dim'));
145
145
  console.log(c(' Examples: AnythingLLM (port 3001), LocalAI (8080), Jan (1337), LM Studio (1234), vLLM (8000)', 'dim'));
146
146
  const baseUrl = await input({ message: 'Enter base URL:', default: 'http://localhost:1234/v1' });
147
- config.set('openaiCompatBaseUrl', baseUrl);
147
+ config.setProviderCred('openai-compat', { baseUrl });
148
148
  const needsApiKey = await confirm({ message: 'Does this server require an API key?', default: false });
149
149
  if (needsApiKey) {
150
150
  const apiKey = await input({ message: 'Enter API key:' });
151
- config.set('openaiCompatApiKey', apiKey);
151
+ if (apiKey && apiKey.length > 0) {
152
+ config.setProviderCred('openai-compat', { apiKey });
153
+ }
152
154
  }
153
155
  }
154
156
  else if (needsKey) {
@@ -195,42 +197,9 @@ export async function runSetup(force = false) {
195
197
  return true;
196
198
  },
197
199
  });
198
- // Store the key
199
- const keyMap = {
200
- anthropic: 'anthropicApiKey',
201
- google: 'googleApiKey',
202
- openai: 'openaiApiKey',
203
- openrouter: 'openrouterApiKey',
204
- together: 'togetherApiKey',
205
- groq: 'groqApiKey',
206
- fireworks: 'fireworksApiKey',
207
- mistral: 'mistralApiKey',
208
- ai21: 'ai21ApiKey',
209
- huggingface: 'huggingfaceApiKey',
210
- };
211
- if (keyMap[providerChoice]) {
212
- config.set(keyMap[providerChoice], apiKey);
213
- }
200
+ // Store the key under the provider's nested credentials.
201
+ config.setProviderCred(providerChoice, { apiKey });
214
202
  }
215
- // Persona selection
216
- console.log();
217
- const personaChoice = await select({
218
- message: 'Choose Calliope\'s personality:',
219
- choices: [
220
- { value: 'calliope', name: 'Calliope (Recommended)', description: 'Clear, concise, and thorough' },
221
- { value: 'muse', name: 'Muse (Poetic)', description: 'Creative with artistic flair' },
222
- { value: 'minimal', name: 'Minimal', description: 'Extremely brief and efficient' },
223
- ],
224
- default: 'calliope',
225
- });
226
- config.set('persona', personaChoice);
227
- // Fancy output
228
- console.log();
229
- const fancyOutput = await confirm({
230
- message: 'Enable fancy terminal output (colors, spinners, ASCII art)?',
231
- default: true,
232
- });
233
- config.set('fancyOutput', fancyOutput);
234
203
  // Optional: Additional providers
235
204
  console.log();
236
205
  const addMore = await confirm({
@@ -248,7 +217,6 @@ export async function runSetup(force = false) {
248
217
  console.log(c(' Setup complete!', 'green'));
249
218
  console.log();
250
219
  console.log(` ${c('Provider:', 'dim')} ${c(providerChoice, 'cyan')}`);
251
- console.log(` ${c('Persona:', 'dim')} ${c(personaChoice, 'magenta')}`);
252
220
  console.log(` ${c('Config:', 'dim')} ${c(config.getConfigPath(), 'dim')}`);
253
221
  console.log();
254
222
  console.log(c(' Type your first message to begin, or /help for commands.', 'dim'));
@@ -261,22 +229,22 @@ export async function runSetup(force = false) {
261
229
  */
262
230
  async function configureAdditionalProviders(existingEnvProviders) {
263
231
  const providers = [
264
- { id: 'anthropic', name: 'Anthropic Claude', envKey: 'ANTHROPIC_API_KEY', configKey: 'anthropicApiKey' },
265
- { id: 'google', name: 'Google Gemini', envKey: 'GOOGLE_API_KEY', configKey: 'googleApiKey' },
266
- { id: 'openai', name: 'OpenAI GPT', envKey: 'OPENAI_API_KEY', configKey: 'openaiApiKey' },
267
- { id: 'openrouter', name: 'OpenRouter', envKey: 'OPENROUTER_API_KEY', configKey: 'openrouterApiKey' },
268
- { id: 'together', name: 'Together AI', envKey: 'TOGETHER_API_KEY', configKey: 'togetherApiKey' },
269
- { id: 'groq', name: 'Groq', envKey: 'GROQ_API_KEY', configKey: 'groqApiKey' },
270
- { id: 'mistral', name: 'Mistral AI', envKey: 'MISTRAL_API_KEY', configKey: 'mistralApiKey' },
271
- { id: 'ai21', name: 'AI21 Labs', envKey: 'AI21_API_KEY', configKey: 'ai21ApiKey' },
272
- { id: 'huggingface', name: 'HuggingFace', envKey: 'HUGGINGFACE_API_KEY', configKey: 'huggingfaceApiKey' },
232
+ { id: 'anthropic', name: 'Anthropic Claude', envKey: 'ANTHROPIC_API_KEY' },
233
+ { id: 'google', name: 'Google Gemini', envKey: 'GOOGLE_API_KEY' },
234
+ { id: 'openai', name: 'OpenAI GPT', envKey: 'OPENAI_API_KEY' },
235
+ { id: 'openrouter', name: 'OpenRouter', envKey: 'OPENROUTER_API_KEY' },
236
+ { id: 'together', name: 'Together AI', envKey: 'TOGETHER_API_KEY' },
237
+ { id: 'groq', name: 'Groq', envKey: 'GROQ_API_KEY' },
238
+ { id: 'mistral', name: 'Mistral AI', envKey: 'MISTRAL_API_KEY' },
239
+ { id: 'ai21', name: 'AI21 Labs', envKey: 'AI21_API_KEY' },
240
+ { id: 'huggingface', name: 'HuggingFace', envKey: 'HUGGINGFACE_API_KEY' },
273
241
  ];
274
242
  for (const provider of providers) {
275
243
  // Skip if already configured via env or selected as primary
276
244
  if (existingEnvProviders.includes(provider.id)) {
277
245
  continue;
278
246
  }
279
- const existing = config.get(provider.configKey);
247
+ const existing = config.getProviderCred(provider.id).apiKey;
280
248
  if (existing) {
281
249
  continue;
282
250
  }
@@ -290,7 +258,7 @@ async function configureAdditionalProviders(existingEnvProviders) {
290
258
  mask: '*',
291
259
  });
292
260
  if (apiKey && apiKey.length > 10) {
293
- config.set(provider.configKey, apiKey);
261
+ config.setProviderCred(provider.id, { apiKey });
294
262
  console.log(c(` ✓ ${provider.name} configured`, 'green'));
295
263
  }
296
264
  }
package/dist/setup.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
package/dist/skills.d.ts CHANGED
@@ -13,6 +13,13 @@ export interface SkillMetadata {
13
13
  allowedTools?: string[];
14
14
  [key: string]: string | string[] | Record<string, string> | undefined;
15
15
  }
16
+ /**
17
+ * Trust state of an installed skill relative to the sha256 pinned at install (#137).
18
+ * - `pinned` — on-disk SKILL.md matches the recorded hash.
19
+ * - `changed` — hash recorded but the file no longer matches (tampered/edited).
20
+ * - `unverified` — no hash recorded (legacy entry installed before pinning).
21
+ */
22
+ export type SkillTrust = 'pinned' | 'changed' | 'unverified';
16
23
  export interface Skill {
17
24
  id: string;
18
25
  path: string;
@@ -21,6 +28,19 @@ export interface Skill {
21
28
  loaded: boolean;
22
29
  source: 'local' | 'registry' | 'github';
23
30
  sourceUrl?: string;
31
+ /** Short sha256 fingerprint pinned at install time, e.g. `sha256:1a2b3c4d5e6f` (#137). */
32
+ fingerprint?: string;
33
+ /** Trust state relative to the pinned hash (#137). */
34
+ trust?: SkillTrust;
35
+ }
36
+ /** Trust state + pinned fingerprint for an installed skill, for listing surfaces (#137). */
37
+ export interface SkillListing {
38
+ name: string;
39
+ description: string;
40
+ source: 'local' | 'registry' | 'github';
41
+ sourceUrl?: string;
42
+ trust: SkillTrust;
43
+ fingerprint?: string;
24
44
  }
25
45
  export interface SkillReference {
26
46
  type: 'script' | 'reference' | 'asset';
@@ -28,6 +48,35 @@ export interface SkillReference {
28
48
  path: string;
29
49
  content?: string;
30
50
  }
51
+ /**
52
+ * Confirmation request shown to the user before a network skill is installed (#137).
53
+ */
54
+ export interface SkillInstallConfirmation {
55
+ name: string;
56
+ source: 'registry' | 'github';
57
+ sourceUrl: string;
58
+ description: string;
59
+ /**
60
+ * `first-install` for a name not yet in the registry; `content-changed` when
61
+ * re-installing over an existing pin whose hash differs — an explicit update
62
+ * that must be re-confirmed rather than silently re-pinned (#137).
63
+ */
64
+ reason: 'first-install' | 'content-changed';
65
+ /** Short fingerprint of the incoming content (#137). */
66
+ fingerprint: string;
67
+ /** Previous pinned fingerprint, present only when reason is `content-changed` (#137). */
68
+ previousFingerprint?: string;
69
+ }
70
+ /**
71
+ * Reject skill names that could escape SKILLS_DIR via path traversal (#136).
72
+ * Mirrors the plugin loader guard in plugins.ts.
73
+ */
74
+ export declare function assertSafeSkillName(name: string): void;
75
+ /**
76
+ * Register a confirmation handler invoked before installing a network skill (#137).
77
+ * Returning false aborts the install. Pass null to clear.
78
+ */
79
+ export declare function setSkillInstallConfirmHandler(handler: ((info: SkillInstallConfirmation) => boolean | Promise<boolean>) | null): void;
31
80
  /**
32
81
  * Load a skill from a directory
33
82
  */
@@ -36,6 +85,15 @@ export declare function loadSkillFromDir(dir: string): Skill | null;
36
85
  * Get all loaded skills
37
86
  */
38
87
  export declare function getSkills(): Skill[];
88
+ /**
89
+ * List every installed skill with its trust state and pinned fingerprint (#137).
90
+ *
91
+ * Unlike getSkills (which returns only load-safe skills for the system prompt),
92
+ * this deliberately includes `changed` entries so the /skills surface can warn
93
+ * the user that content drifted. It does not read instructions or emit audit
94
+ * events — it is a pure inventory read.
95
+ */
96
+ export declare function listSkills(): SkillListing[];
39
97
  /**
40
98
  * Get skill by name
41
99
  */
@@ -1 +1 @@
1
- {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAcH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;CACvE;AAED,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,aAAa,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,GAAG,UAAU,GAAG,QAAQ,CAAC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,QAAQ,GAAG,WAAW,GAAG,OAAO,CAAC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAsHD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,CAoB1D;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,KAAK,EAAE,CAenC;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,CAWnD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,cAAc,EAAE,CAmBjE;AAMD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,CAmB3D;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CA2C1E;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CA+ClF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAepD;AAMD;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAezC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIhE"}
1
+ {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"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"}
package/dist/skills.js CHANGED
@@ -8,9 +8,73 @@ import * as fs from 'fs';
8
8
  import * as path from 'path';
9
9
  import * as os from 'os';
10
10
  import * as https from 'https';
11
+ import * as crypto from 'crypto';
12
+ import { auditIntegrityViolation } from './runlog.js';
11
13
  // Skills storage directory
12
14
  const SKILLS_DIR = path.join(os.homedir(), '.calliope-cli', 'skills');
13
15
  // ============================================================================
16
+ // Security: name validation, path containment, trust gate (#136, #137)
17
+ // ============================================================================
18
+ /**
19
+ * Reject skill names that could escape SKILLS_DIR via path traversal (#136).
20
+ * Mirrors the plugin loader guard in plugins.ts.
21
+ */
22
+ export function assertSafeSkillName(name) {
23
+ if (!name || name.includes('..') || name.includes('/') || name.includes('\\') || path.isAbsolute(name)) {
24
+ throw new Error(`Invalid skill name: ${name}`);
25
+ }
26
+ }
27
+ /**
28
+ * Resolve a skill destination directory and confirm it stays inside SKILLS_DIR.
29
+ * Defense-in-depth on top of assertSafeSkillName (#136).
30
+ */
31
+ function resolveSkillDir(name) {
32
+ assertSafeSkillName(name);
33
+ const destDir = path.join(SKILLS_DIR, name);
34
+ const root = path.resolve(SKILLS_DIR);
35
+ const resolved = path.resolve(destDir);
36
+ if (resolved !== root && !resolved.startsWith(root + path.sep)) {
37
+ throw new Error(`Invalid skill name: ${name}`);
38
+ }
39
+ return destDir;
40
+ }
41
+ function hashContent(content) {
42
+ return crypto.createHash('sha256').update(content).digest('hex');
43
+ }
44
+ /** Short, human-comparable fingerprint of a full sha256 hex digest (#137). */
45
+ function fingerprint(hash) {
46
+ return `sha256:${hash.slice(0, 12)}`;
47
+ }
48
+ /** sha256 of a skill directory's SKILL.md, or undefined if unreadable (#137). */
49
+ function hashSkillFile(skillDir) {
50
+ try {
51
+ return hashContent(fs.readFileSync(path.join(skillDir, 'SKILL.md'), 'utf-8'));
52
+ }
53
+ catch {
54
+ return undefined;
55
+ }
56
+ }
57
+ /** Shared reason string for a load-time integrity refusal (#137). */
58
+ const MISMATCH_REASON = 'SKILL.md content changed since install — refusing to load (re-install to re-trust)';
59
+ // Optional confirmation handler for network installs (#137). When unset,
60
+ // installs proceed (backward-compatible). Wire an interactive prompt to gate.
61
+ let installConfirmHandler = null;
62
+ /**
63
+ * Register a confirmation handler invoked before installing a network skill (#137).
64
+ * Returning false aborts the install. Pass null to clear.
65
+ */
66
+ export function setSkillInstallConfirmHandler(handler) {
67
+ installConfirmHandler = handler;
68
+ }
69
+ async function confirmInstall(info) {
70
+ if (!installConfirmHandler)
71
+ return;
72
+ const ok = await installConfirmHandler(info);
73
+ if (!ok) {
74
+ throw new Error(`Skill install declined: ${info.name}`);
75
+ }
76
+ }
77
+ // ============================================================================
14
78
  // Storage
15
79
  // ============================================================================
16
80
  function ensureSkillsDir() {
@@ -55,7 +119,8 @@ function parseSkillFile(content) {
55
119
  if (!frontmatterMatch) {
56
120
  return null;
57
121
  }
58
- const [, frontmatter, instructions] = frontmatterMatch;
122
+ const frontmatter = frontmatterMatch[1];
123
+ const instructions = frontmatterMatch[2];
59
124
  // Simple YAML parsing (for the basic fields we need)
60
125
  const metadata = {
61
126
  name: '',
@@ -69,7 +134,8 @@ function parseSkillFile(content) {
69
134
  // Simple key: value parsing
70
135
  const match = line.match(/^(\w[\w-]*)\s*:\s*(.*)$/);
71
136
  if (match && !inMultiline) {
72
- const [, key, value] = match;
137
+ const key = match[1];
138
+ const value = match[2];
73
139
  currentKey = key;
74
140
  if (value.startsWith('"') && value.endsWith('"')) {
75
141
  metadata[key] = value.slice(1, -1);
@@ -94,7 +160,8 @@ function parseSkillFile(content) {
94
160
  // Re-process this line
95
161
  const newMatch = line.match(/^(\w[\w-]*)\s*:\s*(.*)$/);
96
162
  if (newMatch) {
97
- const [, key, value] = newMatch;
163
+ const key = newMatch[1];
164
+ const value = newMatch[2];
98
165
  currentKey = key;
99
166
  metadata[key] = value;
100
167
  }
@@ -145,15 +212,68 @@ export function getSkills() {
145
212
  const index = loadSkillsIndex();
146
213
  const skills = [];
147
214
  for (const [name, info] of Object.entries(index)) {
215
+ // Drop skills whose SKILL.md no longer matches the hash recorded at install
216
+ // time — do not silently elevate tampered content into the system prompt (#137).
217
+ if (info.hash && !verifySkillHash(info.path, info.hash)) {
218
+ console.warn(`Skill ${name}: SKILL.md hash mismatch — skipping (re-install to trust again)`);
219
+ auditIntegrityViolation(`skill:${name}`, MISMATCH_REASON);
220
+ continue;
221
+ }
148
222
  const skill = loadSkillFromDir(info.path);
149
223
  if (skill) {
150
224
  skill.source = info.source;
151
225
  skill.sourceUrl = info.sourceUrl;
226
+ skill.fingerprint = info.hash ? fingerprint(info.hash) : undefined;
227
+ skill.trust = info.hash ? 'pinned' : 'unverified';
152
228
  skills.push(skill);
153
229
  }
154
230
  }
155
231
  return skills;
156
232
  }
233
+ /**
234
+ * List every installed skill with its trust state and pinned fingerprint (#137).
235
+ *
236
+ * Unlike getSkills (which returns only load-safe skills for the system prompt),
237
+ * this deliberately includes `changed` entries so the /skills surface can warn
238
+ * the user that content drifted. It does not read instructions or emit audit
239
+ * events — it is a pure inventory read.
240
+ */
241
+ export function listSkills() {
242
+ ensureSkillsDir();
243
+ const index = loadSkillsIndex();
244
+ const out = [];
245
+ for (const [name, info] of Object.entries(index)) {
246
+ let trust;
247
+ if (!info.hash) {
248
+ trust = 'unverified';
249
+ }
250
+ else {
251
+ trust = verifySkillHash(info.path, info.hash) ? 'pinned' : 'changed';
252
+ }
253
+ const skill = loadSkillFromDir(info.path);
254
+ out.push({
255
+ name,
256
+ description: skill?.metadata.description ?? '',
257
+ source: info.source,
258
+ sourceUrl: info.sourceUrl,
259
+ trust,
260
+ fingerprint: info.hash ? fingerprint(info.hash) : undefined,
261
+ });
262
+ }
263
+ return out;
264
+ }
265
+ /**
266
+ * Re-verify a stored skill's SKILL.md against its recorded hash (TOFU — #137).
267
+ */
268
+ function verifySkillHash(skillDir, expected) {
269
+ try {
270
+ const content = fs.readFileSync(path.join(skillDir, 'SKILL.md'), 'utf-8');
271
+ return hashContent(content) === expected;
272
+ }
273
+ catch {
274
+ return false;
275
+ }
276
+ }
157
277
  /**
158
278
  * Get skill by name
159
279
  */
@@ -162,10 +282,18 @@ export function getSkill(name) {
162
282
  const info = index[name];
163
283
  if (!info)
164
284
  return null;
285
+ // Refuse to surface tampered instructions on activation (#137).
286
+ if (info.hash && !verifySkillHash(info.path, info.hash)) {
287
+ console.warn(`Skill ${name}: SKILL.md hash mismatch — refusing to load (re-install to trust again)`);
288
+ auditIntegrityViolation(`skill:${name}`, MISMATCH_REASON);
289
+ return null;
290
+ }
165
291
  const skill = loadSkillFromDir(info.path);
166
292
  if (skill) {
167
293
  skill.source = info.source;
168
294
  skill.sourceUrl = info.sourceUrl;
295
+ skill.fingerprint = info.hash ? fingerprint(info.hash) : undefined;
296
+ skill.trust = info.hash ? 'pinned' : 'unverified';
169
297
  }
170
298
  return skill;
171
299
  }
@@ -201,15 +329,20 @@ export function installLocalSkill(dir) {
201
329
  if (!skill) {
202
330
  return null;
203
331
  }
332
+ // Reject path-traversal names (the name comes from SKILL.md content — #136).
333
+ const destDir = resolveSkillDir(skill.id);
204
334
  ensureSkillsDir();
205
- const destDir = path.join(SKILLS_DIR, skill.id);
206
335
  // Copy skill directory
207
336
  copyDir(dir, destDir);
337
+ // Pin the copied SKILL.md so later on-disk tampering is caught on load (#137).
338
+ const hash = hashSkillFile(destDir);
208
339
  // Update index
209
340
  const index = loadSkillsIndex();
210
- index[skill.id] = { path: destDir, source: 'local' };
341
+ index[skill.id] = { path: destDir, source: 'local', hash };
211
342
  saveSkillsIndex(index);
212
343
  skill.path = destDir;
344
+ skill.fingerprint = hash ? fingerprint(hash) : undefined;
345
+ skill.trust = hash ? 'pinned' : 'unverified';
213
346
  return skill;
214
347
  }
215
348
  /**
@@ -229,17 +362,34 @@ export async function installFromGithub(url) {
229
362
  if (!parsed) {
230
363
  throw new Error('Invalid SKILL.md');
231
364
  }
365
+ // Reject path-traversal names from remote, attacker-controlled content (#136).
366
+ const destDir = resolveSkillDir(parsed.metadata.name);
367
+ // Pin the incoming content. If a differently-hashed pin already exists this is
368
+ // an explicit update, confirmed with the old→new fingerprint diff below — the
369
+ // registry entry is never re-pinned silently (#137).
370
+ const newHash = hashContent(content);
371
+ const index = loadSkillsIndex();
372
+ const existing = index[parsed.metadata.name];
373
+ const changed = !!(existing?.hash && existing.hash !== newHash);
374
+ // Require explicit confirmation before trusting network content (#137).
375
+ await confirmInstall({
376
+ name: parsed.metadata.name,
377
+ source: 'github',
378
+ sourceUrl: url,
379
+ description: parsed.metadata.description,
380
+ reason: changed ? 'content-changed' : 'first-install',
381
+ fingerprint: fingerprint(newHash),
382
+ previousFingerprint: existing?.hash ? fingerprint(existing.hash) : undefined,
383
+ });
232
384
  ensureSkillsDir();
233
- const destDir = path.join(SKILLS_DIR, parsed.metadata.name);
234
385
  // Create skill directory
235
386
  if (!fs.existsSync(destDir)) {
236
387
  fs.mkdirSync(destDir, { recursive: true });
237
388
  }
238
389
  // Write SKILL.md
239
390
  fs.writeFileSync(path.join(destDir, 'SKILL.md'), content);
240
- // Update index
241
- const index = loadSkillsIndex();
242
- index[parsed.metadata.name] = { path: destDir, source: 'github', sourceUrl: url };
391
+ // Update index (record content hash for trust-on-first-use re-verification — #137)
392
+ index[parsed.metadata.name] = { path: destDir, source: 'github', sourceUrl: url, hash: newHash };
243
393
  saveSkillsIndex(index);
244
394
  return {
245
395
  id: parsed.metadata.name,
@@ -249,6 +399,8 @@ export async function installFromGithub(url) {
249
399
  loaded: true,
250
400
  source: 'github',
251
401
  sourceUrl: url,
402
+ fingerprint: fingerprint(newHash),
403
+ trust: 'pinned',
252
404
  };
253
405
  }
254
406
  /**
@@ -264,18 +416,34 @@ export async function installFromRegistry(skillName) {
264
416
  return installFromGithub(info.github);
265
417
  }
266
418
  else if (info.content) {
267
- ensureSkillsDir();
268
- const destDir = path.join(SKILLS_DIR, skillName);
269
- if (!fs.existsSync(destDir)) {
270
- fs.mkdirSync(destDir, { recursive: true });
271
- }
272
- fs.writeFileSync(path.join(destDir, 'SKILL.md'), info.content);
419
+ // Reject path-traversal names before any filesystem use (#136).
420
+ const destDir = resolveSkillDir(skillName);
273
421
  const parsed = parseSkillFile(info.content);
274
422
  if (!parsed) {
275
423
  throw new Error('Invalid skill content');
276
424
  }
425
+ // Pin the incoming content; a differently-hashed existing pin is an
426
+ // explicit, re-confirmed update rather than a silent re-pin (#137).
427
+ const newHash = hashContent(info.content);
277
428
  const index = loadSkillsIndex();
278
- index[skillName] = { path: destDir, source: 'registry', sourceUrl: registryUrl };
429
+ const existing = index[skillName];
430
+ const changed = !!(existing?.hash && existing.hash !== newHash);
431
+ // Require explicit confirmation before trusting network content (#137).
432
+ await confirmInstall({
433
+ name: skillName,
434
+ source: 'registry',
435
+ sourceUrl: registryUrl,
436
+ description: parsed.metadata.description,
437
+ reason: changed ? 'content-changed' : 'first-install',
438
+ fingerprint: fingerprint(newHash),
439
+ previousFingerprint: existing?.hash ? fingerprint(existing.hash) : undefined,
440
+ });
441
+ ensureSkillsDir();
442
+ if (!fs.existsSync(destDir)) {
443
+ fs.mkdirSync(destDir, { recursive: true });
444
+ }
445
+ fs.writeFileSync(path.join(destDir, 'SKILL.md'), info.content);
446
+ index[skillName] = { path: destDir, source: 'registry', sourceUrl: registryUrl, hash: newHash };
279
447
  saveSkillsIndex(index);
280
448
  return {
281
449
  id: skillName,
@@ -285,6 +453,8 @@ export async function installFromRegistry(skillName) {
285
453
  loaded: true,
286
454
  source: 'registry',
287
455
  sourceUrl: registryUrl,
456
+ fingerprint: fingerprint(newHash),
457
+ trust: 'pinned',
288
458
  };
289
459
  }
290
460
  throw new Error('Skill not found in registry');