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
@@ -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"}