@qt4798/pi-web 0.10.0 → 0.10.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +4 -4
- package/.next/build-manifest.json +2 -2
- package/.next/react-loadable-manifest.json +0 -1964
- package/.next/required-server-files.js +1 -1
- package/.next/required-server-files.json +1 -1
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +1 -1
- package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/api/auth/login/[provider]/route.js +1 -1
- package/.next/server/app/api/models/route.js +1 -1
- package/.next/server/app/api/models-config/discover/route.js +1 -1
- package/.next/server/app/api/proxy/route.js +1 -1
- package/.next/server/app/api/proxy/test/route.js +1 -1
- package/.next/server/app/api/settings/title-model/route.js +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +3 -3
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
- package/.next/server/app/index.segments/_full.segment.rsc +3 -3
- package/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/page.js +9 -9
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +4 -4
- package/.next/server/chunks/2349.js +2 -2
- package/.next/server/chunks/2498.js +1 -1
- package/.next/server/chunks/4253.js +3 -3
- package/.next/server/chunks/4564.js +1 -1
- package/.next/server/chunks/5582.js +1 -1
- package/.next/server/chunks/6429.js +2 -2
- package/.next/server/chunks/7774.js +2 -2
- package/.next/server/chunks/7915.js +1 -1
- package/.next/server/instrumentation.js +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/static/chunks/266-afbb4abec8f065f2.js +1 -0
- package/.next/static/chunks/app/page-3f49e88154880e37.js +47 -0
- package/.next/trace +9 -9
- package/.next/trace-build +1 -1
- package/bin/with-memory-limit.js +2 -2
- package/package.json +1 -1
- package/.next/static/chunks/4539-00fcad0fc9413ea5.js +0 -1
- package/.next/static/chunks/app/page-5c710e68640f3145.js +0 -47
- /package/.next/static/{uSnMpPvz2vTZlLUkAmoxZ → t01hTVjEVvr5Oso-s7a7t}/_buildManifest.js +0 -0
- /package/.next/static/{uSnMpPvz2vTZlLUkAmoxZ → t01hTVjEVvr5Oso-s7a7t}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
exports.id=4564,exports.ids=[4564],exports.modules={6999:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{Tu:()=>o,o$:()=>n});var e=c(73024),f=c(76760),g=c(80974),h=c.n(g),i=c(75430),j=c(8102),k=a([i]);i=(k.then?(await k)():k)[0];let p={retries:{retries:10,factor:2,minTimeout:50,maxTimeout:2e3,randomize:!0},stale:3e4};function l(){return(0,f.join)((0,i.getAgentDir)(),"settings.json")}function m(){let a=l();if(!(0,e.existsSync)(a))return{};try{let b=JSON.parse((0,e.readFileSync)(a,"utf8"));return null===b||"object"!=typeof b||Array.isArray(b)?{}:b}catch{return{}}}async function n(a){let b=l(),c=null,d=await h().lock(b,{...p,onCompromised:a=>{c=a}});try{if(c)throw c;let d=m(),e=await a(d);if(c)throw c;if(!e||"object"!=typeof e||!e.settings)throw Error("settings.json mutation must return { settings }");if(!1===e.changed)return{changed:!1};if((0,j.$)(b,JSON.stringify(e.settings,null,2)),c)throw c;return{changed:!0}}finally{d().catch(()=>{})}}function o(){return m()}d()}catch(a){d(a)}})},7859:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{Bp:()=>n,Dm:()=>m,YB:()=>j,fr:()=>l,y8:()=>k});var e=c(29021),f=c(33873),g=c(75430),h=c(6999),i=a([g,h]);[g,h]=i.then?(await i)():i;let o="titleModel";function j(){let a=(0,h.Tu)()[o];return"string"==typeof a&&a.length>0?a:null}async function k(a){await (0,h.o$)(b=>(null===a||""===a?delete b[o]:b[o]=a,{settings:b}))}function l(){let a=(0,f.join)((0,g.getAgentDir)(),"models.json");if(!(0,e.existsSync)(a))return{providers:{}};try{let b=JSON.parse((0,e.readFileSync)(a,"utf8"));return null!==b&&"object"==typeof b?b:{providers:{}}}catch{return{providers:{}}}}function m(a){let b=a.providers;if(!b||"object"!=typeof b)return[];let c=[];for(let[a,d]of Object.entries(b)){let b=d?.models;if(Array.isArray(b))for(let d of b)"string"==typeof d?.id&&0!==d.id.length&&c.push({provider:a,id:d.id,reasoning:!0===d.reasoning,label:`${a}/${d.id}`})}return c.sort((a,b)=>a.label.localeCompare(b.label))}function n(a,b){return b.some(b=>b.label===a)}d()}catch(a){d(a)}})},8102:(a,b,c)=>{"use strict";c.d(b,{$:()=>g});var d=c(55511),e=c(29021),f=c(33873);function g(a,b){let c=(0,f.dirname)(a),g=(0,f.join)(c,`.${(0,f.basename)(a)}-${(0,d.randomUUID)()}.tmp`),h=!1;try{(0,e.writeFileSync)(g,b,{encoding:"utf8",flag:"wx",mode:384,flush:!0}),(0,e.renameSync)(g,a)}catch(a){throw h=!0,a}finally{try{(0,e.unlinkSync)(g)}catch(a){if("ENOENT"!==a.code&&!h)throw a}}}},18904:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{IR:()=>m,Ln:()=>j,py:()=>l});var e=c(75430),f=c(7859),g=c(37171),h=a([e,f]);[e,f]=h.then?(await h)():h;let n=null;async function i(a){let
|
|
1
|
+
exports.id=4564,exports.ids=[4564],exports.modules={6999:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{Tu:()=>o,o$:()=>n});var e=c(73024),f=c(76760),g=c(80974),h=c.n(g),i=c(75430),j=c(8102),k=a([i]);i=(k.then?(await k)():k)[0];let p={retries:{retries:10,factor:2,minTimeout:50,maxTimeout:2e3,randomize:!0},stale:3e4};function l(){return(0,f.join)((0,i.getAgentDir)(),"settings.json")}function m(){let a=l();if(!(0,e.existsSync)(a))return{};try{let b=JSON.parse((0,e.readFileSync)(a,"utf8"));return null===b||"object"!=typeof b||Array.isArray(b)?{}:b}catch{return{}}}async function n(a){let b=l(),c=null,d=await h().lock(b,{...p,onCompromised:a=>{c=a}});try{if(c)throw c;let d=m(),e=await a(d);if(c)throw c;if(!e||"object"!=typeof e||!e.settings)throw Error("settings.json mutation must return { settings }");if(!1===e.changed)return{changed:!1};if((0,j.$)(b,JSON.stringify(e.settings,null,2)),c)throw c;return{changed:!0}}finally{d().catch(()=>{})}}function o(){return m()}d()}catch(a){d(a)}})},7859:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{Bp:()=>n,Dm:()=>m,YB:()=>j,fr:()=>l,y8:()=>k});var e=c(29021),f=c(33873),g=c(75430),h=c(6999),i=a([g,h]);[g,h]=i.then?(await i)():i;let o="titleModel";function j(){let a=(0,h.Tu)()[o];return"string"==typeof a&&a.length>0?a:null}async function k(a){await (0,h.o$)(b=>(null===a||""===a?delete b[o]:b[o]=a,{settings:b}))}function l(){let a=(0,f.join)((0,g.getAgentDir)(),"models.json");if(!(0,e.existsSync)(a))return{providers:{}};try{let b=JSON.parse((0,e.readFileSync)(a,"utf8"));return null!==b&&"object"==typeof b?b:{providers:{}}}catch{return{providers:{}}}}function m(a){let b=a.providers;if(!b||"object"!=typeof b)return[];let c=[];for(let[a,d]of Object.entries(b)){let b=d?.models;if(Array.isArray(b))for(let d of b)"string"==typeof d?.id&&0!==d.id.length&&c.push({provider:a,id:d.id,reasoning:!0===d.reasoning,label:`${a}/${d.id}`})}return c.sort((a,b)=>a.label.localeCompare(b.label))}function n(a,b){return b.some(b=>b.label===a)}d()}catch(a){d(a)}})},8102:(a,b,c)=>{"use strict";c.d(b,{$:()=>g});var d=c(55511),e=c(29021),f=c(33873);function g(a,b){let c=(0,f.dirname)(a),g=(0,f.join)(c,`.${(0,f.basename)(a)}-${(0,d.randomUUID)()}.tmp`),h=!1;try{(0,e.writeFileSync)(g,b,{encoding:"utf8",flag:"wx",mode:384,flush:!0}),(0,e.renameSync)(g,a)}catch(a){throw h=!0,a}finally{try{(0,e.unlinkSync)(g)}catch(a){if("ENOENT"!==a.code&&!h)throw a}}}},18904:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{IR:()=>m,Ln:()=>j,py:()=>l});var e=c(75430),f=c(7859),g=c(37171),h=a([e,f]);[e,f]=h.then?(await h)():h;let n=null;async function i(a,b){let c=Date.now();if(n&&c-n.at<6e4)return n.data;let d=await a.getAvailable(void 0,b?{signal:b}:void 0);return n={data:d,at:c},d}function j(){n=null}function k(a,b){return a.provider===b.provider&&a.id===b.modelId}async function l(a,b,c={}){let d=(0,f.fr)().providers??{},h=new Set;for(let[a,b]of Object.entries(d)){let c=(0,g.du)(b);for(let[b,d]of Object.entries(c))!0===d.hidden&&h.add(`${a}/${b}`)}let j=(b??[]).map(a=>a.trim()).filter(Boolean),k=[],m=[],n={},o=[];if(0===j.length)k=await i(a,c.signal);else{let b=await (0,e.resolveModelScopeWithDiagnostics)(j,a);for(let d of(m=b.scopedModels,k=b.scopedModels.length>0?b.scopedModels.map(a=>a.model):await i(a,c.signal),o.push(...b.diagnostics.map(a=>a.message)),m))d.thinkingLevel&&(n[`${d.model.provider}/${d.model.id}`]=d.thinkingLevel)}return c.includeHidden||(k=k.filter(a=>!h.has(`${a.provider}/${a.id}`))),{visible:k,scopedModels:c.includeHidden||k.length===m.length?m:m.filter(a=>!h.has(`${a.model.provider}/${a.model.id}`)),thinkingLevelPins:n,warnings:o}}function m(a,b={}){let c=b.requestedModel?a.visible.find(a=>k(a,b.requestedModel)):void 0;if(b.requestedModel&&!c)throw Error(`Model is not available in the enabled scope: ${b.requestedModel.provider}/${b.requestedModel.modelId}`);let d=c?a.scopedModels.find(a=>k(a.model,{provider:c.provider,modelId:c.id})):void 0,e=!c&&b.defaultModel?a.scopedModels.find(a=>k(a.model,b.defaultModel)):void 0,f=c?void 0:e??a.scopedModels[0],g=c||f||!b.defaultModel?void 0:a.visible.find(a=>k(a,b.defaultModel)),h=c??f?.model??g,i=d??f,j=b.thinkingLevel??i?.thinkingLevel;return{...h?{model:h}:{},...j?{thinkingLevel:j}:{},scopedModels:[...a.scopedModels]}}d()}catch(a){d(a)}})},28967:(a,b,c)=>{"use strict";function d(){return globalThis.__piModelsCacheState||(globalThis.__piModelsCacheState={entries:new Map,inFlight:new Map,generation:0}),globalThis.__piModelsCacheState}function e(){let a=d();a.generation+=1,a.entries.clear(),a.inFlight.clear()}function f(a,b){let c=d(),e=c.entries.get(a);if(e&&e.expiresAt>Date.now())return Promise.resolve(e.data);if(e)return c.inFlight.has(a)||g(c,a,b).catch(()=>{}),Promise.resolve(e.data);let f=c.inFlight.get(a);return f||g(c,a,b)}function g(a,b,c){let d=a.inFlight.get(b);if(d)return d;let e=a.generation,f=Promise.resolve().then(c).then(c=>{if(a.generation===e&&a.inFlight.get(b)===f){let d=Date.now();for(let[b,c]of a.entries)c.expiresAt<=d&&a.entries.delete(b);for(;a.entries.size>=32;){let b=a.entries.keys().next().value;if(void 0===b)break;a.entries.delete(b)}a.entries.set(b,{data:c,expiresAt:d+6e4})}return c}).finally(()=>{a.inFlight.get(b)===f&&a.inFlight.delete(b)});return a.inFlight.set(b,f),f}c.d(b,{k:()=>e,r:()=>f})},37171:(a,b,c)=>{"use strict";c.d(b,{S4:()=>h,du:()=>g});let d=["name","reasoning","contextWindow","maxTokens","thinkingLevelMap","hidden"];function e(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function f(a){let b=a?.modelOverrides;if(!e(b))return{};let c={};for(let[a,d]of Object.entries(b))e(d)&&(c[a]={...d});return c}function g(a){let b=function(a){let b={},c=a?.models;if(!Array.isArray(c))return b;for(let a of c)e(a)&&"string"==typeof a.id&&a.id&&(b[a.id]={...a});return b}(a),c=f(a),d=new Set([...Object.keys(b),...Object.keys(c)]),g={};for(let a of d)g[a]={...b[a]??{},...c[a]??{}};return g}function h(a,b){let c=a?{...a}:{},g=f(a),h=Array.isArray(a?.models)?a.models.filter(e).map(a=>({...a})):[];for(let[a,c]of Object.entries(b)){let b={...g[a]??{}},f=h.findIndex(b=>b.id===a),i=f>=0?h[f]:void 0;for(let[a,f]of Object.entries(c)){if(!d.includes(a))continue;i&&delete i[a];let c="thinkingLevelMap"===a&&e(f)&&0===Object.keys(f).length?null:f;null===c?delete b[a]:b[a]=c}(i&&Object.keys(i).every(a=>"id"===a)&&h.splice(f,1),Object.keys(b).length>0)?g[a]=b:delete g[a]}return h.length>0?c.models=h:Array.isArray(a?.models)&&delete c.models,Object.keys(g).length>0?c.modelOverrides=g:delete c.modelOverrides,c}},69429:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{C:()=>n,Q:()=>m});var e=c(73024),f=c(76760),g=c(75430),h=c(80974),i=c.n(h),j=a([g]);g=(j.then?(await j)():j)[0];let o={encoding:"utf-8",mode:384};function k(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}async function l(a,b){let c,d=(0,f.dirname)(a);if((0,e.existsSync)(d)||(0,e.mkdirSync)(d,{recursive:!0,mode:448}),!(0,e.existsSync)(a)){(0,e.writeFileSync)(a,"{}",o);try{(0,e.chmodSync)(a,384)}catch{}}let g=await i().lock(a,{retries:{retries:10,factor:2,minTimeout:100,maxTimeout:1e4,randomize:!0},stale:3e4,onCompromised:a=>{c=a}}),h=()=>{if(c)throw c};try{h();let c=JSON.parse((0,e.readFileSync)(a,"utf-8"));if(!k(c))throw Error("Invalid auth.json: expected an object");let{result:d,changed:f}=b(c);if(f){h(),(0,e.writeFileSync)(a,JSON.stringify(c,null,2),o);try{(0,e.chmodSync)(a,384)}catch{}h()}return d}finally{try{await g()}catch{}}}function m(a,b,c=(0,f.join)((0,g.getAgentDir)(),"auth.json")){return l(c,c=>(c[a]=b,{result:void 0,changed:!0}))}function n(a,b,c=(0,f.join)((0,g.getAgentDir)(),"auth.json")){return l(c,c=>{if(!Object.hasOwn(c,a))return{result:{status:"not_found"},changed:!1};let d=c[a],e=k(d)&&"string"==typeof d.type?d.type:"unknown";return e!==b?{result:{status:"type_mismatch",storedType:e},changed:!1}:(delete c[a],{result:{status:"removed"},changed:!0})})}d()}catch(a){d(a)}})},78335:()=>{},96487:()=>{}};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
exports.id=5582,exports.ids=[5582],exports.modules={6999:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{Tu:()=>o,o$:()=>n});var e=c(73024),f=c(76760),g=c(80974),h=c.n(g),i=c(75430),j=c(8102),k=a([i]);i=(k.then?(await k)():k)[0];let p={retries:{retries:10,factor:2,minTimeout:50,maxTimeout:2e3,randomize:!0},stale:3e4};function l(){return(0,f.join)((0,i.getAgentDir)(),"settings.json")}function m(){let a=l();if(!(0,e.existsSync)(a))return{};try{let b=JSON.parse((0,e.readFileSync)(a,"utf8"));return null===b||"object"!=typeof b||Array.isArray(b)?{}:b}catch{return{}}}async function n(a){let b=l(),c=null,d=await h().lock(b,{...p,onCompromised:a=>{c=a}});try{if(c)throw c;let d=m(),e=await a(d);if(c)throw c;if(!e||"object"!=typeof e||!e.settings)throw Error("settings.json mutation must return { settings }");if(!1===e.changed)return{changed:!1};if((0,j.$)(b,JSON.stringify(e.settings,null,2)),c)throw c;return{changed:!0}}finally{d().catch(()=>{})}}function o(){return m()}d()}catch(a){d(a)}})},8102:(a,b,c)=>{"use strict";c.d(b,{$:()=>g});var d=c(55511),e=c(29021),f=c(33873);function g(a,b){let c=(0,f.dirname)(a),g=(0,f.join)(c,`.${(0,f.basename)(a)}-${(0,d.randomUUID)()}.tmp`),h=!1;try{(0,e.writeFileSync)(g,b,{encoding:"utf8",flag:"wx",mode:384,flush:!0}),(0,e.renameSync)(g,a)}catch(a){throw h=!0,a}finally{try{(0,e.unlinkSync)(g)}catch(a){if("ENOENT"!==a.code&&!h)throw a}}}},12039:(a,b,c)=>{"use strict";function d(a){if("assistant"!==a.role)return a;let b=a.content;if(!Array.isArray(b))return a;let c=b.map(a=>("object"!=typeof a||null===a||Array.isArray(a)||"toolCall"!==a.type?null:{type:"toolCall",toolCallId:"string"==typeof a.toolCallId?a.toolCallId:"string"==typeof a.id?a.id:"",toolName:"string"==typeof a.toolName?a.toolName:"string"==typeof a.name?a.name:"",input:"object"!=typeof a.input||null===a.input||Array.isArray(a.input)?"object"!=typeof a.arguments||null===a.arguments||Array.isArray(a.arguments)?{}:a.arguments:a.input})??a);return{...a,content:c}}c.d(b,{B:()=>d})},23808:(a,b,c)=>{"use strict";c.d(b,{l:()=>s,P9:()=>r,IL:()=>t,KI:()=>p});var d=c(79646),e=c(29021),f=c(33873),g=c(28354),h=c(25252);function i(a){return a&&"win32"===process.platform?(0,f.normalize)(a):a}function j(a,b){return a===b||!!a&&!!b&&"win32"===process.platform&&i(a).toLowerCase()===i(b).toLowerCase()}let k=(0,g.promisify)(d.execFile);function l(){return globalThis.__piProjectCache||(globalThis.__piProjectCache=new Map),globalThis.__piProjectCache}let m=0;function n(){globalThis.__piProjectCache?.clear()}async function o(a,b){let{stdout:c}=await k("git",["-C",a,...b],{timeout:1e4,maxBuffer:1048576,env:{...process.env,LC_ALL:"C"}});return c.trim()}async function p(a){let b;!function(){let a=Date.now();if(a-m<6e4)return;m=a;let b=l();for(let[c,d]of b)d.expiresAt<=a&&b.delete(c)}();let c=l(),d=c.get(a);if(d&&d.expiresAt>Date.now())return d.info;try{if(!(0,e.existsSync)(a))return b=function(a){let b=(0,f.dirname)(a);if(!b.endsWith("-worktrees"))return null;let c=b.slice(0,-10);return c&&(0,e.existsSync)((0,f.join)(c,".git"))?{projectRoot:c,branch:(0,f.basename)(a),isWorktree:!0,isTopLevel:!0}:null}(a)??{projectRoot:a,branch:null,isWorktree:!1,isTopLevel:!1},c.set(a,{info:b,expiresAt:Date.now()+6e4}),b;let[d,g,h,k]=(await o(a,["rev-parse","--path-format=absolute","--git-common-dir","--git-dir","--show-toplevel","--abbrev-ref","HEAD"])).split("\n").map(a=>a.trim()),[l,m,n]=[d,g,h].map(i),p=a;try{p=(0,e.realpathSync)(a)}catch{}let q=j(n,p),r=!j(m,l)&&q;b={projectRoot:r?(0,f.dirname)(l):a,branch:k&&"HEAD"!==k?k:null,isWorktree:r,isTopLevel:q}}catch{b={projectRoot:a,branch:null,isWorktree:!1,isTopLevel:!1}}return c.set(a,{info:b,expiresAt:Date.now()+6e4}),b}async function q(a){let b=await o(a,["rev-parse","--path-format=absolute","--git-common-dir"]);return(0,f.dirname)(i(b))}async function r(a){let b=await o(a,["worktree","list","--porcelain"]),c=[],d=null,f=()=>{d?.path&&!d.prunable&&(0,e.existsSync)(d.path)&&c.push({path:d.path,branch:d.branch??null,isMain:0===c.length}),d=null};for(let a of b.split("\n"))a.startsWith("worktree ")?(f(),d={path:i(a.slice(9).trim())}):a.startsWith("branch ")&&d?d.branch=a.slice(7).trim().replace(/^refs\/heads\//,""):a.startsWith("prunable")&&d?d.prunable=!0:""===a.trim()&&f();return f(),c}async function s(a,b){let c=b.trim();if(!c)throw Error("Branch name is required");let d=c.replace(/[\/\\:*?"<>|\s]+/g,"-").replace(/^-+|-+$/g,"");if(!d)throw Error(`Invalid branch name: ${b}`);let g=await q(a),i=`${(0,f.resolve)(g)}-worktrees`,j=(0,f.join)(i,d);if((0,e.existsSync)(j))throw Error(`Directory already exists: ${j}`);(0,e.mkdirSync)(i,{recursive:!0});let k=!1;try{await o(g,["rev-parse","--verify","--quiet",`refs/heads/${c}`]),k=!0}catch{k=!1}try{k?await o(g,["worktree","add","--",j,c]):await o(g,["worktree","add","-b",c,"--",j])}catch(a){throw Error(u(a))}return(0,h.wz)(j),n(),{path:j,branch:c}}async function t(a,b,c=!1){let d=(await r(a)).find(a=>j(a.path,b));if(!d)throw Error(`Not a worktree of this repository: ${b}`);if(d.isMain)throw Error("Cannot remove the main worktree");try{await o(a,["worktree","remove",...c?["--force"]:[],b])}catch(a){throw Error(u(a))}n()}function u(a){let b=a.stderr;return"string"==typeof b&&b.trim()?b.trim():a instanceof Error?a.message:String(a)}},25252:(a,b,c)=>{"use strict";function d(a){return a.replace(/\\/g,"/")}function e(){return globalThis.__piAdditionalAllowedRoots||(globalThis.__piAdditionalAllowedRoots=new Set),globalThis.__piAdditionalAllowedRoots}function f(a){if(!a)return;let b=d(a);e().add(b),globalThis.__piAllowedRootsCache?.roots.add(b)}c.d(b,{HM:()=>e,Nw:()=>d,wz:()=>f})},40402:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{BR:()=>u,DK:()=>w,O8:()=>t,Uv:()=>x,dQ:()=>n,eP:()=>v,mD:()=>o,os:()=>r,u1:()=>s});var e=c(75430),f=c(29021),g=c(33873),h=c(12039),i=c(67264),j=c(23808),k=c(6999),l=a([e,k]);async function m(){let a=await e.SessionManager.listAll(),b=new Map;for(let c of a)b.set((0,g.normalize)(c.path),c.id);let c=[...new Set(a.map(a=>a.cwd).filter(Boolean))],d=new Map;await Promise.all(c.map(async a=>{d.set(a,await (0,j.KI)(a))}));let f=(0,k.Tu)(),h=Array.isArray(f.sessionPins)?f.sessionPins:[],l=new Set(h.filter(a=>"string"==typeof a));return a.map(a=>{t(a.id,a.path);let c=a.cwd?d.get(a.cwd):void 0;return{path:a.path,id:a.id,cwd:a.cwd,name:a.name,created:a.created instanceof Date?a.created.toISOString():String(a.created),modified:a.modified instanceof Date?a.modified.toISOString():String(a.modified),messageCount:a.messageCount,firstMessage:(0,i.CS)(a.firstMessage||"(no messages)"),parentSessionId:a.parentSessionPath?b.get((0,g.normalize)(a.parentSessionPath)):void 0,projectRoot:c?.projectRoot??a.cwd,pinned:l.has(a.id),importedFrom:a.importedFrom,...c?.branch?{worktreeBranch:c.branch}:{}}})}async function n(){let a=globalThis.__piSessionListGeneration??0;if(globalThis.__piSessionListCache&&Date.now()-globalThis.__piSessionListCache.ts<A)return globalThis.__piSessionListCache.data;if(globalThis.__piSessionListPromise&&globalThis.__piSessionListPromiseGeneration===a)return globalThis.__piSessionListPromise;let b=m().then(b=>((globalThis.__piSessionListGeneration??0)===a&&(globalThis.__piSessionListCache={data:b,ts:Date.now()}),b)).finally(()=>{globalThis.__piSessionListPromise===b&&(globalThis.__piSessionListPromise=void 0,globalThis.__piSessionListPromiseGeneration=void 0)});return globalThis.__piSessionListPromise=b,globalThis.__piSessionListPromiseGeneration=a,b}[e,k]=l.then?(await l)():l;let A=5e3;function o(){globalThis.__piSessionListGeneration=(globalThis.__piSessionListGeneration??0)+1,globalThis.__piSessionListCache=void 0}function p(){return globalThis.__piSessionPathCache||(globalThis.__piSessionPathCache=new Map),globalThis.__piSessionPathCache}function q(){return globalThis.__piPathToSessionIdCache||(globalThis.__piPathToSessionIdCache=new Map),globalThis.__piPathToSessionIdCache}async function r(a){let b=p().get(a);return b||(await n(),p().get(a)??null)}async function s(a){let b=(0,g.normalize)(a),c=q().get(b);return c||(await n(),q().get(b))}function t(a,b){let c=(0,g.normalize)(b),d=p(),e=q(),f=d.get(a),h=e.get(c);f&&f!==c&&e.get(f)===a&&e.delete(f),h&&h!==a&&d.get(h)===c&&d.delete(h),d.set(a,c),e.set(c,a);let i=p();for(q();i.size>4096;){let a=i.keys().next().value;if(void 0===a)break;u(a)}}function u(a){let b=p(),c=q(),d=b.get(a);b.delete(a),d&&c.get(d)===a&&c.delete(d)}function v(a){let b=(0,f.openSync)(a,"r");try{let a=[],c=0,d=!1;for(;c<65536&&!d;){let e=Buffer.allocUnsafe(Math.min(4096,65536-c)),g=(0,f.readSync)(b,e,0,e.length,c);if(0===g)break;let h=e.subarray(0,g),i=h.indexOf(10);a.push(-1===i?h:h.subarray(0,i)),c+=g,d=-1!==i}if(!d&&c>=65536)return null;let e=Buffer.concat(a).toString("utf8").trimEnd();if(!e)return null;try{let a=JSON.parse(e);return"session"===a.type?a:null}catch{return null}}finally{(0,f.closeSync)(b)}}function w(a){return e.SessionManager.open(a).getEntries()}function x(a,b,c={}){let d=new Map;for(let b of a)d.set(b.id,b);let f=(0,e.buildSessionContext)(a,b,d),g=(0,e.buildContextEntries)(a,b,d),i=[],j=[];for(let a of g){let b=function(a,b){switch(a.type){case"message":{let c=b.deferToolResultImages?function(a){if("toolResult"!==a.role)return a;let b=0,c=0,d=new Set,e=a.content.filter(a=>{let e=function(a){let b,c;if(!z(a)||"image"!==a.type||("string"==typeof a.data?(b=a.data,c="string"==typeof a.mimeType?a.mimeType:void 0):z(a.source)&&"base64"===a.source.type&&"string"==typeof a.source.data&&(b=a.source.data,c="string"==typeof a.source.media_type?a.source.media_type:void 0),!b))return null;let d=b.endsWith("==")?2:+!!b.endsWith("=");return{bytes:Math.max(0,Math.floor(3*b.length/4)-d),mime:c}}(a);return!e||(b+=1,c+=e.bytes,e.mime&&d.add(e.mime),!1)});if(0===b)return a;let f=d.size>0?`: ${[...d].join(", ")}`:"";return e.push({type:"text",text:`[${b} tool result image${1===b?"":"s"} omitted from initial history payload${f}, ~${c} bytes]`}),{...a,content:e}}((0,h.B)(a.message)):(0,h.B)(a.message);if(!b.deferThinking||"assistant"!==c.role)return c;return{...c,content:c.content.map(a=>"thinking"===a.type&&""!==a.thinking.trim()?{...a,thinking:"",deferred:!0}:a)}}case"compaction":return{role:"custom",customType:"compaction",content:a.summary,display:!0,details:{tokensBefore:a.tokensBefore,firstKeptEntryId:a.firstKeptEntryId},timestamp:y(a.timestamp)};case"branch_summary":if(!a.summary)return null;return{role:"user",content:`*The conversation briefly explored another branch and returned with this summary:*
|
|
1
|
+
exports.id=5582,exports.ids=[5582],exports.modules={6999:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{Tu:()=>o,o$:()=>n});var e=c(73024),f=c(76760),g=c(80974),h=c.n(g),i=c(75430),j=c(8102),k=a([i]);i=(k.then?(await k)():k)[0];let p={retries:{retries:10,factor:2,minTimeout:50,maxTimeout:2e3,randomize:!0},stale:3e4};function l(){return(0,f.join)((0,i.getAgentDir)(),"settings.json")}function m(){let a=l();if(!(0,e.existsSync)(a))return{};try{let b=JSON.parse((0,e.readFileSync)(a,"utf8"));return null===b||"object"!=typeof b||Array.isArray(b)?{}:b}catch{return{}}}async function n(a){let b=l(),c=null,d=await h().lock(b,{...p,onCompromised:a=>{c=a}});try{if(c)throw c;let d=m(),e=await a(d);if(c)throw c;if(!e||"object"!=typeof e||!e.settings)throw Error("settings.json mutation must return { settings }");if(!1===e.changed)return{changed:!1};if((0,j.$)(b,JSON.stringify(e.settings,null,2)),c)throw c;return{changed:!0}}finally{d().catch(()=>{})}}function o(){return m()}d()}catch(a){d(a)}})},8102:(a,b,c)=>{"use strict";c.d(b,{$:()=>g});var d=c(55511),e=c(29021),f=c(33873);function g(a,b){let c=(0,f.dirname)(a),g=(0,f.join)(c,`.${(0,f.basename)(a)}-${(0,d.randomUUID)()}.tmp`),h=!1;try{(0,e.writeFileSync)(g,b,{encoding:"utf8",flag:"wx",mode:384,flush:!0}),(0,e.renameSync)(g,a)}catch(a){throw h=!0,a}finally{try{(0,e.unlinkSync)(g)}catch(a){if("ENOENT"!==a.code&&!h)throw a}}}},12039:(a,b,c)=>{"use strict";function d(a){if("assistant"!==a.role)return a;let b=a.content;if(!Array.isArray(b))return a;let c=b.map(a=>("object"!=typeof a||null===a||Array.isArray(a)||"toolCall"!==a.type?null:{type:"toolCall",toolCallId:"string"==typeof a.toolCallId?a.toolCallId:"string"==typeof a.id?a.id:"",toolName:"string"==typeof a.toolName?a.toolName:"string"==typeof a.name?a.name:"",input:"object"!=typeof a.input||null===a.input||Array.isArray(a.input)?"object"!=typeof a.arguments||null===a.arguments||Array.isArray(a.arguments)?{}:a.arguments:a.input})??a);return{...a,content:c}}c.d(b,{B:()=>d})},23808:(a,b,c)=>{"use strict";c.d(b,{l:()=>s,P9:()=>r,IL:()=>t,KI:()=>p});var d=c(79646),e=c(29021),f=c(33873),g=c(28354),h=c(25252);function i(a){return a&&"win32"===process.platform?(0,f.normalize)(a):a}function j(a,b){return a===b||!!a&&!!b&&"win32"===process.platform&&i(a).toLowerCase()===i(b).toLowerCase()}let k=(0,g.promisify)(d.execFile);function l(){return globalThis.__piProjectCache||(globalThis.__piProjectCache=new Map),globalThis.__piProjectCache}let m=0;function n(){globalThis.__piProjectCache?.clear()}async function o(a,b){let{stdout:c}=await k("git",["-C",a,...b],{timeout:1e4,maxBuffer:1048576,env:{...process.env,LC_ALL:"C"}});return c.trim()}async function p(a){let b;!function(){let a=Date.now();if(a-m<6e4)return;m=a;let b=l();for(let[c,d]of b)d.expiresAt<=a&&b.delete(c)}();let c=l(),d=c.get(a);if(d&&d.expiresAt>Date.now())return d.info;try{if(!(0,e.existsSync)(a))return b=function(a){let b=(0,f.dirname)(a);if(!b.endsWith("-worktrees"))return null;let c=b.slice(0,-10);return c&&(0,e.existsSync)((0,f.join)(c,".git"))?{projectRoot:c,branch:(0,f.basename)(a),isWorktree:!0,isTopLevel:!0}:null}(a)??{projectRoot:a,branch:null,isWorktree:!1,isTopLevel:!1},c.set(a,{info:b,expiresAt:Date.now()+6e4}),b;let[d,g,h,k]=(await o(a,["rev-parse","--path-format=absolute","--git-common-dir","--git-dir","--show-toplevel","--abbrev-ref","HEAD"])).split("\n").map(a=>a.trim()),[l,m,n]=[d,g,h].map(i),p=a;try{p=(0,e.realpathSync)(a)}catch{}let q=j(n,p),r=!j(m,l)&&q;b={projectRoot:r?(0,f.dirname)(l):a,branch:k&&"HEAD"!==k?k:null,isWorktree:r,isTopLevel:q}}catch{b={projectRoot:a,branch:null,isWorktree:!1,isTopLevel:!1}}return c.set(a,{info:b,expiresAt:Date.now()+6e4}),b}async function q(a){let b=await o(a,["rev-parse","--path-format=absolute","--git-common-dir"]);return(0,f.dirname)(i(b))}async function r(a){let b=await o(a,["worktree","list","--porcelain"]),c=[],d=null,f=()=>{d?.path&&!d.prunable&&(0,e.existsSync)(d.path)&&c.push({path:d.path,branch:d.branch??null,isMain:0===c.length}),d=null};for(let a of b.split("\n"))a.startsWith("worktree ")?(f(),d={path:i(a.slice(9).trim())}):a.startsWith("branch ")&&d?d.branch=a.slice(7).trim().replace(/^refs\/heads\//,""):a.startsWith("prunable")&&d?d.prunable=!0:""===a.trim()&&f();return f(),c}async function s(a,b){let c=b.trim();if(!c)throw Error("Branch name is required");let d=c.replace(/[\/\\:*?"<>|\s]+/g,"-").replace(/^-+|-+$/g,"");if(!d)throw Error(`Invalid branch name: ${b}`);let g=await q(a),i=`${(0,f.resolve)(g)}-worktrees`,j=(0,f.join)(i,d);if((0,e.existsSync)(j))throw Error(`Directory already exists: ${j}`);(0,e.mkdirSync)(i,{recursive:!0});let k=!1;try{await o(g,["rev-parse","--verify","--quiet",`refs/heads/${c}`]),k=!0}catch{k=!1}try{k?await o(g,["worktree","add","--",j,c]):await o(g,["worktree","add","-b",c,"--",j])}catch(a){throw Error(u(a))}return(0,h.wz)(j),n(),{path:j,branch:c}}async function t(a,b,c=!1){let d=(await r(a)).find(a=>j(a.path,b));if(!d)throw Error(`Not a worktree of this repository: ${b}`);if(d.isMain)throw Error("Cannot remove the main worktree");try{await o(a,["worktree","remove",...c?["--force"]:[],b])}catch(a){throw Error(u(a))}n()}function u(a){let b=a.stderr;return"string"==typeof b&&b.trim()?b.trim():a instanceof Error?a.message:String(a)}},25252:(a,b,c)=>{"use strict";function d(a){return a.replace(/\\/g,"/")}function e(){return globalThis.__piAdditionalAllowedRoots||(globalThis.__piAdditionalAllowedRoots=new Set),globalThis.__piAdditionalAllowedRoots}function f(a){if(!a)return;let b=d(a);e().add(b),globalThis.__piAllowedRootsCache?.roots.add(b)}c.d(b,{HM:()=>e,Nw:()=>d,wz:()=>f})},40402:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{BR:()=>u,DK:()=>w,O8:()=>t,Uv:()=>x,dQ:()=>n,eP:()=>v,mD:()=>o,os:()=>r,u1:()=>s});var e=c(75430),f=c(29021),g=c(33873),h=c(12039),i=c(67264),j=c(23808),k=c(6999),l=a([e,k]);async function m(){let a=await e.SessionManager.listAll(),b=new Map;for(let c of a)b.set((0,g.normalize)(c.path),c.id);let c=[...new Set(a.map(a=>a.cwd).filter(Boolean))],d=new Map;await Promise.all(c.map(async a=>{d.set(a,await (0,j.KI)(a))}));let f=(0,k.Tu)(),h=Array.isArray(f.sessionPins)?f.sessionPins:[],l=new Set(h.filter(a=>"string"==typeof a));return a.map(a=>{t(a.id,a.path);let c=a.cwd?d.get(a.cwd):void 0;return{path:a.path,id:a.id,cwd:a.cwd,name:a.name,created:a.created instanceof Date?a.created.toISOString():String(a.created),modified:a.modified instanceof Date?a.modified.toISOString():String(a.modified),messageCount:a.messageCount,firstMessage:(0,i.CS)(a.firstMessage||"(no messages)").slice(0,B),parentSessionId:a.parentSessionPath?b.get((0,g.normalize)(a.parentSessionPath)):void 0,projectRoot:c?.projectRoot??a.cwd,pinned:l.has(a.id),importedFrom:a.importedFrom,...c?.branch?{worktreeBranch:c.branch}:{}}})}async function n(){let a=globalThis.__piSessionListGeneration??0;if(globalThis.__piSessionListCache&&Date.now()-globalThis.__piSessionListCache.ts<A)return globalThis.__piSessionListCache.data;if(globalThis.__piSessionListPromise&&globalThis.__piSessionListPromiseGeneration===a)return globalThis.__piSessionListPromise;let b=m().then(b=>((globalThis.__piSessionListGeneration??0)===a&&(globalThis.__piSessionListCache={data:b,ts:Date.now()}),b)).finally(()=>{globalThis.__piSessionListPromise===b&&(globalThis.__piSessionListPromise=void 0,globalThis.__piSessionListPromiseGeneration=void 0)});return globalThis.__piSessionListPromise=b,globalThis.__piSessionListPromiseGeneration=a,b}[e,k]=l.then?(await l)():l;let A=1e4,B=300,C=null;function o(){C||(C=setTimeout(()=>{C=null,globalThis.__piSessionListGeneration=(globalThis.__piSessionListGeneration??0)+1,globalThis.__piSessionListCache=void 0},300))}function p(){return globalThis.__piSessionPathCache||(globalThis.__piSessionPathCache=new Map),globalThis.__piSessionPathCache}function q(){return globalThis.__piPathToSessionIdCache||(globalThis.__piPathToSessionIdCache=new Map),globalThis.__piPathToSessionIdCache}async function r(a){let b=p().get(a);return b||(await n(),p().get(a)??null)}async function s(a){let b=(0,g.normalize)(a),c=q().get(b);return c||(await n(),q().get(b))}function t(a,b){let c=(0,g.normalize)(b),d=p(),e=q(),f=d.get(a),h=e.get(c);f&&f!==c&&e.get(f)===a&&e.delete(f),h&&h!==a&&d.get(h)===c&&d.delete(h),d.set(a,c),e.set(c,a);let i=p();for(q();i.size>4096;){let a=i.keys().next().value;if(void 0===a)break;u(a)}}function u(a){let b=p(),c=q(),d=b.get(a);b.delete(a),d&&c.get(d)===a&&c.delete(d)}function v(a){let b=(0,f.openSync)(a,"r");try{let a=[],c=0,d=!1;for(;c<65536&&!d;){let e=Buffer.allocUnsafe(Math.min(4096,65536-c)),g=(0,f.readSync)(b,e,0,e.length,c);if(0===g)break;let h=e.subarray(0,g),i=h.indexOf(10);a.push(-1===i?h:h.subarray(0,i)),c+=g,d=-1!==i}if(!d&&c>=65536)return null;let e=Buffer.concat(a).toString("utf8").trimEnd();if(!e)return null;try{let a=JSON.parse(e);return"session"===a.type?a:null}catch{return null}}finally{(0,f.closeSync)(b)}}function w(a){return e.SessionManager.open(a).getEntries()}function x(a,b,c={}){let d=new Map;for(let b of a)d.set(b.id,b);let f=(0,e.buildSessionContext)(a,b,d),g=(0,e.buildContextEntries)(a,b,d),i=[],j=[];for(let a of g){let b=function(a,b){switch(a.type){case"message":{let c=b.deferToolResultImages?function(a){if("toolResult"!==a.role)return a;let b=0,c=0,d=new Set,e=a.content.filter(a=>{let e=function(a){let b,c;if(!z(a)||"image"!==a.type||("string"==typeof a.data?(b=a.data,c="string"==typeof a.mimeType?a.mimeType:void 0):z(a.source)&&"base64"===a.source.type&&"string"==typeof a.source.data&&(b=a.source.data,c="string"==typeof a.source.media_type?a.source.media_type:void 0),!b))return null;let d=b.endsWith("==")?2:+!!b.endsWith("=");return{bytes:Math.max(0,Math.floor(3*b.length/4)-d),mime:c}}(a);return!e||(b+=1,c+=e.bytes,e.mime&&d.add(e.mime),!1)});if(0===b)return a;let f=d.size>0?`: ${[...d].join(", ")}`:"";return e.push({type:"text",text:`[${b} tool result image${1===b?"":"s"} omitted from initial history payload${f}, ~${c} bytes]`}),{...a,content:e}}((0,h.B)(a.message)):(0,h.B)(a.message);if(!b.deferThinking||"assistant"!==c.role)return c;return{...c,content:c.content.map(a=>"thinking"===a.type&&""!==a.thinking.trim()?{...a,thinking:"",deferred:!0}:a)}}case"compaction":return{role:"custom",customType:"compaction",content:a.summary,display:!0,details:{tokensBefore:a.tokensBefore,firstKeptEntryId:a.firstKeptEntryId},timestamp:y(a.timestamp)};case"branch_summary":if(!a.summary)return null;return{role:"user",content:`*The conversation briefly explored another branch and returned with this summary:*
|
|
2
2
|
|
|
3
3
|
${a.summary}`,timestamp:y(a.timestamp)};case"custom_message":return{role:"custom",customType:a.customType,content:a.content,display:a.display,details:a.details,timestamp:y(a.timestamp)};default:return null}}(a,c);b&&(i.push(b),j.push(a.id))}return{messages:i,entryIds:j,thinkingLevel:f.thinkingLevel,model:f.model}}function y(a){let b=Date.parse(a);return Number.isNaN(b)?void 0:b}function z(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}d()}catch(a){d(a)}})},67264:(a,b,c)=>{"use strict";c.d(b,{CS:()=>l,MJ:()=>k,Md:()=>g,UY:()=>h,g0:()=>j,wI:()=>i});let d="normal",e="full",f="auto";function g(){return{collaborationMode:d,tokenMode:e,toolApprovalMode:f,permissionRules:{allow:[],ask:[],deny:[]}}}function h(a){return"normal"===a||"plan"===a||"goal"===a?a:d}function i(a){return"economy"===a||"delivery"===a||"full"===a?a:e}function j(a){return"ask"===a||"auto"===a||"yolo"===a?a:f}let k=new Set(["read","grep","find","ls","bash_output","get_tools","get_commands","get_session_stats"]);function l(a){if(!a)return"";let b=a.replace(/^\uFEFF/,""),c=b;if((b=b.replace(/<(?:economy|delivery|goal)-profile>\n?[\s\S]*?<\/(?:economy|delivery|goal)-profile>\n*(?:Goal:\s*[^\n]*\n?)?/g,""))===c){let a=/^\s*<(?:economy|delivery|goal)-profile>\s*/.exec(b);if(a){let c=b.slice(a[0].length).match(/^[^.]*?\.\s+([\s\S]*)$/);b=c?c[1]:""}}return(b=b.replace(/^You are in PLAN MODE\.[\s\S]*?\n(?=\n|$)/,"")).replace(/^\s*\n/,"").trimStart()}},78335:()=>{},96487:()=>{}};
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";exports.id=6429,exports.ids=[6429],exports.modules={4504:(a,b,c)=>{c.d(b,{LF:()=>e,aA:()=>l,bo:()=>i,eG:()=>k});var d=c(29021);let e=`Continue pursuing the active goal. Do the next useful work, then report your disposition:
|
|
2
2
|
- "continue" with the next concrete step;
|
|
3
3
|
- "complete" only when fully done and verified;
|
|
4
|
-
- "blocked" when only the user can unblock you.`,f=["goal complete","[goal: complete]","goal is complete"],g=["goal blocked","[goal: blocked]","blocked:"];function h(a){return`${a}.goal.json`}function i(a){let b=h(a);if(!(0,d.existsSync)(b))return j();try{var c;let a=JSON.parse((0,d.readFileSync)(b,"utf8"));if(!a||1!==a.version||!a.state||"object"!=typeof a.state)return j();let e=a.state;return{status:(c=e.status,["idle","running","paused","blocked","budget_limited","complete"].includes(c)?c:"idle"),goalText:"string"==typeof e.goalText?e.goalText:null,turnsUsed:Number.isFinite(e.turnsUsed)?e.turnsUsed:0,turnsLimit:Number.isFinite(e.turnsLimit)?e.turnsLimit:10,noProgressTurns:Number.isFinite(e.noProgressTurns)?e.noProgressTurns:0,noProgressLimit:Number.isFinite(e.noProgressLimit)?e.noProgressLimit:4,tokensUsed:Number.isFinite(e.tokensUsed)?e.tokensUsed:0,tokenBudget:null===e.tokenBudget||Number.isFinite(e.tokenBudget)?e.tokenBudget??null:null,timeUsedSeconds:Number.isFinite(e.timeUsedSeconds)?e.timeUsedSeconds:0,startedAt:Number.isFinite(e.startedAt)?e.startedAt:void 0,updatedAt:Number.isFinite(e.updatedAt)?e.updatedAt:void 0}}catch{return j()}}function j(){return{status:"idle",goalText:null,turnsUsed:0,turnsLimit:10,noProgressTurns:0,noProgressLimit:4,tokensUsed:0,tokenBudget:null,timeUsedSeconds:0}}function k(a,b){let c=h(a),e=`${c}.tmp`;try{(0,d.writeFileSync)(e,JSON.stringify({version:1,state:b}),{encoding:"utf8",mode:384}),(0,d.renameSync)(e,c)}catch{try{(0,d.rmSync)(e,{force:!0})}catch{}}}class l{constructor(a){this.continuationArmed=!1,this.turnStartMs=0,this.onChanged=null,this.state=a?i(a):j()}hydrate(a){this.state={...a}}getState(){return{...this.state}}isRunning(){return"running"===this.state.status}hasActiveGoal(){return"idle"!==this.state.status}isContinuable(){return"running"===this.state.status}isContinuationArmed(){return this.continuationArmed}armContinuation(){this.continuationArmed=!0}disarmContinuation(){this.continuationArmed=!1}onAgentStart(){this.continuationArmed=!1,this.turnStartMs=Date.now()}setOnChanged(a){this.onChanged=a}commit(a){a.updatedAt=Date.now(),this.state=a,this.onChanged?.(this.getState())}start(a,b=null){let c=Date.now(),d=b??this.state.tokenBudget??null,e={status:"running",goalText:a.trim(),turnsUsed:0,turnsLimit:this.state.turnsLimit,noProgressTurns:0,noProgressLimit:this.state.noProgressLimit,tokensUsed:0,tokenBudget:d,timeUsedSeconds:0,startedAt:c,updatedAt:c};return this.commit(e),this.getState()}pause(){return"running"!==this.state.status||this.commit({...this.state,status:"paused"}),this.getState()}resume(){return"paused"!==this.state.status&&"blocked"!==this.state.status||this.commit({...this.state,status:"running"}),this.getState()}stop(){if("idle"===this.state.status)return this.getState();let a=j();return a.turnsLimit=this.state.turnsLimit,a.noProgressLimit=this.state.noProgressLimit,this.commit(a),this.continuationArmed=!1,this.getState()}edit(a){if("idle"===this.state.status)return this.getState();let b="complete"===this.state.status||"budget_limited"===this.state.status?"running":this.state.status;return this.commit({...this.state,goalText:a.trim(),status:b}),this.getState()}settleTurn(a,b,c){if("running"!==this.state.status)return{verdict:{action:"continue"},state:this.getState()};let d=(a??"").toLowerCase(),e=this.turnStartMs>0?Math.max(0,Math.round((Date.now()-this.turnStartMs)/1e3)):0,h=this.state.tokensUsed+Math.max(0,b),i=this.state.timeUsedSeconds+e,j=this.state.turnsUsed+1;if(f.some(a=>d.includes(a))){let a={...this.state,turnsUsed:j,tokensUsed:h,timeUsedSeconds:i};return this.commit({...a,status:"complete"}),{verdict:{action:"complete"},state:this.getState()}}if(g.some(a=>d.includes(a))){let a={...this.state,turnsUsed:j,tokensUsed:h,timeUsedSeconds:i};return this.commit({...a,status:"blocked"}),{verdict:{action:"blocked"},state:this.getState()}}let k=0===c?this.state.noProgressTurns+1:0;return null!==this.state.tokenBudget&&h>=this.state.tokenBudget?(this.commit({...this.state,turnsUsed:j,tokensUsed:h,timeUsedSeconds:i,noProgressTurns:k,status:"budget_limited"}),{verdict:{action:"budget_limited"},state:this.getState()}):k>=this.state.noProgressLimit?(this.commit({...this.state,turnsUsed:j,tokensUsed:h,timeUsedSeconds:i,noProgressTurns:k,status:"blocked"}),{verdict:{action:"blocked"},state:this.getState()}):j>=this.state.turnsLimit?(this.commit({...this.state,turnsUsed:j,tokensUsed:h,timeUsedSeconds:i,noProgressTurns:k,status:"paused"}),{verdict:{action:"pause"},state:this.getState()}):(this.commit({...this.state,turnsUsed:j,tokensUsed:h,timeUsedSeconds:i,noProgressTurns:k}),{verdict:{action:"continue"},state:this.getState()})}}},7859:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Bp:()=>n,Dm:()=>m,YB:()=>j,fr:()=>l,y8:()=>k});var e=c(29021),f=c(33873),g=c(75430),h=c(6999),i=a([g,h]);[g,h]=i.then?(await i)():i;let o="titleModel";function j(){let a=(0,h.Tu)()[o];return"string"==typeof a&&a.length>0?a:null}async function k(a){await (0,h.o$)(b=>(null===a||""===a?delete b[o]:b[o]=a,{settings:b}))}function l(){let a=(0,f.join)((0,g.getAgentDir)(),"models.json");if(!(0,e.existsSync)(a))return{providers:{}};try{let b=JSON.parse((0,e.readFileSync)(a,"utf8"));return null!==b&&"object"==typeof b?b:{providers:{}}}catch{return{providers:{}}}}function m(a){let b=a.providers;if(!b||"object"!=typeof b)return[];let c=[];for(let[a,d]of Object.entries(b)){let b=d?.models;if(Array.isArray(b))for(let d of b)"string"==typeof d?.id&&0!==d.id.length&&c.push({provider:a,id:d.id,reasoning:!0===d.reasoning,label:`${a}/${d.id}`})}return c.sort((a,b)=>a.label.localeCompare(b.label))}function n(a,b){return b.some(b=>b.label===a)}d()}catch(a){d(a)}})},11301:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{hH:()=>s,oH:()=>r,wF:()=>q});var e=c(73024),f=c(76760),g=c(75430),h=c(8102),i=a([g]);g=(i.then?(await i)():i)[0];let t=new Set([400,401,402,403,404,406,408,409,413,422,429,451,500,502,503,504]),u=new Set(["opencode-zen-external","opencode-zen-switch","opencode-zen-runtime","opencode-zen-sync"]);function j(){return(0,f.join)((0,g.getAgentDir)(),"pi-web-error-log.json")}function k(){globalThis.__piErrorLogState||(globalThis.__piErrorLogState={loaded:!1,entries:[]});let a=globalThis.__piErrorLogState;if(!a.loaded){a.loaded=!0;try{if((0,e.existsSync)(j())){let b=JSON.parse((0,e.readFileSync)(j(),"utf8"));if(Array.isArray(b)){let c=b.filter(l).slice(-500),d=c.filter(a=>!u.has(a.source));d.length!==c.length&&p(d),a.entries=d}}}catch{a.entries=[]}}return a}function l(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.id&&"string"==typeof a.timestamp&&("error"===a.level||"warning"===a.level||"info"===a.level)&&"string"==typeof a.source&&"string"==typeof a.message}function m(a){return a.replace(/https?:\/\/[^\s/@]+:[^\s/@]+@/gi,"https://[redacted]@").replace(/Bearer\s+[A-Za-z0-9._~+/=-]+/gi,"Bearer [redacted]").replace(/\bsk-[A-Za-z0-9_-]{8,}\b/g,"sk-[redacted]").replace(/\b(?:oc|opencode|zen)[_-]?[A-Za-z0-9._~-]{12,}\b/gi,"[key-redacted]").replace(/((?:api[_-]?key|token|password|secret)\s*[:=]\s*)([^\s,;]+)/gi,"$1[redacted]")}function n(a){return a.length>2e4?`${a.slice(0,2e4)}…`:a}function o(a){let b=a.match(/\bHTTP\s+(\d{3})\b|\bstatus(?:\s+code)?\s*[:=]?\s*(\d{3})\b|\b(4\d{2}|5\d{2})\b/i),c=Number(b?.[1]??b?.[2]??b?.[3]);return t.has(c)?c:void 0}function p(a){try{(0,h.$)(j(),JSON.stringify(a,null,2))}catch{}}function q(a){let b=k(),c=n(m(a.message.trim())),d=a.details?n(m(a.details)):void 0,e={id:`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`,timestamp:new Date().toISOString(),level:a.level??"error",source:a.source??"unknown",...void 0!==a.statusCode?{statusCode:a.statusCode}:void 0!==o(c)?{statusCode:o(c)}:{},...a.provider?{provider:a.provider}:{},...a.model?{model:a.model}:{},...a.sessionId?{sessionId:a.sessionId}:{},message:c||"Unknown error",...d?{details:d}:{}};return b.entries.push(e),b.entries.length>500&&b.entries.splice(0,b.entries.length-500),p(b.entries),e}function r(a={}){let b=a.query?.trim().toLocaleLowerCase(),c=Math.min(Math.max(a.limit??200,1),500),d=void 0!==a.source&&u.has(a.source);return k().entries.filter(a=>d||!u.has(a.source)).filter(b=>void 0===a.statusCode||b.statusCode===a.statusCode).filter(b=>!a.level||b.level===a.level).filter(b=>!a.source||b.source===a.source).filter(a=>!b||[a.message,a.details,a.provider,a.model,a.source].filter(Boolean).some(a=>a.toLocaleLowerCase().includes(b))).slice().reverse().slice(0,c)}function s(){k().entries=[],p([])}d()}catch(a){d(a)}})},18904:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{IR:()=>m,Ln:()=>j,py:()=>l});var e=c(75430),f=c(7859),g=c(37171),h=a([e,f]);[e,f]=h.then?(await h)():h;let n=null;async function i(a){let b=Date.now();if(n&&b-n.at<6e4)return n.data;let c=await a.getAvailable();return n={data:c,at:b},c}function j(){n=null}function k(a,b){return a.provider===b.provider&&a.id===b.modelId}async function l(a,b,c={}){let d=(0,f.fr)().providers??{},h=new Set;for(let[a,b]of Object.entries(d)){let c=(0,g.du)(b);for(let[b,d]of Object.entries(c))!0===d.hidden&&h.add(`${a}/${b}`)}let j=(b??[]).map(a=>a.trim()).filter(Boolean),k=[],m=[],n={},o=[];if(0===j.length)k=await i(a);else{let b=await (0,e.resolveModelScopeWithDiagnostics)(j,a);for(let c of(m=b.scopedModels,k=b.scopedModels.length>0?b.scopedModels.map(a=>a.model):await i(a),o.push(...b.diagnostics.map(a=>a.message)),m))c.thinkingLevel&&(n[`${c.model.provider}/${c.model.id}`]=c.thinkingLevel)}return c.includeHidden||(k=k.filter(a=>!h.has(`${a.provider}/${a.id}`))),{visible:k,scopedModels:c.includeHidden||k.length===m.length?m:m.filter(a=>!h.has(`${a.model.provider}/${a.model.id}`)),thinkingLevelPins:n,warnings:o}}function m(a,b={}){let c=b.requestedModel?a.visible.find(a=>k(a,b.requestedModel)):void 0;if(b.requestedModel&&!c)throw Error(`Model is not available in the enabled scope: ${b.requestedModel.provider}/${b.requestedModel.modelId}`);let d=c?a.scopedModels.find(a=>k(a.model,{provider:c.provider,modelId:c.id})):void 0,e=!c&&b.defaultModel?a.scopedModels.find(a=>k(a.model,b.defaultModel)):void 0,f=c?void 0:e??a.scopedModels[0],g=c||f||!b.defaultModel?void 0:a.visible.find(a=>k(a,b.defaultModel)),h=c??f?.model??g,i=d??f,j=b.thinkingLevel??i?.thinkingLevel;return{...h?{model:h}:{},...j?{thinkingLevel:j}:{},scopedModels:[...a.scopedModels]}}d()}catch(a){d(a)}})},28967:(a,b,c)=>{function d(){return globalThis.__piModelsCacheState||(globalThis.__piModelsCacheState={entries:new Map,inFlight:new Map,generation:0}),globalThis.__piModelsCacheState}function e(){let a=d();a.generation+=1,a.entries.clear(),a.inFlight.clear()}function f(a,b){let c=d(),e=c.entries.get(a);if(e&&e.expiresAt>Date.now())return Promise.resolve(e.data);if(e)return c.inFlight.has(a)||g(c,a,b).catch(()=>{}),Promise.resolve(e.data);let f=c.inFlight.get(a);return f||g(c,a,b)}function g(a,b,c){let d=a.inFlight.get(b);if(d)return d;let e=a.generation,f=Promise.resolve().then(c).then(c=>{if(a.generation===e&&a.inFlight.get(b)===f){let d=Date.now();for(let[b,c]of a.entries)c.expiresAt<=d&&a.entries.delete(b);for(;a.entries.size>=32;){let b=a.entries.keys().next().value;if(void 0===b)break;a.entries.delete(b)}a.entries.set(b,{data:c,expiresAt:d+6e4})}return c}).finally(()=>{a.inFlight.get(b)===f&&a.inFlight.delete(b)});return a.inFlight.set(b,f),f}c.d(b,{k:()=>e,r:()=>f})},30590:(a,b,c)=>{c.d(b,{o:()=>d});async function d(a,b,c){if(!b.model&&!b.thinkingLevel)return{modelDefaultChanged:!1};let d=!1;return b.model&&c.model&&b.model.provider===c.model.provider&&b.model.modelId===c.model.modelId&&(a.setDefaultModelAndProvider(c.model.provider,c.model.modelId),d=!0),b.thinkingLevel&&(c.supportsThinking||"off"!==c.thinkingLevel)&&a.setDefaultThinkingLevel(c.thinkingLevel),await a.flush(),{modelDefaultChanged:d}}},36193:(a,b,c)=>{c.d(b,{LD:()=>m,kP:()=>o,ni:()=>n});var d=c(67264);function e(a){if(!a)return[];let b=[];for(let c of a){let a=function(a){let b=a.trim();if(!b)return null;let c=b.indexOf("="),d=b.indexOf("(");if(c>0&&(d<0||c<d)){let a=b.slice(0,c).trim();return a?{tool:a,subject:b.slice(c+1),literal:!0}:null}if(d>=0&&b.endsWith(")")){let a=b.slice(0,d).trim();return a?{tool:a,subject:b.slice(d+1,-1)}:null}return{tool:b}}(c);a&&b.push(a)}return b}function f(a){return void 0===a.subject?a.tool:a.literal?`${a.tool}=${a.subject}`:`${a.tool}(${a.subject})`}function g(a){return a.includes("*")||a.includes("?")}function h(a,b){return void 0===b.subject||""!==a&&(b.literal||!g(b.subject)?a===b.subject:(function(a){let b="^";for(let c of a)"*"===c?b+=".*":"?"===c?b+=".":b+=c.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return RegExp(b+"$")})(b.subject).test(a))}function i(a,b){return a.toLowerCase()===b.toLowerCase()}function j(a,b,c){for(let d of a)if(i(d.tool,b)&&h(c,d))return!0;return!1}function k(a){let b=a.trim();return!!b&&!!(/\$\(/.test(b)||/`/.test(b)||/(^|\s)(python|python3|node|ruby|perl|php)\s+-[a-z]*c(\s|$)/i.test(b)||/(^|\s)(sh|bash|zsh)\s+-c(\s|$)/i.test(b)||/(^|\s)(sudo|su)\s/i.test(b)||/;\s*[a-z]/i.test(b)||/\|\s*(sh|bash|zsh|python|python3|node)\b/i.test(b)||/\|\s*tee\b/i.test(b))}let l=["ls","cat","head","tail","grep","rg","find","wc","echo","pwd","cd","git status","git diff","git log","git branch","git remote","git stash list","git show","git ls-files","which","type","env","file","stat","du","df","history","man","less","more","tree","git diff --","git log --","curl -I","curl --head"];function m(a,b,c={}){let e=c.mode??"auto",f=c.readOnly??d.MJ.has(b.toLowerCase()),n=function(a,b){if("bash"===a.toLowerCase()){let a=b?.command;return"string"==typeof a&&a.trim()?`command:${a.trim()}`:""}let c=b??{},d="string"==typeof c.source_path?c.source_path:"",e="string"==typeof c.destination_path?c.destination_path:"";if(d&&e)return e!==d?`${d}\u0000${e}`:d;for(let a of["path","file_path","file","glob","pattern","directory"]){let b=c[a];if("string"==typeof b&&b)return b}return""}(b,c.args),o="bash"===b.toLowerCase(),p=o&&n.startsWith("command:")?n.slice(8):"";if(j(a.deny,b,n))return"deny";if(o&&p){let c=k(p);return j(a.allow,b,n)&&!c?"allow":j(a.ask,b,n)?"ask":c?a.allow.some(a=>i(a.tool,b)&&void 0!==a.subject&&!g(a.subject)&&h(n,a))||"yolo"===e?"allow":"ask":!function(a){let b=a.trim();if(!b||k(b)||/[;&|>]/.test(b))return!1;let c=b.toLowerCase();for(let a of l)if(c===a||c.startsWith(a+" "))return!0;return!1}(p)?"ask"===e?"ask":"allow":"allow"}return j(a.allow,b,n)?"allow":j(a.ask,b,n)?"ask":f?"allow":"ask"===e?"ask":"allow"}function n(a){return{allow:e(a?.allow),ask:e(a?.ask),deny:e(a?.deny)}}function o(a){return{allow:a.allow.map(f),ask:a.ask.map(f),deny:a.deny.map(f)}}},37171:(a,b,c)=>{c.d(b,{S4:()=>h,du:()=>g});let d=["name","reasoning","contextWindow","maxTokens","thinkingLevelMap","hidden"];function e(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function f(a){let b=a?.modelOverrides;if(!e(b))return{};let c={};for(let[a,d]of Object.entries(b))e(d)&&(c[a]={...d});return c}function g(a){let b=function(a){let b={},c=a?.models;if(!Array.isArray(c))return b;for(let a of c)e(a)&&"string"==typeof a.id&&a.id&&(b[a.id]={...a});return b}(a),c=f(a),d=new Set([...Object.keys(b),...Object.keys(c)]),g={};for(let a of d)g[a]={...b[a]??{},...c[a]??{}};return g}function h(a,b){let c=a?{...a}:{},g=f(a),h=Array.isArray(a?.models)?a.models.filter(e).map(a=>({...a})):[];for(let[a,c]of Object.entries(b)){let b={...g[a]??{}},f=h.findIndex(b=>b.id===a),i=f>=0?h[f]:void 0;for(let[a,f]of Object.entries(c)){if(!d.includes(a))continue;i&&delete i[a];let c="thinkingLevelMap"===a&&e(f)&&0===Object.keys(f).length?null:f;null===c?delete b[a]:b[a]=c}(i&&Object.keys(i).every(a=>"id"===a)&&h.splice(f,1),Object.keys(b).length>0)?g[a]=b:delete g[a]}return h.length>0?c.models=h:Array.isArray(a?.models)&&delete c.models,Object.keys(g).length>0?c.modelOverrides=g:delete c.modelOverrides,c}},43671:(a,b,c)=>{c.d(b,{Gc:()=>g,ov:()=>h,pj:()=>i,wx:()=>j});var d=c(55511),e=c(29021);function f(a){return`${a}.queue.json`}function g(a,b,c){return{id:(0,d.randomUUID)(),kind:a,text:b,...c&&c.length>0?{images:c}:{},queuedAt:Date.now()}}function h(a){let b=f(a);if(!(0,e.existsSync)(b))return[];try{let a=JSON.parse((0,e.readFileSync)(b,"utf8"));if(!a||1!==a.version||!Array.isArray(a.entries))return[];return a.entries.filter(a=>!!a&&("steer"===a.kind||"followUp"===a.kind)&&"string"==typeof a.text)}catch{return[]}}function i(a,b){if(!a)return;let c=f(a),g=`${c}.tmp-${process.pid}-${(0,d.randomUUID)()}`;try{(0,e.writeFileSync)(g,JSON.stringify({version:1,entries:b}),"utf8"),(0,e.renameSync)(g,c)}catch(a){try{(0,e.rmSync)(g,{force:!0})}catch{}console.error(`[pi-web] failed to persist queue sidecar ${c}:`,a instanceof Error?a.message:String(a))}}function j(a){try{(0,e.rmSync)(f(a),{force:!0})}catch{}}},44271:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{B:()=>o,createAsyncBashTools:()=>m});var e=c(31421),f=c(75430),g=c(84229),h=a([f]);f=(h.then?(await h)():h)[0];class n{append(a){for(this.totalBytes+=a.length,this.tail.push(a),this.tailBytes+=a.length;this.tailBytes>258048&&this.tail.length>1;){let a=this.tail.shift();this.tailBytes-=a.length}if(this.headBytes<4096){let b=4096-this.headBytes;a.length<=b?(this.head.push(a),this.headBytes+=a.length):(this.head.push(a.subarray(0,b)),this.headBytes=4096)}}get hasOmission(){return this.totalBytes>this.headBytes+this.tailBytes}get omittedBytes(){return Math.max(0,this.totalBytes-this.headBytes-this.tailBytes)}toSnapshot(){if(!this.hasOmission)return Buffer.concat(this.tail).toString("utf-8");let a=[...this.head];return a.push(Buffer.from(`
|
|
4
|
+
- "blocked" when only the user can unblock you.`,f=["goal complete","[goal: complete]","goal is complete"],g=["goal blocked","[goal: blocked]","blocked:"];function h(a){return`${a}.goal.json`}function i(a){let b=h(a);if(!(0,d.existsSync)(b))return j();try{var c;let a=JSON.parse((0,d.readFileSync)(b,"utf8"));if(!a||1!==a.version||!a.state||"object"!=typeof a.state)return j();let e=a.state;return{status:(c=e.status,["idle","running","paused","blocked","budget_limited","complete"].includes(c)?c:"idle"),goalText:"string"==typeof e.goalText?e.goalText:null,turnsUsed:Number.isFinite(e.turnsUsed)?e.turnsUsed:0,turnsLimit:Number.isFinite(e.turnsLimit)?e.turnsLimit:10,noProgressTurns:Number.isFinite(e.noProgressTurns)?e.noProgressTurns:0,noProgressLimit:Number.isFinite(e.noProgressLimit)?e.noProgressLimit:4,tokensUsed:Number.isFinite(e.tokensUsed)?e.tokensUsed:0,tokenBudget:null===e.tokenBudget||Number.isFinite(e.tokenBudget)?e.tokenBudget??null:null,timeUsedSeconds:Number.isFinite(e.timeUsedSeconds)?e.timeUsedSeconds:0,startedAt:Number.isFinite(e.startedAt)?e.startedAt:void 0,updatedAt:Number.isFinite(e.updatedAt)?e.updatedAt:void 0}}catch{return j()}}function j(){return{status:"idle",goalText:null,turnsUsed:0,turnsLimit:10,noProgressTurns:0,noProgressLimit:4,tokensUsed:0,tokenBudget:null,timeUsedSeconds:0}}function k(a,b){let c=h(a),e=`${c}.tmp`;try{(0,d.writeFileSync)(e,JSON.stringify({version:1,state:b}),{encoding:"utf8",mode:384}),(0,d.renameSync)(e,c)}catch{try{(0,d.rmSync)(e,{force:!0})}catch{}}}class l{constructor(a){this.continuationArmed=!1,this.turnStartMs=0,this.onChanged=null,this.state=a?i(a):j()}hydrate(a){this.state={...a}}getState(){return{...this.state}}isRunning(){return"running"===this.state.status}hasActiveGoal(){return"idle"!==this.state.status}isContinuable(){return"running"===this.state.status}isContinuationArmed(){return this.continuationArmed}armContinuation(){this.continuationArmed=!0}disarmContinuation(){this.continuationArmed=!1}onAgentStart(){this.continuationArmed=!1,this.turnStartMs=Date.now()}setOnChanged(a){this.onChanged=a}commit(a){a.updatedAt=Date.now(),this.state=a,this.onChanged?.(this.getState())}start(a,b=null){let c=Date.now(),d=b??this.state.tokenBudget??null,e={status:"running",goalText:a.trim(),turnsUsed:0,turnsLimit:this.state.turnsLimit,noProgressTurns:0,noProgressLimit:this.state.noProgressLimit,tokensUsed:0,tokenBudget:d,timeUsedSeconds:0,startedAt:c,updatedAt:c};return this.commit(e),this.getState()}pause(){return"running"!==this.state.status||this.commit({...this.state,status:"paused"}),this.getState()}resume(){return"paused"!==this.state.status&&"blocked"!==this.state.status||this.commit({...this.state,status:"running"}),this.getState()}stop(){if("idle"===this.state.status)return this.getState();let a=j();return a.turnsLimit=this.state.turnsLimit,a.noProgressLimit=this.state.noProgressLimit,this.commit(a),this.continuationArmed=!1,this.getState()}edit(a){if("idle"===this.state.status)return this.getState();let b="complete"===this.state.status||"budget_limited"===this.state.status?"running":this.state.status;return this.commit({...this.state,goalText:a.trim(),status:b}),this.getState()}settleTurn(a,b,c){if("running"!==this.state.status)return{verdict:{action:"continue"},state:this.getState()};let d=(a??"").toLowerCase(),e=this.turnStartMs>0?Math.max(0,Math.round((Date.now()-this.turnStartMs)/1e3)):0,h=this.state.tokensUsed+Math.max(0,b),i=this.state.timeUsedSeconds+e,j=this.state.turnsUsed+1;if(f.some(a=>d.includes(a))){let a={...this.state,turnsUsed:j,tokensUsed:h,timeUsedSeconds:i};return this.commit({...a,status:"complete"}),{verdict:{action:"complete"},state:this.getState()}}if(g.some(a=>d.includes(a))){let a={...this.state,turnsUsed:j,tokensUsed:h,timeUsedSeconds:i};return this.commit({...a,status:"blocked"}),{verdict:{action:"blocked"},state:this.getState()}}let k=0===c?this.state.noProgressTurns+1:0;return null!==this.state.tokenBudget&&h>=this.state.tokenBudget?(this.commit({...this.state,turnsUsed:j,tokensUsed:h,timeUsedSeconds:i,noProgressTurns:k,status:"budget_limited"}),{verdict:{action:"budget_limited"},state:this.getState()}):k>=this.state.noProgressLimit?(this.commit({...this.state,turnsUsed:j,tokensUsed:h,timeUsedSeconds:i,noProgressTurns:k,status:"blocked"}),{verdict:{action:"blocked"},state:this.getState()}):j>=this.state.turnsLimit?(this.commit({...this.state,turnsUsed:j,tokensUsed:h,timeUsedSeconds:i,noProgressTurns:k,status:"paused"}),{verdict:{action:"pause"},state:this.getState()}):(this.commit({...this.state,turnsUsed:j,tokensUsed:h,timeUsedSeconds:i,noProgressTurns:k}),{verdict:{action:"continue"},state:this.getState()})}}},7859:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Bp:()=>n,Dm:()=>m,YB:()=>j,fr:()=>l,y8:()=>k});var e=c(29021),f=c(33873),g=c(75430),h=c(6999),i=a([g,h]);[g,h]=i.then?(await i)():i;let o="titleModel";function j(){let a=(0,h.Tu)()[o];return"string"==typeof a&&a.length>0?a:null}async function k(a){await (0,h.o$)(b=>(null===a||""===a?delete b[o]:b[o]=a,{settings:b}))}function l(){let a=(0,f.join)((0,g.getAgentDir)(),"models.json");if(!(0,e.existsSync)(a))return{providers:{}};try{let b=JSON.parse((0,e.readFileSync)(a,"utf8"));return null!==b&&"object"==typeof b?b:{providers:{}}}catch{return{providers:{}}}}function m(a){let b=a.providers;if(!b||"object"!=typeof b)return[];let c=[];for(let[a,d]of Object.entries(b)){let b=d?.models;if(Array.isArray(b))for(let d of b)"string"==typeof d?.id&&0!==d.id.length&&c.push({provider:a,id:d.id,reasoning:!0===d.reasoning,label:`${a}/${d.id}`})}return c.sort((a,b)=>a.label.localeCompare(b.label))}function n(a,b){return b.some(b=>b.label===a)}d()}catch(a){d(a)}})},11301:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{hH:()=>s,oH:()=>r,wF:()=>q});var e=c(73024),f=c(76760),g=c(75430),h=c(8102),i=a([g]);g=(i.then?(await i)():i)[0];let t=new Set([400,401,402,403,404,406,408,409,413,422,429,451,500,502,503,504]),u=new Set(["opencode-zen-external","opencode-zen-switch","opencode-zen-runtime","opencode-zen-sync"]);function j(){return(0,f.join)((0,g.getAgentDir)(),"pi-web-error-log.json")}function k(){globalThis.__piErrorLogState||(globalThis.__piErrorLogState={loaded:!1,entries:[]});let a=globalThis.__piErrorLogState;if(!a.loaded){a.loaded=!0;try{if((0,e.existsSync)(j())){let b=JSON.parse((0,e.readFileSync)(j(),"utf8"));if(Array.isArray(b)){let c=b.filter(l).slice(-500),d=c.filter(a=>!u.has(a.source));d.length!==c.length&&p(d),a.entries=d}}}catch{a.entries=[]}}return a}function l(a){return!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.id&&"string"==typeof a.timestamp&&("error"===a.level||"warning"===a.level||"info"===a.level)&&"string"==typeof a.source&&"string"==typeof a.message}function m(a){return a.replace(/https?:\/\/[^\s/@]+:[^\s/@]+@/gi,"https://[redacted]@").replace(/Bearer\s+[A-Za-z0-9._~+/=-]+/gi,"Bearer [redacted]").replace(/\bsk-[A-Za-z0-9_-]{8,}\b/g,"sk-[redacted]").replace(/\b(?:oc|opencode|zen)[_-]?[A-Za-z0-9._~-]{12,}\b/gi,"[key-redacted]").replace(/((?:api[_-]?key|token|password|secret)\s*[:=]\s*)([^\s,;]+)/gi,"$1[redacted]")}function n(a){return a.length>2e4?`${a.slice(0,2e4)}…`:a}function o(a){let b=a.match(/\bHTTP\s+(\d{3})\b|\bstatus(?:\s+code)?\s*[:=]?\s*(\d{3})\b|\b(4\d{2}|5\d{2})\b/i),c=Number(b?.[1]??b?.[2]??b?.[3]);return t.has(c)?c:void 0}function p(a){try{(0,h.$)(j(),JSON.stringify(a,null,2))}catch{}}function q(a){let b=k(),c=n(m(a.message.trim())),d=a.details?n(m(a.details)):void 0,e={id:`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`,timestamp:new Date().toISOString(),level:a.level??"error",source:a.source??"unknown",...void 0!==a.statusCode?{statusCode:a.statusCode}:void 0!==o(c)?{statusCode:o(c)}:{},...a.provider?{provider:a.provider}:{},...a.model?{model:a.model}:{},...a.sessionId?{sessionId:a.sessionId}:{},message:c||"Unknown error",...d?{details:d}:{}};return b.entries.push(e),b.entries.length>500&&b.entries.splice(0,b.entries.length-500),p(b.entries),e}function r(a={}){let b=a.query?.trim().toLocaleLowerCase(),c=Math.min(Math.max(a.limit??200,1),500),d=void 0!==a.source&&u.has(a.source);return k().entries.filter(a=>d||!u.has(a.source)).filter(b=>void 0===a.statusCode||b.statusCode===a.statusCode).filter(b=>!a.level||b.level===a.level).filter(b=>!a.source||b.source===a.source).filter(a=>!b||[a.message,a.details,a.provider,a.model,a.source].filter(Boolean).some(a=>a.toLocaleLowerCase().includes(b))).slice().reverse().slice(0,c)}function s(){k().entries=[],p([])}d()}catch(a){d(a)}})},18904:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{IR:()=>m,Ln:()=>j,py:()=>l});var e=c(75430),f=c(7859),g=c(37171),h=a([e,f]);[e,f]=h.then?(await h)():h;let n=null;async function i(a,b){let c=Date.now();if(n&&c-n.at<6e4)return n.data;let d=await a.getAvailable(void 0,b?{signal:b}:void 0);return n={data:d,at:c},d}function j(){n=null}function k(a,b){return a.provider===b.provider&&a.id===b.modelId}async function l(a,b,c={}){let d=(0,f.fr)().providers??{},h=new Set;for(let[a,b]of Object.entries(d)){let c=(0,g.du)(b);for(let[b,d]of Object.entries(c))!0===d.hidden&&h.add(`${a}/${b}`)}let j=(b??[]).map(a=>a.trim()).filter(Boolean),k=[],m=[],n={},o=[];if(0===j.length)k=await i(a,c.signal);else{let b=await (0,e.resolveModelScopeWithDiagnostics)(j,a);for(let d of(m=b.scopedModels,k=b.scopedModels.length>0?b.scopedModels.map(a=>a.model):await i(a,c.signal),o.push(...b.diagnostics.map(a=>a.message)),m))d.thinkingLevel&&(n[`${d.model.provider}/${d.model.id}`]=d.thinkingLevel)}return c.includeHidden||(k=k.filter(a=>!h.has(`${a.provider}/${a.id}`))),{visible:k,scopedModels:c.includeHidden||k.length===m.length?m:m.filter(a=>!h.has(`${a.model.provider}/${a.model.id}`)),thinkingLevelPins:n,warnings:o}}function m(a,b={}){let c=b.requestedModel?a.visible.find(a=>k(a,b.requestedModel)):void 0;if(b.requestedModel&&!c)throw Error(`Model is not available in the enabled scope: ${b.requestedModel.provider}/${b.requestedModel.modelId}`);let d=c?a.scopedModels.find(a=>k(a.model,{provider:c.provider,modelId:c.id})):void 0,e=!c&&b.defaultModel?a.scopedModels.find(a=>k(a.model,b.defaultModel)):void 0,f=c?void 0:e??a.scopedModels[0],g=c||f||!b.defaultModel?void 0:a.visible.find(a=>k(a,b.defaultModel)),h=c??f?.model??g,i=d??f,j=b.thinkingLevel??i?.thinkingLevel;return{...h?{model:h}:{},...j?{thinkingLevel:j}:{},scopedModels:[...a.scopedModels]}}d()}catch(a){d(a)}})},28967:(a,b,c)=>{function d(){return globalThis.__piModelsCacheState||(globalThis.__piModelsCacheState={entries:new Map,inFlight:new Map,generation:0}),globalThis.__piModelsCacheState}function e(){let a=d();a.generation+=1,a.entries.clear(),a.inFlight.clear()}function f(a,b){let c=d(),e=c.entries.get(a);if(e&&e.expiresAt>Date.now())return Promise.resolve(e.data);if(e)return c.inFlight.has(a)||g(c,a,b).catch(()=>{}),Promise.resolve(e.data);let f=c.inFlight.get(a);return f||g(c,a,b)}function g(a,b,c){let d=a.inFlight.get(b);if(d)return d;let e=a.generation,f=Promise.resolve().then(c).then(c=>{if(a.generation===e&&a.inFlight.get(b)===f){let d=Date.now();for(let[b,c]of a.entries)c.expiresAt<=d&&a.entries.delete(b);for(;a.entries.size>=32;){let b=a.entries.keys().next().value;if(void 0===b)break;a.entries.delete(b)}a.entries.set(b,{data:c,expiresAt:d+6e4})}return c}).finally(()=>{a.inFlight.get(b)===f&&a.inFlight.delete(b)});return a.inFlight.set(b,f),f}c.d(b,{k:()=>e,r:()=>f})},30590:(a,b,c)=>{c.d(b,{o:()=>d});async function d(a,b,c){if(!b.model&&!b.thinkingLevel)return{modelDefaultChanged:!1};let d=!1;return b.model&&c.model&&b.model.provider===c.model.provider&&b.model.modelId===c.model.modelId&&(a.setDefaultModelAndProvider(c.model.provider,c.model.modelId),d=!0),b.thinkingLevel&&(c.supportsThinking||"off"!==c.thinkingLevel)&&a.setDefaultThinkingLevel(c.thinkingLevel),await a.flush(),{modelDefaultChanged:d}}},36193:(a,b,c)=>{c.d(b,{LD:()=>m,kP:()=>o,ni:()=>n});var d=c(67264);function e(a){if(!a)return[];let b=[];for(let c of a){let a=function(a){let b=a.trim();if(!b)return null;let c=b.indexOf("="),d=b.indexOf("(");if(c>0&&(d<0||c<d)){let a=b.slice(0,c).trim();return a?{tool:a,subject:b.slice(c+1),literal:!0}:null}if(d>=0&&b.endsWith(")")){let a=b.slice(0,d).trim();return a?{tool:a,subject:b.slice(d+1,-1)}:null}return{tool:b}}(c);a&&b.push(a)}return b}function f(a){return void 0===a.subject?a.tool:a.literal?`${a.tool}=${a.subject}`:`${a.tool}(${a.subject})`}function g(a){return a.includes("*")||a.includes("?")}function h(a,b){return void 0===b.subject||""!==a&&(b.literal||!g(b.subject)?a===b.subject:(function(a){let b="^";for(let c of a)"*"===c?b+=".*":"?"===c?b+=".":b+=c.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return RegExp(b+"$")})(b.subject).test(a))}function i(a,b){return a.toLowerCase()===b.toLowerCase()}function j(a,b,c){for(let d of a)if(i(d.tool,b)&&h(c,d))return!0;return!1}function k(a){let b=a.trim();return!!b&&!!(/\$\(/.test(b)||/`/.test(b)||/(^|\s)(python|python3|node|ruby|perl|php)\s+-[a-z]*c(\s|$)/i.test(b)||/(^|\s)(sh|bash|zsh)\s+-c(\s|$)/i.test(b)||/(^|\s)(sudo|su)\s/i.test(b)||/;\s*[a-z]/i.test(b)||/\|\s*(sh|bash|zsh|python|python3|node)\b/i.test(b)||/\|\s*tee\b/i.test(b))}let l=["ls","cat","head","tail","grep","rg","find","wc","echo","pwd","cd","git status","git diff","git log","git branch","git remote","git stash list","git show","git ls-files","which","type","env","file","stat","du","df","history","man","less","more","tree","git diff --","git log --","curl -I","curl --head"];function m(a,b,c={}){let e=c.mode??"auto",f=c.readOnly??d.MJ.has(b.toLowerCase()),n=function(a,b){if("bash"===a.toLowerCase()){let a=b?.command;return"string"==typeof a&&a.trim()?`command:${a.trim()}`:""}let c=b??{},d="string"==typeof c.source_path?c.source_path:"",e="string"==typeof c.destination_path?c.destination_path:"";if(d&&e)return e!==d?`${d}\u0000${e}`:d;for(let a of["path","file_path","file","glob","pattern","directory"]){let b=c[a];if("string"==typeof b&&b)return b}return""}(b,c.args),o="bash"===b.toLowerCase(),p=o&&n.startsWith("command:")?n.slice(8):"";if(j(a.deny,b,n))return"deny";if(o&&p){let c=k(p);return j(a.allow,b,n)&&!c?"allow":j(a.ask,b,n)?"ask":c?a.allow.some(a=>i(a.tool,b)&&void 0!==a.subject&&!g(a.subject)&&h(n,a))||"yolo"===e?"allow":"ask":!function(a){let b=a.trim();if(!b||k(b)||/[;&|>]/.test(b))return!1;let c=b.toLowerCase();for(let a of l)if(c===a||c.startsWith(a+" "))return!0;return!1}(p)?"ask"===e?"ask":"allow":"allow"}return j(a.allow,b,n)?"allow":j(a.ask,b,n)?"ask":f?"allow":"ask"===e?"ask":"allow"}function n(a){return{allow:e(a?.allow),ask:e(a?.ask),deny:e(a?.deny)}}function o(a){return{allow:a.allow.map(f),ask:a.ask.map(f),deny:a.deny.map(f)}}},37171:(a,b,c)=>{c.d(b,{S4:()=>h,du:()=>g});let d=["name","reasoning","contextWindow","maxTokens","thinkingLevelMap","hidden"];function e(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function f(a){let b=a?.modelOverrides;if(!e(b))return{};let c={};for(let[a,d]of Object.entries(b))e(d)&&(c[a]={...d});return c}function g(a){let b=function(a){let b={},c=a?.models;if(!Array.isArray(c))return b;for(let a of c)e(a)&&"string"==typeof a.id&&a.id&&(b[a.id]={...a});return b}(a),c=f(a),d=new Set([...Object.keys(b),...Object.keys(c)]),g={};for(let a of d)g[a]={...b[a]??{},...c[a]??{}};return g}function h(a,b){let c=a?{...a}:{},g=f(a),h=Array.isArray(a?.models)?a.models.filter(e).map(a=>({...a})):[];for(let[a,c]of Object.entries(b)){let b={...g[a]??{}},f=h.findIndex(b=>b.id===a),i=f>=0?h[f]:void 0;for(let[a,f]of Object.entries(c)){if(!d.includes(a))continue;i&&delete i[a];let c="thinkingLevelMap"===a&&e(f)&&0===Object.keys(f).length?null:f;null===c?delete b[a]:b[a]=c}(i&&Object.keys(i).every(a=>"id"===a)&&h.splice(f,1),Object.keys(b).length>0)?g[a]=b:delete g[a]}return h.length>0?c.models=h:Array.isArray(a?.models)&&delete c.models,Object.keys(g).length>0?c.modelOverrides=g:delete c.modelOverrides,c}},43671:(a,b,c)=>{c.d(b,{Gc:()=>g,ov:()=>h,pj:()=>i,wx:()=>j});var d=c(55511),e=c(29021);function f(a){return`${a}.queue.json`}function g(a,b,c){return{id:(0,d.randomUUID)(),kind:a,text:b,...c&&c.length>0?{images:c}:{},queuedAt:Date.now()}}function h(a){let b=f(a);if(!(0,e.existsSync)(b))return[];try{let a=JSON.parse((0,e.readFileSync)(b,"utf8"));if(!a||1!==a.version||!Array.isArray(a.entries))return[];return a.entries.filter(a=>!!a&&("steer"===a.kind||"followUp"===a.kind)&&"string"==typeof a.text)}catch{return[]}}function i(a,b){if(!a)return;let c=f(a),g=`${c}.tmp-${process.pid}-${(0,d.randomUUID)()}`;try{(0,e.writeFileSync)(g,JSON.stringify({version:1,entries:b}),"utf8"),(0,e.renameSync)(g,c)}catch(a){try{(0,e.rmSync)(g,{force:!0})}catch{}console.error(`[pi-web] failed to persist queue sidecar ${c}:`,a instanceof Error?a.message:String(a))}}function j(a){try{(0,e.rmSync)(f(a),{force:!0})}catch{}}},44271:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{B:()=>o,createAsyncBashTools:()=>m});var e=c(31421),f=c(75430),g=c(84229),h=a([f]);f=(h.then?(await h)():h)[0];class n{append(a){for(this.totalBytes+=a.length,this.tail.push(a),this.tailBytes+=a.length;this.tailBytes>258048&&this.tail.length>1;){let a=this.tail.shift();this.tailBytes-=a.length}if(this.headBytes<4096){let b=4096-this.headBytes;a.length<=b?(this.head.push(a),this.headBytes+=a.length):(this.head.push(a.subarray(0,b)),this.headBytes=4096)}}get hasOmission(){return this.totalBytes>this.headBytes+this.tailBytes}get omittedBytes(){return Math.max(0,this.totalBytes-this.headBytes-this.tailBytes)}toSnapshot(){if(!this.hasOmission)return Buffer.concat(this.tail).toString("utf-8");let a=[...this.head];return a.push(Buffer.from(`
|
|
5
5
|
... ${this.omittedBytes} bytes omitted ...
|
|
6
6
|
|
|
7
7
|
`)),a.push(...this.tail),Buffer.concat(a).toString("utf-8")}reset(){this.head=[],this.tail=[],this.headBytes=0,this.tailBytes=0,this.totalBytes=0}constructor(){this.head=[],this.tail=[],this.headBytes=0,this.tailBytes=0,this.totalBytes=0}}function i(a){if("win32"===process.platform)try{(0,e.spawn)("taskkill",["/F","/T","/PID",String(a)],{stdio:"ignore",detached:!0,windowsHide:!0})}catch{}else try{process.kill(-a,"SIGKILL")}catch{try{process.kill(a,"SIGKILL")}catch{}}}class o{spawn(a,b,c){let d,g=this.nextId++,h=(0,f.getShellConfig)(),i="stdin"===h.commandTransport,j=i?h.args:[...h.args,a],k=(0,e.spawn)(h.shell,j,{cwd:b,detached:"win32"!==process.platform,env:{...c,NO_COLOR:"1",TERM:"dumb"},stdio:["pipe","pipe","pipe"],windowsHide:!0});k.stdin?.on("error",()=>{}),i&&k.stdin?.end(a);let l=new Promise(a=>{d=a}),m={id:g,child:k,command:a,cwd:b,startedAt:Date.now(),buffer:new n,deltaBuffer:new n,exitCode:null,exited:!1,settled:l},o=a=>{m.buffer.append(a),m.deltaBuffer.append(a)};return k.stdout?.on("data",o),k.stderr?.on("data",o),k.once("exit",a=>{m.exited=!0,m.exitCode=a}),k.once("close",()=>d()),k.once("error",a=>{m.exited=!0;let b=Buffer.from(`
|
|
8
8
|
[process error] ${a.message}
|
|
9
9
|
`);m.buffer.append(b),m.deltaBuffer.append(b),d()}),this.processes.set(g,m),m}get(a){return this.processes.get(a)}writeStdin(a,b){let c=this.processes.get(a);if(!c)return{ok:!1,error:`No process with session_id ${a}`};if(c.exited)return{ok:!1,error:`Process ${a} has already exited`};if(!c.child.stdin||c.child.stdin.destroyed)return{ok:!1,error:`Process ${a} stdin is not available`};if("\x03"===b)try{c.child.kill("SIGINT")}catch{return{ok:!1,error:`Failed to send SIGINT to process ${a}`}}else try{c.child.stdin.write(b)}catch(b){return{ok:!1,error:`Failed to write to process ${a}: ${b}`}}return{ok:!0}}async poll(a,b){let c=this.processes.get(a);if(!c)return{output:`Process ${a} not found (it may have been cleaned up)`,exited:!0,exitCode:null};c.exited||await Promise.race([j(b),c.settled]);let d=c.deltaBuffer.toSnapshot();return c.deltaBuffer.reset(),{output:d,exited:c.exited,exitCode:c.exitCode}}kill(a){let b=this.processes.get(a);return!!b&&(b.child.pid&&i(b.child.pid),this.remove(a),!0)}remove(a){let b=this.processes.get(a);if(b&&b.child.pid&&function(a){try{return process.kill(-a,0),!0}catch(b){let a=b.code;return"EPERM"===a}}(b.child.pid))try{i(b.child.pid)}catch{}this.processes.delete(a)}cleanup(){for(let a of Array.from(this.processes.values()))!a.exited&&a.child.pid&&i(a.child.pid);this.processes.clear()}constructor(){this.processes=new Map,this.nextId=1}}function j(a){return new Promise(b=>setTimeout(b,a))}function k(a,b=250){return Math.max(b,Math.min(a,3e4))}function l(a){let b=[];if(a.command&&b.push(`$ ${a.command}`),a.output.trim()?b.push(a.output):b.push("(no new output)"),b.push(""),a.exited){let c=a.exitCode;0===c?b.push("Process exited successfully (code 0)."):null===c?b.push("Process exited (no exit code captured)."):b.push(`Process exited with code ${c}.`),b.push("No further interaction is possible. Do not call bash_io for this session.")}else null!==a.sessionId&&(b.push(`Process is still running (session_id: ${a.sessionId}).`),b.push(`Call bash_io with session_id ${a.sessionId} to poll for more output (leave chars empty) or to send input.`));return b.push(`Wall time: ${(a.wallMs/1e3).toFixed(1)}s`),b.join("\n")}function m(a){let b=(0,f.defineTool)({name:"bash",label:"Bash",description:"Execute a bash command in the current working directory. Spawns the command and waits up to yield_time_ms (default 2s) for output, then returns. If the command finishes within the wait, returns the full output and exit code. If the command is still running after the wait, returns the output collected so far plus a session_id - use bash_io with that session_id to poll for more output, send input, or interrupt. This is the primary shell tool; use it for all commands including ls, grep, find, builds, tests, and dev servers.",parameters:g.ZUJ.Object({command:g.ZUJ.String({description:"Bash command to execute"}),yield_time_ms:g.ZUJ.Optional(g.ZUJ.Integer({description:"Milliseconds to wait for output before returning (default: 2000, range: 250-30000). If the command is still running after this time, it continues in the background and a session_id is returned for bash_io."}))}),promptSnippet:"bash(command, yield_time_ms?): run any shell command; long-running ones return session_id for bash_io",promptGuidelines:["`bash` runs all shell commands. Short commands finish within yield_time_ms (default 2s) and return full output directly.","For commands still running after the wait, `bash` returns a `session_id` - poll it via `bash_io` (empty chars) or raise yield_time_ms for commands that need more time to produce output.","Poll a running process by calling `bash_io` with an empty `chars` string and the `session_id`.","Send input or Ctrl-C to a running process via `bash_io` with `chars` set to the input text or `\\u0003` for Ctrl-C.","After a process exits (exit code returned), do NOT call `bash_io` for that `session_id` again.","Like a human monitoring a long task: every few minutes poll the running process with bash_io, inspect the log, and decide whether to keep waiting, send input, or interrupt (Ctrl-C) and adjust."],async execute(b,c,d,e,f){let g,h=c.command,i=c.yield_time_ms?k(c.yield_time_ms):2e3,j=f.cwd,m=Date.now();try{g=a.spawn(h,j,process.env)}catch(a){throw Error(`Failed to spawn command: ${a instanceof Error?a.message:String(a)}`)}e&&e({content:[{type:"text",text:`$ ${h}
|
|
10
|
-
(spawning background process...)`}],details:{command:h,sessionId:g.id,spawning:!0}});let{output:n,exited:o,exitCode:p}=await a.poll(g.id,i),q=Date.now()-m;o&&a.remove(g.id);let r=l({output:n,exited:o,exitCode:p,sessionId:o?null:g.id,command:h,wallMs:q}),s={command:h,sessionId:o?null:g.id,exited:o,exitCode:o?p:null};return e&&e({content:[{type:"text",text:r}],details:s}),{content:[{type:"text",text:r}],details:s}}}),c=(0,f.defineTool)({name:"bash_io",label:"Interact with Background Process",description:'Interact with a background process started by bash. Can write text to the process\'s stdin, send Ctrl-C (use "\\u0003" as chars), or poll for new output (leave chars empty). Always waits yield_time_ms (default 5s) to collect output before returning. Use this to monitor long-running tasks, respond to prompts, or send additional commands.',parameters:g.ZUJ.Object({session_id:g.ZUJ.Integer({description:"The session_id returned by bash for the running process."}),chars:g.ZUJ.Optional(g.ZUJ.String({description:'Text to write to the process\'s stdin. Use "\\u0003" (Ctrl-C) to interrupt. Leave empty to just poll for output (no write). Defaults to empty.'})),yield_time_ms:g.ZUJ.Optional(g.ZUJ.Integer({description:"Milliseconds to wait for output after writing/polling (default: 5000, range: 250-30000)."}))}),promptSnippet:"bash_io(session_id, chars?, yield_time_ms?): poll or send input to a bash process",promptGuidelines:["`bash_io` interacts with a background process started by `bash` using its `session_id`.","Poll with empty `chars` to collect new output since the last poll.","Send input via `chars`; use `\\u0003` for Ctrl-C to interrupt the process.","If the process exited, `bash_io` reports the exit code and the process is cleaned up."],async execute(b,c,d,e){let f=c.session_id,g=c.chars??"",h=c.yield_time_ms?k(c.yield_time_ms,g?250:5e3):5e3,i=Date.now(),m=a.get(f);if(!m)throw Error(`No background process with session_id ${f}. The process may have exited and been cleaned up, or the ID is invalid. Use bash to start a new process.`);if(e){let a=""===g?"polling":"\x03"===g?"interrupting":"writing to";e({content:[{type:"text",text:`${a} process ${f} ($ ${m.command})`}],details:{sessionId:f,command:m.command,action:a}})}if(""!==g){let b=a.writeStdin(f,g);if(!b.ok)throw Error(b.error??"bash_io failed");await j(100)}let{output:n,exited:o,exitCode:p}=await a.poll(f,h),q=Date.now()-i;o&&a.remove(f);let r=l({output:n,exited:o,exitCode:p,sessionId:o?null:f,wallMs:q}),s={sessionId:o?null:f,exited:o,exitCode:o?p:null};return e&&e({content:[{type:"text",text:r}],details:s}),{content:[{type:"text",text:r}],details:s}}});return[b,c]}d()}catch(a){d(a)}})},56429:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{A4:()=>C,C4:()=>F,Fn:()=>G,HG:()=>I,OF:()=>N,_I:()=>D,iP:()=>L,l8:()=>J,oA:()=>E});var e=c(75430),f=c(29862),g=c(55511),h=c(29021),i=c(33873),j=c(78970),k=c(43671),l=c(28967),m=c(18904),n=c(72498),o=c(40402),p=c(30590),q=c(64735),r=c(36193),s=c(67264),t=c(71069),u=c(11301),v=c(4504),w=c(44271),x=a([e,f,m,n,o,q,u,w]);[e,f,m,n,o,q,u,w]=x.then?(await x)():x;let O=new Set(["agent_start","message_start","message_update","message_end","agent_end","entry_appended","session_info_changed","queue_update","prompt_done","agent_settled","auto_compaction_end","compaction_end"]),P=["read","bash","edit","write","grep","find","ls"];class Q extends e.Theme{constructor(){super({thinkingXhigh:""},{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 R=new Q,S=new f.KeybindingsManager(f.TUI_KEYBINDINGS);function y(a,b){if(0===b.length)return[];let c=new Set(P),d=a.getAllTools().map(a=>a.name).filter(a=>!c.has(a));return[...new Set([...b,...d])]}class T{constructor(a,b){this.inner=a,this.cwd=b,this.listeners=[],this.pendingUiResponses=new Map,this.pendingUiRequests=new Map,this.activeCustomUis=new Map,this.extensionStatuses=new Map,this.extensionWidgets=new Map,this.promptRunning=!1,this.promptPhase=null,this.extensionsBound=!1,this.extensionBindingPromise=null,this.extensionBindingError=null,this.forceEmptySystemPrompt=!1,this.unsubscribe=null,this.idleTimer=null,this.queueMirror=[],this.queueRecovery=[],this.pendingQueueHints={steer:[],followUp:[]},this.queueMutationTail=Promise.resolve(),this.onDestroyCallback=null,this.shutdownPromise=null,this._alive=!0,this.approvalPolicy=(0,r.ni)((0,q.lN)().permissionRules),this.approvalMode=(0,q.lN)().toolApprovalMode,this.pendingApprovals=new Map,this.approvalSeq=0,this.approvalHookInstalled=!1,this.goalEngine=new v.aA,this.goalTokensAccounted=0,this.goalToolCallsAccounted=0,this.goalContinuationInFlight=!1;const c=(0,q.lN)(a.sessionId);if(this.approvalMode=c.toolApprovalMode,this.approvalPolicy=(0,r.ni)(c.permissionRules),a.sessionFile){const b=(0,v.bo)(a.sessionFile);"idle"!==b.status&&this.goalEngine.hydrate(b)}}get sessionId(){return this.inner.sessionId}get sessionFile(){return this.inner.sessionFile??""}isAlive(){return this._alive}isRunning(){return this._alive&&(this.promptRunning||this.inner.isStreaming||this.inner.isCompacting||this.inner.isBashRunning)}runtimeSnapshot(){let a=this.inner.isStreaming,b=this.promptRunning,c=this.inner.isCompacting,d=this.inner.isBashRunning;return{id:this.sessionId,running:this.isRunning(),isStreaming:a,isPromptRunning:b,isCompacting:c,isBashRunning:d,phase:d?"running_command":this.promptPhase??(a||b||c?"waiting_model":null)}}start(){this.installApprovalHook(),this.goalEngine.setOnChanged(a=>{this.sessionFile&&(0,v.eG)(this.sessionFile,a),this.emit({type:"goal_state_changed",goalState:a}),L("goal_state_changed",this.sessionId,{type:"goal_state_changed",goalState:a})}),this.goalEngine.isRunning()&&this.scheduleGoalKick(),this.unsubscribe=this.inner.subscribe(a=>{("agent_end"===a.type||"message_end"===a.type||"entry_appended"===a.type||"session_info_changed"===a.type)&&(0,o.mD)(),("agent_end"===a.type||"agent_settled"===a.type||"auto_compaction_end"===a.type||"compaction_end"===a.type)&&this.resetIdleTimer(),"agent_start"===a.type&&this.goalEngine.onAgentStart(),"agent_settled"===a.type&&this.handleGoalSettled(),"queue_update"===a.type&&this.reconcileQueue(a.steering,a.followUp),O.has(a.type)&&L(a.type,this.sessionId,a),this.emit(a),H()}),this.resetIdleTimer(),H()}loadQueueRecovery(){if(!this.sessionFile)return;let a=this.inner.getSteeringMessages(),b=this.inner.getFollowUpMessages();if(a.length||b.length){this.queueRecovery=[],this.reconcileQueue([...a],[...b]);return}this.queueRecovery=(0,k.ov)(this.sessionFile)}getGoalState(){return this.goalEngine.getState()}handleGoalSettled(){if(!this.goalEngine.isRunning())return void this.goalEngine.disarmContinuation();let a=this.inner.getLastAssistantText()??"",b=0,c=0;try{let a=this.inner.sessionManager.getEntries(),d=function(a){let b=0;for(let c of a){let a=c?.message;if(!a||"assistant"!==a.role)continue;let d=a.usage;d&&(b+=(d.input??0)+(d.output??0)+(d.cacheRead??0)+(d.cacheWrite??0))}return b}(a);b=Math.max(0,d-this.goalTokensAccounted),this.goalTokensAccounted=d;let e=function(a){let b=0;for(let c of a){let a=c?.message;if(!a||"assistant"!==a.role)continue;let d=a.content;if(Array.isArray(d))for(let a of d)a&&"object"==typeof a&&"toolCall"===a.type&&(b+=1)}return b}(a);c=Math.max(0,e-this.goalToolCallsAccounted),this.goalToolCallsAccounted=e}catch{}let{verdict:d}=this.goalEngine.settleTurn(a,b,c);"continue"!==d.action?this.goalEngine.disarmContinuation():this.scheduleGoalKick()}scheduleGoalKick(){if(this.goalEngine.isRunning()&&!this.goalContinuationInFlight){if(this.goalEngine.isContinuationArmed()){this.goalEngine.disarmContinuation(),this.driveGoalContinuation();return}this.inner.isStreaming||this.promptRunning||this.inner.pendingMessageCount>0||this.driveGoalContinuation()}}driveGoalContinuation(){this.goalEngine.isRunning()&&!this.goalContinuationInFlight&&(this.goalContinuationInFlight=!0,this.inner.followUp(v.LF).catch(()=>{}).finally(()=>{this.goalContinuationInFlight=!1}))}handleGoalStartCommand(a,b){let c=this.goalEngine.start(a,b);return this.goalTokensAccounted=0,this.goalToolCallsAccounted=0,c}handleGoalStopCommand(){return this.goalEngine.stop(),this.goalTokensAccounted=0,this.goalEngine.getState()}setApprovalMode(a){this.approvalMode=a}setApprovalPolicy(a){this.approvalPolicy=a}installApprovalHook(){if(this.approvalHookInstalled||!this.inner.agent?.beforeToolCall)return;this.approvalHookInstalled=!0;let a=this.inner.agent.beforeToolCall;this.inner.agent.beforeToolCall=async b=>{let c=b.toolCall?.name??"",d=b.args,e=(0,r.LD)(this.approvalPolicy,c,{mode:this.approvalMode,readOnly:s.MJ.has(c.toLowerCase()),args:d});if("deny"===e)return{block:!0,reason:`Denied by policy rule: ${c} is not permitted.`};if("ask"===e){let a=await this.askForApproval(c,d);if(!a.approve)return{block:!0,reason:a.reason||`Rejected by user: ${c}`}}return a?a(b):void 0}}askForApproval(a,b){return new Promise(c=>{let d=`approval-${++this.approvalSeq}`,e=setTimeout(()=>{this.pendingApprovals.delete(d),this.emit({type:"tool_approval_resolved",id:d,approve:!1,reason:`Approval request timed out after 120s: ${a}`}),c({approve:!1,reason:`Approval request timed out after 120s: ${a}`})},12e4);this.pendingApprovals.set(d,{resolve:c,timer:e,toolName:a}),this.emit({type:"tool_approval_request",id:d,toolName:a,args:function(a){if(null===a||"object"!=typeof a)return a;let b={};for(let[c,d]of Object.entries(a))if(null!=d&&"content"!==c&&"data"!==c&&"newString"!==c&&"oldString"!==c){if("string"==typeof d){b[c]=d.length>200?`${d.slice(0,200)}…`:d;continue}if("number"==typeof d||"boolean"==typeof d){b[c]=d;continue}b[c]=Array.isArray(d)?`[array:${d.length}]`:"[object]"}return b}(b)})})}resolveApproval(a,b,c){let d=this.pendingApprovals.get(a);return!!d&&(this.pendingApprovals.delete(a),clearTimeout(d.timer),d.resolve({approve:b,reason:c}),!0)}rejectAllApprovals(a){for(let[b,c]of this.pendingApprovals)this.pendingApprovals.delete(b),clearTimeout(c.timer),c.resolve({approve:!1,reason:a})}getPendingApprovals(){return Array.from(this.pendingApprovals.entries()).map(([a,b])=>({id:a,toolName:b.toolName}))}pendingRecoveryView(){return this.queueRecovery.map(({id:a,kind:b,text:c,images:d,queuedAt:e})=>({id:a,kind:b,text:c,hasImages:!!d?.length,queuedAt:e}))}persistQueue(){if(!this.sessionFile)return;let a=[...this.queueRecovery,...this.queueMirror];a.length?(0,k.pj)(this.sessionFile,a):(0,k.wx)(this.sessionFile)}hintQueueImages(a,b){this.pendingQueueHints[a].push(b?.length?b:[])}reconcileQueue(a,b){let c=(a,b)=>{if(!b)return this.queueMirror.filter(b=>b.kind===a);let c=new Set;return b.map(b=>{let d=this.queueMirror.find(d=>d.kind===a&&d.text===b&&!c.has(d));if(d)return c.add(d),d;let e=(0,k.Gc)(a,b,this.pendingQueueHints[a].shift());return c.add(e),e})};this.queueMirror=[...c("steer",a),...c("followUp",b)],this.persistQueue()}async requeueEntry(a){let b=(0,j.kc)(a.images);if(b)throw Error(b);this.hintQueueImages(a.kind,a.images),"steer"===a.kind?await this.inner.steer(a.text,a.images):await this.inner.followUp(a.text,a.images)}ensureMirrored(a){this.queueMirror.find(b=>b.kind===a.kind&&b.text===a.text)||(this.queueMirror.push({...a}),this.pendingQueueHints[a.kind].pop())}async replaceLiveQueue(a,b){for(let b of(this.inner.clearQueue(),this.pendingQueueHints={steer:[],followUp:[]},a))await this.requeueEntry(b);for(let a of b)await this.requeueEntry(a);let c={steering:[...this.inner.getSteeringMessages()],followUp:[...this.inner.getFollowUpMessages()]};return this.reconcileQueue(c.steering,c.followUp),c}async withQueueMutation(a){let b,c=this.queueMutationTail;this.queueMutationTail=new Promise(a=>{b=a}),await c;try{return await a()}finally{b()}}async mutateLiveQueue(a,b){return this.withQueueMutation(async()=>{let c=this.queueMirror.filter(a=>"steer"===a.kind),d=this.queueMirror.filter(a=>"followUp"===a.kind),e=b("steer"===a?c:d),f=await this.replaceLiveQueue(c,d);return{value:e,queues:f}})}validateQueueEntries(a){for(let b of a){if("steer"!==b.kind&&"followUp"!==b.kind||"string"!=typeof b.text)continue;let a=(0,j.kc)(b.images);if(a)throw Error(a)}}runAgentContinue(){if(this.inner.isStreaming||this.inner.isBashRunning||this.promptRunning)return;let a=[...this.queueMirror];0!==a.length&&(this.queueMirror=[],this.persistQueue(),this.promptRunning=!0,this.promptPhase="waiting_model",this.bootstrapQueuedRun(a))}async bootstrapQueuedRun(a){for(let b of(this.inner.clearQueue(),this.pendingQueueHints={steer:[],followUp:[]},a))try{await this.inner.prompt(b.text,b.images?.length?{images:b.images}:void 0)}catch(a){this.promptRunning=!1,this.promptPhase=null,this.resetIdleTimer(),(0,o.mD)(),this.emit({type:"prompt_error",errorMessage:a instanceof Error?a.message:String(a)}),this.emit({type:"prompt_done"});return}this.promptRunning=!1,this.promptPhase=null,this.resetIdleTimer(),this.emit({type:"prompt_done"})}setForceEmptySystemPrompt(a){this.forceEmptySystemPrompt=a,this.applyForcedEmptySystemPrompt()}beginExtensionBinding(a={}){this.ensureExtensionsBound(a).catch(a=>{console.error("[pi-web] failed to dispatch session_start to extensions:",a instanceof Error?a.message:a)})}ensureExtensionsBound(a={}){return(a.forceEmptySystemPrompt&&(this.forceEmptySystemPrompt=!0),this.extensionsBound)?(this.applyForcedEmptySystemPrompt(),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,this.applyForcedEmptySystemPrompt(),console.log(`[pi-web] session_start dispatched to extensions for session ${this.inner.sessionId}`)})().catch(a=>{throw this.extensionBindingError=a,a})),this.extensionBindingPromise)}static{this.EXTENSION_BIND_TIMEOUT_MS=15e3}async waitForExtensionsBound(){let a=this.extensionBindingPromise;if(a){let b=new Promise((b,c)=>{let d=setTimeout(()=>c(Error("Extension binding timed out; continuing without waiting")),T.EXTENSION_BIND_TIMEOUT_MS);a.finally(()=>clearTimeout(d))});await Promise.race([a,b])}this.extensionBindingError&&console.warn("[pi-web] extension binding failed, continuing:",this.extensionBindingError)}shouldWaitForExtensions(a){return"prompt"===a||"steer"===a||"follow_up"===a||"get_commands"===a}applyForcedEmptySystemPrompt(){this.forceEmptySystemPrompt&&this.inner.agent.state&&(this.inner.agent.state.systemPrompt="")}emit(a){for(let b of this.listeners)b(a)}resetIdleTimer(){this.idleTimer&&clearTimeout(this.idleTimer),this.idleTimer=setTimeout(()=>{this.isRunning()?this.resetIdleTimer():this.shutdown().catch(a=>{console.error("[pi-web] failed to shut down idle session:",a instanceof Error?a.message:a)})},18e5)}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,o.O8)(this.inner.sessionId,b)}onEvent(a){for(let b of(this.listeners.push(a),this.pendingUiRequests.values()))a(b);return()=>{let b=this.listeners.indexOf(a);-1!==b&&this.listeners.splice(b,1)}}onDestroy(a){this.onDestroyCallback=a}async send(a){this.resetIdleTimer();let b=a.type;if("prompt"===b||"steer"===b||"follow_up"===b||"requeue_at"===b){let b=(0,j.kc)(a.images);if(b)throw Error(b)}switch(this.shouldWaitForExtensions(b)&&await this.waitForExtensionsBound(),b){case"prompt":{if(this.inner.isBashRunning)throw Error("Cannot send a prompt while a shell command is running");let b=a.images,c=a.streamingBehavior;return c&&this.inner.isStreaming&&this.hintQueueImages("followUp"===c?"followUp":"steer",b),this.promptRunning=!0,this.promptPhase=String(a.message??"").trimStart().startsWith("/")?"running_command":"waiting_model",H(),this.inner.prompt(a.message,{...b?.length?{images:b}:{},...c?{streamingBehavior:c}:{},source:"rpc"}).then(()=>{this.promptRunning=!1,this.promptPhase=null,this.resetIdleTimer(),c||this.emit({type:"prompt_done"}),H()}).catch(a=>{this.promptRunning=!1,this.promptPhase=null,this.resetIdleTimer(),(0,o.mD)(),this.emit({type:"prompt_error",errorMessage:a instanceof Error?a.message:String(a)}),c||this.emit({type:"prompt_done"}),H()}),null}case"abort":return await this.inner.abort(),null;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.promptRunning,isBashRunning:this.inner.isBashRunning,isCompacting:this.inner.isCompacting,phase:this.runtimeSnapshot().phase,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()]},pendingRecovery:this.pendingRecoveryView(),contextUsage:b?{percent:b.percent,contextWindow:b.contextWindow,tokens:b.tokens}:null,systemPrompt:this.inner.agent.state?.systemPrompt??"",thinkingLevel:this.inner.agent.state?.thinkingLevel??"off",extensionStatuses:this.getExtensionStatuses(),extensionWidgets:this.getExtensionWidgets(),goalState:this.goalEngine.getState()}}case"goal_start":{let b=String(a.goalText??"").trim();if(!b)throw Error("goal_start requires a non-empty goalText");let c=a.tokenBudget,d="number"==typeof c&&Number.isFinite(c)&&c>0?Math.floor(c):null,e=this.handleGoalStartCommand(b,d);return this.scheduleGoalKick(),{goalState:e}}case"goal_pause":try{this.inner.clearQueue(),this.queueMirror=[],this.persistQueue()}catch{}return{goalState:this.goalEngine.pause()};case"goal_resume":{let a=this.goalEngine.resume();return"running"===a.status&&(this.goalEngine.armContinuation(),this.scheduleGoalKick()),{goalState:a}}case"goal_stop":try{this.inner.clearQueue(),this.queueMirror=[],this.persistQueue()}catch{}return{goalState:this.handleGoalStopCommand()};case"goal_edit":{let b=String(a.goalText??"").trim();if(!b)throw Error("goal_edit requires a non-empty goalText");let c=this.goalEngine.edit(b);return"running"===c.status&&this.scheduleGoalKick(),{goalState:c}}case"get_goal_state":return{goalState:this.goalEngine.getState()};case"set_model":{let{provider:b,modelId:c}=a,d=this.inner.modelRuntime.getModel(b,c);if(!d)try{await this.inner.modelRuntime.refresh({allowNetwork:!1}),d=this.inner.modelRuntime.getModel(b,c)}catch{d=void 0}if(!d)throw Error(`Model not found: ${b}/${c}`);return await this.inner.setModel(d),(0,l.k)(),(0,o.mD)(),{id:d.id,provider:d.provider}}case"fork":{let b,c=a.entryId,d=this.inner.sessionManager,f=this.inner.sessionFile;if(!d.isPersisted())return{cancelled:!0};if(!f)throw Error("Persisted session is missing a session file");let g=d.getEntry(c);if(!g)throw Error("Invalid entry ID for forking");let h=d.getSessionDir();if(g.parentId){let a=e.SessionManager.open(f,h).createBranchedSession(g.parentId);if(!a)throw Error("Failed to create forked session");b=a}else{let a=e.SessionManager.create(d.getCwd(),h);a.newSession({parentSession:f}),b=a.getSessionFile()}let i=e.SessionManager.open(b,h).getSessionId();return(0,o.O8)(i,b),(0,o.mD)(),await this.shutdown(),{cancelled:!1,newSessionId:i}}case"navigate_tree":return{cancelled:(await this.inner.navigateTree(a.targetId,{})).cancelled};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,o.mD)(),null}case"compact":try{return await this.inner.compact(a.customInstructions)}finally{(0,o.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,o.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"clear_queue":return this.queueMirror=[],this.pendingQueueHints={steer:[],followUp:[]},this.persistQueue(),this.inner.clearQueue();case"move_queue":{let b=a.kind,c=Number(a.fromIndex),d=Number(a.toIndex);if("steer"!==b&&"followUp"!==b||!Number.isInteger(c)||!Number.isInteger(d))throw Error("move_queue requires a queue kind and integer indexes");let{queues:e}=await this.mutateLiveQueue(b,a=>{if(c<0||c>=a.length||d<0||d>=a.length)throw Error("move_queue index out of range");let[b]=a.splice(c,1);a.splice(d,0,b)});return e}case"recall_queue_item":{let b=a.kind,c=Number(a.index);if("steer"!==b&&"followUp"!==b||!Number.isInteger(c))throw Error("recall_queue_item requires a queue kind and integer index");let{value:d,queues:e}=await this.mutateLiveQueue(b,a=>{if(c<0||c>=a.length)throw Error("recall_queue_item index out of range");let[b]=a.splice(c,1);return b});return{entry:{text:d.text,images:d.images??[]},...e}}case"requeue_at":{let b=a.kind,c=Number(a.index),d=a.text;if("steer"!==b&&"followUp"!==b||!Number.isInteger(c)||!d?.trim())throw Error("requeue_at requires a queue kind, integer index, and text");let e=a.images,{queues:f}=await this.mutateLiveQueue(b,a=>{if(c<0||c>a.length)throw Error("requeue_at index out of range");a.splice(c,0,(0,k.Gc)(b,d,e))});return f}case"remove_queue_item":{let b=a.kind,c=Number(a.index);if("steer"!==b&&"followUp"!==b||!Number.isInteger(c))throw Error("remove_queue_item requires a queue kind and integer index");let{queues:d}=await this.mutateLiveQueue(b,a=>{if(c<0||c>=a.length)throw Error("remove_queue_item index out of range");a.splice(c,1)});return d}case"resolve_recovery":{let b=new Set(a.keep??[]),c=new Set(a.discard??[]),d=!0===a.continueRun,e=0;for(let a of this.queueRecovery)b.has(a.id)&&(await this.requeueEntry(a),this.ensureMirrored(a),e+=1);return this.queueRecovery=this.queueRecovery.filter(a=>!b.has(a.id)&&!c.has(a.id)),this.persistQueue(),d&&e>0&&this.runAgentContinue(),{remaining:this.pendingRecoveryView(),kept:e}}case"export_queue":return{live:this.queueMirror.map(a=>({...a})),recovery:this.queueRecovery.map(a=>({...a}))};case"import_queue":{let b=a.entries;if(!Array.isArray(b))throw Error("import_queue requires entries[]");this.validateQueueEntries(b);let c=0;for(let a of b){if("steer"!==a.kind&&"followUp"!==a.kind||"string"!=typeof a.text)continue;let b=(0,k.Gc)(a.kind,a.text,a.images);await this.requeueEntry(b),this.ensureMirrored(b),c+=1}return this.persistQueue(),{imported:c,steering:[...this.inner.getSteeringMessages()],followUp:[...this.inner.getFollowUpMessages()]}}case"stage_recovery":{let b=a.entries;if(!Array.isArray(b))throw Error("stage_recovery requires entries[]");this.validateQueueEntries(b);let c=0;for(let a of b)("steer"===a.kind||"followUp"===a.kind)&&"string"==typeof a.text&&(this.queueRecovery.push((0,k.Gc)(a.kind,a.text,a.images)),c+=1);return this.persistQueue(),{staged:c,pendingRecovery:this.pendingRecoveryView()}}case"steer":{let b=a.images;this.hintQueueImages("steer",b),this.promptPhase="waiting_model",H();try{await this.inner.steer(a.message,b?.length?b:void 0)}finally{this.promptPhase=null,H()}return null}case"follow_up":{let b=a.images;this.hintQueueImages("followUp",b),this.promptPhase="waiting_model",H();try{await this.inner.followUp(a.message,b?.length?b:void 0)}finally{this.promptPhase=null,H()}return null}case"get_tools":{let a=this.inner.getAllTools(),b=new Set(this.inner.getActiveToolNames());return a.map(a=>({name:a.name,description:a.description,active:b.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.setForceEmptySystemPrompt(0===b.length),this.inner.setActiveToolsByName(y(this.inner,b)),this.applyForcedEmptySystemPrompt(),null}case"reload":return await this.waitForExtensionsBound(),this.extensionStatuses.clear(),this.extensionWidgets.clear(),this.syncProjectTrust(),await this.inner.reload(),"function"!=typeof this.inner.bindExtensions&&this.inner.extensionRunner.setUIContext?.(this.createExtensionUiContext(),"rpc"),this.applyForcedEmptySystemPrompt(),{success:!0};case"abort_compaction":return this.inner.abortCompaction(),null;case"resolve_approval":return{resolved:this.resolveApproval(a.id,!!a.approve,a.reason)};case"set_approval_mode":{let b=a.mode;if("ask"!==b&&"auto"!==b&&"yolo"!==b)throw Error(`Invalid approval mode: ${String(b)}`);return this.setApprovalMode(b),null}case"set_approval_policy":{let b=a.policy;return this.setApprovalPolicy((0,r.ni)(b)),null}case"get_approval_state":return{mode:this.approvalMode,pending:this.getPendingApprovals()};case"extension_ui_response":return this.resolveExtensionUiResponse(a),null;case"extension_ui_input":return this.handleExtensionUiInput(a.id,a.data),null;case"bash":{if(this.promptRunning||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});try{let a=await b;return this.persistBashOnlySession(),a}finally{this.resetIdleTimer(),(0,o.mD)(),H()}}case"abort_bash":return this.inner.abortBash(),H(),null;default:throw Error(`Unsupported command: ${b}`)}}destroy(){if(this._alive){for(let a of(this._alive=!1,this.idleTimer&&clearTimeout(this.idleTimer),this.inner.isBashRunning&&this.inner.abortBash(),this.unsubscribe?.(),this.sessionFile&&this.goalEngine.hasActiveGoal()&&(0,v.eG)(this.sessionFile,this.goalEngine.getState()),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.rejectAllApprovals("Session closed while approval was pending");try{this.inner.dispose()}finally{this.onDestroyCallback?.(),H()}}}async shutdown(){return this.shutdownPromise?this.shutdownPromise:this._alive?(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)}await this.inner.extensionRunner.emit?.({type:"session_shutdown",reason:"quit"})}finally{this.destroy()}})(),this.shutdownPromise):void 0}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())}getCustomUiWidth(a){if(!a||"object"!=typeof a)return t.p1;let b=a.overlayOptions,c="function"==typeof b?b():b;if(!c||"object"!=typeof c)return t.p1;let d=c.width;return"number"==typeof d&&Number.isFinite(d)?Math.max(40,Math.min(140,Math.round(d))):t.p1}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=(0,g.randomUUID)(),d=this.getCustomUiWidth(b);return new Promise(b=>{let e=!1,f=(0,t.TQ)(()=>{let a=this.activeCustomUis.get(c);a&&this.emitCustomUiRender(c,a)},d),g=a=>{e||(e=!0,b(a))},h=a=>{this.activeCustomUis.has(c)?this.closeCustomUi(c,a):g(a)};Promise.resolve().then(()=>a(f,R,S,h)).then(a=>{if(e){try{a?.dispose?.()}catch{}return}if(!a||"object"!=typeof a||"function"!=typeof a.render)return void g(void 0);let b={component:a,width:d,resolve:a=>g(a),settled:!1};this.activeCustomUis.set(c,b),this.emitCustomUiRender(c,b)}).catch(a=>{e||(this.emit({type:"extension_error",extensionPath:`custom-ui:${c}`,event:"custom_ui",error:a instanceof Error?a.message:String(a)}),g(void 0))})})}requestExtensionUi(a,b,c,d,e){if(e?.aborted)return Promise.resolve(b);let f=(0,g.randomUUID)(),h={type:"extension_ui_request",id:f,...a,...d?{timeout:d,expiresAt:Date.now()+d}:{}};return new Promise(a=>{let g,i=()=>{g&&clearTimeout(g),e?.removeEventListener("abort",k),this.pendingUiRequests.delete(f),this.pendingUiResponses.delete(f)},j=b=>{i(),a(b)},k=()=>j(b);d&&(g=setTimeout(()=>j(b),d)),e?.addEventListener("abort",k,{once:!0}),this.pendingUiRequests.set(f,h),this.pendingUiResponses.set(f,{resolve:a=>j(c(a)),cancel:()=>j(b)}),this.emit(h)})}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)=>{(void 0===b||Array.isArray(b))&&(void 0===b?this.extensionWidgets.delete(a):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 R},getAllThemes:()=>[],getTheme:()=>void 0,setTheme:()=>({success:!1,error:"Theme switching is not supported in pi-web extension UI yet"}),getToolsExpanded:()=>!1,setToolsExpanded:()=>{}}}syncProjectTrust(){this.inner.settingsManager.setProjectTrusted((0,n.Y1)(this.cwd,(0,e.getAgentDir)()).trusted)}createExtensionCommandContextActions(){return{waitForIdle:async()=>{let a=this.inner.agent;await a.waitForIdle?.()},newSession:async()=>({cancelled:!0}),fork:async()=>({cancelled:!0}),navigateTree:async(a,b)=>({cancelled:(await this.inner.navigateTree(a,{summarize:b?.summarize})).cancelled}),switchSession:async()=>({cancelled:!0}),reload:async()=>{this.extensionStatuses.clear(),this.extensionWidgets.clear(),this.syncProjectTrust(),await this.inner.reload({beforeSessionStart:()=>{this.inner.extensionRunner.setUIContext?.(this.createExtensionUiContext(),"rpc")}}),this.applyForcedEmptySystemPrompt()}}}}function z(){if(!globalThis.__piSessions){globalThis.__piSessions=new Map;let a=()=>Promise.allSettled(Array.from(globalThis.__piSessions?.values()??[],a=>a.shutdown()));process.once("exit",()=>globalThis.__piSessions?.forEach(a=>a.destroy())),process.once("SIGINT",()=>{a().finally(()=>process.exit(130))}),process.once("SIGTERM",()=>{a().finally(()=>process.exit(143))})}return globalThis.__piSessions}function A(a){let b=(0,i.resolve)(a);try{return(0,h.realpathSync)(b)}catch{return b}}function B(){return globalThis.__piStartingSessionCwds||(globalThis.__piStartingSessionCwds=new Map),globalThis.__piStartingSessionCwds}function C(a){return z().get(a)}function D(a){let b=A(a);return!!B().has(b)||Array.from(z().values()).some(a=>A(a.cwd)===b&&a.isRunning())}async function E(a){let b=A(a),c=Array.from(z().values()).filter(a=>A(a.cwd)===b);return await Promise.all(c.map(a=>a.shutdown())),c.length}function F(){let a=[];for(let[b,c]of z()){if(!c.isAlive())continue;let d=c.runtimeSnapshot();d.running&&a.push({...d,id:d.id||b})}return a}function G(a){return globalThis.__piRunningListeners??=new Set,globalThis.__piRunningListeners.add(a),()=>globalThis.__piRunningListeners?.delete(a)}let U="";function H(){let a=globalThis.__piRunningListeners;if(!a||0===a.size){U="";return}let b=F(),c=JSON.stringify(b);if(c!==U)for(let d of(U=c,a))try{d(b)}catch{}}function I(){return F().map(a=>a.id)}function J(a){return globalThis.__piSessionBusListeners??=new Set,globalThis.__piSessionBusListeners.add(a),()=>globalThis.__piSessionBusListeners?.delete(a)}let V=new Map;function K(a){let b=globalThis.__piSessionBusListeners;if(b&&0!==b.size)for(let c of b)try{c(a)}catch{}}function L(a,b,c){let d=globalThis.__piSessionBusListeners;if(!d||0===d.size)return;if("message_update"!==a)return void K({type:a,sessionId:b,payload:c});let e=V.get(b),f={type:a,sessionId:b,payload:c};e?(clearTimeout(e.timer),e.event=f):V.set(b,{event:f,timer:setTimeout(()=>{let a=V.get(b);a&&(V.delete(b),K(a.event))},80)})}function M(a,b){let c=Date.now(),{provider:d,modelId:e,sessionId:f}=b,g=a.result.bind(a);a.result=async()=>{let a,b,h,i,j,k=await g();return a=Date.now()-c,b="error"===k.stopReason||"aborted"===k.stopReason,h=k.errorMessage?.trim(),j=(i=h?.match(/\bHTTP\s+(\d{3})\b|\bstatus(?:\s+code)?\s*[:=]?\s*(\d{3})\b/))?Number(i[1]??i[2]):void 0,(0,u.wF)({level:b?"error":"info",source:"model-call",provider:d,model:e,sessionId:f,...void 0!==j?{statusCode:j}:{},message:b?`模型调用失败 ${d}/${e}${h?`:${h}`:""}`:`模型调用成功 ${d}/${e}`,details:b?void 0:`耗时 ${a}ms`}),k};let h=a[Symbol.asyncIterator].bind(a);return a[Symbol.asyncIterator]=()=>{let a=h();return{next:()=>a.next().catch(a=>{throw(0,u.wF)({level:"error",source:"model-call",provider:d,model:e,sessionId:f,message:`模型调用传输错误 ${d}/${e}:${a instanceof Error?a.message:String(a)}`}),a})}},a}async function N(a,b,d,f={}){let g,h,i,{toolNames:j,initialModel:k,thinkingLevel:q}=f,r=z(),s=(globalThis.__piStartLocks||(globalThis.__piStartLocks=new Map),globalThis.__piStartLocks),t=r.get(a);if(t?.isAlive())return{session:t,realSessionId:a};let u=s.get(a);if(u)return u;if(b)g=e.SessionManager.open(b,void 0);else{if(!d)throw Error("cwd is required for a new session");g=e.SessionManager.create(d,void 0)}let v=g.getCwd(),x=(h=B(),i=A(v),h.set(i,(h.get(i)??0)+1),()=>{let a=(h.get(i)??1)-1;a>0?h.set(i,a):h.delete(i)}),C=(async()=>{let b;(0,e.initTheme)();let d=(0,e.getAgentDir)();void 0!==j&&(b=0===j.length?[]:void 0);let f=(0,n.Fk)(v,d),h=await (0,e.createAgentSessionServices)({cwd:v,agentDir:d,...f?{resourceLoaderReloadOptions:f}:{}}),{createAsyncBashTools:i}=await Promise.resolve().then(c.bind(c,44271)),s=new w.B,t=i(s),u=await (0,m.py)(h.modelRuntime,h.settingsManager.getEnabledModels()),x=h.settingsManager.getDefaultProvider(),z=h.settingsManager.getDefaultModel(),A=g.getBranch().some(a=>"message"===a.type)?{scopedModels:[...u.scopedModels]}:(0,m.IR)(u,{...k?{requestedModel:k}:{},...x&&z?{defaultModel:{provider:x,modelId:z}}:{},...q?{thinkingLevel:q}:{}}),{session:B}=await (0,e.createAgentSessionFromServices)({services:h,sessionManager:g,...A.model?{model:A.model}:{},...A.thinkingLevel?{thinkingLevel:A.thinkingLevel}:{},...A.scopedModels.length>0?{scopedModels:A.scopedModels}:{},...void 0!==b?{tools:b}:{},customTools:t}),C=B.agent,D=C.streamFunction;C.streamFunction=(b,c,d)=>{let e=D(b,c,d);return e instanceof Promise?e.then(c=>M(c,{provider:b.provider,modelId:b.id,sessionId:a})):M(e,{provider:b.provider,modelId:b.id,sessionId:a})},(await (0,p.o)(h.settingsManager,{...k?{model:k}:{},...q?{thinkingLevel:q}:{}},{...B.model?{model:{provider:B.model.provider,modelId:B.model.id}}:{},thinkingLevel:B.agent.state?.thinkingLevel??"off",supportsThinking:B.supportsThinking()})).modelDefaultChanged&&(0,l.k)(),j&&j.length>0&&B.setActiveToolsByName(y(B,j));let E=new T(B,v),F=s.cleanup.bind(s);j?.length===0&&E.setForceEmptySystemPrompt(!0),E.start(),E.loadQueueRecovery();let G=B.sessionId,H=B.sessionFile;return H&&(0,o.O8)(G,H),E.onDestroy(()=>{F(),r.delete(G)}),r.set(G,E),E.beginExtensionBinding({forceEmptySystemPrompt:j?.length===0}),{session:E,realSessionId:G}})().finally(()=>{s.delete(a),x()});return s.set(a,C),C}d()}catch(a){d(a)}})},64735:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{S3:()=>k,lN:()=>j});var e=c(6999),f=c(67264),g=c(36193),h=a([e]);e=(h.then?(await h)():h)[0];let l="modes",m="modesPerSession";function i(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b=a.permissionRules,c=(0,g.kP)((0,g.ni)(b));return{collaborationMode:(0,f.UY)(a.collaborationMode),tokenMode:(0,f.wI)(a.tokenMode),toolApprovalMode:(0,f.g0)(a.toolApprovalMode),permissionRules:{allow:Array.isArray(c.allow)?c.allow:[],ask:Array.isArray(c.ask)?c.ask:[],deny:Array.isArray(c.deny)?c.deny:[]}}}function j(a){let b=(0,f.Md)(),c=(0,e.Tu)();if(a){let b=c[m];if(b&&"object"==typeof b&&!Array.isArray(b)){let c=i(b[a]);if(c)return c}}return i(c[l])??b}async function k(a,b){let c={collaborationMode:(0,f.UY)(a.collaborationMode),tokenMode:(0,f.wI)(a.tokenMode),toolApprovalMode:(0,f.g0)(a.toolApprovalMode),permissionRules:a.permissionRules};await (0,e.o$)(a=>{if(b){let d=a[m]??{};d[b]=c,a[m]=d}else a[l]=c;return{settings:a}})}d()}catch(a){d(a)}})},71069:(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})}},72498:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Fk:()=>i,Y1:()=>g,er:()=>h});var e=c(75430),f=a([e]);function g(a,b){return a&&(0,e.hasTrustRequiringProjectResources)(a)?{requiresTrust:!0,trusted:!0===new e.ProjectTrustStore(b).get(a)}:{requiresTrust:!1,trusted:!0}}function h(a,b){let c=g(a,b);return c.requiresTrust?(new e.ProjectTrustStore(b).set(a,!0),{requiresTrust:!0,trusted:!0}):c}function i(a,b){if(!g(a,b).requiresTrust)return;let c=new e.ProjectTrustStore(b);return{resolveProjectTrust:async()=>!0===c.get(a)}}e=(f.then?(await f)():f)[0],d()}catch(a){d(a)}})},78970:(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(!function(a){var b;if(!a||"object"!=typeof a||"image"!==a.type||"string"!=typeof a.data||"string"!=typeof a.mimeType||(b=a.mimeType,!/^image\/[A-Za-z0-9][A-Za-z0-9!#$&^_.+-]*$/.test(b)))return!1;let c=function(a){if(!a||a.length%4!=0)return null;let b=a.endsWith("==")?2:+!!a.endsWith("="),c=a.length-b,d=null;for(let b=0;b<c;b+=1){var e;let c=(e=a.charCodeAt(b))>=65&&e<=90?e-65:e>=97&&e<=122?e-97+26:e>=48&&e<=57?e-48+52:43===e?62:47===e?63:null;if(null===c)return null;d=c}for(let b=c;b<a.length;b+=1)if("="!==a[b])return null;return 2===b&&d%16!=0||1===b&&d%4!=0?null:a.length/4*3-b}(a.data);return null!==c&&c<=0xa00000}(b))return"Each image must be valid base64 image data with an image MIME type and be 10MB or smaller";return null}}};
|
|
10
|
+
(spawning background process...)`}],details:{command:h,sessionId:g.id,spawning:!0}});let{output:n,exited:o,exitCode:p}=await a.poll(g.id,i),q=Date.now()-m;o&&a.remove(g.id);let r=l({output:n,exited:o,exitCode:p,sessionId:o?null:g.id,command:h,wallMs:q}),s={command:h,sessionId:o?null:g.id,exited:o,exitCode:o?p:null};return e&&e({content:[{type:"text",text:r}],details:s}),{content:[{type:"text",text:r}],details:s}}}),c=(0,f.defineTool)({name:"bash_io",label:"Interact with Background Process",description:'Interact with a background process started by bash. Can write text to the process\'s stdin, send Ctrl-C (use "\\u0003" as chars), or poll for new output (leave chars empty). Always waits yield_time_ms (default 5s) to collect output before returning. Use this to monitor long-running tasks, respond to prompts, or send additional commands.',parameters:g.ZUJ.Object({session_id:g.ZUJ.Integer({description:"The session_id returned by bash for the running process."}),chars:g.ZUJ.Optional(g.ZUJ.String({description:'Text to write to the process\'s stdin. Use "\\u0003" (Ctrl-C) to interrupt. Leave empty to just poll for output (no write). Defaults to empty.'})),yield_time_ms:g.ZUJ.Optional(g.ZUJ.Integer({description:"Milliseconds to wait for output after writing/polling (default: 5000, range: 250-30000)."}))}),promptSnippet:"bash_io(session_id, chars?, yield_time_ms?): poll or send input to a bash process",promptGuidelines:["`bash_io` interacts with a background process started by `bash` using its `session_id`.","Poll with empty `chars` to collect new output since the last poll.","Send input via `chars`; use `\\u0003` for Ctrl-C to interrupt the process.","If the process exited, `bash_io` reports the exit code and the process is cleaned up."],async execute(b,c,d,e){let f=c.session_id,g=c.chars??"",h=c.yield_time_ms?k(c.yield_time_ms,g?250:5e3):5e3,i=Date.now(),m=a.get(f);if(!m)throw Error(`No background process with session_id ${f}. The process may have exited and been cleaned up, or the ID is invalid. Use bash to start a new process.`);if(e){let a=""===g?"polling":"\x03"===g?"interrupting":"writing to";e({content:[{type:"text",text:`${a} process ${f} ($ ${m.command})`}],details:{sessionId:f,command:m.command,action:a}})}if(""!==g){let b=a.writeStdin(f,g);if(!b.ok)throw Error(b.error??"bash_io failed");await j(100)}let{output:n,exited:o,exitCode:p}=await a.poll(f,h),q=Date.now()-i;o&&a.remove(f);let r=l({output:n,exited:o,exitCode:p,sessionId:o?null:f,wallMs:q}),s={sessionId:o?null:f,exited:o,exitCode:o?p:null};return e&&e({content:[{type:"text",text:r}],details:s}),{content:[{type:"text",text:r}],details:s}}});return[b,c]}d()}catch(a){d(a)}})},56429:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{A4:()=>C,C4:()=>F,Fn:()=>G,HG:()=>I,OF:()=>N,_I:()=>D,iP:()=>L,l8:()=>J,oA:()=>E});var e=c(75430),f=c(29862),g=c(55511),h=c(29021),i=c(33873),j=c(78970),k=c(43671),l=c(28967),m=c(18904),n=c(72498),o=c(40402),p=c(30590),q=c(64735),r=c(36193),s=c(67264),t=c(71069),u=c(11301),v=c(4504),w=c(44271),x=a([e,f,m,n,o,q,u,w]);[e,f,m,n,o,q,u,w]=x.then?(await x)():x;let O=new Set(["agent_start","message_start","message_update","message_end","agent_end","entry_appended","session_info_changed","queue_update","prompt_done","agent_settled","auto_compaction_end","compaction_end"]),P=["read","bash","edit","write","grep","find","ls"];class Q extends e.Theme{constructor(){super({thinkingXhigh:""},{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 R=new Q,S=new f.KeybindingsManager(f.TUI_KEYBINDINGS);function y(a,b){if(0===b.length)return[];let c=new Set(P),d=a.getAllTools().map(a=>a.name).filter(a=>!c.has(a));return[...new Set([...b,...d])]}class T{constructor(a,b){this.inner=a,this.cwd=b,this.listeners=[],this.pendingUiResponses=new Map,this.pendingUiRequests=new Map,this.activeCustomUis=new Map,this.extensionStatuses=new Map,this.extensionWidgets=new Map,this.promptRunning=!1,this.promptPhase=null,this.extensionsBound=!1,this.extensionBindingPromise=null,this.extensionBindingError=null,this.forceEmptySystemPrompt=!1,this.unsubscribe=null,this.idleTimer=null,this.subscriberCount=0,this.disposeGraceTimer=null,this.lastActivityAt=Date.now(),this.queueMirror=[],this.queueRecovery=[],this.pendingQueueHints={steer:[],followUp:[]},this.queueMutationTail=Promise.resolve(),this.onDestroyCallback=null,this.shutdownPromise=null,this._alive=!0,this.approvalPolicy=(0,r.ni)((0,q.lN)().permissionRules),this.approvalMode=(0,q.lN)().toolApprovalMode,this.pendingApprovals=new Map,this.approvalSeq=0,this.approvalHookInstalled=!1,this.goalEngine=new v.aA,this.goalTokensAccounted=0,this.goalToolCallsAccounted=0,this.goalContinuationInFlight=!1;const c=(0,q.lN)(a.sessionId);if(this.approvalMode=c.toolApprovalMode,this.approvalPolicy=(0,r.ni)(c.permissionRules),a.sessionFile){const b=(0,v.bo)(a.sessionFile);"idle"!==b.status&&this.goalEngine.hydrate(b)}}get sessionId(){return this.inner.sessionId}get sessionFile(){return this.inner.sessionFile??""}isAlive(){return this._alive}isRunning(){return this._alive&&(this.promptRunning||this.inner.isStreaming||this.inner.isCompacting||this.inner.isBashRunning)}runtimeSnapshot(){let a=this.inner.isStreaming,b=this.promptRunning,c=this.inner.isCompacting,d=this.inner.isBashRunning;return{id:this.sessionId,running:this.isRunning(),isStreaming:a,isPromptRunning:b,isCompacting:c,isBashRunning:d,phase:d?"running_command":this.promptPhase??(a||b||c?"waiting_model":null)}}start(){this.installApprovalHook(),this.goalEngine.setOnChanged(a=>{this.sessionFile&&(0,v.eG)(this.sessionFile,a),this.emit({type:"goal_state_changed",goalState:a}),L("goal_state_changed",this.sessionId,{type:"goal_state_changed",goalState:a})}),this.goalEngine.isRunning()&&this.scheduleGoalKick(),this.unsubscribe=this.inner.subscribe(a=>{("agent_end"===a.type||"message_end"===a.type||"entry_appended"===a.type||"session_info_changed"===a.type)&&(0,o.mD)(),("agent_end"===a.type||"agent_settled"===a.type||"auto_compaction_end"===a.type||"compaction_end"===a.type)&&this.resetIdleTimer(),"agent_start"===a.type&&this.goalEngine.onAgentStart(),"agent_settled"===a.type&&this.handleGoalSettled(),"queue_update"===a.type&&this.reconcileQueue(a.steering,a.followUp),O.has(a.type)&&L(a.type,this.sessionId,a),this.emit(a),H()}),this.resetIdleTimer(),H()}loadQueueRecovery(){if(!this.sessionFile)return;let a=this.inner.getSteeringMessages(),b=this.inner.getFollowUpMessages();if(a.length||b.length){this.queueRecovery=[],this.reconcileQueue([...a],[...b]);return}this.queueRecovery=(0,k.ov)(this.sessionFile)}getGoalState(){return this.goalEngine.getState()}handleGoalSettled(){if(!this.goalEngine.isRunning())return void this.goalEngine.disarmContinuation();let a=this.inner.getLastAssistantText()??"",b=0,c=0;try{let a=this.inner.sessionManager.getEntries(),d=function(a){let b=0;for(let c of a){let a=c?.message;if(!a||"assistant"!==a.role)continue;let d=a.usage;d&&(b+=(d.input??0)+(d.output??0)+(d.cacheRead??0)+(d.cacheWrite??0))}return b}(a);b=Math.max(0,d-this.goalTokensAccounted),this.goalTokensAccounted=d;let e=function(a){let b=0;for(let c of a){let a=c?.message;if(!a||"assistant"!==a.role)continue;let d=a.content;if(Array.isArray(d))for(let a of d)a&&"object"==typeof a&&"toolCall"===a.type&&(b+=1)}return b}(a);c=Math.max(0,e-this.goalToolCallsAccounted),this.goalToolCallsAccounted=e}catch{}let{verdict:d}=this.goalEngine.settleTurn(a,b,c);"continue"!==d.action?this.goalEngine.disarmContinuation():this.scheduleGoalKick()}scheduleGoalKick(){if(this.goalEngine.isRunning()&&!this.goalContinuationInFlight){if(this.goalEngine.isContinuationArmed()){this.goalEngine.disarmContinuation(),this.driveGoalContinuation();return}this.inner.isStreaming||this.promptRunning||this.inner.pendingMessageCount>0||this.driveGoalContinuation()}}driveGoalContinuation(){this.goalEngine.isRunning()&&!this.goalContinuationInFlight&&(this.goalContinuationInFlight=!0,this.inner.followUp(v.LF).catch(()=>{}).finally(()=>{this.goalContinuationInFlight=!1}))}handleGoalStartCommand(a,b){let c=this.goalEngine.start(a,b);return this.goalTokensAccounted=0,this.goalToolCallsAccounted=0,c}handleGoalStopCommand(){return this.goalEngine.stop(),this.goalTokensAccounted=0,this.goalEngine.getState()}setApprovalMode(a){this.approvalMode=a}setApprovalPolicy(a){this.approvalPolicy=a}installApprovalHook(){if(this.approvalHookInstalled||!this.inner.agent?.beforeToolCall)return;this.approvalHookInstalled=!0;let a=this.inner.agent.beforeToolCall;this.inner.agent.beforeToolCall=async b=>{let c=b.toolCall?.name??"",d=b.args,e=(0,r.LD)(this.approvalPolicy,c,{mode:this.approvalMode,readOnly:s.MJ.has(c.toLowerCase()),args:d});if("deny"===e)return{block:!0,reason:`Denied by policy rule: ${c} is not permitted.`};if("ask"===e){let a=await this.askForApproval(c,d);if(!a.approve)return{block:!0,reason:a.reason||`Rejected by user: ${c}`}}return a?a(b):void 0}}askForApproval(a,b){return new Promise(c=>{let d=`approval-${++this.approvalSeq}`,e=setTimeout(()=>{this.pendingApprovals.delete(d),this.emit({type:"tool_approval_resolved",id:d,approve:!1,reason:`Approval request timed out after 120s: ${a}`}),c({approve:!1,reason:`Approval request timed out after 120s: ${a}`})},12e4);this.pendingApprovals.set(d,{resolve:c,timer:e,toolName:a}),this.emit({type:"tool_approval_request",id:d,toolName:a,args:function(a){if(null===a||"object"!=typeof a)return a;let b={};for(let[c,d]of Object.entries(a))if(null!=d&&"content"!==c&&"data"!==c&&"newString"!==c&&"oldString"!==c){if("string"==typeof d){b[c]=d.length>200?`${d.slice(0,200)}…`:d;continue}if("number"==typeof d||"boolean"==typeof d){b[c]=d;continue}b[c]=Array.isArray(d)?`[array:${d.length}]`:"[object]"}return b}(b)})})}resolveApproval(a,b,c){let d=this.pendingApprovals.get(a);return!!d&&(this.pendingApprovals.delete(a),clearTimeout(d.timer),d.resolve({approve:b,reason:c}),!0)}rejectAllApprovals(a){for(let[b,c]of this.pendingApprovals)this.pendingApprovals.delete(b),clearTimeout(c.timer),c.resolve({approve:!1,reason:a})}getPendingApprovals(){return Array.from(this.pendingApprovals.entries()).map(([a,b])=>({id:a,toolName:b.toolName}))}pendingRecoveryView(){return this.queueRecovery.map(({id:a,kind:b,text:c,images:d,queuedAt:e})=>({id:a,kind:b,text:c,hasImages:!!d?.length,queuedAt:e}))}persistQueue(){if(!this.sessionFile)return;let a=[...this.queueRecovery,...this.queueMirror];a.length?(0,k.pj)(this.sessionFile,a):(0,k.wx)(this.sessionFile)}hintQueueImages(a,b){this.pendingQueueHints[a].push(b?.length?b:[])}reconcileQueue(a,b){let c=(a,b)=>{if(!b)return this.queueMirror.filter(b=>b.kind===a);let c=new Set;return b.map(b=>{let d=this.queueMirror.find(d=>d.kind===a&&d.text===b&&!c.has(d));if(d)return c.add(d),d;let e=(0,k.Gc)(a,b,this.pendingQueueHints[a].shift());return c.add(e),e})};this.queueMirror=[...c("steer",a),...c("followUp",b)],this.persistQueue()}async requeueEntry(a){let b=(0,j.kc)(a.images);if(b)throw Error(b);this.hintQueueImages(a.kind,a.images),"steer"===a.kind?await this.inner.steer(a.text,a.images):await this.inner.followUp(a.text,a.images)}ensureMirrored(a){this.queueMirror.find(b=>b.kind===a.kind&&b.text===a.text)||(this.queueMirror.push({...a}),this.pendingQueueHints[a.kind].pop())}async replaceLiveQueue(a,b){for(let b of(this.inner.clearQueue(),this.pendingQueueHints={steer:[],followUp:[]},a))await this.requeueEntry(b);for(let a of b)await this.requeueEntry(a);let c={steering:[...this.inner.getSteeringMessages()],followUp:[...this.inner.getFollowUpMessages()]};return this.reconcileQueue(c.steering,c.followUp),c}async withQueueMutation(a){let b,c=this.queueMutationTail;this.queueMutationTail=new Promise(a=>{b=a}),await c;try{return await a()}finally{b()}}async mutateLiveQueue(a,b){return this.withQueueMutation(async()=>{let c=this.queueMirror.filter(a=>"steer"===a.kind),d=this.queueMirror.filter(a=>"followUp"===a.kind),e=b("steer"===a?c:d),f=await this.replaceLiveQueue(c,d);return{value:e,queues:f}})}validateQueueEntries(a){for(let b of a){if("steer"!==b.kind&&"followUp"!==b.kind||"string"!=typeof b.text)continue;let a=(0,j.kc)(b.images);if(a)throw Error(a)}}runAgentContinue(){if(this.inner.isStreaming||this.inner.isBashRunning||this.promptRunning)return;let a=[...this.queueMirror];0!==a.length&&(this.queueMirror=[],this.persistQueue(),this.promptRunning=!0,this.promptPhase="waiting_model",this.bootstrapQueuedRun(a))}async bootstrapQueuedRun(a){for(let b of(this.inner.clearQueue(),this.pendingQueueHints={steer:[],followUp:[]},a))try{await this.inner.prompt(b.text,b.images?.length?{images:b.images}:void 0)}catch(a){this.promptRunning=!1,this.promptPhase=null,this.resetIdleTimer(),(0,o.mD)(),this.emit({type:"prompt_error",errorMessage:a instanceof Error?a.message:String(a)}),this.emit({type:"prompt_done"});return}this.promptRunning=!1,this.promptPhase=null,this.resetIdleTimer(),this.emit({type:"prompt_done"})}setForceEmptySystemPrompt(a){this.forceEmptySystemPrompt=a,this.applyForcedEmptySystemPrompt()}beginExtensionBinding(a={}){this.ensureExtensionsBound(a).catch(a=>{console.error("[pi-web] failed to dispatch session_start to extensions:",a instanceof Error?a.message:a)})}ensureExtensionsBound(a={}){return(a.forceEmptySystemPrompt&&(this.forceEmptySystemPrompt=!0),this.extensionsBound)?(this.applyForcedEmptySystemPrompt(),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,this.applyForcedEmptySystemPrompt(),console.log(`[pi-web] session_start dispatched to extensions for session ${this.inner.sessionId}`)})().catch(a=>{throw this.extensionBindingError=a,a})),this.extensionBindingPromise)}static{this.EXTENSION_BIND_TIMEOUT_MS=15e3}async waitForExtensionsBound(){let a=this.extensionBindingPromise;if(a){let b=new Promise((b,c)=>{let d=setTimeout(()=>c(Error("Extension binding timed out; continuing without waiting")),T.EXTENSION_BIND_TIMEOUT_MS);a.finally(()=>clearTimeout(d))});await Promise.race([a,b])}this.extensionBindingError&&console.warn("[pi-web] extension binding failed, continuing:",this.extensionBindingError)}shouldWaitForExtensions(a){return"prompt"===a||"steer"===a||"follow_up"===a||"get_commands"===a}applyForcedEmptySystemPrompt(){this.forceEmptySystemPrompt&&this.inner.agent.state&&(this.inner.agent.state.systemPrompt="")}emit(a){for(let b of this.listeners)b(a)}resetIdleTimer(){this.idleTimer&&clearTimeout(this.idleTimer),this.idleTimer=setTimeout(()=>{this.isRunning()?this.resetIdleTimer():this.shutdown().catch(a=>{console.error("[pi-web] failed to shut down idle session:",a instanceof Error?a.message:a)})},18e5)}touch(){this.lastActivityAt=Date.now(),this.cancelPendingDispose()}hasSubscribers(){return this.subscriberCount>0}get activityTimestamp(){return this.lastActivityAt}cancelPendingDispose(){this.disposeGraceTimer&&(clearTimeout(this.disposeGraceTimer),this.disposeGraceTimer=null)}scheduleDisposeIfIdle(){this.cancelPendingDispose(),!(this.subscriberCount>0||this.isRunning())&&this._alive&&(this.disposeGraceTimer=setTimeout(()=>{this.disposeGraceTimer=null,!(this.subscriberCount>0||this.isRunning())&&this._alive&&this.shutdown().catch(a=>{console.error("[pi-web] failed to shut down unwatched session:",a instanceof Error?a.message:a)})},6e4))}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,o.O8)(this.inner.sessionId,b)}onEvent(a){for(let b of(this.listeners.push(a),this.subscriberCount+=1,this.cancelPendingDispose(),this.pendingUiRequests.values()))a(b);return()=>{let b=this.listeners.indexOf(a);-1!==b&&this.listeners.splice(b,1),this.subscriberCount>0&&(this.subscriberCount-=1),this.scheduleDisposeIfIdle()}}onDestroy(a){this.onDestroyCallback=a}async send(a){this.touch(),this.resetIdleTimer();let b=a.type;if("prompt"===b||"steer"===b||"follow_up"===b||"requeue_at"===b){let b=(0,j.kc)(a.images);if(b)throw Error(b)}switch(this.shouldWaitForExtensions(b)&&await this.waitForExtensionsBound(),b){case"prompt":{if(this.inner.isBashRunning)throw Error("Cannot send a prompt while a shell command is running");let b=a.images,c=a.streamingBehavior;return c&&this.inner.isStreaming&&this.hintQueueImages("followUp"===c?"followUp":"steer",b),this.promptRunning=!0,this.promptPhase=String(a.message??"").trimStart().startsWith("/")?"running_command":"waiting_model",H(),this.inner.prompt(a.message,{...b?.length?{images:b}:{},...c?{streamingBehavior:c}:{},source:"rpc"}).then(()=>{this.promptRunning=!1,this.promptPhase=null,this.resetIdleTimer(),c||this.emit({type:"prompt_done"}),H()}).catch(a=>{this.promptRunning=!1,this.promptPhase=null,this.resetIdleTimer(),(0,o.mD)(),this.emit({type:"prompt_error",errorMessage:a instanceof Error?a.message:String(a)}),c||this.emit({type:"prompt_done"}),H()}),null}case"abort":return await this.inner.abort(),null;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.promptRunning,isBashRunning:this.inner.isBashRunning,isCompacting:this.inner.isCompacting,phase:this.runtimeSnapshot().phase,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()]},pendingRecovery:this.pendingRecoveryView(),contextUsage:b?{percent:b.percent,contextWindow:b.contextWindow,tokens:b.tokens}:null,systemPrompt:this.inner.agent.state?.systemPrompt??"",thinkingLevel:this.inner.agent.state?.thinkingLevel??"off",extensionStatuses:this.getExtensionStatuses(),extensionWidgets:this.getExtensionWidgets(),goalState:this.goalEngine.getState()}}case"goal_start":{let b=String(a.goalText??"").trim();if(!b)throw Error("goal_start requires a non-empty goalText");let c=a.tokenBudget,d="number"==typeof c&&Number.isFinite(c)&&c>0?Math.floor(c):null,e=this.handleGoalStartCommand(b,d);return this.scheduleGoalKick(),{goalState:e}}case"goal_pause":try{this.inner.clearQueue(),this.queueMirror=[],this.persistQueue()}catch{}return{goalState:this.goalEngine.pause()};case"goal_resume":{let a=this.goalEngine.resume();return"running"===a.status&&(this.goalEngine.armContinuation(),this.scheduleGoalKick()),{goalState:a}}case"goal_stop":try{this.inner.clearQueue(),this.queueMirror=[],this.persistQueue()}catch{}return{goalState:this.handleGoalStopCommand()};case"goal_edit":{let b=String(a.goalText??"").trim();if(!b)throw Error("goal_edit requires a non-empty goalText");let c=this.goalEngine.edit(b);return"running"===c.status&&this.scheduleGoalKick(),{goalState:c}}case"get_goal_state":return{goalState:this.goalEngine.getState()};case"set_model":{let{provider:b,modelId:c}=a,d=this.inner.modelRuntime.getModel(b,c);if(!d)try{await this.inner.modelRuntime.refresh({allowNetwork:!1}),d=this.inner.modelRuntime.getModel(b,c)}catch{d=void 0}if(!d)throw Error(`Model not found: ${b}/${c}`);return await this.inner.setModel(d),(0,l.k)(),(0,o.mD)(),{id:d.id,provider:d.provider}}case"fork":{let b,c=a.entryId,d=this.inner.sessionManager,f=this.inner.sessionFile;if(!d.isPersisted())return{cancelled:!0};if(!f)throw Error("Persisted session is missing a session file");let g=d.getEntry(c);if(!g)throw Error("Invalid entry ID for forking");let h=d.getSessionDir();if(g.parentId){let a=e.SessionManager.open(f,h).createBranchedSession(g.parentId);if(!a)throw Error("Failed to create forked session");b=a}else{let a=e.SessionManager.create(d.getCwd(),h);a.newSession({parentSession:f}),b=a.getSessionFile()}let i=e.SessionManager.open(b,h).getSessionId();return(0,o.O8)(i,b),(0,o.mD)(),await this.shutdown(),{cancelled:!1,newSessionId:i}}case"navigate_tree":return{cancelled:(await this.inner.navigateTree(a.targetId,{})).cancelled};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,o.mD)(),null}case"compact":try{return await this.inner.compact(a.customInstructions)}finally{(0,o.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,o.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"clear_queue":return this.queueMirror=[],this.pendingQueueHints={steer:[],followUp:[]},this.persistQueue(),this.inner.clearQueue();case"move_queue":{let b=a.kind,c=Number(a.fromIndex),d=Number(a.toIndex);if("steer"!==b&&"followUp"!==b||!Number.isInteger(c)||!Number.isInteger(d))throw Error("move_queue requires a queue kind and integer indexes");let{queues:e}=await this.mutateLiveQueue(b,a=>{if(c<0||c>=a.length||d<0||d>=a.length)throw Error("move_queue index out of range");let[b]=a.splice(c,1);a.splice(d,0,b)});return e}case"recall_queue_item":{let b=a.kind,c=Number(a.index);if("steer"!==b&&"followUp"!==b||!Number.isInteger(c))throw Error("recall_queue_item requires a queue kind and integer index");let{value:d,queues:e}=await this.mutateLiveQueue(b,a=>{if(c<0||c>=a.length)throw Error("recall_queue_item index out of range");let[b]=a.splice(c,1);return b});return{entry:{text:d.text,images:d.images??[]},...e}}case"requeue_at":{let b=a.kind,c=Number(a.index),d=a.text;if("steer"!==b&&"followUp"!==b||!Number.isInteger(c)||!d?.trim())throw Error("requeue_at requires a queue kind, integer index, and text");let e=a.images,{queues:f}=await this.mutateLiveQueue(b,a=>{if(c<0||c>a.length)throw Error("requeue_at index out of range");a.splice(c,0,(0,k.Gc)(b,d,e))});return f}case"remove_queue_item":{let b=a.kind,c=Number(a.index);if("steer"!==b&&"followUp"!==b||!Number.isInteger(c))throw Error("remove_queue_item requires a queue kind and integer index");let{queues:d}=await this.mutateLiveQueue(b,a=>{if(c<0||c>=a.length)throw Error("remove_queue_item index out of range");a.splice(c,1)});return d}case"resolve_recovery":{let b=new Set(a.keep??[]),c=new Set(a.discard??[]),d=!0===a.continueRun,e=0;for(let a of this.queueRecovery)b.has(a.id)&&(await this.requeueEntry(a),this.ensureMirrored(a),e+=1);return this.queueRecovery=this.queueRecovery.filter(a=>!b.has(a.id)&&!c.has(a.id)),this.persistQueue(),d&&e>0&&this.runAgentContinue(),{remaining:this.pendingRecoveryView(),kept:e}}case"export_queue":return{live:this.queueMirror.map(a=>({...a})),recovery:this.queueRecovery.map(a=>({...a}))};case"import_queue":{let b=a.entries;if(!Array.isArray(b))throw Error("import_queue requires entries[]");this.validateQueueEntries(b);let c=0;for(let a of b){if("steer"!==a.kind&&"followUp"!==a.kind||"string"!=typeof a.text)continue;let b=(0,k.Gc)(a.kind,a.text,a.images);await this.requeueEntry(b),this.ensureMirrored(b),c+=1}return this.persistQueue(),{imported:c,steering:[...this.inner.getSteeringMessages()],followUp:[...this.inner.getFollowUpMessages()]}}case"stage_recovery":{let b=a.entries;if(!Array.isArray(b))throw Error("stage_recovery requires entries[]");this.validateQueueEntries(b);let c=0;for(let a of b)("steer"===a.kind||"followUp"===a.kind)&&"string"==typeof a.text&&(this.queueRecovery.push((0,k.Gc)(a.kind,a.text,a.images)),c+=1);return this.persistQueue(),{staged:c,pendingRecovery:this.pendingRecoveryView()}}case"steer":{let b=a.images;this.hintQueueImages("steer",b),this.promptPhase="waiting_model",H();try{await this.inner.steer(a.message,b?.length?b:void 0)}finally{this.promptPhase=null,H()}return null}case"follow_up":{let b=a.images;this.hintQueueImages("followUp",b),this.promptPhase="waiting_model",H();try{await this.inner.followUp(a.message,b?.length?b:void 0)}finally{this.promptPhase=null,H()}return null}case"get_tools":{let a=this.inner.getAllTools(),b=new Set(this.inner.getActiveToolNames());return a.map(a=>({name:a.name,description:a.description,active:b.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.setForceEmptySystemPrompt(0===b.length),this.inner.setActiveToolsByName(y(this.inner,b)),this.applyForcedEmptySystemPrompt(),null}case"reload":return await this.waitForExtensionsBound(),this.extensionStatuses.clear(),this.extensionWidgets.clear(),this.syncProjectTrust(),await this.inner.reload(),"function"!=typeof this.inner.bindExtensions&&this.inner.extensionRunner.setUIContext?.(this.createExtensionUiContext(),"rpc"),this.applyForcedEmptySystemPrompt(),{success:!0};case"abort_compaction":return this.inner.abortCompaction(),null;case"resolve_approval":return{resolved:this.resolveApproval(a.id,!!a.approve,a.reason)};case"set_approval_mode":{let b=a.mode;if("ask"!==b&&"auto"!==b&&"yolo"!==b)throw Error(`Invalid approval mode: ${String(b)}`);return this.setApprovalMode(b),null}case"set_approval_policy":{let b=a.policy;return this.setApprovalPolicy((0,r.ni)(b)),null}case"get_approval_state":return{mode:this.approvalMode,pending:this.getPendingApprovals()};case"extension_ui_response":return this.resolveExtensionUiResponse(a),null;case"extension_ui_input":return this.handleExtensionUiInput(a.id,a.data),null;case"bash":{if(this.promptRunning||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});try{let a=await b;return this.persistBashOnlySession(),a}finally{this.resetIdleTimer(),(0,o.mD)(),H()}}case"abort_bash":return this.inner.abortBash(),H(),null;default:throw Error(`Unsupported command: ${b}`)}}destroy(){if(this._alive){for(let a of(this._alive=!1,this.idleTimer&&clearTimeout(this.idleTimer),this.cancelPendingDispose(),this.inner.isBashRunning&&this.inner.abortBash(),this.unsubscribe?.(),this.sessionFile&&this.goalEngine.hasActiveGoal()&&(0,v.eG)(this.sessionFile,this.goalEngine.getState()),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.rejectAllApprovals("Session closed while approval was pending");try{this.inner.dispose()}finally{this.onDestroyCallback?.(),H()}}}async shutdown(){return this.shutdownPromise?this.shutdownPromise:this._alive?(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)}await this.inner.extensionRunner.emit?.({type:"session_shutdown",reason:"quit"})}finally{this.destroy()}})(),this.shutdownPromise):void 0}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())}getCustomUiWidth(a){if(!a||"object"!=typeof a)return t.p1;let b=a.overlayOptions,c="function"==typeof b?b():b;if(!c||"object"!=typeof c)return t.p1;let d=c.width;return"number"==typeof d&&Number.isFinite(d)?Math.max(40,Math.min(140,Math.round(d))):t.p1}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=(0,g.randomUUID)(),d=this.getCustomUiWidth(b);return new Promise(b=>{let e=!1,f=(0,t.TQ)(()=>{let a=this.activeCustomUis.get(c);a&&this.emitCustomUiRender(c,a)},d),g=a=>{e||(e=!0,b(a))},h=a=>{this.activeCustomUis.has(c)?this.closeCustomUi(c,a):g(a)};Promise.resolve().then(()=>a(f,R,S,h)).then(a=>{if(e){try{a?.dispose?.()}catch{}return}if(!a||"object"!=typeof a||"function"!=typeof a.render)return void g(void 0);let b={component:a,width:d,resolve:a=>g(a),settled:!1};this.activeCustomUis.set(c,b),this.emitCustomUiRender(c,b)}).catch(a=>{e||(this.emit({type:"extension_error",extensionPath:`custom-ui:${c}`,event:"custom_ui",error:a instanceof Error?a.message:String(a)}),g(void 0))})})}requestExtensionUi(a,b,c,d,e){if(e?.aborted)return Promise.resolve(b);let f=(0,g.randomUUID)(),h={type:"extension_ui_request",id:f,...a,...d?{timeout:d,expiresAt:Date.now()+d}:{}};return new Promise(a=>{let g,i=()=>{g&&clearTimeout(g),e?.removeEventListener("abort",k),this.pendingUiRequests.delete(f),this.pendingUiResponses.delete(f)},j=b=>{i(),a(b)},k=()=>j(b);d&&(g=setTimeout(()=>j(b),d)),e?.addEventListener("abort",k,{once:!0}),this.pendingUiRequests.set(f,h),this.pendingUiResponses.set(f,{resolve:a=>j(c(a)),cancel:()=>j(b)}),this.emit(h)})}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)=>{(void 0===b||Array.isArray(b))&&(void 0===b?this.extensionWidgets.delete(a):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 R},getAllThemes:()=>[],getTheme:()=>void 0,setTheme:()=>({success:!1,error:"Theme switching is not supported in pi-web extension UI yet"}),getToolsExpanded:()=>!1,setToolsExpanded:()=>{}}}syncProjectTrust(){this.inner.settingsManager.setProjectTrusted((0,n.Y1)(this.cwd,(0,e.getAgentDir)()).trusted)}createExtensionCommandContextActions(){return{waitForIdle:async()=>{let a=this.inner.agent;await a.waitForIdle?.()},newSession:async()=>({cancelled:!0}),fork:async()=>({cancelled:!0}),navigateTree:async(a,b)=>({cancelled:(await this.inner.navigateTree(a,{summarize:b?.summarize})).cancelled}),switchSession:async()=>({cancelled:!0}),reload:async()=>{this.extensionStatuses.clear(),this.extensionWidgets.clear(),this.syncProjectTrust(),await this.inner.reload({beforeSessionStart:()=>{this.inner.extensionRunner.setUIContext?.(this.createExtensionUiContext(),"rpc")}}),this.applyForcedEmptySystemPrompt()}}}}function z(){if(!globalThis.__piSessions){globalThis.__piSessions=new Map;let a=()=>Promise.allSettled(Array.from(globalThis.__piSessions?.values()??[],a=>a.shutdown()));process.once("exit",()=>globalThis.__piSessions?.forEach(a=>a.destroy())),process.once("SIGINT",()=>{a().finally(()=>process.exit(130))}),process.once("SIGTERM",()=>{a().finally(()=>process.exit(143))})}return globalThis.__piSessions}function A(a){let b=(0,i.resolve)(a);try{return(0,h.realpathSync)(b)}catch{return b}}function B(){return globalThis.__piStartingSessionCwds||(globalThis.__piStartingSessionCwds=new Map),globalThis.__piStartingSessionCwds}function C(a){return z().get(a)}function D(a){let b=A(a);return!!B().has(b)||Array.from(z().values()).some(a=>A(a.cwd)===b&&a.isRunning())}async function E(a){let b=A(a),c=Array.from(z().values()).filter(a=>A(a.cwd)===b);return await Promise.all(c.map(a=>a.shutdown())),c.length}function F(){let a=[];for(let[b,c]of z()){if(!c.isAlive())continue;let d=c.runtimeSnapshot();d.running&&a.push({...d,id:d.id||b})}return a}function G(a){return globalThis.__piRunningListeners??=new Set,globalThis.__piRunningListeners.add(a),()=>globalThis.__piRunningListeners?.delete(a)}let U="";function H(){let a=globalThis.__piRunningListeners;if(!a||0===a.size){U="";return}let b=F(),c=JSON.stringify(b);if(c!==U)for(let d of(U=c,a))try{d(b)}catch{}}function I(){return F().map(a=>a.id)}function J(a){return globalThis.__piSessionBusListeners??=new Set,globalThis.__piSessionBusListeners.add(a),()=>globalThis.__piSessionBusListeners?.delete(a)}let V=new Map;function K(a){let b=globalThis.__piSessionBusListeners;if(b&&0!==b.size)for(let c of b)try{c(a)}catch{}}function L(a,b,c){let d=globalThis.__piSessionBusListeners;if(!d||0===d.size)return;if("message_update"!==a)return void K({type:a,sessionId:b,payload:c});let e=V.get(b),f={type:a,sessionId:b,payload:c};e?(clearTimeout(e.timer),e.event=f):V.set(b,{event:f,timer:setTimeout(()=>{let a=V.get(b);a&&(V.delete(b),K(a.event))},80)})}function M(a,b){let c=Date.now(),{provider:d,modelId:e,sessionId:f}=b,g=a.result.bind(a);a.result=async()=>{let a,b,h,i,j,k=await g();return a=Date.now()-c,b="error"===k.stopReason||"aborted"===k.stopReason,h=k.errorMessage?.trim(),j=(i=h?.match(/\bHTTP\s+(\d{3})\b|\bstatus(?:\s+code)?\s*[:=]?\s*(\d{3})\b/))?Number(i[1]??i[2]):void 0,(0,u.wF)({level:b?"error":"info",source:"model-call",provider:d,model:e,sessionId:f,...void 0!==j?{statusCode:j}:{},message:b?`模型调用失败 ${d}/${e}${h?`:${h}`:""}`:`模型调用成功 ${d}/${e}`,details:b?void 0:`耗时 ${a}ms`}),k};let h=a[Symbol.asyncIterator].bind(a);return a[Symbol.asyncIterator]=()=>{let a=h();return{next:()=>a.next().catch(a=>{throw(0,u.wF)({level:"error",source:"model-call",provider:d,model:e,sessionId:f,message:`模型调用传输错误 ${d}/${e}:${a instanceof Error?a.message:String(a)}`}),a})}},a}async function N(a,b,d,f={}){let g,h,i,{toolNames:j,initialModel:k,thinkingLevel:q}=f,r=z(),s=(globalThis.__piStartLocks||(globalThis.__piStartLocks=new Map),globalThis.__piStartLocks),t=r.get(a);if(t?.isAlive())return{session:t,realSessionId:a};let u=s.get(a);if(u)return u;if(b)g=e.SessionManager.open(b,void 0);else{if(!d)throw Error("cwd is required for a new session");g=e.SessionManager.create(d,void 0)}let v=g.getCwd(),x=(h=B(),i=A(v),h.set(i,(h.get(i)??0)+1),()=>{let a=(h.get(i)??1)-1;a>0?h.set(i,a):h.delete(i)}),C=new AbortController,D=setTimeout(()=>C.abort(),25e3),E=(async()=>{let b;(0,e.initTheme)();let d=(0,e.getAgentDir)();void 0!==j&&(b=0===j.length?[]:void 0);let f=(0,n.Fk)(v,d),h=await (0,e.createAgentSessionServices)({cwd:v,agentDir:d,modelRuntimeSignal:C.signal,...f?{resourceLoaderReloadOptions:f}:{}}),{createAsyncBashTools:i}=await Promise.resolve().then(c.bind(c,44271)),s=new w.B,t=i(s),u=await (0,m.py)(h.modelRuntime,h.settingsManager.getEnabledModels(),{signal:C.signal}),x=h.settingsManager.getDefaultProvider(),A=h.settingsManager.getDefaultModel(),B=g.getBranch().some(a=>"message"===a.type)?{scopedModels:[...u.scopedModels]}:(0,m.IR)(u,{...k?{requestedModel:k}:{},...x&&A?{defaultModel:{provider:x,modelId:A}}:{},...q?{thinkingLevel:q}:{}}),{session:D}=await (0,e.createAgentSessionFromServices)({services:h,sessionManager:g,...B.model?{model:B.model}:{},...B.thinkingLevel?{thinkingLevel:B.thinkingLevel}:{},...B.scopedModels.length>0?{scopedModels:B.scopedModels}:{},...void 0!==b?{tools:b}:{},customTools:t}),E=D.agent,F=E.streamFunction;E.streamFunction=(b,c,d)=>{let e=F(b,c,d);return e instanceof Promise?e.then(c=>M(c,{provider:b.provider,modelId:b.id,sessionId:a})):M(e,{provider:b.provider,modelId:b.id,sessionId:a})},(await (0,p.o)(h.settingsManager,{...k?{model:k}:{},...q?{thinkingLevel:q}:{}},{...D.model?{model:{provider:D.model.provider,modelId:D.model.id}}:{},thinkingLevel:D.agent.state?.thinkingLevel??"off",supportsThinking:D.supportsThinking()})).modelDefaultChanged&&(0,l.k)(),j&&j.length>0&&D.setActiveToolsByName(y(D,j));let G=new T(D,v),H=s.cleanup.bind(s);j?.length===0&&G.setForceEmptySystemPrompt(!0),G.start(),G.loadQueueRecovery();let I=D.sessionId,J=D.sessionFile;return J&&(0,o.O8)(I,J),G.onDestroy(()=>{H(),r.delete(I)}),r.set(I,G),G.beginExtensionBinding({forceEmptySystemPrompt:j?.length===0}),!function(){let a=z();if(a.size<=12)return;let b=Array.from(a.entries()).filter(([,a])=>a.isAlive()&&!a.isRunning()&&!a.hasSubscribers()).sort((a,b)=>a[1].activityTimestamp-b[1].activityTimestamp),c=a.size-12;for(let[d,e]of b){if(c<=0)break;a.has(d)&&(console.log(`[pi-web] evicting idle unwatched session ${d} (registry cap 12)`),e.shutdown().catch(a=>{console.error(`[pi-web] failed to evict session ${d}:`,a instanceof Error?a.message:a)}),c-=1)}}(),{session:G,realSessionId:I}})().finally(()=>{clearTimeout(D),s.delete(a),x()});return s.set(a,E),E}d()}catch(a){d(a)}})},64735:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{S3:()=>k,lN:()=>j});var e=c(6999),f=c(67264),g=c(36193),h=a([e]);e=(h.then?(await h)():h)[0];let l="modes",m="modesPerSession";function i(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b=a.permissionRules,c=(0,g.kP)((0,g.ni)(b));return{collaborationMode:(0,f.UY)(a.collaborationMode),tokenMode:(0,f.wI)(a.tokenMode),toolApprovalMode:(0,f.g0)(a.toolApprovalMode),permissionRules:{allow:Array.isArray(c.allow)?c.allow:[],ask:Array.isArray(c.ask)?c.ask:[],deny:Array.isArray(c.deny)?c.deny:[]}}}function j(a){let b=(0,f.Md)(),c=(0,e.Tu)();if(a){let b=c[m];if(b&&"object"==typeof b&&!Array.isArray(b)){let c=i(b[a]);if(c)return c}}return i(c[l])??b}async function k(a,b){let c={collaborationMode:(0,f.UY)(a.collaborationMode),tokenMode:(0,f.wI)(a.tokenMode),toolApprovalMode:(0,f.g0)(a.toolApprovalMode),permissionRules:a.permissionRules};await (0,e.o$)(a=>{if(b){let d=a[m]??{};d[b]=c,a[m]=d}else a[l]=c;return{settings:a}})}d()}catch(a){d(a)}})},71069:(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})}},72498:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Fk:()=>i,Y1:()=>g,er:()=>h});var e=c(75430),f=a([e]);function g(a,b){return a&&(0,e.hasTrustRequiringProjectResources)(a)?{requiresTrust:!0,trusted:!0===new e.ProjectTrustStore(b).get(a)}:{requiresTrust:!1,trusted:!0}}function h(a,b){let c=g(a,b);return c.requiresTrust?(new e.ProjectTrustStore(b).set(a,!0),{requiresTrust:!0,trusted:!0}):c}function i(a,b){if(!g(a,b).requiresTrust)return;let c=new e.ProjectTrustStore(b);return{resolveProjectTrust:async()=>!0===c.get(a)}}e=(f.then?(await f)():f)[0],d()}catch(a){d(a)}})},78970:(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(!function(a){var b;if(!a||"object"!=typeof a||"image"!==a.type||"string"!=typeof a.data||"string"!=typeof a.mimeType||(b=a.mimeType,!/^image\/[A-Za-z0-9][A-Za-z0-9!#$&^_.+-]*$/.test(b)))return!1;let c=function(a){if(!a||a.length%4!=0)return null;let b=a.endsWith("==")?2:+!!a.endsWith("="),c=a.length-b,d=null;for(let b=0;b<c;b+=1){var e;let c=(e=a.charCodeAt(b))>=65&&e<=90?e-65:e>=97&&e<=122?e-97+26:e>=48&&e<=57?e-48+52:43===e?62:47===e?63:null;if(null===c)return null;d=c}for(let b=c;b<a.length;b+=1)if("="!==a[b])return null;return 2===b&&d%16!=0||1===b&&d%4!=0?null:a.length/4*3-b}(a.data);return null!==c&&c<=0xa00000}(b))return"Each image must be valid base64 image data with an image MIME type and be 10MB or smaller";return null}}};
|