gsd-pi 2.34.0 → 2.35.0-dev.30eec3f

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 (500) hide show
  1. package/dist/cli.js +7 -2
  2. package/dist/resource-loader.d.ts +1 -1
  3. package/dist/resource-loader.js +13 -1
  4. package/dist/resources/extensions/async-jobs/await-tool.js +0 -2
  5. package/dist/resources/extensions/async-jobs/job-manager.js +0 -6
  6. package/dist/resources/extensions/bg-shell/output-formatter.js +1 -19
  7. package/dist/resources/extensions/bg-shell/process-manager.js +0 -4
  8. package/dist/resources/extensions/bg-shell/types.js +0 -2
  9. package/dist/resources/extensions/context7/index.js +5 -0
  10. package/dist/resources/extensions/get-secrets-from-user.js +2 -30
  11. package/dist/resources/extensions/google-search/index.js +5 -0
  12. package/dist/resources/extensions/gsd/auto-dispatch.js +43 -1
  13. package/dist/resources/extensions/gsd/auto-loop.js +10 -1
  14. package/dist/resources/extensions/gsd/auto-recovery.js +35 -0
  15. package/dist/resources/extensions/gsd/auto-start.js +35 -2
  16. package/dist/resources/extensions/gsd/auto.js +59 -4
  17. package/dist/resources/extensions/gsd/changelog.js +162 -0
  18. package/dist/resources/extensions/gsd/commands-bootstrap.js +1 -0
  19. package/dist/resources/extensions/gsd/commands-handlers.js +2 -2
  20. package/dist/resources/extensions/gsd/commands-inspect.js +10 -3
  21. package/dist/resources/extensions/gsd/commands-prefs-wizard.js +5 -1
  22. package/dist/resources/extensions/gsd/commands.js +8 -1
  23. package/dist/resources/extensions/gsd/docs/preferences-reference.md +10 -0
  24. package/dist/resources/extensions/gsd/doctor-checks.js +113 -5
  25. package/dist/resources/extensions/gsd/doctor-environment.js +26 -17
  26. package/dist/resources/extensions/gsd/doctor-proactive.js +22 -0
  27. package/dist/resources/extensions/gsd/doctor.js +36 -0
  28. package/dist/resources/extensions/gsd/files.js +11 -2
  29. package/dist/resources/extensions/gsd/gitignore.js +54 -7
  30. package/dist/resources/extensions/gsd/guided-flow.js +5 -3
  31. package/dist/resources/extensions/gsd/health-widget-core.js +96 -0
  32. package/dist/resources/extensions/gsd/health-widget.js +97 -46
  33. package/dist/resources/extensions/gsd/index.js +10 -1
  34. package/dist/resources/extensions/gsd/migrate-external.js +55 -2
  35. package/dist/resources/extensions/gsd/paths.js +74 -7
  36. package/dist/resources/extensions/gsd/post-unit-hooks.js +4 -1
  37. package/dist/resources/extensions/gsd/preferences-validation.js +54 -1
  38. package/dist/resources/extensions/gsd/preferences.js +2 -0
  39. package/dist/resources/extensions/gsd/prompts/complete-milestone.md +2 -0
  40. package/dist/resources/extensions/gsd/prompts/validate-milestone.md +2 -0
  41. package/dist/resources/extensions/gsd/roadmap-mutations.js +55 -0
  42. package/dist/resources/extensions/gsd/session-lock.js +26 -2
  43. package/dist/resources/extensions/gsd/templates/plan.md +8 -0
  44. package/dist/resources/extensions/gsd/worktree-resolver.js +12 -0
  45. package/dist/resources/extensions/mcp-client/index.js +2 -1
  46. package/dist/resources/extensions/remote-questions/remote-command.js +2 -22
  47. package/dist/resources/extensions/shared/mod.js +1 -1
  48. package/dist/resources/extensions/shared/sanitize.js +30 -0
  49. package/dist/resources/extensions/subagent/index.js +6 -14
  50. package/dist/resources/skills/create-gsd-extension/references/events-reference.md +4 -4
  51. package/package.json +2 -1
  52. package/packages/native/dist/native.d.ts +0 -2
  53. package/packages/native/dist/native.js +0 -2
  54. package/packages/native/src/native.ts +0 -3
  55. package/packages/pi-agent-core/dist/agent-loop.d.ts +14 -0
  56. package/packages/pi-agent-core/dist/agent-loop.d.ts.map +1 -1
  57. package/packages/pi-agent-core/dist/agent-loop.js +24 -27
  58. package/packages/pi-agent-core/dist/agent-loop.js.map +1 -1
  59. package/packages/pi-agent-core/dist/agent.d.ts +1 -0
  60. package/packages/pi-agent-core/dist/agent.d.ts.map +1 -1
  61. package/packages/pi-agent-core/dist/agent.js +11 -22
  62. package/packages/pi-agent-core/dist/agent.js.map +1 -1
  63. package/packages/pi-agent-core/dist/proxy.d.ts +1 -25
  64. package/packages/pi-agent-core/dist/proxy.d.ts.map +1 -1
  65. package/packages/pi-agent-core/dist/proxy.js +3 -9
  66. package/packages/pi-agent-core/dist/proxy.js.map +1 -1
  67. package/packages/pi-agent-core/src/agent-loop.ts +30 -27
  68. package/packages/pi-agent-core/src/agent.ts +12 -23
  69. package/packages/pi-agent-core/src/proxy.ts +3 -9
  70. package/packages/pi-ai/dist/api-registry.d.ts +0 -2
  71. package/packages/pi-ai/dist/api-registry.d.ts.map +1 -1
  72. package/packages/pi-ai/dist/api-registry.js +0 -10
  73. package/packages/pi-ai/dist/api-registry.js.map +1 -1
  74. package/packages/pi-ai/dist/providers/anthropic.d.ts +0 -8
  75. package/packages/pi-ai/dist/providers/anthropic.d.ts.map +1 -1
  76. package/packages/pi-ai/dist/providers/anthropic.js +1 -1
  77. package/packages/pi-ai/dist/providers/anthropic.js.map +1 -1
  78. package/packages/pi-ai/dist/providers/azure-openai-responses.d.ts.map +1 -1
  79. package/packages/pi-ai/dist/providers/azure-openai-responses.js +5 -41
  80. package/packages/pi-ai/dist/providers/azure-openai-responses.js.map +1 -1
  81. package/packages/pi-ai/dist/providers/github-copilot-headers.d.ts +0 -1
  82. package/packages/pi-ai/dist/providers/github-copilot-headers.d.ts.map +1 -1
  83. package/packages/pi-ai/dist/providers/github-copilot-headers.js +1 -1
  84. package/packages/pi-ai/dist/providers/github-copilot-headers.js.map +1 -1
  85. package/packages/pi-ai/dist/providers/google-gemini-cli.d.ts +1 -43
  86. package/packages/pi-ai/dist/providers/google-gemini-cli.d.ts.map +1 -1
  87. package/packages/pi-ai/dist/providers/google-gemini-cli.js +2 -2
  88. package/packages/pi-ai/dist/providers/google-gemini-cli.js.map +1 -1
  89. package/packages/pi-ai/dist/providers/google-shared.d.ts +0 -4
  90. package/packages/pi-ai/dist/providers/google-shared.d.ts.map +1 -1
  91. package/packages/pi-ai/dist/providers/google-shared.js +1 -1
  92. package/packages/pi-ai/dist/providers/google-shared.js.map +1 -1
  93. package/packages/pi-ai/dist/providers/openai-completions.d.ts.map +1 -1
  94. package/packages/pi-ai/dist/providers/openai-completions.js +10 -73
  95. package/packages/pi-ai/dist/providers/openai-completions.js.map +1 -1
  96. package/packages/pi-ai/dist/providers/openai-responses.d.ts.map +1 -1
  97. package/packages/pi-ai/dist/providers/openai-responses.js +9 -80
  98. package/packages/pi-ai/dist/providers/openai-responses.js.map +1 -1
  99. package/packages/pi-ai/dist/providers/openai-shared.d.ts +65 -0
  100. package/packages/pi-ai/dist/providers/openai-shared.d.ts.map +1 -0
  101. package/packages/pi-ai/dist/providers/openai-shared.js +146 -0
  102. package/packages/pi-ai/dist/providers/openai-shared.js.map +1 -0
  103. package/packages/pi-ai/dist/providers/register-builtins.d.ts +0 -1
  104. package/packages/pi-ai/dist/providers/register-builtins.d.ts.map +1 -1
  105. package/packages/pi-ai/dist/providers/register-builtins.js +1 -1
  106. package/packages/pi-ai/dist/providers/register-builtins.js.map +1 -1
  107. package/packages/pi-ai/dist/utils/event-stream.d.ts +0 -2
  108. package/packages/pi-ai/dist/utils/event-stream.d.ts.map +1 -1
  109. package/packages/pi-ai/dist/utils/event-stream.js +0 -4
  110. package/packages/pi-ai/dist/utils/event-stream.js.map +1 -1
  111. package/packages/pi-ai/dist/utils/oauth/google-antigravity.d.ts.map +1 -1
  112. package/packages/pi-ai/dist/utils/oauth/google-antigravity.js +7 -135
  113. package/packages/pi-ai/dist/utils/oauth/google-antigravity.js.map +1 -1
  114. package/packages/pi-ai/dist/utils/oauth/google-gemini-cli.d.ts.map +1 -1
  115. package/packages/pi-ai/dist/utils/oauth/google-gemini-cli.js +7 -135
  116. package/packages/pi-ai/dist/utils/oauth/google-gemini-cli.js.map +1 -1
  117. package/packages/pi-ai/dist/utils/oauth/google-oauth-utils.d.ts +46 -0
  118. package/packages/pi-ai/dist/utils/oauth/google-oauth-utils.d.ts.map +1 -0
  119. package/packages/pi-ai/dist/utils/oauth/google-oauth-utils.js +160 -0
  120. package/packages/pi-ai/dist/utils/oauth/google-oauth-utils.js.map +1 -0
  121. package/packages/pi-ai/dist/utils/overflow.d.ts +0 -4
  122. package/packages/pi-ai/dist/utils/overflow.d.ts.map +1 -1
  123. package/packages/pi-ai/dist/utils/overflow.js +0 -6
  124. package/packages/pi-ai/dist/utils/overflow.js.map +1 -1
  125. package/packages/pi-ai/dist/utils/validation.d.ts +0 -8
  126. package/packages/pi-ai/dist/utils/validation.d.ts.map +1 -1
  127. package/packages/pi-ai/dist/utils/validation.js +0 -14
  128. package/packages/pi-ai/dist/utils/validation.js.map +1 -1
  129. package/packages/pi-ai/src/api-registry.ts +0 -12
  130. package/packages/pi-ai/src/providers/anthropic.ts +1 -1
  131. package/packages/pi-ai/src/providers/azure-openai-responses.ts +11 -45
  132. package/packages/pi-ai/src/providers/github-copilot-headers.ts +1 -1
  133. package/packages/pi-ai/src/providers/google-gemini-cli.ts +2 -2
  134. package/packages/pi-ai/src/providers/google-shared.ts +1 -1
  135. package/packages/pi-ai/src/providers/openai-completions.ts +16 -86
  136. package/packages/pi-ai/src/providers/openai-responses.ts +16 -96
  137. package/packages/pi-ai/src/providers/openai-shared.ts +193 -0
  138. package/packages/pi-ai/src/providers/register-builtins.ts +1 -1
  139. package/packages/pi-ai/src/utils/event-stream.ts +0 -5
  140. package/packages/pi-ai/src/utils/oauth/google-antigravity.ts +14 -162
  141. package/packages/pi-ai/src/utils/oauth/google-gemini-cli.ts +13 -161
  142. package/packages/pi-ai/src/utils/oauth/google-oauth-utils.ts +201 -0
  143. package/packages/pi-ai/src/utils/overflow.ts +1 -8
  144. package/packages/pi-ai/src/utils/validation.ts +0 -15
  145. package/packages/pi-coding-agent/dist/config.d.ts +0 -9
  146. package/packages/pi-coding-agent/dist/config.d.ts.map +1 -1
  147. package/packages/pi-coding-agent/dist/config.js +4 -8
  148. package/packages/pi-coding-agent/dist/config.js.map +1 -1
  149. package/packages/pi-coding-agent/dist/core/agent-session.d.ts +16 -63
  150. package/packages/pi-coding-agent/dist/core/agent-session.d.ts.map +1 -1
  151. package/packages/pi-coding-agent/dist/core/agent-session.js +104 -641
  152. package/packages/pi-coding-agent/dist/core/agent-session.js.map +1 -1
  153. package/packages/pi-coding-agent/dist/core/auth-storage.d.ts +0 -1
  154. package/packages/pi-coding-agent/dist/core/auth-storage.d.ts.map +1 -1
  155. package/packages/pi-coding-agent/dist/core/auth-storage.js +4 -35
  156. package/packages/pi-coding-agent/dist/core/auth-storage.js.map +1 -1
  157. package/packages/pi-coding-agent/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  158. package/packages/pi-coding-agent/dist/core/compaction/branch-summarization.js +5 -43
  159. package/packages/pi-coding-agent/dist/core/compaction/branch-summarization.js.map +1 -1
  160. package/packages/pi-coding-agent/dist/core/compaction/compaction.d.ts.map +1 -1
  161. package/packages/pi-coding-agent/dist/core/compaction/compaction.js +11 -69
  162. package/packages/pi-coding-agent/dist/core/compaction/compaction.js.map +1 -1
  163. package/packages/pi-coding-agent/dist/core/compaction/utils.d.ts +40 -0
  164. package/packages/pi-coding-agent/dist/core/compaction/utils.d.ts.map +1 -1
  165. package/packages/pi-coding-agent/dist/core/compaction/utils.js +78 -0
  166. package/packages/pi-coding-agent/dist/core/compaction/utils.js.map +1 -1
  167. package/packages/pi-coding-agent/dist/core/compaction-orchestrator.d.ts +77 -0
  168. package/packages/pi-coding-agent/dist/core/compaction-orchestrator.d.ts.map +1 -0
  169. package/packages/pi-coding-agent/dist/core/compaction-orchestrator.js +331 -0
  170. package/packages/pi-coding-agent/dist/core/compaction-orchestrator.js.map +1 -0
  171. package/packages/pi-coding-agent/dist/core/export-html/ansi-to-html.d.ts +0 -4
  172. package/packages/pi-coding-agent/dist/core/export-html/ansi-to-html.d.ts.map +1 -1
  173. package/packages/pi-coding-agent/dist/core/export-html/ansi-to-html.js +1 -1
  174. package/packages/pi-coding-agent/dist/core/export-html/ansi-to-html.js.map +1 -1
  175. package/packages/pi-coding-agent/dist/core/extensions/index.d.ts +2 -2
  176. package/packages/pi-coding-agent/dist/core/extensions/index.d.ts.map +1 -1
  177. package/packages/pi-coding-agent/dist/core/extensions/index.js +1 -1
  178. package/packages/pi-coding-agent/dist/core/extensions/index.js.map +1 -1
  179. package/packages/pi-coding-agent/dist/core/extensions/runner.d.ts +15 -5
  180. package/packages/pi-coding-agent/dist/core/extensions/runner.d.ts.map +1 -1
  181. package/packages/pi-coding-agent/dist/core/extensions/runner.js +129 -256
  182. package/packages/pi-coding-agent/dist/core/extensions/runner.js.map +1 -1
  183. package/packages/pi-coding-agent/dist/core/extensions/types.d.ts +49 -42
  184. package/packages/pi-coding-agent/dist/core/extensions/types.d.ts.map +1 -1
  185. package/packages/pi-coding-agent/dist/core/extensions/types.js +2 -21
  186. package/packages/pi-coding-agent/dist/core/extensions/types.js.map +1 -1
  187. package/packages/pi-coding-agent/dist/core/keybindings.d.ts +0 -8
  188. package/packages/pi-coding-agent/dist/core/keybindings.d.ts.map +1 -1
  189. package/packages/pi-coding-agent/dist/core/keybindings.js +2 -2
  190. package/packages/pi-coding-agent/dist/core/keybindings.js.map +1 -1
  191. package/packages/pi-coding-agent/dist/core/lock-utils.d.ts +39 -0
  192. package/packages/pi-coding-agent/dist/core/lock-utils.d.ts.map +1 -0
  193. package/packages/pi-coding-agent/dist/core/lock-utils.js +89 -0
  194. package/packages/pi-coding-agent/dist/core/lock-utils.js.map +1 -0
  195. package/packages/pi-coding-agent/dist/core/lsp/client.d.ts +0 -17
  196. package/packages/pi-coding-agent/dist/core/lsp/client.d.ts.map +1 -1
  197. package/packages/pi-coding-agent/dist/core/lsp/client.js +3 -62
  198. package/packages/pi-coding-agent/dist/core/lsp/client.js.map +1 -1
  199. package/packages/pi-coding-agent/dist/core/lsp/config.d.ts +1 -1
  200. package/packages/pi-coding-agent/dist/core/lsp/config.d.ts.map +1 -1
  201. package/packages/pi-coding-agent/dist/core/lsp/config.js +2 -6
  202. package/packages/pi-coding-agent/dist/core/lsp/config.js.map +1 -1
  203. package/packages/pi-coding-agent/dist/core/lsp/edits.d.ts +0 -5
  204. package/packages/pi-coding-agent/dist/core/lsp/edits.d.ts.map +1 -1
  205. package/packages/pi-coding-agent/dist/core/lsp/edits.js +1 -1
  206. package/packages/pi-coding-agent/dist/core/lsp/edits.js.map +1 -1
  207. package/packages/pi-coding-agent/dist/core/lsp/index.d.ts.map +1 -1
  208. package/packages/pi-coding-agent/dist/core/lsp/index.js +52 -107
  209. package/packages/pi-coding-agent/dist/core/lsp/index.js.map +1 -1
  210. package/packages/pi-coding-agent/dist/core/lsp/lspmux.d.ts +0 -1
  211. package/packages/pi-coding-agent/dist/core/lsp/lspmux.d.ts.map +1 -1
  212. package/packages/pi-coding-agent/dist/core/lsp/lspmux.js +3 -22
  213. package/packages/pi-coding-agent/dist/core/lsp/lspmux.js.map +1 -1
  214. package/packages/pi-coding-agent/dist/core/lsp/types.d.ts +0 -1
  215. package/packages/pi-coding-agent/dist/core/lsp/types.d.ts.map +1 -1
  216. package/packages/pi-coding-agent/dist/core/lsp/types.js +0 -28
  217. package/packages/pi-coding-agent/dist/core/lsp/types.js.map +1 -1
  218. package/packages/pi-coding-agent/dist/core/lsp/utils.d.ts +1 -6
  219. package/packages/pi-coding-agent/dist/core/lsp/utils.d.ts.map +1 -1
  220. package/packages/pi-coding-agent/dist/core/lsp/utils.js +1 -28
  221. package/packages/pi-coding-agent/dist/core/lsp/utils.js.map +1 -1
  222. package/packages/pi-coding-agent/dist/core/messages.d.ts +0 -8
  223. package/packages/pi-coding-agent/dist/core/messages.d.ts.map +1 -1
  224. package/packages/pi-coding-agent/dist/core/messages.js +5 -5
  225. package/packages/pi-coding-agent/dist/core/messages.js.map +1 -1
  226. package/packages/pi-coding-agent/dist/core/model-registry.d.ts +0 -3
  227. package/packages/pi-coding-agent/dist/core/model-registry.d.ts.map +1 -1
  228. package/packages/pi-coding-agent/dist/core/model-registry.js +1 -3
  229. package/packages/pi-coding-agent/dist/core/model-registry.js.map +1 -1
  230. package/packages/pi-coding-agent/dist/core/model-resolver.d.ts +1 -26
  231. package/packages/pi-coding-agent/dist/core/model-resolver.d.ts.map +1 -1
  232. package/packages/pi-coding-agent/dist/core/model-resolver.js +3 -59
  233. package/packages/pi-coding-agent/dist/core/model-resolver.js.map +1 -1
  234. package/packages/pi-coding-agent/dist/core/package-manager.d.ts.map +1 -1
  235. package/packages/pi-coding-agent/dist/core/package-manager.js +2 -4
  236. package/packages/pi-coding-agent/dist/core/package-manager.js.map +1 -1
  237. package/packages/pi-coding-agent/dist/core/prompt-templates.d.ts +0 -17
  238. package/packages/pi-coding-agent/dist/core/prompt-templates.d.ts.map +1 -1
  239. package/packages/pi-coding-agent/dist/core/prompt-templates.js +2 -2
  240. package/packages/pi-coding-agent/dist/core/prompt-templates.js.map +1 -1
  241. package/packages/pi-coding-agent/dist/core/resource-loader.d.ts +2 -4
  242. package/packages/pi-coding-agent/dist/core/resource-loader.d.ts.map +1 -1
  243. package/packages/pi-coding-agent/dist/core/resource-loader.js +46 -60
  244. package/packages/pi-coding-agent/dist/core/resource-loader.js.map +1 -1
  245. package/packages/pi-coding-agent/dist/core/retry-handler.d.ts +87 -0
  246. package/packages/pi-coding-agent/dist/core/retry-handler.d.ts.map +1 -0
  247. package/packages/pi-coding-agent/dist/core/retry-handler.js +295 -0
  248. package/packages/pi-coding-agent/dist/core/retry-handler.js.map +1 -0
  249. package/packages/pi-coding-agent/dist/core/session-manager.d.ts +0 -5
  250. package/packages/pi-coding-agent/dist/core/session-manager.d.ts.map +1 -1
  251. package/packages/pi-coding-agent/dist/core/session-manager.js +5 -32
  252. package/packages/pi-coding-agent/dist/core/session-manager.js.map +1 -1
  253. package/packages/pi-coding-agent/dist/core/settings-manager.d.ts +8 -12
  254. package/packages/pi-coding-agent/dist/core/settings-manager.d.ts.map +1 -1
  255. package/packages/pi-coding-agent/dist/core/settings-manager.js +78 -168
  256. package/packages/pi-coding-agent/dist/core/settings-manager.js.map +1 -1
  257. package/packages/pi-coding-agent/dist/core/skills.d.ts.map +1 -1
  258. package/packages/pi-coding-agent/dist/core/skills.js +1 -3
  259. package/packages/pi-coding-agent/dist/core/skills.js.map +1 -1
  260. package/packages/pi-coding-agent/dist/index.d.ts +1 -1
  261. package/packages/pi-coding-agent/dist/index.d.ts.map +1 -1
  262. package/packages/pi-coding-agent/dist/index.js +1 -1
  263. package/packages/pi-coding-agent/dist/index.js.map +1 -1
  264. package/packages/pi-coding-agent/dist/migrations.d.ts +0 -16
  265. package/packages/pi-coding-agent/dist/migrations.d.ts.map +1 -1
  266. package/packages/pi-coding-agent/dist/migrations.js +2 -2
  267. package/packages/pi-coding-agent/dist/migrations.js.map +1 -1
  268. package/packages/pi-coding-agent/dist/modes/interactive/components/session-selector-search.d.ts +0 -2
  269. package/packages/pi-coding-agent/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -1
  270. package/packages/pi-coding-agent/dist/modes/interactive/components/session-selector-search.js +2 -2
  271. package/packages/pi-coding-agent/dist/modes/interactive/components/session-selector-search.js.map +1 -1
  272. package/packages/pi-coding-agent/dist/modes/interactive/components/session-selector.d.ts +1 -1
  273. package/packages/pi-coding-agent/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  274. package/packages/pi-coding-agent/dist/modes/interactive/components/session-selector.js +9 -26
  275. package/packages/pi-coding-agent/dist/modes/interactive/components/session-selector.js.map +1 -1
  276. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  277. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js +1 -13
  278. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js.map +1 -1
  279. package/packages/pi-coding-agent/dist/modes/interactive/components/tree-render-utils.d.ts +44 -0
  280. package/packages/pi-coding-agent/dist/modes/interactive/components/tree-render-utils.d.ts.map +1 -0
  281. package/packages/pi-coding-agent/dist/modes/interactive/components/tree-render-utils.js +61 -0
  282. package/packages/pi-coding-agent/dist/modes/interactive/components/tree-render-utils.js.map +1 -0
  283. package/packages/pi-coding-agent/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
  284. package/packages/pi-coding-agent/dist/modes/interactive/components/tree-selector.js +6 -9
  285. package/packages/pi-coding-agent/dist/modes/interactive/components/tree-selector.js.map +1 -1
  286. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts +1 -24
  287. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  288. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js +50 -512
  289. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
  290. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.d.ts +71 -0
  291. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.d.ts.map +1 -0
  292. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.js +514 -0
  293. package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.js.map +1 -0
  294. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.d.ts +65 -4
  295. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  296. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.js +6 -23
  297. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.js.map +1 -1
  298. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.d.ts +12 -0
  299. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.d.ts.map +1 -0
  300. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.js +175 -0
  301. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.js.map +1 -0
  302. package/packages/pi-coding-agent/dist/modes/interactive/utils/shorten-path.d.ts +6 -0
  303. package/packages/pi-coding-agent/dist/modes/interactive/utils/shorten-path.d.ts.map +1 -0
  304. package/packages/pi-coding-agent/dist/modes/interactive/utils/shorten-path.js +15 -0
  305. package/packages/pi-coding-agent/dist/modes/interactive/utils/shorten-path.js.map +1 -0
  306. package/packages/pi-coding-agent/dist/modes/print-mode.d.ts.map +1 -1
  307. package/packages/pi-coding-agent/dist/modes/print-mode.js +2 -30
  308. package/packages/pi-coding-agent/dist/modes/print-mode.js.map +1 -1
  309. package/packages/pi-coding-agent/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  310. package/packages/pi-coding-agent/dist/modes/rpc/rpc-mode.js +2 -28
  311. package/packages/pi-coding-agent/dist/modes/rpc/rpc-mode.js.map +1 -1
  312. package/packages/pi-coding-agent/dist/modes/shared/command-context-actions.d.ts +19 -0
  313. package/packages/pi-coding-agent/dist/modes/shared/command-context-actions.d.ts.map +1 -0
  314. package/packages/pi-coding-agent/dist/modes/shared/command-context-actions.js +45 -0
  315. package/packages/pi-coding-agent/dist/modes/shared/command-context-actions.js.map +1 -0
  316. package/packages/pi-coding-agent/dist/utils/changelog.d.ts +0 -4
  317. package/packages/pi-coding-agent/dist/utils/changelog.d.ts.map +1 -1
  318. package/packages/pi-coding-agent/dist/utils/changelog.js +1 -1
  319. package/packages/pi-coding-agent/dist/utils/changelog.js.map +1 -1
  320. package/packages/pi-coding-agent/dist/utils/clipboard-image.d.ts +0 -1
  321. package/packages/pi-coding-agent/dist/utils/clipboard-image.d.ts.map +1 -1
  322. package/packages/pi-coding-agent/dist/utils/clipboard-image.js +1 -1
  323. package/packages/pi-coding-agent/dist/utils/clipboard-image.js.map +1 -1
  324. package/packages/pi-coding-agent/dist/utils/error.d.ts +5 -0
  325. package/packages/pi-coding-agent/dist/utils/error.d.ts.map +1 -0
  326. package/packages/pi-coding-agent/dist/utils/error.js +7 -0
  327. package/packages/pi-coding-agent/dist/utils/error.js.map +1 -0
  328. package/packages/pi-coding-agent/dist/utils/photon.d.ts +0 -19
  329. package/packages/pi-coding-agent/dist/utils/photon.d.ts.map +1 -1
  330. package/packages/pi-coding-agent/dist/utils/photon.js +1 -120
  331. package/packages/pi-coding-agent/dist/utils/photon.js.map +1 -1
  332. package/packages/pi-coding-agent/dist/utils/tools-manager.d.ts +0 -1
  333. package/packages/pi-coding-agent/dist/utils/tools-manager.d.ts.map +1 -1
  334. package/packages/pi-coding-agent/dist/utils/tools-manager.js +1 -1
  335. package/packages/pi-coding-agent/dist/utils/tools-manager.js.map +1 -1
  336. package/packages/pi-coding-agent/package.json +1 -1
  337. package/packages/pi-coding-agent/src/config.ts +5 -10
  338. package/packages/pi-coding-agent/src/core/agent-session.ts +117 -745
  339. package/packages/pi-coding-agent/src/core/auth-storage.ts +4 -38
  340. package/packages/pi-coding-agent/src/core/compaction/branch-summarization.ts +7 -53
  341. package/packages/pi-coding-agent/src/core/compaction/compaction.ts +14 -74
  342. package/packages/pi-coding-agent/src/core/compaction/utils.ts +100 -0
  343. package/packages/pi-coding-agent/src/core/compaction-orchestrator.ts +424 -0
  344. package/packages/pi-coding-agent/src/core/export-html/ansi-to-html.ts +1 -1
  345. package/packages/pi-coding-agent/src/core/extensions/index.ts +1 -21
  346. package/packages/pi-coding-agent/src/core/extensions/runner.ts +119 -256
  347. package/packages/pi-coding-agent/src/core/extensions/types.ts +50 -69
  348. package/packages/pi-coding-agent/src/core/keybindings.ts +2 -2
  349. package/packages/pi-coding-agent/src/core/lock-utils.ts +113 -0
  350. package/packages/pi-coding-agent/src/core/lsp/client.ts +3 -73
  351. package/packages/pi-coding-agent/src/core/lsp/config.ts +2 -10
  352. package/packages/pi-coding-agent/src/core/lsp/edits.ts +1 -1
  353. package/packages/pi-coding-agent/src/core/lsp/index.ts +83 -152
  354. package/packages/pi-coding-agent/src/core/lsp/lspmux.ts +3 -23
  355. package/packages/pi-coding-agent/src/core/lsp/types.ts +0 -29
  356. package/packages/pi-coding-agent/src/core/lsp/utils.ts +1 -33
  357. package/packages/pi-coding-agent/src/core/messages.ts +5 -5
  358. package/packages/pi-coding-agent/src/core/model-registry.ts +0 -2
  359. package/packages/pi-coding-agent/src/core/model-resolver.ts +3 -77
  360. package/packages/pi-coding-agent/src/core/package-manager.ts +1 -4
  361. package/packages/pi-coding-agent/src/core/prompt-templates.ts +2 -2
  362. package/packages/pi-coding-agent/src/core/resource-loader.ts +56 -69
  363. package/packages/pi-coding-agent/src/core/retry-handler.ts +359 -0
  364. package/packages/pi-coding-agent/src/core/session-manager.ts +5 -34
  365. package/packages/pi-coding-agent/src/core/settings-manager.ts +87 -166
  366. package/packages/pi-coding-agent/src/core/skills.ts +1 -4
  367. package/packages/pi-coding-agent/src/index.ts +1 -7
  368. package/packages/pi-coding-agent/src/migrations.ts +2 -2
  369. package/packages/pi-coding-agent/src/modes/interactive/components/session-selector-search.ts +2 -2
  370. package/packages/pi-coding-agent/src/modes/interactive/components/session-selector.ts +17 -29
  371. package/packages/pi-coding-agent/src/modes/interactive/components/tool-execution.ts +1 -13
  372. package/packages/pi-coding-agent/src/modes/interactive/components/tree-render-utils.ts +81 -0
  373. package/packages/pi-coding-agent/src/modes/interactive/components/tree-selector.ts +14 -19
  374. package/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts +50 -561
  375. package/packages/pi-coding-agent/src/modes/interactive/slash-command-handlers.ts +653 -0
  376. package/packages/pi-coding-agent/src/modes/interactive/theme/theme.ts +7 -26
  377. package/packages/pi-coding-agent/src/modes/interactive/theme/themes.ts +196 -0
  378. package/packages/pi-coding-agent/src/modes/interactive/utils/shorten-path.ts +14 -0
  379. package/packages/pi-coding-agent/src/modes/print-mode.ts +2 -30
  380. package/packages/pi-coding-agent/src/modes/rpc/rpc-mode.ts +2 -28
  381. package/packages/pi-coding-agent/src/modes/shared/command-context-actions.ts +53 -0
  382. package/packages/pi-coding-agent/src/utils/changelog.ts +1 -1
  383. package/packages/pi-coding-agent/src/utils/clipboard-image.ts +1 -1
  384. package/packages/pi-coding-agent/src/utils/error.ts +6 -0
  385. package/packages/pi-coding-agent/src/utils/photon.ts +0 -137
  386. package/packages/pi-coding-agent/src/utils/tools-manager.ts +1 -1
  387. package/packages/pi-tui/dist/components/editor.d.ts +0 -10
  388. package/packages/pi-tui/dist/components/editor.d.ts.map +1 -1
  389. package/packages/pi-tui/dist/components/editor.js +1 -1
  390. package/packages/pi-tui/dist/components/editor.js.map +1 -1
  391. package/packages/pi-tui/dist/components/markdown.d.ts +5 -0
  392. package/packages/pi-tui/dist/components/markdown.d.ts.map +1 -1
  393. package/packages/pi-tui/dist/components/markdown.js +25 -31
  394. package/packages/pi-tui/dist/components/markdown.js.map +1 -1
  395. package/packages/pi-tui/dist/keys.d.ts +0 -4
  396. package/packages/pi-tui/dist/keys.d.ts.map +1 -1
  397. package/packages/pi-tui/dist/keys.js +94 -162
  398. package/packages/pi-tui/dist/keys.js.map +1 -1
  399. package/packages/pi-tui/dist/overlay-layout.d.ts +55 -0
  400. package/packages/pi-tui/dist/overlay-layout.d.ts.map +1 -0
  401. package/packages/pi-tui/dist/overlay-layout.js +288 -0
  402. package/packages/pi-tui/dist/overlay-layout.js.map +1 -0
  403. package/packages/pi-tui/dist/tui.d.ts +0 -22
  404. package/packages/pi-tui/dist/tui.d.ts.map +1 -1
  405. package/packages/pi-tui/dist/tui.js +6 -272
  406. package/packages/pi-tui/dist/tui.js.map +1 -1
  407. package/packages/pi-tui/dist/utils.d.ts +0 -7
  408. package/packages/pi-tui/dist/utils.d.ts.map +1 -1
  409. package/packages/pi-tui/dist/utils.js +0 -44
  410. package/packages/pi-tui/dist/utils.js.map +1 -1
  411. package/packages/pi-tui/src/components/editor.ts +1 -1
  412. package/packages/pi-tui/src/components/markdown.ts +25 -29
  413. package/packages/pi-tui/src/keys.ts +94 -173
  414. package/packages/pi-tui/src/overlay-layout.ts +372 -0
  415. package/packages/pi-tui/src/tui.ts +11 -312
  416. package/packages/pi-tui/src/utils.ts +0 -43
  417. package/pkg/dist/core/export-html/ansi-to-html.d.ts +0 -4
  418. package/pkg/dist/core/export-html/ansi-to-html.d.ts.map +1 -1
  419. package/pkg/dist/core/export-html/ansi-to-html.js +1 -1
  420. package/pkg/dist/core/export-html/ansi-to-html.js.map +1 -1
  421. package/pkg/dist/modes/interactive/theme/theme.d.ts +65 -4
  422. package/pkg/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  423. package/pkg/dist/modes/interactive/theme/theme.js +6 -23
  424. package/pkg/dist/modes/interactive/theme/theme.js.map +1 -1
  425. package/pkg/dist/modes/interactive/theme/themes.d.ts +12 -0
  426. package/pkg/dist/modes/interactive/theme/themes.d.ts.map +1 -0
  427. package/pkg/dist/modes/interactive/theme/themes.js +175 -0
  428. package/pkg/dist/modes/interactive/theme/themes.js.map +1 -0
  429. package/pkg/package.json +1 -1
  430. package/src/resources/extensions/async-jobs/await-tool.ts +0 -2
  431. package/src/resources/extensions/async-jobs/job-manager.ts +0 -7
  432. package/src/resources/extensions/bg-shell/output-formatter.ts +0 -17
  433. package/src/resources/extensions/bg-shell/process-manager.ts +0 -4
  434. package/src/resources/extensions/bg-shell/types.ts +0 -12
  435. package/src/resources/extensions/context7/index.ts +7 -0
  436. package/src/resources/extensions/get-secrets-from-user.ts +2 -35
  437. package/src/resources/extensions/google-search/index.ts +7 -0
  438. package/src/resources/extensions/gsd/auto-dispatch.ts +49 -1
  439. package/src/resources/extensions/gsd/auto-loop.ts +11 -1
  440. package/src/resources/extensions/gsd/auto-recovery.ts +39 -0
  441. package/src/resources/extensions/gsd/auto-start.ts +42 -2
  442. package/src/resources/extensions/gsd/auto.ts +61 -3
  443. package/src/resources/extensions/gsd/changelog.ts +213 -0
  444. package/src/resources/extensions/gsd/commands-bootstrap.ts +1 -0
  445. package/src/resources/extensions/gsd/commands-handlers.ts +2 -2
  446. package/src/resources/extensions/gsd/commands-inspect.ts +10 -3
  447. package/src/resources/extensions/gsd/commands-prefs-wizard.ts +5 -1
  448. package/src/resources/extensions/gsd/commands.ts +9 -1
  449. package/src/resources/extensions/gsd/docs/preferences-reference.md +10 -0
  450. package/src/resources/extensions/gsd/doctor-checks.ts +107 -5
  451. package/src/resources/extensions/gsd/doctor-environment.ts +26 -16
  452. package/src/resources/extensions/gsd/doctor-proactive.ts +24 -0
  453. package/src/resources/extensions/gsd/doctor-types.ts +9 -1
  454. package/src/resources/extensions/gsd/doctor.ts +35 -0
  455. package/src/resources/extensions/gsd/files.ts +12 -2
  456. package/src/resources/extensions/gsd/gitignore.ts +54 -7
  457. package/src/resources/extensions/gsd/guided-flow.ts +5 -3
  458. package/src/resources/extensions/gsd/health-widget-core.ts +129 -0
  459. package/src/resources/extensions/gsd/health-widget.ts +103 -59
  460. package/src/resources/extensions/gsd/index.ts +10 -1
  461. package/src/resources/extensions/gsd/migrate-external.ts +47 -2
  462. package/src/resources/extensions/gsd/paths.ts +73 -7
  463. package/src/resources/extensions/gsd/post-unit-hooks.ts +5 -1
  464. package/src/resources/extensions/gsd/preferences-validation.ts +54 -1
  465. package/src/resources/extensions/gsd/preferences.ts +2 -0
  466. package/src/resources/extensions/gsd/prompts/complete-milestone.md +2 -0
  467. package/src/resources/extensions/gsd/prompts/validate-milestone.md +2 -0
  468. package/src/resources/extensions/gsd/roadmap-mutations.ts +66 -0
  469. package/src/resources/extensions/gsd/session-lock.ts +29 -2
  470. package/src/resources/extensions/gsd/templates/plan.md +8 -0
  471. package/src/resources/extensions/gsd/tests/commands-inspect-open-db.test.ts +46 -0
  472. package/src/resources/extensions/gsd/tests/doctor-git.test.ts +98 -2
  473. package/src/resources/extensions/gsd/tests/doctor-runtime.test.ts +59 -3
  474. package/src/resources/extensions/gsd/tests/files-loadfile-eisdir.test.ts +20 -0
  475. package/src/resources/extensions/gsd/tests/gitignore-tracked-gsd.test.ts +214 -0
  476. package/src/resources/extensions/gsd/tests/health-widget.test.ts +158 -0
  477. package/src/resources/extensions/gsd/tests/paths.test.ts +113 -0
  478. package/src/resources/extensions/gsd/tests/preferences.test.ts +40 -2
  479. package/src/resources/extensions/gsd/tests/test-utils.ts +165 -0
  480. package/src/resources/extensions/gsd/tests/validate-directory.test.ts +15 -0
  481. package/src/resources/extensions/gsd/tests/validate-milestone.test.ts +2 -0
  482. package/src/resources/extensions/gsd/tests/worktree-sync-milestones.test.ts +32 -0
  483. package/src/resources/extensions/gsd/worktree-resolver.ts +11 -0
  484. package/src/resources/extensions/mcp-client/index.ts +2 -1
  485. package/src/resources/extensions/remote-questions/remote-command.ts +2 -23
  486. package/src/resources/extensions/shared/mod.ts +1 -1
  487. package/src/resources/extensions/shared/sanitize.ts +36 -0
  488. package/src/resources/extensions/subagent/index.ts +6 -12
  489. package/src/resources/skills/create-gsd-extension/references/events-reference.md +4 -4
  490. package/dist/resources/extensions/shared/wizard-ui.js +0 -478
  491. package/packages/pi-coding-agent/dist/modes/interactive/theme/dark.json +0 -85
  492. package/packages/pi-coding-agent/dist/modes/interactive/theme/light.json +0 -84
  493. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.json +0 -335
  494. package/packages/pi-coding-agent/src/modes/interactive/theme/dark.json +0 -85
  495. package/packages/pi-coding-agent/src/modes/interactive/theme/light.json +0 -84
  496. package/packages/pi-coding-agent/src/modes/interactive/theme/theme-schema.json +0 -335
  497. package/pkg/dist/modes/interactive/theme/dark.json +0 -85
  498. package/pkg/dist/modes/interactive/theme/light.json +0 -84
  499. package/pkg/dist/modes/interactive/theme/theme-schema.json +0 -335
  500. package/src/resources/extensions/shared/wizard-ui.ts +0 -551
