@bastani/atomic 0.9.4-alpha.1 → 0.9.4-alpha.11

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 (345) hide show
  1. package/CHANGELOG.md +109 -0
  2. package/dist/builtin/cursor/CHANGELOG.md +24 -0
  3. package/dist/builtin/cursor/package.json +4 -4
  4. package/dist/builtin/intercom/CHANGELOG.md +24 -0
  5. package/dist/builtin/intercom/package.json +2 -2
  6. package/dist/builtin/mcp/CHANGELOG.md +24 -0
  7. package/dist/builtin/mcp/package.json +4 -4
  8. package/dist/builtin/subagents/CHANGELOG.md +52 -0
  9. package/dist/builtin/subagents/agents/code-simplifier.md +2 -2
  10. package/dist/builtin/subagents/agents/codebase-analyzer.md +2 -2
  11. package/dist/builtin/subagents/agents/codebase-locator.md +2 -2
  12. package/dist/builtin/subagents/agents/codebase-online-researcher.md +2 -2
  13. package/dist/builtin/subagents/agents/codebase-pattern-finder.md +2 -2
  14. package/dist/builtin/subagents/agents/codebase-research-analyzer.md +2 -2
  15. package/dist/builtin/subagents/agents/codebase-research-locator.md +2 -2
  16. package/dist/builtin/subagents/agents/debugger.md +1 -1
  17. package/dist/builtin/subagents/agents/worker.md +2 -2
  18. package/dist/builtin/subagents/package.json +4 -4
  19. package/dist/builtin/subagents/src/runs/background/async-execution-chain.ts +11 -1
  20. package/dist/builtin/subagents/src/runs/background/async-execution-single.ts +11 -1
  21. package/dist/builtin/subagents/src/runs/background/async-execution-types.ts +2 -0
  22. package/dist/builtin/subagents/src/runs/background/subagent-runner-step.ts +27 -4
  23. package/dist/builtin/subagents/src/runs/background/subagent-runner-streaming.ts +25 -0
  24. package/dist/builtin/subagents/src/runs/foreground/chain-execution-dynamic-step.ts +1 -0
  25. package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-runner.ts +1 -0
  26. package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-step.ts +1 -0
  27. package/dist/builtin/subagents/src/runs/foreground/chain-execution-sequential-step.ts +1 -0
  28. package/dist/builtin/subagents/src/runs/foreground/chain-execution-types.ts +2 -0
  29. package/dist/builtin/subagents/src/runs/foreground/chain-execution.ts +3 -1
  30. package/dist/builtin/subagents/src/runs/foreground/execution-attempt.ts +22 -0
  31. package/dist/builtin/subagents/src/runs/foreground/execution-run-sync.ts +15 -5
  32. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-async.ts +5 -1
  33. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel-task.ts +2 -0
  34. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel.ts +4 -1
  35. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-single.ts +4 -1
  36. package/dist/builtin/subagents/src/runs/shared/attempt-watchdog.ts +126 -0
  37. package/dist/builtin/subagents/src/runs/shared/model-candidate-filter.ts +53 -0
  38. package/dist/builtin/subagents/src/runs/shared/model-fallback.ts +52 -53
  39. package/dist/builtin/subagents/src/runs/shared/parallel-utils.ts +2 -0
  40. package/dist/builtin/subagents/src/shared/model-info.ts +16 -0
  41. package/dist/builtin/subagents/src/shared/types-config.ts +2 -0
  42. package/dist/builtin/subagents/src/slash/slash-commands.ts +2 -2
  43. package/dist/builtin/subagents/src/tui/render-result-compact.ts +3 -2
  44. package/dist/builtin/subagents/src/tui/render-result.ts +3 -3
  45. package/dist/builtin/subagents/src/tui/render-widget-graph.ts +4 -3
  46. package/dist/builtin/subagents/src/tui/render-widget.ts +10 -4
  47. package/dist/builtin/web-access/CHANGELOG.md +24 -0
  48. package/dist/builtin/web-access/package.json +2 -2
  49. package/dist/builtin/workflows/CHANGELOG.md +54 -0
  50. package/dist/builtin/workflows/builtin/deep-research-codebase-utils.ts +24 -22
  51. package/dist/builtin/workflows/builtin/goal-runner.ts +12 -23
  52. package/dist/builtin/workflows/builtin/open-claude-design-runner.ts +4 -4
  53. package/dist/builtin/workflows/builtin/ralph-models.ts +53 -75
  54. package/dist/builtin/workflows/package.json +2 -2
  55. package/dist/builtin/workflows/src/runs/shared/model-fallback-failures.ts +59 -1
  56. package/dist/builtin/workflows/src/tui/keybindings-adapter.ts +4 -0
  57. package/dist/builtin/workflows/src/tui/overlay-adapter.ts +4 -0
  58. package/dist/builtin/workflows/src/tui/stage-chat-view-input.ts +12 -1
  59. package/dist/builtin/workflows/src/tui/stage-chat-view-state.ts +2 -0
  60. package/dist/builtin/workflows/src/tui/stage-chat-view-types.ts +6 -0
  61. package/dist/builtin/workflows/src/tui/stage-chat-view.ts +4 -0
  62. package/dist/builtin/workflows/src/tui/workflow-attach-pane-types.ts +4 -0
  63. package/dist/builtin/workflows/src/tui/workflow-attach-pane.ts +8 -9
  64. package/dist/bun/cli.d.ts.map +1 -1
  65. package/dist/bun/cli.js +3 -2
  66. package/dist/bun/cli.js.map +1 -1
  67. package/dist/cli/file-processor.d.ts.map +1 -1
  68. package/dist/cli/file-processor.js +13 -25
  69. package/dist/cli/file-processor.js.map +1 -1
  70. package/dist/cli.d.ts.map +1 -1
  71. package/dist/cli.js +15 -5
  72. package/dist/cli.js.map +1 -1
  73. package/dist/config.d.ts +10 -3
  74. package/dist/config.d.ts.map +1 -1
  75. package/dist/config.js +18 -1
  76. package/dist/config.js.map +1 -1
  77. package/dist/core/agent-session-auto-compaction.d.ts.map +1 -1
  78. package/dist/core/agent-session-auto-compaction.js +8 -1
  79. package/dist/core/agent-session-auto-compaction.js.map +1 -1
  80. package/dist/core/agent-session-events.d.ts.map +1 -1
  81. package/dist/core/agent-session-events.js +16 -8
  82. package/dist/core/agent-session-events.js.map +1 -1
  83. package/dist/core/agent-session-export.d.ts.map +1 -1
  84. package/dist/core/agent-session-export.js +4 -2
  85. package/dist/core/agent-session-export.js.map +1 -1
  86. package/dist/core/agent-session-extension-bindings.d.ts +5 -1
  87. package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
  88. package/dist/core/agent-session-extension-bindings.js +18 -7
  89. package/dist/core/agent-session-extension-bindings.js.map +1 -1
  90. package/dist/core/agent-session-methods.d.ts +13 -3
  91. package/dist/core/agent-session-methods.d.ts.map +1 -1
  92. package/dist/core/agent-session-methods.js.map +1 -1
  93. package/dist/core/agent-session-prompt.d.ts +2 -0
  94. package/dist/core/agent-session-prompt.d.ts.map +1 -1
  95. package/dist/core/agent-session-prompt.js +15 -2
  96. package/dist/core/agent-session-prompt.js.map +1 -1
  97. package/dist/core/agent-session-retry.d.ts +2 -0
  98. package/dist/core/agent-session-retry.d.ts.map +1 -1
  99. package/dist/core/agent-session-retry.js +66 -7
  100. package/dist/core/agent-session-retry.js.map +1 -1
  101. package/dist/core/agent-session-state.d.ts.map +1 -1
  102. package/dist/core/agent-session-state.js +2 -2
  103. package/dist/core/agent-session-state.js.map +1 -1
  104. package/dist/core/agent-session-tool-hooks.d.ts +7 -1
  105. package/dist/core/agent-session-tool-hooks.d.ts.map +1 -1
  106. package/dist/core/agent-session-tool-hooks.js +26 -4
  107. package/dist/core/agent-session-tool-hooks.js.map +1 -1
  108. package/dist/core/agent-session-tool-registry.d.ts.map +1 -1
  109. package/dist/core/agent-session-tool-registry.js +4 -0
  110. package/dist/core/agent-session-tool-registry.js.map +1 -1
  111. package/dist/core/agent-session-tree.d.ts.map +1 -1
  112. package/dist/core/agent-session-tree.js +3 -1
  113. package/dist/core/agent-session-tree.js.map +1 -1
  114. package/dist/core/agent-session-types.d.ts +4 -0
  115. package/dist/core/agent-session-types.d.ts.map +1 -1
  116. package/dist/core/agent-session-types.js.map +1 -1
  117. package/dist/core/agent-session.d.ts +5 -1
  118. package/dist/core/agent-session.d.ts.map +1 -1
  119. package/dist/core/agent-session.js +5 -0
  120. package/dist/core/agent-session.js.map +1 -1
  121. package/dist/core/async/format.d.ts +3 -0
  122. package/dist/core/async/format.d.ts.map +1 -0
  123. package/dist/core/async/format.js +50 -0
  124. package/dist/core/async/format.js.map +1 -0
  125. package/dist/core/async/job-manager.d.ts +39 -0
  126. package/dist/core/async/job-manager.d.ts.map +1 -0
  127. package/dist/core/async/job-manager.js +254 -0
  128. package/dist/core/async/job-manager.js.map +1 -0
  129. package/dist/core/async/session-manager.d.ts +18 -0
  130. package/dist/core/async/session-manager.d.ts.map +1 -0
  131. package/dist/core/async/session-manager.js +61 -0
  132. package/dist/core/async/session-manager.js.map +1 -0
  133. package/dist/core/async/types.d.ts +23 -0
  134. package/dist/core/async/types.d.ts.map +1 -0
  135. package/dist/core/async/types.js +2 -0
  136. package/dist/core/async/types.js.map +1 -0
  137. package/dist/core/copilot-model-catalog.d.ts +38 -74
  138. package/dist/core/copilot-model-catalog.d.ts.map +1 -1
  139. package/dist/core/copilot-model-catalog.js +177 -68
  140. package/dist/core/copilot-model-catalog.js.map +1 -1
  141. package/dist/core/copilot-model-static-fallbacks.d.ts +43 -0
  142. package/dist/core/copilot-model-static-fallbacks.d.ts.map +1 -0
  143. package/dist/core/copilot-model-static-fallbacks.js +50 -0
  144. package/dist/core/copilot-model-static-fallbacks.js.map +1 -0
  145. package/dist/core/copilot-model-synthesis.d.ts +10 -0
  146. package/dist/core/copilot-model-synthesis.d.ts.map +1 -0
  147. package/dist/core/copilot-model-synthesis.js +89 -0
  148. package/dist/core/copilot-model-synthesis.js.map +1 -0
  149. package/dist/core/extensions/api-types.d.ts +2 -1
  150. package/dist/core/extensions/api-types.d.ts.map +1 -1
  151. package/dist/core/extensions/api-types.js.map +1 -1
  152. package/dist/core/extensions/index.d.ts +1 -1
  153. package/dist/core/extensions/index.d.ts.map +1 -1
  154. package/dist/core/extensions/index.js.map +1 -1
  155. package/dist/core/extensions/loader-core.d.ts.map +1 -1
  156. package/dist/core/extensions/loader-core.js +3 -3
  157. package/dist/core/extensions/loader-core.js.map +1 -1
  158. package/dist/core/extensions/loader-virtual-modules.d.ts +11 -0
  159. package/dist/core/extensions/loader-virtual-modules.d.ts.map +1 -1
  160. package/dist/core/extensions/loader-virtual-modules.js +79 -11
  161. package/dist/core/extensions/loader-virtual-modules.js.map +1 -1
  162. package/dist/core/extensions/session-events.d.ts +7 -1
  163. package/dist/core/extensions/session-events.d.ts.map +1 -1
  164. package/dist/core/extensions/session-events.js.map +1 -1
  165. package/dist/core/http-dispatcher.d.ts +2 -0
  166. package/dist/core/http-dispatcher.d.ts.map +1 -1
  167. package/dist/core/http-dispatcher.js +38 -5
  168. package/dist/core/http-dispatcher.js.map +1 -1
  169. package/dist/core/model-registry-builtins.d.ts.map +1 -1
  170. package/dist/core/model-registry-builtins.js +40 -6
  171. package/dist/core/model-registry-builtins.js.map +1 -1
  172. package/dist/core/model-registry.d.ts.map +1 -1
  173. package/dist/core/model-registry.js +4 -3
  174. package/dist/core/model-registry.js.map +1 -1
  175. package/dist/core/model-resolver-defaults.d.ts.map +1 -1
  176. package/dist/core/model-resolver-defaults.js +1 -1
  177. package/dist/core/model-resolver-defaults.js.map +1 -1
  178. package/dist/core/resource-loader-reload.d.ts.map +1 -1
  179. package/dist/core/resource-loader-reload.js +6 -3
  180. package/dist/core/resource-loader-reload.js.map +1 -1
  181. package/dist/core/resource-loader-types.d.ts +6 -0
  182. package/dist/core/resource-loader-types.d.ts.map +1 -1
  183. package/dist/core/resource-loader-types.js.map +1 -1
  184. package/dist/core/session-manager-core.d.ts +2 -12
  185. package/dist/core/session-manager-core.d.ts.map +1 -1
  186. package/dist/core/session-manager-core.js +8 -16
  187. package/dist/core/session-manager-core.js.map +1 -1
  188. package/dist/core/settings-manager-resource-accessors.d.ts +1 -0
  189. package/dist/core/settings-manager-resource-accessors.d.ts.map +1 -1
  190. package/dist/core/settings-manager-resource-accessors.js +11 -0
  191. package/dist/core/settings-manager-resource-accessors.js.map +1 -1
  192. package/dist/core/settings-manager-ui-accessors.d.ts +2 -0
  193. package/dist/core/settings-manager-ui-accessors.d.ts.map +1 -1
  194. package/dist/core/settings-manager-ui-accessors.js +9 -0
  195. package/dist/core/settings-manager-ui-accessors.js.map +1 -1
  196. package/dist/core/settings-types.d.ts +2 -0
  197. package/dist/core/settings-types.d.ts.map +1 -1
  198. package/dist/core/settings-types.js.map +1 -1
  199. package/dist/core/timings.d.ts +7 -5
  200. package/dist/core/timings.d.ts.map +1 -1
  201. package/dist/core/timings.js +42 -24
  202. package/dist/core/timings.js.map +1 -1
  203. package/dist/core/tools/bash-async-execution.d.ts +25 -0
  204. package/dist/core/tools/bash-async-execution.d.ts.map +1 -0
  205. package/dist/core/tools/bash-async-execution.js +71 -0
  206. package/dist/core/tools/bash-async-execution.js.map +1 -0
  207. package/dist/core/tools/bash-async-jobs.d.ts +10 -0
  208. package/dist/core/tools/bash-async-jobs.d.ts.map +1 -1
  209. package/dist/core/tools/bash-async-jobs.js +18 -2
  210. package/dist/core/tools/bash-async-jobs.js.map +1 -1
  211. package/dist/core/tools/bash-async-output.d.ts +3 -1
  212. package/dist/core/tools/bash-async-output.d.ts.map +1 -1
  213. package/dist/core/tools/bash-async-output.js +4 -1
  214. package/dist/core/tools/bash-async-output.js.map +1 -1
  215. package/dist/core/tools/bash-pty-native.d.ts.map +1 -1
  216. package/dist/core/tools/bash-pty-native.js +2 -2
  217. package/dist/core/tools/bash-pty-native.js.map +1 -1
  218. package/dist/core/tools/bash.d.ts +10 -4
  219. package/dist/core/tools/bash.d.ts.map +1 -1
  220. package/dist/core/tools/bash.js +20 -38
  221. package/dist/core/tools/bash.js.map +1 -1
  222. package/dist/core/tools/read-selectors.d.ts.map +1 -1
  223. package/dist/core/tools/read-selectors.js +19 -1
  224. package/dist/core/tools/read-selectors.js.map +1 -1
  225. package/dist/core/tools/read.d.ts.map +1 -1
  226. package/dist/core/tools/read.js +12 -23
  227. package/dist/core/tools/read.js.map +1 -1
  228. package/dist/core/tools/search-native.d.ts.map +1 -1
  229. package/dist/core/tools/search-native.js +2 -2
  230. package/dist/core/tools/search-native.js.map +1 -1
  231. package/dist/index-extensions.d.ts +1 -1
  232. package/dist/index-extensions.d.ts.map +1 -1
  233. package/dist/index-extensions.js.map +1 -1
  234. package/dist/index.d.ts +1 -1
  235. package/dist/index.d.ts.map +1 -1
  236. package/dist/index.js.map +1 -1
  237. package/dist/main-session.d.ts.map +1 -1
  238. package/dist/main-session.js +14 -5
  239. package/dist/main-session.js.map +1 -1
  240. package/dist/main.d.ts.map +1 -1
  241. package/dist/main.js +56 -32
  242. package/dist/main.js.map +1 -1
  243. package/dist/modes/interactive/components/assistant-message.d.ts +3 -1
  244. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  245. package/dist/modes/interactive/components/assistant-message.js +22 -15
  246. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  247. package/dist/modes/interactive/components/chat-message-renderer.d.ts +1 -0
  248. package/dist/modes/interactive/components/chat-message-renderer.d.ts.map +1 -1
  249. package/dist/modes/interactive/components/chat-message-renderer.js +5 -5
  250. package/dist/modes/interactive/components/chat-message-renderer.js.map +1 -1
  251. package/dist/modes/interactive/components/chat-session-host-events.d.ts.map +1 -1
  252. package/dist/modes/interactive/components/chat-session-host-events.js +8 -0
  253. package/dist/modes/interactive/components/chat-session-host-events.js.map +1 -1
  254. package/dist/modes/interactive/components/chat-session-host-rendering.d.ts.map +1 -1
  255. package/dist/modes/interactive/components/chat-session-host-rendering.js +1 -0
  256. package/dist/modes/interactive/components/chat-session-host-rendering.js.map +1 -1
  257. package/dist/modes/interactive/components/user-message.d.ts +6 -2
  258. package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  259. package/dist/modes/interactive/components/user-message.js +16 -5
  260. package/dist/modes/interactive/components/user-message.js.map +1 -1
  261. package/dist/modes/interactive/interactive-agent-events.d.ts.map +1 -1
  262. package/dist/modes/interactive/interactive-agent-events.js +6 -1
  263. package/dist/modes/interactive/interactive-agent-events.js.map +1 -1
  264. package/dist/modes/interactive/interactive-deferred-startup.d.ts +2 -0
  265. package/dist/modes/interactive/interactive-deferred-startup.d.ts.map +1 -0
  266. package/dist/modes/interactive/interactive-deferred-startup.js +59 -0
  267. package/dist/modes/interactive/interactive-deferred-startup.js.map +1 -0
  268. package/dist/modes/interactive/interactive-editor-actions.d.ts.map +1 -1
  269. package/dist/modes/interactive/interactive-editor-actions.js +1 -0
  270. package/dist/modes/interactive/interactive-editor-actions.js.map +1 -1
  271. package/dist/modes/interactive/interactive-extension-context.d.ts.map +1 -1
  272. package/dist/modes/interactive/interactive-extension-context.js +1 -0
  273. package/dist/modes/interactive/interactive-extension-context.js.map +1 -1
  274. package/dist/modes/interactive/interactive-mode-base.d.ts +3 -0
  275. package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
  276. package/dist/modes/interactive/interactive-mode-base.js +6 -0
  277. package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
  278. package/dist/modes/interactive/interactive-mode-deps.d.ts +1 -1
  279. package/dist/modes/interactive/interactive-mode-deps.d.ts.map +1 -1
  280. package/dist/modes/interactive/interactive-mode-deps.js +1 -1
  281. package/dist/modes/interactive/interactive-mode-deps.js.map +1 -1
  282. package/dist/modes/interactive/interactive-mode-surface.d.ts +2 -0
  283. package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
  284. package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
  285. package/dist/modes/interactive/interactive-mode-types.d.ts +2 -0
  286. package/dist/modes/interactive/interactive-mode-types.d.ts.map +1 -1
  287. package/dist/modes/interactive/interactive-mode-types.js.map +1 -1
  288. package/dist/modes/interactive/interactive-mode.d.ts +1 -0
  289. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  290. package/dist/modes/interactive/interactive-mode.js +1 -0
  291. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  292. package/dist/modes/interactive/interactive-model-routing.d.ts.map +1 -1
  293. package/dist/modes/interactive/interactive-model-routing.js +2 -4
  294. package/dist/modes/interactive/interactive-model-routing.js.map +1 -1
  295. package/dist/modes/interactive/interactive-render-chat.d.ts.map +1 -1
  296. package/dist/modes/interactive/interactive-render-chat.js +4 -3
  297. package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
  298. package/dist/modes/interactive/interactive-session-runtime.d.ts.map +1 -1
  299. package/dist/modes/interactive/interactive-session-runtime.js +5 -2
  300. package/dist/modes/interactive/interactive-session-runtime.js.map +1 -1
  301. package/dist/modes/interactive/interactive-startup.d.ts.map +1 -1
  302. package/dist/modes/interactive/interactive-startup.js +11 -1
  303. package/dist/modes/interactive/interactive-startup.js.map +1 -1
  304. package/dist/modes/rpc/rpc-client.d.ts +28 -51
  305. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  306. package/dist/modes/rpc/rpc-client.js +27 -51
  307. package/dist/modes/rpc/rpc-client.js.map +1 -1
  308. package/dist/modes/rpc/rpc-command-handler.d.ts.map +1 -1
  309. package/dist/modes/rpc/rpc-command-handler.js +19 -0
  310. package/dist/modes/rpc/rpc-command-handler.js.map +1 -1
  311. package/dist/modes/rpc/rpc-types.d.ts +26 -0
  312. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  313. package/dist/modes/rpc/rpc-types.js.map +1 -1
  314. package/dist/rpc-entry.d.ts +3 -0
  315. package/dist/rpc-entry.d.ts.map +1 -0
  316. package/dist/rpc-entry.js +12 -0
  317. package/dist/rpc-entry.js.map +1 -0
  318. package/dist/utils/image-convert.d.ts +1 -0
  319. package/dist/utils/image-convert.d.ts.map +1 -1
  320. package/dist/utils/image-convert.js +21 -15
  321. package/dist/utils/image-convert.js.map +1 -1
  322. package/dist/utils/image-process.d.ts +18 -0
  323. package/dist/utils/image-process.d.ts.map +1 -0
  324. package/dist/utils/image-process.js +83 -0
  325. package/dist/utils/image-process.js.map +1 -0
  326. package/dist/utils/mime.d.ts.map +1 -1
  327. package/dist/utils/mime.js +41 -0
  328. package/dist/utils/mime.js.map +1 -1
  329. package/dist/utils/module-require.d.ts +11 -0
  330. package/dist/utils/module-require.d.ts.map +1 -0
  331. package/dist/utils/module-require.js +16 -0
  332. package/dist/utils/module-require.js.map +1 -0
  333. package/docs/compaction.md +2 -0
  334. package/docs/development.md +10 -0
  335. package/docs/extensions.md +11 -0
  336. package/docs/models.md +3 -3
  337. package/docs/providers.md +2 -1
  338. package/docs/rpc.md +60 -2
  339. package/docs/sdk.md +1 -1
  340. package/docs/settings.md +4 -1
  341. package/docs/subagents.md +6 -0
  342. package/docs/tools.md +4 -2
  343. package/docs/workflows.md +4 -2
  344. package/npm-shrinkwrap.json +138 -171
  345. package/package.json +19 -12
