@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.
- package/CHANGELOG.md +29 -1
- package/dist/builtin-extensions/ashxj-tui.d.ts +14 -0
- package/dist/builtin-extensions/ashxj-tui.d.ts.map +1 -1
- package/dist/builtin-extensions/ashxj-tui.js +37 -3
- package/dist/builtin-extensions/ashxj-tui.js.map +1 -1
- package/dist/builtin-extensions/index.d.ts +1 -15
- package/dist/builtin-extensions/index.d.ts.map +1 -1
- package/dist/builtin-extensions/index.js +7 -21
- package/dist/builtin-extensions/index.js.map +1 -1
- package/dist/builtin-extensions/narumiruna-pi-goal/src/goal.d.ts.map +1 -1
- package/dist/builtin-extensions/narumiruna-pi-goal/src/goal.js +6 -2
- package/dist/builtin-extensions/narumiruna-pi-goal/src/goal.js.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/index.d.ts +4 -0
- package/dist/builtin-extensions/pi-lsp-extension/src/index.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/index.js +163 -169
- package/dist/builtin-extensions/pi-lsp-extension/src/index.js.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/runtime.d.ts +46 -0
- package/dist/builtin-extensions/pi-lsp-extension/src/runtime.d.ts.map +1 -0
- package/dist/builtin-extensions/pi-lsp-extension/src/runtime.js +109 -0
- package/dist/builtin-extensions/pi-lsp-extension/src/runtime.js.map +1 -0
- package/dist/builtin-extensions/pi-mcp-adapter/direct-tool-executor.d.ts +7 -0
- package/dist/builtin-extensions/pi-mcp-adapter/direct-tool-executor.d.ts.map +1 -0
- package/dist/builtin-extensions/pi-mcp-adapter/direct-tool-executor.js +211 -0
- package/dist/builtin-extensions/pi-mcp-adapter/direct-tool-executor.js.map +1 -0
- package/dist/builtin-extensions/pi-mcp-adapter/direct-tools.d.ts +0 -5
- package/dist/builtin-extensions/pi-mcp-adapter/direct-tools.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/direct-tools.js +0 -202
- package/dist/builtin-extensions/pi-mcp-adapter/direct-tools.js.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/index.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/index.js +251 -94
- package/dist/builtin-extensions/pi-mcp-adapter/index.js.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/init.d.ts +4 -1
- package/dist/builtin-extensions/pi-mcp-adapter/init.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/init.js +10 -3
- package/dist/builtin-extensions/pi-mcp-adapter/init.js.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/metadata-cache.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/metadata-cache.js +6 -1
- package/dist/builtin-extensions/pi-mcp-adapter/metadata-cache.js.map +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/prompt-loader.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/prompt-loader.js +2 -1
- package/dist/builtin-extensions/pi-prompt-template-model/prompt-loader.js.map +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.d.ts +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.js +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/index.js +38 -14
- package/dist/builtin-extensions/pi-subagents/src/extension/index.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/fork-context.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/fork-context.js +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/fork-context.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.d.ts +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts +1 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/render.js +2 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/render.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/watchdog/review.d.ts +1 -1
- package/dist/builtin-extensions/pi-subagents/src/watchdog/review.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/watchdog/review.js +2 -1
- package/dist/builtin-extensions/pi-subagents/src/watchdog/review.js.map +1 -1
- package/dist/builtin-extensions/pi-web-access/extract.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-web-access/extract.js +105 -54
- package/dist/builtin-extensions/pi-web-access/extract.js.map +1 -1
- package/dist/builtin-extensions/pi-web-access/gemini-search.d.ts +1 -1
- package/dist/builtin-extensions/pi-web-access/gemini-search.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-web-access/gemini-search.js +82 -65
- package/dist/builtin-extensions/pi-web-access/gemini-search.js.map +1 -1
- package/dist/builtin-extensions/pi-web-access/github-extract.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-web-access/github-extract.js +2 -0
- package/dist/builtin-extensions/pi-web-access/github-extract.js.map +1 -1
- package/dist/builtin-extensions/pi-web-access/index.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-web-access/index.js +167 -77
- package/dist/builtin-extensions/pi-web-access/index.js.map +1 -1
- package/dist/builtin-extensions/pi-web-access/lazy.d.ts +18 -0
- package/dist/builtin-extensions/pi-web-access/lazy.d.ts.map +1 -0
- package/dist/builtin-extensions/pi-web-access/lazy.js +19 -0
- package/dist/builtin-extensions/pi-web-access/lazy.js.map +1 -0
- package/dist/builtin-extensions/pi-web-access/session-cleanup.d.ts +6 -0
- package/dist/builtin-extensions/pi-web-access/session-cleanup.d.ts.map +1 -0
- package/dist/builtin-extensions/pi-web-access/session-cleanup.js +17 -0
- package/dist/builtin-extensions/pi-web-access/session-cleanup.js.map +1 -0
- package/dist/catalog/models.json +1 -1
- package/dist/catalog/providers/amazon-bedrock.json +1 -1
- package/dist/catalog/providers/azure-openai-responses.json +1 -1
- package/dist/catalog/providers/fireworks.json +1 -1
- package/dist/catalog/providers/github-copilot.json +1 -1
- package/dist/catalog/providers/openai-codex.json +1 -1
- package/dist/catalog/providers/openai.json +1 -1
- package/dist/catalog/providers/opencode.json +1 -1
- package/dist/catalog/providers/openrouter.json +1 -1
- package/dist/catalog/providers/vercel-ai-gateway.json +1 -1
- package/dist/catalog/publication.json +131 -3
- package/dist/cli/list-models.d.ts.map +1 -1
- package/dist/cli/list-models.js +1 -0
- package/dist/cli/list-models.js.map +1 -1
- package/dist/cli-runtime.d.ts +3 -0
- package/dist/cli-runtime.d.ts.map +1 -0
- package/dist/cli-runtime.js +73 -0
- package/dist/cli-runtime.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +14 -53
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -0
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session.d.ts +3 -0
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +56 -12
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/catalog-cache-scope.d.ts +3 -0
- package/dist/core/catalog-cache-scope.d.ts.map +1 -0
- package/dist/core/catalog-cache-scope.js +12 -0
- package/dist/core/catalog-cache-scope.js.map +1 -0
- package/dist/core/catalog-merge.d.ts +2 -0
- package/dist/core/catalog-merge.d.ts.map +1 -1
- package/dist/core/catalog-merge.js +29 -2
- package/dist/core/catalog-merge.js.map +1 -1
- package/dist/core/catalog-refresh-polling.d.ts +8 -0
- package/dist/core/catalog-refresh-polling.d.ts.map +1 -0
- package/dist/core/catalog-refresh-polling.js +30 -0
- package/dist/core/catalog-refresh-polling.js.map +1 -0
- package/dist/core/codex-catalog.d.ts +3 -0
- package/dist/core/codex-catalog.d.ts.map +1 -0
- package/dist/core/codex-catalog.js +15 -0
- package/dist/core/codex-catalog.js.map +1 -0
- package/dist/core/compaction/compaction.d.ts.map +1 -1
- package/dist/core/compaction/compaction.js +10 -5
- package/dist/core/compaction/compaction.js.map +1 -1
- package/dist/core/extensions/host-static.d.ts.map +1 -1
- package/dist/core/extensions/host-static.js +34 -12
- package/dist/core/extensions/host-static.js.map +1 -1
- package/dist/core/extensions/loader.d.ts +1 -2
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +10 -64
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/types.d.ts +2 -2
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/footer-data-provider.d.ts.map +1 -1
- package/dist/core/footer-data-provider.js +2 -0
- package/dist/core/footer-data-provider.js.map +1 -1
- package/dist/core/live-catalog.d.ts +5 -2
- package/dist/core/live-catalog.d.ts.map +1 -1
- package/dist/core/live-catalog.js +108 -27
- package/dist/core/live-catalog.js.map +1 -1
- package/dist/core/model-runtime.d.ts +8 -0
- package/dist/core/model-runtime.d.ts.map +1 -1
- package/dist/core/model-runtime.js +64 -12
- package/dist/core/model-runtime.js.map +1 -1
- package/dist/core/official-catalog.d.ts +4 -0
- package/dist/core/official-catalog.d.ts.map +1 -1
- package/dist/core/official-catalog.js +86 -21
- package/dist/core/official-catalog.js.map +1 -1
- package/dist/core/permissions.d.ts +0 -2
- package/dist/core/permissions.d.ts.map +1 -1
- package/dist/core/permissions.js +10 -18
- package/dist/core/permissions.js.map +1 -1
- package/dist/core/sdk.d.ts +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +1 -1
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +0 -1
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/timings.d.ts +2 -1
- package/dist/core/timings.d.ts.map +1 -1
- package/dist/core/timings.js +17 -2
- package/dist/core/timings.js.map +1 -1
- package/dist/gateway/commands.d.ts +1 -1
- package/dist/gateway/commands.d.ts.map +1 -1
- package/dist/gateway/commands.js +1 -18
- package/dist/gateway/commands.js.map +1 -1
- package/dist/main.d.ts +2 -2
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +66 -48
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.js +4 -1
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +13 -22
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +141 -207
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js +95 -84
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/dist/node-runtime/agent-session-services-IFJMSX7Z.js +36 -0
- package/dist/node-runtime/benchmark-request-UC7PD3V3.js +57 -0
- package/dist/node-runtime/brave-UWDA3I22.js +143 -0
- package/dist/node-runtime/builtin-extensions-LYZ3BFWQ.js +28 -0
- package/dist/node-runtime/chunk-2QKLKMKC.js +173 -0
- package/dist/node-runtime/chunk-3GHXVUAK.js +21 -0
- package/dist/node-runtime/chunk-3RCWXWAY.js +466 -0
- package/dist/node-runtime/chunk-3WFAEVKS.js +115 -0
- package/dist/node-runtime/chunk-3X3KZKMI.js +49 -0
- package/dist/node-runtime/chunk-4HXHDDCF.js +16 -0
- package/dist/node-runtime/chunk-4TLO4PO2.js +3427 -0
- package/dist/node-runtime/chunk-4ZWGEEAS.js +69 -0
- package/dist/node-runtime/chunk-53YJI7JU.js +137 -0
- package/dist/node-runtime/chunk-5P7PZMRU.js +610 -0
- package/dist/node-runtime/chunk-7N3YHTYF.js +26 -0
- package/dist/node-runtime/chunk-7NBZ5P7I.js +24 -0
- package/dist/node-runtime/chunk-A2KQXUJD.js +105 -0
- package/dist/node-runtime/chunk-AD6VXAO7.js +342 -0
- package/dist/node-runtime/chunk-AHSTJBIB.js +64 -0
- package/dist/node-runtime/chunk-AJX357CL.js +20211 -0
- package/dist/node-runtime/chunk-ARC4KOTI.js +11178 -0
- package/dist/node-runtime/chunk-AUXVGBO4.js +19 -0
- package/dist/node-runtime/chunk-AY6CAJSL.js +30 -0
- package/dist/node-runtime/chunk-BHO7O6E5.js +296 -0
- package/dist/node-runtime/chunk-BI3DHYCN.js +8845 -0
- package/dist/node-runtime/chunk-BR7YDUKA.js +109 -0
- package/dist/node-runtime/chunk-BRJX2PRC.js +53 -0
- package/dist/node-runtime/chunk-C4O2RSQQ.js +37 -0
- package/dist/node-runtime/chunk-CCZJ3PYY.js +17 -0
- package/dist/node-runtime/chunk-CDFZEWPU.js +8388 -0
- package/dist/node-runtime/chunk-CGBXPL3E.js +1171 -0
- package/dist/node-runtime/chunk-CJECDQKP.js +19 -0
- package/dist/node-runtime/chunk-DAPBPCBP.js +53 -0
- package/dist/node-runtime/chunk-DDGMHUOW.js +305 -0
- package/dist/node-runtime/chunk-DMMTJQMQ.js +43 -0
- package/dist/node-runtime/chunk-DVGWF6A2.js +1180 -0
- package/dist/node-runtime/chunk-ECD5L7YI.js +1369 -0
- package/dist/node-runtime/chunk-EDBJNRSM.js +46 -0
- package/dist/node-runtime/chunk-F4VQFJI2.js +1269 -0
- package/dist/node-runtime/chunk-FVDOXRUD.js +96 -0
- package/dist/node-runtime/chunk-GZQHMEWL.js +126 -0
- package/dist/node-runtime/chunk-H2EOZYMP.js +57 -0
- package/dist/node-runtime/chunk-HQCKFM2O.js +56 -0
- package/dist/node-runtime/chunk-HYHJIRDW.js +19 -0
- package/dist/node-runtime/chunk-I6R76AG7.js +22 -0
- package/dist/node-runtime/chunk-IPA627GP.js +296 -0
- package/dist/node-runtime/chunk-JHYKXIMM.js +378 -0
- package/dist/node-runtime/chunk-KKSIVROT.js +88 -0
- package/dist/node-runtime/chunk-LZAW4ZX3.js +633 -0
- package/dist/node-runtime/chunk-M3LZLQW2.js +98 -0
- package/dist/node-runtime/chunk-MGWCVY6Y.js +47 -0
- package/dist/node-runtime/chunk-MJQDX3BA.js +72 -0
- package/dist/node-runtime/chunk-MKKH27PH.js +8956 -0
- package/dist/node-runtime/chunk-MX3GJNXJ.js +986 -0
- package/dist/node-runtime/chunk-N77MY65L.js +966 -0
- package/dist/node-runtime/chunk-NUIFPZWX.js +209 -0
- package/dist/node-runtime/chunk-OBMWP3I5.js +68 -0
- package/dist/node-runtime/chunk-OR4L3IB2.js +42 -0
- package/dist/node-runtime/chunk-PBC2Y6GS.js +903 -0
- package/dist/node-runtime/chunk-PCGNAY2O.js +1324 -0
- package/dist/node-runtime/chunk-PCIGF2XK.js +250 -0
- package/dist/node-runtime/chunk-PGAJ5MO5.js +7558 -0
- package/dist/node-runtime/chunk-PL6JKXWI.js +3622 -0
- package/dist/node-runtime/chunk-PVCDKGR6.js +55 -0
- package/dist/node-runtime/chunk-Q4Q6D4IY.js +364 -0
- package/dist/node-runtime/chunk-Q5ZU2VRT.js +83 -0
- package/dist/node-runtime/chunk-QFWG2RVL.js +5477 -0
- package/dist/node-runtime/chunk-QH42CDX3.js +9451 -0
- package/dist/node-runtime/chunk-RQ2Q5IYR.js +72 -0
- package/dist/node-runtime/chunk-RQ5DNUNG.js +429 -0
- package/dist/node-runtime/chunk-RRIZE6QQ.js +17 -0
- package/dist/node-runtime/chunk-SN6G4OU6.js +4753 -0
- package/dist/node-runtime/chunk-SWSN6HAB.js +53 -0
- package/dist/node-runtime/chunk-TQNSPERU.js +949 -0
- package/dist/node-runtime/chunk-VRB2IYGG.js +53 -0
- package/dist/node-runtime/chunk-VSELYKWU.js +772 -0
- package/dist/node-runtime/chunk-W3CVH5RX.js +62 -0
- package/dist/node-runtime/chunk-WJVFOIB5.js +24921 -0
- package/dist/node-runtime/chunk-WOVTOV5P.js +5653 -0
- package/dist/node-runtime/chunk-XBWPBZBN.js +125 -0
- package/dist/node-runtime/chunk-XTHQ7XR7.js +509 -0
- package/dist/node-runtime/chunk-YF63P5ZT.js +864 -0
- package/dist/node-runtime/chunk-YSKSB3BJ.js +295 -0
- package/dist/node-runtime/chunk-ZCHMJ34K.js +130 -0
- package/dist/node-runtime/chunk-ZKMFUD3Q.js +2834 -0
- package/dist/node-runtime/cli-runtime.js +81 -0
- package/dist/node-runtime/clipboard-OZ63BBC6.js +12 -0
- package/dist/node-runtime/clipboard-image-7QR6GXVA.js +13 -0
- package/dist/node-runtime/command-L3LAHDIH.js +13 -0
- package/dist/node-runtime/commands-RL5YBW5I.js +291 -0
- package/dist/node-runtime/config-FMEOZSWE.js +77 -0
- package/dist/node-runtime/curator-server-XCM43VEF.js +3816 -0
- package/dist/node-runtime/customize-XEXL2DGQ.js +12 -0
- package/dist/node-runtime/direct-tool-executor-JVDXTO7A.js +188 -0
- package/dist/node-runtime/exa-LL64QZR2.js +329 -0
- package/dist/node-runtime/export-html-KR26FOUZ.js +150 -0
- package/dist/node-runtime/extension-input-RV5N6APL.js +14 -0
- package/dist/node-runtime/extension-selector-CPD5LWDD.js +14 -0
- package/dist/node-runtime/extract-XLQSJN4V.js +17 -0
- package/dist/node-runtime/file-sync-HCOP2QVF.js +117 -0
- package/dist/node-runtime/gateway-X2TI5X7F.js +2484 -0
- package/dist/node-runtime/gemini-api-QE7ANVDZ.js +29 -0
- package/dist/node-runtime/gemini-search-U7SUMPQA.js +330 -0
- package/dist/node-runtime/gemini-url-context-PXWCBQHK.js +103 -0
- package/dist/node-runtime/gemini-web-MM446SEH.js +14 -0
- package/dist/node-runtime/github-extract-F64RZOEA.js +619 -0
- package/dist/node-runtime/goal-CZQ7FFQJ.js +1831 -0
- package/dist/node-runtime/index.js +859 -0
- package/dist/node-runtime/init-NJV2T55N.js +28 -0
- package/dist/node-runtime/install-cli-TH7IJJQQ.js +308 -0
- package/dist/node-runtime/interactive-mode-KOM35YF2.js +56 -0
- package/dist/node-runtime/interactive-view-U6OILKF3.js +249 -0
- package/dist/node-runtime/lsp-manager-3ASUSO4T.js +1104 -0
- package/dist/node-runtime/lunr-cron-YJ5UHYRD.js +268 -0
- package/dist/node-runtime/main.js +54 -0
- package/dist/node-runtime/mcp-auth-flow-QIXHW6QN.js +32 -0
- package/dist/node-runtime/mcp-panel-IIGMXQGP.js +501 -0
- package/dist/node-runtime/mcp-setup-panel-FEK7663I.js +355 -0
- package/dist/node-runtime/memory-cap-3S4XRLNP.js +20 -0
- package/dist/node-runtime/model-tiers-NJLHUEGK.js +20 -0
- package/dist/node-runtime/openai-search-B3MSNCQA.js +288 -0
- package/dist/node-runtime/package-manager-cli-TZZHJCVI.js +749 -0
- package/dist/node-runtime/parallel-AI2MNSCU.js +265 -0
- package/dist/node-runtime/parser-manager-TQHWYDH7.js +152 -0
- package/dist/node-runtime/pdf-extract-IPE6H4HP.js +57 -0
- package/dist/node-runtime/perplexity-QVJW3I35.js +12 -0
- package/dist/node-runtime/pi-intercom-EEMBGQID.js +2215 -0
- package/dist/node-runtime/pi-mcp-adapter-QFB37AVN.js +422 -0
- package/dist/node-runtime/pi-ollama-cloud-4VZRMULP.js +1440 -0
- package/dist/node-runtime/pi-prompt-template-model-4QT4LLXF.js +3946 -0
- package/dist/node-runtime/pi-subagents-7XJ4H53P.js +6023 -0
- package/dist/node-runtime/pi-web-access-DPGAVKOA.js +1864 -0
- package/dist/node-runtime/print-mode-VWIRFDAC.js +12 -0
- package/dist/node-runtime/proxy-modes-HEEFK4KC.js +685 -0
- package/dist/node-runtime/rpc-entry.js +62 -0
- package/dist/node-runtime/rpc-mode-SJNSOA4G.js +13 -0
- package/dist/node-runtime/runtime-bridges-PPHNBFWL.js +14 -0
- package/dist/node-runtime/session-manager-MQNBYACL.js +35 -0
- package/dist/node-runtime/session-selector-5AZLJS6U.js +14 -0
- package/dist/node-runtime/settings-manager-5LF2VQWC.js +21 -0
- package/dist/node-runtime/src-Y7JSCK64.js +2407 -0
- package/dist/node-runtime/subagent-executor-5RNDEPIJ.js +8483 -0
- package/dist/node-runtime/summary-review-YSMXKITO.js +228 -0
- package/dist/node-runtime/tavily-WEZFVFP7.js +154 -0
- package/dist/node-runtime/timings-UAD5BEAS.js +16 -0
- package/dist/node-runtime/tool-renderer-MV5O452K.js +204 -0
- package/dist/node-runtime/update-cli-A253SZ7P.js +73 -0
- package/dist/node-runtime/v4-5MNC3H7G.js +424 -0
- package/dist/node-runtime/video-extract-OYT5WKS5.js +304 -0
- package/dist/node-runtime/workspace-index-6DBXSTJ6.js +163 -0
- package/dist/node-runtime/youtube-extract-TQYKGFGS.js +264 -0
- package/dist/startup/benchmark-request.d.ts +3 -0
- package/dist/startup/benchmark-request.d.ts.map +1 -0
- package/dist/startup/benchmark-request.js +65 -0
- package/dist/startup/benchmark-request.js.map +1 -0
- package/dist/startup/interactive-view.d.ts +55 -0
- package/dist/startup/interactive-view.d.ts.map +1 -0
- package/dist/startup/interactive-view.js +332 -0
- package/dist/startup/interactive-view.js.map +1 -0
- package/dist/startup/launch-routing.d.ts.map +1 -1
- package/dist/startup/launch-routing.js +9 -10
- package/dist/startup/launch-routing.js.map +1 -1
- package/dist/startup/startup-milestones.d.ts +1 -1
- package/dist/startup/startup-milestones.d.ts.map +1 -1
- package/dist/startup/startup-milestones.js +3 -2
- package/dist/startup/startup-milestones.js.map +1 -1
- package/dist/utils/await-with-abort.d.ts +2 -0
- package/dist/utils/await-with-abort.d.ts.map +1 -0
- package/dist/utils/await-with-abort.js +19 -0
- package/dist/utils/await-with-abort.js.map +1 -0
- package/dist/utils/syntax-highlight.d.ts.map +1 -1
- package/dist/utils/syntax-highlight.js +10 -4
- package/dist/utils/syntax-highlight.js.map +1 -1
- package/docs/compaction.md +5 -3
- package/docs/development.md +5 -1
- package/docs/features.md +0 -1
- package/docs/interactive-startup.md +98 -0
- package/docs/model-catalog.md +29 -0
- package/docs/usage.md +0 -1
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/gondolin/package-lock.json +2 -2
- package/examples/extensions/gondolin/package.json +1 -1
- package/examples/extensions/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/package.json +20 -20
- package/dist/core/swarm.d.ts +0 -23
- package/dist/core/swarm.d.ts.map +0 -1
- package/dist/core/swarm.js +0 -45
- 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
|
+
};
|