@mcy2015/pi-web 0.13.0 → 0.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +1 -1
  3. package/.next/build-manifest.json +2 -2
  4. package/.next/required-server-files.js +1 -1
  5. package/.next/required-server-files.json +1 -1
  6. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  7. package/.next/server/app/_global-error.html +1 -1
  8. package/.next/server/app/_global-error.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  12. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  13. package/.next/server/app/_not-found.html +1 -1
  14. package/.next/server/app/_not-found.rsc +2 -2
  15. package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  16. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  17. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  18. package/.next/server/app/api/app-update/route.js +1 -1
  19. package/.next/server/app/api/mcp/route.js +1 -1
  20. package/.next/server/app/api/mcp/sign-in/route.js +1 -1
  21. package/.next/server/app/api/mcp/test/route.js +1 -1
  22. package/.next/server/app/index.html +1 -1
  23. package/.next/server/app/index.rsc +4 -4
  24. package/.next/server/app/index.segments/__PAGE__.segment.rsc +4 -4
  25. package/.next/server/app/index.segments/_full.segment.rsc +4 -4
  26. package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  27. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  28. package/.next/server/app/login.html +1 -1
  29. package/.next/server/app/login.rsc +2 -2
  30. package/.next/server/app/login.segments/_full.segment.rsc +2 -2
  31. package/.next/server/app/login.segments/_tree.segment.rsc +1 -1
  32. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  33. package/.next/server/app/page.js +22 -22
  34. package/.next/server/app/page.js.nft.json +1 -1
  35. package/.next/server/app/page_client-reference-manifest.js +1 -1
  36. package/.next/server/app/share/[code]/page.js +1 -1
  37. package/.next/server/app/share/[code]/page.js.nft.json +1 -1
  38. package/.next/server/app/share/[code]/page_client-reference-manifest.js +1 -1
  39. package/.next/server/app-paths-manifest.json +1 -1
  40. package/.next/server/chunks/{6367.js → 2728.js} +2 -2
  41. package/.next/server/chunks/3010.js +1 -1
  42. package/.next/server/chunks/5545.js +1 -1
  43. package/.next/server/chunks/6487.js +3 -3
  44. package/.next/server/chunks/8383.js +1 -1
  45. package/.next/server/middleware-build-manifest.js +1 -1
  46. package/.next/server/pages/404.html +1 -1
  47. package/.next/server/pages/500.html +1 -1
  48. package/.next/server/route-cache/APP_PAGE/c6377dd9ce6a1c2cd100eb4344e843eb4639b9ed26f84643f77680e9eb454c4b/$/index.html +1 -0
  49. package/.next/server/route-cache/APP_PAGE/c6377dd9ce6a1c2cd100eb4344e843eb4639b9ed26f84643f77680e9eb454c4b/$/index.meta +1 -0
  50. package/.next/server/route-cache/APP_PAGE/c6377dd9ce6a1c2cd100eb4344e843eb4639b9ed26f84643f77680e9eb454c4b/$/index.rsc +23 -0
  51. package/.next/server/route-cache/APP_PAGE/c6377dd9ce6a1c2cd100eb4344e843eb4639b9ed26f84643f77680e9eb454c4b/$/index.segments/__PAGE__.segment.rsc +27 -0
  52. package/.next/server/route-cache/APP_PAGE/c6377dd9ce6a1c2cd100eb4344e843eb4639b9ed26f84643f77680e9eb454c4b/$/index.segments/_full.segment.rsc +23 -0
  53. package/.next/server/route-cache/APP_PAGE/c6377dd9ce6a1c2cd100eb4344e843eb4639b9ed26f84643f77680e9eb454c4b/$/index.segments/_tree.segment.rsc +8 -0
  54. package/.next/static/chunks/8909-c18f5a2f20e8f798.js +2 -0
  55. package/.next/static/chunks/app/{layout-09edb2b4f71317e3.js → layout-19228ee6a08d83ea.js} +1 -1
  56. package/.next/static/chunks/app/page-18dd62d21c3bda10.js +285 -0
  57. package/.next/static/chunks/app/share/[code]/page-ee5b90b5f0930a77.js +1 -0
  58. package/.next/trace +9 -8
  59. package/.next/trace-build +1 -1
  60. package/package.json +1 -1
  61. package/.next/static/chunks/1798-64b3fd24c6ac6063.js +0 -2
  62. package/.next/static/chunks/app/page-d922df5980ec931c.js +0 -285
  63. package/.next/static/chunks/app/share/[code]/page-ff418745312c304f.js +0 -1
  64. /package/.next/static/{YXWav-5PFkxPJMeIuTSGb → sN1YhVy-LPqPUdH9cLpTi}/_buildManifest.js +0 -0
  65. /package/.next/static/{YXWav-5PFkxPJMeIuTSGb → sN1YhVy-LPqPUdH9cLpTi}/_ssgManifest.js +0 -0
@@ -9,7 +9,7 @@ Base directory for relative references: ${b.baseDir}
9
9
 
10
10
  ${c.trim()}`}catch(c){return`Skill ${JSON.stringify(a)} unreadable at ${b.filePath}: ${c instanceof Error?c.message:String(c)}`}}).join("\n\n")})();if(!j&&void 0===a.exactSystemPrompt)return;let k=a.exactSystemPrompt??h.systemPrompt,l=j?`${k}
11
11
 