@@ -1 +1 @@
1
- {"version":3,"file":"session-manager-core.js","sourceRoot":"","sources":["../../src/core/session-manager-core.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ImageContent, Message, TextContent } from \"@earendil-works/pi-ai/compat\";\nimport { existsSync } from \"fs\";\nimport { resolve } from \"path\";\nimport { normalizePath, resolvePath } from \"../utils/paths.ts\";\nimport type { BashExecutionMessage, CustomMessage } from \"./messages.ts\";\nimport {\n\tcreateBackupSnapshot,\n\tcreateBranchedSessionState,\n\tforkSessionFromFile,\n} from \"./session-manager-archive.ts\";\nimport {\n\tcreateBranchSummaryEntry,\n\tcreateContextCompactionEntry,\n\tcreateContextWindowChangeEntry,\n\tcreateCustomEntry,\n\tcreateCustomMessageEntry,\n\tcreateLabelEntry,\n\tgetEntriesWithoutHeader,\n\tcreateMessageEntry,\n\tcreateModelChangeEntry,\n\tcreateSessionFilePath,\n\tcreateSessionHeader,\n\tcreateSessionInfoEntry,\n\tcreateThinkingLevelChangeEntry,\n\tgetLatestSessionName,\n} from \"./session-manager-entries.ts\";\nimport { buildSessionContext, buildSessionIndex, buildSessionTree, getBranchPath } from \"./session-manager-history.ts\";\nimport { listAllSessions, listProjectSessions } from \"./session-manager-list.ts\";\nimport { migrateToCurrentVersion } from \"./session-manager-migrations.ts\";\nimport { getDefaultSessionDir, getDefaultSessionDirPath } from \"./session-manager-paths.ts\";\nimport {\n\tappendSessionEntries,\n\tappendSessionEntry,\n\tensureDirectory,\n\tfindMostRecentSession,\n\thasAssistantMessage,\n\tloadEntriesFromFile,\n\twriteSessionEntries,\n} from \"./session-manager-storage.ts\";\nimport type {\n\tBranchSummaryEntry,\n\tContextCompactionStats,\n\tContextDeletionTarget,\n\tFileEntry,\n\tNewSessionOptions,\n\tSessionContext,\n\tSessionEntry,\n\tSessionHeader,\n\tSessionInfo,\n\tSessionListProgress,\n\tSessionTreeNode,\n\tSessionWorkflowMetadata,\n} from \"./session-manager-types.ts\";\nimport { assertValidSessionId, createSessionId } from \"./session-manager-validation.ts\";\n\n/**\n * Manages conversation sessions as append-only trees stored in JSONL files.\n *\n * Each session entry has an id and parentId forming a tree structure. The \"leaf\"\n * pointer tracks the current position. Appending creates a child of the current leaf.\n * Branching moves the leaf to an earlier entry, allowing new branches without\n * modifying history.\n *\n * Use buildSessionContext() to get the resolved message list for the LLM, which\n * applies context-deletion filtering and follows the path from root to current leaf.\n */\nexport class SessionManager {\n\tprivate sessionId: string = \"\";\n\tprivate sessionFile: string | undefined;\n\tprivate sessionDir: string;\n\tprivate cwd: string;\n\tprivate persist: boolean;\n\tprivate flushed: boolean = false;\n\tprivate fileEntries: FileEntry[] = [];\n\tprivate byId: Map<string, SessionEntry> = new Map();\n\tprivate labelsById: Map<string, string> = new Map();\n\tprivate labelTimestampsById: Map<string, string> = new Map();\n\tprivate leafId: string | null = null;\n\n\tprivate constructor(\n\t\tcwd: string,\n\t\tsessionDir: string,\n\t\tsessionFile: string | undefined,\n\t\tpersist: boolean,\n\t\tnewSessionOptions?: NewSessionOptions,\n\t) {\n\t\tthis.cwd = resolvePath(cwd);\n\t\tthis.sessionDir = normalizePath(sessionDir);\n\t\tthis.persist = persist;\n\t\tif (persist && this.sessionDir) {\n\t\t\tensureDirectory(this.sessionDir);\n\t\t}\n\n\t\tif (sessionFile) {\n\t\t\tthis.setSessionFile(sessionFile);\n\t\t} else {\n\t\t\tthis.newSession(newSessionOptions);\n\t\t}\n\t}\n\n\t/** Switch to a different session file (used for resume and branching) */\n\tsetSessionFile(sessionFile: string): void {\n\t\tthis.sessionFile = resolvePath(sessionFile);\n\t\tif (existsSync(this.sessionFile)) {\n\t\t\tthis.fileEntries = loadEntriesFromFile(this.sessionFile);\n\n\t\t\t// If file was empty or corrupted (no valid header), truncate and start fresh\n\t\t\t// to avoid appending messages without a session header (which breaks the session)\n\t\t\tif (this.fileEntries.length === 0) {\n\t\t\t\tconst explicitPath = this.sessionFile;\n\t\t\t\tthis.newSession();\n\t\t\t\tthis.sessionFile = explicitPath;\n\t\t\t\tthis._rewriteFile();\n\t\t\t\tthis.flushed = true;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst header = this.fileEntries.find((entry) => entry.type === \"session\") as SessionHeader | undefined;\n\t\t\tthis.sessionId = header?.id ?? createSessionId();\n\n\t\t\tif (migrateToCurrentVersion(this.fileEntries)) {\n\t\t\t\tthis._rewriteFile();\n\t\t\t}\n\n\t\t\tthis._buildIndex();\n\t\t\tthis.flushed = true;\n\t\t} else {\n\t\t\tconst explicitPath = this.sessionFile;\n\t\t\tthis.newSession();\n\t\t\tthis.sessionFile = explicitPath; // preserve explicit path from --session flag\n\t\t}\n\t}\n\n\tnewSession(options?: NewSessionOptions): string | undefined {\n\t\tif (options?.id !== undefined) {\n\t\t\tassertValidSessionId(options.id);\n\t\t}\n\t\tthis.sessionId = options?.id ?? createSessionId();\n\t\tconst timestamp = new Date().toISOString();\n\t\tconst header = createSessionHeader(\n\t\t\tthis.sessionId,\n\t\t\tthis.cwd,\n\t\t\ttimestamp,\n\t\t\toptions?.parentSession,\n\t\t\toptions?.internal,\n\t\t\toptions?.workflow,\n\t\t);\n\t\tthis.fileEntries = [header];\n\t\tthis.byId.clear();\n\t\tthis.labelsById.clear();\n\t\tthis.leafId = null;\n\t\tthis.flushed = false;\n\n\t\tif (this.persist) {\n\t\t\tthis.sessionFile = createSessionFilePath(this.getSessionDir(), timestamp, this.sessionId);\n\t\t}\n\t\treturn this.sessionFile;\n\t}\n\n\t/** Mark the session header as internal (e.g. workflow stage). Preserves an existing full marker on reattach. */\n\tmarkSessionInternal(workflow?: SessionWorkflowMetadata): void {\n\t\tconst header = this.fileEntries.find((entry) => entry.type === \"session\") as SessionHeader | undefined;\n\t\tif (!header || (header.internal && header.workflow)) return;\n\t\theader.internal = true;\n\t\tif (workflow) header.workflow = workflow;\n\t\tif (this.flushed) this._rewriteFile();\n\t}\n\n\tprivate _buildIndex(): void {\n\t\tconst index = buildSessionIndex(this.fileEntries);\n\t\tthis.byId = index.byId;\n\t\tthis.labelsById = index.labelsById;\n\t\tthis.labelTimestampsById = index.labelTimestampsById;\n\t\tthis.leafId = index.leafId;\n\t}\n\n\tprivate _rewriteFile(): void {\n\t\tif (!this.persist || !this.sessionFile) return;\n\t\twriteSessionEntries(this.sessionFile, this.fileEntries);\n\t}\n\n\tisPersisted(): boolean {\n\t\treturn this.persist;\n\t}\n\n\tgetCwd(): string {\n\t\treturn this.cwd;\n\t}\n\n\tgetSessionDir(): string {\n\t\treturn this.sessionDir;\n\t}\n\n\tusesDefaultSessionDir(): boolean {\n\t\treturn this.sessionDir === getDefaultSessionDirPath(this.cwd);\n\t}\n\n\tgetSessionId(): string {\n\t\treturn this.sessionId;\n\t}\n\n\tgetSessionFile(): string | undefined {\n\t\treturn this.sessionFile;\n\t}\n\n\t_persist(entry: SessionEntry): void {\n\t\tif (!this.persist || !this.sessionFile) return;\n\n\t\tif (!hasAssistantMessage(this.fileEntries)) {\n\t\t\t// Mark as not flushed so when assistant arrives, all entries get written\n\t\t\tthis.flushed = false;\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.flushed) {\n\t\t\tappendSessionEntries(this.sessionFile, this.fileEntries);\n\t\t\tthis.flushed = true;\n\t\t} else {\n\t\t\tappendSessionEntry(this.sessionFile, entry);\n\t\t}\n\t}\n\n\tprivate _appendEntry(entry: SessionEntry): void {\n\t\tthis.fileEntries.push(entry);\n\t\tthis.byId.set(entry.id, entry);\n\t\tthis.leafId = entry.id;\n\t\tthis._persist(entry);\n\t}\n\n\t/** Append a message as child of current leaf, then advance leaf. Returns entry id. */\n\tappendMessage(message: Message | CustomMessage | BashExecutionMessage): string {\n\t\tconst entry = createMessageEntry(message, this.byId, this.leafId);\n\t\tthis._appendEntry(entry);\n\t\treturn entry.id;\n\t}\n\n\t/** Append a thinking level change as child of current leaf, then advance leaf. Returns entry id. */\n\tappendThinkingLevelChange(thinkingLevel: string): string {\n\t\tconst entry = createThinkingLevelChangeEntry(thinkingLevel, this.byId, this.leafId);\n\t\tthis._appendEntry(entry);\n\t\treturn entry.id;\n\t}\n\n\t/** Append a context window change as child of current leaf, then advance leaf. Returns entry id. */\n\tappendContextWindowChange(contextWindow: number): string {\n\t\tconst entry = createContextWindowChangeEntry(contextWindow, this.byId, this.leafId);\n\t\tthis._appendEntry(entry);\n\t\treturn entry.id;\n\t}\n\n\t/** Append a model change as child of current leaf, then advance leaf. Returns entry id. */\n\tappendModelChange(provider: string, modelId: string): string {\n\t\tconst entry = createModelChangeEntry(provider, modelId, this.byId, this.leafId);\n\t\tthis._appendEntry(entry);\n\t\treturn entry.id;\n\t}\n\n\t/** Append logical deletion metadata for deletion-only context compaction. */\n\tappendContextCompaction(\n\t\tdeletedTargets: ContextDeletionTarget[],\n\t\tprotectedEntryIds: string[],\n\t\tstats: ContextCompactionStats,\n\t\tbackupPath?: string,\n\t): string {\n\t\tconst entry = createContextCompactionEntry(deletedTargets, protectedEntryIds, stats, backupPath, this.byId, this.leafId);\n\t\tthis._appendEntry(entry);\n\t\treturn entry.id;\n\t}\n\n\t/** Write a recoverable snapshot of the current session entries without mutating the active JSONL. */\n\twriteBackupSnapshot(label = \"compact\"): string | undefined {\n\t\tif (!this.persist) return undefined;\n\t\treturn createBackupSnapshot(this.sessionFile, this.fileEntries, label);\n\t}\n\n\t/** Append a custom entry (for extensions) as child of current leaf, then advance leaf. Returns entry id. */\n\tappendCustomEntry(customType: string, data?: unknown): string {\n\t\tconst entry = createCustomEntry(customType, data, this.byId, this.leafId);\n\t\tthis._appendEntry(entry);\n\t\treturn entry.id;\n\t}\n\n\t/** Append a session info entry (e.g., display name). Returns entry id. */\n\tappendSessionInfo(name: string): string {\n\t\tconst entry = createSessionInfoEntry(name, this.byId, this.leafId);\n\t\tthis._appendEntry(entry);\n\t\treturn entry.id;\n\t}\n\n\t/** Get the current session name from the latest session_info entry, if any. */\n\tgetSessionName(): string | undefined {\n\t\treturn getLatestSessionName(this.getEntries());\n\t}\n\n\t/** Append a custom message entry (for extensions) that participates in LLM context unless excluded. */\n\tappendCustomMessageEntry<T = unknown>(\n\t\tcustomType: string,\n\t\tcontent: string | (TextContent | ImageContent)[],\n\t\tdisplay: boolean,\n\t\tdetails?: T,\n\t\texcludeFromContext?: boolean,\n\t): string {\n\t\tconst entry = createCustomMessageEntry(customType, content, display, details, excludeFromContext, this.byId, this.leafId);\n\t\tthis._appendEntry(entry);\n\t\treturn entry.id;\n\t}\n\n\tgetLeafId(): string | null {\n\t\treturn this.leafId;\n\t}\n\n\tgetLeafEntry(): SessionEntry | undefined {\n\t\treturn this.leafId ? this.byId.get(this.leafId) : undefined;\n\t}\n\n\tgetEntry(id: string): SessionEntry | undefined {\n\t\treturn this.byId.get(id);\n\t}\n\n\t/** Get all direct children of an entry. */\n\tgetChildren(parentId: string): SessionEntry[] {\n\t\tconst children: SessionEntry[] = [];\n\t\tfor (const entry of this.byId.values()) {\n\t\t\tif (entry.parentId === parentId) {\n\t\t\t\tchildren.push(entry);\n\t\t\t}\n\t\t}\n\t\treturn children;\n\t}\n\n\t/** Get the label for an entry, if any. */\n\tgetLabel(id: string): string | undefined {\n\t\treturn this.labelsById.get(id);\n\t}\n\n\t/** Set or clear a label on an entry. */\n\tappendLabelChange(targetId: string, label: string | undefined): string {\n\t\tif (!this.byId.has(targetId)) {\n\t\t\tthrow new Error(`Entry ${targetId} not found`);\n\t\t}\n\t\tconst entry = createLabelEntry(targetId, label, this.byId, this.leafId);\n\t\tthis._appendEntry(entry);\n\t\tif (label) {\n\t\t\tthis.labelsById.set(targetId, label);\n\t\t\tthis.labelTimestampsById.set(targetId, entry.timestamp);\n\t\t} else {\n\t\t\tthis.labelsById.delete(targetId);\n\t\t\tthis.labelTimestampsById.delete(targetId);\n\t\t}\n\t\treturn entry.id;\n\t}\n\n\t/** Walk from entry to root, returning all entries in path order. */\n\tgetBranch(fromId?: string): SessionEntry[] {\n\t\treturn getBranchPath(fromId ?? this.leafId, this.byId);\n\t}\n\n\t/** Build the session context (what gets sent to the LLM). */\n\tbuildSessionContext(): SessionContext {\n\t\treturn buildSessionContext(this.getEntries(), this.leafId, this.byId);\n\t}\n\n\t/** Get session header. */\n\tgetHeader(): SessionHeader | null {\n\t\tconst header = this.fileEntries.find((entry) => entry.type === \"session\");\n\t\treturn header ? (header as SessionHeader) : null;\n\t}\n\n\t/** Get all session entries (excludes header). Returns a shallow copy. */\n\tgetEntries(): SessionEntry[] {\n\t\treturn getEntriesWithoutHeader(this.fileEntries);\n\t}\n\n\t/** Get the session as a tree structure. Returns a shallow defensive copy of all entries. */\n\tgetTree(): SessionTreeNode[] {\n\t\treturn buildSessionTree(this.getEntries(), this.labelsById, this.labelTimestampsById);\n\t}\n\n\t/** Start a new branch from an earlier entry. */\n\tbranch(branchFromId: string): void {\n\t\tif (!this.byId.has(branchFromId)) {\n\t\t\tthrow new Error(`Entry ${branchFromId} not found`);\n\t\t}\n\t\tthis.leafId = branchFromId;\n\t}\n\n\t/** Reset the leaf pointer to null (before any entries). */\n\tresetLeaf(): void {\n\t\tthis.leafId = null;\n\t}\n\n\t/** Start a new branch with a summary of the abandoned path. */\n\tbranchWithSummary(branchFromId: string | null, summary: string, details?: unknown, fromHook?: boolean): string {\n\t\tif (branchFromId !== null && !this.byId.has(branchFromId)) {\n\t\t\tthrow new Error(`Entry ${branchFromId} not found`);\n\t\t}\n\t\tthis.leafId = branchFromId;\n\t\tconst entry: BranchSummaryEntry = createBranchSummaryEntry(branchFromId, summary, details, fromHook, this.byId);\n\t\tthis._appendEntry(entry);\n\t\treturn entry.id;\n\t}\n\n\t/** Create a new session file containing only the path from root to the specified leaf. */\n\tcreateBranchedSession(leafId: string): string | undefined {\n\t\tconst result = createBranchedSessionState({\n\t\t\tleafId,\n\t\t\tpersist: this.persist,\n\t\t\tsessionDir: this.getSessionDir(),\n\t\t\tcwd: this.cwd,\n\t\t\tpreviousSessionFile: this.sessionFile,\n\t\t\tpath: this.getBranch(leafId),\n\t\t\tlabelsById: this.labelsById,\n\t\t\tlabelTimestampsById: this.labelTimestampsById,\n\t\t});\n\t\tthis.fileEntries = result.fileEntries;\n\t\tthis.sessionId = result.sessionId;\n\t\tif (result.sessionFile) this.sessionFile = result.sessionFile;\n\t\tthis._buildIndex();\n\n\t\tif (this.persist) {\n\t\t\tif (result.shouldRewriteFile) this._rewriteFile();\n\t\t\tthis.flushed = result.flushed ?? false;\n\t\t\treturn result.sessionFile;\n\t\t}\n\t\treturn undefined;\n\t}\n\n\t/** Create a new session. */\n\tstatic create(cwd: string, sessionDir?: string, options?: NewSessionOptions): SessionManager {\n\t\tconst dir = sessionDir ? normalizePath(sessionDir) : getDefaultSessionDir(cwd);\n\t\treturn new SessionManager(cwd, dir, undefined, true, options);\n\t}\n\n\t/** Open a specific session file. */\n\tstatic open(path: string, sessionDir?: string, cwdOverride?: string): SessionManager {\n\t\tconst resolvedPath = resolvePath(path);\n\t\tconst entries = loadEntriesFromFile(resolvedPath);\n\t\tconst header = entries.find((entry) => entry.type === \"session\") as SessionHeader | undefined;\n\t\tconst cwd = cwdOverride ?? header?.cwd ?? process.cwd();\n\t\tconst dir = sessionDir ? normalizePath(sessionDir) : resolve(resolvedPath, \"..\");\n\t\treturn new SessionManager(cwd, dir, resolvedPath, true);\n\t}\n\n\t/** Continue the most recent session (skips internal workflow sessions unless `includeInternal: true`). */\n\tstatic continueRecent(\n\t\tcwd: string,\n\t\tsessionDir?: string,\n\t\toptions?: { includeInternal?: boolean },\n\t): SessionManager {\n\t\tconst dir = sessionDir ? normalizePath(sessionDir) : getDefaultSessionDir(cwd);\n\t\tconst filterCwd = sessionDir !== undefined && dir !== getDefaultSessionDirPath(cwd);\n\t\tconst mostRecent = findMostRecentSession(\n\t\t\tdir,\n\t\t\tfilterCwd ? cwd : undefined,\n\t\t\toptions?.includeInternal === true,\n\t\t);\n\t\treturn new SessionManager(cwd, dir, mostRecent ?? undefined, true);\n\t}\n\n\t/** Create an in-memory session (no file persistence) */\n\tstatic inMemory(cwd: string = process.cwd()): SessionManager {\n\t\treturn new SessionManager(cwd, \"\", undefined, false);\n\t}\n\n\t/** Fork a session from another project directory into the current project. */\n\tstatic forkFrom(\n\t\tsourcePath: string,\n\t\ttargetCwd: string,\n\t\tsessionDir?: string,\n\t\toptions?: NewSessionOptions,\n\t): SessionManager {\n\t\tconst forked = forkSessionFromFile(sourcePath, targetCwd, sessionDir, options);\n\t\treturn new SessionManager(forked.cwd, forked.sessionDir, forked.sessionFile, true);\n\t}\n\n\t/** List sessions for a directory. Internal (workflow) sessions are excluded unless `includeInternal: true`. */\n\tstatic async list(\n\t\tcwd: string,\n\t\tsessionDir?: string,\n\t\tonProgress?: SessionListProgress,\n\t\toptions?: { includeInternal?: boolean },\n\t): Promise<SessionInfo[]> {\n\t\treturn listProjectSessions(cwd, sessionDir, onProgress, options?.includeInternal === true);\n\t}\n\n\t/** List sessions across all directories. Internal (workflow) sessions are excluded unless `includeInternal: true`. */\n\tstatic async listAll(onProgress?: SessionListProgress): Promise<SessionInfo[]>;\n\tstatic async listAll(\n\t\tsessionDir?: string,\n\t\tonProgress?: SessionListProgress,\n\t\toptions?: { includeInternal?: boolean },\n\t): Promise<SessionInfo[]>;\n\tstatic async listAll(\n\t\tsessionDirOrOnProgress?: string | SessionListProgress,\n\t\tonProgress?: SessionListProgress,\n\t\toptions?: { includeInternal?: boolean },\n\t): Promise<SessionInfo[]> {\n\t\treturn listAllSessions(sessionDirOrOnProgress, onProgress, options?.includeInternal === true);\n\t}\n}\n"]}
1
+ {"version":3,"file":"session-manager-core.js","sourceRoot":"","sources":["../../src/core/session-manager-core.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ImageContent, Message, TextContent } from \"@earendil-works/pi-ai/compat\";\nimport { existsSync, statSync } from \"fs\";\nimport { resolve } from \"path\";\nimport { normalizePath, resolvePath } from \"../utils/paths.ts\";\nimport type { BashExecutionMessage, CustomMessage } from \"./messages.ts\";\nimport {\n\tcreateBackupSnapshot,\n\tcreateBranchedSessionState,\n\tforkSessionFromFile,\n} from \"./session-manager-archive.ts\";\nimport {\n\tcreateBranchSummaryEntry,\n\tcreateContextCompactionEntry,\n\tcreateContextWindowChangeEntry,\n\tcreateCustomEntry,\n\tcreateCustomMessageEntry,\n\tcreateLabelEntry,\n\tgetEntriesWithoutHeader,\n\tcreateMessageEntry,\n\tcreateModelChangeEntry,\n\tcreateSessionFilePath,\n\tcreateSessionHeader,\n\tcreateSessionInfoEntry,\n\tcreateThinkingLevelChangeEntry,\n\tgetLatestSessionName,\n} from \"./session-manager-entries.ts\";\nimport { buildSessionContext, buildSessionIndex, buildSessionTree, getBranchPath } from \"./session-manager-history.ts\";\nimport { listAllSessions, listProjectSessions } from \"./session-manager-list.ts\";\nimport { migrateToCurrentVersion } from \"./session-manager-migrations.ts\";\nimport { getDefaultSessionDir, getDefaultSessionDirPath } from \"./session-manager-paths.ts\";\nimport {\n\tappendSessionEntries,\n\tappendSessionEntry,\n\tensureDirectory,\n\tfindMostRecentSession,\n\thasAssistantMessage,\n\tloadEntriesFromFile,\n\twriteSessionEntries,\n} from \"./session-manager-storage.ts\";\nimport type {\n\tBranchSummaryEntry,\n\tContextCompactionStats,\n\tContextDeletionTarget,\n\tFileEntry,\n\tNewSessionOptions,\n\tSessionContext,\n\tSessionEntry,\n\tSessionHeader,\n\tSessionInfo,\n\tSessionListProgress,\n\tSessionTreeNode,\n\tSessionWorkflowMetadata,\n} from \"./session-manager-types.ts\";\nimport { assertValidSessionId, createSessionId } from \"./session-manager-validation.ts\";\n\n/** Manages conversation sessions as append-only trees stored in JSONL files. Each session entry has an id and parentId forming a tree structure. The \"leaf\" pointer tracks the current position. Appending creates a child of the current leaf. Branching moves the leaf to an earlier entry, allowing new branches without modifying history. Use buildSessionContext() to get the resolved message list for the LLM, which applies context-deletion filtering and follows the path from root to current leaf. */\nexport class SessionManager {\n\tprivate sessionId: string = \"\";\n\tprivate sessionFile: string | undefined;\n\tprivate sessionDir: string;\n\tprivate cwd: string;\n\tprivate persist: boolean;\n\tprivate flushed: boolean = false;\n\tprivate fileEntries: FileEntry[] = [];\n\tprivate byId: Map<string, SessionEntry> = new Map();\n\tprivate labelsById: Map<string, string> = new Map();\n\tprivate labelTimestampsById: Map<string, string> = new Map();\n\tprivate leafId: string | null = null;\n\n\tprivate constructor(\n\t\tcwd: string,\n\t\tsessionDir: string,\n\t\tsessionFile: string | undefined,\n\t\tpersist: boolean,\n\t\tnewSessionOptions?: NewSessionOptions,\n\t) {\n\t\tthis.cwd = resolvePath(cwd);\n\t\tthis.sessionDir = normalizePath(sessionDir);\n\t\tthis.persist = persist;\n\t\tif (persist && this.sessionDir) {\n\t\t\tensureDirectory(this.sessionDir);\n\t\t}\n\n\t\tif (sessionFile) {\n\t\t\tthis.setSessionFile(sessionFile);\n\t\t} else {\n\t\t\tthis.newSession(newSessionOptions);\n\t\t}\n\t}\n\n\t/** Switch to a different session file (used for resume and branching) */\n\tsetSessionFile(sessionFile: string): void {\n\t\tthis.sessionFile = resolvePath(sessionFile);\n\t\tif (existsSync(this.sessionFile)) {\n\t\t\tthis.fileEntries = loadEntriesFromFile(this.sessionFile);\n\n\t\t\t// If file was empty, initialize it with a valid session header. If it was non-empty but did not parse as a pi session, fail without modifying it.\n\t\t\tif (this.fileEntries.length === 0) {\n\t\t\t\tconst explicitPath = this.sessionFile;\n\t\t\t\tif (statSync(explicitPath).size > 0) {\n\t\t\t\t\tthrow new Error(`Session file is not a valid pi session: ${explicitPath}`);\n\t\t\t\t}\n\t\t\t\tthis.newSession();\n\t\t\t\tthis.sessionFile = explicitPath;\n\t\t\t\tthis._rewriteFile();\n\t\t\t\tthis.flushed = true;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst header = this.fileEntries.find((entry) => entry.type === \"session\") as SessionHeader | undefined;\n\t\t\tthis.sessionId = header?.id ?? createSessionId();\n\n\t\t\tif (migrateToCurrentVersion(this.fileEntries)) {\n\t\t\t\tthis._rewriteFile();\n\t\t\t}\n\n\t\t\tthis._buildIndex();\n\t\t\tthis.flushed = true;\n\t\t} else {\n\t\t\tconst explicitPath = this.sessionFile;\n\t\t\tthis.newSession();\n\t\t\tthis.sessionFile = explicitPath; // preserve explicit path from --session flag\n\t\t}\n\t}\n\n\tnewSession(options?: NewSessionOptions): string | undefined {\n\t\tif (options?.id !== undefined) {\n\t\t\tassertValidSessionId(options.id);\n\t\t}\n\t\tthis.sessionId = options?.id ?? createSessionId();\n\t\tconst timestamp = new Date().toISOString();\n\t\tconst header = createSessionHeader(\n\t\t\tthis.sessionId,\n\t\t\tthis.cwd,\n\t\t\ttimestamp,\n\t\t\toptions?.parentSession,\n\t\t\toptions?.internal,\n\t\t\toptions?.workflow,\n\t\t);\n\t\tthis.fileEntries = [header];\n\t\tthis.byId.clear();\n\t\tthis.labelsById.clear();\n\t\tthis.leafId = null;\n\t\tthis.flushed = false;\n\n\t\tif (this.persist) {\n\t\t\tthis.sessionFile = createSessionFilePath(this.getSessionDir(), timestamp, this.sessionId);\n\t\t}\n\t\treturn this.sessionFile;\n\t}\n\n\t/** Mark the session header as internal (e.g. workflow stage). Preserves an existing full marker on reattach. */\n\tmarkSessionInternal(workflow?: SessionWorkflowMetadata): void {\n\t\tconst header = this.fileEntries.find((entry) => entry.type === \"session\") as SessionHeader | undefined;\n\t\tif (!header || (header.internal && header.workflow)) return;\n\t\theader.internal = true;\n\t\tif (workflow) header.workflow = workflow;\n\t\tif (this.flushed) this._rewriteFile();\n\t}\n\n\tprivate _buildIndex(): void {\n\t\tconst index = buildSessionIndex(this.fileEntries);\n\t\tthis.byId = index.byId;\n\t\tthis.labelsById = index.labelsById;\n\t\tthis.labelTimestampsById = index.labelTimestampsById;\n\t\tthis.leafId = index.leafId;\n\t}\n\n\tprivate _rewriteFile(): void {\n\t\tif (!this.persist || !this.sessionFile) return;\n\t\twriteSessionEntries(this.sessionFile, this.fileEntries);\n\t}\n\n\tisPersisted(): boolean {\n\t\treturn this.persist;\n\t}\n\n\tgetCwd(): string {\n\t\treturn this.cwd;\n\t}\n\n\tgetSessionDir(): string {\n\t\treturn this.sessionDir;\n\t}\n\n\tusesDefaultSessionDir(): boolean {\n\t\treturn this.sessionDir === getDefaultSessionDirPath(this.cwd);\n\t}\n\n\tgetSessionId(): string {\n\t\treturn this.sessionId;\n\t}\n\n\tgetSessionFile(): string | undefined {\n\t\treturn this.sessionFile;\n\t}\n\n\t_persist(entry: SessionEntry): void {\n\t\tif (!this.persist || !this.sessionFile) return;\n\n\t\tif (!hasAssistantMessage(this.fileEntries)) {\n\t\t\t// Mark as not flushed so when assistant arrives, all entries get written\n\t\t\tthis.flushed = false;\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.flushed) {\n\t\t\tappendSessionEntries(this.sessionFile, this.fileEntries);\n\t\t\tthis.flushed = true;\n\t\t} else {\n\t\t\tappendSessionEntry(this.sessionFile, entry);\n\t\t}\n\t}\n\n\tprivate _appendEntry(entry: SessionEntry): void {\n\t\tthis.fileEntries.push(entry);\n\t\tthis.byId.set(entry.id, entry);\n\t\tthis.leafId = entry.id;\n\t\tthis._persist(entry);\n\t}\n\n\t/** Append a message as child of current leaf, then advance leaf. Returns entry id. */\n\tappendMessage(message: Message | CustomMessage | BashExecutionMessage): string {\n\t\tconst entry = createMessageEntry(message, this.byId, this.leafId);\n\t\tthis._appendEntry(entry);\n\t\treturn entry.id;\n\t}\n\n\t/** Append a thinking level change as child of current leaf, then advance leaf. Returns entry id. */\n\tappendThinkingLevelChange(thinkingLevel: string): string {\n\t\tconst entry = createThinkingLevelChangeEntry(thinkingLevel, this.byId, this.leafId);\n\t\tthis._appendEntry(entry);\n\t\treturn entry.id;\n\t}\n\n\t/** Append a context window change as child of current leaf, then advance leaf. Returns entry id. */\n\tappendContextWindowChange(contextWindow: number): string {\n\t\tconst entry = createContextWindowChangeEntry(contextWindow, this.byId, this.leafId);\n\t\tthis._appendEntry(entry);\n\t\treturn entry.id;\n\t}\n\n\t/** Append a model change as child of current leaf, then advance leaf. Returns entry id. */\n\tappendModelChange(provider: string, modelId: string): string {\n\t\tconst entry = createModelChangeEntry(provider, modelId, this.byId, this.leafId);\n\t\tthis._appendEntry(entry);\n\t\treturn entry.id;\n\t}\n\n\t/** Append logical deletion metadata for deletion-only context compaction. */\n\tappendContextCompaction(\n\t\tdeletedTargets: ContextDeletionTarget[],\n\t\tprotectedEntryIds: string[],\n\t\tstats: ContextCompactionStats,\n\t\tbackupPath?: string,\n\t): string {\n\t\tconst entry = createContextCompactionEntry(deletedTargets, protectedEntryIds, stats, backupPath, this.byId, this.leafId);\n\t\tthis._appendEntry(entry);\n\t\treturn entry.id;\n\t}\n\n\t/** Write a recoverable snapshot of the current session entries without mutating the active JSONL. */\n\twriteBackupSnapshot(label = \"compact\"): string | undefined {\n\t\tif (!this.persist) return undefined;\n\t\treturn createBackupSnapshot(this.sessionFile, this.fileEntries, label);\n\t}\n\n\t/** Append a custom entry (for extensions) as child of current leaf, then advance leaf. Returns entry id. */\n\tappendCustomEntry(customType: string, data?: unknown): string {\n\t\tconst entry = createCustomEntry(customType, data, this.byId, this.leafId);\n\t\tthis._appendEntry(entry);\n\t\treturn entry.id;\n\t}\n\n\t/** Append a session info entry (e.g., display name). Returns entry id. */\n\tappendSessionInfo(name: string): string {\n\t\tconst entry = createSessionInfoEntry(name, this.byId, this.leafId);\n\t\tthis._appendEntry(entry);\n\t\treturn entry.id;\n\t}\n\n\t/** Get the current session name from the latest session_info entry, if any. */\n\tgetSessionName(): string | undefined {\n\t\treturn getLatestSessionName(this.getEntries());\n\t}\n\n\t/** Append a custom message entry (for extensions) that participates in LLM context unless excluded. */\n\tappendCustomMessageEntry<T = unknown>(\n\t\tcustomType: string,\n\t\tcontent: string | (TextContent | ImageContent)[],\n\t\tdisplay: boolean,\n\t\tdetails?: T,\n\t\texcludeFromContext?: boolean,\n\t): string {\n\t\tconst entry = createCustomMessageEntry(customType, content, display, details, excludeFromContext, this.byId, this.leafId);\n\t\tthis._appendEntry(entry);\n\t\treturn entry.id;\n\t}\n\n\tgetLeafId(): string | null {\n\t\treturn this.leafId;\n\t}\n\n\tgetLeafEntry(): SessionEntry | undefined {\n\t\treturn this.leafId ? this.byId.get(this.leafId) : undefined;\n\t}\n\n\tgetEntry(id: string): SessionEntry | undefined {\n\t\treturn this.byId.get(id);\n\t}\n\n\t/** Get all direct children of an entry. */\n\tgetChildren(parentId: string): SessionEntry[] {\n\t\tconst children: SessionEntry[] = [];\n\t\tfor (const entry of this.byId.values()) {\n\t\t\tif (entry.parentId === parentId) {\n\t\t\t\tchildren.push(entry);\n\t\t\t}\n\t\t}\n\t\treturn children;\n\t}\n\n\t/** Get the label for an entry, if any. */\n\tgetLabel(id: string): string | undefined {\n\t\treturn this.labelsById.get(id);\n\t}\n\n\t/** Set or clear a label on an entry. */\n\tappendLabelChange(targetId: string, label: string | undefined): string {\n\t\tif (!this.byId.has(targetId)) {\n\t\t\tthrow new Error(`Entry ${targetId} not found`);\n\t\t}\n\t\tconst entry = createLabelEntry(targetId, label, this.byId, this.leafId);\n\t\tthis._appendEntry(entry);\n\t\tif (label) {\n\t\t\tthis.labelsById.set(targetId, label);\n\t\t\tthis.labelTimestampsById.set(targetId, entry.timestamp);\n\t\t} else {\n\t\t\tthis.labelsById.delete(targetId);\n\t\t\tthis.labelTimestampsById.delete(targetId);\n\t\t}\n\t\treturn entry.id;\n\t}\n\n\t/** Walk from entry to root, returning all entries in path order. */\n\tgetBranch(fromId?: string): SessionEntry[] {\n\t\treturn getBranchPath(fromId ?? this.leafId, this.byId);\n\t}\n\n\t/** Build the session context (what gets sent to the LLM). */\n\tbuildSessionContext(): SessionContext {\n\t\treturn buildSessionContext(this.getEntries(), this.leafId, this.byId);\n\t}\n\n\t/** Get session header. */\n\tgetHeader(): SessionHeader | null {\n\t\tconst header = this.fileEntries.find((entry) => entry.type === \"session\");\n\t\treturn header ? (header as SessionHeader) : null;\n\t}\n\n\t/** Get all session entries (excludes header). Returns a shallow copy. */\n\tgetEntries(): SessionEntry[] {\n\t\treturn getEntriesWithoutHeader(this.fileEntries);\n\t}\n\n\t/** Get the session as a tree structure. Returns a shallow defensive copy of all entries. */\n\tgetTree(): SessionTreeNode[] {\n\t\treturn buildSessionTree(this.getEntries(), this.labelsById, this.labelTimestampsById);\n\t}\n\n\t/** Start a new branch from an earlier entry. */\n\tbranch(branchFromId: string): void {\n\t\tif (!this.byId.has(branchFromId)) {\n\t\t\tthrow new Error(`Entry ${branchFromId} not found`);\n\t\t}\n\t\tthis.leafId = branchFromId;\n\t}\n\n\t/** Reset the leaf pointer to null (before any entries). */\n\tresetLeaf(): void {\n\t\tthis.leafId = null;\n\t}\n\n\t/** Start a new branch with a summary of the abandoned path. */\n\tbranchWithSummary(branchFromId: string | null, summary: string, details?: unknown, fromHook?: boolean): string {\n\t\tif (branchFromId !== null && !this.byId.has(branchFromId)) {\n\t\t\tthrow new Error(`Entry ${branchFromId} not found`);\n\t\t}\n\t\tthis.leafId = branchFromId;\n\t\tconst entry: BranchSummaryEntry = createBranchSummaryEntry(branchFromId, summary, details, fromHook, this.byId);\n\t\tthis._appendEntry(entry);\n\t\treturn entry.id;\n\t}\n\n\t/** Create a new session file containing only the path from root to the specified leaf. */\n\tcreateBranchedSession(leafId: string): string | undefined {\n\t\tconst result = createBranchedSessionState({\n\t\t\tleafId,\n\t\t\tpersist: this.persist,\n\t\t\tsessionDir: this.getSessionDir(),\n\t\t\tcwd: this.cwd,\n\t\t\tpreviousSessionFile: this.sessionFile,\n\t\t\tpath: this.getBranch(leafId),\n\t\t\tlabelsById: this.labelsById,\n\t\t\tlabelTimestampsById: this.labelTimestampsById,\n\t\t});\n\t\tthis.fileEntries = result.fileEntries;\n\t\tthis.sessionId = result.sessionId;\n\t\tif (result.sessionFile) this.sessionFile = result.sessionFile;\n\t\tthis._buildIndex();\n\n\t\tif (this.persist) {\n\t\t\tif (result.shouldRewriteFile) this._rewriteFile();\n\t\t\tthis.flushed = result.flushed ?? false;\n\t\t\treturn result.sessionFile;\n\t\t}\n\t\treturn undefined;\n\t}\n\n\t/** Create a new session. */\n\tstatic create(cwd: string, sessionDir?: string, options?: NewSessionOptions): SessionManager {\n\t\tconst dir = sessionDir ? normalizePath(sessionDir) : getDefaultSessionDir(cwd);\n\t\treturn new SessionManager(cwd, dir, undefined, true, options);\n\t}\n\n\t/** Open a specific session file. */\n\tstatic open(path: string, sessionDir?: string, cwdOverride?: string): SessionManager {\n\t\tconst resolvedPath = resolvePath(path);\n\t\tconst entries = loadEntriesFromFile(resolvedPath);\n\t\tconst header = entries.find((entry) => entry.type === \"session\") as SessionHeader | undefined;\n\t\tconst cwd = cwdOverride ?? header?.cwd ?? process.cwd();\n\t\tconst dir = sessionDir ? normalizePath(sessionDir) : resolve(resolvedPath, \"..\");\n\t\treturn new SessionManager(cwd, dir, resolvedPath, true);\n\t}\n\n\t/** Continue the most recent session (skips internal workflow sessions unless `includeInternal: true`). */\n\tstatic continueRecent(\n\t\tcwd: string,\n\t\tsessionDir?: string,\n\t\toptions?: { includeInternal?: boolean },\n\t): SessionManager {\n\t\tconst dir = sessionDir ? normalizePath(sessionDir) : getDefaultSessionDir(cwd);\n\t\tconst filterCwd = sessionDir !== undefined && dir !== getDefaultSessionDirPath(cwd);\n\t\tconst mostRecent = findMostRecentSession(\n\t\t\tdir,\n\t\t\tfilterCwd ? cwd : undefined,\n\t\t\toptions?.includeInternal === true,\n\t\t);\n\t\treturn new SessionManager(cwd, dir, mostRecent ?? undefined, true);\n\t}\n\n\t/** Create an in-memory session (no file persistence) */\n\tstatic inMemory(cwd: string = process.cwd(), options?: NewSessionOptions): SessionManager {\n\t\treturn new SessionManager(cwd, \"\", undefined, false, options);\n\t}\n\n\t/** Fork a session from another project directory into the current project. */\n\tstatic forkFrom(\n\t\tsourcePath: string,\n\t\ttargetCwd: string,\n\t\tsessionDir?: string,\n\t\toptions?: NewSessionOptions,\n\t): SessionManager {\n\t\tconst forked = forkSessionFromFile(sourcePath, targetCwd, sessionDir, options);\n\t\treturn new SessionManager(forked.cwd, forked.sessionDir, forked.sessionFile, true);\n\t}\n\n\t/** List sessions for a directory. Internal (workflow) sessions are excluded unless `includeInternal: true`. */\n\tstatic async list(\n\t\tcwd: string,\n\t\tsessionDir?: string,\n\t\tonProgress?: SessionListProgress,\n\t\toptions?: { includeInternal?: boolean },\n\t): Promise<SessionInfo[]> {\n\t\treturn listProjectSessions(cwd, sessionDir, onProgress, options?.includeInternal === true);\n\t}\n\n\t/** List sessions across all directories. Internal (workflow) sessions are excluded unless `includeInternal: true`. */\n\tstatic async listAll(onProgress?: SessionListProgress): Promise<SessionInfo[]>;\n\tstatic async listAll(\n\t\tsessionDir?: string,\n\t\tonProgress?: SessionListProgress,\n\t\toptions?: { includeInternal?: boolean },\n\t): Promise<SessionInfo[]>;\n\tstatic async listAll(\n\t\tsessionDirOrOnProgress?: string | SessionListProgress,\n\t\tonProgress?: SessionListProgress,\n\t\toptions?: { includeInternal?: boolean },\n\t): Promise<SessionInfo[]> {\n\t\treturn listAllSessions(sessionDirOrOnProgress, onProgress, options?.includeInternal === true);\n\t}\n}\n"]}
@@ -1,6 +1,7 @@
1
1
  import type { DefaultProjectTrust, PackageSource, ThinkingBudgetsSettings } from "./settings-types.ts";
