@ashx-j/lunr-dev 0.2.13-dev.8.1 → 0.2.19-dev.10.1

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 (484) hide show
  1. package/CHANGELOG.md +60 -1
  2. package/README.md +7 -1
  3. package/dist/builtin-extensions/ashxj-thinking.d.ts +1 -0
  4. package/dist/builtin-extensions/ashxj-thinking.d.ts.map +1 -1
  5. package/dist/builtin-extensions/ashxj-thinking.js +44 -19
  6. package/dist/builtin-extensions/ashxj-thinking.js.map +1 -1
  7. package/dist/builtin-extensions/ashxj-tui.d.ts +14 -0
  8. package/dist/builtin-extensions/ashxj-tui.d.ts.map +1 -1
  9. package/dist/builtin-extensions/ashxj-tui.js +37 -3
  10. package/dist/builtin-extensions/ashxj-tui.js.map +1 -1
  11. package/dist/builtin-extensions/index.d.ts +1 -15
  12. package/dist/builtin-extensions/index.d.ts.map +1 -1
  13. package/dist/builtin-extensions/index.js +8 -21
  14. package/dist/builtin-extensions/index.js.map +1 -1
  15. package/dist/builtin-extensions/lunr-computer-use.d.ts +3 -0
  16. package/dist/builtin-extensions/lunr-computer-use.d.ts.map +1 -0
  17. package/dist/builtin-extensions/lunr-computer-use.js +157 -0
  18. package/dist/builtin-extensions/lunr-computer-use.js.map +1 -0
  19. package/dist/builtin-extensions/narumiruna-pi-goal/src/goal.d.ts.map +1 -1
  20. package/dist/builtin-extensions/narumiruna-pi-goal/src/goal.js +6 -2
  21. package/dist/builtin-extensions/narumiruna-pi-goal/src/goal.js.map +1 -1
  22. package/dist/builtin-extensions/pi-lsp-extension/src/index.d.ts +4 -0
  23. package/dist/builtin-extensions/pi-lsp-extension/src/index.d.ts.map +1 -1
  24. package/dist/builtin-extensions/pi-lsp-extension/src/index.js +172 -171
  25. package/dist/builtin-extensions/pi-lsp-extension/src/index.js.map +1 -1
  26. package/dist/builtin-extensions/pi-lsp-extension/src/runtime.d.ts +50 -0
  27. package/dist/builtin-extensions/pi-lsp-extension/src/runtime.d.ts.map +1 -0
  28. package/dist/builtin-extensions/pi-lsp-extension/src/runtime.js +131 -0
  29. package/dist/builtin-extensions/pi-lsp-extension/src/runtime.js.map +1 -0
  30. package/dist/builtin-extensions/pi-mcp-adapter/direct-tool-executor.d.ts +7 -0
  31. package/dist/builtin-extensions/pi-mcp-adapter/direct-tool-executor.d.ts.map +1 -0
  32. package/dist/builtin-extensions/pi-mcp-adapter/direct-tool-executor.js +211 -0
  33. package/dist/builtin-extensions/pi-mcp-adapter/direct-tool-executor.js.map +1 -0
  34. package/dist/builtin-extensions/pi-mcp-adapter/direct-tools.d.ts +0 -5
  35. package/dist/builtin-extensions/pi-mcp-adapter/direct-tools.d.ts.map +1 -1
  36. package/dist/builtin-extensions/pi-mcp-adapter/direct-tools.js +0 -202
  37. package/dist/builtin-extensions/pi-mcp-adapter/direct-tools.js.map +1 -1
  38. package/dist/builtin-extensions/pi-mcp-adapter/index.d.ts.map +1 -1
  39. package/dist/builtin-extensions/pi-mcp-adapter/index.js +276 -109
  40. package/dist/builtin-extensions/pi-mcp-adapter/index.js.map +1 -1
  41. package/dist/builtin-extensions/pi-mcp-adapter/init.d.ts +4 -1
  42. package/dist/builtin-extensions/pi-mcp-adapter/init.d.ts.map +1 -1
  43. package/dist/builtin-extensions/pi-mcp-adapter/init.js +10 -3
  44. package/dist/builtin-extensions/pi-mcp-adapter/init.js.map +1 -1
  45. package/dist/builtin-extensions/pi-mcp-adapter/metadata-cache.d.ts.map +1 -1
  46. package/dist/builtin-extensions/pi-mcp-adapter/metadata-cache.js +6 -1
  47. package/dist/builtin-extensions/pi-mcp-adapter/metadata-cache.js.map +1 -1
  48. package/dist/builtin-extensions/pi-mcp-adapter/server-manager.d.ts +6 -1
  49. package/dist/builtin-extensions/pi-mcp-adapter/server-manager.d.ts.map +1 -1
  50. package/dist/builtin-extensions/pi-mcp-adapter/server-manager.js +33 -8
  51. package/dist/builtin-extensions/pi-mcp-adapter/server-manager.js.map +1 -1
  52. package/dist/builtin-extensions/pi-prompt-template-model/prompt-loader.d.ts.map +1 -1
  53. package/dist/builtin-extensions/pi-prompt-template-model/prompt-loader.js +2 -1
  54. package/dist/builtin-extensions/pi-prompt-template-model/prompt-loader.js.map +1 -1
  55. package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.d.ts +1 -1
  56. package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.d.ts.map +1 -1
  57. package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.js +1 -1
  58. package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.js.map +1 -1
  59. package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts +1 -1
  60. package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts.map +1 -1
  61. package/dist/builtin-extensions/pi-subagents/src/extension/index.js +68 -15
  62. package/dist/builtin-extensions/pi-subagents/src/extension/index.js.map +1 -1
  63. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.d.ts.map +1 -1
  64. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.js +6 -2
  65. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.js.map +1 -1
  66. package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.d.ts +1 -1
  67. package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.d.ts.map +1 -1
  68. package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.js +5 -2
  69. package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.js.map +1 -1
  70. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/request-params.d.ts +10 -0
  71. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/request-params.d.ts.map +1 -0
  72. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/request-params.js +38 -0
  73. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/request-params.js.map +1 -0
  74. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.d.ts.map +1 -1
  75. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js +3 -16
  76. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js.map +1 -1
  77. package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.d.ts +1 -1
  78. package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.d.ts.map +1 -1
  79. package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.js +2 -0
  80. package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.js.map +1 -1
  81. package/dist/builtin-extensions/pi-subagents/src/shared/fork-context.d.ts.map +1 -1
  82. package/dist/builtin-extensions/pi-subagents/src/shared/fork-context.js +1 -1
  83. package/dist/builtin-extensions/pi-subagents/src/shared/fork-context.js.map +1 -1
  84. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.d.ts +1 -1
  85. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.d.ts.map +1 -1
  86. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js +1 -1
  87. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js.map +1 -1
  88. package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts +2 -1
  89. package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts.map +1 -1
  90. package/dist/builtin-extensions/pi-subagents/src/tui/render.js +72 -31
  91. package/dist/builtin-extensions/pi-subagents/src/tui/render.js.map +1 -1
  92. package/dist/builtin-extensions/pi-subagents/src/watchdog/review.d.ts +1 -1
  93. package/dist/builtin-extensions/pi-subagents/src/watchdog/review.d.ts.map +1 -1
  94. package/dist/builtin-extensions/pi-subagents/src/watchdog/review.js +2 -1
  95. package/dist/builtin-extensions/pi-subagents/src/watchdog/review.js.map +1 -1
  96. package/dist/builtin-extensions/pi-web-access/extract.d.ts.map +1 -1
  97. package/dist/builtin-extensions/pi-web-access/extract.js +105 -54
  98. package/dist/builtin-extensions/pi-web-access/extract.js.map +1 -1
  99. package/dist/builtin-extensions/pi-web-access/gemini-search.d.ts +1 -1
  100. package/dist/builtin-extensions/pi-web-access/gemini-search.d.ts.map +1 -1
  101. package/dist/builtin-extensions/pi-web-access/gemini-search.js +82 -65
  102. package/dist/builtin-extensions/pi-web-access/gemini-search.js.map +1 -1
  103. package/dist/builtin-extensions/pi-web-access/github-extract.d.ts.map +1 -1
  104. package/dist/builtin-extensions/pi-web-access/github-extract.js +2 -0
  105. package/dist/builtin-extensions/pi-web-access/github-extract.js.map +1 -1
  106. package/dist/builtin-extensions/pi-web-access/index.d.ts.map +1 -1
  107. package/dist/builtin-extensions/pi-web-access/index.js +259 -168
  108. package/dist/builtin-extensions/pi-web-access/index.js.map +1 -1
  109. package/dist/builtin-extensions/pi-web-access/lazy.d.ts +18 -0
  110. package/dist/builtin-extensions/pi-web-access/lazy.d.ts.map +1 -0
  111. package/dist/builtin-extensions/pi-web-access/lazy.js +19 -0
  112. package/dist/builtin-extensions/pi-web-access/lazy.js.map +1 -0
  113. package/dist/builtin-extensions/pi-web-access/session-cleanup.d.ts +6 -0
  114. package/dist/builtin-extensions/pi-web-access/session-cleanup.d.ts.map +1 -0
  115. package/dist/builtin-extensions/pi-web-access/session-cleanup.js +17 -0
  116. package/dist/builtin-extensions/pi-web-access/session-cleanup.js.map +1 -0
  117. package/dist/catalog/publication.json +12 -12
  118. package/dist/cli-runtime.d.ts +3 -0
  119. package/dist/cli-runtime.d.ts.map +1 -0
  120. package/dist/cli-runtime.js +73 -0
  121. package/dist/cli-runtime.js.map +1 -0
  122. package/dist/cli.d.ts.map +1 -1
  123. package/dist/cli.js +14 -53
  124. package/dist/cli.js.map +1 -1
  125. package/dist/config.d.ts +1 -0
  126. package/dist/config.d.ts.map +1 -1
  127. package/dist/config.js +1 -0
  128. package/dist/config.js.map +1 -1
  129. package/dist/core/agent-session-services.d.ts.map +1 -1
  130. package/dist/core/agent-session-services.js +1 -1
  131. package/dist/core/agent-session-services.js.map +1 -1
  132. package/dist/core/agent-session.d.ts +3 -0
  133. package/dist/core/agent-session.d.ts.map +1 -1
  134. package/dist/core/agent-session.js +56 -12
  135. package/dist/core/agent-session.js.map +1 -1
  136. package/dist/core/compaction/compaction.d.ts.map +1 -1
  137. package/dist/core/compaction/compaction.js +10 -5
  138. package/dist/core/compaction/compaction.js.map +1 -1
  139. package/dist/core/computer-use/adapter.d.ts +23 -0
  140. package/dist/core/computer-use/adapter.d.ts.map +1 -0
  141. package/dist/core/computer-use/adapter.js +116 -0
  142. package/dist/core/computer-use/adapter.js.map +1 -0
  143. package/dist/core/computer-use/lease.d.ts +18 -0
  144. package/dist/core/computer-use/lease.d.ts.map +1 -0
  145. package/dist/core/computer-use/lease.js +129 -0
  146. package/dist/core/computer-use/lease.js.map +1 -0
  147. package/dist/core/computer-use/macos-runtime.d.ts +14 -0
  148. package/dist/core/computer-use/macos-runtime.d.ts.map +1 -0
  149. package/dist/core/computer-use/macos-runtime.js +148 -0
  150. package/dist/core/computer-use/macos-runtime.js.map +1 -0
  151. package/dist/core/computer-use/policy.d.ts +19 -0
  152. package/dist/core/computer-use/policy.d.ts.map +1 -0
  153. package/dist/core/computer-use/policy.js +66 -0
  154. package/dist/core/computer-use/policy.js.map +1 -0
  155. package/dist/core/computer-use/release.generated.d.ts +31 -0
  156. package/dist/core/computer-use/release.generated.d.ts.map +1 -0
  157. package/dist/core/computer-use/release.generated.js +36 -0
  158. package/dist/core/computer-use/release.generated.js.map +1 -0
  159. package/dist/core/computer-use/runtime.d.ts +13 -0
  160. package/dist/core/computer-use/runtime.d.ts.map +1 -0
  161. package/dist/core/computer-use/runtime.js +158 -0
  162. package/dist/core/computer-use/runtime.js.map +1 -0
  163. package/dist/core/computer-use/schemas.d.ts +88 -0
  164. package/dist/core/computer-use/schemas.d.ts.map +1 -0
  165. package/dist/core/computer-use/schemas.js +80 -0
  166. package/dist/core/computer-use/schemas.js.map +1 -0
  167. package/dist/core/computer-use/windows-desktop.d.ts +3 -0
  168. package/dist/core/computer-use/windows-desktop.d.ts.map +1 -0
  169. package/dist/core/computer-use/windows-desktop.js +48 -0
  170. package/dist/core/computer-use/windows-desktop.js.map +1 -0
  171. package/dist/core/computer-use/workflow.d.ts +24 -0
  172. package/dist/core/computer-use/workflow.d.ts.map +1 -0
  173. package/dist/core/computer-use/workflow.js +330 -0
  174. package/dist/core/computer-use/workflow.js.map +1 -0
  175. package/dist/core/extensions/host-static.d.ts.map +1 -1
  176. package/dist/core/extensions/host-static.js +34 -12
  177. package/dist/core/extensions/host-static.js.map +1 -1
  178. package/dist/core/extensions/loader.d.ts +1 -2
  179. package/dist/core/extensions/loader.d.ts.map +1 -1
  180. package/dist/core/extensions/loader.js +10 -64
  181. package/dist/core/extensions/loader.js.map +1 -1
  182. package/dist/core/extensions/types.d.ts +2 -2
  183. package/dist/core/extensions/types.d.ts.map +1 -1
  184. package/dist/core/extensions/types.js.map +1 -1
  185. package/dist/core/footer-data-provider.d.ts.map +1 -1
  186. package/dist/core/footer-data-provider.js +2 -0
  187. package/dist/core/footer-data-provider.js.map +1 -1
  188. package/dist/core/keybindings.d.ts +2 -2
  189. package/dist/core/keybindings.d.ts.map +1 -1
  190. package/dist/core/keybindings.js +2 -2
  191. package/dist/core/keybindings.js.map +1 -1
  192. package/dist/core/model-runtime.d.ts +0 -3
  193. package/dist/core/model-runtime.d.ts.map +1 -1
  194. package/dist/core/model-runtime.js +1 -10
  195. package/dist/core/model-runtime.js.map +1 -1
  196. package/dist/core/package-manager.d.ts.map +1 -1
  197. package/dist/core/package-manager.js +1 -1
  198. package/dist/core/package-manager.js.map +1 -1
  199. package/dist/core/permissions.d.ts +1 -3
  200. package/dist/core/permissions.d.ts.map +1 -1
  201. package/dist/core/permissions.js +33 -25
  202. package/dist/core/permissions.js.map +1 -1
  203. package/dist/core/plan-mode.d.ts.map +1 -1
  204. package/dist/core/plan-mode.js +9 -0
  205. package/dist/core/plan-mode.js.map +1 -1
  206. package/dist/core/rollback.d.ts.map +1 -1
  207. package/dist/core/rollback.js +13 -90
  208. package/dist/core/rollback.js.map +1 -1
  209. package/dist/core/sdk.d.ts +1 -1
  210. package/dist/core/sdk.d.ts.map +1 -1
  211. package/dist/core/sdk.js +1 -1
  212. package/dist/core/sdk.js.map +1 -1
  213. package/dist/core/session-manager.d.ts +0 -1
  214. package/dist/core/session-manager.d.ts.map +1 -1
  215. package/dist/core/session-manager.js +21 -79
  216. package/dist/core/session-manager.js.map +1 -1
  217. package/dist/core/settings-manager.d.ts +6 -0
  218. package/dist/core/settings-manager.d.ts.map +1 -1
  219. package/dist/core/settings-manager.js +19 -0
  220. package/dist/core/settings-manager.js.map +1 -1
  221. package/dist/core/slash-commands.d.ts.map +1 -1
  222. package/dist/core/slash-commands.js +0 -1
  223. package/dist/core/slash-commands.js.map +1 -1
  224. package/dist/core/timings.d.ts +2 -1
  225. package/dist/core/timings.d.ts.map +1 -1
  226. package/dist/core/timings.js +17 -2
  227. package/dist/core/timings.js.map +1 -1
  228. package/dist/dev-cli.js +0 -0
  229. package/dist/gateway/agent-bridge.d.ts +6 -1
  230. package/dist/gateway/agent-bridge.d.ts.map +1 -1
  231. package/dist/gateway/agent-bridge.js +23 -6
  232. package/dist/gateway/agent-bridge.js.map +1 -1
  233. package/dist/gateway/commands.d.ts +1 -1
  234. package/dist/gateway/commands.d.ts.map +1 -1
  235. package/dist/gateway/commands.js +1 -18
  236. package/dist/gateway/commands.js.map +1 -1
  237. package/dist/gateway/cron.d.ts +1 -1
  238. package/dist/gateway/cron.d.ts.map +1 -1
  239. package/dist/gateway/cron.js +23 -7
  240. package/dist/gateway/cron.js.map +1 -1
  241. package/dist/main.d.ts +2 -2
  242. package/dist/main.d.ts.map +1 -1
  243. package/dist/main.js +57 -48
  244. package/dist/main.js.map +1 -1
  245. package/dist/modes/interactive/components/footer.d.ts +4 -2
  246. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  247. package/dist/modes/interactive/components/footer.js +23 -32
  248. package/dist/modes/interactive/components/footer.js.map +1 -1
  249. package/dist/modes/interactive/components/processes-selector.d.ts +2 -3
  250. package/dist/modes/interactive/components/processes-selector.d.ts.map +1 -1
  251. package/dist/modes/interactive/components/processes-selector.js +5 -10
  252. package/dist/modes/interactive/components/processes-selector.js.map +1 -1
  253. package/dist/modes/interactive/components/settings-selector.d.ts +4 -0
  254. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  255. package/dist/modes/interactive/components/settings-selector.js +20 -0
  256. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  257. package/dist/modes/interactive/interactive-mode.d.ts +12 -21
  258. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  259. package/dist/modes/interactive/interactive-mode.js +138 -152
  260. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  261. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  262. package/dist/modes/interactive/theme/theme.js +95 -84
  263. package/dist/modes/interactive/theme/theme.js.map +1 -1
  264. package/dist/modes/interactive/thinking-level-slash.d.ts +4 -0
  265. package/dist/modes/interactive/thinking-level-slash.d.ts.map +1 -0
  266. package/dist/modes/interactive/thinking-level-slash.js +23 -0
  267. package/dist/modes/interactive/thinking-level-slash.js.map +1 -0
  268. package/dist/node-runtime/adapter-AZMY335J.js +279 -0
  269. package/dist/node-runtime/agent-session-services-RSGP5GDN.js +39 -0
  270. package/dist/node-runtime/benchmark-request-UC7PD3V3.js +57 -0
  271. package/dist/node-runtime/brave-UWDA3I22.js +143 -0
  272. package/dist/node-runtime/builtin-extensions-7STLFW3A.js +29 -0
  273. package/dist/node-runtime/chunk-2IDTZAG5.js +1415 -0
  274. package/dist/node-runtime/chunk-3GHXVUAK.js +21 -0
  275. package/dist/node-runtime/chunk-3RCWXWAY.js +466 -0
  276. package/dist/node-runtime/chunk-3WFAEVKS.js +115 -0
  277. package/dist/node-runtime/chunk-3X3KZKMI.js +49 -0
  278. package/dist/node-runtime/chunk-4HXHDDCF.js +16 -0
  279. package/dist/node-runtime/chunk-4SJWFTUP.js +24 -0
  280. package/dist/node-runtime/chunk-4ZWGEEAS.js +69 -0
  281. package/dist/node-runtime/chunk-53YJI7JU.js +137 -0
  282. package/dist/node-runtime/chunk-5NWQCSKR.js +19218 -0
  283. package/dist/node-runtime/chunk-5OLJGVCB.js +68 -0
  284. package/dist/node-runtime/chunk-5Q45AVQG.js +108 -0
  285. package/dist/node-runtime/chunk-5SQDLSZJ.js +949 -0
  286. package/dist/node-runtime/chunk-6SPPH4FY.js +1269 -0
  287. package/dist/node-runtime/chunk-6UB6NKA3.js +860 -0
  288. package/dist/node-runtime/chunk-7AFOFSDY.js +105 -0
  289. package/dist/node-runtime/chunk-7N3YHTYF.js +26 -0
  290. package/dist/node-runtime/chunk-ARC4KOTI.js +11178 -0
  291. package/dist/node-runtime/chunk-AUXVGBO4.js +19 -0
  292. package/dist/node-runtime/chunk-AY6CAJSL.js +30 -0
  293. package/dist/node-runtime/chunk-BHO7O6E5.js +296 -0
  294. package/dist/node-runtime/chunk-BI3DHYCN.js +8845 -0
  295. package/dist/node-runtime/chunk-BKAZ6BKX.js +2185 -0
  296. package/dist/node-runtime/chunk-BR7YDUKA.js +109 -0
  297. package/dist/node-runtime/chunk-BRJX2PRC.js +53 -0
  298. package/dist/node-runtime/chunk-C4O2RSQQ.js +37 -0
  299. package/dist/node-runtime/chunk-CCZJ3PYY.js +17 -0
  300. package/dist/node-runtime/chunk-CGBXPL3E.js +1171 -0
  301. package/dist/node-runtime/chunk-CH6OL6P2.js +295 -0
  302. package/dist/node-runtime/chunk-CJECDQKP.js +19 -0
  303. package/dist/node-runtime/chunk-DAPBPCBP.js +53 -0
  304. package/dist/node-runtime/chunk-DDGMHUOW.js +305 -0
  305. package/dist/node-runtime/chunk-DMMTJQMQ.js +43 -0
  306. package/dist/node-runtime/chunk-DVGWF6A2.js +1180 -0
  307. package/dist/node-runtime/chunk-EH2LJQPM.js +64 -0
  308. package/dist/node-runtime/chunk-EHMBW7FA.js +772 -0
  309. package/dist/node-runtime/chunk-FLYMHKCS.js +966 -0
  310. package/dist/node-runtime/chunk-FVDOXRUD.js +96 -0
  311. package/dist/node-runtime/chunk-GZQHMEWL.js +126 -0
  312. package/dist/node-runtime/chunk-H2EOZYMP.js +57 -0
  313. package/dist/node-runtime/chunk-HQCKFM2O.js +56 -0
  314. package/dist/node-runtime/chunk-HRS4HMDX.js +610 -0
  315. package/dist/node-runtime/chunk-HYHJIRDW.js +19 -0
  316. package/dist/node-runtime/chunk-I6R76AG7.js +22 -0
  317. package/dist/node-runtime/chunk-ISQDQIZN.js +296 -0
  318. package/dist/node-runtime/chunk-J7QGQD45.js +24921 -0
  319. package/dist/node-runtime/chunk-JHYKXIMM.js +378 -0
  320. package/dist/node-runtime/chunk-JT6YCS5B.js +5648 -0
  321. package/dist/node-runtime/chunk-JZHEUQRL.js +180 -0
  322. package/dist/node-runtime/chunk-K72NVGUB.js +2834 -0
  323. package/dist/node-runtime/chunk-KKSIVROT.js +88 -0
  324. package/dist/node-runtime/chunk-LCACDWHJ.js +1743 -0
  325. package/dist/node-runtime/chunk-LTXUQJI4.js +173 -0
  326. package/dist/node-runtime/chunk-LWJXTA6Z.js +6814 -0
  327. package/dist/node-runtime/chunk-M3LZLQW2.js +98 -0
  328. package/dist/node-runtime/chunk-MGSB2C3M.js +46 -0
  329. package/dist/node-runtime/chunk-MGWCVY6Y.js +47 -0
  330. package/dist/node-runtime/chunk-MJQDX3BA.js +72 -0
  331. package/dist/node-runtime/chunk-MUMMMTW4.js +8392 -0
  332. package/dist/node-runtime/chunk-MX3GJNXJ.js +986 -0
  333. package/dist/node-runtime/chunk-NUIFPZWX.js +209 -0
  334. package/dist/node-runtime/chunk-OBMWP3I5.js +68 -0
  335. package/dist/node-runtime/chunk-OR4L3IB2.js +42 -0
  336. package/dist/node-runtime/chunk-OTT6JMPU.js +807 -0
  337. package/dist/node-runtime/chunk-PCIGF2XK.js +250 -0
  338. package/dist/node-runtime/chunk-PL6JKXWI.js +3622 -0
  339. package/dist/node-runtime/chunk-PVCDKGR6.js +55 -0
  340. package/dist/node-runtime/chunk-Q4Q6D4IY.js +364 -0
  341. package/dist/node-runtime/chunk-Q5ZU2VRT.js +83 -0
  342. package/dist/node-runtime/chunk-QFWG2RVL.js +5477 -0
  343. package/dist/node-runtime/chunk-RQ2Q5IYR.js +72 -0
  344. package/dist/node-runtime/chunk-RQ5DNUNG.js +429 -0
  345. package/dist/node-runtime/chunk-RRIZE6QQ.js +17 -0
  346. package/dist/node-runtime/chunk-SN6G4OU6.js +4753 -0
  347. package/dist/node-runtime/chunk-SWSN6HAB.js +53 -0
  348. package/dist/node-runtime/chunk-T5GM5BFH.js +7558 -0
  349. package/dist/node-runtime/chunk-TAP7QTUT.js +1346 -0
  350. package/dist/node-runtime/chunk-U6C7VTR5.js +2033 -0
  351. package/dist/node-runtime/chunk-URD2SLIT.js +1019 -0
  352. package/dist/node-runtime/chunk-VRB2IYGG.js +53 -0
  353. package/dist/node-runtime/chunk-W3CVH5RX.js +62 -0
  354. package/dist/node-runtime/chunk-W7S2REEG.js +9478 -0
  355. package/dist/node-runtime/chunk-XBWPBZBN.js +125 -0
  356. package/dist/node-runtime/chunk-XTHQ7XR7.js +509 -0
  357. package/dist/node-runtime/chunk-ZCHMJ34K.js +130 -0
  358. package/dist/node-runtime/chunk-ZRDIMBEQ.js +651 -0
  359. package/dist/node-runtime/chunk-ZSEZY3II.js +247 -0
  360. package/dist/node-runtime/cli-runtime.js +81 -0
  361. package/dist/node-runtime/clipboard-OZ63BBC6.js +12 -0
  362. package/dist/node-runtime/clipboard-image-7QR6GXVA.js +13 -0
  363. package/dist/node-runtime/command-6UXQ6XZN.js +13 -0
  364. package/dist/node-runtime/commands-LGR5VT5X.js +293 -0
  365. package/dist/node-runtime/config-FMEOZSWE.js +77 -0
  366. package/dist/node-runtime/curator-server-XCM43VEF.js +3816 -0
  367. package/dist/node-runtime/customize-XEXL2DGQ.js +12 -0
  368. package/dist/node-runtime/direct-tool-executor-TDJS7TBD.js +191 -0
  369. package/dist/node-runtime/exa-LL64QZR2.js +329 -0
  370. package/dist/node-runtime/export-html-E4DT6ZJQ.js +150 -0
  371. package/dist/node-runtime/extension-input-RV5N6APL.js +14 -0
  372. package/dist/node-runtime/extension-selector-CPD5LWDD.js +14 -0
  373. package/dist/node-runtime/extract-IUCVZCWC.js +17 -0
  374. package/dist/node-runtime/file-sync-HCOP2QVF.js +117 -0
  375. package/dist/node-runtime/gateway-3OLC4GQN.js +2139 -0
  376. package/dist/node-runtime/gemini-api-QE7ANVDZ.js +29 -0
  377. package/dist/node-runtime/gemini-search-NCIDF7NE.js +330 -0
  378. package/dist/node-runtime/gemini-url-context-OKIN7AIP.js +103 -0
  379. package/dist/node-runtime/gemini-web-MM446SEH.js +14 -0
  380. package/dist/node-runtime/github-extract-F64RZOEA.js +619 -0
  381. package/dist/node-runtime/goal-CZQ7FFQJ.js +1831 -0
  382. package/dist/node-runtime/image-resize-6ZPBFMWW.js +11 -0
  383. package/dist/node-runtime/index.js +863 -0
  384. package/dist/node-runtime/init-EKE277AG.js +30 -0
  385. package/dist/node-runtime/install-cli-TH7IJJQQ.js +308 -0
  386. package/dist/node-runtime/interactive-mode-S5M26CQ7.js +59 -0
  387. package/dist/node-runtime/interactive-view-N6F4KUIT.js +247 -0
  388. package/dist/node-runtime/lsp-manager-3ASUSO4T.js +1104 -0
  389. package/dist/node-runtime/lunr-computer-use-4X3KUNF4.js +206 -0
  390. package/dist/node-runtime/lunr-cron-KKBOGAEF.js +274 -0
  391. package/dist/node-runtime/main.js +57 -0
  392. package/dist/node-runtime/mcp-auth-flow-YL6RWPYG.js +33 -0
  393. package/dist/node-runtime/mcp-panel-IIGMXQGP.js +501 -0
  394. package/dist/node-runtime/mcp-setup-panel-FEK7663I.js +355 -0
  395. package/dist/node-runtime/memory-cap-3S4XRLNP.js +20 -0
  396. package/dist/node-runtime/model-tiers-NJLHUEGK.js +20 -0
  397. package/dist/node-runtime/openai-search-B3MSNCQA.js +288 -0
  398. package/dist/node-runtime/package-manager-cli-C4EJOO5Q.js +751 -0
  399. package/dist/node-runtime/parallel-AI2MNSCU.js +265 -0
  400. package/dist/node-runtime/parser-manager-TQHWYDH7.js +152 -0
  401. package/dist/node-runtime/pdf-extract-IPE6H4HP.js +57 -0
  402. package/dist/node-runtime/perplexity-QVJW3I35.js +12 -0
  403. package/dist/node-runtime/pi-intercom-EEMBGQID.js +2215 -0
  404. package/dist/node-runtime/pi-mcp-adapter-DPTJGAAL.js +428 -0
  405. package/dist/node-runtime/pi-ollama-cloud-4VZRMULP.js +1440 -0
  406. package/dist/node-runtime/pi-prompt-template-model-4QT4LLXF.js +3946 -0
  407. package/dist/node-runtime/pi-subagents-VKCLYIBY.js +6050 -0
  408. package/dist/node-runtime/pi-web-access-BV6DSZOP.js +1867 -0
  409. package/dist/node-runtime/print-mode-VWIRFDAC.js +12 -0
  410. package/dist/node-runtime/proxy-modes-R64LU6WZ.js +688 -0
  411. package/dist/node-runtime/rpc-entry.js +65 -0
  412. package/dist/node-runtime/rpc-mode-SJNSOA4G.js +13 -0
  413. package/dist/node-runtime/runtime-3SB5ATHQ.js +21 -0
  414. package/dist/node-runtime/runtime-bridges-UJ5WJJLN.js +14 -0
  415. package/dist/node-runtime/session-manager-QEMZBMTM.js +33 -0
  416. package/dist/node-runtime/session-selector-URVJLOTK.js +14 -0
  417. package/dist/node-runtime/settings-manager-K6IPIQTI.js +23 -0
  418. package/dist/node-runtime/src-GPFAU3N6.js +2427 -0
  419. package/dist/node-runtime/subagent-executor-EFLTO32A.js +8501 -0
  420. package/dist/node-runtime/summary-review-YSMXKITO.js +228 -0
  421. package/dist/node-runtime/tavily-WEZFVFP7.js +154 -0
  422. package/dist/node-runtime/timings-UAD5BEAS.js +16 -0
  423. package/dist/node-runtime/tool-renderer-MV5O452K.js +204 -0
  424. package/dist/node-runtime/update-cli-I6OVDRPL.js +75 -0
  425. package/dist/node-runtime/v4-5MNC3H7G.js +424 -0
  426. package/dist/node-runtime/video-extract-ETA5RA7U.js +304 -0
  427. package/dist/node-runtime/workflow-SA34S4VX.js +325 -0
  428. package/dist/node-runtime/workspace-index-6DBXSTJ6.js +163 -0
  429. package/dist/node-runtime/youtube-extract-SRVGNN26.js +264 -0
  430. package/dist/rpc.d.ts +3 -0
  431. package/dist/rpc.d.ts.map +1 -0
  432. package/dist/rpc.js +18 -0
  433. package/dist/rpc.js.map +1 -0
  434. package/dist/startup/benchmark-request.d.ts +3 -0
  435. package/dist/startup/benchmark-request.d.ts.map +1 -0
  436. package/dist/startup/benchmark-request.js +65 -0
  437. package/dist/startup/benchmark-request.js.map +1 -0
  438. package/dist/startup/{interactive-shell.d.ts → interactive-view.d.ts} +18 -18
  439. package/dist/startup/interactive-view.d.ts.map +1 -0
  440. package/dist/startup/{interactive-shell.js → interactive-view.js} +119 -52
  441. package/dist/startup/interactive-view.js.map +1 -0
  442. package/dist/startup/launch-routing.d.ts.map +1 -1
  443. package/dist/startup/launch-routing.js +9 -10
  444. package/dist/startup/launch-routing.js.map +1 -1
  445. package/dist/startup/startup-milestones.d.ts +1 -1
  446. package/dist/startup/startup-milestones.d.ts.map +1 -1
  447. package/dist/startup/startup-milestones.js +3 -2
  448. package/dist/startup/startup-milestones.js.map +1 -1
  449. package/dist/utils/await-with-abort.d.ts +2 -0
  450. package/dist/utils/await-with-abort.d.ts.map +1 -0
  451. package/dist/utils/await-with-abort.js +19 -0
  452. package/dist/utils/await-with-abort.js.map +1 -0
  453. package/dist/utils/syntax-highlight.d.ts.map +1 -1
  454. package/dist/utils/syntax-highlight.js +10 -4
  455. package/dist/utils/syntax-highlight.js.map +1 -1
  456. package/docs/compaction.md +5 -3
  457. package/docs/computer-use.md +277 -0
  458. package/docs/development.md +5 -33
  459. package/docs/features.md +2 -3
  460. package/docs/interactive-startup.md +105 -0
  461. package/docs/keybindings.md +2 -2
  462. package/docs/terminal-setup.md +1 -1
  463. package/docs/usage.md +1 -2
  464. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  465. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  466. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  467. package/examples/extensions/gondolin/package-lock.json +2 -2
  468. package/examples/extensions/gondolin/package.json +1 -1
  469. package/examples/extensions/hidden-thinking-label.ts +1 -1
  470. package/examples/extensions/sandbox/package-lock.json +2 -2
  471. package/examples/extensions/sandbox/package.json +1 -1
  472. package/examples/extensions/with-deps/package-lock.json +2 -2
  473. package/examples/extensions/with-deps/package.json +1 -1
  474. package/install-lock/package-lock.json +3827 -0
  475. package/install-lock/package.json +18 -0
  476. package/native/computer-use/LICENSE.md +21 -0
  477. package/npm-shrinkwrap.json +3808 -0
  478. package/package.json +30 -24
  479. package/dist/core/swarm.d.ts +0 -23
  480. package/dist/core/swarm.d.ts.map +0 -1
  481. package/dist/core/swarm.js +0 -45
  482. package/dist/core/swarm.js.map +0 -1
  483. package/dist/startup/interactive-shell.d.ts.map +0 -1
  484. package/dist/startup/interactive-shell.js.map +0 -1
