indusagi-coding-agent 0.1.38 → 0.1.40

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 (493) hide show
  1. package/CHANGELOG.md +22 -7
  2. package/{LICENSE.md → LICENSE} +0 -1
  3. package/README.md +2 -4
  4. package/dist/cli/args.d.ts +6 -128
  5. package/dist/cli/args.d.ts.map +1 -1
  6. package/dist/cli/args.js +277 -472
  7. package/dist/cli/args.js.map +1 -1
  8. package/dist/cli/config-selector.d.ts +9 -62
  9. package/dist/cli/config-selector.d.ts.map +1 -1
  10. package/dist/cli/config-selector.js +31 -146
  11. package/dist/cli/config-selector.js.map +1 -1
  12. package/dist/cli/file-processor.d.ts +1 -69
  13. package/dist/cli/file-processor.d.ts.map +1 -1
  14. package/dist/cli/file-processor.js +36 -267
  15. package/dist/cli/file-processor.js.map +1 -1
  16. package/dist/cli/list-models.d.ts +0 -60
  17. package/dist/cli/list-models.d.ts.map +1 -1
  18. package/dist/cli/list-models.js +53 -246
  19. package/dist/cli/list-models.js.map +1 -1
  20. package/dist/cli/session-picker.d.ts +1 -72
  21. package/dist/cli/session-picker.d.ts.map +1 -1
  22. package/dist/cli/session-picker.js +57 -231
  23. package/dist/cli/session-picker.js.map +1 -1
  24. package/dist/cli.js +25 -31
  25. package/dist/cli.js.map +1 -1
  26. package/dist/config.d.ts +0 -42
  27. package/dist/config.d.ts.map +1 -1
  28. package/dist/config.js +62 -97
  29. package/dist/config.js.map +1 -1
  30. package/dist/core/agent-session.d.ts +26 -2
  31. package/dist/core/agent-session.d.ts.map +1 -1
  32. package/dist/core/agent-session.js +78 -66
  33. package/dist/core/agent-session.js.map +1 -1
  34. package/dist/core/auth-storage.d.ts +4 -95
  35. package/dist/core/auth-storage.d.ts.map +1 -1
  36. package/dist/core/auth-storage.js +233 -288
  37. package/dist/core/auth-storage.js.map +1 -1
  38. package/dist/core/bash-executor.d.ts +0 -323
  39. package/dist/core/bash-executor.d.ts.map +1 -1
  40. package/dist/core/bash-executor.js +126 -359
  41. package/dist/core/bash-executor.js.map +1 -1
  42. package/dist/core/compaction/branch-summarization.d.ts +3 -3
  43. package/dist/core/compaction/branch-summarization.js +16 -16
  44. package/dist/core/compaction/branch-summarization.js.map +1 -1
  45. package/dist/core/compaction/compaction.d.ts +3 -3
  46. package/dist/core/compaction/compaction.js +40 -40
  47. package/dist/core/compaction/compaction.js.map +1 -1
  48. package/dist/core/compaction/index.d.ts +32 -4
  49. package/dist/core/compaction/index.d.ts.map +1 -1
  50. package/dist/core/compaction/index.js +30 -4
  51. package/dist/core/compaction/index.js.map +1 -1
  52. package/dist/core/compaction/utils.d.ts +1 -19
  53. package/dist/core/compaction/utils.d.ts.map +1 -1
  54. package/dist/core/compaction/utils.js +92 -113
  55. package/dist/core/compaction/utils.js.map +1 -1
  56. package/dist/core/discover-packages.d.ts +0 -4
  57. package/dist/core/discover-packages.d.ts.map +1 -1
  58. package/dist/core/discover-packages.js +41 -44
  59. package/dist/core/discover-packages.js.map +1 -1
  60. package/dist/core/event-bus.d.ts +1 -147
  61. package/dist/core/event-bus.d.ts.map +1 -1
  62. package/dist/core/event-bus.js +17 -106
  63. package/dist/core/event-bus.js.map +1 -1
  64. package/dist/core/exec.d.ts +0 -16
  65. package/dist/core/exec.d.ts.map +1 -1
  66. package/dist/core/exec.js +18 -27
  67. package/dist/core/exec.js.map +1 -1
  68. package/dist/core/export-html/ansi-to-html.ts +262 -0
  69. package/dist/core/export-html/index.ts +433 -0
  70. package/dist/core/export-html/template.html +48 -26
  71. package/dist/core/export-html/tool-renderer.d.ts +0 -21
  72. package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
  73. package/dist/core/export-html/tool-renderer.js +35 -51
  74. package/dist/core/export-html/tool-renderer.js.map +1 -1
  75. package/dist/core/export-html/tool-renderer.ts +80 -0
  76. package/dist/core/export-html/vendor/highlight.min.js +401 -370
  77. package/dist/core/export-html/vendor/marked.min.js +71 -3
  78. package/dist/core/extensions/index.d.ts +7 -4
  79. package/dist/core/extensions/index.d.ts.map +1 -1
  80. package/dist/core/extensions/index.js +17 -3
  81. package/dist/core/extensions/index.js.map +1 -1
  82. package/dist/core/extensions/loader.d.ts +0 -6
  83. package/dist/core/extensions/loader.d.ts.map +1 -1
  84. package/dist/core/extensions/loader.js +60 -56
  85. package/dist/core/extensions/loader.js.map +1 -1
  86. package/dist/core/extensions/runner.d.ts +3 -0
  87. package/dist/core/extensions/runner.d.ts.map +1 -1
  88. package/dist/core/extensions/runner.js +48 -80
  89. package/dist/core/extensions/runner.js.map +1 -1
  90. package/dist/core/extensions/types.d.ts +50 -23
  91. package/dist/core/extensions/types.d.ts.map +1 -1
  92. package/dist/core/footer-data-provider.d.ts +2 -15
  93. package/dist/core/footer-data-provider.d.ts.map +1 -1
  94. package/dist/core/footer-data-provider.js +21 -33
  95. package/dist/core/footer-data-provider.js.map +1 -1
  96. package/dist/core/hooks/loader.js +2 -2
  97. package/dist/core/hooks/loader.js.map +1 -1
  98. package/dist/core/index.d.ts +29 -10
  99. package/dist/core/index.d.ts.map +1 -1
  100. package/dist/core/index.js +29 -10
  101. package/dist/core/index.js.map +1 -1
  102. package/dist/core/keybindings.d.ts +2 -179
  103. package/dist/core/keybindings.d.ts.map +1 -1
  104. package/dist/core/keybindings.js +64 -238
  105. package/dist/core/keybindings.js.map +1 -1
  106. package/dist/core/model-registry.d.ts +26 -181
  107. package/dist/core/model-registry.d.ts.map +1 -1
  108. package/dist/core/model-registry.js +228 -407
  109. package/dist/core/model-registry.js.map +1 -1
  110. package/dist/core/model-resolver.d.ts +0 -139
  111. package/dist/core/model-resolver.d.ts.map +1 -1
  112. package/dist/core/model-resolver.js +34 -215
  113. package/dist/core/model-resolver.js.map +1 -1
  114. package/dist/core/package-manager.d.ts +25 -57
  115. package/dist/core/package-manager.d.ts.map +1 -1
  116. package/dist/core/package-manager.js +326 -964
  117. package/dist/core/package-manager.js.map +1 -1
  118. package/dist/core/prompt-templates.d.ts +2 -34
  119. package/dist/core/prompt-templates.d.ts.map +1 -1
  120. package/dist/core/prompt-templates.js +122 -170
  121. package/dist/core/prompt-templates.js.map +1 -1
  122. package/dist/core/resource-loader.d.ts +19 -12
  123. package/dist/core/resource-loader.d.ts.map +1 -1
  124. package/dist/core/resource-loader.js +353 -467
  125. package/dist/core/resource-loader.js.map +1 -1
  126. package/dist/core/sdk.d.ts +2 -61
  127. package/dist/core/sdk.d.ts.map +1 -1
  128. package/dist/core/sdk.js +184 -252
  129. package/dist/core/sdk.js.map +1 -1
  130. package/dist/core/session-manager.d.ts +447 -1
  131. package/dist/core/session-manager.d.ts.map +1 -1
  132. package/dist/core/session-manager.js +1176 -1
  133. package/dist/core/session-manager.js.map +1 -1
  134. package/dist/core/settings-manager.d.ts +9 -12
  135. package/dist/core/settings-manager.d.ts.map +1 -1
  136. package/dist/core/settings-manager.js +170 -398
  137. package/dist/core/settings-manager.js.map +1 -1
  138. package/dist/core/skills.d.ts +2 -27
  139. package/dist/core/skills.d.ts.map +1 -1
  140. package/dist/core/skills.js +149 -212
  141. package/dist/core/skills.js.map +1 -1
  142. package/dist/core/subagents.d.ts +2 -2
  143. package/dist/core/subagents.d.ts.map +1 -1
  144. package/dist/core/subagents.js +21 -14
  145. package/dist/core/subagents.js.map +1 -1
  146. package/dist/core/system-prompt.d.ts +0 -11
  147. package/dist/core/system-prompt.d.ts.map +1 -1
  148. package/dist/core/system-prompt.js +168 -139
  149. package/dist/core/system-prompt.js.map +1 -1
  150. package/dist/core/timings.d.ts +1 -4
  151. package/dist/core/timings.d.ts.map +1 -1
  152. package/dist/core/timings.js +34 -18
  153. package/dist/core/timings.js.map +1 -1
  154. package/dist/core/todo-store.d.ts +20 -0
  155. package/dist/core/todo-store.d.ts.map +1 -0
  156. package/dist/core/todo-store.js +60 -0
  157. package/dist/core/todo-store.js.map +1 -0
  158. package/dist/core/tools/bash.d.ts +2 -0
  159. package/dist/core/tools/bash.d.ts.map +1 -0
  160. package/dist/core/tools/bash.js +2 -0
  161. package/dist/core/tools/bash.js.map +1 -0
  162. package/dist/core/tools/bg-process.d.ts +1 -6
  163. package/dist/core/tools/bg-process.d.ts.map +1 -1
  164. package/dist/core/tools/bg-process.js +4 -18
  165. package/dist/core/tools/bg-process.js.map +1 -1
  166. package/dist/core/tools/edit-diff.d.ts +9 -0
  167. package/dist/core/tools/edit-diff.d.ts.map +1 -0
  168. package/dist/core/tools/edit-diff.js +2 -0
  169. package/dist/core/tools/edit-diff.js.map +1 -0
  170. package/dist/core/tools/edit.d.ts +2 -0
  171. package/dist/core/tools/edit.d.ts.map +1 -0
  172. package/dist/core/tools/edit.js +2 -0
  173. package/dist/core/tools/edit.js.map +1 -0
  174. package/dist/core/tools/find.d.ts +2 -0
  175. package/dist/core/tools/find.d.ts.map +1 -0
  176. package/dist/core/tools/find.js +2 -0
  177. package/dist/core/tools/find.js.map +1 -0
  178. package/dist/core/tools/grep.d.ts +2 -0
  179. package/dist/core/tools/grep.d.ts.map +1 -0
  180. package/dist/core/tools/grep.js +2 -0
  181. package/dist/core/tools/grep.js.map +1 -0
  182. package/dist/core/tools/index.d.ts +8 -2
  183. package/dist/core/tools/index.d.ts.map +1 -1
  184. package/dist/core/tools/ls.d.ts +2 -0
  185. package/dist/core/tools/ls.d.ts.map +1 -0
  186. package/dist/core/tools/ls.js +2 -0
  187. package/dist/core/tools/ls.js.map +1 -0
  188. package/dist/core/tools/memory.d.ts +50 -1
  189. package/dist/core/tools/memory.d.ts.map +1 -1
  190. package/dist/core/tools/memory.js +11 -7
  191. package/dist/core/tools/memory.js.map +1 -1
  192. package/dist/core/tools/path-utils.d.ts +2 -0
  193. package/dist/core/tools/path-utils.d.ts.map +1 -0
  194. package/dist/core/tools/path-utils.js +2 -0
  195. package/dist/core/tools/path-utils.js.map +1 -0
  196. package/dist/core/tools/read.d.ts +2 -0
  197. package/dist/core/tools/read.d.ts.map +1 -0
  198. package/dist/core/tools/read.js +2 -0
  199. package/dist/core/tools/read.js.map +1 -0
  200. package/dist/core/tools/registry.d.ts +0 -15
  201. package/dist/core/tools/registry.d.ts.map +1 -1
  202. package/dist/core/tools/registry.js +13 -37
  203. package/dist/core/tools/registry.js.map +1 -1
  204. package/dist/core/tools/task.d.ts +17 -23
  205. package/dist/core/tools/task.d.ts.map +1 -1
  206. package/dist/core/tools/task.js +43 -82
  207. package/dist/core/tools/task.js.map +1 -1
  208. package/dist/core/tools/todo.d.ts +17 -20
  209. package/dist/core/tools/todo.d.ts.map +1 -1
  210. package/dist/core/tools/todo.js +79 -58
  211. package/dist/core/tools/todo.js.map +1 -1
  212. package/dist/core/tools/truncate.d.ts +2 -0
  213. package/dist/core/tools/truncate.d.ts.map +1 -0
  214. package/dist/core/tools/truncate.js +2 -0
  215. package/dist/core/tools/truncate.js.map +1 -0
  216. package/dist/core/tools/webfetch.d.ts +2 -0
  217. package/dist/core/tools/webfetch.d.ts.map +1 -0
  218. package/dist/core/tools/webfetch.js +2 -0
  219. package/dist/core/tools/webfetch.js.map +1 -0
  220. package/dist/core/tools/websearch.d.ts +2 -0
  221. package/dist/core/tools/websearch.d.ts.map +1 -0
  222. package/dist/core/tools/websearch.js +2 -0
  223. package/dist/core/tools/websearch.js.map +1 -0
  224. package/dist/core/tools/write.d.ts +2 -0
  225. package/dist/core/tools/write.d.ts.map +1 -0
  226. package/dist/core/tools/write.js +2 -0
  227. package/dist/core/tools/write.js.map +1 -0
  228. package/dist/index.d.ts +35 -29
  229. package/dist/index.d.ts.map +1 -1
  230. package/dist/index.js +33 -41
  231. package/dist/index.js.map +1 -1
  232. package/dist/main.d.ts.map +1 -1
  233. package/dist/main.js +237 -225
  234. package/dist/main.js.map +1 -1
  235. package/dist/migrations.d.ts +0 -25
  236. package/dist/migrations.d.ts.map +1 -1
  237. package/dist/migrations.js +129 -180
  238. package/dist/migrations.js.map +1 -1
  239. package/dist/modes/index.d.ts +13 -6
  240. package/dist/modes/index.d.ts.map +1 -1
  241. package/dist/modes/index.js +11 -5
  242. package/dist/modes/index.js.map +1 -1
  243. package/dist/modes/interactive/components/armin.d.ts +8 -23
  244. package/dist/modes/interactive/components/armin.d.ts.map +1 -1
  245. package/dist/modes/interactive/components/armin.js +217 -266
  246. package/dist/modes/interactive/components/armin.js.map +1 -1
  247. package/dist/modes/interactive/components/assistant-message.d.ts +2 -168
  248. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  249. package/dist/modes/interactive/components/assistant-message.js +61 -216
  250. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  251. package/dist/modes/interactive/components/bash-execution.d.ts +6 -313
  252. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
  253. package/dist/modes/interactive/components/bash-execution.js +86 -403
  254. package/dist/modes/interactive/components/bash-execution.js.map +1 -1
  255. package/dist/modes/interactive/components/bordered-loader.d.ts +1 -3
  256. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
  257. package/dist/modes/interactive/components/bordered-loader.js +59 -29
  258. package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
  259. package/dist/modes/interactive/components/branch-summary-message.d.ts +3 -3
  260. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
  261. package/dist/modes/interactive/components/branch-summary-message.js +30 -17
  262. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
  263. package/dist/modes/interactive/components/compaction-summary-message.d.ts +3 -3
  264. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
  265. package/dist/modes/interactive/components/compaction-summary-message.js +35 -18
  266. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
  267. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  268. package/dist/modes/interactive/components/config-selector.js +60 -68
  269. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  270. package/dist/modes/interactive/components/countdown-timer.d.ts +2 -6
  271. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
  272. package/dist/modes/interactive/components/countdown-timer.js +32 -18
  273. package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
  274. package/dist/modes/interactive/components/custom-editor.d.ts +1 -5
  275. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  276. package/dist/modes/interactive/components/custom-editor.js +45 -37
  277. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  278. package/dist/modes/interactive/components/custom-message.d.ts +5 -6
  279. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  280. package/dist/modes/interactive/components/custom-message.js +43 -53
  281. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  282. package/dist/modes/interactive/components/diff.d.ts +0 -3
  283. package/dist/modes/interactive/components/diff.d.ts.map +1 -1
  284. package/dist/modes/interactive/components/diff.js +101 -108
  285. package/dist/modes/interactive/components/diff.js.map +1 -1
  286. package/dist/modes/interactive/components/dynamic-border.d.ts +7 -2
  287. package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
  288. package/dist/modes/interactive/components/dynamic-border.js +24 -4
  289. package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
  290. package/dist/modes/interactive/components/extension-editor.d.ts +5 -9
  291. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  292. package/dist/modes/interactive/components/extension-editor.js +43 -46
  293. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  294. package/dist/modes/interactive/components/extension-input.d.ts +4 -9
  295. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
  296. package/dist/modes/interactive/components/extension-input.js +45 -28
  297. package/dist/modes/interactive/components/extension-input.js.map +1 -1
  298. package/dist/modes/interactive/components/extension-selector.d.ts +7 -12
  299. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
  300. package/dist/modes/interactive/components/extension-selector.js +54 -32
  301. package/dist/modes/interactive/components/extension-selector.js.map +1 -1
  302. package/dist/modes/interactive/components/footer.d.ts +2 -11
  303. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  304. package/dist/modes/interactive/components/footer.js +135 -183
  305. package/dist/modes/interactive/components/footer.js.map +1 -1
  306. package/dist/modes/interactive/components/index.d.ts +79 -30
  307. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  308. package/dist/modes/interactive/components/index.js +73 -31
  309. package/dist/modes/interactive/components/index.js.map +1 -1
  310. package/dist/modes/interactive/components/keybinding-hints.d.ts +0 -18
  311. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
  312. package/dist/modes/interactive/components/keybinding-hints.js +24 -31
  313. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
  314. package/dist/modes/interactive/components/login-dialog.d.ts +11 -24
  315. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  316. package/dist/modes/interactive/components/login-dialog.js +89 -86
  317. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  318. package/dist/modes/interactive/components/model-selector.d.ts +15 -19
  319. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  320. package/dist/modes/interactive/components/model-selector.js +104 -157
  321. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  322. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  323. package/dist/modes/interactive/components/oauth-selector.js +5 -5
  324. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  325. package/dist/modes/interactive/components/scoped-models-selector.d.ts +12 -22
  326. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  327. package/dist/modes/interactive/components/scoped-models-selector.js +111 -132
  328. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  329. package/dist/modes/interactive/components/session-selector-search.d.ts +3 -3
  330. package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -1
  331. package/dist/modes/interactive/components/session-selector-search.js +92 -103
  332. package/dist/modes/interactive/components/session-selector-search.js.map +1 -1
  333. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  334. package/dist/modes/interactive/components/session-selector.js +28 -39
  335. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  336. package/dist/modes/interactive/components/settings-selector.d.ts +1 -1
  337. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  338. package/dist/modes/interactive/components/settings-selector.js +111 -203
  339. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  340. package/dist/modes/interactive/components/show-images-selector.d.ts +1 -1
  341. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -1
  342. package/dist/modes/interactive/components/show-images-selector.js +17 -19
  343. package/dist/modes/interactive/components/show-images-selector.js.map +1 -1
  344. package/dist/modes/interactive/components/skill-invocation-message.d.ts +3 -3
  345. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
  346. package/dist/modes/interactive/components/skill-invocation-message.js +29 -19
  347. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  348. package/dist/modes/interactive/components/theme-selector.d.ts +2 -2
  349. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
  350. package/dist/modes/interactive/components/theme-selector.js +20 -25
  351. package/dist/modes/interactive/components/theme-selector.js.map +1 -1
  352. package/dist/modes/interactive/components/thinking-selector.d.ts +1 -1
  353. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  354. package/dist/modes/interactive/components/thinking-selector.js +19 -20
  355. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  356. package/dist/modes/interactive/components/tool-execution.d.ts +12 -10
  357. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  358. package/dist/modes/interactive/components/tool-execution.js +14 -8
  359. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  360. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
  361. package/dist/modes/interactive/components/tree-selector.js +53 -60
  362. package/dist/modes/interactive/components/tree-selector.js.map +1 -1
  363. package/dist/modes/interactive/components/user-message-selector.d.ts +3 -9
  364. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
  365. package/dist/modes/interactive/components/user-message-selector.js +57 -68
  366. package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
  367. package/dist/modes/interactive/components/visual-truncate.d.ts +0 -12
  368. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -1
  369. package/dist/modes/interactive/components/visual-truncate.js +14 -22
  370. package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
  371. package/dist/modes/interactive/interactive-mode.d.ts +6 -0
  372. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  373. package/dist/modes/interactive/interactive-mode.js +118 -113
  374. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  375. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  376. package/dist/modes/interactive/theme/theme.js +189 -39
  377. package/dist/modes/interactive/theme/theme.js.map +1 -1
  378. package/dist/modes/rpc/rpc-client.d.ts +8 -1
  379. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  380. package/dist/modes/rpc/rpc-client.js +88 -59
  381. package/dist/modes/rpc/rpc-client.js.map +1 -1
  382. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  383. package/dist/modes/rpc/rpc-mode.js +24 -46
  384. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  385. package/dist/modes/rpc/rpc-types.d.ts +75 -409
  386. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  387. package/dist/modes/rpc/rpc-types.js +21 -360
  388. package/dist/modes/rpc/rpc-types.js.map +1 -1
  389. package/dist/observability/core/config.d.ts +28 -0
  390. package/dist/observability/core/config.d.ts.map +1 -0
  391. package/dist/observability/core/config.js +150 -0
  392. package/dist/observability/core/config.js.map +1 -0
  393. package/dist/observability/core/event-bus.d.ts +15 -0
  394. package/dist/observability/core/event-bus.d.ts.map +1 -0
  395. package/dist/observability/core/event-bus.js +37 -0
  396. package/dist/observability/core/event-bus.js.map +1 -0
  397. package/dist/observability/core/index.d.ts +12 -0
  398. package/dist/observability/core/index.d.ts.map +1 -0
  399. package/dist/observability/core/index.js +14 -0
  400. package/dist/observability/core/index.js.map +1 -0
  401. package/dist/observability/core/observability.d.ts +63 -0
  402. package/dist/observability/core/observability.d.ts.map +1 -0
  403. package/dist/observability/core/observability.js +127 -0
  404. package/dist/observability/core/observability.js.map +1 -0
  405. package/dist/observability/core/span.d.ts +37 -0
  406. package/dist/observability/core/span.d.ts.map +1 -0
  407. package/dist/observability/core/span.js +90 -0
  408. package/dist/observability/core/span.js.map +1 -0
  409. package/dist/observability/core/tracer.d.ts +22 -0
  410. package/dist/observability/core/tracer.d.ts.map +1 -0
  411. package/dist/observability/core/tracer.js +79 -0
  412. package/dist/observability/core/tracer.js.map +1 -0
  413. package/dist/observability/core/types.d.ts +155 -0
  414. package/dist/observability/core/types.d.ts.map +1 -0
  415. package/dist/observability/core/types.js +38 -0
  416. package/dist/observability/core/types.js.map +1 -0
  417. package/dist/observability/exporters/base-exporter.d.ts +16 -0
  418. package/dist/observability/exporters/base-exporter.d.ts.map +1 -0
  419. package/dist/observability/exporters/base-exporter.js +26 -0
  420. package/dist/observability/exporters/base-exporter.js.map +1 -0
  421. package/dist/observability/exporters/console-exporter.d.ts +22 -0
  422. package/dist/observability/exporters/console-exporter.d.ts.map +1 -0
  423. package/dist/observability/exporters/console-exporter.js +80 -0
  424. package/dist/observability/exporters/console-exporter.js.map +1 -0
  425. package/dist/observability/exporters/file-exporter.d.ts +31 -0
  426. package/dist/observability/exporters/file-exporter.d.ts.map +1 -0
  427. package/dist/observability/exporters/file-exporter.js +120 -0
  428. package/dist/observability/exporters/file-exporter.js.map +1 -0
  429. package/dist/observability/exporters/index.d.ts +12 -0
  430. package/dist/observability/exporters/index.d.ts.map +1 -0
  431. package/dist/observability/exporters/index.js +11 -0
  432. package/dist/observability/exporters/index.js.map +1 -0
  433. package/dist/observability/exporters/langfuse-exporter.d.ts +27 -0
  434. package/dist/observability/exporters/langfuse-exporter.d.ts.map +1 -0
  435. package/dist/observability/exporters/langfuse-exporter.js +146 -0
  436. package/dist/observability/exporters/langfuse-exporter.js.map +1 -0
  437. package/dist/observability/exporters/sentry-exporter.d.ts +22 -0
  438. package/dist/observability/exporters/sentry-exporter.d.ts.map +1 -0
  439. package/dist/observability/exporters/sentry-exporter.js +121 -0
  440. package/dist/observability/exporters/sentry-exporter.js.map +1 -0
  441. package/dist/observability/index.d.ts +3 -0
  442. package/dist/observability/index.d.ts.map +1 -0
  443. package/dist/observability/index.js +3 -0
  444. package/dist/observability/index.js.map +1 -0
  445. package/dist/utils/changelog.d.ts +1 -2
  446. package/dist/utils/changelog.d.ts.map +1 -1
  447. package/dist/utils/changelog.js +53 -61
  448. package/dist/utils/changelog.js.map +1 -1
  449. package/dist/utils/clipboard-image.d.ts.map +1 -1
  450. package/dist/utils/clipboard-image.js +77 -83
  451. package/dist/utils/clipboard-image.js.map +1 -1
  452. package/dist/utils/clipboard.d.ts.map +1 -1
  453. package/dist/utils/clipboard.js +62 -49
  454. package/dist/utils/clipboard.js.map +1 -1
  455. package/dist/utils/image-convert.d.ts +6 -6
  456. package/dist/utils/image-convert.d.ts.map +1 -1
  457. package/dist/utils/image-convert.js +29 -23
  458. package/dist/utils/image-convert.js.map +1 -1
  459. package/dist/utils/image-resize.d.ts +0 -17
  460. package/dist/utils/image-resize.d.ts.map +1 -1
  461. package/dist/utils/image-resize.js +100 -138
  462. package/dist/utils/image-resize.js.map +1 -1
  463. package/dist/utils/mime.d.ts +1 -0
  464. package/dist/utils/mime.d.ts.map +1 -1
  465. package/dist/utils/mime.js +35 -15
  466. package/dist/utils/mime.js.map +1 -1
  467. package/dist/utils/photon.d.ts +4 -15
  468. package/dist/utils/photon.d.ts.map +1 -1
  469. package/dist/utils/photon.js +71 -60
  470. package/dist/utils/photon.js.map +1 -1
  471. package/dist/utils/shell.d.ts +4 -21
  472. package/dist/utils/shell.d.ts.map +1 -1
  473. package/dist/utils/shell.js +101 -124
  474. package/dist/utils/shell.js.map +1 -1
  475. package/dist/utils/sleep.d.ts +1 -1
  476. package/dist/utils/sleep.d.ts.map +1 -1
  477. package/dist/utils/sleep.js +32 -8
  478. package/dist/utils/sleep.js.map +1 -1
  479. package/dist/utils/tools-manager.d.ts +4 -2
  480. package/dist/utils/tools-manager.d.ts.map +1 -1
  481. package/dist/utils/tools-manager.js +96 -122
  482. package/dist/utils/tools-manager.js.map +1 -1
  483. package/docs/PI_MONO_MIT_REMOVAL_GUIDE.md +2132 -0
  484. package/docs/SAME_TO_SAME_PARITY_REPORT.md +312 -0
  485. package/examples/README.md +12 -0
  486. package/package.json +62 -88
  487. package/dist/modes/interactive/theme/dark.json +0 -85
  488. package/dist/modes/interactive/theme/light.json +0 -84
  489. package/dist/modes/interactive/theme/theme-schema.json +0 -335
  490. package/docs/FEATURES.md +0 -306
  491. package/docs/MCP.md +0 -341
  492. package/docs/MEMORY.md +0 -443
  493. 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