@rexvane/piweb 0.3.18 → 0.3.19
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 -1
- package/.next/app-path-routes-manifest.json +8 -6
- package/.next/build-manifest.json +3 -3
- package/.next/prerender-manifest.json +4 -4
- package/.next/react-loadable-manifest.json +23 -9
- package/.next/required-server-files.js +2 -1
- package/.next/required-server-files.json +2 -1
- package/.next/routes-manifest.json +12 -0
- package/.next/server/app/_global-error/page.js +2 -2
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page.js +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +2 -2
- package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/api/agent/[id]/events/route.js +3 -3
- package/.next/server/app/api/agent/[id]/events/route.js.nft.json +1 -1
- package/.next/server/app/api/agent/[id]/route.js +1 -1
- package/.next/server/app/api/agent/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/agent/[id]/tree/route.js +1 -1
- package/.next/server/app/api/agent/[id]/tree/route.js.nft.json +1 -1
- package/.next/server/app/api/agent/new/route.js +1 -1
- package/.next/server/app/api/agent/new/route.js.nft.json +1 -1
- package/.next/server/app/api/config/route.js +1 -1
- package/.next/server/app/api/config/route.js.nft.json +1 -1
- package/.next/server/app/api/files/route.js +1 -1
- package/.next/server/app/api/files/route.js.nft.json +1 -1
- package/.next/server/app/api/fs/route.js +1 -0
- package/.next/server/app/api/fs/route.js.nft.json +1 -0
- package/.next/server/app/api/fs/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/git/route.js +2 -2
- package/.next/server/app/api/git/route.js.nft.json +1 -1
- package/.next/server/app/api/growth/route.js +1 -1
- package/.next/server/app/api/growth/route.js.nft.json +1 -1
- package/.next/server/app/api/health/route.js +1 -1
- package/.next/server/app/api/models/route.js +1 -1
- package/.next/server/app/api/models/route.js.nft.json +1 -1
- package/.next/server/app/api/pi-settings/route.js +1 -1
- package/.next/server/app/api/pi-settings/route.js.nft.json +1 -1
- package/.next/server/app/api/plugins/route.js +1 -1
- package/.next/server/app/api/plugins/route.js.nft.json +1 -1
- package/.next/server/app/api/prompts/route.js +1 -1
- package/.next/server/app/api/prompts/route.js.nft.json +1 -1
- package/.next/server/app/api/remote/route.js +8 -0
- package/.next/server/app/api/remote/route.js.nft.json +1 -0
- package/.next/server/app/api/remote/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/security/route.js +1 -1
- package/.next/server/app/api/security/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/[id]/export/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/export/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/[id]/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/import/route.js +2 -2
- package/.next/server/app/api/sessions/import/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/route.js +1 -1
- package/.next/server/app/api/sessions/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/route.js +1 -1
- package/.next/server/app/api/skills/route.js.nft.json +1 -1
- package/.next/server/app/api/update/route.js +2 -2
- package/.next/server/app/api/update/route.js.nft.json +1 -1
- package/.next/server/app/api/version/route.js +1 -1
- package/.next/server/app/api/version/route.js.nft.json +1 -1
- package/.next/server/app/api/web-auth/route.js +3 -1
- package/.next/server/app/api/workspaces/route.js +1 -1
- package/.next/server/app/api/workspaces/route.js.nft.json +1 -1
- package/.next/server/app/icon.svg/route.js +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +4 -4
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/index.segments/_full.segment.rsc +4 -4
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/login/page.js +1 -1
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/login.html +1 -1
- package/.next/server/app/login.rsc +3 -3
- package/.next/server/app/login.segments/_full.segment.rsc +3 -3
- package/.next/server/app/login.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +3 -3
- package/.next/server/app/page.js +1 -1
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +8 -6
- package/.next/server/chunks/229.js +1 -1
- package/.next/server/chunks/243.js +1 -0
- package/.next/server/chunks/393.js +1 -0
- package/.next/server/chunks/496.js +1 -1
- package/.next/server/chunks/538.js +1 -0
- package/.next/server/chunks/686.js +1 -4
- package/.next/server/chunks/802.js +2 -0
- package/.next/server/chunks/807.js +1 -0
- package/.next/server/chunks/920.js +4 -0
- package/.next/server/chunks/924.js +6 -0
- package/.next/server/instrumentation.js +1 -0
- package/.next/server/instrumentation.js.nft.json +1 -0
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/middleware.js +4 -3
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/JDGSR-TIbk9qZWcUNYIX3/_buildManifest.js +1 -0
- package/.next/static/chunks/2716.7ad073038e94a802.js +1 -0
- package/.next/static/chunks/316-5ea443ee6b512aa9.js +1 -0
- package/.next/static/chunks/4673.8a5a9e6855350e34.js +1 -0
- package/.next/static/chunks/4686-e3825f3b6a384aa1.js +1 -0
- package/.next/static/chunks/4778.e4c9ed093a413bc4.js +1 -0
- package/.next/static/chunks/5173.91ddb803785009f8.js +1 -0
- package/.next/static/chunks/839.7403c6bdace4c56c.js +1 -0
- package/.next/static/chunks/8552.6bfe3e101250b20f.js +1 -0
- package/.next/static/chunks/app/_global-error/page-b179d9f7f6f2daf9.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/events/route-b179d9f7f6f2daf9.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/route-b179d9f7f6f2daf9.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/tree/route-b179d9f7f6f2daf9.js +1 -0
- package/.next/static/chunks/app/api/agent/new/route-b179d9f7f6f2daf9.js +1 -0
- package/.next/static/chunks/app/api/config/route-b179d9f7f6f2daf9.js +1 -0
- package/.next/static/chunks/app/api/files/route-b179d9f7f6f2daf9.js +1 -0
- package/.next/static/chunks/app/api/fs/route-b179d9f7f6f2daf9.js +1 -0
- package/.next/static/chunks/app/api/git/route-b179d9f7f6f2daf9.js +1 -0
- package/.next/static/chunks/app/api/growth/route-b179d9f7f6f2daf9.js +1 -0
- package/.next/static/chunks/app/api/health/route-b179d9f7f6f2daf9.js +1 -0
- package/.next/static/chunks/app/api/models/route-b179d9f7f6f2daf9.js +1 -0
- package/.next/static/chunks/app/api/pi-settings/route-b179d9f7f6f2daf9.js +1 -0
- package/.next/static/chunks/app/api/plugins/route-b179d9f7f6f2daf9.js +1 -0
- package/.next/static/chunks/app/api/prompts/route-b179d9f7f6f2daf9.js +1 -0
- package/.next/static/chunks/app/api/remote/route-b179d9f7f6f2daf9.js +1 -0
- package/.next/static/chunks/app/api/security/route-b179d9f7f6f2daf9.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/export/route-b179d9f7f6f2daf9.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/route-b179d9f7f6f2daf9.js +1 -0
- package/.next/static/chunks/app/api/sessions/import/route-b179d9f7f6f2daf9.js +1 -0
- package/.next/static/chunks/app/api/sessions/route-b179d9f7f6f2daf9.js +1 -0
- package/.next/static/chunks/app/api/skills/route-b179d9f7f6f2daf9.js +1 -0
- package/.next/static/chunks/app/api/update/route-b179d9f7f6f2daf9.js +1 -0
- package/.next/static/chunks/app/api/version/route-b179d9f7f6f2daf9.js +1 -0
- package/.next/static/chunks/app/api/web-auth/route-b179d9f7f6f2daf9.js +1 -0
- package/.next/static/chunks/app/api/workspaces/route-b179d9f7f6f2daf9.js +1 -0
- package/.next/static/chunks/app/login/page-5e276a1eeb8867df.js +1 -0
- package/.next/static/chunks/app/page-2e425ef83fba0782.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-b179d9f7f6f2daf9.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-b179d9f7f6f2daf9.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-b179d9f7f6f2daf9.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-b179d9f7f6f2daf9.js +1 -0
- package/.next/static/chunks/webpack-bd2b9202ecbcdcaa.js +1 -0
- package/.next/static/css/7391c42e1ae617f9.css +1 -0
- package/.next/types/app/api/fs/route.ts +353 -0
- package/.next/types/app/api/remote/route.ts +353 -0
- package/.next/types/routes.d.ts +3 -1
- package/.next/types/validator.ts +18 -0
- package/README.md +56 -10
- package/next.config.ts +3 -2
- package/package.json +3 -3
- package/scripts/launcher.mjs +194 -13
- package/scripts/release.mjs +0 -2
- package/src/app/api/agent/[id]/events/route.ts +11 -6
- package/src/app/api/fs/route.ts +119 -0
- package/src/app/api/growth/route.ts +11 -6
- package/src/app/api/models/route.ts +21 -9
- package/src/app/api/remote/route.ts +67 -0
- package/src/app/api/sessions/[id]/export/route.ts +11 -1
- package/src/app/api/sessions/route.ts +3 -1
- package/src/app/api/web-auth/route.ts +45 -49
- package/src/app/api/workspaces/route.ts +16 -0
- package/src/app/globals.css +6 -0
- package/src/app/login/page.tsx +8 -60
- package/src/components/AppShell.tsx +202 -155
- package/src/components/ChatInput.tsx +61 -6
- package/src/components/ChatWindow.tsx +274 -132
- package/src/components/DirectoryPicker.tsx +189 -0
- package/src/components/DrawerPanel.tsx +164 -0
- package/src/components/FileViewer.tsx +2 -2
- package/src/components/GrowthTree.tsx +6 -5
- package/src/components/MarkdownBlock.tsx +134 -0
- package/src/components/OutlineRail.tsx +22 -1
- package/src/components/ProjectPanel.tsx +197 -14
- package/src/components/RemoteSection.tsx +232 -0
- package/src/components/SessionImportSection.tsx +60 -38
- package/src/components/SettingsPanel.tsx +104 -57
- package/src/components/icons.tsx +23 -0
- package/src/hooks/useGrowth.ts +47 -25
- package/src/hooks/usePiWeb.ts +100 -14
- package/src/i18n.tsx +115 -28
- package/src/instrumentation-node.ts +35 -0
- package/src/instrumentation.ts +18 -0
- package/src/lib/agent-config.ts +134 -0
- package/src/lib/agent-manager.ts +243 -61
- package/src/lib/auth-throttle.ts +102 -0
- package/src/lib/auth.ts +35 -27
- package/src/lib/files-service.ts +61 -1
- package/src/lib/font.ts +84 -0
- package/src/lib/git-service.ts +5 -3
- package/src/lib/growth-service.ts +78 -30
- package/src/lib/growth-tracker.ts +91 -9
- package/src/lib/models-service.ts +36 -11
- package/src/lib/pi-settings.ts +10 -12
- package/src/lib/pi.ts +145 -18
- package/src/lib/plugins-service.ts +67 -35
- package/src/lib/remote/assets.json +4 -0
- package/src/lib/remote/mobile-proxy.ts +149 -0
- package/src/lib/remote/supervisor.ts +482 -0
- package/src/lib/security-service.ts +6 -11
- package/src/lib/session-import/claude.ts +45 -21
- package/src/lib/session-reader.ts +106 -3
- package/src/lib/skills-service.ts +34 -12
- package/src/lib/text-sanitize.ts +12 -0
- package/src/lib/theme.ts +3 -0
- package/src/lib/types.ts +16 -2
- package/src/lib/update-service.ts +0 -1
- package/src/lib/web-auth-shared.ts +5 -1
- package/src/lib/web-auth.ts +139 -22
- package/src/lib/web-launch-token.ts +55 -0
- package/src/lib/web-secret.ts +182 -0
- package/src/lib/workspace-store.ts +91 -7
- package/src/proxy.ts +46 -12
- package/.next/server/chunks/532.js +0 -1
- package/.next/static/chunks/2155.2f27fe7098987699.js +0 -1
- package/.next/static/chunks/2608.ec8ff1f5767c9056.js +0 -1
- package/.next/static/chunks/2716.93be8ad5c970c516.js +0 -1
- package/.next/static/chunks/4632.112d2e893d48d188.js +0 -1
- package/.next/static/chunks/4673.c1fb1580efc6ace7.js +0 -1
- package/.next/static/chunks/4686-f4a037d609cea3f2.js +0 -1
- package/.next/static/chunks/692-7992db0ae9cc3021.js +0 -1
- package/.next/static/chunks/app/_global-error/page-f77e9ede9808b18e.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/events/route-f77e9ede9808b18e.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/route-f77e9ede9808b18e.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/tree/route-f77e9ede9808b18e.js +0 -1
- package/.next/static/chunks/app/api/agent/new/route-f77e9ede9808b18e.js +0 -1
- package/.next/static/chunks/app/api/config/route-f77e9ede9808b18e.js +0 -1
- package/.next/static/chunks/app/api/files/route-f77e9ede9808b18e.js +0 -1
- package/.next/static/chunks/app/api/git/route-f77e9ede9808b18e.js +0 -1
- package/.next/static/chunks/app/api/growth/route-f77e9ede9808b18e.js +0 -1
- package/.next/static/chunks/app/api/health/route-f77e9ede9808b18e.js +0 -1
- package/.next/static/chunks/app/api/models/route-f77e9ede9808b18e.js +0 -1
- package/.next/static/chunks/app/api/pi-settings/route-f77e9ede9808b18e.js +0 -1
- package/.next/static/chunks/app/api/plugins/route-f77e9ede9808b18e.js +0 -1
- package/.next/static/chunks/app/api/prompts/route-f77e9ede9808b18e.js +0 -1
- package/.next/static/chunks/app/api/security/route-f77e9ede9808b18e.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/export/route-f77e9ede9808b18e.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/route-f77e9ede9808b18e.js +0 -1
- package/.next/static/chunks/app/api/sessions/import/route-f77e9ede9808b18e.js +0 -1
- package/.next/static/chunks/app/api/sessions/route-f77e9ede9808b18e.js +0 -1
- package/.next/static/chunks/app/api/skills/route-f77e9ede9808b18e.js +0 -1
- package/.next/static/chunks/app/api/update/route-f77e9ede9808b18e.js +0 -1
- package/.next/static/chunks/app/api/version/route-f77e9ede9808b18e.js +0 -1
- package/.next/static/chunks/app/api/web-auth/route-f77e9ede9808b18e.js +0 -1
- package/.next/static/chunks/app/api/workspaces/route-f77e9ede9808b18e.js +0 -1
- package/.next/static/chunks/app/login/page-52ef4841cbd199a8.js +0 -1
- package/.next/static/chunks/app/page-b51087831582ee37.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-f77e9ede9808b18e.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-f77e9ede9808b18e.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-f77e9ede9808b18e.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-f77e9ede9808b18e.js +0 -1
- package/.next/static/chunks/webpack-c31263fd83d75ce6.js +0 -1
- package/.next/static/css/0cd968b9b62035b5.css +0 -1
- package/.next/static/en03hnPiuro0rnf8QkFEe/_buildManifest.js +0 -1
- /package/.next/static/{en03hnPiuro0rnf8QkFEe → JDGSR-TIbk9qZWcUNYIX3}/_ssgManifest.js +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(()=>{var a={};a.id=437,a.ids=[437],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")},7371:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{POST:()=>i,dynamic:()=>j});var e=c(23211),f=c(66562),g=c(28686),h=a([f,g]);[f,g]=h.then?(await h)():h;let j="force-dynamic";async function i(a){let b;try{b=await a.json()}catch{return e.NextResponse.json({success:!1,error:"invalid JSON body"},{status:400})}if(!b||"object"!=typeof b||Array.isArray(b))return e.NextResponse.json({success:!1,error:"expected an object body"},{status:400});let{target:c,action:d}=b;if("piweb"!==c&&"pi"!==c)return e.NextResponse.json({success:!1,error:"unknown target"},{status:400});if("check"!==d&&"update"!==d)return e.NextResponse.json({success:!1,error:"unknown action"},{status:400});try{if("check"===d)return e.NextResponse.json({success:!0,data:await (0,f.lX)(c)});let a=async()=>{if(Object.values((0,g.Rq)()).some(a=>a.streaming))throw new f.TR("An agent session is running. Wait for it to finish and update in a maintenance window; do not start new sessions until the release is ready.")};return await a(),e.NextResponse.json({success:!0,data:await (0,f.PG)(c,{assertIdle:a})})}catch(a){return e.NextResponse.json({success:!1,error:a instanceof Error?a.message:String(a)},{status:a instanceof f.TR?409:500})}}d()}catch(a){d(a)}})},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")},12412:a=>{"use strict";a.exports=require("assert")},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},27910:a=>{"use strict";a.exports=require("stream")},28354:a=>{"use strict";a.exports=require("util")},29021:a=>{"use strict";a.exports=require("fs")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},31421:a=>{"use strict";a.exports=require("node:child_process")},33873:a=>{"use strict";a.exports=require("path")},39006:a=>{"use strict";a.exports={rE:"0.3.18"}},41300:(a,b,c)=>{"use strict";c.d(b,{e:()=>f});var d=c(73024),e=c(73136);function f(a){if(!process.argv[1])return!1;try{return d.realpathSync(process.argv[1])===d.realpathSync((0,e.fileURLToPath)(a))}catch{return!1}}},41948:(a,b,c)=>{"use strict";c.d(b,{d:()=>f});var d=c(31421);async function e(a){if(!a.pid)return void a.kill();if("win32"!==process.platform){try{process.kill(-a.pid,"SIGKILL")}catch{a.kill("SIGKILL")}return}await new Promise(b=>{let c=(0,d.spawn)("taskkill",["/PID",String(a.pid),"/T","/F"],{stdio:"ignore",windowsHide:!0}),e=setTimeout(()=>{a.kill(),c.kill(),b()},1e4),f=()=>{clearTimeout(e),b()};c.once("error",()=>{a.kill(),f()}),c.once("close",f)})}function f(a,b,{cwd:c,env:g=process.env,timeoutMs:h=6e5,signal:i}){return new Promise((f,j)=>{if(i?.aborted)return void j(Error("release cancelled"));let k="win32"===process.platform&&"npm"===a,l=(0,d.spawn)(k?g.ComSpec||"cmd.exe":a,k?["/d","/c","npm",...b]:b,{cwd:c,env:g,windowsHide:!0,detached:"win32"!==process.platform,stdio:["ignore","pipe","pipe"]}),m="",n="",o=!1,p=!1,q=()=>{clearTimeout(u),i?.removeEventListener("abort",t)},r=a=>{p||(p=!0,q(),j(a))},s=a=>{p||o||(o=!0,e(l).then(()=>r(Error(a)),r))},t=()=>s("release cancelled; command process tree terminated"),u=setTimeout(()=>s(`timeout after ${Math.round(h/1e3)}s: ${a} ${b.join(" ")}`),h);i?.addEventListener("abort",t,{once:!0}),i?.aborted&&t(),l.stdout.on("data",a=>{m=(m+a).slice(-262144)}),l.stderr.on("data",a=>{n=(n+a).slice(-262144)}),l.once("error",a=>{o||r(a)}),l.once("close",a=>{if(!o&&!p){if(0!==a)return void r(Error((n||m||`exit code ${a}`).trim().slice(-1e3)));p=!0,q(),f(m)}})})}},44870:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},46193:a=>{"use strict";a.exports=require("node:string_decoder")},48161:a=>{"use strict";a.exports=require("node:os")},48379:a=>{function b(a){return Promise.resolve().then(()=>{var b=Error("Cannot find module '"+a+"'");throw b.code="MODULE_NOT_FOUND",b})}b.keys=()=>[],b.resolve=b,b.id=48379,a.exports=b},51455:a=>{"use strict";a.exports=require("node:fs/promises")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},66562:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{PG:()=>z,TR:()=>u,lX:()=>y});var e=c(51455),f=c.n(e),g=c(76760),h=c.n(g),i=c(72053),j=c(93340),k=c(41948),l=c(68293),m=c(62433),n=c(75717),o=c(92584),p=a([i,m,n]);[i,m,n]=p.then?(await p)():p;class u extends Error{}function q(a){if("piweb"!==a&&"pi"!==a)throw Error("unknown target")}let v="@rexvane/piweb";function r(a){return h().resolve(a).split(/[\\/]/).includes("node_modules")}function s(a=process.platform){return"win32"!==a}let w=`npm install -g ${v}@latest`;async function t(a){let b=JSON.parse(await f().readFile(a,"utf8"));if("string"!=typeof b.version||!b.version)throw Error(`no version field in ${a}`);return b.version}let x=function({root:a=o.V,run:b=k.d,versions:c=n.Y,env:d=process.env,platform:e=process.platform}={}){let g=!1,p={...d};async function x(){return(0,j.f6)(a)}async function y(a,c){if(!s(e))throw Error(`Windows cannot replace a running PiWeb. Stop piweb, then run: ${w}`);await c();let d=(c,d)=>b("npm",c,{cwd:a,env:p,timeoutMs:d}),f=h().join(a,"package.json"),g=await t(f);await d(["install","-g",`${v}@latest`,"--no-audit","--no-fund"],6e5),await c(),(0,j.f6)(a);let i=await t(f);if(i===g){let a=(await d(["view",`${v}@latest`,"version"],3e4)).trim().split(/\r?\n/)[0];if((0,l.U)(a,g))throw Error(`npm updated a different copy of ${v}; this installation is not the global package. Update it the way it was installed.`)}return{...(0,j.kI)(a,".next"),version:i,needsRestart:!0}}async function z(a,{assertIdle:c=async()=>{}}={}){if(q(a),g)throw new u("an update is already running");g=!0;try{let e=await x();if("piweb"===a&&r(e))return await y(e,c);let g="";return{...await (0,i.vn)({root:e,env:d,run:b,beforePrepare:async()=>{if(await c(),"piweb"===a){let a=a=>b("git",a,{cwd:e,env:p,timeoutMs:15e3}),c=(await a(["rev-parse","--show-toplevel"])).trim(),d=await f().realpath(c).catch(()=>h().resolve(c));if(!(0,m.Eb)(d,e))throw Error("refusing to update: PiWeb is not the Git installation root");if((await a(["status","--porcelain","--untracked-files=no"])).trim())throw Error("PiWeb has local tracked changes; preserve them before updating (no files were reset)")}await c()},prepare:async d=>{let{env:f,signal:k}=d,l=(a,c,d)=>b(a,c,{cwd:e,env:f,timeoutMs:d,signal:k});"pi"===a?g=await (0,i.eh)(d,c):(await c(),await l("git",["pull","--ff-only","origin","main"],12e4),(0,j.f6)(e),await c(),await l("npm",["install","--no-audit","--no-fund"],6e5),g=await t(h().join(e,"package.json")))}}),version:g,needsRestart:!0}}finally{g=!1}}return delete p.PI_WEB_PASSWORD,{checkForUpdate:async function(a){if(q(a),g)throw new u("an update is already running");let d=await x(),f=(a,c,e)=>b(a,c,{cwd:d,env:p,timeoutMs:e}),{piWeb:h,piEngine:j}=await c();if("pi"===a){let a=(await f("npm",["view",i.V0,"version"],3e4)).trim().split(/\r?\n/)[0];return{current:j,latest:a,canUpdate:(0,l.U)(a,j),selfUpdate:!0}}if(r(d)){let a=(await f("npm",["view",v,"version"],3e4)).trim().split(/\r?\n/)[0];if(!a)throw Error(`cannot read the published version of ${v}`);let b=s(e);return{current:h,latest:a,canUpdate:(0,l.U)(a,h),selfUpdate:b,...b?{}:{command:w}}}await f("git",["fetch","origin","main","--tags"],3e4);let k=Number((await f("git",["rev-list","--count","HEAD..origin/main"],15e3)).trim());if(!Number.isSafeInteger(k)||k<0)throw Error("invalid upstream commit count");let m=JSON.parse(await f("git",["show","origin/main:package.json"],15e3));if(!["piweb","pi-web","@rexvane/piweb"].includes(String(m.name))||"string"!=typeof m.version||!m.version)throw Error("upstream is not a PiWeb package");return{current:h,latest:m.version,behind:k,canUpdate:(0,l.U)(m.version,h)||k>0,selfUpdate:!0}},runUpdate:z}}(),y=x.checkForUpdate,z=x.runUpdate;d()}catch(a){d(a)}})},68293:(a,b,c)=>{"use strict";function d(a){let b=a.trim().replace(/^v/i,"").match(/^(\d+)\.(\d+)(?:\.(\d+))?(?:-([0-9A-Za-z.-]+))?/);return b?{nums:[Number(b[1]),Number(b[2]),Number(b[3]??0)],pre:b[4]?b[4].split("."):[]}:null}function e(a,b){let c=d(a),e=d(b);if(!c||!e)return!1;for(let a=0;a<3;a+=1)if(c.nums[a]!==e.nums[a])return c.nums[a]>e.nums[a];if(!c.pre.length||!e.pre.length)return 0===c.pre.length&&e.pre.length>0;let f=Math.max(c.pre.length,e.pre.length);for(let a=0;a<f;a+=1){let b=c.pre[a],d=e.pre[a];if(void 0===b)break;if(void 0===d)return!0;let f=/^\d+$/.test(b),g=/^\d+$/.test(d);if(f&&g){if(Number(b)!==Number(d))return Number(b)>Number(d);continue}if(f!==g)return g;if(b!==d)return b>d}return!1}c.d(b,{U:()=>e})},69933:(a,b,c)=>{"use strict";c.r(b),c.d(b,{handler:()=>z,patchFetch:()=>y,routeModule:()=>u,serverHooks:()=>x,workAsyncStorage:()=>v,workUnitAsyncStorage:()=>w});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(37527);let u=new d.AppRouteRouteModule({definition:{kind:e.RouteKind.APP_ROUTE,page:"/api/update/route",pathname:"/api/update",filename:"route",bundlePath:"app/api/update/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/home/runner/work/PiWeb/PiWeb/src/app/api/update/route.ts",nextConfigOutput:"",userland:()=>c(7371),...{}}),{workAsyncStorage:v,workUnitAsyncStorage:w,serverHooks:x}=u;function y(){return(0,f.patchFetch)({workAsyncStorage:v,workUnitAsyncStorage:w})}async function z(a,b,c){c.requestMeta&&(0,g.setRequestMeta)(a,c.requestMeta),u.isDev&&(0,g.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/update/route";"/index"===d&&(d="/");let f=await u.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:v,deploymentId:w,params:x,nextConfig:y,parsedUrl:z,isDraftMode:A,prerenderManifest:B,routerServerContext:C,isOnDemandRevalidate:D,revalidateOnlyGenerated:E,resolvedPathname:F,clientReferenceManifest:G,serverActionsManifest:H}=f,I=(0,j.normalizeAppPath)(d),J=!!(B.dynamicRoutes[I]||B.routes[F]),K=async()=>((null==C?void 0:C.render404)?await C.render404(a,b,z,!1):b.end("This page could not be found"),null);if(J&&!A){let a=!!B.routes[F],b=B.dynamicRoutes[I];if(b&&!1===b.fallback&&!a){if(y.adapterPath)return await K();throw new s.NoFallbackError}}let L=null;!J||u.isDev||A||(L="/index"===(L=F)?"/":L);let M=!0===u.isDev||!J,N=J&&!M;H&&G&&(0,i.setManifestsSingleton)({page:d,clientReferenceManifest:G,serverActionsManifest:H});let O=a.method||"GET",P=(0,h.getTracer)(),Q=P.getActiveScopeSpan(),R=!!(null==C?void 0:C.isWrappedByNextServer),S=!!(0,g.getRequestMeta)(a,"minimalMode"),T=(0,g.getRequestMeta)(a,"incrementalCache")||await u.getIncrementalCache(a,y,B,S);null==T||T.resetRequestCache(),globalThis.__incrementalCache=T;let U={params:x,previewProps:B.preview,renderOpts:{experimental:{authInterrupts:!!y.experimental.authInterrupts,useCacheTimeout:y.experimental.useCacheTimeout},cacheComponents:!!y.cacheComponents,validationLevel:y.experimental.instantInsights.validationLevel,supportsDynamicResponse:M,incrementalCache:T,hmrRefreshHash:(0,g.getRequestMeta)(a,"hmrRefreshHash"),cacheLifeProfiles:y.cacheLife,staticPageGenerationTimeout:y.staticPageGenerationTimeout,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>u.onRequestError(a,b,d,e,C)},sharedContext:{buildId:v,deploymentId:w}},V=new k.NodeNextRequest(a),W=new k.NodeNextResponse(b),X=l.NextRequestAdapter.fromNodeNextRequest(V,(0,l.signalFromNodeResponse)(b)),Y=async({previousCacheEntry:e})=>{try{if(!S&&D&&E&&!e)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await u.handle(X,U);a.fetchMetrics=U.renderOpts.fetchMetrics;let f=U.renderOpts.pendingWaitUntil;f&&c.waitUntil&&(c.waitUntil(f),f=void 0);let g=U.renderOpts.collectedTags;if(!J)return await (0,o.I)(V,W,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!==U.renderOpts.collectedRevalidate&&!(U.renderOpts.collectedRevalidate>=r.INFINITE_CACHE)&&U.renderOpts.collectedRevalidate,e=void 0===U.renderOpts.collectedExpire||U.renderOpts.collectedExpire>=r.INFINITE_CACHE?!1!==c&&c>0?y.expireTime:void 0:U.renderOpts.collectedExpire;return{value:{kind:t.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 u.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:N,isOnDemandRevalidate:D})},!1,C),b}},Z=async(d,f)=>{try{var g,i;let d=await u.handleResponse({req:a,nextConfig:y,cacheKey:L,routeKind:e.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:B,isRoutePPREnabled:!1,isOnDemandRevalidate:D,revalidateOnlyGenerated:E,responseGenerator:Y,waitUntil:c.waitUntil,isMinimalMode:S});if(!J)return;if((null==d||null==(g=d.value)?void 0:g.kind)!==t.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});S||b.setHeader("x-nextjs-cache",D?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),A&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let f=(0,p.fromNodeOutgoingHttpHeaders)(d.value.headers);S&&J||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)(V,W,new Response(d.value.body,{headers:f,status:d.value.status||200}));return}catch(b){if(b instanceof s.NoFallbackError||await u.onRequestError(a,b,{routerKind:"App Router",routePath:I,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:N,isOnDemandRevalidate:D})},!1,C),J)throw b;await (0,o.I)(V,W,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=P.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")||I,g=`${O} ${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(R&&Q)await Z(Q,void 0);else{let b=P.getActiveScopeSpan();await P.withPropagatedContext(a.headers,()=>P.trace(m.BaseServerSpan.handleRequest,{spanName:`${O} ${d}`,kind:h.SpanKind.SERVER,attributes:{"http.method":O,"http.target":a.url}},a=>Z(a,b)),void 0,!R)}}},72053:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{V0:()=>v,eh:()=>r,vn:()=>s});var e=c(51455),f=c(73024),g=c(76760),h=c(77598),i=c(98995),j=c(73136),k=c(93340),l=c(41948),m=c(41300);let a=function({env:a=process.env,cwd:b=process.cwd(),moduleUrl:c}={}){if(a.PI_WEB_ROOT)return g.resolve(a.PI_WEB_ROOT);if("string"==typeof c)try{let a=g.resolve(g.dirname((0,j.fileURLToPath)(c)),"..");if((0,f.existsSync)(g.join(a,"scripts","release.mjs")))return a}catch{}return g.resolve(b)}({moduleUrl:"file:///home/runner/work/PiWeb/PiWeb/scripts/release.mjs"}),t=`${k.Dy}/update.lock`,u=`${k.Dy}/tsconfig.json`;async function n(a,b,c){let d=(0,k.V6)(a,b),f=(0,k.V6)(a,`${b}.${(0,h.randomUUID)()}.tmp`),g=await e.open(f,"wx",384);try{try{await g.writeFile(`${JSON.stringify(c,null,2)}
|
|
2
|
-
`,"utf8"),await g.sync()}finally{await g.close()}await e.rename(f,d)}finally{await e.rm(f,{force:!0})}}async function o(a){let b,c=(0,k.V6)(a,t);try{b=await e.open(c,"wx",384)}catch(a){if("EEXIST"===a.code)throw Error(`an update/build is already running (${c}); after an interrupted build, confirm its process tree has stopped before removing this lock and retrying npm run build:release`);throw a}try{await b.writeFile(JSON.stringify({pid:process.pid,startedAt:new Date().toISOString()}))}catch(a){throw await b.close(),await e.unlink(c),a}return async()=>{await b.close(),await e.unlink(c)}}async function p(a,b){let c=b.slice(`${k.Dy}/`.length);await n(a,u,{extends:"../tsconfig.json",compilerOptions:{tsBuildInfoFile:`./${c}.tsbuildinfo`},include:["../next-env.d.ts","../*.ts","../*.mts","../src/**/*.ts","../src/**/*.tsx","../tests/**/*.ts","../tests/**/*.tsx",`./${c}/types/**/*.ts`,`./${c}/dev/types/**/*.ts`],exclude:["../node_modules","../pi","../dsh","../bin"]})}async function q(a=process.cwd(),b=process.env){let d=(0,k.f6)(a),e=(0,k.Qz)(d,b.PIWEB_BUILD_DIR);if(!e.startsWith(`${k.Dy}/`))throw Error("release requires an isolated build output");let f=(0,i.createRequire)(g.join(d,"package.json")),h=await c(48379)((0,j.pathToFileURL)(f.resolve("next/dist/server/config.js")).href),l="function"==typeof h.default?h.default:h.default.default,{PHASE_PRODUCTION_BUILD:m}=f("next/constants"),n=await l(m,d,{silent:!0});if(n.distDir!==e||n.typescript?.tsconfigPath!==u||n.typescript?.ignoreBuildErrors)throw Error("Next config does not honor the isolated release directory/typecheck; refusing to build over the serving output")}let v="@earendil-works/pi-coding-agent";async function r({root:a,env:b,run:c,signal:d},f=async()=>{}){await f(),await c("npm",["install","--save-exact",`${v}@latest`,"@earendil-works/pi-ai@latest","--no-audit","--no-fund"],{cwd:a,env:b,timeoutMs:6e5,signal:d}),await c("npm",["run","sync:provider-icons"],{cwd:a,env:b,timeoutMs:6e4,signal:d});let h=JSON.parse(await e.readFile(g.join(a,"node_modules",v,"package.json"),"utf8"));if("string"!=typeof h.version||!h.version)throw Error("Pi engine package version is missing");return h.version}async function s({root:b=a,env:c=process.env,run:d=l.d,beforePrepare:f,prepare:i,signal:j}={}){let m,q=(0,k.f6)(b),r=(0,k.V6)(q,k.Dy);await e.mkdir(r,{recursive:!0}),(0,k.V6)(q,k.Dy);let t=await o(q),u=!1;try{await f?.(),j?.throwIfAborted();let a=(0,k.Qz)(q,`${k.Dy}/${Date.now().toString(36)}-${(0,h.randomUUID)()}`);await e.mkdir((0,k.V6)(q,a)),m={schema:1,state:"building",buildDir:a,startedAt:new Date().toISOString()},await n(q,k.Op,m),u=!0;let b={...c,PI_WEB_ROOT:q,PIWEB_BUILD_DIR:a,PYTHONUTF8:c.PYTHONUTF8??"1",PYTHONIOENCODING:c.PYTHONIOENCODING??"utf-8"};delete b.
|
|
1
|
+
(()=>{var a={};a.id=437,a.ids=[437],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")},7371:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{POST:()=>i,dynamic:()=>j});var e=c(23211),f=c(66562),g=c(28686),h=a([f,g]);[f,g]=h.then?(await h)():h;let j="force-dynamic";async function i(a){let b;try{b=await a.json()}catch{return e.NextResponse.json({success:!1,error:"invalid JSON body"},{status:400})}if(!b||"object"!=typeof b||Array.isArray(b))return e.NextResponse.json({success:!1,error:"expected an object body"},{status:400});let{target:c,action:d}=b;if("piweb"!==c&&"pi"!==c)return e.NextResponse.json({success:!1,error:"unknown target"},{status:400});if("check"!==d&&"update"!==d)return e.NextResponse.json({success:!1,error:"unknown action"},{status:400});try{if("check"===d)return e.NextResponse.json({success:!0,data:await (0,f.lX)(c)});let a=async()=>{if(Object.values((0,g.Rq)()).some(a=>a.streaming))throw new f.TR("An agent session is running. Wait for it to finish and update in a maintenance window; do not start new sessions until the release is ready.")};return await a(),e.NextResponse.json({success:!0,data:await (0,f.PG)(c,{assertIdle:a})})}catch(a){return e.NextResponse.json({success:!1,error:a instanceof Error?a.message:String(a)},{status:a instanceof f.TR?409:500})}}d()}catch(a){d(a)}})},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")},12412:a=>{"use strict";a.exports=require("assert")},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},24446:(a,b,c)=>{"use strict";c.r(b),c.d(b,{handler:()=>z,patchFetch:()=>y,routeModule:()=>u,serverHooks:()=>x,workAsyncStorage:()=>v,workUnitAsyncStorage:()=>w});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(37527);let u=new d.AppRouteRouteModule({definition:{kind:e.RouteKind.APP_ROUTE,page:"/api/update/route",pathname:"/api/update",filename:"route",bundlePath:"app/api/update/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/home/runner/work/PiWeb/PiWeb/src/app/api/update/route.ts",nextConfigOutput:"",userland:()=>c(7371),...{}}),{workAsyncStorage:v,workUnitAsyncStorage:w,serverHooks:x}=u;function y(){return(0,f.patchFetch)({workAsyncStorage:v,workUnitAsyncStorage:w})}async function z(a,b,c){c.requestMeta&&(0,g.setRequestMeta)(a,c.requestMeta),u.isDev&&(0,g.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/update/route";"/index"===d&&(d="/");let f=await u.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:v,deploymentId:w,params:x,nextConfig:y,parsedUrl:z,isDraftMode:A,prerenderManifest:B,routerServerContext:C,isOnDemandRevalidate:D,revalidateOnlyGenerated:E,resolvedPathname:F,clientReferenceManifest:G,serverActionsManifest:H}=f,I=(0,j.normalizeAppPath)(d),J=!!(B.dynamicRoutes[I]||B.routes[F]),K=async()=>((null==C?void 0:C.render404)?await C.render404(a,b,z,!1):b.end("This page could not be found"),null);if(J&&!A){let a=!!B.routes[F],b=B.dynamicRoutes[I];if(b&&!1===b.fallback&&!a){if(y.adapterPath)return await K();throw new s.NoFallbackError}}let L=null;!J||u.isDev||A||(L="/index"===(L=F)?"/":L);let M=!0===u.isDev||!J,N=J&&!M;H&&G&&(0,i.setManifestsSingleton)({page:d,clientReferenceManifest:G,serverActionsManifest:H});let O=a.method||"GET",P=(0,h.getTracer)(),Q=P.getActiveScopeSpan(),R=!!(null==C?void 0:C.isWrappedByNextServer),S=!!(0,g.getRequestMeta)(a,"minimalMode"),T=(0,g.getRequestMeta)(a,"incrementalCache")||await u.getIncrementalCache(a,y,B,S);null==T||T.resetRequestCache(),globalThis.__incrementalCache=T;let U={params:x,previewProps:B.preview,renderOpts:{experimental:{authInterrupts:!!y.experimental.authInterrupts,useCacheTimeout:y.experimental.useCacheTimeout},cacheComponents:!!y.cacheComponents,validationLevel:y.experimental.instantInsights.validationLevel,supportsDynamicResponse:M,incrementalCache:T,hmrRefreshHash:(0,g.getRequestMeta)(a,"hmrRefreshHash"),cacheLifeProfiles:y.cacheLife,staticPageGenerationTimeout:y.staticPageGenerationTimeout,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>u.onRequestError(a,b,d,e,C)},sharedContext:{buildId:v,deploymentId:w}},V=new k.NodeNextRequest(a),W=new k.NodeNextResponse(b),X=l.NextRequestAdapter.fromNodeNextRequest(V,(0,l.signalFromNodeResponse)(b)),Y=async({previousCacheEntry:e})=>{try{if(!S&&D&&E&&!e)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await u.handle(X,U);a.fetchMetrics=U.renderOpts.fetchMetrics;let f=U.renderOpts.pendingWaitUntil;f&&c.waitUntil&&(c.waitUntil(f),f=void 0);let g=U.renderOpts.collectedTags;if(!J)return await (0,o.I)(V,W,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!==U.renderOpts.collectedRevalidate&&!(U.renderOpts.collectedRevalidate>=r.INFINITE_CACHE)&&U.renderOpts.collectedRevalidate,e=void 0===U.renderOpts.collectedExpire||U.renderOpts.collectedExpire>=r.INFINITE_CACHE?!1!==c&&c>0?y.expireTime:void 0:U.renderOpts.collectedExpire;return{value:{kind:t.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 u.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:N,isOnDemandRevalidate:D})},!1,C),b}},Z=async(d,f)=>{try{var g,i;let d=await u.handleResponse({req:a,nextConfig:y,cacheKey:L,routeKind:e.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:B,isRoutePPREnabled:!1,isOnDemandRevalidate:D,revalidateOnlyGenerated:E,responseGenerator:Y,waitUntil:c.waitUntil,isMinimalMode:S});if(!J)return;if((null==d||null==(g=d.value)?void 0:g.kind)!==t.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});S||b.setHeader("x-nextjs-cache",D?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),A&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let f=(0,p.fromNodeOutgoingHttpHeaders)(d.value.headers);S&&J||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)(V,W,new Response(d.value.body,{headers:f,status:d.value.status||200}));return}catch(b){if(b instanceof s.NoFallbackError||await u.onRequestError(a,b,{routerKind:"App Router",routePath:I,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:N,isOnDemandRevalidate:D})},!1,C),J)throw b;await (0,o.I)(V,W,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=P.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")||I,g=`${O} ${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(R&&Q)await Z(Q,void 0);else{let b=P.getActiveScopeSpan();await P.withPropagatedContext(a.headers,()=>P.trace(m.BaseServerSpan.handleRequest,{spanName:`${O} ${d}`,kind:h.SpanKind.SERVER,attributes:{"http.method":O,"http.target":a.url}},a=>Z(a,b)),void 0,!R)}}},27910:a=>{"use strict";a.exports=require("stream")},28354:a=>{"use strict";a.exports=require("util")},29021:a=>{"use strict";a.exports=require("fs")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},31421:a=>{"use strict";a.exports=require("node:child_process")},33873:a=>{"use strict";a.exports=require("path")},39006:a=>{"use strict";a.exports={rE:"0.3.19"}},41300:(a,b,c)=>{"use strict";c.d(b,{e:()=>f});var d=c(73024),e=c(73136);function f(a){if(!process.argv[1])return!1;try{return d.realpathSync(process.argv[1])===d.realpathSync((0,e.fileURLToPath)(a))}catch{return!1}}},41948:(a,b,c)=>{"use strict";c.d(b,{d:()=>f});var d=c(31421);async function e(a){if(!a.pid)return void a.kill();if("win32"!==process.platform){try{process.kill(-a.pid,"SIGKILL")}catch{a.kill("SIGKILL")}return}await new Promise(b=>{let c=(0,d.spawn)("taskkill",["/PID",String(a.pid),"/T","/F"],{stdio:"ignore",windowsHide:!0}),e=setTimeout(()=>{a.kill(),c.kill(),b()},1e4),f=()=>{clearTimeout(e),b()};c.once("error",()=>{a.kill(),f()}),c.once("close",f)})}function f(a,b,{cwd:c,env:g=process.env,timeoutMs:h=6e5,signal:i}){return new Promise((f,j)=>{if(i?.aborted)return void j(Error("release cancelled"));let k="win32"===process.platform&&"npm"===a,l=(0,d.spawn)(k?g.ComSpec||"cmd.exe":a,k?["/d","/c","npm",...b]:b,{cwd:c,env:g,windowsHide:!0,detached:"win32"!==process.platform,stdio:["ignore","pipe","pipe"]}),m="",n="",o=!1,p=!1,q=()=>{clearTimeout(u),i?.removeEventListener("abort",t)},r=a=>{p||(p=!0,q(),j(a))},s=a=>{p||o||(o=!0,e(l).then(()=>r(Error(a)),r))},t=()=>s("release cancelled; command process tree terminated"),u=setTimeout(()=>s(`timeout after ${Math.round(h/1e3)}s: ${a} ${b.join(" ")}`),h);i?.addEventListener("abort",t,{once:!0}),i?.aborted&&t(),l.stdout.on("data",a=>{m=(m+a).slice(-262144)}),l.stderr.on("data",a=>{n=(n+a).slice(-262144)}),l.once("error",a=>{o||r(a)}),l.once("close",a=>{if(!o&&!p){if(0!==a)return void r(Error((n||m||`exit code ${a}`).trim().slice(-1e3)));p=!0,q(),f(m)}})})}},44870:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},46193:a=>{"use strict";a.exports=require("node:string_decoder")},48161:a=>{"use strict";a.exports=require("node:os")},48379:a=>{function b(a){return Promise.resolve().then(()=>{var b=Error("Cannot find module '"+a+"'");throw b.code="MODULE_NOT_FOUND",b})}b.keys=()=>[],b.resolve=b,b.id=48379,a.exports=b},51455:a=>{"use strict";a.exports=require("node:fs/promises")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},66562:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{PG:()=>z,TR:()=>u,lX:()=>y});var e=c(51455),f=c.n(e),g=c(76760),h=c.n(g),i=c(72053),j=c(93340),k=c(41948),l=c(68293),m=c(62433),n=c(75717),o=c(92584),p=a([i,m,n]);[i,m,n]=p.then?(await p)():p;class u extends Error{}function q(a){if("piweb"!==a&&"pi"!==a)throw Error("unknown target")}let v="@rexvane/piweb";function r(a){return h().resolve(a).split(/[\\/]/).includes("node_modules")}function s(a=process.platform){return"win32"!==a}let w=`npm install -g ${v}@latest`;async function t(a){let b=JSON.parse(await f().readFile(a,"utf8"));if("string"!=typeof b.version||!b.version)throw Error(`no version field in ${a}`);return b.version}let x=function({root:a=o.V,run:b=k.d,versions:c=n.Y,env:d=process.env,platform:e=process.platform}={}){let g=!1,p={...d};async function x(){return(0,j.f6)(a)}async function y(a,c){if(!s(e))throw Error(`Windows cannot replace a running PiWeb. Stop piweb, then run: ${w}`);await c();let d=(c,d)=>b("npm",c,{cwd:a,env:p,timeoutMs:d}),f=h().join(a,"package.json"),g=await t(f);await d(["install","-g",`${v}@latest`,"--no-audit","--no-fund"],6e5),await c(),(0,j.f6)(a);let i=await t(f);if(i===g){let a=(await d(["view",`${v}@latest`,"version"],3e4)).trim().split(/\r?\n/)[0];if((0,l.U)(a,g))throw Error(`npm updated a different copy of ${v}; this installation is not the global package. Update it the way it was installed.`)}return{...(0,j.kI)(a,".next"),version:i,needsRestart:!0}}async function z(a,{assertIdle:c=async()=>{}}={}){if(q(a),g)throw new u("an update is already running");g=!0;try{let e=await x();if("piweb"===a&&r(e))return await y(e,c);let g="";return{...await (0,i.vn)({root:e,env:d,run:b,beforePrepare:async()=>{if(await c(),"piweb"===a){let a=a=>b("git",a,{cwd:e,env:p,timeoutMs:15e3}),c=(await a(["rev-parse","--show-toplevel"])).trim(),d=await f().realpath(c).catch(()=>h().resolve(c));if(!(0,m.Eb)(d,e))throw Error("refusing to update: PiWeb is not the Git installation root");if((await a(["status","--porcelain","--untracked-files=no"])).trim())throw Error("PiWeb has local tracked changes; preserve them before updating (no files were reset)")}await c()},prepare:async d=>{let{env:f,signal:k}=d,l=(a,c,d)=>b(a,c,{cwd:e,env:f,timeoutMs:d,signal:k});"pi"===a?g=await (0,i.eh)(d,c):(await c(),await l("git",["pull","--ff-only","origin","main"],12e4),(0,j.f6)(e),await c(),await l("npm",["install","--no-audit","--no-fund"],6e5),g=await t(h().join(e,"package.json")))}}),version:g,needsRestart:!0}}finally{g=!1}}return{checkForUpdate:async function(a){if(q(a),g)throw new u("an update is already running");let d=await x(),f=(a,c,e)=>b(a,c,{cwd:d,env:p,timeoutMs:e}),{piWeb:h,piEngine:j}=await c();if("pi"===a){let a=(await f("npm",["view",i.V0,"version"],3e4)).trim().split(/\r?\n/)[0];return{current:j,latest:a,canUpdate:(0,l.U)(a,j),selfUpdate:!0}}if(r(d)){let a=(await f("npm",["view",v,"version"],3e4)).trim().split(/\r?\n/)[0];if(!a)throw Error(`cannot read the published version of ${v}`);let b=s(e);return{current:h,latest:a,canUpdate:(0,l.U)(a,h),selfUpdate:b,...b?{}:{command:w}}}await f("git",["fetch","origin","main","--tags"],3e4);let k=Number((await f("git",["rev-list","--count","HEAD..origin/main"],15e3)).trim());if(!Number.isSafeInteger(k)||k<0)throw Error("invalid upstream commit count");let m=JSON.parse(await f("git",["show","origin/main:package.json"],15e3));if(!["piweb","pi-web","@rexvane/piweb"].includes(String(m.name))||"string"!=typeof m.version||!m.version)throw Error("upstream is not a PiWeb package");return{current:h,latest:m.version,behind:k,canUpdate:(0,l.U)(m.version,h)||k>0,selfUpdate:!0}},runUpdate:z}}(),y=x.checkForUpdate,z=x.runUpdate;d()}catch(a){d(a)}})},68293:(a,b,c)=>{"use strict";function d(a){let b=a.trim().replace(/^v/i,"").match(/^(\d+)\.(\d+)(?:\.(\d+))?(?:-([0-9A-Za-z.-]+))?/);return b?{nums:[Number(b[1]),Number(b[2]),Number(b[3]??0)],pre:b[4]?b[4].split("."):[]}:null}function e(a,b){let c=d(a),e=d(b);if(!c||!e)return!1;for(let a=0;a<3;a+=1)if(c.nums[a]!==e.nums[a])return c.nums[a]>e.nums[a];if(!c.pre.length||!e.pre.length)return 0===c.pre.length&&e.pre.length>0;let f=Math.max(c.pre.length,e.pre.length);for(let a=0;a<f;a+=1){let b=c.pre[a],d=e.pre[a];if(void 0===b)break;if(void 0===d)return!0;let f=/^\d+$/.test(b),g=/^\d+$/.test(d);if(f&&g){if(Number(b)!==Number(d))return Number(b)>Number(d);continue}if(f!==g)return g;if(b!==d)return b>d}return!1}c.d(b,{U:()=>e})},72053:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{V0:()=>v,eh:()=>r,vn:()=>s});var e=c(51455),f=c(73024),g=c(76760),h=c(77598),i=c(98995),j=c(73136),k=c(93340),l=c(41948),m=c(41300);let a=function({env:a=process.env,cwd:b=process.cwd(),moduleUrl:c}={}){if(a.PI_WEB_ROOT)return g.resolve(a.PI_WEB_ROOT);if("string"==typeof c)try{let a=g.resolve(g.dirname((0,j.fileURLToPath)(c)),"..");if((0,f.existsSync)(g.join(a,"scripts","release.mjs")))return a}catch{}return g.resolve(b)}({moduleUrl:"file:///home/runner/work/PiWeb/PiWeb/scripts/release.mjs"}),t=`${k.Dy}/update.lock`,u=`${k.Dy}/tsconfig.json`;async function n(a,b,c){let d=(0,k.V6)(a,b),f=(0,k.V6)(a,`${b}.${(0,h.randomUUID)()}.tmp`),g=await e.open(f,"wx",384);try{try{await g.writeFile(`${JSON.stringify(c,null,2)}
|
|
2
|
+
`,"utf8"),await g.sync()}finally{await g.close()}await e.rename(f,d)}finally{await e.rm(f,{force:!0})}}async function o(a){let b,c=(0,k.V6)(a,t);try{b=await e.open(c,"wx",384)}catch(a){if("EEXIST"===a.code)throw Error(`an update/build is already running (${c}); after an interrupted build, confirm its process tree has stopped before removing this lock and retrying npm run build:release`);throw a}try{await b.writeFile(JSON.stringify({pid:process.pid,startedAt:new Date().toISOString()}))}catch(a){throw await b.close(),await e.unlink(c),a}return async()=>{await b.close(),await e.unlink(c)}}async function p(a,b){let c=b.slice(`${k.Dy}/`.length);await n(a,u,{extends:"../tsconfig.json",compilerOptions:{tsBuildInfoFile:`./${c}.tsbuildinfo`},include:["../next-env.d.ts","../*.ts","../*.mts","../src/**/*.ts","../src/**/*.tsx","../tests/**/*.ts","../tests/**/*.tsx",`./${c}/types/**/*.ts`,`./${c}/dev/types/**/*.ts`],exclude:["../node_modules","../pi","../dsh","../bin"]})}async function q(a=process.cwd(),b=process.env){let d=(0,k.f6)(a),e=(0,k.Qz)(d,b.PIWEB_BUILD_DIR);if(!e.startsWith(`${k.Dy}/`))throw Error("release requires an isolated build output");let f=(0,i.createRequire)(g.join(d,"package.json")),h=await c(48379)((0,j.pathToFileURL)(f.resolve("next/dist/server/config.js")).href),l="function"==typeof h.default?h.default:h.default.default,{PHASE_PRODUCTION_BUILD:m}=f("next/constants"),n=await l(m,d,{silent:!0});if(n.distDir!==e||n.typescript?.tsconfigPath!==u||n.typescript?.ignoreBuildErrors)throw Error("Next config does not honor the isolated release directory/typecheck; refusing to build over the serving output")}let v="@earendil-works/pi-coding-agent";async function r({root:a,env:b,run:c,signal:d},f=async()=>{}){await f(),await c("npm",["install","--save-exact",`${v}@latest`,"@earendil-works/pi-ai@latest","--no-audit","--no-fund"],{cwd:a,env:b,timeoutMs:6e5,signal:d}),await c("npm",["run","sync:provider-icons"],{cwd:a,env:b,timeoutMs:6e4,signal:d});let h=JSON.parse(await e.readFile(g.join(a,"node_modules",v,"package.json"),"utf8"));if("string"!=typeof h.version||!h.version)throw Error("Pi engine package version is missing");return h.version}async function s({root:b=a,env:c=process.env,run:d=l.d,beforePrepare:f,prepare:i,signal:j}={}){let m,q=(0,k.f6)(b),r=(0,k.V6)(q,k.Dy);await e.mkdir(r,{recursive:!0}),(0,k.V6)(q,k.Dy);let t=await o(q),u=!1;try{await f?.(),j?.throwIfAborted();let a=(0,k.Qz)(q,`${k.Dy}/${Date.now().toString(36)}-${(0,h.randomUUID)()}`);await e.mkdir((0,k.V6)(q,a)),m={schema:1,state:"building",buildDir:a,startedAt:new Date().toISOString()},await n(q,k.Op,m),u=!0;let b={...c,PI_WEB_ROOT:q,PIWEB_BUILD_DIR:a,PYTHONUTF8:c.PYTHONUTF8??"1",PYTHONIOENCODING:c.PYTHONIOENCODING??"utf-8"};delete b.PI_WEB_DEV,delete b.NODE_ENV,await i?.({root:q,buildDir:a,env:b,run:d,signal:j}),j?.throwIfAborted(),(0,k.f6)(q),await p(q,a),await d(process.execPath,[g.join(q,"scripts","release.mjs"),"--verify-config"],{cwd:q,env:b,timeoutMs:6e4,signal:j}),await d("npm",["run","check"],{cwd:q,env:b,timeoutMs:6e5,signal:j}),j?.throwIfAborted();let l=(0,k.kI)(q,a),o=JSON.parse(await e.readFile(g.join(q,"package.json"),"utf8")).version;if("string"!=typeof o||!o)throw Error("PiWeb package version is missing");return await n(q,k.Op,{...m,...l,state:"ready",version:o,finishedAt:new Date().toISOString()}),{...l,version:o,needsRestart:!0}}catch(a){if(u)try{await n(q,k.Op,{...m,state:"failed",finishedAt:new Date().toISOString()})}catch{}throw a}finally{await t()}}if((0,m.e)("file:///home/runner/work/PiWeb/PiWeb/scripts/release.mjs")){let a=new AbortController,b=()=>a.abort();process.once("SIGINT",b),process.once("SIGTERM",b);try{if(3===process.argv.length&&"--verify-config"===process.argv[2])await q();else{let b=3===process.argv.length&&"--update-pi"===process.argv[2];if(process.argv.length>2&&!b)throw Error("Usage: node scripts/release.mjs [--update-pi]");console.log("[piweb] Checking and building an isolated release; the existing server is not restarted."),b&&console.log("[piweb] Pi dependency update: use a maintenance window with no active sessions; node_modules is shared.");let c=await s({signal:a.signal,prepare:b?async a=>{await r(a)}:void 0});console.log(`[piweb] Release ready: ${c.buildDir} (${c.buildId}). Restart PiWeb manually when idle to use it.`)}}catch(a){console.error(`[piweb] Release failed: ${a instanceof Error?a.message:a}`),process.exitCode=1}finally{process.off("SIGINT",b),process.off("SIGTERM",b)}}d()}catch(a){d(a)}},1)},73024:a=>{"use strict";a.exports=require("node:fs")},73136:a=>{"use strict";a.exports=require("node:url")},75430:a=>{"use strict";a.exports=import("@earendil-works/pi-coding-agent")},75717:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{Y:()=>h});var e=c(75430),f=c(39006),g=a([e]);function h(){return Promise.resolve({piWeb:f.rE,piEngine:e.VERSION})}e=(g.then?(await g)():g)[0],d()}catch(a){d(a)}})},76760:a=>{"use strict";a.exports=require("node:path")},77598:a=>{"use strict";a.exports=require("node:crypto")},80481:a=>{"use strict";a.exports=require("node:readline")},81115:a=>{"use strict";a.exports=require("constants")},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},93340:(a,b,c)=>{"use strict";c.d(b,{Dy:()=>f,Op:()=>g,Qz:()=>i,V6:()=>j,f6:()=>k,kI:()=>m});var d=c(73024),e=c(76760);let f=".next-releases",g=`${f}/active.json`,h=/^\.next-releases\/[A-Za-z0-9_-]{1,100}$/;function i(a,b){let c=void 0===b?".next":b;if("string"!=typeof c||".next"!==c&&!h.test(c))throw Error("PIWEB_BUILD_DIR must be .next or .next-releases/<safe-id>");return j(a,c),c}function j(a,b){if("string"!=typeof b||!b||b.includes("\\")||b.includes(":"))throw Error("invalid project-relative path");let c=b.split("/");if(c.some(a=>!a||"."===a||".."===a))throw Error("invalid project-relative path");let f=d.realpathSync(a),g=f;for(let a of c){let c;g=e.join(g,a);try{c=d.lstatSync(g)}catch(a){if("ENOENT"===a.code)break;throw a}if(c.isSymbolicLink())throw Error(`refusing linked deployment path: ${b}`);let h=d.realpathSync(g),i=e.relative(f,h);if(".."===i||i.startsWith(`..${e.sep}`)||e.isAbsolute(i))throw Error(`deployment path escapes installation: ${b}`)}return e.join(f,...c)}function k(a){let b=d.realpathSync(a),c=j(b,"package.json"),e=JSON.parse(d.readFileSync(c,"utf8"));if(!["piweb","pi-web","@rexvane/piweb"].includes(e?.name))throw Error(`refusing to update outside the PiWeb installation: ${b}`);return b}function l(a,b,c=1048576){let e=j(a,b),f=d.statSync(e);if(!f.isFile()||f.size>c)throw Error(`invalid deployment file: ${b}`);return d.readFileSync(e,"utf8")}function m(a,b){let c=i(a,b),e=l(a,`${c}/BUILD_ID`,1024).trim();if(!e||/\s/.test(e))throw Error(`invalid BUILD_ID in ${c}`);let f=JSON.parse(function(a,b){try{return l(a,`${b}/required-server-files.json`)}catch(a){if("ENOENT"===a.code)throw Error(function(a,b="required-server-files.json"){return`incomplete production build in ${a}: ${b} is missing. Reinstall with \`npm install -g @rexvane/piweb@latest\`, or rebuild this installation with \`npm rebuild -g piweb\`.`}(b));throw a}}(a,c));if(f?.version!==1||f.config?.distDir?.replaceAll("\\","/")!==c)throw Error(`build output does not match ${c}`);if(!Array.isArray(f.files)||!f.files.length)throw Error(`incomplete build in ${c}`);let g=new Set(f.files.map(a=>"string"==typeof a?a.replaceAll("\\","/"):""));for(let a of["BUILD_ID","routes-manifest.json","build-manifest.json","prerender-manifest.json","server/app-paths-manifest.json"])g.add(`${c}/${a}`);for(let b of g){if(!b.startsWith(`${c}/`))throw Error(`invalid required build file: ${b}`);let e=j(a,b);if(!d.statSync(e).isFile())throw Error(`missing required build file: ${b}`)}return{buildDir:c,buildId:e}}},94735:a=>{"use strict";a.exports=require("events")},98995:a=>{"use strict";a.exports=require("node:module")}};var b=require("../../../webpack-runtime.js");b.C(a);var c=b.X(0,[741,813,593,131,538,920,686],()=>b(b.s=24446));module.exports=c})();
|