12
- ${j}`:k;return void 0!==a.exactSystemPrompt&&(i=l),{systemPrompt:l}})}}]}:{}},setActiveToolsGetter(a){d=a},getExactSystemPrompt:void 0===a.exactSystemPrompt?void 0:()=>i}}[f,h]=i.then?(await i)():i,d()}catch(a){d(a)}})},27691:(a,b,c)=>{c.d(b,{TQ:()=>e,p1:()=>d});let d=92;function e(a,b=d,c=40){return Object.freeze({terminal:Object.freeze({columns:b,rows:c,kittyProtocolActive:!1}),requestRender:a})}},35128:(a,b,c)=>{c.d(b,{kc:()=>d});function d(a){if(void 0===a)return null;if(!Array.isArray(a))return"images must be an array";if(a.length>10)return"A message can include at most 10 images";for(let b of a){if(!b||"object"!=typeof b||"image"!==b.type)return"Each attachment must be an image";if(!function(a){if(!a||"object"!=typeof a||"string"!=typeof a.data||"string"!=typeof a.mimeType||!a.mimeType.startsWith("image/"))return!1;let b=function(a){if(!a||a.length%4!=0)return null;let b=a.endsWith("==")?2:+!!a.endsWith("="),c=a.length-b;for(let b=0;b<c;b+=1){var d;if(!((d=a.charCodeAt(b))>=65&&d<=90||d>=97&&d<=122||d>=48&&d<=57||43===d||47===d))return null}for(let b=c;b<a.length;b+=1)if("="!==a[b])return null;return a.length/4*3-b}(a.data);return null!==b&&b<=0xa00000}(b))return"Each image must be valid base64 image data of 10MB or smaller"}return null}},36540:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Aw:()=>u,Kp:()=>y,Vv:()=>w,dt:()=>z,xu:()=>x});var e=c(75430),f=c(73024),g=c(76760),h=c(42350),i=a([e]);function j(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function k(a){return j(a)&&"number"==typeof a.input&&"number"==typeof a.output&&"number"==typeof a.cacheRead&&"number"==typeof a.cacheWrite&&j(a.cost)}function l(a){if("message"!==a.type)return;let b=a.message;if("assistant"===b.role&&k(b.usage))return b}function m(a,b,c){let d=b.usage,e=d.input+d.cacheRead+d.cacheWrite;if(!a||e<=0||d.cacheRead+d.cacheWrite===0&&!a.reportedCache)return;let f=Math.min(a.promptTokens,e)-d.cacheRead;if(f<=1024)return;let g=d.input+d.cacheWrite,h=g>0?(d.cost.input+d.cost.cacheWrite)/g:0,i=d.cacheRead>0?d.cost.cacheRead/d.cacheRead:(c.getModel(b.provider,b.model)?.cost?.cacheRead??0)/1e6;return{missedTokens:f,missedCost:f*Math.max(0,h-i),idleMs:Math.max(0,b.timestamp-a.timestamp),modelChanged:`${b.provider}/${b.model}`!==a.modelKey}}function n(a,b){let c,d=new Map;for(let e of a){if("compaction"===e.type||"branch_summary"===e.type){c=void 0;continue}if("usage"===e.type&&"cache_warm"===e.kind){if(!k(e.usage))continue;let a=e.usage.input+e.usage.cacheRead+e.usage.cacheWrite;a>0&&(c={promptTokens:a,modelKey:`${e.provider}/${e.model}`,timestamp:Date.parse(e.timestamp),reportedCache:!0});continue}let a=l(e);if(!a)continue;let f=m(c,a,b);f&&d.set(e.id,f),c=function(a,b){let c=a.usage,d=c.input+c.cacheRead+c.cacheWrite;if(!(d<=0))return{promptTokens:d,modelKey:`${a.provider}/${a.model}`,timestamp:a.timestamp,reportedCache:b||c.cacheRead+c.cacheWrite>0}}(a,c?.reportedCache??!1)??c}return{prev:c,misses:d}}function o(a){if(!(a.missedTokens<2e4)||!(a.missedCost<.1))return{kind:"cache_miss",missedTokens:a.missedTokens,missedCost:a.missedCost,...a.modelChanged?{modelChanged:!0}:a.idleMs>=3e5?{idleMinutes:Math.round(a.idleMs/6e4)}:{}}}function p(a){if(!j(a)||!Array.isArray(a.diagnostics))return 0;let b=0;for(let c of a.diagnostics){if(!j(c)||"anthropic_input_transformations"!==c.type)continue;let a=j(c.details)?c.details.transformations:void 0;Array.isArray(a)&&(b+=a.filter(a=>j(a)&&"thinking_dropped"===a.type).length)}return b}function q(a,b){return a>b?{kind:"thinking_dropped",count:a}:void 0}function r(a,b){if(k(b))return{kind:"summary_cost",source:a,tokens:b.input+b.output+b.cacheRead+b.cacheWrite,cost:"number"==typeof b.cost.total?b.cost.total:0}}function s(a){switch(a.type){case"message":{let b=a.message.role;return"toolResult"!==b&&"system"!==b}case"compaction":return!0;case"branch_summary":return!!a.summary;case"custom_message":return a.display;default:return!1}}function t(a,b,c){if(!c)return;let d=a.get(b);d?d.push(c):a.set(b,[c])}function u(a,b,c,d){if(!j(c)||"assistant"!==c.role||!k(c.usage)||"aborted"===c.stopReason||"error"===c.stopReason)return[];let e=a=>"message"===a.type&&a.message===c,f=[],{prev:g}=n(a.filter(a=>!e(a)),d),h=m(g,c,d),i=h?o(h):void 0;i&&f.push(i);let r=p(c);if(r>0){let a=0;for(let c=b.length-1;c>=0;c--){let d=b[c];if(!e(d)&&l(d)&&"message"===d.type){a=p(d.message);break}}let c=q(r,a);c&&f.push(c)}return f}e=(i.then?(await i)():i)[0];let A=new Map;function v(a){let b,c;try{let c=(0,f.statSync)(a);b=`${c.ino}:${c.size}:${c.mtimeMs}`}catch{A.delete(a);return}let d=A.get(a);if(d?.stamp===b)return d.value;try{let b=JSON.parse((0,f.readFileSync)(a,"utf8").replace(/^\uFEFF/,"")),d=j(b)?b.showCacheMissNotices:void 0;c="boolean"==typeof d?d:void 0}catch{c=void 0}return A.delete(a),A.set(a,{stamp:b,value:c}),A.size>200&&A.delete(A.keys().next().value),c}function w(a,b=(0,e.getAgentDir)()){return v((0,g.join)(a,".pi","settings.json"))??v((0,g.join)(b,"settings.json"))??!1}function x(a,b){let c=function(a){let b=new Map;for(let c of a){let a=l(c);a&&!(a.usage.cacheRead<=0)&&"number"==typeof a.usage.cost.cacheRead&&b.set(`${a.provider}/${a.model}`,a.usage.cost.cacheRead/a.usage.cacheRead*1e6)}return{getModel:(a,c)=>{let d=b.get(`${a}/${c}`);return void 0===d?void 0:{cost:{cacheRead:d}}}}}(a);return{getModel:(a,d)=>c.getModel(a,d)??b?.getModel(a,d)}}function y(a){if(a.cwd&&w(a.cwd))return function(a,b,c={}){let d,e=new Map,f=new Map;for(let b of a)f.set(b.id,b);let g=(a,b)=>{let c=a.parentId?f.get(a.parentId):void 0;for(;c&&!b(c);)c=c.parentId?f.get(c.parentId):void 0;return c};if(c.leafId){d=new Set;for(let a=f.get(c.leafId);a;a=a.parentId?f.get(a.parentId):void 0)d.add(a.id)}let{misses:h}=n(a,b);for(let b of a)switch(b.type){case"message":{let a=l(b);if(!a||"aborted"===a.stopReason||"error"===a.stopReason)break;let c=h.get(b.id);c&&t(e,b.id,o(c));let d=p(a);if(d>0){let a=g(b,a=>!!l(a)),c=a?.type==="message"?p(a.message):0;t(e,b.id,q(d,c))}break}case"usage":{if("cache_warm"!==b.kind||!k(b.usage)||d&&!d.has(b.id))break;let a=g(b,s);a&&t(e,a.id,{kind:"cache_warm",cost:"number"==typeof b.usage.cost.total?b.usage.cost.total:0,...b.note?{note:b.note}:{}});break}case"compaction":t(e,b.id,r("compaction",b.usage));break;case"branch_summary":b.summary&&t(e,b.id,r("branch_summary",b.usage))}return e}(a.entries,x(a.entries,a.models),{leafId:a.leafId})}function z(a,b){let c;return b&&0!==b.size?(a.entryIds.forEach((d,e)=>{let f=b.get(d);f&&((c??=[...a.messages])[e]=(0,h.mO)(a.messages[e],f))}),c?{...a,messages:c}:a):a}d()}catch(a){d(a)}})},38383:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{$Z:()=>Y,A4:()=>X,Bp:()=>Z,HG:()=>aa,I9:()=>ab,OF:()=>ad,Zo:()=>R,_I:()=>$,d_:()=>Q,oA:()=>_,wW:()=>S,x8:()=>ac});var e=c(75430),f=c(29862),g=c(55511),h=c(29021),i=c(33873),j=c(28354),k=c(35128),l=c(2345),m=c(41334),n=c(85078),o=c(7024),p=c(39172),q=c(68985),r=c(14296),s=c(20425),t=c(74768),u=c(85545),v=c(5930),w=c(27691),x=c(94795),y=c(2),z=c(13450),A=c(86301),B=c(14967),C=c(14533),D=c(55422),E=c(3280),F=c(44886),G=c(20753),H=c(24518),I=c(24402),J=c(36540),K=c(44230),L=a([e,f,m,n,o,q,r,t,u,x,y,z,A,B,E,G,H,J]);function M(a,b){return Error(`${a}/${b} is provided by an extension, and Chat only loads no extensions. Choose another model or tool preset.`)}[e,f,m,n,o,q,r,t,u,x,y,z,A,B,E,G,H,J]=L.then?(await L)():L;let ae=new Set(["agent_end","agent_settled","auto_compaction_end","compaction_end"]),af=function(a=process.env.PI_WEB_IDLE_TIMEOUT_MS){if(void 0!==a&&""!==a.trim()){let b=Number(a);if(Number.isFinite(b)&&b>=0&&b<=0x7fffffff)return b;console.warn(`[pi-web] invalid PI_WEB_IDLE_TIMEOUT_MS "${a}", falling back to 10 minutes`)}return 6e5}(),ag=function(a=process.env.PI_WEB_SHUTDOWN_DEADLINE_MS){if(void 0!==a&&""!==a.trim()){let b=Number(a);if(Number.isFinite(b)&&b>0&&b<=0x7fffffff)return b;console.warn(`[pi-web] invalid PI_WEB_SHUTDOWN_DEADLINE_MS "${a}", falling back to 5 seconds`)}return 5e3}(),ah=new Set(["fork","clone"]),ai="This session has not been saved yet. Send a message before forking it.",aj=new Set(["get_state","get_session_stats","get_last_assistant_text","get_tools","get_commands","extension_ui_response","extension_ui_input"]),ak=["read","bash","powershell","edit","write","grep","find","ls"],al=new Set(["off","minimal","low","medium","high","xhigh","max"]),am="medium";class an extends e.Theme{constructor(){super({muted:"",text:"",thinkingXhigh:"",searchMatchText:""},{selectedBg:""},"truecolor")}fg(...[,a]){return a}bg(...[,a]){return a}bold(a){return a}italic(a){return a}underline(a){return a}inverse(a){return a}strikethrough(a){return a}getFgAnsi(){return""}getBgAnsi(){return""}getThinkingBorderColor(){return a=>a}getBashModeBorderColor(){return a=>a}}let ao=new an,ap=new f.KeybindingsManager(f.TUI_KEYBINDINGS),aq=new Set(["codemode","tool_search",...y.st]);function N(a,b,c){if(0===b.length)return[];let d=new Set(ak),e=new Map(a.getAllTools().map(a=>[a.name,a])),f=(0,B.wQ)(b.filter(a=>d.has(a)),a.settingsManager.getDefaultTools()),g=c.filter(a=>{let b=e.get(a);return void 0!==b&&!d.has(a)&&"hidden"!==b.exposure});return[...new Set([...f,...g])]}class ar{constructor(a,b={}){this.inner=a,this.listeners=new Set,this.activeToolEvents=new Map,this.pendingUiResponses=new Map,this.pendingUiRequests=new Map,this.activeCustomUis=new Map,this.extensionUiAbortController=new AbortController,this.extensionStatuses=new Map,this.extensionWidgets=new Map,this.activeExtensionWidgets=new Map,this.extensionWidgetGenerations=new Map,this.extensionWidgetsResetting=!1,this.pendingPromptCount=0,this.activeMutatingCommands=0,this.sessionReplacement=null,this.agentRunNeedsCompletion=!1,this.lastRunAborted=!1,this.promptAdmissionTail=Promise.resolve(),this.extensionsBound=!1,this.extensionBindingPromise=null,this.extensionBindingError=null,this.mcpHostDisposed=!1,this.mcpPromptWait=null,this.unsubscribe=null,this.idleTimer=null,this.onDestroyCallback=null,this.shutdownPromise=null,this.sessionShutdownEmitted=!1,this.forceShutdownOnIdle=!1,this.forcedIdleTimerArmed=!1,this._alive=!0,this.resolveDisposed=()=>{},this.disposed=new Promise(a=>{this.resolveDisposed=a}),this.closing=!1,this.exactSystemPrompt=b.exactSystemPrompt,this.chatOnly=b.chatOnly??!1,this.onAgentRunComplete=b.onAgentRunComplete,this.suppressCompletionNotifications=b.suppressCompletionNotifications??!1,this.mcpHost=b.mcpHost,this.chatOnlyExtensionModel=b.chatOnlyExtensionModel}get sessionId(){return this.inner.sessionId}get sessionFile(){return this.inner.sessionFile??""}get cwd(){return this.inner.sessionManager.getCwd()}get streamingMessage(){return this.inner.agent.state?.streamingMessage}get isStreaming(){return this.inner.isStreaming}isAlive(){return this._alive&&!this.closing}isRunning(){return this._alive&&(this.pendingPromptCount>0||this.inner.isStreaming||this.inner.isCompacting||this.inner.isBashRunning)}isAwaitingInput(){if(!this.isRunning())return!1;for(let a of this.pendingUiRequests.values())if((0,p.YI)(a))return!0;return!1}evictIfDiskAhead(){if(!this.isAlive()||this.isRunning())return!1;let a=(0,r.H6)(this.sessionFile);return!(!a||this.inner.sessionManager.getEntry(a)||this.isRunning())&&(this.destroy(),(0,r.mD)(),!0)}isChatOnly(){return this.chatOnly}hasSuppressedCompletionNotifications(){return this.suppressCompletionNotifications}start(){this.unsubscribe=this.inner.subscribe(a=>{"agent_start"===a.type&&(this.agentRunNeedsCompletion=!0,this.lastRunAborted=!1),"agent_settled"===a.type&&(this.lastRunAborted=!0===a.aborted),"agent_end"===a.type&&((0,r.mD)(),this.activeToolEvents.clear()),"session_info_changed"===a.type&&(0,r.mD)(),this.trackActiveToolEvent(a),ae.has(a.type)&&this.resetIdleTimer(),this.emit("message_end"===a.type?this.withTranscriptNotices(a):a),"agent_settled"===a.type&&this.notifyAgentRunCompleteIfIdle()}),this.resetIdleTimer()}withTranscriptNotices(a){let b=a.message;if(0===this.listeners.size||b?.role!=="assistant")return a;try{let c=this.inner.sessionManager;if(!(0,J.Vv)(c.getCwd()))return a;let d=c.getEntries(),e=(0,J.Aw)(d,c.getBranch(),b,(0,J.xu)(d,this.inner.modelRuntime));return e.length>0?{...a,transcriptNotices:e}:a}catch(b){return console.warn("[pi-web] transcript notices failed:",b instanceof Error?b.message:b),a}}trackActiveToolEvent(a){let b=a.toolCallId;if(!("string"!=typeof b||(0,I.uz)(a))){if("tool_execution_start"===a.type||"tool_execution_update"===a.type)this.activeToolEvents.set(b,a);else if("tool_execution_end"===a.type){this.activeToolEvents.delete(b);let a=`${b}/`;for(let b of this.activeToolEvents.keys())b.startsWith(a)&&this.activeToolEvents.delete(b)}}}notifyAgentRunCompleteIfIdle(){if(!(!this.agentRunNeedsCompletion||this.isRunning())&&(this.agentRunNeedsCompletion=!1,!this.suppressCompletionNotifications&&!this.lastRunAborted))try{this.onAgentRunComplete?.(this.sessionId,this.inner.sessionManager.getSessionName())}catch(a){console.error("[pi-web] completion listener failed:",a instanceof Error?a.message:a)}}promptDoneEvent(){return{type:"prompt_done",...this.lastRunAborted?{aborted:!0}:{}}}beginExtensionBinding(){this.ensureExtensionsBound().catch(a=>{console.error("[pi-web] failed to dispatch session_start to extensions:",a instanceof Error?a.message:a)})}async waitUntilReady(){await this.waitForExtensionsBound()}async prepareMcpForRun(a){let b=this.mcpHost;if(!b||this.inner.isStreaming)return!a.aborted;let c=new AbortController,d=()=>c.abort();a.aborted&&d(),a.addEventListener("abort",d,{once:!0});let e=(async()=>{await this.waitForExtensionsBound(),c.signal.aborted||await b.prepareForPrompt(c.signal)})().catch(a=>{console.error("[pi-web] MCP servers could not be prepared:",a instanceof Error?a.message:a)}),f={controller:c,done:e};this.mcpPromptWait=f;try{await e}finally{a.removeEventListener("abort",d),this.mcpPromptWait===f&&(this.mcpPromptWait=null)}return!c.signal.aborted}ensureExtensionsBound(){return this.extensionsBound?Promise.resolve():(this.extensionBindingPromise||(this.extensionBindingError=null,this.extensionBindingPromise=(async()=>{if(!this._alive)return;let a=this.createExtensionUiContext();if("function"==typeof this.inner.bindExtensions){let b=this.inner.bindExtensions;await b.call(this.inner,{uiContext:a,mode:"rpc",commandContextActions:this.createExtensionCommandContextActions(),shutdownHandler:()=>this.emit({type:"extension_ui_request",id:(0,g.randomUUID)(),method:"notify",notifyType:"warning",message:"Extension requested shutdown, but shutdown is not supported in Pi Web."}),onError:a=>this.emit({type:"extension_error",extensionPath:a.extensionPath,event:a.event,error:a.error})})}else this.inner.extensionRunner.setUIContext?.(a,"rpc");this.extensionsBound=!0,console.log(`[pi-web] session_start dispatched to extensions for session ${this.inner.sessionId}`)})().catch(a=>{throw this.extensionBindingError=a,a})),this.extensionBindingPromise)}async waitForExtensionsBound(){try{this.extensionBindingPromise&&await this.extensionBindingPromise}catch(a){throw a instanceof Error?a:Error(String(a))}if(this.extensionBindingError)throw this.extensionBindingError instanceof Error?this.extensionBindingError:Error(String(this.extensionBindingError))}extensionCommandCandidates(){try{return this.inner.extensionRunner.getRegisteredCommands().map(a=>({name:a.invocationName,sourceInfo:a.sourceInfo}))}catch{return[]}}shouldWaitForExtensions(a){return"prompt"===a||"steer"===a||"follow_up"===a||"get_commands"===a||"get_state"===a}async withFinalIdleReset(a){try{return await a()}finally{this.resetIdleTimer()}}setActiveToolSelection(a,b=this.inner.getActiveToolNames()){this.inner.setActiveToolsByName(N(this.inner,a,b))}async navigateTreeKeepingToolSelection(a,b){let c=this.inner.getActiveToolNames(),d=await this.inner.navigateTree(a,b);if(d.cancelled||this.chatOnly)return{cancelled:d.cancelled};let e=this.inner.sessionManager.getEntries();if(!(0,y.ph)(e)){let a=this.inner.getActiveToolNames();this.setActiveToolSelection((0,K.dS)(e)??a,[...a,...c.filter(a=>aq.has(a))])}return{cancelled:!1}}emit(a){for(let b of this.listeners)try{b(a)}catch(b){console.error(`[pi-web] failed to deliver ${a.type} event:`,b instanceof Error?b.message:b)}}async acquirePromptAdmission(){let a,b=this.promptAdmissionTail;return this.promptAdmissionTail=new Promise(b=>{a=b}),await b,a}resetIdleTimer(){if(!this._alive){this.idleTimer&&clearTimeout(this.idleTimer);return}if(this.isRunning()||(this.forceShutdownOnIdle=!1),this.forceShutdownOnIdle&&this.forcedIdleTimerArmed)return;this.idleTimer&&clearTimeout(this.idleTimer);let a=af||6e5*!!this.forceShutdownOnIdle;this.forcedIdleTimerArmed=0!==a&&this.forceShutdownOnIdle,0!==a&&(this.idleTimer=setTimeout(()=>{!this.forceShutdownOnIdle&&(this.isRunning()||(0,v.Vj)({sessionId:this.sessionId,sessionFile:this.sessionFile||void 0}))?this.resetIdleTimer():this.shutdown().catch(a=>{console.error("[pi-web] failed to shut down idle session:",a instanceof Error?a.message:a)})},a))}persistBashOnlySession(){let a=this.inner.sessionManager,b=a.getSessionFile();if(!b||(0,h.existsSync)(b))return;let c=a.getHeader();if(!c)return;let d=[c,...a.getEntries()].map(a=>JSON.stringify(a)).join("\n")+"\n";(0,h.writeFileSync)(b,d,{encoding:"utf8",flag:"wx"}),a.flushed=!0,(0,r.O8)(this.inner.sessionId,b)}onEvent(a){for(let b of(this.listeners.add(a),this.pendingUiRequests.values()))a(b);for(let b of this.activeToolEvents.values())a(b);return()=>{this.listeners.delete(a)}}onDestroy(a){this.onDestroyCallback=a}waitUntilDisposed(a){let b,c=new Promise(c=>{b=setTimeout(()=>c(!1),a),b.unref?.()});return Promise.race([this.disposed.then(()=>!0),c]).finally(()=>clearTimeout(b))}async withSessionReplacement(a,b){if(this.sessionReplacement)throw Error("Session is already being copied");this.sessionReplacement=a;try{return await b()}finally{this._alive&&(this.sessionReplacement=null)}}isSessionRunningForReplacement(){return this.inner.isBashRunning||this.inner.isStreaming||this.inner.isCompacting||this.pendingPromptCount>0}async shutdownAfterSessionReplacement(a){try{await this.shutdown()}catch(b){console.error(`[pi-web] ${a} succeeded, but source session shutdown failed:`,b instanceof Error?b.message:b)}}async send(a){let b=a.type,c=aj.has(b);if(this.sessionReplacement&&!c)throw Error("Session is being copied to a new session");if(ah.has(b)&&this.activeMutatingCommands>0)throw Error(`Cannot ${b} while another session command is running`);let d=!c;d&&(this.activeMutatingCommands+=1);try{if("get_state"!==b&&this.resetIdleTimer(),this.shouldWaitForExtensions(b)&&await this.waitForExtensionsBound(),this.sessionReplacement&&!c)throw Error("Session is being copied to a new session");if("prompt"===b||"steer"===b||"follow_up"===b){let b=(0,k.kc)(a.images);if(b)throw Error(b)}if("prompt"===b&&!(0,h.existsSync)(this.cwd))throw Error(`Directory does not exist: ${this.cwd}`);switch(b){case"prompt":{let b=await this.acquirePromptAdmission();try{let b,c,d;if(this.inner.isBashRunning)throw Error("Cannot send a prompt while a shell command is running");let e=this.inner.model;if(this.chatOnlyExtensionModel&&!(e&&this.inner.modelRuntime.getModel(e.provider,e.id)))throw M(this.chatOnlyExtensionModel.provider,this.chatOnlyExtensionModel.id);this.extensionUiAbortController.signal.aborted&&(this.extensionUiAbortController=new AbortController);let f=a.images,g=a.streamingBehavior,h=!1,i=!1,j=!1,k=new Promise((a,d)=>{b=()=>{h=!0,this.agentRunNeedsCompletion=!0,i||(i=!0,g||(this.lastRunAborted=!1),a())},c=a=>{i||(i=!0,d(a))}}),l=()=>{j||(j=!0,this.pendingPromptCount=Math.max(0,this.pendingPromptCount-1),this.resetIdleTimer(),this.notifyAgentRunCompleteIfIdle())};this.pendingPromptCount+=1;let m=this.mcpHost&&!this.inner.isStreaming?(0,F.Ai)("string"==typeof a.message?a.message:"",this.extensionCommandCandidates()):"none";if(this.mcpHost&&"none"!==m){let a=new AbortController,b=this.mcpHost.prepareForPrompt(a.signal,{wait:"wait"===m}).catch(a=>{console.error("[pi-web] MCP servers could not be prepared:",a instanceof Error?a.message:a)}).then(()=>{if(a.signal.aborted)throw l(),Error("Stopped while MCP servers were connecting; the message was not sent.")}),c={controller:a,done:b.then(()=>void 0,()=>void 0)};this.mcpPromptWait=c;try{await b}finally{this.mcpPromptWait===c&&(this.mcpPromptWait=null)}}try{d=this.inner.prompt(a.message,{...f?.length?{images:f}:{},...g?{streamingBehavior:g}:{},source:"rpc",preflightResult:()=>b()})}catch(a){throw l(),a}return d.then(()=>{b(),l(),g||this.emit(this.promptDoneEvent())},a=>{c(a),l(),(0,r.mD)(),h&&(this.emit({type:"prompt_error",errorMessage:a instanceof Error?a.message:String(a)}),g||this.emit(this.promptDoneEvent()))}).catch(a=>{console.error("[pi-web] prompt completion handler failed:",a instanceof Error?a.message:a)}),await k,null}finally{b()}}case"abort":if(this.forceShutdownOnIdle=!0,this.resetIdleTimer(),this.extensionUiAbortController.abort(new DOMException("Extension UI cancelled by Stop","AbortError")),this.mcpPromptWait){let a=this.mcpPromptWait;a.controller.abort(),await a.done}try{return await this.withFinalIdleReset(()=>this.inner.abort()),null}finally{this.isRunning()||(this.forceShutdownOnIdle=!1)}case"get_state":{let a=this.inner.model,b=this.inner.getContextUsage();return{sessionId:this.inner.sessionId,sessionFile:this.inner.sessionFile??"",isStreaming:this.inner.isStreaming,isPromptRunning:this.pendingPromptCount>0,isBashRunning:this.inner.isBashRunning,isCompacting:this.inner.isCompacting,autoCompactionEnabled:this.inner.autoCompactionEnabled,autoRetryEnabled:this.inner.autoRetryEnabled,model:a?{id:a.id,provider:a.provider}:void 0,messageCount:0,pendingMessageCount:this.inner.pendingMessageCount,queuedMessages:{steering:[...this.inner.getSteeringMessages()],followUp:[...this.inner.getFollowUpMessages()]},contextUsage:b?{percent:b.percent,contextWindow:b.contextWindow,tokens:b.tokens}:null,totalActiveMs:(0,s.Q)(this.inner.sessionManager),systemPrompt:this.exactSystemPrompt?.()??(this.inner.agent.state?.systemPrompt||this.inner.systemPrompt||""),thinkingLevel:this.inner.agent.state?.thinkingLevel??"off",extensionStatuses:this.getExtensionStatuses(),extensionWidgets:this.getExtensionWidgets()}}case"set_model":{let{provider:b,modelId:c}=a;await this.inner.modelRuntime.refresh({allowNetwork:!1,providers:[b],signal:AbortSignal.timeout(15e3)}).catch(()=>void 0);let d=this.inner.modelRuntime.getModel(b,c);if(!d)throw this.chatOnly&&(0,o.S9)(this.inner.modelRuntime,b,c)?M(b,c):Error(`Model not found: ${b}/${c}`);let e=this.inner.model;if((0,j.isDeepStrictEqual)(e,d))return{id:d.id,provider:d.provider};let f=e?.provider===d.provider&&e.id===d.id,g=this.inner.agent.state?.thinkingLevel;return await this.inner.setModel(d),f&&g&&this.inner.setThinkingLevel(g),(0,l.kn)(),(0,r.mD)(),{id:d.id,provider:d.provider}}case"fork":{if(this.inner.isBashRunning)throw Error("Cannot fork while a shell command is running");let b=this.isSessionRunningForReplacement();return this.withSessionReplacement("fork",async()=>{let c,d,f=a.entryId,g=this.inner.sessionManager,i=this.inner.sessionFile;if(!g.isPersisted())return{cancelled:!0};if(!i)throw Error("Persisted session is missing a session file");let j=g.getEntry(f);if(!j)throw Error("Invalid entry ID for forking");let k=g.getSessionDir();if(j.parentId){if(!(0,h.existsSync)(i))throw Error(ai);let a=(d=e.SessionManager.open(i,k)).createBranchedSession(j.parentId);if(!a)throw Error("Failed to create forked session");c=a}else c=(d=e.SessionManager.create(g.getCwd(),k,{parentSession:i})).getSessionFile();if(!(0,h.existsSync)(c)){let a=d.getHeader();if(!a)throw Error("Forked session is missing a session header");let b=[a,...d.getEntries()].map(a=>JSON.stringify(a)).join("\n")+"\n";(0,h.writeFileSync)(c,b,{encoding:"utf8",flag:"wx"})}let l=d.getSessionId();return(0,r.O8)(l,c),(0,r.mD)(),b||await this.shutdownAfterSessionReplacement("fork"),{cancelled:!1,newSessionId:l}})}case"fork_branch":{if(this.inner.isBashRunning)throw Error("Cannot fork while a shell command is running");let b=a.entryId,c=this.inner.sessionManager,d=this.inner.sessionFile;if(!c.isPersisted())return{cancelled:!0};if(!d)throw Error("Persisted session is missing a session file");if(!c.getEntry(b))throw Error("Invalid entry ID for forking");if(!(0,h.existsSync)(d))throw Error(ai);let f=c.getSessionDir(),g=e.SessionManager.open(d,f).createBranchedSession(b);if(!g)throw Error("Failed to create forked session");let i=e.SessionManager.open(g,f).getSessionId();return(0,r.O8)(i,g),(0,r.mD)(),{cancelled:!1,newSessionId:i}}case"clone":{if(this.isSessionRunningForReplacement())throw Error("Cannot clone while the session is running");let b=this.inner.sessionManager,c=this.inner.sessionFile,d="string"==typeof a.leafId?a.leafId:b.getLeafId(),f=d&&b.getBranch(d).some(a=>"message"===a.type&&"assistant"===a.message.role);if(!b.isPersisted()||!d||!f||!c||!(0,h.existsSync)(c))return{cancelled:!0};return this.withSessionReplacement("clone",async()=>{let a=b.getSessionDir(),f=e.SessionManager.open(c,a).createBranchedSession(d);if(!f||!(0,h.existsSync)(f))throw Error("Failed to clone current session branch");let g=e.SessionManager.open(f,a).getSessionId();return(0,r.O8)(g,f),(0,r.mD)(),await this.shutdownAfterSessionReplacement("clone"),{cancelled:!1,newSessionId:g}})}case"navigate_tree":if(this.inner.isBashRunning)throw Error("Cannot navigate while a shell command is running");return this.navigateTreeKeepingToolSelection(a.targetId,{});case"set_thinking_level":{let b=a.level;return this.inner.setThinkingLevel(b),"xhigh"===b&&this.inner.model?.compat?.thinkingFormat==="deepseek"&&this.inner.agent?.state&&(this.inner.agent.state.thinkingLevel="xhigh"),(0,r.mD)(),null}case"compact":try{return await this.withFinalIdleReset(()=>this.inner.compact(a.customInstructions))}finally{(0,r.mD)()}case"set_session_name":{let b=a.name?.trim();if(!b)throw Error("Session name cannot be empty");return this.inner.setSessionName(b),(0,r.mD)(),null}case"get_session_stats":return{...this.inner.getSessionStats(),sessionName:this.inner.sessionManager.getSessionName()};case"get_last_assistant_text":return{text:this.inner.getLastAssistantText()??""};case"set_auto_compaction":return this.inner.setAutoCompactionEnabled(a.enabled),null;case"clear_queue":return this.inner.clearQueue();case"steer":{let b=a.images;return await this.inner.steer(a.message,b?.length?b:void 0),null}case"follow_up":{let b=a.images;return await this.inner.followUp(a.message,b?.length?b:void 0),null}case"get_tools":{let a=this.inner.getAllTools().filter(a=>"hidden"!==a.exposure),b=new Set(this.inner.getActiveToolNames()),c=new Map((this.inner.agent.state?.tools??[]).map(a=>[a.name,a.description])),d=Reflect.get(this.inner,"_hiddenDeclarations"),e=d instanceof Set?d:new Set;return a.map(a=>({...a,description:c.get(a.name)??a.description,active:b.has(a.name),declarationHidden:e.has(a.name)}))}case"get_commands":{let a=[];for(let b of this.inner.extensionRunner.getRegisteredCommands())a.push({name:b.invocationName,description:b.description,source:"extension",sourceInfo:b.sourceInfo});for(let b of this.inner.promptTemplates)a.push({name:b.name,description:b.description,source:"prompt",sourceInfo:b.sourceInfo});for(let b of this.inner.resourceLoader.getSkills().skills)a.push({name:`skill:${b.name}`,description:b.description,source:"skill",sourceInfo:b.sourceInfo});return{commands:a}}case"set_tools":{let b=a.toolNames;return this.setActiveToolSelection(b),null}case"reload":{if(this.isSessionRunningForReplacement())throw Error("Wait for the current response to finish before reloading.");this.extensionUiAbortController.signal.aborted&&(this.extensionUiAbortController=new AbortController);let a=this.inner.getActiveToolNames();return await this.waitForExtensionsBound(),this.extensionStatuses.clear(),this.resetExtensionWidgetsForReload(),this.syncProjectTrust(),await this.inner.reload(),this.setActiveToolSelection(a),"function"!=typeof this.inner.bindExtensions&&this.inner.extensionRunner.setUIContext?.(this.createExtensionUiContext(),"rpc"),(0,l.kn)(),(0,m.nx)(),{success:!0}}case"abort_compaction":return this.inner.abortCompaction(),null;case"extension_ui_response":return this.resolveExtensionUiResponse(a),null;case"extension_ui_input":return this.handleExtensionUiInput(a.id,a.data),null;case"set_auto_retry":return this.inner.setAutoRetryEnabled(a.enabled),null;case"bash":{if(this.pendingPromptCount>0||this.inner.isStreaming||this.inner.isCompacting||this.inner.isBashRunning)throw Error("Cannot run a shell command while the session is busy");let b=this.inner.executeBash(a.command,void 0,{excludeFromContext:a.excludeFromContext,operations:(0,q.J1)({shellPath:this.inner.settingsManager.getShellPath()})});try{let a=await b;return this.persistBashOnlySession(),a}finally{this.resetIdleTimer(),(0,r.mD)()}}case"abort_bash":return this.forceShutdownOnIdle=!0,this.resetIdleTimer(),this.inner.abortBash(),null;default:throw Error(`Unsupported command: ${b}`)}}finally{d&&(this.activeMutatingCommands=Math.max(0,this.activeMutatingCommands-1))}}disposeMcpHost(){if(!this.mcpHostDisposed){this.mcpHostDisposed=!0;try{this.mcpHost?.dispose()}catch(a){console.error("[pi-web] MCP host dispose failed:",a instanceof Error?a.message:a)}}}destroy(){if(!this._alive)return;for(let a of(this._alive=!1,this.disposeMcpHost(),this.emit({type:"session_shutdown"}),this.idleTimer&&clearTimeout(this.idleTimer),this.inner.isBashRunning&&this.inner.abortBash(),this.unsubscribe?.(),this.pendingUiResponses.values()))a.cancel();for(let a of Array.from(this.activeCustomUis.keys()))this.closeCustomUi(a,void 0);this.pendingUiResponses.clear(),this.pendingUiRequests.clear(),this.activeToolEvents.clear(),this.clearExtensionWidgets(!1);let a=()=>{try{this.inner.dispose()}finally{this.onDestroyCallback?.(),this.resolveDisposed()}};if(this.sessionShutdownEmitted)return void a();this.sessionShutdownEmitted=!0;let b=this.inner.extensionRunner?.emit;"function"!=typeof b?a():this.emitSessionShutdown(b).catch(a=>{console.error("[pi-web] session_shutdown before dispose failed:",a instanceof Error?a.message:a)}).finally(a)}async shutdown(){return this.shutdownPromise?this.shutdownPromise:this._alive?(this.closing=!0,this.shutdownPromise=(async()=>{try{try{await this.waitForExtensionsBound()}catch(a){console.error("[pi-web] extension binding failed before session shutdown:",a instanceof Error?a.message:a)}if(this.disposeMcpHost(),!this.sessionShutdownEmitted){this.sessionShutdownEmitted=!0;let a=this.inner.extensionRunner?.emit;"function"==typeof a&&await this.emitSessionShutdown(a)}}finally{this.destroy()}})(),this.shutdownPromise):void 0}async emitSessionShutdown(a){let b,c=new Promise(a=>{b=setTimeout(()=>a("timeout"),ag),b.unref?.()}),d=(async()=>(await a.call(this.inner.extensionRunner,{type:"session_shutdown",reason:"quit"}),"handled"))();try{await Promise.race([d,c])==="timeout"&&console.warn(`[pi-web] extensions did not finish session_shutdown for session ${this.sessionId} within ${ag} ms; disposing it anyway`)}finally{clearTimeout(b)}}resolveExtensionUiResponse(a){let b=this.pendingUiResponses.get(a.id);b&&b.resolve(a)}getExtensionStatuses(){return Array.from(this.extensionStatuses,([a,b])=>({key:a,text:b}))}getExtensionWidgets(){return Array.from(this.extensionWidgets.values())}nextExtensionWidgetGeneration(a){let b=(this.extensionWidgetGenerations.get(a)??0)+1;return this.extensionWidgetGenerations.set(a,b),b}disposeExtensionWidgetComponent(a){if(!a||"object"!=typeof a&&"function"!=typeof a)return;let b=a.dispose;if("function"==typeof b)try{b.call(a)}catch{}}emitExtensionWidgetClear(a){this.emit({type:"extension_ui_request",id:(0,g.randomUUID)(),method:"setWidget",widgetKey:a,widgetLines:void 0,widgetPlacement:void 0})}clearExtensionWidget(a,b=!0){let c=this.nextExtensionWidgetGeneration(a),d=this.activeExtensionWidgets.get(a);return this.activeExtensionWidgets.delete(a),this.extensionWidgets.delete(a),d&&this.disposeExtensionWidgetComponent(d.component),this.extensionWidgetGenerations.get(a)!==c||b&&this.emitExtensionWidgetClear(a),c}clearExtensionWidgets(a){for(let b of new Set([...this.extensionWidgets.keys(),...this.activeExtensionWidgets.keys()]))this.clearExtensionWidget(b,a)}resetExtensionWidgetsForReload(){this.extensionWidgetsResetting=!0;try{for(let a of[...this.activeExtensionWidgets.keys()])this.clearExtensionWidget(a);this.extensionWidgets.clear()}finally{this.extensionWidgetsResetting=!1}}emitExtensionWidgetError(a,b){this.emit({type:"extension_error",extensionPath:`extension-widget:${a}`,event:"setWidget",error:b instanceof Error?b.message:String(b)})}failExtensionWidget(a,b,c,d,e){if(this.extensionWidgetGenerations.get(a)!==b)return void this.disposeExtensionWidgetComponent(e);let f=this.activeExtensionWidgets.get(a),g=!d;f?.generation===b?(g=f.rendered||!f.clearEmitted,this.activeExtensionWidgets.delete(a),this.disposeExtensionWidgetComponent(f.component)):this.disposeExtensionWidgetComponent(e),this.extensionWidgetGenerations.get(a)!==b||(this.extensionWidgets.delete(a),g&&this.emitExtensionWidgetClear(a)),this.emitExtensionWidgetError(a,c)}renderExtensionWidget(a){let b;if(this.activeExtensionWidgets.get(a.key)!==a||this.extensionWidgetGenerations.get(a.key)!==a.generation)return;try{b=a.component.render(w.p1)}catch(b){this.failExtensionWidget(a.key,a.generation,b,a.clearEmitted);return}if(!Array.isArray(b)||!b.every(a=>"string"==typeof a))return void this.failExtensionWidget(a.key,a.generation,Error("Extension widget render must return string[]"),a.clearEmitted);if(this.activeExtensionWidgets.get(a.key)!==a||this.extensionWidgetGenerations.get(a.key)!==a.generation)return;let c=b;this.extensionWidgets.set(a.key,{key:a.key,lines:c,placement:a.placement}),a.rendered=!0,this.emit({type:"extension_ui_request",id:(0,g.randomUUID)(),method:"setWidget",widgetKey:a.key,widgetLines:c,widgetPlacement:a.placement})}setExtensionWidgetFactory(a,b,c){let d,e=this.extensionWidgets.has(a)||this.activeExtensionWidgets.has(a),f=this.clearExtensionWidget(a,e);if(this.extensionWidgetGenerations.get(a)!==f)return;let g=(0,w.TQ)(()=>{let b=this.activeExtensionWidgets.get(a);b?.generation===f&&this.renderExtensionWidget(b)},w.p1);try{d=b(g,ao)}catch(b){this.failExtensionWidget(a,f,b,e);return}if(this.extensionWidgetGenerations.get(a)!==f)return void this.disposeExtensionWidgetComponent(d);if(!d||"object"!=typeof d&&"function"!=typeof d||"function"!=typeof d.render)return void this.failExtensionWidget(a,f,Error("Extension widget factory must return a component with render(width)"),e,d);let h={key:a,component:d,placement:c?.placement??"aboveEditor",generation:f,clearEmitted:e,rendered:!1};this.activeExtensionWidgets.set(a,h),this.renderExtensionWidget(h)}getCustomUiWidth(a){if(!a||"object"!=typeof a)return w.p1;let b=a.overlayOptions,c="function"==typeof b?b():b;if(!c||"object"!=typeof c)return w.p1;let d=c.width;return"number"==typeof d&&Number.isFinite(d)?Math.max(40,Math.min(140,Math.round(d))):92}emitCustomUiRender(a,b){let c;try{c=b.component.render(b.width)}catch(a){c=[`Extension custom UI render failed: ${a instanceof Error?a.message:String(a)}`]}let d={type:"extension_ui_request",id:a,method:"custom",lines:c};this.pendingUiRequests.set(a,d),this.emit(d)}closeCustomUi(a,b){let c=this.activeCustomUis.get(a);if(c&&!c.settled){c.settled=!0,this.activeCustomUis.delete(a),this.pendingUiRequests.delete(a);try{c.component.dispose?.()}catch{}this.emit({type:"extension_ui_request",id:a,method:"custom",lines:[],closed:!0}),c.resolve(b)}}handleExtensionUiInput(a,b){let c=this.activeCustomUis.get(a);if(c&&"string"==typeof b)try{c.component.handleInput?.(b),this.activeCustomUis.has(a)&&this.emitCustomUiRender(a,c)}catch(b){this.closeCustomUi(a,void 0),this.emit({type:"extension_error",extensionPath:`custom-ui:${a}`,event:"custom_ui_input",error:b instanceof Error?b.message:String(b)})}}requestExtensionCustomUi(a,b){if("function"!=typeof a)return Promise.resolve(void 0);let c=this.extensionUiAbortController.signal;if(c.aborted)return Promise.reject(c.reason);let d=(0,g.randomUUID)(),e=this.getCustomUiWidth(b);return new Promise((b,f)=>{let g=!1,h=(0,w.TQ)(()=>{let a=this.activeCustomUis.get(d);a&&this.emitCustomUiRender(d,a)},e),i=a=>{g||(g=!0,c.removeEventListener("abort",k),c.aborted?f(c.reason):b(a))},j=a=>{this.activeCustomUis.has(d)?this.closeCustomUi(d,a):i(a)},k=()=>j(void 0);c.addEventListener("abort",k,{once:!0}),Promise.resolve().then(()=>g?void 0:a(h,ao,ap,j)).then(a=>{if(g){try{a?.dispose?.()}catch{}return}if(!a||"object"!=typeof a||"function"!=typeof a.render)return void i(void 0);let b={component:a,width:e,resolve:a=>i(a),settled:!1};this.activeCustomUis.set(d,b),this.emitCustomUiRender(d,b)}).catch(a=>{g||(this.emit({type:"extension_error",extensionPath:`custom-ui:${d}`,event:"custom_ui",error:a instanceof Error?a.message:String(a)}),i(void 0))})})}requestExtensionUi(a,b,c,d,e){if(e?.aborted)return Promise.resolve(b);let f=this.extensionUiAbortController.signal;if(f.aborted)return Promise.reject(f.reason);let h=e?AbortSignal.any([e,f]):f,i=(0,g.randomUUID)(),j={type:"extension_ui_request",id:i,...a,...d?{timeout:d,expiresAt:Date.now()+d}:{}};return new Promise((a,e)=>{let g,k=!1,l=()=>{g&&clearTimeout(g),h.removeEventListener("abort",n),this.pendingUiRequests.delete(i),this.pendingUiResponses.delete(i),this.emit({type:"extension_ui_closed",id:i})},m=b=>{k||(k=!0,l(),f.aborted?e(f.reason):a(b))},n=()=>m(b);d&&(g=setTimeout(()=>m(b),d)),h.addEventListener("abort",n,{once:!0}),this.pendingUiRequests.set(i,j),this.pendingUiResponses.set(i,{resolve:a=>m(c(a)),cancel:()=>m(b)}),this.emit(j)})}createExtensionUiContext(){return{select:(a,b,c)=>this.requestExtensionUi({method:"select",title:a,options:b,...c?.timeout?{timeout:c.timeout}:{}},void 0,a=>"value"in a?a.value:void 0,c?.timeout,c?.signal),confirm:(a,b,c)=>this.requestExtensionUi({method:"confirm",title:a,message:b,...c?.timeout?{timeout:c.timeout}:{}},!1,a=>"confirmed"in a&&a.confirmed,c?.timeout,c?.signal),input:(a,b,c)=>this.requestExtensionUi({method:"input",title:a,...void 0!==b?{placeholder:b}:{},...c?.timeout?{timeout:c.timeout}:{}},void 0,a=>"value"in a?a.value:void 0,c?.timeout,c?.signal),editor:(a,b,c)=>this.requestExtensionUi({method:"editor",title:a,...void 0!==b?{prefill:b}:{},...c?.timeout?{timeout:c.timeout}:{}},void 0,a=>"value"in a?a.value:void 0,c?.timeout,c?.signal),notify:(a,b)=>{this.emit({type:"extension_ui_request",id:(0,g.randomUUID)(),method:"notify",message:a,notifyType:b})},onTerminalInput:()=>()=>{},setStatus:(a,b)=>{void 0===b?this.extensionStatuses.delete(a):this.extensionStatuses.set(a,b),this.emit({type:"extension_ui_request",id:(0,g.randomUUID)(),method:"setStatus",statusKey:a,statusText:b})},setWorkingMessage:()=>{},setWorkingVisible:()=>{},setWorkingIndicator:()=>{},setHiddenThinkingLabel:()=>{},setWidget:(a,b,c)=>{if(!this._alive||this.extensionWidgetsResetting)return;if("function"==typeof b)return void this.setExtensionWidgetFactory(a,b,c);if(void 0!==b&&!Array.isArray(b))return;if(void 0===b)return void this.clearExtensionWidget(a);let d=this.activeExtensionWidgets.has(a)?this.clearExtensionWidget(a):this.nextExtensionWidgetGeneration(a);this.extensionWidgetGenerations.get(a)===d&&(this.extensionWidgets.set(a,{key:a,lines:b,placement:c?.placement??"aboveEditor"}),this.emit({type:"extension_ui_request",id:(0,g.randomUUID)(),method:"setWidget",widgetKey:a,widgetLines:b,widgetPlacement:c?.placement}))},setFooter:()=>{},setHeader:()=>{},setTitle:a=>{this.emit({type:"extension_ui_request",id:(0,g.randomUUID)(),method:"setTitle",title:a})},custom:(a,b)=>this.requestExtensionCustomUi(a,b),pasteToEditor:a=>{this.emit({type:"extension_ui_request",id:(0,g.randomUUID)(),method:"set_editor_text",text:a})},setEditorText:a=>{this.emit({type:"extension_ui_request",id:(0,g.randomUUID)(),method:"set_editor_text",text:a})},getEditorText:()=>"",addAutocompleteProvider:()=>{},setEditorComponent:()=>{},getEditorComponent:()=>void 0,get theme(){return ao},getAllThemes:()=>[],getTheme:()=>void 0,setTheme:()=>({success:!1,error:"Theme switching is not supported in Pi Web extension UI yet"}),getToolsExpanded:()=>!1,setToolsExpanded:()=>{}}}createExtensionCommandContextActions(){return{waitForIdle:async()=>{let a=this.inner.agent;await a.waitForIdle?.()},newSession:async()=>({cancelled:!0}),fork:async()=>({cancelled:!0}),navigateTree:(a,b)=>this.navigateTreeKeepingToolSelection(a,{summarize:b?.summarize}),switchSession:async()=>({cancelled:!0}),reload:async()=>{let a=this.inner.isStreaming?"Wait for the current response to finish before reloading.":this.inner.isCompacting?"Wait for compaction to finish before reloading.":null;a?this.emit({type:"extension_ui_request",id:(0,g.randomUUID)(),method:"notify",notifyType:"warning",message:a}):(this.extensionStatuses.clear(),this.resetExtensionWidgetsForReload(),this.syncProjectTrust(),await this.inner.reload({beforeSessionStart:()=>{this.inner.extensionRunner.setUIContext?.(this.createExtensionUiContext(),"rpc")}}),(0,m.nx)())}}}syncProjectTrust(){let a=(0,t.Y1)(this.cwd,(0,e.getAgentDir)());this.inner.settingsManager.setProjectTrusted(a.trusted)}}function O(){if(!globalThis.__piSessions){globalThis.__piSessions=new Map;let a=()=>{let a=Array.from(globalThis.__piSessions?.values()??[]);Promise.allSettled(a.map(a=>a.shutdown()))};process.once("exit",()=>globalThis.__piSessions?.forEach(a=>a.destroy())),process.once("SIGINT",a),process.once("SIGTERM",a)}return globalThis.__piSessions}function P(a){let b=O(),c=a.sessionId;a.sessionFile&&(0,r.O8)(c,a.sessionFile),a.onDestroy(()=>{b.get(c)===a&&b.delete(c)});let d=b.get(c);d&&d!==a&&"function"==typeof d.onDestroy&&d.onDestroy(()=>{}),b.set(c,a),a.start(),a.isChatOnly()||a.beginExtensionBinding()}let as=(0,z.s)({getSession:a=>O().get(a),registerSession:(a,b)=>{let c=new ar(a,{...b?.exactSystemPrompt!==void 0?{exactSystemPrompt:b.exactSystemPrompt}:{},chatOnly:b?.chatOnly,suppressCompletionNotifications:!0,...b?.mcpHost?{mcpHost:b.mcpHost}:{}});return P(c),c},reopenSession:async(a,b)=>(await ad(a,b,void 0)).session,resolveSessionPath:r.os,invalidateSessionList:r.mD,isBuiltInSubagentsEnabled:A.N});function Q(a){return as.get(a)}function R(a,b){return as.steer(a,b)}function S(a){return as.abort(a)}function T(){return globalThis.__piStartLocks||(globalThis.__piStartLocks=new Map),globalThis.__piStartLocks}let at=new WeakMap;function U(a){let b=O().get(a);if(!b||b.isAlive()||"function"!=typeof b.waitUntilDisposed)return null;let c=at.get(b);if(!c){let d={done:!1,promise:Promise.resolve()};d.promise=b.waitUntilDisposed(ag+1e3).then(b=>{b||console.warn(`[pi-web] session ${a} is still shutting down; starting it again anyway`)}).finally(()=>{d.done=!0}),at.set(b,d),c=d}return c.done?null:c.promise}function V(a){let b=(0,i.resolve)(a);try{return(0,h.realpathSync)(b)}catch{return b}}function W(){return globalThis.__piStartingSessionCwds||(globalThis.__piStartingSessionCwds=new Map),globalThis.__piStartingSessionCwds}function X(a){return O().get(a)}async function Y(a,b,c){let d=void 0===c?void 0:(0,K.vw)(c),f=X(a);if(!f?.isAlive()){if(!b)throw Error("Session not found");let f=U(a)??T().get(a);if(f)return await f.catch(()=>void 0),Y(a,b,c);let g=e.SessionManager.open(b,void 0);if((0,y.ph)(g.getEntries()))throw Error("Subagent tool selection is fixed by its profile");void 0===d?(0,K.lp)(g):(0,K.b5)(g,d),(0,r.mD)();let h=await ad(a,b,void 0);return{session:h.session,sessionId:h.realSessionId,recreated:!1}}if(f.isRunning())throw Error("Cannot change tools while the session is running");if((0,y.ph)(f.inner.sessionManager.getEntries()))throw Error("Subagent tool selection is fixed by its profile");let i="function"==typeof f.isChatOnly&&"function"==typeof f.setActiveToolSelection,j=void 0===d||!i||f.isChatOnly()!==(0===d.length);if(void 0===d?(0,K.lp)(f.inner.sessionManager):(0,K.b5)(f.inner.sessionManager,d),(0,r.mD)(),void 0!==d&&!j)return f.setActiveToolSelection(d),{session:f,sessionId:a,recreated:!1};let k=f.sessionFile&&(0,h.existsSync)(f.sessionFile)?f.sessionFile:void 0,l=f.cwd,m=f.inner.model,n=f.inner.agent.state?.thinkingLevel;if(await f.shutdown(),k){let b=await ad(a,k,void 0);return{session:b.session,sessionId:b.realSessionId,recreated:!0}}let o=await ad(`__recreate__${(0,g.randomUUID)()}`,"",l,{...void 0!==d?{toolNames:d}:{},...m?{initialModel:{provider:m.provider,modelId:m.id}}:{},allowInitialModelFallback:!0,...n&&al.has(n)?{thinkingLevel:n}:{}});return{session:o.session,sessionId:o.realSessionId,recreated:!0}}function Z(a={}){let b=[];for(let c of O().values()){if("function"!=typeof c.isAlive||!c.isAlive())continue;let d=c.inner?.sessionManager;if(!d)continue;let e=d.getHeader(),f=d.getEntries(),g=f.filter(a=>"message"===a.type),i=g.find(a=>"user"===a.message.role),j=d.getSessionFile()??c.sessionFile,k=!!(j&&(0,h.existsSync)(j)),l=(0,y.$u)(f,e?.id??c.sessionId,j??"");if(!k&&!a.includeTransient&&(!c.isRunning()||!i))continue;let m=e?.timestamp??f[0]?.timestamp??new Date().toISOString(),n=new Date(m).getTime(),o=Number.isNaN(n)?Date.now():n;for(let a of g){let b=function(a){if("user"!==a.message.role&&"assistant"!==a.message.role)return;if("number"==typeof a.message.timestamp)return a.message.timestamp;let b=new Date(a.timestamp).getTime();return Number.isNaN(b)?void 0:b}(a);void 0!==b&&(o=Math.max(o,b))}b.push({path:j??"",id:e?.id??c.sessionId,cwd:e?.cwd??c.cwd,name:d.getSessionName(),created:m,modified:new Date(o).toISOString(),messageCount:g.length,firstMessage:(0,r.nZ)(i&&function(a){if("bashExecution"===a.message.role)return"";let b=a.message.content;return"string"==typeof b?b:b.map(a=>"text"===a.type?a.text:"").filter(Boolean).join(" ")}(i)||"(no messages)"),...l?{parentSessionId:l.parentSessionId,relation:{kind:"subagent",parentSessionId:l.parentSessionId,profile:l.profile,description:l.description,status:c.isRunning()?"running":l.status}}:{},transient:!k})}return b}function $(a){let b=V(a);return!!W().has(b)||Array.from(O().values()).some(a=>V(a.cwd)===b&&a.isRunning())}async function _(a){let b=V(a),c=Array.from(O().values()).filter(a=>V(a.cwd)===b);return await Promise.all(c.map(a=>a.shutdown())),c.length}function aa(){let a=new Set;for(let[b,c]of O())c.isRunning()&&a.add(c.sessionId||b);return[...a]}function ab(){let a=new Set;for(let[b,c]of O())c.isAwaitingInput()&&a.add(c.sessionId||b);return[...a]}function ac(){let a=new Set;for(let[b,c]of O())c.isRunning()&&c.hasSuppressedCompletionNotifications()&&a.add(c.sessionId||b);return[...a]}async function ad(a,b,c,d={}){let f,g,h,{initialModel:i,allowInitialModelFallback:j,thinkingLevel:k}=d,l=void 0===d.toolNames?void 0:(0,K.vw)(d.toolNames),m=O(),p=T(),s=m.get(a);if(s?.isAlive())return{session:s,realSessionId:a};let v=p.get(a);if(v)return v;let w=U(a);if(w){let e=w.then(()=>(p.get(a)===e&&p.delete(a),ad(a,b,c,d)));return p.set(a,e),e}if(b)f=e.SessionManager.open(b,void 0);else{if(!c)throw Error("cwd is required for a new session");f=e.SessionManager.create(c,void 0)}let z=f.getCwd(),B=f.getEntries(),F=b&&(0,y.e0)(B),I=b?(0,y.ph)(B):null;if(F&&!I)throw Error("Invalid subagent resource snapshot");let J=I?void 0:(0,K.dS)(B),L=I?.tools??J??l;I||void 0!==J||void 0===l||(0,K.b5)(f,l);let Q=!!(I?.loadExtensions||I?.loadSkills||I?.codemode||I?.mcp),R=L?.length===0&&!Q,S=(g=W(),h=V(z),g.set(h,(g.get(h)??0)+1),()=>{let a=(g.get(h)??1)-1;a>0?g.set(h,a):g.delete(h)}),X=(async()=>{let a;R||(0,e.initTheme)();let b=(0,e.getAgentDir)();I||void 0===L||(a=0===L.length?[]:void 0);let c=I?Q?(0,t.Fk)(z,b):void 0:R?void 0:(0,t.Fk)(z,b),d=e.SettingsManager.create(z,b),g={},h=(0,D.Q)(()=>g.current?.()),l=I||R?void 0:await (0,E.n7)({agentDir:b}),m=I?.codemode?await (0,E.Db)({agentDir:b,cwd:z,projectTrusted:()=>d.isProjectTrusted()}):void 0,p=I?.mcp?await (0,E.M7)({agentDir:b,cwd:z,projectTrusted:()=>d.isProjectTrusted(),codemode:!0===I.codemode}):void 0,s=I?(0,H.X)({loadSkills:I.loadSkills,skills:I.skills,exactSystemPrompt:I.exactSystemPrompt??(R?I.appendSystemPrompt[0]??"":void 0)}):void 0,v=[...m?[m]:[],...p&&I?[...p.extensions,(0,G.PV)(()=>I)]:[],...s?.loaderOptions.extensionFactories??[]],w=await (0,e.createAgentSessionServices)({cwd:z,agentDir:b,settingsManager:d,resourceLoaderOptions:I?{...(0,y._R)(I),...s.loaderOptions,...v.length>0?{extensionFactories:v}:{},noPromptTemplates:!0,noThemes:!0,noContextFiles:!0,...R?{systemPrompt:" ",systemPromptOverride:()=>void 0}:{},appendSystemPrompt:I.appendSystemPrompt}:R?{...C.M,extensionFactories:[h]}:{extensionFactories:[...l?.extensions??[],(0,G._Q)(),(0,q.eD)({cwd:z,settings:d}),(0,x.Vj)(as.extensionRuntime,()=>(0,y.IR)(z),A.N)],extensionsOverride:a=>(0,q.Ds)((0,x.U6)(a))},...c?{resourceLoaderReloadOptions:c}:{}});if(I?.codemode&&!w.resourceLoader.getExtensions().extensions.some(a=>a.tools.has("codemode")))throw Error("Code mode is unavailable: builtin:codemode was not registered");let B=w.settingsManager.getEnabledModels(),F=await (0,n.py)(w.modelRuntime,B),J=i&&!w.modelRuntime.getModel(i.provider,i.modelId)?(0,o.S9)(w.modelRuntime,i.provider,i.modelId):void 0;if(R&&J&&!j)throw M(J.provider,J.id);let K=i&&!J&&(!j||F.visible.some(a=>a.provider===i.provider&&a.id===i.modelId))?i:void 0,O=w.settingsManager.getDefaultProvider(),S=w.settingsManager.getDefaultModel(),T=O&&S?{provider:O,modelId:S}:void 0,U=f.getBranch(),V=U.some(a=>"message"===a.type&&"system"!==a.message.role),W=V?(0,r.Vg)(U):null,X=W?w.modelRuntime.getModel(W.provider,W.modelId):void 0,Y=V?null:(0,n.IR)(F,{...K?{requestedModel:K}:{},...T?{defaultModel:T}:{},...k?{thinkingLevel:k}:{}}),Z=X&&w.modelRuntime.hasConfiguredAuth(X.provider)?X:Y?.model,$=!!(Y?.model&&T&&Y.model.provider===T.provider&&Y.model.id===T.modelId&&(F.scopedModels.length>0||!B?.some(a=>a.trim()))),_=V||R||!J&&(K||$)?void 0:await (0,o.je)(w.modelRuntime,B,J?{requestedModel:{provider:J.provider,modelId:J.id}}:T?{defaultModel:T}:{}),aa=V?W&&!X?(0,o.S9)(w.modelRuntime,W.provider,W.modelId):void 0:J??_?.model,ab=aa?V?U.findLast(a=>"thinking_level_change"===a.type)?.thinkingLevel??w.settingsManager.getDefaultThinkingLevel()??am:k??_?.thinkingLevelPin??w.settingsManager.getModelThinkingLevel(aa.provider,aa.id)??w.settingsManager.getDefaultThinkingLevel()??am:void 0,ac=R?aa??(!V&&O&&S?(0,o.S9)(w.modelRuntime,O,S):void 0):void 0,{session:ad}=await (0,e.createAgentSessionFromServices)({services:w,sessionManager:f,...Z?{model:Z}:{},...Y?.thinkingLevel?{thinkingLevel:Y.thinkingLevel}:{},...F.scopedModels.length>0?{scopedModels:[...F.scopedModels]}:{},...I?(0,y.AO)(I):void 0!==a?{tools:a}:{}});if(!I&&!R){let a=ad.getActiveToolNames();ad.setActiveToolsByName(N(ad,L??a,a))}s?.setActiveToolsGetter(()=>ad.getActiveToolNames());let ae=I?s.getExactSystemPrompt:R?()=>(0,C.c)(ad.resourceLoader.getAgentsFiles().agentsFiles):void 0;g.current=ae;let af=l?.mcpHost??p?.mcpHost,ag=new ar(ad,{exactSystemPrompt:ae,chatOnly:R,onAgentRunComplete:(a,b)=>{(0,u.lB)(a,b).catch(a=>{console.error("[pi-web] failed to send completion push:",a instanceof Error?a.message:a)})},suppressCompletionNotifications:!!I,...af?{mcpHost:af}:{},...ac?{chatOnlyExtensionModel:ac}:{}}),ah=ad.sessionId;if(P(ag),!R){if(aa)try{await ag.waitUntilReady(),await ag.send({type:"set_model",provider:aa.provider,modelId:aa.id}),ab&&await ag.send({type:"set_thinking_level",level:ab})}catch(a){console.error(`[pi-web] could not switch to ${aa.provider}/${aa.id}:`,a instanceof Error?a.message:a)}ag.waitUntilReady().then(()=>(0,o.vd)(ad.modelRuntime)).catch(()=>void 0)}return{session:ag,realSessionId:ah}})().finally(()=>{p.delete(a),S()});return p.set(a,X),X}d()}catch(a){d(a)}})},39172:(a,b,c)=>{c.d(b,{YI:()=>d});function d(a){switch(a.method){case"select":case"confirm":case"input":case"editor":return!0;case"custom":return!0!==a.closed;default:return!1}}},42350:(a,b,c)=>{c.d(b,{mO:()=>d});function d(a,b){return b&&0!==b.length?{...a,transcriptNotices:[...b]}:a}},44230:(a,b,c)=>{c.d(b,{b5:()=>k,dS:()=>i,lp:()=>l,vw:()=>j});var d=c(93551);let e="pi-web:tool-selection",f=new Set(d.C1),g=Symbol("cleared-tool-selection");function h(a){return"object"!=typeof a||null===a||Array.isArray(a)||1!==a.version?void 0:!0===a.cleared?g:!Array.isArray(a.tools)||a.tools.some(a=>"string"!=typeof a||!f.has(a))?void 0:[...new Set(a.tools)]}function i(a){for(let b=a.length-1;b>=0;b-=1){let c=a[b];if("custom"!==c.type||c.customType!==e)continue;let d=h(c.data);if(void 0!==d)return d===g?void 0:d}}function j(a){let b=h({version:1,tools:a});if(void 0===b||b===g)throw Error("toolNames must contain only built-in tool names");return b}function k(a,b){a.appendCustomEntry(e,{version:1,tools:[...b]})}function l(a){a.appendCustomEntry(e,{version:1,cleared:!0})}},55422:(a,b,c)=>{c.d(b,{Q:()=>d});function d(a){return{name:"pi-web-exact-system-prompt",hidden:!0,factory:b=>{b.on("before_agent_start",()=>{let b=a();return void 0===b?void 0:{systemPrompt:b}})}}}},68826:(a,b,c)=>{c.d(b,{Ox:()=>i,QG:()=>j,Wv:()=>h,jN:()=>l,vH:()=>k});var d=c(29021),e=c(33873),f=c(82738),g=c(51202);let h=8,i=524288;function j(a){let b=a?.contextWindow;if(!a||!b||b<0)return{};let c=Math.floor(4*b/10);return c<i?{maxBytes:c,model:`${a.provider}/${a.id}`}:{}}function k(a,b,c={}){let j=c.maxBytes??i;if(b.length>h)throw Error(`Agent input_files accepts at most ${h} files`);let l=(0,d.realpathSync)(a),m=new Set([l]),n=new TextDecoder("utf-8",{fatal:!0}),o=new Set,p=[],q=0;for(let h of b){let b,i;if(!h.trim())throw Error("Agent input_files paths must not be empty");try{b=(0,d.realpathSync)((0,e.resolve)(a,h))}catch{throw Error(`Agent input file does not exist: ${h}`)}if(!(0,f.o4)(b,m))throw Error(`Agent input file is outside the session cwd: ${h}`);if(!(0,d.statSync)(b).isFile())throw Error(`Agent input path is not a file: ${h}`);if(o.has(b))continue;o.add(b);let k=(0,d.readFileSync)(b);if((q+=k.byteLength)>j){let a=c.model?` for ${c.model}, about a tenth of its context window`:"";throw Error(`Agent input_files exceeds the ${j<1024?`${j}-byte`:`${Math.floor(j/1024)} KB`} total limit${a}. Pass fewer or smaller files, or name the paths in prompt if the subagent can read them.`)}try{i=n.decode(k)}catch{throw Error(`Agent input file is not valid UTF-8 text: ${h}`)}p.push({path:(0,g.W3)((0,e.relative)(l,b)),content:i})}return p}function l(a,b){if(0===b.length)return a;let c=b.map(a=>`<document path=${JSON.stringify(a.path)}>
12
+ ${j}`:k;return void 0!==a.exactSystemPrompt&&(i=l),{systemPrompt:l}})}}]}:{}},setActiveToolsGetter(a){d=a},getExactSystemPrompt:void 0===a.exactSystemPrompt?void 0:()=>i}}[f,h]=i.then?(await i)():i,d()}catch(a){d(a)}})},27691:(a,b,c)=>{c.d(b,{TQ:()=>e,p1:()=>d});let d=92;function e(a,b=d,c=40){return Object.freeze({terminal:Object.freeze({columns:b,rows:c,kittyProtocolActive:!1}),requestRender:a})}},35128:(a,b,c)=>{c.d(b,{kc:()=>d});function d(a){if(void 0===a)return null;if(!Array.isArray(a))return"images must be an array";if(a.length>10)return"A message can include at most 10 images";for(let b of a){if(!b||"object"!=typeof b||"image"!==b.type)return"Each attachment must be an image";if(!function(a){if(!a||"object"!=typeof a||"string"!=typeof a.data||"string"!=typeof a.mimeType||!a.mimeType.startsWith("image/"))return!1;let b=function(a){if(!a||a.length%4!=0)return null;let b=a.endsWith("==")?2:+!!a.endsWith("="),c=a.length-b;for(let b=0;b<c;b+=1){var d;if(!((d=a.charCodeAt(b))>=65&&d<=90||d>=97&&d<=122||d>=48&&d<=57||43===d||47===d))return null}for(let b=c;b<a.length;b+=1)if("="!==a[b])return null;return a.length/4*3-b}(a.data);return null!==b&&b<=0xa00000}(b))return"Each image must be valid base64 image data of 10MB or smaller"}return null}},36540:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Aw:()=>u,Kp:()=>y,Vv:()=>w,dt:()=>z,xu:()=>x});var e=c(75430),f=c(73024),g=c(76760),h=c(42350),i=a([e]);function j(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function k(a){return j(a)&&"number"==typeof a.input&&"number"==typeof a.output&&"number"==typeof a.cacheRead&&"number"==typeof a.cacheWrite&&j(a.cost)}function l(a){if("message"!==a.type)return;let b=a.message;if("assistant"===b.role&&k(b.usage))return b}function m(a,b,c){let d=b.usage,e=d.input+d.cacheRead+d.cacheWrite;if(!a||e<=0||d.cacheRead+d.cacheWrite===0&&!a.reportedCache)return;let f=Math.min(a.promptTokens,e)-d.cacheRead;if(f<=1024)return;let g=d.input+d.cacheWrite,h=g>0?(d.cost.input+d.cost.cacheWrite)/g:0,i=d.cacheRead>0?d.cost.cacheRead/d.cacheRead:(c.getModel(b.provider,b.model)?.cost?.cacheRead??0)/1e6;return{missedTokens:f,missedCost:f*Math.max(0,h-i),idleMs:Math.max(0,b.timestamp-a.timestamp),modelChanged:`${b.provider}/${b.model}`!==a.modelKey}}function n(a,b){let c,d=new Map;for(let e of a){if("compaction"===e.type||"branch_summary"===e.type){c=void 0;continue}if("usage"===e.type&&"cache_warm"===e.kind){if(!k(e.usage))continue;let a=e.usage.input+e.usage.cacheRead+e.usage.cacheWrite;a>0&&(c={promptTokens:a,modelKey:`${e.provider}/${e.model}`,timestamp:Date.parse(e.timestamp),reportedCache:!0});continue}let a=l(e);if(!a)continue;let f=m(c,a,b);f&&d.set(e.id,f),c=function(a,b){let c=a.usage,d=c.input+c.cacheRead+c.cacheWrite;if(!(d<=0))return{promptTokens:d,modelKey:`${a.provider}/${a.model}`,timestamp:a.timestamp,reportedCache:b||c.cacheRead+c.cacheWrite>0}}(a,c?.reportedCache??!1)??c}return{prev:c,misses:d}}function o(a){if(!(a.missedTokens<2e4)||!(a.missedCost<.1))return{kind:"cache_miss",missedTokens:a.missedTokens,missedCost:a.missedCost,...a.modelChanged?{modelChanged:!0}:a.idleMs>=3e5?{idleMinutes:Math.round(a.idleMs/6e4)}:{}}}function p(a){if(!j(a)||!Array.isArray(a.diagnostics))return 0;let b=0;for(let c of a.diagnostics){if(!j(c)||"anthropic_input_transformations"!==c.type)continue;let a=j(c.details)?c.details.transformations:void 0;Array.isArray(a)&&(b+=a.filter(a=>j(a)&&"thinking_dropped"===a.type).length)}return b}function q(a,b){return a>b?{kind:"thinking_dropped",count:a}:void 0}function r(a,b){if(k(b))return{kind:"summary_cost",source:a,tokens:b.input+b.output+b.cacheRead+b.cacheWrite,cost:"number"==typeof b.cost.total?b.cost.total:0}}function s(a){switch(a.type){case"message":{let b=a.message.role;return"toolResult"!==b&&"system"!==b}case"compaction":return!0;case"branch_summary":return!!a.summary;case"custom_message":return a.display;default:return!1}}function t(a,b,c){if(!c)return;let d=a.get(b);d?d.push(c):a.set(b,[c])}function u(a,b,c,d){if(!j(c)||"assistant"!==c.role||!k(c.usage)||"aborted"===c.stopReason||"error"===c.stopReason)return[];let e=a=>"message"===a.type&&a.message===c,f=[],{prev:g}=n(a.filter(a=>!e(a)),d),h=m(g,c,d),i=h?o(h):void 0;i&&f.push(i);let r=p(c);if(r>0){let a=0;for(let c=b.length-1;c>=0;c--){let d=b[c];if(!e(d)&&l(d)&&"message"===d.type){a=p(d.message);break}}let c=q(r,a);c&&f.push(c)}return f}e=(i.then?(await i)():i)[0];let A=new Map;function v(a){let b,c;try{let c=(0,f.statSync)(a);b=`${c.ino}:${c.size}:${c.mtimeMs}`}catch{A.delete(a);return}let d=A.get(a);if(d?.stamp===b)return d.value;try{let b=JSON.parse((0,f.readFileSync)(a,"utf8").replace(/^\uFEFF/,"")),d=j(b)?b.showCacheMissNotices:void 0;c="boolean"==typeof d?d:void 0}catch{c=void 0}return A.delete(a),A.set(a,{stamp:b,value:c}),A.size>200&&A.delete(A.keys().next().value),c}function w(a,b=(0,e.getAgentDir)()){return v((0,g.join)(a,".pi","settings.json"))??v((0,g.join)(b,"settings.json"))??!1}function x(a,b){let c=function(a){let b=new Map;for(let c of a){let a=l(c);a&&!(a.usage.cacheRead<=0)&&"number"==typeof a.usage.cost.cacheRead&&b.set(`${a.provider}/${a.model}`,a.usage.cost.cacheRead/a.usage.cacheRead*1e6)}return{getModel:(a,c)=>{let d=b.get(`${a}/${c}`);return void 0===d?void 0:{cost:{cacheRead:d}}}}}(a);return{getModel:(a,d)=>c.getModel(a,d)??b?.getModel(a,d)}}function y(a){if(a.cwd&&w(a.cwd))return function(a,b,c={}){let d,e=new Map,f=new Map;for(let b of a)f.set(b.id,b);let g=(a,b)=>{let c=a.parentId?f.get(a.parentId):void 0;for(;c&&!b(c);)c=c.parentId?f.get(c.parentId):void 0;return c};if(c.leafId){d=new Set;for(let a=f.get(c.leafId);a;a=a.parentId?f.get(a.parentId):void 0)d.add(a.id)}let{misses:h}=n(a,b);for(let b of a)switch(b.type){case"message":{let a=l(b);if(!a||"aborted"===a.stopReason||"error"===a.stopReason)break;let c=h.get(b.id);c&&t(e,b.id,o(c));let d=p(a);if(d>0){let a=g(b,a=>!!l(a)),c=a?.type==="message"?p(a.message):0;t(e,b.id,q(d,c))}break}case"usage":{if("cache_warm"!==b.kind||!k(b.usage)||d&&!d.has(b.id))break;let a=g(b,s);a&&t(e,a.id,{kind:"cache_warm",cost:"number"==typeof b.usage.cost.total?b.usage.cost.total:0,...b.note?{note:b.note}:{}});break}case"compaction":t(e,b.id,r("compaction",b.usage));break;case"branch_summary":b.summary&&t(e,b.id,r("branch_summary",b.usage))}return e}(a.entries,x(a.entries,a.models),{leafId:a.leafId})}function z(a,b){let c;return b&&0!==b.size?(a.entryIds.forEach((d,e)=>{let f=b.get(d);f&&((c??=[...a.messages])[e]=(0,h.mO)(a.messages[e],f))}),c?{...a,messages:c}:a):a}d()}catch(a){d(a)}})},38383:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{$Z:()=>Z,A4:()=>Y,Bp:()=>$,HG:()=>ab,I9:()=>ac,OF:()=>ae,Zo:()=>S,_I:()=>_,d_:()=>R,oA:()=>aa,wW:()=>T,x8:()=>ad});var e=c(75430),f=c(29862),g=c(55511),h=c(29021),i=c(33873),j=c(28354),k=c(35128),l=c(2345),m=c(41334),n=c(85078),o=c(7024),p=c(39172),q=c(68985),r=c(14296),s=c(20425),t=c(74768),u=c(85545),v=c(5930),w=c(27691),x=c(94795),y=c(36492),z=c(2),A=c(13450),B=c(86301),C=c(14967),D=c(14533),E=c(55422),F=c(3280),G=c(44886),H=c(20753),I=c(24518),J=c(24402),K=c(36540),L=c(44230),M=a([e,f,m,n,o,q,r,t,u,x,y,z,A,B,C,F,H,I,K]);function N(a,b){return Error(`${a}/${b} is provided by an extension, and Chat only loads no extensions. Choose another model or tool preset.`)}[e,f,m,n,o,q,r,t,u,x,y,z,A,B,C,F,H,I,K]=M.then?(await M)():M;let af=new Set(["agent_end","agent_settled","auto_compaction_end","compaction_end"]),ag=function(a=process.env.PI_WEB_IDLE_TIMEOUT_MS){if(void 0!==a&&""!==a.trim()){let b=Number(a);if(Number.isFinite(b)&&b>=0&&b<=0x7fffffff)return b;console.warn(`[pi-web] invalid PI_WEB_IDLE_TIMEOUT_MS "${a}", falling back to 10 minutes`)}return 6e5}(),ah=function(a=process.env.PI_WEB_SHUTDOWN_DEADLINE_MS){if(void 0!==a&&""!==a.trim()){let b=Number(a);if(Number.isFinite(b)&&b>0&&b<=0x7fffffff)return b;console.warn(`[pi-web] invalid PI_WEB_SHUTDOWN_DEADLINE_MS "${a}", falling back to 5 seconds`)}return 5e3}(),ai=new Set(["fork","clone"]),aj="This session has not been saved yet. Send a message before forking it.",ak=new Set(["get_state","get_session_stats","get_last_assistant_text","get_tools","get_commands","extension_ui_response","extension_ui_input"]),al=["read","bash","powershell","edit","write","grep","find","ls"],am=new Set(["off","minimal","low","medium","high","xhigh","max"]),an="medium";class ao extends e.Theme{constructor(){super({muted:"",text:"",thinkingXhigh:"",searchMatchText:""},{selectedBg:""},"truecolor")}fg(...[,a]){return a}bg(...[,a]){return a}bold(a){return a}italic(a){return a}underline(a){return a}inverse(a){return a}strikethrough(a){return a}getFgAnsi(){return""}getBgAnsi(){return""}getThinkingBorderColor(){return a=>a}getBashModeBorderColor(){return a=>a}}let ap=new ao,aq=new f.KeybindingsManager(f.TUI_KEYBINDINGS),ar=new Set(["codemode","tool_search",...z.st]);function O(a,b,c){if(0===b.length)return[];let d=new Set(al),e=new Map(a.getAllTools().map(a=>[a.name,a])),f=(0,C.wQ)(b.filter(a=>d.has(a)),a.settingsManager.getDefaultTools()),g=c.filter(a=>{let b=e.get(a);return void 0!==b&&!d.has(a)&&"hidden"!==b.exposure});return[...new Set([...f,...g])]}class as{constructor(a,b={}){this.inner=a,this.listeners=new Set,this.activeToolEvents=new Map,this.pendingUiResponses=new Map,this.pendingUiRequests=new Map,this.activeCustomUis=new Map,this.extensionUiAbortController=new AbortController,this.extensionStatuses=new Map,this.extensionWidgets=new Map,this.activeExtensionWidgets=new Map,this.extensionWidgetGenerations=new Map,this.extensionWidgetsResetting=!1,this.pendingPromptCount=0,this.activeMutatingCommands=0,this.sessionReplacement=null,this.agentRunNeedsCompletion=!1,this.lastRunAborted=!1,this.promptAdmissionTail=Promise.resolve(),this.extensionsBound=!1,this.extensionBindingPromise=null,this.extensionBindingError=null,this.mcpHostDisposed=!1,this.mcpPromptWait=null,this.unsubscribe=null,this.idleTimer=null,this.onDestroyCallback=null,this.shutdownPromise=null,this.sessionShutdownEmitted=!1,this.forceShutdownOnIdle=!1,this.forcedIdleTimerArmed=!1,this._alive=!0,this.resolveDisposed=()=>{},this.disposed=new Promise(a=>{this.resolveDisposed=a}),this.closing=!1,this.exactSystemPrompt=b.exactSystemPrompt,this.chatOnly=b.chatOnly??!1,this.onAgentRunComplete=b.onAgentRunComplete,this.suppressCompletionNotifications=b.suppressCompletionNotifications??!1,this.mcpHost=b.mcpHost,this.chatOnlyExtensionModel=b.chatOnlyExtensionModel}get sessionId(){return this.inner.sessionId}get sessionFile(){return this.inner.sessionFile??""}get cwd(){return this.inner.sessionManager.getCwd()}get streamingMessage(){return this.inner.agent.state?.streamingMessage}get isStreaming(){return this.inner.isStreaming}isAlive(){return this._alive&&!this.closing}isRunning(){return this._alive&&(this.pendingPromptCount>0||this.inner.isStreaming||this.inner.isCompacting||this.inner.isBashRunning)}isAwaitingInput(){if(!this.isRunning())return!1;for(let a of this.pendingUiRequests.values())if((0,p.YI)(a))return!0;return!1}evictIfDiskAhead(){if(!this.isAlive()||this.isRunning())return!1;let a=(0,r.H6)(this.sessionFile);return!(!a||this.inner.sessionManager.getEntry(a)||this.isRunning())&&(this.destroy(),(0,r.mD)(),!0)}isChatOnly(){return this.chatOnly}hasSuppressedCompletionNotifications(){return this.suppressCompletionNotifications}start(){this.unsubscribe=this.inner.subscribe(a=>{"agent_start"===a.type&&(this.agentRunNeedsCompletion=!0,this.lastRunAborted=!1),"agent_settled"===a.type&&(this.lastRunAborted=!0===a.aborted),"agent_end"===a.type&&((0,r.mD)(),this.activeToolEvents.clear()),"session_info_changed"===a.type&&(0,r.mD)(),this.trackActiveToolEvent(a),af.has(a.type)&&this.resetIdleTimer(),this.emit("message_end"===a.type?this.withTranscriptNotices(a):a),"agent_settled"===a.type&&this.notifyAgentRunCompleteIfIdle()}),this.resetIdleTimer()}withTranscriptNotices(a){let b=a.message;if(0===this.listeners.size||b?.role!=="assistant")return a;try{let c=this.inner.sessionManager;if(!(0,K.Vv)(c.getCwd()))return a;let d=c.getEntries(),e=(0,K.Aw)(d,c.getBranch(),b,(0,K.xu)(d,this.inner.modelRuntime));return e.length>0?{...a,transcriptNotices:e}:a}catch(b){return console.warn("[pi-web] transcript notices failed:",b instanceof Error?b.message:b),a}}trackActiveToolEvent(a){let b=a.toolCallId;if(!("string"!=typeof b||(0,J.uz)(a))){if("tool_execution_start"===a.type||"tool_execution_update"===a.type)this.activeToolEvents.set(b,a);else if("tool_execution_end"===a.type){this.activeToolEvents.delete(b);let a=`${b}/`;for(let b of this.activeToolEvents.keys())b.startsWith(a)&&this.activeToolEvents.delete(b)}}}notifyAgentRunCompleteIfIdle(){if(!(!this.agentRunNeedsCompletion||this.isRunning())&&(this.agentRunNeedsCompletion=!1,!this.suppressCompletionNotifications&&!this.lastRunAborted))try{this.onAgentRunComplete?.(this.sessionId,this.inner.sessionManager.getSessionName())}catch(a){console.error("[pi-web] completion listener failed:",a instanceof Error?a.message:a)}}promptDoneEvent(){return{type:"prompt_done",...this.lastRunAborted?{aborted:!0}:{}}}beginExtensionBinding(){this.ensureExtensionsBound().catch(a=>{console.error("[pi-web] failed to dispatch session_start to extensions:",a instanceof Error?a.message:a)})}async waitUntilReady(){await this.waitForExtensionsBound()}async prepareMcpForRun(a){let b=this.mcpHost;if(!b||this.inner.isStreaming)return!a.aborted;let c=new AbortController,d=()=>c.abort();a.aborted&&d(),a.addEventListener("abort",d,{once:!0});let e=(async()=>{await this.waitForExtensionsBound(),c.signal.aborted||await b.prepareForPrompt(c.signal)})().catch(a=>{console.error("[pi-web] MCP servers could not be prepared:",a instanceof Error?a.message:a)}),f={controller:c,done:e};this.mcpPromptWait=f;try{await e}finally{a.removeEventListener("abort",d),this.mcpPromptWait===f&&(this.mcpPromptWait=null)}return!c.signal.aborted}ensureExtensionsBound(){return this.extensionsBound?Promise.resolve():(this.extensionBindingPromise||(this.extensionBindingError=null,this.extensionBindingPromise=(async()=>{if(!this._alive)return;let a=this.createExtensionUiContext();if("function"==typeof this.inner.bindExtensions){let b=this.inner.bindExtensions;await b.call(this.inner,{uiContext:a,mode:"rpc",commandContextActions:this.createExtensionCommandContextActions(),shutdownHandler:()=>this.emit({type:"extension_ui_request",id:(0,g.randomUUID)(),method:"notify",notifyType:"warning",message:"Extension requested shutdown, but shutdown is not supported in Pi Web."}),onError:a=>this.emit({type:"extension_error",extensionPath:a.extensionPath,event:a.event,error:a.error})})}else this.inner.extensionRunner.setUIContext?.(a,"rpc");this.extensionsBound=!0,console.log(`[pi-web] session_start dispatched to extensions for session ${this.inner.sessionId}`)})().catch(a=>{throw this.extensionBindingError=a,a})),this.extensionBindingPromise)}async waitForExtensionsBound(){try{this.extensionBindingPromise&&await this.extensionBindingPromise}catch(a){throw a instanceof Error?a:Error(String(a))}if(this.extensionBindingError)throw this.extensionBindingError instanceof Error?this.extensionBindingError:Error(String(this.extensionBindingError))}extensionCommandCandidates(){try{return this.inner.extensionRunner.getRegisteredCommands().map(a=>({name:a.invocationName,sourceInfo:a.sourceInfo}))}catch{return[]}}shouldWaitForExtensions(a){return"prompt"===a||"steer"===a||"follow_up"===a||"get_commands"===a||"get_state"===a}async withFinalIdleReset(a){try{return await a()}finally{this.resetIdleTimer()}}setActiveToolSelection(a,b=this.inner.getActiveToolNames()){this.inner.setActiveToolsByName(O(this.inner,a,b))}async navigateTreeKeepingToolSelection(a,b){let c=this.inner.getActiveToolNames(),d=await this.inner.navigateTree(a,b);if(d.cancelled||this.chatOnly)return{cancelled:d.cancelled};let e=this.inner.sessionManager.getEntries();if(!(0,z.ph)(e)){let a=this.inner.getActiveToolNames();this.setActiveToolSelection((0,L.dS)(e)??a,[...a,...c.filter(a=>ar.has(a))])}return{cancelled:!1}}emit(a){for(let b of this.listeners)try{b(a)}catch(b){console.error(`[pi-web] failed to deliver ${a.type} event:`,b instanceof Error?b.message:b)}}async acquirePromptAdmission(){let a,b=this.promptAdmissionTail;return this.promptAdmissionTail=new Promise(b=>{a=b}),await b,a}resetIdleTimer(){if(!this._alive){this.idleTimer&&clearTimeout(this.idleTimer);return}if(this.isRunning()||(this.forceShutdownOnIdle=!1),this.forceShutdownOnIdle&&this.forcedIdleTimerArmed)return;this.idleTimer&&clearTimeout(this.idleTimer);let a=ag||6e5*!!this.forceShutdownOnIdle;this.forcedIdleTimerArmed=0!==a&&this.forceShutdownOnIdle,0!==a&&(this.idleTimer=setTimeout(()=>{!this.forceShutdownOnIdle&&(this.isRunning()||(0,v.Vj)({sessionId:this.sessionId,sessionFile:this.sessionFile||void 0}))?this.resetIdleTimer():this.shutdown().catch(a=>{console.error("[pi-web] failed to shut down idle session:",a instanceof Error?a.message:a)})},a))}persistBashOnlySession(){let a=this.inner.sessionManager,b=a.getSessionFile();if(!b||(0,h.existsSync)(b))return;let c=a.getHeader();if(!c)return;let d=[c,...a.getEntries()].map(a=>JSON.stringify(a)).join("\n")+"\n";(0,h.writeFileSync)(b,d,{encoding:"utf8",flag:"wx"}),a.flushed=!0,(0,r.O8)(this.inner.sessionId,b)}onEvent(a){for(let b of(this.listeners.add(a),this.pendingUiRequests.values()))a(b);for(let b of this.activeToolEvents.values())a(b);return()=>{this.listeners.delete(a)}}onDestroy(a){this.onDestroyCallback=a}waitUntilDisposed(a){let b,c=new Promise(c=>{b=setTimeout(()=>c(!1),a),b.unref?.()});return Promise.race([this.disposed.then(()=>!0),c]).finally(()=>clearTimeout(b))}async withSessionReplacement(a,b){if(this.sessionReplacement)throw Error("Session is already being copied");this.sessionReplacement=a;try{return await b()}finally{this._alive&&(this.sessionReplacement=null)}}isSessionRunningForReplacement(){return this.inner.isBashRunning||this.inner.isStreaming||this.inner.isCompacting||this.pendingPromptCount>0}async shutdownAfterSessionReplacement(a){try{await this.shutdown()}catch(b){console.error(`[pi-web] ${a} succeeded, but source session shutdown failed:`,b instanceof Error?b.message:b)}}async send(a){let b=a.type,c=ak.has(b);if(this.sessionReplacement&&!c)throw Error("Session is being copied to a new session");if(ai.has(b)&&this.activeMutatingCommands>0)throw Error(`Cannot ${b} while another session command is running`);let d=!c;d&&(this.activeMutatingCommands+=1);try{if("get_state"!==b&&this.resetIdleTimer(),this.shouldWaitForExtensions(b)&&await this.waitForExtensionsBound(),this.sessionReplacement&&!c)throw Error("Session is being copied to a new session");if("prompt"===b||"steer"===b||"follow_up"===b){let b=(0,k.kc)(a.images);if(b)throw Error(b)}if("prompt"===b&&!(0,h.existsSync)(this.cwd))throw Error(`Directory does not exist: ${this.cwd}`);switch(b){case"prompt":{let b=await this.acquirePromptAdmission();try{let b,c,d;if(this.inner.isBashRunning)throw Error("Cannot send a prompt while a shell command is running");let e=this.inner.model;if(this.chatOnlyExtensionModel&&!(e&&this.inner.modelRuntime.getModel(e.provider,e.id)))throw N(this.chatOnlyExtensionModel.provider,this.chatOnlyExtensionModel.id);this.extensionUiAbortController.signal.aborted&&(this.extensionUiAbortController=new AbortController);let f=a.images,g=a.streamingBehavior,h=!1,i=!1,j=!1,k=new Promise((a,d)=>{b=()=>{h=!0,this.agentRunNeedsCompletion=!0,i||(i=!0,g||(this.lastRunAborted=!1),a())},c=a=>{i||(i=!0,d(a))}}),l=()=>{j||(j=!0,this.pendingPromptCount=Math.max(0,this.pendingPromptCount-1),this.resetIdleTimer(),this.notifyAgentRunCompleteIfIdle())};this.pendingPromptCount+=1;let m=this.mcpHost&&!this.inner.isStreaming?(0,G.Ai)("string"==typeof a.message?a.message:"",this.extensionCommandCandidates()):"none";if(this.mcpHost&&"none"!==m){let a=new AbortController,b=this.mcpHost.prepareForPrompt(a.signal,{wait:"wait"===m}).catch(a=>{console.error("[pi-web] MCP servers could not be prepared:",a instanceof Error?a.message:a)}).then(()=>{if(a.signal.aborted)throw l(),Error("Stopped while MCP servers were connecting; the message was not sent.")}),c={controller:a,done:b.then(()=>void 0,()=>void 0)};this.mcpPromptWait=c;try{await b}finally{this.mcpPromptWait===c&&(this.mcpPromptWait=null)}}try{d=this.inner.prompt(a.message,{...f?.length?{images:f}:{},...g?{streamingBehavior:g}:{},source:"rpc",preflightResult:()=>b()})}catch(a){throw l(),a}return d.then(()=>{b(),l(),g||this.emit(this.promptDoneEvent())},a=>{c(a),l(),(0,r.mD)(),h&&(this.emit({type:"prompt_error",errorMessage:a instanceof Error?a.message:String(a)}),g||this.emit(this.promptDoneEvent()))}).catch(a=>{console.error("[pi-web] prompt completion handler failed:",a instanceof Error?a.message:a)}),await k,null}finally{b()}}case"abort":if(this.forceShutdownOnIdle=!0,this.resetIdleTimer(),this.extensionUiAbortController.abort(new DOMException("Extension UI cancelled by Stop","AbortError")),this.mcpPromptWait){let a=this.mcpPromptWait;a.controller.abort(),await a.done}try{return await this.withFinalIdleReset(()=>this.inner.abort()),null}finally{this.isRunning()||(this.forceShutdownOnIdle=!1)}case"get_state":{let a=this.inner.model,b=this.inner.getContextUsage();return{sessionId:this.inner.sessionId,sessionFile:this.inner.sessionFile??"",isStreaming:this.inner.isStreaming,isPromptRunning:this.pendingPromptCount>0,isBashRunning:this.inner.isBashRunning,isCompacting:this.inner.isCompacting,autoCompactionEnabled:this.inner.autoCompactionEnabled,autoRetryEnabled:this.inner.autoRetryEnabled,model:a?{id:a.id,provider:a.provider}:void 0,messageCount:0,pendingMessageCount:this.inner.pendingMessageCount,queuedMessages:{steering:[...this.inner.getSteeringMessages()],followUp:[...this.inner.getFollowUpMessages()]},contextUsage:b?{percent:b.percent,contextWindow:b.contextWindow,tokens:b.tokens}:null,totalActiveMs:(0,s.Q)(this.inner.sessionManager),systemPrompt:this.exactSystemPrompt?.()??(this.inner.agent.state?.systemPrompt||this.inner.systemPrompt||""),thinkingLevel:this.inner.agent.state?.thinkingLevel??"off",extensionStatuses:this.getExtensionStatuses(),extensionWidgets:this.getExtensionWidgets()}}case"set_model":{let{provider:b,modelId:c}=a;await this.inner.modelRuntime.refresh({allowNetwork:!1,providers:[b],signal:AbortSignal.timeout(15e3)}).catch(()=>void 0);let d=this.inner.modelRuntime.getModel(b,c);if(!d)throw this.chatOnly&&(0,o.S9)(this.inner.modelRuntime,b,c)?N(b,c):Error(`Model not found: ${b}/${c}`);let e=this.inner.model;if((0,j.isDeepStrictEqual)(e,d))return{id:d.id,provider:d.provider};let f=e?.provider===d.provider&&e.id===d.id,g=this.inner.agent.state?.thinkingLevel;return await this.inner.setModel(d),f&&g&&this.inner.setThinkingLevel(g),(0,l.kn)(),(0,r.mD)(),{id:d.id,provider:d.provider}}case"fork":{if(this.inner.isBashRunning)throw Error("Cannot fork while a shell command is running");let b=this.isSessionRunningForReplacement();return this.withSessionReplacement("fork",async()=>{let c,d,f=a.entryId,g=this.inner.sessionManager,i=this.inner.sessionFile;if(!g.isPersisted())return{cancelled:!0};if(!i)throw Error("Persisted session is missing a session file");let j=g.getEntry(f);if(!j)throw Error("Invalid entry ID for forking");let k=g.getSessionDir();if(j.parentId){if(!(0,h.existsSync)(i))throw Error(aj);let a=(d=e.SessionManager.open(i,k)).createBranchedSession(j.parentId);if(!a)throw Error("Failed to create forked session");c=a}else c=(d=e.SessionManager.create(g.getCwd(),k,{parentSession:i})).getSessionFile();if(!(0,h.existsSync)(c)){let a=d.getHeader();if(!a)throw Error("Forked session is missing a session header");let b=[a,...d.getEntries()].map(a=>JSON.stringify(a)).join("\n")+"\n";(0,h.writeFileSync)(c,b,{encoding:"utf8",flag:"wx"})}let l=d.getSessionId();return(0,r.O8)(l,c),(0,r.mD)(),b||await this.shutdownAfterSessionReplacement("fork"),{cancelled:!1,newSessionId:l}})}case"fork_branch":{if(this.inner.isBashRunning)throw Error("Cannot fork while a shell command is running");let b=a.entryId,c=this.inner.sessionManager,d=this.inner.sessionFile;if(!c.isPersisted())return{cancelled:!0};if(!d)throw Error("Persisted session is missing a session file");if(!c.getEntry(b))throw Error("Invalid entry ID for forking");if(!(0,h.existsSync)(d))throw Error(aj);let f=c.getSessionDir(),g=e.SessionManager.open(d,f).createBranchedSession(b);if(!g)throw Error("Failed to create forked session");let i=e.SessionManager.open(g,f).getSessionId();return(0,r.O8)(i,g),(0,r.mD)(),{cancelled:!1,newSessionId:i}}case"clone":{if(this.isSessionRunningForReplacement())throw Error("Cannot clone while the session is running");let b=this.inner.sessionManager,c=this.inner.sessionFile,d="string"==typeof a.leafId?a.leafId:b.getLeafId(),f=d&&b.getBranch(d).some(a=>"message"===a.type&&"assistant"===a.message.role);if(!b.isPersisted()||!d||!f||!c||!(0,h.existsSync)(c))return{cancelled:!0};return this.withSessionReplacement("clone",async()=>{let a=b.getSessionDir(),f=e.SessionManager.open(c,a).createBranchedSession(d);if(!f||!(0,h.existsSync)(f))throw Error("Failed to clone current session branch");let g=e.SessionManager.open(f,a).getSessionId();return(0,r.O8)(g,f),(0,r.mD)(),await this.shutdownAfterSessionReplacement("clone"),{cancelled:!1,newSessionId:g}})}case"navigate_tree":if(this.inner.isBashRunning)throw Error("Cannot navigate while a shell command is running");return this.navigateTreeKeepingToolSelection(a.targetId,{});case"set_thinking_level":{let b=a.level;return this.inner.setThinkingLevel(b),"xhigh"===b&&this.inner.model?.compat?.thinkingFormat==="deepseek"&&this.inner.agent?.state&&(this.inner.agent.state.thinkingLevel="xhigh"),(0,r.mD)(),null}case"compact":try{return await this.withFinalIdleReset(()=>this.inner.compact(a.customInstructions))}finally{(0,r.mD)()}case"set_session_name":{let b=a.name?.trim();if(!b)throw Error("Session name cannot be empty");return this.inner.setSessionName(b),(0,r.mD)(),null}case"get_session_stats":return{...this.inner.getSessionStats(),sessionName:this.inner.sessionManager.getSessionName()};case"get_last_assistant_text":return{text:this.inner.getLastAssistantText()??""};case"set_auto_compaction":return this.inner.setAutoCompactionEnabled(a.enabled),null;case"clear_queue":return this.inner.clearQueue();case"steer":{let b=a.images;return await this.inner.steer(a.message,b?.length?b:void 0),null}case"follow_up":{let b=a.images;return await this.inner.followUp(a.message,b?.length?b:void 0),null}case"get_tools":{let a=this.inner.getAllTools().filter(a=>"hidden"!==a.exposure),b=new Set(this.inner.getActiveToolNames()),c=new Map((this.inner.agent.state?.tools??[]).map(a=>[a.name,a.description])),d=Reflect.get(this.inner,"_hiddenDeclarations"),e=d instanceof Set?d:new Set;return a.map(a=>({...a,description:c.get(a.name)??a.description,active:b.has(a.name),declarationHidden:e.has(a.name)}))}case"get_commands":{let a=[];for(let b of this.inner.extensionRunner.getRegisteredCommands())a.push({name:b.invocationName,description:b.description,source:"extension",sourceInfo:b.sourceInfo});for(let b of this.inner.promptTemplates)a.push({name:b.name,description:b.description,source:"prompt",sourceInfo:b.sourceInfo});for(let b of this.inner.resourceLoader.getSkills().skills)a.push({name:`skill:${b.name}`,description:b.description,source:"skill",sourceInfo:b.sourceInfo});return{commands:a}}case"set_tools":{let b=a.toolNames;return this.setActiveToolSelection(b),null}case"reload":{if(this.isSessionRunningForReplacement())throw Error("Wait for the current response to finish before reloading.");this.extensionUiAbortController.signal.aborted&&(this.extensionUiAbortController=new AbortController);let a=this.inner.getActiveToolNames();return await this.waitForExtensionsBound(),this.extensionStatuses.clear(),this.resetExtensionWidgetsForReload(),this.syncProjectTrust(),await this.inner.reload(),this.setActiveToolSelection(a),"function"!=typeof this.inner.bindExtensions&&this.inner.extensionRunner.setUIContext?.(this.createExtensionUiContext(),"rpc"),(0,l.kn)(),(0,m.nx)(),{success:!0}}case"abort_compaction":return this.inner.abortCompaction(),null;case"extension_ui_response":return this.resolveExtensionUiResponse(a),null;case"extension_ui_input":return this.handleExtensionUiInput(a.id,a.data),null;case"set_auto_retry":return this.inner.setAutoRetryEnabled(a.enabled),null;case"bash":{if(this.pendingPromptCount>0||this.inner.isStreaming||this.inner.isCompacting||this.inner.isBashRunning)throw Error("Cannot run a shell command while the session is busy");let b=this.inner.executeBash(a.command,void 0,{excludeFromContext:a.excludeFromContext,operations:(0,q.J1)({shellPath:this.inner.settingsManager.getShellPath()})});try{let a=await b;return this.persistBashOnlySession(),a}finally{this.resetIdleTimer(),(0,r.mD)()}}case"abort_bash":return this.forceShutdownOnIdle=!0,this.resetIdleTimer(),this.inner.abortBash(),null;default:throw Error(`Unsupported command: ${b}`)}}finally{d&&(this.activeMutatingCommands=Math.max(0,this.activeMutatingCommands-1))}}disposeMcpHost(){if(!this.mcpHostDisposed){this.mcpHostDisposed=!0;try{this.mcpHost?.dispose()}catch(a){console.error("[pi-web] MCP host dispose failed:",a instanceof Error?a.message:a)}}}destroy(){if(!this._alive)return;for(let a of(this._alive=!1,this.disposeMcpHost(),this.emit({type:"session_shutdown"}),this.idleTimer&&clearTimeout(this.idleTimer),this.inner.isBashRunning&&this.inner.abortBash(),this.unsubscribe?.(),this.pendingUiResponses.values()))a.cancel();for(let a of Array.from(this.activeCustomUis.keys()))this.closeCustomUi(a,void 0);this.pendingUiResponses.clear(),this.pendingUiRequests.clear(),this.activeToolEvents.clear(),this.clearExtensionWidgets(!1);let a=()=>{try{this.inner.dispose()}finally{this.onDestroyCallback?.(),this.resolveDisposed()}};if(this.sessionShutdownEmitted)return void a();this.sessionShutdownEmitted=!0;let b=this.inner.extensionRunner?.emit;"function"!=typeof b?a():this.emitSessionShutdown(b).catch(a=>{console.error("[pi-web] session_shutdown before dispose failed:",a instanceof Error?a.message:a)}).finally(a)}async shutdown(){return this.shutdownPromise?this.shutdownPromise:this._alive?(this.closing=!0,this.shutdownPromise=(async()=>{try{try{await this.waitForExtensionsBound()}catch(a){console.error("[pi-web] extension binding failed before session shutdown:",a instanceof Error?a.message:a)}if(this.disposeMcpHost(),!this.sessionShutdownEmitted){this.sessionShutdownEmitted=!0;let a=this.inner.extensionRunner?.emit;"function"==typeof a&&await this.emitSessionShutdown(a)}}finally{this.destroy()}})(),this.shutdownPromise):void 0}async emitSessionShutdown(a){let b,c=new Promise(a=>{b=setTimeout(()=>a("timeout"),ah),b.unref?.()}),d=(async()=>(await a.call(this.inner.extensionRunner,{type:"session_shutdown",reason:"quit"}),"handled"))();try{await Promise.race([d,c])==="timeout"&&console.warn(`[pi-web] extensions did not finish session_shutdown for session ${this.sessionId} within ${ah} ms; disposing it anyway`)}finally{clearTimeout(b)}}resolveExtensionUiResponse(a){let b=this.pendingUiResponses.get(a.id);b&&b.resolve(a)}getExtensionStatuses(){return Array.from(this.extensionStatuses,([a,b])=>({key:a,text:b}))}getExtensionWidgets(){return Array.from(this.extensionWidgets.values())}nextExtensionWidgetGeneration(a){let b=(this.extensionWidgetGenerations.get(a)??0)+1;return this.extensionWidgetGenerations.set(a,b),b}disposeExtensionWidgetComponent(a){if(!a||"object"!=typeof a&&"function"!=typeof a)return;let b=a.dispose;if("function"==typeof b)try{b.call(a)}catch{}}emitExtensionWidgetClear(a){this.emit({type:"extension_ui_request",id:(0,g.randomUUID)(),method:"setWidget",widgetKey:a,widgetLines:void 0,widgetPlacement:void 0})}clearExtensionWidget(a,b=!0){let c=this.nextExtensionWidgetGeneration(a),d=this.activeExtensionWidgets.get(a);return this.activeExtensionWidgets.delete(a),this.extensionWidgets.delete(a),d&&this.disposeExtensionWidgetComponent(d.component),this.extensionWidgetGenerations.get(a)!==c||b&&this.emitExtensionWidgetClear(a),c}clearExtensionWidgets(a){for(let b of new Set([...this.extensionWidgets.keys(),...this.activeExtensionWidgets.keys()]))this.clearExtensionWidget(b,a)}resetExtensionWidgetsForReload(){this.extensionWidgetsResetting=!0;try{for(let a of[...this.activeExtensionWidgets.keys()])this.clearExtensionWidget(a);this.extensionWidgets.clear()}finally{this.extensionWidgetsResetting=!1}}emitExtensionWidgetError(a,b){this.emit({type:"extension_error",extensionPath:`extension-widget:${a}`,event:"setWidget",error:b instanceof Error?b.message:String(b)})}failExtensionWidget(a,b,c,d,e){if(this.extensionWidgetGenerations.get(a)!==b)return void this.disposeExtensionWidgetComponent(e);let f=this.activeExtensionWidgets.get(a),g=!d;f?.generation===b?(g=f.rendered||!f.clearEmitted,this.activeExtensionWidgets.delete(a),this.disposeExtensionWidgetComponent(f.component)):this.disposeExtensionWidgetComponent(e),this.extensionWidgetGenerations.get(a)!==b||(this.extensionWidgets.delete(a),g&&this.emitExtensionWidgetClear(a)),this.emitExtensionWidgetError(a,c)}renderExtensionWidget(a){let b;if(this.activeExtensionWidgets.get(a.key)!==a||this.extensionWidgetGenerations.get(a.key)!==a.generation)return;try{b=a.component.render(w.p1)}catch(b){this.failExtensionWidget(a.key,a.generation,b,a.clearEmitted);return}if(!Array.isArray(b)||!b.every(a=>"string"==typeof a))return void this.failExtensionWidget(a.key,a.generation,Error("Extension widget render must return string[]"),a.clearEmitted);if(this.activeExtensionWidgets.get(a.key)!==a||this.extensionWidgetGenerations.get(a.key)!==a.generation)return;let c=b;this.extensionWidgets.set(a.key,{key:a.key,lines:c,placement:a.placement}),a.rendered=!0,this.emit({type:"extension_ui_request",id:(0,g.randomUUID)(),method:"setWidget",widgetKey:a.key,widgetLines:c,widgetPlacement:a.placement})}setExtensionWidgetFactory(a,b,c){let d,e=this.extensionWidgets.has(a)||this.activeExtensionWidgets.has(a),f=this.clearExtensionWidget(a,e);if(this.extensionWidgetGenerations.get(a)!==f)return;let g=(0,w.TQ)(()=>{let b=this.activeExtensionWidgets.get(a);b?.generation===f&&this.renderExtensionWidget(b)},w.p1);try{d=b(g,ap)}catch(b){this.failExtensionWidget(a,f,b,e);return}if(this.extensionWidgetGenerations.get(a)!==f)return void this.disposeExtensionWidgetComponent(d);if(!d||"object"!=typeof d&&"function"!=typeof d||"function"!=typeof d.render)return void this.failExtensionWidget(a,f,Error("Extension widget factory must return a component with render(width)"),e,d);let h={key:a,component:d,placement:c?.placement??"aboveEditor",generation:f,clearEmitted:e,rendered:!1};this.activeExtensionWidgets.set(a,h),this.renderExtensionWidget(h)}getCustomUiWidth(a){if(!a||"object"!=typeof a)return w.p1;let b=a.overlayOptions,c="function"==typeof b?b():b;if(!c||"object"!=typeof c)return w.p1;let d=c.width;return"number"==typeof d&&Number.isFinite(d)?Math.max(40,Math.min(140,Math.round(d))):92}emitCustomUiRender(a,b){let c;try{c=b.component.render(b.width)}catch(a){c=[`Extension custom UI render failed: ${a instanceof Error?a.message:String(a)}`]}let d={type:"extension_ui_request",id:a,method:"custom",lines:c};this.pendingUiRequests.set(a,d),this.emit(d)}closeCustomUi(a,b){let c=this.activeCustomUis.get(a);if(c&&!c.settled){c.settled=!0,this.activeCustomUis.delete(a),this.pendingUiRequests.delete(a);try{c.component.dispose?.()}catch{}this.emit({type:"extension_ui_request",id:a,method:"custom",lines:[],closed:!0}),c.resolve(b)}}handleExtensionUiInput(a,b){let c=this.activeCustomUis.get(a);if(c&&"string"==typeof b)try{c.component.handleInput?.(b),this.activeCustomUis.has(a)&&this.emitCustomUiRender(a,c)}catch(b){this.closeCustomUi(a,void 0),this.emit({type:"extension_error",extensionPath:`custom-ui:${a}`,event:"custom_ui_input",error:b instanceof Error?b.message:String(b)})}}requestExtensionCustomUi(a,b){if("function"!=typeof a)return Promise.resolve(void 0);let c=this.extensionUiAbortController.signal;if(c.aborted)return Promise.reject(c.reason);let d=(0,g.randomUUID)(),e=this.getCustomUiWidth(b);return new Promise((b,f)=>{let g=!1,h=(0,w.TQ)(()=>{let a=this.activeCustomUis.get(d);a&&this.emitCustomUiRender(d,a)},e),i=a=>{g||(g=!0,c.removeEventListener("abort",k),c.aborted?f(c.reason):b(a))},j=a=>{this.activeCustomUis.has(d)?this.closeCustomUi(d,a):i(a)},k=()=>j(void 0);c.addEventListener("abort",k,{once:!0}),Promise.resolve().then(()=>g?void 0:a(h,ap,aq,j)).then(a=>{if(g){try{a?.dispose?.()}catch{}return}if(!a||"object"!=typeof a||"function"!=typeof a.render)return void i(void 0);let b={component:a,width:e,resolve:a=>i(a),settled:!1};this.activeCustomUis.set(d,b),this.emitCustomUiRender(d,b)}).catch(a=>{g||(this.emit({type:"extension_error",extensionPath:`custom-ui:${d}`,event:"custom_ui",error:a instanceof Error?a.message:String(a)}),i(void 0))})})}requestExtensionUi(a,b,c,d,e){if(e?.aborted)return Promise.resolve(b);let f=this.extensionUiAbortController.signal;if(f.aborted)return Promise.reject(f.reason);let h=e?AbortSignal.any([e,f]):f,i=(0,g.randomUUID)(),j={type:"extension_ui_request",id:i,...a,...d?{timeout:d,expiresAt:Date.now()+d}:{}};return new Promise((a,e)=>{let g,k=!1,l=()=>{g&&clearTimeout(g),h.removeEventListener("abort",n),this.pendingUiRequests.delete(i),this.pendingUiResponses.delete(i),this.emit({type:"extension_ui_closed",id:i})},m=b=>{k||(k=!0,l(),f.aborted?e(f.reason):a(b))},n=()=>m(b);d&&(g=setTimeout(()=>m(b),d)),h.addEventListener("abort",n,{once:!0}),this.pendingUiRequests.set(i,j),this.pendingUiResponses.set(i,{resolve:a=>m(c(a)),cancel:()=>m(b)}),this.emit(j)})}createExtensionUiContext(){return{select:(a,b,c)=>this.requestExtensionUi({method:"select",title:a,options:b,...c?.timeout?{timeout:c.timeout}:{}},void 0,a=>"value"in a?a.value:void 0,c?.timeout,c?.signal),confirm:(a,b,c)=>this.requestExtensionUi({method:"confirm",title:a,message:b,...c?.timeout?{timeout:c.timeout}:{}},!1,a=>"confirmed"in a&&a.confirmed,c?.timeout,c?.signal),input:(a,b,c)=>this.requestExtensionUi({method:"input",title:a,...void 0!==b?{placeholder:b}:{},...c?.timeout?{timeout:c.timeout}:{}},void 0,a=>"value"in a?a.value:void 0,c?.timeout,c?.signal),editor:(a,b,c)=>this.requestExtensionUi({method:"editor",title:a,...void 0!==b?{prefill:b}:{},...c?.timeout?{timeout:c.timeout}:{}},void 0,a=>"value"in a?a.value:void 0,c?.timeout,c?.signal),notify:(a,b)=>{this.emit({type:"extension_ui_request",id:(0,g.randomUUID)(),method:"notify",message:a,notifyType:b})},onTerminalInput:()=>()=>{},setStatus:(a,b)=>{void 0===b?this.extensionStatuses.delete(a):this.extensionStatuses.set(a,b),this.emit({type:"extension_ui_request",id:(0,g.randomUUID)(),method:"setStatus",statusKey:a,statusText:b})},setWorkingMessage:()=>{},setWorkingVisible:()=>{},setWorkingIndicator:()=>{},setHiddenThinkingLabel:()=>{},setWidget:(a,b,c)=>{if(!this._alive||this.extensionWidgetsResetting)return;if("function"==typeof b)return void this.setExtensionWidgetFactory(a,b,c);if(void 0!==b&&!Array.isArray(b))return;if(void 0===b)return void this.clearExtensionWidget(a);let d=this.activeExtensionWidgets.has(a)?this.clearExtensionWidget(a):this.nextExtensionWidgetGeneration(a);this.extensionWidgetGenerations.get(a)===d&&(this.extensionWidgets.set(a,{key:a,lines:b,placement:c?.placement??"aboveEditor"}),this.emit({type:"extension_ui_request",id:(0,g.randomUUID)(),method:"setWidget",widgetKey:a,widgetLines:b,widgetPlacement:c?.placement}))},setFooter:()=>{},setHeader:()=>{},setTitle:a=>{this.emit({type:"extension_ui_request",id:(0,g.randomUUID)(),method:"setTitle",title:a})},custom:(a,b)=>this.requestExtensionCustomUi(a,b),pasteToEditor:a=>{this.emit({type:"extension_ui_request",id:(0,g.randomUUID)(),method:"set_editor_text",text:a})},setEditorText:a=>{this.emit({type:"extension_ui_request",id:(0,g.randomUUID)(),method:"set_editor_text",text:a})},getEditorText:()=>"",addAutocompleteProvider:()=>{},setEditorComponent:()=>{},getEditorComponent:()=>void 0,get theme(){return ap},getAllThemes:()=>[],getTheme:()=>void 0,setTheme:()=>({success:!1,error:"Theme switching is not supported in Pi Web extension UI yet"}),getToolsExpanded:()=>!1,setToolsExpanded:()=>{}}}createExtensionCommandContextActions(){return{waitForIdle:async()=>{let a=this.inner.agent;await a.waitForIdle?.()},newSession:async()=>({cancelled:!0}),fork:async()=>({cancelled:!0}),navigateTree:(a,b)=>this.navigateTreeKeepingToolSelection(a,{summarize:b?.summarize}),switchSession:async()=>({cancelled:!0}),reload:async()=>{let a=this.inner.isStreaming?"Wait for the current response to finish before reloading.":this.inner.isCompacting?"Wait for compaction to finish before reloading.":null;a?this.emit({type:"extension_ui_request",id:(0,g.randomUUID)(),method:"notify",notifyType:"warning",message:a}):(this.extensionStatuses.clear(),this.resetExtensionWidgetsForReload(),this.syncProjectTrust(),await this.inner.reload({beforeSessionStart:()=>{this.inner.extensionRunner.setUIContext?.(this.createExtensionUiContext(),"rpc")}}),(0,m.nx)())}}}syncProjectTrust(){let a=(0,t.Y1)(this.cwd,(0,e.getAgentDir)());this.inner.settingsManager.setProjectTrusted(a.trusted)}}function P(){if(!globalThis.__piSessions){globalThis.__piSessions=new Map;let a=()=>{let a=Array.from(globalThis.__piSessions?.values()??[]);Promise.allSettled(a.map(a=>a.shutdown()))};process.once("exit",()=>globalThis.__piSessions?.forEach(a=>a.destroy())),process.once("SIGINT",a),process.once("SIGTERM",a)}return globalThis.__piSessions}function Q(a){let b=P(),c=a.sessionId;a.sessionFile&&(0,r.O8)(c,a.sessionFile),a.onDestroy(()=>{b.get(c)===a&&b.delete(c)});let d=b.get(c);d&&d!==a&&"function"==typeof d.onDestroy&&d.onDestroy(()=>{}),b.set(c,a),a.start(),a.isChatOnly()||a.beginExtensionBinding()}let at=(0,A.s)({getSession:a=>P().get(a),registerSession:(a,b)=>{let c=new as(a,{...b?.exactSystemPrompt!==void 0?{exactSystemPrompt:b.exactSystemPrompt}:{},chatOnly:b?.chatOnly,suppressCompletionNotifications:!0,...b?.mcpHost?{mcpHost:b.mcpHost}:{}});return Q(c),c},reopenSession:async(a,b)=>(await ae(a,b,void 0)).session,resolveSessionPath:r.os,invalidateSessionList:r.mD,isBuiltInSubagentsEnabled:B.N});function R(a){return at.get(a)}function S(a,b){return at.steer(a,b)}function T(a){return at.abort(a)}function U(){return globalThis.__piStartLocks||(globalThis.__piStartLocks=new Map),globalThis.__piStartLocks}let au=new WeakMap;function V(a){let b=P().get(a);if(!b||b.isAlive()||"function"!=typeof b.waitUntilDisposed)return null;let c=au.get(b);if(!c){let d={done:!1,promise:Promise.resolve()};d.promise=b.waitUntilDisposed(ah+1e3).then(b=>{b||console.warn(`[pi-web] session ${a} is still shutting down; starting it again anyway`)}).finally(()=>{d.done=!0}),au.set(b,d),c=d}return c.done?null:c.promise}function W(a){let b=(0,i.resolve)(a);try{return(0,h.realpathSync)(b)}catch{return b}}function X(){return globalThis.__piStartingSessionCwds||(globalThis.__piStartingSessionCwds=new Map),globalThis.__piStartingSessionCwds}function Y(a){return P().get(a)}async function Z(a,b,c){let d=void 0===c?void 0:(0,L.vw)(c),f=Y(a);if(!f?.isAlive()){if(!b)throw Error("Session not found");let f=V(a)??U().get(a);if(f)return await f.catch(()=>void 0),Z(a,b,c);let g=e.SessionManager.open(b,void 0);if((0,z.ph)(g.getEntries()))throw Error("Subagent tool selection is fixed by its profile");void 0===d?(0,L.lp)(g):(0,L.b5)(g,d),(0,r.mD)();let h=await ae(a,b,void 0);return{session:h.session,sessionId:h.realSessionId,recreated:!1}}if(f.isRunning())throw Error("Cannot change tools while the session is running");if((0,z.ph)(f.inner.sessionManager.getEntries()))throw Error("Subagent tool selection is fixed by its profile");let i="function"==typeof f.isChatOnly&&"function"==typeof f.setActiveToolSelection,j=void 0===d||!i||f.isChatOnly()!==(0===d.length);if(void 0===d?(0,L.lp)(f.inner.sessionManager):(0,L.b5)(f.inner.sessionManager,d),(0,r.mD)(),void 0!==d&&!j)return f.setActiveToolSelection(d),{session:f,sessionId:a,recreated:!1};let k=f.sessionFile&&(0,h.existsSync)(f.sessionFile)?f.sessionFile:void 0,l=f.cwd,m=f.inner.model,n=f.inner.agent.state?.thinkingLevel;if(await f.shutdown(),k){let b=await ae(a,k,void 0);return{session:b.session,sessionId:b.realSessionId,recreated:!0}}let o=await ae(`__recreate__${(0,g.randomUUID)()}`,"",l,{...void 0!==d?{toolNames:d}:{},...m?{initialModel:{provider:m.provider,modelId:m.id}}:{},allowInitialModelFallback:!0,...n&&am.has(n)?{thinkingLevel:n}:{}});return{session:o.session,sessionId:o.realSessionId,recreated:!0}}function $(a={}){let b=[];for(let c of P().values()){if("function"!=typeof c.isAlive||!c.isAlive())continue;let d=c.inner?.sessionManager;if(!d)continue;let e=d.getHeader(),f=d.getEntries(),g=f.filter(a=>"message"===a.type),i=g.find(a=>"user"===a.message.role),j=d.getSessionFile()??c.sessionFile,k=!!(j&&(0,h.existsSync)(j)),l=(0,z.$u)(f,e?.id??c.sessionId,j??"");if(!k&&!a.includeTransient&&(!c.isRunning()||!i))continue;let m=e?.timestamp??f[0]?.timestamp??new Date().toISOString(),n=new Date(m).getTime(),o=Number.isNaN(n)?Date.now():n;for(let a of g){let b=function(a){if("user"!==a.message.role&&"assistant"!==a.message.role)return;if("number"==typeof a.message.timestamp)return a.message.timestamp;let b=new Date(a.timestamp).getTime();return Number.isNaN(b)?void 0:b}(a);void 0!==b&&(o=Math.max(o,b))}b.push({path:j??"",id:e?.id??c.sessionId,cwd:e?.cwd??c.cwd,name:d.getSessionName(),created:m,modified:new Date(o).toISOString(),messageCount:g.length,firstMessage:(0,r.nZ)(i&&function(a){if("bashExecution"===a.message.role)return"";let b=a.message.content;return"string"==typeof b?b:b.map(a=>"text"===a.type?a.text:"").filter(Boolean).join(" ")}(i)||"(no messages)"),...l?{parentSessionId:l.parentSessionId,relation:{kind:"subagent",parentSessionId:l.parentSessionId,profile:l.profile,description:l.description,status:c.isRunning()?"running":l.status}}:{},transient:!k})}return b}function _(a){let b=W(a);return!!X().has(b)||Array.from(P().values()).some(a=>W(a.cwd)===b&&a.isRunning())}async function aa(a){let b=W(a),c=Array.from(P().values()).filter(a=>W(a.cwd)===b);return await Promise.all(c.map(a=>a.shutdown())),c.length}function ab(){let a=new Set;for(let[b,c]of P())c.isRunning()&&a.add(c.sessionId||b);return[...a]}function ac(){let a=new Set;for(let[b,c]of P())c.isAwaitingInput()&&a.add(c.sessionId||b);return[...a]}function ad(){let a=new Set;for(let[b,c]of P())c.isRunning()&&c.hasSuppressedCompletionNotifications()&&a.add(c.sessionId||b);return[...a]}async function ae(a,b,c,d={}){let f,g,h,{initialModel:i,allowInitialModelFallback:j,thinkingLevel:k}=d,l=void 0===d.toolNames?void 0:(0,L.vw)(d.toolNames),m=P(),p=U(),s=m.get(a);if(s?.isAlive())return{session:s,realSessionId:a};let v=p.get(a);if(v)return v;let w=V(a);if(w){let e=w.then(()=>(p.get(a)===e&&p.delete(a),ae(a,b,c,d)));return p.set(a,e),e}if(b)f=e.SessionManager.open(b,void 0);else{if(!c)throw Error("cwd is required for a new session");f=e.SessionManager.create(c,void 0)}let A=f.getCwd(),C=f.getEntries(),G=b&&(0,z.e0)(C),J=b?(0,z.ph)(C):null;if(G&&!J)throw Error("Invalid subagent resource snapshot");let K=J?void 0:(0,L.dS)(C),M=J?.tools??K??l;J||void 0!==K||void 0===l||(0,L.b5)(f,l);let R=!!(J?.loadExtensions||J?.loadSkills||J?.codemode||J?.mcp),S=M?.length===0&&!R,T=(g=X(),h=W(A),g.set(h,(g.get(h)??0)+1),()=>{let a=(g.get(h)??1)-1;a>0?g.set(h,a):g.delete(h)}),Y=(async()=>{let a;S||(0,e.initTheme)();let b=(0,e.getAgentDir)();J||void 0===M||(a=0===M.length?[]:void 0);let c=J?R?(0,t.Fk)(A,b):void 0:S?void 0:(0,t.Fk)(A,b),d=e.SettingsManager.create(A,b),g={},h=(0,E.Q)(()=>g.current?.()),l=J||S?void 0:await (0,F.n7)({agentDir:b}),m=J?.codemode?await (0,F.Db)({agentDir:b,cwd:A,projectTrusted:()=>d.isProjectTrusted()}):void 0,p=J?.mcp?await (0,F.M7)({agentDir:b,cwd:A,projectTrusted:()=>d.isProjectTrusted(),codemode:!0===J.codemode}):void 0,s=J?(0,I.X)({loadSkills:J.loadSkills,skills:J.skills,exactSystemPrompt:J.exactSystemPrompt??(S?J.appendSystemPrompt[0]??"":void 0)}):void 0,v=[...m?[m]:[],...p&&J?[...p.extensions,(0,H.PV)(()=>J)]:[],...s?.loaderOptions.extensionFactories??[]],w=await (0,e.createAgentSessionServices)({cwd:A,agentDir:b,settingsManager:d,resourceLoaderOptions:J?{...(0,z._R)(J),...s.loaderOptions,...v.length>0?{extensionFactories:v}:{},noPromptTemplates:!0,noThemes:!0,noContextFiles:!0,...S?{systemPrompt:" ",systemPromptOverride:()=>void 0}:{},appendSystemPrompt:J.appendSystemPrompt}:S?{...D.M,extensionFactories:[h]}:{extensionFactories:[...l?.extensions??[],(0,H._Q)(),(0,q.eD)({cwd:A,settings:d}),(0,x.Vj)(at.extensionRuntime,()=>(0,z.IR)(A),B.N)],extensionsOverride:a=>(0,y.r8)((0,q.Ds)((0,x.U6)(a)))},...c?{resourceLoaderReloadOptions:c}:{}});if(J?.codemode&&!w.resourceLoader.getExtensions().extensions.some(a=>a.tools.has("codemode")))throw Error("Code mode is unavailable: builtin:codemode was not registered");let C=w.settingsManager.getEnabledModels(),G=await (0,n.py)(w.modelRuntime,C),K=i&&!w.modelRuntime.getModel(i.provider,i.modelId)?(0,o.S9)(w.modelRuntime,i.provider,i.modelId):void 0;if(S&&K&&!j)throw N(K.provider,K.id);let L=i&&!K&&(!j||G.visible.some(a=>a.provider===i.provider&&a.id===i.modelId))?i:void 0,P=w.settingsManager.getDefaultProvider(),T=w.settingsManager.getDefaultModel(),U=P&&T?{provider:P,modelId:T}:void 0,V=f.getBranch(),W=V.some(a=>"message"===a.type&&"system"!==a.message.role),X=W?(0,r.Vg)(V):null,Y=X?w.modelRuntime.getModel(X.provider,X.modelId):void 0,Z=W?null:(0,n.IR)(G,{...L?{requestedModel:L}:{},...U?{defaultModel:U}:{},...k?{thinkingLevel:k}:{}}),$=Y&&w.modelRuntime.hasConfiguredAuth(Y.provider)?Y:Z?.model,_=!!(Z?.model&&U&&Z.model.provider===U.provider&&Z.model.id===U.modelId&&(G.scopedModels.length>0||!C?.some(a=>a.trim()))),aa=W||S||!K&&(L||_)?void 0:await (0,o.je)(w.modelRuntime,C,K?{requestedModel:{provider:K.provider,modelId:K.id}}:U?{defaultModel:U}:{}),ab=W?X&&!Y?(0,o.S9)(w.modelRuntime,X.provider,X.modelId):void 0:K??aa?.model,ac=ab?W?V.findLast(a=>"thinking_level_change"===a.type)?.thinkingLevel??w.settingsManager.getDefaultThinkingLevel()??an:k??aa?.thinkingLevelPin??w.settingsManager.getModelThinkingLevel(ab.provider,ab.id)??w.settingsManager.getDefaultThinkingLevel()??an:void 0,ad=S?ab??(!W&&P&&T?(0,o.S9)(w.modelRuntime,P,T):void 0):void 0,{session:ae}=await (0,e.createAgentSessionFromServices)({services:w,sessionManager:f,...$?{model:$}:{},...Z?.thinkingLevel?{thinkingLevel:Z.thinkingLevel}:{},...G.scopedModels.length>0?{scopedModels:[...G.scopedModels]}:{},...J?(0,z.AO)(J):void 0!==a?{tools:a}:{}});if(!J&&!S){let a=ae.getActiveToolNames();ae.setActiveToolsByName(O(ae,M??a,a))}s?.setActiveToolsGetter(()=>ae.getActiveToolNames());let af=J?s.getExactSystemPrompt:S?()=>(0,D.c)(ae.resourceLoader.getAgentsFiles().agentsFiles):void 0;g.current=af;let ag=l?.mcpHost??p?.mcpHost,ah=new as(ae,{exactSystemPrompt:af,chatOnly:S,onAgentRunComplete:(a,b)=>{(0,u.lB)(a,b).catch(a=>{console.error("[pi-web] failed to send completion push:",a instanceof Error?a.message:a)})},suppressCompletionNotifications:!!J,...ag?{mcpHost:ag}:{},...ad?{chatOnlyExtensionModel:ad}:{}}),ai=ae.sessionId;if(Q(ah),!S){if(ab)try{await ah.waitUntilReady(),await ah.send({type:"set_model",provider:ab.provider,modelId:ab.id}),ac&&await ah.send({type:"set_thinking_level",level:ac})}catch(a){console.error(`[pi-web] could not switch to ${ab.provider}/${ab.id}:`,a instanceof Error?a.message:a)}ah.waitUntilReady().then(()=>(0,o.vd)(ae.modelRuntime)).catch(()=>void 0)}return{session:ah,realSessionId:ai}})().finally(()=>{p.delete(a),T()});return p.set(a,Y),Y}d()}catch(a){d(a)}})},39172:(a,b,c)=>{c.d(b,{YI:()=>d});function d(a){switch(a.method){case"select":case"confirm":case"input":case"editor":return!0;case"custom":return!0!==a.closed;default:return!1}}},42350:(a,b,c)=>{c.d(b,{mO:()=>d});function d(a,b){return b&&0!==b.length?{...a,transcriptNotices:[...b]}:a}},44230:(a,b,c)=>{c.d(b,{b5:()=>k,dS:()=>i,lp:()=>l,vw:()=>j});var d=c(93551);let e="pi-web:tool-selection",f=new Set(d.C1),g=Symbol("cleared-tool-selection");function h(a){return"object"!=typeof a||null===a||Array.isArray(a)||1!==a.version?void 0:!0===a.cleared?g:!Array.isArray(a.tools)||a.tools.some(a=>"string"!=typeof a||!f.has(a))?void 0:[...new Set(a.tools)]}function i(a){for(let b=a.length-1;b>=0;b-=1){let c=a[b];if("custom"!==c.type||c.customType!==e)continue;let d=h(c.data);if(void 0!==d)return d===g?void 0:d}}function j(a){let b=h({version:1,tools:a});if(void 0===b||b===g)throw Error("toolNames must contain only built-in tool names");return b}function k(a,b){a.appendCustomEntry(e,{version:1,tools:[...b]})}function l(a){a.appendCustomEntry(e,{version:1,cleared:!0})}},55422:(a,b,c)=>{c.d(b,{Q:()=>d});function d(a){return{name:"pi-web-exact-system-prompt",hidden:!0,factory:b=>{b.on("before_agent_start",()=>{let b=a();return void 0===b?void 0:{systemPrompt:b}})}}}},68826:(a,b,c)=>{c.d(b,{Ox:()=>i,QG:()=>j,Wv:()=>h,jN:()=>l,vH:()=>k});var d=c(29021),e=c(33873),f=c(82738),g=c(51202);let h=8,i=524288;function j(a){let b=a?.contextWindow;if(!a||!b||b<0)return{};let c=Math.floor(4*b/10);return c<i?{maxBytes:c,model:`${a.provider}/${a.id}`}:{}}function k(a,b,c={}){let j=c.maxBytes??i;if(b.length>h)throw Error(`Agent input_files accepts at most ${h} files`);let l=(0,d.realpathSync)(a),m=new Set([l]),n=new TextDecoder("utf-8",{fatal:!0}),o=new Set,p=[],q=0;for(let h of b){let b,i;if(!h.trim())throw Error("Agent input_files paths must not be empty");try{b=(0,d.realpathSync)((0,e.resolve)(a,h))}catch{throw Error(`Agent input file does not exist: ${h}`)}if(!(0,f.o4)(b,m))throw Error(`Agent input file is outside the session cwd: ${h}`);if(!(0,d.statSync)(b).isFile())throw Error(`Agent input path is not a file: ${h}`);if(o.has(b))continue;o.add(b);let k=(0,d.readFileSync)(b);if((q+=k.byteLength)>j){let a=c.model?` for ${c.model}, about a tenth of its context window`:"";throw Error(`Agent input_files exceeds the ${j<1024?`${j}-byte`:`${Math.floor(j/1024)} KB`} total limit${a}. Pass fewer or smaller files, or name the paths in prompt if the subagent can read them.`)}try{i=n.decode(k)}catch{throw Error(`Agent input file is not valid UTF-8 text: ${h}`)}p.push({path:(0,g.W3)((0,e.relative)(l,b)),content:i})}return p}function l(a,b){if(0===b.length)return a;let c=b.map(a=>`<document path=${JSON.stringify(a.path)}>
13
13
  ${a.content}
