meetsoma 0.3.2 → 0.3.3

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 (515) hide show
  1. package/dist/thin-cli.js +56 -13
  2. package/package.json +42 -89
  3. package/bin/gum +0 -0
  4. package/dist/bun/cli.d.ts +0 -3
  5. package/dist/bun/cli.d.ts.map +0 -1
  6. package/dist/bun/cli.js +0 -7
  7. package/dist/bun/cli.js.map +0 -1
  8. package/dist/bun/register-bedrock.d.ts +0 -2
  9. package/dist/bun/register-bedrock.d.ts.map +0 -1
  10. package/dist/bun/register-bedrock.js +0 -4
  11. package/dist/bun/register-bedrock.js.map +0 -1
  12. package/dist/cli/args.d.ts +0 -49
  13. package/dist/cli/args.d.ts.map +0 -1
  14. package/dist/cli/args.js +0 -304
  15. package/dist/cli/args.js.map +0 -1
  16. package/dist/cli/config-selector.d.ts +0 -14
  17. package/dist/cli/config-selector.d.ts.map +0 -1
  18. package/dist/cli/config-selector.js +0 -31
  19. package/dist/cli/config-selector.js.map +0 -1
  20. package/dist/cli/file-processor.d.ts +0 -15
  21. package/dist/cli/file-processor.d.ts.map +0 -1
  22. package/dist/cli/file-processor.js +0 -83
  23. package/dist/cli/file-processor.js.map +0 -1
  24. package/dist/cli/initial-message.d.ts +0 -18
  25. package/dist/cli/initial-message.d.ts.map +0 -1
  26. package/dist/cli/initial-message.js +0 -22
  27. package/dist/cli/initial-message.js.map +0 -1
  28. package/dist/cli/list-models.d.ts +0 -9
  29. package/dist/cli/list-models.d.ts.map +0 -1
  30. package/dist/cli/list-models.js +0 -92
  31. package/dist/cli/list-models.js.map +0 -1
  32. package/dist/cli/session-picker.d.ts +0 -9
  33. package/dist/cli/session-picker.d.ts.map +0 -1
  34. package/dist/cli/session-picker.js +0 -35
  35. package/dist/cli/session-picker.js.map +0 -1
  36. package/dist/cli.d.ts +0 -3
  37. package/dist/cli.d.ts.map +0 -1
  38. package/dist/cli.js +0 -601
  39. package/dist/cli.js.map +0 -1
  40. package/dist/config.d.ts +0 -68
  41. package/dist/config.d.ts.map +0 -1
  42. package/dist/config.js +0 -203
  43. package/dist/config.js.map +0 -1
  44. package/dist/core/agent-session-runtime.d.ts +0 -134
  45. package/dist/core/agent-session-runtime.d.ts.map +0 -1
  46. package/dist/core/agent-session-runtime.js +0 -264
  47. package/dist/core/agent-session-runtime.js.map +0 -1
  48. package/dist/core/agent-session.d.ts +0 -585
  49. package/dist/core/agent-session.d.ts.map +0 -1
  50. package/dist/core/agent-session.js +0 -2497
  51. package/dist/core/agent-session.js.map +0 -1
  52. package/dist/core/auth-storage.d.ts +0 -132
  53. package/dist/core/auth-storage.d.ts.map +0 -1
  54. package/dist/core/auth-storage.js +0 -422
  55. package/dist/core/auth-storage.js.map +0 -1
  56. package/dist/core/bash-executor.d.ts +0 -46
  57. package/dist/core/bash-executor.d.ts.map +0 -1
  58. package/dist/core/bash-executor.js +0 -113
  59. package/dist/core/bash-executor.js.map +0 -1
  60. package/dist/core/compaction/branch-summarization.d.ts +0 -88
  61. package/dist/core/compaction/branch-summarization.d.ts.map +0 -1
  62. package/dist/core/compaction/branch-summarization.js +0 -243
  63. package/dist/core/compaction/branch-summarization.js.map +0 -1
  64. package/dist/core/compaction/compaction.d.ts +0 -121
  65. package/dist/core/compaction/compaction.d.ts.map +0 -1
  66. package/dist/core/compaction/compaction.js +0 -613
  67. package/dist/core/compaction/compaction.js.map +0 -1
  68. package/dist/core/compaction/index.d.ts +0 -7
  69. package/dist/core/compaction/index.d.ts.map +0 -1
  70. package/dist/core/compaction/index.js +0 -7
  71. package/dist/core/compaction/index.js.map +0 -1
  72. package/dist/core/compaction/utils.d.ts +0 -38
  73. package/dist/core/compaction/utils.d.ts.map +0 -1
  74. package/dist/core/compaction/utils.js +0 -153
  75. package/dist/core/compaction/utils.js.map +0 -1
  76. package/dist/core/defaults.d.ts +0 -3
  77. package/dist/core/defaults.d.ts.map +0 -1
  78. package/dist/core/defaults.js +0 -2
  79. package/dist/core/defaults.js.map +0 -1
  80. package/dist/core/diagnostics.d.ts +0 -15
  81. package/dist/core/diagnostics.d.ts.map +0 -1
  82. package/dist/core/diagnostics.js +0 -2
  83. package/dist/core/diagnostics.js.map +0 -1
  84. package/dist/core/event-bus.d.ts +0 -9
  85. package/dist/core/event-bus.d.ts.map +0 -1
  86. package/dist/core/event-bus.js +0 -25
  87. package/dist/core/event-bus.js.map +0 -1
  88. package/dist/core/exec.d.ts +0 -29
  89. package/dist/core/exec.d.ts.map +0 -1
  90. package/dist/core/exec.js +0 -75
  91. package/dist/core/exec.js.map +0 -1
  92. package/dist/core/export-html/ansi-to-html.d.ts +0 -22
  93. package/dist/core/export-html/ansi-to-html.d.ts.map +0 -1
  94. package/dist/core/export-html/ansi-to-html.js +0 -249
  95. package/dist/core/export-html/ansi-to-html.js.map +0 -1
  96. package/dist/core/export-html/index.d.ts +0 -37
  97. package/dist/core/export-html/index.d.ts.map +0 -1
  98. package/dist/core/export-html/index.js +0 -224
  99. package/dist/core/export-html/index.js.map +0 -1
  100. package/dist/core/export-html/template.css +0 -1001
  101. package/dist/core/export-html/template.html +0 -55
  102. package/dist/core/export-html/template.js +0 -1690
  103. package/dist/core/export-html/tool-renderer.d.ts +0 -40
  104. package/dist/core/export-html/tool-renderer.d.ts.map +0 -1
  105. package/dist/core/export-html/tool-renderer.js +0 -95
  106. package/dist/core/export-html/tool-renderer.js.map +0 -1
  107. package/dist/core/export-html/vendor/highlight.min.js +0 -1213
  108. package/dist/core/export-html/vendor/marked.min.js +0 -6
  109. package/dist/core/extensions/index.d.ts +0 -12
  110. package/dist/core/extensions/index.d.ts.map +0 -1
  111. package/dist/core/extensions/index.js +0 -9
  112. package/dist/core/extensions/index.js.map +0 -1
  113. package/dist/core/extensions/loader.d.ts +0 -25
  114. package/dist/core/extensions/loader.d.ts.map +0 -1
  115. package/dist/core/extensions/loader.js +0 -436
  116. package/dist/core/extensions/loader.js.map +0 -1
  117. package/dist/core/extensions/runner.d.ts +0 -148
  118. package/dist/core/extensions/runner.d.ts.map +0 -1
  119. package/dist/core/extensions/runner.js +0 -700
  120. package/dist/core/extensions/runner.js.map +0 -1
  121. package/dist/core/extensions/types.d.ts +0 -1076
  122. package/dist/core/extensions/types.d.ts.map +0 -1
  123. package/dist/core/extensions/types.js +0 -35
  124. package/dist/core/extensions/types.js.map +0 -1
  125. package/dist/core/extensions/wrapper.d.ts +0 -20
  126. package/dist/core/extensions/wrapper.d.ts.map +0 -1
  127. package/dist/core/extensions/wrapper.js +0 -22
  128. package/dist/core/extensions/wrapper.js.map +0 -1
  129. package/dist/core/footer-data-provider.d.ts +0 -48
  130. package/dist/core/footer-data-provider.d.ts.map +0 -1
  131. package/dist/core/footer-data-provider.js +0 -314
  132. package/dist/core/footer-data-provider.js.map +0 -1
  133. package/dist/core/index.d.ts +0 -11
  134. package/dist/core/index.d.ts.map +0 -1
  135. package/dist/core/index.js +0 -11
  136. package/dist/core/index.js.map +0 -1
  137. package/dist/core/keybindings.d.ts +0 -285
  138. package/dist/core/keybindings.d.ts.map +0 -1
  139. package/dist/core/keybindings.js +0 -251
  140. package/dist/core/keybindings.js.map +0 -1
  141. package/dist/core/messages.d.ts +0 -77
  142. package/dist/core/messages.d.ts.map +0 -1
  143. package/dist/core/messages.js +0 -123
  144. package/dist/core/messages.js.map +0 -1
  145. package/dist/core/model-registry.d.ts +0 -132
  146. package/dist/core/model-registry.d.ts.map +0 -1
  147. package/dist/core/model-registry.js +0 -583
  148. package/dist/core/model-registry.js.map +0 -1
  149. package/dist/core/model-resolver.d.ts +0 -110
  150. package/dist/core/model-resolver.d.ts.map +0 -1
  151. package/dist/core/model-resolver.js +0 -486
  152. package/dist/core/model-resolver.js.map +0 -1
  153. package/dist/core/output-guard.d.ts +0 -6
  154. package/dist/core/output-guard.d.ts.map +0 -1
  155. package/dist/core/output-guard.js +0 -59
  156. package/dist/core/output-guard.js.map +0 -1
  157. package/dist/core/package-manager.d.ts +0 -172
  158. package/dist/core/package-manager.d.ts.map +0 -1
  159. package/dist/core/package-manager.js +0 -1783
  160. package/dist/core/package-manager.js.map +0 -1
  161. package/dist/core/prompt-templates.d.ts +0 -51
  162. package/dist/core/prompt-templates.d.ts.map +0 -1
  163. package/dist/core/prompt-templates.js +0 -249
  164. package/dist/core/prompt-templates.js.map +0 -1
  165. package/dist/core/resolve-config-value.d.ts +0 -23
  166. package/dist/core/resolve-config-value.d.ts.map +0 -1
  167. package/dist/core/resolve-config-value.js +0 -126
  168. package/dist/core/resolve-config-value.js.map +0 -1
  169. package/dist/core/resource-loader.d.ts +0 -185
  170. package/dist/core/resource-loader.d.ts.map +0 -1
  171. package/dist/core/resource-loader.js +0 -698
  172. package/dist/core/resource-loader.js.map +0 -1
  173. package/dist/core/sdk.d.ts +0 -93
  174. package/dist/core/sdk.d.ts.map +0 -1
  175. package/dist/core/sdk.js +0 -236
  176. package/dist/core/sdk.js.map +0 -1
  177. package/dist/core/session-manager.d.ts +0 -332
  178. package/dist/core/session-manager.d.ts.map +0 -1
  179. package/dist/core/session-manager.js +0 -1104
  180. package/dist/core/session-manager.js.map +0 -1
  181. package/dist/core/settings-manager.d.ts +0 -237
  182. package/dist/core/settings-manager.d.ts.map +0 -1
  183. package/dist/core/settings-manager.js +0 -702
  184. package/dist/core/settings-manager.js.map +0 -1
  185. package/dist/core/skills.d.ts +0 -60
  186. package/dist/core/skills.d.ts.map +0 -1
  187. package/dist/core/skills.js +0 -409
  188. package/dist/core/skills.js.map +0 -1
  189. package/dist/core/slash-commands.d.ts +0 -14
  190. package/dist/core/slash-commands.d.ts.map +0 -1
  191. package/dist/core/slash-commands.js +0 -23
  192. package/dist/core/slash-commands.js.map +0 -1
  193. package/dist/core/source-info.d.ts +0 -18
  194. package/dist/core/source-info.d.ts.map +0 -1
  195. package/dist/core/source-info.js +0 -19
  196. package/dist/core/source-info.js.map +0 -1
  197. package/dist/core/system-prompt.d.ts +0 -28
  198. package/dist/core/system-prompt.d.ts.map +0 -1
  199. package/dist/core/system-prompt.js +0 -116
  200. package/dist/core/system-prompt.js.map +0 -1
  201. package/dist/core/timings.d.ts +0 -8
  202. package/dist/core/timings.d.ts.map +0 -1
  203. package/dist/core/timings.js +0 -31
  204. package/dist/core/timings.js.map +0 -1
  205. package/dist/core/tools/bash.d.ts +0 -73
  206. package/dist/core/tools/bash.d.ts.map +0 -1
  207. package/dist/core/tools/bash.js +0 -342
  208. package/dist/core/tools/bash.js.map +0 -1
  209. package/dist/core/tools/edit-diff.d.ts +0 -85
  210. package/dist/core/tools/edit-diff.d.ts.map +0 -1
  211. package/dist/core/tools/edit-diff.js +0 -337
  212. package/dist/core/tools/edit-diff.js.map +0 -1
  213. package/dist/core/tools/edit.d.ts +0 -53
  214. package/dist/core/tools/edit.d.ts.map +0 -1
  215. package/dist/core/tools/edit.js +0 -196
  216. package/dist/core/tools/edit.js.map +0 -1
  217. package/dist/core/tools/file-mutation-queue.d.ts +0 -6
  218. package/dist/core/tools/file-mutation-queue.d.ts.map +0 -1
  219. package/dist/core/tools/file-mutation-queue.js +0 -37
  220. package/dist/core/tools/file-mutation-queue.js.map +0 -1
  221. package/dist/core/tools/find.d.ts +0 -46
  222. package/dist/core/tools/find.d.ts.map +0 -1
  223. package/dist/core/tools/find.js +0 -258
  224. package/dist/core/tools/find.js.map +0 -1
  225. package/dist/core/tools/grep.d.ts +0 -56
  226. package/dist/core/tools/grep.d.ts.map +0 -1
  227. package/dist/core/tools/grep.js +0 -293
  228. package/dist/core/tools/grep.js.map +0 -1
  229. package/dist/core/tools/index.d.ts +0 -115
  230. package/dist/core/tools/index.d.ts.map +0 -1
  231. package/dist/core/tools/index.js +0 -86
  232. package/dist/core/tools/index.js.map +0 -1
  233. package/dist/core/tools/ls.d.ts +0 -46
  234. package/dist/core/tools/ls.d.ts.map +0 -1
  235. package/dist/core/tools/ls.js +0 -172
  236. package/dist/core/tools/ls.js.map +0 -1
  237. package/dist/core/tools/path-utils.d.ts +0 -8
  238. package/dist/core/tools/path-utils.d.ts.map +0 -1
  239. package/dist/core/tools/path-utils.js +0 -81
  240. package/dist/core/tools/path-utils.js.map +0 -1
  241. package/dist/core/tools/read.d.ts +0 -46
  242. package/dist/core/tools/read.d.ts.map +0 -1
  243. package/dist/core/tools/read.js +0 -225
  244. package/dist/core/tools/read.js.map +0 -1
  245. package/dist/core/tools/render-utils.d.ts +0 -21
  246. package/dist/core/tools/render-utils.d.ts.map +0 -1
  247. package/dist/core/tools/render-utils.js +0 -49
  248. package/dist/core/tools/render-utils.js.map +0 -1
  249. package/dist/core/tools/tool-definition-wrapper.d.ts +0 -14
  250. package/dist/core/tools/tool-definition-wrapper.d.ts.map +0 -1
  251. package/dist/core/tools/tool-definition-wrapper.js +0 -32
  252. package/dist/core/tools/tool-definition-wrapper.js.map +0 -1
  253. package/dist/core/tools/truncate.d.ts +0 -70
  254. package/dist/core/tools/truncate.d.ts.map +0 -1
  255. package/dist/core/tools/truncate.js +0 -205
  256. package/dist/core/tools/truncate.js.map +0 -1
  257. package/dist/core/tools/write.d.ts +0 -35
  258. package/dist/core/tools/write.d.ts.map +0 -1
  259. package/dist/core/tools/write.js +0 -216
  260. package/dist/core/tools/write.js.map +0 -1
  261. package/dist/index.d.ts +0 -28
  262. package/dist/index.d.ts.map +0 -1
  263. package/dist/index.js +0 -43
  264. package/dist/index.js.map +0 -1
  265. package/dist/lib/config.js +0 -22
  266. package/dist/lib/detect.js +0 -94
  267. package/dist/lib/display.js +0 -182
  268. package/dist/main.d.ts +0 -8
  269. package/dist/main.d.ts.map +0 -1
  270. package/dist/main.js +0 -806
  271. package/dist/main.js.map +0 -1
  272. package/dist/migrations.d.ts +0 -33
  273. package/dist/migrations.d.ts.map +0 -1
  274. package/dist/migrations.js +0 -261
  275. package/dist/migrations.js.map +0 -1
  276. package/dist/modes/index.d.ts +0 -9
  277. package/dist/modes/index.d.ts.map +0 -1
  278. package/dist/modes/index.js +0 -8
  279. package/dist/modes/index.js.map +0 -1
  280. package/dist/modes/interactive/components/armin.d.ts +0 -34
  281. package/dist/modes/interactive/components/armin.d.ts.map +0 -1
  282. package/dist/modes/interactive/components/armin.js +0 -333
  283. package/dist/modes/interactive/components/armin.js.map +0 -1
  284. package/dist/modes/interactive/components/assistant-message.d.ts +0 -18
  285. package/dist/modes/interactive/components/assistant-message.d.ts.map +0 -1
  286. package/dist/modes/interactive/components/assistant-message.js +0 -107
  287. package/dist/modes/interactive/components/assistant-message.js.map +0 -1
  288. package/dist/modes/interactive/components/bash-execution.d.ts +0 -34
  289. package/dist/modes/interactive/components/bash-execution.d.ts.map +0 -1
  290. package/dist/modes/interactive/components/bash-execution.js +0 -175
  291. package/dist/modes/interactive/components/bash-execution.js.map +0 -1
  292. package/dist/modes/interactive/components/bordered-loader.d.ts +0 -16
  293. package/dist/modes/interactive/components/bordered-loader.d.ts.map +0 -1
  294. package/dist/modes/interactive/components/bordered-loader.js +0 -51
  295. package/dist/modes/interactive/components/bordered-loader.js.map +0 -1
  296. package/dist/modes/interactive/components/branch-summary-message.d.ts +0 -16
  297. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +0 -1
  298. package/dist/modes/interactive/components/branch-summary-message.js +0 -44
  299. package/dist/modes/interactive/components/branch-summary-message.js.map +0 -1
  300. package/dist/modes/interactive/components/compaction-summary-message.d.ts +0 -16
  301. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +0 -1
  302. package/dist/modes/interactive/components/compaction-summary-message.js +0 -45
  303. package/dist/modes/interactive/components/compaction-summary-message.js.map +0 -1
  304. package/dist/modes/interactive/components/config-selector.d.ts +0 -71
  305. package/dist/modes/interactive/components/config-selector.d.ts.map +0 -1
  306. package/dist/modes/interactive/components/config-selector.js +0 -479
  307. package/dist/modes/interactive/components/config-selector.js.map +0 -1
  308. package/dist/modes/interactive/components/countdown-timer.d.ts +0 -14
  309. package/dist/modes/interactive/components/countdown-timer.d.ts.map +0 -1
  310. package/dist/modes/interactive/components/countdown-timer.js +0 -33
  311. package/dist/modes/interactive/components/countdown-timer.js.map +0 -1
  312. package/dist/modes/interactive/components/custom-editor.d.ts +0 -21
  313. package/dist/modes/interactive/components/custom-editor.d.ts.map +0 -1
  314. package/dist/modes/interactive/components/custom-editor.js +0 -70
  315. package/dist/modes/interactive/components/custom-editor.js.map +0 -1
  316. package/dist/modes/interactive/components/custom-message.d.ts +0 -20
  317. package/dist/modes/interactive/components/custom-message.d.ts.map +0 -1
  318. package/dist/modes/interactive/components/custom-message.js +0 -79
  319. package/dist/modes/interactive/components/custom-message.js.map +0 -1
  320. package/dist/modes/interactive/components/daxnuts.d.ts +0 -23
  321. package/dist/modes/interactive/components/daxnuts.d.ts.map +0 -1
  322. package/dist/modes/interactive/components/daxnuts.js +0 -140
  323. package/dist/modes/interactive/components/daxnuts.js.map +0 -1
  324. package/dist/modes/interactive/components/diff.d.ts +0 -12
  325. package/dist/modes/interactive/components/diff.d.ts.map +0 -1
  326. package/dist/modes/interactive/components/diff.js +0 -133
  327. package/dist/modes/interactive/components/diff.js.map +0 -1
  328. package/dist/modes/interactive/components/dynamic-border.d.ts +0 -15
  329. package/dist/modes/interactive/components/dynamic-border.d.ts.map +0 -1
  330. package/dist/modes/interactive/components/dynamic-border.js +0 -21
  331. package/dist/modes/interactive/components/dynamic-border.js.map +0 -1
  332. package/dist/modes/interactive/components/extension-editor.d.ts +0 -20
  333. package/dist/modes/interactive/components/extension-editor.d.ts.map +0 -1
  334. package/dist/modes/interactive/components/extension-editor.js +0 -111
  335. package/dist/modes/interactive/components/extension-editor.js.map +0 -1
  336. package/dist/modes/interactive/components/extension-input.d.ts +0 -23
  337. package/dist/modes/interactive/components/extension-input.d.ts.map +0 -1
  338. package/dist/modes/interactive/components/extension-input.js +0 -61
  339. package/dist/modes/interactive/components/extension-input.js.map +0 -1
  340. package/dist/modes/interactive/components/extension-selector.d.ts +0 -24
  341. package/dist/modes/interactive/components/extension-selector.d.ts.map +0 -1
  342. package/dist/modes/interactive/components/extension-selector.js +0 -78
  343. package/dist/modes/interactive/components/extension-selector.js.map +0 -1
  344. package/dist/modes/interactive/components/footer.d.ts +0 -27
  345. package/dist/modes/interactive/components/footer.d.ts.map +0 -1
  346. package/dist/modes/interactive/components/footer.js +0 -201
  347. package/dist/modes/interactive/components/footer.js.map +0 -1
  348. package/dist/modes/interactive/components/index.d.ts +0 -32
  349. package/dist/modes/interactive/components/index.d.ts.map +0 -1
  350. package/dist/modes/interactive/components/index.js +0 -33
  351. package/dist/modes/interactive/components/index.js.map +0 -1
  352. package/dist/modes/interactive/components/keybinding-hints.d.ts +0 -8
  353. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +0 -1
  354. package/dist/modes/interactive/components/keybinding-hints.js +0 -22
  355. package/dist/modes/interactive/components/keybinding-hints.js.map +0 -1
  356. package/dist/modes/interactive/components/login-dialog.d.ts +0 -42
  357. package/dist/modes/interactive/components/login-dialog.d.ts.map +0 -1
  358. package/dist/modes/interactive/components/login-dialog.js +0 -145
  359. package/dist/modes/interactive/components/login-dialog.js.map +0 -1
  360. package/dist/modes/interactive/components/model-selector.d.ts +0 -47
  361. package/dist/modes/interactive/components/model-selector.d.ts.map +0 -1
  362. package/dist/modes/interactive/components/model-selector.js +0 -275
  363. package/dist/modes/interactive/components/model-selector.js.map +0 -1
  364. package/dist/modes/interactive/components/oauth-selector.d.ts +0 -19
  365. package/dist/modes/interactive/components/oauth-selector.d.ts.map +0 -1
  366. package/dist/modes/interactive/components/oauth-selector.js +0 -97
  367. package/dist/modes/interactive/components/oauth-selector.js.map +0 -1
  368. package/dist/modes/interactive/components/scoped-models-selector.d.ts +0 -49
  369. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +0 -1
  370. package/dist/modes/interactive/components/scoped-models-selector.js +0 -275
  371. package/dist/modes/interactive/components/scoped-models-selector.js.map +0 -1
  372. package/dist/modes/interactive/components/session-selector-search.d.ts +0 -23
  373. package/dist/modes/interactive/components/session-selector-search.d.ts.map +0 -1
  374. package/dist/modes/interactive/components/session-selector-search.js +0 -155
  375. package/dist/modes/interactive/components/session-selector-search.js.map +0 -1
  376. package/dist/modes/interactive/components/session-selector.d.ts +0 -95
  377. package/dist/modes/interactive/components/session-selector.d.ts.map +0 -1
  378. package/dist/modes/interactive/components/session-selector.js +0 -848
  379. package/dist/modes/interactive/components/session-selector.js.map +0 -1
  380. package/dist/modes/interactive/components/settings-selector.d.ts +0 -58
  381. package/dist/modes/interactive/components/settings-selector.d.ts.map +0 -1
  382. package/dist/modes/interactive/components/settings-selector.js +0 -301
  383. package/dist/modes/interactive/components/settings-selector.js.map +0 -1
  384. package/dist/modes/interactive/components/show-images-selector.d.ts +0 -10
  385. package/dist/modes/interactive/components/show-images-selector.d.ts.map +0 -1
  386. package/dist/modes/interactive/components/show-images-selector.js +0 -39
  387. package/dist/modes/interactive/components/show-images-selector.js.map +0 -1
  388. package/dist/modes/interactive/components/skill-invocation-message.d.ts +0 -17
  389. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +0 -1
  390. package/dist/modes/interactive/components/skill-invocation-message.js +0 -47
  391. package/dist/modes/interactive/components/skill-invocation-message.js.map +0 -1
  392. package/dist/modes/interactive/components/theme-selector.d.ts +0 -11
  393. package/dist/modes/interactive/components/theme-selector.d.ts.map +0 -1
  394. package/dist/modes/interactive/components/theme-selector.js +0 -50
  395. package/dist/modes/interactive/components/theme-selector.js.map +0 -1
  396. package/dist/modes/interactive/components/thinking-selector.d.ts +0 -11
  397. package/dist/modes/interactive/components/thinking-selector.d.ts.map +0 -1
  398. package/dist/modes/interactive/components/thinking-selector.js +0 -51
  399. package/dist/modes/interactive/components/thinking-selector.js.map +0 -1
  400. package/dist/modes/interactive/components/tool-execution.d.ts +0 -58
  401. package/dist/modes/interactive/components/tool-execution.d.ts.map +0 -1
  402. package/dist/modes/interactive/components/tool-execution.js +0 -274
  403. package/dist/modes/interactive/components/tool-execution.js.map +0 -1
  404. package/dist/modes/interactive/components/tree-selector.d.ts +0 -89
  405. package/dist/modes/interactive/components/tree-selector.d.ts.map +0 -1
  406. package/dist/modes/interactive/components/tree-selector.js +0 -1084
  407. package/dist/modes/interactive/components/tree-selector.js.map +0 -1
  408. package/dist/modes/interactive/components/user-message-selector.d.ts +0 -30
  409. package/dist/modes/interactive/components/user-message-selector.d.ts.map +0 -1
  410. package/dist/modes/interactive/components/user-message-selector.js +0 -113
  411. package/dist/modes/interactive/components/user-message-selector.js.map +0 -1
  412. package/dist/modes/interactive/components/user-message.d.ts +0 -9
  413. package/dist/modes/interactive/components/user-message.d.ts.map +0 -1
  414. package/dist/modes/interactive/components/user-message.js +0 -28
  415. package/dist/modes/interactive/components/user-message.js.map +0 -1
  416. package/dist/modes/interactive/components/visual-truncate.d.ts +0 -24
  417. package/dist/modes/interactive/components/visual-truncate.d.ts.map +0 -1
  418. package/dist/modes/interactive/components/visual-truncate.js +0 -33
  419. package/dist/modes/interactive/components/visual-truncate.js.map +0 -1
  420. package/dist/modes/interactive/interactive-mode.d.ts +0 -318
  421. package/dist/modes/interactive/interactive-mode.d.ts.map +0 -1
  422. package/dist/modes/interactive/interactive-mode.js +0 -3907
  423. package/dist/modes/interactive/interactive-mode.js.map +0 -1
  424. package/dist/modes/interactive/theme/dark.json +0 -85
  425. package/dist/modes/interactive/theme/light.json +0 -84
  426. package/dist/modes/interactive/theme/theme-schema.json +0 -335
  427. package/dist/modes/interactive/theme/theme.d.ts +0 -81
  428. package/dist/modes/interactive/theme/theme.d.ts.map +0 -1
  429. package/dist/modes/interactive/theme/theme.js +0 -970
  430. package/dist/modes/interactive/theme/theme.js.map +0 -1
  431. package/dist/modes/print-mode.d.ts +0 -28
  432. package/dist/modes/print-mode.d.ts.map +0 -1
  433. package/dist/modes/print-mode.js +0 -108
  434. package/dist/modes/print-mode.js.map +0 -1
  435. package/dist/modes/rpc/jsonl.d.ts +0 -17
  436. package/dist/modes/rpc/jsonl.d.ts.map +0 -1
  437. package/dist/modes/rpc/jsonl.js +0 -49
  438. package/dist/modes/rpc/jsonl.js.map +0 -1
  439. package/dist/modes/rpc/rpc-client.d.ts +0 -217
  440. package/dist/modes/rpc/rpc-client.d.ts.map +0 -1
  441. package/dist/modes/rpc/rpc-client.js +0 -401
  442. package/dist/modes/rpc/rpc-client.js.map +0 -1
  443. package/dist/modes/rpc/rpc-mode.d.ts +0 -20
  444. package/dist/modes/rpc/rpc-mode.d.ts.map +0 -1
  445. package/dist/modes/rpc/rpc-mode.js +0 -542
  446. package/dist/modes/rpc/rpc-mode.js.map +0 -1
  447. package/dist/modes/rpc/rpc-types.d.ts +0 -408
  448. package/dist/modes/rpc/rpc-types.d.ts.map +0 -1
  449. package/dist/modes/rpc/rpc-types.js +0 -8
  450. package/dist/modes/rpc/rpc-types.js.map +0 -1
  451. package/dist/utils/changelog.d.ts +0 -21
  452. package/dist/utils/changelog.d.ts.map +0 -1
  453. package/dist/utils/changelog.js +0 -87
  454. package/dist/utils/changelog.js.map +0 -1
  455. package/dist/utils/child-process.d.ts +0 -11
  456. package/dist/utils/child-process.d.ts.map +0 -1
  457. package/dist/utils/child-process.js +0 -78
  458. package/dist/utils/child-process.js.map +0 -1
  459. package/dist/utils/clipboard-image.d.ts +0 -11
  460. package/dist/utils/clipboard-image.d.ts.map +0 -1
  461. package/dist/utils/clipboard-image.js +0 -245
  462. package/dist/utils/clipboard-image.js.map +0 -1
  463. package/dist/utils/clipboard-native.d.ts +0 -8
  464. package/dist/utils/clipboard-native.d.ts.map +0 -1
  465. package/dist/utils/clipboard-native.js +0 -14
  466. package/dist/utils/clipboard-native.js.map +0 -1
  467. package/dist/utils/clipboard.d.ts +0 -2
  468. package/dist/utils/clipboard.d.ts.map +0 -1
  469. package/dist/utils/clipboard.js +0 -78
  470. package/dist/utils/clipboard.js.map +0 -1
  471. package/dist/utils/exif-orientation.d.ts +0 -5
  472. package/dist/utils/exif-orientation.d.ts.map +0 -1
  473. package/dist/utils/exif-orientation.js +0 -158
  474. package/dist/utils/exif-orientation.js.map +0 -1
  475. package/dist/utils/frontmatter.d.ts +0 -8
  476. package/dist/utils/frontmatter.d.ts.map +0 -1
  477. package/dist/utils/frontmatter.js +0 -26
  478. package/dist/utils/frontmatter.js.map +0 -1
  479. package/dist/utils/git.d.ts +0 -26
  480. package/dist/utils/git.d.ts.map +0 -1
  481. package/dist/utils/git.js +0 -163
  482. package/dist/utils/git.js.map +0 -1
  483. package/dist/utils/image-convert.d.ts +0 -9
  484. package/dist/utils/image-convert.d.ts.map +0 -1
  485. package/dist/utils/image-convert.js +0 -39
  486. package/dist/utils/image-convert.js.map +0 -1
  487. package/dist/utils/image-resize.d.ts +0 -36
  488. package/dist/utils/image-resize.d.ts.map +0 -1
  489. package/dist/utils/image-resize.js +0 -137
  490. package/dist/utils/image-resize.js.map +0 -1
  491. package/dist/utils/mime.d.ts +0 -2
  492. package/dist/utils/mime.d.ts.map +0 -1
  493. package/dist/utils/mime.js +0 -26
  494. package/dist/utils/mime.js.map +0 -1
  495. package/dist/utils/photon.d.ts +0 -21
  496. package/dist/utils/photon.d.ts.map +0 -1
  497. package/dist/utils/photon.js +0 -121
  498. package/dist/utils/photon.js.map +0 -1
  499. package/dist/utils/shell.d.ts +0 -26
  500. package/dist/utils/shell.d.ts.map +0 -1
  501. package/dist/utils/shell.js +0 -186
  502. package/dist/utils/shell.js.map +0 -1
  503. package/dist/utils/sleep.d.ts +0 -5
  504. package/dist/utils/sleep.d.ts.map +0 -1
  505. package/dist/utils/sleep.js +0 -17
  506. package/dist/utils/sleep.js.map +0 -1
  507. package/dist/utils/tools-manager.d.ts +0 -3
  508. package/dist/utils/tools-manager.d.ts.map +0 -1
  509. package/dist/utils/tools-manager.js +0 -252
  510. package/dist/utils/tools-manager.js.map +0 -1
  511. package/dist/welcome/about.js +0 -50
  512. package/dist/welcome/auth.js +0 -126
  513. package/dist/welcome/intro.js +0 -90
  514. package/dist/welcome/qa.js +0 -131
  515. package/scripts/install-gum.sh +0 -141
