@hyperpuncher/pi-ui 0.39.1 → 0.39.2

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.
@@ -2184,7 +2184,7 @@ ${r}
2184
2184
  `).filter((r)=>r.startsWith("data:")).map((r)=>r.slice(5).trimStart()).join(`
2185
2185
  `);if(!n)return;try{let r=JSON.parse(n);if(o7a.Check(r))t(r)}catch{}}var $S="llama.cpp",t7a,n7a,r7a,a7a,i7a,o7a,s7a;var wVe=m(()=>{Q0();U0();t7a=Vt.Object({id:Vt.String(),status:Vt.Object({value:Vt.String(),failed:Vt.Optional(Vt.Boolean()),exit_code:Vt.Optional(Vt.Number())}),architecture:Vt.Optional(Vt.Object({input_modalities:Vt.Optional(Vt.Array(Vt.String()))})),meta:Vt.Optional(Vt.Object({n_ctx:Vt.Optional(Vt.Number()),n_ctx_train:Vt.Optional(Vt.Number())}))}),n7a=Vt.Object({data:Vt.Array(t7a)}),r7a=Vt.Object({model:Vt.String(),event:Vt.String(),data:Vt.Optional(Vt.Unknown())}),a7a=Vt.Object({progress:Vt.Object({stages:Vt.Optional(Vt.Array(Vt.String())),current:Vt.Optional(Vt.String()),stage:Vt.Optional(Vt.String()),value:Vt.Optional(Vt.Number())})}),i7a=xs(n7a),o7a=xs(r7a),s7a=xs(a7a)});class kVe{getRuntime;state;onModelsChanged;operation;constructor(e,t,n){this.getRuntime=e;this.state=t;this.onModelsChanged=n}open(){this.cancelOperation(),this.state.setLlamaDialog({models:[],status:"Loading models\u2026"}),this.refreshDialog()}close(){this.cancelOperation(),this.state.setLlamaDialog(void 0)}toggle(e){let t=this.state.llamaDialog,n=t?.models.find((a)=>a.id===e);if(!t||!n||this.operation)return!1;let r={abortController:new AbortController,modelId:e,load:!u7a(n.status)};return this.operation=r,this.state.setLlamaDialog({...t,busyModel:e,status:r.load?`Loading ${e}\u2026`:`Unloading ${e}\u2026`,error:void 0}),this.run(r),!0}dispose(){this.cancelOperation()}async refreshDialog(){try{let e=await this.client();if(!this.state.llamaDialog)return;let t=await e.list(AbortSignal.timeout(15000));if(!this.state.llamaDialog)return;this.state.setLlamaDialog({models:t.map(njn),serverUrl:e.serverUrl})}catch(e){if(!this.state.llamaDialog)return;this.state.setLlamaDialog({models:[],error:Bm(e)})}}async run(e){let{modelId:t,load:n,abortController:r}=e;try{let a=await this.client();if(e.client=a,n)this.watchProgress(e);await a.setLoaded(t,n,r.signal);let i=await this.waitForStatus(e);if(await this.getRuntime().services.modelRuntime.refresh({providers:[$S],signal:r.signal}),this.operation!==e||!this.state.llamaDialog)return;this.operation=void 0,r.abort(),this.state.setLlamaDialog({models:i.map(njn),serverUrl:a.serverUrl,status:n?`Loaded ${t}.`:`Unloaded ${t}.`}),this.onModelsChanged()}catch(a){if(this.operation!==e||r.signal.aborted)return;this.operation=void 0,this.updateDialog({busyModel:void 0,progress:void 0,status:void 0,error:Bm(a)})}}watchProgress(e){let t=e.client;if(!t)return;t.watch((n)=>{if(n.model!==e.modelId||this.operation!==e)return;let r=ejn(n);if(r)this.updateDialog({progress:r})},e.abortController.signal).catch(()=>{})}async waitForStatus(e){let t=e.client;if(!t)throw Error("llama.cpp client unavailable");while(!0){await d7a(l7a,e.abortController.signal);let n=await t.list(e.abortController.signal),r=n.find((i)=>i.id===e.modelId);if(e.load?r?.status.value==="loaded":r?.status.value==="unloaded")return n;if(r?.status.failed)throw Error(r.status.exit_code===void 0?`Failed to ${e.load?"load":"unload"} ${e.modelId}`:`llama.cpp exited with code ${r.status.exit_code}`)}}async client(){let e=await this.getRuntime().services.modelRuntime.getAuth($S);if(!e)throw tjn();let t=e.env?.LLAMA_BASE_URL??e.auth.baseUrl;if(!t)throw tjn();return new Z8(t,e.auth.apiKey)}updateDialog(e){let t=this.state.llamaDialog;if(t)this.state.setLlamaDialog({...t,...e})}cancelOperation(){let e=this.operation;if(!e)return;if(this.operation=void 0,e.abortController.abort(),e.load&&e.client)e.client.setLoaded(e.modelId,!1,AbortSignal.timeout(15000)).catch(()=>{})}}function tjn(){return Error("Configure llama.cpp with /login llama.cpp first.")}function u7a(e){return e==="loaded"||e==="sleeping"}function njn(e){return{id:e.id,status:e.status.value}}function d7a(e,t){return new Promise((n,r)=>{if(t.aborted){r(t.reason);return}let a=()=>{clearTimeout(i),r(t.reason)},i=setTimeout(()=>{t.removeEventListener("abort",a),n()},e);t.addEventListener("abort",a,{once:!0})})}var l7a=500;var rjn=m(()=>{wVe()});function ijn(e){let t=e?.env?.LLAMA_BASE_URL;return t?.trim()?J8(t):void 0}async function ajn(e,t){let n=ijn(t)??(await e.env("LLAMA_BASE_URL"))?.trim();return n?J8(n):void 0}function p7a(e,t){let n=e.meta?.n_ctx??e.meta?.n_ctx_train,r=n&&n>0?n:128000;return{id:e.id,name:e.id,api:"openai-completions",provider:$S,baseUrl:N0e(t),reasoning:!1,input:e.architecture?.input_modalities?.includes("image")?["text","image"]:["text"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:r,maxTokens:r,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,supportsUsageInStreaming:!0,supportsStrictMode:!1,maxTokensField:"max_tokens"}}}function m7a(){let e=[];return{id:$S,name:"llama.cpp",baseUrl:N0e(_Ve),auth:{apiKey:{name:"llama.cpp server",login:async(t)=>{let n=process.env.LLAMA_BASE_URL,r=await t.prompt({type:"text",message:"llama.cpp server URL",placeholder:n??_Ve}),a=J8(r.trim()||n||_Ve),i=(await t.prompt({type:"secret",message:"API key (optional)"})).trim();return await new Z8(a,i||void 0).list(t.signal),{type:"api_key",key:i||void 0,env:{LLAMA_BASE_URL:a}}},check:async({ctx:t,credential:n})=>await ajn(t,n)?{type:"api_key",source:n?"stored credential":"LLAMA_BASE_URL"}:void 0,resolve:async({ctx:t,credential:n})=>{let r=await ajn(t,n);if(!r)return;return{auth:{apiKey:n?.key??await t.env("LLAMA_API_KEY")??"local",baseUrl:N0e(r)},env:{...n?.env,LLAMA_BASE_URL:r},source:n?"stored credential":"LLAMA_BASE_URL"}}}},getModels:()=>e,refreshModels:async(t)=>{if(t.stored){let i=t.stored.models.filter((o)=>o.provider===$S&&o.api==="openai-completions");if(!await t.publish({update:()=>e=i}))return}if(!t.allowNetwork||t.signal.aborted||t.credential?.type!=="api_key")return;let n=ijn(t.credential);if(!n)return;let r=await new Z8(n,t.credential.key).list(t.signal);if(t.signal.aborted)return;let a=r.filter((i)=>i.status.value==="loaded").map((i)=>p7a(i,n));await t.publish({persist:{models:a,checkedAt:Date.now()},update:()=>e=a})},stream:(t,n,r)=>a4(t,n,r),streamSimple:(t,n,r)=>L_(t,n,r)}}function g7a(e){e.registerProvider(m7a())}var _Ve="http://127.0.0.1:8080",ojn;var sjn=m(()=>{oI();wVe();ojn={name:$S,factory:g7a,hidden:!0}});class xVe{getRuntime;state;onModelChanged;constructor(e,t,n){this.getRuntime=e;this.state=t;this.onModelChanged=n}async set(e){let t=this.findOrReport(e);if(!t)return!1;let n=this.getRuntime();return await n.session.setModel(t,{persist:!1}),n.services.settingsManager.setDefaultModelAndProvider(t.provider,t.id),await n.services.settingsManager.flush(),this.onModelChanged(),!0}async cycle(e="forward"){let t=this.getRuntime();if(!await t.session.cycleModel(e,{persist:!0}))return!1;return await t.services.settingsManager.flush(),this.onModelChanged(),!0}async toggleScoped(e){let t=this.findOrReport(e);if(!t)return!1;let n=this.getRuntime(),r=n.session,a=`${t.provider}/${t.id}`,i=r.scopedModels.filter((u)=>`${u.model.provider}/${u.model.id}`!==a);if(i.length===r.scopedModels.length)i.push({model:t});let o=n.services.modelRuntime,s=o.getModels().filter((u)=>o.hasConfiguredAuth(u.provider)).length,c=i.length===0||i.length===s?void 0:i.map((u)=>`${u.model.provider}/${u.model.id}`);return n.services.settingsManager.setEnabledModels(c),await n.services.settingsManager.flush(),r.setScopedModels(c===void 0?[]:i),this.sync({restorePicker:!0}),!0}sync(e={}){let t=this.getRuntime(),n=t.session,r=t.services.modelRuntime,a=n.model?`${n.model.provider}/${n.model.id}`:void 0,i=new Set(n.scopedModels.map((s)=>`${s.model.provider}/${s.model.id}`)),o=r.getModels().map((s)=>({id:s.id,provider:s.provider,name:s.name??s.id,configured:r.hasConfiguredAuth(s.provider),scoped:i.has(`${s.provider}/${s.id}`)})).filter((s)=>s.configured||`${s.provider}/${s.id}`===a).sort((s,c)=>A7a(s,c,a));this.state.setModels(o,a,e)}async refresh(e={}){let t=this.getRuntime();if(await t.services.modelRuntime.refresh(e),t===this.getRuntime())this.sync()}setThinking(e){if(!X8(e))return!1;return this.getRuntime().session.setThinkingLevel(e),this.syncThinking(),!0}cycleThinking(e="forward"){let t=this.getRuntime().session;if(e==="forward"){if(!t.cycleThinkingLevel())return!1}else{if(!t.supportsThinking())return!1;let n=t.getAvailableThinkingLevels().filter(X8);if(!n.length)return!1;let r=X8(t.thinkingLevel)?t.thinkingLevel:n[0],a=n.indexOf(r);t.setThinkingLevel(n[a<=0?n.length-1:a-1])}return this.syncThinking(),!0}syncThinking(){let e=this.getRuntime().session,t=e.getAvailableThinkingLevels().filter(X8),n=X8(e.thinkingLevel)?e.thinkingLevel:t[0]??"off";this.state.setThinking(n,t)}findOrReport(e){let[t,...n]=e.split("/"),r=n.join("/"),a=t&&r?this.getRuntime().services.modelRuntime.getModel(t,r):void 0;if(!a)this.state.appendMessage("system",`Model not found: ${e}`);return a}}function A7a(e,t,n){if(e.scoped!==t.scoped)return e.scoped?-1:1;let r=`${e.provider}/${e.id}`===n,a=`${t.provider}/${t.id}`===n;if(r!==a)return r?-1:1;return e.provider.localeCompare(t.provider)||e.id.localeCompare(t.id)}function cjn(e,t){let n=[],r=new Set;for(let a of e){let i=f7a(a);if(!i.modelPattern)continue;for(let o of t.filter((s)=>h7a(s,i.modelPattern))){let s=`${o.provider}/${o.id}`;if(r.has(s))continue;r.add(s),n.push({model:o,thinkingLevel:i.thinkingLevel})}}return n}function f7a(e){let t=e.trim(),n=t.lastIndexOf(":");if(n===-1)return{modelPattern:t};let r=t.slice(n+1);if(!X8(r))return{modelPattern:t};return{modelPattern:t.slice(0,n),thinkingLevel:r}}function h7a(e,t){let n=t.toLowerCase(),r=[e.id,e.name??"",`${e.provider}/${e.id}`].map((o)=>o.toLowerCase());if(!n.includes("*"))return r.some((o)=>o===n||o.includes(n));let a=n.replace(/[.+?^${}()|[\]\\]/g,"\\$&"),i=new RegExp(`^${a.replaceAll("*",".*")}$`,"i");return r.some((o)=>i.test(o))}function X8(e){return["off","minimal","low","medium","high","xhigh","max"].includes(e)}class CVe{stateFor;pending=new Map;compactionQueues=new Map;constructor(e){this.stateFor=e}hasPending(e){return(this.pending.get(e)??0)>0}async submit(e,t,n={}){let r=()=>{},a=!1,i=new Promise((o)=>{r=(s)=>{if(a)return;a=!0,o(s)}});return this.markPending(e),e.session.prompt(t,{images:n.images,streamingBehavior:e.session.isStreaming?n.streamingBehavior??"steer":void 0,preflightResult:r}).catch((o)=>{r(!1),this.reportError(e,o)}).finally(()=>this.markSettled(e)),await i}queueAfterCompaction(e,t,n,r){let a=this.compactionQueues.get(e)??[];a.push({text:t,images:r,streamingBehavior:n}),this.compactionQueues.set(e,a),this.sync(e)}restore(e){let t=this.compactionQueues.get(e)??[];this.compactionQueues.delete(e);let{steering:n,followUp:r}=e.session.clearQueue();return this.stateFor(e)?.setQueuedMessages([],[]),[...n,...t.filter((a)=>a.streamingBehavior==="steer").map((a)=>a.text),...r,...t.filter((a)=>a.streamingBehavior==="followUp").map((a)=>a.text)].join(`