14
14
  </document>`).join("\n\n");return`${a}
15
15
 
@@ -1 +1 @@
1
- globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/YXWav-5PFkxPJMeIuTSGb/_buildManifest.js","static/YXWav-5PFkxPJMeIuTSGb/_ssgManifest.js"],rootMainFiles:["static/chunks/webpack-7c23f465dcf1a516.js","static/chunks/72b1444f-dbce489fd03602d0.js","static/chunks/3316-7ad9b0183ce58d57.js","static/chunks/main-app-6d91b2e08db37fda.js"],rootMainFilesTree:{},pages:{"/_app":[]}};
1
+ globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/sN1YhVy-LPqPUdH9cLpTi/_buildManifest.js","static/sN1YhVy-LPqPUdH9cLpTi/_ssgManifest.js"],rootMainFiles:["static/chunks/webpack-7c23f465dcf1a516.js","static/chunks/72b1444f-dbce489fd03602d0.js","static/chunks/3316-7ad9b0183ce58d57.js","static/chunks/main-app-6d91b2e08db37fda.js"],rootMainFilesTree:{},pages:{"/_app":[]}};
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="en" translate="no" class="__variable_9e44ca notranslate"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover, interactive-widget=resizes-content"/><link rel="preload" href="/_next/static/media/7deddc85b7ffd1dc-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/ec14413c594b3356-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/9bcd6051db4f8890.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/0f5099659ba5f318.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/582426d6a91257d8.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/c99d24fe85e139cc.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-7c23f465dcf1a516.js"/><script src="/_next/static/chunks/72b1444f-dbce489fd03602d0.js" async=""></script><script src="/_next/static/chunks/3316-7ad9b0183ce58d57.js" async=""></script><script src="/_next/static/chunks/main-app-6d91b2e08db37fda.js" async=""></script><script src="/_next/static/chunks/app/layout-09edb2b4f71317e3.js" async=""></script><meta name="robots" content="noindex"/><meta name="next-size-adjust" content=""/><meta name="google" content="notranslate"/><title>404: This page could not be found.</title><meta name="theme-color" content="#ffffff" media="(prefers-color-scheme: light)"/><meta name="theme-color" content="#1a1a1a" media="(prefers-color-scheme: dark)"/><title>Pi Web</title><meta name="description" content="Pi Web interface for the pi coding agent"/><meta name="application-name" content="Pi Web"/><link rel="manifest" href="/manifest.webmanifest"/><meta name="format-detection" content="telephone=no"/><meta name="mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-title" content="Pi Web"/><meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/><link rel="icon" href="/favicon.ico?c16c14206ecd3374" type="image/x-icon" sizes="512x512"/><link rel="icon" href="/icons/icon-192.png" sizes="192x192" type="image/png"/><link rel="apple-touch-icon" href="/icons/apple-touch-icon.png" sizes="180x180" type="image/png"/><script>(function(){var t="auto";try{var s=localStorage.getItem("pi-theme");if(["auto","light","mist","lilac","sand","rose","dark","pine","dusk","ember","slate","contrast-light","contrast-dark","zenburn"].includes(s))t=s}catch(e){}if(t==="auto")t=window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light";var r=document.documentElement;r.dataset.theme=t;r.classList.toggle("dark",["dark","pine","dusk","ember","slate","contrast-dark","zenburn"].includes(t))})();</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body translate="no" class="notranslate"><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;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-7c23f465dcf1a516.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[91562,[],\"\"]\n3:I[88008,[],\"\"]\n4:I[39886,[\"7177\",\"static/chunks/app/layout-09edb2b4f71317e3.js\"],\"PwaRegistration\"]\n5:I[70659,[],\"OutletBoundary\"]\n6:\"$Sreact.suspense\"\n9:I[70659,[],\"ViewportBoundary\"]\nb:I[70659,[],\"MetadataBoundary\"]\nd:I[17794,[],\"default\",1]\n:HL[\"/_next/static/media/7deddc85b7ffd1dc-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/ec14413c594b3356-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/9bcd6051db4f8890.css\",\"style\"]\n:HL[\"/_next/static/css/0f5099659ba5f318.css\",\"style\"]\n:HL[\"/_next/static/css/582426d6a91257d8.css\",\"style\"]\n:HL[\"/_next/static/css/c99d24fe85e139cc.css\",\"style\"]\n8:X\n"])</script><script>self.__next_f.push([1,"0:{\"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/9bcd6051db4f8890.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/0f5099659ba5f318.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"2\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/582426d6a91257d8.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"3\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/c99d24fe85e139cc.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"translate\":\"no\",\"className\":\"__variable_9e44ca notranslate\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"meta\",null,{\"name\":\"google\",\"content\":\"notranslate\"}],[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"(function(){var t=\\\"auto\\\";try{var s=localStorage.getItem(\\\"pi-theme\\\");if([\\\"auto\\\",\\\"light\\\",\\\"mist\\\",\\\"lilac\\\",\\\"sand\\\",\\\"rose\\\",\\\"dark\\\",\\\"pine\\\",\\\"dusk\\\",\\\"ember\\\",\\\"slate\\\",\\\"contrast-light\\\",\\\"contrast-dark\\\",\\\"zenburn\\\"].includes(s))t=s}catch(e){}if(t===\\\"auto\\\")t=window.matchMedia(\\\"(prefers-color-scheme: dark)\\\").matches?\\\"dark\\\":\\\"light\\\";var r=document.documentElement;r.dataset.theme=t;r.classList.toggle(\\\"dark\\\",[\\\"dark\\\",\\\"pine\\\",\\\"dusk\\\",\\\"ember\\\",\\\"slate\\\",\\\"contrast-dark\\\",\\\"zenburn\\\"].includes(t))})();\"}}]]}],[\"$\",\"body\",null,{\"translate\":\"no\",\"className\":\"notranslate\",\"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\"}],[\"$\",\"$L4\",null,{}]]}]]}]]}],{\"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,[\"$\",\"$L5\",null,{\"children\":[\"$\",\"$6\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@7\"}]}]]}],{},null,false,null]},null,false,\"$8\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L9\",null,{\"children\":\"$La\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lb\",null,{\"children\":[\"$\",\"$6\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lc\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$d\",[]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"YXWav-5PFkxPJMeIuTSGb\"}\n"])</script><script>self.__next_f.push([1,"8:C\na:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, viewport-fit=cover, interactive-widget=resizes-content\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#ffffff\",\"media\":\"(prefers-color-scheme: light)\"}],[\"$\",\"meta\",\"3\",{\"name\":\"theme-color\",\"content\":\"#1a1a1a\",\"media\":\"(prefers-color-scheme: dark)\"}]]\n"])</script><script>self.__next_f.push([1,"e:I[38106,[],\"IconMark\"]\n7:null\nc:[[\"$\",\"title\",\"0\",{\"children\":\"Pi Web\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Pi Web interface for the pi coding agent\"}],[\"$\",\"meta\",\"2\",{\"name\":\"application-name\",\"content\":\"Pi Web\"}],[\"$\",\"link\",\"3\",{\"rel\":\"manifest\",\"href\":\"/manifest.webmanifest\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"meta\",\"4\",{\"name\":\"format-detection\",\"content\":\"telephone=no\"}],[\"$\",\"meta\",\"5\",{\"name\":\"mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"meta\",\"6\",{\"name\":\"apple-mobile-web-app-title\",\"content\":\"Pi Web\"}],[\"$\",\"meta\",\"7\",{\"name\":\"apple-mobile-web-app-status-bar-style\",\"content\":\"black-translucent\"}],[\"$\",\"link\",\"8\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?c16c14206ecd3374\",\"type\":\"image/x-icon\",\"sizes\":\"512x512\"}],[\"$\",\"link\",\"9\",{\"rel\":\"icon\",\"href\":\"/icons/icon-192.png\",\"sizes\":\"192x192\",\"type\":\"image/png\"}],[\"$\",\"link\",\"10\",{\"rel\":\"apple-touch-icon\",\"href\":\"/icons/apple-touch-icon.png\",\"sizes\":\"180x180\",\"type\":\"image/png\"}],[\"$\",\"$Le\",\"11\",{}]]\n"])</script></body></html>
1
+ <!DOCTYPE html><html lang="en" translate="no" class="__variable_9e44ca notranslate"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover, interactive-widget=resizes-content"/><link rel="preload" href="/_next/static/media/7deddc85b7ffd1dc-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/ec14413c594b3356-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/9bcd6051db4f8890.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/0f5099659ba5f318.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/582426d6a91257d8.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/c99d24fe85e139cc.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-7c23f465dcf1a516.js"/><script src="/_next/static/chunks/72b1444f-dbce489fd03602d0.js" async=""></script><script src="/_next/static/chunks/3316-7ad9b0183ce58d57.js" async=""></script><script src="/_next/static/chunks/main-app-6d91b2e08db37fda.js" async=""></script><script src="/_next/static/chunks/app/layout-19228ee6a08d83ea.js" async=""></script><meta name="robots" content="noindex"/><meta name="next-size-adjust" content=""/><meta name="google" content="notranslate"/><title>404: This page could not be found.</title><meta name="theme-color" content="#ffffff" media="(prefers-color-scheme: light)"/><meta name="theme-color" content="#1a1a1a" media="(prefers-color-scheme: dark)"/><title>Pi Web</title><meta name="description" content="Pi Web interface for the pi coding agent"/><meta name="application-name" content="Pi Web"/><link rel="manifest" href="/manifest.webmanifest"/><meta name="format-detection" content="telephone=no"/><meta name="mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-title" content="Pi Web"/><meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/><link rel="icon" href="/favicon.ico?c16c14206ecd3374" type="image/x-icon" sizes="512x512"/><link rel="icon" href="/icons/icon-192.png" sizes="192x192" type="image/png"/><link rel="apple-touch-icon" href="/icons/apple-touch-icon.png" sizes="180x180" type="image/png"/><script>(function(){var t="auto";try{var s=localStorage.getItem("pi-theme");if(["auto","light","mist","lilac","sand","rose","dark","pine","dusk","ember","slate","contrast-light","contrast-dark","zenburn"].includes(s))t=s}catch(e){}if(t==="auto")t=window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light";var r=document.documentElement;r.dataset.theme=t;r.classList.toggle("dark",["dark","pine","dusk","ember","slate","contrast-dark","zenburn"].includes(t))})();</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body translate="no" class="notranslate"><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;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-7c23f465dcf1a516.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[91562,[],\"\"]\n3:I[88008,[],\"\"]\n4:I[39886,[\"7177\",\"static/chunks/app/layout-19228ee6a08d83ea.js\"],\"PwaRegistration\"]\n5:I[70659,[],\"OutletBoundary\"]\n6:\"$Sreact.suspense\"\n9:I[70659,[],\"ViewportBoundary\"]\nb:I[70659,[],\"MetadataBoundary\"]\nd:I[17794,[],\"default\",1]\n:HL[\"/_next/static/media/7deddc85b7ffd1dc-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/ec14413c594b3356-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/9bcd6051db4f8890.css\",\"style\"]\n:HL[\"/_next/static/css/0f5099659ba5f318.css\",\"style\"]\n:HL[\"/_next/static/css/582426d6a91257d8.css\",\"style\"]\n:HL[\"/_next/static/css/c99d24fe85e139cc.css\",\"style\"]\n8:X\n"])</script><script>self.__next_f.push([1,"0:{\"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/9bcd6051db4f8890.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/0f5099659ba5f318.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"2\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/582426d6a91257d8.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"3\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/c99d24fe85e139cc.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"translate\":\"no\",\"className\":\"__variable_9e44ca notranslate\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"meta\",null,{\"name\":\"google\",\"content\":\"notranslate\"}],[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"(function(){var t=\\\"auto\\\";try{var s=localStorage.getItem(\\\"pi-theme\\\");if([\\\"auto\\\",\\\"light\\\",\\\"mist\\\",\\\"lilac\\\",\\\"sand\\\",\\\"rose\\\",\\\"dark\\\",\\\"pine\\\",\\\"dusk\\\",\\\"ember\\\",\\\"slate\\\",\\\"contrast-light\\\",\\\"contrast-dark\\\",\\\"zenburn\\\"].includes(s))t=s}catch(e){}if(t===\\\"auto\\\")t=window.matchMedia(\\\"(prefers-color-scheme: dark)\\\").matches?\\\"dark\\\":\\\"light\\\";var r=document.documentElement;r.dataset.theme=t;r.classList.toggle(\\\"dark\\\",[\\\"dark\\\",\\\"pine\\\",\\\"dusk\\\",\\\"ember\\\",\\\"slate\\\",\\\"contrast-dark\\\",\\\"zenburn\\\"].includes(t))})();\"}}]]}],[\"$\",\"body\",null,{\"translate\":\"no\",\"className\":\"notranslate\",\"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\"}],[\"$\",\"$L4\",null,{}]]}]]}]]}],{\"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,[\"$\",\"$L5\",null,{\"children\":[\"$\",\"$6\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@7\"}]}]]}],{},null,false,null]},null,false,\"$8\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L9\",null,{\"children\":\"$La\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lb\",null,{\"children\":[\"$\",\"$6\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lc\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$d\",[]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"sN1YhVy-LPqPUdH9cLpTi\"}\n"])</script><script>self.__next_f.push([1,"8:C\na:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, viewport-fit=cover, interactive-widget=resizes-content\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#ffffff\",\"media\":\"(prefers-color-scheme: light)\"}],[\"$\",\"meta\",\"3\",{\"name\":\"theme-color\",\"content\":\"#1a1a1a\",\"media\":\"(prefers-color-scheme: dark)\"}]]\n"])</script><script>self.__next_f.push([1,"e:I[38106,[],\"IconMark\"]\n7:null\nc:[[\"$\",\"title\",\"0\",{\"children\":\"Pi Web\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Pi Web interface for the pi coding agent\"}],[\"$\",\"meta\",\"2\",{\"name\":\"application-name\",\"content\":\"Pi Web\"}],[\"$\",\"link\",\"3\",{\"rel\":\"manifest\",\"href\":\"/manifest.webmanifest\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"meta\",\"4\",{\"name\":\"format-detection\",\"content\":\"telephone=no\"}],[\"$\",\"meta\",\"5\",{\"name\":\"mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"meta\",\"6\",{\"name\":\"apple-mobile-web-app-title\",\"content\":\"Pi Web\"}],[\"$\",\"meta\",\"7\",{\"name\":\"apple-mobile-web-app-status-bar-style\",\"content\":\"black-translucent\"}],[\"$\",\"link\",\"8\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?c16c14206ecd3374\",\"type\":\"image/x-icon\",\"sizes\":\"512x512\"}],[\"$\",\"link\",\"9\",{\"rel\":\"icon\",\"href\":\"/icons/icon-192.png\",\"sizes\":\"192x192\",\"type\":\"image/png\"}],[\"$\",\"link\",\"10\",{\"rel\":\"apple-touch-icon\",\"href\":\"/icons/apple-touch-icon.png\",\"sizes\":\"180x180\",\"type\":\"image/png\"}],[\"$\",\"$Le\",\"11\",{}]]\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-7c23f465dcf1a516.js"/><script src="/_next/static/chunks/72b1444f-dbce489fd03602d0.js" async=""></script><script src="/_next/static/chunks/3316-7ad9b0183ce58d57.js" async=""></script><script src="/_next/static/chunks/main-app-6d91b2e08db37fda.js" async=""></script><meta name="next-size-adjust" content=""/><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,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;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-7c23f465dcf1a516.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[91562,[],\"\"]\n3:I[88008,[],\"\"]\n4:I[70659,[],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[70659,[],\"ViewportBoundary\"]\na:I[70659,[],\"MetadataBoundary\"]\nc:I[17794,[],\"default\",1]\n7:X\n"])</script><script>self.__next_f.push([1,"0:{\"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\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"YXWav-5PFkxPJMeIuTSGb\"}\n"])</script><script>self.__next_f.push([1,"7:C\n9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\nb:[]\n"])</script></body></html>
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-7c23f465dcf1a516.js"/><script src="/_next/static/chunks/72b1444f-dbce489fd03602d0.js" async=""></script><script src="/_next/static/chunks/3316-7ad9b0183ce58d57.js" async=""></script><script src="/_next/static/chunks/main-app-6d91b2e08db37fda.js" async=""></script><meta name="next-size-adjust" content=""/><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,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;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-7c23f465dcf1a516.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[91562,[],\"\"]\n3:I[88008,[],\"\"]\n4:I[70659,[],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[70659,[],\"ViewportBoundary\"]\na:I[70659,[],\"MetadataBoundary\"]\nc:I[17794,[],\"default\",1]\n7:X\n"])</script><script>self.__next_f.push([1,"0:{\"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\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"sN1YhVy-LPqPUdH9cLpTi\"}\n"])</script><script>self.__next_f.push([1,"7:C\n9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\nb:[]\n"])</script></body></html>
@@ -0,0 +1 @@
1
+ <!DOCTYPE html><html lang="en" translate="no" class="__variable_9e44ca notranslate"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover, interactive-widget=resizes-content"/><link rel="preload" href="/_next/static/media/7deddc85b7ffd1dc-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/ec14413c594b3356-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/9bcd6051db4f8890.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/0f5099659ba5f318.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/582426d6a91257d8.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/c99d24fe85e139cc.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/49692dbfa6f26eeb.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-7c23f465dcf1a516.js"/><script src="/_next/static/chunks/72b1444f-dbce489fd03602d0.js" async=""></script><script src="/_next/static/chunks/3316-7ad9b0183ce58d57.js" async=""></script><script src="/_next/static/chunks/main-app-6d91b2e08db37fda.js" async=""></script><script src="/_next/static/chunks/app/layout-19228ee6a08d83ea.js" async=""></script><script src="/_next/static/chunks/abd5cabe-ef8984589a8c4f19.js" async=""></script><script src="/_next/static/chunks/d0e3edb2-14c399e5ac4a0230.js" async=""></script><script src="/_next/static/chunks/8555-14c61b7493d4d1c2.js" async=""></script><script src="/_next/static/chunks/6011-5965bf32c74aaeba.js" async=""></script><script src="/_next/static/chunks/462-0a4742a0d3fb315b.js" async=""></script><script src="/_next/static/chunks/4251-7390ea4f71c022bb.js" async=""></script><script src="/_next/static/chunks/8909-c18f5a2f20e8f798.js" async=""></script><script src="/_next/static/chunks/app/page-18dd62d21c3bda10.js" async=""></script><meta name="next-size-adjust" content=""/><meta name="google" content="notranslate"/><meta name="theme-color" content="#ffffff" media="(prefers-color-scheme: light)"/><meta name="theme-color" content="#1a1a1a" media="(prefers-color-scheme: dark)"/><title>Pi Web</title><meta name="description" content="Pi Web interface for the pi coding agent"/><meta name="application-name" content="Pi Web"/><link rel="manifest" href="/manifest.webmanifest"/><meta name="format-detection" content="telephone=no"/><meta name="mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-title" content="Pi Web"/><meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/><link rel="icon" href="/favicon.ico?c16c14206ecd3374" type="image/x-icon" sizes="512x512"/><link rel="icon" href="/icons/icon-192.png" sizes="192x192" type="image/png"/><link rel="apple-touch-icon" href="/icons/apple-touch-icon.png" sizes="180x180" type="image/png"/><script>(function(){var t="auto";try{var s=localStorage.getItem("pi-theme");if(["auto","light","mist","lilac","sand","rose","dark","pine","dusk","ember","slate","contrast-light","contrast-dark","zenburn"].includes(s))t=s}catch(e){}if(t==="auto")t=window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light";var r=document.documentElement;r.dataset.theme=t;r.classList.toggle("dark",["dark","pine","dusk","ember","slate","contrast-dark","zenburn"].includes(t))})();</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body translate="no" class="notranslate"><div hidden=""><!--$--><!--/$--></div><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><!--/$--><!--$--><!--/$--><script src="/_next/static/chunks/webpack-7c23f465dcf1a516.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[91562,[],\"\"]\n3:I[88008,[],\"\"]\n4:I[39886,[\"7177\",\"static/chunks/app/layout-19228ee6a08d83ea.js\"],\"PwaRegistration\"]\n5:\"$Sreact.suspense\"\n6:I[74251,[\"5500\",\"static/chunks/abd5cabe-ef8984589a8c4f19.js\",\"4712\",\"static/chunks/d0e3edb2-14c399e5ac4a0230.js\",\"8555\",\"static/chunks/8555-14c61b7493d4d1c2.js\",\"6011\",\"static/chunks/6011-5965bf32c74aaeba.js\",\"462\",\"static/chunks/462-0a4742a0d3fb315b.js\",\"4251\",\"static/chunks/4251-7390ea4f71c022bb.js\",\"8909\",\"static/chunks/8909-c18f5a2f20e8f798.js\",\"8974\",\"static/chunks/app/page-18dd62d21c3bda10.js\"],\"I18nProvider\"]\n7:I[73549,[\"5500\",\"static/chunks/abd5cabe-ef8984589a8c4f19.js\",\"4712\",\"static/chunks/d0e3edb2-14c399e5ac4a0230.js\",\"8555\",\"static/chunks/8555-14c61b7493d4d1c2.js\",\"6011\",\"static/chunks/6011-5965bf32c74aaeba.js\",\"462\",\"static/chunks/462-0a4742a0d3fb315b.js\",\"4251\",\"static/chunks/4251-7390ea4f71c022bb.js\",\"8909\",\"static/chunks/8909-c18f5a2f20e8f798.js\",\"8974\",\"static/chunks/app/page-18dd62d21c3bda10.js\"],\"AppShell\"]\n8:I[70659,[],\"OutletBoundary\"]\na:I[70659,[],\"ViewportBoundary\"]\nc:I[70659,[],\"MetadataBoundary\"]\ne:I[17794,[],\"default\",1]\n:HL[\"/_next/static/media/7deddc85b7ffd1dc-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/ec14413c594b3356-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/9bcd6051db4f8890.css\",\"style\"]\n:HL[\"/_next/static/css/0f5099659ba5f318.css\",\"style\"]\n:HL[\"/_next/static/css/582426d6a91257d8.css\",\"style\"]\n:HL[\"/_next/static/css/c99d24fe85e139cc.css\",\"style\"]\n:HL[\"/_next/static/css/49692dbfa6f26eeb.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/9bcd6051db4f8890.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/0f5099659ba5f318.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"2\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/582426d6a91257d8.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"3\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/c99d24fe85e139cc.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"translate\":\"no\",\"className\":\"__variable_9e44ca notranslate\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"meta\",null,{\"name\":\"google\",\"content\":\"notranslate\"}],[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"(function(){var t=\\\"auto\\\";try{var s=localStorage.getItem(\\\"pi-theme\\\");if([\\\"auto\\\",\\\"light\\\",\\\"mist\\\",\\\"lilac\\\",\\\"sand\\\",\\\"rose\\\",\\\"dark\\\",\\\"pine\\\",\\\"dusk\\\",\\\"ember\\\",\\\"slate\\\",\\\"contrast-light\\\",\\\"contrast-dark\\\",\\\"zenburn\\\"].includes(s))t=s}catch(e){}if(t===\\\"auto\\\")t=window.matchMedia(\\\"(prefers-color-scheme: dark)\\\").matches?\\\"dark\\\":\\\"light\\\";var r=document.documentElement;r.dataset.theme=t;r.classList.toggle(\\\"dark\\\",[\\\"dark\\\",\\\"pine\\\",\\\"dusk\\\",\\\"ember\\\",\\\"slate\\\",\\\"contrast-dark\\\",\\\"zenburn\\\"].includes(t))})();\"}}]]}],[\"$\",\"body\",null,{\"translate\":\"no\",\"className\":\"notranslate\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"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.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}],[\"$\",\"$L4\",null,{}]]}]]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$5\",null,{\"children\":[\"$\",\"$L6\",null,{\"children\":[\"$\",\"$L7\",null,{}]}]}],[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/49692dbfa6f26eeb.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"$L8\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@9\"}]}]]}],{},null,false,null]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$La\",null,{\"children\":\"$Lb\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lc\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Ld\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$e\",[]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"sN1YhVy-LPqPUdH9cLpTi\"}\n"])</script><script>self.__next_f.push([1,"b:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, viewport-fit=cover, interactive-widget=resizes-content\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#ffffff\",\"media\":\"(prefers-color-scheme: light)\"}],[\"$\",\"meta\",\"3\",{\"name\":\"theme-color\",\"content\":\"#1a1a1a\",\"media\":\"(prefers-color-scheme: dark)\"}]]\n"])</script><script>self.__next_f.push([1,"f:I[38106,[],\"IconMark\"]\n9:null\nd:[[\"$\",\"title\",\"0\",{\"children\":\"Pi Web\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Pi Web interface for the pi coding agent\"}],[\"$\",\"meta\",\"2\",{\"name\":\"application-name\",\"content\":\"Pi Web\"}],[\"$\",\"link\",\"3\",{\"rel\":\"manifest\",\"href\":\"/manifest.webmanifest\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"meta\",\"4\",{\"name\":\"format-detection\",\"content\":\"telephone=no\"}],[\"$\",\"meta\",\"5\",{\"name\":\"mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"meta\",\"6\",{\"name\":\"apple-mobile-web-app-title\",\"content\":\"Pi Web\"}],[\"$\",\"meta\",\"7\",{\"name\":\"apple-mobile-web-app-status-bar-style\",\"content\":\"black-translucent\"}],[\"$\",\"link\",\"8\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?c16c14206ecd3374\",\"type\":\"image/x-icon\",\"sizes\":\"512x512\"}],[\"$\",\"link\",\"9\",{\"rel\":\"icon\",\"href\":\"/icons/icon-192.png\",\"sizes\":\"192x192\",\"type\":\"image/png\"}],[\"$\",\"link\",\"10\",{\"rel\":\"apple-touch-icon\",\"href\":\"/icons/apple-touch-icon.png\",\"sizes\":\"180x180\",\"type\":\"image/png\"}],[\"$\",\"$Lf\",\"11\",{}]]\n"])</script></body></html>
@@ -0,0 +1 @@
1
+ {"headers":{"x-nextjs-stale-time":"300","x-nextjs-prerender":"1","x-next-cache-tags":"_N_T_/layout,_N_T_/page,_N_T_/,_N_T_/index"},"segmentPaths":["/_tree","/_full","/__PAGE__"],"prefetchHints":{"hints":64,"slots":{"children":{"hints":160,"slots":null}}},"routeCache":{"key":"/route-cache/APP_PAGE/c6377dd9ce6a1c2cd100eb4344e843eb4639b9ed26f84643f77680e9eb454c4b/$/index","owner":{"kind":"APP_PAGE","sourceRoute":"/page"},"isFallback":false},"routeCacheLastModified":1793168821379}
@@ -0,0 +1,23 @@
1
+ 1:"$Sreact.fragment"
2
+ 2:I[91562,[],""]
3
+ 3:I[88008,[],""]
4
+ 4:I[39886,["7177","static/chunks/app/layout-19228ee6a08d83ea.js"],"PwaRegistration"]
5
+ 5:"$Sreact.suspense"
6
+ 6:I[74251,["5500","static/chunks/abd5cabe-ef8984589a8c4f19.js","4712","static/chunks/d0e3edb2-14c399e5ac4a0230.js","8555","static/chunks/8555-14c61b7493d4d1c2.js","6011","static/chunks/6011-5965bf32c74aaeba.js","462","static/chunks/462-0a4742a0d3fb315b.js","4251","static/chunks/4251-7390ea4f71c022bb.js","8909","static/chunks/8909-c18f5a2f20e8f798.js","8974","static/chunks/app/page-18dd62d21c3bda10.js"],"I18nProvider"]
7
+ 7:I[73549,["5500","static/chunks/abd5cabe-ef8984589a8c4f19.js","4712","static/chunks/d0e3edb2-14c399e5ac4a0230.js","8555","static/chunks/8555-14c61b7493d4d1c2.js","6011","static/chunks/6011-5965bf32c74aaeba.js","462","static/chunks/462-0a4742a0d3fb315b.js","4251","static/chunks/4251-7390ea4f71c022bb.js","8909","static/chunks/8909-c18f5a2f20e8f798.js","8974","static/chunks/app/page-18dd62d21c3bda10.js"],"AppShell"]
8
+ 8:I[70659,[],"OutletBoundary"]
9
+ a:I[70659,[],"ViewportBoundary"]
10
+ c:I[70659,[],"MetadataBoundary"]
11
+ e:I[17794,[],"default",1]
12
+ :HL["/_next/static/media/7deddc85b7ffd1dc-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
13
+ :HL["/_next/static/media/ec14413c594b3356-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
14
+ :HL["/_next/static/css/9bcd6051db4f8890.css","style"]
15
+ :HL["/_next/static/css/0f5099659ba5f318.css","style"]
16
+ :HL["/_next/static/css/582426d6a91257d8.css","style"]
17
+ :HL["/_next/static/css/c99d24fe85e139cc.css","style"]
18
+ :HL["/_next/static/css/49692dbfa6f26eeb.css","style"]
19
+ 0:{"P":null,"c":["",""],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{},"$undefined","$undefined",4608]},"$undefined","$undefined",4624],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/9bcd6051db4f8890.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/0f5099659ba5f318.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","2",{"rel":"stylesheet","href":"/_next/static/css/582426d6a91257d8.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","3",{"rel":"stylesheet","href":"/_next/static/css/c99d24fe85e139cc.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","translate":"no","className":"__variable_9e44ca notranslate","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","meta",null,{"name":"google","content":"notranslate"}],["$","script",null,{"dangerouslySetInnerHTML":{"__html":"(function(){var t=\"auto\";try{var s=localStorage.getItem(\"pi-theme\");if([\"auto\",\"light\",\"mist\",\"lilac\",\"sand\",\"rose\",\"dark\",\"pine\",\"dusk\",\"ember\",\"slate\",\"contrast-light\",\"contrast-dark\",\"zenburn\"].includes(s))t=s}catch(e){}if(t===\"auto\")t=window.matchMedia(\"(prefers-color-scheme: dark)\").matches?\"dark\":\"light\";var r=document.documentElement;r.dataset.theme=t;r.classList.toggle(\"dark\",[\"dark\",\"pine\",\"dusk\",\"ember\",\"slate\",\"contrast-dark\",\"zenburn\"].includes(t))})();"}}]]}],["$","body",null,{"translate":"no","className":"notranslate","suppressHydrationWarning":true,"children":[["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","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."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$L4",null,{}]]}]]}]]}],{"children":[["$","$1","c",{"children":[["$","$5",null,{"children":["$","$L6",null,{"children":["$","$L7",null,{}]}]}],[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/49692dbfa6f26eeb.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","$L8",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@9"}]}]]}],{},null,false,null]},null,false,null],["$","$1","h",{"children":[null,["$","$La",null,{"children":"$Lb"}],["$","div",null,{"hidden":true,"children":["$","$Lc",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$Ld"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$e",[]],"S":true,"h":null,"r":"$undefined","s":"$undefined","a":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"sN1YhVy-LPqPUdH9cLpTi"}
20
+ b:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1, viewport-fit=cover, interactive-widget=resizes-content"}],["$","meta","2",{"name":"theme-color","content":"#ffffff","media":"(prefers-color-scheme: light)"}],["$","meta","3",{"name":"theme-color","content":"#1a1a1a","media":"(prefers-color-scheme: dark)"}]]
21
+ f:I[38106,[],"IconMark"]
22
+ 9:null
23
+ d:[["$","title","0",{"children":"Pi Web"}],["$","meta","1",{"name":"description","content":"Pi Web interface for the pi coding agent"}],["$","meta","2",{"name":"application-name","content":"Pi Web"}],["$","link","3",{"rel":"manifest","href":"/manifest.webmanifest","crossOrigin":"$undefined"}],["$","meta","4",{"name":"format-detection","content":"telephone=no"}],["$","meta","5",{"name":"mobile-web-app-capable","content":"yes"}],["$","meta","6",{"name":"apple-mobile-web-app-title","content":"Pi Web"}],["$","meta","7",{"name":"apple-mobile-web-app-status-bar-style","content":"black-translucent"}],["$","link","8",{"rel":"icon","href":"/favicon.ico?c16c14206ecd3374","type":"image/x-icon","sizes":"512x512"}],["$","link","9",{"rel":"icon","href":"/icons/icon-192.png","sizes":"192x192","type":"image/png"}],["$","link","10",{"rel":"apple-touch-icon","href":"/icons/apple-touch-icon.png","sizes":"180x180","type":"image/png"}],["$","$Lf","11",{}]]
@@ -0,0 +1,27 @@
1
+ 1:"$Sreact.fragment"
2
+ 2:"$Sreact.suspense"
3
+ 3:I[74251,["5500","static/chunks/abd5cabe-ef8984589a8c4f19.js","4712","static/chunks/d0e3edb2-14c399e5ac4a0230.js","8555","static/chunks/8555-14c61b7493d4d1c2.js","6011","static/chunks/6011-5965bf32c74aaeba.js","462","static/chunks/462-0a4742a0d3fb315b.js","4251","static/chunks/4251-7390ea4f71c022bb.js","8909","static/chunks/8909-c18f5a2f20e8f798.js","8974","static/chunks/app/page-18dd62d21c3bda10.js"],"I18nProvider"]
4
+ 4:I[73549,["5500","static/chunks/abd5cabe-ef8984589a8c4f19.js","4712","static/chunks/d0e3edb2-14c399e5ac4a0230.js","8555","static/chunks/8555-14c61b7493d4d1c2.js","6011","static/chunks/6011-5965bf32c74aaeba.js","462","static/chunks/462-0a4742a0d3fb315b.js","4251","static/chunks/4251-7390ea4f71c022bb.js","8909","static/chunks/8909-c18f5a2f20e8f798.js","8974","static/chunks/app/page-18dd62d21c3bda10.js"],"AppShell"]
5
+ 5:I[70659,[],"OutletBoundary"]
6
+ 9:I[70659,[],"ViewportBoundary"]
7
+ a:I[70659,[],"MetadataBoundary"]
8
+ b:I[38106,[],"IconMark"]
9
+ d:I[91562,[],""]
10
+ e:I[88008,[],""]
11
+ :HL["/_next/static/css/49692dbfa6f26eeb.css","style"]
12
+ :HL["/_next/static/css/9bcd6051db4f8890.css","style"]
13
+ :HL["/_next/static/css/0f5099659ba5f318.css","style"]
14
+ :HL["/_next/static/css/582426d6a91257d8.css","style"]
15
+ :HL["/_next/static/css/c99d24fe85e139cc.css","style"]
16
+ 8:X
17
+ 0:{"buildId":"sN1YhVy-LPqPUdH9cLpTi","data":[{"rsc":["$","$1","c",{"children":[["$","$2",null,{"children":["$","$L3",null,{"children":["$","$L4",null,{}]}]}],[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/49692dbfa6f26eeb.css","precedence":"next"}]],["$","$L5",null,{"children":["$","$2",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],"isPartial":"$@7","staleTime":"$8","varyParams":null},{"rsc":["$","$1","h",{"children":[null,["$","$L9",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1, viewport-fit=cover, interactive-widget=resizes-content"}],["$","meta","2",{"name":"theme-color","content":"#ffffff","media":"(prefers-color-scheme: light)"}],["$","meta","3",{"name":"theme-color","content":"#1a1a1a","media":"(prefers-color-scheme: dark)"}]]}],["$","div",null,{"hidden":true,"children":["$","$La",null,{"children":["$","$2",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Pi Web"}],["$","meta","1",{"name":"description","content":"Pi Web interface for the pi coding agent"}],["$","meta","2",{"name":"application-name","content":"Pi Web"}],["$","link","3",{"rel":"manifest","href":"/manifest.webmanifest"}],["$","meta","4",{"name":"format-detection","content":"telephone=no"}],["$","meta","5",{"name":"mobile-web-app-capable","content":"yes"}],["$","meta","6",{"name":"apple-mobile-web-app-title","content":"Pi Web"}],["$","meta","7",{"name":"apple-mobile-web-app-status-bar-style","content":"black-translucent"}],["$","link","8",{"rel":"icon","href":"/favicon.ico?c16c14206ecd3374","type":"image/x-icon","sizes":"512x512"}],["$","link","9",{"rel":"icon","href":"/icons/icon-192.png","sizes":"192x192","type":"image/png"}],["$","link","10",{"rel":"apple-touch-icon","href":"/icons/apple-touch-icon.png","sizes":"180x180","type":"image/png"}],["$","$Lb","11",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":"$@c","staleTime":"$8","varyParams":null},{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/9bcd6051db4f8890.css","precedence":"next"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/0f5099659ba5f318.css","precedence":"next"}],["$","link","2",{"rel":"stylesheet","href":"/_next/static/css/582426d6a91257d8.css","precedence":"next"}],["$","link","3",{"rel":"stylesheet","href":"/_next/static/css/c99d24fe85e139cc.css","precedence":"next"}]],["$","html",null,{"lang":"en","translate":"no","className":"__variable_9e44ca notranslate","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","meta",null,{"name":"google","content":"notranslate"}],["$","script",null,{"dangerouslySetInnerHTML":{"__html":"(function(){var t=\"auto\";try{var s=localStorage.getItem(\"pi-theme\");if([\"auto\",\"light\",\"mist\",\"lilac\",\"sand\",\"rose\",\"dark\",\"pine\",\"dusk\",\"ember\",\"slate\",\"contrast-light\",\"contrast-dark\",\"zenburn\"].includes(s))t=s}catch(e){}if(t===\"auto\")t=window.matchMedia(\"(prefers-color-scheme: dark)\").matches?\"dark\":\"light\";var r=document.documentElement;r.dataset.theme=t;r.classList.toggle(\"dark\",[\"dark\",\"pine\",\"dusk\",\"ember\",\"slate\",\"contrast-dark\",\"zenburn\"].includes(t))})();"}}]]}],["$","body",null,{"translate":"no","className":"notranslate","suppressHydrationWarning":true,"children":[["$","$Ld",null,{"parallelRouterKey":"children","template":["$","$Le",null,{}],"notFound":[[["$","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."}]}]]}]}]],[]]}],"$Lf"]}]]}]]}],"isPartial":"$@10","staleTime":"$8","varyParams":null}],"isUpgradeableISRFallback":false,"a":"$@11","rootVaryParams":null,"needsRuntimeRequest":"$@12"}
18
+ 13:I[39886,["7177","static/chunks/app/layout-19228ee6a08d83ea.js"],"PwaRegistration"]
19
+ 6:null
20
+ f:["$","$L13",null,{}]
21
+ 8:300
22
+ 12:true
23
+ 8:C
24
+ 11:0
25
+ c:"$undefined"
26
+ 10:"$undefined"
27
+ 7:"$undefined"