@rexvane/piweb 0.3.10 → 0.3.11
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 +3 -3
- package/.next/build-manifest.json +3 -3
- package/.next/prerender-manifest.json +3 -3
- package/.next/react-loadable-manifest.json +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_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 +2 -2
- 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/growth/route.js +1 -1
- package/.next/server/app/api/growth/route.js.nft.json +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/plugins/route.js +1 -1
- package/.next/server/app/api/plugins/route.js.nft.json +1 -1
- 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/route.js +1 -1
- package/.next/server/app/api/sessions/route.js.nft.json +1 -1
- package/.next/server/app/api/skills/route.js +2 -2
- 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/workspaces/route.js +1 -1
- package/.next/server/app/api/workspaces/route.js.nft.json +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_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_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +3 -3
- package/.next/server/chunks/229.js +1 -0
- package/.next/server/chunks/496.js +1 -1
- package/.next/server/chunks/686.js +2 -2
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- 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/chunks/127.c31e688e156605e3.js +1 -0
- package/.next/static/chunks/686-9f15e4e370d26815.js +1 -0
- package/.next/static/chunks/app/page-708cd3ee4cfe8af5.js +1 -0
- package/.next/static/chunks/webpack-9d84b382d4dec27a.js +1 -0
- package/.next/static/css/b2d35abc828d4713.css +1 -0
- package/package.json +1 -1
- package/src/components/ChatWindow.tsx +43 -1
- package/src/components/SettingsPanel.tsx +127 -2
- package/src/hooks/usePiWeb.ts +13 -1
- package/src/i18n.tsx +44 -0
- package/src/lib/agent-manager.ts +12 -0
- package/src/lib/event-batcher.ts +62 -0
- package/src/lib/models-service.ts +430 -19
- package/src/lib/provider-usage.ts +91 -0
- package/src/lib/session-retention.ts +119 -0
- package/.next/server/chunks/780.js +0 -1
- package/.next/static/chunks/18.8b025ee3303c3dc7.js +0 -1
- package/.next/static/chunks/686-97c833615d1565c5.js +0 -1
- package/.next/static/chunks/app/page-19e37fe240ae3e20.js +0 -1
- package/.next/static/chunks/webpack-eebc3d300017fa47.js +0 -1
- package/.next/static/css/080ec3dba8907e83.css +0 -1
- /package/.next/static/{CLy0QZWDpEExcItT1yudl → 222KLUIvefiGf7M0Ov-Qz}/_buildManifest.js +0 -0
- /package/.next/static/{CLy0QZWDpEExcItT1yudl → 222KLUIvefiGf7M0Ov-Qz}/_ssgManifest.js +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";exports.id=686,exports.ids=[686],exports.modules={3672:(a,b,c)=>{c.d(b,{H4:()=>e,Pn:()=>g,WZ:()=>h});var d=c(29296);function e(a){if(!a||"object"!=typeof a)return;let b={};return"number"==typeof a.input&&(b.input=a.input),"number"==typeof a.output&&(b.output=a.output),"number"==typeof a.cacheRead&&(b.cacheRead=a.cacheRead),"number"==typeof a.cacheWrite&&(b.cacheWrite=a.cacheWrite),Object.keys(b).length?b:void 0}function f(a){if(null==a)return"";if("string"==typeof a)return a;if(Array.isArray(a))return a.map(f).join("");if("object"==typeof a){if("string"==typeof a.text)return a.text;if("string"==typeof a.thinking)return a.thinking}return""}class g{constructor(a=[]){this.streamingStart=null,this.turnStartedAt=null,this.toolIndex=new Map,this.toolStart=new Map,this.pendingToolArgs=new Map,this.dirty=[],this.entries=a.map(a=>({...a})),this.nextSeq=Math.max(0,...this.entries.map(a=>a.seq))+1}push(a){let b={...a,seq:this.nextSeq++};return this.entries.push(b),this.dirty.push(b),b}touch(a){a&&!this.dirty.includes(a)&&this.dirty.push(a)}drainDirty(){let a=this.dirty;return this.dirty=[],a}onEvent(a,b=Date.now()){switch(a.type){case"turn_start":this.turnStartedAt=b;break;case"message_start":{let c=a.message;if(c?.role==="user")this.push({kind:"user",ts:c.timestamp??b,detail:f(c.content)});else if(c?.role==="assistant"){let a=this.turnStartedAt??b;this.turnStartedAt=null,this.streamingStart={seq:this.nextSeq,t0:a},this.push({kind:"message",ts:a,title:"assistant"})}else if(c?.role==="toolResult"){let a=c.toolCallId?this.toolIndex.get(c.toolCallId):void 0;if(void 0!==a){let b=this.entries[a],g=(0,d.R)(f(c.content));b.detail=g.text||b.detail,b.encodingLoss=g.encodingLoss||b.encodingLoss,b.isError=!0===c.isError,b.tokens=e(c.usage)??b.tokens,this.touch(b)}}break}case"message_update":{let c=a.assistantMessageEvent;if(!c)break;if(("text_delta"===c.type||"thinking_delta"===c.type)&&this.streamingStart&&void 0===this.streamingStart.firstToken){this.streamingStart.firstToken=b;let a=this.entries[this.entries.length-1];a?.kind==="message"&&(a.timing={...a.timing??{},ttftMs:b-this.streamingStart.t0},this.touch(a))}"toolcall_end"===c.type&&c.toolCall&&this.pendingToolArgs.set(c.toolCall.id,c.toolCall.arguments);break}case"message_end":{let c=a.message;if(c?.role==="assistant"){let a=this.entries[this.entries.length-1],d=a?.kind==="message"?a:this.push({kind:"message",ts:b});for(let a of(this.streamingStart&&(d.timing={...void 0===this.streamingStart.firstToken?{}:{ttftMs:this.streamingStart.firstToken-this.streamingStart.t0,decodeMs:b-this.streamingStart.firstToken},durationMs:b-this.streamingStart.t0}),d.tokens=e(c.usage),d.thinking=f((c.content??[]).filter(a=>"thinking"===a.type).map(a=>a.thinking)),d.detail=f((c.content??[]).filter(a=>"text"===a.type)),d.isError="error"===c.stopReason,"error"===c.stopReason&&(d.title="error"),this.touch(d),this.streamingStart=null,c.content??[]))"toolCall"===a.type&&(this.toolIndex.set(a.id,this.entries.length),this.push({kind:"tool",ts:b,toolName:a.name,toolCallId:a.id,title:a.name,detail:JSON.stringify(a.arguments??{},null,2)}))}break}case"tool_execution_start":{this.toolStart.set(a.toolCallId,b);let c=this.toolIndex.get(a.toolCallId);if(void 0===c)c=this.entries.length,this.toolIndex.set(a.toolCallId,c),this.push({kind:"tool",ts:b,toolName:a.toolName,toolCallId:a.toolCallId,title:a.toolName,detail:JSON.stringify(a.args??{},null,2)});else{let b=this.entries[c];b.detail=JSON.stringify(a.args??{},null,2),this.touch(b)}break}case"tool_execution_update":{let b=this.toolIndex.get(a.toolCallId);if(void 0!==b){let c=this.entries[b],e=(0,d.R)(f(a.partialResult));e.text&&(c.preview=e.text.slice(-2e3)),c.encodingLoss=e.encodingLoss||c.encodingLoss,this.touch(c)}break}case"tool_execution_end":{let c=this.toolIndex.get(a.toolCallId);if(void 0!==c){let e=this.entries[c],g=(0,d.R)(f(a.result));e.detail=[e.detail,g.text].filter(Boolean).join("\n\n---\n\n"),e.encodingLoss=g.encodingLoss||e.encodingLoss,e.isError=!0===a.isError;let h=this.toolStart.get(a.toolCallId);void 0!==h&&(e.timing={...e.timing??{},durationMs:b-h}),this.touch(e)}this.toolStart.delete(a.toolCallId);break}case"compaction_start":this.push({kind:"compacted",ts:b,title:`compact (${a.reason})`});break;case"compaction_end":{let b=[...this.entries].reverse().find(a=>"compacted"===a.kind);b&&(a.errorMessage&&(b.isError=!0,b.detail=a.errorMessage),a.result?.tokensBefore!=null&&(b.tokens={input:a.result.tokensBefore}),this.touch(b))}}}}function h(a){let b=[],c=1,g=a=>"number"==typeof a?.timestamp?a.timestamp:Date.now();for(let h of a)if("message"===h.type){let a=h.message;if(!a)continue;if("user"===a.role)b.push({seq:c++,kind:"user",ts:g(a),detail:f(a.content)});else if("assistant"===a.role){let d=f((a.content??[]).filter(a=>"thinking"===a.type)),h=f((a.content??[]).filter(a=>"text"===a.type));for(let f of(b.push({seq:c++,kind:"message",ts:g(a),title:"error"===a.stopReason?"error":"assistant",detail:h,thinking:d||void 0,tokens:e(a.usage),isError:"error"===a.stopReason||void 0}),a.content??[]))"toolCall"===f.type&&b.push({seq:c++,kind:"tool",ts:g(a),toolName:f.name,toolCallId:f.id,title:f.name,detail:JSON.stringify(f.arguments??{},null,2)})}else if("toolResult"===a.role){let c=b.findLast?.(b=>"tool"===b.kind&&(a.toolCallId?b.toolCallId===a.toolCallId:b.toolName===a.toolName));if(c){let b=(0,d.R)(f(a.content));c.detail=[c.detail,b.text].filter(Boolean).join("\n\n---\n\n"),c.encodingLoss=b.encodingLoss||c.encodingLoss,c.isError=!0===a.isError||void 0,c.tokens=e(a.usage)??c.tokens}}}else"compaction"===h.type?b.push({seq:c++,kind:"compacted",ts:g(h),title:"compact",tokens:null!=h.tokensBefore?{input:h.tokensBefore}:e(h.usage)}):"branch_summary"===h.type&&b.push({seq:c++,kind:"compacted",ts:g(h),title:"branch summary",tokens:e(h.usage),detail:h.summary});return b}},14719:(a,b,c)=>{c.d(b,{X:()=>e});var d=c(77598);function e(a){let b=new Map,c=new Map,e=!1,f=(c,f,g,h)=>{if(e||!a.hasViewers()||f?.signal?.aborted)return Promise.resolve(g);let i=(0,d.randomUUID)();return new Promise(d=>{let e=c=>{let e=b.get(i);e&&(b.delete(i),e.timer&&clearTimeout(e.timer),e.removeAbortListener?.(),a.publish({type:"extension_ui_resolved",id:i,ts:Date.now()}),d(c?h(c):g))},j={type:"extension_ui",id:i,...c,timeout:f?.timeout,ts:Date.now()},k={request:j,resolve:a=>e(a)};k.timer=setTimeout(()=>e(null),f?.timeout??6e5),k.timer.unref?.();let l=()=>e(null);f?.signal?.addEventListener("abort",l,{once:!0}),k.removeAbortListener=()=>f?.signal?.removeEventListener("abort",l),b.set(i,k),a.publish(j)})};return{uiContext:{select:(a,b,c)=>f({method:"select",title:a,options:b},c,void 0,a=>a.cancelled?void 0:a.value),confirm:(a,b,c)=>f({method:"confirm",title:a,message:b},c,!1,a=>!a.cancelled&&!0===a.confirmed),input:(a,b,c)=>f({method:"input",title:a,placeholder:b},c,void 0,a=>a.cancelled?void 0:a.value),notify:(b,c)=>{a.publish({type:"extension_ui",id:(0,d.randomUUID)(),method:"notify",message:b,notifyType:c??"info",ts:Date.now()})},setStatus:(b,e)=>{void 0===e?c.delete(b):c.set(b,e),a.publish({type:"extension_ui",id:(0,d.randomUUID)(),method:"setStatus",statusKey:b,statusText:e,ts:Date.now()})},setWorkingMessage:b=>{a.publish({type:"extension_ui",id:(0,d.randomUUID)(),method:"setWorkingMessage",message:b,ts:Date.now()})},onTerminalInput:()=>()=>{},setWorkingVisible:()=>{},setWorkingIndicator:()=>{},setHiddenThinkingLabel:()=>{},setWidget:()=>{},setFooter:()=>{},setHeader:()=>{},setTitle:()=>{},custom:async()=>void 0,pasteToEditor:()=>{},setEditorText:()=>{},getEditorText:()=>"",editor:async()=>void 0,addAutocompleteProvider:()=>{},setEditorComponent:()=>{},getEditorComponent:()=>void 0,getAllThemes:()=>[],getTheme:()=>void 0,setTheme:()=>{},getToolsExpanded:()=>!1,setToolsExpanded:()=>{}},statuses:c,getPendingRequests:()=>[...b.values()].map(({request:a})=>({...a,options:a.options?[...a.options]:void 0})),respond(a,c){let d=b.get(a);return!!d&&(d.resolve(c),!0)},dispose(){for(let a of(e=!0,b.values()))a.resolve({cancelled:!0});b.clear()}}}},28686:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{B1:()=>ae,H$:()=>v,Hx:()=>$,Rq:()=>ai,SG:()=>M,Sj:()=>ac,Ui:()=>K,al:()=>af,g7:()=>ag,lX:()=>ah,tX:()=>ad,vJ:()=>aj});var e=c(73024),f=c(77598),g=c(76760),h=c.n(g),i=c(75430),j=c(87982),k=c(14719),l=c(35851),m=c(34007),n=c(3672),o=c(29296),p=c(62433),q=c(34070),r=c(75554),s=c(6512),t=a([i,j,l,p,r]);[i,j,l,p,r]=t.then?(await t)():t;let ak=globalThis,al=ak.__piWebSessions??=new Map;function u(a){if(null==a)return"";if("string"==typeof a)return a;if(Array.isArray(a))return a.map(u).join("");if("object"==typeof a){if("string"==typeof a.text)return a.text;if("string"==typeof a.thinking)return a.thinking}return""}function v(a,b){if(!a||"object"!=typeof a)return{role:"other",content:[]};let c={role:"other",content:[]};b?c.id=b:"string"==typeof a.id&&(c.id=a.id),"number"==typeof a.timestamp&&(c.timestamp=a.timestamp);let d=[];for(let b of Array.isArray(a.content)?a.content:"string"==typeof a.content?[{type:"text",text:a.content}]:[])b&&"object"==typeof b&&("text"===b.type&&"string"==typeof b.text?d.push({type:"text",text:b.text}):"thinking"===b.type&&"string"==typeof b.thinking?d.push({type:"thinking",thinking:b.thinking}):"toolCall"===b.type?d.push({type:"toolCall",id:String(b.id??""),name:String(b.name??""),arguments:b.arguments}):"image"===b.type&&"string"==typeof b.data&&"string"==typeof b.mimeType&&d.push({type:"image",data:b.data,mimeType:b.mimeType}));if(c.content=d,"user"===a.role)c.role="user";else if("assistant"===a.role)c.role="assistant",c.stopReason=a.stopReason,c.errorMessage=a.errorMessage??void 0,c.usage=(0,n.H4)(a.usage),a.usage?.cost?.total!=null&&(c.usage={...c.usage,cost:{total:a.usage.cost.total}}),c.model="string"==typeof a.model?a.model:void 0,c.provider="string"==typeof a.provider?a.provider:void 0;else if("toolResult"===a.role){c.role="toolResult";let b=(0,o.R)(u(a.content));c.content=[{type:"toolResult",toolCallId:a.toolCallId,text:b.text,isError:!0===a.isError,encodingLoss:b.encodingLoss||void 0,patch:x(a.details)}]}return c}function w(a,b){return{...v(b,function(a,b){for(let c of[...a.getEntries()].reverse())if(c?.type==="message"&&c.message===b)return c.id}(a.sm,b)),streamId:function(a,b){if(!b||"object"!=typeof b)return;a.messageIds??=new WeakMap;let c=a.messageIds.get(b);return c||(c=(0,f.randomUUID)(),a.messageIds.set(b,c)),c}(a,b)}}function x(a){let b=a?.patch;return"string"==typeof b&&b.trim()?b.slice(0,6e4):void 0}let am=new Map;function y(a){return{target:"string"==typeof a?.path?a.path:"string"==typeof a?.file_path?a.file_path:"",content:"string"==typeof a?.content?a.content:void 0}}function z(a){if(null!=a){if("string"==typeof a)return a.slice(-4e3);if(Array.isArray(a))return a.map(u).join("").slice(-4e3)||void 0;if("object"==typeof a){let b=u(a.content);if(b)return b.slice(-4e3);try{return JSON.stringify(a).slice(-4e3)}catch{}}}}let an=new WeakMap;function A(a){let b=an.get(a);if(b){for(;b.length>0&&null!==b[0].events;)for(let c of b.shift().events)B(a,c);0===b.length&&an.delete(a)}}function B(a,b){if(a.disposed)return;a.seq+=1;let c=JSON.stringify(b);for(let b of(a.buffer.push({seq:a.seq,json:c}),a.buffer.length>400&&a.buffer.shift(),a.subscribers))try{b(a.seq,c)}catch{a.subscribers.delete(b)}}function C(a,b){let c=an.get(a);if(!c)return B(a,b);c.push({events:[b]}),A(a)}function D(a,b){let c=b.model;C(a,{type:"model",provider:c?String(c.provider??""):void 0,model:c?String(c.id??""):void 0,thinkingLevel:String(b.thinkingLevel??""),thinkingLevels:b.getAvailableThinkingLevels(),ts:Date.now()})}function E(a,b){if(!a.desiredThinkingLevel)return;let c=(0,s.Kt)(b.model,a.desiredThinkingLevel);c!==b.thinkingLevel&&b.setThinkingLevel(c)}function F(a){let b=0,c=0,d=0,e=0,f=0,g=0;for(let h of a.ledger.entries){if("tool"===h.kind){c+=Math.max(0,h.timing?.durationMs??0);continue}"message"===h.kind&&(b+=Math.max(0,h.timing?.durationMs??0),h.timing?.ttftMs!==void 0&&(d+=Math.max(0,h.timing.ttftMs),e+=1),h.timing?.decodeMs!==void 0&&h.tokens?.output!==void 0&&(f+=Math.max(0,h.timing.decodeMs),g+=Math.max(0,h.tokens.output)))}return{llmMs:b,toolMs:c,ttftMs:d,ttftSteps:e,decodeMs:f,decodeTokens:g}}function G(a){if(!a.session)return null;try{let b=a.session.getSessionStats();return{userMessages:b.userMessages,assistantMessages:b.assistantMessages,toolCalls:b.toolCalls,totalMessages:b.totalMessages,tokens:b.tokens,cost:b.cost,...F(a)}}catch{return null}}function H(a){if(!a.session)return null;let b=G(a),c=a.session.getContextUsage()??null;return{type:"usage",stats:b,contextUsage:c?{tokens:c.tokens,contextWindow:c.contextWindow,percent:c.percent}:null,ts:Date.now()}}function I(a){let b=H(a);b&&C(a,b)}function J(a){return a.growth&&a.growth.version!==l.IA&&(a.growth.dispose(),a.growth=null),a.growth??=(0,l.kW)({cwd:a.cwd,sessionPath:a.sessionPath,publish:b=>C(a,b)})}async function K(a,b=""){return L(a),J(a).snapshotNow(b)}function L(a){a.lastActive=Date.now()}function M(a){let b=al.get(a);if(!b){if(!(0,e.existsSync)(a))throw new p.BV("session not found");let c=(0,j.G1)(a);b=N(a,c.getCwd()||process.cwd(),c)}return L(b),b}function N(a,b,c){let d=[];try{d=(0,n.WZ)(c.getEntries())}catch{}let e={sessionPath:a,cwd:b,sm:c,session:null,creating:null,subscribers:new Set,buffer:[],seq:0,inflight:null,ui:null,growth:null,ledger:new n.Pn(d),lastActive:Date.now(),toolPreset:"readonly",resourceVersion:0,resourceReloadPending:!1,resourceReloading:!1,promptSubmitting:!1,runActive:!1,disposed:!1,messageIds:new WeakMap};return al.set(a,e),e}function O(a,b=(0,j.ye)(a)){let c=b.getAgentsFiles().agentsFiles.map(a=>({path:a.path,content:a.content,source:"project"})),d=b.getAppendSystemPrompt(),e=b.getAppendSystemPromptSources();return[...c,...d.map((a,b)=>({path:e[b]?.path??`Appended system prompt ${b+1}`,content:a,source:"extension"}))]}async function P(a,b,c){let d={systemPrompt:0,systemTools:0,customTools:0,memory:0,skills:0,compacted:0,autoCompactBuffer:0};if(!b)return d;try{let a=b.systemPrompt??"",f=c.filter(a=>"project"===a.source).map(a=>a.content).join("\n\n");d.memory=(0,q.ec)(f);try{let{skills:c}=b.resourceLoader.getSkills();if(c.length&&a){let b=a.indexOf("## Skills");if(b>=0){let c=a.slice(b+1).search(/^## /m),e=c>=0?a.slice(b,b+1+c):a.slice(b);d.skills=(0,q.ec)(e)}}}catch{}let g=d.memory+d.skills;d.systemPrompt=Math.max(0,(0,q.ec)(a)-g);try{for(let a of b.getAllTools()){let b=(0,q.ec)(JSON.stringify({name:a.name,description:a.description,parameters:a.parameters,promptGuidelines:a.promptGuidelines}));a.sourceInfo?.source==="builtin"?d.systemTools+=b:d.customTools+=b}}catch{}try{var e;let a=(e=b,e.sm?.getEntries?.()??e.sessionManager?.getEntries?.()??[]);for(let b=a.length-1;b>=0;b-=1){let c=a[b];if(c?.type==="compaction"&&"string"==typeof c.summary){d.compacted=(0,q.ec)(c.summary);break}}}catch{}try{let a=await (0,r.J0)();a.compaction.enabled&&(d.autoCompactBuffer=a.compaction.reserveTokens)}catch{}}catch{}return d}function Q(a,b){let c=a.ledger.entries[0]?.ts??Date.now(),d=[];b?.systemPrompt&&d.push({seq:-1,kind:"system",ts:c,title:"Initial System Prompt",detail:b.systemPrompt});try{O(a.cwd,a.session?.resourceLoader).forEach((a,b)=>d.push({seq:-2-b,kind:"context",ts:c,title:a.path,detail:a.content}))}catch{}return d}function R(a,b){for(let c of Q(a,b))C(a,{type:"traj",entry:c,ts:Date.now()})}async function S(a){if(a.disposed)throw Error("session is disposed");return a.creating?a.creating:a.session?a.session:(a.creating=(async()=>{let b;await (0,j.Df)(a.cwd);let c=await (0,j.Yb)(a.cwd);try{var d,f;let g,l;if(a.disposed)throw Error("session is disposed");let{session:m}=await (0,j.az)({cwd:a.cwd,agentDir:(0,j.$M)(),sessionManager:a.sm,modelRuntime:await (0,j.uU)(),resourceLoader:c,settingsManager:(0,j.vT)(a.cwd)});if(b=m,a.disposed)throw Error("session is disposed");a.session=m,d=a,g=(f=m).setActiveToolsByName.bind(f),f.setActiveToolsByName=a=>{let b=U(d,f);g([...new Set(a)].filter(a=>b.includes(a)))},l=f.reload.bind(f),f.reload=async a=>{if(d.disposed)throw Error("session is disposed");if(T(d))throw Error("session is busy");d.resourceReloading=!0;try{await (0,j.YW)(async()=>{if(d.disposed||d.runActive||!f.isIdle)throw Error("session is busy");await l({beforeSessionStart:async()=>{V(d,f),await a?.beforeSessionStart?.(),V(d,f)}})}),d.resourceVersion=(0,j.Ec)(d.cwd)}finally{V(d,f),d.resourceReloading=!1,d.disposed||(W(d,f),R(d,f),aa(d))}},V(a,m),m.subscribe(b=>{a.disposed||function(a,b){a.ledger.onEvent(b),J(a).onEvent(b);let c=Date.now();switch(b.type){case"message_start":{let d=b.message,e=w(a,d);"assistant"===e.role&&(a.inflight=d,a.inflightId=e.streamId,a.inflightIndex=a.session?.messages.length,e.stopReason="pending",e.content=e.content.map(a=>"text"===a.type?{...a,text:""}:"thinking"===a.type?{...a,thinking:""}:a)),("user"===e.role||"assistant"===e.role)&&C(a,{type:"message",message:e,phase:"start",ts:c});break}case"message_update":{let d=b.assistantMessageEvent;if(b.message&&(a.inflight=b.message,a.inflightId&&a.messageIds.set(b.message,a.inflightId)),!d)break;"text_delta"===d.type&&"string"==typeof d.delta?C(a,{type:"delta",kind:"text",contentIndex:d.contentIndex,delta:d.delta,messageId:a.inflightId,ts:c}):"thinking_delta"===d.type&&"string"==typeof d.delta&&C(a,{type:"delta",kind:"thinking",contentIndex:d.contentIndex,delta:d.delta,messageId:a.inflightId,ts:c});break}case"message_end":{let d,e,f=b.message;f?.role==="assistant"&&(a.inflightId&&a.messageIds.set(f,a.inflightId),a.inflight=null,a.inflightId=void 0,a.inflightIndex=void 0),d=an.get(a)??[],e={events:null},d.push(e),an.set(a,d),queueMicrotask(()=>{e.events=(()=>{let b=w(a,f);"assistant"===b.role&&(b.endedAt=c);let d=H(a);return d?[{type:"message",message:b,phase:"end",ts:c},d]:[{type:"message",message:b,phase:"end",ts:c}]})(),A(a)});break}case"tool_execution_start":b.toolName?.toLowerCase()==="write"&&function(a,b,c,d){let{target:f}=y(d);if(f)try{let d=h().isAbsolute(f)?f:h().resolve(a,f),g=(0,e.statSync)(d);if(!g.isFile()||g.size>524288)return;let i=(0,e.readFileSync)(d,"utf8");if(i.includes("\0"))return;am.size>256&&am.clear(),am.set(`${b}\u0000${c}`,i)}catch{}}(a.cwd,a.sessionPath,b.toolCallId,b.args),C(a,{type:"tool",id:b.toolCallId,name:b.toolName,args:b.args,state:"running",ts:c});break;case"tool_execution_update":{let d=(0,o.R)(z(b.partialResult)??"");C(a,{type:"tool",id:b.toolCallId,name:b.toolName,args:b.args,state:"running",partialResult:d.text||void 0,encodingLoss:d.encodingLoss||void 0,ts:c});break}case"tool_execution_end":{let d=(0,o.R)(z(b.result)??"");C(a,{type:"tool",id:b.toolCallId,name:b.toolName,args:b.args,state:"done",result:d.text||void 0,isError:b.isError,encodingLoss:d.encodingLoss||void 0,patch:x(b.result?.details)??(b.toolName?.toLowerCase()==="write"?function(a,b,c,d){let e=`${b}\u0000${c}`,f=am.get(e);if(am.delete(e),void 0===f)return;let{target:g,content:h}=y(d);if(void 0!==h&&h!==f)try{return(0,i.generateUnifiedPatch)(g,f,h).slice(0,6e4)}catch{return}}(a.cwd,a.sessionPath,b.toolCallId,b.args):void 0),ts:c}),I(a);break}case"agent_start":a.runActive=!0,C(a,{type:"status",isStreaming:!0,state:"running",ts:c});break;case"agent_end":I(a);break;case"agent_settled":a.runActive=!1,C(a,{type:"status",isStreaming:!1,state:"idle",ts:c}),I(a),a.resourceReloadPending&&queueMicrotask(()=>void ab(a));break;case"queue_update":C(a,{type:"queue",steering:[...b.steering],followUp:[...b.followUp],ts:c});break;case"compaction_start":C(a,{type:"status",isStreaming:!0,state:"compacting",ts:c}),C(a,{type:"compaction",phase:"start",reason:b.reason,ts:c});break;case"compaction_end":C(a,{type:"compaction",phase:"end",reason:b.reason,errorMessage:b.errorMessage,ts:c}),I(a),"manual"===b.reason&&(C(a,{type:"status",isStreaming:T(a),state:T(a)?"running":"idle",ts:c}),a.resourceReloadPending&&queueMicrotask(()=>void ab(a)));break;case"session_info_changed":C(a,{type:"name",name:b.name??"",ts:c});break;case"thinking_level_changed":a.session?D(a,a.session):C(a,{type:"model",thinkingLevel:b.level,ts:c});break;case"auto_retry_start":C(a,{type:"retry",attempt:Number(b.attempt)||0,maxAttempts:Number(b.maxAttempts)||0,message:String(b.errorMessage??""),ts:c})}for(let b of a.ledger.drainDirty())C(a,{type:"traj",entry:b,ts:Date.now()})}(a,b)});let n=(0,k.X)({publish:b=>C(a,b),hasViewers:()=>!a.disposed&&a.subscribers.size>0});if(a.ui=n,await m.bindExtensions({mode:"rpc",uiContext:n.uiContext,onError:b=>{C(a,{type:"error",message:`扩展 ${b.extensionPath.split(/[\\/]/).pop()} 在 ${b.event} 出错:${b.error}`,ts:Date.now()})},abortHandler:()=>void m.abort().catch(()=>void 0)}),a.disposed)throw Error("session is disposed");return V(a,m),a.resourceVersion=(0,j.Ec)(a.cwd),R(a,m),W(a,m),aa(a),I(a),m}catch(d){throw a.ui?.dispose(),a.ui=null,b?.dispose(),c.getExtensions().runtime.invalidate(),a.session=null,d}})().catch(b=>{throw a.disposed||C(a,{type:"error",message:String(b?.message??b),ts:Date.now()}),b}).finally(()=>{a.creating=null}),a.creating)}function T(a){return a.promptSubmitting||a.resourceReloading||a.runActive||!!(a.session&&!a.session.isIdle)}function U(a,b){let c=a.customActiveTools??("full"===a.toolPreset?void 0:j.Ax[a.toolPreset]);return X(b).filter(a=>!c||c.includes(a))}function V(a,b){b.setActiveToolsByName(U(a,b))}function W(a,b){C(a,{type:"tools",active:Y(b),all:X(b),toolPreset:a.toolPreset,customActiveTools:a.customActiveTools??null,ts:Date.now()})}function X(a){let b=a.getAllTools?.();return b?b.map(a=>a.name):[]}function Y(a){return a.getActiveToolNames?.()??[]}function Z(a){if(!a.disposed){a.disposed=!0,a.ui?.dispose(),a.ui=null,a.growth?.dispose(),a.growth=null;try{a.session?.dispose()}catch{}for(let b of(a.creating&&a.creating.then(a=>{try{a?.dispose()}catch{}}).catch(()=>void 0),a.subscribers))try{b(a.seq,JSON.stringify({type:"status",isStreaming:!1,state:"disposed",ts:Date.now()}))}catch{}a.subscribers.clear(),al.delete(a.sessionPath)}}async function $(a){let b=al.get(a);if(!b)return;let c=b.session??(b.creating?await b.creating.catch(()=>null):null);c?.isStreaming&&await c.abort().catch(()=>void 0),Z(b)}function _(a){let b=a.session?.resourceLoader??(0,j.v9)(a.cwd)??(0,j.ye)(a.cwd),c=[],d=[];try{let a=b.getSkills();for(let b of(d=a.skills.map(a=>({name:String(a.name??""),description:String(a.description??"")})),a.diagnostics??[]))c.push({kind:"skill",path:b.path,message:b.message})}catch{d=[]}let e=[];try{let a=b.getPrompts();for(let b of(e=a.prompts.map(a=>({name:String(a.name??""),description:String(a.description??""),argumentHint:a.argumentHint})),a.diagnostics??[]))c.push({kind:"prompt",path:b.path,message:b.message})}catch{e=[]}try{for(let a of b.getExtensions().errors??[])c.push({kind:"extension",path:a.path,message:a.error})}catch{}let f=[];if(a.session)try{let b=a.session.extensionRunner;if(b)for(let a of(f=b.getRegisteredCommands().map(a=>({name:a.invocationName,description:String(a.description??""),source:String(a.sourceInfo?.path??"").split(/[\\/]/).pop()??""})),b.getCommandDiagnostics()??[]))c.push({kind:"command",path:a.path,message:a.message})}catch{f=[]}return{skills:d,promptTemplates:e,extensionCommands:f,projectTrust:(0,j.af)(a.cwd),resourceDiagnostics:c}}function aa(a){C(a,{type:"resources",..._(a),ts:Date.now()})}async function ab(a){if(a.disposed||!a.session||a.creating||T(a))return!1;a.resourceReloadPending=!1;try{return await a.session.reload(),!0}catch(b){return C(a,{type:"error",message:`重载扩展失败:${String(b?.message??b)}`,ts:Date.now()}),!1}finally{a.resourceReloadPending&&!T(a)&&queueMicrotask(()=>void ab(a))}}async function ac(a){let b=a=>"win32"===process.platform?a.replace(/\\/g,"/").toLowerCase():a.replace(/\\/g,"/"),c=0;for(let d of al.values())if(!a||b(d.cwd)===b(a)){if(!d.session){d.subscribers.size>0&&aa(d);continue}if(d.creating||T(d)){d.resourceReloadPending=!0,C(d,{type:"error",message:"资源已更新,将在本轮结束后生效",ts:Date.now()}),aa(d);continue}await ab(d)&&(c+=1)}return c}async function ad(a){let b,c,d,e;L(a),await (0,j.Df)(a.cwd);try{a.session&&T(a)?((0,j.Dc)(a.cwd)||a.resourceVersion!==(0,j.Ec)(a.cwd))&&(a.resourceReloadPending=!0):(await (0,j.jz)(a.cwd),a.session&&(a.resourceReloadPending||a.resourceVersion!==(0,j.Ec)(a.cwd))&&(a.resourceReloadPending=!0,await ab(a)))}catch{}let f=a.session,g=[],h=!1,i=["off","minimal","low","medium","high","xhigh","max"];if(f){let e=function(a,b){if(!a.inflightId||void 0===a.inflightIndex)return!1;let c=b.messages[a.inflightIndex];return!!c&&"assistant"===c.role&&(a.messageIds.set(c,a.inflightId),!0)}(a,f);if(g=f.messages.map(b=>w(a,b)),!e&&a.inflight){let b=w(a,a.inflight);"assistant"===b.role&&g.push({...b,stopReason:"pending"})}b=a.seq;let j=f.model;j&&(c={provider:String(j.provider??""),id:String(j.id??""),name:String(j.name??j.id??"")}),d=String(f.thinkingLevel??"");try{i=f.getAvailableThinkingLevels()}catch{}h=T(a)}else{try{g=a.sm.buildContextEntries().filter(a=>"message"===a.type&&a.message).map(a=>v(a.message,a.id))}catch{g=[]}try{let b=a.sm,e=b.buildSessionContext?.();if(e?.model&&(c={provider:e.model.provider,id:e.model.modelId,name:e.model.modelId}),d=e?.thinkingLevel,e?.model){let a=(await (0,j.uU)()).getModel(e.model.provider,e.model.modelId);a&&(i=(0,s.W8)(a),d&&(d=(0,s.Kt)(a,d)))}}catch{}}let k=f?G(a):function(a){let b=0,c=0,d=0,e=0,f={input:0,output:0,cacheRead:0,cacheWrite:0,total:0},g=0,h=a=>{a&&"object"==typeof a&&(f.input+=Number(a.input??0),f.output+=Number(a.output??0),f.cacheRead+=Number(a.cacheRead??0),f.cacheWrite+=Number(a.cacheWrite??0),g+=Number(a.cost?.total??0))};for(let f of a.sm.getEntries()){if(("branch_summary"===f.type||"compaction"===f.type)&&f.usage&&h(f.usage),"message"!==f.type||!f.message)continue;e+=1;let a=f.message;"user"===a.role?b+=1:"assistant"===a.role?(c+=1,d+=Array.isArray(a.content)?a.content.filter(a=>a?.type==="toolCall").length:0,h(a.usage)):"toolResult"===a.role&&h(a.usage)}return f.total=f.input+f.output+f.cacheRead+f.cacheWrite,{userMessages:b,assistantMessages:c,toolCalls:d,totalMessages:e,tokens:f,cost:g,...F(a)}}(a),l=null;if(f){let a=f.getContextUsage()??null;l=a?{tokens:a.tokens,contextWindow:a.contextWindow,percent:a.percent}:null}else if(c)try{let b=(await (0,j.uU)()).getModels(c.provider).find(a=>String(a.id)===c.id),d=Number(b?.contextWindow??0),e=0,f=a.sm.getEntries(),h=!1;for(let a=f.length-1;a>=0;a--){let b=f[a];if("compaction"===b.type||"branch_summary"===b.type){h=!0;break}if("message"===b.type&&b.message?.role==="assistant"&&"error"!==b.message.stopReason&&"aborted"!==b.message.stopReason)break}for(let a=g.length-1;a>=0&&!h;a--){let b=g[a];if("assistant"===b.role&&b.usage){e=Number(b.usage.input??0)+Number(b.usage.cacheRead??0)+Number(b.usage.cacheWrite??0)+Number(b.usage.output??0);break}}d>0&&e>0?l={tokens:e,contextWindow:d,percent:e/d*100}:d>0&&(l={tokens:null,contextWindow:d,percent:null})}catch{}let o=f?{active:Y(f),all:X(f).map(a=>({name:a}))}:{active:[],all:[]},p=f?{steering:[...f.getSteeringMessages()],followUp:[...f.getFollowUpMessages()]}:{steering:[],followUp:[]},q="";try{q=a.sm.getSessionName?.()??""}catch{q=""}let r=[];try{r=O(a.cwd,a.session?.resourceLoader)}catch{r=[]}try{e=await P(a.cwd,a.session,r)}catch{e=void 0}let t=_(a),u=a.ledger.entries.length?a.ledger.entries:function(a){try{return(0,n.WZ)(a.sm.getEntries())}catch{return[]}}(a),x=[...Q(a,f),...u];return{seq:b??a.seq,sessionPath:a.sessionPath,cwd:a.cwd,name:q,contextFiles:r.map(a=>a.path),contextResources:r,contextBreakdown:e,...t,messages:g,userTurns:(0,m.g)(a.sm.getEntries()),growthError:a.growth?.getError?.()??null,model:c,thinkingLevel:d,thinkingLevels:i,toolPreset:a.toolPreset,customActiveTools:a.customActiveTools??null,extensionUiRequests:a.ui?.getPendingRequests()??[],tools:o,stats:k,contextUsage:l,queue:p,trajectory:x,isStreaming:h}}function ae(a,b,c){if(L(a),c<0||c>a.seq)return!1;let d=a.buffer.filter(a=>a.seq>c);if(d.length!==a.seq-c)return!1;let e=new Set(a.ui?.getPendingRequests().map(a=>a.id));if(d.some(a=>{let b=JSON.parse(a.json);return"extension_ui"===b.type&&["select","confirm","input"].includes(b.method)&&!e.has(b.id)}))return!1;for(let c of(a.subscribers.add(b),d))b(c.seq,c.json);return!0}function af(a,b){a.subscribers.delete(b)}async function ag(a,b){L(a);try{switch(b.cmd){case"prepare":return await S(a),{ok:!0};case"prompt":{let c=(b.text??"").trim();if(!c&&!b.images?.length)return{ok:!1,error:"empty prompt"};if(a.promptSubmitting||a.resourceReloading)return{ok:!1,error:"session is busy accepting another command"};a.promptSubmitting=!0;try{let d=await S(a);if(a.disposed)throw Error("session is disposed");if((d.isStreaming||a.runActive)&&!b.behavior)return{ok:!1,error:"session is busy; choose steer or followUp"};if(d.isStreaming||await Promise.race([J(a).prepare().catch(()=>void 0),new Promise(a=>setTimeout(a,5e3))]),a.disposed)throw Error("session is disposed");return await new Promise(e=>{let f=!1;d.prompt(c,{images:b.images,streamingBehavior:b.behavior,source:"rpc",preflightResult:a=>{a&&(f=!0,e({ok:!0,data:{accepted:!0}}))}}).then(()=>{f||e({ok:!1,error:"prompt completed without acceptance"})},b=>{let c=String(b?.message??b);f?C(a,{type:"error",message:c,ts:Date.now()}):e({ok:!1,error:c})})})}finally{a.promptSubmitting=!1,a.disposed||C(a,{type:"status",isStreaming:T(a),state:T(a)?"running":"idle",ts:Date.now()}),a.resourceReloadPending&&queueMicrotask(()=>void ab(a))}}case"steer":case"followUp":{if(a.promptSubmitting||a.resourceReloading)return{ok:!1,error:"session is busy accepting another command"};let c=await S(a);if(a.promptSubmitting||a.resourceReloading||!c.isStreaming)return{ok:!1,error:"session is not accepting queued messages"};return await c[b.cmd](b.text??"",b.images),{ok:!0}}case"clearQueue":{if(!a.session)return{ok:!0,data:{steering:[],followUp:[]}};let b=a.session.clearQueue();return C(a,{type:"queue",steering:[],followUp:[],ts:Date.now()}),{ok:!0,data:b}}case"abort":{if(!a.session)return{ok:!0,data:{steering:[],followUp:[]}};let b=a.session.clearQueue();return await a.session.abort(),C(a,{type:"status",isStreaming:!1,state:"aborted",ts:Date.now()}),{ok:!0,data:b}}case"compact":{let c=await S(a);return await c.compact(b.instructions||void 0),{ok:!0}}case"setModel":{let c=await S(a),d=(await (0,j.uU)()).getModels(b.provider).find(a=>a.id===b.modelId);if(!d)return{ok:!1,error:`unknown model ${b.provider}/${b.modelId}`};return await c.setModel(d,{persist:!1}),E(a,c),D(a,c),{ok:!0,data:{thinkingLevel:c.thinkingLevel,thinkingLevels:c.getAvailableThinkingLevels()}}}case"setThinkingLevel":{let c=await S(a),d=String(b.level??"medium"),e=(0,s.Kt)(c.model,d);return a.desiredThinkingLevel=d,c.setThinkingLevel(e),D(a,c),{ok:!0,data:{requested:d,thinkingLevel:c.thinkingLevel,clamped:c.thinkingLevel!==d}}}case"setToolPreset":{let c=b.preset;if(!Object.hasOwn(j.Ax,c))return{ok:!1,error:"invalid tool preset"};if(T(a))return{ok:!1,error:"cannot change tools while the agent is running"};let d=await S(a);if(T(a))return{ok:!1,error:"cannot change tools while the agent is running"};return a.toolPreset=c,a.customActiveTools=void 0,V(a,d),R(a,d),W(a,d),{ok:!0}}case"setActiveTools":{if(T(a))return{ok:!1,error:"cannot change tools while the agent is running"};let c=await S(a);if(T(a))return{ok:!1,error:"cannot change tools while the agent is running"};let d=Array.isArray(b.names)?b.names.map(String):[],e=X(c),f=[...new Set(d)].filter(a=>e.includes(a));if(0===f.length)return{ok:!1,error:"cannot disable all tools"};return a.customActiveTools=f,V(a,c),R(a,c),W(a,c),{ok:!0,data:{active:Y(c)}}}case"cycleModel":{let c=await S(a),d=await c.cycleModel(b.direction??"forward");if(d?.model)return E(a,c),D(a,c),{ok:!0,data:{model:String(d.model.id??""),thinkingLevel:c.thinkingLevel}};return{ok:!1,error:"no scoped models to cycle"}}case"navigate":{let c=await S(a),d=String(b.entryId??"");if(!d)return{ok:!1,error:"missing entryId"};let e=await c.navigateTree(d);return{ok:!e?.cancelled,data:{cancelled:e?.cancelled===!0,editorText:e?.editorText}}}case"rename":{let c=(b.text??"").trim();return a.session?a.session.setSessionName(c):a.sm.appendSessionInfo(c),C(a,{type:"name",name:c,ts:Date.now()}),{ok:!0}}case"extensionUiResponse":return a.ui?.respond(String(b.requestId),{value:b.value,confirmed:b.confirmed,cancelled:b.cancelled})?{ok:!0}:{ok:!1,error:"no pending extension request"};case"reload":{if(T(a))return{ok:!1,error:"session is busy"};let b=await S(a);return await b.reload(),{ok:!0}}case"fork":{let c=(b.entryId?j.Cv.open(a.sessionPath).createBranchedSession(b.entryId):j.Cv.forkFrom(a.sessionPath,a.cwd).getSessionFile())??"";if(!c)return{ok:!1,error:"failed to create forked session"};return{ok:!0,data:{sessionPath:c}}}default:return{ok:!1,error:"unknown cmd"}}}catch(a){return{ok:!1,error:String(a?.message??a)}}}async function ah(a){let b=j.Cv.create(a),c=b.getSessionFile()??"";if(!c)throw Error("failed to create session file");return N(c,a,b),{sessionPath:c}}function ai(){let a={};for(let[b,c]of al){let d;if(c.session){for(let a=c.ledger.entries.length-1;a>=0;a-=1){let b=c.ledger.entries[a];if("tool"===b.kind){d=[b.toolName,(b.preview??b.title??"").split("\n")[0].slice(0,80)].filter(Boolean).join(" \xb7 ");break}}a[b]={streaming:T(c),lastStep:d}}}return a}async function aj(a,b){let d=a.sessionPath.replace(/\\/g,"/").split("/").pop()??"session";if("jsonl"===b){let{readFile:b}=await Promise.resolve().then(c.t.bind(c,51455,23));return{filename:d,content:await b(a.sessionPath,"utf8"),contentType:"application/jsonl"}}let e=await S(a),f=await e.exportToHtml(),{readFile:g,rm:h}=await Promise.resolve().then(c.t.bind(c,51455,23)),i=await g(f,"utf8");return await h(f,{force:!0}).catch(()=>void 0),{filename:d.replace(/\.jsonl$/,".html"),content:i,contentType:"text/html"}}setInterval(function(){let a=Date.now();for(let b of[...al.values()])!(b.subscribers.size>0)&&!(a-b.lastActive<=6e5)&&(b.creating||T(b)||Z(b));let b=[...al.values()].filter(a=>a.session);if(b.length>6)for(let a of b.filter(a=>!a.creating&&!T(a)&&0===a.subscribers.size).sort((a,b)=>a.lastActive-b.lastActive).slice(0,b.length-6))Z(a)},6e4).unref?.(),d()}catch(a){d(a)}})},29296:(a,b,c)=>{c.d(b,{R:()=>d});function d(a){return a.includes("�")?{text:a.split(/\r?\n/).filter(a=>!a.includes("�")).join("\n").replace(/\n{3,}/g,"\n\n").trim(),encodingLoss:!0}:{text:a,encodingLoss:!1}}},34007:(a,b,c)=>{c.d(b,{g:()=>d});function d(a){let b=[];for(let[c,d]of a.entries()){if("message"!==d.type||d.message?.role!=="user")continue;let a="number"==typeof d.timestamp?d.timestamp:Date.parse(d.timestamp??""),e=Number.isFinite(a)?a:d.message.timestamp;b.push({id:d.id??`entry:${c}`,ts:"number"==typeof e&&Number.isFinite(e)?e:NaN})}return b}},34070:(a,b,c)=>{c.d(b,{ec:()=>d});function d(a){return Math.ceil(a.length/4)}},35851:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{IA:()=>o,kW:()=>m});var e=c(73024),f=c.n(e),g=c(76760),h=c.n(g),i=c(69460),j=a([i]);i=(j.then?(await j)():j)[0];let n=new Set(["read","grep","find","ls"]),o=3;function k(a){return!n.has(a.toLowerCase())}function l(a,b){if(!h().isAbsolute(b))return b.replace(/\\/g,"/");let c=h().relative(a,b);return!c||c.startsWith("..")||h().isAbsolute(c)?b.replace(/\\/g,"/"):c.replace(/\\/g,"/")}let p=/(?:^|\/)(?:\.DS_Store|Thumbs\.db|[^/]*\.log|[^/]*\.tsbuildinfo|next-env\.d\.ts)$/;function m(a){let b,c,d,g,{cwd:j,sessionPath:m,publish:n}=a,q=new Set,r=new Map,s=[],t=new Set,u=0,v=null,w=!1,x=!1,y=null,z=!1,A=null,B=!1,C=0,D=!1,E=null,F=Promise.resolve(),G=a=>{let e=a instanceof Error?a.message:String(a),f=a instanceof i.qy&&("unavailable"===a.code||"too-large"===a.code);if(f){z=!0,A=a;try{v?.close()}catch{}v=null,b&&clearTimeout(b),c&&clearTimeout(c),d&&clearTimeout(d),b=c=d=void 0,s.length=0,q.clear(),r.clear(),t.size&&(t.clear(),n({type:"growth_pending",paths:[],ts:Date.now()}))}D=!0,E=e;let g=Date.now();(f||!(g-C<6e4))&&(C=g,console.warn(`[piweb] growth snapshot failed for ${j}: ${e}`),n({type:"growth_error",message:e,ts:g}))},H=()=>{c=void 0,n({type:"growth_pending",paths:[...t].slice(0,200),ts:Date.now()})},I=a=>F=F.then(a,a).catch(G),J=async(a,b=!1)=>{if(z||B)return;let d=await (0,i.P9)(j,{...a,session:m,force:b});D&&(D=!1,E=null,n({type:"growth_error",message:null,ts:Date.now()})),d&&!B&&(n({type:"growth",step:d,ts:Date.now()}),t.size&&(t.clear(),c&&clearTimeout(c),H()))},K=(a,b=!1)=>I(()=>J(a,b)),L=()=>x?F:(y||(y=I(async()=>{z||B||(await (0,i.k$)(j,m)||await J({kind:"baseline",label:"",ts:g},!0),x=!0)})).finally(()=>{y=null}),y),M=()=>{b=void 0;let a=s.splice(0);if(!a.length)return;let c=a.filter(a=>"tool"===a.kind),d=c[0]??a[0],e=c.length>1?` +${c.length-1}`:"",f=a.reduce((a,b)=>b.ts??a,void 0)??g;(x?Promise.resolve():L().catch(()=>void 0)).then(()=>{B||z||K({kind:d.kind,label:`${d.label}${e}`,toolCallId:d.toolCallId,toolName:d.toolName,ts:f})})},N=(a,e)=>{if(z||B)return;let g=null==e?"":String(e).replace(/\\/g,"/");if(!(g&&((0,i.vt)(g)||p.test(g)))){if(q.size>0){if(!g||t.size+u>=500)return;u+=1,f().promises.stat(h().join(j,g)).then(a=>a.isDirectory(),()=>!1).then(a=>{if(B||z)return;let b=a?`${g}/`:g;!(t.size>=500||t.has(b))&&(t.add(b),c||(c=setTimeout(H,300)))}).finally(()=>{u-=1});return}s.length||b||(d&&clearTimeout(d),d=setTimeout(()=>{d=void 0,q.size>0||s.length||K({kind:"external",label:""})},1500))}},O=()=>{if(!v&&!w&&!z)try{let a=j;try{a=e.realpathSync.native(j)}catch{}(v=f().watch(a,{recursive:!0,persistent:!1},N)).on("error",()=>{w=!0;try{v?.close()}catch{}v=null})}catch{w=!0,v=null}};return{version:o,getError:()=>E,async prepare(){g=Date.now(),O(),await L()},onEvent(a){if(!B&&!z)switch(a.type){case"agent_start":g=a.ts??Date.now(),O(),L();break;case"tool_execution_start":if(!k(a.toolName))break;q.add(a.toolCallId),r.size>64&&r.delete(r.keys().next().value),r.set(a.toolCallId,a.args),d&&(clearTimeout(d),d=void 0);break;case"tool_execution_end":{var c,e;let f,h;if(!k(a.toolName))break;q.delete(a.toolCallId);let i=r.get(a.toolCallId);r.delete(a.toolCallId),e={kind:"tool",label:(c=a.toolName,f=i&&"object"==typeof i?i:{},h="","string"==typeof f.command?h=f.command:"string"==typeof f.path?h=l(j,f.path):"string"==typeof f.file_path&&(h=l(j,f.file_path)),(h=(h=h.split("\n").map(a=>a.trim()).find(Boolean)??"").replace(/\s+/g," ")).length>60&&(h=`${h.slice(0,59)}…`),h?`${c} \xb7 ${h}`:c),toolCallId:a.toolCallId,toolName:a.toolName},z||(d&&(clearTimeout(d),d=void 0),s.push("tool"===e.kind&&void 0!==g?{...e,ts:e.ts??g}:e),b&&clearTimeout(b),b=setTimeout(M,200));break}case"agent_end":q.clear(),b&&clearTimeout(b),M(),a.willRetry||I(()=>J({kind:"turn",label:"",ts:g},!0)),g=void 0}},async snapshotNow(a=""){let b;if(z)throw A??new i.qy("growth tracking is disabled for this workspace","unavailable");let c=null;if(await I(async()=>{try{if(z)throw A??new i.qy("growth tracking is disabled for this workspace","unavailable");let b=await (0,i.P9)(j,{kind:"manual",label:a,session:m});D&&(D=!1,E=null,n({type:"growth_error",message:null,ts:Date.now()})),b&&(c=b,n({type:"growth",step:b,ts:Date.now()}))}catch(a){b=a,G(a)}}),b)throw b;return c},dispose(){B=!0,b&&clearTimeout(b),c&&clearTimeout(c),d&&clearTimeout(d);try{v?.close()}catch{}v=null}}}d()}catch(a){d(a)}})},62433:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{BV:()=>q,CN:()=>l,Eb:()=>o,XI:()=>n,gS:()=>p,os:()=>m});var e=c(51455),f=c.n(e),g=c(76760),h=c.n(g),i=c(87982),j=a([i]);i=(j.then?(await j)():j)[0];class q extends Error{constructor(a){super(a),this.name="BoundaryError"}}function k(a){let b=h().resolve(a);return"win32"===process.platform?b.toLowerCase():b}function l(a,b){let c=h().relative(k(a),k(b));return""===c||!c.startsWith("..")&&!h().isAbsolute(c)}async function m(a,b){if(!(0,i.Sd)(a))throw new q("invalid session id");let c=(0,i.Gg)(a);if(!h().isAbsolute(c)||".jsonl"!==h().extname(c).toLowerCase())throw new q("invalid session path");let d=h().join((0,i.$M)(),"sessions"),e=await f().realpath(d).catch(()=>h().resolve(d));if(!l(e,h().resolve(c)))throw new q("session path is outside the Pi session store");if(b?.allowPending){let a=await f().realpath(c).catch(a=>{if("ENOENT"===a.code)return null;throw a});if(!a){let a=h().dirname(c);for(;l(d,a);){let b=await f().realpath(a).catch(a=>{if("ENOENT"===a.code)return null;throw a});if(b){if(!l(e,b))throw new q("session path escapes the Pi session store");return c}if(o(a,d))break;a=h().dirname(a)}throw new q("session store not found")}if(!l(e,a))throw new q("session path escapes the Pi session store");return c}let g=await f().realpath(c).catch(()=>{throw new q("session not found")});if(!l(e,g))throw new q("session path escapes the Pi session store");if(!(await f().stat(g)).isFile())throw new q("session is not a file");return g}async function n(a){if("string"!=typeof a||0===a.trim().length||a.length>4096)throw new q("invalid workspace path");let b=await f().realpath(h().resolve(a.trim())).catch(()=>{throw new q("workspace not found")});if(!(await f().stat(b)).isDirectory())throw new q("workspace is not a directory");return b}function o(a,b){return k(a)===k(b)}async function p(a,b){if("string"!=typeof a||!h().isAbsolute(a)||a.length>4096)throw new q("invalid resource path");let c=await f().realpath(a).catch(()=>{throw new q("resource not found")});for(let a of b){if(!a)continue;let b=await f().realpath(a).catch(()=>null);if(b&&o(c,b))return c}throw new q("resource is not part of the discovered Pi configuration")}d()}catch(a){d(a)}})},69460:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{I$:()=>F,P9:()=>D,e2:()=>E,iv:()=>I,k$:()=>G,nT:()=>H,qY:()=>K,qy:()=>O,vO:()=>J,vt:()=>q});var e=c(31421),f=c(77598),g=c(73024),h=c(51455),i=c.n(h),j=c(76760),k=c.n(j),l=c(96743),m=c(87982),n=a([m]);m=(n.then?(await n)():n)[0];let L=l.It,M=new Set(L.map(a=>a.toLowerCase())),N=`# PiWeb growth snapshot exclusions (generated, do not edit)
|
|
1
|
+
"use strict";exports.id=686,exports.ids=[686],exports.modules={3672:(a,b,c)=>{c.d(b,{H4:()=>e,Pn:()=>g,WZ:()=>h});var d=c(29296);function e(a){if(!a||"object"!=typeof a)return;let b={};return"number"==typeof a.input&&(b.input=a.input),"number"==typeof a.output&&(b.output=a.output),"number"==typeof a.cacheRead&&(b.cacheRead=a.cacheRead),"number"==typeof a.cacheWrite&&(b.cacheWrite=a.cacheWrite),Object.keys(b).length?b:void 0}function f(a){if(null==a)return"";if("string"==typeof a)return a;if(Array.isArray(a))return a.map(f).join("");if("object"==typeof a){if("string"==typeof a.text)return a.text;if("string"==typeof a.thinking)return a.thinking}return""}class g{constructor(a=[]){this.streamingStart=null,this.turnStartedAt=null,this.toolIndex=new Map,this.toolStart=new Map,this.pendingToolArgs=new Map,this.dirty=[],this.entries=a.map(a=>({...a})),this.nextSeq=Math.max(0,...this.entries.map(a=>a.seq))+1}push(a){let b={...a,seq:this.nextSeq++};return this.entries.push(b),this.dirty.push(b),b}touch(a){a&&!this.dirty.includes(a)&&this.dirty.push(a)}drainDirty(){let a=this.dirty;return this.dirty=[],a}onEvent(a,b=Date.now()){switch(a.type){case"turn_start":this.turnStartedAt=b;break;case"message_start":{let c=a.message;if(c?.role==="user")this.push({kind:"user",ts:c.timestamp??b,detail:f(c.content)});else if(c?.role==="assistant"){let a=this.turnStartedAt??b;this.turnStartedAt=null,this.streamingStart={seq:this.nextSeq,t0:a},this.push({kind:"message",ts:a,title:"assistant"})}else if(c?.role==="toolResult"){let a=c.toolCallId?this.toolIndex.get(c.toolCallId):void 0;if(void 0!==a){let b=this.entries[a],g=(0,d.R)(f(c.content));b.detail=g.text||b.detail,b.encodingLoss=g.encodingLoss||b.encodingLoss,b.isError=!0===c.isError,b.tokens=e(c.usage)??b.tokens,this.touch(b)}}break}case"message_update":{let c=a.assistantMessageEvent;if(!c)break;if(("text_delta"===c.type||"thinking_delta"===c.type)&&this.streamingStart&&void 0===this.streamingStart.firstToken){this.streamingStart.firstToken=b;let a=this.entries[this.entries.length-1];a?.kind==="message"&&(a.timing={...a.timing??{},ttftMs:b-this.streamingStart.t0},this.touch(a))}"toolcall_end"===c.type&&c.toolCall&&this.pendingToolArgs.set(c.toolCall.id,c.toolCall.arguments);break}case"message_end":{let c=a.message;if(c?.role==="assistant"){let a=this.entries[this.entries.length-1],d=a?.kind==="message"?a:this.push({kind:"message",ts:b});for(let a of(this.streamingStart&&(d.timing={...void 0===this.streamingStart.firstToken?{}:{ttftMs:this.streamingStart.firstToken-this.streamingStart.t0,decodeMs:b-this.streamingStart.firstToken},durationMs:b-this.streamingStart.t0}),d.tokens=e(c.usage),d.thinking=f((c.content??[]).filter(a=>"thinking"===a.type).map(a=>a.thinking)),d.detail=f((c.content??[]).filter(a=>"text"===a.type)),d.isError="error"===c.stopReason,"error"===c.stopReason&&(d.title="error"),this.touch(d),this.streamingStart=null,c.content??[]))"toolCall"===a.type&&(this.toolIndex.set(a.id,this.entries.length),this.push({kind:"tool",ts:b,toolName:a.name,toolCallId:a.id,title:a.name,detail:JSON.stringify(a.arguments??{},null,2)}))}break}case"tool_execution_start":{this.toolStart.set(a.toolCallId,b);let c=this.toolIndex.get(a.toolCallId);if(void 0===c)c=this.entries.length,this.toolIndex.set(a.toolCallId,c),this.push({kind:"tool",ts:b,toolName:a.toolName,toolCallId:a.toolCallId,title:a.toolName,detail:JSON.stringify(a.args??{},null,2)});else{let b=this.entries[c];b.detail=JSON.stringify(a.args??{},null,2),this.touch(b)}break}case"tool_execution_update":{let b=this.toolIndex.get(a.toolCallId);if(void 0!==b){let c=this.entries[b],e=(0,d.R)(f(a.partialResult));e.text&&(c.preview=e.text.slice(-2e3)),c.encodingLoss=e.encodingLoss||c.encodingLoss,this.touch(c)}break}case"tool_execution_end":{let c=this.toolIndex.get(a.toolCallId);if(void 0!==c){let e=this.entries[c],g=(0,d.R)(f(a.result));e.detail=[e.detail,g.text].filter(Boolean).join("\n\n---\n\n"),e.encodingLoss=g.encodingLoss||e.encodingLoss,e.isError=!0===a.isError;let h=this.toolStart.get(a.toolCallId);void 0!==h&&(e.timing={...e.timing??{},durationMs:b-h}),this.touch(e)}this.toolStart.delete(a.toolCallId);break}case"compaction_start":this.push({kind:"compacted",ts:b,title:`compact (${a.reason})`});break;case"compaction_end":{let b=[...this.entries].reverse().find(a=>"compacted"===a.kind);b&&(a.errorMessage&&(b.isError=!0,b.detail=a.errorMessage),a.result?.tokensBefore!=null&&(b.tokens={input:a.result.tokensBefore}),this.touch(b))}}}}function h(a){let b=[],c=1,g=a=>"number"==typeof a?.timestamp?a.timestamp:Date.now();for(let h of a)if("message"===h.type){let a=h.message;if(!a)continue;if("user"===a.role)b.push({seq:c++,kind:"user",ts:g(a),detail:f(a.content)});else if("assistant"===a.role){let d=f((a.content??[]).filter(a=>"thinking"===a.type)),h=f((a.content??[]).filter(a=>"text"===a.type));for(let f of(b.push({seq:c++,kind:"message",ts:g(a),title:"error"===a.stopReason?"error":"assistant",detail:h,thinking:d||void 0,tokens:e(a.usage),isError:"error"===a.stopReason||void 0}),a.content??[]))"toolCall"===f.type&&b.push({seq:c++,kind:"tool",ts:g(a),toolName:f.name,toolCallId:f.id,title:f.name,detail:JSON.stringify(f.arguments??{},null,2)})}else if("toolResult"===a.role){let c=b.findLast?.(b=>"tool"===b.kind&&(a.toolCallId?b.toolCallId===a.toolCallId:b.toolName===a.toolName));if(c){let b=(0,d.R)(f(a.content));c.detail=[c.detail,b.text].filter(Boolean).join("\n\n---\n\n"),c.encodingLoss=b.encodingLoss||c.encodingLoss,c.isError=!0===a.isError||void 0,c.tokens=e(a.usage)??c.tokens}}}else"compaction"===h.type?b.push({seq:c++,kind:"compacted",ts:g(h),title:"compact",tokens:null!=h.tokensBefore?{input:h.tokensBefore}:e(h.usage)}):"branch_summary"===h.type&&b.push({seq:c++,kind:"compacted",ts:g(h),title:"branch summary",tokens:e(h.usage),detail:h.summary});return b}},6896:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Iz:()=>B,JZ:()=>A,PY:()=>x,Tp:()=>y,XG:()=>D,X_:()=>G,qh:()=>E,r7:()=>C,vQ:()=>z});var e=c(51455),f=c.n(e),g=c(48161),h=c.n(g),i=c(76760),j=c.n(i),k=c(92584),l=c(31421),m=c(46193),n=c(87982),o=c(77598),p=c(49904),q=a([n]);function r(){return j().join((0,n.$M)(),"web-workspaces.json")}async function s(a=r()){try{let b=JSON.parse(await f().readFile(a,"utf8"));if(!b||"object"!=typeof b||Array.isArray(b))throw Error("invalid workspace registry");let c=Object.fromEntries(Object.entries("object"==typeof b.aliases&&null!==b.aliases?b.aliases:{}).filter(a=>"string"==typeof a[1]));return{workspaces:Array.isArray(b.workspaces)?b.workspaces.filter(a=>"string"==typeof a):[],aliases:c,archivedSessions:Array.isArray(b.archivedSessions)?b.archivedSessions.filter(a=>"string"==typeof a):[],removedWorkspaces:Array.isArray(b.removedWorkspaces)?b.removedWorkspaces.filter(a=>"string"==typeof a):[]}}catch(a){if("ENOENT"!==a.code)throw a}return{workspaces:[],aliases:{},archivedSessions:[],removedWorkspaces:[]}}function t(a){let b=j().resolve(a);return"win32"===process.platform?b.toLowerCase():b}async function u(a,b){await f().mkdir(j().dirname(b),{recursive:!0});let c=`${b}.${(0,o.randomUUID)()}.tmp`;try{await f().writeFile(c,JSON.stringify(a,null,2),{encoding:"utf8",flag:"wx",mode:384}),await f().rename(c,b)}finally{await f().unlink(c).catch(()=>void 0)}}async function v(){let a=r();return(0,p.Ax)(a,()=>s(a))}async function w(a){let b=r();return(0,p.Ax)(b,()=>(0,p._i)(b,async()=>a(await s(b),b)))}async function x(){return(await v()).removedWorkspaces??[]}async function y(a,b){let c=t(j().resolve(a));return w(async(a,d)=>{for(let b of(a.aliases||(a.aliases={}),Object.keys(a.aliases)))b!==c&&t(b)===c&&delete a.aliases[b];return b.trim()?a.aliases[c]=b.trim():delete a.aliases[c],await u(a,d),a.aliases})}async function z(){let a=await v();return{workspaces:a.workspaces,aliases:a.aliases??{},archivedSessions:a.archivedSessions??[],removedWorkspaces:a.removedWorkspaces??[]}}async function A(a){let b=j().resolve(a),c=t(b);return w(async(a,d)=>(a.archivedSessions||(a.archivedSessions=[]),a.archivedSessions.some(a=>t(a)===c)||(a.archivedSessions.push(b),await u(a,d)),a.archivedSessions))}async function B(a){let b=j().resolve(a),c=t(b);return w(async(a,b)=>{let d=a.archivedSessions??[],e=d.filter(a=>t(a)!==c);return e.length!==d.length&&(a.archivedSessions=e,await u(a,b)),e})}async function C(a){let b=j().resolve(a),c=t(b);return w(async(a,d)=>{let e=!1;if(a.workspaces.some(a=>t(a)===c)||(a.workspaces.push(b),e=!0),a.removedWorkspaces){let b=a.removedWorkspaces.filter(a=>t(a)!==c);e||=b.length!==a.removedWorkspaces.length,a.removedWorkspaces=b}return e&&await u(a,d),{workspaces:a.workspaces,removedWorkspaces:a.removedWorkspaces??[]}})}async function D(a){return w(async(b,c)=>{let d=!1,e=new Set((b.removedWorkspaces??[]).map(t)),f=new Set(b.workspaces.map(t));for(let c of a){if(!c||"string"!=typeof c)continue;let a=j().resolve(c),g=t(a);e.has(g)||f.has(g)||(b.workspaces.push(a),f.add(g),d=!0)}return d&&await u(b,c),b.workspaces})}async function E(a){let b=j().resolve(a),c=t(b);return w(async(a,d)=>{if(a.workspaces=a.workspaces.filter(a=>t(a)!==c),a.removedWorkspaces||(a.removedWorkspaces=[]),a.removedWorkspaces.some(a=>t(a)===c)||a.removedWorkspaces.push(b),a.aliases)for(let b of Object.keys(a.aliases))t(b)===c&&delete a.aliases[b];return await u(a,d),{workspaces:a.workspaces,removedWorkspaces:a.removedWorkspaces,aliases:a.aliases??{}}})}n=(q.then?(await q)():q)[0];let H=!1;function F(a,b={}){let{timeoutMs:c=3e5,windowsHide:d=!1}=b;return new Promise((b,e)=>{let f,g=(0,l.spawn)(a[0],a.slice(1),{stdio:["ignore","pipe","pipe"],windowsHide:d}),h=new m.StringDecoder("utf8"),i="",j="",k=!1;g.stdout.on("data",a=>{i+=h.write(a)}),g.stderr.on("data",a=>{j=(j+a.toString("utf8")).slice(-1e3)});let n=!1,o=a=>{n||(n=!0,clearTimeout(f),k||(k=!0,i+=h.end()),a?e(a):b(i.trim()))};g.on("error",a=>o(a)),g.on("close",a=>o(0===a?void 0:Error(j||`folder picker exited with code ${a}`))),f=setTimeout(()=>{try{g.kill()}catch{}o(Error("folder picker timed out"))},c)})}async function G(){if(H)return{path:null,canceled:!0};H=!0;try{if("win32"===process.platform){let a=j().join(k.V,"scripts","pick-folder.ps1"),b=await F(["powershell.exe","-NoProfile","-STA","-ExecutionPolicy","Bypass","-File",a,"选择工作区文件夹"],{windowsHide:!0});return b?{path:b,canceled:!1}:{path:null,canceled:!0}}if("darwin"===process.platform){let a=await F(["osascript","-e",'POSIX path of (choose folder with prompt "选择工作区文件夹")']),b=function(a){let b=a.trim();if((b=b.replace(/^alias\s+/i,"").replace(/^"(.*)"$/s,"$1")).startsWith("/"))return b.replace(/\\(.)/g,"$1");if(/^[A-Za-z][A-Za-z0-9 ]*:(.+)$/.test(b)){let a=b.slice(b.indexOf(":")+1);return`/${a.split(":").filter(Boolean).join("/")}`}return b}(a);return b?{path:b,canceled:!1}:{path:null,canceled:!0}}for(let a of[["zenity","--file-selection","--directory","--title=选择工作区文件夹"],["kdialog","--getexistingdirectory",`${h().homedir()}`,"--title","选择工作区文件夹"]])try{let b=await F(a);return b?{path:b,canceled:!1}:{path:null,canceled:!0}}catch(a){if(a instanceof Error&&/ENOENT|not found|not recognized/i.test(a.message))continue;if(/exited with code (1|5)$/.test(a instanceof Error?a.message:String(a)))return{path:null,canceled:!0};throw a}throw Error("no folder picker available: install zenity or kdialog, or type the path manually")}finally{H=!1}}d()}catch(a){d(a)}})},14719:(a,b,c)=>{c.d(b,{X:()=>e});var d=c(77598);function e(a){let b=new Map,c=new Map,e=!1,f=(c,f,g,h)=>{if(e||!a.hasViewers()||f?.signal?.aborted)return Promise.resolve(g);let i=(0,d.randomUUID)();return new Promise(d=>{let e=c=>{let e=b.get(i);e&&(b.delete(i),e.timer&&clearTimeout(e.timer),e.removeAbortListener?.(),a.publish({type:"extension_ui_resolved",id:i,ts:Date.now()}),d(c?h(c):g))},j={type:"extension_ui",id:i,...c,timeout:f?.timeout,ts:Date.now()},k={request:j,resolve:a=>e(a)};k.timer=setTimeout(()=>e(null),f?.timeout??6e5),k.timer.unref?.();let l=()=>e(null);f?.signal?.addEventListener("abort",l,{once:!0}),k.removeAbortListener=()=>f?.signal?.removeEventListener("abort",l),b.set(i,k),a.publish(j)})};return{uiContext:{select:(a,b,c)=>f({method:"select",title:a,options:b},c,void 0,a=>a.cancelled?void 0:a.value),confirm:(a,b,c)=>f({method:"confirm",title:a,message:b},c,!1,a=>!a.cancelled&&!0===a.confirmed),input:(a,b,c)=>f({method:"input",title:a,placeholder:b},c,void 0,a=>a.cancelled?void 0:a.value),notify:(b,c)=>{a.publish({type:"extension_ui",id:(0,d.randomUUID)(),method:"notify",message:b,notifyType:c??"info",ts:Date.now()})},setStatus:(b,e)=>{void 0===e?c.delete(b):c.set(b,e),a.publish({type:"extension_ui",id:(0,d.randomUUID)(),method:"setStatus",statusKey:b,statusText:e,ts:Date.now()})},setWorkingMessage:b=>{a.publish({type:"extension_ui",id:(0,d.randomUUID)(),method:"setWorkingMessage",message:b,ts:Date.now()})},onTerminalInput:()=>()=>{},setWorkingVisible:()=>{},setWorkingIndicator:()=>{},setHiddenThinkingLabel:()=>{},setWidget:()=>{},setFooter:()=>{},setHeader:()=>{},setTitle:()=>{},custom:async()=>void 0,pasteToEditor:()=>{},setEditorText:()=>{},getEditorText:()=>"",editor:async()=>void 0,addAutocompleteProvider:()=>{},setEditorComponent:()=>{},getEditorComponent:()=>void 0,getAllThemes:()=>[],getTheme:()=>void 0,setTheme:()=>{},getToolsExpanded:()=>!1,setToolsExpanded:()=>{}},statuses:c,getPendingRequests:()=>[...b.values()].map(({request:a})=>({...a,options:a.options?[...a.options]:void 0})),respond(a,c){let d=b.get(a);return!!d&&(d.resolve(c),!0)},dispose(){for(let a of(e=!0,b.values()))a.resolve({cancelled:!0});b.clear()}}}},28686:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{B1:()=>af,H$:()=>w,Hx:()=>_,Rq:()=>aj,SG:()=>N,Sj:()=>ad,Ui:()=>L,al:()=>ag,g7:()=>ah,lX:()=>ai,tX:()=>ae,vJ:()=>ak});var e=c(73024),f=c(77598),g=c(76760),h=c.n(g),i=c(75430),j=c(87982),k=c(14719),l=c(35851),m=c(34007),n=c(3672),o=c(31374),p=c(29296),q=c(62433),r=c(34070),s=c(75554),t=c(6512),u=a([i,j,l,o,q,s]);[i,j,l,o,q,s]=u.then?(await u)():u;let al=globalThis,am=al.__piWebSessions??=new Map;function v(a){if(null==a)return"";if("string"==typeof a)return a;if(Array.isArray(a))return a.map(v).join("");if("object"==typeof a){if("string"==typeof a.text)return a.text;if("string"==typeof a.thinking)return a.thinking}return""}function w(a,b){if(!a||"object"!=typeof a)return{role:"other",content:[]};let c={role:"other",content:[]};b?c.id=b:"string"==typeof a.id&&(c.id=a.id),"number"==typeof a.timestamp&&(c.timestamp=a.timestamp);let d=[];for(let b of Array.isArray(a.content)?a.content:"string"==typeof a.content?[{type:"text",text:a.content}]:[])b&&"object"==typeof b&&("text"===b.type&&"string"==typeof b.text?d.push({type:"text",text:b.text}):"thinking"===b.type&&"string"==typeof b.thinking?d.push({type:"thinking",thinking:b.thinking}):"toolCall"===b.type?d.push({type:"toolCall",id:String(b.id??""),name:String(b.name??""),arguments:b.arguments}):"image"===b.type&&"string"==typeof b.data&&"string"==typeof b.mimeType&&d.push({type:"image",data:b.data,mimeType:b.mimeType}));if(c.content=d,"user"===a.role)c.role="user";else if("assistant"===a.role)c.role="assistant",c.stopReason=a.stopReason,c.errorMessage=a.errorMessage??void 0,c.usage=(0,n.H4)(a.usage),a.usage?.cost?.total!=null&&(c.usage={...c.usage,cost:{total:a.usage.cost.total}}),c.model="string"==typeof a.model?a.model:void 0,c.provider="string"==typeof a.provider?a.provider:void 0;else if("toolResult"===a.role){c.role="toolResult";let b=(0,p.R)(v(a.content));c.content=[{type:"toolResult",toolCallId:a.toolCallId,text:b.text,isError:!0===a.isError,encodingLoss:b.encodingLoss||void 0,patch:y(a.details)}]}return c}function x(a,b){return{...w(b,function(a,b){for(let c of[...a.getEntries()].reverse())if(c?.type==="message"&&c.message===b)return c.id}(a.sm,b)),streamId:function(a,b){if(!b||"object"!=typeof b)return;a.messageIds??=new WeakMap;let c=a.messageIds.get(b);return c||(c=(0,f.randomUUID)(),a.messageIds.set(b,c)),c}(a,b)}}function y(a){let b=a?.patch;return"string"==typeof b&&b.trim()?b.slice(0,6e4):void 0}let an=new Map;function z(a){return{target:"string"==typeof a?.path?a.path:"string"==typeof a?.file_path?a.file_path:"",content:"string"==typeof a?.content?a.content:void 0}}function A(a){if(null!=a){if("string"==typeof a)return a.slice(-4e3);if(Array.isArray(a))return a.map(v).join("").slice(-4e3)||void 0;if("object"==typeof a){let b=v(a.content);if(b)return b.slice(-4e3);try{return JSON.stringify(a).slice(-4e3)}catch{}}}}let ao=new WeakMap;function B(a){let b=ao.get(a);if(b){for(;b.length>0&&null!==b[0].events;)for(let c of b.shift().events)C(a,c);0===b.length&&ao.delete(a)}}function C(a,b){if(a.disposed)return;a.seq+=1;let c=JSON.stringify(b);for(let b of(a.buffer.push({seq:a.seq,json:c}),a.buffer.length>400&&a.buffer.shift(),a.subscribers))try{b(a.seq,c)}catch{a.subscribers.delete(b)}}function D(a,b){let c=ao.get(a);if(!c)return C(a,b);c.push({events:[b]}),B(a)}function E(a,b){let c=b.model;D(a,{type:"model",provider:c?String(c.provider??""):void 0,model:c?String(c.id??""):void 0,thinkingLevel:String(b.thinkingLevel??""),thinkingLevels:b.getAvailableThinkingLevels(),ts:Date.now()})}function F(a,b){if(!a.desiredThinkingLevel)return;let c=(0,t.Kt)(b.model,a.desiredThinkingLevel);c!==b.thinkingLevel&&b.setThinkingLevel(c)}function G(a){let b=0,c=0,d=0,e=0,f=0,g=0;for(let h of a.ledger.entries){if("tool"===h.kind){c+=Math.max(0,h.timing?.durationMs??0);continue}"message"===h.kind&&(b+=Math.max(0,h.timing?.durationMs??0),h.timing?.ttftMs!==void 0&&(d+=Math.max(0,h.timing.ttftMs),e+=1),h.timing?.decodeMs!==void 0&&h.tokens?.output!==void 0&&(f+=Math.max(0,h.timing.decodeMs),g+=Math.max(0,h.tokens.output)))}return{llmMs:b,toolMs:c,ttftMs:d,ttftSteps:e,decodeMs:f,decodeTokens:g}}function H(a){if(!a.session)return null;try{let b=a.session.getSessionStats();return{userMessages:b.userMessages,assistantMessages:b.assistantMessages,toolCalls:b.toolCalls,totalMessages:b.totalMessages,tokens:b.tokens,cost:b.cost,...G(a)}}catch{return null}}function I(a){if(!a.session)return null;let b=H(a),c=a.session.getContextUsage()??null;return{type:"usage",stats:b,contextUsage:c?{tokens:c.tokens,contextWindow:c.contextWindow,percent:c.percent}:null,ts:Date.now()}}function J(a){let b=I(a);b&&D(a,b)}function K(a){return a.growth&&a.growth.version!==l.IA&&(a.growth.dispose(),a.growth=null),a.growth??=(0,l.kW)({cwd:a.cwd,sessionPath:a.sessionPath,publish:b=>D(a,b)})}async function L(a,b=""){return M(a),K(a).snapshotNow(b)}function M(a){a.lastActive=Date.now()}function N(a){let b=am.get(a);if(!b){if(!(0,e.existsSync)(a))throw new q.BV("session not found");let c=(0,j.G1)(a);b=O(a,c.getCwd()||process.cwd(),c)}return M(b),b}function O(a,b,c){let d=[];try{d=(0,n.WZ)(c.getEntries())}catch{}let e={sessionPath:a,cwd:b,sm:c,session:null,creating:null,subscribers:new Set,buffer:[],seq:0,inflight:null,ui:null,growth:null,ledger:new n.Pn(d),lastActive:Date.now(),toolPreset:"readonly",resourceVersion:0,resourceReloadPending:!1,resourceReloading:!1,promptSubmitting:!1,runActive:!1,disposed:!1,messageIds:new WeakMap};return am.set(a,e),e}function P(a,b=(0,j.ye)(a)){let c=b.getAgentsFiles().agentsFiles.map(a=>({path:a.path,content:a.content,source:"project"})),d=b.getAppendSystemPrompt(),e=b.getAppendSystemPromptSources();return[...c,...d.map((a,b)=>({path:e[b]?.path??`Appended system prompt ${b+1}`,content:a,source:"extension"}))]}async function Q(a,b,c){let d={systemPrompt:0,systemTools:0,customTools:0,memory:0,skills:0,compacted:0,autoCompactBuffer:0};if(!b)return d;try{let a=b.systemPrompt??"",f=c.filter(a=>"project"===a.source).map(a=>a.content).join("\n\n");d.memory=(0,r.ec)(f);try{let{skills:c}=b.resourceLoader.getSkills();if(c.length&&a){let b=a.indexOf("## Skills");if(b>=0){let c=a.slice(b+1).search(/^## /m),e=c>=0?a.slice(b,b+1+c):a.slice(b);d.skills=(0,r.ec)(e)}}}catch{}let g=d.memory+d.skills;d.systemPrompt=Math.max(0,(0,r.ec)(a)-g);try{for(let a of b.getAllTools()){let b=(0,r.ec)(JSON.stringify({name:a.name,description:a.description,parameters:a.parameters,promptGuidelines:a.promptGuidelines}));a.sourceInfo?.source==="builtin"?d.systemTools+=b:d.customTools+=b}}catch{}try{var e;let a=(e=b,e.sm?.getEntries?.()??e.sessionManager?.getEntries?.()??[]);for(let b=a.length-1;b>=0;b-=1){let c=a[b];if(c?.type==="compaction"&&"string"==typeof c.summary){d.compacted=(0,r.ec)(c.summary);break}}}catch{}try{let a=await (0,s.J0)();a.compaction.enabled&&(d.autoCompactBuffer=a.compaction.reserveTokens)}catch{}}catch{}return d}function R(a,b){let c=a.ledger.entries[0]?.ts??Date.now(),d=[];b?.systemPrompt&&d.push({seq:-1,kind:"system",ts:c,title:"Initial System Prompt",detail:b.systemPrompt});try{P(a.cwd,a.session?.resourceLoader).forEach((a,b)=>d.push({seq:-2-b,kind:"context",ts:c,title:a.path,detail:a.content}))}catch{}return d}function S(a,b){for(let c of R(a,b))D(a,{type:"traj",entry:c,ts:Date.now()})}async function T(a){if(a.disposed)throw Error("session is disposed");return a.creating?a.creating:a.session?a.session:(a.creating=(async()=>{let b;await (0,j.Df)(a.cwd);let c=await (0,j.Yb)(a.cwd);try{var d,f;let g,l;if(a.disposed)throw Error("session is disposed");let{session:m}=await (0,j.az)({cwd:a.cwd,agentDir:(0,j.$M)(),sessionManager:a.sm,modelRuntime:await (0,j.uU)(),resourceLoader:c,settingsManager:(0,j.vT)(a.cwd)});if(b=m,a.disposed)throw Error("session is disposed");a.session=m,d=a,g=(f=m).setActiveToolsByName.bind(f),f.setActiveToolsByName=a=>{let b=V(d,f);g([...new Set(a)].filter(a=>b.includes(a)))},l=f.reload.bind(f),f.reload=async a=>{if(d.disposed)throw Error("session is disposed");if(U(d))throw Error("session is busy");d.resourceReloading=!0;try{await (0,j.YW)(async()=>{if(d.disposed||d.runActive||!f.isIdle)throw Error("session is busy");await l({beforeSessionStart:async()=>{W(d,f),await a?.beforeSessionStart?.(),W(d,f)}})}),d.resourceVersion=(0,j.Ec)(d.cwd)}finally{W(d,f),d.resourceReloading=!1,d.disposed||(X(d,f),S(d,f),ab(d))}},W(a,m),m.subscribe(b=>{a.disposed||function(a,b){a.ledger.onEvent(b),K(a).onEvent(b);let c=Date.now();switch(b.type){case"message_start":{let d=b.message,e=x(a,d);"assistant"===e.role&&(a.inflight=d,a.inflightId=e.streamId,a.inflightIndex=a.session?.messages.length,e.stopReason="pending",e.content=e.content.map(a=>"text"===a.type?{...a,text:""}:"thinking"===a.type?{...a,thinking:""}:a)),("user"===e.role||"assistant"===e.role)&&D(a,{type:"message",message:e,phase:"start",ts:c});break}case"message_update":{let d=b.assistantMessageEvent;if(b.message&&(a.inflight=b.message,a.inflightId&&a.messageIds.set(b.message,a.inflightId)),!d)break;"text_delta"===d.type&&"string"==typeof d.delta?D(a,{type:"delta",kind:"text",contentIndex:d.contentIndex,delta:d.delta,messageId:a.inflightId,ts:c}):"thinking_delta"===d.type&&"string"==typeof d.delta&&D(a,{type:"delta",kind:"thinking",contentIndex:d.contentIndex,delta:d.delta,messageId:a.inflightId,ts:c});break}case"message_end":{let d,e,f=b.message;f?.role==="assistant"&&(a.inflightId&&a.messageIds.set(f,a.inflightId),a.inflight=null,a.inflightId=void 0,a.inflightIndex=void 0),d=ao.get(a)??[],e={events:null},d.push(e),ao.set(a,d),queueMicrotask(()=>{e.events=(()=>{let b=x(a,f);"assistant"===b.role&&(b.endedAt=c);let d=I(a);return d?[{type:"message",message:b,phase:"end",ts:c},d]:[{type:"message",message:b,phase:"end",ts:c}]})(),B(a)});break}case"tool_execution_start":b.toolName?.toLowerCase()==="write"&&function(a,b,c,d){let{target:f}=z(d);if(f)try{let d=h().isAbsolute(f)?f:h().resolve(a,f),g=(0,e.statSync)(d);if(!g.isFile()||g.size>524288)return;let i=(0,e.readFileSync)(d,"utf8");if(i.includes("\0"))return;an.size>256&&an.clear(),an.set(`${b}\u0000${c}`,i)}catch{}}(a.cwd,a.sessionPath,b.toolCallId,b.args),D(a,{type:"tool",id:b.toolCallId,name:b.toolName,args:b.args,state:"running",ts:c});break;case"tool_execution_update":{let d=(0,p.R)(A(b.partialResult)??"");D(a,{type:"tool",id:b.toolCallId,name:b.toolName,args:b.args,state:"running",partialResult:d.text||void 0,encodingLoss:d.encodingLoss||void 0,ts:c});break}case"tool_execution_end":{let d=(0,p.R)(A(b.result)??"");D(a,{type:"tool",id:b.toolCallId,name:b.toolName,args:b.args,state:"done",result:d.text||void 0,isError:b.isError,encodingLoss:d.encodingLoss||void 0,patch:y(b.result?.details)??(b.toolName?.toLowerCase()==="write"?function(a,b,c,d){let e=`${b}\u0000${c}`,f=an.get(e);if(an.delete(e),void 0===f)return;let{target:g,content:h}=z(d);if(void 0!==h&&h!==f)try{return(0,i.generateUnifiedPatch)(g,f,h).slice(0,6e4)}catch{return}}(a.cwd,a.sessionPath,b.toolCallId,b.args):void 0),ts:c}),J(a);break}case"agent_start":a.runActive=!0,D(a,{type:"status",isStreaming:!0,state:"running",ts:c});break;case"agent_end":J(a);break;case"agent_settled":a.runActive=!1,D(a,{type:"status",isStreaming:!1,state:"idle",ts:c}),J(a),a.resourceReloadPending&&queueMicrotask(()=>void ac(a));break;case"queue_update":D(a,{type:"queue",steering:[...b.steering],followUp:[...b.followUp],ts:c});break;case"compaction_start":D(a,{type:"status",isStreaming:!0,state:"compacting",ts:c}),D(a,{type:"compaction",phase:"start",reason:b.reason,ts:c});break;case"compaction_end":D(a,{type:"compaction",phase:"end",reason:b.reason,errorMessage:b.errorMessage,ts:c}),J(a),"manual"===b.reason&&(D(a,{type:"status",isStreaming:U(a),state:U(a)?"running":"idle",ts:c}),a.resourceReloadPending&&queueMicrotask(()=>void ac(a)));break;case"session_info_changed":D(a,{type:"name",name:b.name??"",ts:c});break;case"thinking_level_changed":a.session?E(a,a.session):D(a,{type:"model",thinkingLevel:b.level,ts:c});break;case"auto_retry_start":D(a,{type:"retry",attempt:Number(b.attempt)||0,maxAttempts:Number(b.maxAttempts)||0,message:String(b.errorMessage??""),ts:c})}for(let b of a.ledger.drainDirty())D(a,{type:"traj",entry:b,ts:Date.now()})}(a,b)});let n=(0,k.X)({publish:b=>D(a,b),hasViewers:()=>!a.disposed&&a.subscribers.size>0});if(a.ui=n,await m.bindExtensions({mode:"rpc",uiContext:n.uiContext,onError:b=>{D(a,{type:"error",message:`扩展 ${b.extensionPath.split(/[\\/]/).pop()} 在 ${b.event} 出错:${b.error}`,ts:Date.now()})},abortHandler:()=>void m.abort().catch(()=>void 0)}),a.disposed)throw Error("session is disposed");return W(a,m),a.resourceVersion=(0,j.Ec)(a.cwd),S(a,m),X(a,m),ab(a),J(a),m}catch(d){throw a.ui?.dispose(),a.ui=null,b?.dispose(),c.getExtensions().runtime.invalidate(),a.session=null,d}})().catch(b=>{throw a.disposed||D(a,{type:"error",message:String(b?.message??b),ts:Date.now()}),b}).finally(()=>{a.creating=null}),a.creating)}function U(a){return a.promptSubmitting||a.resourceReloading||a.runActive||!!(a.session&&!a.session.isIdle)}function V(a,b){let c=a.customActiveTools??("full"===a.toolPreset?void 0:j.Ax[a.toolPreset]);return Y(b).filter(a=>!c||c.includes(a))}function W(a,b){b.setActiveToolsByName(V(a,b))}function X(a,b){D(a,{type:"tools",active:Z(b),all:Y(b),toolPreset:a.toolPreset,customActiveTools:a.customActiveTools??null,ts:Date.now()})}function Y(a){let b=a.getAllTools?.();return b?b.map(a=>a.name):[]}function Z(a){return a.getActiveToolNames?.()??[]}function $(a){if(!a.disposed){a.disposed=!0,a.ui?.dispose(),a.ui=null,a.growth?.dispose(),a.growth=null;try{a.session?.dispose()}catch{}for(let b of(a.creating&&a.creating.then(a=>{try{a?.dispose()}catch{}}).catch(()=>void 0),a.subscribers))try{b(a.seq,JSON.stringify({type:"status",isStreaming:!1,state:"disposed",ts:Date.now()}))}catch{}a.subscribers.clear(),am.delete(a.sessionPath)}}async function _(a){let b=am.get(a);if(!b)return;let c=b.session??(b.creating?await b.creating.catch(()=>null):null);c?.isStreaming&&await c.abort().catch(()=>void 0),$(b)}function aa(a){let b=a.session?.resourceLoader??(0,j.v9)(a.cwd)??(0,j.ye)(a.cwd),c=[],d=[];try{let a=b.getSkills();for(let b of(d=a.skills.map(a=>({name:String(a.name??""),description:String(a.description??"")})),a.diagnostics??[]))c.push({kind:"skill",path:b.path,message:b.message})}catch{d=[]}let e=[];try{let a=b.getPrompts();for(let b of(e=a.prompts.map(a=>({name:String(a.name??""),description:String(a.description??""),argumentHint:a.argumentHint})),a.diagnostics??[]))c.push({kind:"prompt",path:b.path,message:b.message})}catch{e=[]}try{for(let a of b.getExtensions().errors??[])c.push({kind:"extension",path:a.path,message:a.error})}catch{}let f=[];if(a.session)try{let b=a.session.extensionRunner;if(b)for(let a of(f=b.getRegisteredCommands().map(a=>({name:a.invocationName,description:String(a.description??""),source:String(a.sourceInfo?.path??"").split(/[\\/]/).pop()??""})),b.getCommandDiagnostics()??[]))c.push({kind:"command",path:a.path,message:a.message})}catch{f=[]}return{skills:d,promptTemplates:e,extensionCommands:f,projectTrust:(0,j.af)(a.cwd),resourceDiagnostics:c}}function ab(a){D(a,{type:"resources",...aa(a),ts:Date.now()})}async function ac(a){if(a.disposed||!a.session||a.creating||U(a))return!1;a.resourceReloadPending=!1;try{return await a.session.reload(),!0}catch(b){return D(a,{type:"error",message:`重载扩展失败:${String(b?.message??b)}`,ts:Date.now()}),!1}finally{a.resourceReloadPending&&!U(a)&&queueMicrotask(()=>void ac(a))}}async function ad(a){let b=a=>"win32"===process.platform?a.replace(/\\/g,"/").toLowerCase():a.replace(/\\/g,"/"),c=0;for(let d of am.values())if(!a||b(d.cwd)===b(a)){if(!d.session){d.subscribers.size>0&&ab(d);continue}if(d.creating||U(d)){d.resourceReloadPending=!0,D(d,{type:"error",message:"资源已更新,将在本轮结束后生效",ts:Date.now()}),ab(d);continue}await ac(d)&&(c+=1)}return c}async function ae(a){let b,c,d,e;M(a),await (0,j.Df)(a.cwd);try{a.session&&U(a)?((0,j.Dc)(a.cwd)||a.resourceVersion!==(0,j.Ec)(a.cwd))&&(a.resourceReloadPending=!0):(await (0,j.jz)(a.cwd),a.session&&(a.resourceReloadPending||a.resourceVersion!==(0,j.Ec)(a.cwd))&&(a.resourceReloadPending=!0,await ac(a)))}catch{}let f=a.session,g=[],h=!1,i=["off","minimal","low","medium","high","xhigh","max"];if(f){let e=function(a,b){if(!a.inflightId||void 0===a.inflightIndex)return!1;let c=b.messages[a.inflightIndex];return!!c&&"assistant"===c.role&&(a.messageIds.set(c,a.inflightId),!0)}(a,f);if(g=f.messages.map(b=>x(a,b)),!e&&a.inflight){let b=x(a,a.inflight);"assistant"===b.role&&g.push({...b,stopReason:"pending"})}b=a.seq;let j=f.model;j&&(c={provider:String(j.provider??""),id:String(j.id??""),name:String(j.name??j.id??"")}),d=String(f.thinkingLevel??"");try{i=f.getAvailableThinkingLevels()}catch{}h=U(a)}else{try{g=a.sm.buildContextEntries().filter(a=>"message"===a.type&&a.message).map(a=>w(a.message,a.id))}catch{g=[]}try{let b=a.sm,e=b.buildSessionContext?.();if(e?.model&&(c={provider:e.model.provider,id:e.model.modelId,name:e.model.modelId}),d=e?.thinkingLevel,e?.model){let a=(await (0,j.uU)()).getModel(e.model.provider,e.model.modelId);a&&(i=(0,t.W8)(a),d&&(d=(0,t.Kt)(a,d)))}}catch{}}let k=f?H(a):function(a){let b=0,c=0,d=0,e=0,f={input:0,output:0,cacheRead:0,cacheWrite:0,total:0},g=0,h=a=>{a&&"object"==typeof a&&(f.input+=Number(a.input??0),f.output+=Number(a.output??0),f.cacheRead+=Number(a.cacheRead??0),f.cacheWrite+=Number(a.cacheWrite??0),g+=Number(a.cost?.total??0))};for(let f of a.sm.getEntries()){if(("branch_summary"===f.type||"compaction"===f.type)&&f.usage&&h(f.usage),"message"!==f.type||!f.message)continue;e+=1;let a=f.message;"user"===a.role?b+=1:"assistant"===a.role?(c+=1,d+=Array.isArray(a.content)?a.content.filter(a=>a?.type==="toolCall").length:0,h(a.usage)):"toolResult"===a.role&&h(a.usage)}return f.total=f.input+f.output+f.cacheRead+f.cacheWrite,{userMessages:b,assistantMessages:c,toolCalls:d,totalMessages:e,tokens:f,cost:g,...G(a)}}(a),l=null;if(f){let a=f.getContextUsage()??null;l=a?{tokens:a.tokens,contextWindow:a.contextWindow,percent:a.percent}:null}else if(c)try{let b=(await (0,j.uU)()).getModels(c.provider).find(a=>String(a.id)===c.id),d=Number(b?.contextWindow??0),e=0,f=a.sm.getEntries(),h=!1;for(let a=f.length-1;a>=0;a--){let b=f[a];if("compaction"===b.type||"branch_summary"===b.type){h=!0;break}if("message"===b.type&&b.message?.role==="assistant"&&"error"!==b.message.stopReason&&"aborted"!==b.message.stopReason)break}for(let a=g.length-1;a>=0&&!h;a--){let b=g[a];if("assistant"===b.role&&b.usage){e=Number(b.usage.input??0)+Number(b.usage.cacheRead??0)+Number(b.usage.cacheWrite??0)+Number(b.usage.output??0);break}}d>0&&e>0?l={tokens:e,contextWindow:d,percent:e/d*100}:d>0&&(l={tokens:null,contextWindow:d,percent:null})}catch{}let o=f?{active:Z(f),all:Y(f).map(a=>({name:a}))}:{active:[],all:[]},p=f?{steering:[...f.getSteeringMessages()],followUp:[...f.getFollowUpMessages()]}:{steering:[],followUp:[]},q="";try{q=a.sm.getSessionName?.()??""}catch{q=""}let r=[];try{r=P(a.cwd,a.session?.resourceLoader)}catch{r=[]}try{e=await Q(a.cwd,a.session,r)}catch{e=void 0}let s=aa(a),u=a.ledger.entries.length?a.ledger.entries:function(a){try{return(0,n.WZ)(a.sm.getEntries())}catch{return[]}}(a),v=[...R(a,f),...u];return{seq:b??a.seq,sessionPath:a.sessionPath,cwd:a.cwd,name:q,contextFiles:r.map(a=>a.path),contextResources:r,contextBreakdown:e,...s,messages:g,userTurns:(0,m.g)(a.sm.getEntries()),growthError:a.growth?.getError?.()??null,model:c,thinkingLevel:d,thinkingLevels:i,toolPreset:a.toolPreset,customActiveTools:a.customActiveTools??null,extensionUiRequests:a.ui?.getPendingRequests()??[],tools:o,stats:k,contextUsage:l,queue:p,trajectory:v,isStreaming:h}}function af(a,b,c){if(M(a),c<0||c>a.seq)return!1;let d=a.buffer.filter(a=>a.seq>c);if(d.length!==a.seq-c)return!1;let e=new Set(a.ui?.getPendingRequests().map(a=>a.id));if(d.some(a=>{let b=JSON.parse(a.json);return"extension_ui"===b.type&&["select","confirm","input"].includes(b.method)&&!e.has(b.id)}))return!1;for(let c of(a.subscribers.add(b),d))b(c.seq,c.json);return!0}function ag(a,b){a.subscribers.delete(b)}async function ah(a,b){M(a);try{switch(b.cmd){case"prepare":return await T(a),{ok:!0};case"prompt":{let c=(b.text??"").trim();if(!c&&!b.images?.length)return{ok:!1,error:"empty prompt"};if(a.promptSubmitting||a.resourceReloading)return{ok:!1,error:"session is busy accepting another command"};a.promptSubmitting=!0;try{let d=await T(a);if(a.disposed)throw Error("session is disposed");if((d.isStreaming||a.runActive)&&!b.behavior)return{ok:!1,error:"session is busy; choose steer or followUp"};if(d.isStreaming||await Promise.race([K(a).prepare().catch(()=>void 0),new Promise(a=>setTimeout(a,5e3))]),a.disposed)throw Error("session is disposed");return await new Promise(e=>{let f=!1;d.prompt(c,{images:b.images,streamingBehavior:b.behavior,source:"rpc",preflightResult:a=>{a&&(f=!0,e({ok:!0,data:{accepted:!0}}))}}).then(()=>{f||e({ok:!1,error:"prompt completed without acceptance"})},b=>{let c=String(b?.message??b);f?D(a,{type:"error",message:c,ts:Date.now()}):e({ok:!1,error:c})})})}finally{a.promptSubmitting=!1,a.disposed||D(a,{type:"status",isStreaming:U(a),state:U(a)?"running":"idle",ts:Date.now()}),a.resourceReloadPending&&queueMicrotask(()=>void ac(a))}}case"steer":case"followUp":{if(a.promptSubmitting||a.resourceReloading)return{ok:!1,error:"session is busy accepting another command"};let c=await T(a);if(a.promptSubmitting||a.resourceReloading||!c.isStreaming)return{ok:!1,error:"session is not accepting queued messages"};return await c[b.cmd](b.text??"",b.images),{ok:!0}}case"clearQueue":{if(!a.session)return{ok:!0,data:{steering:[],followUp:[]}};let b=a.session.clearQueue();return D(a,{type:"queue",steering:[],followUp:[],ts:Date.now()}),{ok:!0,data:b}}case"abort":{if(!a.session)return{ok:!0,data:{steering:[],followUp:[]}};let b=a.session.clearQueue();return await a.session.abort(),D(a,{type:"status",isStreaming:!1,state:"aborted",ts:Date.now()}),{ok:!0,data:b}}case"compact":{let c=await T(a);return await c.compact(b.instructions||void 0),{ok:!0}}case"setModel":{let c=await T(a),d=(await (0,j.uU)()).getModels(b.provider).find(a=>a.id===b.modelId);if(!d)return{ok:!1,error:`unknown model ${b.provider}/${b.modelId}`};return await c.setModel(d,{persist:!1}),F(a,c),E(a,c),{ok:!0,data:{thinkingLevel:c.thinkingLevel,thinkingLevels:c.getAvailableThinkingLevels()}}}case"setThinkingLevel":{let c=await T(a),d=String(b.level??"medium"),e=(0,t.Kt)(c.model,d);return a.desiredThinkingLevel=d,c.setThinkingLevel(e),E(a,c),{ok:!0,data:{requested:d,thinkingLevel:c.thinkingLevel,clamped:c.thinkingLevel!==d}}}case"setToolPreset":{let c=b.preset;if(!Object.hasOwn(j.Ax,c))return{ok:!1,error:"invalid tool preset"};if(U(a))return{ok:!1,error:"cannot change tools while the agent is running"};let d=await T(a);if(U(a))return{ok:!1,error:"cannot change tools while the agent is running"};return a.toolPreset=c,a.customActiveTools=void 0,W(a,d),S(a,d),X(a,d),{ok:!0}}case"setActiveTools":{if(U(a))return{ok:!1,error:"cannot change tools while the agent is running"};let c=await T(a);if(U(a))return{ok:!1,error:"cannot change tools while the agent is running"};let d=Array.isArray(b.names)?b.names.map(String):[],e=Y(c),f=[...new Set(d)].filter(a=>e.includes(a));if(0===f.length)return{ok:!1,error:"cannot disable all tools"};return a.customActiveTools=f,W(a,c),S(a,c),X(a,c),{ok:!0,data:{active:Z(c)}}}case"cycleModel":{let c=await T(a),d=await c.cycleModel(b.direction??"forward");if(d?.model)return F(a,c),E(a,c),{ok:!0,data:{model:String(d.model.id??""),thinkingLevel:c.thinkingLevel}};return{ok:!1,error:"no scoped models to cycle"}}case"navigate":{let c=await T(a),d=String(b.entryId??"");if(!d)return{ok:!1,error:"missing entryId"};let e=await c.navigateTree(d);return{ok:!e?.cancelled,data:{cancelled:e?.cancelled===!0,editorText:e?.editorText}}}case"rename":{let c=(b.text??"").trim();return a.session?a.session.setSessionName(c):a.sm.appendSessionInfo(c),D(a,{type:"name",name:c,ts:Date.now()}),{ok:!0}}case"extensionUiResponse":return a.ui?.respond(String(b.requestId),{value:b.value,confirmed:b.confirmed,cancelled:b.cancelled})?{ok:!0}:{ok:!1,error:"no pending extension request"};case"reload":{if(U(a))return{ok:!1,error:"session is busy"};let b=await T(a);return await b.reload(),{ok:!0}}case"fork":{let c=(b.entryId?j.Cv.open(a.sessionPath).createBranchedSession(b.entryId):j.Cv.forkFrom(a.sessionPath,a.cwd).getSessionFile())??"";if(!c)return{ok:!1,error:"failed to create forked session"};return{ok:!0,data:{sessionPath:c}}}default:return{ok:!1,error:"unknown cmd"}}}catch(a){return{ok:!1,error:String(a?.message??a)}}}async function ai(a){let b=j.Cv.create(a),c=b.getSessionFile()??"";if(!c)throw Error("failed to create session file");return O(c,a,b),{sessionPath:c}}function aj(){let a={};for(let[b,c]of am){let d;if(c.session){for(let a=c.ledger.entries.length-1;a>=0;a-=1){let b=c.ledger.entries[a];if("tool"===b.kind){d=[b.toolName,(b.preview??b.title??"").split("\n")[0].slice(0,80)].filter(Boolean).join(" \xb7 ");break}}a[b]={streaming:U(c),lastStep:d}}}return a}async function ak(a,b){let d=a.sessionPath.replace(/\\/g,"/").split("/").pop()??"session";if("jsonl"===b){let{readFile:b}=await Promise.resolve().then(c.t.bind(c,51455,23));return{filename:d,content:await b(a.sessionPath,"utf8"),contentType:"application/jsonl"}}let e=await T(a),f=await e.exportToHtml(),{readFile:g,rm:h}=await Promise.resolve().then(c.t.bind(c,51455,23)),i=await g(f,"utf8");return await h(f,{force:!0}).catch(()=>void 0),{filename:d.replace(/\.jsonl$/,".html"),content:i,contentType:"text/html"}}setInterval(function(){let a=Date.now();for(let b of[...am.values()])!(b.subscribers.size>0)&&!(a-b.lastActive<=6e5)&&(b.creating||U(b)||$(b));let b=[...am.values()].filter(a=>a.session);if(b.length>6)for(let a of b.filter(a=>!a.creating&&!U(a)&&0===a.subscribers.size).sort((a,b)=>a.lastActive-b.lastActive).slice(0,b.length-6))$(a)},6e4).unref?.(),(0,o.j8)({isActive:function(a){let b="win32"===process.platform?a.toLowerCase():a;for(let a of am.keys())if(("win32"===process.platform?a.toLowerCase():a)===b)return!0;return!1},log:a=>console.log(a)}),d()}catch(a){d(a)}})},29296:(a,b,c)=>{c.d(b,{R:()=>d});function d(a){return a.includes("�")?{text:a.split(/\r?\n/).filter(a=>!a.includes("�")).join("\n").replace(/\n{3,}/g,"\n\n").trim(),encodingLoss:!0}:{text:a,encodingLoss:!1}}},31374:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{j8:()=>l});var e=c(51455),f=c.n(e),g=c(76760),h=c.n(g),i=c(6896),j=a([i]);async function k({now:a=Date.now(),retentionDays:b=30,isActive:d=()=>!1,log:e=console.log,dryRun:g=!1}={}){let j={scanned:0,deleted:[],missing:[],skippedActive:[],kept:0};if(!Number.isFinite(b)||b<=0)return j;let l=a-24*b*36e5,{archivedSessions:m}=await (0,i.vQ)();for(let k of m){let m;j.scanned+=1;let n=h().resolve(k);if(d(n)){j.skippedActive.push(n),j.kept+=1;continue}try{let a=await f().stat(n);if(!a.isFile())throw Object.assign(Error("not a file"),{code:"ENOENT"});m=a.mtimeMs}catch(a){if("ENOENT"!==a.code)throw a;j.missing.push(n),g||await (0,i.Iz)(n);continue}if(m>l){j.kept+=1;continue}let o=Math.floor((a-m)/864e5);if(j.deleted.push({path:n,idleDays:o}),g)continue;let{deleteSession:p}=await c.e(229).then(c.bind(c,66229));await p(n),await (0,i.Iz)(n),e(`[piweb] 归档会话已超过 ${b} 天没有活动(${o} 天),已删除:${n}`)}return j}i=(j.then?(await j)():j)[0];let m=!1;function l({intervalMs:a=216e5,delayMs:b=5e3,log:c=console.log,isActive:d}={}){if(m)return;m=!0;let e=async()=>{Date.now();try{let a=await k({log:c,isActive:d});(a.deleted.length||a.missing.length)&&c(`[piweb] 归档清理:删除 ${a.deleted.length} 个,清理失效记录 ${a.missing.length} 个,保留 ${a.kept} 个`)}catch(a){c(`[piweb] 归档清理失败:${a instanceof Error?a.message:a}`)}},f=setTimeout(()=>{e();let b=setInterval(()=>void e(),a);b.unref?.()},b);f.unref?.()}d()}catch(a){d(a)}})},34007:(a,b,c)=>{c.d(b,{g:()=>d});function d(a){let b=[];for(let[c,d]of a.entries()){if("message"!==d.type||d.message?.role!=="user")continue;let a="number"==typeof d.timestamp?d.timestamp:Date.parse(d.timestamp??""),e=Number.isFinite(a)?a:d.message.timestamp;b.push({id:d.id??`entry:${c}`,ts:"number"==typeof e&&Number.isFinite(e)?e:NaN})}return b}},34070:(a,b,c)=>{c.d(b,{ec:()=>d});function d(a){return Math.ceil(a.length/4)}},35851:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{IA:()=>o,kW:()=>m});var e=c(73024),f=c.n(e),g=c(76760),h=c.n(g),i=c(69460),j=a([i]);i=(j.then?(await j)():j)[0];let n=new Set(["read","grep","find","ls"]),o=3;function k(a){return!n.has(a.toLowerCase())}function l(a,b){if(!h().isAbsolute(b))return b.replace(/\\/g,"/");let c=h().relative(a,b);return!c||c.startsWith("..")||h().isAbsolute(c)?b.replace(/\\/g,"/"):c.replace(/\\/g,"/")}let p=/(?:^|\/)(?:\.DS_Store|Thumbs\.db|[^/]*\.log|[^/]*\.tsbuildinfo|next-env\.d\.ts)$/;function m(a){let b,c,d,g,{cwd:j,sessionPath:m,publish:n}=a,q=new Set,r=new Map,s=[],t=new Set,u=0,v=null,w=!1,x=!1,y=null,z=!1,A=null,B=!1,C=0,D=!1,E=null,F=Promise.resolve(),G=a=>{let e=a instanceof Error?a.message:String(a),f=a instanceof i.qy&&("unavailable"===a.code||"too-large"===a.code);if(f){z=!0,A=a;try{v?.close()}catch{}v=null,b&&clearTimeout(b),c&&clearTimeout(c),d&&clearTimeout(d),b=c=d=void 0,s.length=0,q.clear(),r.clear(),t.size&&(t.clear(),n({type:"growth_pending",paths:[],ts:Date.now()}))}D=!0,E=e;let g=Date.now();(f||!(g-C<6e4))&&(C=g,console.warn(`[piweb] growth snapshot failed for ${j}: ${e}`),n({type:"growth_error",message:e,ts:g}))},H=()=>{c=void 0,n({type:"growth_pending",paths:[...t].slice(0,200),ts:Date.now()})},I=a=>F=F.then(a,a).catch(G),J=async(a,b=!1)=>{if(z||B)return;let d=await (0,i.P9)(j,{...a,session:m,force:b});D&&(D=!1,E=null,n({type:"growth_error",message:null,ts:Date.now()})),d&&!B&&(n({type:"growth",step:d,ts:Date.now()}),t.size&&(t.clear(),c&&clearTimeout(c),H()))},K=(a,b=!1)=>I(()=>J(a,b)),L=()=>x?F:(y||(y=I(async()=>{z||B||(await (0,i.k$)(j,m)||await J({kind:"baseline",label:"",ts:g},!0),x=!0)})).finally(()=>{y=null}),y),M=()=>{b=void 0;let a=s.splice(0);if(!a.length)return;let c=a.filter(a=>"tool"===a.kind),d=c[0]??a[0],e=c.length>1?` +${c.length-1}`:"",f=a.reduce((a,b)=>b.ts??a,void 0)??g;(x?Promise.resolve():L().catch(()=>void 0)).then(()=>{B||z||K({kind:d.kind,label:`${d.label}${e}`,toolCallId:d.toolCallId,toolName:d.toolName,ts:f})})},N=(a,e)=>{if(z||B)return;let g=null==e?"":String(e).replace(/\\/g,"/");if(!(g&&((0,i.vt)(g)||p.test(g)))){if(q.size>0){if(!g||t.size+u>=500)return;u+=1,f().promises.stat(h().join(j,g)).then(a=>a.isDirectory(),()=>!1).then(a=>{if(B||z)return;let b=a?`${g}/`:g;!(t.size>=500||t.has(b))&&(t.add(b),c||(c=setTimeout(H,300)))}).finally(()=>{u-=1});return}s.length||b||(d&&clearTimeout(d),d=setTimeout(()=>{d=void 0,q.size>0||s.length||K({kind:"external",label:""})},1500))}},O=()=>{if(!v&&!w&&!z)try{let a=j;try{a=e.realpathSync.native(j)}catch{}(v=f().watch(a,{recursive:!0,persistent:!1},N)).on("error",()=>{w=!0;try{v?.close()}catch{}v=null})}catch{w=!0,v=null}};return{version:o,getError:()=>E,async prepare(){g=Date.now(),O(),await L()},onEvent(a){if(!B&&!z)switch(a.type){case"agent_start":g=a.ts??Date.now(),O(),L();break;case"tool_execution_start":if(!k(a.toolName))break;q.add(a.toolCallId),r.size>64&&r.delete(r.keys().next().value),r.set(a.toolCallId,a.args),d&&(clearTimeout(d),d=void 0);break;case"tool_execution_end":{var c,e;let f,h;if(!k(a.toolName))break;q.delete(a.toolCallId);let i=r.get(a.toolCallId);r.delete(a.toolCallId),e={kind:"tool",label:(c=a.toolName,f=i&&"object"==typeof i?i:{},h="","string"==typeof f.command?h=f.command:"string"==typeof f.path?h=l(j,f.path):"string"==typeof f.file_path&&(h=l(j,f.file_path)),(h=(h=h.split("\n").map(a=>a.trim()).find(Boolean)??"").replace(/\s+/g," ")).length>60&&(h=`${h.slice(0,59)}…`),h?`${c} \xb7 ${h}`:c),toolCallId:a.toolCallId,toolName:a.toolName},z||(d&&(clearTimeout(d),d=void 0),s.push("tool"===e.kind&&void 0!==g?{...e,ts:e.ts??g}:e),b&&clearTimeout(b),b=setTimeout(M,200));break}case"agent_end":q.clear(),b&&clearTimeout(b),M(),a.willRetry||I(()=>J({kind:"turn",label:"",ts:g},!0)),g=void 0}},async snapshotNow(a=""){let b;if(z)throw A??new i.qy("growth tracking is disabled for this workspace","unavailable");let c=null;if(await I(async()=>{try{if(z)throw A??new i.qy("growth tracking is disabled for this workspace","unavailable");let b=await (0,i.P9)(j,{kind:"manual",label:a,session:m});D&&(D=!1,E=null,n({type:"growth_error",message:null,ts:Date.now()})),b&&(c=b,n({type:"growth",step:b,ts:Date.now()}))}catch(a){b=a,G(a)}}),b)throw b;return c},dispose(){B=!0,b&&clearTimeout(b),c&&clearTimeout(c),d&&clearTimeout(d);try{v?.close()}catch{}v=null}}}d()}catch(a){d(a)}})},62433:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{BV:()=>q,CN:()=>l,Eb:()=>o,XI:()=>n,gS:()=>p,os:()=>m});var e=c(51455),f=c.n(e),g=c(76760),h=c.n(g),i=c(87982),j=a([i]);i=(j.then?(await j)():j)[0];class q extends Error{constructor(a){super(a),this.name="BoundaryError"}}function k(a){let b=h().resolve(a);return"win32"===process.platform?b.toLowerCase():b}function l(a,b){let c=h().relative(k(a),k(b));return""===c||!c.startsWith("..")&&!h().isAbsolute(c)}async function m(a,b){if(!(0,i.Sd)(a))throw new q("invalid session id");let c=(0,i.Gg)(a);if(!h().isAbsolute(c)||".jsonl"!==h().extname(c).toLowerCase())throw new q("invalid session path");let d=h().join((0,i.$M)(),"sessions"),e=await f().realpath(d).catch(()=>h().resolve(d));if(!l(e,h().resolve(c)))throw new q("session path is outside the Pi session store");if(b?.allowPending){let a=await f().realpath(c).catch(a=>{if("ENOENT"===a.code)return null;throw a});if(!a){let a=h().dirname(c);for(;l(d,a);){let b=await f().realpath(a).catch(a=>{if("ENOENT"===a.code)return null;throw a});if(b){if(!l(e,b))throw new q("session path escapes the Pi session store");return c}if(o(a,d))break;a=h().dirname(a)}throw new q("session store not found")}if(!l(e,a))throw new q("session path escapes the Pi session store");return c}let g=await f().realpath(c).catch(()=>{throw new q("session not found")});if(!l(e,g))throw new q("session path escapes the Pi session store");if(!(await f().stat(g)).isFile())throw new q("session is not a file");return g}async function n(a){if("string"!=typeof a||0===a.trim().length||a.length>4096)throw new q("invalid workspace path");let b=await f().realpath(h().resolve(a.trim())).catch(()=>{throw new q("workspace not found")});if(!(await f().stat(b)).isDirectory())throw new q("workspace is not a directory");return b}function o(a,b){return k(a)===k(b)}async function p(a,b){if("string"!=typeof a||!h().isAbsolute(a)||a.length>4096)throw new q("invalid resource path");let c=await f().realpath(a).catch(()=>{throw new q("resource not found")});for(let a of b){if(!a)continue;let b=await f().realpath(a).catch(()=>null);if(b&&o(c,b))return c}throw new q("resource is not part of the discovered Pi configuration")}d()}catch(a){d(a)}})},69460:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{I$:()=>F,P9:()=>D,e2:()=>E,iv:()=>I,k$:()=>G,nT:()=>H,qY:()=>K,qy:()=>O,vO:()=>J,vt:()=>q});var e=c(31421),f=c(77598),g=c(73024),h=c(51455),i=c.n(h),j=c(76760),k=c.n(j),l=c(96743),m=c(87982),n=a([m]);m=(n.then?(await n)():n)[0];let L=l.It,M=new Set(L.map(a=>a.toLowerCase())),N=`# PiWeb growth snapshot exclusions (generated, do not edit)
|
|
2
2
|
${[...L.map(a=>`${a}/`),".DS_Store","Thumbs.db","*.log",".env",".env.*","!.env.example","*.pem","*.key","*.p12","*.pfx","id_rsa*","id_ed25519*"].join("\n")}
|
|
3
3
|
`;class O extends Error{constructor(a,b="failed"){super(a),this.code=b,this.name="GrowthError"}}let P=globalThis,Q=P.__piWebGrowth??={workspaces:new Map};function o(a){let b=k().resolve(a).replace(/\\/g,"/");return"win32"===process.platform?b.toLowerCase():b}function p(a){let b=k().resolve(a);try{b=g.realpathSync.native(b)}catch{}let c=o(b),d=c.replace(/[^a-z0-9]+/gi,"-").replace(/^-+|-+$/g,"").slice(-48).toLowerCase();return`${d||"root"}-${(0,f.createHash)("sha1").update(c).digest("hex").slice(0,8)}`}function q(a){return a.replace(/\\/g,"/").split("/").filter(Boolean).some(a=>M.has(a.toLowerCase()))}async function r(){if(Q.gitBin)return Q.gitBin;let a="git";if("win32"!==process.platform&&!await new Promise(a=>{let b=(0,e.spawn)("git",["--version"],{stdio:"ignore"});b.on("error",()=>a(!1)),b.on("close",b=>a(0===b))})){for(let b of["/opt/homebrew/bin/git","/usr/local/bin/git","/usr/bin/git","/usr/local/git/bin/git"])if(await new Promise(a=>{let c=(0,e.spawn)(b,["--version"],{stdio:"ignore"});c.on("error",()=>a(!1)),c.on("close",b=>a(0===b))})){a=b;break}}return Q.gitBin=a,a}function s(a,b={}){let c=b.maxBuffer??0x4000000;return r().then(d=>new Promise((f,h)=>{let i=(0,e.spawn)(d,a,{cwd:b.cwd,env:{...process.env,GIT_TERMINAL_PROMPT:"0",GIT_OPTIONAL_LOCKS:"0",...b.env},windowsHide:!0,stdio:["pipe","pipe","pipe"]}),j=[],k=[],l=0,m=!1,n=setTimeout(()=>o(new O("git timed out","failed")),3e4),o=a=>{m||(m=!0,clearTimeout(n),i.kill(),h(a))};i.stdout.on("data",a=>{if((l+=a.length)>c){i.kill(),o(new O("git output exceeded the buffer limit","too-large"));return}j.push(a)}),i.stderr.on("data",a=>k.push(a)),i.on("error",a=>{"ENOENT"===a.code&&b.cwd&&!(0,g.existsSync)(b.cwd)?o(new O("workspace directory not found","failed")):o("ENOENT"===a.code?new O("git is not installed","unavailable"):a)}),i.on("close",a=>{m||(m=!0,clearTimeout(n),f({stdout:Buffer.concat(j),stderr:Buffer.concat(k).toString("utf8"),code:a??-1}))}),void 0!==b.input?i.stdin.end(b.input):i.stdin.end()}))}async function t(){if(Q.gitOk)return Q.gitOk;if(Q.gitFailedAt&&Date.now()-Q.gitFailedAt<6e4)return!1;let a=s(["--version"]).then(a=>0===a.code,()=>!1);return Q.gitOk=a,a.then(a=>{Q.gitOk=void 0,a?Q.gitFailedAt=void 0:Q.gitFailedAt=Date.now()}),a}async function u(a,b,c={}){let d=["--git-dir",a.repo,"--work-tree",a.cwd,"-c","core.autocrlf=false","-c","core.safecrlf=false","-c","core.quotepath=false","-c","core.fsmonitor=false","-c","core.untrackedCache=false"],e=await s([...d,...b],{cwd:a.cwd,input:c.input,maxBuffer:c.maxBuffer,env:c.env});if(0!==e.code&&!c.allowFail)throw new O(`git ${b[0]} failed: ${e.stderr.trim().split("\n")[0]||`exit ${e.code}`}`);return e}function v(){return k().join((0,m.$M)(),"web-growth")}async function w(a){if(!await t())throw new O("git is not installed","unavailable");let b=p(a),c=k().join(v(),b),d=k().join(c,"repo"),e=k().join(c,"ledger.jsonl");if(await i().mkdir(c,{recursive:!0}),!await i().stat(k().join(d,"HEAD")).then(()=>!0,()=>!1)){let a=await s(["init","-q","--bare",d]);if(0!==a.code)throw new O(`git init failed: ${a.stderr.trim()}`)}await i().mkdir(k().join(d,"info"),{recursive:!0}),await i().writeFile(k().join(d,"info","exclude"),N,"utf8"),await i().writeFile(k().join(c,"meta.json"),JSON.stringify({cwd:a,key:b,createdAt:new Date().toISOString()},null,2),"utf8");let f=[];try{for(let a of(await i().readFile(e,"utf8")).split("\n")){if(!a.trim())continue;let b=function(a){try{let b=JSON.parse(a);if("string"!=typeof b?.tree||"number"!=typeof b.seq)return null;return b}catch{return null}}(a);b&&f.push(b)}}catch(a){if("ENOENT"!==a.code)throw a}let g={key:b,cwd:a,dir:c,repo:d,ledger:e,steps:f,emptyTree:"",excludeRules:N,lock:Promise.resolve()},h=f[f.length-1];g.lastTree=h?.tree,g.lastCommit=h?.commit;let j=await u(g,["hash-object","-t","tree","--stdin"],{input:""});return g.emptyTree=j.stdout.toString("utf8").trim(),g}async function x(a){let b=await i().realpath(k().resolve(a)).catch(()=>k().resolve(a)),c=p(b),d=Q.workspaces.get(c);if(d){let a=await d.catch(()=>null);a&&await i().stat(k().join(a.repo,"HEAD")).then(()=>!0,()=>!1)||(Q.workspaces.delete(c),d=void 0)}return d||(d=w(b),Q.workspaces.set(c,d),d.catch(()=>Q.workspaces.delete(c))),d}function y(a,b){let c=a.lock.then(b,b);return a.lock=c.then(()=>void 0,()=>void 0),c}let R=/^[0-9a-f]{40}([0-9a-f]{24})?$/;function z(a,b="hash"){if("string"!=typeof a||!R.test(a))throw new O(`invalid ${b}`,"not-found");return a}function A(a){if("string"!=typeof a||!a.trim())throw new O("missing path","not-found");let b=a.replace(/\\/g,"/").replace(/^\.\//,"");if(b.startsWith("/")||/^[A-Za-z]:\//.test(b)||b.split("/").some(a=>".."===a))throw new O("invalid path","not-found");return b}async function B(a,b,c){let[d,e]=await Promise.all([u(a,["diff-tree","-r","-M","--name-status","-z",b,c]),u(a,["diff-tree","-r","-M","--numstat","-z",b,c])]),f=function(a){let b=a.split("\0"),c=[];for(let a=0;a<b.length;a+=1){let d=b[a];if(!d)continue;let e=d[0];if("R"===e||"C"===e){let d=b[a+1],f=b[a+2];if(a+=2,void 0===f)break;c.push("R"===e?{status:"R",path:f,from:d}:{status:"A",path:f});continue}let f=b[a+1];if(a+=1,void 0===f)break;"A"===e||"M"===e||"D"===e?c.push({status:e,path:f}):"T"===e&&c.push({status:"M",path:f})}return c}(d.stdout.toString("utf8")),g=function(a){let b=a.split("\0"),c=new Map;for(let a=0;a<b.length;a+=1){let d=b[a];if(!d)continue;let[e,f,g]=d.split(" ");if(void 0===e||void 0===f)continue;let h="-"===e||"-"===f,i={add:h?0:Number(e)||0,del:h?0:Number(f)||0,binary:h};if(void 0===g||""===g){let d=b[a+2];a+=2,void 0!==d&&c.set(d,i);continue}c.set(g,i)}return c}(e.stdout.toString("utf8"));for(let a of f){let b=g.get(a.path);b&&(a.add=b.add,a.del=b.del,b.binary&&(a.binary=!0))}return f.sort((a,b)=>a.path.localeCompare(b.path)),f}async function C(a){let b=await u(a,["ls-files","-z","--others","--modified","--deleted","--exclude-standard"]),c=Array.from(new Set(b.stdout.toString("utf8").split("\0").filter(a=>a&&!a.endsWith("/"))));if(c.length>5e4){let a=new Map;for(let b of c){let c=b.split("/"),d=c.length>1?c.slice(0,2).join("/"):"(root)";a.set(d,(a.get(d)??0)+1)}let b=[...a].sort((a,b)=>b[1]-a[1]).slice(0,3).map(([a,b])=>`${a}: ${b}`).join(", ");throw new O(`snapshot has ${c.length} candidate files (limit 50000); largest directories: ${b}. Exclude generated directories with .gitignore`,"too-large")}let d=[],e=[],f=new Map,g=b=>{if(!b)return Promise.resolve(!0);let c=f.get(b);if(c)return c;let d=(async()=>{let c=b.includes("/")?b.slice(0,b.lastIndexOf("/")):"";if(!await g(c))return!1;let d=await i().lstat(k().join(a.cwd,b)).catch(a=>{if("ENOENT"===a.code||"ENOTDIR"===a.code)return null;throw a});return!!(d?.isDirectory()&&!d.isSymbolicLink())})();return f.set(b,d),d};for(let b=0;b<c.length;b+=256)for(let{rel:f,include:h}of(await Promise.all(c.slice(b,b+256).map(async b=>{let c=b.includes("/")?b.slice(0,b.lastIndexOf("/")):"";if(!await g(c))return{rel:b,include:!1};let d=await i().lstat(k().join(a.cwd,b)).catch(a=>{if("ENOENT"===a.code||"ENOTDIR"===a.code)return null;throw a});return{rel:b,include:!!(d?.isFile()&&d.size<=1048576)}}))))(h?d:e).push(f);for(let b=0;b<e.length;b+=256)await u(a,["update-index","--force-remove","-z","--stdin"],{input:`${e.slice(b,b+256).join("\0")}\0`});for(let b=0;b<d.length;b+=256)await u(a,["update-index","--add","--remove","--replace","-z","--stdin"],{input:`${d.slice(b,b+256).join("\0")}\0`});return c.length}async function D(a,b){let c=await x(a);return y(c,async()=>{c.excludeRules!==N&&(await i().writeFile(k().join(c.repo,"info","exclude"),N,"utf8"),c.excludeRules=N),await C(c);let a=(await u(c,["write-tree"])).stdout.toString("utf8").trim();z(a,"tree");let d=c.lastTree??c.emptyTree;if(a===d&&!b.force)return null;let e=void 0===c.lastTree,f=e?[]:await B(c,d,a),g=f.slice(0,2e3),h=["commit-tree",a,"-m",`${b.kind}: ${b.label||"snapshot"}`];c.lastCommit&&h.push("-p",c.lastCommit);let j=(await u(c,h,{env:{GIT_AUTHOR_NAME:"PiWeb",GIT_AUTHOR_EMAIL:"piweb@localhost",GIT_COMMITTER_NAME:"PiWeb",GIT_COMMITTER_EMAIL:"piweb@localhost"}})).stdout.toString("utf8").trim();await u(c,["update-ref","refs/piweb/growth",j]);let l={seq:(c.steps[c.steps.length-1]?.seq??0)+1,ts:b.ts??Date.now(),session:b.session,kind:b.kind,label:b.label.slice(0,200),tree:a,parent:d,commit:j,toolCallId:b.toolCallId,toolName:b.toolName,changes:g,truncated:f.length>g.length||void 0,initial:e||void 0,stats:function(a){let b={added:0,modified:0,deleted:0,renamed:0,add:0,del:0};for(let c of a)"A"===c.status?b.added+=1:"M"===c.status?b.modified+=1:"D"===c.status?b.deleted+=1:b.renamed+=1,b.add+=c.add??0,b.del+=c.del??0;return b}(f)};return await i().appendFile(c.ledger,`${JSON.stringify(l)}
|
|
4
|
-
`,"utf8"),c.steps.push(l),c.lastTree=a,c.lastCommit=j,l.seq%100==0&&y(c,async()=>{await u(c,["gc","--auto","-q"],{allowFail:!0})}).catch(()=>void 0),l})}async function E(){return t()}async function F(a,b){let c=await i().realpath(k().resolve(a)).catch(()=>k().resolve(a)),d=p(c);if(!Q.workspaces.has(d)&&!await i().stat(k().join(v(),d,"ledger.jsonl")).then(()=>!0,()=>!1))return[];let e=await x(c);return b?e.steps.filter(a=>{var c;return c=a.session,o(c)===o(b)}):[...e.steps]}async function G(a,b){return(await x(a)).steps.some(a=>{var c;return c=a.session,o(c)===o(b)})}async function H(a,b){let c=await x(a),d=z(b,"tree");if(d===c.emptyTree)return[];var e=(await u(c,["ls-tree","-r","-l","-z",d])).stdout.toString("utf8");let f=[];for(let a of e.split("\0")){if(!a)continue;let b=a.match(/^(\d+) (\w+) ([0-9a-f]+) +(-|\d+)\t([\s\S]+)$/);b&&"blob"===b[2]&&f.push({path:b[5],size:"-"===b[4]?0:Number(b[4])})}return f}async function I(a,b,c){let d=await x(a);return B(d,z(b,"from"),z(c,"to"))}async function J(a,b,c,d,e){let f=await x(a),g=[A(d)];"string"==typeof e&&e&&g.push(A(e));let h=await u(f,["diff","-M","--no-color","--no-ext-diff","-U1000000",z(b,"from"),z(c,"to"),"--",...g]);return/^Binary files .* differ$/m.test(h.stdout.toString("utf8",0,Math.min(h.stdout.length,65536)))?{patch:"",binary:!0,truncated:!1}:h.stdout.length<=4194304?{patch:h.stdout.toString("utf8"),binary:!1,truncated:!1}:{patch:h.stdout.subarray(0,4194304).toString("utf8"),binary:!1,truncated:!0}}async function K(a,b,c){let d=await x(a),e=A(c),f=await u(d,["cat-file","-p",`${z(b,"tree")}:${e}`],{allowFail:!0});if(0!==f.code)throw new O("file not found in this snapshot","not-found");let g=f.stdout;return g.subarray(0,Math.min(g.length,8e3)).includes(0)?{content:"",binary:!0,truncated:!1,size:g.length}:g.length<=262144?{content:g.toString("utf8"),binary:!1,truncated:!1,size:g.length}:{content:g.subarray(0,262144).toString("utf8"),binary:!1,truncated:!0,size:g.length}}d()}catch(a){d(a)}})},96743:(a,b,c)=>{c.d(b,{It:()=>d});let d=["node_modules",".git",".next",".next-dev",".next-dev-webpack",".next-dev-clean","dist","build","out",".venv","venv","__pycache__",".cache","target",".turbo",".pytest_cache",".mypy_cache",".ruff_cache",".idea",".pnpm",".pnpm-store",".npm",".yarn",".gradle",".tox",".nox",".uv",".pixi",".conda",".svelte-kit",".nuxt",".output",".parcel-cache",".angular",".expo",".dart_tool",".terraform",".serverless",".aws-sam","coverage","htmlcov"]}};
|
|
4
|
+
`,"utf8"),c.steps.push(l),c.lastTree=a,c.lastCommit=j,l.seq%100==0&&y(c,async()=>{await u(c,["gc","--auto","-q"],{allowFail:!0})}).catch(()=>void 0),l})}async function E(){return t()}async function F(a,b){let c=await i().realpath(k().resolve(a)).catch(()=>k().resolve(a)),d=p(c);if(!Q.workspaces.has(d)&&!await i().stat(k().join(v(),d,"ledger.jsonl")).then(()=>!0,()=>!1))return[];let e=await x(c);return b?e.steps.filter(a=>{var c;return c=a.session,o(c)===o(b)}):[...e.steps]}async function G(a,b){return(await x(a)).steps.some(a=>{var c;return c=a.session,o(c)===o(b)})}async function H(a,b){let c=await x(a),d=z(b,"tree");if(d===c.emptyTree)return[];var e=(await u(c,["ls-tree","-r","-l","-z",d])).stdout.toString("utf8");let f=[];for(let a of e.split("\0")){if(!a)continue;let b=a.match(/^(\d+) (\w+) ([0-9a-f]+) +(-|\d+)\t([\s\S]+)$/);b&&"blob"===b[2]&&f.push({path:b[5],size:"-"===b[4]?0:Number(b[4])})}return f}async function I(a,b,c){let d=await x(a);return B(d,z(b,"from"),z(c,"to"))}async function J(a,b,c,d,e){let f=await x(a),g=[A(d)];"string"==typeof e&&e&&g.push(A(e));let h=await u(f,["diff","-M","--no-color","--no-ext-diff","-U1000000",z(b,"from"),z(c,"to"),"--",...g]);return/^Binary files .* differ$/m.test(h.stdout.toString("utf8",0,Math.min(h.stdout.length,65536)))?{patch:"",binary:!0,truncated:!1}:h.stdout.length<=4194304?{patch:h.stdout.toString("utf8"),binary:!1,truncated:!1}:{patch:h.stdout.subarray(0,4194304).toString("utf8"),binary:!1,truncated:!0}}async function K(a,b,c){let d=await x(a),e=A(c),f=await u(d,["cat-file","-p",`${z(b,"tree")}:${e}`],{allowFail:!0});if(0!==f.code)throw new O("file not found in this snapshot","not-found");let g=f.stdout;return g.subarray(0,Math.min(g.length,8e3)).includes(0)?{content:"",binary:!0,truncated:!1,size:g.length}:g.length<=262144?{content:g.toString("utf8"),binary:!1,truncated:!1,size:g.length}:{content:g.subarray(0,262144).toString("utf8"),binary:!1,truncated:!0,size:g.length}}d()}catch(a){d(a)}})},92584:(a,b,c)=>{c.d(b,{V:()=>e});var d=c(76760);let e=c.n(d)().resolve(process.env.PI_WEB_ROOT??process.cwd())},96743:(a,b,c)=>{c.d(b,{It:()=>d});let d=["node_modules",".git",".next",".next-dev",".next-dev-webpack",".next-dev-clean","dist","build","out",".venv","venv","__pycache__",".cache","target",".turbo",".pytest_cache",".mypy_cache",".ruff_cache",".idea",".pnpm",".pnpm-store",".npm",".yarn",".gradle",".tox",".nox",".uv",".pixi",".conda",".svelte-kit",".nuxt",".output",".parcel-cache",".angular",".expo",".dart_tool",".terraform",".serverless",".aws-sam","coverage","htmlcov"]}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/
|
|
1
|
+
globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/222KLUIvefiGf7M0Ov-Qz/_buildManifest.js","static/222KLUIvefiGf7M0Ov-Qz/_ssgManifest.js"],rootMainFiles:["static/chunks/webpack-9d84b382d4dec27a.js","static/chunks/4bd1b696-92152b0f5947070d.js","static/chunks/794-d1a40dcf24d651d9.js","static/chunks/main-app-1a92e20ec190a32b.js"],rootMainFilesTree:{},pages:{"/_app":[]}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
self.__REACT_LOADABLE_MANIFEST='{"components/AppShell.tsx -> @/components/FileViewer":{"id":2716,"files":["static/chunks/155.a3c40ae481da1358.js","static/chunks/716.5266fe10b5578591.js"]},"components/AppShell.tsx -> @/components/GitPanel":{"id":2608,"files":["static/chunks/608.5b8aae42a9998ee7.js"]},"components/AppShell.tsx -> @/components/ProjectPanel":{"id":4673,"files":["static/chunks/155.a3c40ae481da1358.js","static/chunks/673.93445c8600bc1dd9.js"]},"components/AppShell.tsx -> @/components/SettingsPanel":{"id":
|
|
1
|
+
self.__REACT_LOADABLE_MANIFEST='{"components/AppShell.tsx -> @/components/FileViewer":{"id":2716,"files":["static/chunks/155.a3c40ae481da1358.js","static/chunks/716.5266fe10b5578591.js"]},"components/AppShell.tsx -> @/components/GitPanel":{"id":2608,"files":["static/chunks/608.5b8aae42a9998ee7.js"]},"components/AppShell.tsx -> @/components/ProjectPanel":{"id":4673,"files":["static/chunks/155.a3c40ae481da1358.js","static/chunks/673.93445c8600bc1dd9.js"]},"components/AppShell.tsx -> @/components/SettingsPanel":{"id":4127,"files":["static/css/2959bd6b626b7ffe.css","static/chunks/127.c31e688e156605e3.js"]},"components/AppShell.tsx -> @/components/TrajectoryView":{"id":618,"files":["static/css/08815507594e8b8d.css","static/chunks/618.ee5d5bf1c647e483.js"]}}';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/459a9ed40847a72f.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/6ba662805d17ffc2.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/
|
|
1
|
+
<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/459a9ed40847a72f.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/6ba662805d17ffc2.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/b2d35abc828d4713.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-9d84b382d4dec27a.js"/><script src="/_next/static/chunks/4bd1b696-92152b0f5947070d.js" async=""></script><script src="/_next/static/chunks/794-d1a40dcf24d651d9.js" async=""></script><script src="/_next/static/chunks/main-app-1a92e20ec190a32b.js" async=""></script><meta name="robots" content="noindex"/><meta name="theme-color" content="#fcfbf9" media="(prefers-color-scheme: light)"/><meta name="theme-color" content="#2e3440" media="(prefers-color-scheme: dark)"/><title>pi</title><meta name="description" content="Web UI for the pi coding agent"/><link rel="icon" href="/icon.svg?779ce17318f43f72" type="image/svg+xml" sizes="any"/><title>404: This page could not be found.</title><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-9d84b382d4dec27a.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[7121,[],\"\"]\n3:I[4581,[],\"\"]\n4:I[484,[],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[484,[],\"ViewportBoundary\"]\na:I[484,[],\"MetadataBoundary\"]\nc:I[7123,[],\"default\",1]\n:HL[\"/_next/static/css/459a9ed40847a72f.css\",\"style\"]\n:HL[\"/_next/static/css/6ba662805d17ffc2.css\",\"style\"]\n:HL[\"/_next/static/css/b2d35abc828d4713.css\",\"style\"]\n7:X\n0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_not-found\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/459a9ed40847a72f.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/6ba662805d17ffc2.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"2\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/b2d35abc828d4713.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"zh-CN\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"suppressHydrationWarning\":true,\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$7\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"222KLUIvefiGf7M0Ov-Qz\"}\n7:C\n9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#fcfbf9\",\"media\":\"(prefers-color-scheme: light)\"}],[\"$\",\"meta\",\"3\",{\"name\":\"theme-color\",\"content\":\"#2e3440\",\"media\":\"(prefers-color-scheme: dark)\"}]]\nd:I[6869,[],\"IconMark\"]\n6:null\nb:[[\"$\",\"title\",\"0\",{\"children\":\"pi\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Web UI for the pi coding agent\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/icon.svg?779ce17318f43f72\",\"type\":\"image/svg+xml\",\"sizes\":\"any\"}],[\"$\",\"$Ld\",\"3\",{}]]\n"])</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-
|
|
1
|
+
<!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-9d84b382d4dec27a.js"/><script src="/_next/static/chunks/4bd1b696-92152b0f5947070d.js" async=""></script><script src="/_next/static/chunks/794-d1a40dcf24d651d9.js" async=""></script><script src="/_next/static/chunks/main-app-1a92e20ec190a32b.js" async=""></script><title>500: This page couldn’t load</title><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-9d84b382d4dec27a.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[7121,[],\"\"]\n3:I[4581,[],\"\"]\n4:I[484,[],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[484,[],\"ViewportBoundary\"]\na:I[484,[],\"MetadataBoundary\"]\nc:I[7123,[],\"default\",1]\n7:X\n0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_global-error\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4624]},\"$undefined\",\"$undefined\",4624]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$7\"]},null,false,\"$7\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"222KLUIvefiGf7M0Ov-Qz\"}\n7:C\n9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n6:null\nb:[]\n"])</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"node":{},"edge":{},"encryptionKey":"
|
|
1
|
+
{"node":{},"edge":{},"encryptionKey":"M4cn9VpmVoqQedj8wdPMeaIgotLdG6+uGuACFszhiuY="}
|