2186
2186
 
2187
- `)}async remove(e,t,n){let r=t==="steer"?e.session.getSteeringMessages():e.session.getFollowUpMessages(),a=this.compactionQueues.get(e)??[],i=a.flatMap((s,c)=>s.streamingBehavior===t?[c]:[]);if(n>=r.length+i.length)return!1;if(n>=r.length){if(a.splice(i[n-r.length],1),a.length===0)this.compactionQueues.delete(e);return this.sync(e),!0}let o=e.session.clearQueue();o[t==="steer"?"steering":"followUp"].splice(n,1);try{for(let s of o.steering)await e.session.steer(s);for(let s of o.followUp)await e.session.followUp(s)}catch(s){this.reportError(e,s)}return this.sync(e),!0}sync(e){let t=this.compactionQueues.get(e)??[];this.stateFor(e)?.setQueuedMessages([...e.session.getSteeringMessages(),...t.filter((n)=>n.streamingBehavior==="steer").map((n)=>n.text)],[...e.session.getFollowUpMessages(),...t.filter((n)=>n.streamingBehavior==="followUp").map((n)=>n.text)])}async flushCompactionQueue(e){let t=this.compactionQueues.get(e);if(!t?.length)return;this.compactionQueues.delete(e),this.sync(e);for(let n=0;n<t.length;n+=1){let r=t[n];if(await this.submit(e,r.text,{images:r.images,streamingBehavior:r.streamingBehavior}))continue;this.compactionQueues.set(e,t.slice(n)),this.sync(e);return}}clear(e){this.compactionQueues.delete(e)}dispose(){this.pending.clear(),this.compactionQueues.clear()}markPending(e){this.pending.set(e,(this.pending.get(e)??0)+1)}markSettled(e){let t=(this.pending.get(e)??1)-1;if(t>0)this.pending.set(e,t);else this.pending.delete(e)}reportError(e,t){this.stateFor(e)?.appendMessage("system",Bm(t))}}var ljn=()=>{};async function F0e(e,t){let n;try{n=await new Bun.Image(e).metadata()}catch{return}let r=t.toLowerCase().split(";",1)[0];if(["image/gif","image/jpeg","image/png","image/webp"].includes(r)&&n.width<=2000&&n.height<=2000&&b7a(e.byteLength)<4718592)return{data:e.toBase64(),mimeType:r,originalWidth:n.width,originalHeight:n.height,width:n.width,height:n.height,wasResized:!1};let{width:a,height:i}=n;if(a>2000)i=Math.round(i*2000/a),a=2000;if(i>2000)a=Math.round(a*2000/i),i=2000;while(!0){let o=await ujn(e,a,i,"png");if(o&&o.length<4718592)return{data:o,mimeType:"image/png",originalWidth:n.width,originalHeight:n.height,width:a,height:i,wasResized:a!==n.width||i!==n.height};for(let s of djn){let c=await ujn(e,a,i,"jpeg",s);if(c&&c.length<4718592)return{data:c,mimeType:"image/jpeg",originalWidth:n.width,originalHeight:n.height,width:a,height:i,wasResized:a!==n.width||i!==n.height}}if(a===1&&i===1)return;a=a===1?1:Math.max(1,Math.floor(a*0.75)),i=i===1?1:Math.max(1,Math.floor(i*0.75))}}async function ujn(e,t,n,r,a=djn[0]){try{let i=new Bun.Image(e).resize(t,n,{fit:"inside",withoutEnlargement:!0});return r==="png"?await i.png().toBase64():await i.jpeg({quality:a}).toBase64()}catch{return}}function b7a(e){return Math.ceil(e/3)*4}var djn;var EVe=m(()=>{djn=[85,70,55,40]});import{access as y7a,readFile as pjn}from"fs/promises";function Ajn(e){let t=new Map,n=new Map,r=F2(e,{autoResizeImages:!1,operations:{access:y7a,async detectImageMimeType(i){let o=await vx(i);if(!o)return null;let s=await F0e(await pjn(i),o);if(!s)throw Error(`Could not process image: ${i}`);return mjn(t,i,{bytes:Buffer.from(s.data,"base64"),mimeType:s.mimeType,dimensionNote:zL(s)}),s.mimeType},async readFile(i){let o=gjn(t,i);if(!o)return pjn(i);if(o.dimensionNote)mjn(n,i,o.dimensionNote);return o.bytes}}}),a=r.execute;return r.execute=async(...i)=>{let o=await a(...i),s=gjn(n,i[1].path),c=o.content.find((u)=>u.type==="text");if(s&&c?.type==="text")c.text+=`
2187
+ `)}async remove(e,t,n){let r=t==="steer"?e.session.getSteeringMessages():e.session.getFollowUpMessages(),a=this.compactionQueues.get(e)??[],i=a.flatMap((s,c)=>s.streamingBehavior===t?[c]:[]);if(n>=r.length+i.length)return!1;if(n>=r.length){if(a.splice(i[n-r.length],1),a.length===0)this.compactionQueues.delete(e);return this.sync(e),!0}let o=e.session.clearQueue();o[t==="steer"?"steering":"followUp"].splice(n,1);try{for(let s of o.steering)await e.session.steer(s);for(let s of o.followUp)await e.session.followUp(s)}catch(s){this.reportError(e,s)}return this.sync(e),!0}sync(e){let t=this.compactionQueues.get(e)??[];this.stateFor(e)?.setQueuedMessages([...e.session.getSteeringMessages(),...t.filter((n)=>n.streamingBehavior==="steer").map((n)=>n.text)],[...e.session.getFollowUpMessages(),...t.filter((n)=>n.streamingBehavior==="followUp").map((n)=>n.text)])}async flushCompactionQueue(e){let t=this.compactionQueues.get(e);if(!t?.length)return;this.compactionQueues.delete(e),this.sync(e);for(let n=0;n<t.length;n+=1){let r=t[n];if(await this.submit(e,r.text,{images:r.images,streamingBehavior:r.streamingBehavior}))continue;this.compactionQueues.set(e,t.slice(n)),this.sync(e);return}}clear(e){this.compactionQueues.delete(e)}dispose(){this.pending.clear(),this.compactionQueues.clear()}markPending(e){this.pending.set(e,(this.pending.get(e)??0)+1)}markSettled(e){let t=(this.pending.get(e)??1)-1;if(t>0)this.pending.set(e,t);else this.pending.delete(e)}reportError(e,t){this.stateFor(e)?.appendMessage("system",Bm(t))}}var ljn=()=>{};async function F0e(e,t){let n;try{n=await new Bun.Image(e).metadata()}catch{return}let r=t.toLowerCase().split(";",1)[0];if(["image/gif","image/jpeg","image/png","image/webp"].includes(r)&&n.width<=2000&&n.height<=2000&&b7a(e.byteLength)<4718592)return{data:e.toBase64(),mimeType:r,originalWidth:n.width,originalHeight:n.height,width:n.width,height:n.height,wasResized:!1};let{width:a,height:i}=n;if(a>2000)i=Math.round(i*2000/a),a=2000;if(i>2000)a=Math.round(a*2000/i),i=2000;while(!0){if(r!=="image/jpeg"){let o=await ujn(e,a,i,"png");if(o&&o.length<4718592)return{data:o,mimeType:"image/png",originalWidth:n.width,originalHeight:n.height,width:a,height:i,wasResized:a!==n.width||i!==n.height}}for(let o of djn){let s=await ujn(e,a,i,"jpeg",o);if(s&&s.length<4718592)return{data:s,mimeType:"image/jpeg",originalWidth:n.width,originalHeight:n.height,width:a,height:i,wasResized:a!==n.width||i!==n.height}}if(a===1&&i===1)return;a=a===1?1:Math.max(1,Math.floor(a*0.75)),i=i===1?1:Math.max(1,Math.floor(i*0.75))}}async function ujn(e,t,n,r,a=djn[0]){try{let i=new Bun.Image(e).resize(t,n,{fit:"inside",withoutEnlargement:!0});return r==="png"?await i.png().toBase64():await i.jpeg({quality:a}).toBase64()}catch{return}}function b7a(e){return Math.ceil(e/3)*4}var djn;var EVe=m(()=>{djn=[85,70,55,40]});import{access as y7a,readFile as pjn}from"fs/promises";function Ajn(e){let t=new Map,n=new Map,r=F2(e,{autoResizeImages:!1,operations:{access:y7a,async detectImageMimeType(i){let o=await vx(i);if(!o)return null;let s=await F0e(await pjn(i),o);if(!s)throw Error(`Could not process image: ${i}`);return mjn(t,i,{bytes:Buffer.from(s.data,"base64"),mimeType:s.mimeType,dimensionNote:zL(s)}),s.mimeType},async readFile(i){let o=gjn(t,i);if(!o)return pjn(i);if(o.dimensionNote)mjn(n,i,o.dimensionNote);return o.bytes}}}),a=r.execute;return r.execute=async(...i)=>{let o=await a(...i),s=gjn(n,i[1].path),c=o.content.find((u)=>u.type==="text");if(s&&c?.type==="text")c.text+=`
2188
2188
  ${s}`;return o},Hz(r)}function mjn(e,t,n){let r=e.get(t);if(r)r.push(n);else e.set(t,[n])}function gjn(e,t){let n=e.get(t),r=n?.shift();if(n?.length===0)e.delete(t);return r}var fjn=m(()=>{oM();EVe()});import{watch as w7a}from"fs";import{join as hjn}from"path";var k7a=".jsonl",bjn=(e,t)=>{let n=hjn(e,"sessions");try{let r=w7a(n,{recursive:!0},(a,i)=>{if(!i)return;let o=hjn(n,i.toString());if(o.endsWith(k7a))t(o)});return r.on("error",(a)=>{console.warn("Session catalogue watcher stopped",a)}),()=>r.close()}catch{return()=>{}}};var yjn=()=>{};function wjn(e,t=new Date,n){let r=vVe(e,t);if(r===0)return e.toLocaleTimeString(n,{hour:"2-digit",minute:"2-digit"});if(r===1)return new Intl.RelativeTimeFormat(n,{numeric:"auto"}).format(-1,"day");if(r>1&&r<7)return e.toLocaleDateString(n,{weekday:"long"});return e.toLocaleDateString(n,{month:"short",day:"numeric",year:e.getFullYear()===t.getFullYear()?void 0:"numeric"})}function kjn(e,t){return new Intl.DateTimeFormat(t,{dateStyle:"medium",timeStyle:"short"}).format(e)}function vVe(e,t){let n=Date.UTC(e.getFullYear(),e.getMonth(),e.getDate()),r=Date.UTC(t.getFullYear(),t.getMonth(),t.getDate());return Math.round((r-n)/86400000)}function xP(e,t=new Date,n=_P){return wjn(e,t,n)}function _jn(e,t=_P){return kjn(e,t)}function _7a(e){if(!e)return;let t=e.split(".")[0].split("@")[0].replaceAll("_","-");return t==="C"||t==="POSIX"?void 0:t}var _P;var e6=m(()=>{_P=_7a(process.env.LC_ALL||process.env.LC_TIME||process.env.LANG)});function xjn(e,t,n){return e.map((r)=>{let{backgroundStatus:a,...i}=r,o=r.path===n?void 0:t.get(r.path);return o?{...i,backgroundStatus:o}:i})}function L0e(e){let t=[],n=e;while(!0){let r=n.match(/^@((?:\/|[A-Za-z]:[\\/])[^\r\n]+)(?:\r?\n|$)/);if(!r)break;t.push(r[1]),n=n.slice(r[0].length)}return{prompt:n,paths:t}}function Q0e(e){return(e.split(/[\\/]/).filter(Boolean).at(-1)??e).replace(/^file-[a-f0-9]+-/i,"")}import{mkdir as x7a,rename as C7a,rm as E7a}from"fs/promises";import{dirname as v7a}from"path";function t6(){return Jfe("session-index.json")}async function j0e(e=t6()){try{let t=JSON.parse(await Bun.file(e).text());if(!ci(t)||t.version!==IVe||!ci(t.sessions))return Ejn();let n={};for(let[r,a]of Object.entries(t.sessions)){let i=N7a(a);if(i)n[r]=i}return{version:IVe,sessions:n}}catch(t){if(Pl(t)||t instanceof SyntaxError)return Ejn();throw t}}async function T7a(e,t=t6()){await x7a(v7a(t),{recursive:!0});let n=`${t}.${crypto.randomUUID()}.tmp`;try{await Bun.write(n,`${JSON.stringify(e,null,"\t")}
