@seqyuan/annovibe 0.8.122 → 0.8.125
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 +16 -16
- package/.next/build-manifest.json +3 -3
- package/.next/prerender-manifest.json +3 -3
- package/.next/react-loadable-manifest.json +16 -16
- 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/agent/runtime/route.js +1 -1
- package/.next/server/app/api/internal/runtime/route.js +1 -1
- package/.next/server/app/api/version/route.js +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +2 -2
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/index.segments/_full.segment.rsc +2 -2
- 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/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/login.html +1 -1
- package/.next/server/app/login.rsc +1 -1
- package/.next/server/app/login.segments/_full.segment.rsc +1 -1
- package/.next/server/app/login.segments/_head.segment.rsc +1 -1
- package/.next/server/app/login.segments/_index.segment.rsc +1 -1
- package/.next/server/app/login.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/login.segments/login.segment.rsc +1 -1
- package/.next/server/app/page.js +2 -2
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/smoke/page_client-reference-manifest.js +1 -1
- package/.next/server/app/smoke/session-stream/page.js +1 -1
- package/.next/server/app/smoke/session-stream/page_client-reference-manifest.js +1 -1
- package/.next/server/app/smoke/session-stream.html +1 -1
- package/.next/server/app/smoke/session-stream.rsc +2 -2
- package/.next/server/app/smoke/session-stream.segments/_full.segment.rsc +2 -2
- package/.next/server/app/smoke/session-stream.segments/_head.segment.rsc +1 -1
- package/.next/server/app/smoke/session-stream.segments/_index.segment.rsc +1 -1
- package/.next/server/app/smoke/session-stream.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/smoke/session-stream.segments/smoke/session-stream/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/smoke/session-stream.segments/smoke/session-stream.segment.rsc +1 -1
- package/.next/server/app/smoke/session-stream.segments/smoke.segment.rsc +1 -1
- package/.next/server/app/smoke.html +2 -2
- package/.next/server/app/smoke.rsc +2 -2
- package/.next/server/app/smoke.segments/_full.segment.rsc +2 -2
- package/.next/server/app/smoke.segments/_head.segment.rsc +1 -1
- package/.next/server/app/smoke.segments/_index.segment.rsc +1 -1
- package/.next/server/app/smoke.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/smoke.segments/smoke/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/smoke.segments/smoke.segment.rsc +1 -1
- package/.next/server/app-paths-manifest.json +16 -16
- package/.next/server/chunks/3041.js +5 -5
- package/.next/server/chunks/4584.js +1 -1
- package/.next/server/chunks/6429.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/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/3309.581b04bacfeed701.js +1 -0
- package/.next/static/chunks/{4456-2ebe94e87b59562c.js → 4456-7b68434c62b3f922.js} +3 -3
- package/.next/static/chunks/5377-70343e4bd39d4239.js +22 -0
- package/.next/static/chunks/{3309.d0c34b5ef504a551.js → 5690.332f301b9df6f2dd.js} +1 -1
- package/.next/static/chunks/{6586.8c2a88c2a55300d2.js → 6586.25e1a0135b5e5bba.js} +1 -1
- package/.next/static/chunks/{8863.8b769013468d83d4.js → 8863.4b2faadd47deb00c.js} +1 -1
- package/.next/static/chunks/app/{page-55978c1ddc84af8a.js → page-05e8d45ca9d6130c.js} +2 -2
- package/.next/static/chunks/app/smoke/session-stream/page-17dc06b24b9587f2.js +6 -0
- package/.next/static/chunks/{webpack-fb1763edb92ee346.js → webpack-c256e3e1868863a5.js} +1 -1
- package/package.json +1 -1
- package/.next/static/chunks/5377-1dcfca9d5a1c5694.js +0 -22
- package/.next/static/chunks/5690.64d843d3db8e1b4b.js +0 -1
- package/.next/static/chunks/app/smoke/session-stream/page-e4493b066a788be3.js +0 -6
- /package/.next/static/{ryv7dcOEsJ2E9qSarLzwD → mulkaSvwGLOuWmirVJx-m}/_buildManifest.js +0 -0
- /package/.next/static/{ryv7dcOEsJ2E9qSarLzwD → mulkaSvwGLOuWmirVJx-m}/_ssgManifest.js +0 -0
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
"use strict";exports.id=3041,exports.ids=[3041],exports.modules={29947:(a,b,c)=>{c.d(b,{ES:()=>m,IB:()=>n,SN:()=>e,tE:()=>o,xG:()=>l});let d="subagent",e=["retain","recall","reflect"],f=[],g=["read","bash","edit","write"],h=["bash","read","edit","write","grep","find","ls"],i=[...h,"kernel_plot_run","kernel_plot_render","kernel_plot_inspect","kernel_plot_stop","kernel_plot_artifacts"],j=[...h,d];function k(a){return[...a].sort().join(",")}function l(a){switch(a){case"none":return f;case"default":return g;case"workbench":return i;case"agent":return j;default:return h}}function m(a){let b=a.filter(a=>a.active).map(a=>a.name),c=b.filter(a=>!e.includes(a)),f=k(b),l=k(c);return""===f?"none":f===k(g)?"default":f===k(h)?"full":f===k(i)?"workbench":f===k(j)?"agent":""===l?"none":l===k(g)?"default":l===k(h)?"full":l===k(i)?"workbench":l===k(j)||b.includes(d)?"agent":"default"}function n(a){return e.filter(b=>a.some(a=>a.active&&a.name===b))}function o(a,b){return[...new Set([...l(a),...b])]}},33041:(a,b,c)=>{c.d(b,{T:()=>
|
|
1
|
+
"use strict";exports.id=3041,exports.ids=[3041],exports.modules={29947:(a,b,c)=>{c.d(b,{ES:()=>m,IB:()=>n,SN:()=>e,tE:()=>o,xG:()=>l});let d="subagent",e=["retain","recall","reflect"],f=[],g=["read","bash","edit","write"],h=["bash","read","edit","write","grep","find","ls"],i=[...h,"kernel_plot_run","kernel_plot_render","kernel_plot_inspect","kernel_plot_stop","kernel_plot_artifacts"],j=[...h,d];function k(a){return[...a].sort().join(",")}function l(a){switch(a){case"none":return f;case"default":return g;case"workbench":return i;case"agent":return j;default:return h}}function m(a){let b=a.filter(a=>a.active).map(a=>a.name),c=b.filter(a=>!e.includes(a)),f=k(b),l=k(c);return""===f?"none":f===k(g)?"default":f===k(h)?"full":f===k(i)?"workbench":f===k(j)?"agent":""===l?"none":l===k(g)?"default":l===k(h)?"full":l===k(i)?"workbench":l===k(j)||b.includes(d)?"agent":"default"}function n(a){return e.filter(b=>a.some(a=>a.active&&a.name===b))}function o(a,b){return[...new Set([...l(a),...b])]}},33041:(a,b,c)=>{c.d(b,{T:()=>P});var d=c(67484);function e(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}}var f=c(37267),g=c(31343);async function h(a,b){if(!b.length)return[];let c=await fetch("/api/images/upload",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:a,images:b.map(a=>({data:a.data,mimeType:a.mimeType,name:a.name}))})}),d=await c.json().catch(()=>({}));if(!c.ok||d.error)throw Error(d.error??`Upload failed (HTTP ${c.status})`);return(d.uploaded??[]).map((a,c)=>({...a,previewUrl:b[c]?.previewUrl}))}async function i(a,b,c){let d,e=new TextDecoder,f="",g=a=>{if(a.startsWith("id: ")){d=a.slice(4);return}if(!a.startsWith("data: "))return;let c=a.slice(6);if("[DONE]"!==c)try{b(c,d)}catch{}finally{d=void 0}},h=new Promise(a=>{c?.aborted?a():c?.addEventListener("abort",()=>a(),{once:!0})});for(;;){let b=await Promise.race([a.read(),h.then(()=>({done:!0,value:void 0}))]);if(b.done)break;let c=(f+=e.decode(b.value,{stream:!0})).split("\n");for(let a of(f=c.pop()||"",c))g(a)}if(f.trim())for(let a of f.split("\n"))g(a)}c(81537);let j="__annovibeStreamSessions__",k="__annovibeStreamListeners__",l="__annovibeStreamErrorCallbacks__";function m(){let a=globalThis;return a[j]||(a[j]=new Map),a[j]}function n(){let a=globalThis;return a[l]||(a[l]=new Map),a[l]}function o(a){return{sessionId:a,phase:"idle",startedAt:null,lastEventAt:null,lastHeartbeatAt:null,reconnectCount:0,lastSyncReason:null,accumulatedText:"",toolCalls:[],toolResults:[],statusText:null,streamingMessage:null,isStreaming:!1,error:null}}function p(a,b){let c;for(let d of(!(c=globalThis)[k]&&(c[k]=new Map),c[k]).get(a)??[])try{d(b)}catch{}}function q(a){a.textThrottleTimer&&(clearTimeout(a.textThrottleTimer),a.textThrottleTimer=null),a.textDirty&&(a.textDirty=!1,s(a))}function r(a,b=!1){let c=Date.now();if(a.snapshot.lastEventAt=c,!b){a.textDirty=!0,a.textThrottleTimer||(a.textThrottleTimer=setTimeout(()=>{a.textThrottleTimer=null,a.textDirty&&(a.textDirty=!1,s(a))},100));return}q(a),s(a)}function s(a,b){let c=Date.now(),d=function(a){let b=[];for(let c of a.toolCalls.values())b.push({type:"toolCall",toolCallId:c.toolCallId,toolName:c.toolName,input:c.input??{}});let c=a.accumulatedText.trim();return c&&b.push({type:"text",text:c}),b}(a),e=(b??a.snapshot.phase)==="active";a.snapshot={...a.snapshot,phase:b??a.snapshot.phase,lastEventAt:c,accumulatedText:a.accumulatedText,toolCalls:[...a.toolCalls.values()],toolResults:[...a.toolResults.values()],statusText:e?function(a){if(a.activeToolId){let b=a.toolCalls.get(a.activeToolId);if(b){let a=Math.max(0,Math.floor((Date.now()-b.startedAt)/1e3));return`Running ${b.toolName||"tool"}… (${a}s)`}}return a.accumulatedText.trim()?"Generating response…":a.toolCalls.size>0?"Finishing tool results…":null}(a):a.snapshot.statusText,streamingMessage:e&&d.length>0?{role:"assistant",content:d}:null,isStreaming:e},p(a.snapshot.sessionId,{type:"snapshot-updated",snapshot:a.snapshot})}function t(a){u(a),a.idleCheckTimer=setInterval(()=>{if("connected"!==a.connectionState)return;let b=Math.max(a.snapshot.lastEventAt??0,a.snapshot.lastHeartbeatAt??0);if(Date.now()-b>=18e4){v(a),q(a);let b="Stream idle timeout — no activity for 180s.";a.snapshot={...a.snapshot,phase:"error",isStreaming:!1,streamingMessage:null,statusText:null,error:b},u(a),p(a.snapshot.sessionId,{type:"error",snapshot:a.snapshot});let c=n().get(a.snapshot.sessionId);if(c)try{c(a.snapshot.sessionId,b)}catch{}}},1e4)}function u(a){a.idleCheckTimer&&(clearInterval(a.idleCheckTimer),a.idleCheckTimer=null)}function v(a){a.toolProgressTimer&&(clearInterval(a.toolProgressTimer),a.toolProgressTimer=null)}function w(a){let b=m(),c=b.get(a);return c||(c={snapshot:o(a),accumulatedText:"",toolCalls:new Map,toolResults:new Map,toolProgressTimer:null,activeToolId:null,textThrottleTimer:null,textDirty:!1,connectionState:"idle",idleCheckTimer:null},b.set(a,c)),c}function x(a,b){let c=n();return c.set(a,b),()=>{c.get(a)===b&&c.delete(a)}}function y(a){let b=m(),c=b.get(a);c&&(v(c),u(c),q(c)),b.delete(a)}function z(a){let b=m().get(a);b&&(b.snapshot={...b.snapshot,reconnectCount:b.snapshot.reconnectCount+1,lastSyncReason:"sse-reconnect",lastEventAt:Date.now()},r(b,!0))}let A="__annovibeSessionMessageCache__";function B(){let a=globalThis;if(!a[A]){var b;let c={entries:new Map,cleanupTimer:null};a[A]=c,(b=c).cleanupTimer||(b.cleanupTimer=setInterval(()=>{let a=Date.now();for(let[c,d]of b.entries)a-d.loadedAt>72e5&&b.entries.delete(c)},6e4))}return a[A]}function C(a){let b=B(),c=b.entries.get(a);return c?Date.now()-c.loadedAt>72e5?(b.entries.delete(a),null):(c.loadedAt=Date.now(),{...c,messages:[...c.messages],entryIds:[...c.entryIds]}):null}function D(a,b,c,d,e){let f=B(),g=f.entries.get(a);if(!g)return;let h=new Set(g.entryIds),i=[],j=[];for(let a=0;a<b.length;a++){let d=c[a];d&&!h.has(d)&&(i.push(b[a]),j.push(d))}0!==i.length&&f.entries.set(a,{...g,messages:[...i,...g.messages],entryIds:[...j,...g.entryIds],hasMore:d,loadedMessagesCount:e,loadedAt:Date.now()})}function E(a){B().entries.delete(a)}var F=c(29947);function G(a,b){switch(b.type){case"start":return{isStreaming:!0,streamingMessage:null};case"update":return{isStreaming:!0,streamingMessage:b.message};case"end":case"reset":return{isStreaming:!1,streamingMessage:null};default:return a}}function H(a,b){return new DOMException(a,b)}function I(){return"u">typeof crypto&&"function"==typeof crypto.randomUUID?crypto.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,11)}-${Math.random().toString(36).slice(2,11)}`}let J=["read","bash","grep","find","ls"];function K(a,b){return a.trim()||0!==b?`text:${a}|images:${b}`:null}function L(a){return"string"==typeof a?K(a,0):Array.isArray(a)?K(a.filter(a=>!!a&&"object"==typeof a&&"text"===a.type&&"string"==typeof a.text).map(a=>a.text).join("\n"),a.filter(a=>!!a&&"object"==typeof a&&"image"===a.type).length):null}function M(a){let b=new Map;for(let c of a){let a="user"!==c.role?null:L(c.content);a&&b.set(a,(b.get(a)??0)+1)}return b}function N(a,b,c){return a.sessionId===b&&(!a.leafId||c.includes(a.leafId))}function O(a,b){let c=a.timestamp,d=b.timestamp;if("number"!=typeof c||"number"!=typeof d||c!==d||a.role!==b.role)return!1;try{return JSON.stringify(a)===JSON.stringify(b)}catch{return!1}}function P(a){let{session:b,newSessionCwd:c,planMode:j=!1,onAgentEnd:k,onSessionCreated:l,onSessionForked:n,modelsRefreshKey:s,onBranchDataChange:A,onPlanModeState:P}=a,Q=null===b&&null!==c,[R,S]=(0,d.useState)(null),[T,U]=(0,d.useState)(!Q),[V,W]=(0,d.useState)(null),[X,Y]=(0,d.useState)(null),[Z,$]=(0,d.useState)([]),[_,aa]=(0,d.useState)([]),[ab,ac]=(0,d.useState)(0),[ad,ae]=(0,d.useState)(!1),[af,ag]=(0,d.useState)(0),[ah,ai]=(0,d.useReducer)(G,{isStreaming:!1,streamingMessage:null}),[aj,ak]=(0,d.useState)(!1),[al,am]=(0,d.useState)({}),[an,ao]=(0,d.useState)([]),[ap,aq]=(0,d.useState)({}),[ar,as]=(0,d.useState)({}),[at,au]=(0,d.useState)(null),[av,aw]=(0,d.useState)("full"),[ax,ay]=(0,d.useState)([...F.SN]),[az,aA]=(0,d.useState)("auto"),[aB,aC]=(0,d.useState)(null),[aD,aE]=(0,d.useState)(null),[aF,aG]=(0,d.useState)(null),[aH,aI]=(0,d.useState)(null),[aJ,aK]=(0,d.useState)(null),[aL,aM]=(0,d.useState)(null),[aN,aO]=(0,d.useState)(!1),[aP,aQ]=(0,d.useState)(null),[aR,aS]=(0,d.useState)(null),[aT,aU]=(0,d.useState)(null),aV=(0,d.useRef)(null),aW=(0,d.useRef)(b?.id??null),aX=(0,d.useRef)(!1),aY=(0,d.useRef)(null),aZ=(0,d.useRef)(null),a$=(0,d.useRef)(null),a_=(0,d.useRef)(!1),a0=(0,d.useRef)(null),a1=(0,d.useRef)(!1),a2=(0,d.useRef)(null),a3=(0,d.useRef)(null),a4=(0,d.useRef)(new Map),a5=(0,d.useRef)(new Map),a6=(0,d.useRef)(new Map),a7=(0,d.useRef)(null),a8=(0,d.useRef)([]),a9=(0,d.useRef)(null),ba=(0,d.useRef)(0),bb=(0,d.useRef)(!1),bc=(0,d.useRef)(0),bd=(0,d.useRef)(!1);(0,d.useRef)(!1),(0,d.useRef)(0);let be=(0,d.useRef)(null),bf=(0,d.useRef)(null),bg=a.setNewSessionModel??au,bh=a.setToolPreset??aw,bi=a.setMemoryTools??ay,bj=aJ??R?.context.model??aL??null,bk=Q?at:bj,bl=(0,d.useCallback)(()=>j?J:(0,F.tE)(av,ax),[ax,j,av]),bm=(0,d.useCallback)(a=>a?.length?a.map((a,b)=>{let c=`Attachment ${b+1}: ${a.fileName} (${a.mimeType||"application/octet-stream"}, ${a.size} bytes)`;if(a.extractedText){let b=a.truncated?"\n[The extracted text was truncated before sending.]":"";return`${c}
|
|
2
2
|
${b}
|
|
3
3
|
${a.extractedText}`.trim()}return`${c}
|
|
4
|
-
[Text extraction unavailable: ${a.extractionError??"unsupported file type"}]`}).join("\n\n---\n\n"):"",[]),bl=(0,d.useCallback)(async a=>{let b=await fetch(`/api/agent/${encodeURIComponent(a)}/prepare`,{method:"POST"});if(!b.ok)throw Error((await b.json().catch(()=>({}))).error??`Failed to prepare session (HTTP ${b.status})`)},[]),bm=(()=>{let a={input:0,output:0,cacheRead:0,cacheWrite:0},b=0;for(let c of Y){if("assistant"!==c.role)continue;let d=c.usage;d&&(a.input+=d.input??0,a.output+=d.output??0,a.cacheRead+=d.cacheRead??0,a.cacheWrite+=d.cacheWrite??0,b+=d.cost?.total??0)}return a.input+a.output+a.cacheRead+a.cacheWrite>0?{tokens:a,cost:b}:null})(),bn=(0,d.useRef)(!1),bo=(0,d.useCallback)(async()=>{let a=aV.current;if(!a||bn.current||bb.current)return;bn.current=!0,a9.current=!0;let b=0,c=C(a);b=c?c.loadedMessagesCount:50;try{for(;;)try{let c=await fetch(`/api/sessions/${encodeURIComponent(a)}?limit=100&offset=${b}`);if(!c.ok)break;let d=await c.json();if(aV.current!==a)break;let e=d.context.messages,f=d.context.entryIds??[];if(0===e.length)break;Z(a=>[...e,...a]),_(a=>{let b=[...f,...a];return a6.current=b,b});let g=b+e.length;if(af(g),ba.current=g,ad(d.hasMore??!1),D(a,e,f,d.hasMore??!1,g),b=g,!d.hasMore)break;await new Promise(a=>setTimeout(a,800))}catch{break}}finally{bn.current=!1,bb.current=!0,a9.current=!1}},[]),bp=(0,d.useCallback)(async(a,b=!1,c=!1,d=!1)=>{var e;let f=null;try{if(b&&T(!0),!c&&!aW.current&&!d){let c=C(a);if(c)return ab(c.totalMessages),ad(c.hasMore),af(c.loadedMessagesCount),Z(c.messages),a6.current=c.entryIds,_(c.entryIds),a5.current=c.leafId,X(c.leafId),ba.current=c.loadedMessagesCount,b&&T(!1),c.hasMore&&!bb.current&&setTimeout(()=>{bo()},1500),null}let g=c?`/api/sessions/${encodeURIComponent(a)}?includeState`:`/api/sessions/${encodeURIComponent(a)}?limit=50&offset=0`,h=bd.current;if(h?.sid===a&&!b)return null;h?.controller.abort(H("Session load superseded","AbortError"));let i=new AbortController;f=i,bd.current={sid:a,controller:i};let j=setTimeout(()=>{i.abort(H("Session load timed out after 30 seconds","TimeoutError"))},3e4),k=await fetch(g,{signal:i.signal}).finally(()=>clearTimeout(j));if(aV.current&&aV.current!==a)return null;if(404===k.status)return b&&(R(null),a5.current=null,X(null),Z([]),V(null)),null;if(!k.ok)throw Error(`HTTP ${k.status}`);let l=await k.json();c?(ab(l.totalMessages??l.context.messages.length),ad(!1)):(ab(l.totalMessages??l.context.messages.length),ad(l.hasMore??!1)),af(l.context.messages.length),R(l),a5.current=l.leafId,X(l.leafId);let m=l.context.messages,n=M(m),o=new Map,p=Date.now();for(let[b,c]of a3.current)if(c.sessionId===a){if(p-c.createdAt>12e4){a3.current.delete(b);continue}if(c.confirmKey){let a=n.get(c.confirmKey)??0,d=o.get(c.confirmKey)??0;a-d>c.confirmCountAtCreate&&(a3.current.delete(b),o.set(c.confirmKey,d+1))}}a4.current=n;let q=l.context.entryIds??[],r=[...a3.current.values()].filter(b=>N(b,a,q)).map(a=>a.message),s=r.length>0?[...m,...r]:m,t=s.length;return!c&&ba.current>t?(ab(l.totalMessages??l.context.messages.length),ad(l.hasMore??!1)):(Z(s),a6.current=q,_(q),c?ba.current=t:ba.current=Math.max(ba.current,t),e={sessionId:a,leafId:l.leafId,messages:s,entryIds:q,totalMessages:l.totalMessages??l.context.messages.length,hasMore:!c&&(l.hasMore??!1),loadedMessagesCount:l.context.messages.length},B().entries.set(a,{...e,loadedAt:Date.now()})),aJ(a=>{if(!a)return null;let b=l.context.model;return b?.provider===a.provider&&b.modelId===a.modelId?null:a}),V(null),!l.agentState?.state?.thinkingLevel&&l.context.thinkingLevel&&"off"!==l.context.thinkingLevel&&az(l.context.thinkingLevel),l.agentState?.state?.planMode&&O?.(l.agentState.state.planMode),l.agentState??null}catch(a){if(a instanceof DOMException&&("AbortError"===a.name||"TimeoutError"===a.name)||a instanceof Error&&/aborted without reason|AbortError|Session load (?:timed out|superseded)/i.test(a.message))return null;return V(String(a)),null}finally{f&&bd.current?.controller===f&&(bd.current=null),b&&T(!1)}},[O,bo]),bq=(0,d.useRef)(!1),br=(0,d.useCallback)(async()=>{if(bq.current)return;bq.current=!0;let a=aV.current;if(!a){bq.current=!1;return}try{let b=await fetch(`/api/sessions/${encodeURIComponent(a)}?limit=50&offset=${ae}`);if(!b.ok)return;let c=await b.json(),d=c.context.messages,e=c.context.entryIds??[];Z(a=>[...d,...a]),_(a=>{let b=[...e,...a];return a6.current=b,b}),af(a=>a+d.length),ad(c.hasMore??!1),D(a,d,e,c.hasMore??!1,ae+d.length)}catch{}finally{bq.current=!1}},[ae]),bs=(0,d.useCallback)(async(a,b)=>{try{let c=b?`/api/sessions/${encodeURIComponent(a)}/context?leafId=${encodeURIComponent(b)}`:`/api/sessions/${encodeURIComponent(a)}/context`,d=await fetch(c);if(!d.ok)throw Error(`HTTP ${d.status}`);let e=await d.json(),f=e.context.messages,g=e.context.entryIds??[],h=M(f),i=new Map,j=Date.now();for(let[b,c]of a3.current)if(c.sessionId===a){if(j-c.createdAt>12e4){a3.current.delete(b);continue}if(c.confirmKey){let a=h.get(c.confirmKey)??0,d=i.get(c.confirmKey)??0;a-d>c.confirmCountAtCreate&&(a3.current.delete(b),i.set(c.confirmKey,d+1))}}a4.current=h;let k=[...a3.current.values()].filter(b=>N(b,a,g)).map(a=>a.message);Z(k.length>0?[...f,...k]:f),a6.current=g,_(g)}catch(a){console.error("Failed to load context:",a)}},[]),bt=(0,d.useCallback)(async a=>{try{let b=await (0,f.$)(a,{type:"get_tools"});b&&(bf((0,F.ES)(b)),bg((0,F.IB)(b)))}catch(a){console.error("Failed to load tools:",a)}},[bg,bf]),bu=(0,d.useCallback)((a,b={})=>{aU.current?.close(),aU.current=null;let c=`/api/agent/${encodeURIComponent(a)}/events${b.replay?"?replay=1":""}`;return!function(a){let b=w(a);if("active"===b.snapshot.phase)return r(b,!0),t(b),b.snapshot;let c=Date.now();b.snapshot={...o(a),phase:"active",startedAt:c,lastEventAt:c,isStreaming:!0,streamingMessage:{role:"assistant",content:[]}},t(b),r(b,!0),b.snapshot}(a),new Promise((d,e)=>{let f=!1,g=!1,h=null,j=a=>{if(!f){if(f=!0,clearTimeout(k),a){h?.close(),aU.current===h&&(aU.current=null),e(a);return}d()}},k=setTimeout(()=>{b.requireConnected?j(Error("Timed out waiting for event stream connection")):j()},b.timeoutMs??3e4);aU.current=h=function(a){let{url:b,onEvent:c,onStateChange:d,onFatalError:e,maxReconnectAttempts:f=1/0,reconnectBaseMs:g=1e3,reconnectMaxMs:h=3e4,autoReconnect:j=!0}=a,k="idle",l=new AbortController,m=0,n=null,o=null,p=!1,q=(a,b)=>{b&&(o=b),c(a,b)},r=a=>{k!==a&&(k=a,d?.(a))},s=()=>{null!==n&&(clearTimeout(n),n=null)},t=()=>{if(p)return;if(!j)return void r("error");if(m>=f){r("error"),e?.(Error(`Max reconnect attempts (${f}) reached`));return}let a=Math.min(h,g*2**m);m+=1,r("connecting"),n=setTimeout(()=>{n=null,u()},a)},u=async()=>{if(!p){s(),l=new AbortController,r("connecting");try{let a=await fetch(b,{signal:l.signal,headers:{Accept:"text/event-stream","Cache-Control":"no-cache",...o?{"Last-Event-ID":o}:{}}});if(!a.ok)throw Error(`HTTP ${a.status}: ${a.statusText}`);let c=a.body;if(!c)throw Error("Response has no readable body");let d=c.getReader();if(r("connected"),m=0,await i(d,q,l.signal),l.signal.aborted)try{await d.cancel()}catch{}d.releaseLock(),r("closed"),!p&&j&&t()}catch(a){if(p||a instanceof DOMException&&"AbortError"===a.name)return void r("closed");r("error"),j&&t()}}};return{get state(){return k},connect:()=>{p=!1,m=0,s(),u()},close:()=>{p=!0,s(),l.abort(),r("closed")},get abortController(){return l}}}({url:c,onEvent:b=>{try{let c=JSON.parse(b);if("connected"===c.type&&j(),aV.current!==a)return;aX.current?.(c)}catch{}},onStateChange:b=>{!function(a,b){let c=m().get(a);if(!c)return;let d=c.connectionState;c.connectionState=b,"connected"===b&&"connected"!==d&&(c.snapshot={...c.snapshot,lastEventAt:Date.now(),lastHeartbeatAt:Date.now()},t(c)),"connected"!==b&&"connected"===d&&u(c)}(a,b),"connected"===b&&(g&&(z(a),aY.current?.(a,"sse_reconnected")),g=!0)},reconnectBaseMs:1e3,reconnectMaxMs:3e4}),h.connect()})},[]),bv=(0,d.useCallback)(async(a,b="manual")=>{if(!a||aV.current!==a)return;let c=a8.current;try{let b=await fetch(`/api/agent/${encodeURIComponent(a)}`),e=await b.json().catch(()=>({}));if(aV.current!==a||a8.current!==c)return;if(e.running){var d;aW.current=!0,aj(!0),aR((d=e.state,d?.phase==="running_tools"?{kind:"running_tools",tools:(d.activeTools??[]).map(a=>({id:a.id,name:a.name}))}:d?.phase==="streaming"||d?.phase==="compacting"||d?.phase==="idle"?null:{kind:"waiting_model"})),aU.current&&"closed"!==aU.current.state&&"error"!==aU.current.state||(z(a),bu(a,{replay:!0}))}else aW.current=!1,aU.current?.close(),aU.current=null,y(a),aj(!1),aR(null),aB(null),ah({type:"end"}),E(a),await bp(a,!1,!1,!0);e.state?.contextUsage!==void 0&&aD(e.state.contextUsage??null),e.state?.systemPrompt!==void 0&&aF(e.state.systemPrompt??null),e.state?.isCompacting!==void 0&&aN(e.state.isCompacting),e.state?.thinkingLevel!==void 0&&az(e.state.thinkingLevel??"auto"),e.state?.planMode!==void 0&&O?.(e.state.planMode)}catch{}},[bu,bp,O]);aX.current=(0,d.useCallback)(a=>{let b=aV.current;switch(b&&function(a,b){let c=w(a),d=Date.now();switch(b.type){case"agent_start":if("active"===c.snapshot.phase)return r(c,!0),c.snapshot;return v(c),c.accumulatedText="",c.toolCalls.clear(),c.toolResults.clear(),c.activeToolId=null,c.snapshot={...o(a),phase:"active",startedAt:d,lastEventAt:d,isStreaming:!0,streamingMessage:{role:"assistant",content:[]}},t(c),r(c,!0),c.snapshot;case"message_update":{let a=b.message;if(!a||"assistant"!==a.role)return c.snapshot;let e=a.content;for(let a of Array.isArray(e)?e:[])"object"==typeof a&&null!==a&&"type"in a&&("text"===a.type?c.accumulatedText=a.text??"":"toolCall"===a.type&&a.toolCallId&&!c.toolCalls.has(a.toolCallId)&&c.toolCalls.set(a.toolCallId,{...a,startedAt:d}));return r(c,!1),c.snapshot}case"tool_execution_start":{let a="string"==typeof b.toolCallId?b.toolCallId:"",e="string"==typeof b.toolName?b.toolName:"tool",f=b.input??{};if(!a)return c.snapshot;let g=c.toolCalls.get(a);return c.toolCalls.set(a,{type:"toolCall",toolCallId:a,toolName:e,input:g?.input??f,startedAt:g?.startedAt??d}),c.activeToolId=a,v(c),c.activeToolId&&(c.toolProgressTimer=setInterval(()=>r(c,!0),1e3)),r(c,!0),c.snapshot}case"tool_execution_end":{let a="string"==typeof b.toolCallId?b.toolCallId:"",e="string"==typeof b.toolName?b.toolName:"tool",f="string"==typeof b.result?b.result:JSON.stringify(b.result??"");if(a){let g=c.toolCalls.get(a);g&&c.toolCalls.set(a,{...g,endedAt:d}),c.toolResults.set(a,{role:"toolResult",toolCallId:a,toolName:e,content:[{type:"text",text:f}],isError:!!b.isError,timestamp:d}),c.activeToolId===a&&(c.activeToolId=null,v(c))}return r(c,!0),c.snapshot}case"message_end":return q(c),r(c,!0),c.snapshot;case"agent_end":{if(q(c),v(c),c.activeToolId=null,!0===b.willRetry)return c.accumulatedText="",c.toolCalls.clear(),c.toolResults.clear(),c.snapshot={...c.snapshot,phase:"active",lastEventAt:d,accumulatedText:"",toolCalls:[],toolResults:[],statusText:null,streamingMessage:null,isStreaming:!0,error:null},t(c),p(a,{type:"snapshot-updated",snapshot:c.snapshot}),c.snapshot;u(c);let e="string"==typeof b.error?b.error:null;return c.snapshot={...c.snapshot,phase:e?"error":"completed",isStreaming:!1,streamingMessage:null,statusText:null,error:e},p(a,e?{type:"error",snapshot:c.snapshot}:{type:"completed",snapshot:c.snapshot}),c.snapshot}case"heartbeat":return c.snapshot={...c.snapshot,lastHeartbeatAt:d},c.snapshot;default:return c.snapshot}}(b,a),a.type){case"prompt_admitted":case"agent_start":aT(null),aW.current=!0,aj(!0),aR({kind:"waiting_model"}),ah({type:"start"});break;case"agent_end":if(!0===a.willRetry){aW.current=!0,aj(!0),aR({kind:"waiting_model"});break}aW.current=!1,aU.current?.close(),aU.current=null,aj(!1),aR(null),aB(null),ah({type:"end"}),b&&(E(b),bp(b,!1,!1,!0),bc.current&&clearTimeout(bc.current),bc.current=setTimeout(()=>{aV.current!==b||aW.current||(E(b),bp(b,!1,!1,!0))},500),fetch(`/api/agent/${encodeURIComponent(b)}`).then(a=>a.json()).then(a=>{a.state?.contextUsage!==void 0&&aD(a.state.contextUsage??null),a.state?.systemPrompt!==void 0&&aF(a.state.systemPrompt??null),a.state?.isCompacting!==void 0&&aN(a.state.isCompacting)}).catch(()=>{})),k?.();break;case"message_start":case"message_update":{if(!aW.current)break;let b=a.message;if(b?.role==="user")break;b&&ah({type:"update",message:e(b)}),aR(null);break}case"message_end":{if(!aW.current)break;let b=a.message,c="string"==typeof a.__entryId?a.__entryId:null;if(b&&"user"!==b.role){"assistant"===b.role&&"error"===b.stopReason&&b.errorMessage?.trim()&&aT(`Model response failed: ${b.errorMessage.trim()}`);let a=e(b);!(c&&a6.current.includes(c))&&(Z(b=>b.some(b=>(function(a,b){let c=a.timestamp,d=b.timestamp;if("number"!=typeof c||"number"!=typeof d||c!==d||a.role!==b.role)return!1;try{return JSON.stringify(a)===JSON.stringify(b)}catch{return!1}})(b,a))?b:[...b,a]),c&&_(a=>{if(a.includes(c))return a;let b=[...a,c];return a6.current=b,b}))}ah({type:"reset"}),aR({kind:"waiting_model"});break}case"replay_gap":b&&(E(b),bp(b,!1,!1,!0));break;case"prompt_done":if(!aW.current)break;bv(aV.current??"","prompt_done");break;case"prompt_error":{let c="string"==typeof a.error&&a.error.trim()?a.error.trim():"The model request failed before producing a response.";if(aW.current=!1,aj(!1),aR(null),aB(null),ah({type:"end"}),aU.current?.close(),aU.current=null,b){for(let[a,c]of(y(b),a3.current))c.sessionId===b&&"prompt"===c.kind&&a3.current.delete(a);E(b),bp(b,!1,!1,!0)}aT(`Model request failed: ${c}`),k?.();break}case"tool_execution_start":{let b=a.toolCallId,c=a.toolName,d=a.args,e="bash"===c&&"string"==typeof d?.command?d.command:void 0;aR(a=>{let d=a?.kind==="running_tools"?[...a.tools]:[];return d.some(a=>a.id===b)||d.push({id:b,name:c,args:e}),{kind:"running_tools",tools:d}});break}case"tool_execution_end":{let b=a.toolCallId;aR(a=>{if(a?.kind!=="running_tools")return a;let c=a.tools.filter(a=>a.id!==b);return 0===c.length?{kind:"waiting_model"}:{kind:"running_tools",tools:c}});break}case"auto_retry_start":aT(null),aW.current=!0,aj(!0),aR({kind:"waiting_model"}),aB({attempt:a.attempt,maxAttempts:a.maxAttempts,errorMessage:a.errorMessage});break;case"auto_retry_end":aB(null),!1===a.success&&"string"==typeof a.finalError&&a.finalError.trim()?aT(`Model response failed after retries: ${a.finalError.trim()}`):!0===a.success&&aT(null);break;case"auto_compaction_start":case"compaction_start":aN(!0),aP(null);break;case"auto_compaction_end":case"compaction_end":aN(!1),a.errorMessage?aP(a.errorMessage):!a.aborted&&aV.current&&bp(aV.current)}},[bp,k,bv]);let bw=(0,d.useCallback)(async(a,d,e,i)=>{if(!a.trim()&&!d?.length&&!e?.length||ai)return;a8.current+=1;let k=bk(e),m=a.trim()?k?`${a}
|
|
4
|
+
[Text extraction unavailable: ${a.extractionError??"unsupported file type"}]`}).join("\n\n---\n\n"):"",[]),bn=(0,d.useCallback)(async a=>{let b=await fetch(`/api/agent/${encodeURIComponent(a)}/prepare`,{method:"POST"});if(!b.ok)throw Error((await b.json().catch(()=>({}))).error??`Failed to prepare session (HTTP ${b.status})`)},[]),bo=(()=>{let a={input:0,output:0,cacheRead:0,cacheWrite:0},b=0;for(let c of Z){if("assistant"!==c.role)continue;let d=c.usage;d&&(a.input+=d.input??0,a.output+=d.output??0,a.cacheRead+=d.cacheRead??0,a.cacheWrite+=d.cacheWrite??0,b+=d.cost?.total??0)}return a.input+a.output+a.cacheRead+a.cacheWrite>0?{tokens:a,cost:b}:null})(),bp=(0,d.useRef)(!1),bq=(0,d.useCallback)(async()=>{let a=aW.current;if(!a||bp.current||bd.current)return;bp.current=!0,bb.current=!0;let b=0,c=C(a);b=c?c.loadedMessagesCount:50;try{for(;;)try{let c=await fetch(`/api/sessions/${encodeURIComponent(a)}?limit=100&offset=${b}`);if(!c.ok)break;let d=await c.json();if(aW.current!==a)break;let e=d.context.messages,f=d.context.entryIds??[];if(0===e.length)break;$(a=>[...e,...a]),aa(a=>{let b=[...f,...a];return a8.current=b,b});let g=b+e.length;if(ag(g),bc.current=g,ae(d.hasMore??!1),D(a,e,f,d.hasMore??!1,g),b=g,!d.hasMore)break;await new Promise(a=>setTimeout(a,800))}catch{break}}finally{bp.current=!1,bd.current=!0,bb.current=!1}},[]),br=(0,d.useCallback)(async(a,b=!1,c=!1,d=!1)=>{var e;let f=null;try{if(b&&U(!0),!c&&!aX.current&&!d){let c=C(a);if(c)return ac(c.totalMessages),ae(c.hasMore),ag(c.loadedMessagesCount),$(c.messages),a8.current=c.entryIds,aa(c.entryIds),a7.current=c.leafId,Y(c.leafId),bc.current=c.loadedMessagesCount,b&&U(!1),c.hasMore&&!bd.current&&setTimeout(()=>{bq()},1500),null}let g=c?`/api/sessions/${encodeURIComponent(a)}?includeState`:`/api/sessions/${encodeURIComponent(a)}?limit=50&offset=0`,h=bf.current;if(h?.sid===a&&!b)return null;h?.controller.abort(H("Session load superseded","AbortError"));let i=new AbortController;f=i,bf.current={sid:a,controller:i};let j=setTimeout(()=>{i.abort(H("Session load timed out after 30 seconds","TimeoutError"))},3e4),k=await fetch(g,{signal:i.signal}).finally(()=>clearTimeout(j));if(aW.current&&aW.current!==a)return null;if(404===k.status)return b&&(S(null),a7.current=null,Y(null),$([]),W(null)),null;if(!k.ok)throw Error(`HTTP ${k.status}`);let l=await k.json();c?(ac(l.totalMessages??l.context.messages.length),ae(!1)):(ac(l.totalMessages??l.context.messages.length),ae(l.hasMore??!1)),ag(l.context.messages.length),S(l),a7.current=l.leafId,Y(l.leafId);let m=l.context.messages,n=M(m),o=new Map,p=Date.now();for(let[b,c]of a4.current)if(c.sessionId===a){if(p-c.createdAt>12e4){a4.current.delete(b);continue}if(c.confirmKey){let a=n.get(c.confirmKey)??0,d=o.get(c.confirmKey)??0;a-d>c.confirmCountAtCreate&&(a4.current.delete(b),o.set(c.confirmKey,d+1))}}a5.current=n;let q=l.context.entryIds??[],r=[...a4.current.values()].filter(b=>N(b,a,q)).map(a=>a.message),s=r.length>0?[...m,...r]:m,t=a6.current.get(a);if(t){for(let[a,b]of t)p-b>12e4&&t.delete(a);0===t.size&&a6.current.delete(a)}let u=t?.size?t:null,v=u?new Set(q):null,w=!!u&&!!v&&[...u.keys()].some(a=>!v.has(a));u&&v&&!w&&a6.current.delete(a);let x=s.length;return!c&&(bc.current>x||w)?(ac(l.totalMessages??l.context.messages.length),ae(l.hasMore??!1)):($(a=>(function(a,b){if(a.length!==b.length)return b;let c=!1,d=b.map((b,d)=>O(a[d],b)?a[d]:(c=!0,b));return c?d:a})(a,s)),a8.current=q,aa(q),c?bc.current=x:bc.current=Math.max(bc.current,x),e={sessionId:a,leafId:l.leafId,messages:s,entryIds:q,totalMessages:l.totalMessages??l.context.messages.length,hasMore:!c&&(l.hasMore??!1),loadedMessagesCount:l.context.messages.length},B().entries.set(a,{...e,loadedAt:Date.now()})),aK(a=>{if(!a)return null;let b=l.context.model;return b?.provider===a.provider&&b.modelId===a.modelId?null:a}),W(null),!l.agentState?.state?.thinkingLevel&&l.context.thinkingLevel&&"off"!==l.context.thinkingLevel&&aA(l.context.thinkingLevel),l.agentState?.state?.planMode&&P?.(l.agentState.state.planMode),l.agentState??null}catch(a){if(a instanceof DOMException&&("AbortError"===a.name||"TimeoutError"===a.name)||a instanceof Error&&/aborted without reason|AbortError|Session load (?:timed out|superseded)/i.test(a.message))return null;return W(String(a)),null}finally{f&&bf.current?.controller===f&&(bf.current=null),b&&U(!1)}},[P,bq]),bs=(0,d.useRef)(!1),bt=(0,d.useCallback)(async()=>{if(bs.current)return;bs.current=!0;let a=aW.current;if(!a){bs.current=!1;return}try{let b=await fetch(`/api/sessions/${encodeURIComponent(a)}?limit=50&offset=${af}`);if(!b.ok)return;let c=await b.json(),d=c.context.messages,e=c.context.entryIds??[];$(a=>[...d,...a]),aa(a=>{let b=[...e,...a];return a8.current=b,b}),ag(a=>a+d.length),ae(c.hasMore??!1),D(a,d,e,c.hasMore??!1,af+d.length)}catch{}finally{bs.current=!1}},[af]),bu=(0,d.useCallback)(async(a,b)=>{try{let c=b?`/api/sessions/${encodeURIComponent(a)}/context?leafId=${encodeURIComponent(b)}`:`/api/sessions/${encodeURIComponent(a)}/context`,d=await fetch(c);if(!d.ok)throw Error(`HTTP ${d.status}`);let e=await d.json(),f=e.context.messages,g=e.context.entryIds??[],h=M(f),i=new Map,j=Date.now();for(let[b,c]of a4.current)if(c.sessionId===a){if(j-c.createdAt>12e4){a4.current.delete(b);continue}if(c.confirmKey){let a=h.get(c.confirmKey)??0,d=i.get(c.confirmKey)??0;a-d>c.confirmCountAtCreate&&(a4.current.delete(b),i.set(c.confirmKey,d+1))}}a5.current=h;let k=[...a4.current.values()].filter(b=>N(b,a,g)).map(a=>a.message);$(k.length>0?[...f,...k]:f),a8.current=g,aa(g)}catch(a){console.error("Failed to load context:",a)}},[]),bv=(0,d.useCallback)(async a=>{try{let b=await (0,f.$)(a,{type:"get_tools"});b&&(bh((0,F.ES)(b)),bi((0,F.IB)(b)))}catch(a){console.error("Failed to load tools:",a)}},[bi,bh]),bw=(0,d.useCallback)((a,b={})=>{aV.current?.close(),aV.current=null;let c=`/api/agent/${encodeURIComponent(a)}/events${b.replay?"?replay=1":""}`;return!function(a){let b=w(a);if("active"===b.snapshot.phase)return r(b,!0),t(b),b.snapshot;let c=Date.now();b.snapshot={...o(a),phase:"active",startedAt:c,lastEventAt:c,isStreaming:!0,streamingMessage:{role:"assistant",content:[]}},t(b),r(b,!0),b.snapshot}(a),new Promise((d,e)=>{let f=!1,g=!1,h=null,j=a=>{if(!f){if(f=!0,clearTimeout(k),a){h?.close(),aV.current===h&&(aV.current=null),e(a);return}d()}},k=setTimeout(()=>{b.requireConnected?j(Error("Timed out waiting for event stream connection")):j()},b.timeoutMs??3e4);aV.current=h=function(a){let{url:b,onEvent:c,onStateChange:d,onFatalError:e,maxReconnectAttempts:f=1/0,reconnectBaseMs:g=1e3,reconnectMaxMs:h=3e4,autoReconnect:j=!0}=a,k="idle",l=new AbortController,m=0,n=null,o=null,p=!1,q=(a,b)=>{b&&(o=b),c(a,b)},r=a=>{k!==a&&(k=a,d?.(a))},s=()=>{null!==n&&(clearTimeout(n),n=null)},t=()=>{if(p)return;if(!j)return void r("error");if(m>=f){r("error"),e?.(Error(`Max reconnect attempts (${f}) reached`));return}let a=Math.min(h,g*2**m);m+=1,r("connecting"),n=setTimeout(()=>{n=null,u()},a)},u=async()=>{if(!p){s(),l=new AbortController,r("connecting");try{let a=await fetch(b,{signal:l.signal,headers:{Accept:"text/event-stream","Cache-Control":"no-cache",...o?{"Last-Event-ID":o}:{}}});if(!a.ok)throw Error(`HTTP ${a.status}: ${a.statusText}`);let c=a.body;if(!c)throw Error("Response has no readable body");let d=c.getReader();if(r("connected"),m=0,await i(d,q,l.signal),l.signal.aborted)try{await d.cancel()}catch{}d.releaseLock(),r("closed"),!p&&j&&t()}catch(a){if(p||a instanceof DOMException&&"AbortError"===a.name)return void r("closed");r("error"),j&&t()}}};return{get state(){return k},connect:()=>{p=!1,m=0,s(),u()},close:()=>{p=!0,s(),l.abort(),r("closed")},get abortController(){return l}}}({url:c,onEvent:b=>{try{let c=JSON.parse(b);if("connected"===c.type&&j(),aW.current!==a)return;aY.current?.(c)}catch{}},onStateChange:b=>{!function(a,b){let c=m().get(a);if(!c)return;let d=c.connectionState;c.connectionState=b,"connected"===b&&"connected"!==d&&(c.snapshot={...c.snapshot,lastEventAt:Date.now(),lastHeartbeatAt:Date.now()},t(c)),"connected"!==b&&"connected"===d&&u(c)}(a,b),"connected"===b&&(g&&(z(a),aZ.current?.(a,"sse_reconnected")),g=!0)},reconnectBaseMs:1e3,reconnectMaxMs:3e4}),h.connect()})},[]),bx=(0,d.useCallback)(async(a,b="manual")=>{if(!a||aW.current!==a)return;let c=ba.current;try{let b=await fetch(`/api/agent/${encodeURIComponent(a)}`),e=await b.json().catch(()=>({}));if(aW.current!==a||ba.current!==c)return;if(e.running){var d;aX.current=!0,ak(!0),aS((d=e.state,d?.phase==="running_tools"?{kind:"running_tools",tools:(d.activeTools??[]).map(a=>({id:a.id,name:a.name}))}:d?.phase==="streaming"||d?.phase==="compacting"||d?.phase==="idle"?null:{kind:"waiting_model"})),aV.current&&"closed"!==aV.current.state&&"error"!==aV.current.state||(z(a),bw(a,{replay:!0}))}else aX.current=!1,aV.current?.close(),aV.current=null,y(a),ak(!1),aS(null),aC(null),ai({type:"end"}),E(a),await br(a,!1,!1,!0);e.state?.contextUsage!==void 0&&aE(e.state.contextUsage??null),e.state?.systemPrompt!==void 0&&aG(e.state.systemPrompt??null),e.state?.isCompacting!==void 0&&aO(e.state.isCompacting),e.state?.thinkingLevel!==void 0&&aA(e.state.thinkingLevel??"auto"),e.state?.planMode!==void 0&&P?.(e.state.planMode)}catch{}},[bw,br,P]);aY.current=(0,d.useCallback)(a=>{let b=aW.current;switch(b&&function(a,b){let c=w(a),d=Date.now();switch(b.type){case"agent_start":if("active"===c.snapshot.phase)return r(c,!0),c.snapshot;return v(c),c.accumulatedText="",c.toolCalls.clear(),c.toolResults.clear(),c.activeToolId=null,c.snapshot={...o(a),phase:"active",startedAt:d,lastEventAt:d,isStreaming:!0,streamingMessage:{role:"assistant",content:[]}},t(c),r(c,!0),c.snapshot;case"message_update":{let a=b.message;if(!a||"assistant"!==a.role)return c.snapshot;let e=a.content;for(let a of Array.isArray(e)?e:[])"object"==typeof a&&null!==a&&"type"in a&&("text"===a.type?c.accumulatedText=a.text??"":"toolCall"===a.type&&a.toolCallId&&!c.toolCalls.has(a.toolCallId)&&c.toolCalls.set(a.toolCallId,{...a,startedAt:d}));return r(c,!1),c.snapshot}case"tool_execution_start":{let a="string"==typeof b.toolCallId?b.toolCallId:"",e="string"==typeof b.toolName?b.toolName:"tool",f=b.input??{};if(!a)return c.snapshot;let g=c.toolCalls.get(a);return c.toolCalls.set(a,{type:"toolCall",toolCallId:a,toolName:e,input:g?.input??f,startedAt:g?.startedAt??d}),c.activeToolId=a,v(c),c.activeToolId&&(c.toolProgressTimer=setInterval(()=>r(c,!0),1e3)),r(c,!0),c.snapshot}case"tool_execution_end":{let a="string"==typeof b.toolCallId?b.toolCallId:"",e="string"==typeof b.toolName?b.toolName:"tool",f="string"==typeof b.result?b.result:JSON.stringify(b.result??"");if(a){let g=c.toolCalls.get(a);g&&c.toolCalls.set(a,{...g,endedAt:d}),c.toolResults.set(a,{role:"toolResult",toolCallId:a,toolName:e,content:[{type:"text",text:f}],isError:!!b.isError,timestamp:d}),c.activeToolId===a&&(c.activeToolId=null,v(c))}return r(c,!0),c.snapshot}case"message_end":return q(c),r(c,!0),c.snapshot;case"agent_end":{if(q(c),v(c),c.activeToolId=null,!0===b.willRetry)return c.accumulatedText="",c.toolCalls.clear(),c.toolResults.clear(),c.snapshot={...c.snapshot,phase:"active",lastEventAt:d,accumulatedText:"",toolCalls:[],toolResults:[],statusText:null,streamingMessage:null,isStreaming:!0,error:null},t(c),p(a,{type:"snapshot-updated",snapshot:c.snapshot}),c.snapshot;u(c);let e="string"==typeof b.error?b.error:null;return c.snapshot={...c.snapshot,phase:e?"error":"completed",isStreaming:!1,streamingMessage:null,statusText:null,error:e},p(a,e?{type:"error",snapshot:c.snapshot}:{type:"completed",snapshot:c.snapshot}),c.snapshot}case"heartbeat":return c.snapshot={...c.snapshot,lastHeartbeatAt:d},c.snapshot;default:return c.snapshot}}(b,a),a.type){case"prompt_admitted":case"agent_start":aU(null),aX.current=!0,ak(!0),aS({kind:"waiting_model"}),ai({type:"start"});break;case"agent_end":if(!0===a.willRetry){aX.current=!0,ak(!0),aS({kind:"waiting_model"});break}aX.current=!1,aV.current?.close(),aV.current=null,ak(!1),aS(null),aC(null),ai({type:"end"}),b&&(E(b),br(b,!1,!1,!0),be.current&&clearTimeout(be.current),be.current=setTimeout(()=>{aW.current!==b||aX.current||(E(b),br(b,!1,!1,!0))},500),fetch(`/api/agent/${encodeURIComponent(b)}`).then(a=>a.json()).then(a=>{a.state?.contextUsage!==void 0&&aE(a.state.contextUsage??null),a.state?.systemPrompt!==void 0&&aG(a.state.systemPrompt??null),a.state?.isCompacting!==void 0&&aO(a.state.isCompacting)}).catch(()=>{})),k?.();break;case"message_start":case"message_update":{if(!aX.current)break;let b=a.message;if(b?.role==="user")break;b&&ai({type:"update",message:e(b)}),aS(null);break}case"message_end":{if(!aX.current)break;let c=a.message,d="string"==typeof a.__entryId?a.__entryId:null;if(c&&"user"!==c.role){"assistant"===c.role&&"error"===c.stopReason&&c.errorMessage?.trim()&&aU(`Model response failed: ${c.errorMessage.trim()}`);let a=e(c);if(!(d&&a8.current.includes(d))){if(b&&d){let a=a6.current.get(b)??new Map;a.set(d,Date.now()),a6.current.set(b,a)}$(b=>b.some(b=>O(b,a))?b:[...b,a]),d&&aa(a=>{if(a.includes(d))return a;let b=[...a,d];return a8.current=b,b})}}ai({type:"reset"}),aS({kind:"waiting_model"});break}case"replay_gap":b&&(E(b),br(b,!1,!1,!0));break;case"prompt_done":if(!aX.current)break;bx(aW.current??"","prompt_done");break;case"prompt_error":{let c="string"==typeof a.error&&a.error.trim()?a.error.trim():"The model request failed before producing a response.";if(aX.current=!1,ak(!1),aS(null),aC(null),ai({type:"end"}),aV.current?.close(),aV.current=null,b){for(let[a,c]of(y(b),a4.current))c.sessionId===b&&"prompt"===c.kind&&a4.current.delete(a);E(b),br(b,!1,!1,!0)}aU(`Model request failed: ${c}`),k?.();break}case"tool_execution_start":{let b=a.toolCallId,c=a.toolName,d=a.args,e="bash"===c&&"string"==typeof d?.command?d.command:void 0;aS(a=>{let d=a?.kind==="running_tools"?[...a.tools]:[];return d.some(a=>a.id===b)||d.push({id:b,name:c,args:e}),{kind:"running_tools",tools:d}});break}case"tool_execution_end":{let b=a.toolCallId;aS(a=>{if(a?.kind!=="running_tools")return a;let c=a.tools.filter(a=>a.id!==b);return 0===c.length?{kind:"waiting_model"}:{kind:"running_tools",tools:c}});break}case"auto_retry_start":aU(null),aX.current=!0,ak(!0),aS({kind:"waiting_model"}),aC({attempt:a.attempt,maxAttempts:a.maxAttempts,errorMessage:a.errorMessage});break;case"auto_retry_end":aC(null),!1===a.success&&"string"==typeof a.finalError&&a.finalError.trim()?aU(`Model response failed after retries: ${a.finalError.trim()}`):!0===a.success&&aU(null);break;case"auto_compaction_start":case"compaction_start":aO(!0),aQ(null);break;case"auto_compaction_end":case"compaction_end":aO(!1),a.errorMessage?aQ(a.errorMessage):!a.aborted&&aW.current&&br(aW.current)}},[br,k,bx]);let by=(0,d.useCallback)(async(a,d,e,i)=>{if(!a.trim()&&!d?.length&&!e?.length||aj)return;ba.current+=1;let k=bm(e),m=a.trim()?k?`${a}
|
|
5
5
|
|
|
6
6
|
Attached document text:
|
|
7
7
|
|
|
8
8
|
${k}`:a:k?`Attached document text:
|
|
9
9
|
|
|
10
|
-
${k}`:"",n=[],o=
|
|
10
|
+
${k}`:"",n=[],o=Q?c:b?.cwd??R?.info?.cwd;if(d?.length&&o)try{n=await h(o,d)}catch(a){aU(a instanceof Error?a.message:String(a));return}let p=n.length?n.map(a=>{var b;return{type:"image",path:a.path,mimeType:a.mimeType,name:a.name,source:{type:"url",url:(b=a.path,`/api/files/${(0,g.HG)(b)}?type=read`),media_type:a.mimeType}}}):d?.map(a=>({type:"image",source:{type:"base64",media_type:a.mimeType,data:a.data}})),q={role:"user",content:p?.length?[...m.trim()?[{type:"text",text:m}]:[],...p]:m,timestamp:Date.now()},r=I(),s=Q?null:b?.id??null;s&&E(s);let t=a7.current,u=L(q.content);a4.current.set(r,{localId:r,sessionId:s??"__new__",leafId:t,message:q,createdAt:Date.now(),kind:"prompt",confirmKey:u,confirmCountAtCreate:Q?0:u?a5.current.get(u)??0:0}),$(a=>[...a,q]),aU(null),aX.current=!0,ak(!0),aS({kind:"waiting_model"}),ai({type:"start"}),a1.current=!0;let v=an.find(a=>a.provider===bj?.provider&&a.id===bj?.modelId)?.input,w=!v||0===v.length||v.includes("image")?d?.map(a=>({type:"image",data:a.data,mimeType:a.mimeType})):void 0;try{if(Q&&c){at&&aM(at);let b=i??bl(),d=await fetch("/api/agent/new",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:c,type:"prompt",message:m,toolNames:b,planMode:j,deferPrompt:!0,...w?.length?{images:w}:{},...at?{provider:at.provider,modelId:at.modelId}:{},..."auto"!==az?{thinkingLevel:az}:{}})}),e=await d.json().catch(()=>({}));if(!d.ok||e.error||!e.sessionId)throw Error(e.error??`HTTP ${d.status}`);let g=e.sessionId;aW.current=g;let h=a4.current.get(r);h&&(h.sessionId=g),a$.current?.(),a$.current=x(g,()=>{aW.current===g&&(ak(!1),aS(null))}),a9.current=g,await bw(g,{requireConnected:!0,timeoutMs:1e4}),await (0,f.$)(g,{type:"prompt",message:m,toolNames:b,planMode:j,...w?.length?{images:w}:{}}),l?.({id:g,path:"",cwd:c,name:void 0,created:new Date().toISOString(),modified:new Date().toISOString(),messageCount:1,firstMessage:a})}else if(b){let a=i??bl();await bn(b.id),a$.current?.(),a$.current=x(b.id,()=>{aW.current===b.id&&(ak(!1),aS(null))}),await bw(b.id,{requireConnected:!0,timeoutMs:1e4}),await (0,f.$)(b.id,{type:"prompt",message:m,toolNames:a,planMode:j,leafId:t,...bj?{provider:bj.provider,modelId:bj.modelId}:{},..."auto"!==az?{thinkingLevel:az}:{},...w?.length?{images:w}:{}})}}catch(b){let a=aW.current;if(a4.current.delete(r),$(a=>a.filter(a=>a!==q)),b instanceof f.H&&(409===b.status||"SESSION_BUSY"===b.code)){aU("This session is already running in another tab. Showing that active run instead."),aX.current=!0,ak(!0),aS({kind:"waiting_model"}),ai({type:"start"}),a&&(aV.current?.close(),aV.current=null,z(a),bw(a,{replay:!0}),aZ.current?.(a,"prompt_conflict"));return}if(console.error("Failed to send message:",b),Q&&aW.current){let a=aW.current;aW.current=null,a9.current=null,fetch(`/api/sessions/${encodeURIComponent(a)}`,{method:"DELETE"}).catch(()=>{})}aU(b instanceof Error?b.message:String(b)),aV.current?.close(),aV.current=null,a&&y(a),aX.current=!1,ak(!1),aS(null),ai({type:"end"})}},[Q,c,at,bl,az,b,R?.info?.cwd,aj,bw,l,bm,j,an,bj,bn]),bz=(0,d.useCallback)(async()=>{let a=aW.current;if(a){aX.current=!1,aU(null),ak(!1),aS(null),ai({type:"end"}),aV.current?.close(),aV.current=null,y(a),E(a);try{await (0,f.$)(a,{type:"abort"}),await br(a,!1,!1,!0)}catch(b){console.error("Failed to abort:",b),await br(a,!1,!1,!0)}}},[br]),bA=(0,d.useCallback)(async a=>{let b=aW.current;if(b){aI(a);try{let{cancelled:c,newSessionId:d}=await (0,f.$)(b,{type:"fork",entryId:a})??{};!c&&d&&n?.(d)}catch(a){console.error("Fork failed:",a)}finally{aI(null)}}},[n]),bB=(0,d.useCallback)(async a=>{let b=aW.current;b&&(a6.current.delete(b),E(b),a7.current=a,Y(a),await bu(b,a))},[bu]);(0,d.useCallback)(async a=>{a7.current=a,Y(a);let b=aW.current;b&&(a6.current.delete(b),E(b),await bu(b,a))},[bu]);let bC=(0,d.useCallback)(async(a,b)=>{if(Q)return void bg({provider:a,modelId:b});let c=aW.current;if(c)try{var d;aU(null);let e=await (0,f.$)(c,{type:"set_model",provider:a,modelId:b}),g={provider:e.provider,modelId:e.id};e.thinkingLevel&&(d=e.thinkingLevel,"auto"===d||"off"===d||"minimal"===d||"low"===d||"medium"===d||"high"===d||"xhigh"===d)&&aA(e.thinkingLevel),aK(g),S(a=>a?{...a,context:{...a.context,model:g}}:a)}catch(b){let a=b instanceof Error?b.message:String(b);console.error("Failed to set model:",b),aU(a)}},[Q,bg]),bD=(0,d.useCallback)(async()=>{let a=aW.current;if(a&&!aN){aO(!0),aQ(null);try{await (0,f.$)(a,{type:"compact"}),await br(a,!0)}catch(a){aQ(a instanceof Error?a.message:String(a))}finally{aO(!1)}}},[aN,br]),bE=(0,d.useCallback)(async(a,b,c)=>{let d=aW.current;if(!d)return;E(d);let e=bm(c),g=a.trim()?e?`${a}
|
|
11
11
|
|
|
12
12
|
Attached document text:
|
|
13
13
|
|
|
14
14
|
${e}`:a:e?`Attached document text:
|
|
15
15
|
|
|
16
|
-
${e}`:"",h=
|
|
16
|
+
${e}`:"",h=an.find(a=>a.provider===bj?.provider&&a.id===bj?.modelId)?.input,i=!h||0===h.length||h.includes("image")?b?.map(a=>({type:"image",data:a.data,mimeType:a.mimeType})):void 0,j={role:"user",content:`[steer] ${g}`,timestamp:Date.now()},k=I(),l=K(g,i?.length??0);a4.current.set(k,{localId:k,sessionId:d,leafId:a7.current,message:j,createdAt:Date.now(),kind:"steer",confirmKey:l,confirmCountAtCreate:l?a5.current.get(l)??0:0}),$(a=>[...a,j]);try{await (0,f.$)(d,{type:"steer",message:g,...i?.length?{images:i}:{}})}catch(a){a4.current.delete(k),console.error("Failed to steer:",a)}},[bm,an,bj]),bF=(0,d.useCallback)(async(a,b,c)=>{let d=aW.current;if(!d)return;E(d);let e=bm(c),g=a.trim()?e?`${a}
|
|
17
17
|
|
|
18
18
|
Attached document text:
|
|
19
19
|
|
|
20
20
|
${e}`:a:e?`Attached document text:
|
|
21
21
|
|
|
22
|
-
${e}`:"",h=
|
|
22
|
+
${e}`:"",h=an.find(a=>a.provider===bj?.provider&&a.id===bj?.modelId)?.input,i=!h||0===h.length||h.includes("image")?b?.map(a=>({type:"image",data:a.data,mimeType:a.mimeType})):void 0,j={role:"user",content:g,timestamp:Date.now()},k=I(),l=K(g,i?.length??0);a4.current.set(k,{localId:k,sessionId:d,leafId:a7.current,message:j,createdAt:Date.now(),kind:"follow_up",confirmKey:l,confirmCountAtCreate:l?a5.current.get(l)??0:0}),$(a=>[...a,j]);try{await (0,f.$)(d,{type:"follow_up",message:g,...i?.length?{images:i}:{}})}catch(a){a4.current.delete(k),console.error("Failed to follow up:",a)}},[bm,an,bj]),bG=(0,d.useCallback)(async()=>{let a=aW.current;if(a)try{await (0,f.$)(a,{type:"abort_compaction"})}catch(a){console.error("Failed to abort compaction:",a)}},[]),bH=(0,d.useCallback)(async a=>{if(aA(a),"auto"===a)return;let b=aW.current;if(b)try{await (0,f.$)(b,{type:"set_thinking_level",level:a})}catch(a){console.error("Failed to set thinking level:",a)}},[]),bI=(0,d.useCallback)(async a=>{bh(a);let b=(0,F.tE)(a,ax),c=aW.current;if(c)try{await (0,f.$)(c,{type:"set_tools",toolNames:b})}catch(a){console.error("Failed to set tools:",a)}},[ax,bh]),bJ=(0,d.useCallback)(async a=>{bi(a);let b=(0,F.tE)(av,a),c=aW.current;if(c)try{await (0,f.$)(c,{type:"set_tools",toolNames:b})}catch(a){console.error("Failed to set memory tools:",a)}},[bi,av]);return(0,d.useCallback)((a="smooth")=>{a2.current?.scrollIntoView({behavior:a})},[]),(0,d.useCallback)(()=>{let a=a3.current,b=a0.current;if(!a||!b)return;let c=b.getBoundingClientRect().top-a.getBoundingClientRect().top+a.scrollTop;a.scrollTo({top:c-16,behavior:"smooth"})},[]),{data:R,loading:T,error:V,activeLeafId:X,messages:Z,entryIds:_,streamState:ah,agentRunning:aj,modelNames:al,modelList:an,modelThinkingLevels:ap,modelThinkingLevelMaps:ar,newSessionModel:at,toolPreset:av,memoryTools:ax,thinkingLevel:az,retryInfo:aB,contextUsage:aD,systemPrompt:aF,forkingEntryId:aH,isCompacting:aN,compactError:aP,currentModel:bj,displayModel:bk,sessionStats:bo,agentPhase:aR,agentError:aT,isNew:Q,sessionIdRef:aW,sseReaderRef:aV,messagesEndRef:a2,scrollContainerRef:a3,lastUserMsgRef:a0,pendingScrollToUserRef:a1,initialScrollDoneRef:a_,handleSend:by,handleAbort:bz,handleFork:bA,handleNavigate:bB,handleModelChange:bC,handleCompact:bD,handleSteer:bE,handleFollowUp:bF,handleAbortCompaction:bG,handleToolPresetChange:bI,handleMemoryToolsChange:bJ,handleThinkingLevelChange:bH,loadTools:bv,setActiveLeafId:Y,setData:S,setMessages:$,dispatch:ai,setAgentRunning:ak,setForkingEntryId:aI,loadMoreMessages:bt,hasMoreMessages:ad,totalMessages:ab,loadedMessagesCount:af,handleAgentEventRef:aY}}},37267:(a,b,c)=>{c.d(b,{$:()=>e,H:()=>d});class d extends Error{constructor(a,b,c){super(a),this.status=b,this.code=c,this.name="AgentCommandError"}}async function e(a,b){let c=await fetch(`/api/agent/${encodeURIComponent(a)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)}),e=await c.json().catch(()=>({}));if(!c.ok||e.error)throw new d(e.error??`HTTP ${c.status}`,c.status,e.code);return e.data}},81537:(a,b,c)=>{c.d(b,{O:()=>k});let d=new Set,e=null,f=null,g=null,h=null,i=null,j=!1;function k(a){return d.add(a),e&&a(e),()=>{if(d.delete(a),0===d.size&&j){if(j=!1,h&&clearTimeout(h),h=null,g&&(clearInterval(g),g=null),i?.(),i=null,f){try{f.port.postMessage({type:"disconnect"})}catch{}try{f.port.close()}catch{}}f=null,e=null}}}}};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
exports.id=4584,exports.ids=[4584],exports.modules={129:(a,b,c)=>{"use strict";c.d(b,{O7:()=>q,eR:()=>r,qb:()=>s,qn:()=>n,h5:()=>l,Xz:()=>o,Ln:()=>p});var d=c(48249),e=c(67484);function f({imageData:a,mimeType:b,width:c,height:g,replayToken:h,saveTargetKind:i,saveDefaults:j}){let[k,l]=(0,e.useState)(j??{format:"pdf",dpi:300,width:800,height:600}),[m,n]=(0,e.useState)(k.format),[o,p]=(0,e.useState)(k.dpi),[q,r]=(0,e.useState)(k.width),[s,t]=(0,e.useState)(k.height),[u,v]=(0,e.useState)("idle"),[w,x]=(0,e.useState)(null),y=h&&"object"===i,z=async()=>{if(h){v("saving"),x(null);try{let a=await fetch("/api/plot-kernels/save",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({replayToken:h,format:m,dpi:o,width:q,height:s})});if(410===a.status)return void v("expired");if(!a.ok){let b=await a.json().catch(()=>({}));throw Error(b.error??`HTTP ${a.status}`)}v("saved")}catch(a){v("error"),x(a instanceof Error?a.message:String(a))}}};return(0,d.jsxs)("div",{style:{position:"relative",display:"inline-block",maxWidth:"100%"},children:[(0,d.jsx)("img",{src:`data:${b};base64,${a}`,alt:"rendered plot",style:{maxWidth:"100%",height:"auto",borderRadius:6,border:"1px solid var(--border)"},width:c??void 0,height:g??void 0}),y&&(0,d.jsxs)("div",{style:{position:"absolute",bottom:0,left:0,right:0,background:"rgba(0,0,0,0.65)",padding:"6px 10px",display:"flex",alignItems:"center",gap:8,flexWrap:"wrap",borderRadius:"0 0 6px 6px",fontSize:11,color:"#e5e7eb",opacity:0,transition:"opacity 0.15s"},className:"workbench-save-bar",onMouseEnter:a=>{a.currentTarget.style.opacity="1"},children:["saved"===u?(0,d.jsx)("span",{style:{color:"#34d399",fontWeight:600},children:"✓ Saved"}):"expired"===u?(0,d.jsx)("span",{style:{color:"#fbbf24"},children:"Save session expired. Re-render plot."}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("select",{value:m,onChange:a=>n(a.target.value),style:{background:"rgba(255,255,255,0.12)",color:"#e5e7eb",border:"1px solid rgba(255,255,255,0.2)",borderRadius:4,padding:"2px 4px",fontSize:11,height:24},children:[(0,d.jsx)("option",{value:"pdf",children:"PDF"}),(0,d.jsx)("option",{value:"png",children:"PNG"}),(0,d.jsx)("option",{value:"svg",children:"SVG"})]}),(0,d.jsxs)("label",{style:{display:"flex",alignItems:"center",gap:3},children:["DPI",(0,d.jsx)("input",{type:"number",value:o,onChange:a=>p(Number(a.target.value)||300),min:72,max:1200,style:{width:50,height:24,padding:"2px 4px",fontSize:11,background:"rgba(255,255,255,0.12)",color:"#e5e7eb",border:"1px solid rgba(255,255,255,0.2)",borderRadius:4}})]}),(0,d.jsxs)("label",{style:{display:"flex",alignItems:"center",gap:3},children:["W",(0,d.jsx)("input",{type:"number",value:q,onChange:a=>r(Number(a.target.value)||800),min:100,max:8e3,style:{width:55,height:24,padding:"2px 4px",fontSize:11,background:"rgba(255,255,255,0.12)",color:"#e5e7eb",border:"1px solid rgba(255,255,255,0.2)",borderRadius:4}})]}),(0,d.jsxs)("label",{style:{display:"flex",alignItems:"center",gap:3},children:["H",(0,d.jsx)("input",{type:"number",value:s,onChange:a=>t(Number(a.target.value)||600),min:100,max:8e3,style:{width:55,height:24,padding:"2px 4px",fontSize:11,background:"rgba(255,255,255,0.12)",color:"#e5e7eb",border:"1px solid rgba(255,255,255,0.2)",borderRadius:4}})]}),(0,d.jsx)("button",{type:"button",onClick:z,disabled:"saving"===u,style:{height:24,padding:"0 12px",borderRadius:4,background:"rgba(37,99,235,0.4)",border:"1px solid rgba(37,99,235,0.6)",color:"#fff",cursor:"pointer",fontSize:11,fontWeight:600,opacity:"saving"===u?.6:1},children:"saving"===u?"Saving...":"Save"})]}),"error"===u&&w&&(0,d.jsx)("span",{style:{color:"#f87171",marginLeft:4},children:w})]})]})}var g=c(1453),h=c(31343);let i=/(?:file:\/\/)?(?:(?:[A-Za-z]:[\\/])|\/|~\/|\.{1,2}[\\/]|[A-Za-z0-9_.-]+[\\/])[^`"'<>|\s{}\[\]]+?\.(?:png|jpe?g|webp|gif|svg|bmp|avif|pdf)(?=$|[\s`"'<>|{}\[\]),.;:!?])/gi,j=/\.(?:png|jpe?g|webp|gif|svg|bmp|avif)$/i,k=/\.pdf$/i;function l(a){return a.path?m(a.path):a.source?.type==="base64"&&a.source.data?`data:${a.source.media_type??"image/png"};base64,${a.source.data}`:a.source?.type==="url"&&a.source.url?a.source.url:a.data?`data:${a.mimeType??"image/png"};base64,${a.data}`:null}function m(a){return`/api/files/${(0,h.HG)(a)}?type=read`}function n(a,b){if(!a)return[];let c=[],d=new Set,e=new Set;for(let b of a.matchAll(/!\[[^\]]*]\(([^)]+)\)/g))b[1]&&e.add(b[1].trim());let f=a=>{!a||d.has(a)||c.length>=24||(d.add(a),c.push(a))};for(let c of(i.lastIndex=0,a.matchAll(i))){let d=c[0];if(/^[a-z][a-z\d+.-]*:\/\//i.test(d)&&!/^file:\/\//i.test(d))continue;let g=a.slice(Math.max(0,c.index-12),c.index);if(/[A-Za-z][A-Za-z\d+.-]*:\/?$/.test(g)||d.startsWith("//")||e.has(d))continue;let i=(0,h.HR)(d,b);i&&(j.test(i)?f(i):k.test(i)&&f(i.replace(k,".png")))}return c}function o(a){let b=new Set,c=[];for(let d of a)b.has(d)||(b.add(d),c.push(d));return c}function p(a,b){return a&&b?a.replace(/\n?\[Current model does not support images\. The image will be omitted from this request\.\]\s*/g,"").trim():a}function q({images:a,maxHeight:b=360}){return 0===a.length?null:(0,d.jsx)("div",{style:{display:"grid",gridTemplateColumns:1===a.length?"minmax(0, 1fr)":"repeat(auto-fit, minmax(180px, 1fr))",gap:8,minWidth:0},children:a.map((a,c)=>{let e=l(a);return e?(0,d.jsx)("a",{href:e,target:"_blank",rel:"noreferrer",title:"Open image",style:{display:"block",minWidth:0,border:"1px solid var(--border)",borderRadius:6,overflow:"hidden",background:"var(--bg)"},children:(0,d.jsx)("img",{src:e,alt:"",loading:"lazy",style:{display:"block",width:"100%",maxHeight:b,objectFit:"contain"}})},c):null})})}function r({imagePaths:a,maxHeight:b=360}){let[c,f]=(0,e.useState)(()=>new Set),g=(0,e.useRef)(new Map);a.join("\0");let i=a.filter(a=>!c.has(a));return 0===i.length?null:(0,d.jsx)("div",{style:{display:"grid",gridTemplateColumns:1===i.length?"minmax(0, 1fr)":"repeat(auto-fit, minmax(180px, 1fr))",gap:8,minWidth:0},children:i.map(a=>{let c=m(a),e=(0,h.WP)(a);return(0,d.jsxs)("a",{href:c,target:"_blank",rel:"noreferrer",title:a,style:{display:"block",minWidth:0,border:"1px solid var(--border)",borderRadius:6,overflow:"hidden",background:"var(--bg)"},children:[(0,d.jsx)("img",{src:c,alt:e,loading:"lazy",onError:()=>{g.current.set(a,(g.current.get(a)??0)+1),f(b=>{let c=new Set(b);return c.add(a),c})},style:{display:"block",width:"100%",maxHeight:b,objectFit:"contain"}}),(0,d.jsx)("div",{style:{padding:"4px 6px",borderTop:"1px solid var(--border)",color:"var(--text-dim)",fontSize:10,fontFamily:"var(--font-mono)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e})]},a)})})}function s({text:a,isEmpty:b,isError:c,images:e,imagePaths:h,toolDetails:i}){let j=!b||a.trim().length>0;return(0,d.jsxs)("div",{style:{borderTop:`1px solid ${c?"rgba(248,113,113,0.3)":"rgba(34,197,94,0.15)"}`,background:c?"rgba(248,113,113,0.04)":"var(--bg-subtle)"},children:[e.length>0&&(0,d.jsx)("div",{style:{padding:"10px 10px 0",background:"var(--bg)"},children:i?.schema==="kernel-plot.render.v1"?(0,d.jsx)(f,{imageData:e[0].data??e[0].source?.data??"",mimeType:e[0].mimeType??e[0].source?.media_type??"image/png",width:null,height:null,replayToken:i.replayToken??null,saveTargetKind:i.saveTargetKind??null}):(0,d.jsx)(q,{images:e})}),h.length>0&&(0,d.jsx)("div",{style:{padding:"10px 10px 0",background:"var(--bg)"},children:(0,d.jsx)(r,{imagePaths:h})}),j&&(0,d.jsx)(g.m,{text:b?"(no output)":a,maxHeight:400,collapsible:!0,textColor:c?"#f87171":b?"var(--text-dim)":"var(--text-muted)",background:"var(--bg)",empty:b})]})}},1453:(a,b,c)=>{"use strict";c.d(b,{m:()=>i});var d=c(48249),e=c(40805),f=c.n(e);let g=/\x1B\[[0-?]*[ -/]*[@-~]/;var h=c(19581);function i({text:a,maxHeight:b=400,collapsible:c=!0,textColor:e="var(--text-muted)",background:j="var(--bg)",empty:k=!1}){let l=a.replace(/\r\n/g,"\n").replace(/\r/g,"\n"),m=l.split("\n"),n=g.test(a)?(0,d.jsx)("div",{style:{fontFamily:"var(--font-mono)",fontSize:12,lineHeight:1.55,whiteSpace:"pre-wrap",wordBreak:"break-word",overflowX:"auto",padding:"8px 10px",maxHeight:c?void 0:b,overflowY:c?void 0:"auto",background:j,color:e,opacity:k?.6:1,fontStyle:k?"italic":"normal"},children:(0,d.jsx)(f(),{children:a})}):(0,d.jsx)("pre",{style:{margin:0,padding:"8px 10px",fontSize:12,lineHeight:1.5,overflowX:"auto",maxHeight:c?void 0:b,overflowY:c?void 0:"auto",background:j,whiteSpace:"pre-wrap",wordBreak:"break-all",fontFamily:"var(--font-mono)",opacity:k?.6:1,fontStyle:k?"italic":"normal",color:e},children:l});return!c||m.length<=20?(0,d.jsx)(d.Fragment,{children:n}):(0,d.jsx)(h.oG,{totalLines:m.length,expandedMaxHeight:b,overlayBackground:j,footerBackground:j,children:n})}},2857:(a,b,c)=>{"use strict";c.d(b,{D:()=>i});var d=c(67484);let e=new Set;function f(a){return e.add(a),()=>{e.delete(a)}}function g(){return"u"<typeof document?"light":document.documentElement.classList.contains("dark")?"dark":"light"}function h(){return"light"}function i(){let a=(0,d.useSyncExternalStore)(f,g,h);return{theme:a,toggleTheme:(0,d.useCallback)(a=>{let b="dark"===g()?"light":"dark",c=()=>{"dark"===b?document.documentElement.classList.add("dark"):document.documentElement.classList.remove("dark");try{localStorage.setItem("pi-theme",b)}catch{}e.forEach(a=>a())},d=window.matchMedia?.("(prefers-reduced-motion: reduce)").matches;if("function"!=typeof document.startViewTransition||d)return void c();let f=a?.x??window.innerWidth/2,h=a?.y??window.innerHeight/2,i=Math.hypot(Math.max(f,window.innerWidth-f),Math.max(h,window.innerHeight-h));document.startViewTransition(c).ready.then(()=>{document.documentElement.animate({clipPath:[`circle(0px at ${f}px ${h}px)`,`circle(${i}px at ${f}px ${h}px)`]},{duration:450,easing:"cubic-bezier(0.22, 0.61, 0.36, 1)",pseudoElement:"::view-transition-new(root)"})}).catch(()=>{})},[]),isDark:"dark"===a}}},4093:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,90929,23))},6954:(a,b,c)=>{"use strict";c.d(b,{R:()=>e});var d=c(48249);function e({expanded:a,onToggle:b,children:c,title:f,buttonStyle:g,chevronColor:h="var(--text-dim)",chevronStyle:i}){return(0,d.jsxs)("button",{type:"button",onClick:b,"aria-expanded":a,title:f,style:g,children:[c,(0,d.jsx)("span",{style:{display:"inline-flex",color:h,transform:a?"rotate(180deg)":"none",transition:"transform 0.15s",flexShrink:0,...i},children:(0,d.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",strokeLinejoin:"round",children:(0,d.jsx)("polyline",{points:"2 3.5 5 6.5 8 3.5"})})})]})}},7952:(a,b,c)=>{"use strict";function d(a){let b,c=[],d=/`{1,3}show-widget`{0,3}\s*(?:\n\s*`{3}(?:json|html)?\s*)?\n?/g,g=0,h=!1;for(;null!==(b=d.exec(a));){h=!0;let i=a.slice(g,b.index).trim();i&&c.push({type:"text",content:i});let j=b.index+b[0].length,k=a.indexOf("```",j),l=a.indexOf("{",j);if(-1!==l&&l<=j+200&&(-1===k||l<k)){let b=function(a,b){let c=0,d=!1,e=!1;for(let f=b;f<a.length;f++){let b=a[f];if(e){e=!1;continue}if("\\"===b&&d){e=!0;continue}if('"'===b){d=!d;continue}if(!d&&("{"===b&&c++,"}"===b)&&0==--c)return f}return -1}(a,l);if(-1===b){let b=function(a){try{let b=e(a);if(b)return b}catch{}let b=a.indexOf('"widget_code"');if(-1===b)return null;let c=a.indexOf(":",b+13);if(-1===c)return null;let d=a.indexOf('"',c+1);if(-1===d)return null;let g=a.slice(d+1);(g=g.replace(/"\s*\}\s*$/,"")).endsWith("\\")&&(g=g.slice(0,-1));let h=a.match(/"title"\s*:\s*"([^"]*?)"/)?.[1],i=f(g.replace(/\\\\/g,"\0BACKSLASH\0").replace(/\\n/g,"\n").replace(/\\t/g," ").replace(/\\r/g,"\r").replace(/\\"/g,'"').replace(/\\u([0-9a-fA-F]{4})/g,(a,b)=>String.fromCharCode(parseInt(b,16))).replace(/\x00BACKSLASH\x00/g,"\\"));return i.code.trim()?{title:h,code:i.code,showOverlay:i.truncated}:null}(a.slice(l));b&&c.push({type:"widget",...b,partial:!0}),g=a.length;break}let h=e(a.slice(l,b+1).trim());h&&c.push({type:"widget",...h});let i=b+1,j=a.slice(i,i+16).match(/^\s*\n?`{1,3}\s*/);j&&(i+=j[0].length),g=i,d.lastIndex=i;continue}if(-1!==k){let b=a.slice(j,k).trim(),f=e(b);f?c.push({type:"widget",...f}):b&&c.push({type:"text",content:b}),d.lastIndex=g=k+3}else{let b=e(a.slice(j).trim());if(b){let a=f(b.code);c.push({type:"widget",title:b.title,code:a.code,partial:!0,showOverlay:a.truncated})}g=a.length;break}}let i=a.slice(g).trim();return i&&c.push({type:"text",content:i}),!h&&0===c.length&&a.trim()&&c.push({type:"text",content:a}),c}function e(a){if(a.startsWith("{")){if(!a.endsWith("}"))return null;try{let b=JSON.parse(a),c=b.widget_code??b.code;if(c)return{title:b.title,code:c}}catch{return null}}return/<(!DOCTYPE|html|svg|canvas|script|style|div)/i.test(a)?{code:a}:null}function f(a){let b=a.lastIndexOf("<script");if(-1===b)return{code:a,truncated:!1};let c=a.slice(b);return/<script[\s\S]*?<\/script>/i.test(c)?{code:a,truncated:!1}:{code:a.slice(0,b).trim(),truncated:!0}}function g(a){return/`{1,3}show-widget/.test(a)}function h(a){return l(a)}function i(a){return l(a).replace(/\s+on[a-z]+\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>"']*)/gi,"").replace(/<script[\s\S]*?<\/script>/gi,"").replace(/<script\b[^>]*\/?>/gi,"").replace(/\s+(href|src|action)\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s>"']*))/gi,(a,b,c,d,e)=>{let f=(c??d??e??"").trim();return/^\s*(javascript|data)\s*:/i.test(f)?"":a})}c.d(b,{L$:()=>h,SR:()=>n,Xw:()=>i,aH:()=>d,f7:()=>o,qk:()=>g,sM:()=>p});let j=/<(iframe|object|embed|meta|link|base|form)[\s>][\s\S]*?<\/\1>/gi,k=/<(iframe|object|embed|meta|link|base)\b[^>]*\/?>/gi;function l(a){return a.replace(j,"").replace(k,"")}let m=["--bg","--bg-panel","--bg-hover","--bg-selected","--border","--text","--text-muted","--text-dim","--accent","--accent-hover"];function n(){if("u"<typeof document)return{};let a=getComputedStyle(document.documentElement),b={};for(let c of m){let d=a.getPropertyValue(c).trim();d&&(b[c]=d)}return b}function o(a){let b=Object.entries({"--bg":"#ffffff","--bg-panel":"#f5f5f5","--bg-hover":"#eeeeee","--bg-selected":"#e8e8e8","--border":"#e0e0e0","--text":"#1a1a1a","--text-muted":"#6b7280","--text-dim":"#9ca3af","--accent":"#2563eb","--accent-hover":"#1d4ed8",...a,"--font-mono":"ui-monospace, SFMono-Regular, Menlo, Consolas, monospace"}).map(([a,b])=>` ${a}: ${b};`).join("\n");return`
|
|
1
|
+
exports.id=4584,exports.ids=[4584],exports.modules={129:(a,b,c)=>{"use strict";c.d(b,{O7:()=>q,eR:()=>r,qb:()=>s,qn:()=>n,h5:()=>l,Xz:()=>o,Ln:()=>p});var d=c(48249),e=c(67484);function f({imageData:a,mimeType:b,width:c,height:g,replayToken:h,saveTargetKind:i,saveDefaults:j}){let[k,l]=(0,e.useState)(j??{format:"pdf",dpi:300,width:800,height:600}),[m,n]=(0,e.useState)(k.format),[o,p]=(0,e.useState)(k.dpi),[q,r]=(0,e.useState)(k.width),[s,t]=(0,e.useState)(k.height),[u,v]=(0,e.useState)("idle"),[w,x]=(0,e.useState)(null),y=h&&"object"===i,z=async()=>{if(h){v("saving"),x(null);try{let a=await fetch("/api/plot-kernels/save",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({replayToken:h,format:m,dpi:o,width:q,height:s})});if(410===a.status)return void v("expired");if(!a.ok){let b=await a.json().catch(()=>({}));throw Error(b.error??`HTTP ${a.status}`)}v("saved")}catch(a){v("error"),x(a instanceof Error?a.message:String(a))}}};return(0,d.jsxs)("div",{style:{position:"relative",display:"inline-block",maxWidth:"100%"},children:[(0,d.jsx)("img",{src:`data:${b};base64,${a}`,alt:"rendered plot",style:{maxWidth:"100%",height:"auto",borderRadius:6,border:"1px solid var(--border)"},width:c??void 0,height:g??void 0}),y&&(0,d.jsxs)("div",{style:{position:"absolute",bottom:0,left:0,right:0,background:"rgba(0,0,0,0.65)",padding:"6px 10px",display:"flex",alignItems:"center",gap:8,flexWrap:"wrap",borderRadius:"0 0 6px 6px",fontSize:11,color:"#e5e7eb",opacity:0,transition:"opacity 0.15s"},className:"workbench-save-bar",onMouseEnter:a=>{a.currentTarget.style.opacity="1"},children:["saved"===u?(0,d.jsx)("span",{style:{color:"#34d399",fontWeight:600},children:"✓ Saved"}):"expired"===u?(0,d.jsx)("span",{style:{color:"#fbbf24"},children:"Save session expired. Re-render plot."}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("select",{value:m,onChange:a=>n(a.target.value),style:{background:"rgba(255,255,255,0.12)",color:"#e5e7eb",border:"1px solid rgba(255,255,255,0.2)",borderRadius:4,padding:"2px 4px",fontSize:11,height:24},children:[(0,d.jsx)("option",{value:"pdf",children:"PDF"}),(0,d.jsx)("option",{value:"png",children:"PNG"}),(0,d.jsx)("option",{value:"svg",children:"SVG"})]}),(0,d.jsxs)("label",{style:{display:"flex",alignItems:"center",gap:3},children:["DPI",(0,d.jsx)("input",{type:"number",value:o,onChange:a=>p(Number(a.target.value)||300),min:72,max:1200,style:{width:50,height:24,padding:"2px 4px",fontSize:11,background:"rgba(255,255,255,0.12)",color:"#e5e7eb",border:"1px solid rgba(255,255,255,0.2)",borderRadius:4}})]}),(0,d.jsxs)("label",{style:{display:"flex",alignItems:"center",gap:3},children:["W",(0,d.jsx)("input",{type:"number",value:q,onChange:a=>r(Number(a.target.value)||800),min:100,max:8e3,style:{width:55,height:24,padding:"2px 4px",fontSize:11,background:"rgba(255,255,255,0.12)",color:"#e5e7eb",border:"1px solid rgba(255,255,255,0.2)",borderRadius:4}})]}),(0,d.jsxs)("label",{style:{display:"flex",alignItems:"center",gap:3},children:["H",(0,d.jsx)("input",{type:"number",value:s,onChange:a=>t(Number(a.target.value)||600),min:100,max:8e3,style:{width:55,height:24,padding:"2px 4px",fontSize:11,background:"rgba(255,255,255,0.12)",color:"#e5e7eb",border:"1px solid rgba(255,255,255,0.2)",borderRadius:4}})]}),(0,d.jsx)("button",{type:"button",onClick:z,disabled:"saving"===u,style:{height:24,padding:"0 12px",borderRadius:4,background:"rgba(37,99,235,0.4)",border:"1px solid rgba(37,99,235,0.6)",color:"#fff",cursor:"pointer",fontSize:11,fontWeight:600,opacity:"saving"===u?.6:1},children:"saving"===u?"Saving...":"Save"})]}),"error"===u&&w&&(0,d.jsx)("span",{style:{color:"#f87171",marginLeft:4},children:w})]})]})}var g=c(1453),h=c(31343);let i=/(?:file:\/\/)?(?:(?:[A-Za-z]:[\\/])|\/|~\/|\.{1,2}[\\/]|[A-Za-z0-9_.-]+[\\/])[^`"'<>|\s{}\[\]]+?\.(?:png|jpe?g|webp|gif|svg|bmp|avif|pdf)(?=$|[\s`"'<>|{}\[\]),.;:!?])/gi,j=/\.(?:png|jpe?g|webp|gif|svg|bmp|avif)$/i,k=/\.pdf$/i;function l(a){return a.path?m(a.path):a.source?.type==="base64"&&a.source.data?`data:${a.source.media_type??"image/png"};base64,${a.source.data}`:a.source?.type==="url"&&a.source.url?a.source.url:a.data?`data:${a.mimeType??"image/png"};base64,${a.data}`:null}function m(a){return`/api/files/${(0,h.HG)(a)}?type=read`}function n(a,b){if(!a)return[];let c=[],d=new Set,e=new Set;for(let b of a.matchAll(/!\[[^\]]*]\(([^)]+)\)/g))b[1]&&e.add(b[1].trim());let f=a=>{!a||d.has(a)||c.length>=24||(d.add(a),c.push(a))};for(let c of(i.lastIndex=0,a.matchAll(i))){let d=c[0];if(/^[a-z][a-z\d+.-]*:\/\//i.test(d)&&!/^file:\/\//i.test(d))continue;let g=a.slice(Math.max(0,c.index-12),c.index);if(/[A-Za-z][A-Za-z\d+.-]*:\/?$/.test(g)||d.startsWith("//")||e.has(d))continue;let i=(0,h.HR)(d,b);i&&(j.test(i)?f(i):k.test(i)&&f(i.replace(k,".png")))}return c}function o(a){let b=new Set,c=[];for(let d of a)b.has(d)||(b.add(d),c.push(d));return c}function p(a,b){return a&&b?a.replace(/\n?\[Current model does not support images\. The image will be omitted from this request\.\]\s*/g,"").trim():a}function q({images:a,maxHeight:b=360}){return 0===a.length?null:(0,d.jsx)("div",{style:{display:"grid",gridTemplateColumns:1===a.length?"minmax(0, 1fr)":"repeat(auto-fit, minmax(180px, 1fr))",gap:8,minWidth:0},children:a.map((a,c)=>{let e=l(a);return e?(0,d.jsx)("a",{href:e,target:"_blank",rel:"noreferrer",title:"Open image",style:{display:"block",minWidth:0,border:"1px solid var(--border)",borderRadius:6,overflow:"hidden",background:"var(--bg)"},children:(0,d.jsx)("img",{src:e,alt:"",loading:"lazy",style:{display:"block",width:"100%",maxHeight:b,objectFit:"contain"}})},c):null})})}function r({imagePaths:a,maxHeight:b=360}){let[c,f]=(0,e.useState)(()=>new Set),g=(0,e.useRef)(new Map);a.join("\0");let i=a.filter(a=>!c.has(a));return 0===i.length?null:(0,d.jsx)("div",{style:{display:"grid",gridTemplateColumns:1===i.length?"minmax(0, 1fr)":"repeat(auto-fit, minmax(180px, 1fr))",gap:8,minWidth:0},children:i.map(a=>{let c=m(a),e=(0,h.WP)(a);return(0,d.jsxs)("a",{href:c,target:"_blank",rel:"noreferrer",title:a,style:{display:"block",minWidth:0,border:"1px solid var(--border)",borderRadius:6,overflow:"hidden",background:"var(--bg)"},children:[(0,d.jsx)("img",{src:c,alt:e,loading:"lazy",onError:()=>{g.current.set(a,(g.current.get(a)??0)+1),f(b=>{let c=new Set(b);return c.add(a),c})},style:{display:"block",width:"100%",maxHeight:b,objectFit:"contain"}}),(0,d.jsx)("div",{style:{padding:"4px 6px",borderTop:"1px solid var(--border)",color:"var(--text-dim)",fontSize:10,fontFamily:"var(--font-mono)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e})]},a)})})}function s({text:a,isEmpty:b,isError:c,images:e,imagePaths:h,toolDetails:i}){let j=!b||a.trim().length>0;return(0,d.jsxs)("div",{style:{borderTop:`1px solid ${c?"rgba(248,113,113,0.3)":"rgba(34,197,94,0.15)"}`,background:c?"rgba(248,113,113,0.04)":"var(--bg-subtle)"},children:[e.length>0&&(0,d.jsx)("div",{style:{padding:"10px 10px 0",background:"var(--bg)"},children:i?.schema==="kernel-plot.render.v1"?(0,d.jsx)(f,{imageData:e[0].data??e[0].source?.data??"",mimeType:e[0].mimeType??e[0].source?.media_type??"image/png",width:null,height:null,replayToken:i.replayToken??null,saveTargetKind:i.saveTargetKind??null}):(0,d.jsx)(q,{images:e})}),h.length>0&&(0,d.jsx)("div",{style:{padding:"10px 10px 0",background:"var(--bg)"},children:(0,d.jsx)(r,{imagePaths:h})}),j&&(0,d.jsx)(g.m,{text:b?"(no output)":a,maxHeight:400,collapsible:!0,textColor:c?"#f87171":b?"var(--text-dim)":"var(--text-muted)",background:"var(--bg)",empty:b})]})}},1453:(a,b,c)=>{"use strict";c.d(b,{m:()=>i});var d=c(48249),e=c(40805),f=c.n(e);let g=/\x1B\[[0-?]*[ -/]*[@-~]/;var h=c(19581);function i({text:a,maxHeight:b=400,collapsible:c=!0,textColor:e="var(--text-muted)",background:j="var(--bg)",empty:k=!1}){let l=a.replace(/\r\n/g,"\n").replace(/\r/g,"\n"),m=l.split("\n"),n=g.test(a)?(0,d.jsx)("div",{style:{fontFamily:"var(--font-mono)",fontSize:12,lineHeight:1.55,whiteSpace:"pre-wrap",wordBreak:"break-word",overflowX:"auto",padding:"8px 10px",maxHeight:c?void 0:b,overflowY:c?void 0:"auto",background:j,color:e,opacity:k?.6:1,fontStyle:k?"italic":"normal"},children:(0,d.jsx)(f(),{children:a})}):(0,d.jsx)("pre",{style:{margin:0,padding:"8px 10px",fontSize:12,lineHeight:1.5,overflowX:"auto",maxHeight:c?void 0:b,overflowY:c?void 0:"auto",background:j,whiteSpace:"pre-wrap",wordBreak:"break-all",fontFamily:"var(--font-mono)",opacity:k?.6:1,fontStyle:k?"italic":"normal",color:e},children:l});return!c||m.length<=20?(0,d.jsx)(d.Fragment,{children:n}):(0,d.jsx)(h.oG,{totalLines:m.length,expandedMaxHeight:b,overlayBackground:j,footerBackground:j,children:n})}},2857:(a,b,c)=>{"use strict";c.d(b,{D:()=>i});var d=c(67484);let e=new Set;function f(a){return e.add(a),()=>{e.delete(a)}}function g(){return"u"<typeof document?"light":document.documentElement.classList.contains("dark")?"dark":"light"}function h(){return"light"}function i(){let a=(0,d.useSyncExternalStore)(f,g,h);return{theme:a,toggleTheme:(0,d.useCallback)(a=>{let b="dark"===g()?"light":"dark",c=()=>{"dark"===b?document.documentElement.classList.add("dark"):document.documentElement.classList.remove("dark");try{localStorage.setItem("pi-theme",b)}catch{}e.forEach(a=>a())},d=window.matchMedia?.("(prefers-reduced-motion: reduce)").matches;if("function"!=typeof document.startViewTransition||d)return void c();let f=a?.x??window.innerWidth/2,h=a?.y??window.innerHeight/2,i=Math.hypot(Math.max(f,window.innerWidth-f),Math.max(h,window.innerHeight-h));document.startViewTransition(c).ready.then(()=>{document.documentElement.animate({clipPath:[`circle(0px at ${f}px ${h}px)`,`circle(${i}px at ${f}px ${h}px)`]},{duration:450,easing:"cubic-bezier(0.22, 0.61, 0.36, 1)",pseudoElement:"::view-transition-new(root)"})}).catch(()=>{})},[]),isDark:"dark"===a}}},4093:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,90929,23))},6954:(a,b,c)=>{"use strict";c.d(b,{R:()=>e});var d=c(48249);function e({expanded:a,onToggle:b,children:c,title:f,buttonStyle:g,chevronColor:h="var(--text-dim)",chevronStyle:i}){return(0,d.jsxs)("button",{type:"button",onClick:b,"aria-expanded":a,title:f,style:g,children:[c,(0,d.jsx)("span",{style:{display:"inline-flex",color:h,transform:a?"rotate(180deg)":"none",transition:"transform 0.15s",flexShrink:0,...i},children:(0,d.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",strokeLinejoin:"round",children:(0,d.jsx)("polyline",{points:"2 3.5 5 6.5 8 3.5"})})})]})}},7952:(a,b,c)=>{"use strict";function d(a){let b,c=[],d=/(^|\n)\s*`{1,3}show-widget`{0,3}\s*(?:\n\s*`{3}(?:json|html)?\s*)?\n?/g,g=0,h=!1;for(;null!==(b=d.exec(a));){h=!0;let i=a.slice(g,b.index).trim();i&&c.push({type:"text",content:i});let j=b.index+b[0].length,k=a.indexOf("```",j),l=a.indexOf("{",j);if(-1!==l&&l<=j+200&&(-1===k||l<k)){let b=function(a,b){let c=0,d=!1,e=!1;for(let f=b;f<a.length;f++){let b=a[f];if(e){e=!1;continue}if("\\"===b&&d){e=!0;continue}if('"'===b){d=!d;continue}if(!d&&("{"===b&&c++,"}"===b)&&0==--c)return f}return -1}(a,l);if(-1===b){let b=function(a){try{let b=e(a);if(b)return b}catch{}let b=a.indexOf('"widget_code"');if(-1===b)return null;let c=a.indexOf(":",b+13);if(-1===c)return null;let d=a.indexOf('"',c+1);if(-1===d)return null;let g=a.slice(d+1);(g=g.replace(/"\s*\}\s*$/,"")).endsWith("\\")&&(g=g.slice(0,-1));let h=a.match(/"title"\s*:\s*"([^"]*?)"/)?.[1],i=f(g.replace(/\\\\/g,"\0BACKSLASH\0").replace(/\\n/g,"\n").replace(/\\t/g," ").replace(/\\r/g,"\r").replace(/\\"/g,'"').replace(/\\u([0-9a-fA-F]{4})/g,(a,b)=>String.fromCharCode(parseInt(b,16))).replace(/\x00BACKSLASH\x00/g,"\\"));return i.code.trim()?{title:h,code:i.code,showOverlay:i.truncated}:null}(a.slice(l));b&&c.push({type:"widget",...b,partial:!0}),g=a.length;break}let h=e(a.slice(l,b+1).trim());h&&c.push({type:"widget",...h});let i=b+1,j=a.slice(i,i+16).match(/^\s*\n?`{1,3}\s*/);j&&(i+=j[0].length),g=i,d.lastIndex=i;continue}if(-1!==k){let b=a.slice(j,k).trim(),f=e(b);f?c.push({type:"widget",...f}):b&&c.push({type:"text",content:b}),d.lastIndex=g=k+3}else{let b=e(a.slice(j).trim());if(b){let a=f(b.code);c.push({type:"widget",title:b.title,code:a.code,partial:!0,showOverlay:a.truncated})}g=a.length;break}}let i=a.slice(g).trim();return i&&c.push({type:"text",content:i}),!h&&0===c.length&&a.trim()&&c.push({type:"text",content:a}),c}function e(a){if(a.startsWith("{")){if(!a.endsWith("}"))return null;try{let b=JSON.parse(a),c=b.widget_code??b.code;if(c)return{title:b.title,code:c}}catch{}let b=function(a){try{return JSON.parse(a)}catch{}let b="",c=!1,d=!1,e=!1,f=!1,g=[],h=!1;for(let i=0;i<a.length;i++){let j=a[i];if(c){if(d){b+=j,d=!1;continue}if("\\"===j){b+=j,d=!0;continue}if('"'===j){let d=a.slice(i+1),k=/^\s*/.exec(d)?.[0]??"",l=d[k.length]??"",m=d.slice(k.length);e?":"===l?(b+=j,c=!1,h=!1,f=!1):b+='\\"':""===l||","===l||"}"===l||"]"===l?(b+=j,c=!1,h=!0,f=!1):/^"[\s\S]{0,100}?"\s*:/.test(m)?(b+=j+",",c=!1,h=!1,f=!0===g[g.length-1]):b+='\\"';continue}if("\n"===j||"\r"===j){b+="\\n";continue}if(" "===j){b+="\\t";continue}if(32>j.charCodeAt(0)){b+="\\u"+j.charCodeAt(0).toString(16).padStart(4,"0");continue}b+=j;continue}if(d){b+=j,d=!1;continue}if("\\"===j){b+=j,d=!0;continue}if('"'===j){h&&(b+=",",h=!1,f=!0===g[g.length-1]),e=f,f=!1,c=!0,b+=j;continue}if("{"===j||"["===j){h&&(b+=","),g.push("{"===j),f="{"===j,h=!1,b+=j;continue}if("}"===j||"]"===j){g.pop(),f=!1,h=!0,b+=j;continue}if(","===j){f=!0===g[g.length-1],h=!1,b+=j;continue}if(":"===j){h=!1,f=!1,b+=j;continue}if(/[0-9tfn-]/.test(j)){h&&(b+=","),b+=j;let c=a[i+1]??"";h=/[\s,}\]"'\\]/.test(c);continue}b+=j}try{return JSON.parse(b)}catch{return null}}(a);if(b){let a=b.widget_code??b.code;if("string"==typeof a&&a.trim())return{title:"string"==typeof b.title?b.title:void 0,code:a}}return null}return/^\s*<[a-zA-Z!][^>]*>/.test(a)||/<(!DOCTYPE|html|svg|canvas|script|style|div)/i.test(a)?{code:a}:null}function f(a){let b=a.lastIndexOf("<script");if(-1===b)return{code:a,truncated:!1};let c=a.slice(b);return/<script[\s\S]*?<\/script>/i.test(c)?{code:a,truncated:!1}:{code:a.slice(0,b).trim(),truncated:!0}}function g(a){return/`{1,3}show-widget/.test(a)}function h(a){return l(a)}function i(a){return l(a).replace(/\s+on[a-z]+\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>"']*)/gi,"").replace(/<script[\s\S]*?<\/script>/gi,"").replace(/<script\b[^>]*\/?>/gi,"").replace(/\s+(href|src|action)\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s>"']*))/gi,(a,b,c,d,e)=>{let f=(c??d??e??"").trim();return/^\s*(javascript|data)\s*:/i.test(f)?"":a})}c.d(b,{L$:()=>h,SR:()=>n,Xw:()=>i,aH:()=>d,f7:()=>o,qk:()=>g,sM:()=>p});let j=/<(iframe|object|embed|meta|link|base|form)[\s>][\s\S]*?<\/\1>/gi,k=/<(iframe|object|embed|meta|link|base)\b[^>]*\/?>/gi;function l(a){return a.replace(j,"").replace(k,"")}let m=["--bg","--bg-panel","--bg-hover","--bg-selected","--border","--text","--text-muted","--text-dim","--accent","--accent-hover"];function n(){if("u"<typeof document)return{};let a=getComputedStyle(document.documentElement),b={};for(let c of m){let d=a.getPropertyValue(c).trim();d&&(b[c]=d)}return b}function o(a){let b=Object.entries({"--bg":"#ffffff","--bg-panel":"#f5f5f5","--bg-hover":"#eeeeee","--bg-selected":"#e8e8e8","--border":"#e0e0e0","--text":"#1a1a1a","--text-muted":"#6b7280","--text-dim":"#9ca3af","--accent":"#2563eb","--accent-hover":"#1d4ed8",...a,"--font-mono":"ui-monospace, SFMono-Regular, Menlo, Consolas, monospace"}).map(([a,b])=>` ${a}: ${b};`).join("\n");return`
|
|
2
2
|
:root {
|
|
3
3
|
${b}
|
|
4
4
|
}
|
|
@@ -36,7 +36,7 @@ for (.name in sort(ls(envir=.GlobalEnv))) {
|
|
|
36
36
|
if (!is.null(.names) && length(.names) > 0) .attrs <- c(.attrs, paste0("names=", paste(head(.names, 20), collapse=",")))
|
|
37
37
|
cat(.name, "\\t", .class, "\\t", .shape, "\\t", paste(.attrs, collapse=" ; "), "\\n", sep="")
|
|
38
38
|
}
|
|
39
|
-
cat("WORKBENCH_INSPECT_END\\n")`),title:"Inspect live workbench kernel state",timeoutMs:b.timeoutMs??15e3,signal:c});return{content:[{type:"text",text:function(a){let b=s(a.stdout),c=[`kernel_plot_inspect ${a.status}`,`run_id: ${a.runId}`,`runtime: ${a.runtime}`,`objects: ${b.length}`];for(let a of b.slice(0,80))c.push(`- ${a.name}: ${a.type}${a.shape?` (${a.shape})`:""}${a.attrs?` — ${a.attrs}`:""}`);let d=p(a.stderr,1200).trim();return d&&c.push("stderr:",d),a.error&&c.push(`error: ${a.error}`),c.join("\n")}(h)}],details:{schema:"kernel-plot.inspect.v1",kind:"inspect",run:{runId:h.runId,status:h.status,language:h.language,runtime:h.runtime,title:h.title},objects:s(h.stdout),stderrPreview:p(h.stderr),error:h.error}}}})),a.registerTool((0,f.defineTool)({name:"kernel_plot_stop",label:"Workbench Stop",description:"Stop the current Pi session's warm Workbench kernel for one language or all languages.",promptSnippet:"Stop warm R/Python Workbench kernels and release their memory.",promptGuidelines:u,executionMode:"sequential",parameters:e.Type.Object({language:e.Type.Optional(e.Type.Union([e.Type.Literal("python"),e.Type.Literal("r")]))}),async execute(a,b,c,d,e){let f=await m(),g=n(e);return await f.stopSession({ownerId:g,language:b.language}),{content:[{type:"text",text:`kernel_plot_stop stopped ${b.language??"all languages"}`}],details:{schema:"kernel-plot.result.v1",kind:"stop",stopped:{ownerId:g,language:b.language},artifacts:[],nextAction:"Use kernel_plot_run to start a fresh warm kernel when needed."}}}})),a.registerTool((0,f.defineTool)({name:"kernel_plot_artifacts",label:"Workbench Artifacts",description:"List recent archived Workbench artifacts for the current Pi session.",promptSnippet:"List recent R/Python Workbench artifact paths for this session.",promptGuidelines:u,parameters:e.Type.Object({limit:e.Type.Optional(e.Type.Number({description:"Maximum number of recent artifacts to list."}))}),async execute(a,b,c,d,e){let f=await m(),g=n(e),h=await f.listArtifacts({cwd:e.cwd,ownerId:g,limit:b.limit});return{content:[{type:"text",text:["kernel_plot_artifacts",...q(h)].join("\n")}],details:{schema:"kernel-plot.result.v1",kind:"artifacts",ownerId:g,artifacts:h,nextAction:"Open or inspect the listed artifact paths, or continue plotting with kernel_plot_run."}}}})),a.on("session_shutdown",async(a,b)=>{let c=await m();await c.stopSession({ownerId:n(b)}).catch(a=>{b.ui.notify(`kernel plot cleanup failed: ${a instanceof Error?a.message:String(a)}`,"warning")})})}d()}catch(a){d(a)}})},7048:(a,b,c)=>{"use strict";c.d(b,{Y:()=>j});var d=c(29021),e=c(21820),f=c(33873);let g="pi-subagents";function h(a){try{return JSON.parse((0,d.readFileSync)(a,"utf-8"))}catch{return null}}function i(a){return"string"==typeof a?a:a&&"object"==typeof a?"string"==typeof a.source?a.source:"string"==typeof a.name?a.name:"string"==typeof a.package?a.package:null:null}function j(a=process.env.PI_CODING_AGENT_DIR??(0,f.join)((0,e.homedir)(),".pi","agent")){let b=(0,f.join)(a,"npm","node_modules",g),c=(0,f.join)(b,"package.json"),k=h(c),l=(0,d.existsSync)(c),m=h((0,f.join)(a,"settings.json")),n=(Array.isArray(m?.packages)?m.packages:[]).map(i).some(a=>a===g||a===`npm:${g}`||a?.endsWith(`/${g}`));return{installed:l,configured:n,ready:l&&n,packageName:g,packagePath:b,version:"string"==typeof k?.version?k.version:void 0,installCommand:"pi install npm:pi-subagents"}}},9774:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{cV:()=>k,p6:()=>l});var e=c(29021),f=c(33873),g=c(75430),h=a([g]);g=(h.then?(await h)():h)[0];let m={generativeUI:!0,plotIdleTimeoutMs:1728e5,saveFormat:"pdf",saveDpi:300,saveWidth:800,saveHeight:600};function i(){return(0,f.join)((0,g.getAgentDir)(),"annovibe-settings.json")}function j(a){if(!a||"object"!=typeof a)return{...m};let b="number"==typeof a.plotIdleTimeoutMs&&Number.isFinite(a.plotIdleTimeoutMs)&&a.plotIdleTimeoutMs>=0?Math.min(Math.round(a.plotIdleTimeoutMs),2592e6):m.plotIdleTimeoutMs;return{generativeUI:"boolean"==typeof a.generativeUI?a.generativeUI:m.generativeUI,plotIdleTimeoutMs:b,saveFormat:"png"===a.saveFormat||"svg"===a.saveFormat?a.saveFormat:"pdf",saveDpi:"number"==typeof a.saveDpi&&Number.isFinite(a.saveDpi)&&a.saveDpi>=72&&a.saveDpi<=1200?a.saveDpi:m.saveDpi,saveWidth:"number"==typeof a.saveWidth&&Number.isFinite(a.saveWidth)&&a.saveWidth>=100&&a.saveWidth<=8e3?a.saveWidth:m.saveWidth,saveHeight:"number"==typeof a.saveHeight&&Number.isFinite(a.saveHeight)&&a.saveHeight>=100&&a.saveHeight<=8e3?a.saveHeight:m.saveHeight}}function k(){let a=i(),b=(0,e.existsSync)(a)?a:(0,f.join)((0,g.getAgentDir)(),"pidex-settings.json");if(!(0,e.existsSync)(b))return{...m};try{return j(JSON.parse((0,e.readFileSync)(b,"utf8")))}catch{return{...m}}}function l(a){let b=j({...k(),...a}),c=i(),d=(0,f.dirname)(c);return(0,e.existsSync)(d)||(0,e.mkdirSync)(d,{recursive:!0}),(0,e.writeFileSync)(c,JSON.stringify(b,null,2),"utf8"),b}d()}catch(a){d(a)}})},9805:(a,b,c)=>{"use strict";c.d(b,{FE:()=>i,J:()=>h,zN:()=>j});let d='<widget-capability>\nYou can create interactive visualizations using the `show-widget` code fence.\n\nUse `show-widget` by default when visual output is the primary answer. This includes charts, diagrams, flowcharts, dashboards, UI prototypes, mockups, SVG illustrations, icons, logos, infographics, timelines, hierarchies, comparison views, and visual explanations.\n\nFor diagrams, flowcharts, architecture maps, sequence-style explanations, and Markdown-to-diagram requests, prefer `show-widget` with SVG/HTML over Mermaid. Widgets stream more reliably in this UI. Use Mermaid only when the user explicitly asks for Mermaid source, raw Mermaid, raw Markdown, or a saved Mermaid/Markdown file.\n\nFormat:\n```show-widget\n{"title":"Human-readable title","widget_code":"<raw HTML/SVG string>"}\n```\n\nDetailed specs:\nWhen a `<widget-guidelines>` block is present, follow it. It contains the module-specific design rules for the current request.\n\nRequired rules:\n1. `widget_code` is a JSON string: escape quotes and newlines. Always close the JSON object and fence.\n2. Do not include DOCTYPE, html, head, body, iframe, object, embed, form, link, base, or meta tags.\n3. Keep outer backgrounds transparent. The host supplies theme variables.\n4. Use a single concise widget per fence. For multiple widgets, interleave prose and use a separate `show-widget` fence for each widget.\n5. Streaming order: SVG puts `<defs>` before visible shapes; HTML uses `<style>`, then visible markup, then `<script>` last.\n6. Prefer responsive SVG for static visuals and small HTML widgets for controls.\n7. SVG widgets use `<svg width="100%" viewBox="0 0 680 H">` and keep all content inside the viewBox.\n8. Interactive controls must visibly update the output. For Chart.js, call `chart.update()` after changes.\n9. Clickable drill-down actions call `window.__widgetSendMessage("short request")`.\n10. Cross-widget filters publish with `window.__widgetPublish("topic", { key: "value" })`; other widgets listen for `widget-filter`.\n11. Allowed CDN hosts: `cdnjs.cloudflare.com`, `cdn.jsdelivr.net`, `unpkg.com`, `esm.sh`.\n12. CDN scripts must use an `onload` initializer plus an `if (window.Lib) init();` fallback.\n13. Use `min-height` instead of fixed outer `height` to prevent clipping.\n14. Title should be human-readable in the user\'s language.\n15. Put explanatory prose outside the code fence.\n16. Do not output raw ```svg, ```html, or plain Mermaid for visual answers unless the user explicitly asks for source code, raw Markdown, raw Mermaid, or a saved file.\n17. Do not convert Markdown outlines into Mermaid by default. Render them as a `show-widget` diagram unless Mermaid/source text is explicitly requested.\n</widget-capability>',e=/\n?\s*<widget-capability>[\s\S]*?<\/widget-capability>\s*/g,f=/\n?\s*<visualization_harness>[\s\S]*?<\/visualization_harness>\s*/g,g=/\n?\s*<widget-guidelines\b[^>]*>[\s\S]*?<\/widget-guidelines>\s*/g;function h(a){let b=a.toLowerCase();return b.includes("show-widget")&&(b.includes("# visualization harness")||b.includes("## when to visualize")||b.includes("widget format"))}function i(a){return a.replace(e,"\n").replace(f,"\n").replace(g,"\n").replace(/\n{3,}/g,"\n\n").trim()}function j(a){return a.includes("<widget-capability>")?a:a.trim()?`${a.trimEnd()}
|
|
39
|
+
cat("WORKBENCH_INSPECT_END\\n")`),title:"Inspect live workbench kernel state",timeoutMs:b.timeoutMs??15e3,signal:c});return{content:[{type:"text",text:function(a){let b=s(a.stdout),c=[`kernel_plot_inspect ${a.status}`,`run_id: ${a.runId}`,`runtime: ${a.runtime}`,`objects: ${b.length}`];for(let a of b.slice(0,80))c.push(`- ${a.name}: ${a.type}${a.shape?` (${a.shape})`:""}${a.attrs?` — ${a.attrs}`:""}`);let d=p(a.stderr,1200).trim();return d&&c.push("stderr:",d),a.error&&c.push(`error: ${a.error}`),c.join("\n")}(h)}],details:{schema:"kernel-plot.inspect.v1",kind:"inspect",run:{runId:h.runId,status:h.status,language:h.language,runtime:h.runtime,title:h.title},objects:s(h.stdout),stderrPreview:p(h.stderr),error:h.error}}}})),a.registerTool((0,f.defineTool)({name:"kernel_plot_stop",label:"Workbench Stop",description:"Stop the current Pi session's warm Workbench kernel for one language or all languages.",promptSnippet:"Stop warm R/Python Workbench kernels and release their memory.",promptGuidelines:u,executionMode:"sequential",parameters:e.Type.Object({language:e.Type.Optional(e.Type.Union([e.Type.Literal("python"),e.Type.Literal("r")]))}),async execute(a,b,c,d,e){let f=await m(),g=n(e);return await f.stopSession({ownerId:g,language:b.language}),{content:[{type:"text",text:`kernel_plot_stop stopped ${b.language??"all languages"}`}],details:{schema:"kernel-plot.result.v1",kind:"stop",stopped:{ownerId:g,language:b.language},artifacts:[],nextAction:"Use kernel_plot_run to start a fresh warm kernel when needed."}}}})),a.registerTool((0,f.defineTool)({name:"kernel_plot_artifacts",label:"Workbench Artifacts",description:"List recent archived Workbench artifacts for the current Pi session.",promptSnippet:"List recent R/Python Workbench artifact paths for this session.",promptGuidelines:u,parameters:e.Type.Object({limit:e.Type.Optional(e.Type.Number({description:"Maximum number of recent artifacts to list."}))}),async execute(a,b,c,d,e){let f=await m(),g=n(e),h=await f.listArtifacts({cwd:e.cwd,ownerId:g,limit:b.limit});return{content:[{type:"text",text:["kernel_plot_artifacts",...q(h)].join("\n")}],details:{schema:"kernel-plot.result.v1",kind:"artifacts",ownerId:g,artifacts:h,nextAction:"Open or inspect the listed artifact paths, or continue plotting with kernel_plot_run."}}}})),a.on("session_shutdown",async(a,b)=>{let c=await m();await c.stopSession({ownerId:n(b)}).catch(a=>{b.ui.notify(`kernel plot cleanup failed: ${a instanceof Error?a.message:String(a)}`,"warning")})})}d()}catch(a){d(a)}})},7048:(a,b,c)=>{"use strict";c.d(b,{Y:()=>j});var d=c(29021),e=c(21820),f=c(33873);let g="pi-subagents";function h(a){try{return JSON.parse((0,d.readFileSync)(a,"utf-8"))}catch{return null}}function i(a){return"string"==typeof a?a:a&&"object"==typeof a?"string"==typeof a.source?a.source:"string"==typeof a.name?a.name:"string"==typeof a.package?a.package:null:null}function j(a=process.env.PI_CODING_AGENT_DIR??(0,f.join)((0,e.homedir)(),".pi","agent")){let b=(0,f.join)(a,"npm","node_modules",g),c=(0,f.join)(b,"package.json"),k=h(c),l=(0,d.existsSync)(c),m=h((0,f.join)(a,"settings.json")),n=(Array.isArray(m?.packages)?m.packages:[]).map(i).some(a=>a===g||a===`npm:${g}`||a?.endsWith(`/${g}`));return{installed:l,configured:n,ready:l&&n,packageName:g,packagePath:b,version:"string"==typeof k?.version?k.version:void 0,installCommand:"pi install npm:pi-subagents"}}},9774:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{cV:()=>k,p6:()=>l});var e=c(29021),f=c(33873),g=c(75430),h=a([g]);g=(h.then?(await h)():h)[0];let m={generativeUI:!0,plotIdleTimeoutMs:1728e5,saveFormat:"pdf",saveDpi:300,saveWidth:800,saveHeight:600};function i(){return(0,f.join)((0,g.getAgentDir)(),"annovibe-settings.json")}function j(a){if(!a||"object"!=typeof a)return{...m};let b="number"==typeof a.plotIdleTimeoutMs&&Number.isFinite(a.plotIdleTimeoutMs)&&a.plotIdleTimeoutMs>=0?Math.min(Math.round(a.plotIdleTimeoutMs),2592e6):m.plotIdleTimeoutMs;return{generativeUI:"boolean"==typeof a.generativeUI?a.generativeUI:m.generativeUI,plotIdleTimeoutMs:b,saveFormat:"png"===a.saveFormat||"svg"===a.saveFormat?a.saveFormat:"pdf",saveDpi:"number"==typeof a.saveDpi&&Number.isFinite(a.saveDpi)&&a.saveDpi>=72&&a.saveDpi<=1200?a.saveDpi:m.saveDpi,saveWidth:"number"==typeof a.saveWidth&&Number.isFinite(a.saveWidth)&&a.saveWidth>=100&&a.saveWidth<=8e3?a.saveWidth:m.saveWidth,saveHeight:"number"==typeof a.saveHeight&&Number.isFinite(a.saveHeight)&&a.saveHeight>=100&&a.saveHeight<=8e3?a.saveHeight:m.saveHeight}}function k(){let a=i(),b=(0,e.existsSync)(a)?a:(0,f.join)((0,g.getAgentDir)(),"pidex-settings.json");if(!(0,e.existsSync)(b))return{...m};try{return j(JSON.parse((0,e.readFileSync)(b,"utf8")))}catch{return{...m}}}function l(a){let b=j({...k(),...a}),c=i(),d=(0,f.dirname)(c);return(0,e.existsSync)(d)||(0,e.mkdirSync)(d,{recursive:!0}),(0,e.writeFileSync)(c,JSON.stringify(b,null,2),"utf8"),b}d()}catch(a){d(a)}})},9805:(a,b,c)=>{"use strict";c.d(b,{FE:()=>i,J:()=>h,zN:()=>j});let d='<widget-capability>\nYou can create interactive visualizations using the `show-widget` code fence.\n\nUse `show-widget` by default when visual output is the primary answer. This includes charts, diagrams, flowcharts, dashboards, UI prototypes, mockups, SVG illustrations, icons, logos, infographics, timelines, hierarchies, comparison views, and visual explanations.\n\nFor diagrams, flowcharts, architecture maps, sequence-style explanations, and Markdown-to-diagram requests, prefer `show-widget` with SVG/HTML over Mermaid. Widgets stream more reliably in this UI. Use Mermaid only when the user explicitly asks for Mermaid source, raw Mermaid, raw Markdown, or a saved Mermaid/Markdown file.\n\nFormat:\n```show-widget\n{"title":"Human-readable title","widget_code":"<raw HTML/SVG string>"}\n```\n\nDetailed specs:\nWhen a `<widget-guidelines>` block is present, follow it. It contains the module-specific design rules for the current request.\n\nRequired rules:\n1. `widget_code` is a JSON string: escape quotes and newlines. Always close the JSON object and fence.\n - ✅ Correct: {"title":"T","widget_code":"<div>\\n <p>hi</p>\\n</div>"}\n - ❌ Wrong — raw newlines inside the string are invalid JSON (write \\n instead):\n {"title":"T","widget_code":"<div>\n <p>hi</p>\n </div>"}\n - ❌ Wrong — bare quotes inside HTML/SVG text must be escaped as \\":\n {"title":"T","widget_code":"<svg><text>say "hi"</text></svg>"}\n - ❌ Wrong — only the keys `title` and `widget_code` are allowed; never add extra keys like `widget_code2`, and always put a comma between members:\n {"title":"T","widget_code":"<svg/>" "widget_code2":""}\n - The entire object must be valid JSON, ending with a closing `}` before the closing fence. If the widget is large, write compact one-line JSON rather than pretty-printing with raw newlines.\n2. Do not include DOCTYPE, html, head, body, iframe, object, embed, form, link, base, or meta tags.\n3. Keep outer backgrounds transparent. The host supplies theme variables.\n4. Use a single concise widget per fence. For multiple widgets, interleave prose and use a separate `show-widget` fence for each widget.\n5. Streaming order: SVG puts `<defs>` before visible shapes; HTML uses `<style>`, then visible markup, then `<script>` last.\n6. Prefer responsive SVG for static visuals and small HTML widgets for controls.\n7. SVG widgets use `<svg width="100%" viewBox="0 0 680 H">` and keep all content inside the viewBox.\n8. Interactive controls must visibly update the output. For Chart.js, call `chart.update()` after changes.\n9. Clickable drill-down actions call `window.__widgetSendMessage("short request")`.\n10. Cross-widget filters publish with `window.__widgetPublish("topic", { key: "value" })`; other widgets listen for `widget-filter`.\n11. Allowed CDN hosts: `cdnjs.cloudflare.com`, `cdn.jsdelivr.net`, `unpkg.com`, `esm.sh`.\n12. CDN scripts must use an `onload` initializer plus an `if (window.Lib) init();` fallback.\n13. Use `min-height` instead of fixed outer `height` to prevent clipping.\n14. Title should be human-readable in the user\'s language.\n15. Put explanatory prose outside the code fence.\n16. Do not output raw ```svg, ```html, or plain Mermaid for visual answers unless the user explicitly asks for source code, raw Markdown, raw Mermaid, or a saved file.\n17. Do not convert Markdown outlines into Mermaid by default. Render them as a `show-widget` diagram unless Mermaid/source text is explicitly requested.\n</widget-capability>',e=/\n?\s*<widget-capability>[\s\S]*?<\/widget-capability>\s*/g,f=/\n?\s*<visualization_harness>[\s\S]*?<\/visualization_harness>\s*/g,g=/\n?\s*<widget-guidelines\b[^>]*>[\s\S]*?<\/widget-guidelines>\s*/g;function h(a){let b=a.toLowerCase();return b.includes("show-widget")&&(b.includes("# visualization harness")||b.includes("## when to visualize")||b.includes("widget format"))}function i(a){return a.replace(e,"\n").replace(f,"\n").replace(g,"\n").replace(/\n{3,}/g,"\n\n").trim()}function j(a){return a.includes("<widget-capability>")?a:a.trim()?`${a.trimEnd()}
|
|
40
40
|
|
|
41
41
|
${d}`:d}},11745:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{$:()=>j});var e=c(28802),f=c(75430),g=a([e,f]);function h(a){return a>=1e6?`${(a/1e6).toFixed(1)}M`:a>=1e3?`${(a/1e3).toFixed(1)}K`:String(a)}function i(a){if(a<60)return`${a}s`;let b=Math.floor(a/60);if(b<60)return`${b}m ${String(a%60).padStart(2,"0")}s`;let c=Math.floor(b/60);return`${c}h ${b%60}m`}function j(a){let b=null,c=null,d=!1;function g(){return Date.now()}function j(){return{input:0,output:0,cacheRead:0,cacheWrite:0}}function k(){var a;if(!d||!b||!c)return;let e=j(),f=(a=c,Math.max(0,e.input-a.input)+Math.max(0,e.cacheWrite-a.cacheWrite)+Math.max(0,e.output-a.output));f>0&&(b.tokensUsed+=f,b.updatedAt=g(),void 0!==b.tokenBudget&&b.tokensUsed>=b.tokenBudget&&"active"===b.status&&(b.status="budget-limited")),c={...e}}function l(){a.appendEntry("goal-mode",b?{...b}:null)}a.registerTool((0,f.defineTool)({name:"goal",label:"Goal",description:'Use the goal tool to manage your current task objective.\n- goal(op="create", objective="...", token_budget=N?) — set a goal with optional token budget\n- goal(op="get") — check current goal status\n- goal(op="complete") — mark goal as complete\n- goal(op="drop") — abandon the current goal\nWhen you have a clear objective, set a goal to track progress and budget.',parameters:e.Type.Object({op:e.Type.Union([e.Type.Literal("create"),e.Type.Literal("get"),e.Type.Literal("complete"),e.Type.Literal("drop"),e.Type.Literal("resume")],{description:"goal operation"}),objective:e.Type.Optional(e.Type.String({description:"goal objective (required for create)"})),token_budget:e.Type.Optional(e.Type.Number({description:"token budget limit (optional)"}))}),execute:async(a,e,f,m)=>{let n=e.op,o=e.objective?.trim(),p=e.token_budget;switch(n){case"create":{if(!o)return{content:[{type:"text",text:"Error: objective is required for goal create."}],details:null};if(b&&"dropped"!==b.status&&"complete"!==b.status)return{content:[{type:"text",text:"Error: a goal is already active. Complete or drop it first."}],details:null};let a=g();b={id:`goal-${a}`,objective:o,status:"active",tokenBudget:p&&p>0?p:void 0,tokensUsed:0,timeUsedSeconds:0,createdAt:a,updatedAt:a},d=!0,c=j(),l();let e=b.tokenBudget?` | budget: ${h(b.tokenBudget)} tokens`:"";return{content:[{type:"text",text:`Goal set: "${o}"${e}`}],details:{...b}}}case"get":{if(!b)return{content:[{type:"text",text:"No active goal."}],details:null};k();let a=Math.floor((g()-b.createdAt)/1e3);b.timeUsedSeconds=Math.max(b.timeUsedSeconds,a);let c=b.tokenBudget?` | ${h(b.tokensUsed)} / ${h(b.tokenBudget)} tokens`:` | ${h(b.tokensUsed)} tokens`;return{content:[{type:"text",text:`Goal: "${b.objective}"
|
|
42
42
|
Status: ${b.status}${c}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/
|
|
1
|
+
globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/mulkaSvwGLOuWmirVJx-m/_buildManifest.js","static/mulkaSvwGLOuWmirVJx-m/_ssgManifest.js"],rootMainFiles:["static/chunks/webpack-c256e3e1868863a5.js","static/chunks/4bd1b696-e356ca5ba0218e27.js","static/chunks/3794-123fdf632563f469.js","static/chunks/main-app-8d81a93b58bb990f.js"],rootMainFilesTree:{},pages:{"/_app":[]}};
|