indusagi-coding-agent 0.1.38 → 0.1.39

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 (489) hide show
  1. package/CHANGELOG.md +13 -7
  2. package/README.md +2 -4
  3. package/dist/cli/args.d.ts +6 -128
  4. package/dist/cli/args.d.ts.map +1 -1
  5. package/dist/cli/args.js +277 -472
  6. package/dist/cli/args.js.map +1 -1
  7. package/dist/cli/config-selector.d.ts +9 -62
  8. package/dist/cli/config-selector.d.ts.map +1 -1
  9. package/dist/cli/config-selector.js +31 -146
  10. package/dist/cli/config-selector.js.map +1 -1
  11. package/dist/cli/file-processor.d.ts +1 -69
  12. package/dist/cli/file-processor.d.ts.map +1 -1
  13. package/dist/cli/file-processor.js +36 -267
  14. package/dist/cli/file-processor.js.map +1 -1
  15. package/dist/cli/list-models.d.ts +0 -60
  16. package/dist/cli/list-models.d.ts.map +1 -1
  17. package/dist/cli/list-models.js +53 -246
  18. package/dist/cli/list-models.js.map +1 -1
  19. package/dist/cli/session-picker.d.ts +1 -72
  20. package/dist/cli/session-picker.d.ts.map +1 -1
  21. package/dist/cli/session-picker.js +57 -231
  22. package/dist/cli/session-picker.js.map +1 -1
  23. package/dist/cli.js +25 -31
  24. package/dist/cli.js.map +1 -1
  25. package/dist/config.d.ts +0 -42
  26. package/dist/config.d.ts.map +1 -1
  27. package/dist/config.js +62 -97
  28. package/dist/config.js.map +1 -1
  29. package/dist/core/agent-session.d.ts +23 -0
  30. package/dist/core/agent-session.d.ts.map +1 -1
  31. package/dist/core/agent-session.js +78 -66
  32. package/dist/core/agent-session.js.map +1 -1
  33. package/dist/core/auth-storage.d.ts +4 -95
  34. package/dist/core/auth-storage.d.ts.map +1 -1
  35. package/dist/core/auth-storage.js +233 -288
  36. package/dist/core/auth-storage.js.map +1 -1
  37. package/dist/core/bash-executor.d.ts +0 -323
  38. package/dist/core/bash-executor.d.ts.map +1 -1
  39. package/dist/core/bash-executor.js +126 -359
  40. package/dist/core/bash-executor.js.map +1 -1
  41. package/dist/core/compaction/branch-summarization.d.ts +3 -3
  42. package/dist/core/compaction/branch-summarization.js +16 -16
  43. package/dist/core/compaction/branch-summarization.js.map +1 -1
  44. package/dist/core/compaction/compaction.d.ts +3 -3
  45. package/dist/core/compaction/compaction.js +40 -40
  46. package/dist/core/compaction/compaction.js.map +1 -1
  47. package/dist/core/compaction/index.d.ts +32 -4
  48. package/dist/core/compaction/index.d.ts.map +1 -1
  49. package/dist/core/compaction/index.js +30 -4
  50. package/dist/core/compaction/index.js.map +1 -1
  51. package/dist/core/compaction/utils.d.ts +1 -19
  52. package/dist/core/compaction/utils.d.ts.map +1 -1
  53. package/dist/core/compaction/utils.js +92 -113
  54. package/dist/core/compaction/utils.js.map +1 -1
  55. package/dist/core/discover-packages.d.ts +0 -4
  56. package/dist/core/discover-packages.d.ts.map +1 -1
  57. package/dist/core/discover-packages.js +41 -44
  58. package/dist/core/discover-packages.js.map +1 -1
  59. package/dist/core/event-bus.d.ts +1 -147
  60. package/dist/core/event-bus.d.ts.map +1 -1
  61. package/dist/core/event-bus.js +17 -106
  62. package/dist/core/event-bus.js.map +1 -1
  63. package/dist/core/exec.d.ts +0 -16
  64. package/dist/core/exec.d.ts.map +1 -1
  65. package/dist/core/exec.js +18 -27
  66. package/dist/core/exec.js.map +1 -1
  67. package/dist/core/export-html/ansi-to-html.ts +262 -0
  68. package/dist/core/export-html/index.ts +433 -0
  69. package/dist/core/export-html/template.html +48 -26
  70. package/dist/core/export-html/tool-renderer.d.ts +0 -21
  71. package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
  72. package/dist/core/export-html/tool-renderer.js +35 -51
  73. package/dist/core/export-html/tool-renderer.js.map +1 -1
  74. package/dist/core/export-html/tool-renderer.ts +80 -0
  75. package/dist/core/export-html/vendor/highlight.min.js +401 -370
  76. package/dist/core/export-html/vendor/marked.min.js +71 -3
  77. package/dist/core/extensions/index.d.ts +7 -4
  78. package/dist/core/extensions/index.d.ts.map +1 -1
  79. package/dist/core/extensions/index.js +17 -3
  80. package/dist/core/extensions/index.js.map +1 -1
  81. package/dist/core/extensions/loader.d.ts +0 -6
  82. package/dist/core/extensions/loader.d.ts.map +1 -1
  83. package/dist/core/extensions/loader.js +60 -56
  84. package/dist/core/extensions/loader.js.map +1 -1
  85. package/dist/core/extensions/runner.d.ts +3 -0
  86. package/dist/core/extensions/runner.d.ts.map +1 -1
  87. package/dist/core/extensions/runner.js +48 -80
  88. package/dist/core/extensions/runner.js.map +1 -1
  89. package/dist/core/extensions/types.d.ts +50 -23
  90. package/dist/core/extensions/types.d.ts.map +1 -1
  91. package/dist/core/footer-data-provider.d.ts +2 -15
  92. package/dist/core/footer-data-provider.d.ts.map +1 -1
  93. package/dist/core/footer-data-provider.js +21 -33
  94. package/dist/core/footer-data-provider.js.map +1 -1
  95. package/dist/core/hooks/loader.js +2 -2
  96. package/dist/core/hooks/loader.js.map +1 -1
  97. package/dist/core/index.d.ts +29 -10
  98. package/dist/core/index.d.ts.map +1 -1
  99. package/dist/core/index.js +29 -10
  100. package/dist/core/index.js.map +1 -1
  101. package/dist/core/keybindings.d.ts +2 -179
  102. package/dist/core/keybindings.d.ts.map +1 -1
  103. package/dist/core/keybindings.js +64 -238
  104. package/dist/core/keybindings.js.map +1 -1
  105. package/dist/core/model-registry.d.ts +26 -181
  106. package/dist/core/model-registry.d.ts.map +1 -1
  107. package/dist/core/model-registry.js +228 -407
  108. package/dist/core/model-registry.js.map +1 -1
  109. package/dist/core/model-resolver.d.ts +0 -139
  110. package/dist/core/model-resolver.d.ts.map +1 -1
  111. package/dist/core/model-resolver.js +34 -215
  112. package/dist/core/model-resolver.js.map +1 -1
  113. package/dist/core/package-manager.d.ts +25 -57
  114. package/dist/core/package-manager.d.ts.map +1 -1
  115. package/dist/core/package-manager.js +326 -964
  116. package/dist/core/package-manager.js.map +1 -1
  117. package/dist/core/prompt-templates.d.ts +2 -34
  118. package/dist/core/prompt-templates.d.ts.map +1 -1
  119. package/dist/core/prompt-templates.js +122 -170
  120. package/dist/core/prompt-templates.js.map +1 -1
  121. package/dist/core/resource-loader.d.ts +19 -12
  122. package/dist/core/resource-loader.d.ts.map +1 -1
  123. package/dist/core/resource-loader.js +353 -467
  124. package/dist/core/resource-loader.js.map +1 -1
  125. package/dist/core/sdk.d.ts +2 -61
  126. package/dist/core/sdk.d.ts.map +1 -1
  127. package/dist/core/sdk.js +184 -252
  128. package/dist/core/sdk.js.map +1 -1
  129. package/dist/core/session-manager.d.ts +447 -1
  130. package/dist/core/session-manager.d.ts.map +1 -1
  131. package/dist/core/session-manager.js +1176 -1
  132. package/dist/core/session-manager.js.map +1 -1
  133. package/dist/core/settings-manager.d.ts +9 -12
  134. package/dist/core/settings-manager.d.ts.map +1 -1
  135. package/dist/core/settings-manager.js +170 -398
  136. package/dist/core/settings-manager.js.map +1 -1
  137. package/dist/core/skills.d.ts +2 -27
  138. package/dist/core/skills.d.ts.map +1 -1
  139. package/dist/core/skills.js +149 -212
  140. package/dist/core/skills.js.map +1 -1
  141. package/dist/core/subagents.d.ts +2 -2
  142. package/dist/core/subagents.d.ts.map +1 -1
  143. package/dist/core/subagents.js +21 -14
  144. package/dist/core/subagents.js.map +1 -1
  145. package/dist/core/system-prompt.d.ts +0 -11
  146. package/dist/core/system-prompt.d.ts.map +1 -1
  147. package/dist/core/system-prompt.js +168 -139
  148. package/dist/core/system-prompt.js.map +1 -1
  149. package/dist/core/timings.d.ts +1 -4
  150. package/dist/core/timings.d.ts.map +1 -1
  151. package/dist/core/timings.js +34 -18
  152. package/dist/core/timings.js.map +1 -1
  153. package/dist/core/todo-store.d.ts +20 -0
  154. package/dist/core/todo-store.d.ts.map +1 -0
  155. package/dist/core/todo-store.js +60 -0
  156. package/dist/core/todo-store.js.map +1 -0
  157. package/dist/core/tools/bash.d.ts +2 -0
  158. package/dist/core/tools/bash.d.ts.map +1 -0
  159. package/dist/core/tools/bash.js +2 -0
  160. package/dist/core/tools/bash.js.map +1 -0
  161. package/dist/core/tools/bg-process.d.ts +1 -6
  162. package/dist/core/tools/bg-process.d.ts.map +1 -1
  163. package/dist/core/tools/bg-process.js +4 -18
  164. package/dist/core/tools/bg-process.js.map +1 -1
  165. package/dist/core/tools/edit-diff.d.ts +9 -0
  166. package/dist/core/tools/edit-diff.d.ts.map +1 -0
  167. package/dist/core/tools/edit-diff.js +2 -0
  168. package/dist/core/tools/edit-diff.js.map +1 -0
  169. package/dist/core/tools/edit.d.ts +2 -0
  170. package/dist/core/tools/edit.d.ts.map +1 -0
  171. package/dist/core/tools/edit.js +2 -0
  172. package/dist/core/tools/edit.js.map +1 -0
  173. package/dist/core/tools/find.d.ts +2 -0
  174. package/dist/core/tools/find.d.ts.map +1 -0
  175. package/dist/core/tools/find.js +2 -0
  176. package/dist/core/tools/find.js.map +1 -0
  177. package/dist/core/tools/grep.d.ts +2 -0
  178. package/dist/core/tools/grep.d.ts.map +1 -0
  179. package/dist/core/tools/grep.js +2 -0
  180. package/dist/core/tools/grep.js.map +1 -0
  181. package/dist/core/tools/index.d.ts +7 -1
  182. package/dist/core/tools/index.d.ts.map +1 -1
  183. package/dist/core/tools/ls.d.ts +2 -0
  184. package/dist/core/tools/ls.d.ts.map +1 -0
  185. package/dist/core/tools/ls.js +2 -0
  186. package/dist/core/tools/ls.js.map +1 -0
  187. package/dist/core/tools/path-utils.d.ts +2 -0
  188. package/dist/core/tools/path-utils.d.ts.map +1 -0
  189. package/dist/core/tools/path-utils.js +2 -0
  190. package/dist/core/tools/path-utils.js.map +1 -0
  191. package/dist/core/tools/read.d.ts +2 -0
  192. package/dist/core/tools/read.d.ts.map +1 -0
  193. package/dist/core/tools/read.js +2 -0
  194. package/dist/core/tools/read.js.map +1 -0
  195. package/dist/core/tools/registry.d.ts +0 -15
  196. package/dist/core/tools/registry.d.ts.map +1 -1
  197. package/dist/core/tools/registry.js +13 -37
  198. package/dist/core/tools/registry.js.map +1 -1
  199. package/dist/core/tools/task.d.ts +17 -23
  200. package/dist/core/tools/task.d.ts.map +1 -1
  201. package/dist/core/tools/task.js +43 -82
  202. package/dist/core/tools/task.js.map +1 -1
  203. package/dist/core/tools/todo.d.ts +17 -20
  204. package/dist/core/tools/todo.d.ts.map +1 -1
  205. package/dist/core/tools/todo.js +79 -58
  206. package/dist/core/tools/todo.js.map +1 -1
  207. package/dist/core/tools/truncate.d.ts +2 -0
  208. package/dist/core/tools/truncate.d.ts.map +1 -0
  209. package/dist/core/tools/truncate.js +2 -0
  210. package/dist/core/tools/truncate.js.map +1 -0
  211. package/dist/core/tools/webfetch.d.ts +2 -0
  212. package/dist/core/tools/webfetch.d.ts.map +1 -0
  213. package/dist/core/tools/webfetch.js +2 -0
  214. package/dist/core/tools/webfetch.js.map +1 -0
  215. package/dist/core/tools/websearch.d.ts +2 -0
  216. package/dist/core/tools/websearch.d.ts.map +1 -0
  217. package/dist/core/tools/websearch.js +2 -0
  218. package/dist/core/tools/websearch.js.map +1 -0
  219. package/dist/core/tools/write.d.ts +2 -0
  220. package/dist/core/tools/write.d.ts.map +1 -0
  221. package/dist/core/tools/write.js +2 -0
  222. package/dist/core/tools/write.js.map +1 -0
  223. package/dist/index.d.ts +35 -29
  224. package/dist/index.d.ts.map +1 -1
  225. package/dist/index.js +33 -41
  226. package/dist/index.js.map +1 -1
  227. package/dist/main.d.ts.map +1 -1
  228. package/dist/main.js +237 -225
  229. package/dist/main.js.map +1 -1
  230. package/dist/migrations.d.ts +0 -25
  231. package/dist/migrations.d.ts.map +1 -1
  232. package/dist/migrations.js +129 -180
  233. package/dist/migrations.js.map +1 -1
  234. package/dist/modes/index.d.ts +13 -6
  235. package/dist/modes/index.d.ts.map +1 -1
  236. package/dist/modes/index.js +11 -5
  237. package/dist/modes/index.js.map +1 -1
  238. package/dist/modes/interactive/components/armin.d.ts +8 -23
  239. package/dist/modes/interactive/components/armin.d.ts.map +1 -1
  240. package/dist/modes/interactive/components/armin.js +217 -266
  241. package/dist/modes/interactive/components/armin.js.map +1 -1
  242. package/dist/modes/interactive/components/assistant-message.d.ts +2 -168
  243. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  244. package/dist/modes/interactive/components/assistant-message.js +61 -216
  245. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  246. package/dist/modes/interactive/components/bash-execution.d.ts +6 -313
  247. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
  248. package/dist/modes/interactive/components/bash-execution.js +86 -403
  249. package/dist/modes/interactive/components/bash-execution.js.map +1 -1
  250. package/dist/modes/interactive/components/bordered-loader.d.ts +1 -3
  251. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
  252. package/dist/modes/interactive/components/bordered-loader.js +59 -29
  253. package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
  254. package/dist/modes/interactive/components/branch-summary-message.d.ts +3 -3
  255. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
  256. package/dist/modes/interactive/components/branch-summary-message.js +30 -17
  257. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
  258. package/dist/modes/interactive/components/compaction-summary-message.d.ts +3 -3
  259. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
  260. package/dist/modes/interactive/components/compaction-summary-message.js +35 -18
  261. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
  262. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  263. package/dist/modes/interactive/components/config-selector.js +60 -68
  264. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  265. package/dist/modes/interactive/components/countdown-timer.d.ts +2 -6
  266. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
  267. package/dist/modes/interactive/components/countdown-timer.js +32 -18
  268. package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
  269. package/dist/modes/interactive/components/custom-editor.d.ts +1 -5
  270. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  271. package/dist/modes/interactive/components/custom-editor.js +45 -37
  272. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  273. package/dist/modes/interactive/components/custom-message.d.ts +5 -6
  274. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  275. package/dist/modes/interactive/components/custom-message.js +43 -53
  276. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  277. package/dist/modes/interactive/components/diff.d.ts +0 -3
  278. package/dist/modes/interactive/components/diff.d.ts.map +1 -1
  279. package/dist/modes/interactive/components/diff.js +101 -108
  280. package/dist/modes/interactive/components/diff.js.map +1 -1
  281. package/dist/modes/interactive/components/dynamic-border.d.ts +7 -2
  282. package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
  283. package/dist/modes/interactive/components/dynamic-border.js +24 -4
  284. package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
  285. package/dist/modes/interactive/components/extension-editor.d.ts +5 -9
  286. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  287. package/dist/modes/interactive/components/extension-editor.js +43 -46
  288. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  289. package/dist/modes/interactive/components/extension-input.d.ts +4 -9
  290. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
  291. package/dist/modes/interactive/components/extension-input.js +45 -28
  292. package/dist/modes/interactive/components/extension-input.js.map +1 -1
  293. package/dist/modes/interactive/components/extension-selector.d.ts +7 -12
  294. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
  295. package/dist/modes/interactive/components/extension-selector.js +54 -32
  296. package/dist/modes/interactive/components/extension-selector.js.map +1 -1
  297. package/dist/modes/interactive/components/footer.d.ts +2 -11
  298. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  299. package/dist/modes/interactive/components/footer.js +135 -183
  300. package/dist/modes/interactive/components/footer.js.map +1 -1
  301. package/dist/modes/interactive/components/index.d.ts +79 -30
  302. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  303. package/dist/modes/interactive/components/index.js +73 -31
  304. package/dist/modes/interactive/components/index.js.map +1 -1
  305. package/dist/modes/interactive/components/keybinding-hints.d.ts +0 -18
  306. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
  307. package/dist/modes/interactive/components/keybinding-hints.js +24 -31
  308. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
  309. package/dist/modes/interactive/components/login-dialog.d.ts +11 -24
  310. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  311. package/dist/modes/interactive/components/login-dialog.js +89 -86
  312. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  313. package/dist/modes/interactive/components/model-selector.d.ts +15 -19
  314. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  315. package/dist/modes/interactive/components/model-selector.js +104 -157
  316. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  317. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  318. package/dist/modes/interactive/components/oauth-selector.js +5 -5
  319. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  320. package/dist/modes/interactive/components/scoped-models-selector.d.ts +12 -22
  321. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  322. package/dist/modes/interactive/components/scoped-models-selector.js +111 -132
  323. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  324. package/dist/modes/interactive/components/session-selector-search.d.ts +3 -3
  325. package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -1
  326. package/dist/modes/interactive/components/session-selector-search.js +92 -103
  327. package/dist/modes/interactive/components/session-selector-search.js.map +1 -1
  328. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  329. package/dist/modes/interactive/components/session-selector.js +28 -39
  330. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  331. package/dist/modes/interactive/components/settings-selector.d.ts +1 -1
  332. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  333. package/dist/modes/interactive/components/settings-selector.js +111 -203
  334. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  335. package/dist/modes/interactive/components/show-images-selector.d.ts +1 -1
  336. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -1
  337. package/dist/modes/interactive/components/show-images-selector.js +17 -19
  338. package/dist/modes/interactive/components/show-images-selector.js.map +1 -1
  339. package/dist/modes/interactive/components/skill-invocation-message.d.ts +3 -3
  340. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
  341. package/dist/modes/interactive/components/skill-invocation-message.js +29 -19
  342. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  343. package/dist/modes/interactive/components/theme-selector.d.ts +2 -2
  344. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
  345. package/dist/modes/interactive/components/theme-selector.js +20 -25
  346. package/dist/modes/interactive/components/theme-selector.js.map +1 -1
  347. package/dist/modes/interactive/components/thinking-selector.d.ts +1 -1
  348. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  349. package/dist/modes/interactive/components/thinking-selector.js +19 -20
  350. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  351. package/dist/modes/interactive/components/tool-execution.d.ts +12 -10
  352. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  353. package/dist/modes/interactive/components/tool-execution.js +14 -8
  354. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  355. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
  356. package/dist/modes/interactive/components/tree-selector.js +53 -60
  357. package/dist/modes/interactive/components/tree-selector.js.map +1 -1
  358. package/dist/modes/interactive/components/user-message-selector.d.ts +3 -9
  359. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
  360. package/dist/modes/interactive/components/user-message-selector.js +57 -68
  361. package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
  362. package/dist/modes/interactive/components/visual-truncate.d.ts +0 -12
  363. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -1
  364. package/dist/modes/interactive/components/visual-truncate.js +14 -22
  365. package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
  366. package/dist/modes/interactive/interactive-mode.d.ts +6 -0
  367. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  368. package/dist/modes/interactive/interactive-mode.js +118 -113
  369. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  370. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  371. package/dist/modes/interactive/theme/theme.js +189 -39
  372. package/dist/modes/interactive/theme/theme.js.map +1 -1
  373. package/dist/modes/rpc/rpc-client.d.ts +8 -1
  374. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  375. package/dist/modes/rpc/rpc-client.js +88 -59
  376. package/dist/modes/rpc/rpc-client.js.map +1 -1
  377. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  378. package/dist/modes/rpc/rpc-mode.js +24 -46
  379. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  380. package/dist/modes/rpc/rpc-types.d.ts +75 -409
  381. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  382. package/dist/modes/rpc/rpc-types.js +21 -360
  383. package/dist/modes/rpc/rpc-types.js.map +1 -1
  384. package/dist/observability/core/config.d.ts +28 -0
  385. package/dist/observability/core/config.d.ts.map +1 -0
  386. package/dist/observability/core/config.js +150 -0
  387. package/dist/observability/core/config.js.map +1 -0
  388. package/dist/observability/core/event-bus.d.ts +15 -0
  389. package/dist/observability/core/event-bus.d.ts.map +1 -0
  390. package/dist/observability/core/event-bus.js +37 -0
  391. package/dist/observability/core/event-bus.js.map +1 -0
  392. package/dist/observability/core/index.d.ts +12 -0
  393. package/dist/observability/core/index.d.ts.map +1 -0
  394. package/dist/observability/core/index.js +14 -0
  395. package/dist/observability/core/index.js.map +1 -0
  396. package/dist/observability/core/observability.d.ts +63 -0
  397. package/dist/observability/core/observability.d.ts.map +1 -0
  398. package/dist/observability/core/observability.js +127 -0
  399. package/dist/observability/core/observability.js.map +1 -0
  400. package/dist/observability/core/span.d.ts +37 -0
  401. package/dist/observability/core/span.d.ts.map +1 -0
  402. package/dist/observability/core/span.js +90 -0
  403. package/dist/observability/core/span.js.map +1 -0
  404. package/dist/observability/core/tracer.d.ts +22 -0
  405. package/dist/observability/core/tracer.d.ts.map +1 -0
  406. package/dist/observability/core/tracer.js +79 -0
  407. package/dist/observability/core/tracer.js.map +1 -0
  408. package/dist/observability/core/types.d.ts +155 -0
  409. package/dist/observability/core/types.d.ts.map +1 -0
  410. package/dist/observability/core/types.js +38 -0
  411. package/dist/observability/core/types.js.map +1 -0
  412. package/dist/observability/exporters/base-exporter.d.ts +16 -0
  413. package/dist/observability/exporters/base-exporter.d.ts.map +1 -0
  414. package/dist/observability/exporters/base-exporter.js +26 -0
  415. package/dist/observability/exporters/base-exporter.js.map +1 -0
  416. package/dist/observability/exporters/console-exporter.d.ts +22 -0
  417. package/dist/observability/exporters/console-exporter.d.ts.map +1 -0
  418. package/dist/observability/exporters/console-exporter.js +80 -0
  419. package/dist/observability/exporters/console-exporter.js.map +1 -0
  420. package/dist/observability/exporters/file-exporter.d.ts +31 -0
  421. package/dist/observability/exporters/file-exporter.d.ts.map +1 -0
  422. package/dist/observability/exporters/file-exporter.js +120 -0
  423. package/dist/observability/exporters/file-exporter.js.map +1 -0
  424. package/dist/observability/exporters/index.d.ts +12 -0
  425. package/dist/observability/exporters/index.d.ts.map +1 -0
  426. package/dist/observability/exporters/index.js +11 -0
  427. package/dist/observability/exporters/index.js.map +1 -0
  428. package/dist/observability/exporters/langfuse-exporter.d.ts +27 -0
  429. package/dist/observability/exporters/langfuse-exporter.d.ts.map +1 -0
  430. package/dist/observability/exporters/langfuse-exporter.js +146 -0
  431. package/dist/observability/exporters/langfuse-exporter.js.map +1 -0
  432. package/dist/observability/exporters/sentry-exporter.d.ts +22 -0
  433. package/dist/observability/exporters/sentry-exporter.d.ts.map +1 -0
  434. package/dist/observability/exporters/sentry-exporter.js +121 -0
  435. package/dist/observability/exporters/sentry-exporter.js.map +1 -0
  436. package/dist/observability/index.d.ts +3 -0
  437. package/dist/observability/index.d.ts.map +1 -0
  438. package/dist/observability/index.js +3 -0
  439. package/dist/observability/index.js.map +1 -0
  440. package/dist/utils/changelog.d.ts +1 -2
  441. package/dist/utils/changelog.d.ts.map +1 -1
  442. package/dist/utils/changelog.js +53 -61
  443. package/dist/utils/changelog.js.map +1 -1
  444. package/dist/utils/clipboard-image.d.ts.map +1 -1
  445. package/dist/utils/clipboard-image.js +77 -83
  446. package/dist/utils/clipboard-image.js.map +1 -1
  447. package/dist/utils/clipboard.d.ts.map +1 -1
  448. package/dist/utils/clipboard.js +62 -49
  449. package/dist/utils/clipboard.js.map +1 -1
  450. package/dist/utils/image-convert.d.ts +6 -6
  451. package/dist/utils/image-convert.d.ts.map +1 -1
  452. package/dist/utils/image-convert.js +29 -23
  453. package/dist/utils/image-convert.js.map +1 -1
  454. package/dist/utils/image-resize.d.ts +0 -17
  455. package/dist/utils/image-resize.d.ts.map +1 -1
  456. package/dist/utils/image-resize.js +100 -138
  457. package/dist/utils/image-resize.js.map +1 -1
  458. package/dist/utils/mime.d.ts +1 -0
  459. package/dist/utils/mime.d.ts.map +1 -1
  460. package/dist/utils/mime.js +35 -15
  461. package/dist/utils/mime.js.map +1 -1
  462. package/dist/utils/photon.d.ts +4 -15
  463. package/dist/utils/photon.d.ts.map +1 -1
  464. package/dist/utils/photon.js +71 -60
  465. package/dist/utils/photon.js.map +1 -1
  466. package/dist/utils/shell.d.ts +4 -21
  467. package/dist/utils/shell.d.ts.map +1 -1
  468. package/dist/utils/shell.js +101 -124
  469. package/dist/utils/shell.js.map +1 -1
  470. package/dist/utils/sleep.d.ts +1 -1
  471. package/dist/utils/sleep.d.ts.map +1 -1
  472. package/dist/utils/sleep.js +32 -8
  473. package/dist/utils/sleep.js.map +1 -1
  474. package/dist/utils/tools-manager.d.ts +4 -2
  475. package/dist/utils/tools-manager.d.ts.map +1 -1
  476. package/dist/utils/tools-manager.js +96 -122
  477. package/dist/utils/tools-manager.js.map +1 -1
  478. package/docs/PI_MONO_MIT_REMOVAL_GUIDE.md +2132 -0
  479. package/docs/SAME_TO_SAME_PARITY_REPORT.md +312 -0
  480. package/examples/README.md +12 -0
  481. package/package.json +60 -88
  482. package/LICENSE.md +0 -22
  483. package/dist/modes/interactive/theme/dark.json +0 -85
  484. package/dist/modes/interactive/theme/light.json +0 -84
  485. package/dist/modes/interactive/theme/theme-schema.json +0 -335
  486. package/docs/FEATURES.md +0 -306
  487. package/docs/MCP.md +0 -341
  488. package/docs/MEMORY.md +0 -443
  489. package/examples/mcp-servers.example.json +0 -50
