@colinxu/pi-web-classic 0.0.0-stage → 0.12.3
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/.next/BUILD_ID +1 -0
- package/.next/app-path-routes-manifest.json +75 -0
- package/.next/build-manifest.json +20 -0
- package/.next/diagnostics/build-diagnostics.json +6 -0
- package/.next/diagnostics/framework.json +1 -0
- package/.next/export-marker.json +6 -0
- package/.next/images-manifest.json +68 -0
- package/.next/next-minimal-server.js.nft.json +1 -0
- package/.next/next-server.js.nft.json +1 -0
- package/.next/package.json +1 -0
- package/.next/prerender-manifest.json +157 -0
- package/.next/react-loadable-manifest.json +401 -0
- package/.next/required-server-files.js +398 -0
- package/.next/required-server-files.json +398 -0
- package/.next/routes-manifest.json +561 -0
- package/.next/server/app/_global-error/page.js +31 -0
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -0
- package/.next/server/app/_global-error.html +1 -0
- package/.next/server/app/_global-error.meta +35 -0
- package/.next/server/app/_global-error.rsc +14 -0
- package/.next/server/app/_global-error.segments/_full.segment.rsc +14 -0
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +20 -0
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -0
- package/.next/server/app/_not-found/page.js +1 -0
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -0
- package/.next/server/app/_not-found.html +1 -0
- package/.next/server/app/_not-found.meta +35 -0
- package/.next/server/app/_not-found.rsc +22 -0
- package/.next/server/app/_not-found.segments/_full.segment.rsc +22 -0
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +28 -0
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +7 -0
- package/.next/server/app/api/agent/[id]/bash-output/route.js +1 -0
- package/.next/server/app/api/agent/[id]/bash-output/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/agent/[id]/events/route.js +3 -0
- package/.next/server/app/api/agent/[id]/events/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/agent/[id]/lease/route.js +1 -0
- package/.next/server/app/api/agent/[id]/lease/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/agent/[id]/route.js +1 -0
- package/.next/server/app/api/agent/[id]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/agent/new/route.js +1 -0
- package/.next/server/app/api/agent/new/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/agent/running/route.js +1 -0
- package/.next/server/app/api/agent/running/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/app-update/route.js +1 -0
- package/.next/server/app/api/app-update/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/auth/api-key/[provider]/route.js +1 -0
- package/.next/server/app/api/auth/api-key/[provider]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/auth/login/[provider]/route.js +3 -0
- package/.next/server/app/api/auth/login/[provider]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/auth/logout/[provider]/route.js +1 -0
- package/.next/server/app/api/auth/logout/[provider]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/auth/providers/route.js +1 -0
- package/.next/server/app/api/auth/providers/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/cache-miss-notices/route.js +1 -0
- package/.next/server/app/api/cache-miss-notices/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/cwd/browse/route.js +1 -0
- package/.next/server/app/api/cwd/browse/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/cwd/validate/route.js +1 -0
- package/.next/server/app/api/cwd/validate/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/default-cwd/route.js +1 -0
- package/.next/server/app/api/default-cwd/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/file-index/route.js +1 -0
- package/.next/server/app/api/file-index/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/files/[...path]/route.js +49 -0
- package/.next/server/app/api/files/[...path]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/git/diff/route.js +6 -0
- package/.next/server/app/api/git/diff/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/git/status/route.js +6 -0
- package/.next/server/app/api/git/status/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/home/route.js +1 -0
- package/.next/server/app/api/home/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/mcp/route.js +2 -0
- package/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/mcp/sign-in/[flowId]/route.js +1 -0
- package/.next/server/app/api/mcp/sign-in/[flowId]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/mcp/sign-in/route.js +1 -0
- package/.next/server/app/api/mcp/sign-in/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/mcp/test/route.js +1 -0
- package/.next/server/app/api/mcp/test/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/models/default/route.js +1 -0
- package/.next/server/app/api/models/default/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/models/enabled/route.js +1 -0
- package/.next/server/app/api/models/enabled/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/models/refresh/route.js +1 -0
- package/.next/server/app/api/models/refresh/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/models/route.js +1 -0
- package/.next/server/app/api/models/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/models-config/catalog/route.js +1 -0
- package/.next/server/app/api/models-config/catalog/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/models-config/discover/route.js +1 -0
- package/.next/server/app/api/models-config/discover/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/models-config/route.js +1 -0
- package/.next/server/app/api/models-config/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/models-config/test/route.js +1 -0
- package/.next/server/app/api/models-config/test/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/open-in-explorer/route.js +1 -0
- package/.next/server/app/api/open-in-explorer/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/plugins/check/route.js +1 -0
- package/.next/server/app/api/plugins/check/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/plugins/route.js +1 -0
- package/.next/server/app/api/plugins/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/project-trust/route.js +1 -0
- package/.next/server/app/api/project-trust/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/provider-usage/query/route.js +1 -0
- package/.next/server/app/api/provider-usage/query/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/push/config/route.js +1 -0
- package/.next/server/app/api/push/config/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/push/subscribe/route.js +1 -0
- package/.next/server/app/api/push/subscribe/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/sessions/[id]/auto-name/route.js +11 -0
- package/.next/server/app/api/sessions/[id]/auto-name/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/sessions/[id]/context/route.js +1 -0
- package/.next/server/app/api/sessions/[id]/context/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route.js +1 -0
- package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/sessions/[id]/entries/[entryId]/tool-result-image/route.js +1 -0
- package/.next/server/app/api/sessions/[id]/entries/[entryId]/tool-result-image/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/sessions/[id]/export/route.js +54 -0
- package/.next/server/app/api/sessions/[id]/export/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/sessions/[id]/fork/route.js +1 -0
- package/.next/server/app/api/sessions/[id]/fork/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/sessions/[id]/route.js +1 -0
- package/.next/server/app/api/sessions/[id]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/sessions/[id]/state/route.js +1 -0
- package/.next/server/app/api/sessions/[id]/state/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/sessions/delete/route.js +1 -0
- package/.next/server/app/api/sessions/delete/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/sessions/route.js +1 -0
- package/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/sessions/search/route.js +1 -0
- package/.next/server/app/api/sessions/search/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/sessions/stats/route.js +1 -0
- package/.next/server/app/api/sessions/stats/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/sessions/ui-state/route.js +1 -0
- package/.next/server/app/api/sessions/ui-state/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/skills/check/route.js +1 -0
- package/.next/server/app/api/skills/check/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/skills/content/route.js +1 -0
- package/.next/server/app/api/skills/content/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/skills/install/route.js +1 -0
- package/.next/server/app/api/skills/install/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/skills/route.js +4 -0
- package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/skills/search/route.js +1 -0
- package/.next/server/app/api/skills/search/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/skills/update/route.js +1 -0
- package/.next/server/app/api/skills/update/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/subagents/[id]/route.js +1 -0
- package/.next/server/app/api/subagents/[id]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/subagents/profiles/route.js +1 -0
- package/.next/server/app/api/subagents/profiles/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/subagents/settings/route.js +1 -0
- package/.next/server/app/api/subagents/settings/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/terminal/[id]/events/route.js +4 -0
- package/.next/server/app/api/terminal/[id]/events/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/terminal/[id]/route.js +1 -0
- package/.next/server/app/api/terminal/[id]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/terminal/route.js +1 -0
- package/.next/server/app/api/terminal/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/tools/settings/route.js +1 -0
- package/.next/server/app/api/tools/settings/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/web-auth/route.js +1 -0
- package/.next/server/app/api/web-auth/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/worktrees/route.js +1 -0
- package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -0
- package/.next/server/app/favicon.ico/route.js +1 -0
- package/.next/server/app/favicon.ico.body +0 -0
- package/.next/server/app/favicon.ico.meta +1 -0
- package/.next/server/app/index.html +1 -0
- package/.next/server/app/index.meta +29 -0
- package/.next/server/app/index.rsc +23 -0
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +27 -0
- package/.next/server/app/index.segments/_full.segment.rsc +23 -0
- package/.next/server/app/index.segments/_tree.segment.rsc +8 -0
- package/.next/server/app/login/page.js +1 -0
- package/.next/server/app/login/page_client-reference-manifest.js +1 -0
- package/.next/server/app/login.html +1 -0
- package/.next/server/app/login.meta +34 -0
- package/.next/server/app/login.rsc +26 -0
- package/.next/server/app/login.segments/_full.segment.rsc +26 -0
- package/.next/server/app/login.segments/_tree.segment.rsc +7 -0
- package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +32 -0
- package/.next/server/app/manifest.webmanifest/route.js +17 -0
- package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -0
- package/.next/server/app/page.js +309 -0
- package/.next/server/app/page_client-reference-manifest.js +1 -0
- package/.next/server/app-paths-manifest.json +75 -0
- package/.next/server/chunks/11.js +1 -0
- package/.next/server/chunks/1207.js +1 -0
- package/.next/server/chunks/1286.js +1 -0
- package/.next/server/chunks/1412.js +38 -0
- package/.next/server/chunks/1605.js +1 -0
- package/.next/server/chunks/169.js +1 -0
- package/.next/server/chunks/18.js +86 -0
- package/.next/server/chunks/1813.js +1 -0
- package/.next/server/chunks/1906.js +1 -0
- package/.next/server/chunks/2022.js +1 -0
- package/.next/server/chunks/2069.js +1 -0
- package/.next/server/chunks/2156.js +1 -0
- package/.next/server/chunks/2157.js +1 -0
- package/.next/server/chunks/2243.js +1 -0
- package/.next/server/chunks/2325.js +82 -0
- package/.next/server/chunks/2430.js +193 -0
- package/.next/server/chunks/2498.js +1 -0
- package/.next/server/chunks/27.js +1 -0
- package/.next/server/chunks/2838.js +1 -0
- package/.next/server/chunks/2897.js +79 -0
- package/.next/server/chunks/2970.js +165 -0
- package/.next/server/chunks/3227.js +1 -0
- package/.next/server/chunks/3266.js +1 -0
- package/.next/server/chunks/3379.js +1 -0
- package/.next/server/chunks/3428.js +32 -0
- package/.next/server/chunks/3479.js +1 -0
- package/.next/server/chunks/3618.js +1 -0
- package/.next/server/chunks/367.js +115 -0
- package/.next/server/chunks/3698.js +93 -0
- package/.next/server/chunks/3709.js +148 -0
- package/.next/server/chunks/3757.js +1 -0
- package/.next/server/chunks/3824.js +1 -0
- package/.next/server/chunks/4107.js +62 -0
- package/.next/server/chunks/426.js +14 -0
- package/.next/server/chunks/4569.js +34 -0
- package/.next/server/chunks/4698.js +1 -0
- package/.next/server/chunks/4755.js +153 -0
- package/.next/server/chunks/4815.js +3 -0
- package/.next/server/chunks/5002.js +1 -0
- package/.next/server/chunks/5112.js +1 -0
- package/.next/server/chunks/5289.js +8 -0
- package/.next/server/chunks/5318.js +1 -0
- package/.next/server/chunks/5452.js +23 -0
- package/.next/server/chunks/5453.js +1 -0
- package/.next/server/chunks/5582.js +8 -0
- package/.next/server/chunks/5749.js +27 -0
- package/.next/server/chunks/5782.js +36 -0
- package/.next/server/chunks/6163.js +104 -0
- package/.next/server/chunks/6169.js +64 -0
- package/.next/server/chunks/6208.js +172 -0
- package/.next/server/chunks/6399.js +24 -0
- package/.next/server/chunks/6429.js +32 -0
- package/.next/server/chunks/6496.js +1 -0
- package/.next/server/chunks/6686.js +1 -0
- package/.next/server/chunks/6823.js +215 -0
- package/.next/server/chunks/6888.js +1 -0
- package/.next/server/chunks/6953.js +1 -0
- package/.next/server/chunks/7245.js +77 -0
- package/.next/server/chunks/7307.js +1 -0
- package/.next/server/chunks/7372.js +287 -0
- package/.next/server/chunks/7384.js +226 -0
- package/.next/server/chunks/7492.js +1 -0
- package/.next/server/chunks/7516.js +1 -0
- package/.next/server/chunks/7531.js +24 -0
- package/.next/server/chunks/7591.js +1 -0
- package/.next/server/chunks/7755.js +138 -0
- package/.next/server/chunks/7916.js +1 -0
- package/.next/server/chunks/8078.js +94 -0
- package/.next/server/chunks/8253.js +41 -0
- package/.next/server/chunks/8635.js +1 -0
- package/.next/server/chunks/8637.js +1 -0
- package/.next/server/chunks/8688.js +1 -0
- package/.next/server/chunks/8872.js +1 -0
- package/.next/server/chunks/9006.js +1 -0
- package/.next/server/chunks/9018.js +1 -0
- package/.next/server/chunks/9047.js +1 -0
- package/.next/server/chunks/9108.js +1 -0
- package/.next/server/chunks/9165.js +1 -0
- package/.next/server/chunks/9280.js +256 -0
- package/.next/server/chunks/9419.js +1 -0
- package/.next/server/chunks/9430.js +1 -0
- package/.next/server/chunks/9586.js +1 -0
- package/.next/server/chunks/9690.js +90 -0
- package/.next/server/chunks/974.js +1 -0
- package/.next/server/chunks/9775.js +1 -0
- package/.next/server/chunks/992.js +1 -0
- package/.next/server/chunks/9926.js +1 -0
- package/.next/server/functions-config-manifest.json +27 -0
- package/.next/server/instrumentation.js +1 -0
- package/.next/server/instrumentation.js.nft.json +1 -0
- package/.next/server/interception-route-rewrite-manifest.js +1 -0
- package/.next/server/middleware-build-manifest.js +1 -0
- package/.next/server/middleware-manifest.json +6 -0
- package/.next/server/middleware-react-loadable-manifest.js +1 -0
- package/.next/server/middleware.js +163 -0
- package/.next/server/middleware.js.nft.json +1 -0
- package/.next/server/next-font-manifest.js +1 -0
- package/.next/server/next-font-manifest.json +1 -0
- package/.next/server/pages/404.html +1 -0
- package/.next/server/pages/500.html +1 -0
- package/.next/server/pages-manifest.json +4 -0
- package/.next/server/prefetch-hints.json +53 -0
- package/.next/server/server-reference-manifest.js +1 -0
- package/.next/server/server-reference-manifest.json +1 -0
- package/.next/server/webpack-runtime.js +1 -0
- package/.next/static/2ftfKxA2Tk6WrtjeFq3pC/_buildManifest.js +1 -0
- package/.next/static/2ftfKxA2Tk6WrtjeFq3pC/_ssgManifest.js +1 -0
- package/.next/static/chunks/1213.4848a5579bece837.js +24 -0
- package/.next/static/chunks/1278-902e48c12cf60065.js +1 -0
- package/.next/static/chunks/1326.72decfb808c97abe.js +1 -0
- package/.next/static/chunks/1519.2f596e5f5af9ef57.js +62 -0
- package/.next/static/chunks/2280.e03ab3748922284c.js +1 -0
- package/.next/static/chunks/2521.2ba812532f472610.js +77 -0
- package/.next/static/chunks/2585.4d6aa847c780c666.js +1 -0
- package/.next/static/chunks/2589.e456c324416f9615.js +1 -0
- package/.next/static/chunks/2600.45ba17a0f756fc31.js +1 -0
- package/.next/static/chunks/2619.9431a3f48da8eef4.js +1 -0
- package/.next/static/chunks/26d302b2.cd19dc0940cb3e75.js +122 -0
- package/.next/static/chunks/2768.1a75ba9e2be767cf.js +1 -0
- package/.next/static/chunks/2931.c5527c92f7264e9a.js +41 -0
- package/.next/static/chunks/3016.406e568aa95ff867.js +1 -0
- package/.next/static/chunks/3052.5da5bde6a131930a.js +90 -0
- package/.next/static/chunks/3064.3a2a1e7cd4fdca5f.js +1 -0
- package/.next/static/chunks/3174.03fbed7b7d7a8256.js +1 -0
- package/.next/static/chunks/3189.b048866768087750.js +1 -0
- package/.next/static/chunks/3217.457eee26edea225c.js +24 -0
- package/.next/static/chunks/3308.935f7625e681e15a.js +74 -0
- package/.next/static/chunks/331.fc5d78e1e91daf43.js +1 -0
- package/.next/static/chunks/3510.5d4d1c79533e080c.js +1 -0
- package/.next/static/chunks/364.ce5400a9dd70b9dc.js +1 -0
- package/.next/static/chunks/370.a485dd5092c76362.js +1 -0
- package/.next/static/chunks/3789.c418b69121761983.js +1 -0
- package/.next/static/chunks/3794-6f271a1eb27dfa20.js +52 -0
- package/.next/static/chunks/3831.25ae62d10dccc27a.js +1 -0
- package/.next/static/chunks/3a7aa434.9780f397da64eb81.js +82 -0
- package/.next/static/chunks/4020.3cc19c463c49f969.js +23 -0
- package/.next/static/chunks/4035.f5bcc2e4f0beee2b.js +1 -0
- package/.next/static/chunks/405.7027b68fbb48582a.js +215 -0
- package/.next/static/chunks/4159.8f53338a07b26845.js +138 -0
- package/.next/static/chunks/4208.e3c7f2d5c26dcf2e.js +287 -0
- package/.next/static/chunks/4263.ffa8d9bd8a0faaae.js +1 -0
- package/.next/static/chunks/4561.70303588b0cd3621.js +34 -0
- package/.next/static/chunks/4592.507c41f345e21bee.js +93 -0
- package/.next/static/chunks/4799.1d3f2e30954503b8.js +1 -0
- package/.next/static/chunks/4bd1b696-8a4ab4fdf0ae305a.js +1 -0
- package/.next/static/chunks/514.b804c51b26f5e126.js +1 -0
- package/.next/static/chunks/5270.2b9a21b6ce8fd8d2.js +1 -0
- package/.next/static/chunks/52733464.74fafefbfa340fc8.js +1 -0
- package/.next/static/chunks/5354.b559c717a607dc5c.js +1 -0
- package/.next/static/chunks/5448.23a76c3983fec0f6.js +38 -0
- package/.next/static/chunks/5772-c8175d2fabf63b95.js +3 -0
- package/.next/static/chunks/587.d52737d7288c11b4.js +1 -0
- package/.next/static/chunks/5909.172aa3edf289b590.js +115 -0
- package/.next/static/chunks/5949.54e8a766895688d7.js +104 -0
- package/.next/static/chunks/60c48509.2ba44b5cbe52c6e7.js +158 -0
- package/.next/static/chunks/6361.4b1fa56fca9b6356.js +148 -0
- package/.next/static/chunks/6774.07517a60a602aadd.js +86 -0
- package/.next/static/chunks/6968.b80277c724dbc96e.js +1 -0
- package/.next/static/chunks/7236.55a9728d35f5b8a6.js +1 -0
- package/.next/static/chunks/7390.bc7f4ed9f76fe9e1.js +1 -0
- package/.next/static/chunks/7806.a903780fcfa3a30e.js +1 -0
- package/.next/static/chunks/790.45f73b5eb2e089eb.js +1 -0
- package/.next/static/chunks/8216.64a72d4d35ea7be0.js +1 -0
- package/.next/static/chunks/830.a6da04c322e3204a.js +1 -0
- package/.next/static/chunks/8378.6acf715f56997572.js +226 -0
- package/.next/static/chunks/8501.3b0a97ac3e782a0f.js +79 -0
- package/.next/static/chunks/8663.7deb45d41d190483.js +27 -0
- package/.next/static/chunks/872.96937e758ddce860.js +1 -0
- package/.next/static/chunks/8803.75bde095fe3613f5.js +1 -0
- package/.next/static/chunks/8863.582d77dad0e1cc29.js +1 -0
- package/.next/static/chunks/90542734.90283a0c0c838d51.js +1 -0
- package/.next/static/chunks/9379.979bec4531e0611a.js +64 -0
- package/.next/static/chunks/9389.906fe7aa9cd6a170.js +1 -0
- package/.next/static/chunks/9472.08db7006e4a030a4.js +94 -0
- package/.next/static/chunks/9647.29c5a9819b36fcda.js +15 -0
- package/.next/static/chunks/966.7ab226a15142fae2.js +1 -0
- package/.next/static/chunks/975.710b5962d34d4598.js +22 -0
- package/.next/static/chunks/9884.fca67f18c0fb2808.js +36 -0
- package/.next/static/chunks/9932-60e21347ba9f8664.js +7 -0
- package/.next/static/chunks/a339c874.7657a67d1b0d46c1.js +32 -0
- package/.next/static/chunks/app/_global-error/page-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/_not-found/page-1e1cf8cba5576cd4.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/bash-output/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/events/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/lease/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/agent/new/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/agent/running/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/app-update/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/auth/api-key/[provider]/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/auth/login/[provider]/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/auth/logout/[provider]/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/auth/providers/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/cache-miss-notices/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/cwd/browse/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/cwd/validate/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/default-cwd/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/file-index/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/files/[...path]/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/git/diff/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/git/status/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/home/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/mcp/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/mcp/sign-in/[flowId]/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/mcp/sign-in/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/mcp/test/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/models/default/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/models/enabled/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/models/refresh/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/models/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/models-config/catalog/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/models-config/discover/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/models-config/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/models-config/test/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/open-in-explorer/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/plugins/check/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/plugins/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/project-trust/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/provider-usage/query/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/push/config/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/push/subscribe/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/context/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/tool-result-image/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/export/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/fork/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/state/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/sessions/delete/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/sessions/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/sessions/search/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/sessions/stats/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/sessions/ui-state/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/skills/check/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/skills/content/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/skills/install/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/skills/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/skills/search/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/skills/update/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/subagents/[id]/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/subagents/profiles/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/subagents/settings/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/terminal/[id]/events/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/terminal/[id]/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/terminal/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/tools/settings/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/web-auth/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/api/worktrees/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/layout-3339966738755d72.js +1 -0
- package/.next/static/chunks/app/login/page-3a355df23c47aa56.js +1 -0
- package/.next/static/chunks/app/manifest.webmanifest/route-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/app/page-c6eefaf480702550.js +287 -0
- package/.next/static/chunks/d3ac728e-7964f816a1ca64e5.js +1 -0
- package/.next/static/chunks/e413bedd.1332b3d1558778d6.js +153 -0
- package/.next/static/chunks/e868780c-1584512c612787d7.js +18 -0
- package/.next/static/chunks/ea233666.528d9a11a2c6fe2f.js +62 -0
- package/.next/static/chunks/framework-b33a8f5d57cd8d87.js +1 -0
- package/.next/static/chunks/main-63ddef04e98b28f4.js +5 -0
- package/.next/static/chunks/main-app-a98576891fdd8f60.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/global-error-30078bc26a2476fc.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-cbe4231fb889bdce.js +1 -0
- package/.next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
- package/.next/static/chunks/webpack-b6c37de25f933bc6.js +1 -0
- package/.next/static/css/49692dbfa6f26eeb.css +1 -0
- package/.next/static/css/6d897e2692233627.css +1 -0
- package/.next/static/css/9bcd6051db4f8890.css +1 -0
- package/.next/static/css/b944d46e6fd6c54d.css +1 -0
- package/.next/static/css/c82f0c18392f486f.css +1 -0
- package/.next/static/media/15605e25b523335c-s.woff2 +0 -0
- package/.next/static/media/1a3dce5cfb5f7760-s.woff2 +0 -0
- package/.next/static/media/1cdd02902f937a18-s.woff2 +0 -0
- package/.next/static/media/4c4b3b30b6bcb2be-s.woff2 +0 -0
- package/.next/static/media/641a7b8a5800ee0e-s.woff2 +0 -0
- package/.next/static/media/7deddc85b7ffd1dc-s.p.woff2 +0 -0
- package/.next/static/media/KaTeX_AMS-Regular.1608a09b.woff +0 -0
- package/.next/static/media/KaTeX_AMS-Regular.4aafdb68.ttf +0 -0
- package/.next/static/media/KaTeX_AMS-Regular.a79f1c31.woff2 +0 -0
- package/.next/static/media/KaTeX_Caligraphic-Bold.b6770918.woff +0 -0
- package/.next/static/media/KaTeX_Caligraphic-Bold.cce5b8ec.ttf +0 -0
- package/.next/static/media/KaTeX_Caligraphic-Bold.ec17d132.woff2 +0 -0
- package/.next/static/media/KaTeX_Caligraphic-Regular.07ef19e7.ttf +0 -0
- package/.next/static/media/KaTeX_Caligraphic-Regular.55fac258.woff2 +0 -0
- package/.next/static/media/KaTeX_Caligraphic-Regular.dad44a7f.woff +0 -0
- package/.next/static/media/KaTeX_Fraktur-Bold.9f256b85.woff +0 -0
- package/.next/static/media/KaTeX_Fraktur-Bold.b18f59e1.ttf +0 -0
- package/.next/static/media/KaTeX_Fraktur-Bold.d42a5579.woff2 +0 -0
- package/.next/static/media/KaTeX_Fraktur-Regular.7c187121.woff +0 -0
- package/.next/static/media/KaTeX_Fraktur-Regular.d3c882a6.woff2 +0 -0
- package/.next/static/media/KaTeX_Fraktur-Regular.ed38e79f.ttf +0 -0
- package/.next/static/media/KaTeX_Main-Bold.b74a1a8b.ttf +0 -0
- package/.next/static/media/KaTeX_Main-Bold.c3fb5ac2.woff2 +0 -0
- package/.next/static/media/KaTeX_Main-Bold.d181c465.woff +0 -0
- package/.next/static/media/KaTeX_Main-BoldItalic.6f2bb1df.woff2 +0 -0
- package/.next/static/media/KaTeX_Main-BoldItalic.70d8b0a5.ttf +0 -0
- package/.next/static/media/KaTeX_Main-BoldItalic.e3f82f9d.woff +0 -0
- package/.next/static/media/KaTeX_Main-Italic.47373d1e.ttf +0 -0
- package/.next/static/media/KaTeX_Main-Italic.8916142b.woff2 +0 -0
- package/.next/static/media/KaTeX_Main-Italic.9024d815.woff +0 -0
- package/.next/static/media/KaTeX_Main-Regular.0462f03b.woff2 +0 -0
- package/.next/static/media/KaTeX_Main-Regular.7f51fe03.woff +0 -0
- package/.next/static/media/KaTeX_Main-Regular.b7f8fe9b.ttf +0 -0
- package/.next/static/media/KaTeX_Math-BoldItalic.572d331f.woff2 +0 -0
- package/.next/static/media/KaTeX_Math-BoldItalic.a879cf83.ttf +0 -0
- package/.next/static/media/KaTeX_Math-BoldItalic.f1035d8d.woff +0 -0
- package/.next/static/media/KaTeX_Math-Italic.5295ba48.woff +0 -0
- package/.next/static/media/KaTeX_Math-Italic.939bc644.ttf +0 -0
- package/.next/static/media/KaTeX_Math-Italic.f28c23ac.woff2 +0 -0
- package/.next/static/media/KaTeX_SansSerif-Bold.8c5b5494.woff2 +0 -0
- package/.next/static/media/KaTeX_SansSerif-Bold.94e1e8dc.ttf +0 -0
- package/.next/static/media/KaTeX_SansSerif-Bold.bf59d231.woff +0 -0
- package/.next/static/media/KaTeX_SansSerif-Italic.3b1e59b3.woff2 +0 -0
- package/.next/static/media/KaTeX_SansSerif-Italic.7c9bc82b.woff +0 -0
- package/.next/static/media/KaTeX_SansSerif-Italic.b4c20c84.ttf +0 -0
- package/.next/static/media/KaTeX_SansSerif-Regular.74048478.woff +0 -0
- package/.next/static/media/KaTeX_SansSerif-Regular.ba21ed5f.woff2 +0 -0
- package/.next/static/media/KaTeX_SansSerif-Regular.d4d7ba48.ttf +0 -0
- package/.next/static/media/KaTeX_Script-Regular.03e9641d.woff2 +0 -0
- package/.next/static/media/KaTeX_Script-Regular.07505710.woff +0 -0
- package/.next/static/media/KaTeX_Script-Regular.fe9cbbe1.ttf +0 -0
- package/.next/static/media/KaTeX_Size1-Regular.e1e279cb.woff +0 -0
- package/.next/static/media/KaTeX_Size1-Regular.eae34984.woff2 +0 -0
- package/.next/static/media/KaTeX_Size1-Regular.fabc004a.ttf +0 -0
- package/.next/static/media/KaTeX_Size2-Regular.57727022.woff +0 -0
- package/.next/static/media/KaTeX_Size2-Regular.5916a24f.woff2 +0 -0
- package/.next/static/media/KaTeX_Size2-Regular.d6b476ec.ttf +0 -0
- package/.next/static/media/KaTeX_Size3-Regular.9acaf01c.woff +0 -0
- package/.next/static/media/KaTeX_Size3-Regular.a144ef58.ttf +0 -0
- package/.next/static/media/KaTeX_Size3-Regular.b4230e7e.woff2 +0 -0
- package/.next/static/media/KaTeX_Size4-Regular.10d95fd3.woff2 +0 -0
- package/.next/static/media/KaTeX_Size4-Regular.7a996c9d.woff +0 -0
- package/.next/static/media/KaTeX_Size4-Regular.fbccdabe.ttf +0 -0
- package/.next/static/media/KaTeX_Typewriter-Regular.6258592b.woff +0 -0
- package/.next/static/media/KaTeX_Typewriter-Regular.a8709e36.woff2 +0 -0
- package/.next/static/media/KaTeX_Typewriter-Regular.d97aaf4a.ttf +0 -0
- package/.next/static/media/ec14413c594b3356-s.p.woff2 +0 -0
- package/.next/trace +83 -0
- package/.next/trace-build +1 -0
- package/.next/types/app/api/agent/[id]/bash-output/route.ts +353 -0
- package/.next/types/app/api/agent/[id]/events/route.ts +353 -0
- package/.next/types/app/api/agent/[id]/lease/route.ts +353 -0
- package/.next/types/app/api/agent/[id]/route.ts +353 -0
- package/.next/types/app/api/agent/new/route.ts +353 -0
- package/.next/types/app/api/agent/running/route.ts +353 -0
- package/.next/types/app/api/app-update/route.ts +353 -0
- package/.next/types/app/api/auth/api-key/[provider]/route.ts +353 -0
- package/.next/types/app/api/auth/login/[provider]/route.ts +353 -0
- package/.next/types/app/api/auth/logout/[provider]/route.ts +353 -0
- package/.next/types/app/api/auth/providers/route.ts +353 -0
- package/.next/types/app/api/cache-miss-notices/route.ts +353 -0
- package/.next/types/app/api/cwd/browse/route.ts +353 -0
- package/.next/types/app/api/cwd/validate/route.ts +353 -0
- package/.next/types/app/api/default-cwd/route.ts +353 -0
- package/.next/types/app/api/file-index/route.ts +353 -0
- package/.next/types/app/api/files/[...path]/route.ts +353 -0
- package/.next/types/app/api/git/diff/route.ts +353 -0
- package/.next/types/app/api/git/status/route.ts +353 -0
- package/.next/types/app/api/home/route.ts +353 -0
- package/.next/types/app/api/mcp/route.ts +353 -0
- package/.next/types/app/api/mcp/sign-in/[flowId]/route.ts +353 -0
- package/.next/types/app/api/mcp/sign-in/route.ts +353 -0
- package/.next/types/app/api/mcp/test/route.ts +353 -0
- package/.next/types/app/api/models/default/route.ts +353 -0
- package/.next/types/app/api/models/enabled/route.ts +353 -0
- package/.next/types/app/api/models/refresh/route.ts +353 -0
- package/.next/types/app/api/models/route.ts +353 -0
- package/.next/types/app/api/models-config/catalog/route.ts +353 -0
- package/.next/types/app/api/models-config/discover/route.ts +353 -0
- package/.next/types/app/api/models-config/route.ts +353 -0
- package/.next/types/app/api/models-config/test/route.ts +353 -0
- package/.next/types/app/api/open-in-explorer/route.ts +353 -0
- package/.next/types/app/api/plugins/check/route.ts +353 -0
- package/.next/types/app/api/plugins/route.ts +353 -0
- package/.next/types/app/api/project-trust/route.ts +353 -0
- package/.next/types/app/api/provider-usage/query/route.ts +353 -0
- package/.next/types/app/api/push/config/route.ts +353 -0
- package/.next/types/app/api/push/subscribe/route.ts +353 -0
- package/.next/types/app/api/sessions/[id]/auto-name/route.ts +353 -0
- package/.next/types/app/api/sessions/[id]/context/route.ts +353 -0
- package/.next/types/app/api/sessions/[id]/entries/[entryId]/thinking/route.ts +353 -0
- package/.next/types/app/api/sessions/[id]/entries/[entryId]/tool-result-image/route.ts +353 -0
- package/.next/types/app/api/sessions/[id]/export/route.ts +353 -0
- package/.next/types/app/api/sessions/[id]/fork/route.ts +353 -0
- package/.next/types/app/api/sessions/[id]/route.ts +353 -0
- package/.next/types/app/api/sessions/[id]/state/route.ts +353 -0
- package/.next/types/app/api/sessions/delete/route.ts +353 -0
- package/.next/types/app/api/sessions/route.ts +353 -0
- package/.next/types/app/api/sessions/search/route.ts +353 -0
- package/.next/types/app/api/sessions/stats/route.ts +353 -0
- package/.next/types/app/api/sessions/ui-state/route.ts +353 -0
- package/.next/types/app/api/skills/check/route.ts +353 -0
- package/.next/types/app/api/skills/content/route.ts +353 -0
- package/.next/types/app/api/skills/install/route.ts +353 -0
- package/.next/types/app/api/skills/route.ts +353 -0
- package/.next/types/app/api/skills/search/route.ts +353 -0
- package/.next/types/app/api/skills/update/route.ts +353 -0
- package/.next/types/app/api/subagents/[id]/route.ts +353 -0
- package/.next/types/app/api/subagents/profiles/route.ts +353 -0
- package/.next/types/app/api/subagents/settings/route.ts +353 -0
- package/.next/types/app/api/terminal/[id]/events/route.ts +353 -0
- package/.next/types/app/api/terminal/[id]/route.ts +353 -0
- package/.next/types/app/api/terminal/route.ts +353 -0
- package/.next/types/app/api/tools/settings/route.ts +353 -0
- package/.next/types/app/api/web-auth/route.ts +353 -0
- package/.next/types/app/api/worktrees/route.ts +353 -0
- package/.next/types/app/layout.ts +89 -0
- package/.next/types/app/login/page.ts +89 -0
- package/.next/types/app/page.ts +89 -0
- package/.next/types/cache-life.d.ts +146 -0
- package/.next/types/package.json +1 -0
- package/.next/types/root-params.d.ts +3 -0
- package/.next/types/routes.d.ts +140 -0
- package/.next/types/validator.ts +682 -0
- package/LICENSE +22 -0
- package/README.md +208 -2
- package/bin/browser-opener.js +34 -0
- package/bin/node-version.js +35 -0
- package/bin/pi-web-commands.js +118 -0
- package/bin/pi-web-node-args.js +11 -0
- package/bin/pi-web-options.js +141 -0
- package/bin/pi-web-update.js +148 -0
- package/bin/pi-web.js +157 -0
- package/bin/prepare-terminal.js +14 -0
- package/bin/process-lifecycle.js +81 -0
- package/bin/rotate-preview-secrets.js +105 -0
- package/bin/run-records.js +212 -0
- package/next.config.ts +110 -0
- package/package.json +105 -4
- package/public/icons/apple-touch-icon.png +0 -0
- package/public/icons/catppuccin/LICENSE +22 -0
- package/public/icons/catppuccin/README.md +10 -0
- package/public/icons/catppuccin/latte/_file.svg +3 -0
- package/public/icons/catppuccin/latte/_folder.svg +3 -0
- package/public/icons/catppuccin/latte/_folder_open.svg +3 -0
- package/public/icons/catppuccin/latte/bash.svg +7 -0
- package/public/icons/catppuccin/latte/bun-lock.svg +8 -0
- package/public/icons/catppuccin/latte/config.svg +3 -0
- package/public/icons/catppuccin/latte/css.svg +6 -0
- package/public/icons/catppuccin/latte/database.svg +3 -0
- package/public/icons/catppuccin/latte/docker.svg +3 -0
- package/public/icons/catppuccin/latte/env.svg +3 -0
- package/public/icons/catppuccin/latte/eslint.svg +6 -0
- package/public/icons/catppuccin/latte/git.svg +6 -0
- package/public/icons/catppuccin/latte/go.svg +3 -0
- package/public/icons/catppuccin/latte/graphql.svg +3 -0
- package/public/icons/catppuccin/latte/html.svg +6 -0
- package/public/icons/catppuccin/latte/javascript-react.svg +8 -0
- package/public/icons/catppuccin/latte/javascript.svg +6 -0
- package/public/icons/catppuccin/latte/json.svg +3 -0
- package/public/icons/catppuccin/latte/lock.svg +3 -0
- package/public/icons/catppuccin/latte/markdown.svg +3 -0
- package/public/icons/catppuccin/latte/ms-word.svg +6 -0
- package/public/icons/catppuccin/latte/next.svg +6 -0
- package/public/icons/catppuccin/latte/npm-lock.svg +7 -0
- package/public/icons/catppuccin/latte/pdf.svg +3 -0
- package/public/icons/catppuccin/latte/python.svg +8 -0
- package/public/icons/catppuccin/latte/rust.svg +6 -0
- package/public/icons/catppuccin/latte/sass.svg +3 -0
- package/public/icons/catppuccin/latte/terraform.svg +3 -0
- package/public/icons/catppuccin/latte/toml.svg +3 -0
- package/public/icons/catppuccin/latte/typescript-react.svg +8 -0
- package/public/icons/catppuccin/latte/typescript.svg +6 -0
- package/public/icons/catppuccin/latte/yaml.svg +3 -0
- package/public/icons/catppuccin/mocha/_file.svg +3 -0
- package/public/icons/catppuccin/mocha/_folder.svg +3 -0
- package/public/icons/catppuccin/mocha/_folder_open.svg +3 -0
- package/public/icons/catppuccin/mocha/bash.svg +7 -0
- package/public/icons/catppuccin/mocha/bun-lock.svg +8 -0
- package/public/icons/catppuccin/mocha/config.svg +3 -0
- package/public/icons/catppuccin/mocha/css.svg +6 -0
- package/public/icons/catppuccin/mocha/database.svg +3 -0
- package/public/icons/catppuccin/mocha/docker.svg +3 -0
- package/public/icons/catppuccin/mocha/env.svg +3 -0
- package/public/icons/catppuccin/mocha/eslint.svg +6 -0
- package/public/icons/catppuccin/mocha/git.svg +6 -0
- package/public/icons/catppuccin/mocha/go.svg +3 -0
- package/public/icons/catppuccin/mocha/graphql.svg +3 -0
- package/public/icons/catppuccin/mocha/html.svg +6 -0
- package/public/icons/catppuccin/mocha/javascript-react.svg +8 -0
- package/public/icons/catppuccin/mocha/javascript.svg +6 -0
- package/public/icons/catppuccin/mocha/json.svg +3 -0
- package/public/icons/catppuccin/mocha/lock.svg +3 -0
- package/public/icons/catppuccin/mocha/markdown.svg +3 -0
- package/public/icons/catppuccin/mocha/ms-word.svg +6 -0
- package/public/icons/catppuccin/mocha/next.svg +6 -0
- package/public/icons/catppuccin/mocha/npm-lock.svg +7 -0
- package/public/icons/catppuccin/mocha/pdf.svg +3 -0
- package/public/icons/catppuccin/mocha/python.svg +8 -0
- package/public/icons/catppuccin/mocha/rust.svg +6 -0
- package/public/icons/catppuccin/mocha/sass.svg +3 -0
- package/public/icons/catppuccin/mocha/terraform.svg +3 -0
- package/public/icons/catppuccin/mocha/toml.svg +3 -0
- package/public/icons/catppuccin/mocha/typescript-react.svg +8 -0
- package/public/icons/catppuccin/mocha/typescript.svg +6 -0
- package/public/icons/catppuccin/mocha/yaml.svg +3 -0
- package/public/icons/icon-192.png +0 -0
- package/public/icons/icon-512.png +0 -0
- package/public/offline.html +83 -0
- package/public/provider-icons.svg +54 -0
- package/public/sw.js +183 -0
- package/public/sw.test.mjs +339 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";(()=>{var a={};a.id=4037,a.ids=[4037],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},1060:(a,b,c)=>{c.d(b,{Ac:()=>p,GO:()=>k,X:()=>m,_4:()=>d,cV:()=>l,jL:()=>f,k2:()=>n,kv:()=>e,oC:()=>o});let d=262144,e=0xa00000,f=0xa00000,g={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp",svg:"image/svg+xml",bmp:"image/bmp",ico:"image/x-icon",avif:"image/avif"},h={mp3:"audio/mpeg",wav:"audio/wav",ogg:"audio/ogg",oga:"audio/ogg",opus:"audio/ogg",m4a:"audio/mp4",aac:"audio/aac",flac:"audio/flac",weba:"audio/webm"},i={mp4:"video/mp4",m4v:"video/mp4",webm:"video/webm",mov:"video/quicktime",ogv:"video/ogg"},j={pdf:"application/pdf",docx:"application/vnd.openxmlformats-officedocument.wordprocessingml.document"};function k(a){return(a.replace(/\\/g,"/").split("/").pop()??"").toLowerCase().split(".").pop()??""}function l(a){return g[k(a)]??null}function m(a){return h[k(a)]??null}function n(a){return i[k(a)]??null}function o(a){return j[k(a)]??null}function p(a){let b=k(a);return"pdf"===b||"docx"===b?b:null}},1304:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{GET:()=>C,POST:()=>z});var e=c(23211),f=c(29021),g=c.n(f),h=c(33873),i=c.n(h),j=c(80547),k=c(93057),l=c(1060),m=c(88473),n=c(72330),o=c(65630),p=c(66544),q=c(55484),r=c(66829),s=c(58864),t=c(82536),u=c(37688),v=a([j,o]);[j,o]=v.then?(await v)():v;let D=new Set(["list","read","download","meta","preview","watch"]),E={ts:"typescript",tsx:"tsx",mts:"typescript",cts:"typescript",js:"javascript",jsx:"jsx",mjs:"javascript",cjs:"javascript",py:"python",rb:"ruby",php:"php",lua:"lua",pl:"perl",r:"r",go:"go",rs:"rust",java:"java",kt:"kotlin",kts:"kotlin",swift:"swift",scala:"scala",groovy:"groovy",gradle:"groovy",dart:"dart",zig:"zig",c:"c",cpp:"cpp",h:"c",hpp:"cpp",cs:"csharp",mm:"objectivec",ex:"elixir",exs:"elixir",hs:"haskell",ml:"ocaml",clj:"clojure",nix:"nix",html:"html",htm:"html",vue:"markup",svelte:"markup",astro:"markup",css:"css",scss:"scss",less:"less",json:"json",jsonl:"json",yaml:"yaml",yml:"yaml",toml:"toml",ini:"ini",cfg:"ini",properties:"properties",xml:"xml",md:"markdown",mdx:"markdown",tex:"latex",sh:"bash",bash:"bash",zsh:"bash",fish:"bash",ps1:"powershell",psm1:"powershell",bat:"batch",cmd:"batch",sql:"sql",graphql:"graphql",gql:"graphql",proto:"protobuf",dockerfile:"dockerfile",tf:"hcl",hcl:"hcl",diff:"diff",patch:"diff",env:"bash",gitignore:"bash",txt:"text",pdf:"pdf",docx:"word"};function w(a){let b=i().basename(a).toLowerCase();return"dockerfile"===b||b.startsWith("dockerfile.")?"dockerfile":".env"===b||b.startsWith(".env.")?"bash":"makefile"===b||"gnumakefile"===b?"makefile":E[b.split(".").pop()??""]??"text"}async function x(a){let b,c=(0,s.A_)(a),d=await (0,j.mc)();if(!(0,j.A$)(c,d))return{response:e.NextResponse.json({error:"Access denied"},{status:403})};try{b=g().statSync(c)}catch{return{response:e.NextResponse.json({error:"Upload directory not found"},{status:404})}}if(!b.isDirectory())return{response:e.NextResponse.json({error:"Upload target is not a directory"},{status:400})};let f=g().realpathSync(c),h=new Set;for(let a of d)try{h.add(g().realpathSync(a))}catch{}return(0,j.A$)(f,h)?{directory:f}:{response:e.NextResponse.json({error:"Access denied"},{status:403})}}async function y(a,b){if(!(0,p.E2)(a))return e.NextResponse.json({error:"Content-Type must be application/json"},{status:415});let c=await a.json().catch(()=>null);if("string"!=typeof c?.target||!c.target)return e.NextResponse.json({error:"target must be the link target shown in the listing"},{status:400});let d=(0,k.uZ)((0,s.A_)(b),c.target,await (0,j.mc)());return d.ok?(d.alreadyAllowed||(0,j.wz)(d.target),e.NextResponse.json({path:d.target})):e.NextResponse.json({error:d.error},{status:d.status})}async function z(a,{params:b}){if(!(0,p.EN)(a))return e.NextResponse.json({error:"Untrusted API request"},{status:403});try{let d,{path:f}=await b,h=a.nextUrl.searchParams.get("type")??"upload";if("allow-link"===h)return y(a,f);let j=await x(f);if("response"in j)return j.response;let{directory:k}=j;if("upload-check"===h){var c;let b=await a.json().catch(()=>null),d=(c=b?.fileNames,Array.isArray(c)&&c.every(a=>"string"==typeof a)?c:null);if(!d)return e.NextResponse.json({error:"fileNames must be an array of strings"},{status:400});let f=(0,q.SI)(d);if(f)return e.NextResponse.json({error:f},{status:400});return e.NextResponse.json((0,q.Gu)(k,d))}if("upload"!==h)return e.NextResponse.json({error:"Invalid upload request type"},{status:400});let l=(0,q.Ey)(a.nextUrl.searchParams.get("conflict"));if(!l)return e.NextResponse.json({error:"Invalid conflict strategy"},{status:400});try{d=await (0,r.s)(a,0x6500000)}catch(a){if(a instanceof r.H)return e.NextResponse.json({error:"Uploads must total 100MB or less"},{status:413});throw a}let m=d.getAll("files").filter(a=>"string"!=typeof a);if(m.some(a=>a.size>0x1900000))return e.NextResponse.json({error:"Each upload must be 25MB or smaller"},{status:413});if(m.reduce((a,b)=>a+b.size,0)>0x6400000)return e.NextResponse.json({error:"Uploads must total 100MB or less"},{status:413});let n=m.map(a=>a.name),o=(0,q.SI)(n);if(o)return e.NextResponse.json({error:o},{status:400});let p=(0,q.Gu)(k,n);if("error"===l&&p.conflicts.length>0)return e.NextResponse.json({error:"One or more files already exist",conflicts:p.conflicts,nonReplaceable:p.nonReplaceable},{status:409});let s=new Set(p.conflicts),t=new Set(p.nonReplaceable),u=[],v=[],w=[];for(let a of m){let b,c=i().join(k,a.name);if(s.has(a.name)&&"skip"===l){v.push(a.name);continue}if(s.has(a.name)&&t.has(a.name)){w.push({name:a.name,error:"Cannot replace a directory or symbolic link"});continue}try{b=Buffer.from(await a.arrayBuffer())}catch(b){w.push({name:a.name,error:b instanceof Error?b.message:String(b)});continue}try{s.has(a.name)?(0,q.mU)(c,b):g().writeFileSync(c,b,{flag:"wx"}),u.push(a.name)}catch(b){w.push({name:a.name,error:b instanceof Error?b.message:String(b)})}}return e.NextResponse.json({uploaded:u,skipped:v,errors:w},{status:w.length>0?207:200})}catch(a){return e.NextResponse.json({error:a instanceof Error?a.message:String(a)},{status:500})}}function A(a,b){let c=g().createReadStream(a,b),d=!1;return new ReadableStream({start(a){c.on("data",b=>{if(!d)try{a.enqueue(new Uint8Array(b))}catch{d=!0,c.destroy()}}),c.once("end",()=>{if(!d){d=!0;try{a.close()}catch{}}}),c.once("error",b=>{if(!d){d=!0;try{a.error(b)}catch{}}})},cancel(){d=!0,c.destroy()}})}function B(a,b,c,d,e=!1){let f={"Content-Type":c,"Cache-Control":"no-cache","Accept-Ranges":"bytes","Content-Disposition":function(a,b=!1){let c=i().basename(a),d=c.replace(/[^\x20-\x7E]|["\\;\r\n]/g,"_")||"download";return`${b?"attachment":"inline"}; filename="${d}"; filename*=UTF-8''${encodeURIComponent(c).replace(/[!'()*]/g,a=>`%${a.charCodeAt(0).toString(16).toUpperCase()}`)}`}(a,e),"X-Content-Type-Options":"nosniff"};if("image/svg+xml"===c&&(f["Content-Security-Policy"]="default-src 'none'; img-src data:; style-src 'unsafe-inline'; base-uri 'none'; form-action 'none'; frame-ancestors 'self'",f["Referrer-Policy"]="no-referrer"),!d)return new Response(A(a),{headers:{...f,"Content-Length":String(b.size)}});let g=/^bytes=(\d*)-(\d*)$/.exec(d);if(!g)return new Response(null,{status:416,headers:{...f,"Content-Range":`bytes */${b.size}`}});let h=g[1]?Number(g[1]):0,j=g[2]?Number(g[2]):b.size-1;if(!g[1]&&g[2]){let a=Number(g[2]);h=Math.max(b.size-a,0),j=b.size-1}if(!Number.isFinite(h)||!Number.isFinite(j)||h<0||j<h||h>=b.size)return new Response(null,{status:416,headers:{...f,"Content-Range":`bytes */${b.size}`}});let k=(j=Math.min(j,b.size-1))-h+1;return new Response(A(a,{start:h,end:j}),{status:206,headers:{...f,"Content-Length":String(k),"Content-Range":`bytes ${h}-${j}/${b.size}`}})}async function C(a,{params:b}){try{var d,f,h;let p,{path:q}=await b,r=(0,s.A_)(q);if((0,t.TU)(r))return e.NextResponse.json({error:"Access denied"},{status:403});let v=(d=a.nextUrl.searchParams.get("type")??"list",D.has(d)?d:null);if(!v)return e.NextResponse.json({error:"Invalid file request type"},{status:400});let x=a.nextUrl.searchParams.get("sessionId"),y=await (0,j.mc)(),z=(0,j.A$)(r,y),A=!z&&"list"!==v&&await (0,o.Iq)(r,x);if(!z&&!A)return e.NextResponse.json({error:"Access denied"},{status:403});try{p=g().statSync(r)}catch{if("watch"!==v)return e.NextResponse.json({error:"Not found"},{status:404})}let C=p?r:i().dirname(r);if(!A&&!(0,j.B7)(C,y))return e.NextResponse.json({error:"Access denied"},{status:403});if("read"===v){if(!p?.isFile())return e.NextResponse.json({error:"Not a file"},{status:400});let b=(0,l.cV)(r);if(b){if(p.size>l.kv)return e.NextResponse.json({error:"Image too large (>10MB)"},{status:413});return B(r,p,b,a.headers.get("range"))}let c=(0,l.X)(r);if(c)return B(r,p,c,a.headers.get("range"));let d=(0,l.k2)(r);if(d)return B(r,p,d,a.headers.get("range"));let f=(0,l.oC)(r);if(f)return B(r,p,f,a.headers.get("range"));let g=a.nextUrl.searchParams.get("offset");if(null!==g&&!/^\d+$/.test(g))return e.NextResponse.json({error:"Invalid text preview offset"},{status:400});let h=Number(g??0);if(!Number.isSafeInteger(h)||h>p.size)return e.NextResponse.json({error:"Invalid text preview offset"},{status:400});let i=(0,u.P)(r,p.size,h),j=w(r);return e.NextResponse.json({...i,language:j,size:p.size})}if("download"===v){if(!p?.isFile())return e.NextResponse.json({error:"Not a file"},{status:400});let b=(0,l.cV)(r)||(0,l.X)(r)||(0,l.k2)(r)||(0,l.oC)(r)||"application/octet-stream";return B(r,p,b,a.headers.get("range"),!0)}if("meta"===v){if(!p?.isFile())return e.NextResponse.json({error:"Not a file"},{status:400});let a=(0,l.cV)(r),b=(0,l.X)(r),c=(0,l.k2)(r),d=(0,l.oC)(r);return e.NextResponse.json({size:p.size,language:w(r),mime:a||b||c||d||"text/plain",previewKind:(0,l.Ac)(r)})}if("preview"===v){if(!p?.isFile())return e.NextResponse.json({error:"Not a file"},{status:400});if("docx"!==(0,l.GO)(r))return e.NextResponse.json({error:"Preview not available for this file type"},{status:400});if(p.size>l.jL)return e.NextResponse.json({error:"DOCX too large for preview (>10MB)"},{status:413});let a=await c.e(3379).then(c.t.bind(c,53379,19)),b=(f=(await a.convertToHtml({path:r},{externalFileAccess:!1,convertImage:a.images.dataUri})).value,h=i().basename(r),`<!doctype html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
+
<style>
|
|
7
|
+
:root { color-scheme: light; }
|
|
8
|
+
html, body { margin: 0; min-height: 100%; background: #eef1f5; color: #171717; }
|
|
9
|
+
body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; padding: 28px; }
|
|
10
|
+
main {
|
|
11
|
+
box-sizing: border-box;
|
|
12
|
+
max-width: 840px;
|
|
13
|
+
min-height: calc(100vh - 56px);
|
|
14
|
+
margin: 0 auto;
|
|
15
|
+
padding: 56px 64px;
|
|
16
|
+
background: #fff;
|
|
17
|
+
box-shadow: 0 8px 28px rgba(15, 23, 42, 0.14);
|
|
18
|
+
}
|
|
19
|
+
.file-title {
|
|
20
|
+
margin: 0 0 28px;
|
|
21
|
+
padding-bottom: 10px;
|
|
22
|
+
border-bottom: 1px solid #e5e7eb;
|
|
23
|
+
color: #6b7280;
|
|
24
|
+
font: 12px ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
25
|
+
word-break: break-word;
|
|
26
|
+
}
|
|
27
|
+
h1, h2, h3, h4, h5, h6 { line-height: 1.3; margin: 1.1em 0 0.45em; color: #111827; }
|
|
28
|
+
p { margin: 0.65em 0; line-height: 1.7; }
|
|
29
|
+
table { border-collapse: collapse; max-width: 100%; margin: 1em 0; }
|
|
30
|
+
th, td { border: 1px solid #d1d5db; padding: 6px 9px; vertical-align: top; }
|
|
31
|
+
img { max-width: 100%; height: auto; }
|
|
32
|
+
pre { white-space: pre-wrap; overflow-wrap: anywhere; }
|
|
33
|
+
a { color: #2563eb; }
|
|
34
|
+
@media (max-width: 720px) {
|
|
35
|
+
body { padding: 0; background: #fff; }
|
|
36
|
+
main { min-height: 100vh; padding: 28px 22px; box-shadow: none; }
|
|
37
|
+
}
|
|
38
|
+
</style>
|
|
39
|
+
</head>
|
|
40
|
+
<body>
|
|
41
|
+
<main>
|
|
42
|
+
<div class="file-title">${h.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}</div>
|
|
43
|
+
${f}
|
|
44
|
+
</main>
|
|
45
|
+
</body>
|
|
46
|
+
</html>`);return new Response(b,{headers:{"Content-Type":"text/html; charset=utf-8","Cache-Control":"no-cache","Content-Security-Policy":"default-src 'none'; img-src data:; style-src 'unsafe-inline'; base-uri 'none'; form-action 'none'; frame-ancestors 'self'","Referrer-Policy":"no-referrer","X-Content-Type-Options":"nosniff"}})}if("watch"===v){if(p&&!p.isFile())return e.NextResponse.json({error:"Not a file"},{status:400});let a=null,b=p?.mtimeMs??0,c=p?.ctimeMs??0,d=p?.ino??0,f=p?.size??0,h=void 0!==p,j=new ReadableStream({start(e){let j=(a,b)=>{let c=`event: ${a}
|
|
47
|
+
data: ${JSON.stringify(b)}
|
|
48
|
+
|
|
49
|
+
`;try{e.enqueue(new TextEncoder().encode(c))}catch{}};try{let k=i().dirname(r);(a=g().watch(k,(a,e)=>{if(null==e||(0,s.Eb)(i().join(k,e.toString()),r))try{let a=g().statSync(r);if(h&&a.mtimeMs===b&&a.ctimeMs===c&&a.ino===d&&a.size===f)return;h=!0,b=a.mtimeMs,c=a.ctimeMs,d=a.ino,f=a.size,j("change",{mtime:a.mtime.toISOString(),size:a.size})}catch{if(!h)return;h=!1,j("change",{mtime:new Date().toISOString(),size:0})}})).on("error",()=>{try{a?.close()}catch{}a=null;try{e.close()}catch{}}),j("connected",{filePath:r})}catch{j("error",{message:"Failed to watch file"}),e.close()}},cancel(){try{a?.close()}catch{}}});return new Response(j,{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache, no-transform",Connection:"keep-alive","X-Accel-Buffering":"no"}})}if(!p?.isDirectory())return e.NextResponse.json({error:"Not a directory"},{status:400});let E="1"===a.nextUrl.searchParams.get("hidden"),F=g().readdirSync(r,{withFileTypes:!0}),G=await (0,n.Sf)(r,F.map(a=>a.name)),H=F.flatMap(a=>{let b=G(a.name);if("always"===b||b&&!E)return[];let c=(0,m.w)(a,i().join(r,a.name));if(null===c)return[];let d={name:a.name,isDir:c,size:0,modified:""};return[b?{...d,hidden:b}:d]}).sort((a,b)=>a.isDir!==b.isDir?a.isDir?-1:1:a.name.localeCompare(b.name));return e.NextResponse.json({entries:(0,k.AS)(r,H,F,y),path:r})}catch(a){return e.NextResponse.json({error:String(a)},{status:500})}}d()}catch(a){d(a)}})},1932:a=>{a.exports=require("url")},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},3399:(a,b,c)=>{c.r(b),c.d(b,{handler:()=>A,patchFetch:()=>z,routeModule:()=>v,serverHooks:()=>y,workAsyncStorage:()=>w,workUnitAsyncStorage:()=>x});var d=c(19225),e=c(84006),f=c(8317),g=c(99373),h=c(34775),i=c(24235),j=c(261),k=c(54365),l=c(90771),m=c(73461),n=c(67798),o=c(92280),p=c(62018),q=c(45696),r=c(47929),s=c(86439),t=c(10246),u=c(37527);let v=new d.AppRouteRouteModule({definition:{kind:e.RouteKind.APP_ROUTE,page:"/api/files/[...path]/route",pathname:"/api/files/[...path]",filename:"route",bundlePath:"app/api/files/[...path]/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/home/runner/work/pi-web/pi-web/app/api/files/[...path]/route.ts",nextConfigOutput:"",userland:()=>c(1304),...{}}),{workAsyncStorage:w,workUnitAsyncStorage:x,serverHooks:y}=v;function z(){return(0,f.patchFetch)({workAsyncStorage:w,workUnitAsyncStorage:x})}async function A(a,b,c){c.requestMeta&&(0,g.setRequestMeta)(a,c.requestMeta),v.isDev&&(0,g.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/files/[...path]/route";"/index"===d&&(d="/");let f=await v.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!f)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:w,deploymentId:x,params:y,nextConfig:z,parsedUrl:A,isDraftMode:B,prerenderManifest:C,routerServerContext:D,isOnDemandRevalidate:E,revalidateOnlyGenerated:F,resolvedPathname:G,clientReferenceManifest:H,serverActionsManifest:I}=f,J=(0,j.normalizeAppPath)(d),K=!!C.routes[G]&&(v.isDev||(0,t.isRouteCacheOwner)(G,v.cacheOwner,C.routes[G])),L=!!(C.dynamicRoutes[J]||K),M=async()=>((null==D?void 0:D.render404)?await D.render404(a,b,A,!1):b.end("This page could not be found"),null);if(L&&!B){let a=C.dynamicRoutes[J];if(a&&!1===a.fallback&&!K){if(z.adapterPath)return await M();throw new s.NoFallbackError}}let N=null;!L||v.isDev||B||(N="/index"===(N=G)?"/":N);let O=!0===v.isDev||!L,P=L&&!O;I&&H&&(0,i.setManifestsSingleton)({page:d,clientReferenceManifest:H,serverActionsManifest:I});let Q=a.method||"GET",R=(0,h.getTracer)(),S=R.getActiveScopeSpan(),T=!!(null==D?void 0:D.isWrappedByNextServer),U=!!(0,g.getRequestMeta)(a,"minimalMode"),V=(0,g.getRequestMeta)(a,"incrementalCache")||await v.getIncrementalCache(a,z,C,U);null==V||V.resetRequestCache(),globalThis.__incrementalCache=V;let W={params:y,previewProps:C.preview,renderOpts:{experimental:{authInterrupts:!!z.experimental.authInterrupts,useCacheTimeout:z.experimental.useCacheTimeout},cacheComponents:!!z.cacheComponents,validationLevel:z.experimental.instantInsights.validationLevel,isDraftMode:B,supportsDynamicResponse:O,incrementalCache:V,hmrRefreshHash:(0,g.getRequestMeta)(a,"hmrRefreshHash"),cacheLifeProfiles:z.cacheLife,staticPageGenerationTimeout:z.staticPageGenerationTimeout,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>v.onRequestError(a,b,d,e,D)},sharedContext:{buildId:w,deploymentId:x}},X=new k.NodeNextRequest(a),Y=new k.NodeNextResponse(b),Z=l.NextRequestAdapter.fromNodeNextRequest(X,(0,l.signalFromNodeResponse)(b)),$=async({previousCacheEntry:e})=>{try{if(!U&&E&&F&&!e)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await v.handle(Z,W);a.fetchMetrics=W.renderOpts.fetchMetrics;let f=W.renderOpts.pendingWaitUntil;f&&c.waitUntil&&(c.waitUntil(f),f=void 0);let g=W.renderOpts.collectedTags;if(!L)return await (0,o.I)(X,Y,d,f),null;{let a=await d.blob(),b=(0,p.toNodeOutgoingHttpHeaders)(d.headers);g&&(b[r.NEXT_CACHE_TAGS_HEADER]=g),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==W.renderOpts.collectedRevalidate&&!(W.renderOpts.collectedRevalidate>=r.INFINITE_CACHE)&&W.renderOpts.collectedRevalidate,e=void 0===W.renderOpts.collectedExpire||W.renderOpts.collectedExpire>=r.INFINITE_CACHE?!1!==c&&c>0?z.expireTime:void 0:W.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==e?void 0:e.isStale)&&await v.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:P,isOnDemandRevalidate:E})},!1,D),b}},_=async(d,f)=>{try{var g,i;let d=await v.handleResponse({req:a,nextConfig:z,cacheKey:N,routeKind:e.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:E,revalidateOnlyGenerated:F,responseGenerator:$,waitUntil:c.waitUntil,isMinimalMode:U});if(!L)return;if((null==d||null==(g=d.value)?void 0:g.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(i=d.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});U||b.setHeader("x-nextjs-cache",E?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),B&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let f=(0,p.fromNodeOutgoingHttpHeaders)(d.value.headers);U&&L||f.delete(r.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||b.getHeader("Cache-Control")||f.get("Cache-Control")||f.set("Cache-Control",(0,q.getCacheControlHeader)(d.cacheControl)),await (0,o.I)(X,Y,new Response(d.value.body,{headers:f,status:d.value.status||200}));return}catch(b){if(b instanceof s.NoFallbackError||await v.onRequestError(a,b,{routerKind:"App Router",routePath:J,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:P,isOnDemandRevalidate:E})},!1,D),L)throw b;await (0,o.I)(X,Y,new Response(null,{status:500}));return}finally{(()=>{if(!d)return;let a=b.statusCode;d.setAttributes({"http.status_code":a,"next.rsc":!1}),a&&a>=500&&(d.setStatus({code:h.SpanStatusCode.ERROR}),d.setAttribute("error.type",a.toString()));let c=R.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==m.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=c.get("next.route")||J,g=`${Q} ${e}`;d.setAttributes({"next.route":e,"http.route":e,"next.span_name":g}),d.updateName(g),f&&f!==d&&(f.setAttribute("http.route",e),f.updateName(g))})()}};if(T&&S)await _(S,void 0);else{let b=R.getActiveScopeSpan();await R.withPropagatedContext(a.headers,()=>R.trace(m.BaseServerSpan.handleRequest,{spanName:`${Q} ${d}`,kind:h.SpanKind.SERVER,attributes:{"http.method":Q,"http.target":a.url}},a=>_(a,b)),void 0,!T)}}},8128:a=>{a.exports=require("next/dist/server/runtime-reacts.external.js")},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},19121:a=>{a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},21820:a=>{a.exports=require("os")},27910:a=>{a.exports=require("stream")},28354:a=>{a.exports=require("util")},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{a.exports=require("path")},37688:(a,b,c)=>{c.d(b,{P:()=>g});var d=c(29021),e=c.n(d),f=c(1060);function g(a,b,c){let d,g=Math.min(f._4+1,b-c),h=Buffer.alloc(g),i=e().openSync(a,"r");try{d=e().readSync(i,h,0,g,c)}finally{e().closeSync(i)}let j=Math.min(d,f._4);if(c+j<b){var k;let a=j;for(;a>j-3&&(192&h[a])==128;)a--;((224&(k=h[a]))==192?2:(240&k)==224?3:(248&k)==240?4:1)>j-a&&(j=a)}let l=c+j;return{content:h.toString("utf8",0,j),nextOffset:l,truncated:l<b}}},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},49180:(a,b,c)=>{c.d(b,{ah:()=>g,iX:()=>l,j1:()=>m});let d=new Set(["read","bash","powershell","edit","write","grep","find","ls"]),e=new Set([...d,"Agent","get_subagent_result","steer_subagent"]),f=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function g(a){return!!a&&f.test(a)}function h(a){return a.replace(/\\/g,"/")}function i(a){return/[A-Za-z0-9._~+%@/\\:-]/.test(a)}function j(a,b){if("string"==typeof a)return void b.push(a);if(a&&"object"==typeof a){if(Array.isArray(a)){for(let c of a)j(c,b);return}for(let c of Object.values(a))j(c,b)}}function k(a,b){return a&&"object"==typeof a&&!Array.isArray(a)?a[b]:void 0}function l(a,b){for(let c of b){let b=[];if(!function(a,b){if(("custom"!==a.type||"codemode-store"!==a.customType)&&"context_edit"!==a.type){if("message"===a.type){let{message:c}=a;if("system"===c.role)return;if("toolResult"===c.role&&!e.has(c.toolName??""))return function(a,b){let c=k(a.details,"fullOutputPath");"string"==typeof c&&b.push(c);let e=k(k(a,"nestedCalls"),"calls");if(Array.isArray(e))for(let a of e){let c=k(a,"name");"string"==typeof c&&d.has(c)&&j(k(a,"arguments"),b)}}(c,b)}j(a,b)}}(c,b),b.some(b=>(function(a,b){let c=h(b),d=c.startsWith("/")?[c,`file://${c}`]:[c];for(let b of new Set([h(a),h(function(a){try{return decodeURIComponent(a)}catch{return a}}(a))]))for(let a of d){let c=b.indexOf(a);for(;-1!==c;){let d=0===c?"":b[c-1],e=c+a.length;if((0===c||!i(d))&&function(a,b){if(b>=a.length)return!0;let c=a[b];return":"===c?/\d/.test(a[b+1]??""):!i(c)}(b,e))return!0;c=b.indexOf(a,c+1)}}return!1})(b,a)))return!0}return!1}function m(a,b){return b.some(b=>"message"===b.type&&"bashExecution"===b.message.role&&b.message.fullOutputPath===a)}},51455:a=>{a.exports=require("node:fs/promises")},55484:(a,b,c)=>{c.d(b,{Ey:()=>i,Gu:()=>k,SI:()=>j,mU:()=>l});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f);let h=new Set(["error","overwrite","skip"]);function i(a){let b=a??"error";return h.has(b)?b:null}function j(a){if(0===a.length)return"No files selected";let b=new Set;for(let c of a){if(!c||"."===c||".."===c||c.includes("\0"))return`Invalid file name: ${c||"(empty)"}`;if(c.includes("/")||c.includes("\\")||g().basename(c)!==c)return`File names must not contain a path: ${c}`;if(b.has(c))return`Duplicate file name in upload: ${c}`;b.add(c)}return null}function k(a,b){let c=[],d=[];for(let f of b){let b,h=g().join(a,f);try{b=e().lstatSync(h)}catch(a){if("ENOENT"===a.code)continue;throw a}c.push(f),(!b.isFile()||b.isSymbolicLink())&&d.push(f)}return{conflicts:c,nonReplaceable:d}}function l(a,b){let c=e().lstatSync(a);if(!c.isFile()||c.isSymbolicLink())throw Error("Cannot replace a directory or symbolic link");let d=e().mkdtempSync(g().join(g().dirname(a),".pi-upload-")),f=g().join(d,"upload");try{e().writeFileSync(f,b,{flag:"wx",mode:511&c.mode});let d=e().lstatSync(a);if(!d.isFile()||d.isSymbolicLink())throw Error("Cannot replace a directory or symbolic link");e().renameSync(f,a)}finally{e().rmSync(d,{recursive:!0,force:!0})}}},55511:a=>{a.exports=require("crypto")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},65630:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Iq:()=>h,jV:()=>i});var e=c(40402),f=c(49180),g=a([e]);async function h(a,b){if(!(0,f.ah)(b))return!1;try{let c=await (0,e.os)(b);if(!c)return!1;return(0,f.iX)(a,(0,e.DK)(c))}catch{return!1}}async function i(a,b){if(!(0,f.ah)(b))return!1;try{let c=await (0,e.os)(b);if(!c)return!1;return(0,f.j1)(a,(0,e.DK)(c))}catch{return!1}}e=(g.then?(await g)():g)[0],d()}catch(a){d(a)}})},66544:(a,b,c)=>{c.d(b,{E2:()=>k,EN:()=>j});var d=c(77030);function e(a){return(a.startsWith("[")&&a.endsWith("]")?a.slice(1,-1):a).toLowerCase().replace(/\.$/,"")}function f(a){if(!a||/[\s/@\\]/.test(a))return null;try{let b=new URL(`http://${a}`);if(b.username||b.password||"/"!==b.pathname||b.search||b.hash)return null;return e(b.hostname)}catch{return null}}function g(a){if(!a||/[\s/@\\]/.test(a))return null;try{let b=new URL(`http://${a}`);if(b.username||b.password||"/"!==b.pathname||b.search||b.hash)return null;let c=e(b.hostname);return b.port?`${c}:${b.port}`:c}catch{return null}}function h(){return[process.env.PI_WEB_HOSTNAME,...process.env.PI_WEB_ALLOWED_HOSTS?.split(",")??[]].filter(a=>!!a?.trim())}function i(a){try{return new URL(a).origin}catch{return null}}function j(a,b=h()){return!!function(a,b=h()){let c=a.headers.get("host"),g=c?f(c):null;return!!g&&(!!("localhost"===g||g.endsWith(".localhost")||(0,d.isIP)(g))||b.some(a=>{let b;return((b=a?.trim())?(0,d.isIP)(b)?e(b):f(b):null)===g}))}(a,b)&&(!!function(a){if("GET"!==a.method||"navigate"!==a.headers.get("sec-fetch-mode")||"document"!==a.headers.get("sec-fetch-dest")||"?1"!==a.headers.get("sec-fetch-user"))return!1;try{return/^\/api\/sessions\/[^/]+\/export$/.test(new URL(a.url).pathname)}catch{return!1}}(a)||!(a.headers.has("origin")||a.headers.has("sec-fetch-site"))||function(a){let b,c,d,e=a.headers.get("origin");if("cross-site"===a.headers.get("sec-fetch-site"))return!1;if(!e)return!0;let f=(b=new URL(a.url),(c=a.headers.get("host"))?i(`${b.protocol}//${c}`):null);if(null!==f&&i(e)===f)return!0;if("same-origin"!==a.headers.get("sec-fetch-site")||!a.headers.get("x-forwarded-proto"))return!1;let h=a.headers.get("host");if(!h)return!1;try{d=new URL(e).host}catch{return!1}let j=g(d);return null!==j&&j===g(h)}(a))}function k(a){let b=a.headers.get("content-type")?.split(";",1)[0]?.trim().toLowerCase();return"application/json"===b||!!(b?.startsWith("application/")&&b.endsWith("+json"))}},66829:(a,b,c)=>{c.d(b,{H:()=>d,s:()=>e});class d extends Error{constructor(){super("Request body exceeds the allowed size")}}async function e(a,b){let c=function(a){let b=a.headers.get("content-length");if(!b||!/^\d+$/.test(b))return null;let c=Number(b);return Number.isSafeInteger(c)?c:null}(a);if(null!==c&&c>b)throw new d;let e=a.body?.getReader();if(!e)return a.formData();let f=[],g=0;try{for(;;){let{done:a,value:c}=await e.read();if(a)break;if(g+c.byteLength>b)throw await e.cancel().catch(()=>{}),new d;g+=c.byteLength;let h=new Uint8Array(c.byteLength);h.set(c),f.push(h)}}finally{e.releaseLock()}let h=a.headers.get("content-type");return new Response(new Blob(f),{headers:h?{"content-type":h}:void 0}).formData()}},72330:(a,b,c)=>{c.d(b,{Ij:()=>h,Sf:()=>m});var d=c(79646);let e=new Set(["node_modules",".git",".next","dist","build","__pycache__",".turbo",".cache","coverage",".pytest_cache",".mypy_cache","target","vendor",".DS_Store"]),f=[".pyc"],g=new Set([".git",".DS_Store"]);function h(a){return e.has(a)||f.some(b=>a.endsWith(b))}let i=["-c","core.fsmonitor=false"];function j(a,b,c,e=[0]){return new Promise(f=>{let g=(0,d.execFile)("git",["-C",a,...i,...b],{timeout:5e3,maxBuffer:0x1000000,env:{...process.env,LC_ALL:"C"}},(a,b)=>{let c=a&&"number"==typeof a.code?a.code:a?null:0;f(null!==c&&e.includes(c)?b:null)});g.stdin?.on("error",()=>{}),g.stdin?.end(c??"")})}async function k(a,b){let c=new Set;for(let d of function(a){let b=[],c=[],d=0;for(let e of a)c.length>0&&d+e.length+1>16e3&&(b.push(c),c=[],d=0),c.push(e),d+=e.length+1;return c.length>0&&b.push(c),b}(b)){let b=await j(a,["--literal-pathspecs","ls-files","-z","--cached","--",...d]);if(null===b)return null;for(let a of b.split("\0"))a&&c.add(a.split("/",1)[0])}return c}async function l(a,b){let c=[".",...b.map(a=>`./${a}`)].map(a=>`${a}\0`).join(""),d=await j(a,["check-ignore","--no-index","-z","--stdin"],c,[0,1]);if(null===d)return null;let e=!1,f=[];for(let a of d.split("\0"))"."===a?e=!0:a.startsWith("./")&&f.push(a.slice(2));if(0===f.length)return e?null:new Set;let g=await k(a,f);return null===g||e&&0===g.size?null:new Set(f.filter(a=>!g.has(a)))}async function m(a,b){let c=b.filter(a=>!g.has(a)),d=c.length>0?await l(a,c):null;return a=>g.has(a)?"always":d?d.has(a)?"ignored":null:h(a)?"excluded":null}},73024:a=>{a.exports=require("node:fs")},75430:a=>{a.exports=import("@earendil-works/pi-coding-agent")},76760:a=>{a.exports=require("node:path")},77030:a=>{a.exports=require("node:net")},77598:a=>{a.exports=require("node:crypto")},79428:a=>{a.exports=require("buffer")},79646:a=>{a.exports=require("child_process")},79748:a=>{a.exports=require("fs/promises")},80547:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{A$:()=>k,B7:()=>l,mc:()=>j,uK:()=>h.uK,wz:()=>e.wz});var e=c(25252),f=c(82536),g=c(40402),h=c(58864),i=a([g]);async function j(){let a=Date.now(),b=globalThis.__piAllowedRootsCache;if(b&&b.expiresAt>a)return b.roots;let c=await (0,g.dQ)(),d=new Set;for(let a of c)a.cwd&&d.add((0,e.Nw)(a.cwd)),a.projectRoot&&d.add((0,e.Nw)(a.projectRoot));for(let a of(0,e.HM)())d.add(a);return globalThis.__piAllowedRootsCache={roots:d,expiresAt:a+5e3},d}function k(a,b){return(0,f.o4)(a,b)}function l(a,b){return(0,f.xk)(a,b)}g=(i.then?(await i)():i)[0],d()}catch(a){d(a)}})},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},88473:(a,b,c)=>{c.d(b,{w:()=>f});var d=c(29021),e=c.n(d);function f(a,b){if(a.isDirectory())return!0;if(a.isFile())return!1;try{return e().statSync(b).isDirectory()}catch{return null}}},93057:(a,b,c)=>{c.d(b,{AS:()=>l,uZ:()=>m});var d=c(29021),e=c.n(d),f=c(21820),g=c.n(f),h=c(33873),i=c.n(h),j=c(82536),k=c(58864);function l(a,b,c,d){let f,h=new Set(c.filter(a=>!a.isDirectory()).map(a=>a.name));return b.map(b=>{if(!b.isDir||!h.has(b.name))return b;f??=(0,j.qy)(d);let c=function(a,b){let c;try{c=e().realpathSync(a)}catch{return null}return(0,j.o4)(c,b)?null:c}(i().join(a,b.name),f);return c?!function(a,b){let c=[...b];try{c.push(e().realpathSync(g().homedir()))}catch{}let d=new Set([a]);return c.some(a=>(0,j.o4)(a,d))}(c,f)?{...b,outsideLinkTarget:c}:{...b,outsideLinkTarget:c,outsideLinkEncloses:!0}:b})}function m(a,b,c){let d,f,g=i().resolve(a);if(!(0,j.o4)(g,c)||!(0,j.xk)(i().dirname(g),c))return{ok:!1,status:403,error:"Access denied"};try{d=e().lstatSync(g)}catch{return{ok:!1,status:404,error:"Not found"}}if(!d.isSymbolicLink())return{ok:!1,status:400,error:"Not a linked directory"};try{if(f=e().realpathSync(g),!e().statSync(f).isDirectory())return{ok:!1,status:400,error:"Not a linked directory"}}catch{return{ok:!1,status:404,error:"Link target not found"}}return(0,k.Eb)(f,b)?{ok:!0,target:f,alreadyAllowed:(0,j.o4)(f,(0,j.qy)(c))}:{ok:!1,status:409,error:"Link target changed; refresh the file list"}}},94735:a=>{a.exports=require("events")}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[2970,1813,426,5582],()=>b(b.s=3399));module.exports=c})();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/api/files/[...path]/route"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{},"edgeSSRModuleMapping":{},"clientModules":{},"entryCSSFiles":{"/home/runner/work/pi-web/pi-web/app/api/files/[...path]/route":[]},"rscModuleMapping":{},"edgeRscModuleMapping":{}};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";(()=>{var a={};a.id=2504,a.ids=[2504],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},1060:(a,b,c)=>{c.d(b,{Ac:()=>p,GO:()=>k,X:()=>m,_4:()=>d,cV:()=>l,jL:()=>f,k2:()=>n,kv:()=>e,oC:()=>o});let d=262144,e=0xa00000,f=0xa00000,g={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp",svg:"image/svg+xml",bmp:"image/bmp",ico:"image/x-icon",avif:"image/avif"},h={mp3:"audio/mpeg",wav:"audio/wav",ogg:"audio/ogg",oga:"audio/ogg",opus:"audio/ogg",m4a:"audio/mp4",aac:"audio/aac",flac:"audio/flac",weba:"audio/webm"},i={mp4:"video/mp4",m4v:"video/mp4",webm:"video/webm",mov:"video/quicktime",ogv:"video/ogg"},j={pdf:"application/pdf",docx:"application/vnd.openxmlformats-officedocument.wordprocessingml.document"};function k(a){return(a.replace(/\\/g,"/").split("/").pop()??"").toLowerCase().split(".").pop()??""}function l(a){return g[k(a)]??null}function m(a){return h[k(a)]??null}function n(a){return i[k(a)]??null}function o(a){return j[k(a)]??null}function p(a){let b=k(a);return"pdf"===b||"docx"===b?b:null}},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},8128:a=>{a.exports=require("next/dist/server/runtime-reacts.external.js")},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},19121:a=>{a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},28354:a=>{a.exports=require("util")},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33012:(a,b,c)=>{c.d(b,{S:()=>y,$:()=>t});var d=c(79646),e=c(29021),f=c.n(e),g=c(33873),h=c.n(g),i=c(28354),j=c(1060);let k=new Set(["DD","AU","UD","UA","DU","AA","UU"]);function l(a){let b=`${a.indexStatus}${a.worktreeStatus}`;return"??"===b?{status:"untracked",code:"U"}:k.has(b)||b.includes("U")?{status:"conflict",code:"C"}:b.includes("D")?{status:"deleted",code:"D"}:b.includes("R")||b.includes("C")?{status:"renamed",code:"R"}:b.includes("A")?{status:"added",code:"A"}:{status:"modified",code:"M"}}let m=(0,i.promisify)(d.execFile);async function n(a,b,c=8388608){let{stdout:d}=await m("git",["-C",a,...b],{timeout:1e4,maxBuffer:c,env:{...process.env,LC_ALL:"C"}});return d}async function o(a){try{return(await n(a,["rev-parse","--show-toplevel"])).trim()||null}catch{return null}}function p(a,b){let c=h().relative(h().resolve(a),h().resolve(b));return""===c||!c.startsWith(`..${h().sep}`)&&".."!==c&&!h().isAbsolute(c)}function q(a){return a.split(h().sep).join("/")}async function r(a,b=[]){return function(a){let b=a.split("\0"),c=[];for(let a=0;a<b.length;a++){let d=b[a];if(!d||d.length<4||" "!==d[2])continue;let e=d[0],f=d[1],g={path:d.slice(3),indexStatus:e,worktreeStatus:f};("R"===e||"C"===e||"R"===f||"C"===f)&&(g.originalPath=b[++a]||void 0),c.push(g)}return c}(await n(a,[...b,"status","--porcelain=v1","-z","--untracked-files=all"]))}async function s(a,b){let c=q(h().relative(a,b));try{let b=await n(a,["diff","--no-color","--no-ext-diff","--numstat","HEAD","--",c||"."]),d=0,e=0;for(let a of b.split(/\r?\n/)){if(!a)continue;let[b,c]=a.split(" ",2),f=Number(b),g=Number(c);Number.isInteger(f)&&(d+=f),Number.isInteger(g)&&(e+=g)}return{additions:d,deletions:e}}catch{return{additions:0,deletions:0}}}async function t(a){let b=await o(a);if(!b)return{isGitRepository:!1,repositoryRoot:null,files:[],additions:0,deletions:0};let[c,d]=await Promise.all([r(b),s(b,a)]),e=c.flatMap(c=>{let d=h().resolve(b,c.path);return p(a,d)?[{filePath:d,...l(c),indexStatus:c.indexStatus,worktreeStatus:c.worktreeStatus}]:[]}),g=e.reduce((a,b)=>a+("untracked"===b.status?function(a){try{let b=f().lstatSync(a);if(!b.isFile()||b.size>j._4)return 0;let c=f().readFileSync(a);if(u(c)||0===c.length)return 0;let d=c.toString("utf8");return d.endsWith("\n")?d.split("\n").length-1:d.split("\n").length}catch{return 0}}(b.filePath):0),0);return{isGitRepository:!0,repositoryRoot:b,files:e,additions:d.additions+g,deletions:d.deletions}}function u(a){return a.includes(0)}function v(a,b){let c=b.endsWith("\n"),d=b.split("\n");c&&d.pop();let e=d.map(a=>`+${a}`).join("\n"),f=!c&&d.length>0?"\n\":"";return`diff --git a/${a} b/${a}
|
|
2
|
+
new file mode 100644
|
|
3
|
+
--- /dev/null
|
|
4
|
+
+++ b/${a}
|
|
5
|
+
@@ -0,0 +1,${d.length} @@
|
|
6
|
+
${e}${f}`}async function w(a,b,c,d=[]){try{return await n(a,[...d,"diff","--no-color","--no-ext-diff","--unified=3","HEAD","--",...c&&c!==b?[c,b]:[b]],4*j._4)}catch{return null}}async function x(a,b){let c=h().dirname(h().resolve(b));for(;!f().existsSync(c);){let a=h().dirname(c);if(a===c)break;c=a}return await o(c)??await o(a)}async function y(a,b){let c,d,e=await x(a,b);if(!e||!p(e,b))return{supported:!1};let g=p(e,a)?[]:["-c","core.fsmonitor=false"],i=h().resolve(b),k=q(h().relative(e,i)),m=(await r(e,g)).find(a=>a.path===k);if(!m)return{supported:!1};let{status:n}=l(m);if("deleted"===n){let a=await w(e,k,m.originalPath,g);return a?.includes("\n@@ ")?{supported:!0,status:n,patch:a}:{supported:!1}}try{c=f().lstatSync(i)}catch{return{supported:!1}}if(!c.isFile()||c.size>j._4)return{supported:!1};let o=f().readFileSync(i);if(u(o))return{supported:!1};let s=o.toString("utf8");if("untracked"===n)d=v(k,s);else{let a=await w(e,k,m.originalPath,g);if(null===a){if("added"!==n)return{supported:!1};d=v(k,s)}else d=a}return d.includes("\n@@ ")?{supported:!0,status:n,patch:d}:{supported:!1}}},33873:a=>{a.exports=require("path")},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},51455:a=>{a.exports=require("node:fs/promises")},55511:a=>{a.exports=require("crypto")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},67353:(a,b,c)=>{c.r(b),c.d(b,{handler:()=>A,patchFetch:()=>z,routeModule:()=>v,serverHooks:()=>y,workAsyncStorage:()=>w,workUnitAsyncStorage:()=>x});var d=c(19225),e=c(84006),f=c(8317),g=c(99373),h=c(34775),i=c(24235),j=c(261),k=c(54365),l=c(90771),m=c(73461),n=c(67798),o=c(92280),p=c(62018),q=c(45696),r=c(47929),s=c(86439),t=c(10246),u=c(37527);let v=new d.AppRouteRouteModule({definition:{kind:e.RouteKind.APP_ROUTE,page:"/api/git/diff/route",pathname:"/api/git/diff",filename:"route",bundlePath:"app/api/git/diff/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/home/runner/work/pi-web/pi-web/app/api/git/diff/route.ts",nextConfigOutput:"",userland:()=>c(94551),...{}}),{workAsyncStorage:w,workUnitAsyncStorage:x,serverHooks:y}=v;function z(){return(0,f.patchFetch)({workAsyncStorage:w,workUnitAsyncStorage:x})}async function A(a,b,c){c.requestMeta&&(0,g.setRequestMeta)(a,c.requestMeta),v.isDev&&(0,g.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/git/diff/route";"/index"===d&&(d="/");let f=await v.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!f)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:w,deploymentId:x,params:y,nextConfig:z,parsedUrl:A,isDraftMode:B,prerenderManifest:C,routerServerContext:D,isOnDemandRevalidate:E,revalidateOnlyGenerated:F,resolvedPathname:G,clientReferenceManifest:H,serverActionsManifest:I}=f,J=(0,j.normalizeAppPath)(d),K=!!C.routes[G]&&(v.isDev||(0,t.isRouteCacheOwner)(G,v.cacheOwner,C.routes[G])),L=!!(C.dynamicRoutes[J]||K),M=async()=>((null==D?void 0:D.render404)?await D.render404(a,b,A,!1):b.end("This page could not be found"),null);if(L&&!B){let a=C.dynamicRoutes[J];if(a&&!1===a.fallback&&!K){if(z.adapterPath)return await M();throw new s.NoFallbackError}}let N=null;!L||v.isDev||B||(N="/index"===(N=G)?"/":N);let O=!0===v.isDev||!L,P=L&&!O;I&&H&&(0,i.setManifestsSingleton)({page:d,clientReferenceManifest:H,serverActionsManifest:I});let Q=a.method||"GET",R=(0,h.getTracer)(),S=R.getActiveScopeSpan(),T=!!(null==D?void 0:D.isWrappedByNextServer),U=!!(0,g.getRequestMeta)(a,"minimalMode"),V=(0,g.getRequestMeta)(a,"incrementalCache")||await v.getIncrementalCache(a,z,C,U);null==V||V.resetRequestCache(),globalThis.__incrementalCache=V;let W={params:y,previewProps:C.preview,renderOpts:{experimental:{authInterrupts:!!z.experimental.authInterrupts,useCacheTimeout:z.experimental.useCacheTimeout},cacheComponents:!!z.cacheComponents,validationLevel:z.experimental.instantInsights.validationLevel,isDraftMode:B,supportsDynamicResponse:O,incrementalCache:V,hmrRefreshHash:(0,g.getRequestMeta)(a,"hmrRefreshHash"),cacheLifeProfiles:z.cacheLife,staticPageGenerationTimeout:z.staticPageGenerationTimeout,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>v.onRequestError(a,b,d,e,D)},sharedContext:{buildId:w,deploymentId:x}},X=new k.NodeNextRequest(a),Y=new k.NodeNextResponse(b),Z=l.NextRequestAdapter.fromNodeNextRequest(X,(0,l.signalFromNodeResponse)(b)),$=async({previousCacheEntry:e})=>{try{if(!U&&E&&F&&!e)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await v.handle(Z,W);a.fetchMetrics=W.renderOpts.fetchMetrics;let f=W.renderOpts.pendingWaitUntil;f&&c.waitUntil&&(c.waitUntil(f),f=void 0);let g=W.renderOpts.collectedTags;if(!L)return await (0,o.I)(X,Y,d,f),null;{let a=await d.blob(),b=(0,p.toNodeOutgoingHttpHeaders)(d.headers);g&&(b[r.NEXT_CACHE_TAGS_HEADER]=g),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==W.renderOpts.collectedRevalidate&&!(W.renderOpts.collectedRevalidate>=r.INFINITE_CACHE)&&W.renderOpts.collectedRevalidate,e=void 0===W.renderOpts.collectedExpire||W.renderOpts.collectedExpire>=r.INFINITE_CACHE?!1!==c&&c>0?z.expireTime:void 0:W.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==e?void 0:e.isStale)&&await v.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:P,isOnDemandRevalidate:E})},!1,D),b}},_=async(d,f)=>{try{var g,i;let d=await v.handleResponse({req:a,nextConfig:z,cacheKey:N,routeKind:e.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:E,revalidateOnlyGenerated:F,responseGenerator:$,waitUntil:c.waitUntil,isMinimalMode:U});if(!L)return;if((null==d||null==(g=d.value)?void 0:g.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(i=d.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});U||b.setHeader("x-nextjs-cache",E?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),B&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let f=(0,p.fromNodeOutgoingHttpHeaders)(d.value.headers);U&&L||f.delete(r.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||b.getHeader("Cache-Control")||f.get("Cache-Control")||f.set("Cache-Control",(0,q.getCacheControlHeader)(d.cacheControl)),await (0,o.I)(X,Y,new Response(d.value.body,{headers:f,status:d.value.status||200}));return}catch(b){if(b instanceof s.NoFallbackError||await v.onRequestError(a,b,{routerKind:"App Router",routePath:J,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:P,isOnDemandRevalidate:E})},!1,D),L)throw b;await (0,o.I)(X,Y,new Response(null,{status:500}));return}finally{(()=>{if(!d)return;let a=b.statusCode;d.setAttributes({"http.status_code":a,"next.rsc":!1}),a&&a>=500&&(d.setStatus({code:h.SpanStatusCode.ERROR}),d.setAttribute("error.type",a.toString()));let c=R.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==m.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=c.get("next.route")||J,g=`${Q} ${e}`;d.setAttributes({"next.route":e,"http.route":e,"next.span_name":g}),d.updateName(g),f&&f!==d&&(f.setAttribute("http.route",e),f.updateName(g))})()}};if(T&&S)await _(S,void 0);else{let b=R.getActiveScopeSpan();await R.withPropagatedContext(a.headers,()=>R.trace(m.BaseServerSpan.handleRequest,{spanName:`${Q} ${d}`,kind:h.SpanKind.SERVER,attributes:{"http.method":Q,"http.target":a.url}},a=>_(a,b)),void 0,!T)}}},73024:a=>{a.exports=require("node:fs")},75430:a=>{a.exports=import("@earendil-works/pi-coding-agent")},76760:a=>{a.exports=require("node:path")},77598:a=>{a.exports=require("node:crypto")},79646:a=>{a.exports=require("child_process")},79748:a=>{a.exports=require("fs/promises")},80547:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{A$:()=>k,B7:()=>l,mc:()=>j,uK:()=>h.uK,wz:()=>e.wz});var e=c(25252),f=c(82536),g=c(40402),h=c(58864),i=a([g]);async function j(){let a=Date.now(),b=globalThis.__piAllowedRootsCache;if(b&&b.expiresAt>a)return b.roots;let c=await (0,g.dQ)(),d=new Set;for(let a of c)a.cwd&&d.add((0,e.Nw)(a.cwd)),a.projectRoot&&d.add((0,e.Nw)(a.projectRoot));for(let a of(0,e.HM)())d.add(a);return globalThis.__piAllowedRootsCache={roots:d,expiresAt:a+5e3},d}function k(a,b){return(0,f.o4)(a,b)}function l(a,b){return(0,f.xk)(a,b)}g=(i.then?(await i)():i)[0],d()}catch(a){d(a)}})},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},94551:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{GET:()=>m});var e=c(23211),f=c(29021),g=c(33873),h=c.n(g),i=c(80547),j=c(33012),k=c(82536),l=a([i]);async function m(a){try{let b=a.nextUrl.searchParams.get("cwd")?.trim()??"",c=a.nextUrl.searchParams.get("path")?.trim()??"";if(!b||!b.startsWith("/")&&!(0,i.uK)(b))return e.NextResponse.json({error:"cwd must be an absolute path"},{status:400});if(!c||!c.startsWith("/")&&!(0,i.uK)(c))return e.NextResponse.json({error:"path must be an absolute path"},{status:400});let d=await (0,i.mc)();if(!(0,i.A$)(b,d)||!(0,i.A$)(c,d)||!(0,i.B7)(b,d)||!function(a,b){if((0,k.TU)(a))return!1;let c=a;for(;(0,i.A$)(c,b);){try{return(0,f.lstatSync)(c),(0,i.B7)(c,b)}catch(a){if("ENOENT"!==a.code)break}let a=h().dirname(c);if(a===c)break;c=a}return!1}(c,d))return e.NextResponse.json({error:"Access denied"},{status:403});return e.NextResponse.json(await (0,j.S)(b,c))}catch(a){return e.NextResponse.json({error:a instanceof Error?a.message:String(a)},{status:500})}}i=(l.then?(await l)():l)[0],d()}catch(a){d(a)}})}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[2970,1813,426,5582],()=>b(b.s=67353));module.exports=c})();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/api/git/diff/route"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{},"edgeSSRModuleMapping":{},"clientModules":{},"entryCSSFiles":{"/home/runner/work/pi-web/pi-web/app/api/git/diff/route":[]},"rscModuleMapping":{},"edgeRscModuleMapping":{}};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";(()=>{var a={};a.id=3507,a.ids=[3507],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},1060:(a,b,c)=>{c.d(b,{Ac:()=>p,GO:()=>k,X:()=>m,_4:()=>d,cV:()=>l,jL:()=>f,k2:()=>n,kv:()=>e,oC:()=>o});let d=262144,e=0xa00000,f=0xa00000,g={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp",svg:"image/svg+xml",bmp:"image/bmp",ico:"image/x-icon",avif:"image/avif"},h={mp3:"audio/mpeg",wav:"audio/wav",ogg:"audio/ogg",oga:"audio/ogg",opus:"audio/ogg",m4a:"audio/mp4",aac:"audio/aac",flac:"audio/flac",weba:"audio/webm"},i={mp4:"video/mp4",m4v:"video/mp4",webm:"video/webm",mov:"video/quicktime",ogv:"video/ogg"},j={pdf:"application/pdf",docx:"application/vnd.openxmlformats-officedocument.wordprocessingml.document"};function k(a){return(a.replace(/\\/g,"/").split("/").pop()??"").toLowerCase().split(".").pop()??""}function l(a){return g[k(a)]??null}function m(a){return h[k(a)]??null}function n(a){return i[k(a)]??null}function o(a){return j[k(a)]??null}function p(a){let b=k(a);return"pdf"===b||"docx"===b?b:null}},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},8128:a=>{a.exports=require("next/dist/server/runtime-reacts.external.js")},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},19121:a=>{a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},28354:a=>{a.exports=require("util")},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33012:(a,b,c)=>{c.d(b,{S:()=>y,$:()=>t});var d=c(79646),e=c(29021),f=c.n(e),g=c(33873),h=c.n(g),i=c(28354),j=c(1060);let k=new Set(["DD","AU","UD","UA","DU","AA","UU"]);function l(a){let b=`${a.indexStatus}${a.worktreeStatus}`;return"??"===b?{status:"untracked",code:"U"}:k.has(b)||b.includes("U")?{status:"conflict",code:"C"}:b.includes("D")?{status:"deleted",code:"D"}:b.includes("R")||b.includes("C")?{status:"renamed",code:"R"}:b.includes("A")?{status:"added",code:"A"}:{status:"modified",code:"M"}}let m=(0,i.promisify)(d.execFile);async function n(a,b,c=8388608){let{stdout:d}=await m("git",["-C",a,...b],{timeout:1e4,maxBuffer:c,env:{...process.env,LC_ALL:"C"}});return d}async function o(a){try{return(await n(a,["rev-parse","--show-toplevel"])).trim()||null}catch{return null}}function p(a,b){let c=h().relative(h().resolve(a),h().resolve(b));return""===c||!c.startsWith(`..${h().sep}`)&&".."!==c&&!h().isAbsolute(c)}function q(a){return a.split(h().sep).join("/")}async function r(a,b=[]){return function(a){let b=a.split("\0"),c=[];for(let a=0;a<b.length;a++){let d=b[a];if(!d||d.length<4||" "!==d[2])continue;let e=d[0],f=d[1],g={path:d.slice(3),indexStatus:e,worktreeStatus:f};("R"===e||"C"===e||"R"===f||"C"===f)&&(g.originalPath=b[++a]||void 0),c.push(g)}return c}(await n(a,[...b,"status","--porcelain=v1","-z","--untracked-files=all"]))}async function s(a,b){let c=q(h().relative(a,b));try{let b=await n(a,["diff","--no-color","--no-ext-diff","--numstat","HEAD","--",c||"."]),d=0,e=0;for(let a of b.split(/\r?\n/)){if(!a)continue;let[b,c]=a.split(" ",2),f=Number(b),g=Number(c);Number.isInteger(f)&&(d+=f),Number.isInteger(g)&&(e+=g)}return{additions:d,deletions:e}}catch{return{additions:0,deletions:0}}}async function t(a){let b=await o(a);if(!b)return{isGitRepository:!1,repositoryRoot:null,files:[],additions:0,deletions:0};let[c,d]=await Promise.all([r(b),s(b,a)]),e=c.flatMap(c=>{let d=h().resolve(b,c.path);return p(a,d)?[{filePath:d,...l(c),indexStatus:c.indexStatus,worktreeStatus:c.worktreeStatus}]:[]}),g=e.reduce((a,b)=>a+("untracked"===b.status?function(a){try{let b=f().lstatSync(a);if(!b.isFile()||b.size>j._4)return 0;let c=f().readFileSync(a);if(u(c)||0===c.length)return 0;let d=c.toString("utf8");return d.endsWith("\n")?d.split("\n").length-1:d.split("\n").length}catch{return 0}}(b.filePath):0),0);return{isGitRepository:!0,repositoryRoot:b,files:e,additions:d.additions+g,deletions:d.deletions}}function u(a){return a.includes(0)}function v(a,b){let c=b.endsWith("\n"),d=b.split("\n");c&&d.pop();let e=d.map(a=>`+${a}`).join("\n"),f=!c&&d.length>0?"\n\":"";return`diff --git a/${a} b/${a}
|
|
2
|
+
new file mode 100644
|
|
3
|
+
--- /dev/null
|
|
4
|
+
+++ b/${a}
|
|
5
|
+
@@ -0,0 +1,${d.length} @@
|
|
6
|
+
${e}${f}`}async function w(a,b,c,d=[]){try{return await n(a,[...d,"diff","--no-color","--no-ext-diff","--unified=3","HEAD","--",...c&&c!==b?[c,b]:[b]],4*j._4)}catch{return null}}async function x(a,b){let c=h().dirname(h().resolve(b));for(;!f().existsSync(c);){let a=h().dirname(c);if(a===c)break;c=a}return await o(c)??await o(a)}async function y(a,b){let c,d,e=await x(a,b);if(!e||!p(e,b))return{supported:!1};let g=p(e,a)?[]:["-c","core.fsmonitor=false"],i=h().resolve(b),k=q(h().relative(e,i)),m=(await r(e,g)).find(a=>a.path===k);if(!m)return{supported:!1};let{status:n}=l(m);if("deleted"===n){let a=await w(e,k,m.originalPath,g);return a?.includes("\n@@ ")?{supported:!0,status:n,patch:a}:{supported:!1}}try{c=f().lstatSync(i)}catch{return{supported:!1}}if(!c.isFile()||c.size>j._4)return{supported:!1};let o=f().readFileSync(i);if(u(o))return{supported:!1};let s=o.toString("utf8");if("untracked"===n)d=v(k,s);else{let a=await w(e,k,m.originalPath,g);if(null===a){if("added"!==n)return{supported:!1};d=v(k,s)}else d=a}return d.includes("\n@@ ")?{supported:!0,status:n,patch:d}:{supported:!1}}},33873:a=>{a.exports=require("path")},34039:(a,b,c)=>{c.r(b),c.d(b,{handler:()=>A,patchFetch:()=>z,routeModule:()=>v,serverHooks:()=>y,workAsyncStorage:()=>w,workUnitAsyncStorage:()=>x});var d=c(19225),e=c(84006),f=c(8317),g=c(99373),h=c(34775),i=c(24235),j=c(261),k=c(54365),l=c(90771),m=c(73461),n=c(67798),o=c(92280),p=c(62018),q=c(45696),r=c(47929),s=c(86439),t=c(10246),u=c(37527);let v=new d.AppRouteRouteModule({definition:{kind:e.RouteKind.APP_ROUTE,page:"/api/git/status/route",pathname:"/api/git/status",filename:"route",bundlePath:"app/api/git/status/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/home/runner/work/pi-web/pi-web/app/api/git/status/route.ts",nextConfigOutput:"",userland:()=>c(83518),...{}}),{workAsyncStorage:w,workUnitAsyncStorage:x,serverHooks:y}=v;function z(){return(0,f.patchFetch)({workAsyncStorage:w,workUnitAsyncStorage:x})}async function A(a,b,c){c.requestMeta&&(0,g.setRequestMeta)(a,c.requestMeta),v.isDev&&(0,g.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/git/status/route";"/index"===d&&(d="/");let f=await v.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!f)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:w,deploymentId:x,params:y,nextConfig:z,parsedUrl:A,isDraftMode:B,prerenderManifest:C,routerServerContext:D,isOnDemandRevalidate:E,revalidateOnlyGenerated:F,resolvedPathname:G,clientReferenceManifest:H,serverActionsManifest:I}=f,J=(0,j.normalizeAppPath)(d),K=!!C.routes[G]&&(v.isDev||(0,t.isRouteCacheOwner)(G,v.cacheOwner,C.routes[G])),L=!!(C.dynamicRoutes[J]||K),M=async()=>((null==D?void 0:D.render404)?await D.render404(a,b,A,!1):b.end("This page could not be found"),null);if(L&&!B){let a=C.dynamicRoutes[J];if(a&&!1===a.fallback&&!K){if(z.adapterPath)return await M();throw new s.NoFallbackError}}let N=null;!L||v.isDev||B||(N="/index"===(N=G)?"/":N);let O=!0===v.isDev||!L,P=L&&!O;I&&H&&(0,i.setManifestsSingleton)({page:d,clientReferenceManifest:H,serverActionsManifest:I});let Q=a.method||"GET",R=(0,h.getTracer)(),S=R.getActiveScopeSpan(),T=!!(null==D?void 0:D.isWrappedByNextServer),U=!!(0,g.getRequestMeta)(a,"minimalMode"),V=(0,g.getRequestMeta)(a,"incrementalCache")||await v.getIncrementalCache(a,z,C,U);null==V||V.resetRequestCache(),globalThis.__incrementalCache=V;let W={params:y,previewProps:C.preview,renderOpts:{experimental:{authInterrupts:!!z.experimental.authInterrupts,useCacheTimeout:z.experimental.useCacheTimeout},cacheComponents:!!z.cacheComponents,validationLevel:z.experimental.instantInsights.validationLevel,isDraftMode:B,supportsDynamicResponse:O,incrementalCache:V,hmrRefreshHash:(0,g.getRequestMeta)(a,"hmrRefreshHash"),cacheLifeProfiles:z.cacheLife,staticPageGenerationTimeout:z.staticPageGenerationTimeout,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>v.onRequestError(a,b,d,e,D)},sharedContext:{buildId:w,deploymentId:x}},X=new k.NodeNextRequest(a),Y=new k.NodeNextResponse(b),Z=l.NextRequestAdapter.fromNodeNextRequest(X,(0,l.signalFromNodeResponse)(b)),$=async({previousCacheEntry:e})=>{try{if(!U&&E&&F&&!e)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await v.handle(Z,W);a.fetchMetrics=W.renderOpts.fetchMetrics;let f=W.renderOpts.pendingWaitUntil;f&&c.waitUntil&&(c.waitUntil(f),f=void 0);let g=W.renderOpts.collectedTags;if(!L)return await (0,o.I)(X,Y,d,f),null;{let a=await d.blob(),b=(0,p.toNodeOutgoingHttpHeaders)(d.headers);g&&(b[r.NEXT_CACHE_TAGS_HEADER]=g),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==W.renderOpts.collectedRevalidate&&!(W.renderOpts.collectedRevalidate>=r.INFINITE_CACHE)&&W.renderOpts.collectedRevalidate,e=void 0===W.renderOpts.collectedExpire||W.renderOpts.collectedExpire>=r.INFINITE_CACHE?!1!==c&&c>0?z.expireTime:void 0:W.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==e?void 0:e.isStale)&&await v.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:P,isOnDemandRevalidate:E})},!1,D),b}},_=async(d,f)=>{try{var g,i;let d=await v.handleResponse({req:a,nextConfig:z,cacheKey:N,routeKind:e.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:E,revalidateOnlyGenerated:F,responseGenerator:$,waitUntil:c.waitUntil,isMinimalMode:U});if(!L)return;if((null==d||null==(g=d.value)?void 0:g.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(i=d.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});U||b.setHeader("x-nextjs-cache",E?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),B&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let f=(0,p.fromNodeOutgoingHttpHeaders)(d.value.headers);U&&L||f.delete(r.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||b.getHeader("Cache-Control")||f.get("Cache-Control")||f.set("Cache-Control",(0,q.getCacheControlHeader)(d.cacheControl)),await (0,o.I)(X,Y,new Response(d.value.body,{headers:f,status:d.value.status||200}));return}catch(b){if(b instanceof s.NoFallbackError||await v.onRequestError(a,b,{routerKind:"App Router",routePath:J,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:P,isOnDemandRevalidate:E})},!1,D),L)throw b;await (0,o.I)(X,Y,new Response(null,{status:500}));return}finally{(()=>{if(!d)return;let a=b.statusCode;d.setAttributes({"http.status_code":a,"next.rsc":!1}),a&&a>=500&&(d.setStatus({code:h.SpanStatusCode.ERROR}),d.setAttribute("error.type",a.toString()));let c=R.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==m.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=c.get("next.route")||J,g=`${Q} ${e}`;d.setAttributes({"next.route":e,"http.route":e,"next.span_name":g}),d.updateName(g),f&&f!==d&&(f.setAttribute("http.route",e),f.updateName(g))})()}};if(T&&S)await _(S,void 0);else{let b=R.getActiveScopeSpan();await R.withPropagatedContext(a.headers,()=>R.trace(m.BaseServerSpan.handleRequest,{spanName:`${Q} ${d}`,kind:h.SpanKind.SERVER,attributes:{"http.method":Q,"http.target":a.url}},a=>_(a,b)),void 0,!T)}}},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},51455:a=>{a.exports=require("node:fs/promises")},55511:a=>{a.exports=require("crypto")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},73024:a=>{a.exports=require("node:fs")},75430:a=>{a.exports=import("@earendil-works/pi-coding-agent")},76760:a=>{a.exports=require("node:path")},77598:a=>{a.exports=require("node:crypto")},79646:a=>{a.exports=require("child_process")},79748:a=>{a.exports=require("fs/promises")},80547:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{A$:()=>k,B7:()=>l,mc:()=>j,uK:()=>h.uK,wz:()=>e.wz});var e=c(25252),f=c(82536),g=c(40402),h=c(58864),i=a([g]);async function j(){let a=Date.now(),b=globalThis.__piAllowedRootsCache;if(b&&b.expiresAt>a)return b.roots;let c=await (0,g.dQ)(),d=new Set;for(let a of c)a.cwd&&d.add((0,e.Nw)(a.cwd)),a.projectRoot&&d.add((0,e.Nw)(a.projectRoot));for(let a of(0,e.HM)())d.add(a);return globalThis.__piAllowedRootsCache={roots:d,expiresAt:a+5e3},d}function k(a,b){return(0,f.o4)(a,b)}function l(a,b){return(0,f.xk)(a,b)}g=(i.then?(await i)():i)[0],d()}catch(a){d(a)}})},83518:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{GET:()=>k});var e=c(29021),f=c.n(e),g=c(23211),h=c(80547),i=c(33012),j=a([h]);async function k(a){try{let b,c=a.nextUrl.searchParams.get("cwd")?.trim()??"";if(!c||!c.startsWith("/")&&!(0,h.uK)(c))return g.NextResponse.json({error:"cwd must be an absolute path"},{status:400});let d=await (0,h.mc)();if(!(0,h.A$)(c,d))return g.NextResponse.json({error:"Access denied"},{status:403});try{b=f().statSync(c)}catch{return g.NextResponse.json({error:"Directory not found"},{status:404})}if(!b.isDirectory())return g.NextResponse.json({error:"Not a directory"},{status:400});if(!(0,h.B7)(c,d))return g.NextResponse.json({error:"Access denied"},{status:403});return g.NextResponse.json(await (0,i.$)(c))}catch(a){return g.NextResponse.json({error:a instanceof Error?a.message:String(a)},{status:500})}}h=(j.then?(await j)():j)[0],d()}catch(a){d(a)}})},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[2970,1813,426,5582],()=>b(b.s=34039));module.exports=c})();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/api/git/status/route"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{},"edgeSSRModuleMapping":{},"clientModules":{},"entryCSSFiles":{"/home/runner/work/pi-web/pi-web/app/api/git/status/route":[]},"rscModuleMapping":{},"edgeRscModuleMapping":{}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(()=>{var a={};a.id=3851,a.ids=[3851],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},6106:(a,b,c)=>{"use strict";c.r(b),c.d(b,{GET:()=>f});var d=c(23211),e=c(21820);async function f(){return d.NextResponse.json({home:(0,e.homedir)()})}},8128:a=>{"use strict";a.exports=require("next/dist/server/runtime-reacts.external.js")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},21820:a=>{"use strict";a.exports=require("os")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{"use strict";a.exports=require("path")},44870:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},55511:a=>{"use strict";a.exports=require("crypto")},57319:(a,b,c)=>{"use strict";c.r(b),c.d(b,{handler:()=>A,patchFetch:()=>z,routeModule:()=>v,serverHooks:()=>y,workAsyncStorage:()=>w,workUnitAsyncStorage:()=>x});var d=c(19225),e=c(84006),f=c(8317),g=c(99373),h=c(34775),i=c(24235),j=c(261),k=c(54365),l=c(90771),m=c(73461),n=c(67798),o=c(92280),p=c(62018),q=c(45696),r=c(47929),s=c(86439),t=c(10246),u=c(37527);let v=new d.AppRouteRouteModule({definition:{kind:e.RouteKind.APP_ROUTE,page:"/api/home/route",pathname:"/api/home",filename:"route",bundlePath:"app/api/home/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/home/runner/work/pi-web/pi-web/app/api/home/route.ts",nextConfigOutput:"",userland:()=>c(6106),...{}}),{workAsyncStorage:w,workUnitAsyncStorage:x,serverHooks:y}=v;function z(){return(0,f.patchFetch)({workAsyncStorage:w,workUnitAsyncStorage:x})}async function A(a,b,c){c.requestMeta&&(0,g.setRequestMeta)(a,c.requestMeta),v.isDev&&(0,g.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/home/route";"/index"===d&&(d="/");let f=await v.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!f)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:w,deploymentId:x,params:y,nextConfig:z,parsedUrl:A,isDraftMode:B,prerenderManifest:C,routerServerContext:D,isOnDemandRevalidate:E,revalidateOnlyGenerated:F,resolvedPathname:G,clientReferenceManifest:H,serverActionsManifest:I}=f,J=(0,j.normalizeAppPath)(d),K=!!C.routes[G]&&(v.isDev||(0,t.isRouteCacheOwner)(G,v.cacheOwner,C.routes[G])),L=!!(C.dynamicRoutes[J]||K),M=async()=>((null==D?void 0:D.render404)?await D.render404(a,b,A,!1):b.end("This page could not be found"),null);if(L&&!B){let a=C.dynamicRoutes[J];if(a&&!1===a.fallback&&!K){if(z.adapterPath)return await M();throw new s.NoFallbackError}}let N=null;!L||v.isDev||B||(N="/index"===(N=G)?"/":N);let O=!0===v.isDev||!L,P=L&&!O;I&&H&&(0,i.setManifestsSingleton)({page:d,clientReferenceManifest:H,serverActionsManifest:I});let Q=a.method||"GET",R=(0,h.getTracer)(),S=R.getActiveScopeSpan(),T=!!(null==D?void 0:D.isWrappedByNextServer),U=!!(0,g.getRequestMeta)(a,"minimalMode"),V=(0,g.getRequestMeta)(a,"incrementalCache")||await v.getIncrementalCache(a,z,C,U);null==V||V.resetRequestCache(),globalThis.__incrementalCache=V;let W={params:y,previewProps:C.preview,renderOpts:{experimental:{authInterrupts:!!z.experimental.authInterrupts,useCacheTimeout:z.experimental.useCacheTimeout},cacheComponents:!!z.cacheComponents,validationLevel:z.experimental.instantInsights.validationLevel,isDraftMode:B,supportsDynamicResponse:O,incrementalCache:V,hmrRefreshHash:(0,g.getRequestMeta)(a,"hmrRefreshHash"),cacheLifeProfiles:z.cacheLife,staticPageGenerationTimeout:z.staticPageGenerationTimeout,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>v.onRequestError(a,b,d,e,D)},sharedContext:{buildId:w,deploymentId:x}},X=new k.NodeNextRequest(a),Y=new k.NodeNextResponse(b),Z=l.NextRequestAdapter.fromNodeNextRequest(X,(0,l.signalFromNodeResponse)(b)),$=async({previousCacheEntry:e})=>{try{if(!U&&E&&F&&!e)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await v.handle(Z,W);a.fetchMetrics=W.renderOpts.fetchMetrics;let f=W.renderOpts.pendingWaitUntil;f&&c.waitUntil&&(c.waitUntil(f),f=void 0);let g=W.renderOpts.collectedTags;if(!L)return await (0,o.I)(X,Y,d,f),null;{let a=await d.blob(),b=(0,p.toNodeOutgoingHttpHeaders)(d.headers);g&&(b[r.NEXT_CACHE_TAGS_HEADER]=g),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==W.renderOpts.collectedRevalidate&&!(W.renderOpts.collectedRevalidate>=r.INFINITE_CACHE)&&W.renderOpts.collectedRevalidate,e=void 0===W.renderOpts.collectedExpire||W.renderOpts.collectedExpire>=r.INFINITE_CACHE?!1!==c&&c>0?z.expireTime:void 0:W.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==e?void 0:e.isStale)&&await v.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:P,isOnDemandRevalidate:E})},!1,D),b}},_=async(d,f)=>{try{var g,i;let d=await v.handleResponse({req:a,nextConfig:z,cacheKey:N,routeKind:e.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:E,revalidateOnlyGenerated:F,responseGenerator:$,waitUntil:c.waitUntil,isMinimalMode:U});if(!L)return;if((null==d||null==(g=d.value)?void 0:g.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(i=d.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});U||b.setHeader("x-nextjs-cache",E?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),B&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let f=(0,p.fromNodeOutgoingHttpHeaders)(d.value.headers);U&&L||f.delete(r.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||b.getHeader("Cache-Control")||f.get("Cache-Control")||f.set("Cache-Control",(0,q.getCacheControlHeader)(d.cacheControl)),await (0,o.I)(X,Y,new Response(d.value.body,{headers:f,status:d.value.status||200}));return}catch(b){if(b instanceof s.NoFallbackError||await v.onRequestError(a,b,{routerKind:"App Router",routePath:J,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:P,isOnDemandRevalidate:E})},!1,D),L)throw b;await (0,o.I)(X,Y,new Response(null,{status:500}));return}finally{(()=>{if(!d)return;let a=b.statusCode;d.setAttributes({"http.status_code":a,"next.rsc":!1}),a&&a>=500&&(d.setStatus({code:h.SpanStatusCode.ERROR}),d.setAttribute("error.type",a.toString()));let c=R.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==m.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=c.get("next.route")||J,g=`${Q} ${e}`;d.setAttributes({"next.route":e,"http.route":e,"next.span_name":g}),d.updateName(g),f&&f!==d&&(f.setAttribute("http.route",e),f.updateName(g))})()}};if(T&&S)await _(S,void 0);else{let b=R.getActiveScopeSpan();await R.withPropagatedContext(a.headers,()=>R.trace(m.BaseServerSpan.handleRequest,{spanName:`${Q} ${d}`,kind:h.SpanKind.SERVER,attributes:{"http.method":Q,"http.target":a.url}},a=>_(a,b)),void 0,!T)}}},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},78335:()=>{},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},96487:()=>{}};var b=require("../../../webpack-runtime.js");b.C(a);var c=b.X(0,[2970,1813],()=>b(b.s=57319));module.exports=c})();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/api/home/route"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{},"edgeSSRModuleMapping":{},"clientModules":{},"entryCSSFiles":{"/home/runner/work/pi-web/pi-web/app/api/home/route":[]},"rscModuleMapping":{},"edgeRscModuleMapping":{}};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(()=>{var a={};a.id=90,a.ids=[90],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},8128:a=>{a.exports=require("next/dist/server/runtime-reacts.external.js")},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},12412:a=>{a.exports=require("assert")},17802:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Pg:()=>v,QJ:()=>u,Ss:()=>x,XA:()=>y,_H:()=>m,jz:()=>w});var e=c(77598),f=c(73024),g=c(76760),h=c(80974),i=c.n(h),j=c(63108),k=c(57736),l=a([k]);k=(l.then?(await l)():l)[0];let z=Symbol.for("pi-web:mcp-config-write-error");class A extends Error{constructor(a,b,c,d){super(c),this[z]=!0,this.name="McpConfigWriteError",this.reason=a,this.path=b,void 0!==d&&(this.serverName=d)}}function m(a){return"object"==typeof a&&null!==a&&!0===a[z]}function n(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function o(a){return a instanceof Error?a.message:String(a)}function p(a,b){return void 0!==a&&Object.hasOwn(a,b)?a[b]:void 0}function q(a,b,c){Object.defineProperty(a,b,{value:c,enumerable:!0,writable:!0,configurable:!0})}function r(a,b){let c=(0,k.vN)(a),d=!1;return void 0!==b.enabled&&(b.enabled&&!c?Object.hasOwn(a,"enabled")&&(delete a.enabled,d=!0):a.enabled!==b.enabled&&(q(a,"enabled",b.enabled),d=!0)),void 0!==b.exposure&&("codemode"!==b.exposure||c?a.exposure!==b.exposure&&(q(a,"exposure",b.exposure),d=!0):Object.hasOwn(a,"exposure")&&(delete a.exposure,d=!0)),d}function s(a,b,c,d){let e=n(a.mcpServers)?a.mcpServers:void 0;if(!e)return void q(a,"mcpServers",Object.defineProperty({},b,{value:c,enumerable:!0,writable:!0,configurable:!0}));let f=Object.entries(e);if(void 0===d||d>=f.length)return void q(e,b,c);for(let a of(f.splice(Math.max(0,d),0,[b,c]),Object.keys(e)))delete e[a];for(let[a,b]of f)q(e,a,b)}let B=Symbol.for("pi-web:mcp-config-write-queue"),C={realpath:!1,retries:{retries:10,factor:2,minTimeout:25,maxTimeout:500},onCompromised:a=>{console.warn(`[pi-web] an mcp.json lock was compromised: ${a.message}`)}};function t(a,b){var c,d;let h;try{h="global"===a.scope?function(a){let b=(0,k.B1)(a),c={path:b,mode:()=>384,dirMode:448};try{return{...c,realPath:(0,f.realpathSync)(b)}}catch(a){if("ENOENT"!==a?.code)throw new A("unreadable",b,`${b}: ${o(a)}`)}let d=(0,g.resolve)(b);for(let a=0;;a+=1){let c=!1;try{c=(0,f.lstatSync)(d).isSymbolicLink()}catch(c){let a=c?.code;if("ENOENT"!==a&&"ENOTDIR"!==a)throw new A("unreadable",b,`${b}: ${o(c)}`)}if(!c)break;if(a>=40)throw new A("unreadable",b,`${b}: too many symbolic links`);d=(0,g.resolve)((0,g.dirname)(d),(0,f.readlinkSync)(d))}let e=(0,g.dirname)(d);try{e=(0,f.realpathSync)(e)}catch{}return{...c,realPath:(0,g.join)(e,(0,g.basename)(d))}}(a.agentDir):function(a,b){let c=(0,k.UQ)(a,b),d={path:c.path,maxBytes:k.Vy,mode:a=>a??420};if("refused"===c.kind)throw new A(c.reason,c.path,`${c.path}: ${c.error}`);if("found"===c.kind)return{...d,realPath:c.realPath};let e=(0,k.nu)(a,b);if(!e.ok)throw new A(e.reason,c.path,`${c.path}: ${e.error}`);return{...d,realPath:e.realPath}}(a.cwd,a.allowedRoots)}catch(a){return Promise.reject(a)}return c=h.realPath,d=async()=>{var a;let c;(0,f.mkdirSync)((0,g.dirname)(h.realPath),{recursive:!0,...h.dirMode?{mode:h.dirMode}:{}});try{c=await i().lock(h.realPath,C)}catch(a){if("ELOCKED"===a?.code)throw new A("locked",h.path,`${h.path}: another process holds its lock`);throw a}try{let c,d,i,j=(0,k.fz)(h.realPath,h.maxBytes);if(j.ok)c=j.text,d=j.mode;else if("ENOENT"!==j.code)throw new A(j.reason,h.path,`${h.path}: ${j.error}`);let l=function(a,b){let c;try{c=void 0===a?{}:JSON.parse(a)}catch(c){throw new A("unparsable",b,`${b}: ${(0,k.Y_)(c,a??"")}`)}if(!n(c)||void 0!==c.mcpServers&&!n(c.mcpServers))throw new A("invalid-shape",b,`${b}: expected an object with an "mcpServers" object`);return c}(c,h.path),m=n(l.mcpServers)?l.mcpServers:void 0,{changed:o,value:p}=b({document:l,servers:m,exists:void 0!==c,path:h.path});return o&&function(a,b,c){let d=(0,g.join)((0,g.dirname)(a),`.${(0,g.basename)(a)}.${(0,e.randomUUID)()}.tmp`);try{(0,f.writeFileSync)(d,b,{encoding:"utf8",flag:"wx",mode:384,flush:!0}),(0,f.chmodSync)(d,c),(0,f.renameSync)(d,a)}catch(a){try{(0,f.unlinkSync)(d)}catch{}throw a}}(h.realPath,(i=(a=c)&&/^([ \t]+)\S/m.exec(a)?.[1]||" ",`${JSON.stringify(l,null,i)}
|
|
2
|
+
`),h.mode(d)),{value:p,written:o,path:h.path,realPath:h.realPath}}finally{await c()}},(0,j.T)(B,c,d)}async function u(a,b,c,d){return t(a,({servers:a})=>{let e=!1,f=[...new Set(b)].map(b=>{if(!a||!Object.hasOwn(a,b))return{name:b,outcome:"missing"};let f=a[b];if(!n(f))return{name:b,outcome:"not-an-object"};let g=d?.(b,f);if(void 0!==g)return{name:b,outcome:"refused",reason:g};let h=r(f,{enabled:c});return e||=h,{name:b,outcome:h?"changed":"unchanged"}});return{changed:e,value:f}})}async function v(a,b,c){return t(a,({servers:a})=>{if(!a||!Object.hasOwn(a,b))return{changed:!1,value:{name:b,outcome:"missing"}};let d=a[b];if(!n(d))return{changed:!1,value:{name:b,outcome:"not-an-object"}};let e=r(d,{exposure:c});return{changed:e,value:{name:b,outcome:e?"changed":"unchanged"}}})}async function w(a,b,c){return t(a,({document:a,servers:d,path:e})=>{let f=p(d,b);if(void 0===f){let d={};return r(d,{enabled:c}),s(a,b,d),{changed:!0,value:{name:b,outcome:"changed"}}}if(!n(f))return{changed:!1,value:{name:b,outcome:"not-an-object"}};if(!(0,k.vN)(f))throw new A("name-taken",e,`${e} already defines MCP server "${b}"`,b);let g=r(f,{enabled:c});return{changed:g,value:{name:b,outcome:g?"changed":"unchanged"}}})}async function x(a,b){return t(a,({servers:a,path:c})=>{if(!a||!Object.hasOwn(a,b))throw new A("server-missing",c,`${c} does not define MCP server "${b}"`,b);let d=Object.keys(a).indexOf(b),e=a[b];return delete a[b],{changed:!0,value:{entry:e,index:d}}})}async function y(a,b,c,d){return t(a,({document:a,servers:e,path:f})=>{if(void 0!==p(e,b))throw new A("name-taken",f,`${f} already defines MCP server "${b}"`,b);return s(a,b,c,d),{changed:!0,value:void 0}})}d()}catch(a){d(a)}})},19121:a=>{a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},27910:a=>{a.exports=require("stream")},28354:a=>{a.exports=require("util")},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{a.exports=require("path")},35975:(a,b,c)=>{function d(a){return a.replace(/"(?:\\.|[^"\\])*"|\/\/[^\n]*|\/\*[\s\S]*?\*\//g,a=>'"'===a[0]?a:"*"===a[1]?" ":"").replace(/"(?:\\.|[^"\\])*"|,(\s*[}\]])/g,(a,b)=>b??('"'===a[0]?a:""))}function e(a){return JSON.parse(d(a.replace(/^\uFEFF/,"")))}c.d(b,{R:()=>d,p:()=>e})},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},48161:a=>{a.exports=require("node:os")},51455:a=>{a.exports=require("node:fs/promises")},53601:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{GET:()=>y,POST:()=>R,dynamic:()=>S});var e=c(23211),f=c(75430),g=c(17802),h=c(99430),i=c(57736),j=c(29165),k=c(67112),l=c(66686),m=c(66479),n=c(43084),o=c(77283),p=c(28967),q=c(72498),r=c(66544),s=a([f,g,h,i,j,l,n,q]);[f,g,h,i,j,l,n,q]=s.then?(await s)():s;let S="force-dynamic";function t(a){return a instanceof Error?a.message:String(a)}function u(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function v(a,b,c,d={}){return e.NextResponse.json({error:c,reason:b,...d},{status:a})}class T{constructor(a,b,c,d={}){this.status=a,this.reason=b,this.error=c,this.params=d}response(){return v(this.status,this.reason,this.error,this.params)}item(a){return{...a,error:this.error,reason:this.reason}}}function w(a){let{error:b,reason:c,...d}=a.body;return new T(a.status,c,b,d)}async function x(a){let b=await (0,j.ks)(a);return(0,j.X2)(b)?w(b):b}async function y(a){let b,c=new URL(a.url).searchParams.get("cwd");if(null!==c){let a=await x(c);if(a instanceof T)return a.response();b=a}try{return e.NextResponse.json(await (0,i.q_)({agentDir:(0,f.getAgentDir)(),project:b}))}catch(a){return v(500,"internal",t(a))}}function z(a,b,c){if("global"===a)return{scope:"global",agentDir:c};if(!b)return new T(400,"invalid-request","A project server needs the project's cwd");let d=(0,j.eP)(b.cwd,c,"The project is not trusted, so its .pi/mcp.json is not changed");return d?w(d):{scope:"project",cwd:b.cwd,allowedRoots:b.allowedRoots}}function A(a){if((0,g._H)(a)){let b={path:a.path,...void 0!==a.serverName?{name:a.serverName}:{}};return"unreadable"===a.reason?new T(500,"internal",a.message,b):new T(409,a.reason,a.message,b)}return new T(500,"internal",t(a))}async function B(){let a=await (0,j.eD)("changes no MCP server");return(0,j.X2)(a)?w(a):a}function C(a){return"global"===a||"project"===a?a:void 0}function D(a){return"string"==typeof a&&a.length>0&&a.length<=1024?a:void 0}async function E(a,b,c={}){try{let d=await (0,i.q_)({agentDir:a,project:b});return e.NextResponse.json({...d,...c})}catch(a){return v(500,"internal",t(a))}}function F(a){return(b,c)=>(0,n.tF)(c,a)?"web-password":void 0}function G(a,b){let c=a.name;switch(a.outcome){case"missing":return new T(409,"server-missing",`${b} does not define MCP server "${c}"`,{path:b,name:c});case"not-an-object":return new T(409,"entry-not-object",`${b} defines MCP server "${c}" as something other than an object, so it has nothing to switch`,{path:b,name:c});case"refused":return new T(409,"web-password",`"${c}" references PI_WEB_PASSWORD, so Pi Web does not turn it on`,{name:c});default:return}}async function H(a,b,c,d,e){let f=z(d.scope,b,a);if(f instanceof T)return f.response();try{let{value:[a],path:b}=await (0,g.QJ)(f,[d.name],e,e?F(c):void 0),h=G(a,b);if(h)return h.response()}catch(a){return A(a).response()}return E(a,b)}async function I(a,b,c,d){let e=z(c.scope,b,a);if(e instanceof T)return e.response();try{let{value:a,path:b}=await (0,g.Pg)(e,c.name,d),f=G(a,b);if(f)return f.response()}catch(a){return A(a).response()}return E(a,b)}async function J(a,b,c,d,e){let f=z("project",b,a);if(f instanceof T)return f.response();if("project"!==f.scope)return v(500,"internal","No project file to write to");let h=(0,i.eS)({agentDir:a,scope:"global",name:d});if(!h.ok){let a={path:h.path,..."server-missing"===h.reason?{name:d}:{}};return"unreadable"===h.reason?v(500,"internal",h.error,a):v(409,h.reason,h.error,a)}let k=(0,j.Kb)({agentDir:a,internals:c,scope:"global",name:d});if("string"==typeof k)return v(409,"server-invalid",k,{name:d});if(e&&(0,n.tF)(k.config,c))return v(409,"web-password",`"${d}" references PI_WEB_PASSWORD, so Pi Web does not turn it on`,{name:d});try{let{value:a,path:b}=await (0,g.jz)(f,d,e),c=G(a,b);if(c)return c.response()}catch(a){return A(a).response()}return E(a,b)}async function K(a,b,c,d,e){let f=new Map,h=a=>`${a.scope}\0${a.name}`;for(let i of["global","project"]){let j=d.filter(a=>a.scope===i);if(0===j.length)continue;let k=z(i,b,a);if(k instanceof T){for(let a of j)f.set(h(a),k.item(a));continue}try{let{value:a,path:b}=await (0,g.QJ)(k,j.map(a=>a.name),e,e?F(c):void 0);for(let c of a){let a={scope:i,name:c.name};f.set(h(a),G(c,b)?.item(a)??a)}}catch(b){let a=A(b);for(let b of j)f.set(h(b),a.item(b))}}return E(a,b,{results:d.map(a=>f.get(h(a))??a)})}async function L(a,b,c){let d,e=z(c.scope,b,a);if(e instanceof T)return e.response();try{d=await (0,g.Ss)(e,c.name)}catch(a){return A(a).response()}let{token:f,expiresAt:h}=(0,o.qW)({...c,path:d.path,..."project"===e.scope?{cwd:e.cwd}:{},entry:d.value.entry,index:d.value.index});return E(a,b,{undo:{...c,token:f,path:d.path,expiresInMs:Math.max(0,h-Date.now())}})}async function M(a,b,c){let d,e=(0,o.sA)(c);if(!e)return v(410,"undo-unavailable","Nothing to undo: the removal is unknown, already undone, or older than 60 seconds");let f={scope:e.scope,name:e.name};try{let b;if("project"===e.scope){let a=await x(e.cwd);a instanceof T?d=a:b=a}if(!d){let c=z(e.scope,b,a);c instanceof T?d=c:await (0,g.XA)(c,e.name,e.entry,e.index)}}catch(a){d=(0,g._H)(a)&&"name-taken"===a.reason?new T(409,"undo-name-taken",`${a.path} defines "${e.name}" again, so the removal is not undone`,{path:a.path,name:e.name}):A(a)}return d?((0,o.r8)(e),d.response()):E(a,b,{restored:f})}async function N(a,b,c,d){let e=z(d.scope,b,a);if(e instanceof T)return e.response();let{name:f}=d,g=(0,i.eS)({agentDir:a,scope:d.scope,name:f,project:b});if(!g.ok){let a={path:g.path,..."server-missing"===g.reason?{name:f}:{}};return"unreadable"===g.reason?v(500,"internal",g.error,a):v(409,g.reason,g.error,a)}if(!u(g.value))return v(409,"entry-not-object",`${g.sourcePath} defines MCP server "${f}" as something other than an object`,{name:f});let h=(0,j.Kb)({agentDir:a,project:b,internals:c,scope:d.scope,name:f});if("string"==typeof h)return v(409,"server-invalid",h,{name:f});let k=(0,l.P0)(h.config);if(void 0===k)return v(409,"sign-in-not-oauth",`MCP server "${f}" does not use OAuth: only an HTTP server without an Authorization header does`,{name:f});let n=(0,l.N5)(f,k,a,c);return(0,m.mj)({scope:d.scope,sourcePath:g.sourcePath,name:f}),E(a,b,{signedOut:{...d,removed:n}})}function O(a,b,c,d){try{let{servers:e}=(0,i.Nv)({agentDir:a,project:"project"===c?b:void 0,internals:d});return e.filter(a=>a.scope===c).map(a=>a.name)}catch{return[]}}function P(a,b,c,d,e){if((0,g._H)(a)&&"name-taken"===a.reason&&void 0!==a.serverName){let f=(0,k.a4)(a.serverName,O(b,c,d,e));return new T(409,"name-taken",a.message,{path:a.path,name:a.serverName,suggestedName:f})}return A(a)}async function Q(a,b,c,d){let e,f,i,j,k,l,m=(f=C(d.scope),i=(0,h.aw)(d.values),j=(0,h.ew)(d.secretReferences),k=void 0===d.server?0:d.server,l=void 0===d.confirmHostEnv?[]:d.confirmHostEnv,"string"==typeof d.text&&!(d.text.length>h.qQ)&&f&&i&&j&&"number"==typeof k&&Number.isInteger(k)&&!(k<0)&&(void 0===d.name||void 0!==D(d.name))&&(void 0===d.rawPi||"boolean"==typeof d.rawPi)&&(void 0===d.trustFolder||"boolean"==typeof d.trustFolder)&&Array.isArray(l)&&!(l.length>100)&&l.every(a=>"string"==typeof a)?{text:d.text,values:i,secretReferences:j,server:k,..."string"==typeof d.name?{name:d.name}:{},scope:f,rawPi:!0===d.rawPi,confirmHostEnv:l}:new T(400,"invalid-request",`add needs text (at most ${h.qQ} characters), scope, and optionally values, secretReferences, server, name, rawPi, trustFolder and confirmHostEnv`));if(m instanceof T)return m.response();let{scope:n}=m;if("project"===n&&!b)return v(400,"invalid-request","A project server needs the project's cwd");let o="project"===n&&!0===d.trustFolder&&void 0!==b,r=o?void 0:z(n,b,a);if(r instanceof T)return r.response();if(o&&b){let c=(0,q.$C)(b.cwd,{agentDir:a,knownFolders:b.allowedRoots});if(c)return v(409,"trust-too-broad",`Trusting ${b.cwd} would also trust ${c.path}`,{breadth:c})}let s=(0,h.$M)(m,{takenNames:O(a,b,n,c),internals:c});if(!s.ok)return(function({status:a,reason:b,error:c,name:d,suggestedName:e,notes:f,names:g,fields:h}){return new T(a,b,c,{...void 0!==d?{name:d}:{},...void 0!==e?{suggestedName:e}:{},...f?{notes:f}:{},...g?{names:g}:{},...h?{fields:h}:{}})})(s).response();let{name:t,entry:u}=s;if(o&&b){let d={scope:"project",cwd:b.cwd,allowedRoots:b.allowedRoots},e=await (0,q.nU)(b.cwd,a,()=>(0,g.XA)(d,t,u),{knownFolders:b.allowedRoots});if(!e.ok)switch(e.reason){case"trust-too-broad":return v(409,"trust-too-broad",e.error,{breadth:e.breadth});case"folder-not-fresh":return v(409,"folder-not-fresh",e.error,e.status?{trust:e.status}:{});case"trust-unreadable":return v(409,"trust-unreadable",e.error);case"write-failed":{let d=P(e.writeError,a,b,n,c);if(void 0===e.rollbackError)return d.response();return v(d.status,d.reason,`${d.error}; the folder stays trusted, since taking the trust back failed: ${e.rollbackError}`,{...d.params,trustKept:!0,...e.status?{trust:e.status}:{}})}}return(0,p.kn)(),E(a,b,{added:{scope:n,name:t,path:e.value.path},trust:e.status,trustedFolder:!0})}if(!r)return v(500,"internal","No file to write to");try{({path:e}=await (0,g.XA)(r,t,u))}catch(d){return P(d,a,b,n,c).response()}let w="project"===n&&b?function(a,b){try{let c=(0,q.Y1)(a,b);return void 0===c.decisionError?c:void 0}catch{return}}(b.cwd,a):void 0;return E(a,b,{added:{scope:n,name:t,path:e},...w?{trust:w}:{}})}async function R(a){let b,c;if(!(0,r.EN)(a))return v(403,"request-denied","Untrusted API request");if(!(0,r.E2)(a))return v(415,"content-type","Content-Type must be application/json");try{b=await a.json()}catch{return v(400,"invalid-request","Invalid JSON body")}if(!u(b))return v(400,"invalid-request","Expected a JSON object");if(void 0!==b.cwd&&null!==b.cwd){let a=await x(b.cwd);if(a instanceof T)return a.response();c=a}let d=await B();if(d instanceof T)return d.response();let e=(0,f.getAgentDir)();try{switch(b.action){case"enable":case"disable":case"remove":case"sign-out":{let a=C(b.scope),f=D(b.name);if(!a||void 0===f)return v(400,"invalid-request",'scope must be "global" or "project", and name a server name');if("remove"===b.action)return await L(e,c,{scope:a,name:f});if("sign-out"===b.action)return await N(e,c,d,{scope:a,name:f});return await H(e,c,d,{scope:a,name:f},"enable"===b.action)}case"set-enabled":{let a=function(a){if(!Array.isArray(a)||0===a.length||a.length>500)return;let b=new Map;for(let c of a){let a=u(c)?C(c.scope):void 0,d=u(c)?D(c.name):void 0;if(!a||void 0===d)return;b.set(`${a}\0${d}`,{scope:a,name:d})}return[...b.values()]}(b.servers);if("boolean"!=typeof b.enabled||!a)return v(400,"invalid-request","enabled must be a boolean, and servers a list of 1 to 500 { scope, name }");return await K(e,c,d,a,b.enabled)}case"set-exposure":{let a=C(b.scope),d=D(b.name);if(!a||void 0===d||!(0,k.Ch)(b.exposure))return v(400,"invalid-request",`scope must be "global" or "project", name a server name, and exposure one of ${k.E6.join(", ")}`);return await I(e,c,{scope:a,name:d},b.exposure)}case"set-in-project":{let a=D(b.name);if(void 0===a||"boolean"!=typeof b.enabled)return v(400,"invalid-request","name must name a global server, and enabled be a boolean");return await J(e,c,d,a,b.enabled)}case"undo":if("string"!=typeof b.token||0===b.token.length||b.token.length>100)return v(400,"invalid-request","token must be the token a remove answered with");return await M(e,c,b.token);case"add":return await Q(e,c,d,b);default:return v(400,"invalid-request","action must be add, enable, disable, remove, set-enabled, set-exposure, set-in-project, undo or sign-out")}}catch(a){return v(500,"internal",t(a))}}d()}catch(a){d(a)}})},55511:a=>{a.exports=require("crypto")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},67112:(a,b,c)=>{c.d(b,{E6:()=>V,k9:()=>bo,Ch:()=>Y,lw:()=>H,t2:()=>bj,a4:()=>I});var d=c(35975),e=c(3140);let f={dollarBrace:!1,bareDollar:!1,percent:!1,braceEnv:!1},g={dollarBrace:!0,bareDollar:!1,percent:!0,braceEnv:!0},h={...g,bareDollar:!0},i={...f,braceEnv:!0},j=/^[A-Za-z_][A-Za-z0-9_]*$/,k=/\$\{([^{}]*)\}|\$([A-Za-z_][A-Za-z0-9_]*)|%([A-Za-z_][A-Za-z0-9_]*)%|\{(env|file):([^{}]*)\}/g;function l(a,b){if(!b)return;let c=a[a.length-1];c?.kind==="text"?c.text+=b:a.push({kind:"text",text:b})}function m(a,b,c){let d=[],e=0;k.lastIndex=0;for(let f=k.exec(a);f;f=k.exec(a)){let[g,h,i,m,n,o]=f,p=g;if(void 0!==h&&b.dollarBrace)p=function(a,b){let c=/^env:([A-Za-z_][A-Za-z0-9_]*)$/.exec(a);if(c)return{kind:"env",name:c[1],from:b};let d=/^input:(.+)$/.exec(a);if(d)return{kind:"input",id:d[1],from:b};if("userHome"===a)return{kind:"home",from:b};if("workspaceFolder"===a||"workspaceRoot"===a||"CLAUDE_PROJECT_DIR"===a)return{kind:"workspace",from:b};if("workspaceFolderBasename"===a)return{kind:"workspace-basename",from:b};if("pathSeparator"===a||"/"===a)return"/";if("CLAUDE_PLUGIN_ROOT"===a||"CLAUDE_PLUGIN_DATA"===a)return{kind:"unsupported",from:b};if(j.test(a))return{kind:"env",name:a,from:b};let e=/^([A-Za-z_][A-Za-z0-9_]*):?-([\s\S]*)$/.exec(a);return e?{kind:"env",name:e[1],from:b,fallback:e[2]}:/^[A-Za-z]+:/.test(a)?{kind:"unsupported",from:b}:b}(h,g);else if(void 0!==i&&b.bareDollar)p={kind:"env",name:i,from:g};else if(void 0!==m&&b.percent&&c)p={kind:"env",name:m,from:g};else if(void 0!==n&&b.braceEnv)p="env"===n&&j.test(o)?{kind:"env",name:o,from:g}:{kind:"unsupported",from:g};else if(void 0!==m||void 0!==n){l(d,a.slice(e,f.index+1)),e=f.index+1,k.lastIndex=f.index+1;continue}l(d,a.slice(e,f.index)),"string"==typeof p?l(d,p):d.push(p),e=f.index+g.length}return l(d,a.slice(e)),d}function n(a,{atStart:b=!0}={}){let c=a.replace(/\$/g,"$$$$");return b&&c.startsWith("!")?`$${c}`:c}function o(a){return a.startsWith("!")}function p(a){if(o(a))return[];let b=[];for(let c=0;c<a.length;c++){if("$"!==a[c])continue;let d=a[c+1];if("$"===d||"!"===d){c++;continue}if("{"===d){let d=a.indexOf("}",c+2);if(d<0)continue;let e=a.slice(c+2,d);j.test(e)&&!b.includes(e)&&b.push(e),c=d;continue}let e=/^[A-Za-z_][A-Za-z0-9_]*/.exec(a.slice(c+1));e&&(b.includes(e[0])||b.push(e[0]),c+=e[0].length)}return b}let q=/<[A-Za-z][^<>\n]{0,80}>|\{\{\s*[A-Za-z_][\w.-]*\s*\}\}|\b[Yy][Oo][Uu][Rr][_-][A-Za-z0-9_.-]*[A-Za-z0-9]|\b[A-Za-z0-9_-]{0,80}[A-Za-z0-9][_-](?:HERE|[Hh]ere)\b|\b(?:REPLACE[_-]?ME|CHANGE[_-]?ME|PLACEHOLDER)\b|\bMY_[A-Z0-9_]*(?:KEY|TOKEN|SECRET|PASSWORD|PAT)\b|\b(?:sk|pk|ghp|gho|github_pat|glpat|xoxb|xoxp)[_-][xX*]{4,}\b|\b[xX]{6,}\b/g,r=/^(?:\.\.\.|…|\*{3,}|x{3,}|TODO|FIXME|changeme|change[-_]me|replace[-_]?me|placeholder|redacted|\[[^\]]+\])$/i,s=/(?:^|[\\/])(?:path[\\/]to(?:[\\/]|$)|Users[\\/](?:username|yourname|your[-_][A-Za-z_-]+|user[-_]?name|<[^>]+>)(?:[\\/]|$)|home[\\/](?:username|yourname|your[-_][A-Za-z_-]+|<[^>]+>)(?:[\\/]|$))/i,t=/^(Bearer|Basic|Token|Bot|ApiKey|Api-Key)\s+(.+)$/i;function u(a){return a.join("\0")}function v(a){return"args"===a[0]?`args[${a[1]}]`:a.join(".")}function w(a){return"env"===a[0]||"headers"===a[0]||"oauth"===a[0]&&"clientSecret"===a[1]}function x(a){return"command"===a[0]||"args"===a[0]||"cwd"===a[0]}let y=new Set(["HOME","USERPROFILE"]);class z{constructor(a,b){this.source=a,this.rawPi=b,this.args=[],this.env=[],this.headers=[],this.oauth={},this.notes=[]}note(a,b){let c=JSON.stringify([a,b??{}]);this.notes.some(a=>JSON.stringify([a.code,a.params??{}])===c)||this.notes.push(b?{code:a,params:b}:{code:a})}}function A(a){return a.map(a=>"text"in a?a.text:a.from).join("")}let B=/\$\{[^{}]*\}/g,C=new Set(["variable","home","workspace-basename","unsupported-variable","input"]);class D{constructor(a){this.draft=a,this.fields=new Map,this.argTexts=a.args.map(A),this.urlText=A(a.url??[])}encode(a,b){let c,d=w(a),e=v(a),f=A(b),g=[],h=!1,i=()=>g.every(a=>""===a),j=a=>{if(!d)return void g.push(a);let b=/\$([A-Za-z_][A-Za-z0-9_]*)/.exec(a);b&&this.draft.note("bare-dollar-literal",{field:e,name:b[1]});let c=n(a,{atStart:i()});c!==a&&(h=!0),g.push(c)},k=a=>g.push(a),l=a=>g.push({field:a});if(!d&&x(a)&&1===b.length&&"text"in b[0]&&s.test(f)){let b="args"===a[0]?/^(?:--?[A-Za-z][A-Za-z0-9_.-]*|[A-Za-z_][A-Za-z0-9_]*)=/.exec(f)?.[0]??"":"",c=f.slice(b.length);if(s.test(c))return b&&k(b),l(this.field(a,"placeholder-path",c,c,"text")),this.target(a,g,void 0)}let m=0;return b.forEach((g,h)=>{let n=b[h+1],p=void 0===n||"text"in n&&/^[\\/]/.test(n.text),s=(b,d,e)=>{let g=0;for(let[j,k]of function(a){let b=a.trim();if(r.test(b)){let c=a.indexOf(b);return[[c,c+b.length]]}let c=t.exec(b);if(c&&r.test(c[2].trim())){let b=a.lastIndexOf(c[2].trim());return[[b,b+c[2].trim().length]]}let d=[];q.lastIndex=0;for(let b=q.exec(a);b;b=q.exec(a))/^your[-_]/.test(b[0])&&/[@/]/.test(a[b.index-1]??"")||d.push([b.index,b.index+b[0].length]);return d}(b)){var h,i;if(e.some(([a,b])=>j<b&&k>a))continue;j>g&&d(b.slice(g,j)),"url"===a[0]&&E(f,m+j)&&(c="uri-component");let n=b.slice(j,k);l(this.field(a,"placeholder",(h=a,i=n,"env"===h[0]||"headers"===h[0]?h[1]:i.replace(/^[<{\s]+|[>}\s]+$/g,"")||v(h)),n)),g=k}g<b.length&&d(b.slice(g))};switch(g.kind){case"text":s(g.text,j,[]);break;case"pi":{var u;let a=n?(u=g.text,(/\$+$/.exec(u)?.[0].length??0)%2==1?`${u}$`:u):g.text;if(d&&i()&&o(a)){this.draft.note("shell-command-value",{field:e}),k(a);break}let b=[...a.matchAll(B)].map(a=>[a.index,a.index+a[0].length]);s(a,k,b);break}case"env":d?(k(`\${${g.name}}`),void 0!==g.fallback&&this.draft.note("variable-fallback-dropped",{field:e,name:g.name,fallback:g.fallback}),g.shell?this.draft.note("shell-variable",{field:e,name:g.name}):g.from!==`\${${g.name}}`&&this.draft.note("variable-translated",{field:e,from:g.from,to:`\${${g.name}}`})):x(a)&&i()&&y.has(g.name)&&p?(k("~"),this.draft.note("home-translated",{field:e,from:g.from})):(l(this.field(a,"variable",g.name,g.from,void 0,g.fallback)),this.draft.note(g.shell?"shell-variable":"variable-unsupported-here",{field:e,name:g.name}));break;case"input":l(this.inputField(a,g));break;case"home":d?(k("${HOME}"),this.draft.note("home-variable-translated",{field:e,from:g.from,to:"${HOME}"})):x(a)&&i()&&p?(k("~"),this.draft.note("home-translated",{field:e,from:g.from})):l(this.field(a,"home","userHome",g.from,"text"));break;case"workspace":"url"===a[0]||"oauth"===a[0]?l(this.field(a,"variable","workspaceFolder",g.from,"text")):(k("."),this.draft.note("workspace-folder-relative",{field:e,from:g.from}));break;case"workspace-basename":l(this.field(a,"workspace-basename","workspaceFolderBasename",g.from,"text"));break;case"unsupported":l(this.field(a,"unsupported-variable",g.from,g.from)),this.draft.note("unsupported-variable",{field:e,variable:g.from});break;case"prompt":"url"===a[0]&&E(f,m)&&(c="uri-component"),l(this.promptField(a,g))}m+=("text"in g?g.text:g.from).length}),h&&this.draft.note("escaped-value",{field:e}),this.target(a,g,c)}target(a,b,c){let d=b.filter(a=>""!==a);for(let b of new Set(d.flatMap(a=>"string"==typeof a?[]:[a.field]))){let e=this.fields.get(b);e.targets.some(b=>u(b.path)===u(a))||e.targets.push({path:a,parts:d,...c?{encoding:c}:{}})}return d.map(a=>"string"==typeof a?a:this.fields.get(a.field).placeholder??"").join("")}field(a,b,c,d,f,g){let h=C.has(b)?`${b}.${c}`:v(a);if(C.has(b)){if(this.fields.has(h))return h}else for(let b=2;this.fields.has(h);b++)h=`${v(a)}#${b}`;let i=this.isSecretContext(a,d)||(0,e.eh)(c),j="headers"===a[0]&&"authorization"===a[1].toLowerCase();return this.fields.set(h,{id:h,kind:f??(i?"password":"text"),reason:b,label:c,placeholder:d,...void 0!==g?{defaultValue:g}:{},..."placeholder"===b&&j?{optional:!0}:{},targets:[]}),h}inputField(a,b){let c=`input.${b.id}`;if(this.fields.has(c))return c;let d=this.draft.inputs?.get(b.id);d?"command"===d.type&&this.draft.note("input-command-unsupported",{id:b.id}):this.draft.note("input-undefined",{id:b.id});let e=d?.type==="pickString"&&d.options&&d.options.length>0?d.options:void 0,f=d?.password===!0||this.isSecretContext(a,b.from);return this.fields.set(c,{id:c,kind:e?"select":f?"password":"text",reason:"input",label:b.id,placeholder:b.from,...d?.description?{description:d.description}:{},...d?.default!==void 0?{defaultValue:d.default}:{},...e?{options:e}:{},targets:[]}),c}promptField(a,b){return this.fields.has(b.id)||this.fields.set(b.id,{id:b.id,kind:b.options?"select":b.secret||this.isSecretContext(a,b.from)?"password":"text",reason:b.reason,label:b.label,placeholder:b.from,...b.description?{description:b.description}:{},...void 0!==b.defaultValue?{defaultValue:b.defaultValue}:{},...b.options?{options:b.options}:{},...b.optional?{optional:!0}:{},targets:[]}),b.id}isSecretContext(a,b){var c,d;switch(a[0]){case"env":case"headers":return(0,e.eh)(a[1]);case"oauth":return"clientSecret"===a[1];case"args":{if((0,e.oF)([this.argTexts[a[1]]??""]).masked)return!0;let b=this.argTexts[a[1]-1];return void 0!==b&&(c=b,(0,e.oF)([c,"x"]).args[1]===e.Q6)}case"url":{let a=this.urlText.indexOf(b),c=a<0?void 0:/[?&]([^=&?#]+)=[^&#]*$/.exec(this.urlText.slice(0,a))?.[1];return void 0!==c&&(d=c,(0,e.yP)(`https://host.invalid/?${d}=x`).masked)}default:return!1}}}function E(a,b){let c=a.indexOf("//"),d=a.slice(c<0?0:c+2).search(/[/?#]/);return d>=0&&b>=(c<0?0:c+2)+d}function F(a,b,c){let d=c?void 0:function(a){let b;try{b=new URL(a)}catch{return}if(""===b.username&&""===b.password)return;let c=a=>{try{return decodeURIComponent(a)}catch{return a}},d=new TextEncoder().encode(`${c(b.username)}:${c(b.password)}`),e="";for(let a of d)e+=String.fromCharCode(a);return b.username="",b.password="",{url:b.toString(),authorization:`Basic ${btoa(e)}`}}(b);if(!d){a.url=[{kind:"text",text:b}];return}a.url=[{kind:"text",text:d.url}],a.headers.push(["Authorization",[{kind:"text",text:d.authorization}]]),a.note("userinfo-moved-to-header")}let G=/^[A-Za-z0-9_-]+$/;function H(a){return G.test(a)}function I(a,b){let c=new Set(b);if(!c.has(a))return a;for(let b=2;;b++){let d=`${a}-${b}`;if(!c.has(d))return d}}let J=new Set(["mcp","server","mcp-server","mcpserver","cli","index","main","app","src","dist","build","bin","lib"]);function K(a){let b=a.trim(),c=b.lastIndexOf("@");c>0&&(b=b.slice(0,c)),b=b.replace(/==.*$|\[.*\]$/,"");let d="",e=/^@([^/]+)\/(.+)$/.exec(b);if(e)d=e[1],b=e[2];else if(b.includes("/")){let a=b.split("/").filter(Boolean);b=a[a.length-1]??b}let f=M(b);return f&&!J.has(f.toLowerCase())?f:M(d)||d||f||b}let L=[/^mcp[-_]server[-_]/i,/^server[-_]/i,/^mcp[-_]/i,/[-_]mcp[-_]server$/i,/[-_]mcp$/i,/[-_]server$/i];function M(a){let b=a;for(let a=!0;a;)for(let c of(a=!1,L)){let d=b.replace(c,"");d!==b&&d&&(b=d,a=!0)}return b}let N=new Set(["mcp","www","api","app","server","servers","remote","gateway"]);function O(a){let b;try{b=new URL(a).hostname}catch{return""}if("localhost"===b||"127.0.0.1"===b||"[::1]"===b||"::1"===b)return"local";if(/^\d+(?:\.\d+){3}$/.test(b))return"";let c=b.split(".").filter(Boolean);c.length>1&&c.pop(),c.length>1&&/^(?:co|com|org|net|ac|gov)$/.test(c[c.length-1])&&c.pop();let d=c.filter(a=>!N.has(a.toLowerCase()));return d[d.length-1]??c[c.length-1]??""}let P=new Set(["-e","--env","--env-file","-v","--volume","-p","--publish","--name","--network","--net","-w","--workdir","-u","--user","--mount","--entrypoint","-l","--label","--platform","--pull","-h","--hostname","--add-host","--cpus","-m","--memory","--restart","--runtime","--cap-add","--cap-drop","--device","--dns","--ipc","--pid","--security-opt","--tmpfs","--ulimit","--log-driver","--log-opt","--gpus"]);function Q(a,b){for(let c=0;c<a.length;c++){let d=a[c];if("--"===d)return a[c+1];if(d.startsWith("-")){!d.includes("=")&&b.has(d)&&c++;continue}return d}}function R(a){let b=a.split(/[\\/]/).filter(Boolean);for(let a=b.length-1;a>=0;a--){let c=b[a].replace(/\.[A-Za-z0-9]+$/,"");if(!J.has(c.toLowerCase())&&"."!==c&&".."!==c)return M(c.replace(/_/g,"-"))||c}return""}function S(a,b){T(a,b)&&U(a,Math.ceil(b/1e3),b)}function T(a,b){return!!("number"==typeof b&&Number.isFinite(b))&&b>0||(void 0!==b&&a.note("timeout-dropped",{value:String(b)}),!1)}function U(a,b,c){let d=Math.min(Math.max(b,1),3600);void 0!==c&&a.note("timeout-converted",{from:c,to:d}),d!==b&&a.note("timeout-clamped",{from:b,to:d}),a.timeout=d}let V=["codemode","deferred","direct","hidden"],W={"codemode-deferred":"codemode"},X=["localhost","127.0.0.1","[::1]"];function Y(a){return"string"==typeof a&&V.includes(a)}function Z(a){return Y(a)?a:"string"==typeof a&&Object.hasOwn(W,a)?W[a]:void 0}function $(a){try{return new URL(a)}catch{return}}function _(a){let b=$(a);return void 0!==b&&"http:"===b.protocol&&X.includes(b.hostname)&&""===b.search&&""===b.hash}function aa(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function ab(a){return aa(a)&&Object.values(a).every(a=>"string"==typeof a)}function ac(a,b){if(!G.test(a))return{problem:"name",name:a};if(!aa(b))return{problem:"not-an-object"};let{type:c,exposure:d,enabled:e,timeout:f,toolExposure:g,description:h}=b;if(void 0!==d&&!Z(d))return{problem:"exposure",value:String(d)};if(void 0!==g){if(!aa(g))return{problem:"tool-exposure"};for(let[a,b]of Object.entries(g))if(!Z(b))return{problem:"tool-exposure",tool:a}}if(void 0!==e&&"boolean"!=typeof e)return{problem:"enabled"};if(void 0!==h&&"string"!=typeof h)return{problem:"description"};if(void 0!==f&&("number"!=typeof f||!(f>0)))return{problem:"timeout",value:String(f)};if("sse"===c)return{problem:"sse"};if("string"==typeof b.url&&(void 0===c||"http"===c||"streamable-http"===c)){let a=$(b.url);if(!a||!/^https?:$/.test(a.protocol))return{problem:"url",url:b.url};if(void 0!==b.headers&&!ab(b.headers))return{problem:"headers"};let c=function(a){var b;let c;if(void 0===a)return;if(!aa(a))return{problem:"oauth"};if(void 0!==a.clientId&&"string"!=typeof a.clientId)return{problem:"oauth-client-id"};if(void 0!==a.clientSecret&&"string"!=typeof a.clientSecret)return{problem:"oauth-client-secret"};let d=a.callbackPort;if(void 0!==d&&("number"!=typeof d||!Number.isInteger(d)||d<1||d>65535))return{problem:"callback-port",value:String(d)};if(void 0!==a.callbackUrl){if("string"!=typeof a.callbackUrl||!_(a.callbackUrl))return{problem:"callback-url",value:String(a.callbackUrl)};let b=new URL(a.callbackUrl).port;if(b&&void 0!==d&&Number(b)!==d)return{problem:"callback-port-mismatch",value:b}}if(void 0!==a.scope&&"string"!=typeof a.scope)return{problem:"oauth-scope"};if(void 0!==a.clientName&&("string"!=typeof a.clientName||!a.clientName.trim()))return{problem:"oauth-client-name"};if(void 0!==a.clientRegistration&&"dcr"!==a.clientRegistration){if("cimd"!==a.clientRegistration)return{problem:"oauth-client-registration",value:String(a.clientRegistration)};if(void 0!==a.clientId||void 0!==a.clientName)return{problem:"oauth-client-registration-client"};let b="string"==typeof a.callbackUrl?$(a.callbackUrl):void 0;if(b&&("[::1]"===b.hostname||"/callback"!==b.pathname))return{problem:"oauth-client-registration-callback"}}if(void 0!==a.authServerMetadataUrl&&!(void 0!==(c="string"==typeof(b=a.authServerMetadataUrl)?$(b):void 0)&&("https:"===c.protocol||"http:"===c.protocol&&X.includes(c.hostname))))return{problem:"auth-server-metadata-url",value:String(a.authServerMetadataUrl)}}(b.oauth);if(c)return c;let d=b.auth;if(void 0!==d){if(!aa(d)||"string"!=typeof d.provider||!d.provider)return{problem:"auth"};if("https:"!==a.protocol&&!X.includes(a.hostname))return{problem:"auth-url"}}return}return"string"==typeof b.command&&(void 0===c||"stdio"===c)?void 0===b.args||Array.isArray(b.args)&&b.args.every(a=>"string"==typeof a)?void 0===b.env||ab(b.env)?void 0!==b.cwd&&"string"!=typeof b.cwd?{problem:"cwd"}:void 0:{problem:"env"}:{problem:"args"}:{problem:"no-command-or-url"}}let ad=/[A-Za-z_]/,ae=/[A-Za-z0-9_]/,af=/^[A-Za-z_][A-Za-z0-9_]*$/,ag=new Set([..." \n'\"\\$`|&;<>()#*?[]{}!~="]),ah=new Set([..."|&;<>()"]),ai=/[0-9@*#?$!-]/,aj={n:"\n",t:" ",r:"\r",a:"\x07",b:"\b",e:"\x1b",E:"\x1b",f:"\f",v:"\v","\\":"\\","'":"'",'"':'"',"?":"?"};function ak(a,b){let c=b+1;for(;" "===a[c]||" "===a[c];)c++;return"\r"===a[c]&&"\n"===a[c+1]?c+2-b:"\n"===a[c]?c+1-b:0}function al(a,b){return/^(?:[A-Za-z]:\\|\\\\[A-Za-z0-9.$_-])/.test(a.slice(b,b+4))}class am{constructor(a){this.input=a,this.index=0,this.words=[],this.windowsWord=!1,this.lineBreak=!1}run(){try{this.scan()}catch(a){if(a instanceof an)return{ok:!1,error:a.detail};throw a}return{ok:!0,words:this.words}}fail(a){throw new an(a)}startWord(){return this.parts||(this.lineBreak&&this.fail({code:"multiple-commands"}),this.parts=[],this.windowsWord=al(this.input,this.index)),this.parts}endWord(){if(!this.parts)return;let a=this.parts.filter(a=>"text"!==a.type||""!==a.value),b=a.length>0?a:this.parts.slice(0,1);this.words.push({parts:b,text:b.map(a=>"text"===a.type?a.value:a.raw).join("")}),this.parts=void 0,this.windowsWord=!1}appendText(a,b){let c=this.startWord(),d=c[c.length-1];d?.type==="text"&&d.quote===b?d.value+=a:c.push({type:"text",value:a,quote:b})}scan(){let{input:a}=this;for(;this.index<a.length;){let b=a[this.index];if(" "===b||" "===b)this.endWord(),this.index++;else if("\r"===b&&"\n"===a[this.index+1])this.index++;else if("\n"===b)this.endWord(),this.words.length>0&&(this.lineBreak=!0),this.index++;else if(("\\"===b||"^"===b||"`"===b)&&ak(a,this.index)>0)this.index+=ak(a,this.index);else if("#"!==b||this.parts)"'"===b?(this.startWord(),this.singleQuoted()):'"'===b?(this.startWord(),this.doubleQuoted()):"$"===b?this.dollar("none"):"`"===b?this.fail({code:"command-substitution",syntax:"`"}):ah.has(b)?this.fail({code:"shell-operator",operator:function(a,b){let c=a.slice(b,b+2);return["||","&&",";;",">>","<<",">&","<&",">|","<(",">(","&>"].includes(c)?c:a[b]}(a,this.index)}):"\\"===b?this.backslash():(this.appendText(b,"none"),this.index++);else for(;this.index<a.length&&"\n"!==a[this.index];)this.index++}this.endWord()}backslash(){let a=this.input[this.index+1];if(this.startWord(),void 0===a||this.windowsWord||!ag.has(a)){this.appendText("\\","none"),this.index++;return}this.appendText(a,"none"),this.index+=2}singleQuoted(){let a=this.input.indexOf("'",this.index+1);a<0&&this.fail({code:"unterminated-quote",quote:"'"}),this.appendText(this.input.slice(this.index+1,a),"single"),this.index=a+1}doubleQuoted(){let{input:a}=this,b=al(a,this.index+1);for(this.index++,this.appendText("","double");this.index<a.length;){let c=a[this.index];if('"'===c)return void this.index++;if("\\"===c){let c=a[this.index+1];"\n"===c?this.index+=2:"\r"===c&&"\n"===a[this.index+2]?this.index+=3:'"'!==c&&(b||"$"!==c&&"`"!==c&&"\\"!==c)?(this.appendText("\\","double"),this.index++):(this.appendText(c,"double"),this.index+=2)}else"$"===c?this.dollar("double"):"`"===c?this.fail({code:"command-substitution",syntax:"`"}):(this.appendText(c,"double"),this.index++)}this.fail({code:"unterminated-quote",quote:'"'})}ansiQuoted(){let{input:a}=this;this.index+=2;let b="";for(;this.index<a.length;){let c=a[this.index];if("'"===c){this.appendText(b,"ansi"),this.index++;return}if("\\"!==c){b+=c,this.index++;continue}let d=a[this.index+1];if("x"===d&&/^[0-9A-Fa-f]{1,2}/.test(a.slice(this.index+2))){let c=/^[0-9A-Fa-f]{1,2}/.exec(a.slice(this.index+2))[0];b+=String.fromCharCode(parseInt(c,16)),this.index+=2+c.length}else if(("u"===d||"U"===d)&&/^[0-9A-Fa-f]{1,8}/.test(a.slice(this.index+2))){let c=RegExp(`^[0-9A-Fa-f]{1,${"u"===d?4:8}}`).exec(a.slice(this.index+2))[0],e=parseInt(c,16);b+=e>1114111||e>=55296&&e<=57343?a.slice(this.index,this.index+2+c.length):String.fromCodePoint(e),this.index+=2+c.length}else void 0!==d&&d in aj?(b+=aj[d],this.index+=2):(b+="\\",this.index++)}this.fail({code:"unterminated-quote",quote:"'"})}dollar(a){let{input:b}=this,c=b[this.index+1];if("("===c&&this.fail({code:"command-substitution",syntax:"("===b[this.index+2]?"$((":"$("}),"none"===a&&"'"===c){this.startWord(),this.ansiQuoted();return}if("none"===a&&'"'===c){this.startWord(),this.index++,this.doubleQuoted();return}if("{"===c)return void this.braced(a);if(void 0!==c&&ad.test(c)){let c=this.index+1;for(;c<b.length&&ae.test(b[c]);)c++;let d=b.slice(this.index+1,c);this.startWord().push({type:"variable",name:d,raw:`$${d}`,quote:a}),this.index=c;return}void 0!==c&&ai.test(c)&&this.fail({code:"shell-parameter",parameter:`$${c}`}),this.appendText("$",a),this.index++}braced(a){let{input:b}=this,c=b.indexOf("}",this.index+2);c<0&&this.fail({code:"unsupported-expansion",expansion:b.slice(this.index)});let d=b.slice(this.index,c+1),e=d.slice(2,-1);if(/^[0-9@*#?$!-]$/.test(e)&&this.fail({code:"shell-parameter",parameter:d}),af.test(e)){this.startWord().push({type:"variable",name:e,raw:d,quote:a}),this.index=c+1;return}let f=/^([A-Za-z_][A-Za-z0-9_]*):?-([\s\S]*)$/.exec(e);if(f&&!/[$`{}\\'"]/.test(f[2])){this.startWord().push({type:"variable",name:f[1],raw:d,quote:a,fallback:f[2]}),this.index=c+1;return}this.fail({code:"unsupported-expansion",expansion:d})}}class an extends Error{constructor(a){super(a.code),this.detail=a}}function ao(a){return new am(a).run()}function ap(a){return a.parts.every(a=>"text"===a.type)?a.text:void 0}function aq(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}let ar=["httpUrl","trust","includeTools","excludeTools","authProviderType","targetAudience","targetServiceAccount","tcp"];function as(a){if(ar.some(b=>b in a))return!0;let b=a.oauth;return aq(b)&&["redirectUri","authorizationUrl","tokenUrl","audiences","tokenParamName"].some(a=>a in b)}function at(a){if(!aq(a))return!1;let{command:b,url:c,serverUrl:d,httpUrl:e}=a;return"string"==typeof b&&""!==b||Array.isArray(b)&&"string"==typeof b[0]||aq(b)&&"string"==typeof b.path||"string"==typeof c||"string"==typeof d||"string"==typeof e}function au(a){switch(a.toLowerCase().replace(/[-_]/g,"")){case"stdio":case"local":return"stdio";case"http":case"streamablehttp":case"remote":return"http";case"sse":return"sse";case"ws":case"wss":case"websocket":return"ws";default:return"unknown"}}function av(a){try{let b=new URL(a);if(!/\/sse\/?$/.test(b.pathname))return;return b.pathname=b.pathname.replace(/\/sse\/?$/,"/mcp"),b.toString()}catch{return}}function aw(a,b){let c=b?av(b):void 0;return{code:"sse-transport",params:{...a?{server:a}:{},...b?{url:b}:{},...c?{suggestedUrl:c}:{}}}}function ax(a){return a?{server:a}:{}}function ay(a){return"string"==typeof a?a:"number"==typeof a||"boolean"==typeof a?String(a):void 0}function az(a,b,c){let d;if(!aq(b))return{note:{code:"no-command-or-url",params:ax(a)}};let j=new Set,k=a=>(j.add(a),b[a]),l=c.rawPi,n=function(a,b){switch(a.flavor){case"zed":return f;case"opencode":return i;case"vscode":return g;default:return as(b)?h:g}}(c,b),o=k("name"),p=a??("string"==typeof o?o:void 0),q=new z(c.source,l),r=(a,b)=>{if(l)return a?[{kind:"pi",text:a}]:[];return b&&"mcp-servers"===c.flavor&&/^!|\$\$|\$!/.test(a)&&q.note("looks-like-pi-config"),m(a,n,b)};q.name=p,q.inputs=c.inputs;let s=k("inputs");Array.isArray(s)&&(q.inputs=new Map([...c.inputs??[],...aC(s)]));let t=k("type"),u=k("command"),v=[k("httpUrl"),k("url"),k("serverUrl")].find(a=>"string"==typeof a);if("tcp"in b)return{note:{code:"websocket-transport",params:ax(p)}};if(void 0!==t&&"unknown"===(d="string"==typeof t?au(t):"unknown"))return{note:{code:"unsupported-transport",params:{...ax(p),type:String(t)}}};let w="string"==typeof u&&""!==u||Array.isArray(u)||aq(u),x=void 0!==v;if("sse"===d)return{note:aw(p,v)};if("ws"===d)return{note:{code:"websocket-transport",params:{...ax(p),...v?{url:v}:{}}}};if(void 0===d){if(w&&x)return{note:{code:"ambiguous-command-and-url",params:ax(p)}};if(x){if(void 0!==av(v))return{note:aw(p,v)};d="http","mcp-servers"===c.flavor&&"string"==typeof b.url&&"string"!=typeof b.httpUrl&&q.note("transport-guessed")}else{if(!w)return{note:{code:"no-command-or-url",params:ax(p)}};d="stdio"}}if("stdio"!==d&&"http"!==d)return{note:{code:"unsupported-transport",params:{...ax(p),type:String(t)}}};if("stdio"===d&&!w||"http"===d&&!x)return{note:{code:"no-command-or-url",params:ax(p)}};if(q.transport=d,"stdio"===d){let a=function(a,b,c,d,f,g){let h,i=d("args"),j=d("opencode"===g.flavor?"environment":"env");if("opencode"===g.flavor&&void 0===j&&(j=d("env")),Array.isArray(c)){if(!c.every(a=>"string"==typeof a)||0===c.length)return{code:"invalid-config",params:{...ax(a.name),problem:"args"}};h=c[0],i=[...c.slice(1),...Array.isArray(i)?i:[]]}else if(aq(c))for(let b of(h="string"==typeof c.path?c.path:void 0,void 0===i&&(i=c.args),void 0===j&&(j=c.env),Object.keys(c)))["path","args","env"].includes(b)||a.note("dropped-key",{key:`command.${b}`});else"string"==typeof c&&(h=c);if(!h)return{code:"no-command-or-url",params:ax(a.name)};let k=Array.isArray(i)?[...i]:[];if(void 0!==i&&!Array.isArray(i))return{code:"invalid-config",params:{...ax(a.name),problem:"args"}};if(0===k.length&&/\s/.test(h.trim())&&!/^(?:[A-Za-z]:[\\/]|[\\/]|~[\\/]|\.{1,2}[\\/])/.test(h.trim())){let b=ao(h.trim()),c=b.ok?b.words.map(ap):void 0;c&&c.length>1&&c.every(a=>void 0!==a)&&(a.note("command-split",{command:h}),h=c[0],k.push(...c.slice(1)))}for(let[b,c]of(a.command=f(h,!1),k.entries())){let d=ay(c);if(void 0===d)return{code:"invalid-config",params:{...ax(a.name),problem:"args",index:b}};a.args.push(f(d,!1))}if(void 0!==j){if(!aq(j))return{code:"invalid-config",params:{...ax(a.name),problem:"env"}};for(let[b,c]of Object.entries(j)){if(null===c){a.note("env-null-dropped",{name:b});continue}let d=ay(c);if(void 0===d){a.note("dropped-key",{key:`env.${b}`});continue}if("string"!=typeof c&&a.note("env-value-stringified",{name:b}),""===d&&(0,e.eh)(b)){a.env.push([b,[{kind:"prompt",id:`env.${b}`,reason:"empty",label:b,from:"",secret:!0}]]);continue}a.env.push([b,f(d,!0)])}}let l=d("cwd");for(let c of("string"==typeof l&&""!==l?a.cwd=f(l,!1):void 0!==l&&""!==l&&a.note("dropped-key",{key:"cwd"}),["headers","oauth","auth","url","httpUrl","serverUrl"]))c in b&&(d(c),a.note("dropped-key",{key:c}))}(q,b,u,k,r,c);if(a)return{note:a}}else!function(a,b,c,d,f){let g=d("headers"),h=f(c,!1),i=aq(g)&&Object.keys(g).some(a=>"authorization"===a.toLowerCase());if(1===h.length&&"text"in h[0]?F(a,c,i):a.url=h,aq(g))for(let[b,c]of Object.entries(g)){let d=ay(c);if(void 0===d){a.note("dropped-key",{key:`headers.${b}`});continue}if(""===d.trim()){"authorization"===b.toLowerCase()?a.note("empty-authorization-dropped"):(0,e.eh)(b)?a.headers.push([b,[{kind:"prompt",id:`headers.${b}`,reason:"empty",label:b,from:"",secret:!0,optional:!0}]]):a.headers.push([b,[]]);continue}a.headers.push([b,f(d,!0)])}else void 0!==g&&a.note("dropped-key",{key:"headers"});let j=d("oauth"),k=d("auth");if(!1===j?a.note("oauth-disable-unsupported"):aq(j)?aA(a,j,f):void 0!==j&&a.note("dropped-key",{key:"oauth"}),aq(k))for(let b of(aA(a,{...void 0!==k.CLIENT_ID?{clientId:k.CLIENT_ID}:{},...void 0!==k.CLIENT_SECRET?{clientSecret:k.CLIENT_SECRET}:{},...void 0!==k.scopes?{scopes:k.scopes}:{}},f,"auth."),Object.keys(k)))["CLIENT_ID","CLIENT_SECRET","scopes"].includes(b)||a.note("oauth-option-dropped",{key:`auth.${b}`});else void 0!==k&&a.note("dropped-key",{key:"auth"});for(let c of["command","args","env","environment","cwd"])c in b&&(d(c),a.note("dropped-key",{key:c}))}(q,b,v,k,r);let y=k("timeout");if(void 0!==y)if(l)"number"==typeof y&&y>0?q.timeout=y:q.note("timeout-dropped",{value:String(y)});else if("opencode"===c.flavor)q.note("timeout-dropped",{value:String(y)});else if(as(b))S(q,y);else["autoApprove","alwaysAllow","transportType"].some(a=>a in b)||"streamableHttp"===b.type?T(q,y)&&U(q,Math.ceil(y),void 0):!function(a,b){if(!T(a,b))return;let c=b>=1e3;a.note("timeout-unit-guessed",{value:b,unit:c?"milliseconds":"seconds"}),c?U(a,Math.ceil(b/1e3),b):U(a,Math.ceil(b),void 0)}(q,y);let A=k("enabled"),B=k("disabled");!1===A||!0===B?(q.enabled=!1,q.note("imported-disabled")):(void 0!==A&&"boolean"!=typeof A||void 0!==B&&"boolean"!=typeof B)&&q.note("dropped-key",{key:void 0!==A?"enabled":"disabled"});let C=k("exposure");if(void 0!==C){let a=Z(C);a?q.exposure=a:q.note("invalid-exposure-dropped",{value:String(C)})}let D=k("toolExposure");if(void 0!==D){let a=aq(D)?Object.entries(D).map(([a,b])=>[a,Z(b)]):void 0;a?.every(([,a])=>void 0!==a)?q.toolExposure=Object.fromEntries(a):q.note("invalid-exposure-dropped",{value:"toolExposure"})}if(l||void 0===C&&void 0===D||q.note("looks-like-pi-config"),l){let a=k("description");"string"==typeof a?q.description=a:void 0!==a&&q.note("dropped-key",{key:"description"})}for(let a of(aB(q,k("includeTools"),k("excludeTools")),Object.keys(b)))j.has(a)||q.note("dropped-key",{key:a});return{draft:q}}function aA(a,b,c,d="oauth."){for(let[e,f]of Object.entries(b))switch(e){case"clientId":"string"==typeof f&&""!==f&&(a.oauth.clientId=c(f,!1));break;case"clientSecret":"string"==typeof f&&""!==f&&(a.oauth.clientSecret=c(f,!0));break;case"callbackPort":"number"==typeof f&&Number.isInteger(f)&&f>=1&&f<=65535?a.oauth.callbackPort=f:a.note("callback-port-dropped",{value:String(f)});break;case"clientName":"string"==typeof f&&f.trim()?a.oauth.clientName=c(f,!1):a.note("oauth-option-dropped",{key:`${d}${e}`});break;case"clientRegistration":"dcr"===f||"cimd"===f?a.oauth.clientRegistration=f:a.note("oauth-option-dropped",{key:`${d}${e}`});break;case"authServerMetadataUrl":"string"==typeof f&&""!==f?a.oauth.authServerMetadataUrl=c(f,!1):a.note("oauth-option-dropped",{key:`${d}${e}`});break;case"callbackUrl":case"redirectUri":"string"==typeof f&&_(f)?a.oauth.callbackUrl=c(f,!1):a.note("callback-url-dropped",{value:String(f)});break;case"scope":case"scopes":{let b=Array.isArray(f)?f.filter(a=>"string"==typeof a).join(" "):"string"==typeof f?f:"";b&&(a.oauth.scope=c(b,!1));break}case"enabled":!1===f&&a.note("oauth-disable-unsupported");break;default:a.note("oauth-option-dropped",{key:`${d}${e}`})}let{callbackPort:e,callbackUrl:f}=a.oauth;if(void 0!==e&&f){let b=f.map(a=>"text"in a?a.text:"").join(""),c="";try{c=new URL(b).port}catch{}c&&Number(c)!==e&&(a.note("callback-url-dropped",{value:b}),a.oauth.callbackUrl=void 0)}}function aB(a,b,c){let d=a=>Array.isArray(a)?a.filter(a=>"string"==typeof a&&""!==a):[],e=d(b),f=d(c);if(0===e.length&&0===f.length)return;let g={...a.toolExposure??{}};if(e.length>0){let b=a.exposure??"codemode";for(let c of(a.exposure="hidden",e))g[c]=b;a.note("tool-filter-imported",{mode:"include",tools:e.join(", ")})}for(let a of f)g[a]="hidden";f.length>0&&a.note("tool-filter-imported",{mode:"exclude",tools:f.join(", ")}),a.toolExposure=g}function aC(a){let b=new Map;if(!Array.isArray(a))return b;for(let c of a)aq(c)&&"string"==typeof c.id&&b.set(c.id,{id:c.id,..."string"==typeof c.type?{type:c.type}:{},..."string"==typeof c.description?{description:c.description}:{},...!0===c.password?{password:!0}:{},..."string"==typeof c.default?{default:c.default}:{},...Array.isArray(c.options)?{options:c.options.map(a=>aq(a)?a.value:a).filter(a=>"string"==typeof a)}:{}});return b}function aD(a,b,c,d){let e=[],f=0;for(let g of a.matchAll(/\{([A-Za-z_][A-Za-z0-9_-]*)\}/g)){g.index>f&&e.push({kind:"text",text:a.slice(f,g.index)});let h=aq(b)&&aq(b[g[1]])?b[g[1]]:{};e.push(aE(`${c}${g[1]}`,g[1],g[0],h,d)),f=g.index+g[0].length}return f<a.length&&e.push({kind:"text",text:a.slice(f)}),e}function aE(a,b,c,d,e){let f=Array.isArray(d.choices)?d.choices.filter(a=>"string"==typeof a):[];return{kind:"prompt",id:a,reason:e,label:b,from:c,secret:!0===d.isSecret,..."string"==typeof d.description?{description:d.description}:{},..."string"==typeof d.default?{defaultValue:d.default}:{},...!0===d.isRequired?{}:{optional:"registry-header"===e},...f.length>0?{options:f}:{}}}function aF(a,b,c){let d=[],e="",f=()=>{e&&("pi"===b?d.push({kind:"pi",text:e}):d.push(...m(e,b,c)),e="")};for(let b of a)"variable"===b.type?(f(),d.push({kind:"env",name:b.name,from:b.raw,shell:!0,...void 0!==b.fallback?{fallback:b.fallback}:{}})):e+=b.value;return f(),d}function aG(a,b){let c="";for(let d=0;d<a.length;d++){let e=a[d];if("variable"===e.type){c+=e.raw;continue}let f=e.value.indexOf(b);if(f<0){c+=e.value;continue}c+=e.value.slice(0,f);let g=e.value.slice(f+b.length);return[c,[...g?[{...e,value:g}]:[],...a.slice(d+1)]]}}let aH=/^https?:\/\//i,aI=/^wss?:\/\//i,aJ={"@earendil-works/pi-coding-agent":"pi","@anthropic-ai/claude-code":"claude","@openai/codex":"codex","@google/gemini-cli":"gemini"},aK=new Set(["pi","claude","codex","gemini"]),aL=new Set(["install","remove","uninstall","update","list","config"]);function aM(a){return"error"in a?{error:a.error}:{entries:[a],notes:[]}}let aN={local:"flag",url:"value",env:"list",cwd:"value",header:"list","bearer-token-env-var":"value","oauth-client-id":"value","oauth-client-secret":"value","oauth-callback-port":"value","oauth-client-name":"value",exposure:"value",description:"value"},aO=new Map([["-l","--local"]]),aP=["header","bearer-token-env-var","oauth-client-id","oauth-client-secret","oauth-callback-port","oauth-client-name"],aQ=["env","cwd"];function aR(a,b,c,d){let e={positional:[],afterDashDash:[],values:new Map,lists:new Map,seen:new Map};for(let f=0;f<b.length;f++){let g=b[f],h=g.text;if("--"===h){e.afterDashDash.push(...b.slice(f+1));break}if(void 0!==d.stopAfter&&e.positional.length>=d.stopAfter){e.positional.push(...b.slice(f));break}if(!h.startsWith("-")||"-"===h){e.positional.push(g);continue}let i=h.startsWith("--")?h.indexOf("="):-1,j=i>0?h.slice(0,i):h,k=c[j];if(!k){if(e.positional.length>=d.asArgAfter){e.positional.push(g),e.seen.set(`as-arg:${j}`,j);continue}return{error:{code:"cli-unknown-option",params:{cli:a,option:j}}}}if(e.seen.set(k.name,j),"flag"===k.kind){e.values.set(k.name,!0);continue}let l=i>0?aS(g,i+1):void 0;if("value"===k.kind||"list"===k.kind){let c=l??b[++f];if(void 0===c)return{error:{code:"cli-option-needs-value",params:{cli:a,option:j}}};"value"===k.kind?e.values.set(k.name,c):e.lists.set(k.name,[...e.lists.get(k.name)??[],c]);continue}let m=l?[l]:[];if(!l)for(;f+1<b.length&&d.variadic(k.name,b[f+1]);)m.push(b[++f]);if(0===m.length)return{error:{code:"cli-option-needs-value",params:{cli:a,option:j}}};e.lists.set(k.name,[...e.lists.get(k.name)??[],...m])}return e}function aS(a,b){let c=0,d=[];for(let e of a.parts){let a="text"===e.type?e.value.length:e.raw.length;c>=b?d.push(e):c+a>b&&"text"===e.type&&d.push({...e,value:e.value.slice(b-c)}),c+=a}return{parts:d,text:a.text.slice(b)}}let aT=/^[A-Za-z_][A-Za-z0-9_]*=/,aU=/^[^\s:]+:/;function aV(a,b,c,d){for(let e of b??[]){let b=aG(e.parts,"=");if(!b||!/^[A-Za-z_][A-Za-z0-9_]*$/.test(b[0]))return{code:"cli-invalid-pair",params:{cli:d,option:"--env",value:e.text}};a.env.push([b[0],aF(b[1],c,!0)])}}function aW(a,b,c,d){for(let e of b??[]){let b=aG(e.parts,":"),f=b?.[0].trim();if(!b||!f)return{code:"cli-invalid-pair",params:{cli:d,option:"--header",value:e.text}};let g=function(a){let b=a.map(a=>({...a})),c=b[0];c?.type==="text"&&(c.value=c.value.replace(/^\s+/,""));let d=b[b.length-1];return d?.type==="text"&&(d.value=d.value.replace(/\s+$/,"")),b}(b[1]);if("authorization"===f.toLowerCase()&&g.every(a=>"text"===a.type&&""===a.value)){a.note("empty-authorization-dropped");continue}a.headers.push([f,aF(g,c,!0)])}}function aX(a){if(void 0!==a&&!0!==a){if("user"===a.text)return"global";if("project"===a.text)return"project"}}function aY(a,b,c,d,e){let f,[g,h,...i]=d;if(!g||!h)return{code:"cli-usage",params:{cli:b}};a.name=g.text;let j=void 0===c||!0===c?void 0:c.text.toLowerCase();if(void 0===j){if("http"==(f=aH.test(h.text)?"http":aI.test(h.text)?"ws":"stdio")&&void 0!==av(h.text))return aw(g.text,h.text);"http"===f&&"gemini"===b&&a.note("transport-assumed-http")}else f="streamable-http"===j?"http":j;return"sse"===f?aw(g.text,h.text):"ws"===f?{code:"websocket-transport",params:{server:g.text,url:h.text}}:"http"===f?(a.transport="http",a.url=aF(h.parts,e,!1),i.length>0&&a.note("cli-extra-arguments",{cli:b,arguments:i.map(a=>a.text).join(" ")}),"http"):"stdio"!==f?{code:"unsupported-transport",params:{server:g.text,type:f}}:(a.transport="stdio",a.command=aF(h.parts,e,!1),a.args=i.map(a=>aF(a.parts,e,!1)),"stdio")}let aZ={"-t":{name:"transport",kind:"value"},"--transport":{name:"transport",kind:"value"},"-e":{name:"env",kind:"variadic"},"--env":{name:"env",kind:"variadic"},"-H":{name:"header",kind:"variadic"},"--header":{name:"header",kind:"variadic"},"-s":{name:"scope",kind:"value"},"--scope":{name:"scope",kind:"value"},"--client-id":{name:"client-id",kind:"value"},"--client-secret":{name:"client-secret",kind:"flag"},"--callback-port":{name:"callback-port",kind:"value"},"--no-browser":{name:"no-browser",kind:"flag"}};function a$(a,b){return"env"===a?aT.test(b.text):aU.test(b.text)&&!/^[a-z][a-z0-9+.-]*:\/\//i.test(b.text)}function a_(a){a.oauth.clientSecret=[{kind:"prompt",id:"oauth.clientSecret",reason:"client-secret",label:"clientSecret",from:"",secret:!0}],a.note("client-secret-prompt")}let a0={"-s":{name:"scope",kind:"value"},"--scope":{name:"scope",kind:"value"},"--client-secret":{name:"client-secret",kind:"flag"}};function a1(a){let b,c=ap(a)??a.text;try{b=(0,d.p)(c)}catch(a){return{error:{code:"invalid-json",params:{detail:a instanceof Error?a.message:String(a)}}}}return aq(b)?{value:b}:{error:{code:"no-servers-found"}}}let a2={"--env":{name:"env",kind:"list"},"--url":{name:"url",kind:"value"},"--bearer-token-env-var":{name:"bearer-token-env-var",kind:"value"},"--oauth-client-id":{name:"oauth-client-id",kind:"value"},"--oauth-resource":{name:"oauth-resource",kind:"value"},"-c":{name:"config",kind:"value"},"--config":{name:"config",kind:"value"},"--enable":{name:"enable",kind:"value"},"--disable":{name:"disable",kind:"value"}},a3={"-s":{name:"scope",kind:"value"},"--scope":{name:"scope",kind:"value"},"-t":{name:"transport",kind:"value"},"--transport":{name:"transport",kind:"value"},"--type":{name:"transport",kind:"value"},"-e":{name:"env",kind:"list"},"--env":{name:"env",kind:"list"},"-H":{name:"header",kind:"list"},"--header":{name:"header",kind:"list"},"--timeout":{name:"timeout",kind:"value"},"--trust":{name:"trust",kind:"flag"},"--description":{name:"description",kind:"value"},"--include-tools":{name:"include-tools",kind:"value"},"--includeTools":{name:"include-tools",kind:"value"},"--exclude-tools":{name:"exclude-tools",kind:"value"},"--excludeTools":{name:"exclude-tools",kind:"value"}};function a4(a){let b=new Map;for(let c of a.replace(/^\?/,"").split("&")){if(!c)continue;let a=c.indexOf("="),d=a<0?c:c.slice(0,a),e=a<0?"":c.slice(a+1);b.set(a5(d),a5(e))}return b}function a5(a){try{return decodeURIComponent(a)}catch{return a}}function a6(a){let b=a.trim();for(let a=0;a<4;a++)try{return(0,d.p)(b)}catch{let a=a5(b);if(a===b)break;b=a.trim()}}function a7(a){return{error:{code:"install-link-invalid",params:{detail:a}}}}function a8(a){let b=a.get("config");if(!b)return a7("config");let c=b.trim().startsWith("{")?b:function(a){let b=a.trim().replace(/ /g,"+").replace(/-/g,"+").replace(/_/g,"/").replace(/=+$/,"");if(/^[A-Za-z0-9+/]+$/.test(b)&&b.length%4!=1){b+="=".repeat((4-b.length%4)%4);try{let a=atob(b),c=Uint8Array.from(a,a=>a.charCodeAt(0));return new TextDecoder("utf-8",{fatal:!0}).decode(c)}catch{return}}}(b),d=void 0===c?void 0:a6(c);return aq(d)?{entries:[az(a.get("name")||void 0,d,{source:"cursor-install-link",flavor:"mcp-servers",rawPi:!1})],notes:[]}:a7("config")}function a9(a,b,c,d){return aq(a)?{entries:[az(c,a,{source:b,flavor:"vscode",rawPi:!1,inputs:aC(d)})],notes:[]}:a7("config")}function ba(a){return{error:{code:"by-name-link",params:{name:a}}}}function bb(a){let b=a.indexOf("?");return b<0?"":a.slice(b+1)}function bc(a,b=0){let c,d=a.replace(/&/g,"&");try{c=new URL(d)}catch{if(/^https?:\/\/\S+$/i.test(d)&&0===b)return{entries:[be(void 0,d)],notes:[]};return{error:{code:"unrecognized-input"}}}if(b>3)return a7("nesting");let e=c.protocol.replace(/:$/,"").toLowerCase();switch(e){case"cursor":if(/\/mcp\/install\/?$/.test(c.pathname))return a8(a4(c.search));return a7("cursor");case"vscode":case"vscode-insiders":case"code-oss":{let a=d.slice(d.indexOf(":")+1).replace(/^\/+/,""),b=/^mcp\/by-name\/([^?#]+)/.exec(a);if(b)return ba(a5(b[1]));if(/^mcp\/api\.mcp\.github\.com\//.test(a))return ba(a.replace(/^mcp\//,""));if(/^mcp\/install\?/.test(a))return a9(a6(bb(d)),"vscode-install-link");return a7(e)}case"vsweb+mcp":return a9(a6(bb(d)),"visual-studio-install-link");case"ghapp":if(/^\/\/mcp\/install/.test(d.slice(d.indexOf(":")+1)))return a9(a6(bb(d)),"copilot-app-install-link");return a7(e);case"ws":case"wss":return{entries:[{note:{code:"websocket-transport",params:{url:d}}}],notes:[]};case"http":case"https":return function(a,b,c){let d=a.hostname.toLowerCase().replace(/^www\./,""),e=a.pathname;if(("cursor.com"===d||"lmstudio.ai"===d)&&/^\/(?:[a-z]{2}(?:-[A-Za-z]{2,4})?\/)?install-mcp\/?$/.test(e))return a8(a4(a.search));if("vscode.dev"===d||"insiders.vscode.dev"===d){let b=a4(a.search);if(/^\/redirect\/?$/.test(e)&&b.get("url"))return bc(b.get("url"),c+1);if(/^\/redirect\/mcp\/install\/?$/.test(e)){let a=b.get("config");return a?a9(a6(a),"vscode-install-link",b.get("name")||void 0,a6(b.get("inputs")??"[]")):a7("config")}}if("aka.ms"===d&&/^\/vs\/mcp-install\/?$/i.test(e))return a9(a6(a.search.slice(1)),"visual-studio-install-link");if("github.com"===d&&/^\/copilot\/app\/launch\/?$/.test(e)){let b=a4(a.search).get("open");return b?bc(b,c+1):a7("open")}if(/\.(?:svg|png)$/i.test(e)&&("cursor.com"===d||"img.shields.io"===d||d.endsWith("githubusercontent.com")))return{error:{code:"badge-image"}};if("github.com"===d){let a=e.split("/").filter(Boolean);return"mcp"===a[0]&&a.length>=2?{error:{code:"github-mcp-page",params:{name:a.slice(1).join("/")}}}:"mcp"!==a[0]&&a.length>=2?{error:{code:"github-repo-link",params:{repository:`${a[0]}/${a[1]}`}}}:{error:{code:"github-page"}}}return{entries:[be(a,b)],notes:[]}}(c,d,b);default:return{error:{code:"unsupported-url-scheme",params:{scheme:e}}}}}let bd=new Set(["localhost","127.0.0.1","[::1]"]);function be(a,b){let c=O(b)||void 0;if(void 0!==av(b))return{note:aw(c,b)};let d=new z("url",!1);return d.transport="http",F(d,b,!1),a?.protocol!=="http:"||bd.has(a.hostname)||d.note("insecure-http",{host:a.hostname}),{draft:d}}let bf=/[\u200B-\u200D\u2060\uFEFF]/g,bg=/^(?:localhost|127\.0\.0\.1|\[::1\])(?::\d+)?(?:[/?#]\S*)?$/i,bh={"unterminated-quote":"shell-unterminated-quote","shell-operator":"shell-operator","command-substitution":"shell-command-substitution","multiple-commands":"shell-multiple-commands","shell-parameter":"shell-parameter","unsupported-expansion":"shell-expansion"};function bi(a){return new Set(a.fields.flatMap(a=>a.targets.map(a=>u(a.path))))}function bj(a,b={}){let c,e,i,j,k=(e=a.replace(bf,"").replace(/\u00A0/g," ").trim(),(i=/```[^\n]*\n([\s\S]*?)(?:```|$)/.exec(e))?e=i[1].trim():/^`[^`\n]+`$/.test(e)&&(e=e.slice(1,-1).trim()),(j=e.startsWith("[")?/\]\(([^()\s]+)\)\s*$/.exec(e):null)&&(e=j[1]),/^<\S+>$/.test(e)&&(e=e.slice(1,-1)),e);if(!k)return{ok:!1,notes:[{code:"empty-input"}]};if(k.startsWith("{")||k.startsWith("[")||/^"[^"\n]+"\s*:/.test(k))c=function(a,b){let c;try{c=(0,d.p)(a)}catch(b){try{c=(0,d.p)(`{${a.replace(/,\s*$/,"")}}`)}catch{return{error:{code:"invalid-json",params:{detail:b instanceof Error?b.message:String(b)}}}}}return function(a,b){let c=[],d=(a,b)=>Object.entries(a).map(([a,c])=>az(a,c,b));if(Array.isArray(a)){let d=a.filter(at);return 0===d.length?{error:{code:"no-servers-found"}}:{entries:d.map(a=>az(void 0,a,{source:"server-object",flavor:"mcp-servers",rawPi:b})),notes:c}}if(!aq(a))return{error:{code:"no-servers-found"}};let e=aq(a.server)&&(Array.isArray(a.server.remotes)||Array.isArray(a.server.packages))?a.server:Array.isArray(a.remotes)||Array.isArray(a.packages)?a:void 0;if(e)return{entries:function(a){let b="string"==typeof a.name?a.name:"",c=b?K(b.split("/").pop()??b):void 0,d=Array.isArray(a.remotes)?a.remotes.filter(aq):[],e=d.filter(a=>"string"==typeof a.type&&"http"===au(a.type)&&"string"==typeof a.url);if(0===e.length){let a=d.find(a=>"sse"===a.type);return a?[{note:aw(c,"string"==typeof a.url?a.url:void 0)}]:[{note:{code:"registry-packages-unsupported",params:ax(c)}}]}return e.map(a=>{let d=new z("registry-server-json",!1);for(let e of(d.name=c,b&&c!==b&&(d.originalName=b),d.transport="http",d.url=aD(a.url,a.variables,"url.","registry-variable"),Array.isArray(a.headers)?a.headers.filter(aq):[])){if("string"!=typeof e.name||""===e.name)continue;let a=e.name;"string"==typeof e.value&&""!==e.value?d.headers.push([a,aD(e.value,e.variables,`headers.${a}.`,"registry-header")]):d.headers.push([a,[aE(`headers.${a}`,a,"",e,"registry-header")]])}return{draft:d}})}(e),notes:c};if(aq(a.mcpServers))return"boolean"!=typeof a.autoEnableCodemode||b||c.push({code:"looks-like-pi-config"}),{entries:d(a.mcpServers,{source:"mcp-servers-json",flavor:"mcp-servers",rawPi:b}),notes:c};if(aq(a.servers)){let b=aC(a.inputs);return{entries:d(a.servers,{source:"vscode-json",flavor:"vscode",rawPi:!1,inputs:b}),notes:c}}if(aq(a.mcp)){let b=a.mcp;if(aq(b.servers)){let a=aC(b.inputs);return{entries:d(b.servers,{source:"vscode-json",flavor:"vscode",rawPi:!1,inputs:a}),notes:c}}return{entries:d(b,{source:"opencode-json",flavor:"opencode",rawPi:!1}),notes:c}}if(aq(a.context_servers))return{entries:Object.entries(a.context_servers).map(([a,b])=>{let c;return aq(b)&&("extension"===b.source||!at(b))?{note:{code:"zed-extension-server",params:{server:a}}}:az(a,aq(b)?(c={...b},delete c.source,c):b,{source:"zed-json",flavor:"zed",rawPi:!1})}),notes:c};if(at(a))return{entries:[az(void 0,a,{source:"server-object",flavor:"mcp-servers",rawPi:b})],notes:c};let f=Object.values(a);return f.length>0&&f.every(aq)&&f.some(at)?{entries:d(a,{source:"server-map",flavor:"mcp-servers",rawPi:b}),notes:c}:{error:{code:"no-servers-found"}}}(c,b)}(k,!0===b.rawPi);else if(bg.test(k)){if(!("error"in(c=bc(`http://${k}`))))for(let a of c.entries)"draft"in a&&a.draft.note("scheme-assumed",{url:`http://${k}`})}else{let a;c=!/\s/.test(k)&&/^[A-Za-z][A-Za-z0-9+.-]+:/.test(k)?bc(k):(a=ao(k.replace(/^(?:\$|%|>|❯|PS [^\n>]*>)[ \t]+/,"").replace(/[\u201C\u201D\u201E\u201F\u2033]/g,'"').replace(/[\u2018\u2019\u201A\u201B\u2032]/g,"'").replace(/(^|\s)[\u2013\u2014](?=\S)/g,"$1--").replace(/(^|\s)[\u2013\u2014](?=\s|$)/g,"$1--"))).ok?0===a.words.length?{error:{code:"empty-input"}}:function(a){var b;let c=0,d=(b=a[0],(b?.text.split(/[\\/]/).pop()??"").replace(/\.(?:cmd|exe|ps1)$/i,"").toLowerCase());if(["npx","bunx","pnpx"].includes(d)){let b=1;for(;a[b]?.text.startsWith("-");)b++;let e=a[b]?.text.replace(/^(@?[^@]+)@.*$/,"$1");e&&aJ[e]&&a[b+1]?.text==="mcp"&&(c=b,d=aJ[e])}let e=a.slice(c+1);if(e[0]?.text==="mcp"&&e.length>=2){let a=e[1].text,b=e.slice(2);if("pi"===d&&"add"===a)return aM(function(a,b){if(b.some(a=>"--help"===a.text||"-h"===a.text))return{error:{code:"pi-help"}};let c=[],d=new Map,e=new Map;for(let b=0;b<a.length;b++){let f=aO.get(a[b].text)??a[b].text;if("--"===f||c.length>=2){c.push(...a.slice("--"===f?b+1:b));break}if(!f.startsWith("--")){c.push(a[b]);continue}let g=f.slice(2),h=aN[g];if(!h)return{error:{code:"cli-unknown-option",params:{cli:"pi",option:f}}};if("flag"===h){d.set(g,!0);continue}let i=a[++b];if(void 0===i)return{error:{code:"cli-option-needs-value",params:{cli:"pi",option:f}}};"list"===h?e.set(g,[...e.get(g)??[],i]):d.set(g,i)}let[f,...g]=c,h=d.get("url");if(!f||""===f.text||void 0===h==(0===g.length))return{error:{code:"cli-usage",params:{cli:"pi"}}};let i=a=>{let b=d.get(a);return!0===b?void 0:b},j=(void 0===h?aP:aQ).find(a=>d.has(a)||e.has(a));if(j)return{error:{code:"cli-option-wrong-transport",params:{cli:"pi",option:`--${j}`,transport:void 0===h?"stdio":"http"}}};let k=new z("pi-mcp-add",!0);k.name=f.text,k.scopeHint=d.has("local")?"project":"global";let l=(a,b="=")=>{let c=[];for(let d of e.get(a)??[]){let e=aG(d.parts,b);if(!e||""===e[0])return{error:{code:"cli-invalid-pair",params:{cli:"pi",option:`--${a}`,value:d.text}}};let f=c.findIndex(([a])=>a===e[0]);f>=0?c[f]=e:c.push(e)}return c},m={};if(void 0!==h&&!0!==h){k.transport="http",k.url=aF(h.parts,"pi",!1);let a=l("header");if("error"in a)return a;for(let[b,c]of a)k.headers.push([b,aF(c,"pi",!0)]);let b=i("bearer-token-env-var");if(void 0!==b){let a=["Authorization",[{kind:"pi",text:`Bearer \${${b.text}}`}]],c=k.headers.findIndex(([a])=>"Authorization"===a);c>=0?k.headers[c]=a:k.headers.push(a)}let c=i("oauth-client-id"),d=i("oauth-client-secret"),e=i("oauth-callback-port"),f=i("oauth-client-name");c&&(k.oauth.clientId=aF(c.parts,"pi",!1)),d&&(k.oauth.clientSecret=aF(d.parts,"pi",!0)),e&&(k.oauth.callbackPort=Number(e.text)),f&&(k.oauth.clientName=aF(f.parts,"pi",!1)),m.url=h.parts.some(a=>"variable"===a.type)?"https://placeholder.invalid/":h.text,(e||f)&&(m.oauth={...e?{callbackPort:Number(e.text)}:{},...f?{clientName:f.text}:{}})}else{k.transport="stdio";let a=l("env");if("error"in a)return a;for(let[b,c]of a)k.env.push([b,aF(c,"pi",!0)]);let[b,...c]=g;k.command=aF(b.parts,"pi",!1),k.args=c.map(a=>aF(a.parts,"pi",!1));let d=i("cwd");d&&(k.cwd=aF(d.parts,"pi",!1)),m.command=b.text}let n=i("exposure");void 0!==n&&(m.exposure=n.text,k.exposure=Z(n.text)??n.text);let o=i("description");void 0!==o&&(m.description=o.text,k.description=o.text);let p=ac("server",m);return p?{note:{code:"invalid-config",params:{server:f.text,...p}}}:{draft:k}}(b,e.slice(1)));if("claude"===d&&"add"===a)return aM(function(a){let b=aR("claude",a,aZ,{asArgAfter:2,variadic:a$});if("error"in b)return{error:b.error};let c=new z("claude-mcp-add",!1),d=aY(c,"claude",b.values.get("transport"),[...b.positional,...b.afterDashDash],g);if("string"!=typeof d)return"cli-usage"===d.code?{error:d}:{note:d};for(let[a,d]of b.seen)a.startsWith("as-arg:")&&c.note("cli-option-as-arg",{cli:"claude",option:d});if(c.scopeHint=aX(b.values.get("scope")),"http"===d){var e,f;let a;b.lists.has("env")&&c.note("cli-option-wrong-transport",{cli:"claude",option:"--env",transport:"http"});let d=aW(c,b.lists.get("header"),g,"claude");if(d)return{error:d};let h=b.values.get("client-id");h&&!0!==h&&(c.oauth.clientId=aF(h.parts,g,!1)),b.values.has("client-secret")&&a_(c);let i=b.values.get("callback-port");i&&!0!==i&&(e=c,Number.isInteger(a=Number(f=i.text))&&a>=1&&a<=65535?e.oauth.callbackPort=a:e.note("callback-port-dropped",{value:f}))}else{for(let a of["header","client-id","client-secret","callback-port"])(b.lists.has(a)||b.values.has(a))&&c.note("cli-option-wrong-transport",{cli:"claude",option:b.seen.get(a)??`--${a}`,transport:"stdio"});let a=aV(c,b.lists.get("env"),g,"claude");if(a)return{error:a}}return{draft:c}}(b));if("claude"===d&&"add-json"===a)return aM(function(a){let b=aR("claude",a,a0,{asArgAfter:1/0});if("error"in b)return{error:b.error};let[c,d,...e]=[...b.positional,...b.afterDashDash];if(!c||!d||e.length>0)return{error:{code:"cli-usage",params:{cli:"claude"}}};let f=a1(d);if("error"in f)return f;let g=az(c.text,f.value,{source:"claude-mcp-add-json",flavor:"mcp-servers",rawPi:!1});return"note"in g||(g.draft.scopeHint=aX(b.values.get("scope")),b.values.has("client-secret")&&"http"===g.draft.transport&&!g.draft.oauth.clientSecret&&a_(g.draft)),g}(b));if("claude"===d&&"add-from-claude-desktop"===a)return{error:{code:"claude-desktop-import"}};if("codex"===d&&"add"===a)return aM(function(a){let b=aR("codex",a,a2,{asArgAfter:1/0,stopAfter:2});if("error"in b)return{error:b.error};let c=b.afterDashDash,d=b.lists.get("env")??[],[e,...g]=b.positional,h=c.length>0?c:g,i=b.values.get("url");if(!e||void 0===i==(0===h.length)||c.length>0&&g.length>0)return{error:{code:"cli-usage",params:{cli:"codex"}}};let j=new z("codex-mcp-add",!1);for(let a of(j.name=e.text,["config","enable","disable"]))b.values.has(a)&&j.note("cli-option-ignored",{cli:"codex",option:b.seen.get(a)});if(b.values.has("oauth-resource")&&j.note("oauth-option-dropped",{key:"--oauth-resource"}),void 0!==i&&!0!==i){if(d.length>0)return{error:{code:"cli-option-wrong-transport",params:{cli:"codex",option:"--env",transport:"http"}}};if(void 0!==av(i.text))return{note:aw(e.text,i.text)};j.transport="http",j.url=aF(i.parts,f,!1);let a=b.values.get("bearer-token-env-var");a&&!0!==a&&j.headers.push(["Authorization",[{kind:"text",text:"Bearer "},{kind:"env",name:a.text,from:`\${${a.text}}`}]]);let c=b.values.get("oauth-client-id");c&&!0!==c&&(j.oauth.clientId=aF(c.parts,f,!1))}else{for(let a of["bearer-token-env-var","oauth-client-id","oauth-resource"])if(b.values.has(a))return{error:{code:"cli-option-wrong-transport",params:{cli:"codex",option:`--${a}`,transport:"stdio"}}};j.transport="stdio";let a=aV(j,d,f,"codex");if(a)return{error:a};j.command=aF(h[0].parts,f,!1),j.args=h.slice(1).map(a=>aF(a.parts,f,!1))}return{draft:j}}(b));if("gemini"===d&&"add"===a)return aM(function(a){let b=aR("gemini",a,a3,{asArgAfter:2});if("error"in b)return{error:b.error};let c=new z("gemini-mcp-add",!1),d=aY(c,"gemini",b.values.get("transport"),[...b.positional,...b.afterDashDash],h);if("string"!=typeof d)return"cli-usage"===d.code?{error:d}:{note:d};if(c.scopeHint=aX(b.values.get("scope")),"http"===d){b.lists.has("env")&&c.note("cli-option-wrong-transport",{cli:"gemini",option:"--env",transport:"http"});let a=aW(c,b.lists.get("header"),h,"gemini");if(a)return{error:a}}else{b.lists.has("header")&&c.note("cli-option-wrong-transport",{cli:"gemini",option:"--header",transport:"stdio"});let a=aV(c,b.lists.get("env"),h,"gemini");if(a)return{error:a}}let e=b.values.get("timeout");for(let a of(e&&!0!==e&&S(c,Number(e.text)),["trust","description"]))b.values.has(a)&&c.note("cli-option-ignored",{cli:"gemini",option:`--${a}`});let f=a=>{let c=b.values.get(a);return c&&!0!==c?c.text.split(",").map(a=>a.trim()).filter(Boolean):void 0};return aB(c,f("include-tools"),f("exclude-tools")),{draft:c}}(b));if("add"===a||"install"===a)return{error:{code:"cli-unsupported",params:{cli:d}}};if(aK.has(d)&&!a.startsWith("-")&&("claude"!==d||"serve"!==a))return{error:{code:"cli-not-a-server",params:{cli:d,command:`mcp ${a}`}}}}return"pi"===d&&e[0]&&aL.has(e[0].text)?{error:{code:"cli-not-a-server",params:{cli:d,command:e[0].text}}}:["code","code-insiders","codium","cursor"].includes(d)&&a.some(a=>"--add-mcp"===a.text||a.text.startsWith("--add-mcp="))?function(a){let b=[];for(let c=0;c<a.length;c++){let d,e=a[c].text;if("--add-mcp"===e)d=a[++c];else{if(!e.startsWith("--add-mcp="))continue;d=aS(a[c],10)}if(!d)return{error:{code:"cli-option-needs-value",params:{cli:"code",option:"--add-mcp"}}};let f=a1(d);if("error"in f)return f;b.push(az(void 0,f.value,{source:"vscode-add-mcp",flavor:"vscode",rawPi:!1}))}return{entries:b,notes:[]}}(a.slice(1)):aM(function(a){let b=new z("command-line",!1);b.transport="stdio";let c=0,d=()=>{for(;c<a.length;c++){let d=function(a){let[b,...c]=a.parts;if(b?.type!=="text"||"none"!==b.quote)return;let d=/^([A-Za-z_][A-Za-z0-9_]*)=/.exec(b.value);if(!d)return;let e=b.value.slice(d[0].length);return{name:d[1],value:[...e?[{...b,value:e}]:[],...c]}}(a[c]);if(!d)break;b.env.push([d.name,aF(d.value,f,!0)])}};if(d(),a[c]?.text==="env"){if(c++,a[c]?.text.startsWith("-"))return{error:{code:"cli-unknown-option",params:{cli:"env",option:a[c].text}}};d()}let e=a[c];if(!e)return{error:{code:"no-command-or-url"}};b.command=aF(e.parts,f,!1),b.args=a.slice(c+1).map(a=>aF(a.parts,f,!1));let g=a.slice(c+1).map(a=>a.text),h=g.some(a=>/^mcp-remote(?:@|$)/.test(a))?g.find(a=>aH.test(a)):void 0;return h&&b.note("mcp-remote-bridge",{url:h}),{draft:b}}(a))}(a.words):{error:function(a){let{code:b,...c}=a;return Object.keys(c).length>0?{code:bh[b],params:c}:{code:bh[b]}}(a.error)}}if("error"in c)return{ok:!1,notes:[c.error]};let l=[...c.notes],m=[],n=[...b.takenNames??[]],o=new Set;for(let a of c.entries){if("note"in a){l.push(a.note);continue}let b=function(a){let b,c=new D(a);if("stdio"===a.transport&&a.command&&""!==A(a.command)){let d=c.encode(["command"],a.command),e=a.args.map((a,b)=>c.encode(["args",b],a)),f={};for(let[b,d]of a.env)f[b]=c.encode(["env",b],d);b={command:d,...e.length>0?{args:e}:{},...Object.keys(f).length>0?{env:f}:{},...a.cwd?{cwd:c.encode(["cwd"],a.cwd)}:{}}}else{if("http"!==a.transport||!a.url||""===A(a.url))return{note:{code:"no-command-or-url",...a.name?{params:{server:a.name}}:{}}};let d=c.encode(["url"],a.url),e={};for(let[b,d]of a.headers)e[b]=c.encode(["headers",b],d);let f={},{clientId:g,clientSecret:h,callbackPort:i,clientName:j,clientRegistration:k,callbackUrl:l,scope:m,authServerMetadataUrl:n}=a.oauth;g&&(f.clientId=c.encode(["oauth","clientId"],g)),h&&(f.clientSecret=c.encode(["oauth","clientSecret"],h)),void 0!==i&&(f.callbackPort=i),j&&(f.clientName=c.encode(["oauth","clientName"],j)),k&&(f.clientRegistration=k),l&&(f.callbackUrl=c.encode(["oauth","callbackUrl"],l)),m&&(f.scope=c.encode(["oauth","scope"],m)),n&&(f.authServerMetadataUrl=c.encode(["oauth","authServerMetadataUrl"],n)),b={url:d,...Object.keys(e).length>0?{headers:e}:{},...Object.keys(f).length>0?{oauth:f}:{}}}return void 0!==a.exposure&&(b.exposure=a.exposure),void 0!==a.toolExposure&&(b.toolExposure=a.toolExposure),!1===a.enabled&&(b.enabled=!1),void 0!==a.timeout&&(b.timeout=a.timeout),void 0!==a.description&&(b.description=a.description),{server:{name:a.name??"",...void 0!==a.originalName?{originalName:a.originalName}:{},config:b,fields:[...c.fields.values()],notes:a.notes,source:a.source,rawPi:a.rawPi,...a.scopeHint?{scopeHint:a.scopeHint}:{}}}}(a.draft);if("note"in b){l.push(b.note);continue}let c=b.server,d=c.name,e=!d;e&&(d=function(a){if("url"in a)return O(a.url);let b=a.args??[],c=b.some(a=>/^mcp-remote(?:@|$)/.test(a))?b.find(a=>/^https?:\/\//i.test(a)):void 0;return c&&O(c)||function(a,b){let c=a.split(/[\\/]/).pop()?.replace(/\.(?:cmd|exe|bat|ps1)$/i,"").toLowerCase()??"";switch(c){case"npx":case"bunx":case"pnpx":{let a=Q(b,new Set(["-p","--package","-c","--call"]));return a?K(a):""}case"pnpm":case"yarn":case"bun":case"npm":{let a=b.findIndex(a=>"dlx"===a||"exec"===a||"x"===a),c=a>=0?Q(b.slice(a+1),new Set(["-p","--package"])):void 0;return c?K(c):""}case"uvx":case"pipx":{let a=Q("pipx"===c&&"run"===b[0]?b.slice(1):b,new Set(["--from","--with","--python","-p","--index-url","--spec"]));return a?K(a):""}case"uv":{let a=b.indexOf("run"),c=a>=0?Q(b.slice(a+1),new Set(["--with","--directory","--python","-p","--from","--project"])):void 0;return c?R(c):""}case"docker":case"podman":{let a=b.indexOf("run"),c=a>=0?Q(b.slice(a+1),P):void 0;if(!c)return"";let d=c.split("/").pop().replace(/[:@].*$/,"");return M(d)||d}case"python":case"python3":case"py":{let a=b.indexOf("-m");if(a>=0&&b[a+1])return K(b[a+1].replace(/_/g,"-"));let c=Q(b,new Set(["-X","-W"]));return c?R(c):""}case"node":case"deno":case"tsx":case"ts-node":{let a=Q("deno"===c&&"run"===b[0]?b.slice(1):b,new Set(["-r","--require","--import","--loader"]));return a?R(a):""}default:return M(c.replace(/_/g,"-"))||c}}(a.command,b)}(c.config))&&c.notes.push({code:"name-derived",params:{name:d}});let f=H(d)?d:d.normalize("NFKD").replace(/[\u0300-\u036f]/g,"").replace(/[^A-Za-z0-9_-]+/g,"-").replace(/-{2,}/g,"-").replace(/^[-_]+|[-_]+$/g,"").slice(0,48).replace(/[-_]+$/g,"")||"server";f!==d&&d&&(c.originalName=c.originalName??d,c.notes.push({code:"name-sanitized",params:{original:d,name:f}}));let g=I(f,e?[...n,...o]:o);g!==f&&(c.notes.push({code:"name-deduplicated",params:{original:f,name:g}}),f=g),!e&&n.includes(f)&&c.notes.push({code:"name-taken",params:{name:f,suggestedName:I(f,[...n,...o])}}),c.name=f;let h=ac(f,function(a){let b=bi(a),c=JSON.parse(JSON.stringify(a.config));b.has(u(["url"]))&&(c.url="https://placeholder.invalid/");let d=c.oauth;return d&&b.has(u(["oauth","callbackUrl"]))&&delete d.callbackUrl,c}(c));if(h){l.push({code:"invalid-config",params:{server:f,...h}});continue}!function(a){let b=bi(a);for(let c of bq(a.config))b.has(u(c))||a.notes.push({code:"literal-secret",params:{field:v(c)}});let c=a.config;if("url"in c){for(let[b,d]of Object.entries(c.headers??{})){let c=p(d);c.length>0&&a.notes.push({code:"header-env-reference",params:{header:b,names:c.join(", ")}})}let b=p(c.oauth?.clientSecret??"");b.length>0&&a.notes.push({code:"client-secret-env-reference",params:{names:b.join(", ")}})}}(c),o.add(f),m.push(c)}return 0===m.length?{ok:!1,notes:l.length>0?l:[{code:"no-servers-found"}]}:{ok:!0,servers:m,notes:l}}let bk=/^[A-Za-z_][A-Za-z0-9_]*$/;function bl(a,b,c){let[d,e]=b;if("command"===d||"url"===d||"cwd"===d){void 0!==c&&(a[d]=c);return}if("args"===d){a.args[e]=c??"";return}let f={...a[d]??{}};void 0===c?delete f[e]:f[e]=c,0===Object.keys(f).length?delete a[d]:a[d]=f}function bm(a){return"string"==typeof a&&""===a.trim()?"missing":"name"}let bn=/^(?:bearer|basic|token)\s+/i;function bo(a,b,c={}){var d,e,f,g;let h,i=JSON.parse(JSON.stringify(a.config)),j=new Map,k=[],l=new Map((h=bi(a),bq(a.config).filter(a=>w(a)&&!h.has(u(a)))).map(a=>[v(a),a])),m=[];for(let[a,b]of Object.entries(c)){let c="string"==typeof b?b.trim():"",d=l.get(a);d?bk.test(c)?m.push([d,c]):k.push({code:"field-reference-invalid",params:{field:a,problem:bm(b)}}):k.push({code:"field-reference-invalid",params:{field:a,problem:"target"}})}for(let c of a.fields){let a=b[c.id];if("object"==typeof a&&null!==a){let b=a.reference,d="string"==typeof b?b.trim():"";bk.test(d)?"select"!==c.kind&&c.targets.every(a=>w(a.path)&&void 0===a.encoding)?j.set(c.id,{reference:d}):k.push({code:"field-reference-invalid",params:{field:c.id,problem:"target"}}):k.push({code:"field-reference-invalid",params:{field:c.id,problem:bm(b)}});continue}let d=("string"==typeof a?a:c.defaultValue??"").trim();""===d?c.optional?j.set(c.id,void 0):k.push({code:"field-required",params:{field:c.id}}):"select"===c.kind&&c.options&&!c.options.includes(d)?k.push({code:"field-invalid-option",params:{field:c.id}}):j.set(c.id,{text:d})}if(k.length>0)return{ok:!1,notes:k};let o=new Set,p=new Set;for(let b of a.fields)for(let a of b.targets){let c=j.get(b.id);"password"===b.kind&&void 0!==c&&"text"in c&&o.add(v(a.path));let h=u(a.path);if(p.has(h))continue;if(p.add(h),a.parts.some(a=>"string"!=typeof a&&void 0===j.get(a.field))){bl(i,a.path,void 0);continue}let k="";for(let b of a.parts)k+="string"==typeof b?b:(d=j.get(b.field),e=a.path,f=""===k,g=a.encoding,"reference"in d?`\${${d.reference}}`:"uri-component"===g?encodeURIComponent(d.text):w(e)?n(d.text,{atStart:f}):d.text);bl(i,a.path,k)}for(let[a,b]of m){let c=function(a,b){let[c,d]=b,e=a[c];return void 0===d||"object"!=typeof e||null===e?void 0===d?e:void 0:e[d]}(i,a),d="headers"===a[0]&&"string"==typeof c?c.match(bn)?.[0]??"":"";bl(i,a,`${d}\${${b}}`)}for(let a of bq(i))o.add(v(a));return{ok:!0,config:i,secretPaths:[...o]}}let bp=["command","args","env","cwd","url","headers","oauth"];function bq(a){let b=[];for(let c of(0,e.TB)(a))switch(c.kind){case"env":b.push(["env",c.name]);break;case"header":b.push(["headers",c.name]);break;case"oauth-client-secret":b.push(["oauth","clientSecret"]);break;case"url":b.push(["url"]);break;case"command":b.push(["command"]);break;case"args":{let c="args"in a&&Array.isArray(a.args)?a.args.map(a=>"string"==typeof a?a:""):[];(0,e.oF)(c).args.forEach((a,d)=>{a!==c[d]&&b.push(["args",d])})}}return b.sort((a,b)=>bp.indexOf(a[0])-bp.indexOf(b[0]))}},73024:a=>{a.exports=require("node:fs")},73136:a=>{a.exports=require("node:url")},75430:a=>{a.exports=import("@earendil-works/pi-coding-agent")},76760:a=>{a.exports=require("node:path")},77030:a=>{a.exports=require("node:net")},77283:(a,b,c)=>{c.d(b,{qW:()=>i,r8:()=>k,sA:()=>j});var d=c(77598);let e=Symbol.for("pi-web:mcp-undo");function f(){let a=globalThis;return a[e]??=new Map}function g(a,b){clearTimeout(b.timer),f().get(a)===b&&f().delete(a)}function h(a,b){let c=f();for(;c.size>=100;){let[a,b]=c.entries().next().value;g(a,b)}let d={...a};d.timer=setTimeout(()=>g(a.token,d),Math.max(0,a.expiresAt-b)),d.timer.unref?.(),c.set(a.token,d)}function i(a,{now:b=Date.now(),ttlMs:c=6e4}={}){let e=(0,d.randomUUID)(),f=b+c;return h({...a,token:e,expiresAt:f},b),{token:e,expiresAt:f}}function j(a,b=Date.now()){let c=f().get(a);if(c)return g(a,c),c.expiresAt>b?function(a){let{timer:b,...c}=a;return c}(c):void 0}function k(a,b=Date.now()){a.expiresAt<=b||f().has(a.token)||h(a,b)}},77598:a=>{a.exports=require("node:crypto")},79646:a=>{a.exports=require("child_process")},79748:a=>{a.exports=require("fs/promises")},81081:(a,b,c)=>{c.r(b),c.d(b,{handler:()=>A,patchFetch:()=>z,routeModule:()=>v,serverHooks:()=>y,workAsyncStorage:()=>w,workUnitAsyncStorage:()=>x});var d=c(19225),e=c(84006),f=c(8317),g=c(99373),h=c(34775),i=c(24235),j=c(261),k=c(54365),l=c(90771),m=c(73461),n=c(67798),o=c(92280),p=c(62018),q=c(45696),r=c(47929),s=c(86439),t=c(10246),u=c(37527);let v=new d.AppRouteRouteModule({definition:{kind:e.RouteKind.APP_ROUTE,page:"/api/mcp/route",pathname:"/api/mcp",filename:"route",bundlePath:"app/api/mcp/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/home/runner/work/pi-web/pi-web/app/api/mcp/route.ts",nextConfigOutput:"",userland:()=>c(53601),...{}}),{workAsyncStorage:w,workUnitAsyncStorage:x,serverHooks:y}=v;function z(){return(0,f.patchFetch)({workAsyncStorage:w,workUnitAsyncStorage:x})}async function A(a,b,c){c.requestMeta&&(0,g.setRequestMeta)(a,c.requestMeta),v.isDev&&(0,g.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/mcp/route";"/index"===d&&(d="/");let f=await v.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!f)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:w,deploymentId:x,params:y,nextConfig:z,parsedUrl:A,isDraftMode:B,prerenderManifest:C,routerServerContext:D,isOnDemandRevalidate:E,revalidateOnlyGenerated:F,resolvedPathname:G,clientReferenceManifest:H,serverActionsManifest:I}=f,J=(0,j.normalizeAppPath)(d),K=!!C.routes[G]&&(v.isDev||(0,t.isRouteCacheOwner)(G,v.cacheOwner,C.routes[G])),L=!!(C.dynamicRoutes[J]||K),M=async()=>((null==D?void 0:D.render404)?await D.render404(a,b,A,!1):b.end("This page could not be found"),null);if(L&&!B){let a=C.dynamicRoutes[J];if(a&&!1===a.fallback&&!K){if(z.adapterPath)return await M();throw new s.NoFallbackError}}let N=null;!L||v.isDev||B||(N="/index"===(N=G)?"/":N);let O=!0===v.isDev||!L,P=L&&!O;I&&H&&(0,i.setManifestsSingleton)({page:d,clientReferenceManifest:H,serverActionsManifest:I});let Q=a.method||"GET",R=(0,h.getTracer)(),S=R.getActiveScopeSpan(),T=!!(null==D?void 0:D.isWrappedByNextServer),U=!!(0,g.getRequestMeta)(a,"minimalMode"),V=(0,g.getRequestMeta)(a,"incrementalCache")||await v.getIncrementalCache(a,z,C,U);null==V||V.resetRequestCache(),globalThis.__incrementalCache=V;let W={params:y,previewProps:C.preview,renderOpts:{experimental:{authInterrupts:!!z.experimental.authInterrupts,useCacheTimeout:z.experimental.useCacheTimeout},cacheComponents:!!z.cacheComponents,validationLevel:z.experimental.instantInsights.validationLevel,isDraftMode:B,supportsDynamicResponse:O,incrementalCache:V,hmrRefreshHash:(0,g.getRequestMeta)(a,"hmrRefreshHash"),cacheLifeProfiles:z.cacheLife,staticPageGenerationTimeout:z.staticPageGenerationTimeout,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>v.onRequestError(a,b,d,e,D)},sharedContext:{buildId:w,deploymentId:x}},X=new k.NodeNextRequest(a),Y=new k.NodeNextResponse(b),Z=l.NextRequestAdapter.fromNodeNextRequest(X,(0,l.signalFromNodeResponse)(b)),$=async({previousCacheEntry:e})=>{try{if(!U&&E&&F&&!e)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await v.handle(Z,W);a.fetchMetrics=W.renderOpts.fetchMetrics;let f=W.renderOpts.pendingWaitUntil;f&&c.waitUntil&&(c.waitUntil(f),f=void 0);let g=W.renderOpts.collectedTags;if(!L)return await (0,o.I)(X,Y,d,f),null;{let a=await d.blob(),b=(0,p.toNodeOutgoingHttpHeaders)(d.headers);g&&(b[r.NEXT_CACHE_TAGS_HEADER]=g),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==W.renderOpts.collectedRevalidate&&!(W.renderOpts.collectedRevalidate>=r.INFINITE_CACHE)&&W.renderOpts.collectedRevalidate,e=void 0===W.renderOpts.collectedExpire||W.renderOpts.collectedExpire>=r.INFINITE_CACHE?!1!==c&&c>0?z.expireTime:void 0:W.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==e?void 0:e.isStale)&&await v.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:P,isOnDemandRevalidate:E})},!1,D),b}},_=async(d,f)=>{try{var g,i;let d=await v.handleResponse({req:a,nextConfig:z,cacheKey:N,routeKind:e.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:E,revalidateOnlyGenerated:F,responseGenerator:$,waitUntil:c.waitUntil,isMinimalMode:U});if(!L)return;if((null==d||null==(g=d.value)?void 0:g.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(i=d.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});U||b.setHeader("x-nextjs-cache",E?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),B&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let f=(0,p.fromNodeOutgoingHttpHeaders)(d.value.headers);U&&L||f.delete(r.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||b.getHeader("Cache-Control")||f.get("Cache-Control")||f.set("Cache-Control",(0,q.getCacheControlHeader)(d.cacheControl)),await (0,o.I)(X,Y,new Response(d.value.body,{headers:f,status:d.value.status||200}));return}catch(b){if(b instanceof s.NoFallbackError||await v.onRequestError(a,b,{routerKind:"App Router",routePath:J,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:P,isOnDemandRevalidate:E})},!1,D),L)throw b;await (0,o.I)(X,Y,new Response(null,{status:500}));return}finally{(()=>{if(!d)return;let a=b.statusCode;d.setAttributes({"http.status_code":a,"next.rsc":!1}),a&&a>=500&&(d.setStatus({code:h.SpanStatusCode.ERROR}),d.setAttribute("error.type",a.toString()));let c=R.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==m.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=c.get("next.route")||J,g=`${Q} ${e}`;d.setAttributes({"next.route":e,"http.route":e,"next.span_name":g}),d.updateName(g),f&&f!==d&&(f.setAttribute("http.route",e),f.updateName(g))})()}};if(T&&S)await _(S,void 0);else{let b=R.getActiveScopeSpan();await R.withPropagatedContext(a.headers,()=>R.trace(m.BaseServerSpan.handleRequest,{spanName:`${Q} ${d}`,kind:h.SpanKind.SERVER,attributes:{"http.method":Q,"http.target":a.url}},a=>_(a,b)),void 0,!T)}}},81115:a=>{a.exports=require("constants")},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},94735:a=>{a.exports=require("events")},98995:a=>{a.exports=require("node:module")},99430:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{$M:()=>k,aw:()=>i,ew:()=>j,qQ:()=>l});var e=c(67112),f=c(43084),g=a([f]);f=(g.then?(await g)():g)[0];let l=262144;function h(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function i(a){if(null==a)return{};if(!h(a))return;let b=Object.entries(a);if(b.length>200)return;let c={};for(let[a,d]of b)if("string"==typeof d){if(d.length>65536)return;Object.defineProperty(c,a,{value:d,enumerable:!0,writable:!0,configurable:!0})}else{if(!h(d)||"string"!=typeof d.reference||!(d.reference.length<=256))return;Object.defineProperty(c,a,{value:{reference:d.reference},enumerable:!0,writable:!0,configurable:!0})}return c}function j(a){if(null==a)return{};if(!h(a))return;let b=Object.entries(a);if(b.length>200)return;let c={};for(let[a,d]of b){if("string"!=typeof d||d.length>256)return;Object.defineProperty(c,a,{value:d,enumerable:!0,writable:!0,configurable:!0})}return c}function k(a,b){let{takenNames:c,internals:d,environment:g=process.env}=b,h=(0,e.t2)(a.text,{rawPi:a.rawPi,takenNames:c});if(!h.ok)return{ok:!1,status:400,reason:"import-failed",error:"No MCP server could be read from the pasted text",notes:h.notes};let i=h.servers[a.server];if(!i)return{ok:!1,status:400,reason:"invalid-request",error:`The pasted text holds ${h.servers.length} server(s); there is no server ${a.server}`};let j=a.name??i.name;if(!(0,e.lw)(j))return{ok:!1,status:400,reason:"name-invalid",error:`"${j}" is not a server name pi accepts: use letters, digits, "_" and "-"`,name:j};if(c.includes(j))return{ok:!1,status:409,reason:"name-taken",error:`The file already defines MCP server "${j}"`,name:j,suggestedName:(0,e.a4)(j,c)};let k=(0,e.k9)(i,a.values,a.secretReferences);if(!k.ok)return{ok:!1,status:400,reason:"fields-incomplete",error:"Some values to fill in are missing or invalid",notes:k.notes};let l=d.validateMcpServerConfig(j,k.config);if("string"==typeof l)return{ok:!1,status:409,reason:"server-invalid",error:l,name:j};if((0,f.tF)(k.config,d))return{ok:!1,status:409,reason:"web-password",error:`"${j}" references PI_WEB_PASSWORD, so Pi Web does not add it`,name:j};if("project"===a.scope&&k.secretPaths.length>0)return{ok:!1,status:409,reason:"secret-global-only",error:`"${j}" holds a literal secret (${k.secretPaths.join(", ")}), so it is saved only in the global mcp.json`,name:j,fields:k.secretPaths};if(!i.rawPi){let b=function(a){let b=new Set;for(let c of Object.values(a.values))"object"==typeof c&&b.add(c.reference.trim());for(let c of Object.values(a.secretReferences??{}))b.add(c.trim());return b}(a),c=(function(a,b,c){let d=[];for(let{kind:e,value:g}of(0,f.xW)(a))if(!("env"===e||b.isCommandConfigValue(g)))for(let a of b.getConfigValueEnvVarNames(g))"PI_WEB_PASSWORD"!==a.toUpperCase()&&(void 0===c[a]||d.includes(a)||d.push(a));return d})(k.config,d,g).filter(a=>!b.has(a));if(c.filter(b=>!a.confirmHostEnv.includes(b)).length>0)return{ok:!1,status:409,reason:"host-env-confirm",error:`"${j}" would send these variables of the Pi Web host to its server: ${c.join(", ")}`,name:j,names:c}}return{ok:!0,name:j,entry:k.config}}d()}catch(a){d(a)}})}};var b=require("../../../webpack-runtime.js");b.C(a);var c=b.X(0,[2970,1813,426,974,5582,2498,3757,4698,1207,9165,6686],()=>b(b.s=81081));module.exports=c})();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/api/mcp/route"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{},"edgeSSRModuleMapping":{},"clientModules":{},"entryCSSFiles":{"/home/runner/work/pi-web/pi-web/app/api/mcp/route":[]},"rscModuleMapping":{},"edgeRscModuleMapping":{}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(()=>{var a={};a.id=1556,a.ids=[1556],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},8128:a=>{"use strict";a.exports=require("next/dist/server/runtime-reacts.external.js")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},13233:(a,b,c)=>{"use strict";c.r(b),c.d(b,{handler:()=>A,patchFetch:()=>z,routeModule:()=>v,serverHooks:()=>y,workAsyncStorage:()=>w,workUnitAsyncStorage:()=>x});var d=c(19225),e=c(84006),f=c(8317),g=c(99373),h=c(34775),i=c(24235),j=c(261),k=c(54365),l=c(90771),m=c(73461),n=c(67798),o=c(92280),p=c(62018),q=c(45696),r=c(47929),s=c(86439),t=c(10246),u=c(37527);let v=new d.AppRouteRouteModule({definition:{kind:e.RouteKind.APP_ROUTE,page:"/api/mcp/sign-in/[flowId]/route",pathname:"/api/mcp/sign-in/[flowId]",filename:"route",bundlePath:"app/api/mcp/sign-in/[flowId]/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/home/runner/work/pi-web/pi-web/app/api/mcp/sign-in/[flowId]/route.ts",nextConfigOutput:"",userland:()=>c(96359),...{}}),{workAsyncStorage:w,workUnitAsyncStorage:x,serverHooks:y}=v;function z(){return(0,f.patchFetch)({workAsyncStorage:w,workUnitAsyncStorage:x})}async function A(a,b,c){c.requestMeta&&(0,g.setRequestMeta)(a,c.requestMeta),v.isDev&&(0,g.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/mcp/sign-in/[flowId]/route";"/index"===d&&(d="/");let f=await v.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!f)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:w,deploymentId:x,params:y,nextConfig:z,parsedUrl:A,isDraftMode:B,prerenderManifest:C,routerServerContext:D,isOnDemandRevalidate:E,revalidateOnlyGenerated:F,resolvedPathname:G,clientReferenceManifest:H,serverActionsManifest:I}=f,J=(0,j.normalizeAppPath)(d),K=!!C.routes[G]&&(v.isDev||(0,t.isRouteCacheOwner)(G,v.cacheOwner,C.routes[G])),L=!!(C.dynamicRoutes[J]||K),M=async()=>((null==D?void 0:D.render404)?await D.render404(a,b,A,!1):b.end("This page could not be found"),null);if(L&&!B){let a=C.dynamicRoutes[J];if(a&&!1===a.fallback&&!K){if(z.adapterPath)return await M();throw new s.NoFallbackError}}let N=null;!L||v.isDev||B||(N="/index"===(N=G)?"/":N);let O=!0===v.isDev||!L,P=L&&!O;I&&H&&(0,i.setManifestsSingleton)({page:d,clientReferenceManifest:H,serverActionsManifest:I});let Q=a.method||"GET",R=(0,h.getTracer)(),S=R.getActiveScopeSpan(),T=!!(null==D?void 0:D.isWrappedByNextServer),U=!!(0,g.getRequestMeta)(a,"minimalMode"),V=(0,g.getRequestMeta)(a,"incrementalCache")||await v.getIncrementalCache(a,z,C,U);null==V||V.resetRequestCache(),globalThis.__incrementalCache=V;let W={params:y,previewProps:C.preview,renderOpts:{experimental:{authInterrupts:!!z.experimental.authInterrupts,useCacheTimeout:z.experimental.useCacheTimeout},cacheComponents:!!z.cacheComponents,validationLevel:z.experimental.instantInsights.validationLevel,isDraftMode:B,supportsDynamicResponse:O,incrementalCache:V,hmrRefreshHash:(0,g.getRequestMeta)(a,"hmrRefreshHash"),cacheLifeProfiles:z.cacheLife,staticPageGenerationTimeout:z.staticPageGenerationTimeout,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>v.onRequestError(a,b,d,e,D)},sharedContext:{buildId:w,deploymentId:x}},X=new k.NodeNextRequest(a),Y=new k.NodeNextResponse(b),Z=l.NextRequestAdapter.fromNodeNextRequest(X,(0,l.signalFromNodeResponse)(b)),$=async({previousCacheEntry:e})=>{try{if(!U&&E&&F&&!e)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await v.handle(Z,W);a.fetchMetrics=W.renderOpts.fetchMetrics;let f=W.renderOpts.pendingWaitUntil;f&&c.waitUntil&&(c.waitUntil(f),f=void 0);let g=W.renderOpts.collectedTags;if(!L)return await (0,o.I)(X,Y,d,f),null;{let a=await d.blob(),b=(0,p.toNodeOutgoingHttpHeaders)(d.headers);g&&(b[r.NEXT_CACHE_TAGS_HEADER]=g),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==W.renderOpts.collectedRevalidate&&!(W.renderOpts.collectedRevalidate>=r.INFINITE_CACHE)&&W.renderOpts.collectedRevalidate,e=void 0===W.renderOpts.collectedExpire||W.renderOpts.collectedExpire>=r.INFINITE_CACHE?!1!==c&&c>0?z.expireTime:void 0:W.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==e?void 0:e.isStale)&&await v.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:P,isOnDemandRevalidate:E})},!1,D),b}},_=async(d,f)=>{try{var g,i;let d=await v.handleResponse({req:a,nextConfig:z,cacheKey:N,routeKind:e.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:E,revalidateOnlyGenerated:F,responseGenerator:$,waitUntil:c.waitUntil,isMinimalMode:U});if(!L)return;if((null==d||null==(g=d.value)?void 0:g.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(i=d.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});U||b.setHeader("x-nextjs-cache",E?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),B&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let f=(0,p.fromNodeOutgoingHttpHeaders)(d.value.headers);U&&L||f.delete(r.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||b.getHeader("Cache-Control")||f.get("Cache-Control")||f.set("Cache-Control",(0,q.getCacheControlHeader)(d.cacheControl)),await (0,o.I)(X,Y,new Response(d.value.body,{headers:f,status:d.value.status||200}));return}catch(b){if(b instanceof s.NoFallbackError||await v.onRequestError(a,b,{routerKind:"App Router",routePath:J,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:P,isOnDemandRevalidate:E})},!1,D),L)throw b;await (0,o.I)(X,Y,new Response(null,{status:500}));return}finally{(()=>{if(!d)return;let a=b.statusCode;d.setAttributes({"http.status_code":a,"next.rsc":!1}),a&&a>=500&&(d.setStatus({code:h.SpanStatusCode.ERROR}),d.setAttribute("error.type",a.toString()));let c=R.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==m.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=c.get("next.route")||J,g=`${Q} ${e}`;d.setAttributes({"next.route":e,"http.route":e,"next.span_name":g}),d.updateName(g),f&&f!==d&&(f.setAttribute("http.route",e),f.updateName(g))})()}};if(T&&S)await _(S,void 0);else{let b=R.getActiveScopeSpan();await R.withPropagatedContext(a.headers,()=>R.trace(m.BaseServerSpan.handleRequest,{spanName:`${Q} ${d}`,kind:h.SpanKind.SERVER,attributes:{"http.method":Q,"http.target":a.url}},a=>_(a,b)),void 0,!T)}}},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{"use strict";a.exports=require("path")},44870:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},55511:a=>{"use strict";a.exports=require("crypto")},58864:(a,b,c)=>{"use strict";c.d(b,{A_:()=>g,Eb:()=>k,W3:()=>i,gB:()=>h,uK:()=>f});var d=c(33873);let e=/^[a-zA-Z]:[\\/]/;function f(a){return e.test(a)||a.startsWith("\\\\")||a.startsWith("//")}function g(a){let b=a.join("/"),c=i(b);return/^[a-zA-Z]:$/.test(c)?`${c}/`:f(c)?c:"/"+b.replace(/^\/+/,"")}function h(a){return a&&"win32"===process.platform?(0,d.normalize)(a):a}function i(a){return a.replace(/\\/g,"/")}function j(a){let b=(0,d.normalize)(h(a)),c=(0,d.parse)(b).root.length,e=b.length;for(;e>c&&b[e-1]===d.sep;)e--;return b.slice(0,e)}function k(a,b){if(a===b)return!0;if(!a||!b)return!1;let c=j(a),d=j(b);return"win32"===process.platform?c.toLowerCase()===d.toLowerCase():c===d}},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},63108:(a,b,c)=>{"use strict";function d(a,b,c){let d=globalThis,e=d[a]??=new Map,f=(e.get(b)??Promise.resolve()).then(c),g=f.then(()=>void 0,()=>void 0);return e.set(b,g),g.then(()=>{e.get(b)===g&&e.delete(b)}),f}c.d(b,{T:()=>d})},66544:(a,b,c)=>{"use strict";c.d(b,{E2:()=>k,EN:()=>j});var d=c(77030);function e(a){return(a.startsWith("[")&&a.endsWith("]")?a.slice(1,-1):a).toLowerCase().replace(/\.$/,"")}function f(a){if(!a||/[\s/@\\]/.test(a))return null;try{let b=new URL(`http://${a}`);if(b.username||b.password||"/"!==b.pathname||b.search||b.hash)return null;return e(b.hostname)}catch{return null}}function g(a){if(!a||/[\s/@\\]/.test(a))return null;try{let b=new URL(`http://${a}`);if(b.username||b.password||"/"!==b.pathname||b.search||b.hash)return null;let c=e(b.hostname);return b.port?`${c}:${b.port}`:c}catch{return null}}function h(){return[process.env.PI_WEB_HOSTNAME,...process.env.PI_WEB_ALLOWED_HOSTS?.split(",")??[]].filter(a=>!!a?.trim())}function i(a){try{return new URL(a).origin}catch{return null}}function j(a,b=h()){return!!function(a,b=h()){let c=a.headers.get("host"),g=c?f(c):null;return!!g&&(!!("localhost"===g||g.endsWith(".localhost")||(0,d.isIP)(g))||b.some(a=>{let b;return((b=a?.trim())?(0,d.isIP)(b)?e(b):f(b):null)===g}))}(a,b)&&(!!function(a){if("GET"!==a.method||"navigate"!==a.headers.get("sec-fetch-mode")||"document"!==a.headers.get("sec-fetch-dest")||"?1"!==a.headers.get("sec-fetch-user"))return!1;try{return/^\/api\/sessions\/[^/]+\/export$/.test(new URL(a.url).pathname)}catch{return!1}}(a)||!(a.headers.has("origin")||a.headers.has("sec-fetch-site"))||function(a){let b,c,d,e=a.headers.get("origin");if("cross-site"===a.headers.get("sec-fetch-site"))return!1;if(!e)return!0;let f=(b=new URL(a.url),(c=a.headers.get("host"))?i(`${b.protocol}//${c}`):null);if(null!==f&&i(e)===f)return!0;if("same-origin"!==a.headers.get("sec-fetch-site")||!a.headers.get("x-forwarded-proto"))return!1;let h=a.headers.get("host");if(!h)return!1;try{d=new URL(e).host}catch{return!1}let j=g(d);return null!==j&&j===g(h)}(a))}function k(a){let b=a.headers.get("content-type")?.split(";",1)[0]?.trim().toLowerCase();return"application/json"===b||!!(b?.startsWith("application/")&&b.endsWith("+json"))}},73024:a=>{"use strict";a.exports=require("node:fs")},75430:a=>{"use strict";a.exports=import("@earendil-works/pi-coding-agent")},76760:a=>{"use strict";a.exports=require("node:path")},77030:a=>{"use strict";a.exports=require("node:net")},77598:a=>{"use strict";a.exports=require("node:crypto")},78335:()=>{},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},96359:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{DELETE:()=>l,GET:()=>j,POST:()=>k,dynamic:()=>m});var e=c(23211),f=c(66686),g=c(66544),h=a([f]);f=(h.then?(await h)():h)[0];let m="force-dynamic";function i(a,b,c){return e.NextResponse.json({error:c,reason:b},{status:a})}let n="No sign-in has that id: it ended over a minute ago, or Pi Web restarted";async function j(a,{params:b}){if(!(0,g.EN)(a))return i(403,"request-denied","Untrusted API request");let{flowId:c}=await b,d=(0,f.nP)(c);return d?e.NextResponse.json(d):i(404,"sign-in-unknown",n)}async function k(a,{params:b}){let c;if(!(0,g.EN)(a))return i(403,"request-denied","Untrusted API request");if(!(0,g.E2)(a))return i(415,"content-type","Content-Type must be application/json");let{flowId:d}=await b;try{c=await a.json()}catch{return i(400,"invalid-request","Invalid JSON body")}let h="object"!=typeof c||null===c||Array.isArray(c)?void 0:c.redirectUrl,j=(0,f.e3)(d,h);return j.ok?e.NextResponse.json(j.flow):i(j.status,j.reason,j.error)}async function l(a,{params:b}){if(!(0,g.EN)(a))return i(403,"request-denied","Untrusted API request");let{flowId:c}=await b,d=(0,f.pj)(c);return d?e.NextResponse.json(d):i(404,"sign-in-unknown",n)}d()}catch(a){d(a)}})},96487:()=>{}};var b=require("../../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[2970,1813,3757,6686],()=>b(b.s=13233));module.exports=c})();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/api/mcp/sign-in/[flowId]/route"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{},"edgeSSRModuleMapping":{},"clientModules":{},"entryCSSFiles":{"/home/runner/work/pi-web/pi-web/app/api/mcp/sign-in/[flowId]/route":[]},"rscModuleMapping":{},"edgeRscModuleMapping":{}};
|