2189
2189
  `),await C7a(n,t)}catch(r){throw await E7a(n).catch(()=>{return}),r}}async function SVe(e,t=t6(),n){let a=(O0e.get(t)??Promise.resolve()).catch(()=>{return}).then(async()=>{let i=await j0e(t);if(Object.assign(i.sessions,e),n){for(let o of Object.keys(i.sessions))if(!n.has(o))delete i.sessions[o]}await T7a(i,t)});O0e.set(t,a);try{await a}finally{if(O0e.get(t)===a)O0e.delete(t)}}async function BVe(e,t){if(t&&e.indexedBytes===t.indexedBytes&&e.mtime===t.mtime)return t;if(t&&e.indexedBytes>t.indexedBytes)return await vjn(e,t);return await vjn(e)}function TVe(e,t){return{path:e,id:t.id,cwd:t.cwd,name:t.name,parentSessionPath:t.parentSessionPath,created:new Date(t.created),modified:new Date(t.lastActivity||t.mtime||t.created),messageCount:t.messageCount,firstMessage:t.firstMessage||"(no messages)",allMessagesText:""}}function Ejn(){return{version:IVe,sessions:{}}}async function vjn(e,t){let n=t?{...t}:{indexedBytes:0,mtime:e.mtime,id:"",cwd:"",firstMessage:"",messageCount:0,lastActivity:0,created:0},r=t?.indexedBytes??0;try{let a=Bun.file(e.path).slice(r).stream().getReader(),i=[],o=0,s=0;while(!0){let{done:c,value:u}=await a.read();if(c)break;let l=0;for(let d=0;d<u.length;d+=1){if(u[d]!==10)continue;let p=u.slice(l,d),g=P7a(i,o,p);i.length=0,o=0,D7a(n,g),s+=g.length+1,l=d+1}if(l<u.length){let d=u.slice(l);i.push(d),o+=d.length}}if(!t&&!n.id)return;return n.indexedBytes=r+s,n.mtime=e.mtime,n}catch{return}}function D7a(e,t){if(t.length===0)return;let n;try{n=JSON.parse(I7a.decode(t))}catch{return}if(!ci(n)||!_r(n.type))return;if(n.type==="session"&&!e.id){if(!_r(n.id)||!_r(n.timestamp))return;e.id=n.id,e.cwd=_r(n.cwd)?n.cwd:"",e.created=Ijn(n.timestamp),e.parentSessionPath=_r(n.parentSession)?n.parentSession:void 0;return}if(n.type==="session_info"){e.name=_r(n.name)&&n.name.trim()?$0e(n.name.trim()):void 0;return}if(n.type!=="message")return;if(e.messageCount+=1,!ci(n.message))return;let r=n.message.role;if(r!=="user"&&r!=="assistant")return;let a=Cf(n.message.timestamp)?n.message.timestamp:Ijn(n.timestamp);if(a>0)e.lastActivity=Math.max(e.lastActivity,a);if(!e.firstMessage&&r==="user")e.firstMessage=R7a(n.message.content)}function R7a(e){let t=M7a(e),{prompt:n,paths:r}=L0e(t),a=n.trim();if(a)return $0e(a);if(r.length===1)return $0e(Q0e(r[0]));if(r.length>1)return`${r.length} attachments`;let i=Array.isArray(e)?e.filter((o)=>ci(o)&&o.type==="image").length:0;if(i===1)return"Image";if(i>1)return`${i} images`;return $0e(t.trim())}function M7a(e){if(_r(e))return e;if(!Array.isArray(e))return"";let t=[];for(let n of e)if(ci(n)&&n.type==="text"&&_r(n.text))t.push(n.text);return t.join(" ")}function $0e(e){return e.length>Cjn?`${e.slice(0,Cjn-1)}\u2026`:e}function Ijn(e){if(!_r(e))return 0;let t=new Date(e).getTime();return Number.isNaN(t)?0:t}function P7a(e,t,n){if(t===0)return n;let r=new Uint8Array(t+n.length),a=0;for(let i of e)r.set(i,a),a+=i.length;return r.set(n,a),r}function N7a(e){return B7a.Check(e)?e:void 0}var IVe=2,Cjn=96,I7a,O0e,S7a,B7a;var Sjn=m(()=>{Q0();U0();Hqe();Eg();I7a=new TextDecoder,O0e=new Map,S7a=Vt.Object({indexedBytes:Vt.Number(),mtime:Vt.Number(),id:Vt.String(),cwd:Vt.String(),name:Vt.Optional(Vt.String()),firstMessage:Vt.String(),messageCount:Vt.Number(),lastActivity:Vt.Number(),created:Vt.Number(),parentSessionPath:Vt.Optional(Vt.String())}),B7a=xs(S7a)});import{readdir as Bjn,stat as Djn}from"fs/promises";import{join as DVe}from"path";class n6{state;lifecycle;refreshGeneration=0;pathRefreshGenerations=new Map;sessionTouchTimers=new Map;sessionTouchTimes=new Map;sessionFileRefreshTimers=new Map;stopWatch;constructor(e,t){this.state=e;this.lifecycle=t}static prepare(){return O7a().then((e)=>({ok:!0,sessions:e}),(e)=>({ok:!1,error:e}))}activate(){if(this.stopWatch||!this.lifecycle?.watch)return;this.stopWatch=this.lifecycle.watch(this.lifecycle.agentDir,(e)=>this.scheduleFileRefresh(e))}dispose(){this.stopWatch?.(),this.stopWatch=void 0;for(let e of this.sessionTouchTimers.values())clearTimeout(e);for(let e of this.sessionFileRefreshTimers.values())clearTimeout(e);this.sessionTouchTimers.clear(),this.sessionTouchTimes.clear(),this.sessionFileRefreshTimers.clear()}handleEvent(e,t,n){if(t.type==="message_start"){this.messageStarted(e,t.message.role==="user"?Q7a(t.message.content):void 0,n);return}if(t.type==="message_end"){this.flushTouch(e),this.refreshPath(e,{preserveMissing:t.message.role==="user"});return}if(t.type==="message_update"||t.type==="tool_execution_start"||t.type==="tool_execution_update"||t.type==="tool_execution_end")this.scheduleTouch(e)}applyPrepared(e,t={}){if(!e.ok){this.state.appendMessage("system",`Failed to list sessions: ${Bm(e.error)}`),this.state.setSessionCatalogLoading(!1);return}this.apply(e.sessions,t),this.state.setSessionCatalogLoading(!1)}async refresh(e=n6.prepare,t={}){let n=++this.refreshGeneration;if(t.showLoading!==!1)this.state.setSessionCatalogLoading(!0);let r;try{r=await e()}catch(a){r={ok:!1,error:a}}if(n!==this.refreshGeneration)return;this.applyPrepared(r,t)}agentCompleted(e){this.state.promoteSession(e)}mergeCurrentStatuses(){let e=this.state.getSessionCatalog(),t=this.mergeStatuses(e);for(let[n,r]of t.entries())if(r.backgroundStatus!==e[n]?.backgroundStatus)this.state.updateSessionSummary(r.path,()=>r)}messageStarted(e,t,n){let r=new Date,a=t?.trim();if(this.state.updateSessionSummary(e,(o)=>{let s=U7a(o.subtitle)+1;return{...o,title:s===1&&a?RVe(a,96):o.title,subtitle:`${s} message${s===1?"":"s"}`,modified:xP(r),modifiedAt:r.toISOString()}})){if(a!==void 0)this.state.promoteSession(e,{regroup:!0});return}if(!a||!n)return;this.applyOrdered(this.mergeStatuses([{path:e,cwd:n,title:RVe(a,96),subtitle:"1 message",modified:xP(r),modifiedAt:r.toISOString()},...this.state.getSessionCatalog()]))}rename(e,t){this.state.updateSessionSummary(e,(n)=>({...n,title:t}))}touch(e){let t=new Date;this.state.updateSessionSummary(e,(n)=>({...n,modified:xP(t),modifiedAt:t.toISOString()}))}async refreshPath(e,t={}){let n=(this.pathRefreshGenerations.get(e)??0)+1;this.pathRefreshGenerations.set(e,n);let r;try{let l=await Djn(e),d=l.mtime;r={path:e,indexedBytes:l.size,mtime:d.getTime()}}catch(l){if(!Pl(l))return;if(this.pathRefreshGenerations.get(e)!==n)return;if(!t.preserveMissing)this.state.removeSession(e);return}let a=t6(),o=(await j0e(a)).sessions[e],s=await BVe(r,o);if(!s||this.pathRefreshGenerations.get(e)!==n)return;if(s!==o)await SVe({[e]:s},a);let c=this.mergeStatuses([Tjn(TVe(e,s))])[0];if(!c)return;let u=this.state.getSessionCatalog();if(u.some((l)=>l.path===e)){this.state.updateSessionSummary(e,()=>c);return}this.applyOrdered([c,...u])}scheduleTouch(e){let t=Date.now()-(this.sessionTouchTimes.get(e)??0);if(t>=1000){this.flushTouch(e);return}if(this.sessionTouchTimers.has(e))return;this.sessionTouchTimers.set(e,setTimeout(()=>this.flushTouch(e),1000-t))}flushTouch(e){let t=this.sessionTouchTimers.get(e);if(t)clearTimeout(t);this.sessionTouchTimers.delete(e),this.sessionTouchTimes.set(e,Date.now()),this.touch(e)}scheduleFileRefresh(e){let t=this.sessionFileRefreshTimers.get(e);if(t)clearTimeout(t);this.sessionFileRefreshTimers.set(e,setTimeout(()=>{this.sessionFileRefreshTimers.delete(e),this.refreshPath(e)},200))}mergeStatuses(e){return xjn(e,this.lifecycle?.backgroundStatuses?.()??L7a,this.state.currentSessionPath)}apply(e,t={}){if(t.refreshWorkspaces!==!1)this.state.setRecentWorkspaces(j7a(e));let n=e.map(Tjn),r=this.state.currentSessionPath,a=r&&!n.some((i)=>i.path===r)?this.state.getSessionCatalog().find((i)=>i.path===r):void 0;this.applyOrdered(this.mergeStatuses(a?[a,...n]:n))}applyOrdered(e){let t=new Set(e.map((o)=>o.path)),n=this.state.getSessionCatalog().map((o)=>o.path),r=new Set(n),a=[...e.filter((o)=>!r.has(o.path)).map((o)=>o.path),...n.filter((o)=>t.has(o))],i=new Map(e.map((o)=>[o.path,o]));this.state.setSessionCatalog(a.flatMap((o)=>{let s=i.get(o);return s?[s]:[]}))}}function Q7a(e){if(_r(e))return e;if(!Array.isArray(e))return"";return e.flatMap((t)=>ci(t)&&t.type==="text"&&_r(t.text)?[t.text]:[]).join(" ")}async function O7a(e=DVe(ra(),"sessions"),t=t6()){let[n,r]=await Promise.all([$7a(e),j0e(t)]),a=Array.from({length:n.length}),i=0,o=async()=>{while(i<n.length){let d=i++,p=n[d];a[d]=await BVe(p,r.sessions[p.path])}};await Promise.all(Array.from({length:Math.min(F7a,n.length)},o));let s=[],c={};for(let[d,p]of n.entries()){let g=a[d];if(!g)continue;if(g!==r.sessions[p.path])c[p.path]=g;s.push(TVe(p.path,g))}let u=new Set(n.map((d)=>d.path)),l=Object.keys(r.sessions).some((d)=>!u.has(d));if(Object.keys(c).length>0||l)await SVe(c,t,u);return s.sort((d,p)=>p.modified.getTime()-d.modified.getTime()),s}async function $7a(e){let t=[];try{for(let r of await Bjn(e,{withFileTypes:!0})){if(!r.isDirectory())continue;let a=DVe(e,r.name);try{for(let i of await Bjn(a,{withFileTypes:!0}))if(i.isFile()&&i.name.endsWith(".jsonl"))t.push(DVe(a,i.name))}catch{}}}catch(r){if(Pl(r))return[];throw r}return(await Promise.all(t.map(async(r)=>{try{let a=await Djn(r),i=a.mtime;return{path:r,indexedBytes:a.size,mtime:i.getTime()}}catch{return}}))).filter((r)=>Boolean(r)).sort((r,a)=>a.mtime-r.mtime)}function j7a(e){let t=[];for(let n of e){if(!n.cwd||t.includes(n.cwd))continue;t.push(n.cwd)}return t}function Tjn(e){let t=e.name?.trim()||e.firstMessage.trim()||"Untitled session",n=`${e.messageCount} message${e.messageCount===1?"":"s"}`;return{path:e.path,cwd:e.cwd,title:RVe(t,96),subtitle:n,modified:xP(e.modified),modifiedAt:e.modified.toISOString()}}function U7a(e){let t=Number.parseInt(e,10);return Number.isFinite(t)?t:0}function RVe(e,t){return e.length>t?`${e.slice(0,t-1)}\u2026`:e}var F7a=4,L7a;var Rjn=m(()=>{oM();e6();Eg();Sjn();L7a=new Map});function U0e(e){let t=e?.trim()||"Unknown error",n=t.match(G7a);if(!n)return`Error: ${t}`;try{let r=JSON.parse(n[2]);return`Error ${n[1]}: ${JSON.stringify(r,null,"\t")}`}catch{return`Error: ${t}`}}var G7a;var MVe=m(()=>{G7a=/^(\d{3}):\s*(\{[\s\S]*\})$/u});function W7a(e){let t=e.match(/"(path|file_path)"\s*:\s*"((?:\\.|[^"\\])*)"/);if(!t)return;try{let n=JSON.parse(`"${t[2]}"`);return _r(n)?{[t[1]]:n}:void 0}catch{return}}function Mjn(e,t){let{state:n,tools:r}=t;switch(e.type){case"agent_start":n.setActivityText("Working...");break;case"message_start":if(e.message.role==="toolResult")break;for(let a of t.convertMessage(e.message,t.now?.()??new Date)){let i={title:a.title,titleParts:a.titleParts,meta:a.meta,state:a.state,format:a.format};if(a.attachments?.length)i.attachments=a.attachments;n.appendMessage(a.role,a.text,i)}break;case"message_update":{let a=e.assistantMessageEvent;if(a.type==="toolcall_start"||a.type==="toolcall_delta"){let i=a.partial.content[a.contentIndex];if(i?.type==="toolCall"&&i.name){let o=r.previewMessages.get(a.contentIndex);if(!o){n.finishAssistant();let s=t.formatToolPreview(i.name,{});o={id:n.appendMessage("tool",s.text,s.options),argumentPrefix:""},r.previewMessages.set(a.contentIndex,o)}if(a.type==="toolcall_delta"&&o.argumentPrefix!==void 0)if(!z7a.has(i.name))o.argumentPrefix=void 0;else{let s=o.argumentPrefix+a.delta,c=W7a(s);if(c){let u=t.formatToolPreview(i.name,c);n.updateMessage(o.id,{text:u.text,...u.options}),o.argumentPrefix=void 0}else o.argumentPrefix=s.length<=H7a?s:void 0}}}if(a.type==="toolcall_end"){let i=a.toolCall,s=r.previewMessages.get(a.contentIndex)?.id;if(!s){let c=t.formatToolPreview(i.name,{});s=n.appendMessage("tool",c.text,c.options)}r.previewMessages.delete(a.contentIndex),r.messageIds.set(i.id,s),r.callArgs.set(i.id,i.arguments)}if(a.type==="thinking_delta")n.appendThoughtDelta(a.delta);if(a.type==="text_delta")n.appendAssistantDelta(a.delta);break}case"message_end":if(e.message.role==="assistant"){if(n.finishAssistant(),e.message.stopReason==="error")n.appendMessage("system",U0e(e.message.errorMessage),{state:"error"});let a=t.cacheMissNotice?.(e.message);if(a)n.appendMessage("notice",a);for(let i of r.previewMessages.values())n.updateMessage(i.id,{state:"error",meta:"Cancelled"});r.previewMessages.clear()}t.syncUsage?.();break;case"tool_execution_start":{n.finishAssistant(),r.callArgs.set(e.toolCallId,e.args),r.startedAt.set(e.toolCallId,t.nowMs?.()??Date.now());let a=t.formatToolStart(e),i=r.messageIds.get(e.toolCallId),o=i??n.appendMessage("tool",a.text,a.options);if(i)n.updateMessage(o,{text:a.text,...a.options});r.messageIds.set(e.toolCallId,o);break}case"tool_execution_update":{let a=r.messageIds.get(e.toolCallId);if(a)n.updateMessage(a,t.formatToolUpdate(e));break}case"tool_execution_end":{let a=r.messageIds.get(e.toolCallId),i=r.callArgs.get(e.toolCallId)??{},o=t.formatToolEnd(e,i,r.startedAt.get(e.toolCallId));if(a)n.updateMessage(a,{text:o.text,...o.options});else n.appendMessage("tool",o.text,o.options);r.messageIds.delete(e.toolCallId),r.callArgs.delete(e.toolCallId),r.startedAt.delete(e.toolCallId);break}case"queue_update":n.setQueuedMessages(e.steering,e.followUp);break;case"agent_end":return n.setActivityText(void 0),{agentCompleted:!0};case"auto_retry_start":n.setActivityText(`Retrying (${e.attempt}/${e.maxAttempts})...`);break;case"auto_retry_end":n.setActivityText(void 0);break;case"compaction_start":n.setActivityText(e.reason==="manual"?"Compacting context...":"Auto compaction...");break;case"compaction_end":if(n.setActivityText(void 0),e.result)n.appendMessage("compaction",e.result.summary,{meta:`compacted from ${e.result.tokensBefore.toLocaleString()} tokens`});if(e.errorMessage)n.appendMessage("system",e.errorMessage);break}return q7a}var q7a,H7a=4096,z7a;var Pjn=m(()=>{Eg();MVe();q7a={agentCompleted:!1},z7a=new Set(["edit","find","grep","ls","read","show_visualization","write"])});import K7a from"os";import V7a from"path";import{fileURLToPath as Y7a}from"url";function Z7a(e,t={}){let n=t.platform??np,r=t.pathApi??V7a,a=t.homeDir??K7a.homedir(),i=e;if(i==="~")i=a;else if(i.startsWith("~/")||n==="windows"&&i.startsWith("~\\"))i=r.join(a,i.slice(2));if(i.startsWith("file://"))i=Y7a(i);return r.resolve(i)}async function Njn(e,t){if(!e.trim())return!1;let n=Z7a(e),r=t.findBackground(n);if(r)return await t.activateBackground(n,r),!0;let a=t.state(),i=a.streaming||a.observedRunning;if(!i&&a.persisted)return!(await t.switchSession(e)).cancelled;let o=t.openSession(e),s=i?a.persisted?"background":"discard":"dispose";return await t.replaceRuntime(o,s),!0}var Fjn=m(()=>{IC()});import{tmpdir as J7a}from"os";import{join as X7a}from"path";async function Qjn(e,t=eja){let n;try{n=await t.runGh(["auth","status"])}catch{throw Error("GitHub CLI (gh) is not installed. Install it from https://cli.github.com/")}if(n.code!==0)throw Error("GitHub CLI is not logged in. Run 'gh auth login' first.");let r=t.tempFilePath();try{await e.exportToHtml(r);let a=await t.runGh(["gist","create","--public=false",r]);if(a.code!==0)throw Error(`Failed to create gist: ${Ljn.decode(a.stderr).trim()||"Unknown error"}`);let i=Ljn.decode(a.stdout).trim(),o=i.split("/").filter(Boolean).at(-1);if(!o)throw Error("Failed to parse gist ID from gh output.");return{shareUrl:t.shareViewerUrl(o),gistUrl:i}}finally{await t.removeFile(r).catch(()=>{})}}var Ljn,eja;var Ojn=m(()=>{Ljn=new TextDecoder,eja={tempFilePath:()=>X7a(J7a(),`pi-ui-session-${crypto.randomUUID()}.html`),removeFile:(e)=>Bun.file(e).delete(),runGh:(e)=>Zk("gh",{args:e}),shareViewerUrl:(e)=>`${process.env.PI_SHARE_VIEWER_URL??"https://pi.dev/session/"}#${e}`}});function G0e(e){return e.status==="error"||e.status==="loading"&&e.overlay}class HV{update;generation=0;loading=!1;constructor(e){this.update=e;this.update({status:"idle",generation:this.generation})}async run(e,t,n={}){if(this.loading)return{status:"busy"};this.loading=!0,this.generation+=1;let r=this.generation;this.update({status:"loading",generation:r,targetPath:e,overlay:n.overlay??!0});try{let a=await t(r);return this.update({status:"idle",generation:r}),{status:a?"success":"cancelled"}}catch(a){return this.update({status:"error",generation:r,targetPath:e,message:tja(a)}),{status:"error"}}finally{this.loading=!1}}}function tja(e){return Bm(e).trim()||"Session transition failed."}var zV=()=>{};async function $jn({action:e,unsubscribe:t,abort:n,dispose:r,background:a,bindReplacement:i,onAbortError:o}){if(e==="background")a();else if(e==="discard"){t();try{await n()}catch(s){o?.(s)}await r()}else if(e==="dispose")t(),await r();await i()}function WV(e,t){let n=Mk(t);if(e==="bash"&&n){let a=Cf(n.timeout)?` timeout ${n.timeout}s`:"";return[{text:"$ ",tone:"accent",mono:!0},{text:aja(pC(n.command))||"...",mono:!0,highlight:"bash"},...a?[{text:a,tone:"muted",mono:!0}]:[]]}let r=Gjn(e,t);return[{text:e},...r?[{text:r,tone:"accent",mono:!0}]:[],...PVe(t)?[{text:PVe(t),tone:"warning",mono:!0}]:[]]}function aja(e){if(e.length<=90)return e;let t="",n,r=!1,a=!1,i=0,o=()=>`