@@ -0,0 +1,751 @@
1
+ import { createRequire as __lunrRequire } from "node:module"; const require = __lunrRequire(import.meta.url);
2
+ import {
3
+ createProjectTrustContext,
4
+ resolveProjectTrusted
5
+ } from "./chunk-ISQDQIZN.js";
6
+ import {
7
+ ProjectTrustStore,
8
+ hasTrustRequiringProjectResources
9
+ } from "./chunk-LTXUQJI4.js";
10
+ import {
11
+ DefaultPackageManager,
12
+ DefaultResourceLoader
13
+ } from "./chunk-T5GM5BFH.js";
14
+ import "./chunk-OBMWP3I5.js";
15
+ import "./chunk-DVGWF6A2.js";
16
+ import "./chunk-QFWG2RVL.js";
17
+ import "./chunk-CGBXPL3E.js";
18
+ import "./chunk-M3LZLQW2.js";
19
+ import {
20
+ SettingsManager
21
+ } from "./chunk-5NWQCSKR.js";
22
+ import "./chunk-URD2SLIT.js";
23
+ import "./chunk-5OLJGVCB.js";
24
+ import "./chunk-AY6CAJSL.js";
25
+ import "./chunk-PVCDKGR6.js";
26
+ import "./chunk-MJQDX3BA.js";
27
+ import "./chunk-MGWCVY6Y.js";
28
+ import "./chunk-I6R76AG7.js";
29
+ import "./chunk-CH6OL6P2.js";
30
+ import {
31
+ DynamicBorder
32
+ } from "./chunk-3GHXVUAK.js";
33
+ import {
34
+ keyHint,
35
+ rawKeyHint
36
+ } from "./chunk-C4O2RSQQ.js";
37
+ import {
38
+ initTheme,
39
+ stopThemeWatcher,
40
+ theme
41
+ } from "./chunk-MX3GJNXJ.js";
42
+ import {
43
+ APP_NAME,
44
+ CONFIG_DIR_NAME,
45
+ canonicalizePath,
46
+ getAgentDir,
47
+ isLocalPath,
48
+ resolvePath
49
+ } from "./chunk-PCIGF2XK.js";
50
+ import "./chunk-Q4Q6D4IY.js";
51
+ import "./chunk-BRJX2PRC.js";
52
+
53
+ // packages/coding-agent/dist/package-manager-cli.js
54
+ import chalk from "chalk";
55
+
56
+ // packages/coding-agent/dist/cli/config-selector.js
57
+ import { ProcessTerminal, TUI } from "@ashx-j/lunr-tui";
58
+
59
+ // packages/coding-agent/dist/modes/interactive/components/config-selector.js
60
+ import { homedir } from "node:os";
61
+ import { basename, dirname, join, relative } from "node:path";
62
+ import { Container, getKeybindings, Input, matchesKey, Spacer, truncateToWidth, visibleWidth } from "@ashx-j/lunr-tui";
63
+ var RESOURCE_TYPES = ["extensions", "skills", "prompts", "themes"], RESOURCE_TYPE_LABELS = {
64
+ extensions: "Extensions",
65
+ skills: "Skills",
66
+ prompts: "Prompts",
67
+ themes: "Themes"
68
+ };
69
+ function formatBaseDir(baseDir) {
70
+ let homeDir = homedir(), displayPath;
71
+ return baseDir === homeDir ? displayPath = "~" : baseDir.startsWith(homeDir) ? displayPath = `~${baseDir.slice(homeDir.length).replace(/\\/g, "/")}` : displayPath = baseDir.replace(/\\/g, "/"), displayPath.endsWith("/") ? displayPath : `${displayPath}/`;
72
+ }
73
+ function getGroupLabel(metadata, agentDir) {
74
+ return metadata.origin === "package" ? `${metadata.source} (${metadata.scope})` : metadata.source === "auto" ? metadata.baseDir ? metadata.scope === "user" ? `User (${formatBaseDir(metadata.baseDir)})` : `Project (${formatBaseDir(metadata.baseDir)})` : metadata.scope === "user" ? `User (${formatBaseDir(agentDir)})` : `Project (${CONFIG_DIR_NAME}/)` : metadata.scope === "user" ? "User settings" : "Project settings";
75
+ }
76
+ function buildGroups(resolved, agentDir) {
77
+ let groupMap = /* @__PURE__ */ new Map(), addToGroup = (resources, resourceType) => {
78
+ for (let res of resources) {
79
+ let { path, enabled, metadata } = res, groupKey = `${metadata.origin}:${metadata.scope}:${metadata.source}:${metadata.baseDir ?? ""}`;
80
+ groupMap.has(groupKey) || groupMap.set(groupKey, {
81
+ key: groupKey,
82
+ label: getGroupLabel(metadata, agentDir),
83
+ scope: metadata.scope,
84
+ origin: metadata.origin,
85
+ source: metadata.source,
86
+ subgroups: []
87
+ });
88
+ let group = groupMap.get(groupKey), subgroupKey = `${groupKey}:${resourceType}`, subgroup = group.subgroups.find((sg) => sg.type === resourceType);
89
+ subgroup || (subgroup = {
90
+ type: resourceType,
91
+ label: RESOURCE_TYPE_LABELS[resourceType],
92
+ items: []
93
+ }, group.subgroups.push(subgroup));
94
+ let fileName = basename(path), parentFolder = basename(dirname(path)), displayName;
95
+ resourceType === "extensions" && parentFolder !== "extensions" ? displayName = `${parentFolder}/${fileName}` : resourceType === "skills" && fileName === "SKILL.md" ? displayName = parentFolder : displayName = fileName, subgroup.items.push({
96
+ path,
97
+ enabled,
98
+ metadata,
99
+ resourceType,
100
+ displayName,
101
+ groupKey,
102
+ subgroupKey
103
+ });
104
+ }
105
+ };
106
+ addToGroup(resolved.extensions, "extensions"), addToGroup(resolved.skills, "skills"), addToGroup(resolved.prompts, "prompts"), addToGroup(resolved.themes, "themes");
107
+ let groups = Array.from(groupMap.values());
108
+ groups.sort((a, b) => a.origin !== b.origin ? a.origin === "package" ? -1 : 1 : a.scope !== b.scope ? a.scope === "user" ? -1 : 1 : a.source.localeCompare(b.source));
109
+ let typeOrder = { extensions: 0, skills: 1, prompts: 2, themes: 3 };
110
+ for (let group of groups) {
111
+ group.subgroups.sort((a, b) => typeOrder[a.type] - typeOrder[b.type]);
112
+ for (let subgroup of group.subgroups)
113
+ subgroup.items.sort((a, b) => a.displayName.localeCompare(b.displayName));
114
+ }
115
+ return groups;
116
+ }
117
+ var ConfigSelectorHeader = class {
118
+ writeScope;
119
+ projectModeAvailable;
120
+ constructor(writeScope, projectModeAvailable) {
121
+ this.writeScope = writeScope, this.projectModeAvailable = projectModeAvailable;
122
+ }
123
+ setWriteScope(writeScope) {
124
+ this.writeScope = writeScope;
125
+ }
126
+ invalidate() {
127
+ }
128
+ render(width) {
129
+ let title = theme.bold(this.writeScope === "project" ? "Project Local Resources" : "Global Resources"), sep = theme.fg("muted", " \xB7 "), switchHint = this.projectModeAvailable ? keyHint("tui.input.tab", "switch mode") + sep : "", actionHint = this.writeScope === "project" ? rawKeyHint("space", "cycle inherit/+/-") : rawKeyHint("space", "toggle"), hint = switchHint + actionHint + sep + rawKeyHint("esc", "close"), spacing = Math.max(1, width - visibleWidth(title) - visibleWidth(hint)), scopeHint = this.writeScope === "project" ? theme.fg("muted", `${CONFIG_DIR_NAME}/settings.json \xB7 inherited global resources are dimmed`) : theme.fg("muted", `~/${CONFIG_DIR_NAME}/agent/settings.json`);
130
+ return [
131
+ truncateToWidth(`${title}${" ".repeat(spacing)}${hint}`, width, ""),
132
+ truncateToWidth(scopeHint, width, "")
133
+ ];
134
+ }
135
+ }, ResourceList = class {
136
+ groupsByScope;
137
+ flatItems = [];
138
+ filteredItems = [];
139
+ selectedIndex = 0;
140
+ searchInput;
141
+ maxVisible;
142
+ settingsManager;
143
+ cwd;
144
+ agentDir;
145
+ writeScope;
146
+ inheritedEnabledByKey;
147
+ onCancel;
148
+ onExit;
149
+ onToggle;
150
+ onSwitchMode;
151
+ _focused = !1;
152
+ get focused() {
153
+ return this._focused;
154
+ }
155
+ set focused(value) {
156
+ this._focused = value, this.searchInput.focused = value;
157
+ }
158
+ constructor(groupsByScope, settingsManager, cwd, agentDir, terminalHeight, writeScope = "global") {
159
+ this.groupsByScope = groupsByScope, this.settingsManager = settingsManager, this.cwd = cwd, this.agentDir = agentDir, this.writeScope = writeScope, this.inheritedEnabledByKey = this.buildInheritedEnabledMap(groupsByScope.global), this.searchInput = new Input();
160
+ let chrome = 8;
161
+ this.maxVisible = Math.max(5, (terminalHeight ?? 24) - chrome), this.buildFlatList(), this.filteredItems = [...this.flatItems];
162
+ }
163
+ setWriteScope(writeScope) {
164
+ this.writeScope = writeScope, this.buildFlatList(), this.filterItems(this.searchInput.getValue());
165
+ }
166
+ get groups() {
167
+ return this.groupsByScope[this.writeScope];
168
+ }
169
+ buildInheritedEnabledMap(groups) {
170
+ let result = /* @__PURE__ */ new Map();
171
+ for (let group of groups)
172
+ for (let subgroup of group.subgroups)
173
+ for (let item of subgroup.items)
174
+ result.set(this.getResourceItemKey(item), item.enabled);
175
+ return result;
176
+ }
177
+ buildFlatList() {
178
+ this.flatItems = [];
179
+ for (let group of this.groups) {
180
+ this.flatItems.push({ type: "group", group });
181
+ for (let subgroup of group.subgroups) {
182
+ this.flatItems.push({ type: "subgroup", subgroup, group });
183
+ for (let item of subgroup.items)
184
+ this.flatItems.push({ type: "item", item });
185
+ }
186
+ }
187
+ this.selectedIndex = this.flatItems.findIndex((e) => e.type === "item"), this.selectedIndex < 0 && (this.selectedIndex = 0);
188
+ }
189
+ findNextItem(fromIndex, direction) {
190
+ let idx = fromIndex + direction;
191
+ for (; idx >= 0 && idx < this.filteredItems.length; ) {
192
+ if (this.filteredItems[idx].type === "item")
193
+ return idx;
194
+ idx += direction;
195
+ }
196
+ return fromIndex;
197
+ }
198
+ filterItems(query) {
199
+ if (!query.trim()) {
200
+ this.filteredItems = [...this.flatItems], this.selectFirstItem();
201
+ return;
202
+ }
203
+ let lowerQuery = query.toLowerCase(), matchingItems = /* @__PURE__ */ new Set(), matchingSubgroups = /* @__PURE__ */ new Set(), matchingGroups = /* @__PURE__ */ new Set();
204
+ for (let entry of this.flatItems)
205
+ if (entry.type === "item") {
206
+ let item = entry.item;
207
+ (item.displayName.toLowerCase().includes(lowerQuery) || item.resourceType.toLowerCase().includes(lowerQuery) || item.path.toLowerCase().includes(lowerQuery)) && matchingItems.add(item);
208
+ }
209
+ for (let group of this.groups)
210
+ for (let subgroup of group.subgroups)
211
+ for (let item of subgroup.items)
212
+ matchingItems.has(item) && (matchingSubgroups.add(subgroup), matchingGroups.add(group));
213
+ this.filteredItems = [];
214
+ for (let entry of this.flatItems)
215
+ entry.type === "group" && matchingGroups.has(entry.group) ? this.filteredItems.push(entry) : entry.type === "subgroup" && matchingSubgroups.has(entry.subgroup) ? this.filteredItems.push(entry) : entry.type === "item" && matchingItems.has(entry.item) && this.filteredItems.push(entry);
216
+ this.selectFirstItem();
217
+ }
218
+ selectFirstItem() {
219
+ let firstItemIndex = this.filteredItems.findIndex((e) => e.type === "item");
220
+ this.selectedIndex = firstItemIndex >= 0 ? firstItemIndex : 0;
221
+ }
222
+ updateItem(item, enabled) {
223
+ item.enabled = enabled;
224
+ for (let group of this.groups)
225
+ for (let subgroup of group.subgroups) {
226
+ let found = subgroup.items.find((i) => i.path === item.path && i.resourceType === item.resourceType);
227
+ if (found) {
228
+ found.enabled = enabled;
229
+ return;
230
+ }
231
+ }
232
+ }
233
+ invalidate() {
234
+ }
235
+ render(width) {
236
+ let lines = [];
237
+ if (lines.push(...this.searchInput.render(width)), lines.push(""), this.filteredItems.length === 0)
238
+ return lines.push(theme.fg("muted", " No resources found")), lines;
239
+ let startIndex = Math.max(0, Math.min(this.selectedIndex - Math.floor(this.maxVisible / 2), this.filteredItems.length - this.maxVisible)), endIndex = Math.min(startIndex + this.maxVisible, this.filteredItems.length);
240
+ for (let i = startIndex; i < endIndex; i++) {
241
+ let entry = this.filteredItems[i], isSelected = i === this.selectedIndex;
242
+ if (entry.type === "group") {
243
+ let inherited = this.writeScope === "project" && entry.group.scope === "user", label = theme.bold(`${entry.group.label}${inherited ? " \xB7 inherited global" : ""}`), groupLine = theme.fg(inherited ? "dim" : "accent", label);
244
+ lines.push(truncateToWidth(` ${groupLine}`, width, ""));
245
+ } else if (entry.type === "subgroup") {
246
+ let color = this.writeScope === "project" && entry.group.scope === "user" ? "dim" : "muted", subgroupLine = theme.fg(color, entry.subgroup.label);
247
+ lines.push(truncateToWidth(` ${subgroupLine}`, width, ""));
248
+ } else {
249
+ let item = entry.item, cursor = isSelected ? "> " : " ", dimmed = this.isDimmedItem(item), nameText = isSelected && !dimmed ? theme.bold(item.displayName) : item.displayName, name = dimmed ? theme.fg("dim", nameText) : nameText;
250
+ lines.push(truncateToWidth(`${cursor} ${this.renderCheckbox(item)} ${name}${this.getItemSuffix(item)}`, width, "..."));
251
+ }
252
+ }
253
+ if (startIndex > 0 || endIndex < this.filteredItems.length) {
254
+ let itemCount = this.filteredItems.filter((e) => e.type === "item").length, currentItemIndex = this.filteredItems.slice(0, this.selectedIndex).filter((e) => e.type === "item").length + 1;
255
+ lines.push(theme.fg("dim", ` (${currentItemIndex}/${itemCount})`));
256
+ }
257
+ return lines;
258
+ }
259
+ handleInput(data) {
260
+ let kb = getKeybindings();
261
+ if (kb.matches(data, "tui.select.up")) {
262
+ this.selectedIndex = this.findNextItem(this.selectedIndex, -1);
263
+ return;
264
+ }
265
+ if (kb.matches(data, "tui.select.down")) {
266
+ this.selectedIndex = this.findNextItem(this.selectedIndex, 1);
267
+ return;
268
+ }
269
+ if (kb.matches(data, "tui.select.pageUp")) {
270
+ let target = Math.max(0, this.selectedIndex - this.maxVisible);
271
+ for (; target < this.filteredItems.length && this.filteredItems[target].type !== "item"; )
272
+ target++;
273
+ target < this.filteredItems.length && (this.selectedIndex = target);
274
+ return;
275
+ }
276
+ if (kb.matches(data, "tui.select.pageDown")) {
277
+ let target = Math.min(this.filteredItems.length - 1, this.selectedIndex + this.maxVisible);
278
+ for (; target >= 0 && this.filteredItems[target].type !== "item"; )
279
+ target--;
280
+ target >= 0 && (this.selectedIndex = target);
281
+ return;
282
+ }
283
+ if (kb.matches(data, "tui.select.cancel")) {
284
+ this.onCancel?.();
285
+ return;
286
+ }
287
+ if (matchesKey(data, "ctrl+c")) {
288
+ this.onExit?.();
289
+ return;
290
+ }
291
+ if (kb.matches(data, "tui.input.tab")) {
292
+ this.onSwitchMode?.();
293
+ return;
294
+ }
295
+ if (data === " " || kb.matches(data, "tui.select.confirm")) {
296
+ let entry = this.filteredItems[this.selectedIndex];
297
+ if (entry?.type === "item" && (this.writeScope === "project" || this.getItemScope(entry.item) === "user")) {
298
+ let newEnabled = this.toggleResource(entry.item);
299
+ newEnabled !== void 0 && (this.updateItem(entry.item, newEnabled), this.onToggle?.(entry.item, newEnabled));
300
+ }
301
+ return;
302
+ }
303
+ this.searchInput.handleInput(data), this.filterItems(this.searchInput.getValue());
304
+ }
305
+ toggleResource(item) {
306
+ if (this.writeScope === "project") {
307
+ let state = this.getNextOverrideState(item);
308
+ return this.setProjectResourceOverride(item, state) ? state === "inherit" ? this.getInheritedEnabled(item) : state === "load" : void 0;
309
+ }
310
+ let enabled = !item.enabled;
311
+ return item.metadata.origin === "top-level" ? this.toggleTopLevelResource(item, enabled) : this.togglePackageResource(item, enabled), enabled;
312
+ }
313
+ toggleTopLevelResource(item, enabled) {
314
+ let scope = item.metadata.scope, settings = scope === "project" ? this.settingsManager.getProjectSettings() : this.settingsManager.getGlobalSettings(), arrayKey = item.resourceType, current = settings[arrayKey] ?? [], pattern = this.getResourcePattern(item), disablePattern = `-${pattern}`, enablePattern = `+${pattern}`, updated = current.filter((p) => (p.startsWith("!") || p.startsWith("+") || p.startsWith("-") ? p.slice(1) : p) !== pattern);
315
+ enabled ? updated.push(enablePattern) : updated.push(disablePattern), scope === "project" ? arrayKey === "extensions" ? this.settingsManager.setProjectExtensionPaths(updated) : arrayKey === "skills" ? this.settingsManager.setProjectSkillPaths(updated) : arrayKey === "prompts" ? this.settingsManager.setProjectPromptTemplatePaths(updated) : arrayKey === "themes" && this.settingsManager.setProjectThemePaths(updated) : arrayKey === "extensions" ? this.settingsManager.setExtensionPaths(updated) : arrayKey === "skills" ? this.settingsManager.setSkillPaths(updated) : arrayKey === "prompts" ? this.settingsManager.setPromptTemplatePaths(updated) : arrayKey === "themes" && this.settingsManager.setThemePaths(updated);
316
+ }
317
+ togglePackageResource(item, enabled) {
318
+ let scope = item.metadata.scope, packages = [...(scope === "project" ? this.settingsManager.getProjectSettings() : this.settingsManager.getGlobalSettings()).packages ?? []], pkgIndex = packages.findIndex((pkg2) => (typeof pkg2 == "string" ? pkg2 : pkg2.source) === item.metadata.source);
319
+ if (pkgIndex === -1)
320
+ return;
321
+ let pkg = packages[pkgIndex];
322
+ typeof pkg == "string" && (pkg = { source: pkg }, packages[pkgIndex] = pkg);
323
+ let arrayKey = item.resourceType, current = pkg[arrayKey] ?? [], pattern = this.getPackageResourcePattern(item), disablePattern = `-${pattern}`, enablePattern = `+${pattern}`, updated = current.filter((p) => (p.startsWith("!") || p.startsWith("+") || p.startsWith("-") ? p.slice(1) : p) !== pattern);
324
+ enabled ? updated.push(enablePattern) : updated.push(disablePattern), pkg[arrayKey] = updated.length > 0 ? updated : void 0, ["extensions", "skills", "prompts", "themes"].some((k) => pkg[k] !== void 0) || (packages[pkgIndex] = pkg.source), scope === "project" ? this.settingsManager.setProjectPackages(packages) : this.settingsManager.setPackages(packages);
325
+ }
326
+ renderCheckbox(item) {
327
+ if (this.writeScope === "project") {
328
+ let state = this.getProjectOverrideState(item);
329
+ return state === "load" ? theme.fg("success", "[+]") : state === "unload" ? theme.fg("warning", "[-]") : theme.fg("dim", item.enabled ? "[x]" : "[ ]");
330
+ }
331
+ return item.enabled ? theme.fg("success", "[x]") : theme.fg("dim", "[ ]");
332
+ }
333
+ getItemSuffix(item) {
334
+ if (this.writeScope !== "project")
335
+ return "";
336
+ let state = this.getProjectOverrideState(item);
337
+ return state === "load" ? theme.fg("muted", " project load") : state === "unload" ? theme.fg("muted", " project unload") : this.isInheritedGlobalItem(item) ? theme.fg("dim", " inherited global") : "";
338
+ }
339
+ isDimmedItem(item) {
340
+ return this.writeScope === "project" && this.isInheritedGlobalItem(item) && this.getProjectOverrideState(item) === "inherit";
341
+ }
342
+ setProjectResourceOverride(item, state) {
343
+ return item.metadata.origin === "top-level" ? this.setProjectTopLevelOverride(item, state) : this.setProjectPackageOverride(item, state);
344
+ }
345
+ setProjectTopLevelOverride(item, state) {
346
+ let current = this.settingsManager.getProjectSettings()[item.resourceType] ?? [], pattern = this.isInheritedGlobalItem(item) ? item.path : this.getResourcePatternForScope(item, "project"), patterns = this.getTopLevelOverridePatterns(item, "project"), updated = current.filter((entry) => {
347
+ let target = this.getPatternEntryTarget(entry);
348
+ return (entry.startsWith("!") || entry.startsWith("+") || entry.startsWith("-")) && patterns.has(target) ? !1 : !(state === "inherit" && this.isInheritedGlobalItem(item) && target === pattern);
349
+ });
350
+ return state !== "inherit" && (this.isInheritedGlobalItem(item) && !updated.includes(pattern) && updated.push(pattern), updated.push(`${state === "load" ? "+" : "-"}${pattern}`)), this.setProjectTopLevelPaths(item.resourceType, updated), !0;
351
+ }
352
+ setProjectTopLevelPaths(key, paths) {
353
+ key === "extensions" ? this.settingsManager.setProjectExtensionPaths(paths) : key === "skills" ? this.settingsManager.setProjectSkillPaths(paths) : key === "prompts" ? this.settingsManager.setProjectPromptTemplatePaths(paths) : this.settingsManager.setProjectThemePaths(paths);
354
+ }
355
+ setProjectPackageOverride(item, state) {
356
+ let packages = [...this.settingsManager.getProjectSettings().packages ?? []], pkgIndex = packages.findIndex((pkg2) => this.packageSourceStringMatches(item.metadata.source, this.getItemScope(item), typeof pkg2 == "string" ? pkg2 : pkg2.source, "project"));
357
+ if (pkgIndex === -1) {
358
+ if (state === "inherit")
359
+ return !1;
360
+ packages.push(this.createPackageOverrideSource(item)), pkgIndex = packages.length - 1;
361
+ }
362
+ let pkg = packages[pkgIndex];
363
+ if (pkg === void 0)
364
+ return !1;
365
+ typeof pkg == "string" && (pkg = { source: pkg }, packages[pkgIndex] = pkg);
366
+ let pattern = this.getPackageResourcePattern(item), updated = (pkg[item.resourceType] ?? []).filter((entry) => this.getPatternEntryTarget(entry) !== pattern);
367
+ return state !== "inherit" && updated.push(`${state === "load" ? "+" : "-"}${pattern}`), pkg[item.resourceType] = updated.length > 0 ? updated : void 0, RESOURCE_TYPES.some((key) => pkg[key] !== void 0) || (pkg.autoload === !1 ? packages.splice(pkgIndex, 1) : packages[pkgIndex] = pkg.source), this.settingsManager.setProjectPackages(packages), !0;
368
+ }
369
+ getNextOverrideState(item) {
370
+ let state = this.getProjectOverrideState(item), inheritedEnabled = this.getInheritedEnabled(item);
371
+ return state === "inherit" ? inheritedEnabled ? "unload" : "load" : state === "unload" ? inheritedEnabled ? "load" : "inherit" : inheritedEnabled ? "inherit" : "unload";
372
+ }
373
+ getProjectOverrideState(item) {
374
+ if (this.writeScope !== "project")
375
+ return "inherit";
376
+ if (item.metadata.origin === "top-level")
377
+ return this.getOverrideStateFromEntries(this.settingsManager.getProjectSettings()[item.resourceType] ?? [], this.getTopLevelOverridePatterns(item, "project"), !1);
378
+ let pkg = this.findMatchingPackageSource(item, "project");
379
+ if (typeof pkg != "object")
380
+ return "inherit";
381
+ let entries = pkg[item.resourceType];
382
+ return entries === void 0 ? "inherit" : this.getOverrideStateFromEntries(entries, /* @__PURE__ */ new Set([this.getPackageResourcePattern(item)]), pkg.autoload !== !1);
383
+ }
384
+ getOverrideStateFromEntries(entries, patterns, emptyArrayIsUnload) {
385
+ if (entries.length === 0 && emptyArrayIsUnload)
386
+ return "unload";
387
+ let state = "inherit";
388
+ for (let entry of entries)
389
+ patterns.has(this.getPatternEntryTarget(entry)) && (entry.startsWith("!") || entry.startsWith("-") ? state = "unload" : state = "load");
390
+ return state;
391
+ }
392
+ getInheritedEnabled(item) {
393
+ return this.inheritedEnabledByKey.get(this.getResourceItemKey(item)) ?? (this.getItemScope(item) === "user" ? item.enabled : !0);
394
+ }
395
+ isInheritedGlobalItem(item) {
396
+ return this.getItemScope(item) === "user" || this.inheritedEnabledByKey.has(this.getResourceItemKey(item));
397
+ }
398
+ getTopLevelOverridePatterns(item, scope) {
399
+ let baseDir = this.getTopLevelBaseDir(scope), patterns = /* @__PURE__ */ new Set([
400
+ this.getResourcePatternForScope(item, scope),
401
+ item.path,
402
+ relative(baseDir, item.path)
403
+ ]);
404
+ return item.metadata.baseDir && patterns.add(relative(item.metadata.baseDir, item.path)), patterns;
405
+ }
406
+ getResourcePatternForScope(item, scope) {
407
+ let sourceScope = this.getItemScope(item);
408
+ if (scope !== sourceScope)
409
+ return item.path;
410
+ let baseDir = item.metadata.baseDir ?? this.getTopLevelBaseDir(sourceScope);
411
+ return relative(baseDir, item.path);
412
+ }
413
+ createPackageOverrideSource(item) {
414
+ let source = item.metadata.source;
415
+ if (!isLocalPath(source))
416
+ return { source, autoload: !1 };
417
+ let sourcePath = resolvePath(source, this.getTopLevelBaseDir(this.getItemScope(item)), { trim: !0 });
418
+ return { source: relative(this.getTopLevelBaseDir("project"), sourcePath) || ".", autoload: !1 };
419
+ }
420
+ packageSourceStringMatches(leftSource, leftScope, rightSource, rightScope) {
421
+ if (leftSource === rightSource)
422
+ return !0;
423
+ if (!isLocalPath(leftSource) || !isLocalPath(rightSource))
424
+ return !1;
425
+ let left = resolvePath(leftSource, this.getTopLevelBaseDir(leftScope), { trim: !0 }), right = resolvePath(rightSource, this.getTopLevelBaseDir(rightScope), { trim: !0 });
426
+ return left === right;
427
+ }
428
+ findMatchingPackageSource(item, targetScope) {
429
+ return ((targetScope === "project" ? this.settingsManager.getProjectSettings() : this.settingsManager.getGlobalSettings()).packages ?? []).find((pkg) => this.packageSourceStringMatches(item.metadata.source, this.getItemScope(item), typeof pkg == "string" ? pkg : pkg.source, targetScope));
430
+ }
431
+ getPatternEntryTarget(entry) {
432
+ return entry.startsWith("!") || entry.startsWith("+") || entry.startsWith("-") ? entry.slice(1) : entry;
433
+ }
434
+ getResourceItemKey(item) {
435
+ return `${item.resourceType}:${canonicalizePath(item.path)}`;
436
+ }
437
+ getItemScope(item) {
438
+ return item.metadata.scope === "project" ? "project" : "user";
439
+ }
440
+ getTopLevelBaseDir(scope) {
441
+ return scope === "project" ? join(this.cwd, CONFIG_DIR_NAME) : this.agentDir;
442
+ }
443
+ getResourcePattern(item) {
444
+ let scope = item.metadata.scope, baseDir = item.metadata.baseDir ?? this.getTopLevelBaseDir(scope);
445
+ return relative(baseDir, item.path);
446
+ }
447
+ getPackageResourcePattern(item) {
448
+ let baseDir = item.metadata.baseDir ?? dirname(item.path);
449
+ return relative(baseDir, item.path);
450
+ }
451
+ }, ConfigSelectorComponent = class extends Container {
452
+ header;
453
+ resourceList;
454
+ writeScope;
455
+ _focused = !1;
456
+ get focused() {
457
+ return this._focused;
458
+ }
459
+ set focused(value) {
460
+ this._focused = value, this.resourceList.focused = value;
461
+ }
462
+ constructor(resolvedPaths, settingsManager, cwd, agentDir, onClose, onExit, requestRender, terminalHeight, writeScope = "global", projectModeAvailable = !0) {
463
+ super(), this.writeScope = writeScope;
464
+ let groupsByScope = {
465
+ global: buildGroups(resolvedPaths.global, agentDir),
466
+ project: buildGroups(resolvedPaths.project, agentDir)
467
+ };
468
+ this.addChild(new Spacer(1)), this.addChild(new DynamicBorder()), this.addChild(new Spacer(1)), this.header = new ConfigSelectorHeader(this.writeScope, projectModeAvailable), this.addChild(this.header), this.addChild(new Spacer(1)), this.resourceList = new ResourceList(groupsByScope, settingsManager, cwd, agentDir, terminalHeight, this.writeScope), this.resourceList.onCancel = onClose, this.resourceList.onExit = onExit, this.resourceList.onToggle = () => requestRender(), projectModeAvailable && (this.resourceList.onSwitchMode = () => {
469
+ this.switchWriteScope(), requestRender();
470
+ }), this.addChild(this.resourceList), this.addChild(new Spacer(1)), this.addChild(new DynamicBorder());
471
+ }
472
+ switchWriteScope() {
473
+ this.writeScope = this.writeScope === "global" ? "project" : "global", this.header.setWriteScope(this.writeScope), this.resourceList.setWriteScope(this.writeScope);
474
+ }
475
+ getResourceList() {
476
+ return this.resourceList;
477
+ }
478
+ };
479
+
480
+ // packages/coding-agent/dist/cli/config-selector.js
481
+ async function selectConfig(options) {
482
+ return initTheme(options.settingsManager.getTheme(), !0), new Promise((resolve) => {
483
+ let ui = new TUI(new ProcessTerminal()), resolved = !1, selector = new ConfigSelectorComponent(options.resolvedPaths, options.settingsManager, options.cwd, options.agentDir, () => {
484
+ resolved || (resolved = !0, ui.stop(), stopThemeWatcher(), resolve());
485
+ }, () => {
486
+ ui.stop(), stopThemeWatcher(), process.exit(0);
487
+ }, () => ui.requestRender(), ui.terminal.rows, options.writeScope, options.projectModeAvailable);
488
+ ui.addChild(selector), ui.setFocus(selector.getResourceList()), ui.start();
489
+ });
490
+ }
491
+
492
+ // packages/coding-agent/dist/package-manager-cli.js
493
+ function reportSettingsErrors(settingsManager, context) {
494
+ let errors = settingsManager.drainErrors();
495
+ for (let { scope, error } of errors)
496
+ console.error(chalk.yellow(`Warning (${context}, ${scope} settings): ${error.message}`)), error.stack && console.error(chalk.dim(error.stack));
497
+ }
498
+ function getPackageCommandUsage(command) {
499
+ switch (command) {
500
+ case "install":
501
+ return `${APP_NAME} install <source> [-l] [--approve|--no-approve]`;
502
+ case "remove":
503
+ return `${APP_NAME} remove <source> [-l] [--approve|--no-approve]`;
504
+ case "list":
505
+ return `${APP_NAME} list [--approve|--no-approve]`;
506
+ }
507
+ }
508
+ var CONFIG_COMMAND_USAGE = `${APP_NAME} config [-l] [--approve|--no-approve]`;
509
+ function printConfigCommandHelp() {
510
+ console.log(`${chalk.bold("Usage:")}
511
+ ${CONFIG_COMMAND_USAGE}
512
+
513
+ Open the resource configuration TUI to enable or disable package resources.
514
+ Without -l, starts in global settings (~/${CONFIG_DIR_NAME}/agent/settings.json).
515
+ Press Tab in the TUI to switch between global and project-local modes.
516
+
517
+ Options:
518
+ -l, --local Edit project overrides (${CONFIG_DIR_NAME}/settings.json)
519
+ -a, --approve Trust project-local files for this command with -l
520
+ -na, --no-approve Ignore project-local files for this command with -l
521
+ `);
522
+ }
523
+ function printPackageCommandHelp(command) {
524
+ switch (command) {
525
+ case "install":
526
+ console.log(`${chalk.bold("Usage:")}
527
+ ${getPackageCommandUsage("install")}
528
+
529
+ Install a package and add it to settings.
530
+
531
+ Options:
532
+ -l, --local Install project-locally (${CONFIG_DIR_NAME}/settings.json)
533
+ -a, --approve Trust project-local files for this command
534
+ -na, --no-approve Ignore project-local files for this command
535
+
536
+ Examples:
537
+ ${APP_NAME} install npm:@foo/bar
538
+ ${APP_NAME} install git:github.com/user/repo
539
+ ${APP_NAME} install git:git@github.com:user/repo
540
+ ${APP_NAME} install https://github.com/user/repo
541
+ ${APP_NAME} install ssh://git@github.com/user/repo
542
+ ${APP_NAME} install ./local/path
543
+ `);
544
+ return;
545
+ case "remove":
546
+ console.log(`${chalk.bold("Usage:")}
547
+ ${getPackageCommandUsage("remove")}
548
+
549
+ Remove a package and its source from settings.
550
+ Alias: ${APP_NAME} uninstall <source> [-l]
551
+
552
+ Options:
553
+ -l, --local Remove from project settings (${CONFIG_DIR_NAME}/settings.json)
554
+ -a, --approve Trust project-local files for this command
555
+ -na, --no-approve Ignore project-local files for this command
556
+
557
+ Examples:
558
+ ${APP_NAME} remove npm:@foo/bar
559
+ ${APP_NAME} uninstall npm:@foo/bar
560
+ `);
561
+ return;
562
+ case "list":
563
+ console.log(`${chalk.bold("Usage:")}
564
+ ${getPackageCommandUsage("list")}
565
+
566
+ List installed packages from user and project settings.
567
+
568
+ Options:
569
+ -a, --approve Trust project-local files for this command
570
+ -na, --no-approve Ignore project-local files for this command
571
+ `);
572
+ return;
573
+ }
574
+ }
575
+ function parsePackageCommand(args) {
576
+ let [rawCommand, ...rest] = args, command;
577
+ if (rawCommand === "uninstall" ? command = "remove" : (rawCommand === "install" || rawCommand === "remove" || rawCommand === "list") && (command = rawCommand), !command)
578
+ return;
579
+ let local = !1, projectTrustOverride, help = !1, invalidOption, invalidArgument, source;
580
+ for (let index = 0; index < rest.length; index++) {
581
+ let arg = rest[index];
582
+ if (arg === "-h" || arg === "--help") {
583
+ help = !0;
584
+ continue;
585
+ }
586
+ if (arg === "-l" || arg === "--local") {
587
+ command === "install" || command === "remove" ? local = !0 : invalidOption = invalidOption ?? arg;
588
+ continue;
589
+ }
590
+ if (arg === "--approve" || arg === "-a") {
591
+ projectTrustOverride = !0;
592
+ continue;
593
+ }
594
+ if (arg === "--no-approve" || arg === "-na") {
595
+ projectTrustOverride = !1;
596
+ continue;
597
+ }
598
+ if (arg.startsWith("-")) {
599
+ invalidOption = invalidOption ?? arg;
600
+ continue;
601
+ }
602
+ source ? invalidArgument = invalidArgument ?? arg : source = arg;
603
+ }
604
+ return {
605
+ command,
606
+ source,
607
+ local,
608
+ projectTrustOverride,
609
+ help,
610
+ invalidOption,
611
+ invalidArgument
612
+ };
613
+ }
614
+ function getCommandAppMode() {
615
+ return process.stdin.isTTY && process.stdout.isTTY ? "interactive" : "print";
616
+ }
617
+ function reportProjectTrustWarnings(warnings) {
618
+ for (let warning of warnings)
619
+ console.error(chalk.yellow(`Warning: ${warning}`));
620
+ }
621
+ async function createCommandSettingsManager(options) {
622
+ let settingsManager = SettingsManager.create(options.cwd, options.agentDir, { projectTrusted: !1 }), projectTrustWarnings = [], trustStore = new ProjectTrustStore(options.agentDir);
623
+ if (options.useSavedProjectTrustOnly) {
624
+ let savedProjectTrusted = trustStore.get(options.cwd) === !0;
625
+ return settingsManager.setProjectTrusted(options.projectTrustOverride ?? savedProjectTrusted), { settingsManager, projectTrustWarnings };
626
+ }
627
+ let appMode = getCommandAppMode(), extensionsResult = options.projectTrustOverride === void 0 && hasTrustRequiringProjectResources(options.cwd) ? await new DefaultResourceLoader({
628
+ cwd: options.cwd,
629
+ agentDir: options.agentDir,
630
+ settingsManager,
631
+ extensionFactories: options.extensionFactories
632
+ }).loadProjectTrustExtensions() : void 0;
633
+ for (let error of extensionsResult?.errors ?? [])
634
+ projectTrustWarnings.push(`Failed to load extension "${error.path}": ${error.error}`);
635
+ let projectTrusted = await resolveProjectTrusted({
636
+ cwd: options.cwd,
637
+ trustStore,
638
+ trustOverride: options.projectTrustOverride,
639
+ defaultProjectTrust: settingsManager.getDefaultProjectTrust(),
640
+ extensionsResult,
641
+ projectTrustContext: createProjectTrustContext({
642
+ cwd: options.cwd,
643
+ mode: appMode,
644
+ settingsManager,
645
+ hasUI: appMode === "interactive"
646
+ }),
647
+ onExtensionError: (message) => projectTrustWarnings.push(message)
648
+ });
649
+ return settingsManager.setProjectTrusted(projectTrusted), { settingsManager, projectTrustWarnings };
650
+ }
651
+ async function handleConfigCommand(args, runtimeOptions = {}) {
652
+ let [command, ...rest] = args;
653
+ if (command !== "config")
654
+ return !1;
655
+ if (rest.includes("-h") || rest.includes("--help"))
656
+ return printConfigCommandHelp(), !0;
657
+ let local = !1, projectTrustOverride;
658
+ for (let arg of rest)
659
+ if (arg === "-l" || arg === "--local")
660
+ local = !0;
661
+ else if (arg === "-a" || arg === "--approve")
662
+ projectTrustOverride = !0;
663
+ else if (arg === "-na" || arg === "--no-approve")
664
+ projectTrustOverride = !1;
665
+ else return arg.startsWith("-") ? (console.error(chalk.red(`Unknown option ${arg} for "config".`)), console.error(chalk.dim(`Use "${APP_NAME} --help" or "${CONFIG_COMMAND_USAGE}".`)), process.exitCode = 1, !0) : (console.error(chalk.red(`Unexpected argument ${arg}.`)), console.error(chalk.dim(`Usage: ${CONFIG_COMMAND_USAGE}`)), process.exitCode = 1, !0);
666
+ let cwd = process.cwd(), agentDir = getAgentDir(), { settingsManager, projectTrustWarnings } = await createCommandSettingsManager({
667
+ cwd,
668
+ agentDir,
669
+ projectTrustOverride,
670
+ extensionFactories: runtimeOptions.extensionFactories
671
+ });
672
+ if (reportProjectTrustWarnings(projectTrustWarnings), local && !settingsManager.isProjectTrusted())
673
+ return console.error(chalk.red("Project is not trusted. Use --approve to modify local resource config.")), process.exitCode = 1, !0;
674
+ reportSettingsErrors(settingsManager, "config command");
675
+ let globalSettingsManager = SettingsManager.create(cwd, agentDir, { projectTrusted: !1 }), globalResolvedPaths = await new DefaultPackageManager({
676
+ cwd,
677
+ agentDir,
678
+ settingsManager: globalSettingsManager
679
+ }).resolve(), projectResolvedPaths = settingsManager.isProjectTrusted() ? await new DefaultPackageManager({ cwd, agentDir, settingsManager }).resolve() : globalResolvedPaths;
680
+ await selectConfig({
681
+ resolvedPaths: { global: globalResolvedPaths, project: projectResolvedPaths },
682
+ settingsManager,
683
+ cwd,
684
+ agentDir,
685
+ writeScope: local ? "project" : "global",
686
+ projectModeAvailable: settingsManager.isProjectTrusted()
687
+ }), process.exit(0);
688
+ }
689
+ async function handlePackageCommand(args, runtimeOptions = {}) {
690
+ let options = parsePackageCommand(args);
691
+ if (!options)
692
+ return !1;
693
+ if (options.help)
694
+ return printPackageCommandHelp(options.command), !0;
695
+ if (options.invalidOption)
696
+ return console.error(chalk.red(`Unknown option ${options.invalidOption} for "${options.command}".`)), console.error(chalk.dim(`Use "${APP_NAME} --help" or "${getPackageCommandUsage(options.command)}".`)), process.exitCode = 1, !0;
697
+ if (options.invalidArgument)
698
+ return console.error(chalk.red(`Unexpected argument ${options.invalidArgument}.`)), console.error(chalk.dim(`Usage: ${getPackageCommandUsage(options.command)}`)), process.exitCode = 1, !0;
699
+ let source = options.source;
700
+ if ((options.command === "install" || options.command === "remove") && !source)
701
+ return console.error(chalk.red(`Missing ${options.command} source.`)), console.error(chalk.dim(`Usage: ${getPackageCommandUsage(options.command)}`)), process.exitCode = 1, !0;
702
+ let cwd = process.cwd(), agentDir = getAgentDir(), writesProjectPackageConfig = (options.command === "install" || options.command === "remove") && options.local, { settingsManager, projectTrustWarnings } = await createCommandSettingsManager({
703
+ cwd,
704
+ agentDir,
705
+ projectTrustOverride: options.projectTrustOverride,
706
+ extensionFactories: runtimeOptions.extensionFactories
707
+ });
708
+ if (reportProjectTrustWarnings(projectTrustWarnings), !settingsManager.isProjectTrusted() && writesProjectPackageConfig)
709
+ return console.error(chalk.red("Project is not trusted. Use --approve to modify local package config.")), process.exitCode = 1, !0;
710
+ reportSettingsErrors(settingsManager, "package command");
711
+ let packageManager = new DefaultPackageManager({ cwd, agentDir, settingsManager });
712
+ packageManager.setProgressCallback((event) => {
713
+ event.type === "start" && process.stdout.write(chalk.dim(`${event.message}
714
+ `));
715
+ });
716
+ try {
717
+ switch (options.command) {
718
+ case "install":
719
+ return await packageManager.installAndPersist(source, { local: options.local }), console.log(chalk.green(`Installed ${source}`)), !0;
720
+ case "remove":
721
+ return await packageManager.removeAndPersist(source, { local: options.local }) ? (console.log(chalk.green(`Removed ${source}`)), !0) : (console.error(chalk.red(`No matching package found for ${source}`)), process.exitCode = 1, !0);
722
+ case "list": {
723
+ let configuredPackages = packageManager.listConfiguredPackages(), userPackages = configuredPackages.filter((pkg) => pkg.scope === "user"), projectPackages = configuredPackages.filter((pkg) => pkg.scope === "project");
724
+ if (configuredPackages.length === 0)
725
+ return console.log(chalk.dim("No packages installed.")), !0;
726
+ let formatPackage = (pkg) => {
727
+ let display = pkg.filtered ? `${pkg.source} (filtered)` : pkg.source;
728
+ console.log(` ${display}`), pkg.installedPath && console.log(chalk.dim(` ${pkg.installedPath}`));
729
+ };
730
+ if (userPackages.length > 0) {
731
+ console.log(chalk.bold("User packages:"));
732
+ for (let pkg of userPackages)
733
+ formatPackage(pkg);
734
+ }
735
+ if (projectPackages.length > 0) {
736
+ userPackages.length > 0 && console.log(), console.log(chalk.bold("Project packages:"));
737
+ for (let pkg of projectPackages)
738
+ formatPackage(pkg);
739
+ }
740
+ return !0;
741
+ }
742
+ }
743
+ } catch (error) {
744
+ let message = error instanceof Error ? error.message : "Unknown package command error";
745
+ return console.error(chalk.red(`Error: ${message}`)), process.exitCode = 1, !0;
746
+ }
747
+ }
748
+ export {
749
+ handleConfigCommand,
750
+ handlePackageCommand
751
+ };