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