@openeryc/pi-coding-agent 0.75.12 → 0.75.14

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