package/dist/main.js DELETED
@@ -1,806 +0,0 @@
1
- /**
2
- * Main entry point for the coding agent CLI.
3
- *
4
- * This file handles CLI argument parsing and translates them into
5
- * createAgentSession() options. The SDK does the heavy lifting.
6
- */
7
- import { resolve } from "node:path";
8
- import { modelsAreEqual, supportsXhigh } from "@mariozechner/pi-ai";
9
- import chalk from "chalk";
10
- import { createInterface } from "readline";
11
- import { parseArgs, printHelp } from "./cli/args.js";
12
- import { selectConfig } from "./cli/config-selector.js";
13
- import { processFileArguments } from "./cli/file-processor.js";
14
- import { buildInitialMessage } from "./cli/initial-message.js";
15
- import { listModels } from "./cli/list-models.js";
16
- import { selectSession } from "./cli/session-picker.js";
17
- import { APP_NAME, getAgentDir, getModelsPath, VERSION } from "./config.js";
18
- import { AgentSessionRuntimeHost, createAgentSessionRuntime, } from "./core/agent-session-runtime.js";
19
- import { AuthStorage } from "./core/auth-storage.js";
20
- import { exportFromFile } from "./core/export-html/index.js";
21
- import { migrateKeybindingsConfigFile } from "./core/keybindings.js";
22
- import { ModelRegistry } from "./core/model-registry.js";
23
- import { resolveCliModel, resolveModelScope } from "./core/model-resolver.js";
24
- import { restoreStdout, takeOverStdout } from "./core/output-guard.js";
25
- import { DefaultPackageManager } from "./core/package-manager.js";
26
- import { DefaultResourceLoader } from "./core/resource-loader.js";
27
- import { SessionManager } from "./core/session-manager.js";
28
- import { SettingsManager } from "./core/settings-manager.js";
29
- import { printTimings, resetTimings, time } from "./core/timings.js";
30
- import { allTools } from "./core/tools/index.js";
31
- import { runMigrations, showDeprecationWarnings } from "./migrations.js";
32
- import { InteractiveMode, runPrintMode, runRpcMode } from "./modes/index.js";
33
- import { initTheme, stopThemeWatcher } from "./modes/interactive/theme/theme.js";
34
- /**
35
- * Read all content from piped stdin.
36
- * Returns undefined if stdin is a TTY (interactive terminal).
37
- */
38
- async function readPipedStdin() {
39
- // If stdin is a TTY, we're running interactively - don't read stdin
40
- if (process.stdin.isTTY) {
41
- return undefined;
42
- }
43
- return new Promise((resolve) => {
44
- let data = "";
45
- process.stdin.setEncoding("utf8");
46
- process.stdin.on("data", (chunk) => {
47
- data += chunk;
48
- });
49
- process.stdin.on("end", () => {
50
- resolve(data.trim() || undefined);
51
- });
52
- process.stdin.resume();
53
- });
54
- }
55
- function reportSettingsErrors(settingsManager, context) {
56
- const errors = settingsManager.drainErrors();
57
- for (const { scope, error } of errors) {
58
- console.error(chalk.yellow(`Warning (${context}, ${scope} settings): ${error.message}`));
59
- if (error.stack) {
60
- console.error(chalk.dim(error.stack));
61
- }
62
- }
63
- }
64
- function isTruthyEnvFlag(value) {
65
- if (!value)
66
- return false;
67
- return value === "1" || value.toLowerCase() === "true" || value.toLowerCase() === "yes";
68
- }
69
- function getPackageCommandUsage(command) {
70
- switch (command) {
71
- case "install":
72
- return `${APP_NAME} install <source> [-l]`;
73
- case "remove":
74
- return `${APP_NAME} remove <source> [-l]`;
75
- case "update":
76
- return `${APP_NAME} update [source]`;
77
- case "list":
78
- return `${APP_NAME} list`;
79
- }
80
- }
81
- function printPackageCommandHelp(command) {
82
- switch (command) {
83
- case "install":
84
- console.log(`${chalk.bold("Usage:")}
85
- ${getPackageCommandUsage("install")}
86
-
87
- Install a package and add it to settings.
88
-
89
- Options:
90
- -l, --local Install project-locally (.pi/settings.json)
91
-
92
- Examples:
93
- ${APP_NAME} install npm:@foo/bar
94
- ${APP_NAME} install git:github.com/user/repo
95
- ${APP_NAME} install git:git@github.com:user/repo
96
- ${APP_NAME} install https://github.com/user/repo
97
- ${APP_NAME} install ssh://git@github.com/user/repo
98
- ${APP_NAME} install ./local/path
99
- `);
100
- return;
101
- case "remove":
102
- console.log(`${chalk.bold("Usage:")}
103
- ${getPackageCommandUsage("remove")}
104
-
105
- Remove a package and its source from settings.
106
- Alias: ${APP_NAME} uninstall <source> [-l]
107
-
108
- Options:
109
- -l, --local Remove from project settings (.pi/settings.json)
110
-
111
- Examples:
112
- ${APP_NAME} remove npm:@foo/bar
113
- ${APP_NAME} uninstall npm:@foo/bar
114
- `);
115
- return;
116
- case "update":
117
- console.log(`${chalk.bold("Usage:")}
118
- ${getPackageCommandUsage("update")}
119
-
120
- Update installed packages.
121
- If <source> is provided, only that package is updated.
122
- `);
123
- return;
124
- case "list":
125
- console.log(`${chalk.bold("Usage:")}
126
- ${getPackageCommandUsage("list")}
127
-
128
- List installed packages from user and project settings.
129
- `);
130
- return;
131
- }
132
- }
133
- function parsePackageCommand(args) {
134
- const [rawCommand, ...rest] = args;
135
- let command;
136
- if (rawCommand === "uninstall") {
137
- command = "remove";
138
- }
139
- else if (rawCommand === "install" || rawCommand === "remove" || rawCommand === "update" || rawCommand === "list") {
140
- command = rawCommand;
141
- }
142
- if (!command) {
143
- return undefined;
144
- }
145
- let local = false;
146
- let help = false;
147
- let invalidOption;
148
- let source;
149
- for (const arg of rest) {
150
- if (arg === "-h" || arg === "--help") {
151
- help = true;
152
- continue;
153
- }
154
- if (arg === "-l" || arg === "--local") {
155
- if (command === "install" || command === "remove") {
156
- local = true;
157
- }
158
- else {
159
- invalidOption = invalidOption ?? arg;
160
- }
161
- continue;
162
- }
163
- if (arg.startsWith("-")) {
164
- invalidOption = invalidOption ?? arg;
165
- continue;
166
- }
167
- if (!source) {
168
- source = arg;
169
- }
170
- }
171
- return { command, source, local, help, invalidOption };
172
- }
173
- async function handlePackageCommand(args) {
174
- const options = parsePackageCommand(args);
175
- if (!options) {
176
- return false;
177
- }
178
- if (options.help) {
179
- printPackageCommandHelp(options.command);
180
- return true;
181
- }
182
- if (options.invalidOption) {
183
- console.error(chalk.red(`Unknown option ${options.invalidOption} for "${options.command}".`));
184
- console.error(chalk.dim(`Use "${APP_NAME} --help" or "${getPackageCommandUsage(options.command)}".`));
185
- process.exitCode = 1;
186
- return true;
187
- }
188
- const source = options.source;
189
- if ((options.command === "install" || options.command === "remove") && !source) {
190
- console.error(chalk.red(`Missing ${options.command} source.`));
191
- console.error(chalk.dim(`Usage: ${getPackageCommandUsage(options.command)}`));
192
- process.exitCode = 1;
193
- return true;
194
- }
195
- const cwd = process.cwd();
196
- const agentDir = getAgentDir();
197
- const settingsManager = SettingsManager.create(cwd, agentDir);
198
- reportSettingsErrors(settingsManager, "package command");
199
- const packageManager = new DefaultPackageManager({ cwd, agentDir, settingsManager });
200
- packageManager.setProgressCallback((event) => {
201
- if (event.type === "start") {
202
- process.stdout.write(chalk.dim(`${event.message}\n`));
203
- }
204
- });
205
- try {
206
- switch (options.command) {
207
- case "install":
208
- await packageManager.install(source, { local: options.local });
209
- packageManager.addSourceToSettings(source, { local: options.local });
210
- console.log(chalk.green(`Installed ${source}`));
211
- return true;
212
- case "remove": {
213
- await packageManager.remove(source, { local: options.local });
214
- const removed = packageManager.removeSourceFromSettings(source, { local: options.local });
215
- if (!removed) {
216
- console.error(chalk.red(`No matching package found for ${source}`));
217
- process.exitCode = 1;
218
- return true;
219
- }
220
- console.log(chalk.green(`Removed ${source}`));
221
- return true;
222
- }
223
- case "list": {
224
- const globalSettings = settingsManager.getGlobalSettings();
225
- const projectSettings = settingsManager.getProjectSettings();
226
- const globalPackages = globalSettings.packages ?? [];
227
- const projectPackages = projectSettings.packages ?? [];
228
- if (globalPackages.length === 0 && projectPackages.length === 0) {
229
- console.log(chalk.dim("No packages installed."));
230
- return true;
231
- }
232
- const formatPackage = (pkg, scope) => {
233
- const source = typeof pkg === "string" ? pkg : pkg.source;
234
- const filtered = typeof pkg === "object";
235
- const display = filtered ? `${source} (filtered)` : source;
236
- console.log(` ${display}`);
237
- const path = packageManager.getInstalledPath(source, scope);
238
- if (path) {
239
- console.log(chalk.dim(` ${path}`));
240
- }
241
- };
242
- if (globalPackages.length > 0) {
243
- console.log(chalk.bold("User packages:"));
244
- for (const pkg of globalPackages) {
245
- formatPackage(pkg, "user");
246
- }
247
- }
248
- if (projectPackages.length > 0) {
249
- if (globalPackages.length > 0)
250
- console.log();
251
- console.log(chalk.bold("Project packages:"));
252
- for (const pkg of projectPackages) {
253
- formatPackage(pkg, "project");
254
- }
255
- }
256
- return true;
257
- }
258
- case "update":
259
- await packageManager.update(source);
260
- if (source) {
261
- console.log(chalk.green(`Updated ${source}`));
262
- }
263
- else {
264
- console.log(chalk.green("Updated packages"));
265
- }
266
- return true;
267
- }
268
- }
269
- catch (error) {
270
- const message = error instanceof Error ? error.message : "Unknown package command error";
271
- console.error(chalk.red(`Error: ${message}`));
272
- process.exitCode = 1;
273
- return true;
274
- }
275
- }
276
- async function prepareInitialMessage(parsed, autoResizeImages, stdinContent) {
277
- if (parsed.fileArgs.length === 0) {
278
- return buildInitialMessage({ parsed, stdinContent });
279
- }
280
- const { text, images } = await processFileArguments(parsed.fileArgs, { autoResizeImages });
281
- return buildInitialMessage({
282
- parsed,
283
- fileText: text,
284
- fileImages: images,
285
- stdinContent,
286
- });
287
- }
288
- /**
289
- * Resolve a session argument to a file path.
290
- * If it looks like a path, use as-is. Otherwise try to match as session ID prefix.
291
- */
292
- async function resolveSessionPath(sessionArg, cwd, sessionDir) {
293
- // If it looks like a file path, use as-is
294
- if (sessionArg.includes("/") || sessionArg.includes("\\") || sessionArg.endsWith(".jsonl")) {
295
- return { type: "path", path: sessionArg };
296
- }
297
- // Try to match as session ID in current project first
298
- const localSessions = await SessionManager.list(cwd, sessionDir);
299
- const localMatches = localSessions.filter((s) => s.id.startsWith(sessionArg));
300
- if (localMatches.length >= 1) {
301
- return { type: "local", path: localMatches[0].path };
302
- }
303
- // Try global search across all projects
304
- const allSessions = await SessionManager.listAll();
305
- const globalMatches = allSessions.filter((s) => s.id.startsWith(sessionArg));
306
- if (globalMatches.length >= 1) {
307
- const match = globalMatches[0];
308
- return { type: "global", path: match.path, cwd: match.cwd };
309
- }
310
- // Not found anywhere
311
- return { type: "not_found", arg: sessionArg };
312
- }
313
- /** Prompt user for yes/no confirmation */
314
- async function promptConfirm(message) {
315
- return new Promise((resolve) => {
316
- const rl = createInterface({
317
- input: process.stdin,
318
- output: process.stdout,
319
- });
320
- rl.question(`${message} [y/N] `, (answer) => {
321
- rl.close();
322
- resolve(answer.toLowerCase() === "y" || answer.toLowerCase() === "yes");
323
- });
324
- });
325
- }
326
- /** Helper to call CLI-only session_directory handlers before the initial session manager is created */
327
- async function callSessionDirectoryHook(extensions, cwd) {
328
- let customSessionDir;
329
- for (const ext of extensions.extensions) {
330
- const handlers = ext.handlers.get("session_directory");
331
- if (!handlers || handlers.length === 0)
332
- continue;
333
- for (const handler of handlers) {
334
- try {
335
- const event = { type: "session_directory", cwd };
336
- const result = (await handler(event));
337
- if (result?.sessionDir) {
338
- customSessionDir = result.sessionDir;
339
- }
340
- }
341
- catch (err) {
342
- const message = err instanceof Error ? err.message : String(err);
343
- console.error(chalk.red(`Extension "${ext.path}" session_directory handler failed: ${message}`));
344
- }
345
- }
346
- }
347
- return customSessionDir;
348
- }
349
- function validateForkFlags(parsed) {
350
- if (!parsed.fork)
351
- return;
352
- const conflictingFlags = [
353
- parsed.session ? "--session" : undefined,
354
- parsed.continue ? "--continue" : undefined,
355
- parsed.resume ? "--resume" : undefined,
356
- parsed.noSession ? "--no-session" : undefined,
357
- ].filter((flag) => flag !== undefined);
358
- if (conflictingFlags.length > 0) {
359
- console.error(chalk.red(`Error: --fork cannot be combined with ${conflictingFlags.join(", ")}`));
360
- process.exit(1);
361
- }
362
- }
363
- function forkSessionOrExit(sourcePath, cwd, sessionDir) {
364
- try {
365
- return SessionManager.forkFrom(sourcePath, cwd, sessionDir);
366
- }
367
- catch (error) {
368
- const message = error instanceof Error ? error.message : String(error);
369
- console.error(chalk.red(`Error: ${message}`));
370
- process.exit(1);
371
- }
372
- }
373
- async function createSessionManager(parsed, cwd, extensions, settingsManager) {
374
- if (parsed.noSession) {
375
- return SessionManager.inMemory();
376
- }
377
- // Priority: CLI flag > settings.json > extension hook
378
- const effectiveSessionDir = parsed.sessionDir ?? settingsManager.getSessionDir() ?? (await callSessionDirectoryHook(extensions, cwd));
379
- if (parsed.fork) {
380
- const resolved = await resolveSessionPath(parsed.fork, cwd, effectiveSessionDir);
381
- switch (resolved.type) {
382
- case "path":
383
- case "local":
384
- case "global":
385
- return forkSessionOrExit(resolved.path, cwd, effectiveSessionDir);
386
- case "not_found":
387
- console.error(chalk.red(`No session found matching '${resolved.arg}'`));
388
- process.exit(1);
389
- }
390
- }
391
- if (parsed.session) {
392
- const resolved = await resolveSessionPath(parsed.session, cwd, effectiveSessionDir);
393
- switch (resolved.type) {
394
- case "path":
395
- case "local":
396
- return SessionManager.open(resolved.path, effectiveSessionDir);
397
- case "global": {
398
- // Session found in different project - ask user if they want to fork
399
- console.log(chalk.yellow(`Session found in different project: ${resolved.cwd}`));
400
- const shouldFork = await promptConfirm("Fork this session into current directory?");
401
- if (!shouldFork) {
402
- console.log(chalk.dim("Aborted."));
403
- process.exit(0);
404
- }
405
- return forkSessionOrExit(resolved.path, cwd, effectiveSessionDir);
406
- }
407
- case "not_found":
408
- console.error(chalk.red(`No session found matching '${resolved.arg}'`));
409
- process.exit(1);
410
- }
411
- }
412
- if (parsed.continue) {
413
- return SessionManager.continueRecent(cwd, effectiveSessionDir);
414
- }
415
- // --resume is handled separately (needs picker UI)
416
- // If effective session dir is set, create new session there
417
- if (effectiveSessionDir) {
418
- return SessionManager.create(cwd, effectiveSessionDir);
419
- }
420
- // Default case (new session) returns undefined, SDK will create one
421
- return undefined;
422
- }
423
- function buildSessionOptions(parsed, scopedModels, sessionManager, modelRegistry, settingsManager) {
424
- const options = {};
425
- let cliThinkingFromModel = false;
426
- if (sessionManager) {
427
- options.sessionManager = sessionManager;
428
- }
429
- // Model from CLI
430
- // - supports --provider <name> --model <pattern>
431
- // - supports --model <provider>/<pattern>
432
- if (parsed.model) {
433
- const resolved = resolveCliModel({
434
- cliProvider: parsed.provider,
435
- cliModel: parsed.model,
436
- modelRegistry,
437
- });
438
- if (resolved.warning) {
439
- console.warn(chalk.yellow(`Warning: ${resolved.warning}`));
440
- }
441
- if (resolved.error) {
442
- console.error(chalk.red(resolved.error));
443
- process.exit(1);
444
- }
445
- if (resolved.model) {
446
- options.model = resolved.model;
447
- // Allow "--model <pattern>:<thinking>" as a shorthand.
448
- // Explicit --thinking still takes precedence (applied later).
449
- if (!parsed.thinking && resolved.thinkingLevel) {
450
- options.thinkingLevel = resolved.thinkingLevel;
451
- cliThinkingFromModel = true;
452
- }
453
- }
454
- }
455
- if (!options.model && scopedModels.length > 0 && !parsed.continue && !parsed.resume) {
456
- // Check if saved default is in scoped models - use it if so, otherwise first scoped model
457
- const savedProvider = settingsManager.getDefaultProvider();
458
- const savedModelId = settingsManager.getDefaultModel();
459
- const savedModel = savedProvider && savedModelId ? modelRegistry.find(savedProvider, savedModelId) : undefined;
460
- const savedInScope = savedModel ? scopedModels.find((sm) => modelsAreEqual(sm.model, savedModel)) : undefined;
461
- if (savedInScope) {
462
- options.model = savedInScope.model;
463
- // Use thinking level from scoped model config if explicitly set
464
- if (!parsed.thinking && savedInScope.thinkingLevel) {
465
- options.thinkingLevel = savedInScope.thinkingLevel;
466
- }
467
- }
468
- else {
469
- options.model = scopedModels[0].model;
470
- // Use thinking level from first scoped model if explicitly set
471
- if (!parsed.thinking && scopedModels[0].thinkingLevel) {
472
- options.thinkingLevel = scopedModels[0].thinkingLevel;
473
- }
474
- }
475
- }
476
- // Thinking level from CLI (takes precedence over scoped model thinking levels set above)
477
- if (parsed.thinking) {
478
- options.thinkingLevel = parsed.thinking;
479
- }
480
- // Scoped models for Ctrl+P cycling
481
- // Keep thinking level undefined when not explicitly set in the model pattern.
482
- // Undefined means "inherit current session thinking level" during cycling.
483
- if (scopedModels.length > 0) {
484
- options.scopedModels = scopedModels.map((sm) => ({
485
- model: sm.model,
486
- thinkingLevel: sm.thinkingLevel,
487
- }));
488
- }
489
- // API key from CLI - set in authStorage
490
- // (handled by caller before createAgentSession)
491
- // Tools
492
- if (parsed.noTools) {
493
- // --no-tools: start with no built-in tools
494
- // --tools can still add specific ones back
495
- if (parsed.tools && parsed.tools.length > 0) {
496
- options.tools = parsed.tools.map((name) => allTools[name]);
497
- }
498
- else {
499
- options.tools = [];
500
- }
501
- }
502
- else if (parsed.tools) {
503
- options.tools = parsed.tools.map((name) => allTools[name]);
504
- }
505
- return { options, cliThinkingFromModel };
506
- }
507
- function resolveCliPaths(cwd, paths) {
508
- return paths?.map((value) => resolve(cwd, value));
509
- }
510
- function buildRuntimeBootstrap(parsed, cwd, agentDir, authStorage, sessionOptions) {
511
- return {
512
- agentDir,
513
- authStorage,
514
- model: sessionOptions.model,
515
- thinkingLevel: sessionOptions.thinkingLevel,
516
- scopedModels: sessionOptions.scopedModels,
517
- tools: sessionOptions.tools,
518
- customTools: sessionOptions.customTools,
519
- resourceLoader: {
520
- additionalExtensionPaths: resolveCliPaths(cwd, parsed.extensions),
521
- additionalSkillPaths: resolveCliPaths(cwd, parsed.skills),
522
- additionalPromptTemplatePaths: resolveCliPaths(cwd, parsed.promptTemplates),
523
- additionalThemePaths: resolveCliPaths(cwd, parsed.themes),
524
- noExtensions: parsed.noExtensions,
525
- noSkills: parsed.noSkills,
526
- noPromptTemplates: parsed.noPromptTemplates,
527
- noThemes: parsed.noThemes,
528
- systemPrompt: parsed.systemPrompt,
529
- appendSystemPrompt: parsed.appendSystemPrompt,
530
- },
531
- };
532
- }
533
- async function handleConfigCommand(args) {
534
- if (args[0] !== "config") {
535
- return false;
536
- }
537
- const cwd = process.cwd();
538
- const agentDir = getAgentDir();
539
- const settingsManager = SettingsManager.create(cwd, agentDir);
540
- reportSettingsErrors(settingsManager, "config command");
541
- const packageManager = new DefaultPackageManager({ cwd, agentDir, settingsManager });
542
- const resolvedPaths = await packageManager.resolve();
543
- await selectConfig({
544
- resolvedPaths,
545
- settingsManager,
546
- cwd,
547
- agentDir,
548
- });
549
- process.exit(0);
550
- }
551
- export async function main(args) {
552
- resetTimings();
553
- const offlineMode = args.includes("--offline") || isTruthyEnvFlag(process.env.PI_OFFLINE);
554
- if (offlineMode) {
555
- process.env.PI_OFFLINE = "1";
556
- process.env.PI_SKIP_VERSION_CHECK = "1";
557
- }
558
- if (await handlePackageCommand(args)) {
559
- return;
560
- }
561
- if (await handleConfigCommand(args)) {
562
- return;
563
- }
564
- // First pass: parse args to get --extension paths
565
- const firstPass = parseArgs(args);
566
- time("parseArgs.firstPass");
567
- const shouldTakeOverStdout = firstPass.mode !== undefined || firstPass.print || !process.stdin.isTTY;
568
- if (shouldTakeOverStdout) {
569
- takeOverStdout();
570
- }
571
- // Run migrations (pass cwd for project-local migrations)
572
- const { migratedAuthProviders: migratedProviders, deprecationWarnings } = runMigrations(process.cwd());
573
- time("runMigrations");
574
- // Early load extensions to discover their CLI flags
575
- const cwd = process.cwd();
576
- const agentDir = getAgentDir();
577
- const settingsManager = SettingsManager.create(cwd, agentDir);
578
- reportSettingsErrors(settingsManager, "startup");
579
- const authStorage = AuthStorage.create();
580
- const modelRegistry = ModelRegistry.create(authStorage, getModelsPath());
581
- const resourceLoader = new DefaultResourceLoader({
582
- cwd,
583
- agentDir,
584
- settingsManager,
585
- additionalExtensionPaths: firstPass.extensions,
586
- additionalSkillPaths: firstPass.skills,
587
- additionalPromptTemplatePaths: firstPass.promptTemplates,
588
- additionalThemePaths: firstPass.themes,
589
- noExtensions: firstPass.noExtensions,
590
- noSkills: firstPass.noSkills,
591
- noPromptTemplates: firstPass.noPromptTemplates,
592
- noThemes: firstPass.noThemes,
593
- systemPrompt: firstPass.systemPrompt,
594
- appendSystemPrompt: firstPass.appendSystemPrompt,
595
- });
596
- time("createResourceLoader");
597
- await resourceLoader.reload();
598
- time("resourceLoader.reload");
599
- const extensionsResult = resourceLoader.getExtensions();
600
- for (const { path, error } of extensionsResult.errors) {
601
- console.error(chalk.red(`Failed to load extension "${path}": ${error}`));
602
- }
603
- // Apply pending provider registrations from extensions immediately
604
- // so they're available for model resolution before AgentSession is created
605
- for (const { name, config, extensionPath } of extensionsResult.runtime.pendingProviderRegistrations) {
606
- try {
607
- modelRegistry.registerProvider(name, config);
608
- }
609
- catch (error) {
610
- const message = error instanceof Error ? error.message : String(error);
611
- console.error(chalk.red(`Extension "${extensionPath}" error: ${message}`));
612
- }
613
- }
614
- extensionsResult.runtime.pendingProviderRegistrations = [];
615
- const extensionFlags = new Map();
616
- for (const ext of extensionsResult.extensions) {
617
- for (const [name, flag] of ext.flags) {
618
- extensionFlags.set(name, { type: flag.type });
619
- }
620
- }
621
- // Second pass: parse args with extension flags
622
- const parsed = parseArgs(args, extensionFlags);
623
- time("parseArgs.secondPass");
624
- // Pass flag values to extensions via runtime
625
- for (const [name, value] of parsed.unknownFlags) {
626
- extensionsResult.runtime.flagValues.set(name, value);
627
- }
628
- if (parsed.version) {
629
- console.log(VERSION);
630
- process.exit(0);
631
- }
632
- if (parsed.help) {
633
- printHelp();
634
- process.exit(0);
635
- }
636
- if (parsed.listModels !== undefined) {
637
- const searchPattern = typeof parsed.listModels === "string" ? parsed.listModels : undefined;
638
- await listModels(modelRegistry, searchPattern);
639
- process.exit(0);
640
- }
641
- // Read piped stdin content (if any) - skip for RPC mode which uses stdin for JSON-RPC
642
- let stdinContent;
643
- if (parsed.mode !== "rpc") {
644
- stdinContent = await readPipedStdin();
645
- if (stdinContent !== undefined) {
646
- // Force print mode since interactive mode requires a TTY for keyboard input
647
- parsed.print = true;
648
- }
649
- }
650
- time("readPipedStdin");
651
- if (parsed.export) {
652
- let result;
653
- try {
654
- const outputPath = parsed.messages.length > 0 ? parsed.messages[0] : undefined;
655
- result = await exportFromFile(parsed.export, outputPath);
656
- }
657
- catch (error) {
658
- const message = error instanceof Error ? error.message : "Failed to export session";
659
- console.error(chalk.red(`Error: ${message}`));
660
- process.exit(1);
661
- }
662
- console.log(`Exported to: ${result}`);
663
- process.exit(0);
664
- }
665
- migrateKeybindingsConfigFile(agentDir);
666
- time("migrateKeybindingsConfigFile");
667
- if (parsed.mode === "rpc" && parsed.fileArgs.length > 0) {
668
- console.error(chalk.red("Error: @file arguments are not supported in RPC mode"));
669
- process.exit(1);
670
- }
671
- validateForkFlags(parsed);
672
- const { initialMessage, initialImages } = await prepareInitialMessage(parsed, settingsManager.getImageAutoResize(), stdinContent);
673
- time("prepareInitialMessage");
674
- const isInteractive = !parsed.print && parsed.mode === undefined;
675
- const startupBenchmark = isTruthyEnvFlag(process.env.PI_STARTUP_BENCHMARK);
676
- if (startupBenchmark && !isInteractive) {
677
- console.error(chalk.red("Error: PI_STARTUP_BENCHMARK only supports interactive mode"));
678
- process.exit(1);
679
- }
680
- const mode = parsed.mode || "text";
681
- initTheme(settingsManager.getTheme(), isInteractive);
682
- time("initTheme");
683
- // Show deprecation warnings in interactive mode
684
- if (isInteractive && deprecationWarnings.length > 0) {
685
- await showDeprecationWarnings(deprecationWarnings);
686
- }
687
- let scopedModels = [];
688
- const modelPatterns = parsed.models ?? settingsManager.getEnabledModels();
689
- if (modelPatterns && modelPatterns.length > 0) {
690
- scopedModels = await resolveModelScope(modelPatterns, modelRegistry);
691
- }
692
- time("resolveModelScope");
693
- // Create session manager based on CLI flags
694
- let sessionManager = await createSessionManager(parsed, cwd, extensionsResult, settingsManager);
695
- time("createSessionManager");
696
- // Handle --resume: show session picker
697
- if (parsed.resume) {
698
- // Compute effective session dir for resume (same logic as createSessionManager)
699
- const effectiveSessionDir = parsed.sessionDir ??
700
- settingsManager.getSessionDir() ??
701
- (await callSessionDirectoryHook(extensionsResult, cwd));
702
- const selectedPath = await selectSession((onProgress) => SessionManager.list(cwd, effectiveSessionDir, onProgress), SessionManager.listAll);
703
- if (!selectedPath) {
704
- console.log(chalk.dim("No session selected"));
705
- stopThemeWatcher();
706
- process.exit(0);
707
- }
708
- sessionManager = SessionManager.open(selectedPath, effectiveSessionDir);
709
- }
710
- const { options: sessionOptions, cliThinkingFromModel } = buildSessionOptions(parsed, scopedModels, sessionManager, modelRegistry, settingsManager);
711
- if (parsed.apiKey) {
712
- if (!sessionOptions.model) {
713
- console.error(chalk.red("--api-key requires a model to be specified via --model, --provider/--model, or --models"));
714
- process.exit(1);
715
- }
716
- authStorage.setRuntimeApiKey(sessionOptions.model.provider, parsed.apiKey);
717
- }
718
- const runtimeBootstrap = buildRuntimeBootstrap(parsed, cwd, agentDir, authStorage, sessionOptions);
719
- const runtime = await createAgentSessionRuntime(runtimeBootstrap, {
720
- cwd: sessionManager?.getCwd() ?? cwd,
721
- sessionManager,
722
- });
723
- if (process.cwd() !== runtime.cwd) {
724
- process.chdir(runtime.cwd);
725
- }
726
- const runtimeHost = new AgentSessionRuntimeHost(runtimeBootstrap, runtime);
727
- const { session, modelFallbackMessage } = runtime;
728
- time("createAgentSession");
729
- if (!isInteractive && !session.model) {
730
- console.error(chalk.red("No models available."));
731
- console.error(chalk.yellow("\nSet an API key environment variable:"));
732
- console.error(" ANTHROPIC_API_KEY, OPENAI_API_KEY, GEMINI_API_KEY, etc.");
733
- console.error(chalk.yellow(`\nOr create ${getModelsPath()}`));
734
- process.exit(1);
735
- }
736
- // Clamp thinking level to model capabilities for CLI-provided thinking levels.
737
- // This covers both --thinking <level> and --model <pattern>:<thinking>.
738
- const cliThinkingOverride = parsed.thinking !== undefined || cliThinkingFromModel;
739
- if (session.model && cliThinkingOverride) {
740
- let effectiveThinking = session.thinkingLevel;
741
- if (!session.model.reasoning) {
742
- effectiveThinking = "off";
743
- }
744
- else if (effectiveThinking === "xhigh" && !supportsXhigh(session.model)) {
745
- effectiveThinking = "high";
746
- }
747
- if (effectiveThinking !== session.thinkingLevel) {
748
- session.setThinkingLevel(effectiveThinking);
749
- }
750
- }
751
- if (mode === "rpc") {
752
- printTimings();
753
- await runRpcMode(runtimeHost);
754
- }
755
- else if (isInteractive) {
756
- if (scopedModels.length > 0 && (parsed.verbose || !settingsManager.getQuietStartup())) {
757
- const modelList = scopedModels
758
- .map((sm) => {
759
- const thinkingStr = sm.thinkingLevel ? `:${sm.thinkingLevel}` : "";
760
- return `${sm.model.id}${thinkingStr}`;
761
- })
762
- .join(", ");
763
- console.log(chalk.dim(`Model scope: ${modelList} ${chalk.gray("(Ctrl+P to cycle)")}`));
764
- }
765
- const interactiveMode = new InteractiveMode(runtimeHost, {
766
- migratedProviders,
767
- modelFallbackMessage,
768
- initialMessage,
769
- initialImages,
770
- initialMessages: parsed.messages,
771
- verbose: parsed.verbose,
772
- });
773
- if (startupBenchmark) {
774
- await interactiveMode.init();
775
- time("interactiveMode.init");
776
- printTimings();
777
- interactiveMode.stop();
778
- stopThemeWatcher();
779
- if (process.stdout.writableLength > 0) {
780
- await new Promise((resolve) => process.stdout.once("drain", resolve));
781
- }
782
- if (process.stderr.writableLength > 0) {
783
- await new Promise((resolve) => process.stderr.once("drain", resolve));
784
- }
785
- return;
786
- }
787
- printTimings();
788
- await interactiveMode.run();
789
- }
790
- else {
791
- printTimings();
792
- const exitCode = await runPrintMode(runtimeHost, {
793
- mode,
794
- messages: parsed.messages,
795
- initialMessage,
796
- initialImages,
797
- });
798
- stopThemeWatcher();
799
- restoreStdout();
800
- if (exitCode !== 0) {
801
- process.exitCode = exitCode;
802
- }
803
- return;
804
- }
805
- }
806
- //# sourceMappingURL=main.js.map