2
2
  interface SettingsManagerResourceAccessors {
3
3
  getHideThinkingBlock(): boolean;
4
+ getExternalEditorCommand(): string | undefined;
4
5
  setHideThinkingBlock(hide: boolean): void;
5
6
  getShellPath(): string | undefined;
6
7
  setShellPath(path: string | undefined): void;
@@ -1 +1 @@
1
- {"version":3,"file":"settings-manager-resource-accessors.d.ts","sourceRoot":"","sources":["../../src/core/settings-manager-resource-accessors.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAEvG,UAAU,gCAAgC;IACzC,oBAAoB,IAAI,OAAO,CAAC;IAChC,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1C,YAAY,IAAI,MAAM,GAAG,SAAS,CAAC;IACnC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IAC7C,sBAAsB,IAAI,mBAAmB,CAAC;IAC9C,sBAAsB,CAAC,mBAAmB,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACvE,eAAe,IAAI,OAAO,CAAC;IAC3B,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IACtC,qBAAqB,IAAI,MAAM,GAAG,SAAS,CAAC;IAC5C,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACxD,yBAAyB,IAAI,OAAO,CAAC;IACrC,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAClD,sBAAsB,IAAI,MAAM,CAAC;IACjC,qBAAqB,IAAI,MAAM,CAAC;IAChC,aAAa,IAAI,MAAM,EAAE,GAAG,SAAS,CAAC;IACtC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,IAAI,CAAC;IACnD,oBAAoB,IAAI,OAAO,CAAC;IAChC,oBAAoB,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9C,yBAAyB,IAAI,OAAO,CAAC;IACrC,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAClD,WAAW,IAAI,aAAa,EAAE,CAAC;IAC/B,WAAW,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;IAC7C,kBAAkB,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;IACpD,iBAAiB,IAAI,MAAM,EAAE,CAAC;IAC9B,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACzC,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAChD,aAAa,IAAI,MAAM,EAAE,CAAC;IAC1B,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACrC,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC5C,sBAAsB,IAAI,MAAM,EAAE,CAAC;IACnC,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC9C,6BAA6B,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACrD,aAAa,IAAI,MAAM,EAAE,CAAC;IAC1B,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACrC,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC5C,sBAAsB,IAAI,OAAO,CAAC;IAClC,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAC/C,kBAAkB,IAAI,uBAAuB,GAAG,SAAS,CAAC;CAC1D;AAED,OAAO,QAAQ,4BAA4B,CAAC,CAAC;IAC5C,UAAU,eAAgB,SAAQ,gCAAgC;KAAG;CACrE","sourcesContent":["import { SettingsManager } from \"./settings-manager-core.ts\";\nimport { settingsInternals } from \"./settings-manager-internals.ts\";\nimport type { DefaultProjectTrust, PackageSource, ThinkingBudgetsSettings } from \"./settings-types.ts\";\n\ninterface SettingsManagerResourceAccessors {\n\tgetHideThinkingBlock(): boolean;\n\tsetHideThinkingBlock(hide: boolean): void;\n\tgetShellPath(): string | undefined;\n\tsetShellPath(path: string | undefined): void;\n\tgetDefaultProjectTrust(): DefaultProjectTrust;\n\tsetDefaultProjectTrust(defaultProjectTrust: DefaultProjectTrust): void;\n\tgetQuietStartup(): boolean;\n\tsetQuietStartup(quiet: boolean): void;\n\tgetShellCommandPrefix(): string | undefined;\n\tsetShellCommandPrefix(prefix: string | undefined): void;\n\tgetBashInterceptorEnabled(): boolean;\n\tsetBashInterceptorEnabled(enabled: boolean): void;\n\tgetSearchContextBefore(): number;\n\tgetSearchContextAfter(): number;\n\tgetNpmCommand(): string[] | undefined;\n\tsetNpmCommand(command: string[] | undefined): void;\n\tgetCollapseChangelog(): boolean;\n\tsetCollapseChangelog(collapse: boolean): void;\n\tgetEnableInstallTelemetry(): boolean;\n\tsetEnableInstallTelemetry(enabled: boolean): void;\n\tgetPackages(): PackageSource[];\n\tsetPackages(packages: PackageSource[]): void;\n\tsetProjectPackages(packages: PackageSource[]): void;\n\tgetExtensionPaths(): string[];\n\tsetExtensionPaths(paths: string[]): void;\n\tsetProjectExtensionPaths(paths: string[]): void;\n\tgetSkillPaths(): string[];\n\tsetSkillPaths(paths: string[]): void;\n\tsetProjectSkillPaths(paths: string[]): void;\n\tgetPromptTemplatePaths(): string[];\n\tsetPromptTemplatePaths(paths: string[]): void;\n\tsetProjectPromptTemplatePaths(paths: string[]): void;\n\tgetThemePaths(): string[];\n\tsetThemePaths(paths: string[]): void;\n\tsetProjectThemePaths(paths: string[]): void;\n\tgetEnableSkillCommands(): boolean;\n\tsetEnableSkillCommands(enabled: boolean): void;\n\tgetThinkingBudgets(): ThinkingBudgetsSettings | undefined;\n}\n\ndeclare module \"./settings-manager-core.ts\" {\n\tinterface SettingsManager extends SettingsManagerResourceAccessors {}\n}\n\nconst resourceAccessors: SettingsManagerResourceAccessors = {\n\tgetHideThinkingBlock() {\n\t\treturn settingsInternals(this).settings.hideThinkingBlock ?? false;\n\t},\n\n\tsetHideThinkingBlock(hide) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.hideThinkingBlock = hide;\n\t\tstate.markModified(\"hideThinkingBlock\");\n\t\tstate.save();\n\t},\n\n\tgetShellPath() {\n\t\treturn settingsInternals(this).settings.shellPath;\n\t},\n\n\tsetShellPath(path) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.shellPath = path;\n\t\tstate.markModified(\"shellPath\");\n\t\tstate.save();\n\t},\n\n\tgetDefaultProjectTrust() {\n\t\tconst value = settingsInternals(this).globalSettings.defaultProjectTrust;\n\t\treturn value === \"always\" || value === \"never\" ? value : \"ask\";\n\t},\n\n\tsetDefaultProjectTrust(defaultProjectTrust) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.defaultProjectTrust = defaultProjectTrust;\n\t\tstate.markModified(\"defaultProjectTrust\");\n\t\tstate.save();\n\t},\n\n\tgetQuietStartup() {\n\t\treturn settingsInternals(this).settings.quietStartup ?? false;\n\t},\n\n\tsetQuietStartup(quiet) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.quietStartup = quiet;\n\t\tstate.markModified(\"quietStartup\");\n\t\tstate.save();\n\t},\n\n\tgetShellCommandPrefix() {\n\t\treturn settingsInternals(this).settings.shellCommandPrefix;\n\t},\n\n\tsetShellCommandPrefix(prefix) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.shellCommandPrefix = prefix;\n\t\tstate.markModified(\"shellCommandPrefix\");\n\t\tstate.save();\n\t},\n\n\tgetBashInterceptorEnabled() {\n\t\treturn settingsInternals(this).settings.bashInterceptor?.enabled ?? false;\n\t},\n\n\tsetBashInterceptorEnabled(enabled) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.bashInterceptor = { ...(state.globalSettings.bashInterceptor ?? {}), enabled };\n\t\tstate.markModified(\"bashInterceptor\");\n\t\tstate.save();\n\t},\n\n\tgetSearchContextBefore() {\n\t\treturn settingsInternals(this).settings.search?.contextBefore ?? 1;\n\t},\n\n\tgetSearchContextAfter() {\n\t\treturn settingsInternals(this).settings.search?.contextAfter ?? 3;\n\t},\n\n\tgetNpmCommand() {\n\t\tconst command = settingsInternals(this).settings.npmCommand;\n\t\treturn command ? [...command] : undefined;\n\t},\n\n\tsetNpmCommand(command) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.npmCommand = command ? [...command] : undefined;\n\t\tstate.markModified(\"npmCommand\");\n\t\tstate.save();\n\t},\n\n\tgetCollapseChangelog() {\n\t\treturn settingsInternals(this).settings.collapseChangelog ?? false;\n\t},\n\n\tsetCollapseChangelog(collapse) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.collapseChangelog = collapse;\n\t\tstate.markModified(\"collapseChangelog\");\n\t\tstate.save();\n\t},\n\n\tgetEnableInstallTelemetry() {\n\t\treturn settingsInternals(this).settings.enableInstallTelemetry ?? true;\n\t},\n\n\tsetEnableInstallTelemetry(enabled) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.enableInstallTelemetry = enabled;\n\t\tstate.markModified(\"enableInstallTelemetry\");\n\t\tstate.save();\n\t},\n\n\tgetPackages() {\n\t\treturn [...(settingsInternals(this).settings.packages ?? [])];\n\t},\n\n\tsetPackages(packages) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.packages = packages;\n\t\tstate.markModified(\"packages\");\n\t\tstate.save();\n\t},\n\n\tsetProjectPackages(packages) {\n\t\tconst state = settingsInternals(this);\n\t\tconst projectSettings = structuredClone(state.projectSettings);\n\t\tprojectSettings.packages = packages;\n\t\tstate.markProjectModified(\"packages\");\n\t\tstate.saveProjectSettings(projectSettings);\n\t},\n\n\tgetExtensionPaths() {\n\t\treturn [...(settingsInternals(this).settings.extensions ?? [])];\n\t},\n\n\tsetExtensionPaths(paths) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.extensions = paths;\n\t\tstate.markModified(\"extensions\");\n\t\tstate.save();\n\t},\n\n\tsetProjectExtensionPaths(paths) {\n\t\tconst state = settingsInternals(this);\n\t\tconst projectSettings = structuredClone(state.projectSettings);\n\t\tprojectSettings.extensions = paths;\n\t\tstate.markProjectModified(\"extensions\");\n\t\tstate.saveProjectSettings(projectSettings);\n\t},\n\n\tgetSkillPaths() {\n\t\treturn [...(settingsInternals(this).settings.skills ?? [])];\n\t},\n\n\tsetSkillPaths(paths) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.skills = paths;\n\t\tstate.markModified(\"skills\");\n\t\tstate.save();\n\t},\n\n\tsetProjectSkillPaths(paths) {\n\t\tconst state = settingsInternals(this);\n\t\tconst projectSettings = structuredClone(state.projectSettings);\n\t\tprojectSettings.skills = paths;\n\t\tstate.markProjectModified(\"skills\");\n\t\tstate.saveProjectSettings(projectSettings);\n\t},\n\n\tgetPromptTemplatePaths() {\n\t\treturn [...(settingsInternals(this).settings.prompts ?? [])];\n\t},\n\n\tsetPromptTemplatePaths(paths) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.prompts = paths;\n\t\tstate.markModified(\"prompts\");\n\t\tstate.save();\n\t},\n\n\tsetProjectPromptTemplatePaths(paths) {\n\t\tconst state = settingsInternals(this);\n\t\tconst projectSettings = structuredClone(state.projectSettings);\n\t\tprojectSettings.prompts = paths;\n\t\tstate.markProjectModified(\"prompts\");\n\t\tstate.saveProjectSettings(projectSettings);\n\t},\n\n\tgetThemePaths() {\n\t\treturn [...(settingsInternals(this).settings.themes ?? [])];\n\t},\n\n\tsetThemePaths(paths) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.themes = paths;\n\t\tstate.markModified(\"themes\");\n\t\tstate.save();\n\t},\n\n\tsetProjectThemePaths(paths) {\n\t\tconst state = settingsInternals(this);\n\t\tconst projectSettings = structuredClone(state.projectSettings);\n\t\tprojectSettings.themes = paths;\n\t\tstate.markProjectModified(\"themes\");\n\t\tstate.saveProjectSettings(projectSettings);\n\t},\n\n\tgetEnableSkillCommands() {\n\t\treturn settingsInternals(this).settings.enableSkillCommands ?? true;\n\t},\n\n\tsetEnableSkillCommands(enabled) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.enableSkillCommands = enabled;\n\t\tstate.markModified(\"enableSkillCommands\");\n\t\tstate.save();\n\t},\n\n\tgetThinkingBudgets() {\n\t\treturn settingsInternals(this).settings.thinkingBudgets;\n\t},\n};\n\nObject.assign(SettingsManager.prototype, resourceAccessors);\n"]}
1
+ {"version":3,"file":"settings-manager-resource-accessors.d.ts","sourceRoot":"","sources":["../../src/core/settings-manager-resource-accessors.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAEvG,UAAU,gCAAgC;IACzC,oBAAoB,IAAI,OAAO,CAAC;IAChC,wBAAwB,IAAI,MAAM,GAAG,SAAS,CAAC;IAC/C,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1C,YAAY,IAAI,MAAM,GAAG,SAAS,CAAC;IACnC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IAC7C,sBAAsB,IAAI,mBAAmB,CAAC;IAC9C,sBAAsB,CAAC,mBAAmB,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACvE,eAAe,IAAI,OAAO,CAAC;IAC3B,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IACtC,qBAAqB,IAAI,MAAM,GAAG,SAAS,CAAC;IAC5C,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACxD,yBAAyB,IAAI,OAAO,CAAC;IACrC,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAClD,sBAAsB,IAAI,MAAM,CAAC;IACjC,qBAAqB,IAAI,MAAM,CAAC;IAChC,aAAa,IAAI,MAAM,EAAE,GAAG,SAAS,CAAC;IACtC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,IAAI,CAAC;IACnD,oBAAoB,IAAI,OAAO,CAAC;IAChC,oBAAoB,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9C,yBAAyB,IAAI,OAAO,CAAC;IACrC,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAClD,WAAW,IAAI,aAAa,EAAE,CAAC;IAC/B,WAAW,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;IAC7C,kBAAkB,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;IACpD,iBAAiB,IAAI,MAAM,EAAE,CAAC;IAC9B,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACzC,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAChD,aAAa,IAAI,MAAM,EAAE,CAAC;IAC1B,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACrC,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC5C,sBAAsB,IAAI,MAAM,EAAE,CAAC;IACnC,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC9C,6BAA6B,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACrD,aAAa,IAAI,MAAM,EAAE,CAAC;IAC1B,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACrC,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC5C,sBAAsB,IAAI,OAAO,CAAC;IAClC,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAC/C,kBAAkB,IAAI,uBAAuB,GAAG,SAAS,CAAC;CAC1D;AAED,OAAO,QAAQ,4BAA4B,CAAC,CAAC;IAC5C,UAAU,eAAgB,SAAQ,gCAAgC;KAAG;CACrE","sourcesContent":["import { SettingsManager } from \"./settings-manager-core.ts\";\nimport { settingsInternals } from \"./settings-manager-internals.ts\";\nimport type { DefaultProjectTrust, PackageSource, ThinkingBudgetsSettings } from \"./settings-types.ts\";\n\ninterface SettingsManagerResourceAccessors {\n\tgetHideThinkingBlock(): boolean;\n\tgetExternalEditorCommand(): string | undefined;\n\tsetHideThinkingBlock(hide: boolean): void;\n\tgetShellPath(): string | undefined;\n\tsetShellPath(path: string | undefined): void;\n\tgetDefaultProjectTrust(): DefaultProjectTrust;\n\tsetDefaultProjectTrust(defaultProjectTrust: DefaultProjectTrust): void;\n\tgetQuietStartup(): boolean;\n\tsetQuietStartup(quiet: boolean): void;\n\tgetShellCommandPrefix(): string | undefined;\n\tsetShellCommandPrefix(prefix: string | undefined): void;\n\tgetBashInterceptorEnabled(): boolean;\n\tsetBashInterceptorEnabled(enabled: boolean): void;\n\tgetSearchContextBefore(): number;\n\tgetSearchContextAfter(): number;\n\tgetNpmCommand(): string[] | undefined;\n\tsetNpmCommand(command: string[] | undefined): void;\n\tgetCollapseChangelog(): boolean;\n\tsetCollapseChangelog(collapse: boolean): void;\n\tgetEnableInstallTelemetry(): boolean;\n\tsetEnableInstallTelemetry(enabled: boolean): void;\n\tgetPackages(): PackageSource[];\n\tsetPackages(packages: PackageSource[]): void;\n\tsetProjectPackages(packages: PackageSource[]): void;\n\tgetExtensionPaths(): string[];\n\tsetExtensionPaths(paths: string[]): void;\n\tsetProjectExtensionPaths(paths: string[]): void;\n\tgetSkillPaths(): string[];\n\tsetSkillPaths(paths: string[]): void;\n\tsetProjectSkillPaths(paths: string[]): void;\n\tgetPromptTemplatePaths(): string[];\n\tsetPromptTemplatePaths(paths: string[]): void;\n\tsetProjectPromptTemplatePaths(paths: string[]): void;\n\tgetThemePaths(): string[];\n\tsetThemePaths(paths: string[]): void;\n\tsetProjectThemePaths(paths: string[]): void;\n\tgetEnableSkillCommands(): boolean;\n\tsetEnableSkillCommands(enabled: boolean): void;\n\tgetThinkingBudgets(): ThinkingBudgetsSettings | undefined;\n}\n\ndeclare module \"./settings-manager-core.ts\" {\n\tinterface SettingsManager extends SettingsManagerResourceAccessors {}\n}\n\nconst resourceAccessors: SettingsManagerResourceAccessors = {\n\tgetHideThinkingBlock() {\n\t\treturn settingsInternals(this).settings.hideThinkingBlock ?? false;\n\t},\n\n\tgetExternalEditorCommand() {\n\t\tconst configuredEditor = settingsInternals(this).settings.externalEditor;\n\t\tif (typeof configuredEditor === \"string\" && configuredEditor.trim() !== \"\") {\n\t\t\treturn configuredEditor;\n\t\t}\n\t\tconst environmentEditor = process.env.VISUAL || process.env.EDITOR;\n\t\tif (environmentEditor) {\n\t\t\treturn environmentEditor;\n\t\t}\n\t\treturn process.platform === \"win32\" ? \"notepad\" : \"nano\";\n\t},\n\n\tsetHideThinkingBlock(hide) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.hideThinkingBlock = hide;\n\t\tstate.markModified(\"hideThinkingBlock\");\n\t\tstate.save();\n\t},\n\n\tgetShellPath() {\n\t\treturn settingsInternals(this).settings.shellPath;\n\t},\n\n\tsetShellPath(path) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.shellPath = path;\n\t\tstate.markModified(\"shellPath\");\n\t\tstate.save();\n\t},\n\n\tgetDefaultProjectTrust() {\n\t\tconst value = settingsInternals(this).globalSettings.defaultProjectTrust;\n\t\treturn value === \"always\" || value === \"never\" ? value : \"ask\";\n\t},\n\n\tsetDefaultProjectTrust(defaultProjectTrust) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.defaultProjectTrust = defaultProjectTrust;\n\t\tstate.markModified(\"defaultProjectTrust\");\n\t\tstate.save();\n\t},\n\n\tgetQuietStartup() {\n\t\treturn settingsInternals(this).settings.quietStartup ?? false;\n\t},\n\n\tsetQuietStartup(quiet) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.quietStartup = quiet;\n\t\tstate.markModified(\"quietStartup\");\n\t\tstate.save();\n\t},\n\n\tgetShellCommandPrefix() {\n\t\treturn settingsInternals(this).settings.shellCommandPrefix;\n\t},\n\n\tsetShellCommandPrefix(prefix) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.shellCommandPrefix = prefix;\n\t\tstate.markModified(\"shellCommandPrefix\");\n\t\tstate.save();\n\t},\n\n\tgetBashInterceptorEnabled() {\n\t\treturn settingsInternals(this).settings.bashInterceptor?.enabled ?? false;\n\t},\n\n\tsetBashInterceptorEnabled(enabled) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.bashInterceptor = { ...(state.globalSettings.bashInterceptor ?? {}), enabled };\n\t\tstate.markModified(\"bashInterceptor\");\n\t\tstate.save();\n\t},\n\n\tgetSearchContextBefore() {\n\t\treturn settingsInternals(this).settings.search?.contextBefore ?? 1;\n\t},\n\n\tgetSearchContextAfter() {\n\t\treturn settingsInternals(this).settings.search?.contextAfter ?? 3;\n\t},\n\n\tgetNpmCommand() {\n\t\tconst command = settingsInternals(this).settings.npmCommand;\n\t\treturn command ? [...command] : undefined;\n\t},\n\n\tsetNpmCommand(command) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.npmCommand = command ? [...command] : undefined;\n\t\tstate.markModified(\"npmCommand\");\n\t\tstate.save();\n\t},\n\n\tgetCollapseChangelog() {\n\t\treturn settingsInternals(this).settings.collapseChangelog ?? false;\n\t},\n\n\tsetCollapseChangelog(collapse) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.collapseChangelog = collapse;\n\t\tstate.markModified(\"collapseChangelog\");\n\t\tstate.save();\n\t},\n\n\tgetEnableInstallTelemetry() {\n\t\treturn settingsInternals(this).settings.enableInstallTelemetry ?? true;\n\t},\n\n\tsetEnableInstallTelemetry(enabled) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.enableInstallTelemetry = enabled;\n\t\tstate.markModified(\"enableInstallTelemetry\");\n\t\tstate.save();\n\t},\n\n\tgetPackages() {\n\t\treturn [...(settingsInternals(this).settings.packages ?? [])];\n\t},\n\n\tsetPackages(packages) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.packages = packages;\n\t\tstate.markModified(\"packages\");\n\t\tstate.save();\n\t},\n\n\tsetProjectPackages(packages) {\n\t\tconst state = settingsInternals(this);\n\t\tconst projectSettings = structuredClone(state.projectSettings);\n\t\tprojectSettings.packages = packages;\n\t\tstate.markProjectModified(\"packages\");\n\t\tstate.saveProjectSettings(projectSettings);\n\t},\n\n\tgetExtensionPaths() {\n\t\treturn [...(settingsInternals(this).settings.extensions ?? [])];\n\t},\n\n\tsetExtensionPaths(paths) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.extensions = paths;\n\t\tstate.markModified(\"extensions\");\n\t\tstate.save();\n\t},\n\n\tsetProjectExtensionPaths(paths) {\n\t\tconst state = settingsInternals(this);\n\t\tconst projectSettings = structuredClone(state.projectSettings);\n\t\tprojectSettings.extensions = paths;\n\t\tstate.markProjectModified(\"extensions\");\n\t\tstate.saveProjectSettings(projectSettings);\n\t},\n\n\tgetSkillPaths() {\n\t\treturn [...(settingsInternals(this).settings.skills ?? [])];\n\t},\n\n\tsetSkillPaths(paths) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.skills = paths;\n\t\tstate.markModified(\"skills\");\n\t\tstate.save();\n\t},\n\n\tsetProjectSkillPaths(paths) {\n\t\tconst state = settingsInternals(this);\n\t\tconst projectSettings = structuredClone(state.projectSettings);\n\t\tprojectSettings.skills = paths;\n\t\tstate.markProjectModified(\"skills\");\n\t\tstate.saveProjectSettings(projectSettings);\n\t},\n\n\tgetPromptTemplatePaths() {\n\t\treturn [...(settingsInternals(this).settings.prompts ?? [])];\n\t},\n\n\tsetPromptTemplatePaths(paths) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.prompts = paths;\n\t\tstate.markModified(\"prompts\");\n\t\tstate.save();\n\t},\n\n\tsetProjectPromptTemplatePaths(paths) {\n\t\tconst state = settingsInternals(this);\n\t\tconst projectSettings = structuredClone(state.projectSettings);\n\t\tprojectSettings.prompts = paths;\n\t\tstate.markProjectModified(\"prompts\");\n\t\tstate.saveProjectSettings(projectSettings);\n\t},\n\n\tgetThemePaths() {\n\t\treturn [...(settingsInternals(this).settings.themes ?? [])];\n\t},\n\n\tsetThemePaths(paths) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.themes = paths;\n\t\tstate.markModified(\"themes\");\n\t\tstate.save();\n\t},\n\n\tsetProjectThemePaths(paths) {\n\t\tconst state = settingsInternals(this);\n\t\tconst projectSettings = structuredClone(state.projectSettings);\n\t\tprojectSettings.themes = paths;\n\t\tstate.markProjectModified(\"themes\");\n\t\tstate.saveProjectSettings(projectSettings);\n\t},\n\n\tgetEnableSkillCommands() {\n\t\treturn settingsInternals(this).settings.enableSkillCommands ?? true;\n\t},\n\n\tsetEnableSkillCommands(enabled) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.enableSkillCommands = enabled;\n\t\tstate.markModified(\"enableSkillCommands\");\n\t\tstate.save();\n\t},\n\n\tgetThinkingBudgets() {\n\t\treturn settingsInternals(this).settings.thinkingBudgets;\n\t},\n};\n\nObject.assign(SettingsManager.prototype, resourceAccessors);\n"]}
@@ -4,6 +4,17 @@ const resourceAccessors = {
4
4
  getHideThinkingBlock() {
5
5
  return settingsInternals(this).settings.hideThinkingBlock ?? false;
6
6
  },
7
+ getExternalEditorCommand() {
8
+ const configuredEditor = settingsInternals(this).settings.externalEditor;
9
+ if (typeof configuredEditor === "string" && configuredEditor.trim() !== "") {
10
+ return configuredEditor;
11
+ }
12
+ const environmentEditor = process.env.VISUAL || process.env.EDITOR;
13
+ if (environmentEditor) {
14
+ return environmentEditor;
15
+ }
16
+ return process.platform === "win32" ? "notepad" : "nano";
17
+ },
7
18
  setHideThinkingBlock(hide) {
8
19
  const state = settingsInternals(this);
9
20
  state.globalSettings.hideThinkingBlock = hide;
@@ -1 +1 @@
1
- {"version":3,"file":"settings-manager-resource-accessors.js","sourceRoot":"","sources":["../../src/core/settings-manager-resource-accessors.ts"],"names":[],"mappings":"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","sourcesContent":["import { SettingsManager } from \"./settings-manager-core.ts\";\nimport { settingsInternals } from \"./settings-manager-internals.ts\";\nimport type { DefaultProjectTrust, PackageSource, ThinkingBudgetsSettings } from \"./settings-types.ts\";\n\ninterface SettingsManagerResourceAccessors {\n\tgetHideThinkingBlock(): boolean;\n\tsetHideThinkingBlock(hide: boolean): void;\n\tgetShellPath(): string | undefined;\n\tsetShellPath(path: string | undefined): void;\n\tgetDefaultProjectTrust(): DefaultProjectTrust;\n\tsetDefaultProjectTrust(defaultProjectTrust: DefaultProjectTrust): void;\n\tgetQuietStartup(): boolean;\n\tsetQuietStartup(quiet: boolean): void;\n\tgetShellCommandPrefix(): string | undefined;\n\tsetShellCommandPrefix(prefix: string | undefined): void;\n\tgetBashInterceptorEnabled(): boolean;\n\tsetBashInterceptorEnabled(enabled: boolean): void;\n\tgetSearchContextBefore(): number;\n\tgetSearchContextAfter(): number;\n\tgetNpmCommand(): string[] | undefined;\n\tsetNpmCommand(command: string[] | undefined): void;\n\tgetCollapseChangelog(): boolean;\n\tsetCollapseChangelog(collapse: boolean): void;\n\tgetEnableInstallTelemetry(): boolean;\n\tsetEnableInstallTelemetry(enabled: boolean): void;\n\tgetPackages(): PackageSource[];\n\tsetPackages(packages: PackageSource[]): void;\n\tsetProjectPackages(packages: PackageSource[]): void;\n\tgetExtensionPaths(): string[];\n\tsetExtensionPaths(paths: string[]): void;\n\tsetProjectExtensionPaths(paths: string[]): void;\n\tgetSkillPaths(): string[];\n\tsetSkillPaths(paths: string[]): void;\n\tsetProjectSkillPaths(paths: string[]): void;\n\tgetPromptTemplatePaths(): string[];\n\tsetPromptTemplatePaths(paths: string[]): void;\n\tsetProjectPromptTemplatePaths(paths: string[]): void;\n\tgetThemePaths(): string[];\n\tsetThemePaths(paths: string[]): void;\n\tsetProjectThemePaths(paths: string[]): void;\n\tgetEnableSkillCommands(): boolean;\n\tsetEnableSkillCommands(enabled: boolean): void;\n\tgetThinkingBudgets(): ThinkingBudgetsSettings | undefined;\n}\n\ndeclare module \"./settings-manager-core.ts\" {\n\tinterface SettingsManager extends SettingsManagerResourceAccessors {}\n}\n\nconst resourceAccessors: SettingsManagerResourceAccessors = {\n\tgetHideThinkingBlock() {\n\t\treturn settingsInternals(this).settings.hideThinkingBlock ?? false;\n\t},\n\n\tsetHideThinkingBlock(hide) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.hideThinkingBlock = hide;\n\t\tstate.markModified(\"hideThinkingBlock\");\n\t\tstate.save();\n\t},\n\n\tgetShellPath() {\n\t\treturn settingsInternals(this).settings.shellPath;\n\t},\n\n\tsetShellPath(path) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.shellPath = path;\n\t\tstate.markModified(\"shellPath\");\n\t\tstate.save();\n\t},\n\n\tgetDefaultProjectTrust() {\n\t\tconst value = settingsInternals(this).globalSettings.defaultProjectTrust;\n\t\treturn value === \"always\" || value === \"never\" ? value : \"ask\";\n\t},\n\n\tsetDefaultProjectTrust(defaultProjectTrust) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.defaultProjectTrust = defaultProjectTrust;\n\t\tstate.markModified(\"defaultProjectTrust\");\n\t\tstate.save();\n\t},\n\n\tgetQuietStartup() {\n\t\treturn settingsInternals(this).settings.quietStartup ?? false;\n\t},\n\n\tsetQuietStartup(quiet) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.quietStartup = quiet;\n\t\tstate.markModified(\"quietStartup\");\n\t\tstate.save();\n\t},\n\n\tgetShellCommandPrefix() {\n\t\treturn settingsInternals(this).settings.shellCommandPrefix;\n\t},\n\n\tsetShellCommandPrefix(prefix) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.shellCommandPrefix = prefix;\n\t\tstate.markModified(\"shellCommandPrefix\");\n\t\tstate.save();\n\t},\n\n\tgetBashInterceptorEnabled() {\n\t\treturn settingsInternals(this).settings.bashInterceptor?.enabled ?? false;\n\t},\n\n\tsetBashInterceptorEnabled(enabled) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.bashInterceptor = { ...(state.globalSettings.bashInterceptor ?? {}), enabled };\n\t\tstate.markModified(\"bashInterceptor\");\n\t\tstate.save();\n\t},\n\n\tgetSearchContextBefore() {\n\t\treturn settingsInternals(this).settings.search?.contextBefore ?? 1;\n\t},\n\n\tgetSearchContextAfter() {\n\t\treturn settingsInternals(this).settings.search?.contextAfter ?? 3;\n\t},\n\n\tgetNpmCommand() {\n\t\tconst command = settingsInternals(this).settings.npmCommand;\n\t\treturn command ? [...command] : undefined;\n\t},\n\n\tsetNpmCommand(command) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.npmCommand = command ? [...command] : undefined;\n\t\tstate.markModified(\"npmCommand\");\n\t\tstate.save();\n\t},\n\n\tgetCollapseChangelog() {\n\t\treturn settingsInternals(this).settings.collapseChangelog ?? false;\n\t},\n\n\tsetCollapseChangelog(collapse) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.collapseChangelog = collapse;\n\t\tstate.markModified(\"collapseChangelog\");\n\t\tstate.save();\n\t},\n\n\tgetEnableInstallTelemetry() {\n\t\treturn settingsInternals(this).settings.enableInstallTelemetry ?? true;\n\t},\n\n\tsetEnableInstallTelemetry(enabled) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.enableInstallTelemetry = enabled;\n\t\tstate.markModified(\"enableInstallTelemetry\");\n\t\tstate.save();\n\t},\n\n\tgetPackages() {\n\t\treturn [...(settingsInternals(this).settings.packages ?? [])];\n\t},\n\n\tsetPackages(packages) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.packages = packages;\n\t\tstate.markModified(\"packages\");\n\t\tstate.save();\n\t},\n\n\tsetProjectPackages(packages) {\n\t\tconst state = settingsInternals(this);\n\t\tconst projectSettings = structuredClone(state.projectSettings);\n\t\tprojectSettings.packages = packages;\n\t\tstate.markProjectModified(\"packages\");\n\t\tstate.saveProjectSettings(projectSettings);\n\t},\n\n\tgetExtensionPaths() {\n\t\treturn [...(settingsInternals(this).settings.extensions ?? [])];\n\t},\n\n\tsetExtensionPaths(paths) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.extensions = paths;\n\t\tstate.markModified(\"extensions\");\n\t\tstate.save();\n\t},\n\n\tsetProjectExtensionPaths(paths) {\n\t\tconst state = settingsInternals(this);\n\t\tconst projectSettings = structuredClone(state.projectSettings);\n\t\tprojectSettings.extensions = paths;\n\t\tstate.markProjectModified(\"extensions\");\n\t\tstate.saveProjectSettings(projectSettings);\n\t},\n\n\tgetSkillPaths() {\n\t\treturn [...(settingsInternals(this).settings.skills ?? [])];\n\t},\n\n\tsetSkillPaths(paths) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.skills = paths;\n\t\tstate.markModified(\"skills\");\n\t\tstate.save();\n\t},\n\n\tsetProjectSkillPaths(paths) {\n\t\tconst state = settingsInternals(this);\n\t\tconst projectSettings = structuredClone(state.projectSettings);\n\t\tprojectSettings.skills = paths;\n\t\tstate.markProjectModified(\"skills\");\n\t\tstate.saveProjectSettings(projectSettings);\n\t},\n\n\tgetPromptTemplatePaths() {\n\t\treturn [...(settingsInternals(this).settings.prompts ?? [])];\n\t},\n\n\tsetPromptTemplatePaths(paths) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.prompts = paths;\n\t\tstate.markModified(\"prompts\");\n\t\tstate.save();\n\t},\n\n\tsetProjectPromptTemplatePaths(paths) {\n\t\tconst state = settingsInternals(this);\n\t\tconst projectSettings = structuredClone(state.projectSettings);\n\t\tprojectSettings.prompts = paths;\n\t\tstate.markProjectModified(\"prompts\");\n\t\tstate.saveProjectSettings(projectSettings);\n\t},\n\n\tgetThemePaths() {\n\t\treturn [...(settingsInternals(this).settings.themes ?? [])];\n\t},\n\n\tsetThemePaths(paths) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.themes = paths;\n\t\tstate.markModified(\"themes\");\n\t\tstate.save();\n\t},\n\n\tsetProjectThemePaths(paths) {\n\t\tconst state = settingsInternals(this);\n\t\tconst projectSettings = structuredClone(state.projectSettings);\n\t\tprojectSettings.themes = paths;\n\t\tstate.markProjectModified(\"themes\");\n\t\tstate.saveProjectSettings(projectSettings);\n\t},\n\n\tgetEnableSkillCommands() {\n\t\treturn settingsInternals(this).settings.enableSkillCommands ?? true;\n\t},\n\n\tsetEnableSkillCommands(enabled) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.enableSkillCommands = enabled;\n\t\tstate.markModified(\"enableSkillCommands\");\n\t\tstate.save();\n\t},\n\n\tgetThinkingBudgets() {\n\t\treturn settingsInternals(this).settings.thinkingBudgets;\n\t},\n};\n\nObject.assign(SettingsManager.prototype, resourceAccessors);\n"]}
1
+ {"version":3,"file":"settings-manager-resource-accessors.js","sourceRoot":"","sources":["../../src/core/settings-manager-resource-accessors.ts"],"names":[],"mappings":"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","sourcesContent":["import { SettingsManager } from \"./settings-manager-core.ts\";\nimport { settingsInternals } from \"./settings-manager-internals.ts\";\nimport type { DefaultProjectTrust, PackageSource, ThinkingBudgetsSettings } from \"./settings-types.ts\";\n\ninterface SettingsManagerResourceAccessors {\n\tgetHideThinkingBlock(): boolean;\n\tgetExternalEditorCommand(): string | undefined;\n\tsetHideThinkingBlock(hide: boolean): void;\n\tgetShellPath(): string | undefined;\n\tsetShellPath(path: string | undefined): void;\n\tgetDefaultProjectTrust(): DefaultProjectTrust;\n\tsetDefaultProjectTrust(defaultProjectTrust: DefaultProjectTrust): void;\n\tgetQuietStartup(): boolean;\n\tsetQuietStartup(quiet: boolean): void;\n\tgetShellCommandPrefix(): string | undefined;\n\tsetShellCommandPrefix(prefix: string | undefined): void;\n\tgetBashInterceptorEnabled(): boolean;\n\tsetBashInterceptorEnabled(enabled: boolean): void;\n\tgetSearchContextBefore(): number;\n\tgetSearchContextAfter(): number;\n\tgetNpmCommand(): string[] | undefined;\n\tsetNpmCommand(command: string[] | undefined): void;\n\tgetCollapseChangelog(): boolean;\n\tsetCollapseChangelog(collapse: boolean): void;\n\tgetEnableInstallTelemetry(): boolean;\n\tsetEnableInstallTelemetry(enabled: boolean): void;\n\tgetPackages(): PackageSource[];\n\tsetPackages(packages: PackageSource[]): void;\n\tsetProjectPackages(packages: PackageSource[]): void;\n\tgetExtensionPaths(): string[];\n\tsetExtensionPaths(paths: string[]): void;\n\tsetProjectExtensionPaths(paths: string[]): void;\n\tgetSkillPaths(): string[];\n\tsetSkillPaths(paths: string[]): void;\n\tsetProjectSkillPaths(paths: string[]): void;\n\tgetPromptTemplatePaths(): string[];\n\tsetPromptTemplatePaths(paths: string[]): void;\n\tsetProjectPromptTemplatePaths(paths: string[]): void;\n\tgetThemePaths(): string[];\n\tsetThemePaths(paths: string[]): void;\n\tsetProjectThemePaths(paths: string[]): void;\n\tgetEnableSkillCommands(): boolean;\n\tsetEnableSkillCommands(enabled: boolean): void;\n\tgetThinkingBudgets(): ThinkingBudgetsSettings | undefined;\n}\n\ndeclare module \"./settings-manager-core.ts\" {\n\tinterface SettingsManager extends SettingsManagerResourceAccessors {}\n}\n\nconst resourceAccessors: SettingsManagerResourceAccessors = {\n\tgetHideThinkingBlock() {\n\t\treturn settingsInternals(this).settings.hideThinkingBlock ?? false;\n\t},\n\n\tgetExternalEditorCommand() {\n\t\tconst configuredEditor = settingsInternals(this).settings.externalEditor;\n\t\tif (typeof configuredEditor === \"string\" && configuredEditor.trim() !== \"\") {\n\t\t\treturn configuredEditor;\n\t\t}\n\t\tconst environmentEditor = process.env.VISUAL || process.env.EDITOR;\n\t\tif (environmentEditor) {\n\t\t\treturn environmentEditor;\n\t\t}\n\t\treturn process.platform === \"win32\" ? \"notepad\" : \"nano\";\n\t},\n\n\tsetHideThinkingBlock(hide) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.hideThinkingBlock = hide;\n\t\tstate.markModified(\"hideThinkingBlock\");\n\t\tstate.save();\n\t},\n\n\tgetShellPath() {\n\t\treturn settingsInternals(this).settings.shellPath;\n\t},\n\n\tsetShellPath(path) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.shellPath = path;\n\t\tstate.markModified(\"shellPath\");\n\t\tstate.save();\n\t},\n\n\tgetDefaultProjectTrust() {\n\t\tconst value = settingsInternals(this).globalSettings.defaultProjectTrust;\n\t\treturn value === \"always\" || value === \"never\" ? value : \"ask\";\n\t},\n\n\tsetDefaultProjectTrust(defaultProjectTrust) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.defaultProjectTrust = defaultProjectTrust;\n\t\tstate.markModified(\"defaultProjectTrust\");\n\t\tstate.save();\n\t},\n\n\tgetQuietStartup() {\n\t\treturn settingsInternals(this).settings.quietStartup ?? false;\n\t},\n\n\tsetQuietStartup(quiet) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.quietStartup = quiet;\n\t\tstate.markModified(\"quietStartup\");\n\t\tstate.save();\n\t},\n\n\tgetShellCommandPrefix() {\n\t\treturn settingsInternals(this).settings.shellCommandPrefix;\n\t},\n\n\tsetShellCommandPrefix(prefix) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.shellCommandPrefix = prefix;\n\t\tstate.markModified(\"shellCommandPrefix\");\n\t\tstate.save();\n\t},\n\n\tgetBashInterceptorEnabled() {\n\t\treturn settingsInternals(this).settings.bashInterceptor?.enabled ?? false;\n\t},\n\n\tsetBashInterceptorEnabled(enabled) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.bashInterceptor = { ...(state.globalSettings.bashInterceptor ?? {}), enabled };\n\t\tstate.markModified(\"bashInterceptor\");\n\t\tstate.save();\n\t},\n\n\tgetSearchContextBefore() {\n\t\treturn settingsInternals(this).settings.search?.contextBefore ?? 1;\n\t},\n\n\tgetSearchContextAfter() {\n\t\treturn settingsInternals(this).settings.search?.contextAfter ?? 3;\n\t},\n\n\tgetNpmCommand() {\n\t\tconst command = settingsInternals(this).settings.npmCommand;\n\t\treturn command ? [...command] : undefined;\n\t},\n\n\tsetNpmCommand(command) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.npmCommand = command ? [...command] : undefined;\n\t\tstate.markModified(\"npmCommand\");\n\t\tstate.save();\n\t},\n\n\tgetCollapseChangelog() {\n\t\treturn settingsInternals(this).settings.collapseChangelog ?? false;\n\t},\n\n\tsetCollapseChangelog(collapse) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.collapseChangelog = collapse;\n\t\tstate.markModified(\"collapseChangelog\");\n\t\tstate.save();\n\t},\n\n\tgetEnableInstallTelemetry() {\n\t\treturn settingsInternals(this).settings.enableInstallTelemetry ?? true;\n\t},\n\n\tsetEnableInstallTelemetry(enabled) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.enableInstallTelemetry = enabled;\n\t\tstate.markModified(\"enableInstallTelemetry\");\n\t\tstate.save();\n\t},\n\n\tgetPackages() {\n\t\treturn [...(settingsInternals(this).settings.packages ?? [])];\n\t},\n\n\tsetPackages(packages) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.packages = packages;\n\t\tstate.markModified(\"packages\");\n\t\tstate.save();\n\t},\n\n\tsetProjectPackages(packages) {\n\t\tconst state = settingsInternals(this);\n\t\tconst projectSettings = structuredClone(state.projectSettings);\n\t\tprojectSettings.packages = packages;\n\t\tstate.markProjectModified(\"packages\");\n\t\tstate.saveProjectSettings(projectSettings);\n\t},\n\n\tgetExtensionPaths() {\n\t\treturn [...(settingsInternals(this).settings.extensions ?? [])];\n\t},\n\n\tsetExtensionPaths(paths) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.extensions = paths;\n\t\tstate.markModified(\"extensions\");\n\t\tstate.save();\n\t},\n\n\tsetProjectExtensionPaths(paths) {\n\t\tconst state = settingsInternals(this);\n\t\tconst projectSettings = structuredClone(state.projectSettings);\n\t\tprojectSettings.extensions = paths;\n\t\tstate.markProjectModified(\"extensions\");\n\t\tstate.saveProjectSettings(projectSettings);\n\t},\n\n\tgetSkillPaths() {\n\t\treturn [...(settingsInternals(this).settings.skills ?? [])];\n\t},\n\n\tsetSkillPaths(paths) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.skills = paths;\n\t\tstate.markModified(\"skills\");\n\t\tstate.save();\n\t},\n\n\tsetProjectSkillPaths(paths) {\n\t\tconst state = settingsInternals(this);\n\t\tconst projectSettings = structuredClone(state.projectSettings);\n\t\tprojectSettings.skills = paths;\n\t\tstate.markProjectModified(\"skills\");\n\t\tstate.saveProjectSettings(projectSettings);\n\t},\n\n\tgetPromptTemplatePaths() {\n\t\treturn [...(settingsInternals(this).settings.prompts ?? [])];\n\t},\n\n\tsetPromptTemplatePaths(paths) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.prompts = paths;\n\t\tstate.markModified(\"prompts\");\n\t\tstate.save();\n\t},\n\n\tsetProjectPromptTemplatePaths(paths) {\n\t\tconst state = settingsInternals(this);\n\t\tconst projectSettings = structuredClone(state.projectSettings);\n\t\tprojectSettings.prompts = paths;\n\t\tstate.markProjectModified(\"prompts\");\n\t\tstate.saveProjectSettings(projectSettings);\n\t},\n\n\tgetThemePaths() {\n\t\treturn [...(settingsInternals(this).settings.themes ?? [])];\n\t},\n\n\tsetThemePaths(paths) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.themes = paths;\n\t\tstate.markModified(\"themes\");\n\t\tstate.save();\n\t},\n\n\tsetProjectThemePaths(paths) {\n\t\tconst state = settingsInternals(this);\n\t\tconst projectSettings = structuredClone(state.projectSettings);\n\t\tprojectSettings.themes = paths;\n\t\tstate.markProjectModified(\"themes\");\n\t\tstate.saveProjectSettings(projectSettings);\n\t},\n\n\tgetEnableSkillCommands() {\n\t\treturn settingsInternals(this).settings.enableSkillCommands ?? true;\n\t},\n\n\tsetEnableSkillCommands(enabled) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.enableSkillCommands = enabled;\n\t\tstate.markModified(\"enableSkillCommands\");\n\t\tstate.save();\n\t},\n\n\tgetThinkingBudgets() {\n\t\treturn settingsInternals(this).settings.thinkingBudgets;\n\t},\n};\n\nObject.assign(SettingsManager.prototype, resourceAccessors);\n"]}
@@ -22,6 +22,8 @@ interface SettingsManagerUiAccessors {
22
22
  setShowHardwareCursor(enabled: boolean): void;
23
23
  getEditorPaddingX(): number;
24
24
  setEditorPaddingX(padding: number): void;
25
+ getOutputPad(): 0 | 1;
26
+ setOutputPad(padding: 0 | 1): void;
25
27
  getAutocompleteMaxVisible(): number;
26
28
  setAutocompleteMaxVisible(maxVisible: number): void;
27
29
  getCodeBlockIndent(): string;
@@ -1 +1 @@
1
- {"version":3,"file":"settings-manager-ui-accessors.d.ts","sourceRoot":"","sources":["../../src/core/settings-manager-ui-accessors.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,UAAU,0BAA0B;IACnC,aAAa,IAAI,OAAO,CAAC;IACzB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IACnC,kBAAkB,IAAI,MAAM,CAAC;IAC7B,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,gBAAgB,IAAI,OAAO,CAAC;IAC5B,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACzC,uBAAuB,IAAI,OAAO,CAAC;IACnC,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAChD,kBAAkB,IAAI,OAAO,CAAC;IAC9B,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3C,cAAc,IAAI,OAAO,CAAC;IAC1B,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACvC,gBAAgB,IAAI,MAAM,EAAE,GAAG,SAAS,CAAC;IACzC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,IAAI,CAAC;IACvD,qBAAqB,IAAI,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAClD,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC9D,iBAAiB,IAAI,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,cAAc,GAAG,KAAK,CAAC;IACnF,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,cAAc,GAAG,KAAK,GAAG,IAAI,CAAC;IAC7F,qBAAqB,IAAI,OAAO,CAAC;IACjC,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9C,iBAAiB,IAAI,MAAM,CAAC;IAC5B,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,yBAAyB,IAAI,MAAM,CAAC;IACpC,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACpD,kBAAkB,IAAI,MAAM,CAAC;IAC7B,WAAW,IAAI,eAAe,CAAC;IAC/B,WAAW,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;IAC7C,wBAAwB,IAAI;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;IACjE,wBAAwB,CAAC,QAAQ,EAAE,OAAO,CAAC;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC,GAAG,IAAI,CAAC;CACxF;AAED,OAAO,QAAQ,4BAA4B,CAAC,CAAC;IAC5C,UAAU,eAAgB,SAAQ,0BAA0B;KAAG;CAC/D","sourcesContent":["import { ENV_CLEAR_ON_SHRINK, ENV_HARDWARE_CURSOR, getEnvValue } from \"../config.ts\";\nimport { SettingsManager } from \"./settings-manager-core.ts\";\nimport { settingsInternals } from \"./settings-manager-internals.ts\";\nimport type { WarningSettings } from \"./settings-types.ts\";\n\ninterface SettingsManagerUiAccessors {\n\tgetShowImages(): boolean;\n\tsetShowImages(show: boolean): void;\n\tgetImageWidthCells(): number;\n\tsetImageWidthCells(width: number): void;\n\tgetClearOnShrink(): boolean;\n\tsetClearOnShrink(enabled: boolean): void;\n\tgetShowTerminalProgress(): boolean;\n\tsetShowTerminalProgress(enabled: boolean): void;\n\tgetImageAutoResize(): boolean;\n\tsetImageAutoResize(enabled: boolean): void;\n\tgetBlockImages(): boolean;\n\tsetBlockImages(blocked: boolean): void;\n\tgetEnabledModels(): string[] | undefined;\n\tsetEnabledModels(patterns: string[] | undefined): void;\n\tgetDoubleEscapeAction(): \"fork\" | \"tree\" | \"none\";\n\tsetDoubleEscapeAction(action: \"fork\" | \"tree\" | \"none\"): void;\n\tgetTreeFilterMode(): \"default\" | \"no-tools\" | \"user-only\" | \"labeled-only\" | \"all\";\n\tsetTreeFilterMode(mode: \"default\" | \"no-tools\" | \"user-only\" | \"labeled-only\" | \"all\"): void;\n\tgetShowHardwareCursor(): boolean;\n\tsetShowHardwareCursor(enabled: boolean): void;\n\tgetEditorPaddingX(): number;\n\tsetEditorPaddingX(padding: number): void;\n\tgetAutocompleteMaxVisible(): number;\n\tsetAutocompleteMaxVisible(maxVisible: number): void;\n\tgetCodeBlockIndent(): string;\n\tgetWarnings(): WarningSettings;\n\tsetWarnings(warnings: WarningSettings): void;\n\tgetCodexFastModeSettings(): { chat: boolean; workflow: boolean };\n\tsetCodexFastModeSettings(settings: Partial<{ chat: boolean; workflow: boolean }>): void;\n}\n\ndeclare module \"./settings-manager-core.ts\" {\n\tinterface SettingsManager extends SettingsManagerUiAccessors {}\n}\n\nconst uiAccessors: SettingsManagerUiAccessors = {\n\tgetShowImages() {\n\t\treturn settingsInternals(this).settings.terminal?.showImages ?? true;\n\t},\n\n\tsetShowImages(show) {\n\t\tconst state = settingsInternals(this);\n\t\tif (!state.globalSettings.terminal) {\n\t\t\tstate.globalSettings.terminal = {};\n\t\t}\n\t\tstate.globalSettings.terminal.showImages = show;\n\t\tstate.markModified(\"terminal\", \"showImages\");\n\t\tstate.save();\n\t},\n\n\tgetImageWidthCells() {\n\t\tconst width = settingsInternals(this).settings.terminal?.imageWidthCells;\n\t\tif (typeof width !== \"number\" || !Number.isFinite(width)) {\n\t\t\treturn 60;\n\t\t}\n\t\treturn Math.max(1, Math.floor(width));\n\t},\n\n\tsetImageWidthCells(width) {\n\t\tconst state = settingsInternals(this);\n\t\tif (!state.globalSettings.terminal) {\n\t\t\tstate.globalSettings.terminal = {};\n\t\t}\n\t\tstate.globalSettings.terminal.imageWidthCells = Math.max(1, Math.floor(width));\n\t\tstate.markModified(\"terminal\", \"imageWidthCells\");\n\t\tstate.save();\n\t},\n\n\tgetClearOnShrink() {\n\t\t// Settings takes precedence, then env var, then default false\n\t\tconst terminal = settingsInternals(this).settings.terminal;\n\t\tif (terminal?.clearOnShrink !== undefined) {\n\t\t\treturn terminal.clearOnShrink;\n\t\t}\n\t\treturn getEnvValue(ENV_CLEAR_ON_SHRINK) === \"1\";\n\t},\n\n\tsetClearOnShrink(enabled) {\n\t\tconst state = settingsInternals(this);\n\t\tif (!state.globalSettings.terminal) {\n\t\t\tstate.globalSettings.terminal = {};\n\t\t}\n\t\tstate.globalSettings.terminal.clearOnShrink = enabled;\n\t\tstate.markModified(\"terminal\", \"clearOnShrink\");\n\t\tstate.save();\n\t},\n\n\tgetShowTerminalProgress() {\n\t\treturn settingsInternals(this).settings.terminal?.showTerminalProgress ?? false;\n\t},\n\n\tsetShowTerminalProgress(enabled) {\n\t\tconst state = settingsInternals(this);\n\t\tif (!state.globalSettings.terminal) {\n\t\t\tstate.globalSettings.terminal = {};\n\t\t}\n\t\tstate.globalSettings.terminal.showTerminalProgress = enabled;\n\t\tstate.markModified(\"terminal\", \"showTerminalProgress\");\n\t\tstate.save();\n\t},\n\n\tgetImageAutoResize() {\n\t\treturn settingsInternals(this).settings.images?.autoResize ?? true;\n\t},\n\n\tsetImageAutoResize(enabled) {\n\t\tconst state = settingsInternals(this);\n\t\tif (!state.globalSettings.images) {\n\t\t\tstate.globalSettings.images = {};\n\t\t}\n\t\tstate.globalSettings.images.autoResize = enabled;\n\t\tstate.markModified(\"images\", \"autoResize\");\n\t\tstate.save();\n\t},\n\n\tgetBlockImages() {\n\t\treturn settingsInternals(this).settings.images?.blockImages ?? false;\n\t},\n\n\tsetBlockImages(blocked) {\n\t\tconst state = settingsInternals(this);\n\t\tif (!state.globalSettings.images) {\n\t\t\tstate.globalSettings.images = {};\n\t\t}\n\t\tstate.globalSettings.images.blockImages = blocked;\n\t\tstate.markModified(\"images\", \"blockImages\");\n\t\tstate.save();\n\t},\n\n\tgetEnabledModels() {\n\t\treturn settingsInternals(this).settings.enabledModels;\n\t},\n\n\tsetEnabledModels(patterns) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.enabledModels = patterns;\n\t\tstate.markModified(\"enabledModels\");\n\t\tstate.save();\n\t},\n\n\tgetDoubleEscapeAction() {\n\t\treturn settingsInternals(this).settings.doubleEscapeAction ?? \"tree\";\n\t},\n\n\tsetDoubleEscapeAction(action) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.doubleEscapeAction = action;\n\t\tstate.markModified(\"doubleEscapeAction\");\n\t\tstate.save();\n\t},\n\n\tgetTreeFilterMode() {\n\t\tconst mode = settingsInternals(this).settings.treeFilterMode;\n\t\tconst valid = [\"default\", \"no-tools\", \"user-only\", \"labeled-only\", \"all\"];\n\t\treturn mode && valid.includes(mode) ? mode : \"default\";\n\t},\n\n\tsetTreeFilterMode(mode) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.treeFilterMode = mode;\n\t\tstate.markModified(\"treeFilterMode\");\n\t\tstate.save();\n\t},\n\n\tgetShowHardwareCursor() {\n\t\treturn settingsInternals(this).settings.showHardwareCursor ?? getEnvValue(ENV_HARDWARE_CURSOR) === \"1\";\n\t},\n\n\tsetShowHardwareCursor(enabled) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.showHardwareCursor = enabled;\n\t\tstate.markModified(\"showHardwareCursor\");\n\t\tstate.save();\n\t},\n\n\tgetEditorPaddingX() {\n\t\treturn settingsInternals(this).settings.editorPaddingX ?? 0;\n\t},\n\n\tsetEditorPaddingX(padding) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.editorPaddingX = Math.max(0, Math.min(3, Math.floor(padding)));\n\t\tstate.markModified(\"editorPaddingX\");\n\t\tstate.save();\n\t},\n\n\tgetAutocompleteMaxVisible() {\n\t\treturn settingsInternals(this).settings.autocompleteMaxVisible ?? 5;\n\t},\n\n\tsetAutocompleteMaxVisible(maxVisible) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.autocompleteMaxVisible = Math.max(3, Math.min(20, Math.floor(maxVisible)));\n\t\tstate.markModified(\"autocompleteMaxVisible\");\n\t\tstate.save();\n\t},\n\n\tgetCodeBlockIndent() {\n\t\treturn settingsInternals(this).settings.markdown?.codeBlockIndent ?? \" \";\n\t},\n\n\tgetWarnings() {\n\t\treturn { ...(settingsInternals(this).settings.warnings ?? {}) };\n\t},\n\n\tsetWarnings(warnings) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.warnings = { ...warnings };\n\t\tstate.markModified(\"warnings\");\n\t\tstate.save();\n\t},\n\n\tgetCodexFastModeSettings() {\n\t\tconst codexFastMode = settingsInternals(this).settings.codexFastMode;\n\t\treturn {\n\t\t\tchat: codexFastMode?.chat ?? false,\n\t\t\tworkflow: codexFastMode?.workflow ?? false,\n\t\t};\n\t},\n\n\tsetCodexFastModeSettings(settings) {\n\t\tif (settings.chat === undefined && settings.workflow === undefined) {\n\t\t\treturn;\n\t\t}\n\t\tconst state = settingsInternals(this);\n\t\tif (!state.globalSettings.codexFastMode) {\n\t\t\tstate.globalSettings.codexFastMode = {};\n\t\t}\n\t\tif (settings.chat !== undefined) {\n\t\t\tstate.globalSettings.codexFastMode.chat = settings.chat;\n\t\t\tstate.markModified(\"codexFastMode\", \"chat\");\n\t\t}\n\t\tif (settings.workflow !== undefined) {\n\t\t\tstate.globalSettings.codexFastMode.workflow = settings.workflow;\n\t\t\tstate.markModified(\"codexFastMode\", \"workflow\");\n\t\t}\n\n\t\tconst projectCodexFastMode = state.projectSettings.codexFastMode;\n\t\tconst projectOverridesChat = projectCodexFastMode?.chat !== undefined;\n\t\tconst projectOverridesWorkflow = projectCodexFastMode?.workflow !== undefined;\n\t\tlet projectModified = false;\n\t\tif ((settings.chat !== undefined && projectOverridesChat) || (settings.workflow !== undefined && projectOverridesWorkflow)) {\n\t\t\tstate.projectSettings.codexFastMode = { ...(projectCodexFastMode ?? {}) };\n\t\t\tif (settings.chat !== undefined && projectOverridesChat) {\n\t\t\t\tstate.projectSettings.codexFastMode.chat = settings.chat;\n\t\t\t\tstate.markProjectModified(\"codexFastMode\", \"chat\");\n\t\t\t\tprojectModified = true;\n\t\t\t}\n\t\t\tif (settings.workflow !== undefined && projectOverridesWorkflow) {\n\t\t\t\tstate.projectSettings.codexFastMode.workflow = settings.workflow;\n\t\t\t\tstate.markProjectModified(\"codexFastMode\", \"workflow\");\n\t\t\t\tprojectModified = true;\n\t\t\t}\n\t\t\tif (projectModified) {\n\t\t\t\tstate.saveProjectSettings(state.projectSettings);\n\t\t\t}\n\t\t}\n\n\t\tif (state.runtimeSettingsOverrides.codexFastMode) {\n\t\t\tstate.runtimeSettingsOverrides.codexFastMode = {\n\t\t\t\t...state.runtimeSettingsOverrides.codexFastMode,\n\t\t\t\t...(settings.chat !== undefined ? { chat: settings.chat } : {}),\n\t\t\t\t...(settings.workflow !== undefined ? { workflow: settings.workflow } : {}),\n\t\t\t};\n\t\t}\n\n\t\tstate.save();\n\t},\n};\n\nObject.assign(SettingsManager.prototype, uiAccessors);\n"]}
1
+ {"version":3,"file":"settings-manager-ui-accessors.d.ts","sourceRoot":"","sources":["../../src/core/settings-manager-ui-accessors.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,UAAU,0BAA0B;IACnC,aAAa,IAAI,OAAO,CAAC;IACzB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IACnC,kBAAkB,IAAI,MAAM,CAAC;IAC7B,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,gBAAgB,IAAI,OAAO,CAAC;IAC5B,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACzC,uBAAuB,IAAI,OAAO,CAAC;IACnC,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAChD,kBAAkB,IAAI,OAAO,CAAC;IAC9B,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3C,cAAc,IAAI,OAAO,CAAC;IAC1B,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACvC,gBAAgB,IAAI,MAAM,EAAE,GAAG,SAAS,CAAC;IACzC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,IAAI,CAAC;IACvD,qBAAqB,IAAI,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAClD,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC9D,iBAAiB,IAAI,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,cAAc,GAAG,KAAK,CAAC;IACnF,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,cAAc,GAAG,KAAK,GAAG,IAAI,CAAC;IAC7F,qBAAqB,IAAI,OAAO,CAAC;IACjC,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9C,iBAAiB,IAAI,MAAM,CAAC;IAC5B,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,YAAY,IAAI,CAAC,GAAG,CAAC,CAAC;IACtB,YAAY,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IACnC,yBAAyB,IAAI,MAAM,CAAC;IACpC,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACpD,kBAAkB,IAAI,MAAM,CAAC;IAC7B,WAAW,IAAI,eAAe,CAAC;IAC/B,WAAW,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;IAC7C,wBAAwB,IAAI;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;IACjE,wBAAwB,CAAC,QAAQ,EAAE,OAAO,CAAC;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC,GAAG,IAAI,CAAC;CACxF;AAED,OAAO,QAAQ,4BAA4B,CAAC,CAAC;IAC5C,UAAU,eAAgB,SAAQ,0BAA0B;KAAG;CAC/D","sourcesContent":["import { ENV_CLEAR_ON_SHRINK, ENV_HARDWARE_CURSOR, getEnvValue } from \"../config.ts\";\nimport { SettingsManager } from \"./settings-manager-core.ts\";\nimport { settingsInternals } from \"./settings-manager-internals.ts\";\nimport type { WarningSettings } from \"./settings-types.ts\";\n\ninterface SettingsManagerUiAccessors {\n\tgetShowImages(): boolean;\n\tsetShowImages(show: boolean): void;\n\tgetImageWidthCells(): number;\n\tsetImageWidthCells(width: number): void;\n\tgetClearOnShrink(): boolean;\n\tsetClearOnShrink(enabled: boolean): void;\n\tgetShowTerminalProgress(): boolean;\n\tsetShowTerminalProgress(enabled: boolean): void;\n\tgetImageAutoResize(): boolean;\n\tsetImageAutoResize(enabled: boolean): void;\n\tgetBlockImages(): boolean;\n\tsetBlockImages(blocked: boolean): void;\n\tgetEnabledModels(): string[] | undefined;\n\tsetEnabledModels(patterns: string[] | undefined): void;\n\tgetDoubleEscapeAction(): \"fork\" | \"tree\" | \"none\";\n\tsetDoubleEscapeAction(action: \"fork\" | \"tree\" | \"none\"): void;\n\tgetTreeFilterMode(): \"default\" | \"no-tools\" | \"user-only\" | \"labeled-only\" | \"all\";\n\tsetTreeFilterMode(mode: \"default\" | \"no-tools\" | \"user-only\" | \"labeled-only\" | \"all\"): void;\n\tgetShowHardwareCursor(): boolean;\n\tsetShowHardwareCursor(enabled: boolean): void;\n\tgetEditorPaddingX(): number;\n\tsetEditorPaddingX(padding: number): void;\n\tgetOutputPad(): 0 | 1;\n\tsetOutputPad(padding: 0 | 1): void;\n\tgetAutocompleteMaxVisible(): number;\n\tsetAutocompleteMaxVisible(maxVisible: number): void;\n\tgetCodeBlockIndent(): string;\n\tgetWarnings(): WarningSettings;\n\tsetWarnings(warnings: WarningSettings): void;\n\tgetCodexFastModeSettings(): { chat: boolean; workflow: boolean };\n\tsetCodexFastModeSettings(settings: Partial<{ chat: boolean; workflow: boolean }>): void;\n}\n\ndeclare module \"./settings-manager-core.ts\" {\n\tinterface SettingsManager extends SettingsManagerUiAccessors {}\n}\n\nconst uiAccessors: SettingsManagerUiAccessors = {\n\tgetShowImages() {\n\t\treturn settingsInternals(this).settings.terminal?.showImages ?? true;\n\t},\n\n\tsetShowImages(show) {\n\t\tconst state = settingsInternals(this);\n\t\tif (!state.globalSettings.terminal) {\n\t\t\tstate.globalSettings.terminal = {};\n\t\t}\n\t\tstate.globalSettings.terminal.showImages = show;\n\t\tstate.markModified(\"terminal\", \"showImages\");\n\t\tstate.save();\n\t},\n\n\tgetImageWidthCells() {\n\t\tconst width = settingsInternals(this).settings.terminal?.imageWidthCells;\n\t\tif (typeof width !== \"number\" || !Number.isFinite(width)) {\n\t\t\treturn 60;\n\t\t}\n\t\treturn Math.max(1, Math.floor(width));\n\t},\n\n\tsetImageWidthCells(width) {\n\t\tconst state = settingsInternals(this);\n\t\tif (!state.globalSettings.terminal) {\n\t\t\tstate.globalSettings.terminal = {};\n\t\t}\n\t\tstate.globalSettings.terminal.imageWidthCells = Math.max(1, Math.floor(width));\n\t\tstate.markModified(\"terminal\", \"imageWidthCells\");\n\t\tstate.save();\n\t},\n\n\tgetClearOnShrink() {\n\t\t// Settings takes precedence, then env var, then default false\n\t\tconst terminal = settingsInternals(this).settings.terminal;\n\t\tif (terminal?.clearOnShrink !== undefined) {\n\t\t\treturn terminal.clearOnShrink;\n\t\t}\n\t\treturn getEnvValue(ENV_CLEAR_ON_SHRINK) === \"1\";\n\t},\n\n\tsetClearOnShrink(enabled) {\n\t\tconst state = settingsInternals(this);\n\t\tif (!state.globalSettings.terminal) {\n\t\t\tstate.globalSettings.terminal = {};\n\t\t}\n\t\tstate.globalSettings.terminal.clearOnShrink = enabled;\n\t\tstate.markModified(\"terminal\", \"clearOnShrink\");\n\t\tstate.save();\n\t},\n\n\tgetShowTerminalProgress() {\n\t\treturn settingsInternals(this).settings.terminal?.showTerminalProgress ?? false;\n\t},\n\n\tsetShowTerminalProgress(enabled) {\n\t\tconst state = settingsInternals(this);\n\t\tif (!state.globalSettings.terminal) {\n\t\t\tstate.globalSettings.terminal = {};\n\t\t}\n\t\tstate.globalSettings.terminal.showTerminalProgress = enabled;\n\t\tstate.markModified(\"terminal\", \"showTerminalProgress\");\n\t\tstate.save();\n\t},\n\n\tgetImageAutoResize() {\n\t\treturn settingsInternals(this).settings.images?.autoResize ?? true;\n\t},\n\n\tsetImageAutoResize(enabled) {\n\t\tconst state = settingsInternals(this);\n\t\tif (!state.globalSettings.images) {\n\t\t\tstate.globalSettings.images = {};\n\t\t}\n\t\tstate.globalSettings.images.autoResize = enabled;\n\t\tstate.markModified(\"images\", \"autoResize\");\n\t\tstate.save();\n\t},\n\n\tgetBlockImages() {\n\t\treturn settingsInternals(this).settings.images?.blockImages ?? false;\n\t},\n\n\tsetBlockImages(blocked) {\n\t\tconst state = settingsInternals(this);\n\t\tif (!state.globalSettings.images) {\n\t\t\tstate.globalSettings.images = {};\n\t\t}\n\t\tstate.globalSettings.images.blockImages = blocked;\n\t\tstate.markModified(\"images\", \"blockImages\");\n\t\tstate.save();\n\t},\n\n\tgetEnabledModels() {\n\t\treturn settingsInternals(this).settings.enabledModels;\n\t},\n\n\tsetEnabledModels(patterns) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.enabledModels = patterns;\n\t\tstate.markModified(\"enabledModels\");\n\t\tstate.save();\n\t},\n\n\tgetDoubleEscapeAction() {\n\t\treturn settingsInternals(this).settings.doubleEscapeAction ?? \"tree\";\n\t},\n\n\tsetDoubleEscapeAction(action) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.doubleEscapeAction = action;\n\t\tstate.markModified(\"doubleEscapeAction\");\n\t\tstate.save();\n\t},\n\n\tgetTreeFilterMode() {\n\t\tconst mode = settingsInternals(this).settings.treeFilterMode;\n\t\tconst valid = [\"default\", \"no-tools\", \"user-only\", \"labeled-only\", \"all\"];\n\t\treturn mode && valid.includes(mode) ? mode : \"default\";\n\t},\n\n\tsetTreeFilterMode(mode) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.treeFilterMode = mode;\n\t\tstate.markModified(\"treeFilterMode\");\n\t\tstate.save();\n\t},\n\n\tgetShowHardwareCursor() {\n\t\treturn settingsInternals(this).settings.showHardwareCursor ?? getEnvValue(ENV_HARDWARE_CURSOR) === \"1\";\n\t},\n\n\tsetShowHardwareCursor(enabled) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.showHardwareCursor = enabled;\n\t\tstate.markModified(\"showHardwareCursor\");\n\t\tstate.save();\n\t},\n\n\tgetEditorPaddingX() {\n\t\treturn settingsInternals(this).settings.editorPaddingX ?? 0;\n\t},\n\n\tsetEditorPaddingX(padding) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.editorPaddingX = Math.max(0, Math.min(3, Math.floor(padding)));\n\t\tstate.markModified(\"editorPaddingX\");\n\t\tstate.save();\n\t},\n\n\tgetOutputPad() {\n\t\treturn settingsInternals(this).settings.outputPad === 0 ? 0 : 1;\n\t},\n\n\tsetOutputPad(padding) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.outputPad = padding;\n\t\tstate.markModified(\"outputPad\");\n\t\tstate.save();\n\t},\n\n\tgetAutocompleteMaxVisible() {\n\t\treturn settingsInternals(this).settings.autocompleteMaxVisible ?? 5;\n\t},\n\n\tsetAutocompleteMaxVisible(maxVisible) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.autocompleteMaxVisible = Math.max(3, Math.min(20, Math.floor(maxVisible)));\n\t\tstate.markModified(\"autocompleteMaxVisible\");\n\t\tstate.save();\n\t},\n\n\tgetCodeBlockIndent() {\n\t\treturn settingsInternals(this).settings.markdown?.codeBlockIndent ?? \" \";\n\t},\n\n\tgetWarnings() {\n\t\treturn { ...(settingsInternals(this).settings.warnings ?? {}) };\n\t},\n\n\tsetWarnings(warnings) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.warnings = { ...warnings };\n\t\tstate.markModified(\"warnings\");\n\t\tstate.save();\n\t},\n\n\tgetCodexFastModeSettings() {\n\t\tconst codexFastMode = settingsInternals(this).settings.codexFastMode;\n\t\treturn {\n\t\t\tchat: codexFastMode?.chat ?? false,\n\t\t\tworkflow: codexFastMode?.workflow ?? false,\n\t\t};\n\t},\n\n\tsetCodexFastModeSettings(settings) {\n\t\tif (settings.chat === undefined && settings.workflow === undefined) {\n\t\t\treturn;\n\t\t}\n\t\tconst state = settingsInternals(this);\n\t\tif (!state.globalSettings.codexFastMode) {\n\t\t\tstate.globalSettings.codexFastMode = {};\n\t\t}\n\t\tif (settings.chat !== undefined) {\n\t\t\tstate.globalSettings.codexFastMode.chat = settings.chat;\n\t\t\tstate.markModified(\"codexFastMode\", \"chat\");\n\t\t}\n\t\tif (settings.workflow !== undefined) {\n\t\t\tstate.globalSettings.codexFastMode.workflow = settings.workflow;\n\t\t\tstate.markModified(\"codexFastMode\", \"workflow\");\n\t\t}\n\n\t\tconst projectCodexFastMode = state.projectSettings.codexFastMode;\n\t\tconst projectOverridesChat = projectCodexFastMode?.chat !== undefined;\n\t\tconst projectOverridesWorkflow = projectCodexFastMode?.workflow !== undefined;\n\t\tlet projectModified = false;\n\t\tif ((settings.chat !== undefined && projectOverridesChat) || (settings.workflow !== undefined && projectOverridesWorkflow)) {\n\t\t\tstate.projectSettings.codexFastMode = { ...(projectCodexFastMode ?? {}) };\n\t\t\tif (settings.chat !== undefined && projectOverridesChat) {\n\t\t\t\tstate.projectSettings.codexFastMode.chat = settings.chat;\n\t\t\t\tstate.markProjectModified(\"codexFastMode\", \"chat\");\n\t\t\t\tprojectModified = true;\n\t\t\t}\n\t\t\tif (settings.workflow !== undefined && projectOverridesWorkflow) {\n\t\t\t\tstate.projectSettings.codexFastMode.workflow = settings.workflow;\n\t\t\t\tstate.markProjectModified(\"codexFastMode\", \"workflow\");\n\t\t\t\tprojectModified = true;\n\t\t\t}\n\t\t\tif (projectModified) {\n\t\t\t\tstate.saveProjectSettings(state.projectSettings);\n\t\t\t}\n\t\t}\n\n\t\tif (state.runtimeSettingsOverrides.codexFastMode) {\n\t\t\tstate.runtimeSettingsOverrides.codexFastMode = {\n\t\t\t\t...state.runtimeSettingsOverrides.codexFastMode,\n\t\t\t\t...(settings.chat !== undefined ? { chat: settings.chat } : {}),\n\t\t\t\t...(settings.workflow !== undefined ? { workflow: settings.workflow } : {}),\n\t\t\t};\n\t\t}\n\n\t\tstate.save();\n\t},\n};\n\nObject.assign(SettingsManager.prototype, uiAccessors);\n"]}
@@ -130,6 +130,15 @@ const uiAccessors = {
130
130
  state.markModified("editorPaddingX");
131
131
  state.save();
132
132
  },
133
+ getOutputPad() {
134
+ return settingsInternals(this).settings.outputPad === 0 ? 0 : 1;
135
+ },
136
+ setOutputPad(padding) {
137
+ const state = settingsInternals(this);
138
+ state.globalSettings.outputPad = padding;
139
+ state.markModified("outputPad");
140
+ state.save();
141
+ },
133
142
  getAutocompleteMaxVisible() {
134
143
  return settingsInternals(this).settings.autocompleteMaxVisible ?? 5;
135
144
  },
@@ -1 +1 @@
1
- {"version":3,"file":"settings-manager-ui-accessors.js","sourceRoot":"","sources":["../../src/core/settings-manager-ui-accessors.ts"],"names":[],"mappings":"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","sourcesContent":["import { ENV_CLEAR_ON_SHRINK, ENV_HARDWARE_CURSOR, getEnvValue } from \"../config.ts\";\nimport { SettingsManager } from \"./settings-manager-core.ts\";\nimport { settingsInternals } from \"./settings-manager-internals.ts\";\nimport type { WarningSettings } from \"./settings-types.ts\";\n\ninterface SettingsManagerUiAccessors {\n\tgetShowImages(): boolean;\n\tsetShowImages(show: boolean): void;\n\tgetImageWidthCells(): number;\n\tsetImageWidthCells(width: number): void;\n\tgetClearOnShrink(): boolean;\n\tsetClearOnShrink(enabled: boolean): void;\n\tgetShowTerminalProgress(): boolean;\n\tsetShowTerminalProgress(enabled: boolean): void;\n\tgetImageAutoResize(): boolean;\n\tsetImageAutoResize(enabled: boolean): void;\n\tgetBlockImages(): boolean;\n\tsetBlockImages(blocked: boolean): void;\n\tgetEnabledModels(): string[] | undefined;\n\tsetEnabledModels(patterns: string[] | undefined): void;\n\tgetDoubleEscapeAction(): \"fork\" | \"tree\" | \"none\";\n\tsetDoubleEscapeAction(action: \"fork\" | \"tree\" | \"none\"): void;\n\tgetTreeFilterMode(): \"default\" | \"no-tools\" | \"user-only\" | \"labeled-only\" | \"all\";\n\tsetTreeFilterMode(mode: \"default\" | \"no-tools\" | \"user-only\" | \"labeled-only\" | \"all\"): void;\n\tgetShowHardwareCursor(): boolean;\n\tsetShowHardwareCursor(enabled: boolean): void;\n\tgetEditorPaddingX(): number;\n\tsetEditorPaddingX(padding: number): void;\n\tgetAutocompleteMaxVisible(): number;\n\tsetAutocompleteMaxVisible(maxVisible: number): void;\n\tgetCodeBlockIndent(): string;\n\tgetWarnings(): WarningSettings;\n\tsetWarnings(warnings: WarningSettings): void;\n\tgetCodexFastModeSettings(): { chat: boolean; workflow: boolean };\n\tsetCodexFastModeSettings(settings: Partial<{ chat: boolean; workflow: boolean }>): void;\n}\n\ndeclare module \"./settings-manager-core.ts\" {\n\tinterface SettingsManager extends SettingsManagerUiAccessors {}\n}\n\nconst uiAccessors: SettingsManagerUiAccessors = {\n\tgetShowImages() {\n\t\treturn settingsInternals(this).settings.terminal?.showImages ?? true;\n\t},\n\n\tsetShowImages(show) {\n\t\tconst state = settingsInternals(this);\n\t\tif (!state.globalSettings.terminal) {\n\t\t\tstate.globalSettings.terminal = {};\n\t\t}\n\t\tstate.globalSettings.terminal.showImages = show;\n\t\tstate.markModified(\"terminal\", \"showImages\");\n\t\tstate.save();\n\t},\n\n\tgetImageWidthCells() {\n\t\tconst width = settingsInternals(this).settings.terminal?.imageWidthCells;\n\t\tif (typeof width !== \"number\" || !Number.isFinite(width)) {\n\t\t\treturn 60;\n\t\t}\n\t\treturn Math.max(1, Math.floor(width));\n\t},\n\n\tsetImageWidthCells(width) {\n\t\tconst state = settingsInternals(this);\n\t\tif (!state.globalSettings.terminal) {\n\t\t\tstate.globalSettings.terminal = {};\n\t\t}\n\t\tstate.globalSettings.terminal.imageWidthCells = Math.max(1, Math.floor(width));\n\t\tstate.markModified(\"terminal\", \"imageWidthCells\");\n\t\tstate.save();\n\t},\n\n\tgetClearOnShrink() {\n\t\t// Settings takes precedence, then env var, then default false\n\t\tconst terminal = settingsInternals(this).settings.terminal;\n\t\tif (terminal?.clearOnShrink !== undefined) {\n\t\t\treturn terminal.clearOnShrink;\n\t\t}\n\t\treturn getEnvValue(ENV_CLEAR_ON_SHRINK) === \"1\";\n\t},\n\n\tsetClearOnShrink(enabled) {\n\t\tconst state = settingsInternals(this);\n\t\tif (!state.globalSettings.terminal) {\n\t\t\tstate.globalSettings.terminal = {};\n\t\t}\n\t\tstate.globalSettings.terminal.clearOnShrink = enabled;\n\t\tstate.markModified(\"terminal\", \"clearOnShrink\");\n\t\tstate.save();\n\t},\n\n\tgetShowTerminalProgress() {\n\t\treturn settingsInternals(this).settings.terminal?.showTerminalProgress ?? false;\n\t},\n\n\tsetShowTerminalProgress(enabled) {\n\t\tconst state = settingsInternals(this);\n\t\tif (!state.globalSettings.terminal) {\n\t\t\tstate.globalSettings.terminal = {};\n\t\t}\n\t\tstate.globalSettings.terminal.showTerminalProgress = enabled;\n\t\tstate.markModified(\"terminal\", \"showTerminalProgress\");\n\t\tstate.save();\n\t},\n\n\tgetImageAutoResize() {\n\t\treturn settingsInternals(this).settings.images?.autoResize ?? true;\n\t},\n\n\tsetImageAutoResize(enabled) {\n\t\tconst state = settingsInternals(this);\n\t\tif (!state.globalSettings.images) {\n\t\t\tstate.globalSettings.images = {};\n\t\t}\n\t\tstate.globalSettings.images.autoResize = enabled;\n\t\tstate.markModified(\"images\", \"autoResize\");\n\t\tstate.save();\n\t},\n\n\tgetBlockImages() {\n\t\treturn settingsInternals(this).settings.images?.blockImages ?? false;\n\t},\n\n\tsetBlockImages(blocked) {\n\t\tconst state = settingsInternals(this);\n\t\tif (!state.globalSettings.images) {\n\t\t\tstate.globalSettings.images = {};\n\t\t}\n\t\tstate.globalSettings.images.blockImages = blocked;\n\t\tstate.markModified(\"images\", \"blockImages\");\n\t\tstate.save();\n\t},\n\n\tgetEnabledModels() {\n\t\treturn settingsInternals(this).settings.enabledModels;\n\t},\n\n\tsetEnabledModels(patterns) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.enabledModels = patterns;\n\t\tstate.markModified(\"enabledModels\");\n\t\tstate.save();\n\t},\n\n\tgetDoubleEscapeAction() {\n\t\treturn settingsInternals(this).settings.doubleEscapeAction ?? \"tree\";\n\t},\n\n\tsetDoubleEscapeAction(action) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.doubleEscapeAction = action;\n\t\tstate.markModified(\"doubleEscapeAction\");\n\t\tstate.save();\n\t},\n\n\tgetTreeFilterMode() {\n\t\tconst mode = settingsInternals(this).settings.treeFilterMode;\n\t\tconst valid = [\"default\", \"no-tools\", \"user-only\", \"labeled-only\", \"all\"];\n\t\treturn mode && valid.includes(mode) ? mode : \"default\";\n\t},\n\n\tsetTreeFilterMode(mode) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.treeFilterMode = mode;\n\t\tstate.markModified(\"treeFilterMode\");\n\t\tstate.save();\n\t},\n\n\tgetShowHardwareCursor() {\n\t\treturn settingsInternals(this).settings.showHardwareCursor ?? getEnvValue(ENV_HARDWARE_CURSOR) === \"1\";\n\t},\n\n\tsetShowHardwareCursor(enabled) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.showHardwareCursor = enabled;\n\t\tstate.markModified(\"showHardwareCursor\");\n\t\tstate.save();\n\t},\n\n\tgetEditorPaddingX() {\n\t\treturn settingsInternals(this).settings.editorPaddingX ?? 0;\n\t},\n\n\tsetEditorPaddingX(padding) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.editorPaddingX = Math.max(0, Math.min(3, Math.floor(padding)));\n\t\tstate.markModified(\"editorPaddingX\");\n\t\tstate.save();\n\t},\n\n\tgetAutocompleteMaxVisible() {\n\t\treturn settingsInternals(this).settings.autocompleteMaxVisible ?? 5;\n\t},\n\n\tsetAutocompleteMaxVisible(maxVisible) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.autocompleteMaxVisible = Math.max(3, Math.min(20, Math.floor(maxVisible)));\n\t\tstate.markModified(\"autocompleteMaxVisible\");\n\t\tstate.save();\n\t},\n\n\tgetCodeBlockIndent() {\n\t\treturn settingsInternals(this).settings.markdown?.codeBlockIndent ?? \" \";\n\t},\n\n\tgetWarnings() {\n\t\treturn { ...(settingsInternals(this).settings.warnings ?? {}) };\n\t},\n\n\tsetWarnings(warnings) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.warnings = { ...warnings };\n\t\tstate.markModified(\"warnings\");\n\t\tstate.save();\n\t},\n\n\tgetCodexFastModeSettings() {\n\t\tconst codexFastMode = settingsInternals(this).settings.codexFastMode;\n\t\treturn {\n\t\t\tchat: codexFastMode?.chat ?? false,\n\t\t\tworkflow: codexFastMode?.workflow ?? false,\n\t\t};\n\t},\n\n\tsetCodexFastModeSettings(settings) {\n\t\tif (settings.chat === undefined && settings.workflow === undefined) {\n\t\t\treturn;\n\t\t}\n\t\tconst state = settingsInternals(this);\n\t\tif (!state.globalSettings.codexFastMode) {\n\t\t\tstate.globalSettings.codexFastMode = {};\n\t\t}\n\t\tif (settings.chat !== undefined) {\n\t\t\tstate.globalSettings.codexFastMode.chat = settings.chat;\n\t\t\tstate.markModified(\"codexFastMode\", \"chat\");\n\t\t}\n\t\tif (settings.workflow !== undefined) {\n\t\t\tstate.globalSettings.codexFastMode.workflow = settings.workflow;\n\t\t\tstate.markModified(\"codexFastMode\", \"workflow\");\n\t\t}\n\n\t\tconst projectCodexFastMode = state.projectSettings.codexFastMode;\n\t\tconst projectOverridesChat = projectCodexFastMode?.chat !== undefined;\n\t\tconst projectOverridesWorkflow = projectCodexFastMode?.workflow !== undefined;\n\t\tlet projectModified = false;\n\t\tif ((settings.chat !== undefined && projectOverridesChat) || (settings.workflow !== undefined && projectOverridesWorkflow)) {\n\t\t\tstate.projectSettings.codexFastMode = { ...(projectCodexFastMode ?? {}) };\n\t\t\tif (settings.chat !== undefined && projectOverridesChat) {\n\t\t\t\tstate.projectSettings.codexFastMode.chat = settings.chat;\n\t\t\t\tstate.markProjectModified(\"codexFastMode\", \"chat\");\n\t\t\t\tprojectModified = true;\n\t\t\t}\n\t\t\tif (settings.workflow !== undefined && projectOverridesWorkflow) {\n\t\t\t\tstate.projectSettings.codexFastMode.workflow = settings.workflow;\n\t\t\t\tstate.markProjectModified(\"codexFastMode\", \"workflow\");\n\t\t\t\tprojectModified = true;\n\t\t\t}\n\t\t\tif (projectModified) {\n\t\t\t\tstate.saveProjectSettings(state.projectSettings);\n\t\t\t}\n\t\t}\n\n\t\tif (state.runtimeSettingsOverrides.codexFastMode) {\n\t\t\tstate.runtimeSettingsOverrides.codexFastMode = {\n\t\t\t\t...state.runtimeSettingsOverrides.codexFastMode,\n\t\t\t\t...(settings.chat !== undefined ? { chat: settings.chat } : {}),\n\t\t\t\t...(settings.workflow !== undefined ? { workflow: settings.workflow } : {}),\n\t\t\t};\n\t\t}\n\n\t\tstate.save();\n\t},\n};\n\nObject.assign(SettingsManager.prototype, uiAccessors);\n"]}
1
+ {"version":3,"file":"settings-manager-ui-accessors.js","sourceRoot":"","sources":["../../src/core/settings-manager-ui-accessors.ts"],"names":[],"mappings":"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","sourcesContent":["import { ENV_CLEAR_ON_SHRINK, ENV_HARDWARE_CURSOR, getEnvValue } from \"../config.ts\";\nimport { SettingsManager } from \"./settings-manager-core.ts\";\nimport { settingsInternals } from \"./settings-manager-internals.ts\";\nimport type { WarningSettings } from \"./settings-types.ts\";\n\ninterface SettingsManagerUiAccessors {\n\tgetShowImages(): boolean;\n\tsetShowImages(show: boolean): void;\n\tgetImageWidthCells(): number;\n\tsetImageWidthCells(width: number): void;\n\tgetClearOnShrink(): boolean;\n\tsetClearOnShrink(enabled: boolean): void;\n\tgetShowTerminalProgress(): boolean;\n\tsetShowTerminalProgress(enabled: boolean): void;\n\tgetImageAutoResize(): boolean;\n\tsetImageAutoResize(enabled: boolean): void;\n\tgetBlockImages(): boolean;\n\tsetBlockImages(blocked: boolean): void;\n\tgetEnabledModels(): string[] | undefined;\n\tsetEnabledModels(patterns: string[] | undefined): void;\n\tgetDoubleEscapeAction(): \"fork\" | \"tree\" | \"none\";\n\tsetDoubleEscapeAction(action: \"fork\" | \"tree\" | \"none\"): void;\n\tgetTreeFilterMode(): \"default\" | \"no-tools\" | \"user-only\" | \"labeled-only\" | \"all\";\n\tsetTreeFilterMode(mode: \"default\" | \"no-tools\" | \"user-only\" | \"labeled-only\" | \"all\"): void;\n\tgetShowHardwareCursor(): boolean;\n\tsetShowHardwareCursor(enabled: boolean): void;\n\tgetEditorPaddingX(): number;\n\tsetEditorPaddingX(padding: number): void;\n\tgetOutputPad(): 0 | 1;\n\tsetOutputPad(padding: 0 | 1): void;\n\tgetAutocompleteMaxVisible(): number;\n\tsetAutocompleteMaxVisible(maxVisible: number): void;\n\tgetCodeBlockIndent(): string;\n\tgetWarnings(): WarningSettings;\n\tsetWarnings(warnings: WarningSettings): void;\n\tgetCodexFastModeSettings(): { chat: boolean; workflow: boolean };\n\tsetCodexFastModeSettings(settings: Partial<{ chat: boolean; workflow: boolean }>): void;\n}\n\ndeclare module \"./settings-manager-core.ts\" {\n\tinterface SettingsManager extends SettingsManagerUiAccessors {}\n}\n\nconst uiAccessors: SettingsManagerUiAccessors = {\n\tgetShowImages() {\n\t\treturn settingsInternals(this).settings.terminal?.showImages ?? true;\n\t},\n\n\tsetShowImages(show) {\n\t\tconst state = settingsInternals(this);\n\t\tif (!state.globalSettings.terminal) {\n\t\t\tstate.globalSettings.terminal = {};\n\t\t}\n\t\tstate.globalSettings.terminal.showImages = show;\n\t\tstate.markModified(\"terminal\", \"showImages\");\n\t\tstate.save();\n\t},\n\n\tgetImageWidthCells() {\n\t\tconst width = settingsInternals(this).settings.terminal?.imageWidthCells;\n\t\tif (typeof width !== \"number\" || !Number.isFinite(width)) {\n\t\t\treturn 60;\n\t\t}\n\t\treturn Math.max(1, Math.floor(width));\n\t},\n\n\tsetImageWidthCells(width) {\n\t\tconst state = settingsInternals(this);\n\t\tif (!state.globalSettings.terminal) {\n\t\t\tstate.globalSettings.terminal = {};\n\t\t}\n\t\tstate.globalSettings.terminal.imageWidthCells = Math.max(1, Math.floor(width));\n\t\tstate.markModified(\"terminal\", \"imageWidthCells\");\n\t\tstate.save();\n\t},\n\n\tgetClearOnShrink() {\n\t\t// Settings takes precedence, then env var, then default false\n\t\tconst terminal = settingsInternals(this).settings.terminal;\n\t\tif (terminal?.clearOnShrink !== undefined) {\n\t\t\treturn terminal.clearOnShrink;\n\t\t}\n\t\treturn getEnvValue(ENV_CLEAR_ON_SHRINK) === \"1\";\n\t},\n\n\tsetClearOnShrink(enabled) {\n\t\tconst state = settingsInternals(this);\n\t\tif (!state.globalSettings.terminal) {\n\t\t\tstate.globalSettings.terminal = {};\n\t\t}\n\t\tstate.globalSettings.terminal.clearOnShrink = enabled;\n\t\tstate.markModified(\"terminal\", \"clearOnShrink\");\n\t\tstate.save();\n\t},\n\n\tgetShowTerminalProgress() {\n\t\treturn settingsInternals(this).settings.terminal?.showTerminalProgress ?? false;\n\t},\n\n\tsetShowTerminalProgress(enabled) {\n\t\tconst state = settingsInternals(this);\n\t\tif (!state.globalSettings.terminal) {\n\t\t\tstate.globalSettings.terminal = {};\n\t\t}\n\t\tstate.globalSettings.terminal.showTerminalProgress = enabled;\n\t\tstate.markModified(\"terminal\", \"showTerminalProgress\");\n\t\tstate.save();\n\t},\n\n\tgetImageAutoResize() {\n\t\treturn settingsInternals(this).settings.images?.autoResize ?? true;\n\t},\n\n\tsetImageAutoResize(enabled) {\n\t\tconst state = settingsInternals(this);\n\t\tif (!state.globalSettings.images) {\n\t\t\tstate.globalSettings.images = {};\n\t\t}\n\t\tstate.globalSettings.images.autoResize = enabled;\n\t\tstate.markModified(\"images\", \"autoResize\");\n\t\tstate.save();\n\t},\n\n\tgetBlockImages() {\n\t\treturn settingsInternals(this).settings.images?.blockImages ?? false;\n\t},\n\n\tsetBlockImages(blocked) {\n\t\tconst state = settingsInternals(this);\n\t\tif (!state.globalSettings.images) {\n\t\t\tstate.globalSettings.images = {};\n\t\t}\n\t\tstate.globalSettings.images.blockImages = blocked;\n\t\tstate.markModified(\"images\", \"blockImages\");\n\t\tstate.save();\n\t},\n\n\tgetEnabledModels() {\n\t\treturn settingsInternals(this).settings.enabledModels;\n\t},\n\n\tsetEnabledModels(patterns) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.enabledModels = patterns;\n\t\tstate.markModified(\"enabledModels\");\n\t\tstate.save();\n\t},\n\n\tgetDoubleEscapeAction() {\n\t\treturn settingsInternals(this).settings.doubleEscapeAction ?? \"tree\";\n\t},\n\n\tsetDoubleEscapeAction(action) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.doubleEscapeAction = action;\n\t\tstate.markModified(\"doubleEscapeAction\");\n\t\tstate.save();\n\t},\n\n\tgetTreeFilterMode() {\n\t\tconst mode = settingsInternals(this).settings.treeFilterMode;\n\t\tconst valid = [\"default\", \"no-tools\", \"user-only\", \"labeled-only\", \"all\"];\n\t\treturn mode && valid.includes(mode) ? mode : \"default\";\n\t},\n\n\tsetTreeFilterMode(mode) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.treeFilterMode = mode;\n\t\tstate.markModified(\"treeFilterMode\");\n\t\tstate.save();\n\t},\n\n\tgetShowHardwareCursor() {\n\t\treturn settingsInternals(this).settings.showHardwareCursor ?? getEnvValue(ENV_HARDWARE_CURSOR) === \"1\";\n\t},\n\n\tsetShowHardwareCursor(enabled) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.showHardwareCursor = enabled;\n\t\tstate.markModified(\"showHardwareCursor\");\n\t\tstate.save();\n\t},\n\n\tgetEditorPaddingX() {\n\t\treturn settingsInternals(this).settings.editorPaddingX ?? 0;\n\t},\n\n\tsetEditorPaddingX(padding) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.editorPaddingX = Math.max(0, Math.min(3, Math.floor(padding)));\n\t\tstate.markModified(\"editorPaddingX\");\n\t\tstate.save();\n\t},\n\n\tgetOutputPad() {\n\t\treturn settingsInternals(this).settings.outputPad === 0 ? 0 : 1;\n\t},\n\n\tsetOutputPad(padding) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.outputPad = padding;\n\t\tstate.markModified(\"outputPad\");\n\t\tstate.save();\n\t},\n\n\tgetAutocompleteMaxVisible() {\n\t\treturn settingsInternals(this).settings.autocompleteMaxVisible ?? 5;\n\t},\n\n\tsetAutocompleteMaxVisible(maxVisible) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.autocompleteMaxVisible = Math.max(3, Math.min(20, Math.floor(maxVisible)));\n\t\tstate.markModified(\"autocompleteMaxVisible\");\n\t\tstate.save();\n\t},\n\n\tgetCodeBlockIndent() {\n\t\treturn settingsInternals(this).settings.markdown?.codeBlockIndent ?? \" \";\n\t},\n\n\tgetWarnings() {\n\t\treturn { ...(settingsInternals(this).settings.warnings ?? {}) };\n\t},\n\n\tsetWarnings(warnings) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.warnings = { ...warnings };\n\t\tstate.markModified(\"warnings\");\n\t\tstate.save();\n\t},\n\n\tgetCodexFastModeSettings() {\n\t\tconst codexFastMode = settingsInternals(this).settings.codexFastMode;\n\t\treturn {\n\t\t\tchat: codexFastMode?.chat ?? false,\n\t\t\tworkflow: codexFastMode?.workflow ?? false,\n\t\t};\n\t},\n\n\tsetCodexFastModeSettings(settings) {\n\t\tif (settings.chat === undefined && settings.workflow === undefined) {\n\t\t\treturn;\n\t\t}\n\t\tconst state = settingsInternals(this);\n\t\tif (!state.globalSettings.codexFastMode) {\n\t\t\tstate.globalSettings.codexFastMode = {};\n\t\t}\n\t\tif (settings.chat !== undefined) {\n\t\t\tstate.globalSettings.codexFastMode.chat = settings.chat;\n\t\t\tstate.markModified(\"codexFastMode\", \"chat\");\n\t\t}\n\t\tif (settings.workflow !== undefined) {\n\t\t\tstate.globalSettings.codexFastMode.workflow = settings.workflow;\n\t\t\tstate.markModified(\"codexFastMode\", \"workflow\");\n\t\t}\n\n\t\tconst projectCodexFastMode = state.projectSettings.codexFastMode;\n\t\tconst projectOverridesChat = projectCodexFastMode?.chat !== undefined;\n\t\tconst projectOverridesWorkflow = projectCodexFastMode?.workflow !== undefined;\n\t\tlet projectModified = false;\n\t\tif ((settings.chat !== undefined && projectOverridesChat) || (settings.workflow !== undefined && projectOverridesWorkflow)) {\n\t\t\tstate.projectSettings.codexFastMode = { ...(projectCodexFastMode ?? {}) };\n\t\t\tif (settings.chat !== undefined && projectOverridesChat) {\n\t\t\t\tstate.projectSettings.codexFastMode.chat = settings.chat;\n\t\t\t\tstate.markProjectModified(\"codexFastMode\", \"chat\");\n\t\t\t\tprojectModified = true;\n\t\t\t}\n\t\t\tif (settings.workflow !== undefined && projectOverridesWorkflow) {\n\t\t\t\tstate.projectSettings.codexFastMode.workflow = settings.workflow;\n\t\t\t\tstate.markProjectModified(\"codexFastMode\", \"workflow\");\n\t\t\t\tprojectModified = true;\n\t\t\t}\n\t\t\tif (projectModified) {\n\t\t\t\tstate.saveProjectSettings(state.projectSettings);\n\t\t\t}\n\t\t}\n\n\t\tif (state.runtimeSettingsOverrides.codexFastMode) {\n\t\t\tstate.runtimeSettingsOverrides.codexFastMode = {\n\t\t\t\t...state.runtimeSettingsOverrides.codexFastMode,\n\t\t\t\t...(settings.chat !== undefined ? { chat: settings.chat } : {}),\n\t\t\t\t...(settings.workflow !== undefined ? { workflow: settings.workflow } : {}),\n\t\t\t};\n\t\t}\n\n\t\tstate.save();\n\t},\n};\n\nObject.assign(SettingsManager.prototype, uiAccessors);\n"]}
@@ -88,6 +88,7 @@ export interface Settings {
88
88
  branchSummary?: BranchSummarySettings;
89
89
  retry?: RetrySettings;
90
90
  hideThinkingBlock?: boolean;
91
+ externalEditor?: string;
91
92
  shellPath?: string;
92
93
  quietStartup?: boolean;
93
94
  defaultProjectTrust?: DefaultProjectTrust;
@@ -111,6 +112,7 @@ export interface Settings {
111
112
  treeFilterMode?: "default" | "no-tools" | "user-only" | "labeled-only" | "all";
112
113
  thinkingBudgets?: ThinkingBudgetsSettings;
113
114
  editorPaddingX?: number;
115
+ outputPad?: 0 | 1;
114
116
  autocompleteMaxVisible?: number;
115
117
  showHardwareCursor?: boolean;
116
118
  markdown?: MarkdownSettings;
@@ -1 +1 @@
1
- {"version":3,"file":"settings-types.d.ts","sourceRoot":"","sources":["../../src/core/settings-types.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Transport } from \"@earendil-works/pi-ai/compat\";\n\nexport interface CompactionSettings {\n\tenabled?: boolean; // default: true\n\treserveTokens?: number; // default: 16384\n\tcompression_ratio?: number; // default: 0.5 (fraction of compactable context to keep)\n\tpreserve_recent?: number; // default: 2 (recent context-eligible messages to keep)\n\tquery?: string; // default: auto-detected from session context\n}\n\nexport interface BranchSummarySettings {\n\treserveTokens?: number; // default: 16384 (tokens reserved for prompt + LLM response)\n\tskipPrompt?: boolean; // default: false - when true, skips \"Summarize branch?\" prompt and defaults to no summary\n}\n\nexport interface ProviderRetrySettings {\n\ttimeoutMs?: number; // SDK/provider request timeout in milliseconds\n\tmaxRetries?: number; // SDK/provider retry attempts\n\tmaxRetryDelayMs?: number; // default: 60000 (max server-requested delay before failing)\n}\n\nexport interface RetrySettings {\n\tenabled?: boolean; // default: true\n\tmaxRetries?: number; // default: 3\n\tbaseDelayMs?: number; // default: 2000 (exponential backoff: 2s, 4s, 8s)\n\tprovider?: ProviderRetrySettings;\n}\n\nexport interface TerminalSettings {\n\tshowImages?: boolean; // default: true (only relevant if terminal supports images)\n\timageWidthCells?: number; // default: 60 (preferred inline image width in terminal cells)\n\tclearOnShrink?: boolean; // default: false (clear empty rows when content shrinks)\n\tshowTerminalProgress?: boolean; // default: false (OSC 9;4 terminal progress indicators)\n}\n\nexport interface ImageSettings {\n\tautoResize?: boolean; // default: true (resize images to 2000x2000 max for better model compatibility)\n\tblockImages?: boolean; // default: false - when true, prevents all images from being sent to LLM providers\n}\n\nexport interface SearchSettings { contextBefore?: number; contextAfter?: number }\nexport interface ThinkingBudgetsSettings {\n\tminimal?: number;\n\tlow?: number;\n\tmedium?: number;\n\thigh?: number;\n}\n\nexport interface MarkdownSettings {\n\tcodeBlockIndent?: string; // default: \" \"\n}\n\nexport interface WarningSettings {\n\tanthropicExtraUsage?: boolean; // default: true\n}\n\nexport interface CodexFastModeSettings {\n\tchat?: boolean; // default: false\n\tworkflow?: boolean; // default: false\n}\n\nexport type DefaultProjectTrust = \"ask\" | \"always\" | \"never\";\n\nexport type TransportSetting = Transport;\n\nexport type ContextWindowSetting = number | string;\nexport type ModelContextWindowSettings = Record<string, ContextWindowSetting>;\n\n/**\n * Package source for npm/git packages.\n * - String form: load all resources from the package\n * - Object form: filter which resources to load\n */\nexport type PackageSource =\n\t| string\n\t| {\n\t\t\tsource: string;\n\t\t\textensions?: string[];\n\t\t\tskills?: string[];\n\t\t\tprompts?: string[];\n\t\t\tthemes?: string[];\n\t\t\tworkflows?: string[];\n\t };\n\nexport interface BashInterceptorSettings {\n\tenabled?: boolean; // default: false\n}\n\nexport interface Settings {\n\tlastChangelogVersion?: string;\n\tfirstRunOnboardingStartedVersion?: string;\n\tonboardedVersion?: string;\n\tdefaultProvider?: string;\n\tdefaultModel?: string;\n\tdefaultThinkingLevel?: \"off\" | \"minimal\" | \"low\" | \"medium\" | \"high\" | \"xhigh\";\n\tdefaultContextWindow?: ContextWindowSetting; // Optional global fallback; model picker writes defaultContextWindows instead.\n\tdefaultContextWindows?: ModelContextWindowSettings; // Per-model defaults keyed as \"provider/modelId\".\n\ttransport?: TransportSetting; // default: \"auto\"\n\tsteeringMode?: \"all\" | \"one-at-a-time\";\n\tfollowUpMode?: \"all\" | \"one-at-a-time\";\n\ttheme?: string;\n\tcompaction?: CompactionSettings;\n\tbranchSummary?: BranchSummarySettings;\n\tretry?: RetrySettings;\n\thideThinkingBlock?: boolean;\n\tshellPath?: string; // Custom shell path (e.g., for Cygwin users on Windows)\n\tquietStartup?: boolean;\n\tdefaultProjectTrust?: DefaultProjectTrust; // default: \"ask\"; global setting only\n\tshellCommandPrefix?: string; // Prefix prepended to every bash command (e.g., \"shopt -s expand_aliases\" for alias support)\n\tbashInterceptor?: BashInterceptorSettings; // default: disabled; when enabled, user_bash handlers can intercept bash tool execution\n\tsearch?: SearchSettings; // Context lines for search results; defaults: before=1, after=3\n\tnpmCommand?: string[]; // Command used for npm package lookup/install operations, argv-style (e.g., [\"mise\", \"exec\", \"node@20\", \"--\", \"npm\"])\n\tcollapseChangelog?: boolean; // Show condensed changelog after update (use /changelog for full)\n\tenableInstallTelemetry?: boolean; // default: true - anonymous version/update ping after changelog-detected updates\n\tpackages?: PackageSource[]; // Array of npm/git package sources (string or object with filtering)\n\textensions?: string[]; // Array of local extension file paths or directories\n\tskills?: string[]; // Array of local skill file paths or directories\n\tprompts?: string[]; // Array of local prompt template paths or directories\n\tthemes?: string[]; // Array of local theme file paths or directories\n\tworkflows?: string[]; // Array of local workflow file paths or directories\n\tenableSkillCommands?: boolean; // default: true - register skills as /skill:name commands\n\tterminal?: TerminalSettings;\n\timages?: ImageSettings;\n\tenabledModels?: string[]; // Model patterns for cycling (same format as --models CLI flag)\n\tdoubleEscapeAction?: \"fork\" | \"tree\" | \"none\"; // Action for double-escape with empty editor (default: \"tree\")\n\ttreeFilterMode?: \"default\" | \"no-tools\" | \"user-only\" | \"labeled-only\" | \"all\"; // Default filter when opening /tree\n\tthinkingBudgets?: ThinkingBudgetsSettings; // Custom token budgets for thinking levels\n\teditorPaddingX?: number; // Horizontal padding for input editor (default: 0)\n\tautocompleteMaxVisible?: number; // Max visible items in autocomplete dropdown (default: 5)\n\tshowHardwareCursor?: boolean; // Show terminal cursor while still positioning it for IME\n\tmarkdown?: MarkdownSettings;\n\twarnings?: WarningSettings;\n\tcodexFastMode?: CodexFastModeSettings; // OpenAI priority service tier toggles for chat/workflow\n\tsessionDir?: string; // Custom session storage directory (same format as --session-dir CLI flag)\n\thttpIdleTimeoutMs?: number; // HTTP header/body idle timeout in milliseconds; 0 disables it\n\twebsocketConnectTimeoutMs?: number; // WebSocket connect/open handshake timeout in milliseconds; 0 disables it\n}\n\nexport type SettingsScope = \"global\" | \"project\";\n\nexport interface SettingsManagerCreateOptions {\n\tprojectTrusted?: boolean;\n}\n\nexport interface SettingsStorage {\n\twithLock(scope: SettingsScope, fn: (current: string | undefined) => string | undefined): void;\n}\n\nexport interface SettingsError {\n\tscope: SettingsScope;\n\terror: Error;\n}\n"]}
1
+ {"version":3,"file":"settings-types.d.ts","sourceRoot":"","sources":["../../src/core/settings-types.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Transport } from \"@earendil-works/pi-ai/compat\";\n\nexport interface CompactionSettings {\n\tenabled?: boolean; // default: true\n\treserveTokens?: number; // default: 16384\n\tcompression_ratio?: number; // default: 0.5 (fraction of compactable context to keep)\n\tpreserve_recent?: number; // default: 2 (recent context-eligible messages to keep)\n\tquery?: string; // default: auto-detected from session context\n}\n\nexport interface BranchSummarySettings {\n\treserveTokens?: number; // default: 16384 (tokens reserved for prompt + LLM response)\n\tskipPrompt?: boolean; // default: false - when true, skips \"Summarize branch?\" prompt and defaults to no summary\n}\n\nexport interface ProviderRetrySettings {\n\ttimeoutMs?: number; // SDK/provider request timeout in milliseconds\n\tmaxRetries?: number; // SDK/provider retry attempts\n\tmaxRetryDelayMs?: number; // default: 60000 (max server-requested delay before failing)\n}\n\nexport interface RetrySettings {\n\tenabled?: boolean; // default: true\n\tmaxRetries?: number; // default: 3\n\tbaseDelayMs?: number; // default: 2000 (exponential backoff: 2s, 4s, 8s)\n\tprovider?: ProviderRetrySettings;\n}\n\nexport interface TerminalSettings {\n\tshowImages?: boolean; // default: true (only relevant if terminal supports images)\n\timageWidthCells?: number; // default: 60 (preferred inline image width in terminal cells)\n\tclearOnShrink?: boolean; // default: false (clear empty rows when content shrinks)\n\tshowTerminalProgress?: boolean; // default: false (OSC 9;4 terminal progress indicators)\n}\n\nexport interface ImageSettings {\n\tautoResize?: boolean; // default: true (resize images to 2000x2000 max for better model compatibility)\n\tblockImages?: boolean; // default: false - when true, prevents all images from being sent to LLM providers\n}\n\nexport interface SearchSettings { contextBefore?: number; contextAfter?: number }\nexport interface ThinkingBudgetsSettings {\n\tminimal?: number;\n\tlow?: number;\n\tmedium?: number;\n\thigh?: number;\n}\n\nexport interface MarkdownSettings {\n\tcodeBlockIndent?: string; // default: \" \"\n}\n\nexport interface WarningSettings {\n\tanthropicExtraUsage?: boolean; // default: true\n}\n\nexport interface CodexFastModeSettings {\n\tchat?: boolean; // default: false\n\tworkflow?: boolean; // default: false\n}\n\nexport type DefaultProjectTrust = \"ask\" | \"always\" | \"never\";\n\nexport type TransportSetting = Transport;\n\nexport type ContextWindowSetting = number | string;\nexport type ModelContextWindowSettings = Record<string, ContextWindowSetting>;\n\n/**\n * Package source for npm/git packages.\n * - String form: load all resources from the package\n * - Object form: filter which resources to load\n */\nexport type PackageSource =\n\t| string\n\t| {\n\t\t\tsource: string;\n\t\t\textensions?: string[];\n\t\t\tskills?: string[];\n\t\t\tprompts?: string[];\n\t\t\tthemes?: string[];\n\t\t\tworkflows?: string[];\n\t };\n\nexport interface BashInterceptorSettings {\n\tenabled?: boolean; // default: false\n}\n\nexport interface Settings {\n\tlastChangelogVersion?: string;\n\tfirstRunOnboardingStartedVersion?: string;\n\tonboardedVersion?: string;\n\tdefaultProvider?: string;\n\tdefaultModel?: string;\n\tdefaultThinkingLevel?: \"off\" | \"minimal\" | \"low\" | \"medium\" | \"high\" | \"xhigh\";\n\tdefaultContextWindow?: ContextWindowSetting; // Optional global fallback; model picker writes defaultContextWindows instead.\n\tdefaultContextWindows?: ModelContextWindowSettings; // Per-model defaults keyed as \"provider/modelId\".\n\ttransport?: TransportSetting; // default: \"auto\"\n\tsteeringMode?: \"all\" | \"one-at-a-time\";\n\tfollowUpMode?: \"all\" | \"one-at-a-time\";\n\ttheme?: string;\n\tcompaction?: CompactionSettings;\n\tbranchSummary?: BranchSummarySettings;\n\tretry?: RetrySettings;\n\thideThinkingBlock?: boolean;\n\texternalEditor?: string; // Command for Ctrl+G external editor; takes precedence over VISUAL/EDITOR\n\tshellPath?: string; // Custom shell path (e.g., for Cygwin users on Windows)\n\tquietStartup?: boolean;\n\tdefaultProjectTrust?: DefaultProjectTrust; // default: \"ask\"; global setting only\n\tshellCommandPrefix?: string; // Prefix prepended to every bash command (e.g., \"shopt -s expand_aliases\" for alias support)\n\tbashInterceptor?: BashInterceptorSettings; // default: disabled; when enabled, user_bash handlers can intercept bash tool execution\n\tsearch?: SearchSettings; // Context lines for search results; defaults: before=1, after=3\n\tnpmCommand?: string[]; // Command used for npm package lookup/install operations, argv-style (e.g., [\"mise\", \"exec\", \"node@20\", \"--\", \"npm\"])\n\tcollapseChangelog?: boolean; // Show condensed changelog after update (use /changelog for full)\n\tenableInstallTelemetry?: boolean; // default: true - anonymous version/update ping after changelog-detected updates\n\tpackages?: PackageSource[]; // Array of npm/git package sources (string or object with filtering)\n\textensions?: string[]; // Array of local extension file paths or directories\n\tskills?: string[]; // Array of local skill file paths or directories\n\tprompts?: string[]; // Array of local prompt template paths or directories\n\tthemes?: string[]; // Array of local theme file paths or directories\n\tworkflows?: string[]; // Array of local workflow file paths or directories\n\tenableSkillCommands?: boolean; // default: true - register skills as /skill:name commands\n\tterminal?: TerminalSettings;\n\timages?: ImageSettings;\n\tenabledModels?: string[]; // Model patterns for cycling (same format as --models CLI flag)\n\tdoubleEscapeAction?: \"fork\" | \"tree\" | \"none\"; // Action for double-escape with empty editor (default: \"tree\")\n\ttreeFilterMode?: \"default\" | \"no-tools\" | \"user-only\" | \"labeled-only\" | \"all\"; // Default filter when opening /tree\n\tthinkingBudgets?: ThinkingBudgetsSettings; // Custom token budgets for thinking levels\n\teditorPaddingX?: number; // Horizontal padding for input editor (default: 0)\n\toutputPad?: 0 | 1; // Horizontal padding for chat message output (default: 1)\n\tautocompleteMaxVisible?: number; // Max visible items in autocomplete dropdown (default: 5)\n\tshowHardwareCursor?: boolean; // Show terminal cursor while still positioning it for IME\n\tmarkdown?: MarkdownSettings;\n\twarnings?: WarningSettings;\n\tcodexFastMode?: CodexFastModeSettings; // OpenAI priority service tier toggles for chat/workflow\n\tsessionDir?: string; // Custom session storage directory (same format as --session-dir CLI flag)\n\thttpIdleTimeoutMs?: number; // HTTP header/body idle timeout in milliseconds; 0 disables it\n\twebsocketConnectTimeoutMs?: number; // WebSocket connect/open handshake timeout in milliseconds; 0 disables it\n}\n\nexport type SettingsScope = \"global\" | \"project\";\n\nexport interface SettingsManagerCreateOptions {\n\tprojectTrusted?: boolean;\n}\n\nexport interface SettingsStorage {\n\twithLock(scope: SettingsScope, fn: (current: string | undefined) => string | undefined): void;\n}\n\nexport interface SettingsError {\n\tscope: SettingsScope;\n\terror: Error;\n}\n"]}