indusagi-coding-agent 0.1.38 → 0.1.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (489) hide show
  1. package/CHANGELOG.md +13 -7
  2. package/README.md +2 -4
  3. package/dist/cli/args.d.ts +6 -128
  4. package/dist/cli/args.d.ts.map +1 -1
  5. package/dist/cli/args.js +277 -472
  6. package/dist/cli/args.js.map +1 -1
  7. package/dist/cli/config-selector.d.ts +9 -62
  8. package/dist/cli/config-selector.d.ts.map +1 -1
  9. package/dist/cli/config-selector.js +31 -146
  10. package/dist/cli/config-selector.js.map +1 -1
  11. package/dist/cli/file-processor.d.ts +1 -69
  12. package/dist/cli/file-processor.d.ts.map +1 -1
  13. package/dist/cli/file-processor.js +36 -267
  14. package/dist/cli/file-processor.js.map +1 -1
  15. package/dist/cli/list-models.d.ts +0 -60
  16. package/dist/cli/list-models.d.ts.map +1 -1
  17. package/dist/cli/list-models.js +53 -246
  18. package/dist/cli/list-models.js.map +1 -1
  19. package/dist/cli/session-picker.d.ts +1 -72
  20. package/dist/cli/session-picker.d.ts.map +1 -1
  21. package/dist/cli/session-picker.js +57 -231
  22. package/dist/cli/session-picker.js.map +1 -1
  23. package/dist/cli.js +25 -31
  24. package/dist/cli.js.map +1 -1
  25. package/dist/config.d.ts +0 -42
  26. package/dist/config.d.ts.map +1 -1
  27. package/dist/config.js +62 -97
  28. package/dist/config.js.map +1 -1
  29. package/dist/core/agent-session.d.ts +23 -0
  30. package/dist/core/agent-session.d.ts.map +1 -1
  31. package/dist/core/agent-session.js +78 -66
  32. package/dist/core/agent-session.js.map +1 -1
  33. package/dist/core/auth-storage.d.ts +4 -95
  34. package/dist/core/auth-storage.d.ts.map +1 -1
  35. package/dist/core/auth-storage.js +233 -288
  36. package/dist/core/auth-storage.js.map +1 -1
  37. package/dist/core/bash-executor.d.ts +0 -323
  38. package/dist/core/bash-executor.d.ts.map +1 -1
  39. package/dist/core/bash-executor.js +126 -359
  40. package/dist/core/bash-executor.js.map +1 -1
  41. package/dist/core/compaction/branch-summarization.d.ts +3 -3
  42. package/dist/core/compaction/branch-summarization.js +16 -16
  43. package/dist/core/compaction/branch-summarization.js.map +1 -1
  44. package/dist/core/compaction/compaction.d.ts +3 -3
  45. package/dist/core/compaction/compaction.js +40 -40
  46. package/dist/core/compaction/compaction.js.map +1 -1
  47. package/dist/core/compaction/index.d.ts +32 -4
  48. package/dist/core/compaction/index.d.ts.map +1 -1
  49. package/dist/core/compaction/index.js +30 -4
  50. package/dist/core/compaction/index.js.map +1 -1
  51. package/dist/core/compaction/utils.d.ts +1 -19
  52. package/dist/core/compaction/utils.d.ts.map +1 -1
  53. package/dist/core/compaction/utils.js +92 -113
  54. package/dist/core/compaction/utils.js.map +1 -1
  55. package/dist/core/discover-packages.d.ts +0 -4
  56. package/dist/core/discover-packages.d.ts.map +1 -1
  57. package/dist/core/discover-packages.js +41 -44
  58. package/dist/core/discover-packages.js.map +1 -1
  59. package/dist/core/event-bus.d.ts +1 -147
  60. package/dist/core/event-bus.d.ts.map +1 -1
  61. package/dist/core/event-bus.js +17 -106
  62. package/dist/core/event-bus.js.map +1 -1
  63. package/dist/core/exec.d.ts +0 -16
  64. package/dist/core/exec.d.ts.map +1 -1
  65. package/dist/core/exec.js +18 -27
  66. package/dist/core/exec.js.map +1 -1
  67. package/dist/core/export-html/ansi-to-html.ts +262 -0
  68. package/dist/core/export-html/index.ts +433 -0
  69. package/dist/core/export-html/template.html +48 -26
  70. package/dist/core/export-html/tool-renderer.d.ts +0 -21
  71. package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
  72. package/dist/core/export-html/tool-renderer.js +35 -51
  73. package/dist/core/export-html/tool-renderer.js.map +1 -1
  74. package/dist/core/export-html/tool-renderer.ts +80 -0
  75. package/dist/core/export-html/vendor/highlight.min.js +401 -370
  76. package/dist/core/export-html/vendor/marked.min.js +71 -3
  77. package/dist/core/extensions/index.d.ts +7 -4
  78. package/dist/core/extensions/index.d.ts.map +1 -1
  79. package/dist/core/extensions/index.js +17 -3
  80. package/dist/core/extensions/index.js.map +1 -1
  81. package/dist/core/extensions/loader.d.ts +0 -6
  82. package/dist/core/extensions/loader.d.ts.map +1 -1
  83. package/dist/core/extensions/loader.js +60 -56
  84. package/dist/core/extensions/loader.js.map +1 -1
  85. package/dist/core/extensions/runner.d.ts +3 -0
  86. package/dist/core/extensions/runner.d.ts.map +1 -1
  87. package/dist/core/extensions/runner.js +48 -80
  88. package/dist/core/extensions/runner.js.map +1 -1
  89. package/dist/core/extensions/types.d.ts +50 -23
  90. package/dist/core/extensions/types.d.ts.map +1 -1
  91. package/dist/core/footer-data-provider.d.ts +2 -15
  92. package/dist/core/footer-data-provider.d.ts.map +1 -1
  93. package/dist/core/footer-data-provider.js +21 -33
  94. package/dist/core/footer-data-provider.js.map +1 -1
  95. package/dist/core/hooks/loader.js +2 -2
  96. package/dist/core/hooks/loader.js.map +1 -1
  97. package/dist/core/index.d.ts +29 -10
  98. package/dist/core/index.d.ts.map +1 -1
  99. package/dist/core/index.js +29 -10
  100. package/dist/core/index.js.map +1 -1
  101. package/dist/core/keybindings.d.ts +2 -179
  102. package/dist/core/keybindings.d.ts.map +1 -1
  103. package/dist/core/keybindings.js +64 -238
  104. package/dist/core/keybindings.js.map +1 -1
  105. package/dist/core/model-registry.d.ts +26 -181
  106. package/dist/core/model-registry.d.ts.map +1 -1
  107. package/dist/core/model-registry.js +228 -407
  108. package/dist/core/model-registry.js.map +1 -1
  109. package/dist/core/model-resolver.d.ts +0 -139
  110. package/dist/core/model-resolver.d.ts.map +1 -1
  111. package/dist/core/model-resolver.js +34 -215
  112. package/dist/core/model-resolver.js.map +1 -1
  113. package/dist/core/package-manager.d.ts +25 -57
  114. package/dist/core/package-manager.d.ts.map +1 -1
  115. package/dist/core/package-manager.js +326 -964
  116. package/dist/core/package-manager.js.map +1 -1
  117. package/dist/core/prompt-templates.d.ts +2 -34
  118. package/dist/core/prompt-templates.d.ts.map +1 -1
  119. package/dist/core/prompt-templates.js +122 -170
  120. package/dist/core/prompt-templates.js.map +1 -1
  121. package/dist/core/resource-loader.d.ts +19 -12
  122. package/dist/core/resource-loader.d.ts.map +1 -1
  123. package/dist/core/resource-loader.js +353 -467
  124. package/dist/core/resource-loader.js.map +1 -1
  125. package/dist/core/sdk.d.ts +2 -61
  126. package/dist/core/sdk.d.ts.map +1 -1
  127. package/dist/core/sdk.js +184 -252
  128. package/dist/core/sdk.js.map +1 -1
  129. package/dist/core/session-manager.d.ts +447 -1
  130. package/dist/core/session-manager.d.ts.map +1 -1
  131. package/dist/core/session-manager.js +1176 -1
  132. package/dist/core/session-manager.js.map +1 -1
  133. package/dist/core/settings-manager.d.ts +9 -12
  134. package/dist/core/settings-manager.d.ts.map +1 -1
  135. package/dist/core/settings-manager.js +170 -398
  136. package/dist/core/settings-manager.js.map +1 -1
  137. package/dist/core/skills.d.ts +2 -27
  138. package/dist/core/skills.d.ts.map +1 -1
  139. package/dist/core/skills.js +149 -212
  140. package/dist/core/skills.js.map +1 -1
  141. package/dist/core/subagents.d.ts +2 -2
  142. package/dist/core/subagents.d.ts.map +1 -1
  143. package/dist/core/subagents.js +21 -14
  144. package/dist/core/subagents.js.map +1 -1
  145. package/dist/core/system-prompt.d.ts +0 -11
  146. package/dist/core/system-prompt.d.ts.map +1 -1
  147. package/dist/core/system-prompt.js +168 -139
  148. package/dist/core/system-prompt.js.map +1 -1
  149. package/dist/core/timings.d.ts +1 -4
  150. package/dist/core/timings.d.ts.map +1 -1
  151. package/dist/core/timings.js +34 -18
  152. package/dist/core/timings.js.map +1 -1
  153. package/dist/core/todo-store.d.ts +20 -0
  154. package/dist/core/todo-store.d.ts.map +1 -0
  155. package/dist/core/todo-store.js +60 -0
  156. package/dist/core/todo-store.js.map +1 -0
  157. package/dist/core/tools/bash.d.ts +2 -0
  158. package/dist/core/tools/bash.d.ts.map +1 -0
  159. package/dist/core/tools/bash.js +2 -0
  160. package/dist/core/tools/bash.js.map +1 -0
  161. package/dist/core/tools/bg-process.d.ts +1 -6
  162. package/dist/core/tools/bg-process.d.ts.map +1 -1
  163. package/dist/core/tools/bg-process.js +4 -18
  164. package/dist/core/tools/bg-process.js.map +1 -1
  165. package/dist/core/tools/edit-diff.d.ts +9 -0
  166. package/dist/core/tools/edit-diff.d.ts.map +1 -0
  167. package/dist/core/tools/edit-diff.js +2 -0
  168. package/dist/core/tools/edit-diff.js.map +1 -0
  169. package/dist/core/tools/edit.d.ts +2 -0
  170. package/dist/core/tools/edit.d.ts.map +1 -0
  171. package/dist/core/tools/edit.js +2 -0
  172. package/dist/core/tools/edit.js.map +1 -0
  173. package/dist/core/tools/find.d.ts +2 -0
  174. package/dist/core/tools/find.d.ts.map +1 -0
  175. package/dist/core/tools/find.js +2 -0
  176. package/dist/core/tools/find.js.map +1 -0
  177. package/dist/core/tools/grep.d.ts +2 -0
  178. package/dist/core/tools/grep.d.ts.map +1 -0
  179. package/dist/core/tools/grep.js +2 -0
  180. package/dist/core/tools/grep.js.map +1 -0
  181. package/dist/core/tools/index.d.ts +7 -1
  182. package/dist/core/tools/index.d.ts.map +1 -1
  183. package/dist/core/tools/ls.d.ts +2 -0
  184. package/dist/core/tools/ls.d.ts.map +1 -0
  185. package/dist/core/tools/ls.js +2 -0
  186. package/dist/core/tools/ls.js.map +1 -0
  187. package/dist/core/tools/path-utils.d.ts +2 -0
  188. package/dist/core/tools/path-utils.d.ts.map +1 -0
  189. package/dist/core/tools/path-utils.js +2 -0
  190. package/dist/core/tools/path-utils.js.map +1 -0
  191. package/dist/core/tools/read.d.ts +2 -0
  192. package/dist/core/tools/read.d.ts.map +1 -0
  193. package/dist/core/tools/read.js +2 -0
  194. package/dist/core/tools/read.js.map +1 -0
  195. package/dist/core/tools/registry.d.ts +0 -15
  196. package/dist/core/tools/registry.d.ts.map +1 -1
  197. package/dist/core/tools/registry.js +13 -37
  198. package/dist/core/tools/registry.js.map +1 -1
  199. package/dist/core/tools/task.d.ts +17 -23
  200. package/dist/core/tools/task.d.ts.map +1 -1
  201. package/dist/core/tools/task.js +43 -82
  202. package/dist/core/tools/task.js.map +1 -1
  203. package/dist/core/tools/todo.d.ts +17 -20
  204. package/dist/core/tools/todo.d.ts.map +1 -1
  205. package/dist/core/tools/todo.js +79 -58
  206. package/dist/core/tools/todo.js.map +1 -1
  207. package/dist/core/tools/truncate.d.ts +2 -0
  208. package/dist/core/tools/truncate.d.ts.map +1 -0
  209. package/dist/core/tools/truncate.js +2 -0
  210. package/dist/core/tools/truncate.js.map +1 -0
  211. package/dist/core/tools/webfetch.d.ts +2 -0
  212. package/dist/core/tools/webfetch.d.ts.map +1 -0
  213. package/dist/core/tools/webfetch.js +2 -0
  214. package/dist/core/tools/webfetch.js.map +1 -0
  215. package/dist/core/tools/websearch.d.ts +2 -0
  216. package/dist/core/tools/websearch.d.ts.map +1 -0
  217. package/dist/core/tools/websearch.js +2 -0
  218. package/dist/core/tools/websearch.js.map +1 -0
  219. package/dist/core/tools/write.d.ts +2 -0
  220. package/dist/core/tools/write.d.ts.map +1 -0
  221. package/dist/core/tools/write.js +2 -0
  222. package/dist/core/tools/write.js.map +1 -0
  223. package/dist/index.d.ts +35 -29
  224. package/dist/index.d.ts.map +1 -1
  225. package/dist/index.js +33 -41
  226. package/dist/index.js.map +1 -1
  227. package/dist/main.d.ts.map +1 -1
  228. package/dist/main.js +237 -225
  229. package/dist/main.js.map +1 -1
  230. package/dist/migrations.d.ts +0 -25
  231. package/dist/migrations.d.ts.map +1 -1
  232. package/dist/migrations.js +129 -180
  233. package/dist/migrations.js.map +1 -1
  234. package/dist/modes/index.d.ts +13 -6
  235. package/dist/modes/index.d.ts.map +1 -1
  236. package/dist/modes/index.js +11 -5
  237. package/dist/modes/index.js.map +1 -1
  238. package/dist/modes/interactive/components/armin.d.ts +8 -23
  239. package/dist/modes/interactive/components/armin.d.ts.map +1 -1
  240. package/dist/modes/interactive/components/armin.js +217 -266
  241. package/dist/modes/interactive/components/armin.js.map +1 -1
  242. package/dist/modes/interactive/components/assistant-message.d.ts +2 -168
  243. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  244. package/dist/modes/interactive/components/assistant-message.js +61 -216
  245. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  246. package/dist/modes/interactive/components/bash-execution.d.ts +6 -313
  247. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
  248. package/dist/modes/interactive/components/bash-execution.js +86 -403
  249. package/dist/modes/interactive/components/bash-execution.js.map +1 -1
  250. package/dist/modes/interactive/components/bordered-loader.d.ts +1 -3
  251. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
  252. package/dist/modes/interactive/components/bordered-loader.js +59 -29
  253. package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
  254. package/dist/modes/interactive/components/branch-summary-message.d.ts +3 -3
  255. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
  256. package/dist/modes/interactive/components/branch-summary-message.js +30 -17
  257. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
  258. package/dist/modes/interactive/components/compaction-summary-message.d.ts +3 -3
  259. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
  260. package/dist/modes/interactive/components/compaction-summary-message.js +35 -18
  261. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
  262. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  263. package/dist/modes/interactive/components/config-selector.js +60 -68
  264. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  265. package/dist/modes/interactive/components/countdown-timer.d.ts +2 -6
  266. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
  267. package/dist/modes/interactive/components/countdown-timer.js +32 -18
  268. package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
  269. package/dist/modes/interactive/components/custom-editor.d.ts +1 -5
  270. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  271. package/dist/modes/interactive/components/custom-editor.js +45 -37
  272. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  273. package/dist/modes/interactive/components/custom-message.d.ts +5 -6
  274. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  275. package/dist/modes/interactive/components/custom-message.js +43 -53
  276. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  277. package/dist/modes/interactive/components/diff.d.ts +0 -3
  278. package/dist/modes/interactive/components/diff.d.ts.map +1 -1
  279. package/dist/modes/interactive/components/diff.js +101 -108
  280. package/dist/modes/interactive/components/diff.js.map +1 -1
  281. package/dist/modes/interactive/components/dynamic-border.d.ts +7 -2
  282. package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
  283. package/dist/modes/interactive/components/dynamic-border.js +24 -4
  284. package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
  285. package/dist/modes/interactive/components/extension-editor.d.ts +5 -9
  286. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  287. package/dist/modes/interactive/components/extension-editor.js +43 -46
  288. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  289. package/dist/modes/interactive/components/extension-input.d.ts +4 -9
  290. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
  291. package/dist/modes/interactive/components/extension-input.js +45 -28
  292. package/dist/modes/interactive/components/extension-input.js.map +1 -1
  293. package/dist/modes/interactive/components/extension-selector.d.ts +7 -12
  294. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
  295. package/dist/modes/interactive/components/extension-selector.js +54 -32
  296. package/dist/modes/interactive/components/extension-selector.js.map +1 -1
  297. package/dist/modes/interactive/components/footer.d.ts +2 -11
  298. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  299. package/dist/modes/interactive/components/footer.js +135 -183
  300. package/dist/modes/interactive/components/footer.js.map +1 -1
  301. package/dist/modes/interactive/components/index.d.ts +79 -30
  302. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  303. package/dist/modes/interactive/components/index.js +73 -31
  304. package/dist/modes/interactive/components/index.js.map +1 -1
  305. package/dist/modes/interactive/components/keybinding-hints.d.ts +0 -18
  306. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
  307. package/dist/modes/interactive/components/keybinding-hints.js +24 -31
  308. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
  309. package/dist/modes/interactive/components/login-dialog.d.ts +11 -24
  310. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  311. package/dist/modes/interactive/components/login-dialog.js +89 -86
  312. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  313. package/dist/modes/interactive/components/model-selector.d.ts +15 -19
  314. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  315. package/dist/modes/interactive/components/model-selector.js +104 -157
  316. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  317. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  318. package/dist/modes/interactive/components/oauth-selector.js +5 -5
  319. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  320. package/dist/modes/interactive/components/scoped-models-selector.d.ts +12 -22
  321. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  322. package/dist/modes/interactive/components/scoped-models-selector.js +111 -132
  323. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  324. package/dist/modes/interactive/components/session-selector-search.d.ts +3 -3
  325. package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -1
  326. package/dist/modes/interactive/components/session-selector-search.js +92 -103
  327. package/dist/modes/interactive/components/session-selector-search.js.map +1 -1
  328. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  329. package/dist/modes/interactive/components/session-selector.js +28 -39
  330. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  331. package/dist/modes/interactive/components/settings-selector.d.ts +1 -1
  332. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  333. package/dist/modes/interactive/components/settings-selector.js +111 -203
  334. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  335. package/dist/modes/interactive/components/show-images-selector.d.ts +1 -1
  336. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -1
  337. package/dist/modes/interactive/components/show-images-selector.js +17 -19
  338. package/dist/modes/interactive/components/show-images-selector.js.map +1 -1
  339. package/dist/modes/interactive/components/skill-invocation-message.d.ts +3 -3
  340. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
  341. package/dist/modes/interactive/components/skill-invocation-message.js +29 -19
  342. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  343. package/dist/modes/interactive/components/theme-selector.d.ts +2 -2
  344. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
  345. package/dist/modes/interactive/components/theme-selector.js +20 -25
  346. package/dist/modes/interactive/components/theme-selector.js.map +1 -1
  347. package/dist/modes/interactive/components/thinking-selector.d.ts +1 -1
  348. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  349. package/dist/modes/interactive/components/thinking-selector.js +19 -20
  350. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  351. package/dist/modes/interactive/components/tool-execution.d.ts +12 -10
  352. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  353. package/dist/modes/interactive/components/tool-execution.js +14 -8
  354. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  355. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
  356. package/dist/modes/interactive/components/tree-selector.js +53 -60
  357. package/dist/modes/interactive/components/tree-selector.js.map +1 -1
  358. package/dist/modes/interactive/components/user-message-selector.d.ts +3 -9
  359. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
  360. package/dist/modes/interactive/components/user-message-selector.js +57 -68
  361. package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
  362. package/dist/modes/interactive/components/visual-truncate.d.ts +0 -12
  363. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -1
  364. package/dist/modes/interactive/components/visual-truncate.js +14 -22
  365. package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
  366. package/dist/modes/interactive/interactive-mode.d.ts +6 -0
  367. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  368. package/dist/modes/interactive/interactive-mode.js +118 -113
  369. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  370. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  371. package/dist/modes/interactive/theme/theme.js +189 -39
  372. package/dist/modes/interactive/theme/theme.js.map +1 -1
  373. package/dist/modes/rpc/rpc-client.d.ts +8 -1
  374. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  375. package/dist/modes/rpc/rpc-client.js +88 -59
  376. package/dist/modes/rpc/rpc-client.js.map +1 -1
  377. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  378. package/dist/modes/rpc/rpc-mode.js +24 -46
  379. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  380. package/dist/modes/rpc/rpc-types.d.ts +75 -409
  381. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  382. package/dist/modes/rpc/rpc-types.js +21 -360
  383. package/dist/modes/rpc/rpc-types.js.map +1 -1
  384. package/dist/observability/core/config.d.ts +28 -0
  385. package/dist/observability/core/config.d.ts.map +1 -0
  386. package/dist/observability/core/config.js +150 -0
  387. package/dist/observability/core/config.js.map +1 -0
  388. package/dist/observability/core/event-bus.d.ts +15 -0
  389. package/dist/observability/core/event-bus.d.ts.map +1 -0
  390. package/dist/observability/core/event-bus.js +37 -0
  391. package/dist/observability/core/event-bus.js.map +1 -0
  392. package/dist/observability/core/index.d.ts +12 -0
  393. package/dist/observability/core/index.d.ts.map +1 -0
  394. package/dist/observability/core/index.js +14 -0
  395. package/dist/observability/core/index.js.map +1 -0
  396. package/dist/observability/core/observability.d.ts +63 -0
  397. package/dist/observability/core/observability.d.ts.map +1 -0
  398. package/dist/observability/core/observability.js +127 -0
  399. package/dist/observability/core/observability.js.map +1 -0
  400. package/dist/observability/core/span.d.ts +37 -0
  401. package/dist/observability/core/span.d.ts.map +1 -0
  402. package/dist/observability/core/span.js +90 -0
  403. package/dist/observability/core/span.js.map +1 -0
  404. package/dist/observability/core/tracer.d.ts +22 -0
  405. package/dist/observability/core/tracer.d.ts.map +1 -0
  406. package/dist/observability/core/tracer.js +79 -0
  407. package/dist/observability/core/tracer.js.map +1 -0
  408. package/dist/observability/core/types.d.ts +155 -0
  409. package/dist/observability/core/types.d.ts.map +1 -0
  410. package/dist/observability/core/types.js +38 -0
  411. package/dist/observability/core/types.js.map +1 -0
  412. package/dist/observability/exporters/base-exporter.d.ts +16 -0
  413. package/dist/observability/exporters/base-exporter.d.ts.map +1 -0
  414. package/dist/observability/exporters/base-exporter.js +26 -0
  415. package/dist/observability/exporters/base-exporter.js.map +1 -0
  416. package/dist/observability/exporters/console-exporter.d.ts +22 -0
  417. package/dist/observability/exporters/console-exporter.d.ts.map +1 -0
  418. package/dist/observability/exporters/console-exporter.js +80 -0
  419. package/dist/observability/exporters/console-exporter.js.map +1 -0
  420. package/dist/observability/exporters/file-exporter.d.ts +31 -0
  421. package/dist/observability/exporters/file-exporter.d.ts.map +1 -0
  422. package/dist/observability/exporters/file-exporter.js +120 -0
  423. package/dist/observability/exporters/file-exporter.js.map +1 -0
  424. package/dist/observability/exporters/index.d.ts +12 -0
  425. package/dist/observability/exporters/index.d.ts.map +1 -0
  426. package/dist/observability/exporters/index.js +11 -0
  427. package/dist/observability/exporters/index.js.map +1 -0
  428. package/dist/observability/exporters/langfuse-exporter.d.ts +27 -0
  429. package/dist/observability/exporters/langfuse-exporter.d.ts.map +1 -0
  430. package/dist/observability/exporters/langfuse-exporter.js +146 -0
  431. package/dist/observability/exporters/langfuse-exporter.js.map +1 -0
  432. package/dist/observability/exporters/sentry-exporter.d.ts +22 -0
  433. package/dist/observability/exporters/sentry-exporter.d.ts.map +1 -0
  434. package/dist/observability/exporters/sentry-exporter.js +121 -0
  435. package/dist/observability/exporters/sentry-exporter.js.map +1 -0
  436. package/dist/observability/index.d.ts +3 -0
  437. package/dist/observability/index.d.ts.map +1 -0
  438. package/dist/observability/index.js +3 -0
  439. package/dist/observability/index.js.map +1 -0
  440. package/dist/utils/changelog.d.ts +1 -2
  441. package/dist/utils/changelog.d.ts.map +1 -1
  442. package/dist/utils/changelog.js +53 -61
  443. package/dist/utils/changelog.js.map +1 -1
  444. package/dist/utils/clipboard-image.d.ts.map +1 -1
  445. package/dist/utils/clipboard-image.js +77 -83
  446. package/dist/utils/clipboard-image.js.map +1 -1
  447. package/dist/utils/clipboard.d.ts.map +1 -1
  448. package/dist/utils/clipboard.js +62 -49
  449. package/dist/utils/clipboard.js.map +1 -1
  450. package/dist/utils/image-convert.d.ts +6 -6
  451. package/dist/utils/image-convert.d.ts.map +1 -1
  452. package/dist/utils/image-convert.js +29 -23
  453. package/dist/utils/image-convert.js.map +1 -1
  454. package/dist/utils/image-resize.d.ts +0 -17
  455. package/dist/utils/image-resize.d.ts.map +1 -1
  456. package/dist/utils/image-resize.js +100 -138
  457. package/dist/utils/image-resize.js.map +1 -1
  458. package/dist/utils/mime.d.ts +1 -0
  459. package/dist/utils/mime.d.ts.map +1 -1
  460. package/dist/utils/mime.js +35 -15
  461. package/dist/utils/mime.js.map +1 -1
  462. package/dist/utils/photon.d.ts +4 -15
  463. package/dist/utils/photon.d.ts.map +1 -1
  464. package/dist/utils/photon.js +71 -60
  465. package/dist/utils/photon.js.map +1 -1
  466. package/dist/utils/shell.d.ts +4 -21
  467. package/dist/utils/shell.d.ts.map +1 -1
  468. package/dist/utils/shell.js +101 -124
  469. package/dist/utils/shell.js.map +1 -1
  470. package/dist/utils/sleep.d.ts +1 -1
  471. package/dist/utils/sleep.d.ts.map +1 -1
  472. package/dist/utils/sleep.js +32 -8
  473. package/dist/utils/sleep.js.map +1 -1
  474. package/dist/utils/tools-manager.d.ts +4 -2
  475. package/dist/utils/tools-manager.d.ts.map +1 -1
  476. package/dist/utils/tools-manager.js +96 -122
  477. package/dist/utils/tools-manager.js.map +1 -1
  478. package/docs/PI_MONO_MIT_REMOVAL_GUIDE.md +2132 -0
  479. package/docs/SAME_TO_SAME_PARITY_REPORT.md +312 -0
  480. package/examples/README.md +12 -0
  481. package/package.json +60 -88
  482. package/LICENSE.md +0 -22
  483. package/dist/modes/interactive/theme/dark.json +0 -85
  484. package/dist/modes/interactive/theme/light.json +0 -84
  485. package/dist/modes/interactive/theme/theme-schema.json +0 -335
  486. package/docs/FEATURES.md +0 -306
  487. package/docs/MCP.md +0 -341
  488. package/docs/MEMORY.md +0 -443
  489. package/examples/mcp-servers.example.json +0 -50
