indusagi-coding-agent 0.1.37 → 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 +23 -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 +36 -217
  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
@@ -1,342 +1,90 @@
1
- /**
2
- * ============================================================================
3
- * BASH EXECUTION COMPONENT - REAL-TIME BASH OUTPUT RENDERER
4
- * ============================================================================
5
- *
6
- * PURPOSE:
7
- * ============================================================================
8
- * Renders live bash command execution in the interactive chat interface.
9
- * This component displays:
10
- *
11
- * - Command invocation with dynamic border styling
12
- * - Real-time streaming output (appended as chunks arrive)
13
- * - Loading animation while command runs
14
- * - Exit code and cancellation status
15
- * - Expandable output (collapsed preview vs full output)
16
- * - Truncation warnings (context limits, path to full output)
17
- * - Visual line truncation with width-aware caching
18
- *
19
- * DESIGN:
20
- * BashExecutionComponent is distinct from ToolExecutionComponent because:
21
- * 1. Streaming: Output arrives chunk-by-chunk (append, not replace)
22
- * 2. State: Maintains outputLines array during execution
23
- * 3. Loading: Shows spinner while running
24
- * 4. Borders: Dynamic borders with color based on context exclusion
25
- * 5. Visual wrapping: Line-based truncation respects terminal width
26
- *
27
- * DIFFERENCES FROM TOOL EXECUTION:
28
- * - Tool execution: Shows full tool state (args + result at once)
29
- * - Bash execution: Shows streaming output with real-time updates
30
- * - Tool has result.content structure, bash has outputLines array
31
- * - Bash shows loader during execution, tool shows pending background
32
- *
33
- * DATA FLOW:
34
- * ============================================================================
35
- * Bash Execution Pipeline:
36
- * User types: !! command text
37
- * ↓
38
- * InteractiveMode.handleBashCommand() captures input
39
- * ↓
40
- * session.bash() starts async bash execution
41
- * ↓
42
- * BashExecutionComponent created
43
- * ↓
44
- * While running, agent streams stdout via session.on('bash_output')
45
- * ↓
46
- * component.appendOutput(chunk) called repeatedly
47
- * ↓
48
- * updateDisplay() called, adds new lines to content
49
- * ↓
50
- * TUI invalidate() and requestRender()
51
- * ↓
52
- * Terminal shows streaming output with loading spinner
53
- * ↓
54
- * Agent emits bash_complete event
55
- * ↓
56
- * component.setComplete(exitCode, cancelled, truncation, fullPath)
57
- * ↓
58
- * Loader stops, exit code/status displayed
59
- * ↓
60
- * TUI displays final output
61
- *
62
- * Component State Lifecycle:
63
- * 1. Constructor:
64
- * - Initialize with command string
65
- * - Create bordered container structure
66
- * - Add command header with styling
67
- * - Show loader with "Running..." text
68
- * 2. appendOutput() calls (while running):
69
- * - Strip ANSI codes and normalize line endings
70
- * - Split on newlines and append to outputLines
71
- * - Call updateDisplay() to refresh
72
- * - TUI invalidate() → render shows new content
73
- * 3. setComplete() call (when done):
74
- * - Store exit code and status (error/cancelled/complete)
75
- * - Stop loader animation
76
- * - Call updateDisplay() final time
77
- * - Display exit code or cancellation message
78
- * 4. invalidate() call (on theme change):
79
- * - Re-render with new colors
80
- * - Keep outputLines unchanged
81
- * - Re-apply truncation and styling
82
- *
83
- * RENDERING PIPELINE:
84
- * ============================================================================
85
- * Layout Structure (ASCII):
86
- * ┌─────────────────────────────────────────────┐
87
- * │ [Spacer 1 line] │ ← Top margin
88
- * ├─────────────────────────────────────────────┤
89
- * │ ┌ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┐ │ ← DynamicBorder
90
- * │ $ command text │ ← Command header
91
- * │ │ ← (or content)
92
- * │ [spinner] Running... (C-c to cancel) │ ← Loader (if running)
93
- * │ │
94
- * │ output line 1 │ ← Output lines
95
- * │ output line 2 │
96
- * │ output line 3 │
97
- * │ ... (5 more lines, to expand) │ ← Truncation hint (collapsed)
98
- * │ │
99
- * │ (exit 0) or (cancelled) or (exit 1) │ ← Status (if complete)
100
- * │ └ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┘ │ ← DynamicBorder
101
- * └─────────────────────────────────────────────┘
102
- *
103
- * Rendering Rules:
104
- * 1. Top spacer: Always present
105
- * 2. Top border: DynamicBorder with colorKey (bashMode or dim)
106
- * 3. ContentContainer:
107
- * - Command header: "$ command" (bold, colored)
108
- * - Output lines (if available):
109
- * a. If expanded: Show all outputLines
110
- * b. If collapsed: Show last PREVIEW_LINES with visual truncation
111
- * - Loader: Only if status="running"
112
- * - Status: Only if status!="running" (complete/error/cancelled)
113
- * 4. Bottom border: Same style as top border
114
- *
115
- * Output Line Handling:
116
- * - Raw output: Received with ANSI codes
117
- * - Strip ANSI: stripAnsi() removes color codes (preserve structure)
118
- * - Normalize newlines: \r\n → \n, \r → \n
119
- * - Split/append: newLines split on \n, append to outputLines
120
- * - Styling: Apply theme.fg("muted", line) to each line
121
- * - Wrapping: Visual line truncation handles width changes
122
- *
123
- * Preview Truncation (collapsed state):
124
- * - PREVIEW_LINES = 20 (max logical lines to show when collapsed)
125
- * - hiddenLineCount = availableLines.length - previewLogicalLines.length
126
- * - Visual truncation: truncateToVisualLines() respects terminal width
127
- * - Shown: "... N more lines" hint with expand key hint
128
- *
129
- * Context Truncation (for LLM):
130
- * - DEFAULT_MAX_LINES = 500
131
- * - DEFAULT_MAX_BYTES = 50KB
132
- * - Applied BEFORE preview truncation
133
- * - Only tail of output kept (prevents explosion of context)
134
- * - Warning message shows truncation occurred
135
- *
136
- * STYLING/FORMATTING:
137
- * ============================================================================
138
- * Color Scheme:
139
- * - Command: theme.fg("bashMode", "$ command") [colored, bold]
140
- * - Border: colorKey function (bashMode or dim)
141
- * - Output: theme.fg("muted", line) [neutral/gray]
142
- * - Error status: theme.fg("error", "(exit 1)") [red]
143
- * - Cancelled: theme.fg("warning", "(cancelled)") [yellow]
144
- * - Truncation: theme.fg("warning", "[Truncated...]") [yellow]
145
- * - Hints: keyHint("expandTools", "...") [key binding text]
146
- *
147
- * Loader Styling:
148
- * - Spinner: Animated loader component
149
- * - Spinner color: theme.fg(colorKey, spinner)
150
- * - Text: theme.fg("muted", "Running...")
151
- * - Key hint: editorKey("selectCancel") + " to cancel"
152
- *
153
- * Border Styling:
154
- * - DynamicBorder: Fills terminal width with box characters
155
- * - Color: colorKey function (respects excludeFromContext flag)
156
- * - excludeFromContext: Command prefixed with !! (dim border)
157
- * - Normal: bashMode color (highlighted border)
158
- *
159
- * Component Nesting:
160
- * - BashExecutionComponent (Container)
161
- * ├── Spacer(1) ← Top margin
162
- * ├── DynamicBorder ← Top border
163
- * ├── contentContainer (Container)
164
- * │ ├── Text: "$ command" header
165
- * │ ├── Text or dynamic component: Output lines
166
- * │ ├── Loader ← If running
167
- * │ └── Text: Status message ← If complete
168
- * └── DynamicBorder ← Bottom border
169
- *
170
- * EXAMPLES:
171
- * ============================================================================
172
- *
173
- * Example 1: Simple Command (Running)
174
- * ────────────────────────────────────
175
- * Command: "ls -la"
176
- * Rendered:
177
- * <blank>
178
- * ┌─────────────────────────────────────────┐
179
- * $ ls -la
180
- * [spinner] Running... (C-c to cancel)
181
- * └─────────────────────────────────────────┘
182
- *
183
- * Example 2: Simple Command (Complete)
184
- * ──────────────────────────────────────
185
- * Command: "echo hello" completed successfully
186
- * Rendered:
187
- * <blank>
188
- * ┌─────────────────────────────────────────┐
189
- * $ echo hello
190
- *
191
- * hello
192
- * └─────────────────────────────────────────┘
193
- *
194
- * Example 3: Large Output (Collapsed)
195
- * ────────────────────────────────────
196
- * Command: "find ." with 1000 results, collapsed
197
- * Rendered:
198
- * <blank>
199
- * ┌─────────────────────────────────────────┐
200
- * $ find .
201
- *
202
- * ... 980 more lines (to expand)
203
- * ./src/index.ts
204
- * ./src/main.ts
205
- * ./dist/index.js
206
- * (exit 0)
207
- * └─────────────────────────────────────────┘
208
- *
209
- * Example 4: Error Exit Code
210
- * ──────────────────────────
211
- * Command: "rm /nonexistent" failed
212
- * Rendered:
213
- * <blank>
214
- * ┌─────────────────────────────────────────┐
215
- * $ rm /nonexistent
216
- *
217
- * Cannot remove: No such file or directory
218
- * (exit 1)
219
- * └─────────────────────────────────────────┘
220
- *
221
- * Example 5: Cancelled Command
222
- * ──────────────────────────────
223
- * User pressed Ctrl-C during execution
224
- * Rendered:
225
- * <blank>
226
- * ┌─────────────────────────────────────────┐
227
- * $ long_running_command
228
- *
229
- * Processing...
230
- * ... 10 more lines (to expand)
231
- * (cancelled)
232
- * └─────────────────────────────────────────┘
233
- *
234
- * INTEGRATION:
235
- * ============================================================================
236
- * TUI Integration:
237
- * - Extends Container (indusagi/tui base component)
238
- * - Uses Text, Spacer, Loader, DynamicBorder components
239
- * - Theme system: theme.fg(), theme.bold()
240
- * - Loader component: Animated spinner from indusagi/tui
241
- * - Terminal access: this.ui.terminal.columns for width
242
- *
243
- * Session Integration:
244
- * - Created by InteractiveMode when !! command entered
245
- * - Updates come from AgentSession.on('bash_output')
246
- * - Completion from AgentSession.on('bash_complete')
247
- * - Stored in chatContainer like other messages
248
- * - Output exported via getOutput() for BashExecutionMessage
249
- *
250
- * Theme Integration:
251
- * - bashMode color: Border and command header color
252
- * - dim color: Used if excludeFromContext=true
253
- * - muted color: Output lines rendered in muted color
254
- * - invalidate(): Re-renders with new theme
255
- * - Colors apply dynamically at render time
256
- *
257
- * Real-time Updates:
258
- * - appendOutput(): Non-blocking append to array
259
- * - updateDisplay(): Rebuilds contentContainer
260
- * - TUI calls render() after requestRender()
261
- * - Suitable for high-frequency updates (many lines/sec)
262
- *
263
- * Performance Notes:
264
- * - outputLines stored as string array (efficient append)
265
- * - Visual truncation cached (recomputed on width change)
266
- * - Loader is simple spinner (minimal overhead)
267
- * - PREVIEW_LINES limits rendered lines when collapsed
268
- * - DEFAULT_MAX_LINES prevents context explosion (500 lines cap)
269
- *
270
- * API:
271
- * ============================================================================
272
- * Constructor(command, ui, excludeFromContext):
273
- * - command: String to display in header (can be long)
274
- * - ui: TUI instance for requestRender() and terminal access
275
- * - excludeFromContext: Boolean, true if !! prefixed (dim border)
276
- *
277
- * setExpanded(expanded):
278
- * - expanded: Boolean, toggle between full/preview output
279
- * - Updates display immediately
280
- *
281
- * appendOutput(chunk):
282
- * - chunk: String of output to append (can be partial line)
283
- * - Strips ANSI, normalizes newlines, appends to outputLines
284
- * - Calls updateDisplay() and requestRender()
285
- *
286
- * setComplete(exitCode, cancelled, truncationResult, fullOutputPath):
287
- * - exitCode: Number or undefined (exit code from bash)
288
- * - cancelled: Boolean, true if user cancelled
289
- * - truncationResult: Optional truncation info for context limits
290
- * - fullOutputPath: Path to file with full output (if truncated)
291
- * - Stops loader, sets status, calls updateDisplay()
292
- *
293
- * getOutput():
294
- * - Returns: String of all output lines joined with newlines
295
- * - Used for creating BashExecutionMessage
296
- *
297
- * getCommand():
298
- * - Returns: String of the command that was executed
299
- */
300
1
  import { Container, Loader, Spacer, Text } from "indusagi/tui";
