@eminent337/aery 0.1.62 → 0.1.64

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 (714) hide show
  1. package/CHANGELOG.md +0 -0
  2. package/README.md +0 -0
  3. package/docs/compaction.md +0 -0
  4. package/docs/custom-provider.md +1 -1
  5. package/docs/development.md +0 -0
  6. package/docs/docs.json +0 -0
  7. package/docs/extensions.md +18 -18
  8. package/docs/images/doom-extension.png +0 -0
  9. package/docs/images/exy.png +0 -0
  10. package/docs/images/interactive-mode.png +0 -0
  11. package/docs/images/tree-view.png +0 -0
  12. package/docs/index.md +5 -5
  13. package/docs/json.md +1 -1
  14. package/docs/keybindings.md +2 -2
  15. package/docs/models.md +2 -2
  16. package/docs/packages.md +13 -13
  17. package/docs/prompt-templates.md +0 -0
  18. package/docs/providers.md +5 -5
  19. package/docs/quickstart.md +19 -19
  20. package/docs/rpc.md +3 -3
  21. package/docs/sdk.md +1 -1
  22. package/docs/session-format.md +3 -3
  23. package/docs/sessions.md +10 -10
  24. package/docs/settings.md +7 -5
  25. package/docs/shell-aliases.md +0 -0
  26. package/docs/skills.md +2 -2
  27. package/docs/terminal-setup.md +6 -6
  28. package/docs/termux.md +3 -3
  29. package/docs/themes.md +3 -3
  30. package/docs/tmux.md +1 -1
  31. package/docs/tui.md +2 -2
  32. package/docs/usage.md +33 -33
  33. package/docs/windows.md +0 -0
  34. package/examples/README.md +0 -0
  35. package/examples/extensions/README.md +3 -3
  36. package/examples/extensions/antigravity-image-gen.ts +6 -6
  37. package/examples/extensions/auto-commit-on-exit.ts +1 -1
  38. package/examples/extensions/bash-spawn-hook.ts +1 -1
  39. package/examples/extensions/bookmark.ts +0 -0
  40. package/examples/extensions/border-status-editor.ts +0 -0
  41. package/examples/extensions/built-in-tool-renderer.ts +1 -1
  42. package/examples/extensions/claude-rules.ts +1 -1
  43. package/examples/extensions/commands.ts +1 -1
  44. package/examples/extensions/confirm-destructive.ts +0 -0
  45. package/examples/extensions/custom-compaction.ts +1 -1
  46. package/examples/extensions/custom-footer.ts +0 -0
  47. package/examples/extensions/custom-header.ts +2 -2
  48. package/examples/extensions/custom-provider-anthropic/index.ts +2 -2
  49. package/examples/extensions/custom-provider-anthropic/package-lock.json +0 -0
  50. package/examples/extensions/custom-provider-anthropic/package.json +0 -0
  51. package/examples/extensions/custom-provider-gitlab-duo/index.ts +2 -2
  52. package/examples/extensions/custom-provider-gitlab-duo/package.json +0 -0
  53. package/examples/extensions/custom-provider-gitlab-duo/test.ts +0 -0
  54. package/examples/extensions/custom-provider-qwen-cli/index.ts +1 -1
  55. package/examples/extensions/custom-provider-qwen-cli/package.json +0 -0
  56. package/examples/extensions/dirty-repo-guard.ts +0 -0
  57. package/examples/extensions/doom-overlay/README.md +2 -2
  58. package/examples/extensions/doom-overlay/doom/build/doom.js +0 -0
  59. package/examples/extensions/doom-overlay/doom/build.sh +2 -2
  60. package/examples/extensions/doom-overlay/doom/doomgeneric_pi.c +0 -0
  61. package/examples/extensions/doom-overlay/doom-component.ts +0 -0
  62. package/examples/extensions/doom-overlay/doom-engine.ts +0 -0
  63. package/examples/extensions/doom-overlay/doom-keys.ts +0 -0
  64. package/examples/extensions/doom-overlay/index.ts +1 -1
  65. package/examples/extensions/doom-overlay/wad-finder.ts +0 -0
  66. package/examples/extensions/dynamic-resources/SKILL.md +0 -0
  67. package/examples/extensions/dynamic-resources/dynamic.json +0 -0
  68. package/examples/extensions/dynamic-resources/dynamic.md +0 -0
  69. package/examples/extensions/dynamic-resources/index.ts +0 -0
  70. package/examples/extensions/dynamic-tools.ts +0 -0
  71. package/examples/extensions/event-bus.ts +0 -0
  72. package/examples/extensions/file-trigger.ts +0 -0
  73. package/examples/extensions/git-checkpoint.ts +0 -0
  74. package/examples/extensions/github-issue-autocomplete.ts +0 -0
  75. package/examples/extensions/handoff.ts +0 -0
  76. package/examples/extensions/hello.ts +0 -0
  77. package/examples/extensions/hidden-thinking-label.ts +1 -1
  78. package/examples/extensions/inline-bash.ts +2 -2
  79. package/examples/extensions/input-transform.ts +3 -3
  80. package/examples/extensions/interactive-shell.ts +1 -1
  81. package/examples/extensions/mac-system-theme.ts +2 -2
  82. package/examples/extensions/message-renderer.ts +0 -0
  83. package/examples/extensions/minimal-mode.ts +1 -1
  84. package/examples/extensions/modal-editor.ts +1 -1
  85. package/examples/extensions/model-status.ts +1 -1
  86. package/examples/extensions/notify.ts +0 -0
  87. package/examples/extensions/overlay-qa-tests.ts +1 -1
  88. package/examples/extensions/overlay-test.ts +1 -1
  89. package/examples/extensions/permission-gate.ts +0 -0
  90. package/examples/extensions/pirate.ts +1 -1
  91. package/examples/extensions/plan-mode/README.md +0 -0
  92. package/examples/extensions/plan-mode/index.ts +0 -0
  93. package/examples/extensions/plan-mode/utils.ts +0 -0
  94. package/examples/extensions/preset.ts +12 -6
  95. package/examples/extensions/prompt-customizer.ts +1 -1
  96. package/examples/extensions/protected-paths.ts +0 -0
  97. package/examples/extensions/provider-payload.ts +1 -1
  98. package/examples/extensions/qna.ts +0 -0
  99. package/examples/extensions/question.ts +0 -0
  100. package/examples/extensions/questionnaire.ts +0 -0
  101. package/examples/extensions/rainbow-editor.ts +1 -1
  102. package/examples/extensions/reload-runtime.ts +0 -0
  103. package/examples/extensions/rpc-demo.ts +1 -1
  104. package/examples/extensions/sandbox/index.ts +8 -8
  105. package/examples/extensions/sandbox/package-lock.json +0 -0
  106. package/examples/extensions/sandbox/package.json +0 -0
  107. package/examples/extensions/send-user-message.ts +0 -0
  108. package/examples/extensions/session-name.ts +0 -0
  109. package/examples/extensions/shutdown-command.ts +5 -5
  110. package/examples/extensions/snake.ts +0 -0
  111. package/examples/extensions/space-invaders.ts +0 -0
  112. package/examples/extensions/ssh.ts +2 -2
  113. package/examples/extensions/status-line.ts +0 -0
  114. package/examples/extensions/structured-output.ts +0 -0
  115. package/examples/extensions/subagent/README.md +13 -13
  116. package/examples/extensions/subagent/agents/planner.md +0 -0
  117. package/examples/extensions/subagent/agents/reviewer.md +0 -0
  118. package/examples/extensions/subagent/agents/scout.md +0 -0
  119. package/examples/extensions/subagent/agents/worker.md +0 -0
  120. package/examples/extensions/subagent/agents.ts +1 -1
  121. package/examples/extensions/subagent/index.ts +5 -5
  122. package/examples/extensions/subagent/prompts/implement-and-review.md +0 -0
  123. package/examples/extensions/subagent/prompts/implement.md +0 -0
  124. package/examples/extensions/subagent/prompts/scout-and-plan.md +0 -0
  125. package/examples/extensions/summarize.ts +0 -0
  126. package/examples/extensions/system-prompt-header.ts +0 -0
  127. package/examples/extensions/tic-tac-toe.ts +0 -0
  128. package/examples/extensions/timed-confirm.ts +0 -0
  129. package/examples/extensions/titlebar-spinner.ts +1 -1
  130. package/examples/extensions/todo.ts +0 -0
  131. package/examples/extensions/tool-override.ts +2 -2
  132. package/examples/extensions/tools.ts +1 -1
  133. package/examples/extensions/trigger-compact.ts +0 -0
  134. package/examples/extensions/truncated-tool.ts +1 -1
  135. package/examples/extensions/widget-placement.ts +0 -0
  136. package/examples/extensions/with-deps/index.ts +0 -0
  137. package/examples/extensions/with-deps/package-lock.json +0 -0
  138. package/examples/extensions/with-deps/package.json +0 -0
  139. package/examples/extensions/working-indicator.ts +4 -4
  140. package/examples/extensions/working-message-test.ts +1 -1
  141. package/examples/rpc-extension-ui.ts +0 -0
  142. package/examples/sdk/01-minimal.ts +1 -1
  143. package/examples/sdk/02-custom-model.ts +0 -0
  144. package/examples/sdk/03-custom-prompt.ts +1 -1
  145. package/examples/sdk/04-skills.ts +1 -1
  146. package/examples/sdk/05-tools.ts +0 -0
  147. package/examples/sdk/06-extensions.ts +2 -2
  148. package/examples/sdk/07-context-files.ts +0 -0
  149. package/examples/sdk/08-prompt-templates.ts +1 -1
  150. package/examples/sdk/09-api-keys-and-oauth.ts +2 -2
  151. package/examples/sdk/10-settings.ts +0 -0
  152. package/examples/sdk/11-sessions.ts +0 -0
  153. package/examples/sdk/12-full-control.ts +0 -0
  154. package/examples/sdk/13-session-runtime.ts +0 -0
  155. package/examples/sdk/README.md +1 -1
  156. package/package.json +4 -4
  157. package/dist/bun/cli.d.ts +0 -3
  158. package/dist/bun/cli.d.ts.map +0 -1
  159. package/dist/bun/cli.js +0 -8
  160. package/dist/bun/cli.js.map +0 -1
  161. package/dist/bun/register-bedrock.d.ts +0 -2
  162. package/dist/bun/register-bedrock.d.ts.map +0 -1
  163. package/dist/bun/register-bedrock.js +0 -4
  164. package/dist/bun/register-bedrock.js.map +0 -1
  165. package/dist/bun/restore-sandbox-env.d.ts +0 -13
  166. package/dist/bun/restore-sandbox-env.d.ts.map +0 -1
  167. package/dist/bun/restore-sandbox-env.js +0 -32
  168. package/dist/bun/restore-sandbox-env.js.map +0 -1
  169. package/dist/cli/args.d.ts +0 -53
  170. package/dist/cli/args.d.ts.map +0 -1
  171. package/dist/cli/args.js +0 -329
  172. package/dist/cli/args.js.map +0 -1
  173. package/dist/cli/config-selector.d.ts +0 -14
  174. package/dist/cli/config-selector.d.ts.map +0 -1
  175. package/dist/cli/config-selector.js +0 -31
  176. package/dist/cli/config-selector.js.map +0 -1
  177. package/dist/cli/file-processor.d.ts +0 -15
  178. package/dist/cli/file-processor.d.ts.map +0 -1
  179. package/dist/cli/file-processor.js +0 -83
  180. package/dist/cli/file-processor.js.map +0 -1
  181. package/dist/cli/initial-message.d.ts +0 -18
  182. package/dist/cli/initial-message.d.ts.map +0 -1
  183. package/dist/cli/initial-message.js +0 -22
  184. package/dist/cli/initial-message.js.map +0 -1
  185. package/dist/cli/list-models.d.ts +0 -9
  186. package/dist/cli/list-models.d.ts.map +0 -1
  187. package/dist/cli/list-models.js +0 -98
  188. package/dist/cli/list-models.js.map +0 -1
  189. package/dist/cli/session-picker.d.ts +0 -9
  190. package/dist/cli/session-picker.d.ts.map +0 -1
  191. package/dist/cli/session-picker.js +0 -35
  192. package/dist/cli/session-picker.js.map +0 -1
  193. package/dist/cli.d.ts +0 -3
  194. package/dist/cli.d.ts.map +0 -1
  195. package/dist/cli.js +0 -19
  196. package/dist/cli.js.map +0 -1
  197. package/dist/config.d.ts +0 -86
  198. package/dist/config.d.ts.map +0 -1
  199. package/dist/config.js +0 -332
  200. package/dist/config.js.map +0 -1
  201. package/dist/core/agent-session-runtime.d.ts +0 -117
  202. package/dist/core/agent-session-runtime.d.ts.map +0 -1
  203. package/dist/core/agent-session-runtime.js +0 -300
  204. package/dist/core/agent-session-runtime.js.map +0 -1
  205. package/dist/core/agent-session-services.d.ts +0 -86
  206. package/dist/core/agent-session-services.d.ts.map +0 -1
  207. package/dist/core/agent-session-services.js +0 -117
  208. package/dist/core/agent-session-services.js.map +0 -1
  209. package/dist/core/agent-session.d.ts +0 -595
  210. package/dist/core/agent-session.d.ts.map +0 -1
  211. package/dist/core/agent-session.js +0 -2520
  212. package/dist/core/agent-session.js.map +0 -1
  213. package/dist/core/auth-guidance.d.ts +0 -5
  214. package/dist/core/auth-guidance.d.ts.map +0 -1
  215. package/dist/core/auth-guidance.js +0 -21
  216. package/dist/core/auth-guidance.js.map +0 -1
  217. package/dist/core/auth-storage.d.ts +0 -141
  218. package/dist/core/auth-storage.d.ts.map +0 -1
  219. package/dist/core/auth-storage.js +0 -441
  220. package/dist/core/auth-storage.js.map +0 -1
  221. package/dist/core/bash-executor.d.ts +0 -32
  222. package/dist/core/bash-executor.d.ts.map +0 -1
  223. package/dist/core/bash-executor.js +0 -111
  224. package/dist/core/bash-executor.js.map +0 -1
  225. package/dist/core/compaction/branch-summarization.d.ts +0 -88
  226. package/dist/core/compaction/branch-summarization.d.ts.map +0 -1
  227. package/dist/core/compaction/branch-summarization.js +0 -243
  228. package/dist/core/compaction/branch-summarization.js.map +0 -1
  229. package/dist/core/compaction/compaction.d.ts +0 -121
  230. package/dist/core/compaction/compaction.d.ts.map +0 -1
  231. package/dist/core/compaction/compaction.js +0 -615
  232. package/dist/core/compaction/compaction.js.map +0 -1
  233. package/dist/core/compaction/index.d.ts +0 -7
  234. package/dist/core/compaction/index.d.ts.map +0 -1
  235. package/dist/core/compaction/index.js +0 -7
  236. package/dist/core/compaction/index.js.map +0 -1
  237. package/dist/core/compaction/utils.d.ts +0 -38
  238. package/dist/core/compaction/utils.d.ts.map +0 -1
  239. package/dist/core/compaction/utils.js +0 -153
  240. package/dist/core/compaction/utils.js.map +0 -1
  241. package/dist/core/defaults.d.ts +0 -3
  242. package/dist/core/defaults.d.ts.map +0 -1
  243. package/dist/core/defaults.js +0 -2
  244. package/dist/core/defaults.js.map +0 -1
  245. package/dist/core/diagnostics.d.ts +0 -15
  246. package/dist/core/diagnostics.d.ts.map +0 -1
  247. package/dist/core/diagnostics.js +0 -2
  248. package/dist/core/diagnostics.js.map +0 -1
  249. package/dist/core/event-bus.d.ts +0 -9
  250. package/dist/core/event-bus.d.ts.map +0 -1
  251. package/dist/core/event-bus.js +0 -25
  252. package/dist/core/event-bus.js.map +0 -1
  253. package/dist/core/exec.d.ts +0 -29
  254. package/dist/core/exec.d.ts.map +0 -1
  255. package/dist/core/exec.js +0 -75
  256. package/dist/core/exec.js.map +0 -1
  257. package/dist/core/export-html/ansi-to-html.d.ts +0 -22
  258. package/dist/core/export-html/ansi-to-html.d.ts.map +0 -1
  259. package/dist/core/export-html/ansi-to-html.js +0 -249
  260. package/dist/core/export-html/ansi-to-html.js.map +0 -1
  261. package/dist/core/export-html/index.d.ts +0 -37
  262. package/dist/core/export-html/index.d.ts.map +0 -1
  263. package/dist/core/export-html/index.js +0 -224
  264. package/dist/core/export-html/index.js.map +0 -1
  265. package/dist/core/export-html/template.css +0 -1022
  266. package/dist/core/export-html/template.html +0 -55
  267. package/dist/core/export-html/template.js +0 -1770
  268. package/dist/core/export-html/tool-renderer.d.ts +0 -34
  269. package/dist/core/export-html/tool-renderer.d.ts.map +0 -1
  270. package/dist/core/export-html/tool-renderer.js +0 -108
  271. package/dist/core/export-html/tool-renderer.js.map +0 -1
  272. package/dist/core/export-html/vendor/highlight.min.js +0 -1213
  273. package/dist/core/export-html/vendor/marked.min.js +0 -6
  274. package/dist/core/extensions/index.d.ts +0 -12
  275. package/dist/core/extensions/index.d.ts.map +0 -1
  276. package/dist/core/extensions/index.js +0 -9
  277. package/dist/core/extensions/index.js.map +0 -1
  278. package/dist/core/extensions/loader.d.ts +0 -25
  279. package/dist/core/extensions/loader.d.ts.map +0 -1
  280. package/dist/core/extensions/loader.js +0 -476
  281. package/dist/core/extensions/loader.js.map +0 -1
  282. package/dist/core/extensions/runner.d.ts +0 -158
  283. package/dist/core/extensions/runner.d.ts.map +0 -1
  284. package/dist/core/extensions/runner.js +0 -784
  285. package/dist/core/extensions/runner.js.map +0 -1
  286. package/dist/core/extensions/types.d.ts +0 -1153
  287. package/dist/core/extensions/types.d.ts.map +0 -1
  288. package/dist/core/extensions/types.js +0 -45
  289. package/dist/core/extensions/types.js.map +0 -1
  290. package/dist/core/extensions/wrapper.d.ts +0 -20
  291. package/dist/core/extensions/wrapper.d.ts.map +0 -1
  292. package/dist/core/extensions/wrapper.js +0 -22
  293. package/dist/core/extensions/wrapper.js.map +0 -1
  294. package/dist/core/footer-data-provider.d.ts +0 -52
  295. package/dist/core/footer-data-provider.d.ts.map +0 -1
  296. package/dist/core/footer-data-provider.js +0 -310
  297. package/dist/core/footer-data-provider.js.map +0 -1
  298. package/dist/core/index.d.ts +0 -12
  299. package/dist/core/index.d.ts.map +0 -1
  300. package/dist/core/index.js +0 -12
  301. package/dist/core/index.js.map +0 -1
  302. package/dist/core/keybindings.d.ts +0 -353
  303. package/dist/core/keybindings.d.ts.map +0 -1
  304. package/dist/core/keybindings.js +0 -295
  305. package/dist/core/keybindings.js.map +0 -1
  306. package/dist/core/messages.d.ts +0 -77
  307. package/dist/core/messages.d.ts.map +0 -1
  308. package/dist/core/messages.js +0 -123
  309. package/dist/core/messages.js.map +0 -1
  310. package/dist/core/model-registry.d.ts +0 -144
  311. package/dist/core/model-registry.d.ts.map +0 -1
  312. package/dist/core/model-registry.js +0 -699
  313. package/dist/core/model-registry.js.map +0 -1
  314. package/dist/core/model-resolver.d.ts +0 -110
  315. package/dist/core/model-resolver.d.ts.map +0 -1
  316. package/dist/core/model-resolver.js +0 -489
  317. package/dist/core/model-resolver.js.map +0 -1
  318. package/dist/core/output-guard.d.ts +0 -6
  319. package/dist/core/output-guard.d.ts.map +0 -1
  320. package/dist/core/output-guard.js +0 -59
  321. package/dist/core/output-guard.js.map +0 -1
  322. package/dist/core/package-manager.d.ts +0 -199
  323. package/dist/core/package-manager.d.ts.map +0 -1
  324. package/dist/core/package-manager.js +0 -1973
  325. package/dist/core/package-manager.js.map +0 -1
  326. package/dist/core/prompt-templates.d.ts +0 -52
  327. package/dist/core/prompt-templates.d.ts.map +0 -1
  328. package/dist/core/prompt-templates.js +0 -250
  329. package/dist/core/prompt-templates.js.map +0 -1
  330. package/dist/core/resolve-config-value.d.ts +0 -23
  331. package/dist/core/resolve-config-value.d.ts.map +0 -1
  332. package/dist/core/resolve-config-value.js +0 -126
  333. package/dist/core/resolve-config-value.js.map +0 -1
  334. package/dist/core/resource-loader.d.ts +0 -194
  335. package/dist/core/resource-loader.d.ts.map +0 -1
  336. package/dist/core/resource-loader.js +0 -727
  337. package/dist/core/resource-loader.js.map +0 -1
  338. package/dist/core/sdk.d.ts +0 -107
  339. package/dist/core/sdk.d.ts.map +0 -1
  340. package/dist/core/sdk.js +0 -274
  341. package/dist/core/sdk.js.map +0 -1
  342. package/dist/core/session-cwd.d.ts +0 -19
  343. package/dist/core/session-cwd.d.ts.map +0 -1
  344. package/dist/core/session-cwd.js +0 -38
  345. package/dist/core/session-cwd.js.map +0 -1
  346. package/dist/core/session-manager.d.ts +0 -333
  347. package/dist/core/session-manager.d.ts.map +0 -1
  348. package/dist/core/session-manager.js +0 -1109
  349. package/dist/core/session-manager.js.map +0 -1
  350. package/dist/core/settings-manager.d.ts +0 -261
  351. package/dist/core/settings-manager.d.ts.map +0 -1
  352. package/dist/core/settings-manager.js +0 -782
  353. package/dist/core/settings-manager.js.map +0 -1
  354. package/dist/core/skills.d.ts +0 -60
  355. package/dist/core/skills.d.ts.map +0 -1
  356. package/dist/core/skills.js +0 -404
  357. package/dist/core/skills.js.map +0 -1
  358. package/dist/core/slash-commands.d.ts +0 -14
  359. package/dist/core/slash-commands.d.ts.map +0 -1
  360. package/dist/core/slash-commands.js +0 -25
  361. package/dist/core/slash-commands.js.map +0 -1
  362. package/dist/core/source-info.d.ts +0 -18
  363. package/dist/core/source-info.d.ts.map +0 -1
  364. package/dist/core/source-info.js +0 -19
  365. package/dist/core/source-info.js.map +0 -1
  366. package/dist/core/system-prompt.d.ts +0 -28
  367. package/dist/core/system-prompt.d.ts.map +0 -1
  368. package/dist/core/system-prompt.js +0 -120
  369. package/dist/core/system-prompt.js.map +0 -1
  370. package/dist/core/telemetry.d.ts +0 -3
  371. package/dist/core/telemetry.d.ts.map +0 -1
  372. package/dist/core/telemetry.js +0 -9
  373. package/dist/core/telemetry.js.map +0 -1
  374. package/dist/core/timings.d.ts +0 -8
  375. package/dist/core/timings.d.ts.map +0 -1
  376. package/dist/core/timings.js +0 -31
  377. package/dist/core/timings.js.map +0 -1
  378. package/dist/core/tools/bash.d.ts +0 -68
  379. package/dist/core/tools/bash.d.ts.map +0 -1
  380. package/dist/core/tools/bash.js +0 -355
  381. package/dist/core/tools/bash.js.map +0 -1
  382. package/dist/core/tools/edit-diff.d.ts +0 -85
  383. package/dist/core/tools/edit-diff.d.ts.map +0 -1
  384. package/dist/core/tools/edit-diff.js +0 -337
  385. package/dist/core/tools/edit-diff.js.map +0 -1
  386. package/dist/core/tools/edit.d.ts +0 -49
  387. package/dist/core/tools/edit.d.ts.map +0 -1
  388. package/dist/core/tools/edit.js +0 -323
  389. package/dist/core/tools/edit.js.map +0 -1
  390. package/dist/core/tools/file-mutation-queue.d.ts +0 -6
  391. package/dist/core/tools/file-mutation-queue.d.ts.map +0 -1
  392. package/dist/core/tools/file-mutation-queue.js +0 -37
  393. package/dist/core/tools/file-mutation-queue.js.map +0 -1
  394. package/dist/core/tools/find.d.ts +0 -35
  395. package/dist/core/tools/find.d.ts.map +0 -1
  396. package/dist/core/tools/find.js +0 -298
  397. package/dist/core/tools/find.js.map +0 -1
  398. package/dist/core/tools/grep.d.ts +0 -37
  399. package/dist/core/tools/grep.d.ts.map +0 -1
  400. package/dist/core/tools/grep.js +0 -304
  401. package/dist/core/tools/grep.js.map +0 -1
  402. package/dist/core/tools/index.d.ts +0 -40
  403. package/dist/core/tools/index.d.ts.map +0 -1
  404. package/dist/core/tools/index.js +0 -112
  405. package/dist/core/tools/index.js.map +0 -1
  406. package/dist/core/tools/ls.d.ts +0 -37
  407. package/dist/core/tools/ls.d.ts.map +0 -1
  408. package/dist/core/tools/ls.js +0 -169
  409. package/dist/core/tools/ls.js.map +0 -1
  410. package/dist/core/tools/path-utils.d.ts +0 -8
  411. package/dist/core/tools/path-utils.d.ts.map +0 -1
  412. package/dist/core/tools/path-utils.js +0 -81
  413. package/dist/core/tools/path-utils.js.map +0 -1
  414. package/dist/core/tools/read.d.ts +0 -35
  415. package/dist/core/tools/read.d.ts.map +0 -1
  416. package/dist/core/tools/read.js +0 -232
  417. package/dist/core/tools/read.js.map +0 -1
  418. package/dist/core/tools/render-utils.d.ts +0 -21
  419. package/dist/core/tools/render-utils.d.ts.map +0 -1
  420. package/dist/core/tools/render-utils.js +0 -49
  421. package/dist/core/tools/render-utils.js.map +0 -1
  422. package/dist/core/tools/tool-definition-wrapper.d.ts +0 -14
  423. package/dist/core/tools/tool-definition-wrapper.d.ts.map +0 -1
  424. package/dist/core/tools/tool-definition-wrapper.js +0 -34
  425. package/dist/core/tools/tool-definition-wrapper.js.map +0 -1
  426. package/dist/core/tools/truncate.d.ts +0 -70
  427. package/dist/core/tools/truncate.d.ts.map +0 -1
  428. package/dist/core/tools/truncate.js +0 -205
  429. package/dist/core/tools/truncate.js.map +0 -1
  430. package/dist/core/tools/write.d.ts +0 -26
  431. package/dist/core/tools/write.d.ts.map +0 -1
  432. package/dist/core/tools/write.js +0 -213
  433. package/dist/core/tools/write.js.map +0 -1
  434. package/dist/index.d.ts +0 -28
  435. package/dist/index.d.ts.map +0 -1
  436. package/dist/index.js +0 -41
  437. package/dist/index.js.map +0 -1
  438. package/dist/main.d.ts +0 -12
  439. package/dist/main.d.ts.map +0 -1
  440. package/dist/main.js +0 -589
  441. package/dist/main.js.map +0 -1
  442. package/dist/migrations.d.ts +0 -33
  443. package/dist/migrations.d.ts.map +0 -1
  444. package/dist/migrations.js +0 -281
  445. package/dist/migrations.js.map +0 -1
  446. package/dist/modes/index.d.ts +0 -9
  447. package/dist/modes/index.d.ts.map +0 -1
  448. package/dist/modes/index.js +0 -8
  449. package/dist/modes/index.js.map +0 -1
  450. package/dist/modes/interactive/assets/clankolas.png +0 -0
  451. package/dist/modes/interactive/components/aery-splash.d.ts +0 -18
  452. package/dist/modes/interactive/components/aery-splash.d.ts.map +0 -1
  453. package/dist/modes/interactive/components/aery-splash.js +0 -60
  454. package/dist/modes/interactive/components/aery-splash.js.map +0 -1
  455. package/dist/modes/interactive/components/armin.d.ts +0 -34
  456. package/dist/modes/interactive/components/armin.d.ts.map +0 -1
  457. package/dist/modes/interactive/components/armin.js +0 -333
  458. package/dist/modes/interactive/components/armin.js.map +0 -1
  459. package/dist/modes/interactive/components/assistant-message.d.ts +0 -20
  460. package/dist/modes/interactive/components/assistant-message.d.ts.map +0 -1
  461. package/dist/modes/interactive/components/assistant-message.js +0 -121
  462. package/dist/modes/interactive/components/assistant-message.js.map +0 -1
  463. package/dist/modes/interactive/components/bash-execution.d.ts +0 -34
  464. package/dist/modes/interactive/components/bash-execution.d.ts.map +0 -1
  465. package/dist/modes/interactive/components/bash-execution.js +0 -175
  466. package/dist/modes/interactive/components/bash-execution.js.map +0 -1
  467. package/dist/modes/interactive/components/bordered-loader.d.ts +0 -16
  468. package/dist/modes/interactive/components/bordered-loader.d.ts.map +0 -1
  469. package/dist/modes/interactive/components/bordered-loader.js +0 -54
  470. package/dist/modes/interactive/components/bordered-loader.js.map +0 -1
  471. package/dist/modes/interactive/components/branch-summary-message.d.ts +0 -16
  472. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +0 -1
  473. package/dist/modes/interactive/components/branch-summary-message.js +0 -44
  474. package/dist/modes/interactive/components/branch-summary-message.js.map +0 -1
  475. package/dist/modes/interactive/components/compaction-summary-message.d.ts +0 -16
  476. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +0 -1
  477. package/dist/modes/interactive/components/compaction-summary-message.js +0 -45
  478. package/dist/modes/interactive/components/compaction-summary-message.js.map +0 -1
  479. package/dist/modes/interactive/components/config-selector.d.ts +0 -71
  480. package/dist/modes/interactive/components/config-selector.d.ts.map +0 -1
  481. package/dist/modes/interactive/components/config-selector.js +0 -481
  482. package/dist/modes/interactive/components/config-selector.js.map +0 -1
  483. package/dist/modes/interactive/components/countdown-timer.d.ts +0 -14
  484. package/dist/modes/interactive/components/countdown-timer.d.ts.map +0 -1
  485. package/dist/modes/interactive/components/countdown-timer.js +0 -33
  486. package/dist/modes/interactive/components/countdown-timer.js.map +0 -1
  487. package/dist/modes/interactive/components/custom-editor.d.ts +0 -21
  488. package/dist/modes/interactive/components/custom-editor.d.ts.map +0 -1
  489. package/dist/modes/interactive/components/custom-editor.js +0 -70
  490. package/dist/modes/interactive/components/custom-editor.js.map +0 -1
  491. package/dist/modes/interactive/components/custom-message.d.ts +0 -20
  492. package/dist/modes/interactive/components/custom-message.d.ts.map +0 -1
  493. package/dist/modes/interactive/components/custom-message.js +0 -79
  494. package/dist/modes/interactive/components/custom-message.js.map +0 -1
  495. package/dist/modes/interactive/components/daxnuts.d.ts +0 -23
  496. package/dist/modes/interactive/components/daxnuts.d.ts.map +0 -1
  497. package/dist/modes/interactive/components/daxnuts.js +0 -140
  498. package/dist/modes/interactive/components/daxnuts.js.map +0 -1
  499. package/dist/modes/interactive/components/diff.d.ts +0 -12
  500. package/dist/modes/interactive/components/diff.d.ts.map +0 -1
  501. package/dist/modes/interactive/components/diff.js +0 -133
  502. package/dist/modes/interactive/components/diff.js.map +0 -1
  503. package/dist/modes/interactive/components/dynamic-border.d.ts +0 -15
  504. package/dist/modes/interactive/components/dynamic-border.d.ts.map +0 -1
  505. package/dist/modes/interactive/components/dynamic-border.js +0 -21
  506. package/dist/modes/interactive/components/dynamic-border.js.map +0 -1
  507. package/dist/modes/interactive/components/earendil-announcement.d.ts +0 -5
  508. package/dist/modes/interactive/components/earendil-announcement.d.ts.map +0 -1
  509. package/dist/modes/interactive/components/earendil-announcement.js +0 -40
  510. package/dist/modes/interactive/components/earendil-announcement.js.map +0 -1
  511. package/dist/modes/interactive/components/extension-editor.d.ts +0 -20
  512. package/dist/modes/interactive/components/extension-editor.d.ts.map +0 -1
  513. package/dist/modes/interactive/components/extension-editor.js +0 -111
  514. package/dist/modes/interactive/components/extension-editor.js.map +0 -1
  515. package/dist/modes/interactive/components/extension-input.d.ts +0 -23
  516. package/dist/modes/interactive/components/extension-input.d.ts.map +0 -1
  517. package/dist/modes/interactive/components/extension-input.js +0 -61
  518. package/dist/modes/interactive/components/extension-input.js.map +0 -1
  519. package/dist/modes/interactive/components/extension-selector.d.ts +0 -24
  520. package/dist/modes/interactive/components/extension-selector.d.ts.map +0 -1
  521. package/dist/modes/interactive/components/extension-selector.js +0 -78
  522. package/dist/modes/interactive/components/extension-selector.js.map +0 -1
  523. package/dist/modes/interactive/components/footer.d.ts +0 -27
  524. package/dist/modes/interactive/components/footer.d.ts.map +0 -1
  525. package/dist/modes/interactive/components/footer.js +0 -201
  526. package/dist/modes/interactive/components/footer.js.map +0 -1
  527. package/dist/modes/interactive/components/index.d.ts +0 -32
  528. package/dist/modes/interactive/components/index.d.ts.map +0 -1
  529. package/dist/modes/interactive/components/index.js +0 -33
  530. package/dist/modes/interactive/components/index.js.map +0 -1
  531. package/dist/modes/interactive/components/keybinding-hints.d.ts +0 -8
  532. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +0 -1
  533. package/dist/modes/interactive/components/keybinding-hints.js +0 -22
  534. package/dist/modes/interactive/components/keybinding-hints.js.map +0 -1
  535. package/dist/modes/interactive/components/login-dialog.d.ts +0 -46
  536. package/dist/modes/interactive/components/login-dialog.d.ts.map +0 -1
  537. package/dist/modes/interactive/components/login-dialog.js +0 -158
  538. package/dist/modes/interactive/components/login-dialog.js.map +0 -1
  539. package/dist/modes/interactive/components/model-selector.d.ts +0 -47
  540. package/dist/modes/interactive/components/model-selector.d.ts.map +0 -1
  541. package/dist/modes/interactive/components/model-selector.js +0 -278
  542. package/dist/modes/interactive/components/model-selector.js.map +0 -1
  543. package/dist/modes/interactive/components/oauth-selector.d.ts +0 -29
  544. package/dist/modes/interactive/components/oauth-selector.d.ts.map +0 -1
  545. package/dist/modes/interactive/components/oauth-selector.js +0 -141
  546. package/dist/modes/interactive/components/oauth-selector.js.map +0 -1
  547. package/dist/modes/interactive/components/scoped-models-selector.d.ts +0 -42
  548. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +0 -1
  549. package/dist/modes/interactive/components/scoped-models-selector.js +0 -290
  550. package/dist/modes/interactive/components/scoped-models-selector.js.map +0 -1
  551. package/dist/modes/interactive/components/session-selector-search.d.ts +0 -23
  552. package/dist/modes/interactive/components/session-selector-search.d.ts.map +0 -1
  553. package/dist/modes/interactive/components/session-selector-search.js +0 -155
  554. package/dist/modes/interactive/components/session-selector-search.js.map +0 -1
  555. package/dist/modes/interactive/components/session-selector.d.ts +0 -96
  556. package/dist/modes/interactive/components/session-selector.d.ts.map +0 -1
  557. package/dist/modes/interactive/components/session-selector.js +0 -861
  558. package/dist/modes/interactive/components/session-selector.js.map +0 -1
  559. package/dist/modes/interactive/components/settings-selector.d.ts +0 -67
  560. package/dist/modes/interactive/components/settings-selector.d.ts.map +0 -1
  561. package/dist/modes/interactive/components/settings-selector.js +0 -373
  562. package/dist/modes/interactive/components/settings-selector.js.map +0 -1
  563. package/dist/modes/interactive/components/show-images-selector.d.ts +0 -10
  564. package/dist/modes/interactive/components/show-images-selector.d.ts.map +0 -1
  565. package/dist/modes/interactive/components/show-images-selector.js +0 -39
  566. package/dist/modes/interactive/components/show-images-selector.js.map +0 -1
  567. package/dist/modes/interactive/components/skill-invocation-message.d.ts +0 -17
  568. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +0 -1
  569. package/dist/modes/interactive/components/skill-invocation-message.js +0 -47
  570. package/dist/modes/interactive/components/skill-invocation-message.js.map +0 -1
  571. package/dist/modes/interactive/components/theme-selector.d.ts +0 -11
  572. package/dist/modes/interactive/components/theme-selector.d.ts.map +0 -1
  573. package/dist/modes/interactive/components/theme-selector.js +0 -50
  574. package/dist/modes/interactive/components/theme-selector.js.map +0 -1
  575. package/dist/modes/interactive/components/thinking-selector.d.ts +0 -11
  576. package/dist/modes/interactive/components/thinking-selector.d.ts.map +0 -1
  577. package/dist/modes/interactive/components/thinking-selector.js +0 -51
  578. package/dist/modes/interactive/components/thinking-selector.js.map +0 -1
  579. package/dist/modes/interactive/components/tool-execution.d.ts +0 -63
  580. package/dist/modes/interactive/components/tool-execution.d.ts.map +0 -1
  581. package/dist/modes/interactive/components/tool-execution.js +0 -295
  582. package/dist/modes/interactive/components/tool-execution.js.map +0 -1
  583. package/dist/modes/interactive/components/tree-selector.d.ts +0 -89
  584. package/dist/modes/interactive/components/tree-selector.d.ts.map +0 -1
  585. package/dist/modes/interactive/components/tree-selector.js +0 -1092
  586. package/dist/modes/interactive/components/tree-selector.js.map +0 -1
  587. package/dist/modes/interactive/components/user-message-selector.d.ts +0 -30
  588. package/dist/modes/interactive/components/user-message-selector.d.ts.map +0 -1
  589. package/dist/modes/interactive/components/user-message-selector.js +0 -114
  590. package/dist/modes/interactive/components/user-message-selector.js.map +0 -1
  591. package/dist/modes/interactive/components/user-message.d.ts +0 -10
  592. package/dist/modes/interactive/components/user-message.d.ts.map +0 -1
  593. package/dist/modes/interactive/components/user-message.js +0 -29
  594. package/dist/modes/interactive/components/user-message.js.map +0 -1
  595. package/dist/modes/interactive/components/visual-truncate.d.ts +0 -24
  596. package/dist/modes/interactive/components/visual-truncate.d.ts.map +0 -1
  597. package/dist/modes/interactive/components/visual-truncate.js +0 -33
  598. package/dist/modes/interactive/components/visual-truncate.js.map +0 -1
  599. package/dist/modes/interactive/interactive-mode.d.ts +0 -359
  600. package/dist/modes/interactive/interactive-mode.d.ts.map +0 -1
  601. package/dist/modes/interactive/interactive-mode.js +0 -4573
  602. package/dist/modes/interactive/interactive-mode.js.map +0 -1
  603. package/dist/modes/interactive/theme/aery.json +0 -84
  604. package/dist/modes/interactive/theme/catppuccin-mocha.json +0 -81
  605. package/dist/modes/interactive/theme/dark.json +0 -85
  606. package/dist/modes/interactive/theme/dracula.json +0 -81
  607. package/dist/modes/interactive/theme/light.json +0 -84
  608. package/dist/modes/interactive/theme/nord.json +0 -81
  609. package/dist/modes/interactive/theme/theme-schema.json +0 -335
  610. package/dist/modes/interactive/theme/theme.d.ts +0 -81
  611. package/dist/modes/interactive/theme/theme.d.ts.map +0 -1
  612. package/dist/modes/interactive/theme/theme.js +0 -975
  613. package/dist/modes/interactive/theme/theme.js.map +0 -1
  614. package/dist/modes/interactive/theme/tokyo-night.json +0 -81
  615. package/dist/modes/print-mode.d.ts +0 -28
  616. package/dist/modes/print-mode.d.ts.map +0 -1
  617. package/dist/modes/print-mode.js +0 -131
  618. package/dist/modes/print-mode.js.map +0 -1
  619. package/dist/modes/rpc/jsonl.d.ts +0 -17
  620. package/dist/modes/rpc/jsonl.d.ts.map +0 -1
  621. package/dist/modes/rpc/jsonl.js +0 -49
  622. package/dist/modes/rpc/jsonl.js.map +0 -1
  623. package/dist/modes/rpc/rpc-client.d.ts +0 -224
  624. package/dist/modes/rpc/rpc-client.d.ts.map +0 -1
  625. package/dist/modes/rpc/rpc-client.js +0 -410
  626. package/dist/modes/rpc/rpc-client.js.map +0 -1
  627. package/dist/modes/rpc/rpc-mode.d.ts +0 -20
  628. package/dist/modes/rpc/rpc-mode.d.ts.map +0 -1
  629. package/dist/modes/rpc/rpc-mode.js +0 -597
  630. package/dist/modes/rpc/rpc-mode.js.map +0 -1
  631. package/dist/modes/rpc/rpc-types.d.ts +0 -419
  632. package/dist/modes/rpc/rpc-types.d.ts.map +0 -1
  633. package/dist/modes/rpc/rpc-types.js +0 -8
  634. package/dist/modes/rpc/rpc-types.js.map +0 -1
  635. package/dist/package-manager-cli.d.ts +0 -4
  636. package/dist/package-manager-cli.d.ts.map +0 -1
  637. package/dist/package-manager-cli.js +0 -468
  638. package/dist/package-manager-cli.js.map +0 -1
  639. package/dist/utils/aery-user-agent.d.ts +0 -2
  640. package/dist/utils/aery-user-agent.d.ts.map +0 -1
  641. package/dist/utils/aery-user-agent.js +0 -5
  642. package/dist/utils/aery-user-agent.js.map +0 -1
  643. package/dist/utils/changelog.d.ts +0 -21
  644. package/dist/utils/changelog.d.ts.map +0 -1
  645. package/dist/utils/changelog.js +0 -87
  646. package/dist/utils/changelog.js.map +0 -1
  647. package/dist/utils/child-process.d.ts +0 -11
  648. package/dist/utils/child-process.d.ts.map +0 -1
  649. package/dist/utils/child-process.js +0 -78
  650. package/dist/utils/child-process.js.map +0 -1
  651. package/dist/utils/clipboard-image.d.ts +0 -11
  652. package/dist/utils/clipboard-image.d.ts.map +0 -1
  653. package/dist/utils/clipboard-image.js +0 -245
  654. package/dist/utils/clipboard-image.js.map +0 -1
  655. package/dist/utils/clipboard-native.d.ts +0 -8
  656. package/dist/utils/clipboard-native.d.ts.map +0 -1
  657. package/dist/utils/clipboard-native.js +0 -14
  658. package/dist/utils/clipboard-native.js.map +0 -1
  659. package/dist/utils/clipboard.d.ts +0 -2
  660. package/dist/utils/clipboard.d.ts.map +0 -1
  661. package/dist/utils/clipboard.js +0 -110
  662. package/dist/utils/clipboard.js.map +0 -1
  663. package/dist/utils/exif-orientation.d.ts +0 -5
  664. package/dist/utils/exif-orientation.d.ts.map +0 -1
  665. package/dist/utils/exif-orientation.js +0 -158
  666. package/dist/utils/exif-orientation.js.map +0 -1
  667. package/dist/utils/frontmatter.d.ts +0 -8
  668. package/dist/utils/frontmatter.d.ts.map +0 -1
  669. package/dist/utils/frontmatter.js +0 -26
  670. package/dist/utils/frontmatter.js.map +0 -1
  671. package/dist/utils/fs-watch.d.ts +0 -5
  672. package/dist/utils/fs-watch.d.ts.map +0 -1
  673. package/dist/utils/fs-watch.js +0 -25
  674. package/dist/utils/fs-watch.js.map +0 -1
  675. package/dist/utils/git.d.ts +0 -26
  676. package/dist/utils/git.d.ts.map +0 -1
  677. package/dist/utils/git.js +0 -163
  678. package/dist/utils/git.js.map +0 -1
  679. package/dist/utils/image-convert.d.ts +0 -9
  680. package/dist/utils/image-convert.d.ts.map +0 -1
  681. package/dist/utils/image-convert.js +0 -39
  682. package/dist/utils/image-convert.js.map +0 -1
  683. package/dist/utils/image-resize.d.ts +0 -36
  684. package/dist/utils/image-resize.d.ts.map +0 -1
  685. package/dist/utils/image-resize.js +0 -137
  686. package/dist/utils/image-resize.js.map +0 -1
  687. package/dist/utils/mime.d.ts +0 -2
  688. package/dist/utils/mime.d.ts.map +0 -1
  689. package/dist/utils/mime.js +0 -26
  690. package/dist/utils/mime.js.map +0 -1
  691. package/dist/utils/paths.d.ts +0 -14
  692. package/dist/utils/paths.d.ts.map +0 -1
  693. package/dist/utils/paths.js +0 -34
  694. package/dist/utils/paths.js.map +0 -1
  695. package/dist/utils/photon.d.ts +0 -21
  696. package/dist/utils/photon.d.ts.map +0 -1
  697. package/dist/utils/photon.js +0 -121
  698. package/dist/utils/photon.js.map +0 -1
  699. package/dist/utils/shell.d.ts +0 -30
  700. package/dist/utils/shell.d.ts.map +0 -1
  701. package/dist/utils/shell.js +0 -190
  702. package/dist/utils/shell.js.map +0 -1
  703. package/dist/utils/sleep.d.ts +0 -5
  704. package/dist/utils/sleep.d.ts.map +0 -1
  705. package/dist/utils/sleep.js +0 -17
  706. package/dist/utils/sleep.js.map +0 -1
  707. package/dist/utils/tools-manager.d.ts +0 -3
  708. package/dist/utils/tools-manager.d.ts.map +0 -1
  709. package/dist/utils/tools-manager.js +0 -256
  710. package/dist/utils/tools-manager.js.map +0 -1
  711. package/dist/utils/version-check.d.ts +0 -7
  712. package/dist/utils/version-check.d.ts.map +0 -1
  713. package/dist/utils/version-check.js +0 -70
  714. package/dist/utils/version-check.js.map +0 -1
