meetsoma 0.1.6 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (517) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/README.md +74 -22
  3. package/bin/gum +0 -0
  4. package/dist/bun/cli.d.ts +3 -0
  5. package/dist/bun/cli.d.ts.map +1 -0
  6. package/dist/bun/cli.js +7 -0
  7. package/dist/bun/cli.js.map +1 -0
  8. package/dist/bun/register-bedrock.d.ts +2 -0
  9. package/dist/bun/register-bedrock.d.ts.map +1 -0
  10. package/dist/bun/register-bedrock.js +4 -0
  11. package/dist/bun/register-bedrock.js.map +1 -0
  12. package/dist/cli/args.d.ts +49 -0
  13. package/dist/cli/args.d.ts.map +1 -0
  14. package/dist/cli/args.js +304 -0
  15. package/dist/cli/args.js.map +1 -0
  16. package/dist/cli/config-selector.d.ts +14 -0
  17. package/dist/cli/config-selector.d.ts.map +1 -0
  18. package/dist/cli/config-selector.js +31 -0
  19. package/dist/cli/config-selector.js.map +1 -0
  20. package/dist/cli/file-processor.d.ts +15 -0
  21. package/dist/cli/file-processor.d.ts.map +1 -0
  22. package/dist/cli/file-processor.js +83 -0
  23. package/dist/cli/file-processor.js.map +1 -0
  24. package/dist/cli/initial-message.d.ts +18 -0
  25. package/dist/cli/initial-message.d.ts.map +1 -0
  26. package/dist/cli/initial-message.js +22 -0
  27. package/dist/cli/initial-message.js.map +1 -0
  28. package/dist/cli/list-models.d.ts +9 -0
  29. package/dist/cli/list-models.d.ts.map +1 -0
  30. package/dist/cli/list-models.js +92 -0
  31. package/dist/cli/list-models.js.map +1 -0
  32. package/dist/cli/session-picker.d.ts +9 -0
  33. package/dist/cli/session-picker.d.ts.map +1 -0
  34. package/dist/cli/session-picker.js +35 -0
  35. package/dist/cli/session-picker.js.map +1 -0
  36. package/dist/cli.d.ts +3 -0
  37. package/dist/cli.d.ts.map +1 -0
  38. package/dist/cli.js +601 -0
  39. package/dist/cli.js.map +1 -0
  40. package/dist/config.d.ts +68 -0
  41. package/dist/config.d.ts.map +1 -0
  42. package/dist/config.js +203 -0
  43. package/dist/config.js.map +1 -0
  44. package/dist/core/agent-session-runtime.d.ts +134 -0
  45. package/dist/core/agent-session-runtime.d.ts.map +1 -0
  46. package/dist/core/agent-session-runtime.js +264 -0
  47. package/dist/core/agent-session-runtime.js.map +1 -0
  48. package/dist/core/agent-session.d.ts +585 -0
  49. package/dist/core/agent-session.d.ts.map +1 -0
  50. package/dist/core/agent-session.js +2497 -0
  51. package/dist/core/agent-session.js.map +1 -0
  52. package/dist/core/auth-storage.d.ts +132 -0
  53. package/dist/core/auth-storage.d.ts.map +1 -0
  54. package/dist/core/auth-storage.js +422 -0
  55. package/dist/core/auth-storage.js.map +1 -0
  56. package/dist/core/bash-executor.d.ts +46 -0
  57. package/dist/core/bash-executor.d.ts.map +1 -0
  58. package/dist/core/bash-executor.js +113 -0
  59. package/dist/core/bash-executor.js.map +1 -0
  60. package/dist/core/compaction/branch-summarization.d.ts +88 -0
  61. package/dist/core/compaction/branch-summarization.d.ts.map +1 -0
  62. package/dist/core/compaction/branch-summarization.js +243 -0
  63. package/dist/core/compaction/branch-summarization.js.map +1 -0
  64. package/dist/core/compaction/compaction.d.ts +121 -0
  65. package/dist/core/compaction/compaction.d.ts.map +1 -0
  66. package/dist/core/compaction/compaction.js +613 -0
  67. package/dist/core/compaction/compaction.js.map +1 -0
  68. package/dist/core/compaction/index.d.ts +7 -0
  69. package/dist/core/compaction/index.d.ts.map +1 -0
  70. package/dist/core/compaction/index.js +7 -0
  71. package/dist/core/compaction/index.js.map +1 -0
  72. package/dist/core/compaction/utils.d.ts +38 -0
  73. package/dist/core/compaction/utils.d.ts.map +1 -0
  74. package/dist/core/compaction/utils.js +153 -0
  75. package/dist/core/compaction/utils.js.map +1 -0
  76. package/dist/core/defaults.d.ts +3 -0
  77. package/dist/core/defaults.d.ts.map +1 -0
  78. package/dist/core/defaults.js +2 -0
  79. package/dist/core/defaults.js.map +1 -0
  80. package/dist/core/diagnostics.d.ts +15 -0
  81. package/dist/core/diagnostics.d.ts.map +1 -0
  82. package/dist/core/diagnostics.js +2 -0
  83. package/dist/core/diagnostics.js.map +1 -0
  84. package/dist/core/event-bus.d.ts +9 -0
  85. package/dist/core/event-bus.d.ts.map +1 -0
  86. package/dist/core/event-bus.js +25 -0
  87. package/dist/core/event-bus.js.map +1 -0
  88. package/dist/core/exec.d.ts +29 -0
  89. package/dist/core/exec.d.ts.map +1 -0
  90. package/dist/core/exec.js +75 -0
  91. package/dist/core/exec.js.map +1 -0
  92. package/dist/core/export-html/ansi-to-html.d.ts +22 -0
  93. package/dist/core/export-html/ansi-to-html.d.ts.map +1 -0
  94. package/dist/core/export-html/ansi-to-html.js +249 -0
  95. package/dist/core/export-html/ansi-to-html.js.map +1 -0
  96. package/dist/core/export-html/index.d.ts +37 -0
  97. package/dist/core/export-html/index.d.ts.map +1 -0
  98. package/dist/core/export-html/index.js +224 -0
  99. package/dist/core/export-html/index.js.map +1 -0
  100. package/dist/core/export-html/template.css +1001 -0
  101. package/dist/core/export-html/template.html +55 -0
  102. package/dist/core/export-html/template.js +1690 -0
  103. package/dist/core/export-html/tool-renderer.d.ts +40 -0
  104. package/dist/core/export-html/tool-renderer.d.ts.map +1 -0
  105. package/dist/core/export-html/tool-renderer.js +95 -0
  106. package/dist/core/export-html/tool-renderer.js.map +1 -0
  107. package/dist/core/export-html/vendor/highlight.min.js +1213 -0
  108. package/dist/core/export-html/vendor/marked.min.js +6 -0
  109. package/dist/core/extensions/index.d.ts +12 -0
  110. package/dist/core/extensions/index.d.ts.map +1 -0
  111. package/dist/core/extensions/index.js +9 -0
  112. package/dist/core/extensions/index.js.map +1 -0
  113. package/dist/core/extensions/loader.d.ts +25 -0
  114. package/dist/core/extensions/loader.d.ts.map +1 -0
  115. package/dist/core/extensions/loader.js +436 -0
  116. package/dist/core/extensions/loader.js.map +1 -0
  117. package/dist/core/extensions/runner.d.ts +148 -0
  118. package/dist/core/extensions/runner.d.ts.map +1 -0
  119. package/dist/core/extensions/runner.js +700 -0
  120. package/dist/core/extensions/runner.js.map +1 -0
  121. package/dist/core/extensions/types.d.ts +1076 -0
  122. package/dist/core/extensions/types.d.ts.map +1 -0
  123. package/dist/core/extensions/types.js +35 -0
  124. package/dist/core/extensions/types.js.map +1 -0
  125. package/dist/core/extensions/wrapper.d.ts +20 -0
  126. package/dist/core/extensions/wrapper.d.ts.map +1 -0
  127. package/dist/core/extensions/wrapper.js +22 -0
  128. package/dist/core/extensions/wrapper.js.map +1 -0
  129. package/dist/core/footer-data-provider.d.ts +48 -0
  130. package/dist/core/footer-data-provider.d.ts.map +1 -0
  131. package/dist/core/footer-data-provider.js +314 -0
  132. package/dist/core/footer-data-provider.js.map +1 -0
  133. package/dist/core/index.d.ts +11 -0
  134. package/dist/core/index.d.ts.map +1 -0
  135. package/dist/core/index.js +11 -0
  136. package/dist/core/index.js.map +1 -0
  137. package/dist/core/keybindings.d.ts +285 -0
  138. package/dist/core/keybindings.d.ts.map +1 -0
  139. package/dist/core/keybindings.js +251 -0
  140. package/dist/core/keybindings.js.map +1 -0
  141. package/dist/core/messages.d.ts +77 -0
  142. package/dist/core/messages.d.ts.map +1 -0
  143. package/dist/core/messages.js +123 -0
  144. package/dist/core/messages.js.map +1 -0
  145. package/dist/core/model-registry.d.ts +132 -0
  146. package/dist/core/model-registry.d.ts.map +1 -0
  147. package/dist/core/model-registry.js +583 -0
  148. package/dist/core/model-registry.js.map +1 -0
  149. package/dist/core/model-resolver.d.ts +110 -0
  150. package/dist/core/model-resolver.d.ts.map +1 -0
  151. package/dist/core/model-resolver.js +486 -0
  152. package/dist/core/model-resolver.js.map +1 -0
  153. package/dist/core/output-guard.d.ts +6 -0
  154. package/dist/core/output-guard.d.ts.map +1 -0
  155. package/dist/core/output-guard.js +59 -0
  156. package/dist/core/output-guard.js.map +1 -0
  157. package/dist/core/package-manager.d.ts +172 -0
  158. package/dist/core/package-manager.d.ts.map +1 -0
  159. package/dist/core/package-manager.js +1783 -0
  160. package/dist/core/package-manager.js.map +1 -0
  161. package/dist/core/prompt-templates.d.ts +51 -0
  162. package/dist/core/prompt-templates.d.ts.map +1 -0
  163. package/dist/core/prompt-templates.js +249 -0
  164. package/dist/core/prompt-templates.js.map +1 -0
  165. package/dist/core/resolve-config-value.d.ts +23 -0
  166. package/dist/core/resolve-config-value.d.ts.map +1 -0
  167. package/dist/core/resolve-config-value.js +126 -0
  168. package/dist/core/resolve-config-value.js.map +1 -0
  169. package/dist/core/resource-loader.d.ts +185 -0
  170. package/dist/core/resource-loader.d.ts.map +1 -0
  171. package/dist/core/resource-loader.js +698 -0
  172. package/dist/core/resource-loader.js.map +1 -0
  173. package/dist/core/sdk.d.ts +93 -0
  174. package/dist/core/sdk.d.ts.map +1 -0
  175. package/dist/core/sdk.js +236 -0
  176. package/dist/core/sdk.js.map +1 -0
  177. package/dist/core/session-manager.d.ts +332 -0
  178. package/dist/core/session-manager.d.ts.map +1 -0
  179. package/dist/core/session-manager.js +1104 -0
  180. package/dist/core/session-manager.js.map +1 -0
  181. package/dist/core/settings-manager.d.ts +237 -0
  182. package/dist/core/settings-manager.d.ts.map +1 -0
  183. package/dist/core/settings-manager.js +702 -0
  184. package/dist/core/settings-manager.js.map +1 -0
  185. package/dist/core/skills.d.ts +60 -0
  186. package/dist/core/skills.d.ts.map +1 -0
  187. package/dist/core/skills.js +409 -0
  188. package/dist/core/skills.js.map +1 -0
  189. package/dist/core/slash-commands.d.ts +14 -0
  190. package/dist/core/slash-commands.d.ts.map +1 -0
  191. package/dist/core/slash-commands.js +23 -0
  192. package/dist/core/slash-commands.js.map +1 -0
  193. package/dist/core/source-info.d.ts +18 -0
  194. package/dist/core/source-info.d.ts.map +1 -0
  195. package/dist/core/source-info.js +19 -0
  196. package/dist/core/source-info.js.map +1 -0
  197. package/dist/core/system-prompt.d.ts +28 -0
  198. package/dist/core/system-prompt.d.ts.map +1 -0
  199. package/dist/core/system-prompt.js +116 -0
  200. package/dist/core/system-prompt.js.map +1 -0
  201. package/dist/core/timings.d.ts +8 -0
  202. package/dist/core/timings.d.ts.map +1 -0
  203. package/dist/core/timings.js +31 -0
  204. package/dist/core/timings.js.map +1 -0
  205. package/dist/core/tools/bash.d.ts +73 -0
  206. package/dist/core/tools/bash.d.ts.map +1 -0
  207. package/dist/core/tools/bash.js +342 -0
  208. package/dist/core/tools/bash.js.map +1 -0
  209. package/dist/core/tools/edit-diff.d.ts +85 -0
  210. package/dist/core/tools/edit-diff.d.ts.map +1 -0
  211. package/dist/core/tools/edit-diff.js +337 -0
  212. package/dist/core/tools/edit-diff.js.map +1 -0
  213. package/dist/core/tools/edit.d.ts +53 -0
  214. package/dist/core/tools/edit.d.ts.map +1 -0
  215. package/dist/core/tools/edit.js +196 -0
  216. package/dist/core/tools/edit.js.map +1 -0
  217. package/dist/core/tools/file-mutation-queue.d.ts +6 -0
  218. package/dist/core/tools/file-mutation-queue.d.ts.map +1 -0
  219. package/dist/core/tools/file-mutation-queue.js +37 -0
  220. package/dist/core/tools/file-mutation-queue.js.map +1 -0
  221. package/dist/core/tools/find.d.ts +46 -0
  222. package/dist/core/tools/find.d.ts.map +1 -0
  223. package/dist/core/tools/find.js +258 -0
  224. package/dist/core/tools/find.js.map +1 -0
  225. package/dist/core/tools/grep.d.ts +56 -0
  226. package/dist/core/tools/grep.d.ts.map +1 -0
  227. package/dist/core/tools/grep.js +293 -0
  228. package/dist/core/tools/grep.js.map +1 -0
  229. package/dist/core/tools/index.d.ts +115 -0
  230. package/dist/core/tools/index.d.ts.map +1 -0
  231. package/dist/core/tools/index.js +86 -0
  232. package/dist/core/tools/index.js.map +1 -0
  233. package/dist/core/tools/ls.d.ts +46 -0
  234. package/dist/core/tools/ls.d.ts.map +1 -0
  235. package/dist/core/tools/ls.js +172 -0
  236. package/dist/core/tools/ls.js.map +1 -0
  237. package/dist/core/tools/path-utils.d.ts +8 -0
  238. package/dist/core/tools/path-utils.d.ts.map +1 -0
  239. package/dist/core/tools/path-utils.js +81 -0
  240. package/dist/core/tools/path-utils.js.map +1 -0
  241. package/dist/core/tools/read.d.ts +46 -0
  242. package/dist/core/tools/read.d.ts.map +1 -0
  243. package/dist/core/tools/read.js +225 -0
  244. package/dist/core/tools/read.js.map +1 -0
  245. package/dist/core/tools/render-utils.d.ts +21 -0
  246. package/dist/core/tools/render-utils.d.ts.map +1 -0
  247. package/dist/core/tools/render-utils.js +49 -0
  248. package/dist/core/tools/render-utils.js.map +1 -0
  249. package/dist/core/tools/tool-definition-wrapper.d.ts +14 -0
  250. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -0
  251. package/dist/core/tools/tool-definition-wrapper.js +32 -0
  252. package/dist/core/tools/tool-definition-wrapper.js.map +1 -0
  253. package/dist/core/tools/truncate.d.ts +70 -0
  254. package/dist/core/tools/truncate.d.ts.map +1 -0
  255. package/dist/core/tools/truncate.js +205 -0
  256. package/dist/core/tools/truncate.js.map +1 -0
  257. package/dist/core/tools/write.d.ts +35 -0
  258. package/dist/core/tools/write.d.ts.map +1 -0
  259. package/dist/core/tools/write.js +216 -0
  260. package/dist/core/tools/write.js.map +1 -0
  261. package/dist/index.d.ts +28 -0
  262. package/dist/index.d.ts.map +1 -0
  263. package/dist/index.js +43 -0
  264. package/dist/index.js.map +1 -0
  265. package/dist/lib/config.js +22 -0
  266. package/dist/lib/detect.js +94 -0
  267. package/dist/lib/display.js +182 -0
  268. package/dist/main.d.ts +8 -0
  269. package/dist/main.d.ts.map +1 -0
  270. package/dist/main.js +806 -0
  271. package/dist/main.js.map +1 -0
  272. package/dist/migrations.d.ts +33 -0
  273. package/dist/migrations.d.ts.map +1 -0
  274. package/dist/migrations.js +261 -0
  275. package/dist/migrations.js.map +1 -0
  276. package/dist/modes/index.d.ts +9 -0
  277. package/dist/modes/index.d.ts.map +1 -0
  278. package/dist/modes/index.js +8 -0
  279. package/dist/modes/index.js.map +1 -0
  280. package/dist/modes/interactive/components/armin.d.ts +34 -0
  281. package/dist/modes/interactive/components/armin.d.ts.map +1 -0
  282. package/dist/modes/interactive/components/armin.js +333 -0
  283. package/dist/modes/interactive/components/armin.js.map +1 -0
  284. package/dist/modes/interactive/components/assistant-message.d.ts +18 -0
  285. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -0
  286. package/dist/modes/interactive/components/assistant-message.js +107 -0
  287. package/dist/modes/interactive/components/assistant-message.js.map +1 -0
  288. package/dist/modes/interactive/components/bash-execution.d.ts +34 -0
  289. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -0
  290. package/dist/modes/interactive/components/bash-execution.js +175 -0
  291. package/dist/modes/interactive/components/bash-execution.js.map +1 -0
  292. package/dist/modes/interactive/components/bordered-loader.d.ts +16 -0
  293. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -0
  294. package/dist/modes/interactive/components/bordered-loader.js +51 -0
  295. package/dist/modes/interactive/components/bordered-loader.js.map +1 -0
  296. package/dist/modes/interactive/components/branch-summary-message.d.ts +16 -0
  297. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -0
  298. package/dist/modes/interactive/components/branch-summary-message.js +44 -0
  299. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -0
  300. package/dist/modes/interactive/components/compaction-summary-message.d.ts +16 -0
  301. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -0
  302. package/dist/modes/interactive/components/compaction-summary-message.js +45 -0
  303. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -0
  304. package/dist/modes/interactive/components/config-selector.d.ts +71 -0
  305. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -0
  306. package/dist/modes/interactive/components/config-selector.js +479 -0
  307. package/dist/modes/interactive/components/config-selector.js.map +1 -0
  308. package/dist/modes/interactive/components/countdown-timer.d.ts +14 -0
  309. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -0
  310. package/dist/modes/interactive/components/countdown-timer.js +33 -0
  311. package/dist/modes/interactive/components/countdown-timer.js.map +1 -0
  312. package/dist/modes/interactive/components/custom-editor.d.ts +21 -0
  313. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -0
  314. package/dist/modes/interactive/components/custom-editor.js +70 -0
  315. package/dist/modes/interactive/components/custom-editor.js.map +1 -0
  316. package/dist/modes/interactive/components/custom-message.d.ts +20 -0
  317. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -0
  318. package/dist/modes/interactive/components/custom-message.js +79 -0
  319. package/dist/modes/interactive/components/custom-message.js.map +1 -0
  320. package/dist/modes/interactive/components/daxnuts.d.ts +23 -0
  321. package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -0
  322. package/dist/modes/interactive/components/daxnuts.js +140 -0
  323. package/dist/modes/interactive/components/daxnuts.js.map +1 -0
  324. package/dist/modes/interactive/components/diff.d.ts +12 -0
  325. package/dist/modes/interactive/components/diff.d.ts.map +1 -0
  326. package/dist/modes/interactive/components/diff.js +133 -0
  327. package/dist/modes/interactive/components/diff.js.map +1 -0
  328. package/dist/modes/interactive/components/dynamic-border.d.ts +15 -0
  329. package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -0
  330. package/dist/modes/interactive/components/dynamic-border.js +21 -0
  331. package/dist/modes/interactive/components/dynamic-border.js.map +1 -0
  332. package/dist/modes/interactive/components/extension-editor.d.ts +20 -0
  333. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -0
  334. package/dist/modes/interactive/components/extension-editor.js +111 -0
  335. package/dist/modes/interactive/components/extension-editor.js.map +1 -0
  336. package/dist/modes/interactive/components/extension-input.d.ts +23 -0
  337. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -0
  338. package/dist/modes/interactive/components/extension-input.js +61 -0
  339. package/dist/modes/interactive/components/extension-input.js.map +1 -0
  340. package/dist/modes/interactive/components/extension-selector.d.ts +24 -0
  341. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -0
  342. package/dist/modes/interactive/components/extension-selector.js +78 -0
  343. package/dist/modes/interactive/components/extension-selector.js.map +1 -0
  344. package/dist/modes/interactive/components/footer.d.ts +27 -0
  345. package/dist/modes/interactive/components/footer.d.ts.map +1 -0
  346. package/dist/modes/interactive/components/footer.js +201 -0
  347. package/dist/modes/interactive/components/footer.js.map +1 -0
  348. package/dist/modes/interactive/components/index.d.ts +32 -0
  349. package/dist/modes/interactive/components/index.d.ts.map +1 -0
  350. package/dist/modes/interactive/components/index.js +33 -0
  351. package/dist/modes/interactive/components/index.js.map +1 -0
  352. package/dist/modes/interactive/components/keybinding-hints.d.ts +8 -0
  353. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -0
  354. package/dist/modes/interactive/components/keybinding-hints.js +22 -0
  355. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -0
  356. package/dist/modes/interactive/components/login-dialog.d.ts +42 -0
  357. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -0
  358. package/dist/modes/interactive/components/login-dialog.js +145 -0
  359. package/dist/modes/interactive/components/login-dialog.js.map +1 -0
  360. package/dist/modes/interactive/components/model-selector.d.ts +47 -0
  361. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -0
  362. package/dist/modes/interactive/components/model-selector.js +275 -0
  363. package/dist/modes/interactive/components/model-selector.js.map +1 -0
  364. package/dist/modes/interactive/components/oauth-selector.d.ts +19 -0
  365. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -0
  366. package/dist/modes/interactive/components/oauth-selector.js +97 -0
  367. package/dist/modes/interactive/components/oauth-selector.js.map +1 -0
  368. package/dist/modes/interactive/components/scoped-models-selector.d.ts +49 -0
  369. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -0
  370. package/dist/modes/interactive/components/scoped-models-selector.js +275 -0
  371. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -0
  372. package/dist/modes/interactive/components/session-selector-search.d.ts +23 -0
  373. package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -0
  374. package/dist/modes/interactive/components/session-selector-search.js +155 -0
  375. package/dist/modes/interactive/components/session-selector-search.js.map +1 -0
  376. package/dist/modes/interactive/components/session-selector.d.ts +95 -0
  377. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -0
  378. package/dist/modes/interactive/components/session-selector.js +848 -0
  379. package/dist/modes/interactive/components/session-selector.js.map +1 -0
  380. package/dist/modes/interactive/components/settings-selector.d.ts +58 -0
  381. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -0
  382. package/dist/modes/interactive/components/settings-selector.js +301 -0
  383. package/dist/modes/interactive/components/settings-selector.js.map +1 -0
  384. package/dist/modes/interactive/components/show-images-selector.d.ts +10 -0
  385. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -0
  386. package/dist/modes/interactive/components/show-images-selector.js +39 -0
  387. package/dist/modes/interactive/components/show-images-selector.js.map +1 -0
  388. package/dist/modes/interactive/components/skill-invocation-message.d.ts +17 -0
  389. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -0
  390. package/dist/modes/interactive/components/skill-invocation-message.js +47 -0
  391. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -0
  392. package/dist/modes/interactive/components/theme-selector.d.ts +11 -0
  393. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -0
  394. package/dist/modes/interactive/components/theme-selector.js +50 -0
  395. package/dist/modes/interactive/components/theme-selector.js.map +1 -0
  396. package/dist/modes/interactive/components/thinking-selector.d.ts +11 -0
  397. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -0
  398. package/dist/modes/interactive/components/thinking-selector.js +51 -0
  399. package/dist/modes/interactive/components/thinking-selector.js.map +1 -0
  400. package/dist/modes/interactive/components/tool-execution.d.ts +58 -0
  401. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -0
  402. package/dist/modes/interactive/components/tool-execution.js +274 -0
  403. package/dist/modes/interactive/components/tool-execution.js.map +1 -0
  404. package/dist/modes/interactive/components/tree-selector.d.ts +89 -0
  405. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -0
  406. package/dist/modes/interactive/components/tree-selector.js +1084 -0
  407. package/dist/modes/interactive/components/tree-selector.js.map +1 -0
  408. package/dist/modes/interactive/components/user-message-selector.d.ts +30 -0
  409. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -0
  410. package/dist/modes/interactive/components/user-message-selector.js +113 -0
  411. package/dist/modes/interactive/components/user-message-selector.js.map +1 -0
  412. package/dist/modes/interactive/components/user-message.d.ts +9 -0
  413. package/dist/modes/interactive/components/user-message.d.ts.map +1 -0
  414. package/dist/modes/interactive/components/user-message.js +28 -0
  415. package/dist/modes/interactive/components/user-message.js.map +1 -0
  416. package/dist/modes/interactive/components/visual-truncate.d.ts +24 -0
  417. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -0
  418. package/dist/modes/interactive/components/visual-truncate.js +33 -0
  419. package/dist/modes/interactive/components/visual-truncate.js.map +1 -0
  420. package/dist/modes/interactive/interactive-mode.d.ts +318 -0
  421. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -0
  422. package/dist/modes/interactive/interactive-mode.js +3907 -0
  423. package/dist/modes/interactive/interactive-mode.js.map +1 -0
  424. package/dist/modes/interactive/theme/dark.json +85 -0
  425. package/dist/modes/interactive/theme/light.json +84 -0
  426. package/dist/modes/interactive/theme/theme-schema.json +335 -0
  427. package/dist/modes/interactive/theme/theme.d.ts +81 -0
  428. package/dist/modes/interactive/theme/theme.d.ts.map +1 -0
  429. package/dist/modes/interactive/theme/theme.js +970 -0
  430. package/dist/modes/interactive/theme/theme.js.map +1 -0
  431. package/dist/modes/print-mode.d.ts +28 -0
  432. package/dist/modes/print-mode.d.ts.map +1 -0
  433. package/dist/modes/print-mode.js +108 -0
  434. package/dist/modes/print-mode.js.map +1 -0
  435. package/dist/modes/rpc/jsonl.d.ts +17 -0
  436. package/dist/modes/rpc/jsonl.d.ts.map +1 -0
  437. package/dist/modes/rpc/jsonl.js +49 -0
  438. package/dist/modes/rpc/jsonl.js.map +1 -0
  439. package/dist/modes/rpc/rpc-client.d.ts +217 -0
  440. package/dist/modes/rpc/rpc-client.d.ts.map +1 -0
  441. package/dist/modes/rpc/rpc-client.js +401 -0
  442. package/dist/modes/rpc/rpc-client.js.map +1 -0
  443. package/dist/modes/rpc/rpc-mode.d.ts +20 -0
  444. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -0
  445. package/dist/modes/rpc/rpc-mode.js +542 -0
  446. package/dist/modes/rpc/rpc-mode.js.map +1 -0
  447. package/dist/modes/rpc/rpc-types.d.ts +408 -0
  448. package/dist/modes/rpc/rpc-types.d.ts.map +1 -0
  449. package/dist/modes/rpc/rpc-types.js +8 -0
  450. package/dist/modes/rpc/rpc-types.js.map +1 -0
  451. package/dist/thin-cli.js +282 -699
  452. package/dist/utils/changelog.d.ts +21 -0
  453. package/dist/utils/changelog.d.ts.map +1 -0
  454. package/dist/utils/changelog.js +87 -0
  455. package/dist/utils/changelog.js.map +1 -0
  456. package/dist/utils/child-process.d.ts +11 -0
  457. package/dist/utils/child-process.d.ts.map +1 -0
  458. package/dist/utils/child-process.js +78 -0
  459. package/dist/utils/child-process.js.map +1 -0
  460. package/dist/utils/clipboard-image.d.ts +11 -0
  461. package/dist/utils/clipboard-image.d.ts.map +1 -0
  462. package/dist/utils/clipboard-image.js +245 -0
  463. package/dist/utils/clipboard-image.js.map +1 -0
  464. package/dist/utils/clipboard-native.d.ts +8 -0
  465. package/dist/utils/clipboard-native.d.ts.map +1 -0
  466. package/dist/utils/clipboard-native.js +14 -0
  467. package/dist/utils/clipboard-native.js.map +1 -0
  468. package/dist/utils/clipboard.d.ts +2 -0
  469. package/dist/utils/clipboard.d.ts.map +1 -0
  470. package/dist/utils/clipboard.js +78 -0
  471. package/dist/utils/clipboard.js.map +1 -0
  472. package/dist/utils/exif-orientation.d.ts +5 -0
  473. package/dist/utils/exif-orientation.d.ts.map +1 -0
  474. package/dist/utils/exif-orientation.js +158 -0
  475. package/dist/utils/exif-orientation.js.map +1 -0
  476. package/dist/utils/frontmatter.d.ts +8 -0
  477. package/dist/utils/frontmatter.d.ts.map +1 -0
  478. package/dist/utils/frontmatter.js +26 -0
  479. package/dist/utils/frontmatter.js.map +1 -0
  480. package/dist/utils/git.d.ts +26 -0
  481. package/dist/utils/git.d.ts.map +1 -0
  482. package/dist/utils/git.js +163 -0
  483. package/dist/utils/git.js.map +1 -0
  484. package/dist/utils/image-convert.d.ts +9 -0
  485. package/dist/utils/image-convert.d.ts.map +1 -0
  486. package/dist/utils/image-convert.js +39 -0
  487. package/dist/utils/image-convert.js.map +1 -0
  488. package/dist/utils/image-resize.d.ts +36 -0
  489. package/dist/utils/image-resize.d.ts.map +1 -0
  490. package/dist/utils/image-resize.js +137 -0
  491. package/dist/utils/image-resize.js.map +1 -0
  492. package/dist/utils/mime.d.ts +2 -0
  493. package/dist/utils/mime.d.ts.map +1 -0
  494. package/dist/utils/mime.js +26 -0
  495. package/dist/utils/mime.js.map +1 -0
  496. package/dist/utils/photon.d.ts +21 -0
  497. package/dist/utils/photon.d.ts.map +1 -0
  498. package/dist/utils/photon.js +121 -0
  499. package/dist/utils/photon.js.map +1 -0
  500. package/dist/utils/shell.d.ts +26 -0
  501. package/dist/utils/shell.d.ts.map +1 -0
  502. package/dist/utils/shell.js +186 -0
  503. package/dist/utils/shell.js.map +1 -0
  504. package/dist/utils/sleep.d.ts +5 -0
  505. package/dist/utils/sleep.d.ts.map +1 -0
  506. package/dist/utils/sleep.js +17 -0
  507. package/dist/utils/sleep.js.map +1 -0
  508. package/dist/utils/tools-manager.d.ts +3 -0
  509. package/dist/utils/tools-manager.d.ts.map +1 -0
  510. package/dist/utils/tools-manager.js +252 -0
  511. package/dist/utils/tools-manager.js.map +1 -0
  512. package/dist/welcome/about.js +50 -0
  513. package/dist/welcome/auth.js +126 -0
  514. package/dist/welcome/intro.js +90 -0
  515. package/dist/welcome/qa.js +131 -0
  516. package/package.json +90 -43
  517. package/scripts/install-gum.sh +141 -0