@@ -1,9 +1,8 @@
1
1
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
2
2
  import { dirname, join } from "path";
3
- import { CONFIG_DIR_NAME, getAgentDir } from "../config.js";
4
3
  import { resolveToCwd } from "indusagi/agent";
5
- /** Deep merge settings: project/overrides take precedence, nested objects merge recursively */
6
- function deepMergeSettings(base, overrides) {
4
+ import { CONFIG_DIR_NAME, getAgentDir } from "../config.js";
5
+ function mergeSettingsLayers(base, overrides) {
7
6
  const result = { ...base };
8
7
  for (const key of Object.keys(overrides)) {
9
8
  const overrideValue = overrides[key];
@@ -11,7 +10,6 @@ function deepMergeSettings(base, overrides) {
11
10
  if (overrideValue === undefined) {
12
11
  continue;
13
12
  }
14
- // For nested objects, merge recursively
15
13
  if (typeof overrideValue === "object" &&
16
14
  overrideValue !== null &&
17
15
  !Array.isArray(overrideValue) &&
@@ -21,317 +19,208 @@ function deepMergeSettings(base, overrides) {
21
19
  result[key] = { ...baseValue, ...overrideValue };
22
20
  }
23
21
  else {
24
- // For primitives and arrays, override value wins
25
22
  result[key] = overrideValue;
26
23
  }
27
24
  }
28
25
  return result;
29
26
  }
27
+ function normalizeSettingsPaths(settings) {
28
+ const normalized = structuredClone(settings);
29
+ const arrayKeys = ["extensions", "hooks", "skills", "prompts", "themes", "enabledModels"];
30
+ for (const key of arrayKeys) {
31
+ const value = normalized[key];
32
+ if (Array.isArray(value)) {
33
+ normalized[key] = value.filter((entry) => typeof entry === "string" && entry.trim().length > 0);
34
+ }
35
+ }
36
+ return normalized;
37
+ }
38
+ function createSettingsSnapshot(globalSettings, projectSettings) {
39
+ return mergeSettingsLayers(normalizeSettingsPaths(globalSettings), normalizeSettingsPaths(projectSettings));
40
+ }
41
+ function ensureParentDirectory(filePath) {
42
+ const dir = dirname(filePath);
43
+ if (!existsSync(dir)) {
44
+ mkdirSync(dir, { recursive: true });
45
+ }
46
+ }
30
47
  export class SettingsManager {
31
48
  constructor(settingsPath, projectSettingsPath, initialSettings, persist) {
32
49
  this.settingsPath = settingsPath;
33
50
  this.projectSettingsPath = projectSettingsPath;
34
51
  this.persist = persist;
35
- this.globalSettings = initialSettings;
52
+ this.globalSettings = normalizeSettingsPaths(initialSettings);
36
53
  this.inMemoryProjectSettings = {};
37
- const projectSettings = this.loadProjectSettings();
38
- this.settings = deepMergeSettings(this.globalSettings, projectSettings);
54
+ this.settings = createSettingsSnapshot(this.globalSettings, this.loadProjectSettings());
39
55
  }
40
- /** Create a SettingsManager that loads from files */
41
56
  static create(cwd = process.cwd(), agentDir = getAgentDir()) {
42
- const settingsPath = join(agentDir, "settings.json");
43
- const projectSettingsPath = join(cwd, CONFIG_DIR_NAME, "settings.json");
44
- const globalSettings = SettingsManager.loadFromFile(settingsPath);
45
- return new SettingsManager(settingsPath, projectSettingsPath, globalSettings, true);
57
+ return new SettingsManager(join(agentDir, "settings.json"), join(cwd, CONFIG_DIR_NAME, "settings.json"), SettingsManager.loadSettingsFile(join(agentDir, "settings.json")), true);
46
58
  }
47
- /** Create an in-memory SettingsManager (no file I/O) */
48
59
  static inMemory(settings = {}) {
49
60
  return new SettingsManager(null, null, settings, false);
50
61
  }
51
- static loadFromFile(path) {
52
- if (!existsSync(path)) {
53
- return {};
54
- }
55
- try {
56
- const content = readFileSync(path, "utf-8");
57
- const settings = JSON.parse(content);
58
- return SettingsManager.migrateSettings(settings);
59
- }
60
- catch (error) {
61
- console.error(`Warning: Could not read settings file ${path}: ${error}`);
62
- return {};
63
- }
64
- }
65
- /** Migrate old settings format to new format */
66
- static migrateSettings(settings) {
67
- // Migrate queueMode -> steeringMode
62
+ static migrateSettings(raw) {
63
+ const settings = { ...raw };
68
64
  if ("queueMode" in settings && !("steeringMode" in settings)) {
69
65
  settings.steeringMode = settings.queueMode;
70
66
  delete settings.queueMode;
71
67
  }
72
- // Migrate old skills object format to new array format
73
68
  if ("skills" in settings &&
74
69
  typeof settings.skills === "object" &&
75
70
  settings.skills !== null &&
76
71
  !Array.isArray(settings.skills)) {
77
- const skillsSettings = settings.skills;
78
- if (skillsSettings.enableSkillCommands !== undefined && settings.enableSkillCommands === undefined) {
79
- settings.enableSkillCommands = skillsSettings.enableSkillCommands;
72
+ const legacy = settings.skills;
73
+ if (legacy.enableSkillCommands !== undefined && settings.enableSkillCommands === undefined) {
74
+ settings.enableSkillCommands = legacy.enableSkillCommands;
80
75
  }
81
- if (Array.isArray(skillsSettings.customDirectories) && skillsSettings.customDirectories.length > 0) {
82
- settings.skills = skillsSettings.customDirectories;
76
+ if (Array.isArray(legacy.customDirectories) && legacy.customDirectories.length > 0) {
77
+ settings.skills = legacy.customDirectories;
83
78
  }
84
79
  else {
85
80
  delete settings.skills;
86
81
  }
87
82
  }
88
- return settings;
83
+ return normalizeSettingsPaths(settings);
84
+ }
85
+ static loadSettingsFile(filePath) {
86
+ if (!existsSync(filePath)) {
87
+ return {};
88
+ }
89
+ try {
90
+ return SettingsManager.migrateSettings(JSON.parse(readFileSync(filePath, "utf-8")));
91
+ }
92
+ catch (error) {
93
+ console.error(`Warning: Could not read settings file ${filePath}: ${error}`);
94
+ return {};
95
+ }
89
96
  }
90
97
  loadProjectSettings() {
91
- // In-memory mode: return stored in-memory project settings
92
98
  if (!this.persist) {
93
99
  return structuredClone(this.inMemoryProjectSettings);
94
100
  }
95
101
  if (!this.projectSettingsPath || !existsSync(this.projectSettingsPath)) {
96
102
  return {};
97
103
  }
104
+ return SettingsManager.loadSettingsFile(this.projectSettingsPath);
105
+ }
106
+ refreshSnapshot(projectOverride) {
107
+ this.settings = createSettingsSnapshot(this.globalSettings, projectOverride ?? this.loadProjectSettings());
108
+ }
109
+ persistSettingsLayer(targetPath, settings) {
110
+ if (!this.persist || !targetPath) {
111
+ return;
112
+ }
98
113
  try {
99
- const content = readFileSync(this.projectSettingsPath, "utf-8");
100
- const settings = JSON.parse(content);
101
- return SettingsManager.migrateSettings(settings);
114
+ ensureParentDirectory(targetPath);
115
+ writeFileSync(targetPath, JSON.stringify(normalizeSettingsPaths(settings), null, 2), "utf-8");
102
116
  }
103
117
  catch (error) {
104
- console.error(`Warning: Could not read project settings file: ${error}`);
105
- return {};
118
+ console.error(`Warning: Could not save settings file: ${error}`);
106
119
  }
107
120
  }
108
- getGlobalSettings() {
109
- return structuredClone(this.globalSettings);
110
- }
111
- getProjectSettings() {
112
- return this.loadProjectSettings();
113
- }
114
- /** Apply additional overrides on top of current settings */
115
- applyOverrides(overrides) {
116
- this.settings = deepMergeSettings(this.settings, overrides);
117
- }
118
121
  save() {
119
122
  if (this.persist && this.settingsPath) {
120
- try {
121
- const dir = dirname(this.settingsPath);
122
- if (!existsSync(dir)) {
123
- mkdirSync(dir, { recursive: true });
124
- }
125
- // Re-read current file to preserve any settings added externally while running
126
- const currentFileSettings = SettingsManager.loadFromFile(this.settingsPath);
127
- // Merge: file settings as base, globalSettings (in-memory changes) as overrides
128
- const mergedSettings = deepMergeSettings(currentFileSettings, this.globalSettings);
129
- this.globalSettings = mergedSettings;
130
- // Save merged settings (project settings are read-only)
131
- writeFileSync(this.settingsPath, JSON.stringify(this.globalSettings, null, 2), "utf-8");
132
- }
133
- catch (error) {
134
- console.error(`Warning: Could not save settings file: ${error}`);
135
- }
123
+ const mergedWithDisk = mergeSettingsLayers(SettingsManager.loadSettingsFile(this.settingsPath), this.globalSettings);
124
+ this.globalSettings = normalizeSettingsPaths(mergedWithDisk);
125
+ this.persistSettingsLayer(this.settingsPath, this.globalSettings);
136
126
  }
137
- // Always re-merge to update active settings (needed for both file and inMemory modes)
138
- const projectSettings = this.loadProjectSettings();
139
- this.settings = deepMergeSettings(this.globalSettings, projectSettings);
127
+ this.refreshSnapshot();
140
128
  }
141
129
  saveProjectSettings(settings) {
142
- // In-memory mode: store in memory
130
+ const normalized = normalizeSettingsPaths(settings);
143
131
  if (!this.persist) {
144
- this.inMemoryProjectSettings = structuredClone(settings);
132
+ this.inMemoryProjectSettings = structuredClone(normalized);
133
+ this.refreshSnapshot(this.inMemoryProjectSettings);
145
134
  return;
146
135
  }
147
136
  if (!this.projectSettingsPath) {
148
137
  return;
149
138
  }
150
- try {
151
- const dir = dirname(this.projectSettingsPath);
152
- if (!existsSync(dir)) {
153
- mkdirSync(dir, { recursive: true });
154
- }
155
- writeFileSync(this.projectSettingsPath, JSON.stringify(settings, null, 2), "utf-8");
156
- }
157
- catch (error) {
158
- console.error(`Warning: Could not save project settings file: ${error}`);
159
- }
139
+ this.persistSettingsLayer(this.projectSettingsPath, normalized);
140
+ this.refreshSnapshot(normalized);
160
141
  }
161
- getLastChangelogVersion() {
162
- return this.settings.lastChangelogVersion;
142
+ refreshSettings() {
143
+ if (this.persist && this.settingsPath) {
144
+ this.globalSettings = SettingsManager.loadSettingsFile(this.settingsPath);
145
+ }
146
+ this.refreshSnapshot();
163
147
  }
164
- setLastChangelogVersion(version) {
165
- this.globalSettings.lastChangelogVersion = version;
166
- this.save();
148
+ getGlobalSettings() {
149
+ return structuredClone(this.globalSettings);
167
150
  }
168
- getDefaultProvider() {
169
- return this.settings.defaultProvider;
151
+ getProjectSettings() {
152
+ return this.loadProjectSettings();
170
153
  }
171
- getDefaultModel() {
172
- return this.settings.defaultModel;
154
+ applyOverrides(overrides) {
155
+ this.settings = mergeSettingsLayers(this.settings, normalizeSettingsPaths(overrides));
173
156
  }
174
- setDefaultProvider(provider) {
175
- this.globalSettings.defaultProvider = provider;
157
+ updateGlobal(key, value) {
158
+ this.globalSettings[key] = value;
176
159
  this.save();
177
160
  }
178
- setDefaultModel(modelId) {
179
- this.globalSettings.defaultModel = modelId;
161
+ updateNestedGlobal(key, value) {
162
+ const current = (this.globalSettings[key] ?? {});
163
+ this.globalSettings[key] = { ...current, ...value };
180
164
  this.save();
181
165
  }
166
+ updateProject(key, value) {
167
+ const projectSettings = this.loadProjectSettings();
168
+ projectSettings[key] = value;
169
+ this.saveProjectSettings(projectSettings);
170
+ }
171
+ getLastChangelogVersion() { return this.settings.lastChangelogVersion; }
172
+ setLastChangelogVersion(version) { this.updateGlobal("lastChangelogVersion", version); }
173
+ getDefaultProvider() { return this.settings.defaultProvider; }
174
+ getDefaultModel() { return this.settings.defaultModel; }
175
+ setDefaultProvider(provider) { this.updateGlobal("defaultProvider", provider); }
176
+ setDefaultModel(modelId) { this.updateGlobal("defaultModel", modelId); }
182
177
  setDefaultModelAndProvider(provider, modelId) {
183
178
  this.globalSettings.defaultProvider = provider;
184
179
  this.globalSettings.defaultModel = modelId;
185
180
  this.save();
186
181
  }
187
- getSteeringMode() {
188
- return this.settings.steeringMode || "one-at-a-time";
189
- }
190
- setSteeringMode(mode) {
191
- this.globalSettings.steeringMode = mode;
192
- this.save();
193
- }
194
- getFollowUpMode() {
195
- return this.settings.followUpMode || "one-at-a-time";
196
- }
197
- setFollowUpMode(mode) {
198
- this.globalSettings.followUpMode = mode;
199
- this.save();
200
- }
201
- getTheme() {
202
- return this.settings.theme;
203
- }
204
- setTheme(theme) {
205
- this.globalSettings.theme = theme;
206
- this.save();
207
- }
208
- getDefaultThinkingLevel() {
209
- return this.settings.defaultThinkingLevel;
210
- }
211
- setDefaultThinkingLevel(level) {
212
- this.globalSettings.defaultThinkingLevel = level;
213
- this.save();
214
- }
215
- getCompactionEnabled() {
216
- return this.settings.compaction?.enabled ?? true;
217
- }
218
- setCompactionEnabled(enabled) {
219
- if (!this.globalSettings.compaction) {
220
- this.globalSettings.compaction = {};
221
- }
222
- this.globalSettings.compaction.enabled = enabled;
223
- this.save();
224
- }
225
- getCompactionReserveTokens() {
226
- return this.settings.compaction?.reserveTokens ?? 16384;
227
- }
228
- getCompactionKeepRecentTokens() {
229
- return this.settings.compaction?.keepRecentTokens ?? 20000;
230
- }
182
+ getSteeringMode() { return this.settings.steeringMode || "one-at-a-time"; }
183
+ setSteeringMode(mode) { this.updateGlobal("steeringMode", mode); }
184
+ getFollowUpMode() { return this.settings.followUpMode || "one-at-a-time"; }
185
+ setFollowUpMode(mode) { this.updateGlobal("followUpMode", mode); }
186
+ getTheme() { return this.settings.theme; }
187
+ setTheme(theme) { this.updateGlobal("theme", theme); }
188
+ getDefaultThinkingLevel() { return this.settings.defaultThinkingLevel; }
189
+ setDefaultThinkingLevel(level) { this.updateGlobal("defaultThinkingLevel", level); }
190
+ getCompactionEnabled() { return this.settings.compaction?.enabled ?? true; }
191
+ setCompactionEnabled(enabled) { this.updateNestedGlobal("compaction", { enabled }); }
192
+ getCompactionReserveTokens() { return this.settings.compaction?.reserveTokens ?? 16384; }
193
+ getCompactionKeepRecentTokens() { return this.settings.compaction?.keepRecentTokens ?? 20000; }
231
194
  getCompactionSettings() {
232
- return {
233
- enabled: this.getCompactionEnabled(),
234
- reserveTokens: this.getCompactionReserveTokens(),
235
- keepRecentTokens: this.getCompactionKeepRecentTokens(),
236
- };
237
- }
238
- getBranchSummarySettings() {
239
- return {
240
- reserveTokens: this.settings.branchSummary?.reserveTokens ?? 16384,
241
- };
242
- }
243
- getRetryEnabled() {
244
- return this.settings.retry?.enabled ?? true;
245
- }
246
- setRetryEnabled(enabled) {
247
- if (!this.globalSettings.retry) {
248
- this.globalSettings.retry = {};
249
- }
250
- this.globalSettings.retry.enabled = enabled;
251
- this.save();
195
+ return { enabled: this.getCompactionEnabled(), reserveTokens: this.getCompactionReserveTokens(), keepRecentTokens: this.getCompactionKeepRecentTokens() };
252
196
  }
197
+ getBranchSummarySettings() { return { reserveTokens: this.settings.branchSummary?.reserveTokens ?? 16384 }; }
198
+ getRetryEnabled() { return this.settings.retry?.enabled ?? true; }
199
+ setRetryEnabled(enabled) { this.updateNestedGlobal("retry", { enabled }); }
253
200
  getRetrySettings() {
254
- return {
255
- enabled: this.getRetryEnabled(),
256
- maxRetries: this.settings.retry?.maxRetries ?? 3,
257
- baseDelayMs: this.settings.retry?.baseDelayMs ?? 2000,
258
- };
259
- }
260
- getHideThinkingBlock() {
261
- return this.settings.hideThinkingBlock ?? false;
262
- }
263
- setHideThinkingBlock(hide) {
264
- this.globalSettings.hideThinkingBlock = hide;
265
- this.save();
266
- }
267
- getShellPath() {
268
- return this.settings.shellPath;
269
- }
270
- setShellPath(path) {
271
- this.globalSettings.shellPath = path;
272
- this.save();
273
- }
274
- getQuietStartup() {
275
- return this.settings.quietStartup ?? false;
276
- }
277
- setQuietStartup(quiet) {
278
- this.globalSettings.quietStartup = quiet;
279
- this.save();
280
- }
281
- getShellCommandPrefix() {
282
- return this.settings.shellCommandPrefix;
283
- }
284
- setShellCommandPrefix(prefix) {
285
- this.globalSettings.shellCommandPrefix = prefix;
286
- this.save();
287
- }
288
- getCollapseChangelog() {
289
- return this.settings.collapseChangelog ?? false;
290
- }
291
- setCollapseChangelog(collapse) {
292
- this.globalSettings.collapseChangelog = collapse;
293
- this.save();
294
- }
295
- // MCP Settings
296
- getMCPEnabled() {
297
- return this.settings.mcp?.enabled ?? true;
298
- }
299
- getMCPAutoConnect() {
300
- return this.settings.mcp?.autoConnect ?? true;
301
- }
302
- getMCPTimeout() {
303
- return this.settings.mcp?.timeout ?? 60000;
304
- }
305
- getMCPSettings() {
306
- return {
307
- enabled: this.getMCPEnabled(),
308
- autoConnect: this.getMCPAutoConnect(),
309
- timeout: this.getMCPTimeout(),
310
- };
311
- }
312
- setMCPSettings(settings) {
313
- this.globalSettings.mcp = { ...this.globalSettings.mcp, ...settings };
314
- this.save();
315
- }
316
- // Memory Settings
317
- getMemoryEnabled() {
318
- return this.settings.memory?.enabled ?? false;
319
- }
320
- getMemoryAutoConnect() {
321
- return this.settings.memory?.autoConnect ?? false;
322
- }
323
- getMemoryLastMessages() {
324
- return this.settings.memory?.lastMessages ?? 20;
325
- }
326
- getMemorySemanticRecallEnabled() {
327
- return this.settings.memory?.semanticRecall ?? true;
328
- }
329
- getMemoryWorkingMemoryEnabled() {
330
- return this.settings.memory?.workingMemory ?? true;
331
- }
332
- getMemoryObservationalMemoryEnabled() {
333
- return this.settings.memory?.observationalMemory ?? false;
334
- }
201
+ return { enabled: this.getRetryEnabled(), maxRetries: this.settings.retry?.maxRetries ?? 3, baseDelayMs: this.settings.retry?.baseDelayMs ?? 2000 };
202
+ }
203
+ getHideThinkingBlock() { return this.settings.hideThinkingBlock ?? false; }
204
+ setHideThinkingBlock(hide) { this.updateGlobal("hideThinkingBlock", hide); }
205
+ getShellPath() { return this.settings.shellPath; }
206
+ setShellPath(path) { this.updateGlobal("shellPath", path); }
207
+ getQuietStartup() { return this.settings.quietStartup ?? false; }
208
+ setQuietStartup(quiet) { this.updateGlobal("quietStartup", quiet); }
209
+ getShellCommandPrefix() { return this.settings.shellCommandPrefix; }
210
+ setShellCommandPrefix(prefix) { this.updateGlobal("shellCommandPrefix", prefix); }
211
+ getCollapseChangelog() { return this.settings.collapseChangelog ?? false; }
212
+ setCollapseChangelog(collapse) { this.updateGlobal("collapseChangelog", collapse); }
213
+ getMCPEnabled() { return this.settings.mcp?.enabled ?? true; }
214
+ getMCPAutoConnect() { return this.settings.mcp?.autoConnect ?? true; }
215
+ getMCPTimeout() { return this.settings.mcp?.timeout ?? 60000; }
216
+ getMCPSettings() { return { enabled: this.getMCPEnabled(), autoConnect: this.getMCPAutoConnect(), timeout: this.getMCPTimeout() }; }
217
+ setMCPSettings(settings) { this.updateNestedGlobal("mcp", settings); }
218
+ getMemoryEnabled() { return this.settings.memory?.enabled ?? false; }
219
+ getMemoryAutoConnect() { return this.settings.memory?.autoConnect ?? false; }
220
+ getMemoryLastMessages() { return this.settings.memory?.lastMessages ?? 20; }
221
+ getMemorySemanticRecallEnabled() { return this.settings.memory?.semanticRecall ?? true; }
222
+ getMemoryWorkingMemoryEnabled() { return this.settings.memory?.workingMemory ?? true; }
223
+ getMemoryObservationalMemoryEnabled() { return this.settings.memory?.observationalMemory ?? false; }
335
224
  getMemorySettings() {
336
225
  return {
337
226
  enabled: this.getMemoryEnabled(),
@@ -342,104 +231,31 @@ export class SettingsManager {
342
231
  observationalMemory: this.getMemoryObservationalMemoryEnabled(),
343
232
  };
344
233
  }
345
- setMemorySettings(settings) {
346
- this.globalSettings.memory = { ...this.globalSettings.memory, ...settings };
347
- this.save();
348
- }
349
- getPackages() {
350
- return [...(this.settings.packages ?? [])];
351
- }
352
- setPackages(packages) {
353
- this.globalSettings.packages = packages;
354
- this.save();
355
- }
356
- setProjectPackages(packages) {
357
- const projectSettings = this.loadProjectSettings();
358
- projectSettings.packages = packages;
359
- this.saveProjectSettings(projectSettings);
360
- this.settings = deepMergeSettings(this.globalSettings, projectSettings);
361
- }
362
- getExtensionPaths() {
363
- return [...(this.settings.extensions ?? [])];
364
- }
365
- setExtensionPaths(paths) {
366
- this.globalSettings.extensions = paths;
367
- this.save();
368
- }
369
- setProjectExtensionPaths(paths) {
370
- const projectSettings = this.loadProjectSettings();
371
- projectSettings.extensions = paths;
372
- this.saveProjectSettings(projectSettings);
373
- this.settings = deepMergeSettings(this.globalSettings, projectSettings);
374
- }
375
- getHookPaths() {
376
- return [...(this.settings.hooks ?? [])];
377
- }
378
- setHookPaths(paths) {
379
- this.globalSettings.hooks = paths;
380
- this.save();
381
- }
382
- setProjectHookPaths(paths) {
383
- const projectSettings = this.loadProjectSettings();
384
- projectSettings.hooks = paths;
385
- this.saveProjectSettings(projectSettings);
386
- this.settings = deepMergeSettings(this.globalSettings, projectSettings);
387
- }
388
- getSkillPaths() {
389
- return [...(this.settings.skills ?? [])];
390
- }
391
- setSkillPaths(paths) {
392
- this.globalSettings.skills = paths;
393
- this.save();
394
- }
395
- setProjectSkillPaths(paths) {
396
- const projectSettings = this.loadProjectSettings();
397
- projectSettings.skills = paths;
398
- this.saveProjectSettings(projectSettings);
399
- this.settings = deepMergeSettings(this.globalSettings, projectSettings);
400
- }
401
- getPromptTemplatePaths() {
402
- return [...(this.settings.prompts ?? [])];
403
- }
404
- setPromptTemplatePaths(paths) {
405
- this.globalSettings.prompts = paths;
406
- this.save();
407
- }
408
- setProjectPromptTemplatePaths(paths) {
409
- const projectSettings = this.loadProjectSettings();
410
- projectSettings.prompts = paths;
411
- this.saveProjectSettings(projectSettings);
412
- this.settings = deepMergeSettings(this.globalSettings, projectSettings);
413
- }
414
- getThemePaths() {
415
- return [...(this.settings.themes ?? [])];
416
- }
417
- setThemePaths(paths) {
418
- this.globalSettings.themes = paths;
419
- this.save();
420
- }
421
- setProjectThemePaths(paths) {
422
- const projectSettings = this.loadProjectSettings();
423
- projectSettings.themes = paths;
424
- this.saveProjectSettings(projectSettings);
425
- this.settings = deepMergeSettings(this.globalSettings, projectSettings);
426
- }
427
- getEnableSkillCommands() {
428
- return this.settings.enableSkillCommands ?? true;
429
- }
430
- setEnableSkillCommands(enabled) {
431
- this.globalSettings.enableSkillCommands = enabled;
432
- this.save();
433
- }
434
- getThinkingBudgets() {
435
- return this.settings.thinkingBudgets;
436
- }
437
- getShowImages() {
438
- return this.settings.terminal?.showImages ?? true;
439
- }
234
+ setMemorySettings(settings) { this.updateNestedGlobal("memory", settings); }
235
+ getPackages() { return [...(this.settings.packages ?? [])]; }
236
+ setPackages(packages) { this.updateGlobal("packages", packages); }
237
+ setProjectPackages(packages) { this.updateProject("packages", packages); }
238
+ getExtensionPaths() { return [...(this.settings.extensions ?? [])]; }
239
+ setExtensionPaths(paths) { this.updateGlobal("extensions", paths); }
240
+ setProjectExtensionPaths(paths) { this.updateProject("extensions", paths); }
241
+ getHookPaths() { return [...(this.settings.hooks ?? [])]; }
242
+ setHookPaths(paths) { this.updateGlobal("hooks", paths); }
243
+ setProjectHookPaths(paths) { this.updateProject("hooks", paths); }
244
+ getSkillPaths() { return [...(this.settings.skills ?? [])]; }
245
+ setSkillPaths(paths) { this.updateGlobal("skills", paths); }
246
+ setProjectSkillPaths(paths) { this.updateProject("skills", paths); }
247
+ getPromptTemplatePaths() { return [...(this.settings.prompts ?? [])]; }
248
+ setPromptTemplatePaths(paths) { this.updateGlobal("prompts", paths); }
249
+ setProjectPromptTemplatePaths(paths) { this.updateProject("prompts", paths); }
250
+ getThemePaths() { return [...(this.settings.themes ?? [])]; }
251
+ setThemePaths(paths) { this.updateGlobal("themes", paths); }
252
+ setProjectThemePaths(paths) { this.updateProject("themes", paths); }
253
+ getEnableSkillCommands() { return this.settings.enableSkillCommands ?? true; }
254
+ setEnableSkillCommands(enabled) { this.updateGlobal("enableSkillCommands", enabled); }
255
+ getThinkingBudgets() { return this.settings.thinkingBudgets; }
256
+ getShowImages() { return this.settings.terminal?.showImages ?? true; }
440
257
  getStartupImagePath() {
441
- const projectSettings = this.loadProjectSettings();
442
- const projectPath = projectSettings.terminal?.startupImage;
258
+ const projectPath = this.loadProjectSettings().terminal?.startupImage;
443
259
  if (projectPath && projectPath.trim()) {
444
260
  const baseDir = this.projectSettingsPath ? dirname(this.projectSettingsPath) : process.cwd();
445
261
  return resolveToCwd(projectPath, baseDir);
@@ -451,63 +267,19 @@ export class SettingsManager {
451
267
  }
452
268
  return undefined;
453
269
  }
454
- setShowImages(show) {
455
- if (!this.globalSettings.terminal) {
456
- this.globalSettings.terminal = {};
457
- }
458
- this.globalSettings.terminal.showImages = show;
459
- this.save();
460
- }
461
- getImageAutoResize() {
462
- return this.settings.images?.autoResize ?? true;
463
- }
464
- setImageAutoResize(enabled) {
465
- if (!this.globalSettings.images) {
466
- this.globalSettings.images = {};
467
- }
468
- this.globalSettings.images.autoResize = enabled;
469
- this.save();
470
- }
471
- getBlockImages() {
472
- return this.settings.images?.blockImages ?? false;
473
- }
474
- setBlockImages(blocked) {
475
- if (!this.globalSettings.images) {
476
- this.globalSettings.images = {};
477
- }
478
- this.globalSettings.images.blockImages = blocked;
479
- this.save();
480
- }
481
- getEnabledModels() {
482
- return this.settings.enabledModels;
483
- }
484
- setEnabledModels(patterns) {
485
- this.globalSettings.enabledModels = patterns;
486
- this.save();
487
- }
488
- getDoubleEscapeAction() {
489
- return this.settings.doubleEscapeAction ?? "tree";
490
- }
491
- setDoubleEscapeAction(action) {
492
- this.globalSettings.doubleEscapeAction = action;
493
- this.save();
494
- }
495
- getShowHardwareCursor() {
496
- return this.settings.showHardwareCursor ?? process.env.INDUSAGI_HARDWARE_CURSOR === "1";
497
- }
498
- setShowHardwareCursor(enabled) {
499
- this.globalSettings.showHardwareCursor = enabled;
500
- this.save();
501
- }
502
- getEditorPaddingX() {
503
- return this.settings.editorPaddingX ?? 0;
504
- }
505
- setEditorPaddingX(padding) {
506
- this.globalSettings.editorPaddingX = Math.max(0, Math.min(3, Math.floor(padding)));
507
- this.save();
508
- }
509
- getCodeBlockIndent() {
510
- return this.settings.markdown?.codeBlockIndent ?? " ";
511
- }
270
+ setShowImages(show) { this.updateNestedGlobal("terminal", { showImages: show }); }
271
+ getImageAutoResize() { return this.settings.images?.autoResize ?? true; }
272
+ setImageAutoResize(enabled) { this.updateNestedGlobal("images", { autoResize: enabled }); }
273
+ getBlockImages() { return this.settings.images?.blockImages ?? false; }
274
+ setBlockImages(blocked) { this.updateNestedGlobal("images", { blockImages: blocked }); }
275
+ getEnabledModels() { return this.settings.enabledModels; }
276
+ setEnabledModels(patterns) { this.updateGlobal("enabledModels", patterns); }
277
+ getDoubleEscapeAction() { return this.settings.doubleEscapeAction ?? "tree"; }
278
+ setDoubleEscapeAction(action) { this.updateGlobal("doubleEscapeAction", action); }
279
+ getShowHardwareCursor() { return this.settings.showHardwareCursor ?? process.env.INDUSAGI_HARDWARE_CURSOR === "1"; }
280
+ setShowHardwareCursor(enabled) { this.updateGlobal("showHardwareCursor", enabled); }
281
+ getEditorPaddingX() { return this.settings.editorPaddingX ?? 0; }
282
+ setEditorPaddingX(padding) { this.updateGlobal("editorPaddingX", Math.max(0, Math.min(3, Math.floor(padding)))); }
283
+ getCodeBlockIndent() { return this.settings.markdown?.codeBlockIndent ?? " "; }
512
284
  }
513
285
  //# sourceMappingURL=settings-manager.js.map