package/dist/cli/args.js CHANGED
@@ -1,32 +1,6 @@
1
- /**
2
- * CLI Argument Parser - Command-line argument handling and validation
3
- *
4
- * Responsibilities:
5
- * - Parse command-line arguments into structured format
6
- * - Validate argument combinations
7
- * - Provide helpful error messages for invalid args
8
- * - Generate help documentation
9
- * - Support extension flags registration
10
- *
11
- * Based on argument parsing patterns from indusagi CLI
12
- * Original: https://github.com/varunisrani/indusagi-ts/vendor/indusagi-agent
13
- *
14
- * Adapted to:
15
- * - Improve error messages
16
- * - Add comprehensive documentation
17
- * - Enhance validation
18
- * - Improve UX with better prompts
19
- */
20
1
  import chalk from "chalk";
21
2
  import { APP_NAME, CONFIG_DIR_NAME, ENV_AGENT_DIR } from "../config.js";
22
- // ============================================================================
23
- // CONSTANTS
24
- // ============================================================================
25
- /** Valid thinking levels for the --thinking flag */
26
3
  const VALID_THINKING_LEVELS = ["off", "minimal", "low", "medium", "high", "xhigh"];
27
- /** Default tools enabled when no --tools or --no-tools is specified */
28
- const DEFAULT_TOOLS = ["read", "bash", "edit", "write", "task", "todoread", "todowrite"];
29
- /** All available tool names for validation */
30
4
  const AVAILABLE_TOOLS = [
31
5
  "read",
32
6
  "bash",
@@ -39,472 +13,303 @@ const AVAILABLE_TOOLS = [
39
13
  "todoread",
40
14
  "todowrite",
41
15
  ];
42
- // ============================================================================
43
- // TYPE GUARDS
44
- // ============================================================================
45
- /**
46
- * Type guard to check if a string is a valid ThinkingLevel
47
- *
48
- * @param level - The string to check
49
- * @returns True if the string is a valid ThinkingLevel
50
- */
16
+ const FLAG_ALIASES = {
17
+ "-h": "help",
18
+ "-v": "version",
19
+ "-c": "continue",
20
+ "-r": "resume",
21
+ "-p": "print",
22
+ };
51
23
  export function isValidThinkingLevel(level) {
52
24
  return VALID_THINKING_LEVELS.includes(level);
53
25
  }
54
- /**
55
- * Type guard to check if a string is a valid Mode
56
- *
57
- * @param mode - The string to check
58
- * @returns True if the string is a valid Mode
59
- */
60
26
  export function isValidMode(mode) {
61
27
  return mode === "text" || mode === "json" || mode === "rpc";
62
28
  }
63
- /**
64
- * Type guard to check if a tool name is valid
65
- *
66
- * @param toolName - The tool name to check
67
- * @returns True if the tool name is in the available tools list
68
- */
69
29
  export function isValidToolName(toolName) {
70
30
  return AVAILABLE_TOOLS.includes(toolName);
71
31
  }
72
- // ============================================================================
73
- // VALIDATION FUNCTIONS
74
- // ============================================================================
75
- /**
76
- * Validate tool names and filter out invalid ones
77
- *
78
- * @param toolNames - Array of tool names to validate
79
- * @returns Array of valid tool names
80
- */
81
- function validateToolNames(toolNames) {
82
- const validTools = [];
83
- for (const name of toolNames) {
32
+ function createArgsResult() {
33
+ return {
34
+ messages: [],
35
+ fileArgs: [],
36
+ unknownFlags: new Map(),
37
+ };
38
+ }
39
+ function peekNextValue(state) {
40
+ return state.args[state.index + 1];
41
+ }
42
+ function consumeFlagValue(state, flag) {
43
+ const next = peekNextValue(state);
44
+ if (next === undefined) {
45
+ console.error(chalk.yellow(`Warning: ${flag} requires a value.`));
46
+ return undefined;
47
+ }
48
+ state.index += 1;
49
+ return next;
50
+ }
51
+ function pushListValue(target, value) {
52
+ return [...(target ?? []), value];
53
+ }
54
+ function parseCommaSeparatedList(value) {
55
+ return value
56
+ .split(",")
57
+ .map((part) => part.trim())
58
+ .filter(Boolean);
59
+ }
60
+ function parseToolList(value) {
61
+ const valid = [];
62
+ for (const name of parseCommaSeparatedList(value)) {
84
63
  if (isValidToolName(name)) {
85
- validTools.push(name);
86
- }
87
- else {
88
- console.error(chalk.yellow(`Warning: Unknown tool "${name}". Valid tools: ${AVAILABLE_TOOLS.join(", ")}`));
64
+ valid.push(name);
65
+ continue;
89
66
  }
67
+ console.error(chalk.yellow(`Warning: Unknown tool "${name}". Valid tools: ${AVAILABLE_TOOLS.join(", ")}`));
68
+ }
69
+ return valid;
70
+ }
71
+ function parseModeFlag(value) {
72
+ if (!value) {
73
+ return undefined;
90
74
  }
91
- return validTools;
75
+ if (isValidMode(value)) {
76
+ return value;
77
+ }
78
+ console.error(chalk.yellow(`Warning: Invalid mode "${value}". Valid values: text, json, rpc`));
79
+ return undefined;
92
80
  }
93
- /**
94
- * Validate thinking level and provide warning if invalid
95
- *
96
- * @param level - The thinking level to validate
97
- * @returns The validated thinking level or undefined if invalid
98
- */
99
- function validateThinkingLevel(level) {
100
- if (isValidThinkingLevel(level)) {
101
- return level;
81
+ function parseThinkingFlag(value) {
82
+ if (!value) {
83
+ return undefined;
102
84
  }
103
- console.error(chalk.yellow(`Warning: Invalid thinking level "${level}". Valid values: ${VALID_THINKING_LEVELS.join(", ")}`));
85
+ if (isValidThinkingLevel(value)) {
86
+ return value;
87
+ }
88
+ console.error(chalk.yellow(`Warning: Invalid thinking level "${value}". Valid values: ${VALID_THINKING_LEVELS.join(", ")}`));
104
89
  return undefined;
105
90
  }
106
- // ============================================================================
107
- // ARGUMENT PARSING
108
- // ============================================================================
109
- /**
110
- * Parse command-line arguments into structured Args object
111
- *
112
- * This function processes raw command-line arguments and converts them into
113
- * a structured Args object. It handles:
114
- * - Short and long flag formats (--flag, -f)
115
- * - Flag values that follow (--flag value)
116
- * - Boolean flags (--no-flag)
117
- * - File arguments prefixed with @
118
- * - Extension-registered flags (if extensionFlags provided)
119
- * - Positional arguments (messages)
120
- *
121
- * @param args - Array of command-line argument strings (typically process.argv.slice(2))
122
- * @param extensionFlags - Optional map of extension-registered flags with their types
123
- * @returns Parsed Args object
124
- *
125
- * @example
126
- * ```typescript
127
- * const args = parseArgs(["--model", "gpt-4", "--verbose", "hello", "@file.txt"]);
128
- * // Returns: { model: "gpt-4", verbose: true, messages: ["hello"], fileArgs: ["file.txt"] }
129
- * ```
130
- */
91
+ function parseListModelsValue(state) {
92
+ const next = peekNextValue(state);
93
+ if (next && !next.startsWith("-") && !next.startsWith("@")) {
94
+ state.index += 1;
95
+ return next;
96
+ }
97
+ return true;
98
+ }
99
+ function parseUnknownExtensionFlag(state, arg) {
100
+ if (!arg.startsWith("--") || !state.extensionFlags) {
101
+ return false;
102
+ }
103
+ const flagName = arg.slice(2);
104
+ const definition = state.extensionFlags.get(flagName);
105
+ if (!definition) {
106
+ return false;
107
+ }
108
+ if (definition.type === "boolean") {
109
+ state.result.unknownFlags.set(flagName, true);
110
+ return true;
111
+ }
112
+ const value = consumeFlagValue(state, `--${flagName}`);
113
+ if (value !== undefined) {
114
+ state.result.unknownFlags.set(flagName, value);
115
+ }
116
+ return true;
117
+ }
118
+ function handleAlias(state, arg) {
119
+ const alias = FLAG_ALIASES[arg];
120
+ if (!alias) {
121
+ return false;
122
+ }
123
+ state.result[alias] = true;
124
+ return true;
125
+ }
126
+ function handleScalarFlags(state, arg) {
127
+ switch (arg) {
128
+ case "--help":
129
+ state.result.help = true;
130
+ return true;
131
+ case "--version":
132
+ state.result.version = true;
133
+ return true;
134
+ case "--continue":
135
+ state.result.continue = true;
136
+ return true;
137
+ case "--resume":
138
+ state.result.resume = true;
139
+ return true;
140
+ case "--no-session":
141
+ state.result.noSession = true;
142
+ return true;
143
+ case "--no-tools":
144
+ state.result.noTools = true;
145
+ return true;
146
+ case "--print":
147
+ state.result.print = true;
148
+ return true;
149
+ case "--verbose":
150
+ state.result.verbose = true;
151
+ return true;
152
+ case "--no-extensions":
153
+ state.result.noExtensions = true;
154
+ return true;
155
+ case "--no-hooks":
156
+ state.result.noHooks = true;
157
+ return true;
158
+ case "--no-skills":
159
+ state.result.noSkills = true;
160
+ return true;
161
+ case "--no-prompt-templates":
162
+ state.result.noPromptTemplates = true;
163
+ return true;
164
+ case "--no-themes":
165
+ state.result.noThemes = true;
166
+ return true;
167
+ case "--mcp":
168
+ state.result.mcp = true;
169
+ return true;
170
+ case "--no-mcp":
171
+ state.result.noMcp = true;
172
+ return true;
173
+ case "--memory":
174
+ state.result.memory = true;
175
+ return true;
176
+ case "--no-memory":
177
+ state.result.noMemory = true;
178
+ return true;
179
+ case "--list-models":
180
+ state.result.listModels = parseListModelsValue(state);
181
+ return true;
182
+ default:
183
+ return false;
184
+ }
185
+ }
186
+ function handleValueFlags(state, arg) {
187
+ switch (arg) {
188
+ case "--mode":
189
+ state.result.mode = parseModeFlag(consumeFlagValue(state, arg));
190
+ return true;
191
+ case "--session":
192
+ state.result.session = consumeFlagValue(state, arg);
193
+ return true;
194
+ case "--session-dir":
195
+ state.result.sessionDir = consumeFlagValue(state, arg);
196
+ return true;
197
+ case "--provider":
198
+ state.result.provider = consumeFlagValue(state, arg);
199
+ return true;
200
+ case "--account":
201
+ state.result.account = consumeFlagValue(state, arg);
202
+ return true;
203
+ case "--api-key":
204
+ state.result.apiKey = consumeFlagValue(state, arg);
205
+ return true;
206
+ case "--model":
207
+ state.result.model = consumeFlagValue(state, arg);
208
+ return true;
209
+ case "--models": {
210
+ const value = consumeFlagValue(state, arg);
211
+ state.result.models = value ? parseCommaSeparatedList(value) : undefined;
212
+ return true;
213
+ }
214
+ case "--system-prompt":
215
+ state.result.systemPrompt = consumeFlagValue(state, arg);
216
+ return true;
217
+ case "--append-system-prompt":
218
+ state.result.appendSystemPrompt = consumeFlagValue(state, arg);
219
+ return true;
220
+ case "--tools": {
221
+ const value = consumeFlagValue(state, arg);
222
+ state.result.tools = value ? parseToolList(value) : undefined;
223
+ return true;
224
+ }
225
+ case "--thinking":
226
+ state.result.thinking = parseThinkingFlag(consumeFlagValue(state, arg));
227
+ return true;
228
+ case "--export":
229
+ state.result.export = consumeFlagValue(state, arg);
230
+ return true;
231
+ case "--mcp-config":
232
+ state.result.mcpConfig = consumeFlagValue(state, arg);
233
+ return true;
234
+ case "--memory-config":
235
+ state.result.memoryConfig = consumeFlagValue(state, arg);
236
+ return true;
237
+ default:
238
+ return false;
239
+ }
240
+ }
241
+ function handleRepeatedPathFlags(state, arg) {
242
+ const value = arg === "--extension" || arg === "-e" || arg === "--hook" || arg === "--skill" || arg === "--prompt-template" || arg === "--theme"
243
+ ? consumeFlagValue(state, arg)
244
+ : undefined;
245
+ if (!value) {
246
+ return false;
247
+ }
248
+ switch (arg) {
249
+ case "--extension":
250
+ case "-e":
251
+ state.result.extensions = pushListValue(state.result.extensions, value);
252
+ return true;
253
+ case "--hook":
254
+ state.result.hooks = pushListValue(state.result.hooks, value);
255
+ return true;
256
+ case "--skill":
257
+ state.result.skills = pushListValue(state.result.skills, value);
258
+ return true;
259
+ case "--prompt-template":
260
+ state.result.promptTemplates = pushListValue(state.result.promptTemplates, value);
261
+ return true;
262
+ case "--theme":
263
+ state.result.themes = pushListValue(state.result.themes, value);
264
+ return true;
265
+ default:
266
+ return false;
267
+ }
268
+ }
269
+ function handlePositionalArgument(result, arg) {
270
+ if (arg.startsWith("@")) {
271
+ result.fileArgs.push(arg.slice(1));
272
+ return;
273
+ }
274
+ if (!arg.startsWith("-")) {
275
+ result.messages.push(arg);
276
+ }
277
+ }
131
278
  export function parseArgs(args, extensionFlags) {
132
- const result = {
133
- messages: [],
134
- fileArgs: [],
135
- unknownFlags: new Map(),
279
+ const state = {
280
+ index: 0,
281
+ args,
282
+ result: createArgsResult(),
283
+ extensionFlags,
136
284
  };
137
- for (let i = 0; i < args.length; i++) {
138
- const arg = args[i];
139
- // ============================================================================
140
- // HELP AND VERSION FLAGS
141
- // ============================================================================
142
- if (arg === "--help" || arg === "-h") {
143
- result.help = true;
144
- }
145
- else if (arg === "--version" || arg === "-v") {
146
- result.version = true;
147
- }
148
- // ============================================================================
149
- // MODE FLAGS
150
- // ============================================================================
151
- else if (arg === "--mode" && i + 1 < args.length) {
152
- const mode = args[++i];
153
- if (isValidMode(mode)) {
154
- result.mode = mode;
155
- }
156
- }
157
- // ============================================================================
158
- // SESSION FLAGS
159
- // ============================================================================
160
- else if (arg === "--continue" || arg === "-c") {
161
- result.continue = true;
162
- }
163
- else if (arg === "--resume" || arg === "-r") {
164
- result.resume = true;
165
- }
166
- else if (arg === "--no-session") {
167
- result.noSession = true;
168
- }
169
- else if (arg === "--session" && i + 1 < args.length) {
170
- result.session = args[++i];
171
- }
172
- else if (arg === "--session-dir" && i + 1 < args.length) {
173
- result.sessionDir = args[++i];
174
- }
175
- // ============================================================================
176
- // PROVIDER AND AUTH FLAGS
177
- // ============================================================================
178
- else if (arg === "--provider" && i + 1 < args.length) {
179
- result.provider = args[++i];
180
- }
181
- else if (arg === "--account" && i + 1 < args.length) {
182
- result.account = args[++i];
183
- }
184
- else if (arg === "--api-key" && i + 1 < args.length) {
185
- result.apiKey = args[++i];
186
- }
187
- // ============================================================================
188
- // MODEL FLAGS
189
- // ============================================================================
190
- else if (arg === "--model" && i + 1 < args.length) {
191
- result.model = args[++i];
192
- }
193
- else if (arg === "--models" && i + 1 < args.length) {
194
- result.models = args[++i].split(",").map((s) => s.trim());
195
- }
196
- else if (arg === "--list-models") {
197
- // Check if next arg is a search pattern (not a flag or file arg)
198
- if (i + 1 < args.length && !args[i + 1].startsWith("-") && !args[i + 1].startsWith("@")) {
199
- result.listModels = args[++i];
200
- }
201
- else {
202
- result.listModels = true;
203
- }
204
- }
205
- // ============================================================================
206
- // SYSTEM PROMPT FLAGS
207
- // ============================================================================
208
- else if (arg === "--system-prompt" && i + 1 < args.length) {
209
- result.systemPrompt = args[++i];
210
- }
211
- else if (arg === "--append-system-prompt" && i + 1 < args.length) {
212
- result.appendSystemPrompt = args[++i];
213
- }
214
- // ============================================================================
215
- // TOOL FLAGS
216
- // ============================================================================
217
- else if (arg === "--no-tools") {
218
- result.noTools = true;
219
- }
220
- else if (arg === "--tools" && i + 1 < args.length) {
221
- const toolNames = args[++i].split(",").map((s) => s.trim());
222
- result.tools = validateToolNames(toolNames);
223
- }
224
- // ============================================================================
225
- // THINKING FLAG
226
- // ============================================================================
227
- else if (arg === "--thinking" && i + 1 < args.length) {
228
- const level = args[++i];
229
- result.thinking = validateThinkingLevel(level);
230
- }
231
- // ============================================================================
232
- // OUTPUT FLAGS
233
- // ============================================================================
234
- else if (arg === "--print" || arg === "-p") {
235
- result.print = true;
236
- }
237
- else if (arg === "--export" && i + 1 < args.length) {
238
- result.export = args[++i];
239
- }
240
- else if (arg === "--verbose") {
241
- result.verbose = true;
242
- }
243
- // ============================================================================
244
- // EXTENSION FLAGS
245
- // ============================================================================
246
- else if ((arg === "--extension" || arg === "-e") && i + 1 < args.length) {
247
- result.extensions = result.extensions ?? [];
248
- result.extensions.push(args[++i]);
249
- }
250
- else if (arg === "--no-extensions") {
251
- result.noExtensions = true;
252
- }
253
- else if (arg === "--hook" && i + 1 < args.length) {
254
- result.hooks = result.hooks ?? [];
255
- result.hooks.push(args[++i]);
256
- }
257
- else if (arg === "--no-hooks") {
258
- result.noHooks = true;
259
- }
260
- // ============================================================================
261
- // SKILL FLAGS
262
- // ============================================================================
263
- else if (arg === "--skill" && i + 1 < args.length) {
264
- result.skills = result.skills ?? [];
265
- result.skills.push(args[++i]);
266
- }
267
- else if (arg === "--no-skills") {
268
- result.noSkills = true;
269
- }
270
- // ============================================================================
271
- // PROMPT TEMPLATE FLAGS
272
- // ============================================================================
273
- else if (arg === "--prompt-template" && i + 1 < args.length) {
274
- result.promptTemplates = result.promptTemplates ?? [];
275
- result.promptTemplates.push(args[++i]);
276
- }
277
- else if (arg === "--no-prompt-templates") {
278
- result.noPromptTemplates = true;
279
- }
280
- // ============================================================================
281
- // THEME FLAGS
282
- // ============================================================================
283
- else if (arg === "--theme" && i + 1 < args.length) {
284
- result.themes = result.themes ?? [];
285
- result.themes.push(args[++i]);
286
- }
287
- else if (arg === "--no-themes") {
288
- result.noThemes = true;
289
- }
290
- // ============================================================================
291
- // MCP FLAGS (Model Context Protocol)
292
- // ============================================================================
293
- else if (arg === "--mcp") {
294
- result.mcp = true;
295
- }
296
- else if (arg === "--no-mcp") {
297
- result.noMcp = true;
298
- }
299
- else if (arg === "--mcp-config" && i + 1 < args.length) {
300
- result.mcpConfig = args[++i];
301
- }
302
- // ============================================================================
303
- // MEMORY FLAGS
304
- // ============================================================================
305
- else if (arg === "--memory") {
306
- result.memory = true;
307
- }
308
- else if (arg === "--no-memory") {
309
- result.noMemory = true;
310
- }
311
- else if (arg === "--memory-config" && i + 1 < args.length) {
312
- result.memoryConfig = args[++i];
313
- }
314
- // ============================================================================
315
- // FILE ARGUMENTS
316
- // ============================================================================
317
- else if (arg.startsWith("@")) {
318
- result.fileArgs.push(arg.slice(1)); // Remove @ prefix
319
- }
320
- // ============================================================================
321
- // EXTENSION FLAGS (VENDOR CODE)
322
- // ============================================================================
323
- else if (arg.startsWith("--") && extensionFlags) {
324
- // Check if it's an extension-registered flag
325
- const flagName = arg.slice(2);
326
- const extFlag = extensionFlags.get(flagName);
327
- if (extFlag) {
328
- if (extFlag.type === "boolean") {
329
- result.unknownFlags.set(flagName, true);
330
- }
331
- else if (extFlag.type === "string" && i + 1 < args.length) {
332
- result.unknownFlags.set(flagName, args[++i]);
333
- }
334
- }
335
- // Unknown flags without extensionFlags are silently ignored (first pass)
336
- }
337
- // ============================================================================
338
- // POSITIONAL ARGUMENTS (MESSAGES)
339
- // ============================================================================
340
- else if (!arg.startsWith("-")) {
341
- result.messages.push(arg);
342
- }
285
+ for (; state.index < state.args.length; state.index++) {
286
+ const arg = state.args[state.index];
287
+ if (handleAlias(state, arg))
288
+ continue;
289
+ if (handleScalarFlags(state, arg))
290
+ continue;
291
+ if (handleValueFlags(state, arg))
292
+ continue;
293
+ if (handleRepeatedPathFlags(state, arg))
294
+ continue;
295
+ if (parseUnknownExtensionFlag(state, arg))
296
+ continue;
297
+ handlePositionalArgument(state.result, arg);
343
298
  }
344
- return result;
299
+ return state.result;
300
+ }
301
+ function buildHelpSections() {
302
+ return [
303
+ `${chalk.bold(APP_NAME)} - AI coding assistant with read, bash, edit, write tools`,
304
+ `${chalk.bold("Usage:")}\n ${APP_NAME} [options] [@files...] [messages...]`,
305
+ `${chalk.bold("Commands:")}\n ${APP_NAME} login [--provider <name>] Authenticate with an AI provider (OAuth or API key)\n [--method oauth|api-key]\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} 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`,
306
+ `${chalk.bold("Options:")}\n --provider <name> Provider name (default: google)\n --account <name> Account name for multi-account providers (default: default)\n --model <id> Model ID (default: gemini-2.5-flash)\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 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 --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\n Available: ${AVAILABLE_TOOLS.join(", ")}\n --thinking <level> Set thinking level: ${VALID_THINKING_LEVELS.join(", ")}\n --extension, -e <path> Load an extension file (can be used multiple times)\n --no-extensions Disable extension discovery (explicit -e paths still work)\n --hook <path> Load a hook file or directory (can be used multiple times)\n --no-hooks Disable hook discovery (explicit --hook paths still work)\n --skill <path> Load a skill file or directory (can be used multiple times)\n --no-skills 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 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 --mcp Enable MCP tool integration (default: auto-detect)\n --no-mcp Disable MCP tools\n --mcp-config <file> Path to MCP servers config (default: ~/.indusagi/agent/mcp-servers.json)\n --memory Enable memory system (default: auto-detect)\n --no-memory Disable memory system\n --memory-config <file> Path to memory config (default: ~/.indusagi/agent/memory.json)\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 --help, -h Show this help\n --version, -v Show version number\n\nExtensions can register additional flags (e.g., --plan from plan-mode extension).`,
307
+ `${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 # 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 # Authentication / Login\n ${APP_NAME} login\n ${APP_NAME} login --provider kimi\n ${APP_NAME} login --provider anthropic\n ${APP_NAME} login --provider minimax --account prod\n ${APP_NAME} login --list\n ${APP_NAME} logout --provider minimax --account dev`,
308
+ `${chalk.bold("Environment Variables:")}\n ANTHROPIC_AINDUSAGI_KEY - Anthropic Claude API key\n ANTHROPIC_OAUTH_TOKEN - Anthropic OAuth token (alternative to API key)\n OPENAI_AINDUSAGI_KEY - OpenAI GPT API key\n AZURE_OPENAI_AINDUSAGI_KEY - Azure OpenAI API key\n AZURE_OPENAI_BASE_URL - Azure OpenAI base URL\n AZURE_OPENAI_RESOURCE_NAME - Azure OpenAI resource name\n AZURE_OPENAI_AINDUSAGI_VERSION - Azure OpenAI API version\n AZURE_OPENAI_DEPLOYMENT_NAME_MAP - Azure OpenAI model=deployment map\n GEMINI_AINDUSAGI_KEY - Google Gemini API key\n GROQ_AINDUSAGI_KEY - Groq API key\n CEREBRAS_AINDUSAGI_KEY - Cerebras API key\n XAI_AINDUSAGI_KEY - xAI Grok API key\n OPENROUTER_AINDUSAGI_KEY - OpenRouter API key\n AI_GATEWAY_AINDUSAGI_KEY - Vercel AI Gateway API key\n ZAI_AINDUSAGI_KEY - ZAI API key\n MISTRAL_AINDUSAGI_KEY - Mistral API key\n MINIMAX_AINDUSAGI_KEY - MiniMax API key\n KIMI_AINDUSAGI_KEY - Kimi (Moonshot AI) API key\n KIMICODE_AINDUSAGI_KEY - Kimi Code (subscription) 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\n ${ENV_AGENT_DIR.padEnd(32)} - Session storage directory (default: ~/${CONFIG_DIR_NAME}/agent)\n INDUSAGI_SHARE_VIEWER_URL - Base URL for /share command (default: https://buildwithindusagi.ai/session/)`,
309
+ `${chalk.bold("Available Tools:")}\n read - Read file contents\n bash - Execute bash commands\n edit - Edit files with find/replace\n write - Write files (creates/overwrites)\n task - Delegate work to a subagent\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 todoread - Read the current todo list\n todowrite - Update the current todo list`,
310
+ ];
345
311
  }
346
- // ============================================================================
347
- // HELP DOCUMENTATION
348
- // ============================================================================
349
- /**
350
- * Print comprehensive help documentation to stdout
351
- *
352
- * Displays:
353
- * - Application name and brief description
354
- * - Usage syntax
355
- * - Available commands
356
- * - All options with descriptions
357
- * - Environment variables
358
- * - Available tools
359
- * - Example usage
360
- */
361
312
  export function printHelp() {
362
- console.log(`${chalk.bold(APP_NAME)} - AI coding assistant with read, bash, edit, write tools
363
-
364
- ${chalk.bold("Usage:")}
365
- ${APP_NAME} [options] [@files...] [messages...]
366
-
367
- ${chalk.bold("Commands:")}
368
- ${APP_NAME} login [--provider <name>] Authenticate with an AI provider (OAuth or API key)
369
- [--method oauth|api-key]
370
- ${APP_NAME} install <source> [-l] Install extension source and add to settings
371
- ${APP_NAME} remove <source> [-l] Remove extension source from settings
372
- ${APP_NAME} update [source] Update installed extensions (skips pinned sources)
373
- ${APP_NAME} list List installed extensions from settings
374
- ${APP_NAME} config Open TUI to enable/disable package resources
375
-
376
- ${chalk.bold("Options:")}
377
- --provider <name> Provider name (default: google)
378
- --account <name> Account name for multi-account providers (default: default)
379
- --model <id> Model ID (default: gemini-2.5-flash)
380
- --api-key <key> API key (defaults to env vars)
381
- --system-prompt <text> System prompt (default: coding assistant prompt)
382
- --append-system-prompt <text> Append text or file contents to system prompt
383
- --mode <mode> Output mode: text (default), json, or rpc
384
- --print, -p Non-interactive mode: process prompt and exit
385
- --continue, -c Continue previous session
386
- --resume, -r Select a session to resume
387
- --session <path> Use specific session file
388
- --session-dir <dir> Directory for session storage and lookup
389
- --no-session Don't save session (ephemeral)
390
- --models <patterns> Comma-separated model patterns for Ctrl+P cycling
391
- Supports globs (anthropic/*, *sonnet*) and fuzzy matching
392
- --no-tools Disable all built-in tools
393
- --tools <tools> Comma-separated list of tools to enable (default: read,bash,edit,write,task,todoread,todowrite)
394
- Available: read, bash, edit, write, task, grep, find, ls, todoread, todowrite
395
- --thinking <level> Set thinking level: off, minimal, low, medium, high, xhigh
396
- --extension, -e <path> Load an extension file (can be used multiple times)
397
- --no-extensions Disable extension discovery (explicit -e paths still work)
398
- --hook <path> Load a hook file or directory (can be used multiple times)
399
- --no-hooks Disable hook discovery (explicit --hook paths still work)
400
- --skill <path> Load a skill file or directory (can be used multiple times)
401
- --no-skills Disable skills discovery and loading
402
- --prompt-template <path> Load a prompt template file or directory (can be used multiple times)
403
- --no-prompt-templates Disable prompt template discovery and loading
404
- --theme <path> Load a theme file or directory (can be used multiple times)
405
- --no-themes Disable theme discovery and loading
406
- --mcp Enable MCP tool integration (default: auto-detect)
407
- --no-mcp Disable MCP tools
408
- --mcp-config <file> Path to MCP servers config (default: ~/.indusagi/agent/mcp-servers.json)
409
- --memory Enable memory system (default: auto-detect)
410
- --no-memory Disable memory system
411
- --memory-config <file> Path to memory config (default: ~/.indusagi/agent/memory.json)
412
- --export <file> Export session file to HTML and exit
413
- --list-models [search] List available models (with optional fuzzy search)
414
- --verbose Force verbose startup (overrides quietStartup setting)
415
- --help, -h Show this help
416
- --version, -v Show version number
417
-
418
- Extensions can register additional flags (e.g., --plan from plan-mode extension).
419
-
420
- ${chalk.bold("Examples:")}
421
- # Interactive mode
422
- ${APP_NAME}
423
-
424
- # Interactive mode with initial prompt
425
- ${APP_NAME} "List all .ts files in src/"
426
-
427
- # Include files in initial message
428
- ${APP_NAME} @prompt.md @image.png "What color is the sky?"
429
-
430
- # Non-interactive mode (process and exit)
431
- ${APP_NAME} -p "List all .ts files in src/"
432
-
433
- # Multiple messages (interactive)
434
- ${APP_NAME} "Read package.json" "What dependencies do we have?"
435
-
436
- # Continue previous session
437
- ${APP_NAME} --continue "What did we discuss?"
438
-
439
- # Use different model
440
- ${APP_NAME} --provider openai --model gpt-4o-mini "Help me refactor this code"
441
-
442
- # Limit model cycling to specific models
443
- ${APP_NAME} --models claude-sonnet,claude-haiku,gpt-4o
444
-
445
- # Limit to a specific provider with glob pattern
446
- ${APP_NAME} --models "github-copilot/*"
447
-
448
- # Cycle models with fixed thinking levels
449
- ${APP_NAME} --models sonnet:high,haiku:low
450
-
451
- # Start with a specific thinking level
452
- ${APP_NAME} --thinking high "Solve this complex problem"
453
-
454
- # Read-only mode (no file modifications possible)
455
- ${APP_NAME} --tools read,grep,find,ls -p "Review the code in src/"
456
-
457
- # Export a session file to HTML
458
- ${APP_NAME} --export ~/${CONFIG_DIR_NAME}/agent/sessions/--path--/session.jsonl
459
- ${APP_NAME} --export session.jsonl output.html
460
-
461
- # Authentication / Login
462
- ${APP_NAME} login # Show available providers for login
463
- ${APP_NAME} login --provider kimi # Login to Kimi with API key
464
- ${APP_NAME} login --provider kimi-coding # Login to Kimi Code with API key
465
- ${APP_NAME} login --provider anthropic # Login to Anthropic with OAuth
466
- ${APP_NAME} login --provider openai # Login to OpenAI with API key
467
- ${APP_NAME} login --provider minimax --account prod # Login to MiniMax (prod account)
468
- ${APP_NAME} login --provider minimax --account dev # Login to MiniMax (dev account)
469
- ${APP_NAME} login --list # List all saved accounts
470
- ${APP_NAME} logout --provider minimax --account dev # Logout specific account
471
-
472
- ${chalk.bold("Environment Variables:")}
473
- ANTHROPIC_AINDUSAGI_KEY - Anthropic Claude API key
474
- ANTHROPIC_OAUTH_TOKEN - Anthropic OAuth token (alternative to API key)
475
- OPENAI_AINDUSAGI_KEY - OpenAI GPT API key
476
- AZURE_OPENAI_AINDUSAGI_KEY - Azure OpenAI API key
477
- AZURE_OPENAI_BASE_URL - Azure OpenAI base URL (https://{resource}.openai.azure.com/openai/v1)
478
- AZURE_OPENAI_RESOURCE_NAME - Azure OpenAI resource name (alternative to base URL)
479
- AZURE_OPENAI_AINDUSAGI_VERSION - Azure OpenAI API version (default: v1)
480
- AZURE_OPENAI_DEPLOYMENT_NAME_MAP - Azure OpenAI model=deployment map (comma-separated)
481
- GEMINI_AINDUSAGI_KEY - Google Gemini API key
482
- GROQ_AINDUSAGI_KEY - Groq API key
483
- CEREBRAS_AINDUSAGI_KEY - Cerebras API key
484
- XAI_AINDUSAGI_KEY - xAI Grok API key
485
- OPENROUTER_AINDUSAGI_KEY - OpenRouter API key
486
- AI_GATEWAY_AINDUSAGI_KEY - Vercel AI Gateway API key
487
- ZAI_AINDUSAGI_KEY - ZAI API key
488
- MISTRAL_AINDUSAGI_KEY - Mistral API key
489
- MINIMAX_AINDUSAGI_KEY - MiniMax API key
490
- KIMI_AINDUSAGI_KEY - Kimi (Moonshot AI) API key
491
- KIMICODE_AINDUSAGI_KEY - Kimi Code (subscription) API key
492
- AWS_PROFILE - AWS profile for Amazon Bedrock
493
- AWS_ACCESS_KEY_ID - AWS access key for Amazon Bedrock
494
- AWS_SECRET_ACCESS_KEY - AWS secret key for Amazon Bedrock
495
- AWS_BEARER_TOKEN_BEDROCK - Bedrock API key (bearer token)
496
- AWS_REGION - AWS region for Amazon Bedrock (e.g., us-east-1)
497
- ${ENV_AGENT_DIR.padEnd(32)} - Session storage directory (default: ~/${CONFIG_DIR_NAME}/agent)
498
- INDUSAGI_SHARE_VIEWER_URL - Base URL for /share command (default: https://buildwithindusagi.ai/session/)
499
-
500
- ${chalk.bold("Available Tools (default: read, bash, edit, write):")}
501
- read - Read file contents
502
- bash - Execute bash commands
503
- edit - Edit files with find/replace
504
- write - Write files (creates/overwrites)
505
- grep - Search file contents (read-only, off by default)
506
- find - Find files by glob pattern (read-only, off by default)
507
- ls - List directory contents (read-only, off by default)
508
- `);
313
+ console.log(buildHelpSections().join("\n\n"));
509
314
  }
510
315
  //# sourceMappingURL=args.js.map