@@ -28,7 +28,7 @@ function deepMergeSettings(base, overrides) {
28
28
  }
29
29
  return result;
30
30
  }
31
- export class FileSettingsStorage {
31
+ class FileSettingsStorage {
32
32
  constructor(cwd = process.cwd(), agentDir = getAgentDir()) {
33
33
  this.globalSettingsPath = join(agentDir, "settings.json");
34
34
  this.projectSettingsPath = join(cwd, CONFIG_DIR_NAME, "settings.json");
@@ -87,7 +87,7 @@ export class FileSettingsStorage {
87
87
  }
88
88
  }
89
89
  }
90
- export class InMemorySettingsStorage {
90
+ class InMemorySettingsStorage {
91
91
  withLock(scope, fn) {
92
92
  const current = scope === "global" ? this.global : this.project;
93
93
  const next = fn(current);
@@ -349,13 +349,46 @@ export class SettingsManager {
349
349
  this.errors = [];
350
350
  return drained;
351
351
  }
352
+ // ── Generic setter helpers ──────────────────────────────────────────
353
+ /** Set a top-level global setting field, mark modified, and save. */
354
+ setGlobalSetting(key, value) {
355
+ this.globalSettings[key] = value;
356
+ this.markModified(key);
357
+ this.save();
358
+ }
359
+ /** Set a top-level setting, scoped to project when project settings are active. */
360
+ setScopedSetting(key, value) {
361
+ if (this.hasProjectSettings()) {
362
+ this.projectSettings[key] = value;
363
+ this.markProjectModified(key);
364
+ this.saveProjectSettings(this.projectSettings);
365
+ }
366
+ else {
367
+ this.setGlobalSetting(key, value);
368
+ }
369
+ }
370
+ /** Set a nested field within a global settings object (e.g. compaction.enabled). */
371
+ setNestedGlobalSetting(key, nestedKey, value) {
372
+ if (!this.globalSettings[key]) {
373
+ this.globalSettings[key] = {};
374
+ }
375
+ this.globalSettings[key][nestedKey] = value;
376
+ this.markModified(key, nestedKey);
377
+ this.save();
378
+ }
379
+ /** Set a field on project settings (clone, set, mark modified, save). */
380
+ setProjectSetting(key, value) {
381
+ const projectSettings = structuredClone(this.projectSettings);
382
+ projectSettings[key] = value;
383
+ this.markProjectModified(key);
384
+ this.saveProjectSettings(projectSettings);
385
+ }
386
+ // ── Public getters and setters ──────────────────────────────────────
352
387
  getLastChangelogVersion() {
353
388
  return this.settings.lastChangelogVersion;
354
389
  }
355
390
  setLastChangelogVersion(version) {
356
- this.globalSettings.lastChangelogVersion = version;
357
- this.markModified("lastChangelogVersion");
358
- this.save();
391
+ this.setGlobalSetting("lastChangelogVersion", version);
359
392
  }
360
393
  getDefaultProvider() {
361
394
  return this.settings.defaultProvider;
@@ -364,28 +397,10 @@ export class SettingsManager {
364
397
  return this.settings.defaultModel;
365
398
  }
366
399
  setDefaultProvider(provider) {
367
- if (this.hasProjectSettings()) {
368
- this.projectSettings.defaultProvider = provider;
369
- this.markProjectModified("defaultProvider");
370
- this.saveProjectSettings(this.projectSettings);
371
- }
372
- else {
373
- this.globalSettings.defaultProvider = provider;
374
- this.markModified("defaultProvider");
375
- this.save();
376
- }
400
+ this.setScopedSetting("defaultProvider", provider);
377
401
  }
378
402
  setDefaultModel(modelId) {
379
- if (this.hasProjectSettings()) {
380
- this.projectSettings.defaultModel = modelId;
381
- this.markProjectModified("defaultModel");
382
- this.saveProjectSettings(this.projectSettings);
383
- }
384
- else {
385
- this.globalSettings.defaultModel = modelId;
386
- this.markModified("defaultModel");
387
- this.save();
388
- }
403
+ this.setScopedSetting("defaultModel", modelId);
389
404
  }
390
405
  setDefaultModelAndProvider(provider, modelId) {
391
406
  if (this.hasProjectSettings()) {
@@ -407,52 +422,37 @@ export class SettingsManager {
407
422
  return this.settings.steeringMode || "one-at-a-time";
408
423
  }
409
424
  setSteeringMode(mode) {
410
- this.globalSettings.steeringMode = mode;
411
- this.markModified("steeringMode");
412
- this.save();
425
+ this.setGlobalSetting("steeringMode", mode);
413
426
  }
414
427
  getFollowUpMode() {
415
428
  return this.settings.followUpMode || "one-at-a-time";
416
429
  }
417
430
  setFollowUpMode(mode) {
418
- this.globalSettings.followUpMode = mode;
419
- this.markModified("followUpMode");
420
- this.save();
431
+ this.setGlobalSetting("followUpMode", mode);
421
432
  }
422
433
  getTheme() {
423
434
  return this.settings.theme;
424
435
  }
425
436
  setTheme(theme) {
426
- this.globalSettings.theme = theme;
427
- this.markModified("theme");
428
- this.save();
437
+ this.setGlobalSetting("theme", theme);
429
438
  }
430
439
  getDefaultThinkingLevel() {
431
440
  return this.settings.defaultThinkingLevel;
432
441
  }
433
442
  setDefaultThinkingLevel(level) {
434
- this.globalSettings.defaultThinkingLevel = level;
435
- this.markModified("defaultThinkingLevel");
436
- this.save();
443
+ this.setGlobalSetting("defaultThinkingLevel", level);
437
444
  }
438
445
  getTransport() {
439
446
  return this.settings.transport ?? "sse";
440
447
  }
441
448
  setTransport(transport) {
442
- this.globalSettings.transport = transport;
443
- this.markModified("transport");
444
- this.save();
449
+ this.setGlobalSetting("transport", transport);
445
450
  }
446
451
  getCompactionEnabled() {
447
452
  return this.settings.compaction?.enabled ?? true;
448
453
  }
449
454
  setCompactionEnabled(enabled) {
450
- if (!this.globalSettings.compaction) {
451
- this.globalSettings.compaction = {};
452
- }
453
- this.globalSettings.compaction.enabled = enabled;
454
- this.markModified("compaction", "enabled");
455
- this.save();
455
+ this.setNestedGlobalSetting("compaction", "enabled", enabled);
456
456
  }
457
457
  getCompactionReserveTokens() {
458
458
  return this.settings.compaction?.reserveTokens ?? COMPACTION_RESERVE_TOKENS;
@@ -480,12 +480,7 @@ export class SettingsManager {
480
480
  return this.settings.retry?.enabled ?? true;
481
481
  }
482
482
  setRetryEnabled(enabled) {
483
- if (!this.globalSettings.retry) {
484
- this.globalSettings.retry = {};
485
- }
486
- this.globalSettings.retry.enabled = enabled;
487
- this.markModified("retry", "enabled");
488
- this.save();
483
+ this.setNestedGlobalSetting("retry", "enabled", enabled);
489
484
  }
490
485
  getRetrySettings() {
491
486
  return {
@@ -499,119 +494,82 @@ export class SettingsManager {
499
494
  return this.settings.hideThinkingBlock ?? false;
500
495
  }
501
496
  setHideThinkingBlock(hide) {
502
- this.globalSettings.hideThinkingBlock = hide;
503
- this.markModified("hideThinkingBlock");
504
- this.save();
497
+ this.setGlobalSetting("hideThinkingBlock", hide);
505
498
  }
506
499
  getShellPath() {
507
500
  return this.settings.shellPath;
508
501
  }
509
502
  setShellPath(path) {
510
- this.globalSettings.shellPath = path;
511
- this.markModified("shellPath");
512
- this.save();
503
+ this.setGlobalSetting("shellPath", path);
513
504
  }
514
505
  getQuietStartup() {
515
506
  return this.settings.quietStartup ?? false;
516
507
  }
517
508
  setQuietStartup(quiet) {
518
- this.globalSettings.quietStartup = quiet;
519
- this.markModified("quietStartup");
520
- this.save();
509
+ this.setGlobalSetting("quietStartup", quiet);
521
510
  }
522
511
  getShellCommandPrefix() {
523
512
  return this.settings.shellCommandPrefix;
524
513
  }
525
514
  setShellCommandPrefix(prefix) {
526
- this.globalSettings.shellCommandPrefix = prefix;
527
- this.markModified("shellCommandPrefix");
528
- this.save();
515
+ this.setGlobalSetting("shellCommandPrefix", prefix);
529
516
  }
530
517
  getCollapseChangelog() {
531
518
  return this.settings.collapseChangelog ?? false;
532
519
  }
533
520
  setCollapseChangelog(collapse) {
534
- this.globalSettings.collapseChangelog = collapse;
535
- this.markModified("collapseChangelog");
536
- this.save();
521
+ this.setGlobalSetting("collapseChangelog", collapse);
537
522
  }
538
523
  getPackages() {
539
524
  return [...(this.settings.packages ?? [])];
540
525
  }
541
526
  setPackages(packages) {
542
- this.globalSettings.packages = packages;
543
- this.markModified("packages");
544
- this.save();
527
+ this.setGlobalSetting("packages", packages);
545
528
  }
546
529
  setProjectPackages(packages) {
547
- const projectSettings = structuredClone(this.projectSettings);
548
- projectSettings.packages = packages;
549
- this.markProjectModified("packages");
550
- this.saveProjectSettings(projectSettings);
530
+ this.setProjectSetting("packages", packages);
551
531
  }
552
532
  getExtensionPaths() {
553
533
  return [...(this.settings.extensions ?? [])];
554
534
  }
555
535
  setExtensionPaths(paths) {
556
- this.globalSettings.extensions = paths;
557
- this.markModified("extensions");
558
- this.save();
536
+ this.setGlobalSetting("extensions", paths);
559
537
  }
560
538
  setProjectExtensionPaths(paths) {
561
- const projectSettings = structuredClone(this.projectSettings);
562
- projectSettings.extensions = paths;
563
- this.markProjectModified("extensions");
564
- this.saveProjectSettings(projectSettings);
539
+ this.setProjectSetting("extensions", paths);
565
540
  }
566
541
  getSkillPaths() {
567
542
  return [...(this.settings.skills ?? [])];
568
543
  }
569
544
  setSkillPaths(paths) {
570
- this.globalSettings.skills = paths;
571
- this.markModified("skills");
572
- this.save();
545
+ this.setGlobalSetting("skills", paths);
573
546
  }
574
547
  setProjectSkillPaths(paths) {
575
- const projectSettings = structuredClone(this.projectSettings);
576
- projectSettings.skills = paths;
577
- this.markProjectModified("skills");
578
- this.saveProjectSettings(projectSettings);
548
+ this.setProjectSetting("skills", paths);
579
549
  }
580
550
  getPromptTemplatePaths() {
581
551
  return [...(this.settings.prompts ?? [])];
582
552
  }
583
553
  setPromptTemplatePaths(paths) {
584
- this.globalSettings.prompts = paths;
585
- this.markModified("prompts");
586
- this.save();
554
+ this.setGlobalSetting("prompts", paths);
587
555
  }
588
556
  setProjectPromptTemplatePaths(paths) {
589
- const projectSettings = structuredClone(this.projectSettings);
590
- projectSettings.prompts = paths;
591
- this.markProjectModified("prompts");
592
- this.saveProjectSettings(projectSettings);
557
+ this.setProjectSetting("prompts", paths);
593
558
  }
594
559
  getThemePaths() {
595
560
  return [...(this.settings.themes ?? [])];
596
561
  }
597
562
  setThemePaths(paths) {
598
- this.globalSettings.themes = paths;
599
- this.markModified("themes");
600
- this.save();
563
+ this.setGlobalSetting("themes", paths);
601
564
  }
602
565
  setProjectThemePaths(paths) {
603
- const projectSettings = structuredClone(this.projectSettings);
604
- projectSettings.themes = paths;
605
- this.markProjectModified("themes");
606
- this.saveProjectSettings(projectSettings);
566
+ this.setProjectSetting("themes", paths);
607
567
  }
608
568
  getEnableSkillCommands() {
609
569
  return this.settings.enableSkillCommands ?? true;
610
570
  }
611
571
  setEnableSkillCommands(enabled) {
612
- this.globalSettings.enableSkillCommands = enabled;
613
- this.markModified("enableSkillCommands");
614
- this.save();
572
+ this.setGlobalSetting("enableSkillCommands", enabled);
615
573
  }
616
574
  getThinkingBudgets() {
617
575
  return this.settings.thinkingBudgets;
@@ -620,12 +578,7 @@ export class SettingsManager {
620
578
  return this.settings.terminal?.showImages ?? true;
621
579
  }
622
580
  setShowImages(show) {
623
- if (!this.globalSettings.terminal) {
624
- this.globalSettings.terminal = {};
625
- }
626
- this.globalSettings.terminal.showImages = show;
627
- this.markModified("terminal", "showImages");
628
- this.save();
581
+ this.setNestedGlobalSetting("terminal", "showImages", show);
629
582
  }
630
583
  getClearOnShrink() {
631
584
  // Settings takes precedence, then env var, then default false
@@ -635,50 +588,31 @@ export class SettingsManager {
635
588
  return process.env.PI_CLEAR_ON_SHRINK === "1";
636
589
  }
637
590
  setClearOnShrink(enabled) {
638
- if (!this.globalSettings.terminal) {
639
- this.globalSettings.terminal = {};
640
- }
641
- this.globalSettings.terminal.clearOnShrink = enabled;
642
- this.markModified("terminal", "clearOnShrink");
643
- this.save();
591
+ this.setNestedGlobalSetting("terminal", "clearOnShrink", enabled);
644
592
  }
645
593
  getImageAutoResize() {
646
594
  return this.settings.images?.autoResize ?? true;
647
595
  }
648
596
  setImageAutoResize(enabled) {
649
- if (!this.globalSettings.images) {
650
- this.globalSettings.images = {};
651
- }
652
- this.globalSettings.images.autoResize = enabled;
653
- this.markModified("images", "autoResize");
654
- this.save();
597
+ this.setNestedGlobalSetting("images", "autoResize", enabled);
655
598
  }
656
599
  getBlockImages() {
657
600
  return this.settings.images?.blockImages ?? false;
658
601
  }
659
602
  setBlockImages(blocked) {
660
- if (!this.globalSettings.images) {
661
- this.globalSettings.images = {};
662
- }
663
- this.globalSettings.images.blockImages = blocked;
664
- this.markModified("images", "blockImages");
665
- this.save();
603
+ this.setNestedGlobalSetting("images", "blockImages", blocked);
666
604
  }
667
605
  getEnabledModels() {
668
606
  return this.settings.enabledModels;
669
607
  }
670
608
  setEnabledModels(patterns) {
671
- this.globalSettings.enabledModels = patterns;
672
- this.markModified("enabledModels");
673
- this.save();
609
+ this.setGlobalSetting("enabledModels", patterns);
674
610
  }
675
611
  getDoubleEscapeAction() {
676
612
  return this.settings.doubleEscapeAction ?? "tree";
677
613
  }
678
614
  setDoubleEscapeAction(action) {
679
- this.globalSettings.doubleEscapeAction = action;
680
- this.markModified("doubleEscapeAction");
681
- this.save();
615
+ this.setGlobalSetting("doubleEscapeAction", action);
682
616
  }
683
617
  getTreeFilterMode() {
684
618
  const mode = this.settings.treeFilterMode;
@@ -686,49 +620,37 @@ export class SettingsManager {
686
620
  return mode && valid.includes(mode) ? mode : "default";
687
621
  }
688
622
  setTreeFilterMode(mode) {
689
- this.globalSettings.treeFilterMode = mode;
690
- this.markModified("treeFilterMode");
691
- this.save();
623
+ this.setGlobalSetting("treeFilterMode", mode);
692
624
  }
693
625
  getShowHardwareCursor() {
694
626
  return this.settings.showHardwareCursor ?? process.env.PI_HARDWARE_CURSOR === "1";
695
627
  }
696
628
  setShowHardwareCursor(enabled) {
697
- this.globalSettings.showHardwareCursor = enabled;
698
- this.markModified("showHardwareCursor");
699
- this.save();
629
+ this.setGlobalSetting("showHardwareCursor", enabled);
700
630
  }
701
631
  getEditorPaddingX() {
702
632
  return this.settings.editorPaddingX ?? 0;
703
633
  }
704
634
  setEditorPaddingX(padding) {
705
- this.globalSettings.editorPaddingX = Math.max(0, Math.min(3, Math.floor(padding)));
706
- this.markModified("editorPaddingX");
707
- this.save();
635
+ this.setGlobalSetting("editorPaddingX", Math.max(0, Math.min(3, Math.floor(padding))));
708
636
  }
709
637
  getAutocompleteMaxVisible() {
710
638
  return this.settings.autocompleteMaxVisible ?? 5;
711
639
  }
712
640
  setAutocompleteMaxVisible(maxVisible) {
713
- this.globalSettings.autocompleteMaxVisible = Math.max(3, Math.min(20, Math.floor(maxVisible)));
714
- this.markModified("autocompleteMaxVisible");
715
- this.save();
641
+ this.setGlobalSetting("autocompleteMaxVisible", Math.max(3, Math.min(20, Math.floor(maxVisible))));
716
642
  }
717
643
  getRespectGitignoreInPicker() {
718
644
  return this.settings.respectGitignoreInPicker ?? true;
719
645
  }
720
646
  setRespectGitignoreInPicker(value) {
721
- this.globalSettings.respectGitignoreInPicker = value;
722
- this.markModified("respectGitignoreInPicker");
723
- this.save();
647
+ this.setGlobalSetting("respectGitignoreInPicker", value);
724
648
  }
725
649
  getSearchExcludeDirs() {
726
650
  return this.settings.searchExcludeDirs ?? [];
727
651
  }
728
652
  setSearchExcludeDirs(dirs) {
729
- this.globalSettings.searchExcludeDirs = dirs.filter(Boolean);
730
- this.markModified("searchExcludeDirs");
731
- this.save();
653
+ this.setGlobalSetting("searchExcludeDirs", dirs.filter(Boolean));
732
654
  }
733
655
  getCodeBlockIndent() {
734
656
  return this.settings.markdown?.codeBlockIndent ?? " ";
@@ -759,12 +681,7 @@ export class SettingsManager {
759
681
  return this.settings.fallback?.enabled ?? false;
760
682
  }
761
683
  setFallbackEnabled(enabled) {
762
- if (!this.globalSettings.fallback) {
763
- this.globalSettings.fallback = {};
764
- }
765
- this.globalSettings.fallback.enabled = enabled;
766
- this.markModified("fallback", "enabled");
767
- this.save();
684
+ this.setNestedGlobalSetting("fallback", "enabled", enabled);
768
685
  }
769
686
  getFallbackChains() {
770
687
  return this.settings.fallback?.chains ?? {};
@@ -806,20 +723,13 @@ export class SettingsManager {
806
723
  return this.settings.modelDiscovery ?? {};
807
724
  }
808
725
  setModelDiscoveryEnabled(enabled) {
809
- if (!this.globalSettings.modelDiscovery) {
810
- this.globalSettings.modelDiscovery = {};
811
- }
812
- this.globalSettings.modelDiscovery.enabled = enabled;
813
- this.markModified("modelDiscovery", "enabled");
814
- this.save();
726
+ this.setNestedGlobalSetting("modelDiscovery", "enabled", enabled);
815
727
  }
816
728
  getEditMode() {
817
729
  return this.settings.editMode ?? "standard";
818
730
  }
819
731
  setEditMode(mode) {
820
- this.globalSettings.editMode = mode;
821
- this.markModified("editMode");
822
- this.save();
732
+ this.setGlobalSetting("editMode", mode);
823
733
  }
824
734
  }
825
735
  //# sourceMappingURL=settings-manager.js.map