@daniel156161/prism 0.2.100 → 0.2.105

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 (1248) hide show
  1. package/README.md +2 -2
  2. package/dist/pi/pi-env.d.ts +1 -1
  3. package/dist/pi/pi-env.js +1 -1
  4. package/dist/prism-extensions/integrations/ai-memory-system.js +16 -9
  5. package/dist/prism-extensions/integrations/ai-memory-system.js.map +1 -1
  6. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.d.ts.map +1 -1
  7. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js +23 -25
  8. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js.map +1 -1
  9. package/node_modules/@earendil-works/pi-agent-core/dist/harness/env/nodejs.d.ts.map +1 -1
  10. package/node_modules/@earendil-works/pi-agent-core/dist/harness/env/nodejs.js +3 -1
  11. package/node_modules/@earendil-works/pi-agent-core/dist/harness/env/nodejs.js.map +1 -1
  12. package/node_modules/@earendil-works/pi-agent-core/dist/harness/skills.d.ts +3 -2
  13. package/node_modules/@earendil-works/pi-agent-core/dist/harness/skills.d.ts.map +1 -1
  14. package/node_modules/@earendil-works/pi-agent-core/dist/harness/skills.js +13 -3
  15. package/node_modules/@earendil-works/pi-agent-core/dist/harness/skills.js.map +1 -1
  16. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/edit.d.ts.map +1 -1
  17. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/edit.js +14 -1
  18. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/edit.js.map +1 -1
  19. package/node_modules/@earendil-works/pi-agent-core/dist/types.d.ts +3 -2
  20. package/node_modules/@earendil-works/pi-agent-core/dist/types.d.ts.map +1 -1
  21. package/node_modules/@earendil-works/pi-agent-core/dist/types.js.map +1 -1
  22. package/node_modules/@earendil-works/pi-agent-core/package.json +4 -4
  23. package/node_modules/@earendil-works/pi-ai/README.md +5 -3
  24. package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.d.ts.map +1 -1
  25. package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.js +34 -19
  26. package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.js.map +1 -1
  27. package/node_modules/@earendil-works/pi-ai/dist/api/azure-openai-responses.d.ts +2 -0
  28. package/node_modules/@earendil-works/pi-ai/dist/api/azure-openai-responses.d.ts.map +1 -1
  29. package/node_modules/@earendil-works/pi-ai/dist/api/azure-openai-responses.js +9 -2
  30. package/node_modules/@earendil-works/pi-ai/dist/api/azure-openai-responses.js.map +1 -1
  31. package/node_modules/@earendil-works/pi-ai/dist/api/bedrock-converse-stream.d.ts.map +1 -1
  32. package/node_modules/@earendil-works/pi-ai/dist/api/bedrock-converse-stream.js +131 -7
  33. package/node_modules/@earendil-works/pi-ai/dist/api/bedrock-converse-stream.js.map +1 -1
  34. package/node_modules/@earendil-works/pi-ai/dist/api/google-generative-ai.d.ts +2 -2
  35. package/node_modules/@earendil-works/pi-ai/dist/api/google-generative-ai.d.ts.map +1 -1
  36. package/node_modules/@earendil-works/pi-ai/dist/api/google-generative-ai.js +17 -13
  37. package/node_modules/@earendil-works/pi-ai/dist/api/google-generative-ai.js.map +1 -1
  38. package/node_modules/@earendil-works/pi-ai/dist/api/google-shared.d.ts +5 -2
  39. package/node_modules/@earendil-works/pi-ai/dist/api/google-shared.d.ts.map +1 -1
  40. package/node_modules/@earendil-works/pi-ai/dist/api/google-shared.js +16 -0
  41. package/node_modules/@earendil-works/pi-ai/dist/api/google-shared.js.map +1 -1
  42. package/node_modules/@earendil-works/pi-ai/dist/api/google-vertex.d.ts +2 -2
  43. package/node_modules/@earendil-works/pi-ai/dist/api/google-vertex.d.ts.map +1 -1
  44. package/node_modules/@earendil-works/pi-ai/dist/api/google-vertex.js +15 -11
  45. package/node_modules/@earendil-works/pi-ai/dist/api/google-vertex.js.map +1 -1
  46. package/node_modules/@earendil-works/pi-ai/dist/api/mistral-conversations.d.ts.map +1 -1
  47. package/node_modules/@earendil-works/pi-ai/dist/api/mistral-conversations.js +7 -2
  48. package/node_modules/@earendil-works/pi-ai/dist/api/mistral-conversations.js.map +1 -1
  49. package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.d.ts.map +1 -1
  50. package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.js +4 -1
  51. package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.js.map +1 -1
  52. package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.d.ts +3 -2
  53. package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.d.ts.map +1 -1
  54. package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.js +160 -86
  55. package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.js.map +1 -1
  56. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.d.ts.map +1 -1
  57. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js +6 -2
  58. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js.map +1 -1
  59. package/node_modules/@earendil-works/pi-ai/dist/api/pi-messages.d.ts.map +1 -1
  60. package/node_modules/@earendil-works/pi-ai/dist/api/pi-messages.js +1 -1
  61. package/node_modules/@earendil-works/pi-ai/dist/api/pi-messages.js.map +1 -1
  62. package/node_modules/@earendil-works/pi-ai/dist/api/simple-options.d.ts +4 -0
  63. package/node_modules/@earendil-works/pi-ai/dist/api/simple-options.d.ts.map +1 -1
  64. package/node_modules/@earendil-works/pi-ai/dist/api/simple-options.js +17 -10
  65. package/node_modules/@earendil-works/pi-ai/dist/api/simple-options.js.map +1 -1
  66. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/device-code.d.ts +1 -0
  67. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/device-code.d.ts.map +1 -1
  68. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/device-code.js +1 -1
  69. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/device-code.js.map +1 -1
  70. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/github-copilot.d.ts.map +1 -1
  71. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/github-copilot.js +98 -34
  72. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/github-copilot.js.map +1 -1
  73. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/kimi-coding.d.ts.map +1 -1
  74. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/kimi-coding.js +1 -14
  75. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/kimi-coding.js.map +1 -1
  76. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.d.ts +75 -0
  77. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.d.ts.map +1 -1
  78. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.js +75 -0
  79. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.js.map +1 -1
  80. package/node_modules/@earendil-works/pi-ai/dist/index.d.ts +1 -1
  81. package/node_modules/@earendil-works/pi-ai/dist/index.d.ts.map +1 -1
  82. package/node_modules/@earendil-works/pi-ai/dist/index.js.map +1 -1
  83. package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare-ai-gateway.d.ts +3 -1
  84. package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare-ai-gateway.d.ts.map +1 -1
  85. package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare-ai-gateway.js.map +1 -1
  86. package/node_modules/@earendil-works/pi-ai/dist/providers/data/.manifest.json +1 -1
  87. package/node_modules/@earendil-works/pi-ai/dist/providers/data/amazon-bedrock.json +1 -1
  88. package/node_modules/@earendil-works/pi-ai/dist/providers/data/anthropic.json +1 -1
  89. package/node_modules/@earendil-works/pi-ai/dist/providers/data/azure-openai-responses.json +1 -1
  90. package/node_modules/@earendil-works/pi-ai/dist/providers/data/baseten.json +1 -1
  91. package/node_modules/@earendil-works/pi-ai/dist/providers/data/cerebras.json +1 -1
  92. package/node_modules/@earendil-works/pi-ai/dist/providers/data/cloudflare-ai-gateway.json +1 -1
  93. package/node_modules/@earendil-works/pi-ai/dist/providers/data/cloudflare-workers-ai.json +1 -1
  94. package/node_modules/@earendil-works/pi-ai/dist/providers/data/deepseek.json +1 -1
  95. package/node_modules/@earendil-works/pi-ai/dist/providers/data/fireworks.json +1 -1
  96. package/node_modules/@earendil-works/pi-ai/dist/providers/data/github-copilot.json +1 -1
  97. package/node_modules/@earendil-works/pi-ai/dist/providers/data/google-vertex.json +1 -1
  98. package/node_modules/@earendil-works/pi-ai/dist/providers/data/google.json +1 -1
  99. package/node_modules/@earendil-works/pi-ai/dist/providers/data/huggingface.json +1 -1
  100. package/node_modules/@earendil-works/pi-ai/dist/providers/data/minimax-cn.json +1 -1
  101. package/node_modules/@earendil-works/pi-ai/dist/providers/data/minimax.json +1 -1
  102. package/node_modules/@earendil-works/pi-ai/dist/providers/data/mistral.json +1 -1
  103. package/node_modules/@earendil-works/pi-ai/dist/providers/data/nvidia.json +1 -1
  104. package/node_modules/@earendil-works/pi-ai/dist/providers/data/openai.json +1 -1
  105. package/node_modules/@earendil-works/pi-ai/dist/providers/data/opencode-go.json +1 -1
  106. package/node_modules/@earendil-works/pi-ai/dist/providers/data/opencode.json +1 -1
  107. package/node_modules/@earendil-works/pi-ai/dist/providers/data/openrouter.json +1 -1
  108. package/node_modules/@earendil-works/pi-ai/dist/providers/data/qwen-token-plan-cn.json +1 -1
  109. package/node_modules/@earendil-works/pi-ai/dist/providers/data/qwen-token-plan-individual.json +1 -1
  110. package/node_modules/@earendil-works/pi-ai/dist/providers/data/qwen-token-plan.json +1 -1
  111. package/node_modules/@earendil-works/pi-ai/dist/providers/data/together.json +1 -1
  112. package/node_modules/@earendil-works/pi-ai/dist/providers/data/vercel-ai-gateway.json +1 -1
  113. package/node_modules/@earendil-works/pi-ai/dist/providers/data/xai.json +1 -1
  114. package/node_modules/@earendil-works/pi-ai/dist/providers/data/xiaomi-token-plan-ams.json +1 -1
  115. package/node_modules/@earendil-works/pi-ai/dist/providers/data/xiaomi-token-plan-cn.json +1 -1
  116. package/node_modules/@earendil-works/pi-ai/dist/providers/data/xiaomi-token-plan-sgp.json +1 -1
  117. package/node_modules/@earendil-works/pi-ai/dist/providers/data/xiaomi.json +1 -1
  118. package/node_modules/@earendil-works/pi-ai/dist/providers/data/zai-coding-cn.json +1 -1
  119. package/node_modules/@earendil-works/pi-ai/dist/providers/data/zai.json +1 -1
  120. package/node_modules/@earendil-works/pi-ai/dist/providers/xai.d.ts +1 -1
  121. package/node_modules/@earendil-works/pi-ai/dist/providers/xai.d.ts.map +1 -1
  122. package/node_modules/@earendil-works/pi-ai/dist/providers/xai.js +1 -5
  123. package/node_modules/@earendil-works/pi-ai/dist/providers/xai.js.map +1 -1
  124. package/node_modules/@earendil-works/pi-ai/dist/types.d.ts +29 -4
  125. package/node_modules/@earendil-works/pi-ai/dist/types.d.ts.map +1 -1
  126. package/node_modules/@earendil-works/pi-ai/dist/types.js.map +1 -1
  127. package/node_modules/@earendil-works/pi-ai/dist/utils/sleep.d.ts +2 -0
  128. package/node_modules/@earendil-works/pi-ai/dist/utils/sleep.d.ts.map +1 -0
  129. package/node_modules/@earendil-works/pi-ai/dist/utils/sleep.js +15 -0
  130. package/node_modules/@earendil-works/pi-ai/dist/utils/sleep.js.map +1 -0
  131. package/node_modules/@earendil-works/pi-ai/package.json +3 -4
  132. package/node_modules/@earendil-works/pi-client/CHANGELOG.md +4 -0
  133. package/node_modules/@earendil-works/pi-client/package.json +2 -2
  134. package/node_modules/@earendil-works/pi-coding-agent/CHANGELOG.md +127 -0
  135. package/node_modules/@earendil-works/pi-coding-agent/README.md +13 -8
  136. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/anthropic-messages-JWX2WP65.js +45 -0
  137. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/anthropic.js +75 -0
  138. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/azure-openai-responses-5ENVCQ7U.js +2 -0
  139. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/bedrock-converse-stream.js +74 -0
  140. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/chunk-2KVJKXS2.js +50 -0
  141. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/chunk-4L3WN2XY.js +2 -0
  142. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/chunk-6CYCI3EJ.js +12 -0
  143. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/chunk-6R7UI4IY.js +2 -0
  144. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/chunk-AXIIZGTV.js +2 -0
  145. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/chunk-DRQDKNXA.js +2 -0
  146. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/chunk-GMWCTUPB.js +2 -0
  147. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/chunk-JUUC5AZY.js +2 -0
  148. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/chunk-L2ZPNLYD.js +2 -0
  149. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/chunk-MNAIPA3J.js +2 -0
  150. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/chunk-NBBFIJUL.js +11 -0
  151. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/chunk-NUHFSC37.js +25 -0
  152. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/chunk-OMWWHBTG.js +1548 -0
  153. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/chunk-PGXDEOVV.js +2 -0
  154. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/chunk-PJACZCIR.js +2 -0
  155. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/chunk-PRRNXB7S.js +2 -0
  156. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/chunk-TEPMHNKQ.js +2 -0
  157. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/chunk-TRDNDS6A.js +4 -0
  158. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/chunk-UAQELI3K.js +2 -0
  159. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/chunk-XDUWOHPL.js +6 -0
  160. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/chunk-XNGRGP62.js +2 -0
  161. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/github-copilot.js +2 -0
  162. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/google-generative-ai-YMUPJBKR.js +2 -0
  163. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/google-vertex-MPWMV4OF.js +2 -0
  164. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/https-proxy-agent-2VXB7436.js +13 -0
  165. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/image-resize-worker.js +2 -0
  166. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/kimi-coding.js +2 -0
  167. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/lib-HGQMNYVT.js +9 -0
  168. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/mistral-conversations-Q3AWZJAZ.js +5 -0
  169. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/multipart-parser-SQ6GDJL7.js +3 -0
  170. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/openai-codex-responses-GJVBJXLB.js +8 -0
  171. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/openai-codex.js +75 -0
  172. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/openai-completions-ERMU2SS7.js +7 -0
  173. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/openai-responses-BSOJMSEV.js +2 -0
  174. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/openrouter-images-N4XVVFSD.js +2 -0
  175. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/openrouter.js +75 -0
  176. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/pi-messages-TPFH44NP.js +8 -0
  177. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/radius.js +75 -0
  178. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/src-UK77SYZE.js +4 -0
  179. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/xai.js +2 -0
  180. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/cli.js +3 -0
  181. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/client.js +2 -0
  182. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/index.js +2 -0
  183. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/rpc-entry.js +3 -0
  184. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/args.d.ts +1 -0
  185. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/args.d.ts.map +1 -1
  186. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/args.js +29 -9
  187. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/args.js.map +1 -1
  188. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/file-processor.d.ts.map +1 -1
  189. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/file-processor.js +2 -1
  190. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/file-processor.js.map +1 -1
  191. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/startup-ui.d.ts.map +1 -1
  192. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/startup-ui.js +2 -1
  193. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/startup-ui.js.map +1 -1
  194. package/node_modules/@earendil-works/pi-coding-agent/dist/config.d.ts +4 -3
  195. package/node_modules/@earendil-works/pi-coding-agent/dist/config.d.ts.map +1 -1
  196. package/node_modules/@earendil-works/pi-coding-agent/dist/config.js +22 -14
  197. package/node_modules/@earendil-works/pi-coding-agent/dist/config.js.map +1 -1
  198. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session.d.ts +38 -8
  199. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session.d.ts.map +1 -1
  200. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session.js +240 -104
  201. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session.js.map +1 -1
  202. package/node_modules/@earendil-works/pi-coding-agent/dist/core/auth-storage.d.ts.map +1 -1
  203. package/node_modules/@earendil-works/pi-coding-agent/dist/core/auth-storage.js +6 -7
  204. package/node_modules/@earendil-works/pi-coding-agent/dist/core/auth-storage.js.map +1 -1
  205. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  206. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/branch-summarization.js +7 -3
  207. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/branch-summarization.js.map +1 -1
  208. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/compaction.d.ts +9 -3
  209. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/compaction.d.ts.map +1 -1
  210. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/compaction.js +59 -36
  211. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/compaction.js.map +1 -1
  212. package/node_modules/@earendil-works/pi-coding-agent/dist/core/defaults.d.ts +1 -0
  213. package/node_modules/@earendil-works/pi-coding-agent/dist/core/defaults.d.ts.map +1 -1
  214. package/node_modules/@earendil-works/pi-coding-agent/dist/core/defaults.js +9 -0
  215. package/node_modules/@earendil-works/pi-coding-agent/dist/core/defaults.js.map +1 -1
  216. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/index.d.ts +2 -2
  217. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/index.d.ts.map +1 -1
  218. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/index.js +1 -1
  219. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/index.js.map +1 -1
  220. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/loader.d.ts.map +1 -1
  221. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/loader.js +115 -48
  222. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/loader.js.map +1 -1
  223. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/runner.d.ts +5 -0
  224. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/runner.d.ts.map +1 -1
  225. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/runner.js +45 -1
  226. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/runner.js.map +1 -1
  227. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/types.d.ts +56 -10
  228. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/types.d.ts.map +1 -1
  229. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/types.js +3 -0
  230. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/types.js.map +1 -1
  231. package/node_modules/@earendil-works/pi-coding-agent/dist/core/footer-data-provider.d.ts +1 -1
  232. package/node_modules/@earendil-works/pi-coding-agent/dist/core/footer-data-provider.d.ts.map +1 -1
  233. package/node_modules/@earendil-works/pi-coding-agent/dist/core/footer-data-provider.js +1 -1
  234. package/node_modules/@earendil-works/pi-coding-agent/dist/core/footer-data-provider.js.map +1 -1
  235. package/node_modules/@earendil-works/pi-coding-agent/dist/core/keybindings.d.ts +20 -19
  236. package/node_modules/@earendil-works/pi-coding-agent/dist/core/keybindings.d.ts.map +1 -1
  237. package/node_modules/@earendil-works/pi-coding-agent/dist/core/keybindings.js +26 -5
  238. package/node_modules/@earendil-works/pi-coding-agent/dist/core/keybindings.js.map +1 -1
  239. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-config.d.ts +5 -0
  240. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-config.d.ts.map +1 -1
  241. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-config.js +3 -1
  242. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-config.js.map +1 -1
  243. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-resolver.d.ts +1 -0
  244. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-resolver.d.ts.map +1 -1
  245. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-resolver.js +14 -8
  246. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-resolver.js.map +1 -1
  247. package/node_modules/@earendil-works/pi-coding-agent/dist/core/models-store.d.ts.map +1 -1
  248. package/node_modules/@earendil-works/pi-coding-agent/dist/core/models-store.js +2 -1
  249. package/node_modules/@earendil-works/pi-coding-agent/dist/core/models-store.js.map +1 -1
  250. package/node_modules/@earendil-works/pi-coding-agent/dist/core/package-manager.d.ts.map +1 -1
  251. package/node_modules/@earendil-works/pi-coding-agent/dist/core/package-manager.js +22 -14
  252. package/node_modules/@earendil-works/pi-coding-agent/dist/core/package-manager.js.map +1 -1
  253. package/node_modules/@earendil-works/pi-coding-agent/dist/core/pi-manifest.d.ts.map +1 -1
  254. package/node_modules/@earendil-works/pi-coding-agent/dist/core/pi-manifest.js +2 -1
  255. package/node_modules/@earendil-works/pi-coding-agent/dist/core/pi-manifest.js.map +1 -1
  256. package/node_modules/@earendil-works/pi-coding-agent/dist/core/remote-catalog-provider.d.ts.map +1 -1
  257. package/node_modules/@earendil-works/pi-coding-agent/dist/core/remote-catalog-provider.js +2 -1
  258. package/node_modules/@earendil-works/pi-coding-agent/dist/core/remote-catalog-provider.js.map +1 -1
  259. package/node_modules/@earendil-works/pi-coding-agent/dist/core/resource-loader.d.ts.map +1 -1
  260. package/node_modules/@earendil-works/pi-coding-agent/dist/core/resource-loader.js +3 -2
  261. package/node_modules/@earendil-works/pi-coding-agent/dist/core/resource-loader.js.map +1 -1
  262. package/node_modules/@earendil-works/pi-coding-agent/dist/core/sdk.d.ts +2 -2
  263. package/node_modules/@earendil-works/pi-coding-agent/dist/core/sdk.d.ts.map +1 -1
  264. package/node_modules/@earendil-works/pi-coding-agent/dist/core/sdk.js +10 -3
  265. package/node_modules/@earendil-works/pi-coding-agent/dist/core/sdk.js.map +1 -1
  266. package/node_modules/@earendil-works/pi-coding-agent/dist/core/session-export.d.ts +4 -0
  267. package/node_modules/@earendil-works/pi-coding-agent/dist/core/session-export.d.ts.map +1 -0
  268. package/node_modules/@earendil-works/pi-coding-agent/dist/core/session-export.js +32 -0
  269. package/node_modules/@earendil-works/pi-coding-agent/dist/core/session-export.js.map +1 -0
  270. package/node_modules/@earendil-works/pi-coding-agent/dist/core/session-manager.d.ts.map +1 -1
  271. package/node_modules/@earendil-works/pi-coding-agent/dist/core/session-manager.js +6 -3
  272. package/node_modules/@earendil-works/pi-coding-agent/dist/core/session-manager.js.map +1 -1
  273. package/node_modules/@earendil-works/pi-coding-agent/dist/core/settings-diagnostics.d.ts +9 -0
  274. package/node_modules/@earendil-works/pi-coding-agent/dist/core/settings-diagnostics.d.ts.map +1 -0
  275. package/node_modules/@earendil-works/pi-coding-agent/dist/core/settings-diagnostics.js +21 -0
  276. package/node_modules/@earendil-works/pi-coding-agent/dist/core/settings-diagnostics.js.map +1 -0
  277. package/node_modules/@earendil-works/pi-coding-agent/dist/core/settings-manager.d.ts +17 -1
  278. package/node_modules/@earendil-works/pi-coding-agent/dist/core/settings-manager.d.ts.map +1 -1
  279. package/node_modules/@earendil-works/pi-coding-agent/dist/core/settings-manager.js +69 -10
  280. package/node_modules/@earendil-works/pi-coding-agent/dist/core/settings-manager.js.map +1 -1
  281. package/node_modules/@earendil-works/pi-coding-agent/dist/core/skills.d.ts.map +1 -1
  282. package/node_modules/@earendil-works/pi-coding-agent/dist/core/skills.js +51 -33
  283. package/node_modules/@earendil-works/pi-coding-agent/dist/core/skills.js.map +1 -1
  284. package/node_modules/@earendil-works/pi-coding-agent/dist/core/slash-commands.d.ts.map +1 -1
  285. package/node_modules/@earendil-works/pi-coding-agent/dist/core/slash-commands.js +2 -1
  286. package/node_modules/@earendil-works/pi-coding-agent/dist/core/slash-commands.js.map +1 -1
  287. package/node_modules/@earendil-works/pi-coding-agent/dist/core/system-prompt.d.ts.map +1 -1
  288. package/node_modules/@earendil-works/pi-coding-agent/dist/core/system-prompt.js +11 -2
  289. package/node_modules/@earendil-works/pi-coding-agent/dist/core/system-prompt.js.map +1 -1
  290. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/bash.d.ts +14 -1
  291. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/bash.d.ts.map +1 -1
  292. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/bash.js +36 -20
  293. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/bash.js.map +1 -1
  294. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit-diff.d.ts +0 -5
  295. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit-diff.d.ts.map +1 -1
  296. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit-diff.js +2 -5
  297. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit-diff.js.map +1 -1
  298. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit.d.ts.map +1 -1
  299. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit.js +20 -4
  300. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit.js.map +1 -1
  301. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/index.d.ts +4 -1
  302. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/index.d.ts.map +1 -1
  303. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/index.js +18 -1
  304. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/index.js.map +1 -1
  305. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/powershell.d.ts +16 -0
  306. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/powershell.d.ts.map +1 -0
  307. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/powershell.js +39 -0
  308. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/powershell.js.map +1 -0
  309. package/node_modules/@earendil-works/pi-coding-agent/dist/core/trust-manager.d.ts.map +1 -1
  310. package/node_modules/@earendil-works/pi-coding-agent/dist/core/trust-manager.js +2 -1
  311. package/node_modules/@earendil-works/pi-coding-agent/dist/core/trust-manager.js.map +1 -1
  312. package/node_modules/@earendil-works/pi-coding-agent/dist/extensions/llama/client.d.ts +6 -0
  313. package/node_modules/@earendil-works/pi-coding-agent/dist/extensions/llama/client.d.ts.map +1 -1
  314. package/node_modules/@earendil-works/pi-coding-agent/dist/extensions/llama/client.js +7 -0
  315. package/node_modules/@earendil-works/pi-coding-agent/dist/extensions/llama/client.js.map +1 -1
  316. package/node_modules/@earendil-works/pi-coding-agent/dist/extensions/llama/index.d.ts.map +1 -1
  317. package/node_modules/@earendil-works/pi-coding-agent/dist/extensions/llama/index.js +2 -0
  318. package/node_modules/@earendil-works/pi-coding-agent/dist/extensions/llama/index.js.map +1 -1
  319. package/node_modules/@earendil-works/pi-coding-agent/dist/extensions/llama/provider.d.ts +3 -1
  320. package/node_modules/@earendil-works/pi-coding-agent/dist/extensions/llama/provider.d.ts.map +1 -1
  321. package/node_modules/@earendil-works/pi-coding-agent/dist/extensions/llama/provider.js +29 -4
  322. package/node_modules/@earendil-works/pi-coding-agent/dist/extensions/llama/provider.js.map +1 -1
  323. package/node_modules/@earendil-works/pi-coding-agent/dist/index.d.ts +6 -5
  324. package/node_modules/@earendil-works/pi-coding-agent/dist/index.d.ts.map +1 -1
  325. package/node_modules/@earendil-works/pi-coding-agent/dist/index.js +5 -4
  326. package/node_modules/@earendil-works/pi-coding-agent/dist/index.js.map +1 -1
  327. package/node_modules/@earendil-works/pi-coding-agent/dist/main.d.ts +4 -0
  328. package/node_modules/@earendil-works/pi-coding-agent/dist/main.d.ts.map +1 -1
  329. package/node_modules/@earendil-works/pi-coding-agent/dist/main.js +20 -15
  330. package/node_modules/@earendil-works/pi-coding-agent/dist/main.js.map +1 -1
  331. package/node_modules/@earendil-works/pi-coding-agent/dist/migrations.d.ts.map +1 -1
  332. package/node_modules/@earendil-works/pi-coding-agent/dist/migrations.js +4 -3
  333. package/node_modules/@earendil-works/pi-coding-agent/dist/migrations.js.map +1 -1
  334. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/model-selector.d.ts +9 -3
  335. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  336. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/model-selector.js +56 -12
  337. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/model-selector.js.map +1 -1
  338. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/settings-selector.d.ts +9 -2
  339. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  340. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/settings-selector.js +128 -56
  341. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/settings-selector.js.map +1 -1
  342. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/settings-submenu.d.ts +72 -0
  343. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/settings-submenu.d.ts.map +1 -0
  344. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/settings-submenu.js +165 -0
  345. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/settings-submenu.js.map +1 -0
  346. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/thinking-selector.d.ts +15 -3
  347. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  348. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/thinking-selector.js +74 -17
  349. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  350. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/external-editor.d.ts.map +1 -1
  351. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/external-editor.js +2 -1
  352. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/external-editor.js.map +1 -1
  353. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts +15 -0
  354. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  355. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/interactive-mode.js +230 -136
  356. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
  357. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/session-share.d.ts +16 -0
  358. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/session-share.d.ts.map +1 -0
  359. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/session-share.js +188 -0
  360. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/session-share.js.map +1 -0
  361. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  362. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/theme/theme.js +4 -3
  363. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/theme/theme.js.map +1 -1
  364. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/json-event.d.ts +16 -13
  365. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/json-event.d.ts.map +1 -1
  366. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/json-event.js +20 -6
  367. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/json-event.js.map +1 -1
  368. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-client.d.ts +7 -0
  369. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  370. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-client.js +7 -0
  371. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-client.js.map +1 -1
  372. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  373. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-mode.js +3 -0
  374. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-mode.js.map +1 -1
  375. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-types.d.ts +12 -0
  376. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  377. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-types.js.map +1 -1
  378. package/node_modules/@earendil-works/pi-coding-agent/dist/package-manager-cli.d.ts +1 -0
  379. package/node_modules/@earendil-works/pi-coding-agent/dist/package-manager-cli.d.ts.map +1 -1
  380. package/node_modules/@earendil-works/pi-coding-agent/dist/package-manager-cli.js +186 -2
  381. package/node_modules/@earendil-works/pi-coding-agent/dist/package-manager-cli.js.map +1 -1
  382. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/frontmatter.d.ts.map +1 -1
  383. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/frontmatter.js +2 -1
  384. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/frontmatter.js.map +1 -1
  385. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/management-http.d.ts +5 -3
  386. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/management-http.d.ts.map +1 -1
  387. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/management-http.js +14 -10
  388. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/management-http.js.map +1 -1
  389. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/shell.d.ts +3 -0
  390. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/shell.d.ts.map +1 -1
  391. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/shell.js +23 -9
  392. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/shell.js.map +1 -1
  393. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/syntax-highlight.d.ts +1 -0
  394. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/syntax-highlight.d.ts.map +1 -1
  395. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/syntax-highlight.js +60 -1
  396. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/syntax-highlight.js.map +1 -1
  397. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/text.d.ts +8 -0
  398. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/text.d.ts.map +1 -0
  399. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/text.js +9 -0
  400. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/text.js.map +1 -0
  401. package/node_modules/@earendil-works/pi-coding-agent/docs/compaction.md +17 -0
  402. package/node_modules/@earendil-works/pi-coding-agent/docs/custom-provider.md +12 -9
  403. package/node_modules/@earendil-works/pi-coding-agent/docs/environment-variables.md +11 -8
  404. package/node_modules/@earendil-works/pi-coding-agent/docs/extensions.md +35 -7
  405. package/node_modules/@earendil-works/pi-coding-agent/docs/json.md +7 -2
  406. package/node_modules/@earendil-works/pi-coding-agent/docs/keybindings.md +9 -9
  407. package/node_modules/@earendil-works/pi-coding-agent/docs/llama-cpp.md +2 -0
  408. package/node_modules/@earendil-works/pi-coding-agent/docs/models.md +8 -2
  409. package/node_modules/@earendil-works/pi-coding-agent/docs/packages.md +2 -2
  410. package/node_modules/@earendil-works/pi-coding-agent/docs/quickstart.md +1 -1
  411. package/node_modules/@earendil-works/pi-coding-agent/docs/rpc.md +32 -3
  412. package/node_modules/@earendil-works/pi-coding-agent/docs/sdk.md +7 -2
  413. package/node_modules/@earendil-works/pi-coding-agent/docs/settings.md +23 -7
  414. package/node_modules/@earendil-works/pi-coding-agent/docs/skills.md +4 -3
  415. package/node_modules/@earendil-works/pi-coding-agent/docs/terminal-setup.md +23 -9
  416. package/node_modules/@earendil-works/pi-coding-agent/docs/usage.md +10 -5
  417. package/node_modules/@earendil-works/pi-coding-agent/docs/windows.md +24 -2
  418. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/border-status-editor.ts +1 -1
  419. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  420. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-provider-anthropic/package.json +1 -1
  421. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  422. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/git-checkpoint.ts +2 -2
  423. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/gondolin/package-lock.json +2 -2
  424. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/gondolin/package.json +1 -1
  425. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/notify.ts +3 -1
  426. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/sandbox/package-lock.json +2 -2
  427. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/sandbox/package.json +1 -1
  428. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/subagent/README.md +1 -1
  429. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/subagent/index.ts +6 -1
  430. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/titlebar-spinner.ts +1 -1
  431. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/with-deps/package-lock.json +2 -2
  432. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/with-deps/package.json +1 -1
  433. package/node_modules/@earendil-works/pi-coding-agent/examples/rpc-extension-ui.ts +1 -1
  434. package/node_modules/@earendil-works/pi-coding-agent/examples/sdk/06-extensions.ts +1 -1
  435. package/node_modules/@earendil-works/pi-coding-agent/examples/sdk/README.md +1 -1
  436. package/node_modules/@earendil-works/pi-coding-agent/package.json +12 -14
  437. package/node_modules/@earendil-works/pi-protocol/package.json +1 -1
  438. package/node_modules/@earendil-works/pi-telemetry/package.json +2 -2
  439. package/node_modules/@earendil-works/pi-tui/README.md +1 -1
  440. package/node_modules/@earendil-works/pi-tui/dist/autocomplete.d.ts +1 -0
  441. package/node_modules/@earendil-works/pi-tui/dist/autocomplete.d.ts.map +1 -1
  442. package/node_modules/@earendil-works/pi-tui/dist/autocomplete.js +36 -3
  443. package/node_modules/@earendil-works/pi-tui/dist/autocomplete.js.map +1 -1
  444. package/node_modules/@earendil-works/pi-tui/dist/components/markdown.d.ts.map +1 -1
  445. package/node_modules/@earendil-works/pi-tui/dist/components/markdown.js +9 -4
  446. package/node_modules/@earendil-works/pi-tui/dist/components/markdown.js.map +1 -1
  447. package/node_modules/@earendil-works/pi-tui/dist/components/settings-list.d.ts +8 -2
  448. package/node_modules/@earendil-works/pi-tui/dist/components/settings-list.d.ts.map +1 -1
  449. package/node_modules/@earendil-works/pi-tui/dist/components/settings-list.js +24 -4
  450. package/node_modules/@earendil-works/pi-tui/dist/components/settings-list.js.map +1 -1
  451. package/node_modules/@earendil-works/pi-tui/dist/components/text.d.ts.map +1 -1
  452. package/node_modules/@earendil-works/pi-tui/dist/components/text.js +5 -4
  453. package/node_modules/@earendil-works/pi-tui/dist/components/text.js.map +1 -1
  454. package/node_modules/@earendil-works/pi-tui/dist/index.d.ts +1 -1
  455. package/node_modules/@earendil-works/pi-tui/dist/index.d.ts.map +1 -1
  456. package/node_modules/@earendil-works/pi-tui/dist/index.js +1 -1
  457. package/node_modules/@earendil-works/pi-tui/dist/index.js.map +1 -1
  458. package/node_modules/@earendil-works/pi-tui/dist/keybindings.d.ts +2 -2
  459. package/node_modules/@earendil-works/pi-tui/dist/keybindings.d.ts.map +1 -1
  460. package/node_modules/@earendil-works/pi-tui/dist/keybindings.js +2 -2
  461. package/node_modules/@earendil-works/pi-tui/dist/keybindings.js.map +1 -1
  462. package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.d.ts.map +1 -1
  463. package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.js +2 -8
  464. package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.js.map +1 -1
  465. package/node_modules/@earendil-works/pi-tui/dist/native-module-path.d.ts +7 -0
  466. package/node_modules/@earendil-works/pi-tui/dist/native-module-path.d.ts.map +1 -0
  467. package/node_modules/@earendil-works/pi-tui/dist/native-module-path.js +19 -0
  468. package/node_modules/@earendil-works/pi-tui/dist/native-module-path.js.map +1 -0
  469. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.d.ts +2 -0
  470. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.d.ts.map +1 -1
  471. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.js +37 -2
  472. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.js.map +1 -1
  473. package/node_modules/@earendil-works/pi-tui/dist/terminal.d.ts.map +1 -1
  474. package/node_modules/@earendil-works/pi-tui/dist/terminal.js +4 -10
  475. package/node_modules/@earendil-works/pi-tui/dist/terminal.js.map +1 -1
  476. package/node_modules/@earendil-works/pi-tui/dist/tui-alt-screen.d.ts +11 -0
  477. package/node_modules/@earendil-works/pi-tui/dist/tui-alt-screen.d.ts.map +1 -1
  478. package/node_modules/@earendil-works/pi-tui/dist/tui-alt-screen.js +63 -16
  479. package/node_modules/@earendil-works/pi-tui/dist/tui-alt-screen.js.map +1 -1
  480. package/node_modules/@earendil-works/pi-tui/dist/tui-main-screen.d.ts.map +1 -1
  481. package/node_modules/@earendil-works/pi-tui/dist/tui-main-screen.js +105 -45
  482. package/node_modules/@earendil-works/pi-tui/dist/tui-main-screen.js.map +1 -1
  483. package/node_modules/@earendil-works/pi-tui/package.json +1 -1
  484. package/node_modules/@types/node/README.md +1 -1
  485. package/node_modules/@types/node/buffer.buffer.d.ts +10 -5
  486. package/node_modules/@types/node/crypto.d.ts +2 -4
  487. package/node_modules/@types/node/dgram.d.ts +119 -4
  488. package/node_modules/@types/node/fs/promises.d.ts +61 -65
  489. package/node_modules/@types/node/fs.d.ts +86 -76
  490. package/node_modules/@types/node/http.d.ts +17 -1
  491. package/node_modules/@types/node/http2.d.ts +12 -4
  492. package/node_modules/@types/node/index.d.ts +1 -0
  493. package/node_modules/@types/node/inspector.d.ts +2 -1
  494. package/node_modules/@types/node/net.d.ts +108 -16
  495. package/node_modules/@types/node/package.json +2 -2
  496. package/node_modules/@types/node/process.d.ts +52 -0
  497. package/node_modules/@types/node/quic.d.ts +246 -38
  498. package/node_modules/@types/node/sqlite.d.ts +6 -2
  499. package/node_modules/@types/node/stream/iter.d.ts +4 -4
  500. package/node_modules/@types/node/test.d.ts +36 -0
  501. package/node_modules/@types/node/tls.d.ts +24 -0
  502. package/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +5 -0
  503. package/node_modules/@types/node/ts5.6/index.d.ts +1 -0
  504. package/node_modules/@types/node/ts5.7/index.d.ts +1 -0
  505. package/node_modules/@types/node/tty.d.ts +4 -3
  506. package/node_modules/@types/node/vfs.d.ts +210 -0
  507. package/node_modules/@types/node/vm.d.ts +1 -1
  508. package/node_modules/brace-expansion/README.md +1 -2
  509. package/node_modules/brace-expansion/dist/commonjs/index.js +30 -4
  510. package/node_modules/brace-expansion/dist/commonjs/index.js.map +1 -1
  511. package/node_modules/brace-expansion/dist/esm/index.js +30 -4
  512. package/node_modules/brace-expansion/dist/esm/index.js.map +1 -1
  513. package/node_modules/brace-expansion/package.json +1 -1
  514. package/package.json +9 -9
  515. package/src/prism-extensions/integrations/ai-memory-system.ts +14 -9
  516. package/node_modules/@opentelemetry/api/LICENSE +0 -201
  517. package/node_modules/@opentelemetry/api/README.md +0 -116
  518. package/node_modules/@opentelemetry/api/build/esm/api/context.d.ts +0 -41
  519. package/node_modules/@opentelemetry/api/build/esm/api/context.js +0 -110
  520. package/node_modules/@opentelemetry/api/build/esm/api/context.js.map +0 -1
  521. package/node_modules/@opentelemetry/api/build/esm/api/diag.d.ts +0 -30
  522. package/node_modules/@opentelemetry/api/build/esm/api/diag.js +0 -121
  523. package/node_modules/@opentelemetry/api/build/esm/api/diag.js.map +0 -1
  524. package/node_modules/@opentelemetry/api/build/esm/api/metrics.d.ts +0 -28
  525. package/node_modules/@opentelemetry/api/build/esm/api/metrics.js +0 -60
  526. package/node_modules/@opentelemetry/api/build/esm/api/metrics.js.map +0 -1
  527. package/node_modules/@opentelemetry/api/build/esm/api/propagation.d.ts +0 -49
  528. package/node_modules/@opentelemetry/api/build/esm/api/propagation.js +0 -89
  529. package/node_modules/@opentelemetry/api/build/esm/api/propagation.js.map +0 -1
  530. package/node_modules/@opentelemetry/api/build/esm/api/trace.d.ts +0 -40
  531. package/node_modules/@opentelemetry/api/build/esm/api/trace.js +0 -77
  532. package/node_modules/@opentelemetry/api/build/esm/api/trace.js.map +0 -1
  533. package/node_modules/@opentelemetry/api/build/esm/baggage/context-helpers.d.ts +0 -29
  534. package/node_modules/@opentelemetry/api/build/esm/baggage/context-helpers.js +0 -56
  535. package/node_modules/@opentelemetry/api/build/esm/baggage/context-helpers.js.map +0 -1
  536. package/node_modules/@opentelemetry/api/build/esm/baggage/internal/baggage-impl.d.ts +0 -12
  537. package/node_modules/@opentelemetry/api/build/esm/baggage/internal/baggage-impl.js +0 -98
  538. package/node_modules/@opentelemetry/api/build/esm/baggage/internal/baggage-impl.js.map +0 -1
  539. package/node_modules/@opentelemetry/api/build/esm/baggage/internal/symbol.d.ts +0 -5
  540. package/node_modules/@opentelemetry/api/build/esm/baggage/internal/symbol.js +0 -20
  541. package/node_modules/@opentelemetry/api/build/esm/baggage/internal/symbol.js.map +0 -1
  542. package/node_modules/@opentelemetry/api/build/esm/baggage/types.d.ts +0 -60
  543. package/node_modules/@opentelemetry/api/build/esm/baggage/types.js +0 -17
  544. package/node_modules/@opentelemetry/api/build/esm/baggage/types.js.map +0 -1
  545. package/node_modules/@opentelemetry/api/build/esm/baggage/utils.d.ts +0 -15
  546. package/node_modules/@opentelemetry/api/build/esm/baggage/utils.js +0 -47
  547. package/node_modules/@opentelemetry/api/build/esm/baggage/utils.js.map +0 -1
  548. package/node_modules/@opentelemetry/api/build/esm/common/Attributes.d.ts +0 -15
  549. package/node_modules/@opentelemetry/api/build/esm/common/Attributes.js +0 -17
  550. package/node_modules/@opentelemetry/api/build/esm/common/Attributes.js.map +0 -1
  551. package/node_modules/@opentelemetry/api/build/esm/common/Exception.d.ts +0 -26
  552. package/node_modules/@opentelemetry/api/build/esm/common/Exception.js +0 -17
  553. package/node_modules/@opentelemetry/api/build/esm/common/Exception.js.map +0 -1
  554. package/node_modules/@opentelemetry/api/build/esm/common/Time.d.ts +0 -20
  555. package/node_modules/@opentelemetry/api/build/esm/common/Time.js +0 -2
  556. package/node_modules/@opentelemetry/api/build/esm/common/Time.js.map +0 -1
  557. package/node_modules/@opentelemetry/api/build/esm/context/NoopContextManager.d.ts +0 -9
  558. package/node_modules/@opentelemetry/api/build/esm/context/NoopContextManager.js +0 -67
  559. package/node_modules/@opentelemetry/api/build/esm/context/NoopContextManager.js.map +0 -1
  560. package/node_modules/@opentelemetry/api/build/esm/context/context.d.ts +0 -6
  561. package/node_modules/@opentelemetry/api/build/esm/context/context.js +0 -52
  562. package/node_modules/@opentelemetry/api/build/esm/context/context.js.map +0 -1
  563. package/node_modules/@opentelemetry/api/build/esm/context/types.d.ts +0 -52
  564. package/node_modules/@opentelemetry/api/build/esm/context/types.js +0 -17
  565. package/node_modules/@opentelemetry/api/build/esm/context/types.js.map +0 -1
  566. package/node_modules/@opentelemetry/api/build/esm/context-api.d.ts +0 -4
  567. package/node_modules/@opentelemetry/api/build/esm/context-api.js +0 -21
  568. package/node_modules/@opentelemetry/api/build/esm/context-api.js.map +0 -1
  569. package/node_modules/@opentelemetry/api/build/esm/diag/ComponentLogger.d.ts +0 -20
  570. package/node_modules/@opentelemetry/api/build/esm/diag/ComponentLogger.js +0 -102
  571. package/node_modules/@opentelemetry/api/build/esm/diag/ComponentLogger.js.map +0 -1
  572. package/node_modules/@opentelemetry/api/build/esm/diag/consoleLogger.d.ts +0 -38
  573. package/node_modules/@opentelemetry/api/build/esm/diag/consoleLogger.js +0 -59
  574. package/node_modules/@opentelemetry/api/build/esm/diag/consoleLogger.js.map +0 -1
  575. package/node_modules/@opentelemetry/api/build/esm/diag/internal/logLevelLogger.d.ts +0 -3
  576. package/node_modules/@opentelemetry/api/build/esm/diag/internal/logLevelLogger.js +0 -41
  577. package/node_modules/@opentelemetry/api/build/esm/diag/internal/logLevelLogger.js.map +0 -1
  578. package/node_modules/@opentelemetry/api/build/esm/diag/internal/noopLogger.d.ts +0 -8
  579. package/node_modules/@opentelemetry/api/build/esm/diag/internal/noopLogger.js +0 -31
  580. package/node_modules/@opentelemetry/api/build/esm/diag/internal/noopLogger.js.map +0 -1
  581. package/node_modules/@opentelemetry/api/build/esm/diag/types.d.ts +0 -100
  582. package/node_modules/@opentelemetry/api/build/esm/diag/types.js +0 -41
  583. package/node_modules/@opentelemetry/api/build/esm/diag/types.js.map +0 -1
  584. package/node_modules/@opentelemetry/api/build/esm/diag-api.d.ts +0 -9
  585. package/node_modules/@opentelemetry/api/build/esm/diag-api.js +0 -26
  586. package/node_modules/@opentelemetry/api/build/esm/diag-api.js.map +0 -1
  587. package/node_modules/@opentelemetry/api/build/esm/experimental/index.d.ts +0 -3
  588. package/node_modules/@opentelemetry/api/build/esm/experimental/index.js +0 -17
  589. package/node_modules/@opentelemetry/api/build/esm/experimental/index.js.map +0 -1
  590. package/node_modules/@opentelemetry/api/build/esm/experimental/trace/SugaredOptions.d.ts +0 -13
  591. package/node_modules/@opentelemetry/api/build/esm/experimental/trace/SugaredOptions.js +0 -17
  592. package/node_modules/@opentelemetry/api/build/esm/experimental/trace/SugaredOptions.js.map +0 -1
  593. package/node_modules/@opentelemetry/api/build/esm/experimental/trace/SugaredTracer.d.ts +0 -64
  594. package/node_modules/@opentelemetry/api/build/esm/experimental/trace/SugaredTracer.js +0 -92
  595. package/node_modules/@opentelemetry/api/build/esm/experimental/trace/SugaredTracer.js.map +0 -1
  596. package/node_modules/@opentelemetry/api/build/esm/index.d.ts +0 -54
  597. package/node_modules/@opentelemetry/api/build/esm/index.js +0 -53
  598. package/node_modules/@opentelemetry/api/build/esm/index.js.map +0 -1
  599. package/node_modules/@opentelemetry/api/build/esm/internal/global-utils.d.ts +0 -18
  600. package/node_modules/@opentelemetry/api/build/esm/internal/global-utils.js +0 -59
  601. package/node_modules/@opentelemetry/api/build/esm/internal/global-utils.js.map +0 -1
  602. package/node_modules/@opentelemetry/api/build/esm/internal/semver.d.ts +0 -34
  603. package/node_modules/@opentelemetry/api/build/esm/internal/semver.js +0 -118
  604. package/node_modules/@opentelemetry/api/build/esm/internal/semver.js.map +0 -1
  605. package/node_modules/@opentelemetry/api/build/esm/metrics/Meter.d.ts +0 -110
  606. package/node_modules/@opentelemetry/api/build/esm/metrics/Meter.js +0 -17
  607. package/node_modules/@opentelemetry/api/build/esm/metrics/Meter.js.map +0 -1
  608. package/node_modules/@opentelemetry/api/build/esm/metrics/MeterProvider.d.ts +0 -17
  609. package/node_modules/@opentelemetry/api/build/esm/metrics/MeterProvider.js +0 -17
  610. package/node_modules/@opentelemetry/api/build/esm/metrics/MeterProvider.js.map +0 -1
  611. package/node_modules/@opentelemetry/api/build/esm/metrics/Metric.d.ts +0 -115
  612. package/node_modules/@opentelemetry/api/build/esm/metrics/Metric.js +0 -22
  613. package/node_modules/@opentelemetry/api/build/esm/metrics/Metric.js.map +0 -1
  614. package/node_modules/@opentelemetry/api/build/esm/metrics/NoopMeter.d.ts +0 -82
  615. package/node_modules/@opentelemetry/api/build/esm/metrics/NoopMeter.js +0 -181
  616. package/node_modules/@opentelemetry/api/build/esm/metrics/NoopMeter.js.map +0 -1
  617. package/node_modules/@opentelemetry/api/build/esm/metrics/NoopMeterProvider.d.ts +0 -11
  618. package/node_modules/@opentelemetry/api/build/esm/metrics/NoopMeterProvider.js +0 -31
  619. package/node_modules/@opentelemetry/api/build/esm/metrics/NoopMeterProvider.js.map +0 -1
  620. package/node_modules/@opentelemetry/api/build/esm/metrics/ObservableResult.d.ts +0 -31
  621. package/node_modules/@opentelemetry/api/build/esm/metrics/ObservableResult.js +0 -17
  622. package/node_modules/@opentelemetry/api/build/esm/metrics/ObservableResult.js.map +0 -1
  623. package/node_modules/@opentelemetry/api/build/esm/metrics-api.d.ts +0 -4
  624. package/node_modules/@opentelemetry/api/build/esm/metrics-api.js +0 -21
  625. package/node_modules/@opentelemetry/api/build/esm/metrics-api.js.map +0 -1
  626. package/node_modules/@opentelemetry/api/build/esm/platform/browser/globalThis.d.ts +0 -10
  627. package/node_modules/@opentelemetry/api/build/esm/platform/browser/globalThis.js +0 -35
  628. package/node_modules/@opentelemetry/api/build/esm/platform/browser/globalThis.js.map +0 -1
  629. package/node_modules/@opentelemetry/api/build/esm/platform/browser/index.d.ts +0 -2
  630. package/node_modules/@opentelemetry/api/build/esm/platform/browser/index.js +0 -17
  631. package/node_modules/@opentelemetry/api/build/esm/platform/browser/index.js.map +0 -1
  632. package/node_modules/@opentelemetry/api/build/esm/platform/index.d.ts +0 -2
  633. package/node_modules/@opentelemetry/api/build/esm/platform/index.js +0 -17
  634. package/node_modules/@opentelemetry/api/build/esm/platform/index.js.map +0 -1
  635. package/node_modules/@opentelemetry/api/build/esm/platform/node/globalThis.d.ts +0 -3
  636. package/node_modules/@opentelemetry/api/build/esm/platform/node/globalThis.js +0 -19
  637. package/node_modules/@opentelemetry/api/build/esm/platform/node/globalThis.js.map +0 -1
  638. package/node_modules/@opentelemetry/api/build/esm/platform/node/index.d.ts +0 -2
  639. package/node_modules/@opentelemetry/api/build/esm/platform/node/index.js +0 -17
  640. package/node_modules/@opentelemetry/api/build/esm/platform/node/index.js.map +0 -1
  641. package/node_modules/@opentelemetry/api/build/esm/propagation/NoopTextMapPropagator.d.ts +0 -13
  642. package/node_modules/@opentelemetry/api/build/esm/propagation/NoopTextMapPropagator.js +0 -34
  643. package/node_modules/@opentelemetry/api/build/esm/propagation/NoopTextMapPropagator.js.map +0 -1
  644. package/node_modules/@opentelemetry/api/build/esm/propagation/TextMapPropagator.d.ts +0 -84
  645. package/node_modules/@opentelemetry/api/build/esm/propagation/TextMapPropagator.js +0 -38
  646. package/node_modules/@opentelemetry/api/build/esm/propagation/TextMapPropagator.js.map +0 -1
  647. package/node_modules/@opentelemetry/api/build/esm/propagation-api.d.ts +0 -4
  648. package/node_modules/@opentelemetry/api/build/esm/propagation-api.js +0 -21
  649. package/node_modules/@opentelemetry/api/build/esm/propagation-api.js.map +0 -1
  650. package/node_modules/@opentelemetry/api/build/esm/trace/NonRecordingSpan.d.ts +0 -28
  651. package/node_modules/@opentelemetry/api/build/esm/trace/NonRecordingSpan.js +0 -68
  652. package/node_modules/@opentelemetry/api/build/esm/trace/NonRecordingSpan.js.map +0 -1
  653. package/node_modules/@opentelemetry/api/build/esm/trace/NoopTracer.d.ts +0 -14
  654. package/node_modules/@opentelemetry/api/build/esm/trace/NoopTracer.js +0 -76
  655. package/node_modules/@opentelemetry/api/build/esm/trace/NoopTracer.js.map +0 -1
  656. package/node_modules/@opentelemetry/api/build/esm/trace/NoopTracerProvider.d.ts +0 -13
  657. package/node_modules/@opentelemetry/api/build/esm/trace/NoopTracerProvider.js +0 -32
  658. package/node_modules/@opentelemetry/api/build/esm/trace/NoopTracerProvider.js.map +0 -1
  659. package/node_modules/@opentelemetry/api/build/esm/trace/ProxyTracer.d.ts +0 -27
  660. package/node_modules/@opentelemetry/api/build/esm/trace/ProxyTracer.js +0 -53
  661. package/node_modules/@opentelemetry/api/build/esm/trace/ProxyTracer.js.map +0 -1
  662. package/node_modules/@opentelemetry/api/build/esm/trace/ProxyTracerProvider.d.ts +0 -25
  663. package/node_modules/@opentelemetry/api/build/esm/trace/ProxyTracerProvider.js +0 -54
  664. package/node_modules/@opentelemetry/api/build/esm/trace/ProxyTracerProvider.js.map +0 -1
  665. package/node_modules/@opentelemetry/api/build/esm/trace/Sampler.d.ts +0 -31
  666. package/node_modules/@opentelemetry/api/build/esm/trace/Sampler.js +0 -17
  667. package/node_modules/@opentelemetry/api/build/esm/trace/Sampler.js.map +0 -1
  668. package/node_modules/@opentelemetry/api/build/esm/trace/SamplingResult.d.ts +0 -49
  669. package/node_modules/@opentelemetry/api/build/esm/trace/SamplingResult.js +0 -39
  670. package/node_modules/@opentelemetry/api/build/esm/trace/SamplingResult.js.map +0 -1
  671. package/node_modules/@opentelemetry/api/build/esm/trace/SpanOptions.d.ts +0 -23
  672. package/node_modules/@opentelemetry/api/build/esm/trace/SpanOptions.js +0 -17
  673. package/node_modules/@opentelemetry/api/build/esm/trace/SpanOptions.js.map +0 -1
  674. package/node_modules/@opentelemetry/api/build/esm/trace/attributes.d.ts +0 -10
  675. package/node_modules/@opentelemetry/api/build/esm/trace/attributes.js +0 -17
  676. package/node_modules/@opentelemetry/api/build/esm/trace/attributes.js.map +0 -1
  677. package/node_modules/@opentelemetry/api/build/esm/trace/context-utils.d.ts +0 -41
  678. package/node_modules/@opentelemetry/api/build/esm/trace/context-utils.js +0 -73
  679. package/node_modules/@opentelemetry/api/build/esm/trace/context-utils.js.map +0 -1
  680. package/node_modules/@opentelemetry/api/build/esm/trace/internal/tracestate-impl.d.ts +0 -22
  681. package/node_modules/@opentelemetry/api/build/esm/trace/internal/tracestate-impl.js +0 -102
  682. package/node_modules/@opentelemetry/api/build/esm/trace/internal/tracestate-impl.js.map +0 -1
  683. package/node_modules/@opentelemetry/api/build/esm/trace/internal/tracestate-validators.d.ts +0 -15
  684. package/node_modules/@opentelemetry/api/build/esm/trace/internal/tracestate-validators.js +0 -41
  685. package/node_modules/@opentelemetry/api/build/esm/trace/internal/tracestate-validators.js.map +0 -1
  686. package/node_modules/@opentelemetry/api/build/esm/trace/internal/utils.d.ts +0 -3
  687. package/node_modules/@opentelemetry/api/build/esm/trace/internal/utils.js +0 -20
  688. package/node_modules/@opentelemetry/api/build/esm/trace/internal/utils.js.map +0 -1
  689. package/node_modules/@opentelemetry/api/build/esm/trace/invalid-span-constants.d.ts +0 -5
  690. package/node_modules/@opentelemetry/api/build/esm/trace/invalid-span-constants.js +0 -24
  691. package/node_modules/@opentelemetry/api/build/esm/trace/invalid-span-constants.js.map +0 -1
  692. package/node_modules/@opentelemetry/api/build/esm/trace/link.d.ts +0 -26
  693. package/node_modules/@opentelemetry/api/build/esm/trace/link.js +0 -17
  694. package/node_modules/@opentelemetry/api/build/esm/trace/link.js.map +0 -1
  695. package/node_modules/@opentelemetry/api/build/esm/trace/span.d.ts +0 -120
  696. package/node_modules/@opentelemetry/api/build/esm/trace/span.js +0 -17
  697. package/node_modules/@opentelemetry/api/build/esm/trace/span.js.map +0 -1
  698. package/node_modules/@opentelemetry/api/build/esm/trace/span_context.d.ts +0 -53
  699. package/node_modules/@opentelemetry/api/build/esm/trace/span_context.js +0 -17
  700. package/node_modules/@opentelemetry/api/build/esm/trace/span_context.js.map +0 -1
  701. package/node_modules/@opentelemetry/api/build/esm/trace/span_kind.d.ts +0 -27
  702. package/node_modules/@opentelemetry/api/build/esm/trace/span_kind.js +0 -43
  703. package/node_modules/@opentelemetry/api/build/esm/trace/span_kind.js.map +0 -1
  704. package/node_modules/@opentelemetry/api/build/esm/trace/spancontext-utils.d.ts +0 -17
  705. package/node_modules/@opentelemetry/api/build/esm/trace/spancontext-utils.js +0 -42
  706. package/node_modules/@opentelemetry/api/build/esm/trace/spancontext-utils.js.map +0 -1
  707. package/node_modules/@opentelemetry/api/build/esm/trace/status.d.ts +0 -25
  708. package/node_modules/@opentelemetry/api/build/esm/trace/status.js +0 -20
  709. package/node_modules/@opentelemetry/api/build/esm/trace/status.js.map +0 -1
  710. package/node_modules/@opentelemetry/api/build/esm/trace/trace_flags.d.ts +0 -7
  711. package/node_modules/@opentelemetry/api/build/esm/trace/trace_flags.js +0 -23
  712. package/node_modules/@opentelemetry/api/build/esm/trace/trace_flags.js.map +0 -1
  713. package/node_modules/@opentelemetry/api/build/esm/trace/trace_state.d.ts +0 -38
  714. package/node_modules/@opentelemetry/api/build/esm/trace/trace_state.js +0 -17
  715. package/node_modules/@opentelemetry/api/build/esm/trace/trace_state.js.map +0 -1
  716. package/node_modules/@opentelemetry/api/build/esm/trace/tracer.d.ts +0 -71
  717. package/node_modules/@opentelemetry/api/build/esm/trace/tracer.js +0 -17
  718. package/node_modules/@opentelemetry/api/build/esm/trace/tracer.js.map +0 -1
  719. package/node_modules/@opentelemetry/api/build/esm/trace/tracer_options.d.ts +0 -10
  720. package/node_modules/@opentelemetry/api/build/esm/trace/tracer_options.js +0 -17
  721. package/node_modules/@opentelemetry/api/build/esm/trace/tracer_options.js.map +0 -1
  722. package/node_modules/@opentelemetry/api/build/esm/trace/tracer_provider.d.ts +0 -21
  723. package/node_modules/@opentelemetry/api/build/esm/trace/tracer_provider.js +0 -17
  724. package/node_modules/@opentelemetry/api/build/esm/trace/tracer_provider.js.map +0 -1
  725. package/node_modules/@opentelemetry/api/build/esm/trace-api.d.ts +0 -4
  726. package/node_modules/@opentelemetry/api/build/esm/trace-api.js +0 -21
  727. package/node_modules/@opentelemetry/api/build/esm/trace-api.js.map +0 -1
  728. package/node_modules/@opentelemetry/api/build/esm/version.d.ts +0 -2
  729. package/node_modules/@opentelemetry/api/build/esm/version.js +0 -18
  730. package/node_modules/@opentelemetry/api/build/esm/version.js.map +0 -1
  731. package/node_modules/@opentelemetry/api/build/esnext/api/context.d.ts +0 -41
  732. package/node_modules/@opentelemetry/api/build/esnext/api/context.js +0 -77
  733. package/node_modules/@opentelemetry/api/build/esnext/api/context.js.map +0 -1
  734. package/node_modules/@opentelemetry/api/build/esnext/api/diag.d.ts +0 -30
  735. package/node_modules/@opentelemetry/api/build/esnext/api/diag.js +0 -89
  736. package/node_modules/@opentelemetry/api/build/esnext/api/diag.js.map +0 -1
  737. package/node_modules/@opentelemetry/api/build/esnext/api/metrics.d.ts +0 -28
  738. package/node_modules/@opentelemetry/api/build/esnext/api/metrics.js +0 -57
  739. package/node_modules/@opentelemetry/api/build/esnext/api/metrics.js.map +0 -1
  740. package/node_modules/@opentelemetry/api/build/esnext/api/propagation.d.ts +0 -49
  741. package/node_modules/@opentelemetry/api/build/esnext/api/propagation.js +0 -85
  742. package/node_modules/@opentelemetry/api/build/esnext/api/propagation.js.map +0 -1
  743. package/node_modules/@opentelemetry/api/build/esnext/api/trace.d.ts +0 -40
  744. package/node_modules/@opentelemetry/api/build/esnext/api/trace.js +0 -75
  745. package/node_modules/@opentelemetry/api/build/esnext/api/trace.js.map +0 -1
  746. package/node_modules/@opentelemetry/api/build/esnext/baggage/context-helpers.d.ts +0 -29
  747. package/node_modules/@opentelemetry/api/build/esnext/baggage/context-helpers.js +0 -56
  748. package/node_modules/@opentelemetry/api/build/esnext/baggage/context-helpers.js.map +0 -1
  749. package/node_modules/@opentelemetry/api/build/esnext/baggage/internal/baggage-impl.d.ts +0 -12
  750. package/node_modules/@opentelemetry/api/build/esnext/baggage/internal/baggage-impl.js +0 -51
  751. package/node_modules/@opentelemetry/api/build/esnext/baggage/internal/baggage-impl.js.map +0 -1
  752. package/node_modules/@opentelemetry/api/build/esnext/baggage/internal/symbol.d.ts +0 -5
  753. package/node_modules/@opentelemetry/api/build/esnext/baggage/internal/symbol.js +0 -20
  754. package/node_modules/@opentelemetry/api/build/esnext/baggage/internal/symbol.js.map +0 -1
  755. package/node_modules/@opentelemetry/api/build/esnext/baggage/types.d.ts +0 -60
  756. package/node_modules/@opentelemetry/api/build/esnext/baggage/types.js +0 -17
  757. package/node_modules/@opentelemetry/api/build/esnext/baggage/types.js.map +0 -1
  758. package/node_modules/@opentelemetry/api/build/esnext/baggage/utils.d.ts +0 -15
  759. package/node_modules/@opentelemetry/api/build/esnext/baggage/utils.js +0 -46
  760. package/node_modules/@opentelemetry/api/build/esnext/baggage/utils.js.map +0 -1
  761. package/node_modules/@opentelemetry/api/build/esnext/common/Attributes.d.ts +0 -15
  762. package/node_modules/@opentelemetry/api/build/esnext/common/Attributes.js +0 -17
  763. package/node_modules/@opentelemetry/api/build/esnext/common/Attributes.js.map +0 -1
  764. package/node_modules/@opentelemetry/api/build/esnext/common/Exception.d.ts +0 -26
  765. package/node_modules/@opentelemetry/api/build/esnext/common/Exception.js +0 -17
  766. package/node_modules/@opentelemetry/api/build/esnext/common/Exception.js.map +0 -1
  767. package/node_modules/@opentelemetry/api/build/esnext/common/Time.d.ts +0 -20
  768. package/node_modules/@opentelemetry/api/build/esnext/common/Time.js +0 -2
  769. package/node_modules/@opentelemetry/api/build/esnext/common/Time.js.map +0 -1
  770. package/node_modules/@opentelemetry/api/build/esnext/context/NoopContextManager.d.ts +0 -9
  771. package/node_modules/@opentelemetry/api/build/esnext/context/NoopContextManager.js +0 -34
  772. package/node_modules/@opentelemetry/api/build/esnext/context/NoopContextManager.js.map +0 -1
  773. package/node_modules/@opentelemetry/api/build/esnext/context/context.d.ts +0 -6
  774. package/node_modules/@opentelemetry/api/build/esnext/context/context.js +0 -51
  775. package/node_modules/@opentelemetry/api/build/esnext/context/context.js.map +0 -1
  776. package/node_modules/@opentelemetry/api/build/esnext/context/types.d.ts +0 -52
  777. package/node_modules/@opentelemetry/api/build/esnext/context/types.js +0 -17
  778. package/node_modules/@opentelemetry/api/build/esnext/context/types.js.map +0 -1
  779. package/node_modules/@opentelemetry/api/build/esnext/context-api.d.ts +0 -4
  780. package/node_modules/@opentelemetry/api/build/esnext/context-api.js +0 -21
  781. package/node_modules/@opentelemetry/api/build/esnext/context-api.js.map +0 -1
  782. package/node_modules/@opentelemetry/api/build/esnext/diag/ComponentLogger.d.ts +0 -20
  783. package/node_modules/@opentelemetry/api/build/esnext/diag/ComponentLogger.js +0 -55
  784. package/node_modules/@opentelemetry/api/build/esnext/diag/ComponentLogger.js.map +0 -1
  785. package/node_modules/@opentelemetry/api/build/esnext/diag/consoleLogger.d.ts +0 -38
  786. package/node_modules/@opentelemetry/api/build/esnext/diag/consoleLogger.js +0 -53
  787. package/node_modules/@opentelemetry/api/build/esnext/diag/consoleLogger.js.map +0 -1
  788. package/node_modules/@opentelemetry/api/build/esnext/diag/internal/logLevelLogger.d.ts +0 -3
  789. package/node_modules/@opentelemetry/api/build/esnext/diag/internal/logLevelLogger.js +0 -41
  790. package/node_modules/@opentelemetry/api/build/esnext/diag/internal/logLevelLogger.js.map +0 -1
  791. package/node_modules/@opentelemetry/api/build/esnext/diag/internal/noopLogger.d.ts +0 -8
  792. package/node_modules/@opentelemetry/api/build/esnext/diag/internal/noopLogger.js +0 -31
  793. package/node_modules/@opentelemetry/api/build/esnext/diag/internal/noopLogger.js.map +0 -1
  794. package/node_modules/@opentelemetry/api/build/esnext/diag/types.d.ts +0 -100
  795. package/node_modules/@opentelemetry/api/build/esnext/diag/types.js +0 -41
  796. package/node_modules/@opentelemetry/api/build/esnext/diag/types.js.map +0 -1
  797. package/node_modules/@opentelemetry/api/build/esnext/diag-api.d.ts +0 -9
  798. package/node_modules/@opentelemetry/api/build/esnext/diag-api.js +0 -26
  799. package/node_modules/@opentelemetry/api/build/esnext/diag-api.js.map +0 -1
  800. package/node_modules/@opentelemetry/api/build/esnext/experimental/index.d.ts +0 -3
  801. package/node_modules/@opentelemetry/api/build/esnext/experimental/index.js +0 -17
  802. package/node_modules/@opentelemetry/api/build/esnext/experimental/index.js.map +0 -1
  803. package/node_modules/@opentelemetry/api/build/esnext/experimental/trace/SugaredOptions.d.ts +0 -13
  804. package/node_modules/@opentelemetry/api/build/esnext/experimental/trace/SugaredOptions.js +0 -17
  805. package/node_modules/@opentelemetry/api/build/esnext/experimental/trace/SugaredOptions.js.map +0 -1
  806. package/node_modules/@opentelemetry/api/build/esnext/experimental/trace/SugaredTracer.d.ts +0 -64
  807. package/node_modules/@opentelemetry/api/build/esnext/experimental/trace/SugaredTracer.js +0 -88
  808. package/node_modules/@opentelemetry/api/build/esnext/experimental/trace/SugaredTracer.js.map +0 -1
  809. package/node_modules/@opentelemetry/api/build/esnext/index.d.ts +0 -54
  810. package/node_modules/@opentelemetry/api/build/esnext/index.js +0 -53
  811. package/node_modules/@opentelemetry/api/build/esnext/index.js.map +0 -1
  812. package/node_modules/@opentelemetry/api/build/esnext/internal/global-utils.d.ts +0 -18
  813. package/node_modules/@opentelemetry/api/build/esnext/internal/global-utils.js +0 -58
  814. package/node_modules/@opentelemetry/api/build/esnext/internal/global-utils.js.map +0 -1
  815. package/node_modules/@opentelemetry/api/build/esnext/internal/semver.d.ts +0 -34
  816. package/node_modules/@opentelemetry/api/build/esnext/internal/semver.js +0 -118
  817. package/node_modules/@opentelemetry/api/build/esnext/internal/semver.js.map +0 -1
  818. package/node_modules/@opentelemetry/api/build/esnext/metrics/Meter.d.ts +0 -110
  819. package/node_modules/@opentelemetry/api/build/esnext/metrics/Meter.js +0 -17
  820. package/node_modules/@opentelemetry/api/build/esnext/metrics/Meter.js.map +0 -1
  821. package/node_modules/@opentelemetry/api/build/esnext/metrics/MeterProvider.d.ts +0 -17
  822. package/node_modules/@opentelemetry/api/build/esnext/metrics/MeterProvider.js +0 -17
  823. package/node_modules/@opentelemetry/api/build/esnext/metrics/MeterProvider.js.map +0 -1
  824. package/node_modules/@opentelemetry/api/build/esnext/metrics/Metric.d.ts +0 -115
  825. package/node_modules/@opentelemetry/api/build/esnext/metrics/Metric.js +0 -22
  826. package/node_modules/@opentelemetry/api/build/esnext/metrics/Metric.js.map +0 -1
  827. package/node_modules/@opentelemetry/api/build/esnext/metrics/NoopMeter.d.ts +0 -82
  828. package/node_modules/@opentelemetry/api/build/esnext/metrics/NoopMeter.js +0 -113
  829. package/node_modules/@opentelemetry/api/build/esnext/metrics/NoopMeter.js.map +0 -1
  830. package/node_modules/@opentelemetry/api/build/esnext/metrics/NoopMeterProvider.d.ts +0 -11
  831. package/node_modules/@opentelemetry/api/build/esnext/metrics/NoopMeterProvider.js +0 -27
  832. package/node_modules/@opentelemetry/api/build/esnext/metrics/NoopMeterProvider.js.map +0 -1
  833. package/node_modules/@opentelemetry/api/build/esnext/metrics/ObservableResult.d.ts +0 -31
  834. package/node_modules/@opentelemetry/api/build/esnext/metrics/ObservableResult.js +0 -17
  835. package/node_modules/@opentelemetry/api/build/esnext/metrics/ObservableResult.js.map +0 -1
  836. package/node_modules/@opentelemetry/api/build/esnext/metrics-api.d.ts +0 -4
  837. package/node_modules/@opentelemetry/api/build/esnext/metrics-api.js +0 -21
  838. package/node_modules/@opentelemetry/api/build/esnext/metrics-api.js.map +0 -1
  839. package/node_modules/@opentelemetry/api/build/esnext/platform/browser/globalThis.d.ts +0 -10
  840. package/node_modules/@opentelemetry/api/build/esnext/platform/browser/globalThis.js +0 -35
  841. package/node_modules/@opentelemetry/api/build/esnext/platform/browser/globalThis.js.map +0 -1
  842. package/node_modules/@opentelemetry/api/build/esnext/platform/browser/index.d.ts +0 -2
  843. package/node_modules/@opentelemetry/api/build/esnext/platform/browser/index.js +0 -17
  844. package/node_modules/@opentelemetry/api/build/esnext/platform/browser/index.js.map +0 -1
  845. package/node_modules/@opentelemetry/api/build/esnext/platform/index.d.ts +0 -2
  846. package/node_modules/@opentelemetry/api/build/esnext/platform/index.js +0 -17
  847. package/node_modules/@opentelemetry/api/build/esnext/platform/index.js.map +0 -1
  848. package/node_modules/@opentelemetry/api/build/esnext/platform/node/globalThis.d.ts +0 -3
  849. package/node_modules/@opentelemetry/api/build/esnext/platform/node/globalThis.js +0 -19
  850. package/node_modules/@opentelemetry/api/build/esnext/platform/node/globalThis.js.map +0 -1
  851. package/node_modules/@opentelemetry/api/build/esnext/platform/node/index.d.ts +0 -2
  852. package/node_modules/@opentelemetry/api/build/esnext/platform/node/index.js +0 -17
  853. package/node_modules/@opentelemetry/api/build/esnext/platform/node/index.js.map +0 -1
  854. package/node_modules/@opentelemetry/api/build/esnext/propagation/NoopTextMapPropagator.d.ts +0 -13
  855. package/node_modules/@opentelemetry/api/build/esnext/propagation/NoopTextMapPropagator.js +0 -30
  856. package/node_modules/@opentelemetry/api/build/esnext/propagation/NoopTextMapPropagator.js.map +0 -1
  857. package/node_modules/@opentelemetry/api/build/esnext/propagation/TextMapPropagator.d.ts +0 -84
  858. package/node_modules/@opentelemetry/api/build/esnext/propagation/TextMapPropagator.js +0 -38
  859. package/node_modules/@opentelemetry/api/build/esnext/propagation/TextMapPropagator.js.map +0 -1
  860. package/node_modules/@opentelemetry/api/build/esnext/propagation-api.d.ts +0 -4
  861. package/node_modules/@opentelemetry/api/build/esnext/propagation-api.js +0 -21
  862. package/node_modules/@opentelemetry/api/build/esnext/propagation-api.js.map +0 -1
  863. package/node_modules/@opentelemetry/api/build/esnext/trace/NonRecordingSpan.d.ts +0 -28
  864. package/node_modules/@opentelemetry/api/build/esnext/trace/NonRecordingSpan.js +0 -65
  865. package/node_modules/@opentelemetry/api/build/esnext/trace/NonRecordingSpan.js.map +0 -1
  866. package/node_modules/@opentelemetry/api/build/esnext/trace/NoopTracer.d.ts +0 -14
  867. package/node_modules/@opentelemetry/api/build/esnext/trace/NoopTracer.js +0 -71
  868. package/node_modules/@opentelemetry/api/build/esnext/trace/NoopTracer.js.map +0 -1
  869. package/node_modules/@opentelemetry/api/build/esnext/trace/NoopTracerProvider.d.ts +0 -13
  870. package/node_modules/@opentelemetry/api/build/esnext/trace/NoopTracerProvider.js +0 -28
  871. package/node_modules/@opentelemetry/api/build/esnext/trace/NoopTracerProvider.js.map +0 -1
  872. package/node_modules/@opentelemetry/api/build/esnext/trace/ProxyTracer.d.ts +0 -27
  873. package/node_modules/@opentelemetry/api/build/esnext/trace/ProxyTracer.js +0 -51
  874. package/node_modules/@opentelemetry/api/build/esnext/trace/ProxyTracer.js.map +0 -1
  875. package/node_modules/@opentelemetry/api/build/esnext/trace/ProxyTracerProvider.d.ts +0 -25
  876. package/node_modules/@opentelemetry/api/build/esnext/trace/ProxyTracerProvider.js +0 -50
  877. package/node_modules/@opentelemetry/api/build/esnext/trace/ProxyTracerProvider.js.map +0 -1
  878. package/node_modules/@opentelemetry/api/build/esnext/trace/Sampler.d.ts +0 -31
  879. package/node_modules/@opentelemetry/api/build/esnext/trace/Sampler.js +0 -17
  880. package/node_modules/@opentelemetry/api/build/esnext/trace/Sampler.js.map +0 -1
  881. package/node_modules/@opentelemetry/api/build/esnext/trace/SamplingResult.d.ts +0 -49
  882. package/node_modules/@opentelemetry/api/build/esnext/trace/SamplingResult.js +0 -39
  883. package/node_modules/@opentelemetry/api/build/esnext/trace/SamplingResult.js.map +0 -1
  884. package/node_modules/@opentelemetry/api/build/esnext/trace/SpanOptions.d.ts +0 -23
  885. package/node_modules/@opentelemetry/api/build/esnext/trace/SpanOptions.js +0 -17
  886. package/node_modules/@opentelemetry/api/build/esnext/trace/SpanOptions.js.map +0 -1
  887. package/node_modules/@opentelemetry/api/build/esnext/trace/attributes.d.ts +0 -10
  888. package/node_modules/@opentelemetry/api/build/esnext/trace/attributes.js +0 -17
  889. package/node_modules/@opentelemetry/api/build/esnext/trace/attributes.js.map +0 -1
  890. package/node_modules/@opentelemetry/api/build/esnext/trace/context-utils.d.ts +0 -41
  891. package/node_modules/@opentelemetry/api/build/esnext/trace/context-utils.js +0 -73
  892. package/node_modules/@opentelemetry/api/build/esnext/trace/context-utils.js.map +0 -1
  893. package/node_modules/@opentelemetry/api/build/esnext/trace/internal/tracestate-impl.d.ts +0 -22
  894. package/node_modules/@opentelemetry/api/build/esnext/trace/internal/tracestate-impl.js +0 -99
  895. package/node_modules/@opentelemetry/api/build/esnext/trace/internal/tracestate-impl.js.map +0 -1
  896. package/node_modules/@opentelemetry/api/build/esnext/trace/internal/tracestate-validators.d.ts +0 -15
  897. package/node_modules/@opentelemetry/api/build/esnext/trace/internal/tracestate-validators.js +0 -41
  898. package/node_modules/@opentelemetry/api/build/esnext/trace/internal/tracestate-validators.js.map +0 -1
  899. package/node_modules/@opentelemetry/api/build/esnext/trace/internal/utils.d.ts +0 -3
  900. package/node_modules/@opentelemetry/api/build/esnext/trace/internal/utils.js +0 -20
  901. package/node_modules/@opentelemetry/api/build/esnext/trace/internal/utils.js.map +0 -1
  902. package/node_modules/@opentelemetry/api/build/esnext/trace/invalid-span-constants.d.ts +0 -5
  903. package/node_modules/@opentelemetry/api/build/esnext/trace/invalid-span-constants.js +0 -24
  904. package/node_modules/@opentelemetry/api/build/esnext/trace/invalid-span-constants.js.map +0 -1
  905. package/node_modules/@opentelemetry/api/build/esnext/trace/link.d.ts +0 -26
  906. package/node_modules/@opentelemetry/api/build/esnext/trace/link.js +0 -17
  907. package/node_modules/@opentelemetry/api/build/esnext/trace/link.js.map +0 -1
  908. package/node_modules/@opentelemetry/api/build/esnext/trace/span.d.ts +0 -120
  909. package/node_modules/@opentelemetry/api/build/esnext/trace/span.js +0 -17
  910. package/node_modules/@opentelemetry/api/build/esnext/trace/span.js.map +0 -1
  911. package/node_modules/@opentelemetry/api/build/esnext/trace/span_context.d.ts +0 -53
  912. package/node_modules/@opentelemetry/api/build/esnext/trace/span_context.js +0 -17
  913. package/node_modules/@opentelemetry/api/build/esnext/trace/span_context.js.map +0 -1
  914. package/node_modules/@opentelemetry/api/build/esnext/trace/span_kind.d.ts +0 -27
  915. package/node_modules/@opentelemetry/api/build/esnext/trace/span_kind.js +0 -43
  916. package/node_modules/@opentelemetry/api/build/esnext/trace/span_kind.js.map +0 -1
  917. package/node_modules/@opentelemetry/api/build/esnext/trace/spancontext-utils.d.ts +0 -17
  918. package/node_modules/@opentelemetry/api/build/esnext/trace/spancontext-utils.js +0 -42
  919. package/node_modules/@opentelemetry/api/build/esnext/trace/spancontext-utils.js.map +0 -1
  920. package/node_modules/@opentelemetry/api/build/esnext/trace/status.d.ts +0 -25
  921. package/node_modules/@opentelemetry/api/build/esnext/trace/status.js +0 -20
  922. package/node_modules/@opentelemetry/api/build/esnext/trace/status.js.map +0 -1
  923. package/node_modules/@opentelemetry/api/build/esnext/trace/trace_flags.d.ts +0 -7
  924. package/node_modules/@opentelemetry/api/build/esnext/trace/trace_flags.js +0 -23
  925. package/node_modules/@opentelemetry/api/build/esnext/trace/trace_flags.js.map +0 -1
  926. package/node_modules/@opentelemetry/api/build/esnext/trace/trace_state.d.ts +0 -38
  927. package/node_modules/@opentelemetry/api/build/esnext/trace/trace_state.js +0 -17
  928. package/node_modules/@opentelemetry/api/build/esnext/trace/trace_state.js.map +0 -1
  929. package/node_modules/@opentelemetry/api/build/esnext/trace/tracer.d.ts +0 -71
  930. package/node_modules/@opentelemetry/api/build/esnext/trace/tracer.js +0 -17
  931. package/node_modules/@opentelemetry/api/build/esnext/trace/tracer.js.map +0 -1
  932. package/node_modules/@opentelemetry/api/build/esnext/trace/tracer_options.d.ts +0 -10
  933. package/node_modules/@opentelemetry/api/build/esnext/trace/tracer_options.js +0 -17
  934. package/node_modules/@opentelemetry/api/build/esnext/trace/tracer_options.js.map +0 -1
  935. package/node_modules/@opentelemetry/api/build/esnext/trace/tracer_provider.d.ts +0 -21
  936. package/node_modules/@opentelemetry/api/build/esnext/trace/tracer_provider.js +0 -17
  937. package/node_modules/@opentelemetry/api/build/esnext/trace/tracer_provider.js.map +0 -1
  938. package/node_modules/@opentelemetry/api/build/esnext/trace-api.d.ts +0 -4
  939. package/node_modules/@opentelemetry/api/build/esnext/trace-api.js +0 -21
  940. package/node_modules/@opentelemetry/api/build/esnext/trace-api.js.map +0 -1
  941. package/node_modules/@opentelemetry/api/build/esnext/version.d.ts +0 -2
  942. package/node_modules/@opentelemetry/api/build/esnext/version.js +0 -18
  943. package/node_modules/@opentelemetry/api/build/esnext/version.js.map +0 -1
  944. package/node_modules/@opentelemetry/api/build/src/api/context.d.ts +0 -41
  945. package/node_modules/@opentelemetry/api/build/src/api/context.js +0 -81
  946. package/node_modules/@opentelemetry/api/build/src/api/context.js.map +0 -1
  947. package/node_modules/@opentelemetry/api/build/src/api/diag.d.ts +0 -30
  948. package/node_modules/@opentelemetry/api/build/src/api/diag.js +0 -93
  949. package/node_modules/@opentelemetry/api/build/src/api/diag.js.map +0 -1
  950. package/node_modules/@opentelemetry/api/build/src/api/metrics.d.ts +0 -28
  951. package/node_modules/@opentelemetry/api/build/src/api/metrics.js +0 -61
  952. package/node_modules/@opentelemetry/api/build/src/api/metrics.js.map +0 -1
  953. package/node_modules/@opentelemetry/api/build/src/api/propagation.d.ts +0 -49
  954. package/node_modules/@opentelemetry/api/build/src/api/propagation.js +0 -89
  955. package/node_modules/@opentelemetry/api/build/src/api/propagation.js.map +0 -1
  956. package/node_modules/@opentelemetry/api/build/src/api/trace.d.ts +0 -40
  957. package/node_modules/@opentelemetry/api/build/src/api/trace.js +0 -79
  958. package/node_modules/@opentelemetry/api/build/src/api/trace.js.map +0 -1
  959. package/node_modules/@opentelemetry/api/build/src/baggage/context-helpers.d.ts +0 -29
  960. package/node_modules/@opentelemetry/api/build/src/baggage/context-helpers.js +0 -63
  961. package/node_modules/@opentelemetry/api/build/src/baggage/context-helpers.js.map +0 -1
  962. package/node_modules/@opentelemetry/api/build/src/baggage/internal/baggage-impl.d.ts +0 -12
  963. package/node_modules/@opentelemetry/api/build/src/baggage/internal/baggage-impl.js +0 -55
  964. package/node_modules/@opentelemetry/api/build/src/baggage/internal/baggage-impl.js.map +0 -1
  965. package/node_modules/@opentelemetry/api/build/src/baggage/internal/symbol.d.ts +0 -5
  966. package/node_modules/@opentelemetry/api/build/src/baggage/internal/symbol.js +0 -23
  967. package/node_modules/@opentelemetry/api/build/src/baggage/internal/symbol.js.map +0 -1
  968. package/node_modules/@opentelemetry/api/build/src/baggage/types.d.ts +0 -60
  969. package/node_modules/@opentelemetry/api/build/src/baggage/types.js +0 -18
  970. package/node_modules/@opentelemetry/api/build/src/baggage/types.js.map +0 -1
  971. package/node_modules/@opentelemetry/api/build/src/baggage/utils.d.ts +0 -15
  972. package/node_modules/@opentelemetry/api/build/src/baggage/utils.js +0 -51
  973. package/node_modules/@opentelemetry/api/build/src/baggage/utils.js.map +0 -1
  974. package/node_modules/@opentelemetry/api/build/src/common/Attributes.d.ts +0 -15
  975. package/node_modules/@opentelemetry/api/build/src/common/Attributes.js +0 -18
  976. package/node_modules/@opentelemetry/api/build/src/common/Attributes.js.map +0 -1
  977. package/node_modules/@opentelemetry/api/build/src/common/Exception.d.ts +0 -26
  978. package/node_modules/@opentelemetry/api/build/src/common/Exception.js +0 -18
  979. package/node_modules/@opentelemetry/api/build/src/common/Exception.js.map +0 -1
  980. package/node_modules/@opentelemetry/api/build/src/common/Time.d.ts +0 -20
  981. package/node_modules/@opentelemetry/api/build/src/common/Time.js +0 -3
  982. package/node_modules/@opentelemetry/api/build/src/common/Time.js.map +0 -1
  983. package/node_modules/@opentelemetry/api/build/src/context/NoopContextManager.d.ts +0 -9
  984. package/node_modules/@opentelemetry/api/build/src/context/NoopContextManager.js +0 -38
  985. package/node_modules/@opentelemetry/api/build/src/context/NoopContextManager.js.map +0 -1
  986. package/node_modules/@opentelemetry/api/build/src/context/context.d.ts +0 -6
  987. package/node_modules/@opentelemetry/api/build/src/context/context.js +0 -55
  988. package/node_modules/@opentelemetry/api/build/src/context/context.js.map +0 -1
  989. package/node_modules/@opentelemetry/api/build/src/context/types.d.ts +0 -52
  990. package/node_modules/@opentelemetry/api/build/src/context/types.js +0 -18
  991. package/node_modules/@opentelemetry/api/build/src/context/types.js.map +0 -1
  992. package/node_modules/@opentelemetry/api/build/src/context-api.d.ts +0 -4
  993. package/node_modules/@opentelemetry/api/build/src/context-api.js +0 -24
  994. package/node_modules/@opentelemetry/api/build/src/context-api.js.map +0 -1
  995. package/node_modules/@opentelemetry/api/build/src/diag/ComponentLogger.d.ts +0 -20
  996. package/node_modules/@opentelemetry/api/build/src/diag/ComponentLogger.js +0 -59
  997. package/node_modules/@opentelemetry/api/build/src/diag/ComponentLogger.js.map +0 -1
  998. package/node_modules/@opentelemetry/api/build/src/diag/consoleLogger.d.ts +0 -38
  999. package/node_modules/@opentelemetry/api/build/src/diag/consoleLogger.js +0 -57
  1000. package/node_modules/@opentelemetry/api/build/src/diag/consoleLogger.js.map +0 -1
  1001. package/node_modules/@opentelemetry/api/build/src/diag/internal/logLevelLogger.d.ts +0 -3
  1002. package/node_modules/@opentelemetry/api/build/src/diag/internal/logLevelLogger.js +0 -45
  1003. package/node_modules/@opentelemetry/api/build/src/diag/internal/logLevelLogger.js.map +0 -1
  1004. package/node_modules/@opentelemetry/api/build/src/diag/internal/noopLogger.d.ts +0 -8
  1005. package/node_modules/@opentelemetry/api/build/src/diag/internal/noopLogger.js +0 -35
  1006. package/node_modules/@opentelemetry/api/build/src/diag/internal/noopLogger.js.map +0 -1
  1007. package/node_modules/@opentelemetry/api/build/src/diag/types.d.ts +0 -100
  1008. package/node_modules/@opentelemetry/api/build/src/diag/types.js +0 -44
  1009. package/node_modules/@opentelemetry/api/build/src/diag/types.js.map +0 -1
  1010. package/node_modules/@opentelemetry/api/build/src/diag-api.d.ts +0 -9
  1011. package/node_modules/@opentelemetry/api/build/src/diag-api.js +0 -29
  1012. package/node_modules/@opentelemetry/api/build/src/diag-api.js.map +0 -1
  1013. package/node_modules/@opentelemetry/api/build/src/experimental/index.d.ts +0 -3
  1014. package/node_modules/@opentelemetry/api/build/src/experimental/index.js +0 -22
  1015. package/node_modules/@opentelemetry/api/build/src/experimental/index.js.map +0 -1
  1016. package/node_modules/@opentelemetry/api/build/src/experimental/trace/SugaredOptions.d.ts +0 -13
  1017. package/node_modules/@opentelemetry/api/build/src/experimental/trace/SugaredOptions.js +0 -18
  1018. package/node_modules/@opentelemetry/api/build/src/experimental/trace/SugaredOptions.js.map +0 -1
  1019. package/node_modules/@opentelemetry/api/build/src/experimental/trace/SugaredTracer.d.ts +0 -64
  1020. package/node_modules/@opentelemetry/api/build/src/experimental/trace/SugaredTracer.js +0 -93
  1021. package/node_modules/@opentelemetry/api/build/src/experimental/trace/SugaredTracer.js.map +0 -1
  1022. package/node_modules/@opentelemetry/api/build/src/index.d.ts +0 -54
  1023. package/node_modules/@opentelemetry/api/build/src/index.js +0 -81
  1024. package/node_modules/@opentelemetry/api/build/src/index.js.map +0 -1
  1025. package/node_modules/@opentelemetry/api/build/src/internal/global-utils.d.ts +0 -18
  1026. package/node_modules/@opentelemetry/api/build/src/internal/global-utils.js +0 -64
  1027. package/node_modules/@opentelemetry/api/build/src/internal/global-utils.js.map +0 -1
  1028. package/node_modules/@opentelemetry/api/build/src/internal/semver.d.ts +0 -34
  1029. package/node_modules/@opentelemetry/api/build/src/internal/semver.js +0 -122
  1030. package/node_modules/@opentelemetry/api/build/src/internal/semver.js.map +0 -1
  1031. package/node_modules/@opentelemetry/api/build/src/metrics/Meter.d.ts +0 -110
  1032. package/node_modules/@opentelemetry/api/build/src/metrics/Meter.js +0 -18
  1033. package/node_modules/@opentelemetry/api/build/src/metrics/Meter.js.map +0 -1
  1034. package/node_modules/@opentelemetry/api/build/src/metrics/MeterProvider.d.ts +0 -17
  1035. package/node_modules/@opentelemetry/api/build/src/metrics/MeterProvider.js +0 -18
  1036. package/node_modules/@opentelemetry/api/build/src/metrics/MeterProvider.js.map +0 -1
  1037. package/node_modules/@opentelemetry/api/build/src/metrics/Metric.d.ts +0 -115
  1038. package/node_modules/@opentelemetry/api/build/src/metrics/Metric.js +0 -25
  1039. package/node_modules/@opentelemetry/api/build/src/metrics/Metric.js.map +0 -1
  1040. package/node_modules/@opentelemetry/api/build/src/metrics/NoopMeter.d.ts +0 -82
  1041. package/node_modules/@opentelemetry/api/build/src/metrics/NoopMeter.js +0 -127
  1042. package/node_modules/@opentelemetry/api/build/src/metrics/NoopMeter.js.map +0 -1
  1043. package/node_modules/@opentelemetry/api/build/src/metrics/NoopMeterProvider.d.ts +0 -11
  1044. package/node_modules/@opentelemetry/api/build/src/metrics/NoopMeterProvider.js +0 -31
  1045. package/node_modules/@opentelemetry/api/build/src/metrics/NoopMeterProvider.js.map +0 -1
  1046. package/node_modules/@opentelemetry/api/build/src/metrics/ObservableResult.d.ts +0 -31
  1047. package/node_modules/@opentelemetry/api/build/src/metrics/ObservableResult.js +0 -18
  1048. package/node_modules/@opentelemetry/api/build/src/metrics/ObservableResult.js.map +0 -1
  1049. package/node_modules/@opentelemetry/api/build/src/metrics-api.d.ts +0 -4
  1050. package/node_modules/@opentelemetry/api/build/src/metrics-api.js +0 -24
  1051. package/node_modules/@opentelemetry/api/build/src/metrics-api.js.map +0 -1
  1052. package/node_modules/@opentelemetry/api/build/src/platform/browser/globalThis.d.ts +0 -10
  1053. package/node_modules/@opentelemetry/api/build/src/platform/browser/globalThis.js +0 -38
  1054. package/node_modules/@opentelemetry/api/build/src/platform/browser/globalThis.js.map +0 -1
  1055. package/node_modules/@opentelemetry/api/build/src/platform/browser/index.d.ts +0 -2
  1056. package/node_modules/@opentelemetry/api/build/src/platform/browser/index.js +0 -29
  1057. package/node_modules/@opentelemetry/api/build/src/platform/browser/index.js.map +0 -1
  1058. package/node_modules/@opentelemetry/api/build/src/platform/index.d.ts +0 -2
  1059. package/node_modules/@opentelemetry/api/build/src/platform/index.js +0 -29
  1060. package/node_modules/@opentelemetry/api/build/src/platform/index.js.map +0 -1
  1061. package/node_modules/@opentelemetry/api/build/src/platform/node/globalThis.d.ts +0 -3
  1062. package/node_modules/@opentelemetry/api/build/src/platform/node/globalThis.js +0 -22
  1063. package/node_modules/@opentelemetry/api/build/src/platform/node/globalThis.js.map +0 -1
  1064. package/node_modules/@opentelemetry/api/build/src/platform/node/index.d.ts +0 -2
  1065. package/node_modules/@opentelemetry/api/build/src/platform/node/index.js +0 -29
  1066. package/node_modules/@opentelemetry/api/build/src/platform/node/index.js.map +0 -1
  1067. package/node_modules/@opentelemetry/api/build/src/propagation/NoopTextMapPropagator.d.ts +0 -13
  1068. package/node_modules/@opentelemetry/api/build/src/propagation/NoopTextMapPropagator.js +0 -34
  1069. package/node_modules/@opentelemetry/api/build/src/propagation/NoopTextMapPropagator.js.map +0 -1
  1070. package/node_modules/@opentelemetry/api/build/src/propagation/TextMapPropagator.d.ts +0 -84
  1071. package/node_modules/@opentelemetry/api/build/src/propagation/TextMapPropagator.js +0 -41
  1072. package/node_modules/@opentelemetry/api/build/src/propagation/TextMapPropagator.js.map +0 -1
  1073. package/node_modules/@opentelemetry/api/build/src/propagation-api.d.ts +0 -4
  1074. package/node_modules/@opentelemetry/api/build/src/propagation-api.js +0 -24
  1075. package/node_modules/@opentelemetry/api/build/src/propagation-api.js.map +0 -1
  1076. package/node_modules/@opentelemetry/api/build/src/trace/NonRecordingSpan.d.ts +0 -28
  1077. package/node_modules/@opentelemetry/api/build/src/trace/NonRecordingSpan.js +0 -69
  1078. package/node_modules/@opentelemetry/api/build/src/trace/NonRecordingSpan.js.map +0 -1
  1079. package/node_modules/@opentelemetry/api/build/src/trace/NoopTracer.d.ts +0 -14
  1080. package/node_modules/@opentelemetry/api/build/src/trace/NoopTracer.js +0 -75
  1081. package/node_modules/@opentelemetry/api/build/src/trace/NoopTracer.js.map +0 -1
  1082. package/node_modules/@opentelemetry/api/build/src/trace/NoopTracerProvider.d.ts +0 -13
  1083. package/node_modules/@opentelemetry/api/build/src/trace/NoopTracerProvider.js +0 -32
  1084. package/node_modules/@opentelemetry/api/build/src/trace/NoopTracerProvider.js.map +0 -1
  1085. package/node_modules/@opentelemetry/api/build/src/trace/ProxyTracer.d.ts +0 -27
  1086. package/node_modules/@opentelemetry/api/build/src/trace/ProxyTracer.js +0 -55
  1087. package/node_modules/@opentelemetry/api/build/src/trace/ProxyTracer.js.map +0 -1
  1088. package/node_modules/@opentelemetry/api/build/src/trace/ProxyTracerProvider.d.ts +0 -25
  1089. package/node_modules/@opentelemetry/api/build/src/trace/ProxyTracerProvider.js +0 -54
  1090. package/node_modules/@opentelemetry/api/build/src/trace/ProxyTracerProvider.js.map +0 -1
  1091. package/node_modules/@opentelemetry/api/build/src/trace/Sampler.d.ts +0 -31
  1092. package/node_modules/@opentelemetry/api/build/src/trace/Sampler.js +0 -18
  1093. package/node_modules/@opentelemetry/api/build/src/trace/Sampler.js.map +0 -1
  1094. package/node_modules/@opentelemetry/api/build/src/trace/SamplingResult.d.ts +0 -49
  1095. package/node_modules/@opentelemetry/api/build/src/trace/SamplingResult.js +0 -42
  1096. package/node_modules/@opentelemetry/api/build/src/trace/SamplingResult.js.map +0 -1
  1097. package/node_modules/@opentelemetry/api/build/src/trace/SpanOptions.d.ts +0 -23
  1098. package/node_modules/@opentelemetry/api/build/src/trace/SpanOptions.js +0 -18
  1099. package/node_modules/@opentelemetry/api/build/src/trace/SpanOptions.js.map +0 -1
  1100. package/node_modules/@opentelemetry/api/build/src/trace/attributes.d.ts +0 -10
  1101. package/node_modules/@opentelemetry/api/build/src/trace/attributes.js +0 -18
  1102. package/node_modules/@opentelemetry/api/build/src/trace/attributes.js.map +0 -1
  1103. package/node_modules/@opentelemetry/api/build/src/trace/context-utils.d.ts +0 -41
  1104. package/node_modules/@opentelemetry/api/build/src/trace/context-utils.js +0 -82
  1105. package/node_modules/@opentelemetry/api/build/src/trace/context-utils.js.map +0 -1
  1106. package/node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-impl.d.ts +0 -22
  1107. package/node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-impl.js +0 -103
  1108. package/node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-impl.js.map +0 -1
  1109. package/node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-validators.d.ts +0 -15
  1110. package/node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-validators.js +0 -46
  1111. package/node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-validators.js.map +0 -1
  1112. package/node_modules/@opentelemetry/api/build/src/trace/internal/utils.d.ts +0 -3
  1113. package/node_modules/@opentelemetry/api/build/src/trace/internal/utils.js +0 -24
  1114. package/node_modules/@opentelemetry/api/build/src/trace/internal/utils.js.map +0 -1
  1115. package/node_modules/@opentelemetry/api/build/src/trace/invalid-span-constants.d.ts +0 -5
  1116. package/node_modules/@opentelemetry/api/build/src/trace/invalid-span-constants.js +0 -27
  1117. package/node_modules/@opentelemetry/api/build/src/trace/invalid-span-constants.js.map +0 -1
  1118. package/node_modules/@opentelemetry/api/build/src/trace/link.d.ts +0 -26
  1119. package/node_modules/@opentelemetry/api/build/src/trace/link.js +0 -18
  1120. package/node_modules/@opentelemetry/api/build/src/trace/link.js.map +0 -1
  1121. package/node_modules/@opentelemetry/api/build/src/trace/span.d.ts +0 -120
  1122. package/node_modules/@opentelemetry/api/build/src/trace/span.js +0 -18
  1123. package/node_modules/@opentelemetry/api/build/src/trace/span.js.map +0 -1
  1124. package/node_modules/@opentelemetry/api/build/src/trace/span_context.d.ts +0 -53
  1125. package/node_modules/@opentelemetry/api/build/src/trace/span_context.js +0 -18
  1126. package/node_modules/@opentelemetry/api/build/src/trace/span_context.js.map +0 -1
  1127. package/node_modules/@opentelemetry/api/build/src/trace/span_kind.d.ts +0 -27
  1128. package/node_modules/@opentelemetry/api/build/src/trace/span_kind.js +0 -46
  1129. package/node_modules/@opentelemetry/api/build/src/trace/span_kind.js.map +0 -1
  1130. package/node_modules/@opentelemetry/api/build/src/trace/spancontext-utils.d.ts +0 -17
  1131. package/node_modules/@opentelemetry/api/build/src/trace/spancontext-utils.js +0 -49
  1132. package/node_modules/@opentelemetry/api/build/src/trace/spancontext-utils.js.map +0 -1
  1133. package/node_modules/@opentelemetry/api/build/src/trace/status.d.ts +0 -25
  1134. package/node_modules/@opentelemetry/api/build/src/trace/status.js +0 -23
  1135. package/node_modules/@opentelemetry/api/build/src/trace/status.js.map +0 -1
  1136. package/node_modules/@opentelemetry/api/build/src/trace/trace_flags.d.ts +0 -7
  1137. package/node_modules/@opentelemetry/api/build/src/trace/trace_flags.js +0 -26
  1138. package/node_modules/@opentelemetry/api/build/src/trace/trace_flags.js.map +0 -1
  1139. package/node_modules/@opentelemetry/api/build/src/trace/trace_state.d.ts +0 -38
  1140. package/node_modules/@opentelemetry/api/build/src/trace/trace_state.js +0 -18
  1141. package/node_modules/@opentelemetry/api/build/src/trace/trace_state.js.map +0 -1
  1142. package/node_modules/@opentelemetry/api/build/src/trace/tracer.d.ts +0 -71
  1143. package/node_modules/@opentelemetry/api/build/src/trace/tracer.js +0 -18
  1144. package/node_modules/@opentelemetry/api/build/src/trace/tracer.js.map +0 -1
  1145. package/node_modules/@opentelemetry/api/build/src/trace/tracer_options.d.ts +0 -10
  1146. package/node_modules/@opentelemetry/api/build/src/trace/tracer_options.js +0 -18
  1147. package/node_modules/@opentelemetry/api/build/src/trace/tracer_options.js.map +0 -1
  1148. package/node_modules/@opentelemetry/api/build/src/trace/tracer_provider.d.ts +0 -21
  1149. package/node_modules/@opentelemetry/api/build/src/trace/tracer_provider.js +0 -18
  1150. package/node_modules/@opentelemetry/api/build/src/trace/tracer_provider.js.map +0 -1
  1151. package/node_modules/@opentelemetry/api/build/src/trace-api.d.ts +0 -4
  1152. package/node_modules/@opentelemetry/api/build/src/trace-api.js +0 -24
  1153. package/node_modules/@opentelemetry/api/build/src/trace-api.js.map +0 -1
  1154. package/node_modules/@opentelemetry/api/build/src/version.d.ts +0 -2
  1155. package/node_modules/@opentelemetry/api/build/src/version.js +0 -21
  1156. package/node_modules/@opentelemetry/api/build/src/version.js.map +0 -1
  1157. package/node_modules/@opentelemetry/api/package.json +0 -113
  1158. package/node_modules/glob/LICENSE.md +0 -63
  1159. package/node_modules/glob/README.md +0 -1203
  1160. package/node_modules/glob/dist/commonjs/glob.d.ts +0 -396
  1161. package/node_modules/glob/dist/commonjs/glob.d.ts.map +0 -1
  1162. package/node_modules/glob/dist/commonjs/glob.js +0 -248
  1163. package/node_modules/glob/dist/commonjs/glob.js.map +0 -1
  1164. package/node_modules/glob/dist/commonjs/has-magic.d.ts +0 -14
  1165. package/node_modules/glob/dist/commonjs/has-magic.d.ts.map +0 -1
  1166. package/node_modules/glob/dist/commonjs/has-magic.js +0 -27
  1167. package/node_modules/glob/dist/commonjs/has-magic.js.map +0 -1
  1168. package/node_modules/glob/dist/commonjs/ignore.d.ts +0 -24
  1169. package/node_modules/glob/dist/commonjs/ignore.d.ts.map +0 -1
  1170. package/node_modules/glob/dist/commonjs/ignore.js +0 -119
  1171. package/node_modules/glob/dist/commonjs/ignore.js.map +0 -1
  1172. package/node_modules/glob/dist/commonjs/index.d.ts +0 -97
  1173. package/node_modules/glob/dist/commonjs/index.d.ts.map +0 -1
  1174. package/node_modules/glob/dist/commonjs/index.js +0 -68
  1175. package/node_modules/glob/dist/commonjs/index.js.map +0 -1
  1176. package/node_modules/glob/dist/commonjs/index.min.js +0 -4
  1177. package/node_modules/glob/dist/commonjs/index.min.js.map +0 -7
  1178. package/node_modules/glob/dist/commonjs/package.json +0 -3
  1179. package/node_modules/glob/dist/commonjs/pattern.d.ts +0 -79
  1180. package/node_modules/glob/dist/commonjs/pattern.d.ts.map +0 -1
  1181. package/node_modules/glob/dist/commonjs/pattern.js +0 -223
  1182. package/node_modules/glob/dist/commonjs/pattern.js.map +0 -1
  1183. package/node_modules/glob/dist/commonjs/processor.d.ts +0 -59
  1184. package/node_modules/glob/dist/commonjs/processor.d.ts.map +0 -1
  1185. package/node_modules/glob/dist/commonjs/processor.js +0 -301
  1186. package/node_modules/glob/dist/commonjs/processor.js.map +0 -1
  1187. package/node_modules/glob/dist/commonjs/walker.d.ts +0 -97
  1188. package/node_modules/glob/dist/commonjs/walker.d.ts.map +0 -1
  1189. package/node_modules/glob/dist/commonjs/walker.js +0 -387
  1190. package/node_modules/glob/dist/commonjs/walker.js.map +0 -1
  1191. package/node_modules/glob/dist/esm/glob.d.ts +0 -396
  1192. package/node_modules/glob/dist/esm/glob.d.ts.map +0 -1
  1193. package/node_modules/glob/dist/esm/glob.js +0 -244
  1194. package/node_modules/glob/dist/esm/glob.js.map +0 -1
  1195. package/node_modules/glob/dist/esm/has-magic.d.ts +0 -14
  1196. package/node_modules/glob/dist/esm/has-magic.d.ts.map +0 -1
  1197. package/node_modules/glob/dist/esm/has-magic.js +0 -23
  1198. package/node_modules/glob/dist/esm/has-magic.js.map +0 -1
  1199. package/node_modules/glob/dist/esm/ignore.d.ts +0 -24
  1200. package/node_modules/glob/dist/esm/ignore.d.ts.map +0 -1
  1201. package/node_modules/glob/dist/esm/ignore.js +0 -115
  1202. package/node_modules/glob/dist/esm/ignore.js.map +0 -1
  1203. package/node_modules/glob/dist/esm/index.d.ts +0 -97
  1204. package/node_modules/glob/dist/esm/index.d.ts.map +0 -1
  1205. package/node_modules/glob/dist/esm/index.js +0 -55
  1206. package/node_modules/glob/dist/esm/index.js.map +0 -1
  1207. package/node_modules/glob/dist/esm/index.min.js +0 -4
  1208. package/node_modules/glob/dist/esm/index.min.js.map +0 -7
  1209. package/node_modules/glob/dist/esm/package.json +0 -3
  1210. package/node_modules/glob/dist/esm/pattern.d.ts +0 -79
  1211. package/node_modules/glob/dist/esm/pattern.d.ts.map +0 -1
  1212. package/node_modules/glob/dist/esm/pattern.js +0 -219
  1213. package/node_modules/glob/dist/esm/pattern.js.map +0 -1
  1214. package/node_modules/glob/dist/esm/processor.d.ts +0 -59
  1215. package/node_modules/glob/dist/esm/processor.d.ts.map +0 -1
  1216. package/node_modules/glob/dist/esm/processor.js +0 -294
  1217. package/node_modules/glob/dist/esm/processor.js.map +0 -1
  1218. package/node_modules/glob/dist/esm/walker.d.ts +0 -97
  1219. package/node_modules/glob/dist/esm/walker.d.ts.map +0 -1
  1220. package/node_modules/glob/dist/esm/walker.js +0 -381
  1221. package/node_modules/glob/dist/esm/walker.js.map +0 -1
  1222. package/node_modules/glob/package.json +0 -98
  1223. package/node_modules/minipass/LICENSE.md +0 -55
  1224. package/node_modules/minipass/README.md +0 -825
  1225. package/node_modules/minipass/dist/commonjs/index.d.ts +0 -545
  1226. package/node_modules/minipass/dist/commonjs/index.d.ts.map +0 -1
  1227. package/node_modules/minipass/dist/commonjs/index.js +0 -1038
  1228. package/node_modules/minipass/dist/commonjs/index.js.map +0 -1
  1229. package/node_modules/minipass/dist/commonjs/package.json +0 -3
  1230. package/node_modules/minipass/dist/esm/index.d.ts +0 -545
  1231. package/node_modules/minipass/dist/esm/index.d.ts.map +0 -1
  1232. package/node_modules/minipass/dist/esm/index.js +0 -1020
  1233. package/node_modules/minipass/dist/esm/index.js.map +0 -1
  1234. package/node_modules/minipass/dist/esm/package.json +0 -3
  1235. package/node_modules/minipass/package.json +0 -77
  1236. package/node_modules/path-scurry/LICENSE.md +0 -55
  1237. package/node_modules/path-scurry/README.md +0 -636
  1238. package/node_modules/path-scurry/dist/commonjs/index.d.ts +0 -1115
  1239. package/node_modules/path-scurry/dist/commonjs/index.d.ts.map +0 -1
  1240. package/node_modules/path-scurry/dist/commonjs/index.js +0 -2018
  1241. package/node_modules/path-scurry/dist/commonjs/index.js.map +0 -1
  1242. package/node_modules/path-scurry/dist/commonjs/package.json +0 -3
  1243. package/node_modules/path-scurry/dist/esm/index.d.ts +0 -1115
  1244. package/node_modules/path-scurry/dist/esm/index.d.ts.map +0 -1
  1245. package/node_modules/path-scurry/dist/esm/index.js +0 -1983
  1246. package/node_modules/path-scurry/dist/esm/index.js.map +0 -1
  1247. package/node_modules/path-scurry/dist/esm/package.json +0 -3
  1248. package/node_modules/path-scurry/package.json +0 -72