2190
2190
  ${" ".repeat(i)}`;for(let s=0;s<e.length;s++){let c=e[s];if(a){if(t+=c,c===`
@@ -3986,7 +3986,7 @@ ${ltr}
3986
3986
  @post('${Nt.modelsScopeToggle}', {
3987
3987
  payload: { model: ${JSON.stringify(o)} },
3988
3988
  });
3989
- `,children:ei.jsxDEV(Co,{icon:xrr,class:a.scoped?"size-4 [&_path]:fill-current":"size-4"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)})]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this))}function aii(e){return e.id.slice(e.id.lastIndexOf("/")+1)}var ei;var Brt=m(()=>{U6();$o();jS();Ay();K0();V0();$k();ei=An(Sr(),1)});function V_e(e){let t=e.extensionWorkingMessage??e.activityText;return an(za.jsxDEV("span",{id:"prompt-status",class:"inline-flex h-8 min-w-0 shrink-0 items-center gap-2",children:[za.jsxDEV("span",{class:"inline-flex h-6 min-w-0 items-center gap-1.5 truncate font-mono text-xs leading-none text-muted-foreground","data-show":"$_promptSubmitting",style:"display: none",children:[BZ(),za.jsxDEV("span",{children:"Sending..."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),e.extensionWorkingVisible&&t&&za.jsxDEV("span",{class:"inline-flex h-6 min-w-0 items-center truncate font-mono text-xs leading-none text-muted-foreground",children:za.jsxDEV("span",{class:"inline-flex items-center gap-1.5",children:[e.extensionWorkingIndicator===void 0?BZ():e.extensionWorkingIndicator&&za.jsxDEV("span",{safe:!0,children:e.extensionWorkingIndicator},void 0,!1,void 0,this),za.jsxDEV("span",{safe:!0,children:t},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),e.extensionStatuses.map((n)=>za.jsxDEV("span",{class:"hidden max-w-40 truncate font-mono text-xs text-muted-foreground sm:inline","data-extension-status":n.key,safe:!0,children:n.text},void 0,!1,void 0,this)),za.jsxDEV("span",{class:"inline-flex shrink-0 items-center gap-1",children:iii(e.usage)},void 0,!1,void 0,this)]},void 0,!0,void 0,this))}function iii(e){let t=e.contextPercent??0,n=e.limits?Math.max(0,...e.limits.windows.map((r)=>r.usedPercent)):0;return an(za.jsxDEV("span",{class:"inline-flex shrink-0 items-center gap-1.5 font-mono text-xs",children:[za.jsxDEV("span",{class:"group inline-flex size-4 shrink-0 items-center justify-center","data-tooltip":"Context usage","aria-label":e.text,children:[Zrr(t,Jrr(t)),oii(e)]},void 0,!0,void 0,this),e.limits&&za.jsxDEV("span",{class:"group inline-flex size-4 shrink-0 items-center justify-center","data-tooltip":e.limits.label,"aria-label":cii(e.limits),children:[Zrr(n,Jrr(n)),sii(e.limits)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this))}function oii(e){let{contextPercent:t,contextTokens:n,contextWindow:r}=e;return an(za.jsxDEV("span",{role:"tooltip","data-slot":"tooltip-content",class:"grid w-60 max-w-none items-stretch gap-0 px-3 py-2.5 text-left",children:t!==void 0&&n!==void 0&&r!==void 0?za.jsxDEV(za.Fragment,{children:[za.jsxDEV("span",{class:"mb-1.5 flex items-baseline justify-between gap-3",children:[za.jsxDEV("strong",{class:"font-mono text-xs font-semibold",children:"Context usage"},void 0,!1,void 0,this),za.jsxDEV("strong",{class:"font-mono text-xs font-semibold",children:[Math.round(t),"% used"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),za.jsxDEV("span",{class:"mb-1 flex items-baseline justify-between gap-3 font-mono text-[0.6875rem]",children:[za.jsxDEV("strong",{class:"font-semibold",children:[OS(n)," tokens"]},void 0,!0,void 0,this),za.jsxDEV("span",{class:"pi-inverse-fine-print",children:["of ",OS(r)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),za.jsxDEV("span",{class:"h-1 overflow-hidden rounded-full bg-background/20",children:za.jsxDEV("span",{class:"block h-full rounded-full bg-background",style:`width: ${Trt(t)}%`},void 0,!1,void 0,this)},void 0,!1,void 0,this),za.jsxDEV("span",{class:"pi-inverse-fine-print mt-1.5 flex items-baseline justify-between gap-3 font-mono text-[0.625rem]",children:[za.jsxDEV("span",{children:e.cacheHitPercent===void 0?"cache hit unavailable":`${e.cacheHitPercent.toFixed(1)}% cache hit`},void 0,!1,void 0,this),za.jsxDEV("span",{children:[e.costText," session"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this):za.jsxDEV(za.Fragment,{children:[za.jsxDEV("span",{class:"mb-1 flex items-baseline justify-between gap-3 font-mono",children:[za.jsxDEV("strong",{class:"text-xs font-semibold",children:"Context usage"},void 0,!1,void 0,this),za.jsxDEV("span",{class:"pi-inverse-fine-print text-[0.625rem]",children:[e.costText," session"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),za.jsxDEV("span",{class:"pi-inverse-fine-print font-mono text-[0.6875rem]",children:"Available after next response"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this))}function sii(e){return an(za.jsxDEV("span",{role:"tooltip","data-slot":"tooltip-content",class:"grid w-52 max-w-none items-stretch gap-0 px-3 py-2.5 text-left",children:[za.jsxDEV("strong",{class:"mb-2 font-mono text-xs font-semibold",children:e.label},void 0,!1,void 0,this),e.status&&za.jsxDEV("span",{class:"pi-inverse-fine-print font-mono text-[0.6875rem]",children:e.status},void 0,!1,void 0,this),e.windows.map((t,n)=>za.jsxDEV("span",{class:n===0?"grid gap-0.5":"mt-2 grid gap-0.5",children:[za.jsxDEV("span",{class:"flex items-baseline justify-between gap-4 font-mono text-[0.6875rem]",children:[za.jsxDEV("strong",{class:"font-semibold",children:t.label},void 0,!1,void 0,this),za.jsxDEV("strong",{class:"font-semibold",children:[t.remainingPercent,"% left"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),za.jsxDEV("span",{class:"h-1 overflow-hidden rounded-full bg-background/20",children:za.jsxDEV("span",{class:"block h-full rounded-full bg-background",style:`width: ${Trt(t.remainingPercent)}%`},void 0,!1,void 0,this)},void 0,!1,void 0,this),za.jsxDEV("span",{class:"pi-inverse-fine-print text-right font-mono text-[0.625rem]",children:t.resetText==="?"?"reset time unavailable":`resets in ${t.resetText}`},void 0,!1,void 0,this)]},void 0,!0,void 0,this))]},void 0,!0,void 0,this))}function cii(e){if(e.status)return`${e.label} \u2022 ${e.status}`;return`${e.label} \u2022 ${e.windows.map((t)=>`${t.label} ${t.remainingPercent}% left, resets in ${t.resetText}`).join(" \u2022 ")}`}function Zrr(e,t){let n=2*Math.PI*10;return an(za.jsxDEV("svg",{class:"size-4 -rotate-90 opacity-60 transition-opacity group-hover:opacity-100 group-focus-visible:opacity-100",viewBox:"0 0 24 24","aria-hidden":"true",children:[za.jsxDEV("circle",{cx:"12",cy:"12",r:"10",fill:"none",stroke:"currentColor","stroke-width":"3",class:"text-muted-foreground/20"},void 0,!1,void 0,this),za.jsxDEV("circle",{cx:"12",cy:"12",r:"10",fill:"none",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round",class:t,"stroke-dasharray":n,"stroke-dashoffset":n-Trt(e)/100*n},void 0,!1,void 0,this)]},void 0,!0,void 0,this))}function Jrr(e){return e>90?"text-destructive":"text-foreground"}function Trt(e){return Math.min(100,Math.max(0,e))}function BZ(){return za.jsxDEV(Co,{icon:G6,label:"Loading",role:"status",class:"size-3 animate-spin"},void 0,!1,void 0,this)}var za;var Y_e=m(()=>{K0();V0();za=An(Sr(),1)});function J_e(e,t=!1){return an(Dg.jsxDEV("div",{id:"prompt-toolbar",class:"shrink-0 group-data-[measuring]/prompt-footer:flex-none","aria-label":"Message tools",children:[Dg.jsxDEV("div",{class:"flex items-center gap-0.5 group-data-[toolbar-compact]/prompt-footer:hidden",children:Xrr.map((n)=>{let r=n.action==="new-temporary-chat";return Dg.jsxDEV(lii,{label:n.label,action:n.action,shortcut:n.shortcut,tooltipAlign:n.tooltipAlign,variant:r&&e.isTemporarySession?"secondary":"ghost",pressed:r&&e.isTemporarySession,unavailable:n.action==="review"&&!t,children:Dg.jsxDEV(Co,{icon:n.icon},void 0,!1,void 0,this)},void 0,!1,void 0,this)})},void 0,!1,void 0,this),Dg.jsxDEV("div",{class:"dropdown-menu hidden group-data-[toolbar-compact]/prompt-footer:block","data-preserve-attr":"data-dropdown-menu-initialized data-basecoat-component",children:[Dg.jsxDEV("button",{type:"button",class:"btn leading-none","data-variant":"ghost","data-size":"icon-sm","aria-label":"Message tools","aria-haspopup":"menu","aria-expanded":"false","aria-controls":"prompt-toolbar-menu","data-preserve-attr":"aria-expanded aria-activedescendant",children:Dg.jsxDEV(Co,{icon:prr},void 0,!1,void 0,this)},void 0,!1,void 0,this),Dg.jsxDEV("div",{"data-popover":!0,"data-side":"top","data-align":"start","aria-hidden":"true","data-preserve-attr":"aria-hidden",class:"w-max max-w-[calc(100vw-2rem)]",children:Dg.jsxDEV("div",{id:"prompt-toolbar-menu",role:"menu","aria-label":"Message tools",children:Xrr.filter((n)=>n.action!=="review"||t).map((n)=>Dg.jsxDEV(uii,{label:n.menuLabel??n.label,action:n.action,active:n.action==="new-temporary-chat"&&e.isTemporarySession,children:Dg.jsxDEV(Co,{icon:n.icon},void 0,!1,void 0,this)},void 0,!1,void 0,this))},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this))}function lii(e){return Dg.jsxDEV("button",{class:"btn leading-none","data-variant":e.variant??"ghost","data-pi-ui-action":e.action,"aria-pressed":e.pressed?"true":void 0,"data-attr:aria-pressed":e.action==="review"?"$_workspaceReviewOpen ? 'true' : 'false'":void 0,"data-attr:data-variant":e.action==="review"?"$_workspaceReviewOpen ? 'secondary' : 'ghost'":void 0,inert:e.unavailable,style:e.unavailable?"visibility: hidden":void 0,"data-preserve-attr":e.action==="review"?"aria-pressed data-variant inert style":void 0,"data-size":"icon-sm",type:"button","data-indicator:_new-session-pending":Z_e(e.action),"data-attr:disabled":Z_e(e.action)?"$_newSessionPending || $_sessionTransitionLoading":void 0,"data-on:click":ear(e.action),"data-on:keydown__window":dii(e.action),"data-tooltip":e.label,"data-align":e.tooltipAlign,"aria-label":e.label,children:[e.children,e.shortcut&&Dg.jsxDEV($v,{label:e.label,shortcut:e.shortcut},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function uii(e){return Dg.jsxDEV("button",{type:"button",role:"menuitem","aria-current":e.active?"true":void 0,"data-indicator:_new-session-pending":Z_e(e.action),"data-attr:disabled":Z_e(e.action)?"$_newSessionPending || $_sessionTransitionLoading":void 0,"data-on:click":ear(e.action),children:[e.children,Dg.jsxDEV("span",{class:"min-w-0 truncate text-left",children:e.label},void 0,!1,void 0,this),e.active&&Dg.jsxDEV("span",{class:"ml-auto text-muted-foreground",children:"\u2022"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Z_e(e){return e==="new-chat"||e==="new-temporary-chat"}function ear(e){if(e==="commands")return pii();if(e==="review")return R_e();if(e==="new-chat")return tar();if(e==="new-temporary-chat")return nar();if(e==="sessions")return D_e();if(e==="files")return"window.piUi.fileTransfer.pick()";return}function dii(e){let t=G0();if(e==="commands")return`if (${t} && evt.code === 'KeyK') {
3989
+ `,children:ei.jsxDEV(Co,{icon:xrr,class:a.scoped?"size-4 [&_path]:fill-current":"size-4"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)})]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this))}function aii(e){return e.id.slice(e.id.lastIndexOf("/")+1)}var ei;var Brt=m(()=>{U6();$o();jS();Ay();K0();V0();$k();ei=An(Sr(),1)});function V_e(e){let t=e.extensionWorkingMessage??e.activityText;return an(za.jsxDEV("span",{id:"prompt-status",class:"inline-flex h-8 min-w-0 shrink-0 items-center gap-2",children:[za.jsxDEV("span",{class:"inline-flex h-6 min-w-0 items-center gap-1.5 truncate font-mono text-xs leading-none text-muted-foreground","data-show":"$_promptSubmitting",style:"display: none",children:[BZ(),za.jsxDEV("span",{children:"Sending..."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),e.extensionWorkingVisible&&t&&za.jsxDEV("span",{class:"inline-flex h-6 min-w-0 items-center truncate font-mono text-xs leading-none text-muted-foreground",children:za.jsxDEV("span",{class:"inline-flex items-center gap-1.5",children:[e.extensionWorkingIndicator===void 0?BZ():e.extensionWorkingIndicator&&za.jsxDEV("span",{safe:!0,children:e.extensionWorkingIndicator},void 0,!1,void 0,this),za.jsxDEV("span",{safe:!0,children:t},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),e.extensionStatuses.map((n)=>za.jsxDEV("span",{class:"hidden max-w-40 truncate font-mono text-xs text-muted-foreground sm:inline","data-extension-status":n.key,safe:!0,children:n.text},void 0,!1,void 0,this)),za.jsxDEV("span",{class:"inline-flex shrink-0 items-center gap-1",children:iii(e.usage)},void 0,!1,void 0,this)]},void 0,!0,void 0,this))}function iii(e){let t=e.contextPercent??0,n=e.limits?Math.max(0,...e.limits.windows.map((r)=>r.usedPercent)):0;return an(za.jsxDEV("span",{class:"inline-flex shrink-0 items-center gap-1.5 font-mono text-xs",children:[za.jsxDEV("span",{class:"group inline-flex size-4 shrink-0 items-center justify-center","data-tooltip":"Context usage","aria-label":e.text,children:[Zrr(t,Jrr(t)),oii(e)]},void 0,!0,void 0,this),e.limits&&za.jsxDEV("span",{class:"group inline-flex size-4 shrink-0 items-center justify-center","data-tooltip":e.limits.label,"aria-label":cii(e.limits),children:[Zrr(n,Jrr(n)),sii(e.limits)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this))}function oii(e){let{contextPercent:t,contextTokens:n,contextWindow:r}=e;return an(za.jsxDEV("span",{role:"tooltip","data-slot":"tooltip-content",class:"grid w-60 max-w-none items-stretch gap-0 px-3 py-2.5 text-left",children:t!==void 0&&n!==void 0&&r!==void 0?za.jsxDEV(za.Fragment,{children:[za.jsxDEV("span",{class:"mb-1.5 flex items-baseline justify-between gap-3",children:[za.jsxDEV("strong",{class:"font-mono text-xs font-semibold",children:"Context usage"},void 0,!1,void 0,this),za.jsxDEV("strong",{class:"font-mono text-xs font-semibold",children:[Math.round(t),"% used"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),za.jsxDEV("span",{class:"mb-1 flex items-baseline justify-between gap-3 font-mono text-[0.6875rem]",children:[za.jsxDEV("strong",{class:"font-semibold",children:[OS(n)," tokens"]},void 0,!0,void 0,this),za.jsxDEV("span",{class:"pi-inverse-fine-print",children:["of ",OS(r)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),za.jsxDEV("span",{class:"h-1 overflow-hidden rounded-full bg-background/20",children:za.jsxDEV("span",{class:"block h-full rounded-full bg-background",style:`width: ${Trt(t)}%`},void 0,!1,void 0,this)},void 0,!1,void 0,this),za.jsxDEV("span",{class:"pi-inverse-fine-print mt-1.5 flex items-baseline justify-between gap-3 font-mono text-[0.625rem]",children:[za.jsxDEV("span",{children:e.cacheHitPercent===void 0?"cache hit unavailable":`${e.cacheHitPercent.toFixed(1)}% cache hit`},void 0,!1,void 0,this),za.jsxDEV("span",{children:[e.costText," session"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this):za.jsxDEV(za.Fragment,{children:[za.jsxDEV("span",{class:"mb-1 flex items-baseline justify-between gap-3 font-mono",children:[za.jsxDEV("strong",{class:"text-xs font-semibold",children:"Context usage"},void 0,!1,void 0,this),za.jsxDEV("span",{class:"pi-inverse-fine-print text-[0.625rem]",children:[e.costText," session"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),za.jsxDEV("span",{class:"pi-inverse-fine-print font-mono text-[0.6875rem]",children:"Available after next response"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this))}function sii(e){return an(za.jsxDEV("span",{role:"tooltip","data-slot":"tooltip-content",class:"grid w-52 max-w-none items-stretch gap-0 px-3 py-2.5 text-left",children:[za.jsxDEV("strong",{class:"mb-2 font-mono text-xs font-semibold",children:e.label},void 0,!1,void 0,this),e.status&&za.jsxDEV("span",{class:"pi-inverse-fine-print font-mono text-[0.6875rem]",children:e.status},void 0,!1,void 0,this),e.windows.map((t,n)=>za.jsxDEV("span",{class:n===0?"grid gap-0.5":"mt-2 grid gap-0.5",children:[za.jsxDEV("span",{class:"flex items-baseline justify-between gap-4 font-mono text-[0.6875rem]",children:[za.jsxDEV("strong",{class:"font-semibold",children:t.label},void 0,!1,void 0,this),za.jsxDEV("strong",{class:"font-semibold",children:[t.remainingPercent,"% left"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),za.jsxDEV("span",{class:"h-1 overflow-hidden rounded-full bg-background/20",children:za.jsxDEV("span",{class:"block h-full rounded-full bg-background",style:`width: ${Trt(t.remainingPercent)}%`},void 0,!1,void 0,this)},void 0,!1,void 0,this),za.jsxDEV("span",{class:"pi-inverse-fine-print text-right font-mono text-[0.625rem]",children:t.resetText==="?"?"reset time unavailable":`resets in ${t.resetText}`},void 0,!1,void 0,this)]},void 0,!0,void 0,this))]},void 0,!0,void 0,this))}function cii(e){if(e.status)return`${e.label} \u2022 ${e.status}`;return`${e.label} \u2022 ${e.windows.map((t)=>`${t.label} ${t.remainingPercent}% left, resets in ${t.resetText}`).join(" \u2022 ")}`}function Zrr(e,t){let n=2*Math.PI*10;return an(za.jsxDEV("svg",{class:"size-4 -rotate-90 opacity-60 transition-opacity group-hover:opacity-100 group-focus-visible:opacity-100",viewBox:"0 0 24 24","aria-hidden":"true",children:[za.jsxDEV("circle",{cx:"12",cy:"12",r:"10",fill:"none",stroke:"currentColor","stroke-width":"3",class:"text-muted-foreground/20"},void 0,!1,void 0,this),za.jsxDEV("circle",{cx:"12",cy:"12",r:"10",fill:"none",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round",class:`${t} transition-[stroke-dashoffset] duration-250 ease-[cubic-bezier(0.77,0,0.175,1)] motion-reduce:transition-none`,"stroke-dasharray":n,"stroke-dashoffset":n-Trt(e)/100*n},void 0,!1,void 0,this)]},void 0,!0,void 0,this))}function Jrr(e){return e>90?"text-destructive":"text-foreground"}function Trt(e){return Math.min(100,Math.max(0,e))}function BZ(){return za.jsxDEV(Co,{icon:G6,label:"Loading",role:"status",class:"size-3 animate-spin"},void 0,!1,void 0,this)}var za;var Y_e=m(()=>{K0();V0();za=An(Sr(),1)});function J_e(e,t=!1){return an(Dg.jsxDEV("div",{id:"prompt-toolbar",class:"shrink-0 group-data-[measuring]/prompt-footer:flex-none","aria-label":"Message tools",children:[Dg.jsxDEV("div",{class:"flex items-center gap-0.5 group-data-[toolbar-compact]/prompt-footer:hidden",children:Xrr.map((n)=>{let r=n.action==="new-temporary-chat";return Dg.jsxDEV(lii,{label:n.label,action:n.action,shortcut:n.shortcut,tooltipAlign:n.tooltipAlign,variant:r&&e.isTemporarySession?"secondary":"ghost",pressed:r&&e.isTemporarySession,unavailable:n.action==="review"&&!t,children:Dg.jsxDEV(Co,{icon:n.icon},void 0,!1,void 0,this)},void 0,!1,void 0,this)})},void 0,!1,void 0,this),Dg.jsxDEV("div",{class:"dropdown-menu hidden group-data-[toolbar-compact]/prompt-footer:block","data-preserve-attr":"data-dropdown-menu-initialized data-basecoat-component",children:[Dg.jsxDEV("button",{type:"button",class:"btn leading-none","data-variant":"ghost","data-size":"icon-sm","aria-label":"Message tools","aria-haspopup":"menu","aria-expanded":"false","aria-controls":"prompt-toolbar-menu","data-preserve-attr":"aria-expanded aria-activedescendant",children:Dg.jsxDEV(Co,{icon:prr},void 0,!1,void 0,this)},void 0,!1,void 0,this),Dg.jsxDEV("div",{"data-popover":!0,"data-side":"top","data-align":"start","aria-hidden":"true","data-preserve-attr":"aria-hidden",class:"w-max max-w-[calc(100vw-2rem)]",children:Dg.jsxDEV("div",{id:"prompt-toolbar-menu",role:"menu","aria-label":"Message tools",children:Xrr.filter((n)=>n.action!=="review"||t).map((n)=>Dg.jsxDEV(uii,{label:n.menuLabel??n.label,action:n.action,active:n.action==="new-temporary-chat"&&e.isTemporarySession,children:Dg.jsxDEV(Co,{icon:n.icon},void 0,!1,void 0,this)},void 0,!1,void 0,this))},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this))}function lii(e){return Dg.jsxDEV("button",{class:"btn leading-none","data-variant":e.variant??"ghost","data-pi-ui-action":e.action,"aria-pressed":e.pressed?"true":void 0,"data-attr:aria-pressed":e.action==="review"?"$_workspaceReviewOpen ? 'true' : 'false'":void 0,"data-attr:data-variant":e.action==="review"?"$_workspaceReviewOpen ? 'secondary' : 'ghost'":void 0,inert:e.unavailable,style:e.unavailable?"visibility: hidden":void 0,"data-preserve-attr":e.action==="review"?"aria-pressed data-variant inert style":void 0,"data-size":"icon-sm",type:"button","data-indicator:_new-session-pending":Z_e(e.action),"data-attr:disabled":Z_e(e.action)?"$_newSessionPending || $_sessionTransitionLoading":void 0,"data-on:click":ear(e.action),"data-on:keydown__window":dii(e.action),"data-tooltip":e.label,"data-align":e.tooltipAlign,"aria-label":e.label,children:[e.children,e.shortcut&&Dg.jsxDEV($v,{label:e.label,shortcut:e.shortcut},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function uii(e){return Dg.jsxDEV("button",{type:"button",role:"menuitem","aria-current":e.active?"true":void 0,"data-indicator:_new-session-pending":Z_e(e.action),"data-attr:disabled":Z_e(e.action)?"$_newSessionPending || $_sessionTransitionLoading":void 0,"data-on:click":ear(e.action),children:[e.children,Dg.jsxDEV("span",{class:"min-w-0 truncate text-left",children:e.label},void 0,!1,void 0,this),e.active&&Dg.jsxDEV("span",{class:"ml-auto text-muted-foreground",children:"\u2022"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Z_e(e){return e==="new-chat"||e==="new-temporary-chat"}function ear(e){if(e==="commands")return pii();if(e==="review")return R_e();if(e==="new-chat")return tar();if(e==="new-temporary-chat")return nar();if(e==="sessions")return D_e();if(e==="files")return"window.piUi.fileTransfer.pick()";return}function dii(e){let t=G0();if(e==="commands")return`if (${t} && evt.code === 'KeyK') {
3990
3990
  evt.preventDefault();
3991
3991
  ${mii()}
3992
3992
  }`;if(e==="review")return`if (${t} && !evt.shiftKey && !evt.altKey && evt.code === 'KeyG') {
@@ -4347,4 +4347,4 @@ options:
4347
4347
  --host <hostname> listen hostname (default: 127.0.0.1; env: PI_UI_HOST)
4348
4348
  --port <port> listen port (default: 31415; env: PI_UI_PORT)
4349
4349
  --version show the version
4350
- -h, --help show this help`;function Gxe(e,t){let n=e?.trim();if(!n)throw Error(`${t} requires a non-empty hostname`);return n}function qxe(e,t){if(!e||!/^\d+$/.test(e))throw Error(`${t} must be an integer from 1 to 65535`);let n=Number(e);if(n<1||n>65535)throw Error(`${t} must be an integer from 1 to 65535`);return n}var Bit={name:"@hyperpuncher/pi-ui",version:"0.39.1",description:"keyboard-first minimal gui for pi",homepage:"https://pi-ui.app",bugs:"https://github.com/hyperpuncher/pi-ui/issues",license:"MIT",repository:{type:"git",url:"git+https://github.com/hyperpuncher/pi-ui.git"},bin:{"pi-ui":"dist/npm/server-main.js"},files:["dist/npm","static"],type:"module",imports:{"#testing/assertions":"./src/testing/assertions.ts","#testing/files":"./src/testing/files.ts","#testing/temp":"./src/testing/temp.ts"},publishConfig:{access:"public"},scripts:{dev:'concurrently -r "bun run css:watch" "bun run client:watch" "bun --watch src/server-main.ts"',server:"bun run assets:build && bun --watch src/server-main.ts","assets:build":"bun run client:build && bun run css:build","client:build":`bun -e 'await (await import("node:fs/promises")).rm("static/build", { recursive: true, force: true })' && bun build static/app/main.js --outdir static/build --target browser --format esm --splitting --entry-naming '[name].js' --chunk-naming 'chunks/[name]-[hash].js' --asset-naming 'assets/[name]-[hash].[ext]' --define process.env.NODE_ENV="production" --ignore-dce-annotations --minify && bun build src/client/pierre-worker.ts --outfile static/build/pierre-worker.js --target browser --format esm --define process.env.NODE_ENV="production" --ignore-dce-annotations --minify`,"client:watch":`bun -e 'await (await import("node:fs/promises")).rm("static/build", { recursive: true, force: true })' && bun build src/client/pierre-worker.ts --outfile static/build/pierre-worker.js --target browser --format esm --define process.env.NODE_ENV="development" --ignore-dce-annotations --sourcemap=inline && bun build static/app/main.js --outdir static/build --target browser --format esm --splitting --entry-naming '[name].js' --chunk-naming 'chunks/[name]-[hash].js' --asset-naming 'assets/[name]-[hash].[ext]' --define process.env.NODE_ENV="development" --ignore-dce-annotations --sourcemap=inline --watch --no-clear-screen`,"css:build":"bun scripts/generate-basecoat-css.ts && bunx tailwindcss -i src/ui/styles.css -o static/app.css --minify","css:watch":"bun scripts/generate-basecoat-css.ts && bunx tailwindcss -i src/ui/styles.css -o static/app.css --watch --silent",build:"bun run assets:build && bun scripts/build.ts","npm:build":"bun run assets:build && bun scripts/build-npm.ts",prepack:"bun run npm:build",run:"./dist/pi-ui",release:"bun scripts/release.ts","schema:build":"bun scripts/generate-config-schema.ts","schema:check":"bun scripts/generate-config-schema.ts --check",fmt:"bun run schema:build && ~/projects/dsfmt/target/release/dsfmt --write . && bunx oxfmt",lint:"bunx oxlint","lint:fix":"bunx oxlint --fix",check:"bun run schema:check && bunx tsc --noEmit",test:"bun test",audit:"bunx fallow audit"},devDependencies:{"@earendil-works/pi-ai":"^0.84.4","@earendil-works/pi-coding-agent":"^0.84.4","@earendil-works/pi-tui":"^0.84.4","@iconify-json/lucide":"^1.2.127","@kitajs/html":"5.0.0-next.1","@oxlint/plugins":"^1.80.0","@pierre/diffs":"^1.3.6","@pierre/trees":"^1.0.0-beta.6","@starfederation/datastar-sdk":"^1.0.0","@tailwindcss/cli":"^4.3.3","@types/bun":"^1.4.0","basecoat-css":"^1.0.2",concurrently:"^10.0.5",oxfmt:"^0.65.0",oxlint:"^1.80.0","oxlint-tailwindcss":"^1.10.2",tailwindcss:"^4.3.3",typebox:"^1.3.20",typescript:"^7.0.2"},engines:{bun:">=1.4.0"},packageManager:"bun@1.4.0"};function Tit(e){return e.length===1&&e[0]==="--version"}var Dit=Bit.version;async function Cci(){let e=process.argv.slice(2);if(Tit(e))console.log(Dit);else if(e[0]==="service"||e[0]==="autostart"){let t=e[0]==="service"?"install":"enable",n=e[0]==="service"?"uninstall":"disable";if(e.length!==2||e[1]!==t&&e[1]!==n)throw Error("usage: pi-ui service install|uninstall");if(e[1]===t)await yit(),console.log("pi-ui service installed and started");else await wit(),console.log("pi-ui service stopped and uninstalled")}else{let t=Iit(e,{host:process.env.PI_UI_HOST,port:process.env.PI_UI_PORT});if(t.help)console.log(Sit);else{let n,r=()=>n??=Eci(),a=Bun.serve({hostname:t.hostname,port:t.port,idleTimeout:0,async fetch(s,c){let u=c.requestIP(s),l=await r();return l.compressResponse(s,await l.app.fetch(s,u?{address:u.address}:void 0))}}),i=!1,o=async()=>{if(i)return;i=!0,await a.stop(),await(await n?.catch(()=>{return}))?.app.dispose()};process.once("SIGINT",()=>void o()),process.once("SIGTERM",()=>void o()),console.log(`pi-ui listening on ${a.url}`)}}}async function Eci(){let[{registerBunOAuthFlows:e},{createApp:t},{compressResponse:n}]=await Promise.all([Promise.resolve().then(() => (jot(),$ot)),Promise.resolve().then(() => (ycr(),bcr)),Promise.resolve().then(() => (Ccr(),xcr))]);return e(),{app:await t(),compressResponse:n}}Cci().catch((e)=>{console.error(e),process.exitCode=1});
4350
+ -h, --help show this help`;function Gxe(e,t){let n=e?.trim();if(!n)throw Error(`${t} requires a non-empty hostname`);return n}function qxe(e,t){if(!e||!/^\d+$/.test(e))throw Error(`${t} must be an integer from 1 to 65535`);let n=Number(e);if(n<1||n>65535)throw Error(`${t} must be an integer from 1 to 65535`);return n}var Bit={name:"@hyperpuncher/pi-ui",version:"0.39.2",description:"keyboard-first minimal gui for pi",homepage:"https://pi-ui.app",bugs:"https://github.com/hyperpuncher/pi-ui/issues",license:"MIT",repository:{type:"git",url:"git+https://github.com/hyperpuncher/pi-ui.git"},bin:{"pi-ui":"dist/npm/server-main.js"},files:["dist/npm","static"],type:"module",imports:{"#testing/assertions":"./src/testing/assertions.ts","#testing/files":"./src/testing/files.ts","#testing/temp":"./src/testing/temp.ts"},publishConfig:{access:"public"},scripts:{dev:'concurrently -r "bun run css:watch" "bun run client:watch" "bun --watch src/server-main.ts"',server:"bun run assets:build && bun --watch src/server-main.ts","assets:build":"bun run client:build && bun run css:build","client:build":`bun -e 'await (await import("node:fs/promises")).rm("static/build", { recursive: true, force: true })' && bun build static/app/main.js --outdir static/build --target browser --format esm --splitting --entry-naming '[name].js' --chunk-naming 'chunks/[name]-[hash].js' --asset-naming 'assets/[name]-[hash].[ext]' --define process.env.NODE_ENV="production" --ignore-dce-annotations --minify && bun build src/client/pierre-worker.ts --outfile static/build/pierre-worker.js --target browser --format esm --define process.env.NODE_ENV="production" --ignore-dce-annotations --minify`,"client:watch":`bun -e 'await (await import("node:fs/promises")).rm("static/build", { recursive: true, force: true })' && bun build src/client/pierre-worker.ts --outfile static/build/pierre-worker.js --target browser --format esm --define process.env.NODE_ENV="development" --ignore-dce-annotations --sourcemap=inline && bun build static/app/main.js --outdir static/build --target browser --format esm --splitting --entry-naming '[name].js' --chunk-naming 'chunks/[name]-[hash].js' --asset-naming 'assets/[name]-[hash].[ext]' --define process.env.NODE_ENV="development" --ignore-dce-annotations --sourcemap=inline --watch --no-clear-screen`,"css:build":"bun scripts/generate-basecoat-css.ts && bunx tailwindcss -i src/ui/styles.css -o static/app.css --minify","css:watch":"bun scripts/generate-basecoat-css.ts && bunx tailwindcss -i src/ui/styles.css -o static/app.css --watch --silent",build:"bun run assets:build && bun scripts/build.ts","npm:build":"bun run assets:build && bun scripts/build-npm.ts",prepack:"bun run npm:build",run:"./dist/pi-ui",release:"bun scripts/release.ts","schema:build":"bun scripts/generate-config-schema.ts","schema:check":"bun scripts/generate-config-schema.ts --check",fmt:"bun run schema:build && ~/projects/dsfmt/target/release/dsfmt --write . && bunx oxfmt",lint:"bunx oxlint","lint:fix":"bunx oxlint --fix",check:"bun run schema:check && bunx tsc --noEmit",test:"bun test",audit:"bunx fallow audit"},devDependencies:{"@earendil-works/pi-ai":"^0.84.4","@earendil-works/pi-coding-agent":"^0.84.4","@earendil-works/pi-tui":"^0.84.4","@iconify-json/lucide":"^1.2.127","@kitajs/html":"5.0.0-next.1","@oxlint/plugins":"^1.80.0","@pierre/diffs":"^1.3.6","@pierre/trees":"^1.0.0-beta.6","@starfederation/datastar-sdk":"^1.0.0","@tailwindcss/cli":"^4.3.3","@types/bun":"^1.4.0","basecoat-css":"^1.0.2",concurrently:"^10.0.5",oxfmt:"^0.65.0",oxlint:"^1.80.0","oxlint-tailwindcss":"^1.10.2",tailwindcss:"^4.3.3",typebox:"^1.3.20",typescript:"^7.0.2"},engines:{bun:">=1.4.0"},packageManager:"bun@1.4.0"};function Tit(e){return e.length===1&&e[0]==="--version"}var Dit=Bit.version;async function Cci(){let e=process.argv.slice(2);if(Tit(e))console.log(Dit);else if(e[0]==="service"||e[0]==="autostart"){let t=e[0]==="service"?"install":"enable",n=e[0]==="service"?"uninstall":"disable";if(e.length!==2||e[1]!==t&&e[1]!==n)throw Error("usage: pi-ui service install|uninstall");if(e[1]===t)await yit(),console.log("pi-ui service installed and started");else await wit(),console.log("pi-ui service stopped and uninstalled")}else{let t=Iit(e,{host:process.env.PI_UI_HOST,port:process.env.PI_UI_PORT});if(t.help)console.log(Sit);else{let n,r=()=>n??=Eci(),a=Bun.serve({hostname:t.hostname,port:t.port,idleTimeout:0,async fetch(s,c){let u=c.requestIP(s),l=await r();return l.compressResponse(s,await l.app.fetch(s,u?{address:u.address}:void 0))}}),i=!1,o=async()=>{if(i)return;i=!0,await a.stop(),await(await n?.catch(()=>{return}))?.app.dispose()};process.once("SIGINT",()=>void o()),process.once("SIGTERM",()=>void o()),console.log(`pi-ui listening on ${a.url}`)}}}async function Eci(){let[{registerBunOAuthFlows:e},{createApp:t},{compressResponse:n}]=await Promise.all([Promise.resolve().then(() => (jot(),$ot)),Promise.resolve().then(() => (ycr(),bcr)),Promise.resolve().then(() => (Ccr(),xcr))]);return e(),{app:await t(),compressResponse:n}}Cci().catch((e)=>{console.error(e),process.exitCode=1});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hyperpuncher/pi-ui",
3
- "version": "0.39.1",
3
+ "version": "0.39.2",
4
4
  "description": "keyboard-first minimal gui for pi",
5
5
  "homepage": "https://pi-ui.app",
6
6
  "bugs": "https://github.com/hyperpuncher/pi-ui/issues",