301
2
  import stripAnsi from "strip-ansi";
302
- import { DEFAULT_MAX_BYTES, DEFAULT_MAX_LINES, truncateTail, } from "indusagi/agent";
3
+ import { DEFAULT_MAX_BYTES, DEFAULT_MAX_LINES, truncateTail } from "indusagi/agent";
303
4
  import { theme } from "../theme/theme.js";
304
5
  import { DynamicBorder } from "./dynamic-border.js";
305
6
  import { editorKey, keyHint } from "./keybinding-hints.js";
306
7
  import { truncateToVisualLines } from "./visual-truncate.js";
307
- // Preview line limit when not expanded (matches tool execution behavior)
308
8
  const PREVIEW_LINES = 20;
9
+ function createBorderPainter(excludeFromContext) {
10
+ const colorKey = excludeFromContext ? "dim" : "bashMode";
11
+ return (text) => theme.fg(colorKey, text);
12
+ }
13
+ function createCommandHeader(command, excludeFromContext) {
14
+ const colorKey = excludeFromContext ? "dim" : "bashMode";
15
+ return new Text(theme.fg(colorKey, theme.bold(`$ ${command}`)), 1, 0);
16
+ }
17
+ function normalizeBashChunk(chunk) {
18
+ return stripAnsi(chunk).replace(/\r\n/g, "\n").replace(/\r/g, "\n").split("\n");
19
+ }
20
+ function appendBashChunks(outputLines, chunk) {
21
+ const nextLines = normalizeBashChunk(chunk);
22
+ if (outputLines.length > 0 && nextLines.length > 0) {
23
+ outputLines[outputLines.length - 1] += nextLines[0];
24
+ outputLines.push(...nextLines.slice(1));
25
+ return outputLines;
26
+ }
27
+ outputLines.push(...nextLines);
28
+ return outputLines;
29
+ }
30
+ function buildContextLimitedOutput(outputLines) {
31
+ const truncation = truncateTail(outputLines.join("\n"), {
32
+ maxLines: DEFAULT_MAX_LINES,
33
+ maxBytes: DEFAULT_MAX_BYTES,
34
+ });
35
+ return { lines: truncation.content ? truncation.content.split("\n") : [], truncation };
36
+ }
37
+ function buildBashPreview(lines, expanded, width) {
38
+ const previewLines = lines.slice(-PREVIEW_LINES);
39
+ const hiddenLineCount = Math.max(0, lines.length - previewLines.length);
40
+ if (expanded) {
41
+ return { lines, hiddenLineCount };
42
+ }
43
+ const styledPreview = previewLines.map((line) => theme.fg("muted", line)).join("\n");
44
+ const { visualLines } = truncateToVisualLines(`\n${styledPreview}`, PREVIEW_LINES, width, 1);
45
+ return { lines: visualLines, hiddenLineCount };
46
+ }
47
+ function buildStatusLines(status, hiddenLineCount, expanded, exitCode, truncationResult, contextTruncation, fullOutputPath) {
48
+ const lines = [];
49
+ if (hiddenLineCount > 0) {
50
+ lines.push(expanded
51
+ ? `(${keyHint("expandTools", "to collapse")})`
52
+ : `${theme.fg("muted", `... ${hiddenLineCount} more lines`)} (${keyHint("expandTools", "to expand")})`);
53
+ }
54
+ if (status === "cancelled") {
55
+ lines.push(theme.fg("warning", "(cancelled)"));
56
+ }
57
+ else if (status === "error") {
58
+ lines.push(theme.fg("error", `(exit ${exitCode})`));
59
+ }
60
+ const wasTruncated = truncationResult?.truncated || contextTruncation.truncated;
61
+ if (wasTruncated && fullOutputPath) {
62
+ lines.push(theme.fg("warning", `Output truncated. Full output: ${fullOutputPath}`));
63
+ }
64
+ return lines;
65
+ }
66
+ function renderBashStatus(container, lines) {
67
+ if (lines.length > 0) {
68
+ container.addChild(new Text(`\n${lines.join("\n")}`, 1, 0));
69
+ }
70
+ }
309
71
  export class BashExecutionComponent extends Container {
310
72
  constructor(command, ui, excludeFromContext = false) {
311
73
  super();
312
74
  this.outputLines = [];
313
75
  this.status = "running";
314
- this.exitCode = undefined;
315
76
  this.expanded = false;
316
77
  this.command = command;
317
78
  this.ui = ui;
318
- // Use dim border for excluded-from-context commands (!! prefix)
319
- const colorKey = excludeFromContext ? "dim" : "bashMode";
320
- const borderColor = (str) => theme.fg(colorKey, str);
321
- // Add spacer
322
- this.addChild(new Spacer(1));
323
- // Top border
324
- this.addChild(new DynamicBorder(borderColor));
325
- // Content container (holds dynamic content between borders)
79
+ this.excludeFromContext = excludeFromContext;
326
80
  this.contentContainer = new Container();
81
+ this.loader = new Loader(ui, (spinner) => createBorderPainter(excludeFromContext)(spinner), (text) => theme.fg("muted", text), `Running... (${editorKey("selectCancel")} to cancel)`);
82
+ this.addChild(new Spacer(1));
83
+ this.addChild(new DynamicBorder(createBorderPainter(excludeFromContext)));
327
84
  this.addChild(this.contentContainer);
328
- // Command header
329
- const header = new Text(theme.fg(colorKey, theme.bold(`$ ${command}`)), 1, 0);
330
- this.contentContainer.addChild(header);
331
- // Loader
332
- this.loader = new Loader(ui, (spinner) => theme.fg(colorKey, spinner), (text) => theme.fg("muted", text), `Running... (${editorKey("selectCancel")} to cancel)`);
333
- this.contentContainer.addChild(this.loader);
334
- // Bottom border
335
- this.addChild(new DynamicBorder(borderColor));
85
+ this.addChild(new DynamicBorder(createBorderPainter(excludeFromContext)));
86
+ this.updateDisplay();
336
87
  }
337
- /**
338
- * Set whether the output is expanded (shows full output) or collapsed (preview only).
339
- */
340
88
  setExpanded(expanded) {
341
89
  this.expanded = expanded;
342
90
  this.updateDisplay();
@@ -346,107 +94,42 @@ export class BashExecutionComponent extends Container {
346
94
  this.updateDisplay();
347
95
  }
348
96
  appendOutput(chunk) {
349
- // Strip ANSI codes and normalize line endings
350
- // Note: binary data is already sanitized in tui-renderer.ts executeBashCommand
351
- const clean = stripAnsi(chunk).replace(/\r\n/g, "\n").replace(/\r/g, "\n");
352
- // Append to output lines
353
- const newLines = clean.split("\n");
354
- if (this.outputLines.length > 0 && newLines.length > 0) {
355
- // Append first chunk to last line (incomplete line continuation)
356
- this.outputLines[this.outputLines.length - 1] += newLines[0];
357
- this.outputLines.push(...newLines.slice(1));
358
- }
359
- else {
360
- this.outputLines.push(...newLines);
361
- }
97
+ appendBashChunks(this.outputLines, chunk);
362
98
  this.updateDisplay();
363
99
  }
364
100
  setComplete(exitCode, cancelled, truncationResult, fullOutputPath) {
365
101
  this.exitCode = exitCode;
366
- this.status = cancelled
367
- ? "cancelled"
368
- : exitCode !== 0 && exitCode !== undefined && exitCode !== null
369
- ? "error"
370
- : "complete";
102
+ this.status = cancelled ? "cancelled" : exitCode !== undefined && exitCode !== 0 ? "error" : "complete";
371
103
  this.truncationResult = truncationResult;
372
104
  this.fullOutputPath = fullOutputPath;
373
- // Stop loader
374
105
  this.loader.stop();
375
106
  this.updateDisplay();
376
107
  }
108
+ getOutput() {
109
+ return this.outputLines.join("\n");
110
+ }
111
+ getCommand() {
112
+ return this.command;
113
+ }
377
114
  updateDisplay() {
378
- // Apply truncation for LLM context limits (same limits as bash tool)
379
- const fullOutput = this.outputLines.join("\n");
380
- const contextTruncation = truncateTail(fullOutput, {
381
- maxLines: DEFAULT_MAX_LINES,
382
- maxBytes: DEFAULT_MAX_BYTES,
383
- });
384
- // Get the lines to potentially display (after context truncation)
385
- const availableLines = contextTruncation.content ? contextTruncation.content.split("\n") : [];
386
- // Apply preview truncation based on expanded state
387
- const previewLogicalLines = availableLines.slice(-PREVIEW_LINES);
388
- const hiddenLineCount = availableLines.length - previewLogicalLines.length;
389
- // Rebuild content container
115
+ const { lines, truncation } = buildContextLimitedOutput(this.outputLines);
116
+ const preview = buildBashPreview(lines, this.expanded, this.ui.terminal.columns);
390
117
  this.contentContainer.clear();
391
- // Command header
392
- const header = new Text(theme.fg("bashMode", theme.bold(`$ ${this.command}`)), 1, 0);
393
- this.contentContainer.addChild(header);
394
- // Output
395
- if (availableLines.length > 0) {
118
+ this.contentContainer.addChild(createCommandHeader(this.command, this.excludeFromContext));
119
+ if (lines.length > 0) {
396
120
  if (this.expanded) {
397
- // Show all lines
398
- const displayText = availableLines.map((line) => theme.fg("muted", line)).join("\n");
399
- this.contentContainer.addChild(new Text(`\n${displayText}`, 1, 0));
121
+ const styledOutput = lines.map((line) => theme.fg("muted", line)).join("\n");
122
+ this.contentContainer.addChild(new Text(`\n${styledOutput}`, 1, 0));
400
123
  }
401
124
  else {
402
- // Use shared visual truncation utility
403
- const styledOutput = previewLogicalLines.map((line) => theme.fg("muted", line)).join("\n");
404
- const { visualLines } = truncateToVisualLines(`\n${styledOutput}`, PREVIEW_LINES, this.ui.terminal.columns, 1);
405
- this.contentContainer.addChild({ render: () => visualLines, invalidate: () => { } });
125
+ this.contentContainer.addChild({ render: () => preview.lines, invalidate: () => { } });
406
126
  }
407
127
  }
408
- // Loader or status
409
128
  if (this.status === "running") {
410
129
  this.contentContainer.addChild(this.loader);
130
+ return;
411
131
  }
412
- else {
413
- const statusParts = [];
414
- // Show how many lines are hidden (collapsed preview)
415
- if (hiddenLineCount > 0) {
416
- if (this.expanded) {
417
- statusParts.push(`(${keyHint("expandTools", "to collapse")})`);
418
- }
419
- else {
420
- statusParts.push(`${theme.fg("muted", `... ${hiddenLineCount} more lines`)} (${keyHint("expandTools", "to expand")})`);
421
- }
422
- }
423
- if (this.status === "cancelled") {
424
- statusParts.push(theme.fg("warning", "(cancelled)"));
425
- }
426
- else if (this.status === "error") {
427
- statusParts.push(theme.fg("error", `(exit ${this.exitCode})`));
428
- }
429
- // Add truncation warning (context truncation, not preview truncation)
430
- const wasTruncated = this.truncationResult?.truncated || contextTruncation.truncated;
431
- if (wasTruncated && this.fullOutputPath) {
432
- statusParts.push(theme.fg("warning", `Output truncated. Full output: ${this.fullOutputPath}`));
433
- }
434
- if (statusParts.length > 0) {
435
- this.contentContainer.addChild(new Text(`\n${statusParts.join("\n")}`, 1, 0));
436
- }
437
- }
438
- }
439
- /**
440
- * Get the raw output for creating BashExecutionMessage.
441
- */
442
- getOutput() {
443
- return this.outputLines.join("\n");
444
- }
445
- /**
446
- * Get the command that was executed.
447
- */
448
- getCommand() {
449
- return this.command;
132
+ renderBashStatus(this.contentContainer, buildStatusLines(this.status, preview.hiddenLineCount, this.expanded, this.exitCode, this.truncationResult, truncation, this.fullOutputPath));
450
133
  }
451
134
  }
452
135
  //# sourceMappingURL=bash-execution.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bash-execution.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/bash-execution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bash-execution.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/bash-execution.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,7 @@ import { Container, type TUI } from "indusagi/tui";
2
2
  import type { Theme } from "../theme/theme.js";
3
3
  /** Loader wrapped with borders for extension UI */
4
4
  export declare class BorderedLoader extends Container {
5
- private loader;
6
- private cancellable;
7
- private signalController?;
5
+ private readonly binding;
8
6
  constructor(tui: TUI, theme: Theme, message: string, options?: {
9
7
  cancellable?: boolean;
10
8
  });
@@ -1 +1 @@
1
- {"version":3,"file":"bordered-loader.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/bordered-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,SAAS,EAAwB,KAAK,GAAG,EAAE,MAAM,cAAc,CAAC;AAC5F,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAI/C,mDAAmD;AACnD,qBAAa,cAAe,SAAQ,SAAS;IAC5C,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,gBAAgB,CAAC,CAAkB;gBAE/B,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE;IA8BxF,IAAI,MAAM,IAAI,WAAW,CAKxB;IAED,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,EAIvC;IAED,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAM/B,OAAO,IAAI,IAAI;CAKf"}
1
+ {"version":3,"file":"bordered-loader.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/bordered-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,SAAS,EAAwB,KAAK,GAAG,EAAE,MAAM,cAAc,CAAC;AAC5F,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAuE/C,mDAAmD;AACnD,qBAAa,cAAe,SAAQ,SAAS;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;gBAE5B,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE;IAcxF,IAAI,MAAM,IAAI,WAAW,CAExB;IAED,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,EAEvC;IAED,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI/B,OAAO,IAAI,IAAI;CAGf"}