@@ -1,6 +1,6 @@
1
1
  import type { ThinkingLevel } from "@earendil-works/pi-agent-core";
2
2
  import type { Transport } from "@earendil-works/pi-ai";
3
- import type { TuiMode as RendererTuiMode, ScrollViewScrollbar } from "@earendil-works/pi-tui";
3
+ import type { TuiMode as RendererTuiMode, ScrollViewScrollbar, TerminalCapabilities } from "@earendil-works/pi-tui";
4
4
  export interface CompactionSettings {
5
5
  enabled?: boolean;
6
6
  reserveTokens?: number;
@@ -28,6 +28,9 @@ export interface TerminalSettings {
28
28
  imageWidthCells?: number;
29
29
  clearOnShrink?: boolean;
30
30
  showTerminalProgress?: boolean;
31
+ hyperlinks?: boolean | "auto";
32
+ images?: "kitty" | "iterm2" | "auto" | false;
33
+ trueColor?: boolean | "auto";
31
34
  }
32
35
  export interface ImageSettings {
33
36
  autoResize?: boolean;
@@ -68,6 +71,7 @@ export interface Settings {
68
71
  defaultProvider?: string;
69
72
  defaultModel?: string;
70
73
  defaultThinkingLevel?: ThinkingLevel;
74
+ modelThinkingLevels?: Record<string, ThinkingLevel>;
71
75
  transport?: TransportSetting;
72
76
  steeringMode?: "all" | "one-at-a-time";
73
77
  followUpMode?: "all" | "one-at-a-time";
@@ -113,6 +117,7 @@ export interface Settings {
113
117
  tuiMode?: TuiMode;
114
118
  fullscreenExitOutput?: FullscreenExitOutput;
115
119
  fullscreenScrollbar?: ScrollViewScrollbar;
120
+ fullscreenCopyOnSelect?: boolean;
116
121
  }
117
122
  export type SettingsScope = "global" | "project";
118
123
  export interface SettingsManagerCreateOptions {
@@ -123,6 +128,7 @@ export interface SettingsStorage {
123
128
  }
124
129
  export interface SettingsError {
125
130
  scope: SettingsScope;
131
+ path?: string;
126
132
  error: Error;
127
133
  }
128
134
  export declare class FileSettingsStorage implements SettingsStorage {
@@ -151,11 +157,14 @@ export declare class SettingsManager {
151
157
  private projectSettingsLoadError;
152
158
  private writeQueue;
153
159
  private errors;
160
+ private settingsPaths;
154
161
  private constructor();
155
162
  /** Create a SettingsManager that loads from files */
156
163
  static create(cwd: string, agentDir?: string, options?: SettingsManagerCreateOptions): SettingsManager;
157
164
  /** Create a SettingsManager from an arbitrary storage backend */
158
165
  static fromStorage(storage: SettingsStorage, options?: SettingsManagerCreateOptions): SettingsManager;
166
+ /** Create a manager while retaining optional file paths for reported storage errors. */
167
+ private static fromStorageWithPaths;
159
168
  /** Create an in-memory SettingsManager (no file I/O) */
160
169
  static inMemory(settings?: Partial<Settings>, options?: SettingsManagerCreateOptions): SettingsManager;
161
170
  private static loadFromStorage;
@@ -201,6 +210,10 @@ export declare class SettingsManager {
201
210
  setTheme(theme: string): void;
202
211
  getDefaultThinkingLevel(): ThinkingLevel | undefined;
203
212
  setDefaultThinkingLevel(level: ThinkingLevel): void;
213
+ getModelThinkingLevel(provider: string, modelId: string): ThinkingLevel | undefined;
214
+ getAllModelThinkingLevels(): Record<string, ThinkingLevel>;
215
+ setModelThinkingLevel(provider: string, modelId: string, level: ThinkingLevel): void;
216
+ removeModelThinkingLevel(provider: string, modelId: string): void;
204
217
  getTransport(): TransportSetting;
205
218
  setTransport(transport: TransportSetting): void;
206
219
  getCompactionEnabled(): boolean;
@@ -273,6 +286,7 @@ export declare class SettingsManager {
273
286
  getEnableSkillCommands(): boolean;
274
287
  setEnableSkillCommands(enabled: boolean): void;
275
288
  getThinkingBudgets(): ThinkingBudgetsSettings | undefined;
289
+ getTerminalCapabilityOverrides(): Partial<TerminalCapabilities>;
276
290
  getShowImages(): boolean;
277
291
  setShowImages(show: boolean): void;
278
292
  getImageWidthCells(): number;
@@ -287,6 +301,8 @@ export declare class SettingsManager {
287
301
  setFullscreenExitOutput(output: FullscreenExitOutput): void;
288
302
  getFullscreenScrollbar(): ScrollViewScrollbar;
289
303
  setFullscreenScrollbar(mode: ScrollViewScrollbar): void;
304
+ getFullscreenCopyOnSelect(): boolean;
305
+ setFullscreenCopyOnSelect(enabled: boolean): void;
290
306
  getImageAutoResize(): boolean;
291
307
  setImageAutoResize(enabled: boolean): void;
292
308
  getBlockImages(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"settings-manager.d.ts","sourceRoot":"","sources":["../../src/core/settings-manager.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport type { Transport } from \"@earendil-works/pi-ai\";\nimport type { TuiMode as RendererTuiMode, ScrollViewScrollbar } from \"@earendil-works/pi-tui\";\nimport { randomUUID } from \"crypto\";\nimport { existsSync, mkdirSync, readFileSync, writeFileSync } from \"fs\";\nimport { dirname, join } from \"path\";\nimport lockfile from \"proper-lockfile\";\nimport { CONFIG_DIR_NAME, getAgentDir } from \"../config.ts\";\nimport { normalizePath, resolvePath } from \"../utils/paths.ts\";\nimport { DEFAULT_HTTP_IDLE_TIMEOUT_MS, parseHttpIdleTimeoutMs } from \"./http-dispatcher.ts\";\n\nexport interface CompactionSettings {\n\tenabled?: boolean; // default: true\n\treserveTokens?: number; // default: 16384\n\tkeepRecentTokens?: number; // default: 20000\n}\n\nexport interface BranchSummarySettings {\n\treserveTokens?: number; // default: 16384 (tokens reserved for prompt + LLM response)\n\tskipPrompt?: boolean; // default: false - when true, skips \"Summarize branch?\" prompt and defaults to no summary\n}\n\nexport interface ProviderRetrySettings {\n\ttimeoutMs?: number; // SDK/provider request timeout in milliseconds\n\tmaxRetries?: number; // SDK/provider retry attempts\n\tmaxRetryDelayMs?: number; // default: 60000 (max server-requested delay before failing)\n}\n\nexport interface RetrySettings {\n\tenabled?: boolean; // default: true\n\tmaxRetries?: number; // default: 3\n\tbaseDelayMs?: number; // default: 2000 (exponential backoff: 2s, 4s, 8s)\n\tprovider?: ProviderRetrySettings;\n}\n\nexport type TuiMode = RendererTuiMode;\nexport type FullscreenExitOutput = \"transcript\" | \"resume-hint\";\n\nexport interface TerminalSettings {\n\tshowImages?: boolean; // default: true (only relevant if terminal supports images)\n\timageWidthCells?: number; // default: 60 (preferred inline image width in terminal cells)\n\tclearOnShrink?: boolean; // default: false (clear empty rows when content shrinks)\n\tshowTerminalProgress?: boolean; // default: false (OSC 9;4 terminal progress indicators)\n}\n\nexport interface ImageSettings {\n\tautoResize?: boolean; // default: true (resize images to 2000x2000 max for better model compatibility)\n\tblockImages?: boolean; // default: false - when true, prevents all images from being sent to LLM providers\n}\n\nexport interface ThinkingBudgetsSettings {\n\tminimal?: number;\n\tlow?: number;\n\tmedium?: number;\n\thigh?: number;\n}\n\nexport type MermaidRenderingMode = \"off\" | \"final\" | \"streaming\";\n\nexport interface MarkdownSettings {\n\tcodeBlockIndent?: string; // default: \" \"\n\tmermaid?: MermaidRenderingMode; // default: \"streaming\"\n}\n\nexport interface WarningSettings {\n\tanthropicExtraUsage?: boolean; // default: true\n}\n\nexport type DefaultProjectTrust = \"ask\" | \"always\" | \"never\";\n\nexport type TransportSetting = Transport;\n\n/**\n * Package source for npm/git packages.\n * - String form: load all resources from the package\n * - Object form: filter which resources to load\n * - autoload=false: start empty and only apply explicit resource patterns\n */\nexport type PackageSource =\n\t| string\n\t| {\n\t\t\tsource: string;\n\t\t\tautoload?: boolean;\n\t\t\textensions?: string[];\n\t\t\tskills?: string[];\n\t\t\tprompts?: string[];\n\t\t\tthemes?: string[];\n\t };\n\nexport interface Settings {\n\tlastChangelogVersion?: string;\n\tdefaultProvider?: string;\n\tdefaultModel?: string;\n\tdefaultThinkingLevel?: ThinkingLevel;\n\ttransport?: TransportSetting; // default: \"auto\"\n\tsteeringMode?: \"all\" | \"one-at-a-time\";\n\tfollowUpMode?: \"all\" | \"one-at-a-time\";\n\ttheme?: string;\n\tcompaction?: CompactionSettings;\n\tbranchSummary?: BranchSummarySettings;\n\tretry?: RetrySettings;\n\thideThinkingBlock?: boolean;\n\tshowCacheMissNotices?: boolean; // default: false - show transcript notices for significant prompt-cache misses\n\texternalEditor?: string; // Command for Ctrl+G external editor; takes precedence over VISUAL/EDITOR\n\tshellPath?: string; // Custom shell path (e.g., for Cygwin users on Windows); supports leading ~ expansion\n\tquietStartup?: boolean;\n\tdefaultProjectTrust?: DefaultProjectTrust; // default: \"ask\"; global setting only\n\tshellCommandPrefix?: string; // Prefix prepended to every bash command (e.g., \"shopt -s expand_aliases\" for alias support)\n\tnpmCommand?: string[]; // Command used for npm package lookup/install operations, argv-style (e.g., [\"mise\", \"exec\", \"node@20\", \"--\", \"npm\"])\n\tcollapseChangelog?: boolean; // Show condensed changelog after update (use /changelog for full)\n\tenableInstallTelemetry?: boolean; // default: true - anonymous version/update ping after changelog-detected updates\n\tenableAnalytics?: boolean; // default: false - opt-in analytics data sharing\n\ttrackingId?: string; // analytics tracking identifier, generated when analytics is enabled\n\tpackages?: PackageSource[]; // Array of npm/git package sources (string or object with filtering)\n\textensions?: string[]; // Array of local extension file paths or directories\n\tskills?: string[]; // Array of local skill file paths or directories\n\tprompts?: string[]; // Array of local prompt template paths or directories\n\tthemes?: string[]; // Array of local theme file paths or directories\n\tenableSkillCommands?: boolean; // default: true - register skills as /skill:name commands\n\tterminal?: TerminalSettings;\n\timages?: ImageSettings;\n\tenabledModels?: string[]; // Model patterns for cycling (same format as --models CLI flag)\n\tdefaultTools?: string[]; // Initial built-in tool selection\n\tdoubleEscapeAction?: \"fork\" | \"tree\" | \"none\"; // Action for double-escape with empty editor (default: \"tree\")\n\ttreeFilterMode?: \"default\" | \"no-tools\" | \"user-only\" | \"labeled-only\" | \"all\"; // Default filter when opening /tree\n\tthinkingBudgets?: ThinkingBudgetsSettings; // Custom token budgets for thinking levels\n\teditorPaddingX?: number; // Horizontal padding for input editor (default: 0)\n\toutputPad?: 0 | 1; // Horizontal padding for chat message output (default: 1)\n\tautocompleteMaxVisible?: number; // Max visible items in autocomplete dropdown (default: 5)\n\tshowHardwareCursor?: boolean; // Show terminal cursor while still positioning it for IME\n\tmarkdown?: MarkdownSettings;\n\twarnings?: WarningSettings;\n\tsessionDir?: string; // Custom session storage directory (same format as --session-dir CLI flag)\n\thttpProxy?: string; // Proxy URL applied as HTTP_PROXY and HTTPS_PROXY for Pi-managed HTTP clients\n\thttpIdleTimeoutMs?: number; // HTTP header/body idle timeout in milliseconds; 0 disables it\n\twebsocketConnectTimeoutMs?: number; // WebSocket connect/open handshake timeout in milliseconds; 0 disables it\n\ttuiMode?: TuiMode; // default: \"regular\"\n\tfullscreenExitOutput?: FullscreenExitOutput; // default: \"transcript\"; no effect in regular TUI mode\n\tfullscreenScrollbar?: ScrollViewScrollbar; // default: \"auto\"; no effect in regular TUI mode\n}\n\nfunction isMergeableObject(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction deepMergeObjects(base: Record<string, unknown>, overrides: Record<string, unknown>): Record<string, unknown> {\n\tconst result = { ...base };\n\n\tfor (const key of Object.keys(overrides)) {\n\t\tconst overrideValue = overrides[key];\n\t\tif (overrideValue === undefined) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst baseValue = base[key];\n\t\tresult[key] =\n\t\t\tisMergeableObject(baseValue) && isMergeableObject(overrideValue)\n\t\t\t\t? deepMergeObjects(baseValue, overrideValue)\n\t\t\t\t: overrideValue;\n\t}\n\n\treturn result;\n}\n\n/** Deep merge settings: project/overrides take precedence, nested objects merge recursively */\nfunction deepMergeSettings(base: Settings, overrides: Settings): Settings {\n\treturn deepMergeObjects(base as Record<string, unknown>, overrides as Record<string, unknown>) as Settings;\n}\n\nfunction parseTimeoutSetting(value: unknown, settingName: string): number | undefined {\n\tconst timeoutMs = parseHttpIdleTimeoutMs(value);\n\tif (timeoutMs !== undefined) {\n\t\treturn timeoutMs;\n\t}\n\tif (value !== undefined) {\n\t\tthrow new Error(`Invalid ${settingName} setting: ${String(value)}`);\n\t}\n\treturn undefined;\n}\n\nexport type SettingsScope = \"global\" | \"project\";\n\nexport interface SettingsManagerCreateOptions {\n\tprojectTrusted?: boolean;\n}\n\nexport interface SettingsStorage {\n\twithLock(scope: SettingsScope, fn: (current: string | undefined) => string | undefined): void;\n}\n\nexport interface SettingsError {\n\tscope: SettingsScope;\n\terror: Error;\n}\n\nexport class FileSettingsStorage implements SettingsStorage {\n\tprivate globalSettingsPath: string;\n\tprivate projectSettingsPath: string;\n\n\tconstructor(cwd: string, agentDir: string) {\n\t\tconst resolvedCwd = resolvePath(cwd);\n\t\tconst resolvedAgentDir = resolvePath(agentDir);\n\t\tthis.globalSettingsPath = join(resolvedAgentDir, \"settings.json\");\n\t\tthis.projectSettingsPath = join(resolvedCwd, CONFIG_DIR_NAME, \"settings.json\");\n\t}\n\n\tprivate acquireLockSyncWithRetry(path: string): () => void {\n\t\tconst maxAttempts = 10;\n\t\tconst delayMs = 20;\n\t\tlet lastError: unknown;\n\n\t\tfor (let attempt = 1; attempt <= maxAttempts; attempt++) {\n\t\t\ttry {\n\t\t\t\treturn lockfile.lockSync(path, { realpath: false });\n\t\t\t} catch (error) {\n\t\t\t\tconst code =\n\t\t\t\t\ttypeof error === \"object\" && error !== null && \"code\" in error\n\t\t\t\t\t\t? String((error as { code?: unknown }).code)\n\t\t\t\t\t\t: undefined;\n\t\t\t\tif (code !== \"ELOCKED\" || attempt === maxAttempts) {\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t\tlastError = error;\n\t\t\t\tconst start = Date.now();\n\t\t\t\twhile (Date.now() - start < delayMs) {\n\t\t\t\t\t// Sleep synchronously to avoid changing callers to async.\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthrow (lastError as Error) ?? new Error(\"Failed to acquire settings lock\");\n\t}\n\n\twithLock(scope: SettingsScope, fn: (current: string | undefined) => string | undefined): void {\n\t\tconst path = scope === \"global\" ? this.globalSettingsPath : this.projectSettingsPath;\n\t\tconst dir = dirname(path);\n\n\t\tlet release: (() => void) | undefined;\n\t\ttry {\n\t\t\t// Only create directory and lock if file exists or we need to write\n\t\t\tconst fileExists = existsSync(path);\n\t\t\tif (fileExists) {\n\t\t\t\trelease = this.acquireLockSyncWithRetry(path);\n\t\t\t}\n\t\t\tconst current = fileExists ? readFileSync(path, \"utf-8\") : undefined;\n\t\t\tconst next = fn(current);\n\t\t\tif (next !== undefined) {\n\t\t\t\t// Only create directory when we actually need to write\n\t\t\t\tif (!existsSync(dir)) {\n\t\t\t\t\tmkdirSync(dir, { recursive: true });\n\t\t\t\t}\n\t\t\t\tif (!release) {\n\t\t\t\t\trelease = this.acquireLockSyncWithRetry(path);\n\t\t\t\t}\n\t\t\t\twriteFileSync(path, next, \"utf-8\");\n\t\t\t}\n\t\t} finally {\n\t\t\tif (release) {\n\t\t\t\trelease();\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport class InMemorySettingsStorage implements SettingsStorage {\n\tprivate global: string | undefined;\n\tprivate project: string | undefined;\n\n\twithLock(scope: SettingsScope, fn: (current: string | undefined) => string | undefined): void {\n\t\tconst current = scope === \"global\" ? this.global : this.project;\n\t\tconst next = fn(current);\n\t\tif (next !== undefined) {\n\t\t\tif (scope === \"global\") {\n\t\t\t\tthis.global = next;\n\t\t\t} else {\n\t\t\t\tthis.project = next;\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport class SettingsManager {\n\tprivate storage: SettingsStorage;\n\tprivate globalSettings: Settings;\n\tprivate projectSettings: Settings;\n\tprivate settings: Settings;\n\tprivate projectTrusted: boolean;\n\tprivate modifiedFields = new Set<keyof Settings>(); // Track global fields modified during session\n\tprivate modifiedNestedFields = new Map<keyof Settings, Set<string>>(); // Track global nested field modifications\n\tprivate modifiedProjectFields = new Set<keyof Settings>(); // Track project fields modified during session\n\tprivate modifiedProjectNestedFields = new Map<keyof Settings, Set<string>>(); // Track project nested field modifications\n\tprivate globalSettingsLoadError: Error | null = null; // Track if global settings file had parse errors\n\tprivate projectSettingsLoadError: Error | null = null; // Track if project settings file had parse errors\n\tprivate writeQueue: Promise<void> = Promise.resolve();\n\tprivate errors: SettingsError[];\n\n\tprivate constructor(\n\t\tstorage: SettingsStorage,\n\t\tinitialGlobal: Settings,\n\t\tinitialProject: Settings,\n\t\tglobalLoadError: Error | null = null,\n\t\tprojectLoadError: Error | null = null,\n\t\tinitialErrors: SettingsError[] = [],\n\t\tprojectTrusted = true,\n\t) {\n\t\tthis.storage = storage;\n\t\tthis.globalSettings = initialGlobal;\n\t\tthis.projectSettings = initialProject;\n\t\tthis.projectTrusted = projectTrusted;\n\t\tthis.globalSettingsLoadError = globalLoadError;\n\t\tthis.projectSettingsLoadError = projectLoadError;\n\t\tthis.errors = [...initialErrors];\n\t\tthis.settings = deepMergeSettings(this.globalSettings, this.projectSettings);\n\t}\n\n\t/** Create a SettingsManager that loads from files */\n\tstatic create(\n\t\tcwd: string,\n\t\tagentDir: string = getAgentDir(),\n\t\toptions: SettingsManagerCreateOptions = {},\n\t): SettingsManager {\n\t\tconst storage = new FileSettingsStorage(cwd, agentDir);\n\t\treturn SettingsManager.fromStorage(storage, options);\n\t}\n\n\t/** Create a SettingsManager from an arbitrary storage backend */\n\tstatic fromStorage(storage: SettingsStorage, options: SettingsManagerCreateOptions = {}): SettingsManager {\n\t\tconst projectTrusted = options.projectTrusted ?? true;\n\t\tconst globalLoad = SettingsManager.tryLoadFromStorage(storage, \"global\");\n\t\tconst projectLoad = SettingsManager.tryLoadFromStorage(storage, \"project\", projectTrusted);\n\t\tconst initialErrors: SettingsError[] = [];\n\t\tif (globalLoad.error) {\n\t\t\tinitialErrors.push({ scope: \"global\", error: globalLoad.error });\n\t\t}\n\t\tif (projectLoad.error) {\n\t\t\tinitialErrors.push({ scope: \"project\", error: projectLoad.error });\n\t\t}\n\n\t\treturn new SettingsManager(\n\t\t\tstorage,\n\t\t\tglobalLoad.settings,\n\t\t\tprojectLoad.settings,\n\t\t\tglobalLoad.error,\n\t\t\tprojectLoad.error,\n\t\t\tinitialErrors,\n\t\t\tprojectTrusted,\n\t\t);\n\t}\n\n\t/** Create an in-memory SettingsManager (no file I/O) */\n\tstatic inMemory(settings: Partial<Settings> = {}, options: SettingsManagerCreateOptions = {}): SettingsManager {\n\t\tconst storage = new InMemorySettingsStorage();\n\t\tconst initialSettings = SettingsManager.migrateSettings(structuredClone(settings) as Record<string, unknown>);\n\t\tstorage.withLock(\"global\", () => JSON.stringify(initialSettings, null, 2));\n\t\treturn SettingsManager.fromStorage(storage, options);\n\t}\n\n\tprivate static loadFromStorage(storage: SettingsStorage, scope: SettingsScope, projectTrusted = true): Settings {\n\t\tif (scope === \"project\" && !projectTrusted) {\n\t\t\treturn {};\n\t\t}\n\n\t\tlet content: string | undefined;\n\t\tstorage.withLock(scope, (current) => {\n\t\t\tcontent = current;\n\t\t\treturn undefined;\n\t\t});\n\n\t\tif (!content) {\n\t\t\treturn {};\n\t\t}\n\t\tconst settings = JSON.parse(content);\n\t\treturn SettingsManager.migrateSettings(settings);\n\t}\n\n\tprivate static tryLoadFromStorage(\n\t\tstorage: SettingsStorage,\n\t\tscope: SettingsScope,\n\t\tprojectTrusted = true,\n\t): { settings: Settings; error: Error | null } {\n\t\ttry {\n\t\t\treturn { settings: SettingsManager.loadFromStorage(storage, scope, projectTrusted), error: null };\n\t\t} catch (error) {\n\t\t\treturn { settings: {}, error: error as Error };\n\t\t}\n\t}\n\n\t/** Migrate old settings format to new format */\n\tprivate static migrateSettings(settings: Record<string, unknown>): Settings {\n\t\t// Migrate queueMode -> steeringMode\n\t\tif (\"queueMode\" in settings && !(\"steeringMode\" in settings)) {\n\t\t\tsettings.steeringMode = settings.queueMode;\n\t\t\tdelete settings.queueMode;\n\t\t}\n\n\t\t// Migrate legacy websockets boolean -> transport enum\n\t\tif (!(\"transport\" in settings) && typeof settings.websockets === \"boolean\") {\n\t\t\tsettings.transport = settings.websockets ? \"websocket\" : \"sse\";\n\t\t\tdelete settings.websockets;\n\t\t}\n\n\t\t// Migrate old skills object format to new array format\n\t\tif (\n\t\t\t\"skills\" in settings &&\n\t\t\ttypeof settings.skills === \"object\" &&\n\t\t\tsettings.skills !== null &&\n\t\t\t!Array.isArray(settings.skills)\n\t\t) {\n\t\t\tconst skillsSettings = settings.skills as {\n\t\t\t\tenableSkillCommands?: boolean;\n\t\t\t\tcustomDirectories?: unknown;\n\t\t\t};\n\t\t\tif (skillsSettings.enableSkillCommands !== undefined && settings.enableSkillCommands === undefined) {\n\t\t\t\tsettings.enableSkillCommands = skillsSettings.enableSkillCommands;\n\t\t\t}\n\t\t\tif (Array.isArray(skillsSettings.customDirectories) && skillsSettings.customDirectories.length > 0) {\n\t\t\t\tsettings.skills = skillsSettings.customDirectories;\n\t\t\t} else {\n\t\t\t\tdelete settings.skills;\n\t\t\t}\n\t\t}\n\n\t\t// Migrate retry.maxDelayMs -> retry.provider.maxRetryDelayMs\n\t\tif (\n\t\t\t\"retry\" in settings &&\n\t\t\ttypeof settings.retry === \"object\" &&\n\t\t\tsettings.retry !== null &&\n\t\t\t!Array.isArray(settings.retry)\n\t\t) {\n\t\t\tconst retrySettings = settings.retry as Record<string, unknown>;\n\t\t\tconst providerSettings =\n\t\t\t\ttypeof retrySettings.provider === \"object\" && retrySettings.provider !== null\n\t\t\t\t\t? (retrySettings.provider as Record<string, unknown>)\n\t\t\t\t\t: undefined;\n\t\t\tif (\n\t\t\t\ttypeof retrySettings.maxDelayMs === \"number\" &&\n\t\t\t\t(providerSettings?.maxRetryDelayMs === undefined || providerSettings?.maxRetryDelayMs === null)\n\t\t\t) {\n\t\t\t\tretrySettings.provider = {\n\t\t\t\t\t...(providerSettings ?? {}),\n\t\t\t\t\tmaxRetryDelayMs: retrySettings.maxDelayMs,\n\t\t\t\t};\n\t\t\t}\n\t\t\tdelete retrySettings.maxDelayMs;\n\t\t}\n\n\t\treturn settings as Settings;\n\t}\n\n\tgetGlobalSettings(): Settings {\n\t\treturn structuredClone(this.globalSettings);\n\t}\n\n\tgetProjectSettings(): Settings {\n\t\treturn structuredClone(this.projectSettings);\n\t}\n\n\tisProjectTrusted(): boolean {\n\t\treturn this.projectTrusted;\n\t}\n\n\tsetProjectTrusted(trusted: boolean): void {\n\t\tif (this.projectTrusted === trusted) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.projectTrusted = trusted;\n\t\tthis.modifiedProjectFields.clear();\n\t\tthis.modifiedProjectNestedFields.clear();\n\n\t\tif (!trusted) {\n\t\t\tthis.projectSettings = {};\n\t\t\tthis.projectSettingsLoadError = null;\n\t\t\tthis.settings = deepMergeSettings(this.globalSettings, this.projectSettings);\n\t\t\treturn;\n\t\t}\n\n\t\tconst projectLoad = SettingsManager.tryLoadFromStorage(this.storage, \"project\", trusted);\n\t\tthis.projectSettings = projectLoad.settings;\n\t\tthis.projectSettingsLoadError = projectLoad.error;\n\t\tif (projectLoad.error) {\n\t\t\tthis.recordError(\"project\", projectLoad.error);\n\t\t}\n\t\tthis.settings = deepMergeSettings(this.globalSettings, this.projectSettings);\n\t}\n\n\tasync reload(): Promise<void> {\n\t\tawait this.writeQueue;\n\t\tconst globalLoad = SettingsManager.tryLoadFromStorage(this.storage, \"global\");\n\t\tif (!globalLoad.error) {\n\t\t\tthis.globalSettings = globalLoad.settings;\n\t\t\tthis.globalSettingsLoadError = null;\n\t\t} else {\n\t\t\tthis.globalSettingsLoadError = globalLoad.error;\n\t\t\tthis.recordError(\"global\", globalLoad.error);\n\t\t}\n\n\t\tthis.modifiedFields.clear();\n\t\tthis.modifiedNestedFields.clear();\n\t\tthis.modifiedProjectFields.clear();\n\t\tthis.modifiedProjectNestedFields.clear();\n\n\t\tconst projectLoad = SettingsManager.tryLoadFromStorage(this.storage, \"project\", this.projectTrusted);\n\t\tif (!projectLoad.error) {\n\t\t\tthis.projectSettings = projectLoad.settings;\n\t\t\tthis.projectSettingsLoadError = null;\n\t\t} else {\n\t\t\tthis.projectSettingsLoadError = projectLoad.error;\n\t\t\tthis.recordError(\"project\", projectLoad.error);\n\t\t}\n\n\t\tthis.settings = deepMergeSettings(this.globalSettings, this.projectSettings);\n\t}\n\n\t/** Apply additional overrides on top of current settings */\n\tapplyOverrides(overrides: Partial<Settings>): void {\n\t\tthis.settings = deepMergeSettings(this.settings, overrides);\n\t}\n\n\t/** Mark a global field as modified during this session */\n\tprivate markModified(field: keyof Settings, nestedKey?: string): void {\n\t\tthis.modifiedFields.add(field);\n\t\tif (nestedKey) {\n\t\t\tif (!this.modifiedNestedFields.has(field)) {\n\t\t\t\tthis.modifiedNestedFields.set(field, new Set());\n\t\t\t}\n\t\t\tthis.modifiedNestedFields.get(field)!.add(nestedKey);\n\t\t}\n\t}\n\n\t/** Mark a project field as modified during this session */\n\tprivate markProjectModified(field: keyof Settings, nestedKey?: string): void {\n\t\tthis.modifiedProjectFields.add(field);\n\t\tif (nestedKey) {\n\t\t\tif (!this.modifiedProjectNestedFields.has(field)) {\n\t\t\t\tthis.modifiedProjectNestedFields.set(field, new Set());\n\t\t\t}\n\t\t\tthis.modifiedProjectNestedFields.get(field)!.add(nestedKey);\n\t\t}\n\t}\n\n\tprivate assertProjectTrustedForWrite(): void {\n\t\tif (!this.projectTrusted) {\n\t\t\tthrow new Error(\"Project is not trusted; refusing to write project settings\");\n\t\t}\n\t}\n\n\tprivate recordError(scope: SettingsScope, error: unknown): void {\n\t\tconst normalizedError = error instanceof Error ? error : new Error(String(error));\n\t\tthis.errors.push({ scope, error: normalizedError });\n\t}\n\n\tprivate clearModifiedScope(scope: SettingsScope): void {\n\t\tif (scope === \"global\") {\n\t\t\tthis.modifiedFields.clear();\n\t\t\tthis.modifiedNestedFields.clear();\n\t\t\treturn;\n\t\t}\n\n\t\tthis.modifiedProjectFields.clear();\n\t\tthis.modifiedProjectNestedFields.clear();\n\t}\n\n\tprivate enqueueWrite(scope: SettingsScope, task: () => void): void {\n\t\tthis.writeQueue = this.writeQueue\n\t\t\t.then(() => {\n\t\t\t\tif (scope === \"project\") {\n\t\t\t\t\tthis.assertProjectTrustedForWrite();\n\t\t\t\t}\n\t\t\t\ttask();\n\t\t\t\tthis.clearModifiedScope(scope);\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tthis.recordError(scope, error);\n\t\t\t});\n\t}\n\n\tprivate cloneModifiedNestedFields(source: Map<keyof Settings, Set<string>>): Map<keyof Settings, Set<string>> {\n\t\tconst snapshot = new Map<keyof Settings, Set<string>>();\n\t\tfor (const [key, value] of source.entries()) {\n\t\t\tsnapshot.set(key, new Set(value));\n\t\t}\n\t\treturn snapshot;\n\t}\n\n\tprivate persistScopedSettings(\n\t\tscope: SettingsScope,\n\t\tsnapshotSettings: Settings,\n\t\tmodifiedFields: Set<keyof Settings>,\n\t\tmodifiedNestedFields: Map<keyof Settings, Set<string>>,\n\t): void {\n\t\tthis.storage.withLock(scope, (current) => {\n\t\t\tconst currentFileSettings = current\n\t\t\t\t? SettingsManager.migrateSettings(JSON.parse(current) as Record<string, unknown>)\n\t\t\t\t: {};\n\t\t\tconst mergedSettings: Settings = { ...currentFileSettings };\n\t\t\tfor (const field of modifiedFields) {\n\t\t\t\tconst value = snapshotSettings[field];\n\t\t\t\tif (modifiedNestedFields.has(field) && typeof value === \"object\" && value !== null) {\n\t\t\t\t\tconst nestedModified = modifiedNestedFields.get(field)!;\n\t\t\t\t\tconst baseNested = (currentFileSettings[field] as Record<string, unknown>) ?? {};\n\t\t\t\t\tconst inMemoryNested = value as Record<string, unknown>;\n\t\t\t\t\tconst mergedNested = { ...baseNested };\n\t\t\t\t\tfor (const nestedKey of nestedModified) {\n\t\t\t\t\t\tmergedNested[nestedKey] = inMemoryNested[nestedKey];\n\t\t\t\t\t}\n\t\t\t\t\t(mergedSettings as Record<string, unknown>)[field] = mergedNested;\n\t\t\t\t} else {\n\t\t\t\t\t(mergedSettings as Record<string, unknown>)[field] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn JSON.stringify(mergedSettings, null, 2);\n\t\t});\n\t}\n\n\tprivate save(): void {\n\t\tthis.settings = deepMergeSettings(this.globalSettings, this.projectSettings);\n\n\t\tif (this.globalSettingsLoadError) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst snapshotGlobalSettings = structuredClone(this.globalSettings);\n\t\tconst modifiedFields = new Set(this.modifiedFields);\n\t\tconst modifiedNestedFields = this.cloneModifiedNestedFields(this.modifiedNestedFields);\n\n\t\tthis.enqueueWrite(\"global\", () => {\n\t\t\tthis.persistScopedSettings(\"global\", snapshotGlobalSettings, modifiedFields, modifiedNestedFields);\n\t\t});\n\t}\n\n\tprivate saveProjectSettings(settings: Settings): void {\n\t\tthis.assertProjectTrustedForWrite();\n\t\tthis.projectSettings = structuredClone(settings);\n\t\tthis.settings = deepMergeSettings(this.globalSettings, this.projectSettings);\n\n\t\tif (this.projectSettingsLoadError) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst snapshotProjectSettings = structuredClone(this.projectSettings);\n\t\tconst modifiedFields = new Set(this.modifiedProjectFields);\n\t\tconst modifiedNestedFields = this.cloneModifiedNestedFields(this.modifiedProjectNestedFields);\n\t\tthis.enqueueWrite(\"project\", () => {\n\t\t\tthis.persistScopedSettings(\"project\", snapshotProjectSettings, modifiedFields, modifiedNestedFields);\n\t\t});\n\t}\n\n\tprivate updateProjectSettings(field: keyof Settings, update: (settings: Settings) => void): void {\n\t\tthis.assertProjectTrustedForWrite();\n\t\tconst projectSettings = structuredClone(this.projectSettings);\n\t\tupdate(projectSettings);\n\t\tthis.markProjectModified(field);\n\t\tthis.saveProjectSettings(projectSettings);\n\t}\n\n\tasync flush(): Promise<void> {\n\t\tawait this.writeQueue;\n\t}\n\n\tdrainErrors(): SettingsError[] {\n\t\tconst drained = [...this.errors];\n\t\tthis.errors = [];\n\t\treturn drained;\n\t}\n\n\tgetLastChangelogVersion(): string | undefined {\n\t\treturn this.settings.lastChangelogVersion;\n\t}\n\n\tsetLastChangelogVersion(version: string): void {\n\t\tthis.globalSettings.lastChangelogVersion = version;\n\t\tthis.markModified(\"lastChangelogVersion\");\n\t\tthis.save();\n\t}\n\n\tgetSessionDir(): string | undefined {\n\t\tconst sessionDir = this.settings.sessionDir;\n\t\treturn sessionDir ? normalizePath(sessionDir) : sessionDir;\n\t}\n\n\tgetDefaultProvider(): string | undefined {\n\t\treturn this.settings.defaultProvider;\n\t}\n\n\tgetDefaultModel(): string | undefined {\n\t\treturn this.settings.defaultModel;\n\t}\n\n\tsetDefaultProvider(provider: string): void {\n\t\tthis.globalSettings.defaultProvider = provider;\n\t\tthis.markModified(\"defaultProvider\");\n\t\tthis.save();\n\t}\n\n\tsetDefaultModel(modelId: string): void {\n\t\tthis.globalSettings.defaultModel = modelId;\n\t\tthis.markModified(\"defaultModel\");\n\t\tthis.save();\n\t}\n\n\tsetDefaultModelAndProvider(provider: string, modelId: string): void {\n\t\tthis.globalSettings.defaultProvider = provider;\n\t\tthis.globalSettings.defaultModel = modelId;\n\t\tthis.markModified(\"defaultProvider\");\n\t\tthis.markModified(\"defaultModel\");\n\t\tthis.save();\n\t}\n\n\tgetSteeringMode(): \"all\" | \"one-at-a-time\" {\n\t\treturn this.settings.steeringMode || \"one-at-a-time\";\n\t}\n\n\tsetSteeringMode(mode: \"all\" | \"one-at-a-time\"): void {\n\t\tthis.globalSettings.steeringMode = mode;\n\t\tthis.markModified(\"steeringMode\");\n\t\tthis.save();\n\t}\n\n\tgetFollowUpMode(): \"all\" | \"one-at-a-time\" {\n\t\treturn this.settings.followUpMode || \"one-at-a-time\";\n\t}\n\n\tsetFollowUpMode(mode: \"all\" | \"one-at-a-time\"): void {\n\t\tthis.globalSettings.followUpMode = mode;\n\t\tthis.markModified(\"followUpMode\");\n\t\tthis.save();\n\t}\n\n\tgetThemeSetting(): string | undefined {\n\t\tconst value = this.settings.theme;\n\t\tif (typeof value === \"string\") return value;\n\t\treturn undefined;\n\t}\n\n\tgetTheme(): string | undefined {\n\t\tconst theme = this.getThemeSetting();\n\t\treturn theme?.includes(\"/\") ? undefined : theme;\n\t}\n\n\tsetTheme(theme: string): void {\n\t\tthis.globalSettings.theme = theme;\n\t\tthis.markModified(\"theme\");\n\t\tthis.save();\n\t}\n\n\tgetDefaultThinkingLevel(): ThinkingLevel | undefined {\n\t\treturn this.settings.defaultThinkingLevel;\n\t}\n\n\tsetDefaultThinkingLevel(level: ThinkingLevel): void {\n\t\tthis.globalSettings.defaultThinkingLevel = level;\n\t\tthis.markModified(\"defaultThinkingLevel\");\n\t\tthis.save();\n\t}\n\n\tgetTransport(): TransportSetting {\n\t\treturn this.settings.transport ?? \"auto\";\n\t}\n\n\tsetTransport(transport: TransportSetting): void {\n\t\tthis.globalSettings.transport = transport;\n\t\tthis.markModified(\"transport\");\n\t\tthis.save();\n\t}\n\n\tgetCompactionEnabled(): boolean {\n\t\treturn this.settings.compaction?.enabled ?? true;\n\t}\n\n\tsetCompactionEnabled(enabled: boolean): void {\n\t\tif (!this.globalSettings.compaction) {\n\t\t\tthis.globalSettings.compaction = {};\n\t\t}\n\t\tthis.globalSettings.compaction.enabled = enabled;\n\t\tthis.markModified(\"compaction\", \"enabled\");\n\t\tthis.save();\n\t}\n\n\tgetCompactionReserveTokens(): number {\n\t\treturn this.settings.compaction?.reserveTokens ?? 16384;\n\t}\n\n\tgetCompactionKeepRecentTokens(): number {\n\t\treturn this.settings.compaction?.keepRecentTokens ?? 20000;\n\t}\n\n\tgetCompactionSettings(): { enabled: boolean; reserveTokens: number; keepRecentTokens: number } {\n\t\treturn {\n\t\t\tenabled: this.getCompactionEnabled(),\n\t\t\treserveTokens: this.getCompactionReserveTokens(),\n\t\t\tkeepRecentTokens: this.getCompactionKeepRecentTokens(),\n\t\t};\n\t}\n\n\tgetBranchSummarySettings(): { reserveTokens: number; skipPrompt: boolean } {\n\t\treturn {\n\t\t\treserveTokens: this.settings.branchSummary?.reserveTokens ?? 16384,\n\t\t\tskipPrompt: this.settings.branchSummary?.skipPrompt ?? false,\n\t\t};\n\t}\n\n\tgetBranchSummarySkipPrompt(): boolean {\n\t\treturn this.settings.branchSummary?.skipPrompt ?? false;\n\t}\n\n\tgetRetryEnabled(): boolean {\n\t\treturn this.settings.retry?.enabled ?? true;\n\t}\n\n\tsetRetryEnabled(enabled: boolean): void {\n\t\tif (!this.globalSettings.retry) {\n\t\t\tthis.globalSettings.retry = {};\n\t\t}\n\t\tthis.globalSettings.retry.enabled = enabled;\n\t\tthis.markModified(\"retry\", \"enabled\");\n\t\tthis.save();\n\t}\n\n\tgetRetrySettings(): { enabled: boolean; maxRetries: number; baseDelayMs: number } {\n\t\treturn {\n\t\t\tenabled: this.getRetryEnabled(),\n\t\t\tmaxRetries: this.settings.retry?.maxRetries ?? 3,\n\t\t\tbaseDelayMs: this.settings.retry?.baseDelayMs ?? 2000,\n\t\t};\n\t}\n\n\tgetHttpIdleTimeoutMs(): number {\n\t\treturn parseTimeoutSetting(this.settings.httpIdleTimeoutMs, \"httpIdleTimeoutMs\") ?? DEFAULT_HTTP_IDLE_TIMEOUT_MS;\n\t}\n\n\tsetHttpIdleTimeoutMs(timeoutMs: number): void {\n\t\tif (!Number.isFinite(timeoutMs) || timeoutMs < 0) {\n\t\t\tthrow new Error(`Invalid httpIdleTimeoutMs setting: ${String(timeoutMs)}`);\n\t\t}\n\t\tthis.globalSettings.httpIdleTimeoutMs = Math.floor(timeoutMs);\n\t\tthis.markModified(\"httpIdleTimeoutMs\");\n\t\tthis.save();\n\t}\n\n\tgetProviderRetrySettings(): { timeoutMs?: number; maxRetries?: number; maxRetryDelayMs: number } {\n\t\treturn {\n\t\t\ttimeoutMs: this.settings.retry?.provider?.timeoutMs,\n\t\t\tmaxRetries: this.settings.retry?.provider?.maxRetries,\n\t\t\tmaxRetryDelayMs: this.settings.retry?.provider?.maxRetryDelayMs ?? 60000,\n\t\t};\n\t}\n\n\tgetWebSocketConnectTimeoutMs(): number | undefined {\n\t\treturn parseTimeoutSetting(this.settings.websocketConnectTimeoutMs, \"websocketConnectTimeoutMs\");\n\t}\n\n\tgetHideThinkingBlock(): boolean {\n\t\treturn this.settings.hideThinkingBlock ?? false;\n\t}\n\n\tgetShowCacheMissNotices(): boolean {\n\t\treturn this.settings.showCacheMissNotices ?? false;\n\t}\n\n\tgetExternalEditorCommand(): string {\n\t\tconst configuredEditor = this.settings.externalEditor;\n\t\tif (typeof configuredEditor === \"string\" && configuredEditor.trim() !== \"\") {\n\t\t\treturn configuredEditor;\n\t\t}\n\t\tconst environmentEditor = process.env.VISUAL || process.env.EDITOR;\n\t\tif (environmentEditor) {\n\t\t\treturn environmentEditor;\n\t\t}\n\t\treturn process.platform === \"win32\" ? \"notepad\" : \"nano\";\n\t}\n\n\tsetHideThinkingBlock(hide: boolean): void {\n\t\tthis.globalSettings.hideThinkingBlock = hide;\n\t\tthis.markModified(\"hideThinkingBlock\");\n\t\tthis.save();\n\t}\n\n\tsetShowCacheMissNotices(show: boolean): void {\n\t\tthis.globalSettings.showCacheMissNotices = show;\n\t\tthis.markModified(\"showCacheMissNotices\");\n\t\tthis.save();\n\t}\n\n\tgetShellPath(): string | undefined {\n\t\tconst shellPath = this.settings.shellPath;\n\t\treturn shellPath ? normalizePath(shellPath) : shellPath;\n\t}\n\n\tsetShellPath(path: string | undefined): void {\n\t\tthis.globalSettings.shellPath = path;\n\t\tthis.markModified(\"shellPath\");\n\t\tthis.save();\n\t}\n\n\tgetQuietStartup(): boolean {\n\t\treturn this.settings.quietStartup ?? false;\n\t}\n\n\tsetQuietStartup(quiet: boolean): void {\n\t\tthis.globalSettings.quietStartup = quiet;\n\t\tthis.markModified(\"quietStartup\");\n\t\tthis.save();\n\t}\n\n\tgetDefaultProjectTrust(): DefaultProjectTrust {\n\t\tconst value = this.globalSettings.defaultProjectTrust;\n\t\treturn value === \"always\" || value === \"never\" ? value : \"ask\";\n\t}\n\n\tsetDefaultProjectTrust(defaultProjectTrust: DefaultProjectTrust): void {\n\t\tthis.globalSettings.defaultProjectTrust = defaultProjectTrust;\n\t\tthis.markModified(\"defaultProjectTrust\");\n\t\tthis.save();\n\t}\n\n\tgetShellCommandPrefix(): string | undefined {\n\t\treturn this.settings.shellCommandPrefix;\n\t}\n\n\tsetShellCommandPrefix(prefix: string | undefined): void {\n\t\tthis.globalSettings.shellCommandPrefix = prefix;\n\t\tthis.markModified(\"shellCommandPrefix\");\n\t\tthis.save();\n\t}\n\n\tgetNpmCommand(): string[] | undefined {\n\t\treturn this.settings.npmCommand ? [...this.settings.npmCommand] : undefined;\n\t}\n\n\tsetNpmCommand(command: string[] | undefined): void {\n\t\tthis.globalSettings.npmCommand = command ? [...command] : undefined;\n\t\tthis.markModified(\"npmCommand\");\n\t\tthis.save();\n\t}\n\n\tgetCollapseChangelog(): boolean {\n\t\treturn this.settings.collapseChangelog ?? false;\n\t}\n\n\tsetCollapseChangelog(collapse: boolean): void {\n\t\tthis.globalSettings.collapseChangelog = collapse;\n\t\tthis.markModified(\"collapseChangelog\");\n\t\tthis.save();\n\t}\n\n\tgetEnableInstallTelemetry(): boolean {\n\t\treturn this.settings.enableInstallTelemetry ?? true;\n\t}\n\n\tsetEnableInstallTelemetry(enabled: boolean): void {\n\t\tthis.globalSettings.enableInstallTelemetry = enabled;\n\t\tthis.markModified(\"enableInstallTelemetry\");\n\t\tthis.save();\n\t}\n\n\tgetEnableAnalytics(): boolean {\n\t\treturn this.settings.enableAnalytics ?? false;\n\t}\n\n\tgetTrackingId(): string | undefined {\n\t\treturn this.settings.trackingId;\n\t}\n\n\t/** Set the analytics opt-in preference; generates a tracking identifier on first opt-in */\n\tsetEnableAnalytics(enabled: boolean): void {\n\t\tthis.globalSettings.enableAnalytics = enabled;\n\t\tthis.markModified(\"enableAnalytics\");\n\t\tif (enabled && !this.globalSettings.trackingId) {\n\t\t\tthis.globalSettings.trackingId = randomUUID();\n\t\t\tthis.markModified(\"trackingId\");\n\t\t}\n\t\tthis.save();\n\t}\n\n\tgetPackages(): PackageSource[] {\n\t\treturn [...(this.settings.packages ?? [])];\n\t}\n\n\tsetPackages(packages: PackageSource[]): void {\n\t\tthis.globalSettings.packages = packages;\n\t\tthis.markModified(\"packages\");\n\t\tthis.save();\n\t}\n\n\tsetProjectPackages(packages: PackageSource[]): void {\n\t\tthis.updateProjectSettings(\"packages\", (settings) => {\n\t\t\tsettings.packages = packages;\n\t\t});\n\t}\n\n\tgetExtensionPaths(): string[] {\n\t\treturn [...(this.settings.extensions ?? [])];\n\t}\n\n\tsetExtensionPaths(paths: string[]): void {\n\t\tthis.globalSettings.extensions = paths;\n\t\tthis.markModified(\"extensions\");\n\t\tthis.save();\n\t}\n\n\tsetProjectExtensionPaths(paths: string[]): void {\n\t\tthis.updateProjectSettings(\"extensions\", (settings) => {\n\t\t\tsettings.extensions = paths;\n\t\t});\n\t}\n\n\tgetSkillPaths(): string[] {\n\t\treturn [...(this.settings.skills ?? [])];\n\t}\n\n\tsetSkillPaths(paths: string[]): void {\n\t\tthis.globalSettings.skills = paths;\n\t\tthis.markModified(\"skills\");\n\t\tthis.save();\n\t}\n\n\tsetProjectSkillPaths(paths: string[]): void {\n\t\tthis.updateProjectSettings(\"skills\", (settings) => {\n\t\t\tsettings.skills = paths;\n\t\t});\n\t}\n\n\tgetPromptTemplatePaths(): string[] {\n\t\treturn [...(this.settings.prompts ?? [])];\n\t}\n\n\tsetPromptTemplatePaths(paths: string[]): void {\n\t\tthis.globalSettings.prompts = paths;\n\t\tthis.markModified(\"prompts\");\n\t\tthis.save();\n\t}\n\n\tsetProjectPromptTemplatePaths(paths: string[]): void {\n\t\tthis.updateProjectSettings(\"prompts\", (settings) => {\n\t\t\tsettings.prompts = paths;\n\t\t});\n\t}\n\n\tgetThemePaths(): string[] {\n\t\treturn [...(this.settings.themes ?? [])];\n\t}\n\n\tsetThemePaths(paths: string[]): void {\n\t\tthis.globalSettings.themes = paths;\n\t\tthis.markModified(\"themes\");\n\t\tthis.save();\n\t}\n\n\tsetProjectThemePaths(paths: string[]): void {\n\t\tthis.updateProjectSettings(\"themes\", (settings) => {\n\t\t\tsettings.themes = paths;\n\t\t});\n\t}\n\n\tgetEnableSkillCommands(): boolean {\n\t\treturn this.settings.enableSkillCommands ?? true;\n\t}\n\n\tsetEnableSkillCommands(enabled: boolean): void {\n\t\tthis.globalSettings.enableSkillCommands = enabled;\n\t\tthis.markModified(\"enableSkillCommands\");\n\t\tthis.save();\n\t}\n\n\tgetThinkingBudgets(): ThinkingBudgetsSettings | undefined {\n\t\treturn this.settings.thinkingBudgets;\n\t}\n\n\tgetShowImages(): boolean {\n\t\treturn this.settings.terminal?.showImages ?? true;\n\t}\n\n\tsetShowImages(show: boolean): void {\n\t\tif (!this.globalSettings.terminal) {\n\t\t\tthis.globalSettings.terminal = {};\n\t\t}\n\t\tthis.globalSettings.terminal.showImages = show;\n\t\tthis.markModified(\"terminal\", \"showImages\");\n\t\tthis.save();\n\t}\n\n\tgetImageWidthCells(): number {\n\t\tconst width = this.settings.terminal?.imageWidthCells;\n\t\tif (typeof width !== \"number\" || !Number.isFinite(width)) {\n\t\t\treturn 60;\n\t\t}\n\t\treturn Math.max(1, Math.floor(width));\n\t}\n\n\tsetImageWidthCells(width: number): void {\n\t\tif (!this.globalSettings.terminal) {\n\t\t\tthis.globalSettings.terminal = {};\n\t\t}\n\t\tthis.globalSettings.terminal.imageWidthCells = Math.max(1, Math.floor(width));\n\t\tthis.markModified(\"terminal\", \"imageWidthCells\");\n\t\tthis.save();\n\t}\n\n\tgetClearOnShrink(): boolean {\n\t\t// Settings takes precedence, then env var, then default false\n\t\tif (this.settings.terminal?.clearOnShrink !== undefined) {\n\t\t\treturn this.settings.terminal.clearOnShrink;\n\t\t}\n\t\treturn process.env.PI_CLEAR_ON_SHRINK === \"1\";\n\t}\n\n\tsetClearOnShrink(enabled: boolean): void {\n\t\tif (!this.globalSettings.terminal) {\n\t\t\tthis.globalSettings.terminal = {};\n\t\t}\n\t\tthis.globalSettings.terminal.clearOnShrink = enabled;\n\t\tthis.markModified(\"terminal\", \"clearOnShrink\");\n\t\tthis.save();\n\t}\n\n\tgetShowTerminalProgress(): boolean {\n\t\treturn this.settings.terminal?.showTerminalProgress ?? false;\n\t}\n\n\tsetShowTerminalProgress(enabled: boolean): void {\n\t\tif (!this.globalSettings.terminal) {\n\t\t\tthis.globalSettings.terminal = {};\n\t\t}\n\t\tthis.globalSettings.terminal.showTerminalProgress = enabled;\n\t\tthis.markModified(\"terminal\", \"showTerminalProgress\");\n\t\tthis.save();\n\t}\n\n\tgetTuiMode(): TuiMode {\n\t\treturn this.settings.tuiMode === \"fullscreen\" ? \"fullscreen\" : \"regular\";\n\t}\n\n\tsetTuiMode(mode: TuiMode): void {\n\t\tthis.globalSettings.tuiMode = mode;\n\t\tthis.markModified(\"tuiMode\");\n\t\tthis.save();\n\t}\n\n\tgetFullscreenExitOutput(): FullscreenExitOutput {\n\t\treturn this.settings.fullscreenExitOutput === \"resume-hint\" ? \"resume-hint\" : \"transcript\";\n\t}\n\n\tsetFullscreenExitOutput(output: FullscreenExitOutput): void {\n\t\tthis.globalSettings.fullscreenExitOutput = output;\n\t\tthis.markModified(\"fullscreenExitOutput\");\n\t\tthis.save();\n\t}\n\n\tgetFullscreenScrollbar(): ScrollViewScrollbar {\n\t\tconst mode = this.settings.fullscreenScrollbar;\n\t\treturn mode === \"always\" || mode === \"hidden\" ? mode : \"auto\";\n\t}\n\n\tsetFullscreenScrollbar(mode: ScrollViewScrollbar): void {\n\t\tthis.globalSettings.fullscreenScrollbar = mode;\n\t\tthis.markModified(\"fullscreenScrollbar\");\n\t\tthis.save();\n\t}\n\n\tgetImageAutoResize(): boolean {\n\t\treturn this.settings.images?.autoResize ?? true;\n\t}\n\n\tsetImageAutoResize(enabled: boolean): void {\n\t\tif (!this.globalSettings.images) {\n\t\t\tthis.globalSettings.images = {};\n\t\t}\n\t\tthis.globalSettings.images.autoResize = enabled;\n\t\tthis.markModified(\"images\", \"autoResize\");\n\t\tthis.save();\n\t}\n\n\tgetBlockImages(): boolean {\n\t\treturn this.settings.images?.blockImages ?? false;\n\t}\n\n\tsetBlockImages(blocked: boolean): void {\n\t\tif (!this.globalSettings.images) {\n\t\t\tthis.globalSettings.images = {};\n\t\t}\n\t\tthis.globalSettings.images.blockImages = blocked;\n\t\tthis.markModified(\"images\", \"blockImages\");\n\t\tthis.save();\n\t}\n\n\tgetEnabledModels(): string[] | undefined {\n\t\treturn this.settings.enabledModels;\n\t}\n\n\tgetDefaultTools(): string[] | undefined {\n\t\tconst tools = this.settings.defaultTools;\n\t\treturn tools ? [...tools] : undefined;\n\t}\n\n\tsetEnabledModels(patterns: string[] | undefined): void {\n\t\tthis.globalSettings.enabledModels = patterns;\n\t\tthis.markModified(\"enabledModels\");\n\t\tthis.save();\n\t}\n\n\tgetDoubleEscapeAction(): \"fork\" | \"tree\" | \"none\" {\n\t\treturn this.settings.doubleEscapeAction ?? \"tree\";\n\t}\n\n\tsetDoubleEscapeAction(action: \"fork\" | \"tree\" | \"none\"): void {\n\t\tthis.globalSettings.doubleEscapeAction = action;\n\t\tthis.markModified(\"doubleEscapeAction\");\n\t\tthis.save();\n\t}\n\n\tgetTreeFilterMode(): \"default\" | \"no-tools\" | \"user-only\" | \"labeled-only\" | \"all\" {\n\t\tconst mode = this.settings.treeFilterMode;\n\t\tconst valid = [\"default\", \"no-tools\", \"user-only\", \"labeled-only\", \"all\"];\n\t\treturn mode && valid.includes(mode) ? mode : \"default\";\n\t}\n\n\tsetTreeFilterMode(mode: \"default\" | \"no-tools\" | \"user-only\" | \"labeled-only\" | \"all\"): void {\n\t\tthis.globalSettings.treeFilterMode = mode;\n\t\tthis.markModified(\"treeFilterMode\");\n\t\tthis.save();\n\t}\n\n\tgetShowHardwareCursor(): boolean {\n\t\treturn this.settings.showHardwareCursor ?? process.env.PI_HARDWARE_CURSOR === \"1\";\n\t}\n\n\tsetShowHardwareCursor(enabled: boolean): void {\n\t\tthis.globalSettings.showHardwareCursor = enabled;\n\t\tthis.markModified(\"showHardwareCursor\");\n\t\tthis.save();\n\t}\n\n\tgetEditorPaddingX(): number {\n\t\treturn this.settings.editorPaddingX ?? 0;\n\t}\n\n\tsetEditorPaddingX(padding: number): void {\n\t\tthis.globalSettings.editorPaddingX = Math.max(0, Math.min(3, Math.floor(padding)));\n\t\tthis.markModified(\"editorPaddingX\");\n\t\tthis.save();\n\t}\n\n\tgetOutputPad(): 0 | 1 {\n\t\treturn this.settings.outputPad === 0 ? 0 : 1;\n\t}\n\n\tsetOutputPad(padding: 0 | 1): void {\n\t\tthis.globalSettings.outputPad = padding;\n\t\tthis.markModified(\"outputPad\");\n\t\tthis.save();\n\t}\n\n\tgetAutocompleteMaxVisible(): number {\n\t\treturn this.settings.autocompleteMaxVisible ?? 5;\n\t}\n\n\tsetAutocompleteMaxVisible(maxVisible: number): void {\n\t\tthis.globalSettings.autocompleteMaxVisible = Math.max(3, Math.min(20, Math.floor(maxVisible)));\n\t\tthis.markModified(\"autocompleteMaxVisible\");\n\t\tthis.save();\n\t}\n\n\tgetCodeBlockIndent(): string {\n\t\treturn this.settings.markdown?.codeBlockIndent ?? \" \";\n\t}\n\n\tgetMermaidRenderingMode(): MermaidRenderingMode {\n\t\tconst mode = this.settings.markdown?.mermaid;\n\t\treturn mode === \"off\" || mode === \"final\" ? mode : \"streaming\";\n\t}\n\n\tsetMermaidRenderingMode(mode: MermaidRenderingMode): void {\n\t\tthis.globalSettings.markdown ??= {};\n\t\tthis.globalSettings.markdown.mermaid = mode;\n\t\tthis.markModified(\"markdown\", \"mermaid\");\n\t\tthis.save();\n\t}\n\n\tgetWarnings(): WarningSettings {\n\t\treturn { ...(this.settings.warnings ?? {}) };\n\t}\n\n\tsetWarnings(warnings: WarningSettings): void {\n\t\tthis.globalSettings.warnings = { ...warnings };\n\t\tthis.markModified(\"warnings\");\n\t\tthis.save();\n\t}\n}\n"]}
1
+ {"version":3,"file":"settings-manager.d.ts","sourceRoot":"","sources":["../../src/core/settings-manager.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport type { Transport } from \"@earendil-works/pi-ai\";\nimport type { TuiMode as RendererTuiMode, ScrollViewScrollbar, TerminalCapabilities } from \"@earendil-works/pi-tui\";\nimport { randomUUID } from \"crypto\";\nimport { existsSync, mkdirSync, readFileSync, writeFileSync } from \"fs\";\nimport { dirname, join } from \"path\";\nimport lockfile from \"proper-lockfile\";\nimport { CONFIG_DIR_NAME, getAgentDir } from \"../config.ts\";\nimport { normalizePath, resolvePath } from \"../utils/paths.ts\";\nimport { stripBom } from \"../utils/text.ts\";\nimport { DEFAULT_HTTP_IDLE_TIMEOUT_MS, parseHttpIdleTimeoutMs } from \"./http-dispatcher.ts\";\n\nexport interface CompactionSettings {\n\tenabled?: boolean; // default: true\n\treserveTokens?: number; // default: 16384\n\tkeepRecentTokens?: number; // default: 20000\n}\n\nexport interface BranchSummarySettings {\n\treserveTokens?: number; // default: 16384 (tokens reserved for prompt + LLM response)\n\tskipPrompt?: boolean; // default: false - when true, skips \"Summarize branch?\" prompt and defaults to no summary\n}\n\nexport interface ProviderRetrySettings {\n\ttimeoutMs?: number; // SDK/provider request timeout in milliseconds\n\tmaxRetries?: number; // SDK/provider retry attempts\n\tmaxRetryDelayMs?: number; // default: 60000 (max server-requested delay before failing)\n}\n\nexport interface RetrySettings {\n\tenabled?: boolean; // default: true\n\tmaxRetries?: number; // default: 3\n\tbaseDelayMs?: number; // default: 2000 (exponential backoff: 2s, 4s, 8s)\n\tprovider?: ProviderRetrySettings;\n}\n\nexport type TuiMode = RendererTuiMode;\nexport type FullscreenExitOutput = \"transcript\" | \"resume-hint\";\n\nexport interface TerminalSettings {\n\tshowImages?: boolean; // default: true (only relevant if terminal supports images)\n\timageWidthCells?: number; // default: 60 (preferred inline image width in terminal cells)\n\tclearOnShrink?: boolean; // default: false (clear empty rows when content shrinks)\n\tshowTerminalProgress?: boolean; // default: false (OSC 9;4 terminal progress indicators)\n\thyperlinks?: boolean | \"auto\";\n\timages?: \"kitty\" | \"iterm2\" | \"auto\" | false;\n\ttrueColor?: boolean | \"auto\";\n}\n\nexport interface ImageSettings {\n\tautoResize?: boolean; // default: true (resize images to 2000x2000 max for better model compatibility)\n\tblockImages?: boolean; // default: false - when true, prevents all images from being sent to LLM providers\n}\n\nexport interface ThinkingBudgetsSettings {\n\tminimal?: number;\n\tlow?: number;\n\tmedium?: number;\n\thigh?: number;\n}\n\nexport type MermaidRenderingMode = \"off\" | \"final\" | \"streaming\";\n\nexport interface MarkdownSettings {\n\tcodeBlockIndent?: string; // default: \" \"\n\tmermaid?: MermaidRenderingMode; // default: \"streaming\"\n}\n\nexport interface WarningSettings {\n\tanthropicExtraUsage?: boolean; // default: true\n}\n\nexport type DefaultProjectTrust = \"ask\" | \"always\" | \"never\";\n\nexport type TransportSetting = Transport;\n\n/**\n * Package source for npm/git packages.\n * - String form: load all resources from the package\n * - Object form: filter which resources to load\n * - autoload=false: start empty and only apply explicit resource patterns\n */\nexport type PackageSource =\n\t| string\n\t| {\n\t\t\tsource: string;\n\t\t\tautoload?: boolean;\n\t\t\textensions?: string[];\n\t\t\tskills?: string[];\n\t\t\tprompts?: string[];\n\t\t\tthemes?: string[];\n\t };\n\nexport interface Settings {\n\tlastChangelogVersion?: string;\n\tdefaultProvider?: string;\n\tdefaultModel?: string;\n\tdefaultThinkingLevel?: ThinkingLevel;\n\tmodelThinkingLevels?: Record<string, ThinkingLevel>; // per-model default thinking level overrides keyed by \"provider/modelId\"\n\ttransport?: TransportSetting; // default: \"auto\"\n\tsteeringMode?: \"all\" | \"one-at-a-time\";\n\tfollowUpMode?: \"all\" | \"one-at-a-time\";\n\ttheme?: string;\n\tcompaction?: CompactionSettings;\n\tbranchSummary?: BranchSummarySettings;\n\tretry?: RetrySettings;\n\thideThinkingBlock?: boolean;\n\tshowCacheMissNotices?: boolean; // default: false - show prompt-cache miss and compaction cost notices\n\texternalEditor?: string; // Command for Ctrl+G external editor; takes precedence over VISUAL/EDITOR\n\tshellPath?: string; // Custom shell path (e.g., for Cygwin users on Windows); supports leading ~ expansion\n\tquietStartup?: boolean;\n\tdefaultProjectTrust?: DefaultProjectTrust; // default: \"ask\"; global setting only\n\tshellCommandPrefix?: string; // Prefix prepended to every bash command (e.g., \"shopt -s expand_aliases\" for alias support)\n\tnpmCommand?: string[]; // Command used for npm package lookup/install operations, argv-style (e.g., [\"mise\", \"exec\", \"node@20\", \"--\", \"npm\"])\n\tcollapseChangelog?: boolean; // Show condensed changelog after update (use /changelog for full)\n\tenableInstallTelemetry?: boolean; // default: true - anonymous version/update ping after changelog-detected updates\n\tenableAnalytics?: boolean; // default: false - opt-in analytics data sharing\n\ttrackingId?: string; // analytics tracking identifier, generated when analytics is enabled\n\tpackages?: PackageSource[]; // Array of npm/git package sources (string or object with filtering)\n\textensions?: string[]; // Array of local extension file paths or directories\n\tskills?: string[]; // Array of local skill file paths or directories\n\tprompts?: string[]; // Array of local prompt template paths or directories\n\tthemes?: string[]; // Array of local theme file paths or directories\n\tenableSkillCommands?: boolean; // default: true - register skills as /skill:name commands\n\tterminal?: TerminalSettings;\n\timages?: ImageSettings;\n\tenabledModels?: string[]; // Model patterns for cycling (same format as --models CLI flag)\n\tdefaultTools?: string[]; // Initial built-in tool selection\n\tdoubleEscapeAction?: \"fork\" | \"tree\" | \"none\"; // Action for double-escape with empty editor (default: \"tree\")\n\ttreeFilterMode?: \"default\" | \"no-tools\" | \"user-only\" | \"labeled-only\" | \"all\"; // Default filter when opening /tree\n\tthinkingBudgets?: ThinkingBudgetsSettings; // Custom token budgets for thinking levels\n\teditorPaddingX?: number; // Horizontal padding for input editor (default: 0)\n\toutputPad?: 0 | 1; // Horizontal padding for chat message output (default: 1)\n\tautocompleteMaxVisible?: number; // Max visible items in autocomplete dropdown (default: 5)\n\tshowHardwareCursor?: boolean; // Show terminal cursor while still positioning it for IME\n\tmarkdown?: MarkdownSettings;\n\twarnings?: WarningSettings;\n\tsessionDir?: string; // Custom session storage directory (same format as --session-dir CLI flag)\n\thttpProxy?: string; // Proxy URL applied as HTTP_PROXY and HTTPS_PROXY for Pi-managed HTTP clients\n\thttpIdleTimeoutMs?: number; // HTTP header/body idle timeout in milliseconds; 0 disables it\n\twebsocketConnectTimeoutMs?: number; // WebSocket connect/open handshake timeout in milliseconds; 0 disables it\n\ttuiMode?: TuiMode; // default: \"regular\"\n\tfullscreenExitOutput?: FullscreenExitOutput; // default: \"transcript\"; no effect in regular TUI mode\n\tfullscreenScrollbar?: ScrollViewScrollbar; // default: \"auto\"; no effect in regular TUI mode\n\tfullscreenCopyOnSelect?: boolean; // default: true; no effect in regular TUI mode\n}\n\nfunction isMergeableObject(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction deepMergeObjects(base: Record<string, unknown>, overrides: Record<string, unknown>): Record<string, unknown> {\n\tconst result = { ...base };\n\n\tfor (const key of Object.keys(overrides)) {\n\t\tconst overrideValue = overrides[key];\n\t\tif (overrideValue === undefined) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst baseValue = base[key];\n\t\tresult[key] =\n\t\t\tisMergeableObject(baseValue) && isMergeableObject(overrideValue)\n\t\t\t\t? deepMergeObjects(baseValue, overrideValue)\n\t\t\t\t: overrideValue;\n\t}\n\n\treturn result;\n}\n\n/** Deep merge settings: project/overrides take precedence, nested objects merge recursively */\nfunction deepMergeSettings(base: Settings, overrides: Settings): Settings {\n\treturn deepMergeObjects(base as Record<string, unknown>, overrides as Record<string, unknown>) as Settings;\n}\n\nfunction parseTimeoutSetting(value: unknown, settingName: string): number | undefined {\n\tconst timeoutMs = parseHttpIdleTimeoutMs(value);\n\tif (timeoutMs !== undefined) {\n\t\treturn timeoutMs;\n\t}\n\tif (value !== undefined) {\n\t\tthrow new Error(`Invalid ${settingName} setting: ${String(value)}`);\n\t}\n\treturn undefined;\n}\n\nexport type SettingsScope = \"global\" | \"project\";\n\nexport interface SettingsManagerCreateOptions {\n\tprojectTrusted?: boolean;\n}\n\nexport interface SettingsStorage {\n\twithLock(scope: SettingsScope, fn: (current: string | undefined) => string | undefined): void;\n}\n\nexport interface SettingsError {\n\tscope: SettingsScope;\n\tpath?: string;\n\terror: Error;\n}\n\ntype SettingsPaths = Partial<Record<SettingsScope, string>>;\n\nfunction toSettingsError(scope: SettingsScope, error: unknown, path?: string): SettingsError {\n\treturn {\n\t\tscope,\n\t\t...(path ? { path } : {}),\n\t\terror: error instanceof Error ? error : new Error(String(error)),\n\t};\n}\n\nexport class FileSettingsStorage implements SettingsStorage {\n\tprivate globalSettingsPath: string;\n\tprivate projectSettingsPath: string;\n\n\tconstructor(cwd: string, agentDir: string) {\n\t\tconst resolvedCwd = resolvePath(cwd);\n\t\tconst resolvedAgentDir = resolvePath(agentDir);\n\t\tthis.globalSettingsPath = join(resolvedAgentDir, \"settings.json\");\n\t\tthis.projectSettingsPath = join(resolvedCwd, CONFIG_DIR_NAME, \"settings.json\");\n\t}\n\n\tprivate acquireLockSyncWithRetry(path: string): () => void {\n\t\tconst maxAttempts = 10;\n\t\tconst delayMs = 20;\n\t\tlet lastError: unknown;\n\n\t\tfor (let attempt = 1; attempt <= maxAttempts; attempt++) {\n\t\t\ttry {\n\t\t\t\treturn lockfile.lockSync(path, { realpath: false });\n\t\t\t} catch (error) {\n\t\t\t\tconst code =\n\t\t\t\t\ttypeof error === \"object\" && error !== null && \"code\" in error\n\t\t\t\t\t\t? String((error as { code?: unknown }).code)\n\t\t\t\t\t\t: undefined;\n\t\t\t\tif (code !== \"ELOCKED\" || attempt === maxAttempts) {\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t\tlastError = error;\n\t\t\t\tconst start = Date.now();\n\t\t\t\twhile (Date.now() - start < delayMs) {\n\t\t\t\t\t// Sleep synchronously to avoid changing callers to async.\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthrow (lastError as Error) ?? new Error(\"Failed to acquire settings lock\");\n\t}\n\n\twithLock(scope: SettingsScope, fn: (current: string | undefined) => string | undefined): void {\n\t\tconst path = scope === \"global\" ? this.globalSettingsPath : this.projectSettingsPath;\n\t\tconst dir = dirname(path);\n\n\t\tlet release: (() => void) | undefined;\n\t\ttry {\n\t\t\t// Only create directory and lock if file exists or we need to write\n\t\t\tconst fileExists = existsSync(path);\n\t\t\tif (fileExists) {\n\t\t\t\trelease = this.acquireLockSyncWithRetry(path);\n\t\t\t}\n\t\t\tconst current = fileExists ? readFileSync(path, \"utf-8\") : undefined;\n\t\t\tconst next = fn(current);\n\t\t\tif (next !== undefined) {\n\t\t\t\t// Only create directory when we actually need to write\n\t\t\t\tif (!existsSync(dir)) {\n\t\t\t\t\tmkdirSync(dir, { recursive: true });\n\t\t\t\t}\n\t\t\t\tif (!release) {\n\t\t\t\t\trelease = this.acquireLockSyncWithRetry(path);\n\t\t\t\t}\n\t\t\t\twriteFileSync(path, next, \"utf-8\");\n\t\t\t}\n\t\t} finally {\n\t\t\tif (release) {\n\t\t\t\trelease();\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport class InMemorySettingsStorage implements SettingsStorage {\n\tprivate global: string | undefined;\n\tprivate project: string | undefined;\n\n\twithLock(scope: SettingsScope, fn: (current: string | undefined) => string | undefined): void {\n\t\tconst current = scope === \"global\" ? this.global : this.project;\n\t\tconst next = fn(current);\n\t\tif (next !== undefined) {\n\t\t\tif (scope === \"global\") {\n\t\t\t\tthis.global = next;\n\t\t\t} else {\n\t\t\t\tthis.project = next;\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport class SettingsManager {\n\tprivate storage: SettingsStorage;\n\tprivate globalSettings: Settings;\n\tprivate projectSettings: Settings;\n\tprivate settings: Settings;\n\tprivate projectTrusted: boolean;\n\tprivate modifiedFields = new Set<keyof Settings>(); // Track global fields modified during session\n\tprivate modifiedNestedFields = new Map<keyof Settings, Set<string>>(); // Track global nested field modifications\n\tprivate modifiedProjectFields = new Set<keyof Settings>(); // Track project fields modified during session\n\tprivate modifiedProjectNestedFields = new Map<keyof Settings, Set<string>>(); // Track project nested field modifications\n\tprivate globalSettingsLoadError: Error | null = null; // Track if global settings file had parse errors\n\tprivate projectSettingsLoadError: Error | null = null; // Track if project settings file had parse errors\n\tprivate writeQueue: Promise<void> = Promise.resolve();\n\tprivate errors: SettingsError[];\n\tprivate settingsPaths: SettingsPaths;\n\n\tprivate constructor(\n\t\tstorage: SettingsStorage,\n\t\tinitialGlobal: Settings,\n\t\tinitialProject: Settings,\n\t\tglobalLoadError: Error | null = null,\n\t\tprojectLoadError: Error | null = null,\n\t\tinitialErrors: SettingsError[] = [],\n\t\tprojectTrusted = true,\n\t\tsettingsPaths: SettingsPaths = {},\n\t) {\n\t\tthis.storage = storage;\n\t\tthis.globalSettings = initialGlobal;\n\t\tthis.projectSettings = initialProject;\n\t\tthis.projectTrusted = projectTrusted;\n\t\tthis.globalSettingsLoadError = globalLoadError;\n\t\tthis.projectSettingsLoadError = projectLoadError;\n\t\tthis.errors = [...initialErrors];\n\t\tthis.settingsPaths = settingsPaths;\n\t\tthis.settings = deepMergeSettings(this.globalSettings, this.projectSettings);\n\t}\n\n\t/** Create a SettingsManager that loads from files */\n\tstatic create(\n\t\tcwd: string,\n\t\tagentDir: string = getAgentDir(),\n\t\toptions: SettingsManagerCreateOptions = {},\n\t): SettingsManager {\n\t\tconst resolvedCwd = resolvePath(cwd);\n\t\tconst resolvedAgentDir = resolvePath(agentDir);\n\t\tconst storage = new FileSettingsStorage(resolvedCwd, resolvedAgentDir);\n\t\treturn SettingsManager.fromStorageWithPaths(storage, options, {\n\t\t\tglobal: join(resolvedAgentDir, \"settings.json\"),\n\t\t\tproject: join(resolvedCwd, CONFIG_DIR_NAME, \"settings.json\"),\n\t\t});\n\t}\n\n\t/** Create a SettingsManager from an arbitrary storage backend */\n\tstatic fromStorage(storage: SettingsStorage, options: SettingsManagerCreateOptions = {}): SettingsManager {\n\t\treturn SettingsManager.fromStorageWithPaths(storage, options);\n\t}\n\n\t/** Create a manager while retaining optional file paths for reported storage errors. */\n\tprivate static fromStorageWithPaths(\n\t\tstorage: SettingsStorage,\n\t\toptions: SettingsManagerCreateOptions,\n\t\tsettingsPaths: SettingsPaths = {},\n\t): SettingsManager {\n\t\tconst projectTrusted = options.projectTrusted ?? true;\n\t\tconst globalLoad = SettingsManager.tryLoadFromStorage(storage, \"global\");\n\t\tconst projectLoad = SettingsManager.tryLoadFromStorage(storage, \"project\", projectTrusted);\n\t\tconst initialErrors: SettingsError[] = [];\n\t\tif (globalLoad.error) {\n\t\t\tinitialErrors.push(toSettingsError(\"global\", globalLoad.error, settingsPaths.global));\n\t\t}\n\t\tif (projectLoad.error) {\n\t\t\tinitialErrors.push(toSettingsError(\"project\", projectLoad.error, settingsPaths.project));\n\t\t}\n\n\t\treturn new SettingsManager(\n\t\t\tstorage,\n\t\t\tglobalLoad.settings,\n\t\t\tprojectLoad.settings,\n\t\t\tglobalLoad.error,\n\t\t\tprojectLoad.error,\n\t\t\tinitialErrors,\n\t\t\tprojectTrusted,\n\t\t\tsettingsPaths,\n\t\t);\n\t}\n\n\t/** Create an in-memory SettingsManager (no file I/O) */\n\tstatic inMemory(settings: Partial<Settings> = {}, options: SettingsManagerCreateOptions = {}): SettingsManager {\n\t\tconst storage = new InMemorySettingsStorage();\n\t\tconst initialSettings = SettingsManager.migrateSettings(structuredClone(settings) as Record<string, unknown>);\n\t\tstorage.withLock(\"global\", () => JSON.stringify(initialSettings, null, 2));\n\t\treturn SettingsManager.fromStorage(storage, options);\n\t}\n\n\tprivate static loadFromStorage(storage: SettingsStorage, scope: SettingsScope, projectTrusted = true): Settings {\n\t\tif (scope === \"project\" && !projectTrusted) {\n\t\t\treturn {};\n\t\t}\n\n\t\tlet content: string | undefined;\n\t\tstorage.withLock(scope, (current) => {\n\t\t\tcontent = current;\n\t\t\treturn undefined;\n\t\t});\n\n\t\tif (!content) {\n\t\t\treturn {};\n\t\t}\n\t\tconst settings = JSON.parse(stripBom(content));\n\t\treturn SettingsManager.migrateSettings(settings);\n\t}\n\n\tprivate static tryLoadFromStorage(\n\t\tstorage: SettingsStorage,\n\t\tscope: SettingsScope,\n\t\tprojectTrusted = true,\n\t): { settings: Settings; error: Error | null } {\n\t\ttry {\n\t\t\treturn { settings: SettingsManager.loadFromStorage(storage, scope, projectTrusted), error: null };\n\t\t} catch (error) {\n\t\t\treturn { settings: {}, error: error as Error };\n\t\t}\n\t}\n\n\t/** Migrate old settings format to new format */\n\tprivate static migrateSettings(settings: Record<string, unknown>): Settings {\n\t\t// Migrate queueMode -> steeringMode\n\t\tif (\"queueMode\" in settings && !(\"steeringMode\" in settings)) {\n\t\t\tsettings.steeringMode = settings.queueMode;\n\t\t\tdelete settings.queueMode;\n\t\t}\n\n\t\t// Migrate legacy websockets boolean -> transport enum\n\t\tif (!(\"transport\" in settings) && typeof settings.websockets === \"boolean\") {\n\t\t\tsettings.transport = settings.websockets ? \"websocket\" : \"sse\";\n\t\t\tdelete settings.websockets;\n\t\t}\n\n\t\t// Migrate old skills object format to new array format\n\t\tif (\n\t\t\t\"skills\" in settings &&\n\t\t\ttypeof settings.skills === \"object\" &&\n\t\t\tsettings.skills !== null &&\n\t\t\t!Array.isArray(settings.skills)\n\t\t) {\n\t\t\tconst skillsSettings = settings.skills as {\n\t\t\t\tenableSkillCommands?: boolean;\n\t\t\t\tcustomDirectories?: unknown;\n\t\t\t};\n\t\t\tif (skillsSettings.enableSkillCommands !== undefined && settings.enableSkillCommands === undefined) {\n\t\t\t\tsettings.enableSkillCommands = skillsSettings.enableSkillCommands;\n\t\t\t}\n\t\t\tif (Array.isArray(skillsSettings.customDirectories) && skillsSettings.customDirectories.length > 0) {\n\t\t\t\tsettings.skills = skillsSettings.customDirectories;\n\t\t\t} else {\n\t\t\t\tdelete settings.skills;\n\t\t\t}\n\t\t}\n\n\t\t// Migrate retry.maxDelayMs -> retry.provider.maxRetryDelayMs\n\t\tif (\n\t\t\t\"retry\" in settings &&\n\t\t\ttypeof settings.retry === \"object\" &&\n\t\t\tsettings.retry !== null &&\n\t\t\t!Array.isArray(settings.retry)\n\t\t) {\n\t\t\tconst retrySettings = settings.retry as Record<string, unknown>;\n\t\t\tconst providerSettings =\n\t\t\t\ttypeof retrySettings.provider === \"object\" && retrySettings.provider !== null\n\t\t\t\t\t? (retrySettings.provider as Record<string, unknown>)\n\t\t\t\t\t: undefined;\n\t\t\tif (\n\t\t\t\ttypeof retrySettings.maxDelayMs === \"number\" &&\n\t\t\t\t(providerSettings?.maxRetryDelayMs === undefined || providerSettings?.maxRetryDelayMs === null)\n\t\t\t) {\n\t\t\t\tretrySettings.provider = {\n\t\t\t\t\t...(providerSettings ?? {}),\n\t\t\t\t\tmaxRetryDelayMs: retrySettings.maxDelayMs,\n\t\t\t\t};\n\t\t\t}\n\t\t\tdelete retrySettings.maxDelayMs;\n\t\t}\n\n\t\treturn settings as Settings;\n\t}\n\n\tgetGlobalSettings(): Settings {\n\t\treturn structuredClone(this.globalSettings);\n\t}\n\n\tgetProjectSettings(): Settings {\n\t\treturn structuredClone(this.projectSettings);\n\t}\n\n\tisProjectTrusted(): boolean {\n\t\treturn this.projectTrusted;\n\t}\n\n\tsetProjectTrusted(trusted: boolean): void {\n\t\tif (this.projectTrusted === trusted) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.projectTrusted = trusted;\n\t\tthis.modifiedProjectFields.clear();\n\t\tthis.modifiedProjectNestedFields.clear();\n\n\t\tif (!trusted) {\n\t\t\tthis.projectSettings = {};\n\t\t\tthis.projectSettingsLoadError = null;\n\t\t\tthis.settings = deepMergeSettings(this.globalSettings, this.projectSettings);\n\t\t\treturn;\n\t\t}\n\n\t\tconst projectLoad = SettingsManager.tryLoadFromStorage(this.storage, \"project\", trusted);\n\t\tthis.projectSettings = projectLoad.settings;\n\t\tthis.projectSettingsLoadError = projectLoad.error;\n\t\tif (projectLoad.error) {\n\t\t\tthis.recordError(\"project\", projectLoad.error);\n\t\t}\n\t\tthis.settings = deepMergeSettings(this.globalSettings, this.projectSettings);\n\t}\n\n\tasync reload(): Promise<void> {\n\t\tawait this.writeQueue;\n\t\tconst globalLoad = SettingsManager.tryLoadFromStorage(this.storage, \"global\");\n\t\tif (!globalLoad.error) {\n\t\t\tthis.globalSettings = globalLoad.settings;\n\t\t\tthis.globalSettingsLoadError = null;\n\t\t} else {\n\t\t\tthis.globalSettingsLoadError = globalLoad.error;\n\t\t\tthis.recordError(\"global\", globalLoad.error);\n\t\t}\n\n\t\tthis.modifiedFields.clear();\n\t\tthis.modifiedNestedFields.clear();\n\t\tthis.modifiedProjectFields.clear();\n\t\tthis.modifiedProjectNestedFields.clear();\n\n\t\tconst projectLoad = SettingsManager.tryLoadFromStorage(this.storage, \"project\", this.projectTrusted);\n\t\tif (!projectLoad.error) {\n\t\t\tthis.projectSettings = projectLoad.settings;\n\t\t\tthis.projectSettingsLoadError = null;\n\t\t} else {\n\t\t\tthis.projectSettingsLoadError = projectLoad.error;\n\t\t\tthis.recordError(\"project\", projectLoad.error);\n\t\t}\n\n\t\tthis.settings = deepMergeSettings(this.globalSettings, this.projectSettings);\n\t}\n\n\t/** Apply additional overrides on top of current settings */\n\tapplyOverrides(overrides: Partial<Settings>): void {\n\t\tthis.settings = deepMergeSettings(this.settings, overrides);\n\t}\n\n\t/** Mark a global field as modified during this session */\n\tprivate markModified(field: keyof Settings, nestedKey?: string): void {\n\t\tthis.modifiedFields.add(field);\n\t\tif (nestedKey) {\n\t\t\tif (!this.modifiedNestedFields.has(field)) {\n\t\t\t\tthis.modifiedNestedFields.set(field, new Set());\n\t\t\t}\n\t\t\tthis.modifiedNestedFields.get(field)!.add(nestedKey);\n\t\t}\n\t}\n\n\t/** Mark a project field as modified during this session */\n\tprivate markProjectModified(field: keyof Settings, nestedKey?: string): void {\n\t\tthis.modifiedProjectFields.add(field);\n\t\tif (nestedKey) {\n\t\t\tif (!this.modifiedProjectNestedFields.has(field)) {\n\t\t\t\tthis.modifiedProjectNestedFields.set(field, new Set());\n\t\t\t}\n\t\t\tthis.modifiedProjectNestedFields.get(field)!.add(nestedKey);\n\t\t}\n\t}\n\n\tprivate assertProjectTrustedForWrite(): void {\n\t\tif (!this.projectTrusted) {\n\t\t\tthrow new Error(\"Project is not trusted; refusing to write project settings\");\n\t\t}\n\t}\n\n\tprivate recordError(scope: SettingsScope, error: unknown): void {\n\t\tthis.errors.push(toSettingsError(scope, error, this.settingsPaths[scope]));\n\t}\n\n\tprivate clearModifiedScope(scope: SettingsScope): void {\n\t\tif (scope === \"global\") {\n\t\t\tthis.modifiedFields.clear();\n\t\t\tthis.modifiedNestedFields.clear();\n\t\t\treturn;\n\t\t}\n\n\t\tthis.modifiedProjectFields.clear();\n\t\tthis.modifiedProjectNestedFields.clear();\n\t}\n\n\tprivate enqueueWrite(scope: SettingsScope, task: () => void): void {\n\t\tthis.writeQueue = this.writeQueue\n\t\t\t.then(() => {\n\t\t\t\tif (scope === \"project\") {\n\t\t\t\t\tthis.assertProjectTrustedForWrite();\n\t\t\t\t}\n\t\t\t\ttask();\n\t\t\t\tthis.clearModifiedScope(scope);\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tthis.recordError(scope, error);\n\t\t\t});\n\t}\n\n\tprivate cloneModifiedNestedFields(source: Map<keyof Settings, Set<string>>): Map<keyof Settings, Set<string>> {\n\t\tconst snapshot = new Map<keyof Settings, Set<string>>();\n\t\tfor (const [key, value] of source.entries()) {\n\t\t\tsnapshot.set(key, new Set(value));\n\t\t}\n\t\treturn snapshot;\n\t}\n\n\tprivate persistScopedSettings(\n\t\tscope: SettingsScope,\n\t\tsnapshotSettings: Settings,\n\t\tmodifiedFields: Set<keyof Settings>,\n\t\tmodifiedNestedFields: Map<keyof Settings, Set<string>>,\n\t): void {\n\t\tthis.storage.withLock(scope, (current) => {\n\t\t\tconst currentFileSettings = current\n\t\t\t\t? SettingsManager.migrateSettings(JSON.parse(stripBom(current)) as Record<string, unknown>)\n\t\t\t\t: {};\n\t\t\tconst mergedSettings: Settings = { ...currentFileSettings };\n\t\t\tfor (const field of modifiedFields) {\n\t\t\t\tconst value = snapshotSettings[field];\n\t\t\t\tif (modifiedNestedFields.has(field) && typeof value === \"object\" && value !== null) {\n\t\t\t\t\tconst nestedModified = modifiedNestedFields.get(field)!;\n\t\t\t\t\tconst baseNested = (currentFileSettings[field] as Record<string, unknown>) ?? {};\n\t\t\t\t\tconst inMemoryNested = value as Record<string, unknown>;\n\t\t\t\t\tconst mergedNested = { ...baseNested };\n\t\t\t\t\tfor (const nestedKey of nestedModified) {\n\t\t\t\t\t\tmergedNested[nestedKey] = inMemoryNested[nestedKey];\n\t\t\t\t\t}\n\t\t\t\t\t(mergedSettings as Record<string, unknown>)[field] = mergedNested;\n\t\t\t\t} else {\n\t\t\t\t\t(mergedSettings as Record<string, unknown>)[field] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn JSON.stringify(mergedSettings, null, 2);\n\t\t});\n\t}\n\n\tprivate save(): void {\n\t\tthis.settings = deepMergeSettings(this.globalSettings, this.projectSettings);\n\n\t\tif (this.globalSettingsLoadError) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst snapshotGlobalSettings = structuredClone(this.globalSettings);\n\t\tconst modifiedFields = new Set(this.modifiedFields);\n\t\tconst modifiedNestedFields = this.cloneModifiedNestedFields(this.modifiedNestedFields);\n\n\t\tthis.enqueueWrite(\"global\", () => {\n\t\t\tthis.persistScopedSettings(\"global\", snapshotGlobalSettings, modifiedFields, modifiedNestedFields);\n\t\t});\n\t}\n\n\tprivate saveProjectSettings(settings: Settings): void {\n\t\tthis.assertProjectTrustedForWrite();\n\t\tthis.projectSettings = structuredClone(settings);\n\t\tthis.settings = deepMergeSettings(this.globalSettings, this.projectSettings);\n\n\t\tif (this.projectSettingsLoadError) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst snapshotProjectSettings = structuredClone(this.projectSettings);\n\t\tconst modifiedFields = new Set(this.modifiedProjectFields);\n\t\tconst modifiedNestedFields = this.cloneModifiedNestedFields(this.modifiedProjectNestedFields);\n\t\tthis.enqueueWrite(\"project\", () => {\n\t\t\tthis.persistScopedSettings(\"project\", snapshotProjectSettings, modifiedFields, modifiedNestedFields);\n\t\t});\n\t}\n\n\tprivate updateProjectSettings(field: keyof Settings, update: (settings: Settings) => void): void {\n\t\tthis.assertProjectTrustedForWrite();\n\t\tconst projectSettings = structuredClone(this.projectSettings);\n\t\tupdate(projectSettings);\n\t\tthis.markProjectModified(field);\n\t\tthis.saveProjectSettings(projectSettings);\n\t}\n\n\tasync flush(): Promise<void> {\n\t\tawait this.writeQueue;\n\t}\n\n\tdrainErrors(): SettingsError[] {\n\t\tconst drained = [...this.errors];\n\t\tthis.errors = [];\n\t\treturn drained;\n\t}\n\n\tgetLastChangelogVersion(): string | undefined {\n\t\treturn this.settings.lastChangelogVersion;\n\t}\n\n\tsetLastChangelogVersion(version: string): void {\n\t\tthis.globalSettings.lastChangelogVersion = version;\n\t\tthis.markModified(\"lastChangelogVersion\");\n\t\tthis.save();\n\t}\n\n\tgetSessionDir(): string | undefined {\n\t\tconst sessionDir = this.settings.sessionDir;\n\t\treturn sessionDir ? normalizePath(sessionDir) : sessionDir;\n\t}\n\n\tgetDefaultProvider(): string | undefined {\n\t\treturn this.settings.defaultProvider;\n\t}\n\n\tgetDefaultModel(): string | undefined {\n\t\treturn this.settings.defaultModel;\n\t}\n\n\tsetDefaultProvider(provider: string): void {\n\t\tthis.globalSettings.defaultProvider = provider;\n\t\tthis.markModified(\"defaultProvider\");\n\t\tthis.save();\n\t}\n\n\tsetDefaultModel(modelId: string): void {\n\t\tthis.globalSettings.defaultModel = modelId;\n\t\tthis.markModified(\"defaultModel\");\n\t\tthis.save();\n\t}\n\n\tsetDefaultModelAndProvider(provider: string, modelId: string): void {\n\t\tthis.globalSettings.defaultProvider = provider;\n\t\tthis.globalSettings.defaultModel = modelId;\n\t\tthis.markModified(\"defaultProvider\");\n\t\tthis.markModified(\"defaultModel\");\n\t\tthis.save();\n\t}\n\n\tgetSteeringMode(): \"all\" | \"one-at-a-time\" {\n\t\treturn this.settings.steeringMode || \"one-at-a-time\";\n\t}\n\n\tsetSteeringMode(mode: \"all\" | \"one-at-a-time\"): void {\n\t\tthis.globalSettings.steeringMode = mode;\n\t\tthis.markModified(\"steeringMode\");\n\t\tthis.save();\n\t}\n\n\tgetFollowUpMode(): \"all\" | \"one-at-a-time\" {\n\t\treturn this.settings.followUpMode || \"one-at-a-time\";\n\t}\n\n\tsetFollowUpMode(mode: \"all\" | \"one-at-a-time\"): void {\n\t\tthis.globalSettings.followUpMode = mode;\n\t\tthis.markModified(\"followUpMode\");\n\t\tthis.save();\n\t}\n\n\tgetThemeSetting(): string | undefined {\n\t\tconst value = this.settings.theme;\n\t\tif (typeof value === \"string\") return value;\n\t\treturn undefined;\n\t}\n\n\tgetTheme(): string | undefined {\n\t\tconst theme = this.getThemeSetting();\n\t\treturn theme?.includes(\"/\") ? undefined : theme;\n\t}\n\n\tsetTheme(theme: string): void {\n\t\tthis.globalSettings.theme = theme;\n\t\tthis.markModified(\"theme\");\n\t\tthis.save();\n\t}\n\n\tgetDefaultThinkingLevel(): ThinkingLevel | undefined {\n\t\treturn this.settings.defaultThinkingLevel;\n\t}\n\n\tsetDefaultThinkingLevel(level: ThinkingLevel): void {\n\t\tthis.globalSettings.defaultThinkingLevel = level;\n\t\tthis.markModified(\"defaultThinkingLevel\");\n\t\tthis.save();\n\t}\n\n\tgetModelThinkingLevel(provider: string, modelId: string): ThinkingLevel | undefined {\n\t\treturn this.settings.modelThinkingLevels?.[`${provider}/${modelId}`];\n\t}\n\n\tgetAllModelThinkingLevels(): Record<string, ThinkingLevel> {\n\t\treturn { ...(this.settings.modelThinkingLevels ?? {}) };\n\t}\n\n\tsetModelThinkingLevel(provider: string, modelId: string, level: ThinkingLevel): void {\n\t\tif (!this.globalSettings.modelThinkingLevels) {\n\t\t\tthis.globalSettings.modelThinkingLevels = {};\n\t\t}\n\t\tthis.globalSettings.modelThinkingLevels[`${provider}/${modelId}`] = level;\n\t\tthis.markModified(\"modelThinkingLevels\");\n\t\tthis.save();\n\t}\n\n\tremoveModelThinkingLevel(provider: string, modelId: string): void {\n\t\tif (!this.globalSettings.modelThinkingLevels) return;\n\t\tdelete this.globalSettings.modelThinkingLevels[`${provider}/${modelId}`];\n\t\tif (Object.keys(this.globalSettings.modelThinkingLevels).length === 0) {\n\t\t\tdelete this.globalSettings.modelThinkingLevels;\n\t\t}\n\t\tthis.markModified(\"modelThinkingLevels\");\n\t\tthis.save();\n\t}\n\n\tgetTransport(): TransportSetting {\n\t\treturn this.settings.transport ?? \"auto\";\n\t}\n\n\tsetTransport(transport: TransportSetting): void {\n\t\tthis.globalSettings.transport = transport;\n\t\tthis.markModified(\"transport\");\n\t\tthis.save();\n\t}\n\n\tgetCompactionEnabled(): boolean {\n\t\treturn this.settings.compaction?.enabled ?? true;\n\t}\n\n\tsetCompactionEnabled(enabled: boolean): void {\n\t\tif (!this.globalSettings.compaction) {\n\t\t\tthis.globalSettings.compaction = {};\n\t\t}\n\t\tthis.globalSettings.compaction.enabled = enabled;\n\t\tthis.markModified(\"compaction\", \"enabled\");\n\t\tthis.save();\n\t}\n\n\tgetCompactionReserveTokens(): number {\n\t\treturn this.settings.compaction?.reserveTokens ?? 16384;\n\t}\n\n\tgetCompactionKeepRecentTokens(): number {\n\t\treturn this.settings.compaction?.keepRecentTokens ?? 20000;\n\t}\n\n\tgetCompactionSettings(): { enabled: boolean; reserveTokens: number; keepRecentTokens: number } {\n\t\treturn {\n\t\t\tenabled: this.getCompactionEnabled(),\n\t\t\treserveTokens: this.getCompactionReserveTokens(),\n\t\t\tkeepRecentTokens: this.getCompactionKeepRecentTokens(),\n\t\t};\n\t}\n\n\tgetBranchSummarySettings(): { reserveTokens: number; skipPrompt: boolean } {\n\t\treturn {\n\t\t\treserveTokens: this.settings.branchSummary?.reserveTokens ?? 16384,\n\t\t\tskipPrompt: this.settings.branchSummary?.skipPrompt ?? false,\n\t\t};\n\t}\n\n\tgetBranchSummarySkipPrompt(): boolean {\n\t\treturn this.settings.branchSummary?.skipPrompt ?? false;\n\t}\n\n\tgetRetryEnabled(): boolean {\n\t\treturn this.settings.retry?.enabled ?? true;\n\t}\n\n\tsetRetryEnabled(enabled: boolean): void {\n\t\tif (!this.globalSettings.retry) {\n\t\t\tthis.globalSettings.retry = {};\n\t\t}\n\t\tthis.globalSettings.retry.enabled = enabled;\n\t\tthis.markModified(\"retry\", \"enabled\");\n\t\tthis.save();\n\t}\n\n\tgetRetrySettings(): { enabled: boolean; maxRetries: number; baseDelayMs: number } {\n\t\treturn {\n\t\t\tenabled: this.getRetryEnabled(),\n\t\t\tmaxRetries: this.settings.retry?.maxRetries ?? 3,\n\t\t\tbaseDelayMs: this.settings.retry?.baseDelayMs ?? 2000,\n\t\t};\n\t}\n\n\tgetHttpIdleTimeoutMs(): number {\n\t\treturn parseTimeoutSetting(this.settings.httpIdleTimeoutMs, \"httpIdleTimeoutMs\") ?? DEFAULT_HTTP_IDLE_TIMEOUT_MS;\n\t}\n\n\tsetHttpIdleTimeoutMs(timeoutMs: number): void {\n\t\tif (!Number.isFinite(timeoutMs) || timeoutMs < 0) {\n\t\t\tthrow new Error(`Invalid httpIdleTimeoutMs setting: ${String(timeoutMs)}`);\n\t\t}\n\t\tthis.globalSettings.httpIdleTimeoutMs = Math.floor(timeoutMs);\n\t\tthis.markModified(\"httpIdleTimeoutMs\");\n\t\tthis.save();\n\t}\n\n\tgetProviderRetrySettings(): { timeoutMs?: number; maxRetries?: number; maxRetryDelayMs: number } {\n\t\treturn {\n\t\t\ttimeoutMs: this.settings.retry?.provider?.timeoutMs,\n\t\t\tmaxRetries: this.settings.retry?.provider?.maxRetries,\n\t\t\tmaxRetryDelayMs: this.settings.retry?.provider?.maxRetryDelayMs ?? 60000,\n\t\t};\n\t}\n\n\tgetWebSocketConnectTimeoutMs(): number | undefined {\n\t\treturn parseTimeoutSetting(this.settings.websocketConnectTimeoutMs, \"websocketConnectTimeoutMs\");\n\t}\n\n\tgetHideThinkingBlock(): boolean {\n\t\treturn this.settings.hideThinkingBlock ?? false;\n\t}\n\n\tgetShowCacheMissNotices(): boolean {\n\t\treturn this.settings.showCacheMissNotices ?? false;\n\t}\n\n\tgetExternalEditorCommand(): string {\n\t\tconst configuredEditor = this.settings.externalEditor;\n\t\tif (typeof configuredEditor === \"string\" && configuredEditor.trim() !== \"\") {\n\t\t\treturn configuredEditor;\n\t\t}\n\t\tconst environmentEditor = process.env.VISUAL || process.env.EDITOR;\n\t\tif (environmentEditor) {\n\t\t\treturn environmentEditor;\n\t\t}\n\t\treturn process.platform === \"win32\" ? \"notepad\" : \"nano\";\n\t}\n\n\tsetHideThinkingBlock(hide: boolean): void {\n\t\tthis.globalSettings.hideThinkingBlock = hide;\n\t\tthis.markModified(\"hideThinkingBlock\");\n\t\tthis.save();\n\t}\n\n\tsetShowCacheMissNotices(show: boolean): void {\n\t\tthis.globalSettings.showCacheMissNotices = show;\n\t\tthis.markModified(\"showCacheMissNotices\");\n\t\tthis.save();\n\t}\n\n\tgetShellPath(): string | undefined {\n\t\tconst shellPath = this.settings.shellPath;\n\t\treturn shellPath ? normalizePath(shellPath) : shellPath;\n\t}\n\n\tsetShellPath(path: string | undefined): void {\n\t\tthis.globalSettings.shellPath = path;\n\t\tthis.markModified(\"shellPath\");\n\t\tthis.save();\n\t}\n\n\tgetQuietStartup(): boolean {\n\t\treturn this.settings.quietStartup ?? false;\n\t}\n\n\tsetQuietStartup(quiet: boolean): void {\n\t\tthis.globalSettings.quietStartup = quiet;\n\t\tthis.markModified(\"quietStartup\");\n\t\tthis.save();\n\t}\n\n\tgetDefaultProjectTrust(): DefaultProjectTrust {\n\t\tconst value = this.globalSettings.defaultProjectTrust;\n\t\treturn value === \"always\" || value === \"never\" ? value : \"ask\";\n\t}\n\n\tsetDefaultProjectTrust(defaultProjectTrust: DefaultProjectTrust): void {\n\t\tthis.globalSettings.defaultProjectTrust = defaultProjectTrust;\n\t\tthis.markModified(\"defaultProjectTrust\");\n\t\tthis.save();\n\t}\n\n\tgetShellCommandPrefix(): string | undefined {\n\t\treturn this.settings.shellCommandPrefix;\n\t}\n\n\tsetShellCommandPrefix(prefix: string | undefined): void {\n\t\tthis.globalSettings.shellCommandPrefix = prefix;\n\t\tthis.markModified(\"shellCommandPrefix\");\n\t\tthis.save();\n\t}\n\n\tgetNpmCommand(): string[] | undefined {\n\t\treturn this.settings.npmCommand ? [...this.settings.npmCommand] : undefined;\n\t}\n\n\tsetNpmCommand(command: string[] | undefined): void {\n\t\tthis.globalSettings.npmCommand = command ? [...command] : undefined;\n\t\tthis.markModified(\"npmCommand\");\n\t\tthis.save();\n\t}\n\n\tgetCollapseChangelog(): boolean {\n\t\treturn this.settings.collapseChangelog ?? false;\n\t}\n\n\tsetCollapseChangelog(collapse: boolean): void {\n\t\tthis.globalSettings.collapseChangelog = collapse;\n\t\tthis.markModified(\"collapseChangelog\");\n\t\tthis.save();\n\t}\n\n\tgetEnableInstallTelemetry(): boolean {\n\t\treturn this.settings.enableInstallTelemetry ?? true;\n\t}\n\n\tsetEnableInstallTelemetry(enabled: boolean): void {\n\t\tthis.globalSettings.enableInstallTelemetry = enabled;\n\t\tthis.markModified(\"enableInstallTelemetry\");\n\t\tthis.save();\n\t}\n\n\tgetEnableAnalytics(): boolean {\n\t\treturn this.settings.enableAnalytics ?? false;\n\t}\n\n\tgetTrackingId(): string | undefined {\n\t\treturn this.settings.trackingId;\n\t}\n\n\t/** Set the analytics opt-in preference; generates a tracking identifier on first opt-in */\n\tsetEnableAnalytics(enabled: boolean): void {\n\t\tthis.globalSettings.enableAnalytics = enabled;\n\t\tthis.markModified(\"enableAnalytics\");\n\t\tif (enabled && !this.globalSettings.trackingId) {\n\t\t\tthis.globalSettings.trackingId = randomUUID();\n\t\t\tthis.markModified(\"trackingId\");\n\t\t}\n\t\tthis.save();\n\t}\n\n\tgetPackages(): PackageSource[] {\n\t\treturn [...(this.settings.packages ?? [])];\n\t}\n\n\tsetPackages(packages: PackageSource[]): void {\n\t\tthis.globalSettings.packages = packages;\n\t\tthis.markModified(\"packages\");\n\t\tthis.save();\n\t}\n\n\tsetProjectPackages(packages: PackageSource[]): void {\n\t\tthis.updateProjectSettings(\"packages\", (settings) => {\n\t\t\tsettings.packages = packages;\n\t\t});\n\t}\n\n\tgetExtensionPaths(): string[] {\n\t\treturn [...(this.settings.extensions ?? [])];\n\t}\n\n\tsetExtensionPaths(paths: string[]): void {\n\t\tthis.globalSettings.extensions = paths;\n\t\tthis.markModified(\"extensions\");\n\t\tthis.save();\n\t}\n\n\tsetProjectExtensionPaths(paths: string[]): void {\n\t\tthis.updateProjectSettings(\"extensions\", (settings) => {\n\t\t\tsettings.extensions = paths;\n\t\t});\n\t}\n\n\tgetSkillPaths(): string[] {\n\t\treturn [...(this.settings.skills ?? [])];\n\t}\n\n\tsetSkillPaths(paths: string[]): void {\n\t\tthis.globalSettings.skills = paths;\n\t\tthis.markModified(\"skills\");\n\t\tthis.save();\n\t}\n\n\tsetProjectSkillPaths(paths: string[]): void {\n\t\tthis.updateProjectSettings(\"skills\", (settings) => {\n\t\t\tsettings.skills = paths;\n\t\t});\n\t}\n\n\tgetPromptTemplatePaths(): string[] {\n\t\treturn [...(this.settings.prompts ?? [])];\n\t}\n\n\tsetPromptTemplatePaths(paths: string[]): void {\n\t\tthis.globalSettings.prompts = paths;\n\t\tthis.markModified(\"prompts\");\n\t\tthis.save();\n\t}\n\n\tsetProjectPromptTemplatePaths(paths: string[]): void {\n\t\tthis.updateProjectSettings(\"prompts\", (settings) => {\n\t\t\tsettings.prompts = paths;\n\t\t});\n\t}\n\n\tgetThemePaths(): string[] {\n\t\treturn [...(this.settings.themes ?? [])];\n\t}\n\n\tsetThemePaths(paths: string[]): void {\n\t\tthis.globalSettings.themes = paths;\n\t\tthis.markModified(\"themes\");\n\t\tthis.save();\n\t}\n\n\tsetProjectThemePaths(paths: string[]): void {\n\t\tthis.updateProjectSettings(\"themes\", (settings) => {\n\t\t\tsettings.themes = paths;\n\t\t});\n\t}\n\n\tgetEnableSkillCommands(): boolean {\n\t\treturn this.settings.enableSkillCommands ?? true;\n\t}\n\n\tsetEnableSkillCommands(enabled: boolean): void {\n\t\tthis.globalSettings.enableSkillCommands = enabled;\n\t\tthis.markModified(\"enableSkillCommands\");\n\t\tthis.save();\n\t}\n\n\tgetThinkingBudgets(): ThinkingBudgetsSettings | undefined {\n\t\treturn this.settings.thinkingBudgets;\n\t}\n\n\tgetTerminalCapabilityOverrides(): Partial<TerminalCapabilities> {\n\t\tconst terminal = this.settings.terminal;\n\t\tconst images = terminal?.images;\n\t\treturn {\n\t\t\t...(images === \"kitty\" || images === \"iterm2\" ? { images } : images === false ? { images: null } : {}),\n\t\t\t...(typeof terminal?.trueColor === \"boolean\" ? { trueColor: terminal.trueColor } : {}),\n\t\t\t...(typeof terminal?.hyperlinks === \"boolean\" ? { hyperlinks: terminal.hyperlinks } : {}),\n\t\t};\n\t}\n\n\tgetShowImages(): boolean {\n\t\treturn this.settings.terminal?.showImages ?? true;\n\t}\n\n\tsetShowImages(show: boolean): void {\n\t\tif (!this.globalSettings.terminal) {\n\t\t\tthis.globalSettings.terminal = {};\n\t\t}\n\t\tthis.globalSettings.terminal.showImages = show;\n\t\tthis.markModified(\"terminal\", \"showImages\");\n\t\tthis.save();\n\t}\n\n\tgetImageWidthCells(): number {\n\t\tconst width = this.settings.terminal?.imageWidthCells;\n\t\tif (typeof width !== \"number\" || !Number.isFinite(width)) {\n\t\t\treturn 60;\n\t\t}\n\t\treturn Math.max(1, Math.floor(width));\n\t}\n\n\tsetImageWidthCells(width: number): void {\n\t\tif (!this.globalSettings.terminal) {\n\t\t\tthis.globalSettings.terminal = {};\n\t\t}\n\t\tthis.globalSettings.terminal.imageWidthCells = Math.max(1, Math.floor(width));\n\t\tthis.markModified(\"terminal\", \"imageWidthCells\");\n\t\tthis.save();\n\t}\n\n\tgetClearOnShrink(): boolean {\n\t\t// Settings takes precedence, then env var, then default false\n\t\tif (this.settings.terminal?.clearOnShrink !== undefined) {\n\t\t\treturn this.settings.terminal.clearOnShrink;\n\t\t}\n\t\treturn process.env.PI_CLEAR_ON_SHRINK === \"1\";\n\t}\n\n\tsetClearOnShrink(enabled: boolean): void {\n\t\tif (!this.globalSettings.terminal) {\n\t\t\tthis.globalSettings.terminal = {};\n\t\t}\n\t\tthis.globalSettings.terminal.clearOnShrink = enabled;\n\t\tthis.markModified(\"terminal\", \"clearOnShrink\");\n\t\tthis.save();\n\t}\n\n\tgetShowTerminalProgress(): boolean {\n\t\treturn this.settings.terminal?.showTerminalProgress ?? false;\n\t}\n\n\tsetShowTerminalProgress(enabled: boolean): void {\n\t\tif (!this.globalSettings.terminal) {\n\t\t\tthis.globalSettings.terminal = {};\n\t\t}\n\t\tthis.globalSettings.terminal.showTerminalProgress = enabled;\n\t\tthis.markModified(\"terminal\", \"showTerminalProgress\");\n\t\tthis.save();\n\t}\n\n\tgetTuiMode(): TuiMode {\n\t\treturn this.settings.tuiMode === \"fullscreen\" ? \"fullscreen\" : \"regular\";\n\t}\n\n\tsetTuiMode(mode: TuiMode): void {\n\t\tthis.globalSettings.tuiMode = mode;\n\t\tthis.markModified(\"tuiMode\");\n\t\tthis.save();\n\t}\n\n\tgetFullscreenExitOutput(): FullscreenExitOutput {\n\t\treturn this.settings.fullscreenExitOutput === \"resume-hint\" ? \"resume-hint\" : \"transcript\";\n\t}\n\n\tsetFullscreenExitOutput(output: FullscreenExitOutput): void {\n\t\tthis.globalSettings.fullscreenExitOutput = output;\n\t\tthis.markModified(\"fullscreenExitOutput\");\n\t\tthis.save();\n\t}\n\n\tgetFullscreenScrollbar(): ScrollViewScrollbar {\n\t\tconst mode = this.settings.fullscreenScrollbar;\n\t\treturn mode === \"always\" || mode === \"hidden\" ? mode : \"auto\";\n\t}\n\n\tsetFullscreenScrollbar(mode: ScrollViewScrollbar): void {\n\t\tthis.globalSettings.fullscreenScrollbar = mode;\n\t\tthis.markModified(\"fullscreenScrollbar\");\n\t\tthis.save();\n\t}\n\n\tgetFullscreenCopyOnSelect(): boolean {\n\t\treturn this.settings.fullscreenCopyOnSelect ?? true;\n\t}\n\n\tsetFullscreenCopyOnSelect(enabled: boolean): void {\n\t\tthis.globalSettings.fullscreenCopyOnSelect = enabled;\n\t\tthis.markModified(\"fullscreenCopyOnSelect\");\n\t\tthis.save();\n\t}\n\n\tgetImageAutoResize(): boolean {\n\t\treturn this.settings.images?.autoResize ?? true;\n\t}\n\n\tsetImageAutoResize(enabled: boolean): void {\n\t\tif (!this.globalSettings.images) {\n\t\t\tthis.globalSettings.images = {};\n\t\t}\n\t\tthis.globalSettings.images.autoResize = enabled;\n\t\tthis.markModified(\"images\", \"autoResize\");\n\t\tthis.save();\n\t}\n\n\tgetBlockImages(): boolean {\n\t\treturn this.settings.images?.blockImages ?? false;\n\t}\n\n\tsetBlockImages(blocked: boolean): void {\n\t\tif (!this.globalSettings.images) {\n\t\t\tthis.globalSettings.images = {};\n\t\t}\n\t\tthis.globalSettings.images.blockImages = blocked;\n\t\tthis.markModified(\"images\", \"blockImages\");\n\t\tthis.save();\n\t}\n\n\tgetEnabledModels(): string[] | undefined {\n\t\treturn this.settings.enabledModels;\n\t}\n\n\tgetDefaultTools(): string[] | undefined {\n\t\tconst tools = this.settings.defaultTools;\n\t\treturn tools ? [...tools] : undefined;\n\t}\n\n\tsetEnabledModels(patterns: string[] | undefined): void {\n\t\tthis.globalSettings.enabledModels = patterns;\n\t\tthis.markModified(\"enabledModels\");\n\t\tthis.save();\n\t}\n\n\tgetDoubleEscapeAction(): \"fork\" | \"tree\" | \"none\" {\n\t\treturn this.settings.doubleEscapeAction ?? \"tree\";\n\t}\n\n\tsetDoubleEscapeAction(action: \"fork\" | \"tree\" | \"none\"): void {\n\t\tthis.globalSettings.doubleEscapeAction = action;\n\t\tthis.markModified(\"doubleEscapeAction\");\n\t\tthis.save();\n\t}\n\n\tgetTreeFilterMode(): \"default\" | \"no-tools\" | \"user-only\" | \"labeled-only\" | \"all\" {\n\t\tconst mode = this.settings.treeFilterMode;\n\t\tconst valid = [\"default\", \"no-tools\", \"user-only\", \"labeled-only\", \"all\"];\n\t\treturn mode && valid.includes(mode) ? mode : \"default\";\n\t}\n\n\tsetTreeFilterMode(mode: \"default\" | \"no-tools\" | \"user-only\" | \"labeled-only\" | \"all\"): void {\n\t\tthis.globalSettings.treeFilterMode = mode;\n\t\tthis.markModified(\"treeFilterMode\");\n\t\tthis.save();\n\t}\n\n\tgetShowHardwareCursor(): boolean {\n\t\treturn this.settings.showHardwareCursor ?? process.env.PI_HARDWARE_CURSOR === \"1\";\n\t}\n\n\tsetShowHardwareCursor(enabled: boolean): void {\n\t\tthis.globalSettings.showHardwareCursor = enabled;\n\t\tthis.markModified(\"showHardwareCursor\");\n\t\tthis.save();\n\t}\n\n\tgetEditorPaddingX(): number {\n\t\treturn this.settings.editorPaddingX ?? 0;\n\t}\n\n\tsetEditorPaddingX(padding: number): void {\n\t\tthis.globalSettings.editorPaddingX = Math.max(0, Math.min(3, Math.floor(padding)));\n\t\tthis.markModified(\"editorPaddingX\");\n\t\tthis.save();\n\t}\n\n\tgetOutputPad(): 0 | 1 {\n\t\treturn this.settings.outputPad === 0 ? 0 : 1;\n\t}\n\n\tsetOutputPad(padding: 0 | 1): void {\n\t\tthis.globalSettings.outputPad = padding;\n\t\tthis.markModified(\"outputPad\");\n\t\tthis.save();\n\t}\n\n\tgetAutocompleteMaxVisible(): number {\n\t\treturn this.settings.autocompleteMaxVisible ?? 5;\n\t}\n\n\tsetAutocompleteMaxVisible(maxVisible: number): void {\n\t\tthis.globalSettings.autocompleteMaxVisible = Math.max(3, Math.min(20, Math.floor(maxVisible)));\n\t\tthis.markModified(\"autocompleteMaxVisible\");\n\t\tthis.save();\n\t}\n\n\tgetCodeBlockIndent(): string {\n\t\treturn this.settings.markdown?.codeBlockIndent ?? \" \";\n\t}\n\n\tgetMermaidRenderingMode(): MermaidRenderingMode {\n\t\tconst mode = this.settings.markdown?.mermaid;\n\t\treturn mode === \"off\" || mode === \"final\" ? mode : \"streaming\";\n\t}\n\n\tsetMermaidRenderingMode(mode: MermaidRenderingMode): void {\n\t\tthis.globalSettings.markdown ??= {};\n\t\tthis.globalSettings.markdown.mermaid = mode;\n\t\tthis.markModified(\"markdown\", \"mermaid\");\n\t\tthis.save();\n\t}\n\n\tgetWarnings(): WarningSettings {\n\t\treturn { ...(this.settings.warnings ?? {}) };\n\t}\n\n\tsetWarnings(warnings: WarningSettings): void {\n\t\tthis.globalSettings.warnings = { ...warnings };\n\t\tthis.markModified(\"warnings\");\n\t\tthis.save();\n\t}\n}\n"]}
@@ -4,6 +4,7 @@ import { dirname, join } from "path";
4
4
  import lockfile from "proper-lockfile";
5
5
  import { CONFIG_DIR_NAME, getAgentDir } from "../config.js";
6
6
  import { normalizePath, resolvePath } from "../utils/paths.js";
7
+ import { stripBom } from "../utils/text.js";
7
8
  import { DEFAULT_HTTP_IDLE_TIMEOUT_MS, parseHttpIdleTimeoutMs } from "./http-dispatcher.js";
8
9
  function isMergeableObject(value) {
9
10
  return typeof value === "object" && value !== null && !Array.isArray(value);
@@ -37,6 +38,13 @@ function parseTimeoutSetting(value, settingName) {
37
38
  }
38
39
  return undefined;
39
40
  }
41
+ function toSettingsError(scope, error, path) {
42
+ return {
43
+ scope,
44
+ ...(path ? { path } : {}),
45
+ error: error instanceof Error ? error : new Error(String(error)),
46
+ };
47
+ }
40
48
  export class FileSettingsStorage {
41
49
  globalSettingsPath;
42
50
  projectSettingsPath;
@@ -130,7 +138,8 @@ export class SettingsManager {
130
138
  projectSettingsLoadError = null; // Track if project settings file had parse errors
131
139
  writeQueue = Promise.resolve();
132
140
  errors;
133
- constructor(storage, initialGlobal, initialProject, globalLoadError = null, projectLoadError = null, initialErrors = [], projectTrusted = true) {
141
+ settingsPaths;
142
+ constructor(storage, initialGlobal, initialProject, globalLoadError = null, projectLoadError = null, initialErrors = [], projectTrusted = true, settingsPaths = {}) {
134
143
  this.storage = storage;
135
144
  this.globalSettings = initialGlobal;
136
145
  this.projectSettings = initialProject;
@@ -138,26 +147,36 @@ export class SettingsManager {
138
147
  this.globalSettingsLoadError = globalLoadError;
139
148
  this.projectSettingsLoadError = projectLoadError;
140
149
  this.errors = [...initialErrors];
150
+ this.settingsPaths = settingsPaths;
141
151
  this.settings = deepMergeSettings(this.globalSettings, this.projectSettings);
142
152
  }
143
153
  /** Create a SettingsManager that loads from files */
144
154
  static create(cwd, agentDir = getAgentDir(), options = {}) {
145
- const storage = new FileSettingsStorage(cwd, agentDir);
146
- return SettingsManager.fromStorage(storage, options);
155
+ const resolvedCwd = resolvePath(cwd);
156
+ const resolvedAgentDir = resolvePath(agentDir);
157
+ const storage = new FileSettingsStorage(resolvedCwd, resolvedAgentDir);
158
+ return SettingsManager.fromStorageWithPaths(storage, options, {
159
+ global: join(resolvedAgentDir, "settings.json"),
160
+ project: join(resolvedCwd, CONFIG_DIR_NAME, "settings.json"),
161
+ });
147
162
  }
148
163
  /** Create a SettingsManager from an arbitrary storage backend */
149
164
  static fromStorage(storage, options = {}) {
165
+ return SettingsManager.fromStorageWithPaths(storage, options);
166
+ }
167
+ /** Create a manager while retaining optional file paths for reported storage errors. */
168
+ static fromStorageWithPaths(storage, options, settingsPaths = {}) {
150
169
  const projectTrusted = options.projectTrusted ?? true;
151
170
  const globalLoad = SettingsManager.tryLoadFromStorage(storage, "global");
152
171
  const projectLoad = SettingsManager.tryLoadFromStorage(storage, "project", projectTrusted);
153
172
  const initialErrors = [];
154
173
  if (globalLoad.error) {
155
- initialErrors.push({ scope: "global", error: globalLoad.error });
174
+ initialErrors.push(toSettingsError("global", globalLoad.error, settingsPaths.global));
156
175
  }
157
176
  if (projectLoad.error) {
158
- initialErrors.push({ scope: "project", error: projectLoad.error });
177
+ initialErrors.push(toSettingsError("project", projectLoad.error, settingsPaths.project));
159
178
  }
160
- return new SettingsManager(storage, globalLoad.settings, projectLoad.settings, globalLoad.error, projectLoad.error, initialErrors, projectTrusted);
179
+ return new SettingsManager(storage, globalLoad.settings, projectLoad.settings, globalLoad.error, projectLoad.error, initialErrors, projectTrusted, settingsPaths);
161
180
  }
162
181
  /** Create an in-memory SettingsManager (no file I/O) */
163
182
  static inMemory(settings = {}, options = {}) {
@@ -178,7 +197,7 @@ export class SettingsManager {
178
197
  if (!content) {
179
198
  return {};
180
199
  }
181
- const settings = JSON.parse(content);
200
+ const settings = JSON.parse(stripBom(content));
182
201
  return SettingsManager.migrateSettings(settings);
183
202
  }
184
203
  static tryLoadFromStorage(storage, scope, projectTrusted = true) {
@@ -323,8 +342,7 @@ export class SettingsManager {
323
342
  }
324
343
  }
325
344
  recordError(scope, error) {
326
- const normalizedError = error instanceof Error ? error : new Error(String(error));
327
- this.errors.push({ scope, error: normalizedError });
345
+ this.errors.push(toSettingsError(scope, error, this.settingsPaths[scope]));
328
346
  }
329
347
  clearModifiedScope(scope) {
330
348
  if (scope === "global") {
@@ -358,7 +376,7 @@ export class SettingsManager {
358
376
  persistScopedSettings(scope, snapshotSettings, modifiedFields, modifiedNestedFields) {
359
377
  this.storage.withLock(scope, (current) => {
360
378
  const currentFileSettings = current
361
- ? SettingsManager.migrateSettings(JSON.parse(current))
379
+ ? SettingsManager.migrateSettings(JSON.parse(stripBom(current)))
362
380
  : {};
363
381
  const mergedSettings = { ...currentFileSettings };
364
382
  for (const field of modifiedFields) {
@@ -495,6 +513,30 @@ export class SettingsManager {
495
513
  this.markModified("defaultThinkingLevel");
496
514
  this.save();
497
515
  }
516
+ getModelThinkingLevel(provider, modelId) {
517
+ return this.settings.modelThinkingLevels?.[`${provider}/${modelId}`];
518
+ }
519
+ getAllModelThinkingLevels() {
520
+ return { ...(this.settings.modelThinkingLevels ?? {}) };
521
+ }
522
+ setModelThinkingLevel(provider, modelId, level) {
523
+ if (!this.globalSettings.modelThinkingLevels) {
524
+ this.globalSettings.modelThinkingLevels = {};
525
+ }
526
+ this.globalSettings.modelThinkingLevels[`${provider}/${modelId}`] = level;
527
+ this.markModified("modelThinkingLevels");
528
+ this.save();
529
+ }
530
+ removeModelThinkingLevel(provider, modelId) {
531
+ if (!this.globalSettings.modelThinkingLevels)
532
+ return;
533
+ delete this.globalSettings.modelThinkingLevels[`${provider}/${modelId}`];
534
+ if (Object.keys(this.globalSettings.modelThinkingLevels).length === 0) {
535
+ delete this.globalSettings.modelThinkingLevels;
536
+ }
537
+ this.markModified("modelThinkingLevels");
538
+ this.save();
539
+ }
498
540
  getTransport() {
499
541
  return this.settings.transport ?? "auto";
500
542
  }
@@ -752,6 +794,15 @@ export class SettingsManager {
752
794
  getThinkingBudgets() {
753
795
  return this.settings.thinkingBudgets;
754
796
  }
797
+ getTerminalCapabilityOverrides() {
798
+ const terminal = this.settings.terminal;
799
+ const images = terminal?.images;
800
+ return {
801
+ ...(images === "kitty" || images === "iterm2" ? { images } : images === false ? { images: null } : {}),
802
+ ...(typeof terminal?.trueColor === "boolean" ? { trueColor: terminal.trueColor } : {}),
803
+ ...(typeof terminal?.hyperlinks === "boolean" ? { hyperlinks: terminal.hyperlinks } : {}),
804
+ };
805
+ }
755
806
  getShowImages() {
756
807
  return this.settings.terminal?.showImages ?? true;
757
808
  }
@@ -829,6 +880,14 @@ export class SettingsManager {
829
880
  this.markModified("fullscreenScrollbar");
830
881
  this.save();
831
882
  }
883
+ getFullscreenCopyOnSelect() {
884
+ return this.settings.fullscreenCopyOnSelect ?? true;
885
+ }
886
+ setFullscreenCopyOnSelect(enabled) {
887
+ this.globalSettings.fullscreenCopyOnSelect = enabled;
888
+ this.markModified("fullscreenCopyOnSelect");
889
+ this.save();
890
+ }
832
891
  getImageAutoResize() {
833
892
  return this.settings.images?.autoResize ?? true;
834
893
  }