package/CHANGELOG.md CHANGED
@@ -4,6 +4,52 @@ All notable changes to Soma (`meetsoma` on npm).
4
4
 
5
5
  Format follows [Keep a Changelog](https://keepachangelog.com/). Versioning follows [Semantic Versioning](https://semver.org/).
6
6
 
7
+ ## [0.3.1] — 2026-04-10
8
+
9
+ Re-release of 0.3.0 (npm doesn't allow republish of unpublished versions).
10
+
11
+ ## [0.3.0] — 2026-04-10
12
+
13
+ Corresponds to Soma agent v0.9.0+.
14
+
15
+ ### Added
16
+ - **Script discovery**: `soma <name>` routes to `soma-<name>.sh` scripts via chain (bundled → project → global)
17
+ - `soma code`, `soma verify`, `soma refactor` work from any project with scripts installed
18
+ - `soma --help scripts` lists all discovered scripts with descriptions
19
+
20
+ ### Changed
21
+ - Extracted `lib/` and `welcome/` modules from thin-cli.js (1650→902 lines)
22
+ - Removed stale agent copies — CLI is a pure thin wrapper now
23
+
24
+ ### Fixed
25
+ - **CORE_DIR respects `SOMA_CODING_AGENT_DIR`** — thin-cli.js and cli.js no longer hardcode `~/.soma/agent`. Sandbox testing and env overrides now work correctly.
26
+
27
+ ## [0.2.0] — 2026-04-02
28
+
29
+ Corresponds to Soma agent v0.8.0.
30
+
31
+ ### New
32
+
33
+ - **`soma doctor`** — check project health, auto-fix stale settings/body/protocols, run migrations.
34
+ - **`soma status` / `soma health`** — quick project health check (renamed from old `soma doctor`).
35
+ - **`soma --version`** — shows both agent and CLI versions.
36
+ - **`soma --help`** — delegates to core agent for full help output.
37
+ - **`--scan` / `--all` flags** — doctor multi-project support (delegates to core).
38
+
39
+ ### Changed
40
+
41
+ - **CLI routing overhaul** — doctor/status/health/update/version all route through thin-cli properly.
42
+ - **Stale protocol detection** — doctor identifies outdated bundled protocols and offers to update them.
43
+ - **Version-aware pending file** — `_doctor-pending.md` injected on boot when migration is available.
44
+
45
+ ### Fixed
46
+
47
+ - **Help header** — shows "CLI v0.2.0" instead of bare version number.
48
+ - **Orphaned `showStatus()`** — removed dead code from thin-cli.
49
+ - **Placeholder text** — replaced thin-cli stubs with real output.
50
+
51
+ ---
52
+
7
53
  ## [0.1.4] — 2026-03-28
8
54
 
9
55
  Corresponds to Soma agent v0.6.5.
package/README.md CHANGED
@@ -25,36 +25,83 @@ An AI coding agent that grows with you. Identity, protocols, and muscle memory
25
25
 
26
26
  Most agents forget everything between sessions. Soma doesn't.
27
27
 
28
- ## What Happens
29
-
30
- On first run, you'll meet the personality engine — no AI, just sentence templates. It introduces Soma and lets you ask questions before committing. Press Enter to install.
28
+ ## Install
31
29
 
30
+ ```bash
31
+ npm install -g meetsoma
32
32
  ```
33
- σ
34
33
 
35
- Soma — the AI agent that remembers
34
+ This installs the Soma CLI a thin bootstrap layer. On first run, it downloads the full agent runtime (~50MB) from GitHub.
35
+
36
+ ### What Happens
37
+
38
+ ```
39
+ npm install -g meetsoma ← installs CLI only (~50KB)
40
+ soma ← first run: downloads agent runtime
41
+ soma ← every run after: starts a session
42
+ ```
36
43
 
37
- No compaction. Ever.
44
+ **Requirements:** Node.js ≥ 20, git, an API key (Anthropic, Google, OpenAI, or [OpenRouter free tier](https://openrouter.ai)).
38
45
 
39
- ──────────────────────────────────────────────────────────
46
+ ## First Run
40
47
 
41
- → Enter Install Soma
42
- ? Ask me something first
48
+ ```bash
49
+ cd your-project
50
+ soma
43
51
  ```
44
52
 
45
- After install, run `soma` in any project. It creates `.soma/`, reads your codebase, and writes its own identity. By session two, it remembers.
53
+ Soma detects your project (language, framework, package manager, monorepo signals), creates `.soma/`, and writes its own identity. By session two, it remembers.
46
54
 
47
55
  ## Commands
48
56
 
57
+ ### CLI (from your shell)
58
+
59
+ ```bash
60
+ soma # fresh session
61
+ soma inhale # resume from last session's preload
62
+ soma -c # continue last session (full history)
63
+ soma -r # pick a session to resume
64
+ soma focus <keyword> # prime for a topic
65
+ soma map <name> # boot with a workflow MAP
66
+
67
+ soma doctor # project health + migration check
68
+ soma status # infrastructure health check
69
+ soma --version # show agent + CLI versions
70
+ soma --help # full command reference
71
+ soma --help scripts # list installed scripts
72
+ soma --help commands # all CLI + TUI commands
73
+ ```
74
+
75
+ ### Session (inside the TUI)
76
+
77
+ ```
78
+ /exhale save state + write preload for next session
79
+ /breathe save + rotate into fresh session
80
+ /inhale check preload status
81
+ /rest disable keepalive + exhale
82
+ /pin <name> keep a muscle/protocol hot
83
+ /kill <name> drop to cold
84
+ /hub install install from the community hub
85
+ /soma doctor run migration analysis
86
+ ```
87
+
88
+ ## Two Versions
89
+
90
+ Soma has two independently-versioned layers:
91
+
92
+ ```
93
+ σ Soma v0.9.0 ← agent version (the runtime — features, protocols, templates)
94
+ CLI v0.2.0 ← CLI version (this npm package — install flow, delegation)
95
+ ```
96
+
97
+ The **agent version** is what matters for features. The **CLI version** is the bootstrap.
98
+
99
+ ### Updating
100
+
49
101
  ```bash
50
- soma # start a session
51
- soma focus <keyword> # load relevant muscles + MAPs
52
- soma inhale # resume from last session
53
- soma --map <name> # load a workflow
54
-
55
- soma init # install the runtime
56
- soma doctor # check health
57
- soma update # check for updates
102
+ soma init # update the agent runtime
103
+ npm install -g meetsoma # update the CLI (rare)
104
+ soma doctor # check if project .soma/ needs migration
58
105
  ```
59
106
 
60
107
  ## The Five Ideas
@@ -69,11 +116,16 @@ soma update # check for updates
69
116
 
70
117
  **Heat** — attention management. Used things stay. Unused things cool.
71
118
 
72
- ## Requirements
119
+ ## How It Works
120
+
121
+ ```
122
+ ~/.soma/agent/ ← global runtime (git clone, updated via soma init)
123
+ your-project/.soma/ ← per-project memory (identity, protocols, sessions)
124
+ ```
125
+
126
+ The CLI delegates to the runtime. The runtime loads your project's `.soma/`, resolves the identity chain (project → parent → global), and boots the agent with your accumulated context.
73
127
 
74
- - Node.js 20.6
75
- - git
76
- - API key (Anthropic, Google, or OpenAI)
128
+ On boot, Soma silently adds any missing settings or protocols from newer versions (Tier 1 auto-fix). Bigger migrations are handled by `/soma doctor` inside the TUI.
77
129
 
78
130
  ---
79
131
 
package/bin/gum ADDED
Binary file
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/bun/cli.ts"],"names":[],"mappings":"","sourcesContent":["#!/usr/bin/env node\nprocess.title = \"pi\";\nprocess.emitWarning = (() => {}) as typeof process.emitWarning;\n\nawait import(\"./register-bedrock.js\");\nawait import(\"../cli.js\");\n"]}
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env node
2
+ process.title = "pi";
3
+ process.emitWarning = (() => { });
4
+ await import("./register-bedrock.js");
5
+ await import("../cli.js");
6
+ export {};
7
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/bun/cli.ts"],"names":[],"mappings":";AACA,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;AACrB,OAAO,CAAC,WAAW,GAAG,CAAC,GAAG,EAAE,CAAC,EAAC,CAAC,CAA+B,CAAC;AAE/D,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;AACtC,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC","sourcesContent":["#!/usr/bin/env node\nprocess.title = \"pi\";\nprocess.emitWarning = (() => {}) as typeof process.emitWarning;\n\nawait import(\"./register-bedrock.js\");\nawait import(\"../cli.js\");\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=register-bedrock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-bedrock.d.ts","sourceRoot":"","sources":["../../src/bun/register-bedrock.ts"],"names":[],"mappings":"","sourcesContent":["import { setBedrockProviderModule } from \"@mariozechner/pi-ai\";\nimport { bedrockProviderModule } from \"@mariozechner/pi-ai/bedrock-provider\";\n\nsetBedrockProviderModule(bedrockProviderModule);\n"]}
@@ -0,0 +1,4 @@
1
+ import { setBedrockProviderModule } from "@mariozechner/pi-ai";
2
+ import { bedrockProviderModule } from "@mariozechner/pi-ai/bedrock-provider";
3
+ setBedrockProviderModule(bedrockProviderModule);
4
+ //# sourceMappingURL=register-bedrock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-bedrock.js","sourceRoot":"","sources":["../../src/bun/register-bedrock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAE7E,wBAAwB,CAAC,qBAAqB,CAAC,CAAC","sourcesContent":["import { setBedrockProviderModule } from \"@mariozechner/pi-ai\";\nimport { bedrockProviderModule } from \"@mariozechner/pi-ai/bedrock-provider\";\n\nsetBedrockProviderModule(bedrockProviderModule);\n"]}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * CLI argument parsing and help display
3
+ */
4
+ import type { ThinkingLevel } from "@mariozechner/pi-agent-core";
5
+ import { type ToolName } from "../core/tools/index.js";
6
+ export type Mode = "text" | "json" | "rpc";
7
+ export interface Args {
8
+ provider?: string;
9
+ model?: string;
10
+ apiKey?: string;
11
+ systemPrompt?: string;
12
+ appendSystemPrompt?: string;
13
+ thinking?: ThinkingLevel;
14
+ continue?: boolean;
15
+ resume?: boolean;
16
+ help?: boolean;
17
+ version?: boolean;
18
+ mode?: Mode;
19
+ noSession?: boolean;
20
+ session?: string;
21
+ fork?: string;
22
+ sessionDir?: string;
23
+ models?: string[];
24
+ tools?: ToolName[];
25
+ noTools?: boolean;
26
+ extensions?: string[];
27
+ noExtensions?: boolean;
28
+ print?: boolean;
29
+ export?: string;
30
+ noSkills?: boolean;
31
+ skills?: string[];
32
+ promptTemplates?: string[];
33
+ noPromptTemplates?: boolean;
34
+ themes?: string[];
35
+ noThemes?: boolean;
36
+ listModels?: string | true;
37
+ offline?: boolean;
38
+ verbose?: boolean;
39
+ messages: string[];
40
+ fileArgs: string[];
41
+ /** Unknown flags (potentially extension flags) - map of flag name to value */
42
+ unknownFlags: Map<string, boolean | string>;
43
+ }
44
+ export declare function isValidThinkingLevel(level: string): level is ThinkingLevel;
45
+ export declare function parseArgs(args: string[], extensionFlags?: Map<string, {
46
+ type: "boolean" | "string";
47
+ }>): Args;
48
+ export declare function printHelp(): void;
49
+ //# sourceMappingURL=args.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAGjE,OAAO,EAAY,KAAK,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAEjE,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AAE3C,MAAM,WAAW,IAAI;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,8EAA8E;IAC9E,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC;CAC5C;AAID,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,aAAa,CAE1E;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,SAAS,GAAG,QAAQ,CAAA;CAAE,CAAC,GAAG,IAAI,CA4H5G;AAED,wBAAgB,SAAS,IAAI,IAAI,CA2IhC","sourcesContent":["/**\n * CLI argument parsing and help display\n */\n\nimport type { ThinkingLevel } from \"@mariozechner/pi-agent-core\";\nimport chalk from \"chalk\";\nimport { APP_NAME, CONFIG_DIR_NAME, ENV_AGENT_DIR } from \"../config.js\";\nimport { allTools, type ToolName } from \"../core/tools/index.js\";\n\nexport type Mode = \"text\" | \"json\" | \"rpc\";\n\nexport interface Args {\n\tprovider?: string;\n\tmodel?: string;\n\tapiKey?: string;\n\tsystemPrompt?: string;\n\tappendSystemPrompt?: string;\n\tthinking?: ThinkingLevel;\n\tcontinue?: boolean;\n\tresume?: boolean;\n\thelp?: boolean;\n\tversion?: boolean;\n\tmode?: Mode;\n\tnoSession?: boolean;\n\tsession?: string;\n\tfork?: string;\n\tsessionDir?: string;\n\tmodels?: string[];\n\ttools?: ToolName[];\n\tnoTools?: boolean;\n\textensions?: string[];\n\tnoExtensions?: boolean;\n\tprint?: boolean;\n\texport?: string;\n\tnoSkills?: boolean;\n\tskills?: string[];\n\tpromptTemplates?: string[];\n\tnoPromptTemplates?: boolean;\n\tthemes?: string[];\n\tnoThemes?: boolean;\n\tlistModels?: string | true;\n\toffline?: boolean;\n\tverbose?: boolean;\n\tmessages: string[];\n\tfileArgs: string[];\n\t/** Unknown flags (potentially extension flags) - map of flag name to value */\n\tunknownFlags: Map<string, boolean | string>;\n}\n\nconst VALID_THINKING_LEVELS = [\"off\", \"minimal\", \"low\", \"medium\", \"high\", \"xhigh\"] as const;\n\nexport function isValidThinkingLevel(level: string): level is ThinkingLevel {\n\treturn VALID_THINKING_LEVELS.includes(level as ThinkingLevel);\n}\n\nexport function parseArgs(args: string[], extensionFlags?: Map<string, { type: \"boolean\" | \"string\" }>): Args {\n\tconst result: Args = {\n\t\tmessages: [],\n\t\tfileArgs: [],\n\t\tunknownFlags: new Map(),\n\t};\n\n\tfor (let i = 0; i < args.length; i++) {\n\t\tconst arg = args[i];\n\n\t\tif (arg === \"--help\" || arg === \"-h\") {\n\t\t\tresult.help = true;\n\t\t} else if (arg === \"--version\" || arg === \"-v\") {\n\t\t\tresult.version = true;\n\t\t} else if (arg === \"--mode\" && i + 1 < args.length) {\n\t\t\tconst mode = args[++i];\n\t\t\tif (mode === \"text\" || mode === \"json\" || mode === \"rpc\") {\n\t\t\t\tresult.mode = mode;\n\t\t\t}\n\t\t} else if (arg === \"--continue\" || arg === \"-c\") {\n\t\t\tresult.continue = true;\n\t\t} else if (arg === \"--resume\" || arg === \"-r\") {\n\t\t\tresult.resume = true;\n\t\t} else if (arg === \"--provider\" && i + 1 < args.length) {\n\t\t\tresult.provider = args[++i];\n\t\t} else if (arg === \"--model\" && i + 1 < args.length) {\n\t\t\tresult.model = args[++i];\n\t\t} else if (arg === \"--api-key\" && i + 1 < args.length) {\n\t\t\tresult.apiKey = args[++i];\n\t\t} else if (arg === \"--system-prompt\" && i + 1 < args.length) {\n\t\t\tresult.systemPrompt = args[++i];\n\t\t} else if (arg === \"--append-system-prompt\" && i + 1 < args.length) {\n\t\t\tresult.appendSystemPrompt = args[++i];\n\t\t} else if (arg === \"--no-session\") {\n\t\t\tresult.noSession = true;\n\t\t} else if (arg === \"--session\" && i + 1 < args.length) {\n\t\t\tresult.session = args[++i];\n\t\t} else if (arg === \"--fork\" && i + 1 < args.length) {\n\t\t\tresult.fork = args[++i];\n\t\t} else if (arg === \"--session-dir\" && i + 1 < args.length) {\n\t\t\tresult.sessionDir = args[++i];\n\t\t} else if (arg === \"--models\" && i + 1 < args.length) {\n\t\t\tresult.models = args[++i].split(\",\").map((s) => s.trim());\n\t\t} else if (arg === \"--no-tools\") {\n\t\t\tresult.noTools = true;\n\t\t} else if (arg === \"--tools\" && i + 1 < args.length) {\n\t\t\tconst toolNames = args[++i].split(\",\").map((s) => s.trim());\n\t\t\tconst validTools: ToolName[] = [];\n\t\t\tfor (const name of toolNames) {\n\t\t\t\tif (name in allTools) {\n\t\t\t\t\tvalidTools.push(name as ToolName);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\tchalk.yellow(`Warning: Unknown tool \"${name}\". Valid tools: ${Object.keys(allTools).join(\", \")}`),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\tresult.tools = validTools;\n\t\t} else if (arg === \"--thinking\" && i + 1 < args.length) {\n\t\t\tconst level = args[++i];\n\t\t\tif (isValidThinkingLevel(level)) {\n\t\t\t\tresult.thinking = level;\n\t\t\t} else {\n\t\t\t\tconsole.error(\n\t\t\t\t\tchalk.yellow(\n\t\t\t\t\t\t`Warning: Invalid thinking level \"${level}\". Valid values: ${VALID_THINKING_LEVELS.join(\", \")}`,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\t\t} else if (arg === \"--print\" || arg === \"-p\") {\n\t\t\tresult.print = true;\n\t\t} else if (arg === \"--export\" && i + 1 < args.length) {\n\t\t\tresult.export = args[++i];\n\t\t} else if ((arg === \"--extension\" || arg === \"-e\") && i + 1 < args.length) {\n\t\t\tresult.extensions = result.extensions ?? [];\n\t\t\tresult.extensions.push(args[++i]);\n\t\t} else if (arg === \"--no-extensions\" || arg === \"-ne\") {\n\t\t\tresult.noExtensions = true;\n\t\t} else if (arg === \"--skill\" && i + 1 < args.length) {\n\t\t\tresult.skills = result.skills ?? [];\n\t\t\tresult.skills.push(args[++i]);\n\t\t} else if (arg === \"--prompt-template\" && i + 1 < args.length) {\n\t\t\tresult.promptTemplates = result.promptTemplates ?? [];\n\t\t\tresult.promptTemplates.push(args[++i]);\n\t\t} else if (arg === \"--theme\" && i + 1 < args.length) {\n\t\t\tresult.themes = result.themes ?? [];\n\t\t\tresult.themes.push(args[++i]);\n\t\t} else if (arg === \"--no-skills\" || arg === \"-ns\") {\n\t\t\tresult.noSkills = true;\n\t\t} else if (arg === \"--no-prompt-templates\" || arg === \"-np\") {\n\t\t\tresult.noPromptTemplates = true;\n\t\t} else if (arg === \"--no-themes\") {\n\t\t\tresult.noThemes = true;\n\t\t} else if (arg === \"--list-models\") {\n\t\t\t// Check if next arg is a search pattern (not a flag or file arg)\n\t\t\tif (i + 1 < args.length && !args[i + 1].startsWith(\"-\") && !args[i + 1].startsWith(\"@\")) {\n\t\t\t\tresult.listModels = args[++i];\n\t\t\t} else {\n\t\t\t\tresult.listModels = true;\n\t\t\t}\n\t\t} else if (arg === \"--verbose\") {\n\t\t\tresult.verbose = true;\n\t\t} else if (arg === \"--offline\") {\n\t\t\tresult.offline = true;\n\t\t} else if (arg.startsWith(\"@\")) {\n\t\t\tresult.fileArgs.push(arg.slice(1)); // Remove @ prefix\n\t\t} else if (arg.startsWith(\"--\") && extensionFlags) {\n\t\t\t// Check if it's an extension-registered flag\n\t\t\tconst flagName = arg.slice(2);\n\t\t\tconst extFlag = extensionFlags.get(flagName);\n\t\t\tif (extFlag) {\n\t\t\t\tif (extFlag.type === \"boolean\") {\n\t\t\t\t\tresult.unknownFlags.set(flagName, true);\n\t\t\t\t} else if (extFlag.type === \"string\" && i + 1 < args.length) {\n\t\t\t\t\tresult.unknownFlags.set(flagName, args[++i]);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Unknown flags without extensionFlags are silently ignored (first pass)\n\t\t} else if (!arg.startsWith(\"-\")) {\n\t\t\tresult.messages.push(arg);\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport function printHelp(): void {\n\tconsole.log(`${chalk.bold(APP_NAME)} - AI coding assistant with read, bash, edit, write tools\n\n${chalk.bold(\"Usage:\")}\n ${APP_NAME} [options] [@files...] [messages...]\n\n${chalk.bold(\"Commands:\")}\n ${APP_NAME} install <source> [-l] Install extension source and add to settings\n ${APP_NAME} remove <source> [-l] Remove extension source from settings\n ${APP_NAME} uninstall <source> [-l] Alias for remove\n ${APP_NAME} update [source] Update installed extensions (skips pinned sources)\n ${APP_NAME} list List installed extensions from settings\n ${APP_NAME} config Open TUI to enable/disable package resources\n ${APP_NAME} <command> --help Show help for install/remove/uninstall/update/list\n\n${chalk.bold(\"Options:\")}\n --provider <name> Provider name (default: google)\n --model <pattern> Model pattern or ID (supports \"provider/id\" and optional \":<thinking>\")\n --api-key <key> API key (defaults to env vars)\n --system-prompt <text> System prompt (default: coding assistant prompt)\n --append-system-prompt <text> Append text or file contents to the system prompt\n --mode <mode> Output mode: text (default), json, or rpc\n --print, -p Non-interactive mode: process prompt and exit\n --continue, -c Continue previous session\n --resume, -r Select a session to resume\n --session <path> Use specific session file\n --fork <path> Fork specific session file or partial UUID into a new session\n --session-dir <dir> Directory for session storage and lookup\n --no-session Don't save session (ephemeral)\n --models <patterns> Comma-separated model patterns for Ctrl+P cycling\n Supports globs (anthropic/*, *sonnet*) and fuzzy matching\n --no-tools Disable all built-in tools\n --tools <tools> Comma-separated list of tools to enable (default: read,bash,edit,write)\n Available: read, bash, edit, write, grep, find, ls\n --thinking <level> Set thinking level: off, minimal, low, medium, high, xhigh\n --extension, -e <path> Load an extension file (can be used multiple times)\n --no-extensions, -ne Disable extension discovery (explicit -e paths still work)\n --skill <path> Load a skill file or directory (can be used multiple times)\n --no-skills, -ns Disable skills discovery and loading\n --prompt-template <path> Load a prompt template file or directory (can be used multiple times)\n --no-prompt-templates, -np Disable prompt template discovery and loading\n --theme <path> Load a theme file or directory (can be used multiple times)\n --no-themes Disable theme discovery and loading\n --export <file> Export session file to HTML and exit\n --list-models [search] List available models (with optional fuzzy search)\n --verbose Force verbose startup (overrides quietStartup setting)\n --offline Disable startup network operations (same as PI_OFFLINE=1)\n --help, -h Show this help\n --version, -v Show version number\n\nExtensions can register additional flags (e.g., --plan from plan-mode extension).\n\n${chalk.bold(\"Examples:\")}\n # Interactive mode\n ${APP_NAME}\n\n # Interactive mode with initial prompt\n ${APP_NAME} \"List all .ts files in src/\"\n\n # Include files in initial message\n ${APP_NAME} @prompt.md @image.png \"What color is the sky?\"\n\n # Non-interactive mode (process and exit)\n ${APP_NAME} -p \"List all .ts files in src/\"\n\n # Multiple messages (interactive)\n ${APP_NAME} \"Read package.json\" \"What dependencies do we have?\"\n\n # Continue previous session\n ${APP_NAME} --continue \"What did we discuss?\"\n\n # Use different model\n ${APP_NAME} --provider openai --model gpt-4o-mini \"Help me refactor this code\"\n\n # Use model with provider prefix (no --provider needed)\n ${APP_NAME} --model openai/gpt-4o \"Help me refactor this code\"\n\n # Use model with thinking level shorthand\n ${APP_NAME} --model sonnet:high \"Solve this complex problem\"\n\n # Limit model cycling to specific models\n ${APP_NAME} --models claude-sonnet,claude-haiku,gpt-4o\n\n # Limit to a specific provider with glob pattern\n ${APP_NAME} --models \"github-copilot/*\"\n\n # Cycle models with fixed thinking levels\n ${APP_NAME} --models sonnet:high,haiku:low\n\n # Start with a specific thinking level\n ${APP_NAME} --thinking high \"Solve this complex problem\"\n\n # Read-only mode (no file modifications possible)\n ${APP_NAME} --tools read,grep,find,ls -p \"Review the code in src/\"\n\n # Export a session file to HTML\n ${APP_NAME} --export ~/${CONFIG_DIR_NAME}/agent/sessions/--path--/session.jsonl\n ${APP_NAME} --export session.jsonl output.html\n\n${chalk.bold(\"Environment Variables:\")}\n ANTHROPIC_API_KEY - Anthropic Claude API key\n ANTHROPIC_OAUTH_TOKEN - Anthropic OAuth token (alternative to API key)\n OPENAI_API_KEY - OpenAI GPT API key\n AZURE_OPENAI_API_KEY - Azure OpenAI API key\n AZURE_OPENAI_BASE_URL - Azure OpenAI base URL (https://{resource}.openai.azure.com/openai/v1)\n AZURE_OPENAI_RESOURCE_NAME - Azure OpenAI resource name (alternative to base URL)\n AZURE_OPENAI_API_VERSION - Azure OpenAI API version (default: v1)\n AZURE_OPENAI_DEPLOYMENT_NAME_MAP - Azure OpenAI model=deployment map (comma-separated)\n GEMINI_API_KEY - Google Gemini API key\n GROQ_API_KEY - Groq API key\n CEREBRAS_API_KEY - Cerebras API key\n XAI_API_KEY - xAI Grok API key\n OPENROUTER_API_KEY - OpenRouter API key\n AI_GATEWAY_API_KEY - Vercel AI Gateway API key\n ZAI_API_KEY - ZAI API key\n MISTRAL_API_KEY - Mistral API key\n MINIMAX_API_KEY - MiniMax API key\n OPENCODE_API_KEY - OpenCode Zen/OpenCode Go API key\n KIMI_API_KEY - Kimi For Coding API key\n AWS_PROFILE - AWS profile for Amazon Bedrock\n AWS_ACCESS_KEY_ID - AWS access key for Amazon Bedrock\n AWS_SECRET_ACCESS_KEY - AWS secret key for Amazon Bedrock\n AWS_BEARER_TOKEN_BEDROCK - Bedrock API key (bearer token)\n AWS_REGION - AWS region for Amazon Bedrock (e.g., us-east-1)\n ${ENV_AGENT_DIR.padEnd(32)} - Session storage directory (default: ~/${CONFIG_DIR_NAME}/agent)\n PI_PACKAGE_DIR - Override package directory (for Nix/Guix store paths)\n PI_OFFLINE - Disable startup network operations when set to 1/true/yes\n PI_SHARE_VIEWER_URL - Base URL for /share command (default: https://pi.dev/session/)\n PI_AI_ANTIGRAVITY_VERSION - Override Antigravity User-Agent version (e.g., 1.23.0)\n\n${chalk.bold(\"Available Tools (default: read, bash, edit, write):\")}\n read - Read file contents\n bash - Execute bash commands\n edit - Edit files with find/replace\n write - Write files (creates/overwrites)\n grep - Search file contents (read-only, off by default)\n find - Find files by glob pattern (read-only, off by default)\n ls - List directory contents (read-only, off by default)\n`);\n}\n"]}
@@ -0,0 +1,304 @@
1
+ /**
2
+ * CLI argument parsing and help display
3
+ */
4
+ import chalk from "chalk";
5
+ import { APP_NAME, CONFIG_DIR_NAME, ENV_AGENT_DIR } from "../config.js";
6
+ import { allTools } from "../core/tools/index.js";
7
+ const VALID_THINKING_LEVELS = ["off", "minimal", "low", "medium", "high", "xhigh"];
8
+ export function isValidThinkingLevel(level) {
9
+ return VALID_THINKING_LEVELS.includes(level);
10
+ }
11
+ export function parseArgs(args, extensionFlags) {
12
+ const result = {
13
+ messages: [],
14
+ fileArgs: [],
15
+ unknownFlags: new Map(),
16
+ };
17
+ for (let i = 0; i < args.length; i++) {
18
+ const arg = args[i];
19
+ if (arg === "--help" || arg === "-h") {
20
+ result.help = true;
21
+ }
22
+ else if (arg === "--version" || arg === "-v") {
23
+ result.version = true;
24
+ }
25
+ else if (arg === "--mode" && i + 1 < args.length) {
26
+ const mode = args[++i];
27
+ if (mode === "text" || mode === "json" || mode === "rpc") {
28
+ result.mode = mode;
29
+ }
30
+ }
31
+ else if (arg === "--continue" || arg === "-c") {
32
+ result.continue = true;
33
+ }
34
+ else if (arg === "--resume" || arg === "-r") {
35
+ result.resume = true;
36
+ }
37
+ else if (arg === "--provider" && i + 1 < args.length) {
38
+ result.provider = args[++i];
39
+ }
40
+ else if (arg === "--model" && i + 1 < args.length) {
41
+ result.model = args[++i];
42
+ }
43
+ else if (arg === "--api-key" && i + 1 < args.length) {
44
+ result.apiKey = args[++i];
45
+ }
46
+ else if (arg === "--system-prompt" && i + 1 < args.length) {
47
+ result.systemPrompt = args[++i];
48
+ }
49
+ else if (arg === "--append-system-prompt" && i + 1 < args.length) {
50
+ result.appendSystemPrompt = args[++i];
51
+ }
52
+ else if (arg === "--no-session") {
53
+ result.noSession = true;
54
+ }
55
+ else if (arg === "--session" && i + 1 < args.length) {
56
+ result.session = args[++i];
57
+ }
58
+ else if (arg === "--fork" && i + 1 < args.length) {
59
+ result.fork = args[++i];
60
+ }
61
+ else if (arg === "--session-dir" && i + 1 < args.length) {
62
+ result.sessionDir = args[++i];
63
+ }
64
+ else if (arg === "--models" && i + 1 < args.length) {
65
+ result.models = args[++i].split(",").map((s) => s.trim());
66
+ }
67
+ else if (arg === "--no-tools") {
68
+ result.noTools = true;
69
+ }
70
+ else if (arg === "--tools" && i + 1 < args.length) {
71
+ const toolNames = args[++i].split(",").map((s) => s.trim());
72
+ const validTools = [];
73
+ for (const name of toolNames) {
74
+ if (name in allTools) {
75
+ validTools.push(name);
76
+ }
77
+ else {
78
+ console.error(chalk.yellow(`Warning: Unknown tool "${name}". Valid tools: ${Object.keys(allTools).join(", ")}`));
79
+ }
80
+ }
81
+ result.tools = validTools;
82
+ }
83
+ else if (arg === "--thinking" && i + 1 < args.length) {
84
+ const level = args[++i];
85
+ if (isValidThinkingLevel(level)) {
86
+ result.thinking = level;
87
+ }
88
+ else {
89
+ console.error(chalk.yellow(`Warning: Invalid thinking level "${level}". Valid values: ${VALID_THINKING_LEVELS.join(", ")}`));
90
+ }
91
+ }
92
+ else if (arg === "--print" || arg === "-p") {
93
+ result.print = true;
94
+ }
95
+ else if (arg === "--export" && i + 1 < args.length) {
96
+ result.export = args[++i];
97
+ }
98
+ else if ((arg === "--extension" || arg === "-e") && i + 1 < args.length) {
99
+ result.extensions = result.extensions ?? [];
100
+ result.extensions.push(args[++i]);
101
+ }
102
+ else if (arg === "--no-extensions" || arg === "-ne") {
103
+ result.noExtensions = true;
104
+ }
105
+ else if (arg === "--skill" && i + 1 < args.length) {
106
+ result.skills = result.skills ?? [];
107
+ result.skills.push(args[++i]);
108
+ }
109
+ else if (arg === "--prompt-template" && i + 1 < args.length) {
110
+ result.promptTemplates = result.promptTemplates ?? [];
111
+ result.promptTemplates.push(args[++i]);
112
+ }
113
+ else if (arg === "--theme" && i + 1 < args.length) {
114
+ result.themes = result.themes ?? [];
115
+ result.themes.push(args[++i]);
116
+ }
117
+ else if (arg === "--no-skills" || arg === "-ns") {
118
+ result.noSkills = true;
119
+ }
120
+ else if (arg === "--no-prompt-templates" || arg === "-np") {
121
+ result.noPromptTemplates = true;
122
+ }
123
+ else if (arg === "--no-themes") {
124
+ result.noThemes = true;
125
+ }
126
+ else if (arg === "--list-models") {
127
+ // Check if next arg is a search pattern (not a flag or file arg)
128
+ if (i + 1 < args.length && !args[i + 1].startsWith("-") && !args[i + 1].startsWith("@")) {
129
+ result.listModels = args[++i];
130
+ }
131
+ else {
132
+ result.listModels = true;
133
+ }
134
+ }
135
+ else if (arg === "--verbose") {
136
+ result.verbose = true;
137
+ }
138
+ else if (arg === "--offline") {
139
+ result.offline = true;
140
+ }
141
+ else if (arg.startsWith("@")) {
142
+ result.fileArgs.push(arg.slice(1)); // Remove @ prefix
143
+ }
144
+ else if (arg.startsWith("--") && extensionFlags) {
145
+ // Check if it's an extension-registered flag
146
+ const flagName = arg.slice(2);
147
+ const extFlag = extensionFlags.get(flagName);
148
+ if (extFlag) {
149
+ if (extFlag.type === "boolean") {
150
+ result.unknownFlags.set(flagName, true);
151
+ }
152
+ else if (extFlag.type === "string" && i + 1 < args.length) {
153
+ result.unknownFlags.set(flagName, args[++i]);
154
+ }
155
+ }
156
+ // Unknown flags without extensionFlags are silently ignored (first pass)
157
+ }
158
+ else if (!arg.startsWith("-")) {
159
+ result.messages.push(arg);
160
+ }
161
+ }
162
+ return result;
163
+ }
164
+ export function printHelp() {
165
+ console.log(`${chalk.bold(APP_NAME)} - AI coding assistant with read, bash, edit, write tools
166
+
167
+ ${chalk.bold("Usage:")}
168
+ ${APP_NAME} [options] [@files...] [messages...]
169
+
170
+ ${chalk.bold("Commands:")}
171
+ ${APP_NAME} install <source> [-l] Install extension source and add to settings
172
+ ${APP_NAME} remove <source> [-l] Remove extension source from settings
173
+ ${APP_NAME} uninstall <source> [-l] Alias for remove
174
+ ${APP_NAME} update [source] Update installed extensions (skips pinned sources)
175
+ ${APP_NAME} list List installed extensions from settings
176
+ ${APP_NAME} config Open TUI to enable/disable package resources
177
+ ${APP_NAME} <command> --help Show help for install/remove/uninstall/update/list
178
+
179
+ ${chalk.bold("Options:")}
180
+ --provider <name> Provider name (default: google)
181
+ --model <pattern> Model pattern or ID (supports "provider/id" and optional ":<thinking>")
182
+ --api-key <key> API key (defaults to env vars)
183
+ --system-prompt <text> System prompt (default: coding assistant prompt)
184
+ --append-system-prompt <text> Append text or file contents to the system prompt
185
+ --mode <mode> Output mode: text (default), json, or rpc
186
+ --print, -p Non-interactive mode: process prompt and exit
187
+ --continue, -c Continue previous session
188
+ --resume, -r Select a session to resume
189
+ --session <path> Use specific session file
190
+ --fork <path> Fork specific session file or partial UUID into a new session
191
+ --session-dir <dir> Directory for session storage and lookup
192
+ --no-session Don't save session (ephemeral)
193
+ --models <patterns> Comma-separated model patterns for Ctrl+P cycling
194
+ Supports globs (anthropic/*, *sonnet*) and fuzzy matching
195
+ --no-tools Disable all built-in tools
196
+ --tools <tools> Comma-separated list of tools to enable (default: read,bash,edit,write)
197
+ Available: read, bash, edit, write, grep, find, ls
198
+ --thinking <level> Set thinking level: off, minimal, low, medium, high, xhigh
199
+ --extension, -e <path> Load an extension file (can be used multiple times)
200
+ --no-extensions, -ne Disable extension discovery (explicit -e paths still work)
201
+ --skill <path> Load a skill file or directory (can be used multiple times)
202
+ --no-skills, -ns Disable skills discovery and loading
203
+ --prompt-template <path> Load a prompt template file or directory (can be used multiple times)
204
+ --no-prompt-templates, -np Disable prompt template discovery and loading
205
+ --theme <path> Load a theme file or directory (can be used multiple times)
206
+ --no-themes Disable theme discovery and loading
207
+ --export <file> Export session file to HTML and exit
208
+ --list-models [search] List available models (with optional fuzzy search)
209
+ --verbose Force verbose startup (overrides quietStartup setting)
210
+ --offline Disable startup network operations (same as PI_OFFLINE=1)
211
+ --help, -h Show this help
212
+ --version, -v Show version number
213
+
214
+ Extensions can register additional flags (e.g., --plan from plan-mode extension).
215
+
216
+ ${chalk.bold("Examples:")}
217
+ # Interactive mode
218
+ ${APP_NAME}
219
+
220
+ # Interactive mode with initial prompt
221
+ ${APP_NAME} "List all .ts files in src/"
222
+
223
+ # Include files in initial message
224
+ ${APP_NAME} @prompt.md @image.png "What color is the sky?"
225
+
226
+ # Non-interactive mode (process and exit)
227
+ ${APP_NAME} -p "List all .ts files in src/"
228
+
229
+ # Multiple messages (interactive)
230
+ ${APP_NAME} "Read package.json" "What dependencies do we have?"
231
+
232
+ # Continue previous session
233
+ ${APP_NAME} --continue "What did we discuss?"
234
+
235
+ # Use different model
236
+ ${APP_NAME} --provider openai --model gpt-4o-mini "Help me refactor this code"
237
+
238
+ # Use model with provider prefix (no --provider needed)
239
+ ${APP_NAME} --model openai/gpt-4o "Help me refactor this code"
240
+
241
+ # Use model with thinking level shorthand
242
+ ${APP_NAME} --model sonnet:high "Solve this complex problem"
243
+
244
+ # Limit model cycling to specific models
245
+ ${APP_NAME} --models claude-sonnet,claude-haiku,gpt-4o
246
+
247
+ # Limit to a specific provider with glob pattern
248
+ ${APP_NAME} --models "github-copilot/*"
249
+
250
+ # Cycle models with fixed thinking levels
251
+ ${APP_NAME} --models sonnet:high,haiku:low
252
+
253
+ # Start with a specific thinking level
254
+ ${APP_NAME} --thinking high "Solve this complex problem"
255
+
256
+ # Read-only mode (no file modifications possible)
257
+ ${APP_NAME} --tools read,grep,find,ls -p "Review the code in src/"
258
+
259
+ # Export a session file to HTML
260
+ ${APP_NAME} --export ~/${CONFIG_DIR_NAME}/agent/sessions/--path--/session.jsonl
261
+ ${APP_NAME} --export session.jsonl output.html
262
+
263
+ ${chalk.bold("Environment Variables:")}
264
+ ANTHROPIC_API_KEY - Anthropic Claude API key
265
+ ANTHROPIC_OAUTH_TOKEN - Anthropic OAuth token (alternative to API key)
266
+ OPENAI_API_KEY - OpenAI GPT API key
267
+ AZURE_OPENAI_API_KEY - Azure OpenAI API key
268
+ AZURE_OPENAI_BASE_URL - Azure OpenAI base URL (https://{resource}.openai.azure.com/openai/v1)
269
+ AZURE_OPENAI_RESOURCE_NAME - Azure OpenAI resource name (alternative to base URL)
270
+ AZURE_OPENAI_API_VERSION - Azure OpenAI API version (default: v1)
271
+ AZURE_OPENAI_DEPLOYMENT_NAME_MAP - Azure OpenAI model=deployment map (comma-separated)
272
+ GEMINI_API_KEY - Google Gemini API key
273
+ GROQ_API_KEY - Groq API key
274
+ CEREBRAS_API_KEY - Cerebras API key
275
+ XAI_API_KEY - xAI Grok API key
276
+ OPENROUTER_API_KEY - OpenRouter API key
277
+ AI_GATEWAY_API_KEY - Vercel AI Gateway API key
278
+ ZAI_API_KEY - ZAI API key
279
+ MISTRAL_API_KEY - Mistral API key
280
+ MINIMAX_API_KEY - MiniMax API key
281
+ OPENCODE_API_KEY - OpenCode Zen/OpenCode Go API key
282
+ KIMI_API_KEY - Kimi For Coding API key
283
+ AWS_PROFILE - AWS profile for Amazon Bedrock
284
+ AWS_ACCESS_KEY_ID - AWS access key for Amazon Bedrock
285
+ AWS_SECRET_ACCESS_KEY - AWS secret key for Amazon Bedrock
286
+ AWS_BEARER_TOKEN_BEDROCK - Bedrock API key (bearer token)
287
+ AWS_REGION - AWS region for Amazon Bedrock (e.g., us-east-1)
288
+ ${ENV_AGENT_DIR.padEnd(32)} - Session storage directory (default: ~/${CONFIG_DIR_NAME}/agent)
289
+ PI_PACKAGE_DIR - Override package directory (for Nix/Guix store paths)
290
+ PI_OFFLINE - Disable startup network operations when set to 1/true/yes
291
+ PI_SHARE_VIEWER_URL - Base URL for /share command (default: https://pi.dev/session/)
292
+ PI_AI_ANTIGRAVITY_VERSION - Override Antigravity User-Agent version (e.g., 1.23.0)
293
+
294
+ ${chalk.bold("Available Tools (default: read, bash, edit, write):")}
295
+ read - Read file contents
296
+ bash - Execute bash commands
297
+ edit - Edit files with find/replace
298
+ write - Write files (creates/overwrites)
299
+ grep - Search file contents (read-only, off by default)
300
+ find - Find files by glob pattern (read-only, off by default)
301
+ ls - List directory contents (read-only, off by default)
302
+ `);
303
+ }
304
+ //# sourceMappingURL=args.js.map