pi-kot 0.1.21 → 0.1.23
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/bin/pi-kot.mjs +148 -0
- package/dist/client/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- package/dist/client/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/dist/client/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/dist/client/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/dist/client/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/dist/client/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- package/dist/client/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/dist/client/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- package/dist/client/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/dist/client/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/dist/client/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/dist/client/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- package/dist/client/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/dist/client/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- package/dist/client/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/dist/client/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- package/dist/client/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/dist/client/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/dist/client/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- package/dist/client/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/dist/client/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/dist/client/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/dist/client/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/dist/client/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- package/dist/client/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- package/dist/client/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/dist/client/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/dist/client/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/dist/client/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- package/dist/client/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/dist/client/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/dist/client/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/dist/client/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- package/dist/client/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/dist/client/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- package/dist/client/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/dist/client/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/dist/client/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/dist/client/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- package/dist/client/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/dist/client/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- package/dist/client/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/dist/client/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/dist/client/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/dist/client/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/dist/client/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/dist/client/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- package/dist/client/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/dist/client/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- package/dist/client/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/dist/client/assets/index-CE_Na97I.js +75 -0
- package/dist/client/assets/index-CE_Na97I.js.map +1 -0
- package/dist/client/assets/index-QP95zkpd.css +1 -0
- package/dist/client/assets/rolldown-runtime-QTnfLwEv.js +1 -0
- package/dist/client/assets/vendor-codemirror-CD3uCqRj.js +48 -0
- package/dist/client/assets/vendor-codemirror-CD3uCqRj.js.map +1 -0
- package/dist/client/assets/vendor-icons-W8thHNMl.js +2 -0
- package/dist/client/assets/vendor-icons-W8thHNMl.js.map +1 -0
- package/dist/client/assets/vendor-katex-4z5K3dyr.js +260 -0
- package/dist/client/assets/vendor-katex-4z5K3dyr.js.map +1 -0
- package/dist/client/assets/vendor-katex-CYlHEDRF.css +1 -0
- package/dist/client/assets/vendor-markdown-BSzxNR_7.js +35 -0
- package/dist/client/assets/vendor-markdown-BSzxNR_7.js.map +1 -0
- package/dist/client/assets/vendor-prism-CQGp13s2.js +4 -0
- package/dist/client/assets/vendor-prism-CQGp13s2.js.map +1 -0
- package/dist/client/assets/vendor-xterm-BrP-ENHg.css +1 -0
- package/dist/client/assets/vendor-xterm-DXwh06H3.js +36 -0
- package/dist/client/assets/vendor-xterm-DXwh06H3.js.map +1 -0
- package/dist/client/index.html +23 -0
- package/dist/server/ask-user-question/envelope.d.ts +11 -0
- package/dist/server/ask-user-question/envelope.d.ts.map +1 -0
- package/dist/server/ask-user-question/envelope.js +41 -0
- package/dist/server/ask-user-question/envelope.js.map +1 -0
- package/dist/server/ask-user-question/plan-mode-question-tool.d.ts +26 -0
- package/dist/server/ask-user-question/plan-mode-question-tool.d.ts.map +1 -0
- package/dist/server/ask-user-question/plan-mode-question-tool.js +273 -0
- package/dist/server/ask-user-question/plan-mode-question-tool.js.map +1 -0
- package/dist/server/ask-user-question/prompt-strings.d.ts +4 -0
- package/dist/server/ask-user-question/prompt-strings.d.ts.map +1 -0
- package/dist/server/ask-user-question/prompt-strings.js +18 -0
- package/dist/server/ask-user-question/prompt-strings.js.map +1 -0
- package/dist/server/ask-user-question/registry.d.ts +39 -0
- package/dist/server/ask-user-question/registry.d.ts.map +1 -0
- package/dist/server/ask-user-question/registry.js +124 -0
- package/dist/server/ask-user-question/registry.js.map +1 -0
- package/dist/server/ask-user-question/tool.d.ts +4 -0
- package/dist/server/ask-user-question/tool.d.ts.map +1 -0
- package/dist/server/ask-user-question/tool.js +68 -0
- package/dist/server/ask-user-question/tool.js.map +1 -0
- package/dist/server/ask-user-question/types.d.ts +50 -0
- package/dist/server/ask-user-question/types.d.ts.map +1 -0
- package/dist/server/ask-user-question/types.js +7 -0
- package/dist/server/ask-user-question/types.js.map +1 -0
- package/dist/server/ask-user-question/validate.d.ts +3 -0
- package/dist/server/ask-user-question/validate.d.ts.map +1 -0
- package/dist/server/ask-user-question/validate.js +67 -0
- package/dist/server/ask-user-question/validate.js.map +1 -0
- package/dist/server/clone-provider.d.ts +55 -0
- package/dist/server/clone-provider.d.ts.map +1 -0
- package/dist/server/clone-provider.js +172 -0
- package/dist/server/clone-provider.js.map +1 -0
- package/dist/server/compaction-cards.d.ts +62 -0
- package/dist/server/compaction-cards.d.ts.map +1 -0
- package/dist/server/compaction-cards.js +180 -0
- package/dist/server/compaction-cards.js.map +1 -0
- package/dist/server/compaction-continuation.d.ts +112 -0
- package/dist/server/compaction-continuation.d.ts.map +1 -0
- package/dist/server/compaction-continuation.js +65 -0
- package/dist/server/compaction-continuation.js.map +1 -0
- package/dist/server/config-store.d.ts +97 -0
- package/dist/server/config-store.d.ts.map +1 -0
- package/dist/server/config-store.js +351 -0
- package/dist/server/config-store.js.map +1 -0
- package/dist/server/config.d.ts +24 -0
- package/dist/server/config.d.ts.map +1 -0
- package/dist/server/config.js +67 -0
- package/dist/server/config.js.map +1 -0
- package/dist/server/event-stream.d.ts +28 -0
- package/dist/server/event-stream.d.ts.map +1 -0
- package/dist/server/event-stream.js +153 -0
- package/dist/server/event-stream.js.map +1 -0
- package/dist/server/extension-manager.d.ts +116 -0
- package/dist/server/extension-manager.d.ts.map +1 -0
- package/dist/server/extension-manager.js +586 -0
- package/dist/server/extension-manager.js.map +1 -0
- package/dist/server/extension-scanner.d.ts +26 -0
- package/dist/server/extension-scanner.d.ts.map +1 -0
- package/dist/server/extension-scanner.js +107 -0
- package/dist/server/extension-scanner.js.map +1 -0
- package/dist/server/extension-ui-bridge.d.ts +35 -0
- package/dist/server/extension-ui-bridge.d.ts.map +1 -0
- package/dist/server/extension-ui-bridge.js +228 -0
- package/dist/server/extension-ui-bridge.js.map +1 -0
- package/dist/server/file-manager.d.ts +79 -0
- package/dist/server/file-manager.d.ts.map +1 -0
- package/dist/server/file-manager.js +535 -0
- package/dist/server/file-manager.js.map +1 -0
- package/dist/server/file-searcher.d.ts +29 -0
- package/dist/server/file-searcher.d.ts.map +1 -0
- package/dist/server/file-searcher.js +318 -0
- package/dist/server/file-searcher.js.map +1 -0
- package/dist/server/git-operations.d.ts +346 -0
- package/dist/server/git-operations.d.ts.map +1 -0
- package/dist/server/git-operations.js +884 -0
- package/dist/server/git-operations.js.map +1 -0
- package/dist/server/hunk-stager.d.ts +56 -0
- package/dist/server/hunk-stager.d.ts.map +1 -0
- package/dist/server/hunk-stager.js +137 -0
- package/dist/server/hunk-stager.js.map +1 -0
- package/dist/server/index.d.ts +21 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +262 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/mcp/config.d.ts +23 -0
- package/dist/server/mcp/config.d.ts.map +1 -0
- package/dist/server/mcp/config.js +139 -0
- package/dist/server/mcp/config.js.map +1 -0
- package/dist/server/mcp/manager.d.ts +40 -0
- package/dist/server/mcp/manager.d.ts.map +1 -0
- package/dist/server/mcp/manager.js +435 -0
- package/dist/server/mcp/manager.js.map +1 -0
- package/dist/server/mcp/stdio-trust.d.ts +5 -0
- package/dist/server/mcp/stdio-trust.d.ts.map +1 -0
- package/dist/server/mcp/stdio-trust.js +78 -0
- package/dist/server/mcp/stdio-trust.js.map +1 -0
- package/dist/server/mcp/tool-bridge.d.ts +33 -0
- package/dist/server/mcp/tool-bridge.d.ts.map +1 -0
- package/dist/server/mcp/tool-bridge.js +138 -0
- package/dist/server/mcp/tool-bridge.js.map +1 -0
- package/dist/server/orchestration/config.d.ts +5 -0
- package/dist/server/orchestration/config.d.ts.map +1 -0
- package/dist/server/orchestration/config.js +35 -0
- package/dist/server/orchestration/config.js.map +1 -0
- package/dist/server/orchestration/event-bridge.d.ts +32 -0
- package/dist/server/orchestration/event-bridge.d.ts.map +1 -0
- package/dist/server/orchestration/event-bridge.js +110 -0
- package/dist/server/orchestration/event-bridge.js.map +1 -0
- package/dist/server/orchestration/inbox.d.ts +9 -0
- package/dist/server/orchestration/inbox.d.ts.map +1 -0
- package/dist/server/orchestration/inbox.js +186 -0
- package/dist/server/orchestration/inbox.js.map +1 -0
- package/dist/server/orchestration/init.d.ts +2 -0
- package/dist/server/orchestration/init.d.ts.map +1 -0
- package/dist/server/orchestration/init.js +22 -0
- package/dist/server/orchestration/init.js.map +1 -0
- package/dist/server/orchestration/store.d.ts +33 -0
- package/dist/server/orchestration/store.d.ts.map +1 -0
- package/dist/server/orchestration/store.js +331 -0
- package/dist/server/orchestration/store.js.map +1 -0
- package/dist/server/orchestration/tools.d.ts +15 -0
- package/dist/server/orchestration/tools.d.ts.map +1 -0
- package/dist/server/orchestration/tools.js +621 -0
- package/dist/server/orchestration/tools.js.map +1 -0
- package/dist/server/orchestration/types.d.ts +68 -0
- package/dist/server/orchestration/types.d.ts.map +1 -0
- package/dist/server/orchestration/types.js +43 -0
- package/dist/server/orchestration/types.js.map +1 -0
- package/dist/server/orchestration/worker-lifecycle.d.ts +15 -0
- package/dist/server/orchestration/worker-lifecycle.d.ts.map +1 -0
- package/dist/server/orchestration/worker-lifecycle.js +45 -0
- package/dist/server/orchestration/worker-lifecycle.js.map +1 -0
- package/dist/server/path-refs.d.ts +5 -0
- package/dist/server/path-refs.d.ts.map +1 -0
- package/dist/server/path-refs.js +249 -0
- package/dist/server/path-refs.js.map +1 -0
- package/dist/server/routes/_schemas.d.ts +16 -0
- package/dist/server/routes/_schemas.d.ts.map +1 -0
- package/dist/server/routes/_schemas.js +12 -0
- package/dist/server/routes/_schemas.js.map +1 -0
- package/dist/server/routes/ask-user-question.d.ts +3 -0
- package/dist/server/routes/ask-user-question.d.ts.map +1 -0
- package/dist/server/routes/ask-user-question.js +105 -0
- package/dist/server/routes/ask-user-question.js.map +1 -0
- package/dist/server/routes/auth.d.ts +8 -0
- package/dist/server/routes/auth.d.ts.map +1 -0
- package/dist/server/routes/auth.js +225 -0
- package/dist/server/routes/auth.js.map +1 -0
- package/dist/server/routes/config.d.ts +3 -0
- package/dist/server/routes/config.d.ts.map +1 -0
- package/dist/server/routes/config.js +602 -0
- package/dist/server/routes/config.js.map +1 -0
- package/dist/server/routes/control.d.ts +3 -0
- package/dist/server/routes/control.d.ts.map +1 -0
- package/dist/server/routes/control.js +365 -0
- package/dist/server/routes/control.js.map +1 -0
- package/dist/server/routes/exec.d.ts +3 -0
- package/dist/server/routes/exec.d.ts.map +1 -0
- package/dist/server/routes/exec.js +426 -0
- package/dist/server/routes/exec.js.map +1 -0
- package/dist/server/routes/extension-commands.d.ts +22 -0
- package/dist/server/routes/extension-commands.d.ts.map +1 -0
- package/dist/server/routes/extension-commands.js +178 -0
- package/dist/server/routes/extension-commands.js.map +1 -0
- package/dist/server/routes/extensions.d.ts +8 -0
- package/dist/server/routes/extensions.d.ts.map +1 -0
- package/dist/server/routes/extensions.js +414 -0
- package/dist/server/routes/extensions.js.map +1 -0
- package/dist/server/routes/files.d.ts +3 -0
- package/dist/server/routes/files.d.ts.map +1 -0
- package/dist/server/routes/files.js +835 -0
- package/dist/server/routes/files.js.map +1 -0
- package/dist/server/routes/git.d.ts +3 -0
- package/dist/server/routes/git.d.ts.map +1 -0
- package/dist/server/routes/git.js +1058 -0
- package/dist/server/routes/git.js.map +1 -0
- package/dist/server/routes/mcp.d.ts +3 -0
- package/dist/server/routes/mcp.d.ts.map +1 -0
- package/dist/server/routes/mcp.js +403 -0
- package/dist/server/routes/mcp.js.map +1 -0
- package/dist/server/routes/orchestration.d.ts +3 -0
- package/dist/server/routes/orchestration.d.ts.map +1 -0
- package/dist/server/routes/orchestration.js +251 -0
- package/dist/server/routes/orchestration.js.map +1 -0
- package/dist/server/routes/projects.d.ts +3 -0
- package/dist/server/routes/projects.d.ts.map +1 -0
- package/dist/server/routes/projects.js +421 -0
- package/dist/server/routes/projects.js.map +1 -0
- package/dist/server/routes/prompt.d.ts +3 -0
- package/dist/server/routes/prompt.d.ts.map +1 -0
- package/dist/server/routes/prompt.js +311 -0
- package/dist/server/routes/prompt.js.map +1 -0
- package/dist/server/routes/session-extensions.d.ts +11 -0
- package/dist/server/routes/session-extensions.d.ts.map +1 -0
- package/dist/server/routes/session-extensions.js +171 -0
- package/dist/server/routes/session-extensions.js.map +1 -0
- package/dist/server/routes/sessions.d.ts +3 -0
- package/dist/server/routes/sessions.d.ts.map +1 -0
- package/dist/server/routes/sessions.js +706 -0
- package/dist/server/routes/sessions.js.map +1 -0
- package/dist/server/routes/skills.d.ts +14 -0
- package/dist/server/routes/skills.d.ts.map +1 -0
- package/dist/server/routes/skills.js +448 -0
- package/dist/server/routes/skills.js.map +1 -0
- package/dist/server/routes/stream.d.ts +3 -0
- package/dist/server/routes/stream.d.ts.map +1 -0
- package/dist/server/routes/stream.js +112 -0
- package/dist/server/routes/stream.js.map +1 -0
- package/dist/server/routes/terminal.d.ts +28 -0
- package/dist/server/routes/terminal.d.ts.map +1 -0
- package/dist/server/routes/terminal.js +211 -0
- package/dist/server/routes/terminal.js.map +1 -0
- package/dist/server/routes/tunnel.d.ts +13 -0
- package/dist/server/routes/tunnel.d.ts.map +1 -0
- package/dist/server/routes/tunnel.js +231 -0
- package/dist/server/routes/tunnel.js.map +1 -0
- package/dist/server/session-alerts.d.ts +28 -0
- package/dist/server/session-alerts.d.ts.map +1 -0
- package/dist/server/session-alerts.js +38 -0
- package/dist/server/session-alerts.js.map +1 -0
- package/dist/server/session-store.d.ts +164 -0
- package/dist/server/session-store.d.ts.map +1 -0
- package/dist/server/session-store.js +754 -0
- package/dist/server/session-store.js.map +1 -0
- package/dist/server/skill-policy.d.ts +47 -0
- package/dist/server/skill-policy.d.ts.map +1 -0
- package/dist/server/skill-policy.js +178 -0
- package/dist/server/skill-policy.js.map +1 -0
- package/dist/server/terminal-provider.d.ts +54 -0
- package/dist/server/terminal-provider.d.ts.map +1 -0
- package/dist/server/terminal-provider.js +220 -0
- package/dist/server/terminal-provider.js.map +1 -0
- package/dist/server/tool-policy.d.ts +39 -0
- package/dist/server/tool-policy.d.ts.map +1 -0
- package/dist/server/tool-policy.js +121 -0
- package/dist/server/tool-policy.js.map +1 -0
- package/dist/server/tunnel/executable-search.d.ts +43 -0
- package/dist/server/tunnel/executable-search.d.ts.map +1 -0
- package/dist/server/tunnel/executable-search.js +148 -0
- package/dist/server/tunnel/executable-search.js.map +1 -0
- package/dist/server/tunnel/install-help.d.ts +19 -0
- package/dist/server/tunnel/install-help.d.ts.map +1 -0
- package/dist/server/tunnel/install-help.js +47 -0
- package/dist/server/tunnel/install-help.js.map +1 -0
- package/dist/server/tunnel/providers/ngrok.d.ts +31 -0
- package/dist/server/tunnel/providers/ngrok.d.ts.map +1 -0
- package/dist/server/tunnel/providers/ngrok.js +461 -0
- package/dist/server/tunnel/providers/ngrok.js.map +1 -0
- package/dist/server/tunnel/registry.d.ts +13 -0
- package/dist/server/tunnel/registry.d.ts.map +1 -0
- package/dist/server/tunnel/registry.js +56 -0
- package/dist/server/tunnel/registry.js.map +1 -0
- package/dist/server/tunnel/service.d.ts +13 -0
- package/dist/server/tunnel/service.d.ts.map +1 -0
- package/dist/server/tunnel/service.js +156 -0
- package/dist/server/tunnel/service.js.map +1 -0
- package/dist/server/tunnel/types.d.ts +163 -0
- package/dist/server/tunnel/types.d.ts.map +1 -0
- package/dist/server/tunnel/types.js +214 -0
- package/dist/server/tunnel/types.js.map +1 -0
- package/dist/server/ui-settings-store.d.ts +25 -0
- package/dist/server/ui-settings-store.d.ts.map +1 -0
- package/dist/server/ui-settings-store.js +91 -0
- package/dist/server/ui-settings-store.js.map +1 -0
- package/dist/server/workspace-store.d.ts +25 -0
- package/dist/server/workspace-store.d.ts.map +1 -0
- package/dist/server/workspace-store.js +157 -0
- package/dist/server/workspace-store.js.map +1 -0
- package/package.json +5 -3
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { chmodSync } from "node:fs";
|
|
2
|
+
import { mkdir, readFile, rename, unlink, writeFile } from "node:fs/promises";
|
|
3
|
+
import { dirname } from "node:path";
|
|
4
|
+
import { randomUUID } from "node:crypto";
|
|
5
|
+
import { config } from "./config.js";
|
|
6
|
+
function empty() {
|
|
7
|
+
return { builtin: [], mcp: [], extension: [], projects: {} };
|
|
8
|
+
}
|
|
9
|
+
async function ensureDir() {
|
|
10
|
+
await mkdir(dirname(config.toolOverridesFile), { recursive: true });
|
|
11
|
+
}
|
|
12
|
+
async function readToolOverrides() {
|
|
13
|
+
try {
|
|
14
|
+
const raw = await readFile(config.toolOverridesFile, "utf8");
|
|
15
|
+
if (raw.trim().length === 0)
|
|
16
|
+
return empty();
|
|
17
|
+
const parsed = JSON.parse(raw);
|
|
18
|
+
if (typeof parsed !== "object" || parsed === null)
|
|
19
|
+
return empty();
|
|
20
|
+
return {
|
|
21
|
+
builtin: Array.isArray(parsed.builtin) ? parsed.builtin : [],
|
|
22
|
+
mcp: Array.isArray(parsed.mcp) ? parsed.mcp : [],
|
|
23
|
+
extension: Array.isArray(parsed.extension) ? parsed.extension : [],
|
|
24
|
+
projects: typeof parsed.projects === "object" && parsed.projects !== null ? parsed.projects : {},
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
if (err.code === "ENOENT")
|
|
29
|
+
return empty();
|
|
30
|
+
throw err;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
async function writeToolOverrides(data) {
|
|
34
|
+
await ensureDir();
|
|
35
|
+
const path = config.toolOverridesFile;
|
|
36
|
+
const tmp = `${path}.${randomUUID()}.tmp`;
|
|
37
|
+
await writeFile(tmp, JSON.stringify(data, null, 2), { mode: 0o600 });
|
|
38
|
+
try {
|
|
39
|
+
chmodSync(tmp, 0o600);
|
|
40
|
+
}
|
|
41
|
+
catch { /* best-effort */ }
|
|
42
|
+
try {
|
|
43
|
+
await rename(tmp, path);
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
await unlink(tmp).catch(() => undefined);
|
|
47
|
+
throw err;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
export async function setToolEnabled(family, name, enabled) {
|
|
51
|
+
const data = await readToolOverrides();
|
|
52
|
+
const arr = data[family];
|
|
53
|
+
const idx = arr.indexOf(name);
|
|
54
|
+
if (enabled && idx !== -1) {
|
|
55
|
+
arr.splice(idx, 1);
|
|
56
|
+
}
|
|
57
|
+
else if (!enabled && idx === -1) {
|
|
58
|
+
arr.push(name);
|
|
59
|
+
}
|
|
60
|
+
await writeToolOverrides(data);
|
|
61
|
+
}
|
|
62
|
+
export function isToolEffective(data, projectId, family, name) {
|
|
63
|
+
// Per-project override takes precedence
|
|
64
|
+
if (projectId !== undefined) {
|
|
65
|
+
const proj = data.projects[projectId];
|
|
66
|
+
if (proj !== undefined) {
|
|
67
|
+
if (proj[family].enable.includes(name))
|
|
68
|
+
return true;
|
|
69
|
+
if (proj[family].disable.includes(name))
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
// Fall back to global disabled set
|
|
74
|
+
return !data[family].includes(name);
|
|
75
|
+
}
|
|
76
|
+
export async function setProjectToolOverride(projectId, family, name, state) {
|
|
77
|
+
const data = await readToolOverrides();
|
|
78
|
+
if (!data.projects[projectId]) {
|
|
79
|
+
data.projects[projectId] = { builtin: { enable: [], disable: [] }, mcp: { enable: [], disable: [] }, extension: { enable: [], disable: [] } };
|
|
80
|
+
}
|
|
81
|
+
const proj = data.projects[projectId];
|
|
82
|
+
const enableIdx = proj[family].enable.indexOf(name);
|
|
83
|
+
const disableIdx = proj[family].disable.indexOf(name);
|
|
84
|
+
if (state === "enabled") {
|
|
85
|
+
if (enableIdx === -1)
|
|
86
|
+
proj[family].enable.push(name);
|
|
87
|
+
if (disableIdx !== -1)
|
|
88
|
+
proj[family].disable.splice(disableIdx, 1);
|
|
89
|
+
}
|
|
90
|
+
else if (state === "disabled") {
|
|
91
|
+
if (disableIdx === -1)
|
|
92
|
+
proj[family].disable.push(name);
|
|
93
|
+
if (enableIdx !== -1)
|
|
94
|
+
proj[family].enable.splice(enableIdx, 1);
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
if (enableIdx !== -1)
|
|
98
|
+
proj[family].enable.splice(enableIdx, 1);
|
|
99
|
+
if (disableIdx !== -1)
|
|
100
|
+
proj[family].disable.splice(disableIdx, 1);
|
|
101
|
+
}
|
|
102
|
+
await writeToolOverrides(data);
|
|
103
|
+
}
|
|
104
|
+
export async function listToolOverrides() {
|
|
105
|
+
const data = await readToolOverrides();
|
|
106
|
+
return data.projects;
|
|
107
|
+
}
|
|
108
|
+
export { readToolOverrides };
|
|
109
|
+
/**
|
|
110
|
+
* Filter a list of `{family, name}` candidates to only those that are
|
|
111
|
+
* effectively enabled (global disabled set + per-project overrides).
|
|
112
|
+
*/
|
|
113
|
+
export function filterEnabledTools(overrides, projectId, candidates) {
|
|
114
|
+
return candidates.filter((c) => isToolEffective(overrides, projectId, c.family, c.name));
|
|
115
|
+
}
|
|
116
|
+
export async function clearProjectOverrides(projectId) {
|
|
117
|
+
const data = await readToolOverrides();
|
|
118
|
+
delete data.projects[projectId];
|
|
119
|
+
await writeToolOverrides(data);
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=tool-policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-policy.js","sourceRoot":"","sources":["../src/tool-policy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-platform executable discovery, including Windows Store app aliases.
|
|
3
|
+
*/
|
|
4
|
+
import fs from "node:fs";
|
|
5
|
+
export interface SearchDirectoriesOptions {
|
|
6
|
+
env?: Record<string, string | undefined>;
|
|
7
|
+
platform?: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Get the ordered list of directories to search for executables.
|
|
11
|
+
* Includes PATH entries and, on Windows, the WindowsApps directory.
|
|
12
|
+
*/
|
|
13
|
+
export declare function getExecutableSearchDirectories(options?: SearchDirectoriesOptions): string[];
|
|
14
|
+
export interface EnvOptions {
|
|
15
|
+
env?: Record<string, string | undefined>;
|
|
16
|
+
platform?: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Create an environment object with PATH (and Path/path on Windows) set
|
|
20
|
+
* to the union of all search directories.
|
|
21
|
+
*/
|
|
22
|
+
export declare function createExecutableSearchEnv(options?: EnvOptions): Record<string, string>;
|
|
23
|
+
export interface FindOptions {
|
|
24
|
+
env?: Record<string, string | undefined>;
|
|
25
|
+
platform?: string;
|
|
26
|
+
fsLike?: typeof fs;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Find an executable on the system PATH.
|
|
30
|
+
* Returns the first matching absolute path, or null.
|
|
31
|
+
*/
|
|
32
|
+
export declare function findExecutableOnPath(command: string, options?: FindOptions): string | null;
|
|
33
|
+
export interface LaunchTarget {
|
|
34
|
+
command: string;
|
|
35
|
+
env: Record<string, string>;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Resolve the launch target for an executable command.
|
|
39
|
+
* Returns { command, env } where command is the resolved path (or the raw
|
|
40
|
+
* command name on Windows as a fallback for Store app aliases).
|
|
41
|
+
*/
|
|
42
|
+
export declare function resolveExecutableLaunchTarget(command: string, options?: FindOptions): LaunchTarget | null;
|
|
43
|
+
//# sourceMappingURL=executable-search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executable-search.d.ts","sourceRoot":"","sources":["../../src/tunnel/executable-search.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AAuCzB,MAAM,WAAW,wBAAwB;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,GAAE,wBAA6B,GACrC,MAAM,EAAE,CAwBV;AAED,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,GAAE,UAAe,GACvB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAiBxB;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;CACpB;AAmBD;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,WAAgB,GACxB,MAAM,GAAG,IAAI,CAsCf;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7B;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,WAAgB,GACxB,YAAY,GAAG,IAAI,CAgBrB"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-platform executable discovery, including Windows Store app aliases.
|
|
3
|
+
*/
|
|
4
|
+
import fs from "node:fs";
|
|
5
|
+
import os from "node:os";
|
|
6
|
+
import path from "node:path";
|
|
7
|
+
function getEnvValue(env, keys) {
|
|
8
|
+
for (const key of keys) {
|
|
9
|
+
const value = env[key];
|
|
10
|
+
if (typeof value === "string" && value.trim().length > 0) {
|
|
11
|
+
return value;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return "";
|
|
15
|
+
}
|
|
16
|
+
function normalizeSearchDirectoryKey(directory, platform) {
|
|
17
|
+
const trimmed = typeof directory === "string" ? directory.trim() : "";
|
|
18
|
+
return platform === "win32" ? trimmed.toLowerCase() : trimmed;
|
|
19
|
+
}
|
|
20
|
+
function getWindowsAppsDirectory(env) {
|
|
21
|
+
const localAppData = getEnvValue(env, ["LOCALAPPDATA", "LocalAppData", "localappdata"]);
|
|
22
|
+
if (localAppData) {
|
|
23
|
+
return path.win32.join(localAppData, "Microsoft", "WindowsApps");
|
|
24
|
+
}
|
|
25
|
+
const userProfile = getEnvValue(env, ["USERPROFILE", "UserProfile", "userprofile"]);
|
|
26
|
+
if (userProfile) {
|
|
27
|
+
return path.win32.join(userProfile, "AppData", "Local", "Microsoft", "WindowsApps");
|
|
28
|
+
}
|
|
29
|
+
return path.win32.join(os.homedir(), "AppData", "Local", "Microsoft", "WindowsApps");
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Get the ordered list of directories to search for executables.
|
|
33
|
+
* Includes PATH entries and, on Windows, the WindowsApps directory.
|
|
34
|
+
*/
|
|
35
|
+
export function getExecutableSearchDirectories(options = {}) {
|
|
36
|
+
const env = options.env ?? process.env;
|
|
37
|
+
const platform = options.platform ?? process.platform;
|
|
38
|
+
const delimiter = platform === "win32" ? ";" : ":";
|
|
39
|
+
const pathValue = getEnvValue(env, ["PATH", "Path", "path"]);
|
|
40
|
+
const directories = pathValue.split(delimiter).map((entry) => entry.trim()).filter(Boolean);
|
|
41
|
+
if (platform === "win32") {
|
|
42
|
+
directories.push(getWindowsAppsDirectory(env));
|
|
43
|
+
}
|
|
44
|
+
const seen = new Set();
|
|
45
|
+
const unique = [];
|
|
46
|
+
for (const directory of directories) {
|
|
47
|
+
const key = normalizeSearchDirectoryKey(directory, platform);
|
|
48
|
+
if (!key || seen.has(key)) {
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
seen.add(key);
|
|
52
|
+
unique.push(directory);
|
|
53
|
+
}
|
|
54
|
+
return unique;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Create an environment object with PATH (and Path/path on Windows) set
|
|
58
|
+
* to the union of all search directories.
|
|
59
|
+
*/
|
|
60
|
+
export function createExecutableSearchEnv(options = {}) {
|
|
61
|
+
const env = options.env ?? process.env;
|
|
62
|
+
const platform = options.platform ?? process.platform;
|
|
63
|
+
const delimiter = platform === "win32" ? ";" : ":";
|
|
64
|
+
const pathValue = getExecutableSearchDirectories({ env, platform }).join(delimiter);
|
|
65
|
+
const nextEnv = { ...env };
|
|
66
|
+
if (platform === "win32") {
|
|
67
|
+
nextEnv.PATH = pathValue;
|
|
68
|
+
nextEnv.Path = pathValue;
|
|
69
|
+
nextEnv.path = pathValue;
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
nextEnv.PATH = pathValue;
|
|
73
|
+
}
|
|
74
|
+
return nextEnv;
|
|
75
|
+
}
|
|
76
|
+
function getExecutableExtensions(options = {}) {
|
|
77
|
+
const env = options.env ?? process.env;
|
|
78
|
+
const platform = options.platform ?? process.platform;
|
|
79
|
+
if (platform !== "win32") {
|
|
80
|
+
return [""];
|
|
81
|
+
}
|
|
82
|
+
return (env.PATHEXT || env.PathExt || env.pathext || ".EXE;.CMD;.BAT;.COM")
|
|
83
|
+
.split(";")
|
|
84
|
+
.map((ext) => ext.trim().toLowerCase())
|
|
85
|
+
.filter(Boolean)
|
|
86
|
+
.map((ext) => (ext.startsWith(".") ? ext : `.${ext}`));
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Find an executable on the system PATH.
|
|
90
|
+
* Returns the first matching absolute path, or null.
|
|
91
|
+
*/
|
|
92
|
+
export function findExecutableOnPath(command, options = {}) {
|
|
93
|
+
if (typeof command !== "string" || command.trim().length === 0) {
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
const env = options.env ?? process.env;
|
|
97
|
+
const platform = options.platform ?? process.platform;
|
|
98
|
+
const fsLike = options.fsLike ?? fs;
|
|
99
|
+
const pathApi = platform === "win32" ? path.win32 : path;
|
|
100
|
+
const directories = getExecutableSearchDirectories({ env, platform });
|
|
101
|
+
const extensions = getExecutableExtensions({ env, platform });
|
|
102
|
+
const commandName = command.trim();
|
|
103
|
+
for (const directory of directories) {
|
|
104
|
+
for (const extension of extensions) {
|
|
105
|
+
const fileName = platform === "win32" ? `${commandName}${extension}` : commandName;
|
|
106
|
+
const candidate = pathApi.join(directory, fileName);
|
|
107
|
+
try {
|
|
108
|
+
const stats = fsLike.statSync(candidate);
|
|
109
|
+
if (!stats.isFile()) {
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
if (platform !== "win32") {
|
|
113
|
+
try {
|
|
114
|
+
fsLike.accessSync(candidate, fs.constants.X_OK);
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
continue;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return candidate;
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
continue;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
return null;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Resolve the launch target for an executable command.
|
|
131
|
+
* Returns { command, env } where command is the resolved path (or the raw
|
|
132
|
+
* command name on Windows as a fallback for Store app aliases).
|
|
133
|
+
*/
|
|
134
|
+
export function resolveExecutableLaunchTarget(command, options = {}) {
|
|
135
|
+
const platform = options.platform ?? process.platform;
|
|
136
|
+
const resolvedPath = findExecutableOnPath(command, { ...options, platform });
|
|
137
|
+
const env = createExecutableSearchEnv({ env: options.env ?? process.env, platform });
|
|
138
|
+
if (resolvedPath) {
|
|
139
|
+
return { command: resolvedPath, env };
|
|
140
|
+
}
|
|
141
|
+
// Windows Store app execution aliases are launchable through CreateProcess
|
|
142
|
+
// but can reject fs.stat/fs.access with EACCES. Let the version probe decide.
|
|
143
|
+
if (platform === "win32" && typeof command === "string" && command.trim().length > 0) {
|
|
144
|
+
return { command: command.trim(), env };
|
|
145
|
+
}
|
|
146
|
+
return null;
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=executable-search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executable-search.js","sourceRoot":"","sources":["../../src/tunnel/executable-search.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Platform-specific install command metadata for missing tunnel dependencies.
|
|
3
|
+
*
|
|
4
|
+
* Simplified for pi-kot: ngrok only.
|
|
5
|
+
*/
|
|
6
|
+
export interface TunnelDependencyInstallInfo {
|
|
7
|
+
dependency: string;
|
|
8
|
+
installCommand: string;
|
|
9
|
+
installUrl: string;
|
|
10
|
+
platform: string;
|
|
11
|
+
message: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Get install information for a tunnel provider's dependency.
|
|
15
|
+
* Returns the dependency name, platform-specific install command, and
|
|
16
|
+
* a human-readable message.
|
|
17
|
+
*/
|
|
18
|
+
export declare function getTunnelDependencyInstallInfo(provider: string, platform?: string): TunnelDependencyInstallInfo;
|
|
19
|
+
//# sourceMappingURL=install-help.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install-help.d.ts","sourceRoot":"","sources":["../../src/tunnel/install-help.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAsBH,MAAM,WAAW,2BAA2B;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAmBD;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,MAAM,EAChB,QAAQ,GAAE,MAAyB,GAClC,2BAA2B,CAY7B"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Platform-specific install command metadata for missing tunnel dependencies.
|
|
3
|
+
*
|
|
4
|
+
* Simplified for pi-kot: ngrok only.
|
|
5
|
+
*/
|
|
6
|
+
import { TUNNEL_PROVIDER_NGROK } from "./types.js";
|
|
7
|
+
const PROVIDER_INSTALL_INFO = {
|
|
8
|
+
[TUNNEL_PROVIDER_NGROK]: {
|
|
9
|
+
dependency: "ngrok",
|
|
10
|
+
installUrl: "https://ngrok.com/download",
|
|
11
|
+
commands: {
|
|
12
|
+
darwin: "brew install ngrok",
|
|
13
|
+
win32: "winget install ngrok -s msstore",
|
|
14
|
+
linux: "Download ngrok from https://ngrok.com/download",
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
function normalizeInstallPlatform(platform) {
|
|
19
|
+
if (platform === "darwin" || platform === "win32" || platform === "linux") {
|
|
20
|
+
return platform;
|
|
21
|
+
}
|
|
22
|
+
return "linux";
|
|
23
|
+
}
|
|
24
|
+
function createMissingDependencyMessage(dependency, installCommand) {
|
|
25
|
+
if (installCommand.startsWith("Download ")) {
|
|
26
|
+
return `${dependency} is not installed. ${installCommand}`;
|
|
27
|
+
}
|
|
28
|
+
return `${dependency} is not installed. Install it with: ${installCommand}`;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Get install information for a tunnel provider's dependency.
|
|
32
|
+
* Returns the dependency name, platform-specific install command, and
|
|
33
|
+
* a human-readable message.
|
|
34
|
+
*/
|
|
35
|
+
export function getTunnelDependencyInstallInfo(provider, platform = process.platform) {
|
|
36
|
+
const providerInfo = PROVIDER_INSTALL_INFO[provider] ?? PROVIDER_INSTALL_INFO[TUNNEL_PROVIDER_NGROK];
|
|
37
|
+
const normalizedPlatform = normalizeInstallPlatform(platform);
|
|
38
|
+
const installCommand = providerInfo.commands[normalizedPlatform] || providerInfo.commands.linux || "";
|
|
39
|
+
return {
|
|
40
|
+
dependency: providerInfo.dependency,
|
|
41
|
+
installCommand,
|
|
42
|
+
installUrl: providerInfo.installUrl,
|
|
43
|
+
platform: normalizedPlatform,
|
|
44
|
+
message: createMissingDependencyMessage(providerInfo.dependency, installCommand),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=install-help.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install-help.js","sourceRoot":"","sources":["../../src/tunnel/install-help.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAQnD,MAAM,qBAAqB,GAAwC;IACjE,CAAC,qBAAqB,CAAC,EAAE;QACvB,UAAU,EAAE,OAAO;QACnB,UAAU,EAAE,4BAA4B;QACxC,QAAQ,EAAE;YACR,MAAM,EAAE,oBAAoB;YAC5B,KAAK,EAAE,iCAAiC;YACxC,KAAK,EAAE,gDAAgD;SACxD;KACF;CACF,CAAC;AAUF,SAAS,wBAAwB,CAAC,QAAgB;IAChD,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QAC1E,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,8BAA8B,CACrC,UAAkB,EAClB,cAAsB;IAEtB,IAAI,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC3C,OAAO,GAAG,UAAU,sBAAsB,cAAc,EAAE,CAAC;IAC7D,CAAC;IACD,OAAO,GAAG,UAAU,uCAAuC,cAAc,EAAE,CAAC;AAC9E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,8BAA8B,CAC5C,QAAgB,EAChB,QAAQ,GAAW,OAAO,CAAC,QAAQ;IAEnC,MAAM,YAAY,GAAG,qBAAqB,CAAC,QAAQ,CAAC,IAAI,qBAAqB,CAAC,qBAAqB,CAAC,CAAC;IACrG,MAAM,kBAAkB,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IAC9D,MAAM,cAAc,GAAG,YAAY,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC;IAEtG,OAAO;QACL,UAAU,EAAE,YAAY,CAAC,UAAU;QACnC,cAAc;QACd,UAAU,EAAE,YAAY,CAAC,UAAU;QACnC,QAAQ,EAAE,kBAAkB;QAC5B,OAAO,EAAE,8BAA8B,CAAC,YAAY,CAAC,UAAU,EAAE,cAAc,CAAC;KACjF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ngrok tunnel provider — spawns ngrok as a child process, parses JSON-log
|
|
3
|
+
* output for the public URL, and manages the tunnel lifecycle.
|
|
4
|
+
*/
|
|
5
|
+
import { type ChildProcess } from "node:child_process";
|
|
6
|
+
import { type TunnelProvider, type TunnelProviderCapabilities, type TunnelController, type TunnelAvailability, type TunnelDiagnosis } from "../types.js";
|
|
7
|
+
export declare const ngrokTunnelProviderCapabilities: TunnelProviderCapabilities;
|
|
8
|
+
export declare function checkNgrokAvailable(): Promise<TunnelAvailability>;
|
|
9
|
+
export declare function checkNgrokAuthtokenConfigured(ngrokPath?: string | null): Promise<{
|
|
10
|
+
configured: boolean;
|
|
11
|
+
detail: string;
|
|
12
|
+
}>;
|
|
13
|
+
export declare function checkNgrokApiReachability(options?: {
|
|
14
|
+
fetchImpl?: typeof globalThis.fetch;
|
|
15
|
+
timeoutMs?: number;
|
|
16
|
+
}): Promise<{
|
|
17
|
+
reachable: boolean;
|
|
18
|
+
status: number | null;
|
|
19
|
+
error: string | null;
|
|
20
|
+
}>;
|
|
21
|
+
export declare function extractNgrokPublicUrlFromText(text: string): string | null;
|
|
22
|
+
export declare function summarizeNgrokOutput(lines: string[]): string;
|
|
23
|
+
export interface NgrokController extends TunnelController {
|
|
24
|
+
process: ChildProcess;
|
|
25
|
+
}
|
|
26
|
+
export declare function startNgrokQuickTunnel(params: {
|
|
27
|
+
port: number;
|
|
28
|
+
}): Promise<NgrokController>;
|
|
29
|
+
export declare function diagnoseNgrok(): Promise<TunnelDiagnosis>;
|
|
30
|
+
export declare function createNgrokTunnelProvider(): TunnelProvider;
|
|
31
|
+
//# sourceMappingURL=ngrok.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ngrok.d.ts","sourceRoot":"","sources":["../../../src/tunnel/providers/ngrok.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAoB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAMzE,OAAO,EAKL,KAAK,cAAc,EACnB,KAAK,0BAA0B,EAC/B,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EAIvB,KAAK,eAAe,EACrB,MAAM,aAAa,CAAC;AAerB,eAAO,MAAM,+BAA+B,EAAE,0BAgB7C,CAAC;AAIF,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAuBvE;AAED,wBAAsB,6BAA6B,CACjD,SAAS,GAAE,MAAM,GAAG,IAAW,GAC9B,OAAO,CAAC;IAAE,UAAU,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA+BlD;AAED,wBAAsB,yBAAyB,CAC7C,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GACxE,OAAO,CAAC;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAyB9E;AAoBD,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA6BzE;AAkBD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAoE5D;AAmDD,MAAM,WAAW,eAAgB,SAAQ,gBAAgB;IACvD,OAAO,EAAE,YAAY,CAAC;CACvB;AAED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GACvB,OAAO,CAAC,eAAe,CAAC,CAoH1B;AAID,wBAAsB,aAAa,IAAI,OAAO,CAAC,eAAe,CAAC,CA2D9D;AAID,wBAAgB,yBAAyB,IAAI,cAAc,CAqC1D"}
|