@@ -1,782 +0,0 @@
1
- import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
2
- import { homedir } from "os";
3
- import { dirname, join } from "path";
4
- import lockfile from "proper-lockfile";
5
- import { CONFIG_DIR_NAME, getAgentDir } from "../config.js";
6
- /** Deep merge settings: project/overrides take precedence, nested objects merge recursively */
7
- function deepMergeSettings(base, overrides) {
8
- const result = { ...base };
9
- for (const key of Object.keys(overrides)) {
10
- const overrideValue = overrides[key];
11
- const baseValue = base[key];
12
- if (overrideValue === undefined) {
13
- continue;
14
- }
15
- // For nested objects, merge recursively
16
- if (typeof overrideValue === "object" &&
17
- overrideValue !== null &&
18
- !Array.isArray(overrideValue) &&
19
- typeof baseValue === "object" &&
20
- baseValue !== null &&
21
- !Array.isArray(baseValue)) {
22
- result[key] = { ...baseValue, ...overrideValue };
23
- }
24
- else {
25
- // For primitives and arrays, override value wins
26
- result[key] = overrideValue;
27
- }
28
- }
29
- return result;
30
- }
31
- export class FileSettingsStorage {
32
- globalSettingsPath;
33
- projectSettingsPath;
34
- constructor(cwd, agentDir) {
35
- this.globalSettingsPath = join(agentDir, "settings.json");
36
- this.projectSettingsPath = join(cwd, CONFIG_DIR_NAME, "settings.json");
37
- }
38
- acquireLockSyncWithRetry(path) {
39
- const maxAttempts = 10;
40
- const delayMs = 20;
41
- let lastError;
42
- for (let attempt = 1; attempt <= maxAttempts; attempt++) {
43
- try {
44
- return lockfile.lockSync(path, { realpath: false });
45
- }
46
- catch (error) {
47
- const code = typeof error === "object" && error !== null && "code" in error
48
- ? String(error.code)
49
- : undefined;
50
- if (code !== "ELOCKED" || attempt === maxAttempts) {
51
- throw error;
52
- }
53
- lastError = error;
54
- const start = Date.now();
55
- while (Date.now() - start < delayMs) {
56
- // Sleep synchronously to avoid changing callers to async.
57
- }
58
- }
59
- }
60
- throw lastError ?? new Error("Failed to acquire settings lock");
61
- }
62
- withLock(scope, fn) {
63
- const path = scope === "global" ? this.globalSettingsPath : this.projectSettingsPath;
64
- const dir = dirname(path);
65
- let release;
66
- try {
67
- // Only create directory and lock if file exists or we need to write
68
- const fileExists = existsSync(path);
69
- if (fileExists) {
70
- release = this.acquireLockSyncWithRetry(path);
71
- }
72
- const current = fileExists ? readFileSync(path, "utf-8") : undefined;
73
- const next = fn(current);
74
- if (next !== undefined) {
75
- // Only create directory when we actually need to write
76
- if (!existsSync(dir)) {
77
- mkdirSync(dir, { recursive: true });
78
- }
79
- if (!release) {
80
- release = this.acquireLockSyncWithRetry(path);
81
- }
82
- writeFileSync(path, next, "utf-8");
83
- }
84
- }
85
- finally {
86
- if (release) {
87
- release();
88
- }
89
- }
90
- }
91
- }
92
- export class InMemorySettingsStorage {
93
- global;
94
- project;
95
- withLock(scope, fn) {
96
- const current = scope === "global" ? this.global : this.project;
97
- const next = fn(current);
98
- if (next !== undefined) {
99
- if (scope === "global") {
100
- this.global = next;
101
- }
102
- else {
103
- this.project = next;
104
- }
105
- }
106
- }
107
- }
108
- export class SettingsManager {
109
- storage;
110
- globalSettings;
111
- projectSettings;
112
- settings;
113
- modifiedFields = new Set(); // Track global fields modified during session
114
- modifiedNestedFields = new Map(); // Track global nested field modifications
115
- modifiedProjectFields = new Set(); // Track project fields modified during session
116
- modifiedProjectNestedFields = new Map(); // Track project nested field modifications
117
- globalSettingsLoadError = null; // Track if global settings file had parse errors
118
- projectSettingsLoadError = null; // Track if project settings file had parse errors
119
- writeQueue = Promise.resolve();
120
- errors;
121
- constructor(storage, initialGlobal, initialProject, globalLoadError = null, projectLoadError = null, initialErrors = []) {
122
- this.storage = storage;
123
- this.globalSettings = initialGlobal;
124
- this.projectSettings = initialProject;
125
- this.globalSettingsLoadError = globalLoadError;
126
- this.projectSettingsLoadError = projectLoadError;
127
- this.errors = [...initialErrors];
128
- this.settings = deepMergeSettings(this.globalSettings, this.projectSettings);
129
- }
130
- /** Create a SettingsManager that loads from files */
131
- static create(cwd, agentDir = getAgentDir()) {
132
- const storage = new FileSettingsStorage(cwd, agentDir);
133
- return SettingsManager.fromStorage(storage);
134
- }
135
- /** Create a SettingsManager from an arbitrary storage backend */
136
- static fromStorage(storage) {
137
- const globalLoad = SettingsManager.tryLoadFromStorage(storage, "global");
138
- const projectLoad = SettingsManager.tryLoadFromStorage(storage, "project");
139
- const initialErrors = [];
140
- if (globalLoad.error) {
141
- initialErrors.push({ scope: "global", error: globalLoad.error });
142
- }
143
- if (projectLoad.error) {
144
- initialErrors.push({ scope: "project", error: projectLoad.error });
145
- }
146
- return new SettingsManager(storage, globalLoad.settings, projectLoad.settings, globalLoad.error, projectLoad.error, initialErrors);
147
- }
148
- /** Create an in-memory SettingsManager (no file I/O) */
149
- static inMemory(settings = {}) {
150
- const storage = new InMemorySettingsStorage();
151
- const initialSettings = SettingsManager.migrateSettings(structuredClone(settings));
152
- storage.withLock("global", () => JSON.stringify(initialSettings, null, 2));
153
- return SettingsManager.fromStorage(storage);
154
- }
155
- static loadFromStorage(storage, scope) {
156
- let content;
157
- storage.withLock(scope, (current) => {
158
- content = current;
159
- return undefined;
160
- });
161
- if (!content) {
162
- return {};
163
- }
164
- const settings = JSON.parse(content);
165
- return SettingsManager.migrateSettings(settings);
166
- }
167
- static tryLoadFromStorage(storage, scope) {
168
- try {
169
- return { settings: SettingsManager.loadFromStorage(storage, scope), error: null };
170
- }
171
- catch (error) {
172
- return { settings: {}, error: error };
173
- }
174
- }
175
- /** Migrate old settings format to new format */
176
- static migrateSettings(settings) {
177
- // Migrate queueMode -> steeringMode
178
- if ("queueMode" in settings && !("steeringMode" in settings)) {
179
- settings.steeringMode = settings.queueMode;
180
- delete settings.queueMode;
181
- }
182
- // Migrate legacy websockets boolean -> transport enum
183
- if (!("transport" in settings) && typeof settings.websockets === "boolean") {
184
- settings.transport = settings.websockets ? "websocket" : "sse";
185
- delete settings.websockets;
186
- }
187
- // Migrate old skills object format to new array format
188
- if ("skills" in settings &&
189
- typeof settings.skills === "object" &&
190
- settings.skills !== null &&
191
- !Array.isArray(settings.skills)) {
192
- const skillsSettings = settings.skills;
193
- if (skillsSettings.enableSkillCommands !== undefined && settings.enableSkillCommands === undefined) {
194
- settings.enableSkillCommands = skillsSettings.enableSkillCommands;
195
- }
196
- if (Array.isArray(skillsSettings.customDirectories) && skillsSettings.customDirectories.length > 0) {
197
- settings.skills = skillsSettings.customDirectories;
198
- }
199
- else {
200
- delete settings.skills;
201
- }
202
- }
203
- // Migrate retry.maxDelayMs -> retry.provider.maxRetryDelayMs
204
- if ("retry" in settings &&
205
- typeof settings.retry === "object" &&
206
- settings.retry !== null &&
207
- !Array.isArray(settings.retry)) {
208
- const retrySettings = settings.retry;
209
- const providerSettings = typeof retrySettings.provider === "object" && retrySettings.provider !== null
210
- ? retrySettings.provider
211
- : undefined;
212
- if (typeof retrySettings.maxDelayMs === "number" &&
213
- (providerSettings?.maxRetryDelayMs === undefined || providerSettings?.maxRetryDelayMs === null)) {
214
- retrySettings.provider = {
215
- ...(providerSettings ?? {}),
216
- maxRetryDelayMs: retrySettings.maxDelayMs,
217
- };
218
- }
219
- delete retrySettings.maxDelayMs;
220
- }
221
- return settings;
222
- }
223
- getGlobalSettings() {
224
- return structuredClone(this.globalSettings);
225
- }
226
- getProjectSettings() {
227
- return structuredClone(this.projectSettings);
228
- }
229
- async reload() {
230
- await this.writeQueue;
231
- const globalLoad = SettingsManager.tryLoadFromStorage(this.storage, "global");
232
- if (!globalLoad.error) {
233
- this.globalSettings = globalLoad.settings;
234
- this.globalSettingsLoadError = null;
235
- }
236
- else {
237
- this.globalSettingsLoadError = globalLoad.error;
238
- this.recordError("global", globalLoad.error);
239
- }
240
- this.modifiedFields.clear();
241
- this.modifiedNestedFields.clear();
242
- this.modifiedProjectFields.clear();
243
- this.modifiedProjectNestedFields.clear();
244
- const projectLoad = SettingsManager.tryLoadFromStorage(this.storage, "project");
245
- if (!projectLoad.error) {
246
- this.projectSettings = projectLoad.settings;
247
- this.projectSettingsLoadError = null;
248
- }
249
- else {
250
- this.projectSettingsLoadError = projectLoad.error;
251
- this.recordError("project", projectLoad.error);
252
- }
253
- this.settings = deepMergeSettings(this.globalSettings, this.projectSettings);
254
- }
255
- /** Apply additional overrides on top of current settings */
256
- applyOverrides(overrides) {
257
- this.settings = deepMergeSettings(this.settings, overrides);
258
- }
259
- /** Mark a global field as modified during this session */
260
- markModified(field, nestedKey) {
261
- this.modifiedFields.add(field);
262
- if (nestedKey) {
263
- if (!this.modifiedNestedFields.has(field)) {
264
- this.modifiedNestedFields.set(field, new Set());
265
- }
266
- this.modifiedNestedFields.get(field).add(nestedKey);
267
- }
268
- }
269
- /** Mark a project field as modified during this session */
270
- markProjectModified(field, nestedKey) {
271
- this.modifiedProjectFields.add(field);
272
- if (nestedKey) {
273
- if (!this.modifiedProjectNestedFields.has(field)) {
274
- this.modifiedProjectNestedFields.set(field, new Set());
275
- }
276
- this.modifiedProjectNestedFields.get(field).add(nestedKey);
277
- }
278
- }
279
- recordError(scope, error) {
280
- const normalizedError = error instanceof Error ? error : new Error(String(error));
281
- this.errors.push({ scope, error: normalizedError });
282
- }
283
- clearModifiedScope(scope) {
284
- if (scope === "global") {
285
- this.modifiedFields.clear();
286
- this.modifiedNestedFields.clear();
287
- return;
288
- }
289
- this.modifiedProjectFields.clear();
290
- this.modifiedProjectNestedFields.clear();
291
- }
292
- enqueueWrite(scope, task) {
293
- this.writeQueue = this.writeQueue
294
- .then(() => {
295
- task();
296
- this.clearModifiedScope(scope);
297
- })
298
- .catch((error) => {
299
- this.recordError(scope, error);
300
- });
301
- }
302
- cloneModifiedNestedFields(source) {
303
- const snapshot = new Map();
304
- for (const [key, value] of source.entries()) {
305
- snapshot.set(key, new Set(value));
306
- }
307
- return snapshot;
308
- }
309
- persistScopedSettings(scope, snapshotSettings, modifiedFields, modifiedNestedFields) {
310
- this.storage.withLock(scope, (current) => {
311
- const currentFileSettings = current
312
- ? SettingsManager.migrateSettings(JSON.parse(current))
313
- : {};
314
- const mergedSettings = { ...currentFileSettings };
315
- for (const field of modifiedFields) {
316
- const value = snapshotSettings[field];
317
- if (modifiedNestedFields.has(field) && typeof value === "object" && value !== null) {
318
- const nestedModified = modifiedNestedFields.get(field);
319
- const baseNested = currentFileSettings[field] ?? {};
320
- const inMemoryNested = value;
321
- const mergedNested = { ...baseNested };
322
- for (const nestedKey of nestedModified) {
323
- mergedNested[nestedKey] = inMemoryNested[nestedKey];
324
- }
325
- mergedSettings[field] = mergedNested;
326
- }
327
- else {
328
- mergedSettings[field] = value;
329
- }
330
- }
331
- return JSON.stringify(mergedSettings, null, 2);
332
- });
333
- }
334
- save() {
335
- this.settings = deepMergeSettings(this.globalSettings, this.projectSettings);
336
- if (this.globalSettingsLoadError) {
337
- return;
338
- }
339
- const snapshotGlobalSettings = structuredClone(this.globalSettings);
340
- const modifiedFields = new Set(this.modifiedFields);
341
- const modifiedNestedFields = this.cloneModifiedNestedFields(this.modifiedNestedFields);
342
- this.enqueueWrite("global", () => {
343
- this.persistScopedSettings("global", snapshotGlobalSettings, modifiedFields, modifiedNestedFields);
344
- });
345
- }
346
- saveProjectSettings(settings) {
347
- this.projectSettings = structuredClone(settings);
348
- this.settings = deepMergeSettings(this.globalSettings, this.projectSettings);
349
- if (this.projectSettingsLoadError) {
350
- return;
351
- }
352
- const snapshotProjectSettings = structuredClone(this.projectSettings);
353
- const modifiedFields = new Set(this.modifiedProjectFields);
354
- const modifiedNestedFields = this.cloneModifiedNestedFields(this.modifiedProjectNestedFields);
355
- this.enqueueWrite("project", () => {
356
- this.persistScopedSettings("project", snapshotProjectSettings, modifiedFields, modifiedNestedFields);
357
- });
358
- }
359
- async flush() {
360
- await this.writeQueue;
361
- }
362
- drainErrors() {
363
- const drained = [...this.errors];
364
- this.errors = [];
365
- return drained;
366
- }
367
- getLastChangelogVersion() {
368
- return this.settings.lastChangelogVersion;
369
- }
370
- setLastChangelogVersion(version) {
371
- this.globalSettings.lastChangelogVersion = version;
372
- this.markModified("lastChangelogVersion");
373
- this.save();
374
- }
375
- getSessionDir() {
376
- const sessionDir = this.settings.sessionDir;
377
- if (!sessionDir) {
378
- return sessionDir;
379
- }
380
- if (sessionDir === "~") {
381
- return homedir();
382
- }
383
- if (sessionDir.startsWith("~/")) {
384
- return join(homedir(), sessionDir.slice(2));
385
- }
386
- return sessionDir;
387
- }
388
- getDefaultProvider() {
389
- return this.settings.defaultProvider;
390
- }
391
- getDefaultModel() {
392
- return this.settings.defaultModel;
393
- }
394
- setDefaultProvider(provider) {
395
- this.globalSettings.defaultProvider = provider;
396
- this.markModified("defaultProvider");
397
- this.save();
398
- }
399
- setDefaultModel(modelId) {
400
- this.globalSettings.defaultModel = modelId;
401
- this.markModified("defaultModel");
402
- this.save();
403
- }
404
- setDefaultModelAndProvider(provider, modelId) {
405
- this.globalSettings.defaultProvider = provider;
406
- this.globalSettings.defaultModel = modelId;
407
- this.markModified("defaultProvider");
408
- this.markModified("defaultModel");
409
- this.save();
410
- }
411
- getSteeringMode() {
412
- return this.settings.steeringMode || "one-at-a-time";
413
- }
414
- setSteeringMode(mode) {
415
- this.globalSettings.steeringMode = mode;
416
- this.markModified("steeringMode");
417
- this.save();
418
- }
419
- getFollowUpMode() {
420
- return this.settings.followUpMode || "one-at-a-time";
421
- }
422
- setFollowUpMode(mode) {
423
- this.globalSettings.followUpMode = mode;
424
- this.markModified("followUpMode");
425
- this.save();
426
- }
427
- getTheme() {
428
- return this.settings.theme;
429
- }
430
- setTheme(theme) {
431
- this.globalSettings.theme = theme;
432
- this.markModified("theme");
433
- this.save();
434
- }
435
- getDefaultThinkingLevel() {
436
- return this.settings.defaultThinkingLevel;
437
- }
438
- setDefaultThinkingLevel(level) {
439
- this.globalSettings.defaultThinkingLevel = level;
440
- this.markModified("defaultThinkingLevel");
441
- this.save();
442
- }
443
- getTransport() {
444
- return this.settings.transport ?? "sse";
445
- }
446
- setTransport(transport) {
447
- this.globalSettings.transport = transport;
448
- this.markModified("transport");
449
- this.save();
450
- }
451
- getCompactionEnabled() {
452
- return this.settings.compaction?.enabled ?? true;
453
- }
454
- setCompactionEnabled(enabled) {
455
- if (!this.globalSettings.compaction) {
456
- this.globalSettings.compaction = {};
457
- }
458
- this.globalSettings.compaction.enabled = enabled;
459
- this.markModified("compaction", "enabled");
460
- this.save();
461
- }
462
- getCompactionReserveTokens() {
463
- return this.settings.compaction?.reserveTokens ?? 16384;
464
- }
465
- getCompactionKeepRecentTokens() {
466
- return this.settings.compaction?.keepRecentTokens ?? 20000;
467
- }
468
- getCompactionSettings() {
469
- return {
470
- enabled: this.getCompactionEnabled(),
471
- reserveTokens: this.getCompactionReserveTokens(),
472
- keepRecentTokens: this.getCompactionKeepRecentTokens(),
473
- };
474
- }
475
- getBranchSummarySettings() {
476
- return {
477
- reserveTokens: this.settings.branchSummary?.reserveTokens ?? 16384,
478
- skipPrompt: this.settings.branchSummary?.skipPrompt ?? false,
479
- };
480
- }
481
- getBranchSummarySkipPrompt() {
482
- return this.settings.branchSummary?.skipPrompt ?? false;
483
- }
484
- getRetryEnabled() {
485
- return this.settings.retry?.enabled ?? true;
486
- }
487
- setRetryEnabled(enabled) {
488
- if (!this.globalSettings.retry) {
489
- this.globalSettings.retry = {};
490
- }
491
- this.globalSettings.retry.enabled = enabled;
492
- this.markModified("retry", "enabled");
493
- this.save();
494
- }
495
- getRetrySettings() {
496
- return {
497
- enabled: this.getRetryEnabled(),
498
- maxRetries: this.settings.retry?.maxRetries ?? 3,
499
- baseDelayMs: this.settings.retry?.baseDelayMs ?? 2000,
500
- };
501
- }
502
- getProviderRetrySettings() {
503
- return {
504
- timeoutMs: this.settings.retry?.provider?.timeoutMs,
505
- maxRetries: this.settings.retry?.provider?.maxRetries,
506
- maxRetryDelayMs: this.settings.retry?.provider?.maxRetryDelayMs ?? 60000,
507
- };
508
- }
509
- getHideThinkingBlock() {
510
- return this.settings.hideThinkingBlock ?? false;
511
- }
512
- setHideThinkingBlock(hide) {
513
- this.globalSettings.hideThinkingBlock = hide;
514
- this.markModified("hideThinkingBlock");
515
- this.save();
516
- }
517
- getShellPath() {
518
- return this.settings.shellPath;
519
- }
520
- setShellPath(path) {
521
- this.globalSettings.shellPath = path;
522
- this.markModified("shellPath");
523
- this.save();
524
- }
525
- getQuietStartup() {
526
- return this.settings.quietStartup ?? true;
527
- }
528
- setQuietStartup(quiet) {
529
- this.globalSettings.quietStartup = quiet;
530
- this.markModified("quietStartup");
531
- this.save();
532
- }
533
- getShellCommandPrefix() {
534
- return this.settings.shellCommandPrefix;
535
- }
536
- setShellCommandPrefix(prefix) {
537
- this.globalSettings.shellCommandPrefix = prefix;
538
- this.markModified("shellCommandPrefix");
539
- this.save();
540
- }
541
- getNpmCommand() {
542
- return this.settings.npmCommand ? [...this.settings.npmCommand] : undefined;
543
- }
544
- setNpmCommand(command) {
545
- this.globalSettings.npmCommand = command ? [...command] : undefined;
546
- this.markModified("npmCommand");
547
- this.save();
548
- }
549
- getCollapseChangelog() {
550
- return this.settings.collapseChangelog ?? false;
551
- }
552
- setCollapseChangelog(collapse) {
553
- this.globalSettings.collapseChangelog = collapse;
554
- this.markModified("collapseChangelog");
555
- this.save();
556
- }
557
- getEnableInstallTelemetry() {
558
- return this.settings.enableInstallTelemetry ?? true;
559
- }
560
- setEnableInstallTelemetry(enabled) {
561
- this.globalSettings.enableInstallTelemetry = enabled;
562
- this.markModified("enableInstallTelemetry");
563
- this.save();
564
- }
565
- getPackages() {
566
- return [...(this.settings.packages ?? [])];
567
- }
568
- setPackages(packages) {
569
- this.globalSettings.packages = packages;
570
- this.markModified("packages");
571
- this.save();
572
- }
573
- setProjectPackages(packages) {
574
- const projectSettings = structuredClone(this.projectSettings);
575
- projectSettings.packages = packages;
576
- this.markProjectModified("packages");
577
- this.saveProjectSettings(projectSettings);
578
- }
579
- getExtensionPaths() {
580
- return [...(this.settings.extensions ?? [])];
581
- }
582
- setExtensionPaths(paths) {
583
- this.globalSettings.extensions = paths;
584
- this.markModified("extensions");
585
- this.save();
586
- }
587
- setProjectExtensionPaths(paths) {
588
- const projectSettings = structuredClone(this.projectSettings);
589
- projectSettings.extensions = paths;
590
- this.markProjectModified("extensions");
591
- this.saveProjectSettings(projectSettings);
592
- }
593
- getSkillPaths() {
594
- return [...(this.settings.skills ?? [])];
595
- }
596
- setSkillPaths(paths) {
597
- this.globalSettings.skills = paths;
598
- this.markModified("skills");
599
- this.save();
600
- }
601
- setProjectSkillPaths(paths) {
602
- const projectSettings = structuredClone(this.projectSettings);
603
- projectSettings.skills = paths;
604
- this.markProjectModified("skills");
605
- this.saveProjectSettings(projectSettings);
606
- }
607
- getPromptTemplatePaths() {
608
- return [...(this.settings.prompts ?? [])];
609
- }
610
- setPromptTemplatePaths(paths) {
611
- this.globalSettings.prompts = paths;
612
- this.markModified("prompts");
613
- this.save();
614
- }
615
- setProjectPromptTemplatePaths(paths) {
616
- const projectSettings = structuredClone(this.projectSettings);
617
- projectSettings.prompts = paths;
618
- this.markProjectModified("prompts");
619
- this.saveProjectSettings(projectSettings);
620
- }
621
- getThemePaths() {
622
- return [...(this.settings.themes ?? [])];
623
- }
624
- setThemePaths(paths) {
625
- this.globalSettings.themes = paths;
626
- this.markModified("themes");
627
- this.save();
628
- }
629
- setProjectThemePaths(paths) {
630
- const projectSettings = structuredClone(this.projectSettings);
631
- projectSettings.themes = paths;
632
- this.markProjectModified("themes");
633
- this.saveProjectSettings(projectSettings);
634
- }
635
- getEnableSkillCommands() {
636
- return this.settings.enableSkillCommands ?? true;
637
- }
638
- setEnableSkillCommands(enabled) {
639
- this.globalSettings.enableSkillCommands = enabled;
640
- this.markModified("enableSkillCommands");
641
- this.save();
642
- }
643
- getThinkingBudgets() {
644
- return this.settings.thinkingBudgets;
645
- }
646
- getShowImages() {
647
- return this.settings.terminal?.showImages ?? true;
648
- }
649
- setShowImages(show) {
650
- if (!this.globalSettings.terminal) {
651
- this.globalSettings.terminal = {};
652
- }
653
- this.globalSettings.terminal.showImages = show;
654
- this.markModified("terminal", "showImages");
655
- this.save();
656
- }
657
- getImageWidthCells() {
658
- const width = this.settings.terminal?.imageWidthCells;
659
- if (typeof width !== "number" || !Number.isFinite(width)) {
660
- return 60;
661
- }
662
- return Math.max(1, Math.floor(width));
663
- }
664
- setImageWidthCells(width) {
665
- if (!this.globalSettings.terminal) {
666
- this.globalSettings.terminal = {};
667
- }
668
- this.globalSettings.terminal.imageWidthCells = Math.max(1, Math.floor(width));
669
- this.markModified("terminal", "imageWidthCells");
670
- this.save();
671
- }
672
- getClearOnShrink() {
673
- // Settings takes precedence, then env var, then default false
674
- if (this.settings.terminal?.clearOnShrink !== undefined) {
675
- return this.settings.terminal.clearOnShrink;
676
- }
677
- return process.env.PI_CLEAR_ON_SHRINK === "1";
678
- }
679
- setClearOnShrink(enabled) {
680
- if (!this.globalSettings.terminal) {
681
- this.globalSettings.terminal = {};
682
- }
683
- this.globalSettings.terminal.clearOnShrink = enabled;
684
- this.markModified("terminal", "clearOnShrink");
685
- this.save();
686
- }
687
- getShowTerminalProgress() {
688
- return this.settings.terminal?.showTerminalProgress ?? false;
689
- }
690
- setShowTerminalProgress(enabled) {
691
- if (!this.globalSettings.terminal) {
692
- this.globalSettings.terminal = {};
693
- }
694
- this.globalSettings.terminal.showTerminalProgress = enabled;
695
- this.markModified("terminal", "showTerminalProgress");
696
- this.save();
697
- }
698
- getImageAutoResize() {
699
- return this.settings.images?.autoResize ?? true;
700
- }
701
- setImageAutoResize(enabled) {
702
- if (!this.globalSettings.images) {
703
- this.globalSettings.images = {};
704
- }
705
- this.globalSettings.images.autoResize = enabled;
706
- this.markModified("images", "autoResize");
707
- this.save();
708
- }
709
- getBlockImages() {
710
- return this.settings.images?.blockImages ?? false;
711
- }
712
- setBlockImages(blocked) {
713
- if (!this.globalSettings.images) {
714
- this.globalSettings.images = {};
715
- }
716
- this.globalSettings.images.blockImages = blocked;
717
- this.markModified("images", "blockImages");
718
- this.save();
719
- }
720
- getEnabledModels() {
721
- return this.settings.enabledModels;
722
- }
723
- setEnabledModels(patterns) {
724
- this.globalSettings.enabledModels = patterns;
725
- this.markModified("enabledModels");
726
- this.save();
727
- }
728
- getDoubleEscapeAction() {
729
- return this.settings.doubleEscapeAction ?? "tree";
730
- }
731
- setDoubleEscapeAction(action) {
732
- this.globalSettings.doubleEscapeAction = action;
733
- this.markModified("doubleEscapeAction");
734
- this.save();
735
- }
736
- getTreeFilterMode() {
737
- const mode = this.settings.treeFilterMode;
738
- const valid = ["default", "no-tools", "user-only", "labeled-only", "all"];
739
- return mode && valid.includes(mode) ? mode : "default";
740
- }
741
- setTreeFilterMode(mode) {
742
- this.globalSettings.treeFilterMode = mode;
743
- this.markModified("treeFilterMode");
744
- this.save();
745
- }
746
- getShowHardwareCursor() {
747
- return this.settings.showHardwareCursor ?? process.env.PI_HARDWARE_CURSOR === "1";
748
- }
749
- setShowHardwareCursor(enabled) {
750
- this.globalSettings.showHardwareCursor = enabled;
751
- this.markModified("showHardwareCursor");
752
- this.save();
753
- }
754
- getEditorPaddingX() {
755
- return this.settings.editorPaddingX ?? 0;
756
- }
757
- setEditorPaddingX(padding) {
758
- this.globalSettings.editorPaddingX = Math.max(0, Math.min(3, Math.floor(padding)));
759
- this.markModified("editorPaddingX");
760
- this.save();
761
- }
762
- getAutocompleteMaxVisible() {
763
- return this.settings.autocompleteMaxVisible ?? 5;
764
- }
765
- setAutocompleteMaxVisible(maxVisible) {
766
- this.globalSettings.autocompleteMaxVisible = Math.max(3, Math.min(20, Math.floor(maxVisible)));
767
- this.markModified("autocompleteMaxVisible");
768
- this.save();
769
- }
770
- getCodeBlockIndent() {
771
- return this.settings.markdown?.codeBlockIndent ?? " ";
772
- }
773
- getWarnings() {
774
- return { ...(this.settings.warnings ?? {}) };
775
- }
776
- setWarnings(warnings) {
777
- this.globalSettings.warnings = { ...warnings };
778
- this.markModified("warnings");
779
- this.save();
780
- }
781
- }
782
- //# sourceMappingURL=settings-manager.js.map