dsh-context 0.72.0 → 0.73.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.d.ts CHANGED
@@ -219,7 +219,7 @@ type DefaultGranularity = 'step' | 'turn';
219
219
  type DefaultTrendMode = 'total' | 'delta';
220
220
  /** The browser delta baseline: against the immediately preceding record, or the previous turn's last step. */
221
221
  type DefaultDeltaBase = 'step' | 'turn';
222
- type DefaultFileSort = 'count' | 'latest' | 'path';
222
+ type DefaultFileSort = 'count' | 'latest' | 'path' | 'name';
223
223
  type DefaultToolSort = 'size' | 'count' | 'name';
224
224
  type DefaultPlacement = 'all' | 'tab' | 'sidebar';
225
225
  type InsightsEntry = 'show' | 'hide';
@@ -569,7 +569,7 @@ export declare const Config: z$1<Schemastery.ObjectS<NoInfer<{
569
569
  defaultTrendMode: z$1<"delta" | "total", "delta" | "total", "defined">;
570
570
  defaultDeltaBase: z$1<"step" | "turn", "step" | "turn", "defined">;
571
571
  defaultToolSort: z$1<"count" | "name" | "size", "count" | "name" | "size", "defined">;
572
- defaultFileSort: z$1<"count" | "latest" | "path", "count" | "latest" | "path", "defined">;
572
+ defaultFileSort: z$1<"count" | "latest" | "name" | "path", "count" | "latest" | "name" | "path", "defined">;
573
573
  insightsEntry: z$1<"hide" | "show", "hide" | "show", "defined">;
574
574
  defaultDurationCurve: z$1<"hide" | "show", "hide" | "show", "defined">;
575
575
  fleetTab: z$1<"hide" | "show", "hide" | "show", "defined">;
@@ -587,7 +587,7 @@ export declare const Config: z$1<Schemastery.ObjectS<NoInfer<{
587
587
  defaultTrendMode: z$1<"delta" | "total", "delta" | "total", "defined">;
588
588
  defaultDeltaBase: z$1<"step" | "turn", "step" | "turn", "defined">;
589
589
  defaultToolSort: z$1<"count" | "name" | "size", "count" | "name" | "size", "defined">;
590
- defaultFileSort: z$1<"count" | "latest" | "path", "count" | "latest" | "path", "defined">;
590
+ defaultFileSort: z$1<"count" | "latest" | "name" | "path", "count" | "latest" | "name" | "path", "defined">;
591
591
  insightsEntry: z$1<"hide" | "show", "hide" | "show", "defined">;
592
592
  defaultDurationCurve: z$1<"hide" | "show", "hide" | "show", "defined">;
593
593
  fleetTab: z$1<"hide" | "show", "hide" | "show", "defined">;
package/lib/index.js CHANGED
@@ -1,16 +1,16 @@
1
1
  /**
2
- * dsh-context v0.72.0
2
+ * dsh-context v0.73.1
3
3
  * A DeepSeek Harness plugin for context insight and management, with context dashboard and context command, for understanding how the context is made of, and how it evolves.
4
4
  * @author bowenliang123
5
5
  * @license Apache-2.0
6
6
  * @homepage https://github.com/bowenliang123/dsh-context
7
- * @built 2026-10-15T07:49:22+00:00
8
- * @commit ca89acfd9384
9
- * @commit-date 2026-10-15T15:47:04+08:00
7
+ * @built 2026-10-18T07:27:15+00:00
8
+ * @commit 29b08f5158e8
9
+ * @commit-date 2026-10-18T15:24:53+08:00
10
10
  */
11
11
 
12
12
  import{createRequire as e}from"node:module";import{z as t}from"zod";import{deriveEventMessage as n,interruptedTurnClosers as r}from"@deepseek-ai/dsh-session";import i from"@deepseek-ai/schemastery";import{copyFile as a,link as o,mkdir as s}from"node:fs/promises";import{basename as c,dirname as l,isAbsolute as u,join as d,normalize as f,relative as p}from"node:path";import{getHeapStatistics as m}from"node:v8";import{existsSync as h,readFileSync as ee}from"node:fs";import{fileURLToPath as g}from"node:url";import{performance as te}from"node:perf_hooks";import{randomUUID as ne}from"node:crypto";function re(e){return typeof e!=`string`||e.length===0?0:Math.ceil(e.length/4)+4}function ie(e){return Math.ceil(e.length/4)+4}function ae(e){if(!Array.isArray(e)||e.length===0)return 0;let t=0;for(let n of e){let e=typeof n==`object`&&n&&n.type===`text`?n.text:void 0;if(typeof e==`string`){t+=e.length;continue}try{let e=JSON.stringify(n);typeof e==`string`&&(t+=e.length)}catch{}}return Math.ceil(t/4)+4}const oe=147456,_=(e,t)=>Math.floor(e/t),v=(e,t)=>Math.floor((e+t-1)/t);function se(e,t){let n=e*(t+1)+2;return e%2==1&&(n+=t+1),n+=v(e,2)*(t+1)%2*2,n}function ce(e,t,n){let r=e/t,i=Math.sqrt((n-2)/r+.25)-.5,a=i*r,o,s;if(i<1){let e=_(n-2,2);e%2==1&&--e,s=42,o=e*42}else if(a<2){let e=_(n-2,2)-1;if(e<=1)throw Error(`image tokens: budget too small to solve`);o=84,s=e*42}else{let n=Math.trunc(i),r=Math.trunc(a);r%2==1&&--r;let c=Math.min(n*42/t,r*42/e);s=Math.trunc(t*c/14)*14,o=Math.trunc(e*c/14)*14}let c=v(_(o,14),3),l=v(_(s,14),3);return{nLlmH:c,nLlmW:l,bestHeight:o,bestWidth:s,numTokens:se(c,l)}}function le(e,t,n,r){let i=v(_(n,14),3),a=v(_(r,14),3),o={nLlmH:i,nLlmW:a,bestHeight:n,bestWidth:r,numTokens:se(i,a)};if(o.numTokens>381){o=ce(e,t,381);let n=381;for(;o.numTokens>381;)--n,o=ce(e,t,n)}return o.numTokens+=3,o}function ue(e,t){let n=e,r=t;n>r*8&&(n=r*8);let i=n*r;if(i<oe&&i>0){let e=Math.sqrt(oe/i);n=Math.trunc(n*e),r=Math.trunc(r*e)}let a=v(n,14)*14,o=v(r,14)*14;return le(r,n,o,a)}function de(e,t){if(!Number.isFinite(e)||!Number.isFinite(t)||e<=0||t<=0)return null;try{let n=ue(e,t);for(let e=1;e<10;e++){let e=ue(n.bestWidth,n.bestHeight);if(e.nLlmH===n.nLlmH&&e.nLlmW===n.nLlmW&&e.bestHeight===n.bestHeight&&e.bestWidth===n.bestWidth&&e.numTokens===n.numTokens)return n.numTokens;n=e}return null}catch{return null}}function fe(e){return e.length>0?Math.ceil(JSON.stringify(e).length/4)+4:0}function pe(e){let t=0;if(!Array.isArray(e))return 0;for(let n of e){if(typeof n!=`object`||!n){t+=4;continue}let e=n;switch(e.type){case`text`:case`reasoning`:t+=ie(e.text||``);break;case`tool-call`:t+=Math.ceil((e.name||``).length/4)+Math.ceil((e.arguments||``).length/4)+4;break;case`image`:{let n=e.attachment,r=typeof n==`object`&&n&&typeof n.width==`number`&&typeof n.height==`number`?de(n.width,n.height):null;t+=(r??Math.ceil(JSON.stringify(e).length/4))+4;break}default:t+=4+Math.ceil(JSON.stringify(e).length/4)}}return t}function me(e,t=!1){return t&&(e==null||!Array.isArray(e.content)||e.content.length===0)?0:pe(e?.content)+4}function he(e){return Math.ceil(JSON.stringify(e).length/4)+4}function ge(e){let t=0;if(!Array.isArray(e))return 0;for(let n of e){if(typeof n!=`object`||!n)continue;let e=n;e.type===`image`?t++:Array.isArray(e.content)&&(t+=ge(e.content))}return t}function y(e){if(!Array.isArray(e))return``;for(let t of e){if(typeof t!=`object`||!t)continue;let e=t;if(e.type===`text`&&typeof e.text==`string`&&e.text.trim()!==``)return e.text.replace(/\s+/g,` `).trim().slice(0,80)}return``}function _e(e){let t=[];if(!Array.isArray(e))return t;for(let n of e){if(typeof n!=`object`||!n)continue;let e=n;e.type===`tool-call`&&typeof e.name==`string`&&t.push(e.name)}return t}function ve(e){if(e?.kind===`agent-instructions`&&Array.isArray(e.changes)){let t=[];for(let n of e.changes){let e=n?.path;typeof e==`string`&&e!==``&&!t.includes(e)&&t.push(e)}if(t.length>0)return t.join(`, `)}let t=e?.plugin;if(typeof t==`string`&&t!==``)return t;let n=e?.kind;return typeof n==`string`&&n!==``?n:``}function ye(e){return e!=null&&(typeof e.kind==`string`&&e.kind!==``&&e.kind!==`user`||typeof e.form==`string`)}function be(e){if(typeof e!=`object`||!e)return!1;let t=e;switch(t.type){case`text-delta`:case`reasoning-delta`:return typeof t.text==`string`&&t.text!==``;case`tool-call-delta`:return typeof t.argumentsDelta==`string`&&t.argumentsDelta!==``||t.name!==void 0;default:return!1}}function xe(e){if(e===`reasoning`)return`reasoning`;if(e===`text`)return`text`;if(e===`tool-call`)return`toolarg`}function Se(e,t){let n={spans:{reasoning:0,text:0,toolarg:0},blocks:{reasoning:0,text:0,toolarg:0}};if(!Array.isArray(e)||!Number.isFinite(t))return n;let r,i=0;for(let t of e){if(typeof t!=`object`||!t)continue;let e=t;if(e.type!==`chunk`||e.chunk===null||typeof e.chunk!=`object`)continue;let a=e.chunk;if(a.type!==`block-start`)continue;let o=e.time;typeof o==`number`&&Number.isFinite(o)&&(r!==void 0&&(n.spans[r]+=Math.max(0,o-i)),r=xe(a.blockType),r!==void 0&&(n.blocks[r]+=1),i=o)}return r!==void 0&&(n.spans[r]+=Math.max(0,t-i)),n}function Ce(e,t){let n=[];if(!Array.isArray(e)||!Number.isFinite(t))return n;let r,i=0,a=e=>{r!==void 0&&e>i&&n.push({kind:r,start:i,end:e})};for(let t of e){if(typeof t!=`object`||!t)continue;let e=t;if(e.type!==`chunk`||e.chunk===null||typeof e.chunk!=`object`)continue;let n=e.chunk;if(n.type!==`block-start`)continue;let o=e.time;typeof o==`number`&&Number.isFinite(o)&&(a(o),r=xe(n.blockType),i=o)}return a(t),n}function we(e){let t=e.time0;if(typeof t!=`number`||!Number.isFinite(t))return;if(e.type===`tool-call-chunks`&&e.name!==void 0)return t;let n=e.type===`tool-call-chunks`?e.args:e.texts;if(!Array.isArray(n))return;let r=Array.isArray(e.dt)?e.dt:[],i=t;for(let[e,t]of n.entries()){if(e>0){let t=r[e-1];if(typeof t!=`number`||!Number.isFinite(t))return;i+=t}if(typeof t==`string`&&t!==``)return i}}function Te(e){if(Array.isArray(e))for(let t of e){if(typeof t!=`object`||!t)continue;let e=t;if(e.type===`chunk`){let t=e.time;if(typeof t==`number`&&Number.isFinite(t)&&be(e.chunk))return t;continue}let n=we(e);if(n!==void 0)return n}}function Ee(e){if(typeof e!=`object`||!e)return null;let t=e;if(t.op!==`replace`)return null;let{startSeq:n,endSeq:r}=t;return typeof n!=`number`||!Number.isFinite(n)||typeof r!=`number`||!Number.isFinite(r)?null:{start:n,end:r}}function De(e){if(typeof e!=`string`||e===``)return null;try{let t=JSON.parse(e);return typeof t==`object`&&t&&!Array.isArray(t)?t:null}catch{return null}}const Oe={read:`read`,read_image:`read`,write:`write`,edit:`write`,grep:`search`,glob:`search`};function ke(e){return e===void 0?null:Oe[e]??null}function Ae(e,t){return e===`str_replace_editor`?t!==null&&t.command===`view`?`read`:`write`:ke(e)}function b(e){return e===`str_replace_editor`||ke(e)!==null}function je(e){return b(e)||e===`run_code`}function Me(e,t){if(t===null)return null;if(e===`grep`||e===`glob`){let e=t.path;if(typeof e==`string`&&e!==``)return e;let n=t.pattern;return typeof n==`string`&&n!==``?n:null}for(let e of[`file_path`,`filePath`,`path`]){let n=t[e];if(typeof n==`string`&&n!==``)return n}return null}function Ne(e){if(e===``)return 0;let t=0;for(let n=0;n<e.length;n++)e[n]===`
13
13
  `&&t++;return e.endsWith(`
14
- `)?t:t+1}function x(e,t){return{added:typeof e==`string`?Ne(e):0,removed:typeof t==`string`?Ne(t):0}}function Pe(e,t){if(e===`edit`)return x(t.new_string,t.old_string);if(e===`write`)return x(t.content,void 0);if(e===`str_replace_editor`){if(t.command===`str_replace`)return x(t.new_str,t.old_str);if(t.command===`insert`)return x(t.new_str,void 0);if(t.command===`create`)return x(t.file_text,void 0)}return{added:0,removed:0}}function Fe(e){if(typeof e!=`object`||!e)return null;let t=e;return typeof t.path!=`string`||t.path===``||typeof t.offset!=`number`||!Number.isFinite(t.offset)||t.offset<1||!Array.isArray(t.lines)||t.lines.length===0?null:{start:t.offset,count:t.lines.length}}function Ie(e){let t=e.limit;return typeof t==`number`&&Number.isFinite(t)&&t>0?{count:Math.floor(t),est:!0}:void 0}function Le(e,t){let n=Fe(e);return n===null?Ie(t):{start:n.start,count:n.count}}function Re(e){let t=e?.pattern;if(typeof t!=`string`||t===``)return;let n=e?.include;return typeof n==`string`&&n!==``?`${t} (${n})`:t}function ze(e){if(typeof e!=`object`||!e)return null;let t=e;if(t.truncated!==!1)return null;let n=[];if(t.shape===`matches`&&Array.isArray(t.files))for(let e of t.files){if(typeof e!=`object`||!e)continue;let t=e;typeof t.path==`string`&&t.path!==``&&Array.isArray(t.matches)&&n.push({path:t.path,hits:t.matches.length})}else if(t.shape===`paths`&&Array.isArray(t.paths))for(let e of t.paths)typeof e==`string`&&e!==``&&n.push({path:e,hits:0});return n.length>0?n:null}function Be(e){let t=b(e.tool)?De(e.argsRaw):null,n=Ae(e.tool,t);if(n===null)return[];let r={seq:e.seq,kind:n,tool:e.tool,err:e.err===!0,added:0,removed:0,path:``,...e.time===void 0?{}:{time:e.time},...e.gone===void 0?{}:{gone:e.gone},...e.parent===void 0?{}:{parent:e.parent},...e.program===void 0?{}:{program:e.program}};if(n===`search`){let n=ze(e.meta);if(n!==null){let i=Re(t),a=t===null?null:Me(e.tool,t),o=t!==null&&typeof t.path==`string`&&t.path!==``;return[...a!==null&&!n.some(e=>e.path===a)?[{...r,path:a,...o&&i!==void 0?{detail:i}:{},...o?{}:{pattern:!0}}]:[],...n.map(e=>({...r,path:e.path,...i===void 0?{}:{detail:i},...e.hits>0?{hits:e.hits}:{}}))]}}if(t===null)return[];let i=Me(e.tool,t);if(i===null)return[];let{added:a,removed:o}=Pe(e.tool,t),s=typeof t.path==`string`&&t.path!==``,c=n===`search`&&s?Re(t):void 0,l=n===`read`?Le(e.meta,t):void 0;return[{...r,path:i,added:a,removed:o,...c===void 0?{}:{detail:c},...l===void 0?{}:{read:l},...n===`search`&&!s?{pattern:!0}:{}}]}function Ve(e,t){let n=0,r=e.length,i;for(let a=e.length-1;a>=0;a--){let o=e[a].turn;if(o!==i){if(n>=t)break;n++,i=o}r=a}return e.slice(r)}function S(e){let t=0,n;for(let r of e)r.turn!==n&&(t++,n=r.turn);return t}function He(e,t){if(e.turnRuns=e.turnRuns??S(e.requests),e.turnRuns>t.maxKeptTurns&&(e.requests=Ve(e.requests,t.maxKeptTurns),e.turnRuns=S(e.requests)),e.requests.length>t.maxRequestSteps&&(e.requests=e.requests.slice(-t.maxRequestSteps),e.turnRuns=S(e.requests)),e.events.length>t.maxEvents&&(e.events=e.events.slice(-t.maxEvents)),e.spans.length>Ue&&(e.spans=e.spans.slice(-Ue)),e.fileOps.length>t.maxFileOps){let n=e.fileOps.length-t.maxFileOps;e.fileOpsFloor=Math.max(e.fileOpsFloor??0,e.fileOps[n-1].seq),e.fileOps=e.fileOps.slice(n)}if(e.archived.length>0){let n=0,r=e.requests.length>0?e.requests[0].seq:void 0;if(r!==void 0)for(;n<e.archived.length&&(e.archived[n].gone??1/0)<=r;)n++;if(e.archived.length-n>t.maxArchiveNodes&&(n=e.archived.length-t.maxArchiveNodes),n>0){let t=e.archived[n-1].gone;t!==void 0&&(e.archiveFloor=Math.max(e.archiveFloor??0,t)),e.archived=e.archived.slice(n)}}}const Ue=2e3;function We(){return{surface:[],sums:{user:0,inject:0,skill:0,assistant:0,tool:0},systemTokens:0,toolsTokens:0,requests:[],turnRuns:0,events:[],archived:[],callNames:{},fileOps:[],spans:[]}}const Ge={"deepseek-official":`deepseek`,"deepseek-account":`deepseek`,"kimi-coding":`moonshotai`,"minimax-cn":`minimax`,"zai-coding-cn":`zhipuai`};function Ke(e){return Ge[e]??e}function qe(e){return Ke(e)===`deepseek`}function C(e){if(typeof e==`number`)return Number.isFinite(e)?Math.max(0,Math.round(e)):null;if(typeof e==`string`&&e.trim()!==``){let t=Number(e);return Number.isFinite(t)?Math.max(0,Math.round(t)):null}return null}function Je(e){let t=new Date(e),n=t.getUTCDay();if(n===0||n===6)return!1;let r=t.getUTCHours();return r>=1&&r<4||r>=6&&r<10}function Ye(e,t,n,r,i){let a=qe(t)&&!Je(r)?`off`:`peak`,o=e?.[t]??{},s=o[n]??{},c=s[a]??{uncached:0,cacheRead:0,cacheWrite:0,output:0},l={...s};l[a]={uncached:c.uncached+i.uncached,cacheRead:c.cacheRead+i.cacheRead,cacheWrite:c.cacheWrite+i.cacheWrite,output:c.output+i.output};let u={...o,[n]:l};return{...e??{},[t]:u}}function Xe(e){let t={};for(let n in e){let r={};for(let t in e[n]){let i=e[n][t],a={};i.peak!==void 0&&(a.peak={...i.peak}),i.off!==void 0&&(a.off={...i.off}),r[t]=a}t[n]=r}return t}function Ze(e,t,n){let r=e.model;r!==void 0&&(e.cost=Ye(e.cost,e.provider??``,r,t,n))}const Qe=[`reasoning`,`text`,`toolarg`];function w(e,t){return!Number.isFinite(e)||!Number.isFinite(t)?0:Math.max(0,t-e)}function T(e){return e.timing===void 0&&(e.timing={wallMs:0,ttftMs:0,genMs:0,calls:0,toolsMs:0,toolCalls:0,tools:{}}),e.timing}const $e={reasoning:{ms:`reasoningMs`,n:`reasoningBlocks`},text:{ms:`textMs`,n:`textBlocks`},toolarg:{ms:`toolArgMs`,n:`toolArgBlocks`}};function et(e,t,n,r){let i=$e[t];n>0&&(e[i.ms]=(e[i.ms]??0)+n),r>0&&(e[i.n]=(e[i.n]??0)+r)}function tt(e,t,n){if(t===`__proto__`)return;if(!Object.hasOwn(e.tools,t)){if(Object.keys(e.tools).length>=16){let t=``,n=1/0;for(let r in e.tools)e.tools[r].ms<n&&(n=e.tools[r].ms,t=r);let r={};for(let n in e.tools)n!==t&&(r[n]=e.tools[n]);e.tools=r}e.tools[t]={calls:1,ms:n};return}let r=e.tools[t];e.tools[t]={calls:r.calls+1,ms:r.ms+n}}function nt(e){let t=e.sums.user+e.sums.inject+e.sums.skill+e.sums.assistant+e.sums.tool,n={ok:!0,...e.model===void 0?{}:{model:e.model},...e.provider===void 0?{}:{provider:e.provider},...e.contextWindow===void 0?{}:{contextWindow:e.contextWindow},...e.maxOutputTokens===void 0?{}:{maxOutputTokens:e.maxOutputTokens},current:{system:e.systemTokens,tools:e.toolsTokens,user:e.sums.user,inject:e.sums.inject,skill:e.sums.skill,assistant:e.sums.assistant,tool:e.sums.tool,total:t+e.systemTokens+e.toolsTokens},images:e.surface.reduce((e,t)=>e+(t.imgs??0),0),toolCalls:e.surface.reduce((e,t)=>t.cat===`tool`||t.cat===`skill`&&t.tool!==void 0?e+1:e,0),humanInputs:e.humanInputs??0,answers:e.answers??0,...e.lastUser===void 0?{}:{lastUser:e.lastUser},requests:[],events:[],nodes:[],droppedNodes:0,archive:[]};if(e.cost!==void 0&&(n.cost=Xe(e.cost)),e.timing!==void 0){let t={};for(let n in e.timing.tools)t[n]={...e.timing.tools[n]};n.timing={...e.timing,tools:t}}return e.systems!==void 0&&e.systems.length>0&&(n.systems=e.systems.map(e=>({...e}))),n}function rt(e,t){let n={requests:e.requests.map(e=>({...e})),events:e.events.map(e=>({...e})),nodes:[],droppedNodes:0,archive:e.archived.map(e=>({...e})),fileOps:e.fileOps.map(e=>({...e})),...e.fileOpsFloor===void 0?{}:{fileOpsFloor:e.fileOpsFloor},spans:e.spans.map(e=>({...e}))},r=Math.max(0,e.surface.length-t.maxNodes),i=e.surface.slice(0,r),a=e.surface.slice(r),o=i.filter(e=>e.cat===`inject`||e.cat===`skill`);if(n.nodes=o.length>0?[...o,...a]:a,n.droppedNodes=r-o.length,n.droppedNodes>0){let e=0;for(let t of i)t.cat!==`inject`&&t.cat!==`skill`&&(e=Math.max(e,t.seq));n.surfaceFloor=e}e.archiveFloor!==void 0&&(n.archiveFloor=e.archiveFloor);let s=n.requests,c=n.events,l=0;for(let e of c){for(;l<s.length&&s[l].seq<=e.seq;)l++;let t=s.at(l),n=l>0?s.at(l-1):void 0;t!==void 0&&typeof t.turn==`number`&&typeof t.step==`number`&&(e.turn=t.turn,e.step=t.step),n!==void 0&&typeof n.turn==`number`&&typeof n.step==`number`&&(e.fromTurn=n.turn,e.fromStep=n.step)}return n}function it(e){let t=nt(e),n=new Set;for(let t of e.requests)n.add(t.turn??0);let r=0,i=0,a=0,o=new Set;for(let t of e.events)t.kind===`inject`?r++:t.kind===`compaction`?i++:t.kind===`prune`&&a++,t.sub===`skill`&&typeof t.name==`string`&&t.name!==``&&o.add(t.name);t.counts={turns:n.size,steps:e.requests.length,injects:r,compactions:i,prunes:a,skills:o.size};let s=e.requests.at(-1);return s!==void 0&&(t.last={seq:s.seq,total:s.total,...typeof s.prompt==`number`?{prompt:s.prompt}:{}}),t.detailRev=e.detailRev??0,t}function at(e,t){return{rev:e.detailRev??0,head:it(e),...rt(e,t)}}function ot(e,t){return{...nt(e),...rt(e,t)}}function st(e,t){if(e===`assistant/message`)return`assistant`;if(e===`tool/result`)return`tool`;if(e===`developer/message`)return`inject`;let n=t?.source?.kind;return n===`skill-invocation`||n===`skill-catalog`?`skill`:ye(t?.source)?`inject`:`user`}function E(e){e.detailRev=(e.detailRev??0)+1}function ct(e){for(let t=e.length-1;t>=0;t--)if(e[t].tokens>0)return e[t].tokens;return 0}function lt(e,t){let n=[...e.systems??[],t];e.systems=n.length>8?n.slice(-8):n,e.systemTokens=ct(e.systems)}function ut(e){if(typeof e==`string`)return e;if(e!=null)try{return JSON.stringify(e)}catch{return}}function dt(e,t){for(let n of t)e.fileOps.push(n)}function ft(e,t,n){let r=e.pendingCodeOps??{},i=0;for(let e in r)i+=r[e].length;i+n.length>200||(e.pendingCodeOps={...r,[t]:[...r[t]??[],...n]})}function pt(e,t,n){for(let r of t)e.archived.push({...r,gone:n})}function mt(e,t,n){if(t.size===0)return[];let r=[],i=[];for(let n of e.surface)t.has(n.seq)?(e.sums[n.cat]-=n.tokens,i.push(n)):r.push(n);return pt(e,i,n),e.surface=r,i}function ht(e){let t=e?.message;return typeof t==`object`&&t?t:null}function gt(e){if(!Array.isArray(e))return``;for(let t of e){if(typeof t!=`object`||!t)continue;let e=t;if(e.type===`text`&&typeof e.text==`string`&&e.text!==``)return e.text}return``}function _t(e){let t=gt(typeof e==`object`&&e?e.content:void 0).match(/<skill_content\s+name="([^"]+)"/);return t===null?``:t[1]}function D(e,t,n,r){let i=st(n,r??void 0),a={seq:t.seq,time:t.time,cat:i,tokens:me(r,n===`assistant/message`||n===`developer/message`)},o=ge(r?.content);o>0&&(a.imgs=o);let s=r?.source,c=s?.form;if(typeof c==`string`&&(a.form=c),n===`assistant/message`){let e=y(r?.content);if(e!==``)a.text=e;else{let e=_e(r?.content);e.length>0&&(a.calls=e.slice(0,3))}}else if(n===`tool/result`){let n=s?.callId,i=typeof n==`string`?e.callNames[n]:void 0;if(i!==void 0){a.tool=i.name;let n=T(e),r=w(i.start,t.time);n.toolsMs+=r,n.toolCalls+=1,tt(n,i.name,r),e.stepStart!==void 0&&(e.stepSpans=[...e.stepSpans??[],{kind:`tools`,start:i.start,end:t.time}])}if(typeof n==`string`){let t={};for(let r in e.callNames)r!==n&&(t[r]=e.callNames[r]);e.callNames=t}r?.isError===!0&&(a.err=!0)}else if(s?.kind===`skill-invocation`)a.skill=typeof s.name==`string`?s.name:`?`;else if(s?.kind===`plugin`){if(s.form===`notice`&&typeof s.summary==`string`)a.text=s.summary;else if(s.form===`snapshot`&&Array.isArray(s.sections))a.text=s.sections.map(e=>e?.name).filter(Boolean).join(`, `).slice(0,80);else{let e=y(r?.content);e!==``&&(a.text=e)}}else{let e=y(r?.content);e!==``&&(a.text=e)}let l=e.pendingShadowedSeqs,u=e.pendingShadowEventSeq;delete e.pendingShadowedSeqs,delete e.pendingShadowEventSeq;let d=Ee(t.surfaceOp);if(d!==null){if(Array.isArray(l)&&l.length>0){let n=mt(e,new Set(l),t.seq);if(e.sums[i]+=a.tokens,e.surface.push(a),u!==void 0){let t=n.reduce((e,t)=>e+t.tokens,0),r=e.events.findIndex(e=>e.seq===u);r>=0&&(e.events[r]={...e.events[r],tokens:Math.max(0,t-a.tokens)})}return a}let n=-1,r=-1;for(let t=0;t<e.surface.length;t++)if(n<0&&e.surface[t].seq===d.start&&(n=t),e.surface[t].seq===d.end){r=t;break}if(n>=0&&r>=n){let o=e.surface.splice(n,r-n+1,a);pt(e,o,t.seq);for(let t of o)e.sums[t.cat]-=t.tokens;return e.sums[i]+=a.tokens,a}}return e.surface.push(a),e.sums[i]+=a.tokens,a}const vt=`ask_user_question`,yt=[`surface`,`sums`,`requests`,`events`,`archived`,`callNames`,`fileOps`,`timing`];function bt(e,t,r){let i,a=(t=yt)=>{i={...e};for(let n of t)n===`surface`?i.surface=[...e.surface]:n===`sums`?i.sums={...e.sums}:n===`requests`?i.requests=[...e.requests]:n===`events`?i.events=[...e.events]:n===`archived`?i.archived=[...e.archived]:n===`callNames`?i.callNames={...e.callNames}:n===`fileOps`?i.fileOps=[...e.fileOps]:e.timing!==void 0&&(i.timing={...e.timing,tools:{...e.timing.tools}});return i},o=t.data;try{switch(t.type){case`request/header`:{let e=o?.header??{},n=Array.isArray(e.tools)?e.tools:[],r=a([`events`]);r.toolsTokens=fe(n),e.config&&typeof e.config.model==`string`&&(r.model=e.config.model),e.config&&typeof e.config.provider==`string`&&(r.provider=e.config.provider);let i=e.config?.maxTokens;typeof i==`number`&&Number.isFinite(i)&&i>0?r.maxOutputTokens=i:delete r.maxOutputTokens,(o?.reason===`change`||o?.reason===`resume`)&&r.model&&r.lastModel&&r.model!==r.lastModel&&(r.events.push({seq:t.seq,time:t.time,kind:`model`,from:r.lastModel,to:r.model}),E(r)),r.model&&(r.lastModel=r.model);break}case`system/message`:{let e=a([`surface`,`sums`,`archived`]);delete e.pendingShadowedSeqs,delete e.pendingShadowEventSeq;let n=Ee(t.surfaceOp);if(n!==null){e.systems=(e.systems??[]).filter(e=>e.seq<n.start||e.seq>n.end);let r=new Set;for(let t of e.surface)t.seq>=n.start&&t.seq<=n.end&&r.add(t.seq);mt(e,r,t.seq).length>0&&E(e)}lt(e,{seq:t.seq,time:t.time,tokens:ae(ht(o)?.content)});break}case`request/context`:{let e=a([]);o&&typeof o.contextWindow==`number`&&(e.contextWindow=o.contextWindow),o&&typeof o.model==`string`&&(e.model=o.model),o&&typeof o.provider==`string`&&(e.provider=o.provider);break}case`tool/call`:if(o&&typeof o.callId==`string`&&typeof o.name==`string`){let e=a([`callNames`]),n=je(o.name)?ut(o.arguments):void 0;e.callNames[o.callId]={name:o.name,start:t.time,...n===void 0?{}:{argsRaw:n}}}break;case`tool/ptc-dispatch`:{let e=o?.rootCallId,n=o?.name;if(typeof e==`string`&&typeof n==`string`){let r=b(n)?ut(o?.arguments):void 0,i=Be({seq:t.seq,time:t.time,tool:n,argsRaw:r,err:o?.isError===!0});i.length>0&&ft(a([]),e,i)}break}case`assistant/attempt`:{let t=e.stepStart;if(t===void 0||t.firstToken!==void 0)return e;let n=Te(o?.stream);if(n===void 0)return e;let r=a([]);r.stepStart={time:t.time,firstToken:n};break}case`step/start`:{let e=a([]);e.stepStart={time:t.time},delete e.stepSpans,delete e.stepWaits,delete e.stepApprovals,delete e.stepRequestSeq;break}case`step/end`:{let n=e.stepStart;if(n===void 0)return e;let r=a(e.stepRequestSeq===void 0?[`timing`]:[`timing`,`requests`]);T(r).wallMs+=w(n.time,t.time);let i=[...e.stepWaits??[]];for(let n in e.stepApprovals)i.push({start:e.stepApprovals[n],end:t.time});i.sort((e,t)=>e.start-t.start||e.end-t.end);let o=0,s=n.time;for(let e of i){let n=Math.max(s,e.start),r=Math.min(e.end,t.time);r>n&&(o+=r-n,s=r)}let c=w(n.time,t.time)-o,l=e.requests.at(-1);l!==void 0&&l.seq===e.stepRequestSeq&&(r.requests[r.requests.length-1]={...l,activeMs:c});let u=[];for(let r of e.stepSpans??[]){let e=Math.max(n.time,r.start),i=Math.min(t.time,r.end);i>e&&u.push({kind:r.kind,start:e,end:i})}u.sort((e,t)=>e.start-t.start||e.end-t.end);let d=[],f=n.time;for(let e of u){let t=Math.max(f,e.start);e.end<=t||(t>f&&d.push({kind:`other`,start:f,end:t}),d.push({kind:e.kind,start:t,end:e.end}),f=e.end)}t.time>f&&d.push({kind:`other`,start:f,end:t.time}),r.spans=[...e.spans,...d],delete r.stepStart,delete r.stepSpans,delete r.stepWaits,delete r.stepApprovals,delete r.stepRequestSeq,E(r);break}case`approval/asked`:{let n=o?.id;if(e.stepStart===void 0||typeof n!=`string`)return e;let r=a([]);r.stepApprovals={...e.stepApprovals,[n]:t.time};break}case`approval/decided`:{let n=o?.id,r=e.stepApprovals,i=typeof n==`string`?r?.[n]:void 0;if(r===void 0||i===void 0)return e;let s=a([]);s.stepWaits=[...e.stepWaits??[],{start:i,end:t.time}];let c={};for(let e in r)e!==n&&(c[e]=r[e]);Object.keys(c).length>0?s.stepApprovals=c:delete s.stepApprovals;break}case`user/message`:case`developer/message`:{let r=t.type===`developer/message`,i=r?ht(o):n(t);if(r&&(i===null||!Array.isArray(i.content)))return e;let s=a([`surface`,`sums`,`archived`,`events`]);E(s);let c=D(s,t,t.type,i),l=i?.source;if(r||ye(l)){let e={seq:t.seq,time:t.time,kind:`inject`,form:typeof l?.form==`string`&&l.form!==``?l.form:`context`,tokens:c.tokens};if(l?.kind===`skill-invocation`)e.sub=`skill`,e.name=typeof l.name==`string`?l.name:`?`;else{let t=ve(l);t!==``&&(e.name=t,c.name=t),l?.form===`notice`&&typeof l.summary==`string`&&l.summary!==``&&(e.detail=l.summary)}s.events.push(e)}else s.humanInputs=(s.humanInputs??0)+1,c.text!==void 0&&c.text!==``&&(s.lastUser=c.text);break}case`tool/result`:{let r=n(t),i=r?.source?.callId,s=typeof i==`string`?e.callNames[i]:void 0,c=typeof i==`string`?e.pendingCodeOps?.[i]:void 0,l=a([`surface`,`sums`,`archived`,`events`,`fileOps`,`timing`]);E(l);let u=D(l,t,t.type,r);if(u.tool===vt&&(l.humanInputs=(l.humanInputs??0)+1),s!==void 0&&s.name===vt&&e.stepStart!==void 0&&(l.stepWaits=[...e.stepWaits??[],{start:s.start,end:t.time}]),s!==void 0&&dt(l,Be({seq:t.seq,time:t.time,tool:s.name,argsRaw:s.argsRaw,meta:o?.meta,err:r?.isError===!0})),c!==void 0&&c.length>0){let e=De(s?.argsRaw)?.description;dt(l,c.map(n=>({...n,parent:t.seq,...typeof e==`string`&&e!==``?{program:e}:{}})));let n={};for(let e in l.pendingCodeOps)e!==i&&(n[e]=l.pendingCodeOps[e]);Object.keys(n).length>0?l.pendingCodeOps=n:delete l.pendingCodeOps}if(u.tool===`skill`||u.tool===void 0){let e=_t(r);e!==``&&(u.skill=e,u.tool===void 0&&(u.tool=`skill`),l.sums.tool-=u.tokens,u.cat=`skill`,l.sums.skill+=u.tokens,l.events.push({seq:t.seq,time:t.time,kind:`inject`,form:`instructions`,sub:`skill`,name:e,tokens:u.tokens}))}break}case`assistant/message`:{let r=o?.usage,i=a([`surface`,`sums`,`archived`,`events`,`requests`,`timing`]);E(i);let s=i.systemTokens+i.toolsTokens+i.sums.user+i.sums.inject+i.sums.skill+i.sums.assistant+i.sums.tool,c={time:t.time,seq:t.seq,system:i.systemTokens,tools:i.toolsTokens,user:i.sums.user,inject:i.sums.inject,skill:i.sums.skill,assistant:i.sums.assistant,tool:i.sums.tool,total:s};o&&typeof o.turn==`number`&&(c.turn=o.turn),o&&typeof o.step==`number`&&(c.step=o.step),e.stepStart!==void 0&&(i.stepRequestSeq=c.seq);let l=null;if(typeof r==`object`&&r){let e=C(r.inputTokens),n=C(r.cacheReadTokens),a=C(r.cacheWriteTokens);l=C(r.outputTokens),(e!==null||n!==null||a!==null||l!==null)&&(c.prompt=(e??0)+(n??0)+(a??0),n!==null&&(c.cacheRead=n),l!==null&&(c.output=l),Ze(i,t.time,{uncached:e??0,cacheRead:n??0,cacheWrite:a??0,output:l??0}))}i.requests.push(c);let u=e.requests.at(-1);i.turnRuns=(e.turnRuns??S(e.requests))+(u===void 0?c.turn===void 0?0:1:c.turn===u.turn?0:1);let d=T(i);d.calls+=1;let f=e.stepStart;if(f!==void 0){let e=f.firstToken??Te(o?.stream);if(e!==void 0){let n=Ce(o?.stream,t.time),r=e;for(let e of n)r=Math.min(r,e.start);d.ttftMs+=w(f.time,r),d.genMs+=w(r,t.time);let a=[{kind:`ttft`,start:f.time,end:r}];for(let e of n){let n=Math.min(t.time,e.end);n<=e.start||a.push({kind:e.kind,start:a.length===1?r:e.start,end:n})}i.stepSpans=[...i.stepSpans??[],...a],l!==null&&(d.speedMs=(d.speedMs??0)+w(e,t.time),d.speedTokens=(d.speedTokens??0)+l);let s=Se(o?.stream,t.time);for(let e of Qe)et(d,e,s.spans[e],s.blocks[e])}}let p=n(t);D(i,t,t.type,p).text!==void 0&&(i.answers=(i.answers??0)+1);break}case`session/end-seed`:{if(o?.inherited!==!0)break;let e=a([]);e.cost={};break}case`plan/mode`:if(o&&typeof o.active==`boolean`){let e=a([`events`]);e.events.push({seq:t.seq,time:t.time,kind:`mode`,name:o.active?`plan.on`:`plan.off`}),E(e)}break;case`compaction/summary`:case`compaction/prune`:{let e=a([`events`]);E(e),o&&Array.isArray(o.shadowedSeqs)&&(e.pendingShadowedSeqs=o.shadowedSeqs.filter(e=>typeof e==`number`),e.pendingShadowEventSeq=t.seq),e.events.push({seq:t.seq,time:t.time,kind:t.type===`compaction/summary`?`compaction`:`prune`,tokens:o&&typeof o.shadowedTokenCount==`number`?o.shadowedTokenCount:0,...t.type===`compaction/summary`&&o&&Array.isArray(o.shadowedSeqs)?{count:o.shadowedSeqs.length}:{}});break}default:return e}}catch{i=void 0}return i===void 0?e:(He(i,r),i)}const O={maxRequestSteps:1500,maxKeptTurns:300,maxEvents:400,maxNodes:2e3,maxArchiveNodes:400,maxFileOps:400};function k(e){let t=e.volatile;return typeof t==`function`?t.call(e):e}function A(e){return i.number().min(1).step(1).default(e)}const xt=i.object({maxRequestSteps:A(O.maxRequestSteps),maxKeptTurns:A(O.maxKeptTurns),maxEvents:A(O.maxEvents),maxNodes:A(O.maxNodes),maxArchiveNodes:A(O.maxArchiveNodes),maxFileOps:A(O.maxFileOps),defaultPlacement:k(i.union([`all`,`tab`,`sidebar`]).default(`all`).loose()),defaultGranularity:k(i.union([`step`,`turn`]).default(`step`).loose()),defaultTrendMode:k(i.union([`total`,`delta`]).default(`total`).loose()),defaultDeltaBase:k(i.union([`step`,`turn`]).default(`step`).loose()),defaultToolSort:k(i.union([`size`,`count`,`name`]).default(`count`).loose()),defaultFileSort:k(i.union([`count`,`latest`,`path`]).default(`count`).loose()),insightsEntry:k(i.union([`show`,`hide`]).default(`show`).loose()),defaultDurationCurve:k(i.union([`show`,`hide`]).default(`show`).loose()),fleetTab:k(i.union([`show`,`hide`]).default(`show`).loose()),promptPrefix:k(i.string().default(``).loose()),promptSuffix:k(i.string().default(``).loose())});function St(e){let t=xt(e??{});return{maxRequestSteps:t.maxRequestSteps,maxKeptTurns:t.maxKeptTurns,maxEvents:t.maxEvents,maxNodes:t.maxNodes,maxArchiveNodes:t.maxArchiveNodes,maxFileOps:t.maxFileOps}}const j=t.object({seq:t.number().int().nonnegative(),time:t.number().optional(),cat:t.enum([`user`,`inject`,`skill`,`assistant`,`tool`]),tokens:t.number().int().nonnegative(),imgs:t.number().int().nonnegative().optional(),gone:t.number().int().nonnegative().optional(),form:t.string().optional(),name:t.string().optional(),text:t.string().optional(),tool:t.string().optional(),err:t.boolean().optional(),skill:t.string().optional(),calls:t.array(t.string()).optional()}).strict(),Ct=t.object({seq:t.number().int().nonnegative(),time:t.number(),tokens:t.number().int().nonnegative()}).strict(),wt=t.object({turn:t.number().optional(),step:t.number().optional(),time:t.number(),seq:t.number(),system:t.number().int().nonnegative(),tools:t.number().int().nonnegative(),user:t.number().int().nonnegative(),inject:t.number().int().nonnegative(),assistant:t.number().int().nonnegative(),tool:t.number().int().nonnegative(),total:t.number().int().nonnegative(),prompt:t.number().int().nonnegative().optional(),skill:t.number().int().nonnegative().optional(),cacheRead:t.number().int().nonnegative().optional(),output:t.number().int().nonnegative().optional(),activeMs:t.number().nonnegative().optional(),stepCount:t.number().int().positive().optional()}).strict(),Tt=t.object({seq:t.number(),time:t.number(),kind:t.enum([`compaction`,`prune`,`inject`,`model`,`mode`]),form:t.string().optional(),tokens:t.number().optional(),count:t.number().optional(),sub:t.string().optional(),name:t.string().optional(),detail:t.string().optional(),from:t.string().optional(),to:t.string().optional(),fromTurn:t.number().optional(),fromStep:t.number().optional(),turn:t.number().optional(),step:t.number().optional()}).strict(),M=t.object({seq:t.number().int().nonnegative(),path:t.string(),kind:t.enum([`read`,`write`,`search`]),tool:t.string(),time:t.number().optional(),err:t.boolean(),added:t.number().int().nonnegative(),removed:t.number().int().nonnegative(),detail:t.string().optional(),hits:t.number().int().positive().optional(),read:t.union([t.object({start:t.number().int().positive(),count:t.number().int().nonnegative()}).strict(),t.object({count:t.number().int().positive(),est:t.literal(!0)}).strict()]).optional(),parent:t.number().int().nonnegative().optional(),program:t.string().optional(),pattern:t.literal(!0).optional(),gone:t.number().int().nonnegative().optional()}).strict(),N=t.object({kind:t.enum([`ttft`,`reasoning`,`text`,`toolarg`,`tools`,`other`]),start:t.number(),end:t.number()}).strict(),Et=t.object({system:t.number().int().nonnegative(),tools:t.number().int().nonnegative(),user:t.number().int().nonnegative(),inject:t.number().int().nonnegative(),skill:t.number().int().nonnegative(),assistant:t.number().int().nonnegative(),tool:t.number().int().nonnegative(),total:t.number().int().nonnegative()}).strict(),Dt=t.object({uncached:t.number().int().nonnegative(),cacheRead:t.number().int().nonnegative(),cacheWrite:t.number().int().nonnegative(),output:t.number().int().nonnegative()}).strict(),Ot=t.object({peak:Dt.optional(),off:Dt.optional()}).strict(),kt=t.record(t.string(),Ot),P=t.record(t.string(),kt),At=t.object({calls:t.number().int().nonnegative(),ms:t.number().nonnegative()}).strict(),jt=t.object({wallMs:t.number().nonnegative(),ttftMs:t.number().nonnegative(),genMs:t.number().nonnegative(),reasoningMs:t.number().nonnegative().optional(),reasoningBlocks:t.number().int().nonnegative().optional(),textMs:t.number().nonnegative().optional(),textBlocks:t.number().int().nonnegative().optional(),toolArgMs:t.number().nonnegative().optional(),toolArgBlocks:t.number().int().nonnegative().optional(),speedTokens:t.number().nonnegative().optional(),speedMs:t.number().nonnegative().optional(),calls:t.number().int().nonnegative(),toolsMs:t.number().nonnegative(),toolCalls:t.number().int().nonnegative(),tools:t.record(t.string(),At)}).strict(),Mt=t.object({current:t.string(),minimum:t.string()}).strict(),Nt=t.object({turns:t.number().int().nonnegative(),steps:t.number().int().nonnegative(),injects:t.number().int().nonnegative(),compactions:t.number().int().nonnegative(),prunes:t.number().int().nonnegative(),skills:t.number().int().nonnegative().optional()}).strict(),Pt=t.object({seq:t.number(),total:t.number().int().nonnegative(),prompt:t.number().int().nonnegative().optional()}).strict(),Ft=t.object({ok:t.literal(!0),unsupported:Mt.optional(),model:t.string().optional(),provider:t.string().optional(),contextWindow:t.number().optional(),maxOutputTokens:t.number().positive().optional(),current:Et,images:t.number().int().nonnegative().optional(),toolCalls:t.number().int().nonnegative().optional(),humanInputs:t.number().int().nonnegative().optional(),answers:t.number().int().nonnegative().optional(),lastUser:t.string().optional(),counts:Nt.optional(),last:Pt.optional(),detailRev:t.number().int().nonnegative().optional(),requests:t.array(wt).optional(),events:t.array(Tt).optional(),cost:P.optional(),timing:jt.optional(),systems:t.array(Ct).optional(),nodes:t.array(j).optional(),droppedNodes:t.number().int().nonnegative().optional(),archive:t.array(j).optional(),surfaceFloor:t.number().int().nonnegative().optional(),archiveFloor:t.number().int().nonnegative().optional(),fileOps:t.array(M).optional(),fileOpsFloor:t.number().int().nonnegative().optional(),spans:t.array(N).optional()}).strict(),It=t.object({surface:t.array(j),sums:t.object({user:t.number().int().nonnegative(),inject:t.number().int().nonnegative(),skill:t.number().int().nonnegative(),assistant:t.number().int().nonnegative(),tool:t.number().int().nonnegative()}).strict(),systemTokens:t.number().int().nonnegative(),systems:t.array(Ct).optional(),toolsTokens:t.number().int().nonnegative(),model:t.string().optional(),provider:t.string().optional(),lastModel:t.string().optional(),contextWindow:t.number().optional(),maxOutputTokens:t.number().positive().optional(),requests:t.array(wt),turnRuns:t.number().int().nonnegative().optional(),events:t.array(Tt),archived:t.array(j),cost:P.optional(),archiveFloor:t.number().optional(),timing:jt.optional(),humanInputs:t.number().int().nonnegative().optional(),answers:t.number().int().nonnegative().optional(),lastUser:t.string().optional(),stepStart:t.object({time:t.number(),firstToken:t.number().optional()}).strict().optional(),stepWaits:t.array(t.object({start:t.number(),end:t.number()}).strict()).optional(),stepApprovals:t.record(t.string(),t.number()).optional(),stepRequestSeq:t.number().optional(),callNames:t.record(t.string(),t.object({name:t.string(),start:t.number(),argsRaw:t.string().optional()}).strict()),pendingShadowedSeqs:t.array(t.number()).optional(),pendingShadowEventSeq:t.number().optional(),detailRev:t.number().int().nonnegative().optional(),fileOps:t.array(M),fileOpsFloor:t.number().int().nonnegative().optional(),spans:t.array(N),stepSpans:t.array(N).optional(),pendingCodeOps:t.record(t.string(),t.array(M)).optional()});function Lt(e,t){let n=St(e);return{key:`contextTimeline`,stateSchema:It,wire:{viewSchema:Ft,view:e=>t()?it(e):ot(e,n)},init:()=>We(),apply:(e,t)=>bt(e,t,n),stateVersion:28}}function Rt(e){if(!Number.isFinite(e))return null;let t=new Date(e),n=t.getFullYear();return!Number.isFinite(n)||n<1970||n>9999?null:`${String(n).padStart(4,`0`)}-${String(t.getMonth()+1).padStart(2,`0`)}-${String(t.getDate()).padStart(2,`0`)}`}const zt=t.object({n:t.number().int().nonnegative(),last:t.number()}).strict(),Bt=t.object({tokens:t.number().int().nonnegative(),requests:t.number().int().nonnegative(),cost:P.optional(),skills:t.record(t.string(),zt).optional()}).strict(),Vt=t.object({days:t.record(t.string(),Bt)}).strict(),Ht=t.object({days:t.record(t.string(),Bt),model:t.string().optional(),provider:t.string().optional(),stepStart:t.number().optional(),skillCalls:t.array(t.string()).optional()});function Ut(e){if(typeof e!=`object`||!e)return null;let t=e,n=C(t.inputTokens),r=C(t.cacheReadTokens),i=C(t.cacheWriteTokens),a=C(t.outputTokens);return n===null&&r===null&&i===null&&a===null?null:{uncached:n??0,cacheRead:r??0,cacheWrite:i??0,output:a??0}}function Wt(e,t,n){let r={...e.days,[t]:n},i=Object.keys(r);if(i.length>400){i.sort();let e=new Set(i.slice(0,i.length-400));r=Object.fromEntries(Object.entries(r).filter(([t])=>!e.has(t)))}return{...e,days:r}}function Gt(e,t,n){let r=Rt(n);if(r===null)return e;let i=e.days[r],a=i?.skills?.[t];if(a===void 0&&i?.skills!==void 0&&Object.keys(i.skills).length>=100)return e;let o={...i?.skills,[t]:{n:(a?.n??0)+1,last:a===void 0?n:Math.max(a.last,n)}};return Wt(e,r,{tokens:i?.tokens??0,requests:i?.requests??0,...i?.cost===void 0?{}:{cost:i.cost},skills:o})}function Kt(e){let t=e.data,n=e.type===`developer/message`?t?.message:t,r=typeof n==`object`&&n?n.source:void 0;if(typeof r!=`object`||!r)return``;let i=r;return i.kind===`skill-invocation`&&typeof i.name==`string`?i.name:``}function qt(e){if(typeof e!=`object`||!e)return null;let t=e;if(typeof t.toolCallId==`string`&&t.toolCallId!==``)return t.toolCallId;let n=t.source;if(typeof n!=`object`||!n)return null;let r=n.callId;return typeof r==`string`&&r!==``?r:null}function Jt(e,t){if(t.type===`request/header`){let n=t.data?.header?.config;if(typeof n!=`object`||!n)return e;let r=typeof n.model==`string`?n.model:void 0,i=typeof n.provider==`string`?n.provider:void 0,a=r===void 0?e.model:r,o=i===void 0?e.provider:i;return a===e.model&&o===e.provider?e:{...e,...a===void 0?{}:{model:a},...o===void 0?{}:{provider:o}}}if(t.type===`step/start`)return Number.isFinite(t.time)?e.stepStart===t.time?e:{...e,stepStart:t.time}:e;if(t.type===`step/end`){if(e.stepStart===void 0)return e;let t={...e};return delete t.stepStart,t}if(t.type===`session/end-seed`)return t.data?.inherited===!0?{days:{}}:e;if(t.type===`user/message`||t.type===`developer/message`){let n=Kt(t);return n===``?e:Gt(e,n,t.time)}if(t.type===`tool/call`){let n=t.data,r=n?.callId;if(n?.name!==`skill`||typeof r!=`string`||r===``)return e;let i=e.skillCalls??[];return i.includes(r)?e:{...e,skillCalls:[...i,r].slice(-100)}}if(t.type===`tool/result`){let n=t.data?.message,r=qt(n),i=e.skillCalls;if(r===null||i===void 0||!i.includes(r))return e;let a=i.filter(e=>e!==r),o={...e};a.length>0?o.skillCalls=a:delete o.skillCalls;let s=_t(n);return s===``?o:Gt(o,s,t.time)}if(t.type!==`assistant/message`)return e;let n=e.stepStart===void 0?t.time:e.stepStart,r=Rt(n);if(r===null)return e;let i=t.data,a=Ut(i?.usage),o=e.days[r],s=o?.cost;return a!==null&&e.model!==void 0&&(s=Ye(s,e.provider??``,e.model,n,a)),Wt(e,r,{tokens:(o===void 0?0:o.tokens)+(a===null?0:a.uncached+a.cacheRead+a.cacheWrite+a.output),requests:(o===void 0?0:o.requests)+1,...s===void 0?{}:{cost:s},...o?.skills===void 0?{}:{skills:o.skills}})}function Yt(){return{key:`contextActivity`,stateSchema:Ht,init:()=>({days:{}}),apply:(e,t)=>Jt(e,t),wire:{viewSchema:Vt,view:e=>({days:Object.fromEntries(Object.entries(e.days).map(([e,t])=>[e,{...t,...t.cost===void 0?{}:{cost:Xe(t.cost)},...t.skills===void 0?{}:{skills:Object.fromEntries(Object.entries(t.skills).map(([e,t])=>[e,{...t}]))}}]))})},stateVersion:4}}const Xt=new Set([`png`,`jpg`,`jpeg`,`gif`,`webp`,`bmp`,`ico`,`svg`]);function Zt(e){return e.slice(Math.max(e.lastIndexOf(`/`),e.lastIndexOf(`\\`))+1)}function Qt(e){let t=Zt(e),n=t.lastIndexOf(`.`);return n<0?``:t.slice(n+1).toLowerCase()}function $t(e){return Xt.has(Qt(e))}function F(e){return typeof e==`number`&&Number.isFinite(e)&&e>0?e:void 0}function en(e){if(typeof e!=`object`||!e)return;let t=e,n=F(t.width),r=F(t.height);return n!==void 0&&r!==void 0?{width:n,height:r}:void 0}function tn(e){if(typeof e!=`object`||!e)return null;let t=e,n=typeof t.type==`string`?t.type:t.kind;if(n!==`image`&&n!==`file`||t.attachment===null||typeof t.attachment!=`object`)return null;let r=t.attachment;if(typeof r.attachmentId!=`string`||r.attachmentId===``)return null;let i=typeof r.name==`string`&&r.name!==``?r.name:void 0,a=F(r.bytes);if(n===`file`)return{kind:`file`,attachmentId:r.attachmentId,...i===void 0?{}:{name:i},...a===void 0?{}:{bytes:a}};let o=en(r.originalDimensions),s=F(r.width),c=F(r.height),l=typeof r.mediaType==`string`&&r.mediaType!==``?r.mediaType:void 0;return{kind:`image`,attachmentId:r.attachmentId,...i===void 0?{}:{name:i},...l===void 0?{}:{mediaType:l},...a===void 0?{}:{bytes:a},...s===void 0?{}:{width:s},...c===void 0?{}:{height:c},...o===void 0?{}:{originalDimensions:o}}}function nn(){let e=m();return{used:e.used_heap_size,limit:e.heap_size_limit}}const rn=()=>{};function I(e=nn){let t=()=>{try{let{used:t,limit:n}=e();return!Number.isFinite(t)||!Number.isFinite(n)||n<=0||t<n*.6666666666666666}catch{return!0}},n=Promise.resolve();return{admit(e){let r=n.then(()=>t()?e():void 0);return n=r.then(rn,rn),r}}}function an(e){return typeof e?.fetch?.register==`function`?e.fetch.register.bind(e.fetch):void 0}function L(e,t,n,r,i){let a=an(t);if(a===void 0)return!1;try{e.effect(()=>a({path:n,methods:[`POST`],requestBody:`buffered`,fetch:r}),i)}catch{return!1}return!0}const on={"image/png":`png`,"image/jpeg":`jpg`,"image/webp":`webp`,"image/gif":`gif`};function R(e){return Response.json(e,{headers:{"cache-control":`no-store`}})}function z(e,t){return R({ok:!1,error:{code:e,message:t}})}function sn(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:null}function B(e,t,n){if(n>8)return null;if(Array.isArray(e)){for(let r of e){let e=B(r,t,n+1);if(e!==null)return e}return null}if(typeof e!=`object`||!e)return null;let r=tn(e);if(r!==null&&r.attachmentId===t)return r;for(let r of Object.values(e)){let e=B(r,t,n+1);if(e!==null)return e}return null}function cn(e,t){for(let n of e)try{let e=B(n,t,0);if(e!==null)return e}catch{}return null}function ln(e){let t=Zt(e.name??``);if(t!==``&&$t(t))return t;let n=e.mediaType===void 0?void 0:on[e.mediaType];return n===void 0?null:`attachment.${n}`}function un(e){let t=l(l(l(e)));return c(t)!==`v1`||c(l(t))!==`attachments`?null:d(l(l(t)),`cache`,`dsh-context`,`previews`)}function dn(e,t){if(typeof e?.fileHostPath!=`function`)return null;try{let n=e.fileHostPath({attachmentId:t.attachmentId,name:t.name??``,bytes:t.bytes??0});return typeof n==`string`&&n!==``?n:null}catch{return null}}async function fn(e,t){if(typeof e?.imageHostPath!=`function`)return null;let n;try{n=e.imageHostPath({attachmentId:t.attachmentId,...t.mediaType===void 0?{}:{mediaType:t.mediaType},...t.bytes===void 0?{}:{bytes:t.bytes},...t.width===void 0?{}:{width:t.width},...t.height===void 0?{}:{height:t.height},...t.name===void 0?{}:{name:t.name}})}catch{return null}if(typeof n!=`string`||n===``)return null;let r=ln(t);if(r===null)return null;let i=un(n);if(i===null)return null;let u=d(i,c(l(n)),c(n),r);try{await s(l(u),{recursive:!0});try{await o(n,u)}catch(e){e instanceof Error&&`code`in e&&e.code===`EEXIST`||await a(n,u)}return u}catch{return null}}async function pn(e,t){return t.kind===`file`?dn(e,t):await fn(e,t)}function mn(e,t=I()){e.inject([`connection`],n=>{L(n,n.get(`connection`),`/api/dsh-context/attachment`,async n=>{let r,i;try{let e=sn(await n.json());r=e?.sessionId,i=e?.attachmentId}catch{return z(`dsh-context/bad-request`,`body is not JSON`)}if(typeof r!=`string`||r===``)return z(`dsh-context/bad-request`,`missing sessionId`);if(typeof i!=`string`||i===``)return z(`dsh-context/bad-request`,`missing attachmentId`);try{let n=e.get(`sessionQuery`),a=typeof n?.observeSession==`function`?n.observeSession.bind(n):void 0;if(a===void 0)return R({ok:!0,value:null});let o=e.get(`attachments`);return R({ok:!0,value:await t.admit(async()=>{let e=await a(r,{projectionMode:`none`});try{let t=e?.events;if(!Array.isArray(t))return null;let n=cn(t,i);if(n===null)return null;let r=await pn(o,n);return r===null?null:{path:r}}finally{let t=e?.[Symbol.dispose];typeof t==`function`&&t.call(e)}})??null})}catch(e){return z(`gateway/internal`,e instanceof Error?e.message:String(e))}},`dsh-context: attachment route`)})}function hn(e){if(!e.startsWith(`mcp__`))return;let t=e.lastIndexOf(`__`);if(t<5)return;let n=e.slice(5,t);return n.length>0?n:void 0}function gn(e){let t=hn(e);return t===void 0?void 0:`mcp:${t}`}function _n(e){return vn[e]}const vn=Object.freeze({read:`@deepseek-ai/dsh-tool-fs`,write:`@deepseek-ai/dsh-tool-fs`,edit:`@deepseek-ai/dsh-tool-fs`,read_image:`@deepseek-ai/dsh-tool-fs`,glob:`@deepseek-ai/dsh-tool-fs-search`,grep:`@deepseek-ai/dsh-tool-fs-search`,str_replace_editor:`@deepseek-ai/dsh-tool-str-replace-editor`,bash:`@deepseek-ai/dsh-tool-bash`,pwsh:`@deepseek-ai/dsh-tool-pwsh`,web_search:`@deepseek-ai/dsh-tool-web`,web_fetch:`@deepseek-ai/dsh-tool-web`,job_output:`@deepseek-ai/dsh-tool-jobs`,job_list:`@deepseek-ai/dsh-tool-jobs`,job_kill:`@deepseek-ai/dsh-tool-jobs`,ask_user_question:`@deepseek-ai/dsh-tool-ask-user`,plan:`@deepseek-ai/dsh-plan-mode`,exit_plan_mode:`@deepseek-ai/dsh-plan-mode`,skill:`@deepseek-ai/dsh-tool-skill`,todo_write:`@deepseek-ai/dsh-tool-todo`,subagent:`@deepseek-ai/dsh-tool-subagent`,subagent_fork:`@deepseek-ai/dsh-tool-subagent`,send_message:`@deepseek-ai/dsh-tool-subagent-control`,interrupt_agent:`@deepseek-ai/dsh-tool-subagent-control`,list_agents:`@deepseek-ai/dsh-tool-subagent-control`,ralph:`@deepseek-ai/dsh-tool-ralph`,workflow:`@deepseek-ai/dsh-tool-workflow`,run_code:`@deepseek-ai/dsh-tools`,schedule_create:`@deepseek-ai/dsh-schedule`,schedule_list:`@deepseek-ai/dsh-schedule`,schedule_delete:`@deepseek-ai/dsh-schedule`,create_goal:`@deepseek-ai/dsh-tool-goal`,get_goal:`@deepseek-ai/dsh-tool-goal`,update_goal:`@deepseek-ai/dsh-tool-goal`,lsp:`@deepseek-ai/dsh-tool-lsp`}),yn=f(g(import.meta.url)),V=new Map;function bn(e){let t=l(e);for(let e=0;e<12;e++){let e=V.get(t);if(e!==void 0)return e;let n=d(t,`package.json`);if(h(n))try{let e=JSON.parse(ee(n,`utf8`)).name;if(typeof e==`string`&&e)return V.set(t,e),e}catch{}let r=l(t);if(V.set(t,void 0),r===t)return;t=r}}const xn=/:\d+:\d+$/,Sn=Symbol.for(`cordis.original`);function Cn(e){return e?.[Sn]??e}const wn=bn(yn);function Tn(e){if(e)for(let t of e.split(`
14
+ `)?t:t+1}function x(e,t){return{added:typeof e==`string`?Ne(e):0,removed:typeof t==`string`?Ne(t):0}}function Pe(e,t){if(e===`edit`)return x(t.new_string,t.old_string);if(e===`write`)return x(t.content,void 0);if(e===`str_replace_editor`){if(t.command===`str_replace`)return x(t.new_str,t.old_str);if(t.command===`insert`)return x(t.new_str,void 0);if(t.command===`create`)return x(t.file_text,void 0)}return{added:0,removed:0}}function Fe(e){if(typeof e!=`object`||!e)return null;let t=e;return typeof t.path!=`string`||t.path===``||typeof t.offset!=`number`||!Number.isFinite(t.offset)||t.offset<1||!Array.isArray(t.lines)||t.lines.length===0?null:{start:t.offset,count:t.lines.length}}function Ie(e){let t=e.limit;return typeof t==`number`&&Number.isFinite(t)&&t>0?{count:Math.floor(t),est:!0}:void 0}function Le(e,t){let n=Fe(e);return n===null?Ie(t):{start:n.start,count:n.count}}function Re(e){let t=e?.pattern;if(typeof t!=`string`||t===``)return;let n=e?.include;return typeof n==`string`&&n!==``?`${t} (${n})`:t}function ze(e){if(typeof e!=`object`||!e)return null;let t=e;if(t.truncated!==!1)return null;let n=[];if(t.shape===`matches`&&Array.isArray(t.files))for(let e of t.files){if(typeof e!=`object`||!e)continue;let t=e;typeof t.path==`string`&&t.path!==``&&Array.isArray(t.matches)&&n.push({path:t.path,hits:t.matches.length})}else if(t.shape===`paths`&&Array.isArray(t.paths))for(let e of t.paths)typeof e==`string`&&e!==``&&n.push({path:e,hits:0});return n.length>0?n:null}function Be(e){let t=b(e.tool)?De(e.argsRaw):null,n=Ae(e.tool,t);if(n===null)return[];let r={seq:e.seq,kind:n,tool:e.tool,err:e.err===!0,added:0,removed:0,path:``,...e.time===void 0?{}:{time:e.time},...e.gone===void 0?{}:{gone:e.gone},...e.parent===void 0?{}:{parent:e.parent},...e.program===void 0?{}:{program:e.program}};if(n===`search`){let n=ze(e.meta);if(n!==null){let i=Re(t),a=t===null?null:Me(e.tool,t),o=t!==null&&typeof t.path==`string`&&t.path!==``;return[...a!==null&&!n.some(e=>e.path===a)?[{...r,path:a,...o&&i!==void 0?{detail:i}:{},...o?{}:{pattern:!0}}]:[],...n.map(e=>({...r,path:e.path,...i===void 0?{}:{detail:i},...e.hits>0?{hits:e.hits}:{}}))]}}if(t===null)return[];let i=Me(e.tool,t);if(i===null)return[];let{added:a,removed:o}=Pe(e.tool,t),s=typeof t.path==`string`&&t.path!==``,c=n===`search`&&s?Re(t):void 0,l=n===`read`?Le(e.meta,t):void 0;return[{...r,path:i,added:a,removed:o,...c===void 0?{}:{detail:c},...l===void 0?{}:{read:l},...n===`search`&&!s?{pattern:!0}:{}}]}function Ve(e,t){let n=0,r=e.length,i;for(let a=e.length-1;a>=0;a--){let o=e[a].turn;if(o!==i){if(n>=t)break;n++,i=o}r=a}return e.slice(r)}function S(e){let t=0,n;for(let r of e)r.turn!==n&&(t++,n=r.turn);return t}function He(e,t){if(e.turnRuns=e.turnRuns??S(e.requests),e.turnRuns>t.maxKeptTurns&&(e.requests=Ve(e.requests,t.maxKeptTurns),e.turnRuns=S(e.requests)),e.requests.length>t.maxRequestSteps&&(e.requests=e.requests.slice(-t.maxRequestSteps),e.turnRuns=S(e.requests)),e.events.length>t.maxEvents&&(e.events=e.events.slice(-t.maxEvents)),e.spans.length>Ue&&(e.spans=e.spans.slice(-Ue)),e.fileOps.length>t.maxFileOps){let n=e.fileOps.length-t.maxFileOps;e.fileOpsFloor=Math.max(e.fileOpsFloor??0,e.fileOps[n-1].seq),e.fileOps=e.fileOps.slice(n)}if(e.archived.length>0){let n=0,r=e.requests.length>0?e.requests[0].seq:void 0;if(r!==void 0)for(;n<e.archived.length&&(e.archived[n].gone??1/0)<=r;)n++;if(e.archived.length-n>t.maxArchiveNodes&&(n=e.archived.length-t.maxArchiveNodes),n>0){let t=e.archived[n-1].gone;t!==void 0&&(e.archiveFloor=Math.max(e.archiveFloor??0,t)),e.archived=e.archived.slice(n)}}}const Ue=2e3;function We(){return{surface:[],sums:{user:0,inject:0,skill:0,assistant:0,tool:0},systemTokens:0,toolsTokens:0,requests:[],turnRuns:0,events:[],archived:[],callNames:{},fileOps:[],spans:[]}}const Ge={"deepseek-official":`deepseek`,"deepseek-account":`deepseek`,"kimi-coding":`moonshotai`,"minimax-cn":`minimax`,"zai-coding-cn":`zhipuai`};function Ke(e){return Ge[e]??e}function qe(e){return Ke(e)===`deepseek`}function C(e){if(typeof e==`number`)return Number.isFinite(e)?Math.max(0,Math.round(e)):null;if(typeof e==`string`&&e.trim()!==``){let t=Number(e);return Number.isFinite(t)?Math.max(0,Math.round(t)):null}return null}function Je(e){let t=new Date(e),n=t.getUTCDay();if(n===0||n===6)return!1;let r=t.getUTCHours();return r>=1&&r<4||r>=6&&r<10}function Ye(e,t,n,r,i){let a=qe(t)&&!Je(r)?`off`:`peak`,o=e?.[t]??{},s=o[n]??{},c=s[a]??{uncached:0,cacheRead:0,cacheWrite:0,output:0},l={...s};l[a]={uncached:c.uncached+i.uncached,cacheRead:c.cacheRead+i.cacheRead,cacheWrite:c.cacheWrite+i.cacheWrite,output:c.output+i.output};let u={...o,[n]:l};return{...e??{},[t]:u}}function Xe(e){let t={};for(let n in e){let r={};for(let t in e[n]){let i=e[n][t],a={};i.peak!==void 0&&(a.peak={...i.peak}),i.off!==void 0&&(a.off={...i.off}),r[t]=a}t[n]=r}return t}function Ze(e,t,n){let r=e.model;r!==void 0&&(e.cost=Ye(e.cost,e.provider??``,r,t,n))}const Qe=[`reasoning`,`text`,`toolarg`];function w(e,t){return!Number.isFinite(e)||!Number.isFinite(t)?0:Math.max(0,t-e)}function T(e){return e.timing===void 0&&(e.timing={wallMs:0,ttftMs:0,genMs:0,calls:0,toolsMs:0,toolCalls:0,tools:{}}),e.timing}const $e={reasoning:{ms:`reasoningMs`,n:`reasoningBlocks`},text:{ms:`textMs`,n:`textBlocks`},toolarg:{ms:`toolArgMs`,n:`toolArgBlocks`}};function et(e,t,n,r){let i=$e[t];n>0&&(e[i.ms]=(e[i.ms]??0)+n),r>0&&(e[i.n]=(e[i.n]??0)+r)}function tt(e,t,n){if(t===`__proto__`)return;if(!Object.hasOwn(e.tools,t)){if(Object.keys(e.tools).length>=16){let t=``,n=1/0;for(let r in e.tools)e.tools[r].ms<n&&(n=e.tools[r].ms,t=r);let r={};for(let n in e.tools)n!==t&&(r[n]=e.tools[n]);e.tools=r}e.tools[t]={calls:1,ms:n};return}let r=e.tools[t];e.tools[t]={calls:r.calls+1,ms:r.ms+n}}function nt(e){let t=e.sums.user+e.sums.inject+e.sums.skill+e.sums.assistant+e.sums.tool,n={ok:!0,...e.model===void 0?{}:{model:e.model},...e.provider===void 0?{}:{provider:e.provider},...e.contextWindow===void 0?{}:{contextWindow:e.contextWindow},...e.maxOutputTokens===void 0?{}:{maxOutputTokens:e.maxOutputTokens},current:{system:e.systemTokens,tools:e.toolsTokens,user:e.sums.user,inject:e.sums.inject,skill:e.sums.skill,assistant:e.sums.assistant,tool:e.sums.tool,total:t+e.systemTokens+e.toolsTokens},images:e.surface.reduce((e,t)=>e+(t.imgs??0),0),toolCalls:e.surface.reduce((e,t)=>t.cat===`tool`||t.cat===`skill`&&t.tool!==void 0?e+1:e,0),humanInputs:e.humanInputs??0,answers:e.answers??0,...e.lastUser===void 0?{}:{lastUser:e.lastUser},requests:[],events:[],nodes:[],droppedNodes:0,archive:[]};if(e.cost!==void 0&&(n.cost=Xe(e.cost)),e.timing!==void 0){let t={};for(let n in e.timing.tools)t[n]={...e.timing.tools[n]};n.timing={...e.timing,tools:t}}return e.systems!==void 0&&e.systems.length>0&&(n.systems=e.systems.map(e=>({...e}))),n}function rt(e,t){let n={requests:e.requests.map(e=>({...e})),events:e.events.map(e=>({...e})),nodes:[],droppedNodes:0,archive:e.archived.map(e=>({...e})),fileOps:e.fileOps.map(e=>({...e})),...e.fileOpsFloor===void 0?{}:{fileOpsFloor:e.fileOpsFloor},spans:e.spans.map(e=>({...e}))},r=Math.max(0,e.surface.length-t.maxNodes),i=e.surface.slice(0,r),a=e.surface.slice(r),o=i.filter(e=>e.cat===`inject`||e.cat===`skill`);if(n.nodes=o.length>0?[...o,...a]:a,n.droppedNodes=r-o.length,n.droppedNodes>0){let e=0;for(let t of i)t.cat!==`inject`&&t.cat!==`skill`&&(e=Math.max(e,t.seq));n.surfaceFloor=e}e.archiveFloor!==void 0&&(n.archiveFloor=e.archiveFloor);let s=n.requests,c=n.events,l=0;for(let e of c){for(;l<s.length&&s[l].seq<=e.seq;)l++;let t=s.at(l),n=l>0?s.at(l-1):void 0;t!==void 0&&typeof t.turn==`number`&&typeof t.step==`number`&&(e.turn=t.turn,e.step=t.step),n!==void 0&&typeof n.turn==`number`&&typeof n.step==`number`&&(e.fromTurn=n.turn,e.fromStep=n.step)}return n}function it(e){let t=nt(e),n=new Set;for(let t of e.requests)n.add(t.turn??0);let r=0,i=0,a=0,o=new Set;for(let t of e.events)t.kind===`inject`?r++:t.kind===`compaction`?i++:t.kind===`prune`&&a++,t.sub===`skill`&&typeof t.name==`string`&&t.name!==``&&o.add(t.name);t.counts={turns:n.size,steps:e.requests.length,injects:r,compactions:i,prunes:a,skills:o.size};let s=e.requests.at(-1);return s!==void 0&&(t.last={seq:s.seq,total:s.total,...typeof s.prompt==`number`?{prompt:s.prompt}:{}}),t.detailRev=e.detailRev??0,t}function at(e,t){return{rev:e.detailRev??0,head:it(e),...rt(e,t)}}function ot(e,t){return{...nt(e),...rt(e,t)}}function st(e,t){if(e===`assistant/message`)return`assistant`;if(e===`tool/result`)return`tool`;if(e===`developer/message`)return`inject`;let n=t?.source?.kind;return n===`skill-invocation`||n===`skill-catalog`?`skill`:ye(t?.source)?`inject`:`user`}function E(e){e.detailRev=(e.detailRev??0)+1}function ct(e){for(let t=e.length-1;t>=0;t--)if(e[t].tokens>0)return e[t].tokens;return 0}function lt(e,t){let n=[...e.systems??[],t];e.systems=n.length>8?n.slice(-8):n,e.systemTokens=ct(e.systems)}function ut(e){if(typeof e==`string`)return e;if(e!=null)try{return JSON.stringify(e)}catch{return}}function dt(e,t){for(let n of t)e.fileOps.push(n)}function ft(e,t,n){let r=e.pendingCodeOps??{},i=0;for(let e in r)i+=r[e].length;i+n.length>200||(e.pendingCodeOps={...r,[t]:[...r[t]??[],...n]})}function pt(e,t,n){for(let r of t)e.archived.push({...r,gone:n})}function mt(e,t,n){if(t.size===0)return[];let r=[],i=[];for(let n of e.surface)t.has(n.seq)?(e.sums[n.cat]-=n.tokens,i.push(n)):r.push(n);return pt(e,i,n),e.surface=r,i}function ht(e){let t=e?.message;return typeof t==`object`&&t?t:null}function gt(e){if(!Array.isArray(e))return``;for(let t of e){if(typeof t!=`object`||!t)continue;let e=t;if(e.type===`text`&&typeof e.text==`string`&&e.text!==``)return e.text}return``}function _t(e){let t=gt(typeof e==`object`&&e?e.content:void 0).match(/<skill_content\s+name="([^"]+)"/);return t===null?``:t[1]}function D(e,t,n,r){let i=st(n,r??void 0),a={seq:t.seq,time:t.time,cat:i,tokens:me(r,n===`assistant/message`||n===`developer/message`)},o=ge(r?.content);o>0&&(a.imgs=o);let s=r?.source,c=s?.form;if(typeof c==`string`&&(a.form=c),n===`assistant/message`){let e=y(r?.content);if(e!==``)a.text=e;else{let e=_e(r?.content);e.length>0&&(a.calls=e.slice(0,3))}}else if(n===`tool/result`){let n=s?.callId,i=typeof n==`string`?e.callNames[n]:void 0;if(i!==void 0){a.tool=i.name;let n=T(e),r=w(i.start,t.time);n.toolsMs+=r,n.toolCalls+=1,tt(n,i.name,r),e.stepStart!==void 0&&(e.stepSpans=[...e.stepSpans??[],{kind:`tools`,start:i.start,end:t.time}])}if(typeof n==`string`){let t={};for(let r in e.callNames)r!==n&&(t[r]=e.callNames[r]);e.callNames=t}r?.isError===!0&&(a.err=!0)}else if(s?.kind===`skill-invocation`)a.skill=typeof s.name==`string`?s.name:`?`;else if(s?.kind===`plugin`){if(s.form===`notice`&&typeof s.summary==`string`)a.text=s.summary;else if(s.form===`snapshot`&&Array.isArray(s.sections))a.text=s.sections.map(e=>e?.name).filter(Boolean).join(`, `).slice(0,80);else{let e=y(r?.content);e!==``&&(a.text=e)}}else{let e=y(r?.content);e!==``&&(a.text=e)}let l=e.pendingShadowedSeqs,u=e.pendingShadowEventSeq;delete e.pendingShadowedSeqs,delete e.pendingShadowEventSeq;let d=Ee(t.surfaceOp);if(d!==null){if(Array.isArray(l)&&l.length>0){let n=mt(e,new Set(l),t.seq);if(e.sums[i]+=a.tokens,e.surface.push(a),u!==void 0){let t=n.reduce((e,t)=>e+t.tokens,0),r=e.events.findIndex(e=>e.seq===u);r>=0&&(e.events[r]={...e.events[r],tokens:Math.max(0,t-a.tokens)})}return a}let n=-1,r=-1;for(let t=0;t<e.surface.length;t++)if(n<0&&e.surface[t].seq===d.start&&(n=t),e.surface[t].seq===d.end){r=t;break}if(n>=0&&r>=n){let o=e.surface.splice(n,r-n+1,a);pt(e,o,t.seq);for(let t of o)e.sums[t.cat]-=t.tokens;return e.sums[i]+=a.tokens,a}}return e.surface.push(a),e.sums[i]+=a.tokens,a}const vt=`ask_user_question`,yt=[`surface`,`sums`,`requests`,`events`,`archived`,`callNames`,`fileOps`,`timing`];function bt(e,t,r){let i,a=(t=yt)=>{i={...e};for(let n of t)n===`surface`?i.surface=[...e.surface]:n===`sums`?i.sums={...e.sums}:n===`requests`?i.requests=[...e.requests]:n===`events`?i.events=[...e.events]:n===`archived`?i.archived=[...e.archived]:n===`callNames`?i.callNames={...e.callNames}:n===`fileOps`?i.fileOps=[...e.fileOps]:e.timing!==void 0&&(i.timing={...e.timing,tools:{...e.timing.tools}});return i},o=t.data;try{switch(t.type){case`request/header`:{let e=o?.header??{},n=Array.isArray(e.tools)?e.tools:[],r=a([`events`]);r.toolsTokens=fe(n),e.config&&typeof e.config.model==`string`&&(r.model=e.config.model),e.config&&typeof e.config.provider==`string`&&(r.provider=e.config.provider);let i=e.config?.maxTokens;typeof i==`number`&&Number.isFinite(i)&&i>0?r.maxOutputTokens=i:delete r.maxOutputTokens,(o?.reason===`change`||o?.reason===`resume`)&&r.model&&r.lastModel&&r.model!==r.lastModel&&(r.events.push({seq:t.seq,time:t.time,kind:`model`,from:r.lastModel,to:r.model}),E(r)),r.model&&(r.lastModel=r.model);break}case`system/message`:{let e=a([`surface`,`sums`,`archived`]);delete e.pendingShadowedSeqs,delete e.pendingShadowEventSeq;let n=Ee(t.surfaceOp);if(n!==null){e.systems=(e.systems??[]).filter(e=>e.seq<n.start||e.seq>n.end);let r=new Set;for(let t of e.surface)t.seq>=n.start&&t.seq<=n.end&&r.add(t.seq);mt(e,r,t.seq).length>0&&E(e)}lt(e,{seq:t.seq,time:t.time,tokens:ae(ht(o)?.content)});break}case`request/context`:{let e=a([]);o&&typeof o.contextWindow==`number`&&(e.contextWindow=o.contextWindow),o&&typeof o.model==`string`&&(e.model=o.model),o&&typeof o.provider==`string`&&(e.provider=o.provider);break}case`tool/call`:if(o&&typeof o.callId==`string`&&typeof o.name==`string`){let e=a([`callNames`]),n=je(o.name)?ut(o.arguments):void 0;e.callNames[o.callId]={name:o.name,start:t.time,...n===void 0?{}:{argsRaw:n}}}break;case`tool/ptc-dispatch`:{let e=o?.rootCallId,n=o?.name;if(typeof e==`string`&&typeof n==`string`){let r=b(n)?ut(o?.arguments):void 0,i=Be({seq:t.seq,time:t.time,tool:n,argsRaw:r,err:o?.isError===!0});i.length>0&&ft(a([]),e,i)}break}case`assistant/attempt`:{let t=e.stepStart;if(t===void 0||t.firstToken!==void 0)return e;let n=Te(o?.stream);if(n===void 0)return e;let r=a([]);r.stepStart={time:t.time,firstToken:n};break}case`step/start`:{let e=a([]);e.stepStart={time:t.time},delete e.stepSpans,delete e.stepWaits,delete e.stepApprovals,delete e.stepRequestSeq;break}case`step/end`:{let n=e.stepStart;if(n===void 0)return e;let r=a(e.stepRequestSeq===void 0?[`timing`]:[`timing`,`requests`]);T(r).wallMs+=w(n.time,t.time);let i=[...e.stepWaits??[]];for(let n in e.stepApprovals)i.push({start:e.stepApprovals[n],end:t.time});i.sort((e,t)=>e.start-t.start||e.end-t.end);let o=0,s=n.time;for(let e of i){let n=Math.max(s,e.start),r=Math.min(e.end,t.time);r>n&&(o+=r-n,s=r)}let c=w(n.time,t.time)-o,l=e.requests.at(-1);l!==void 0&&l.seq===e.stepRequestSeq&&(r.requests[r.requests.length-1]={...l,activeMs:c});let u=[];for(let r of e.stepSpans??[]){let e=Math.max(n.time,r.start),i=Math.min(t.time,r.end);i>e&&u.push({kind:r.kind,start:e,end:i})}u.sort((e,t)=>e.start-t.start||e.end-t.end);let d=[],f=n.time;for(let e of u){let t=Math.max(f,e.start);e.end<=t||(t>f&&d.push({kind:`other`,start:f,end:t}),d.push({kind:e.kind,start:t,end:e.end}),f=e.end)}t.time>f&&d.push({kind:`other`,start:f,end:t.time}),r.spans=[...e.spans,...d],delete r.stepStart,delete r.stepSpans,delete r.stepWaits,delete r.stepApprovals,delete r.stepRequestSeq,E(r);break}case`approval/asked`:{let n=o?.id;if(e.stepStart===void 0||typeof n!=`string`)return e;let r=a([]);r.stepApprovals={...e.stepApprovals,[n]:t.time};break}case`approval/decided`:{let n=o?.id,r=e.stepApprovals,i=typeof n==`string`?r?.[n]:void 0;if(r===void 0||i===void 0)return e;let s=a([]);s.stepWaits=[...e.stepWaits??[],{start:i,end:t.time}];let c={};for(let e in r)e!==n&&(c[e]=r[e]);Object.keys(c).length>0?s.stepApprovals=c:delete s.stepApprovals;break}case`user/message`:case`developer/message`:{let r=t.type===`developer/message`,i=r?ht(o):n(t);if(r&&(i===null||!Array.isArray(i.content)))return e;let s=a([`surface`,`sums`,`archived`,`events`]);E(s);let c=D(s,t,t.type,i),l=i?.source;if(r||ye(l)){let e={seq:t.seq,time:t.time,kind:`inject`,form:typeof l?.form==`string`&&l.form!==``?l.form:`context`,tokens:c.tokens};if(l?.kind===`skill-invocation`)e.sub=`skill`,e.name=typeof l.name==`string`?l.name:`?`;else{let t=ve(l);t!==``&&(e.name=t,c.name=t),l?.form===`notice`&&typeof l.summary==`string`&&l.summary!==``&&(e.detail=l.summary)}s.events.push(e)}else s.humanInputs=(s.humanInputs??0)+1,c.text!==void 0&&c.text!==``&&(s.lastUser=c.text);break}case`tool/result`:{let r=n(t),i=r?.source?.callId,s=typeof i==`string`?e.callNames[i]:void 0,c=typeof i==`string`?e.pendingCodeOps?.[i]:void 0,l=a([`surface`,`sums`,`archived`,`events`,`fileOps`,`timing`]);E(l);let u=D(l,t,t.type,r);if(u.tool===vt&&(l.humanInputs=(l.humanInputs??0)+1),s!==void 0&&s.name===vt&&e.stepStart!==void 0&&(l.stepWaits=[...e.stepWaits??[],{start:s.start,end:t.time}]),s!==void 0&&dt(l,Be({seq:t.seq,time:t.time,tool:s.name,argsRaw:s.argsRaw,meta:o?.meta,err:r?.isError===!0})),c!==void 0&&c.length>0){let e=De(s?.argsRaw)?.description;dt(l,c.map(n=>({...n,parent:t.seq,...typeof e==`string`&&e!==``?{program:e}:{}})));let n={};for(let e in l.pendingCodeOps)e!==i&&(n[e]=l.pendingCodeOps[e]);Object.keys(n).length>0?l.pendingCodeOps=n:delete l.pendingCodeOps}if(u.tool===`skill`||u.tool===void 0){let e=_t(r);e!==``&&(u.skill=e,u.tool===void 0&&(u.tool=`skill`),l.sums.tool-=u.tokens,u.cat=`skill`,l.sums.skill+=u.tokens,l.events.push({seq:t.seq,time:t.time,kind:`inject`,form:`instructions`,sub:`skill`,name:e,tokens:u.tokens}))}break}case`assistant/message`:{let r=o?.usage,i=a([`surface`,`sums`,`archived`,`events`,`requests`,`timing`]);E(i);let s=i.systemTokens+i.toolsTokens+i.sums.user+i.sums.inject+i.sums.skill+i.sums.assistant+i.sums.tool,c={time:t.time,seq:t.seq,system:i.systemTokens,tools:i.toolsTokens,user:i.sums.user,inject:i.sums.inject,skill:i.sums.skill,assistant:i.sums.assistant,tool:i.sums.tool,total:s};o&&typeof o.turn==`number`&&(c.turn=o.turn),o&&typeof o.step==`number`&&(c.step=o.step),e.stepStart!==void 0&&(i.stepRequestSeq=c.seq);let l=null;if(typeof r==`object`&&r){let e=C(r.inputTokens),n=C(r.cacheReadTokens),a=C(r.cacheWriteTokens);l=C(r.outputTokens),(e!==null||n!==null||a!==null||l!==null)&&(c.prompt=(e??0)+(n??0)+(a??0),n!==null&&(c.cacheRead=n),l!==null&&(c.output=l),Ze(i,t.time,{uncached:e??0,cacheRead:n??0,cacheWrite:a??0,output:l??0}))}i.requests.push(c);let u=e.requests.at(-1);i.turnRuns=(e.turnRuns??S(e.requests))+(u===void 0?c.turn===void 0?0:1:c.turn===u.turn?0:1);let d=T(i);d.calls+=1;let f=e.stepStart;if(f!==void 0){let e=f.firstToken??Te(o?.stream);if(e!==void 0){let n=Ce(o?.stream,t.time),r=e;for(let e of n)r=Math.min(r,e.start);d.ttftMs+=w(f.time,r),d.genMs+=w(r,t.time);let a=[{kind:`ttft`,start:f.time,end:r}];for(let e of n){let n=Math.min(t.time,e.end);n<=e.start||a.push({kind:e.kind,start:a.length===1?r:e.start,end:n})}i.stepSpans=[...i.stepSpans??[],...a],l!==null&&(d.speedMs=(d.speedMs??0)+w(e,t.time),d.speedTokens=(d.speedTokens??0)+l);let s=Se(o?.stream,t.time);for(let e of Qe)et(d,e,s.spans[e],s.blocks[e])}}let p=n(t);D(i,t,t.type,p).text!==void 0&&(i.answers=(i.answers??0)+1);break}case`session/end-seed`:{if(o?.inherited!==!0)break;let e=a([]);e.cost={};break}case`plan/mode`:if(o&&typeof o.active==`boolean`){let e=a([`events`]);e.events.push({seq:t.seq,time:t.time,kind:`mode`,name:o.active?`plan.on`:`plan.off`}),E(e)}break;case`compaction/summary`:case`compaction/prune`:{let e=a([`events`]);E(e),o&&Array.isArray(o.shadowedSeqs)&&(e.pendingShadowedSeqs=o.shadowedSeqs.filter(e=>typeof e==`number`),e.pendingShadowEventSeq=t.seq),e.events.push({seq:t.seq,time:t.time,kind:t.type===`compaction/summary`?`compaction`:`prune`,tokens:o&&typeof o.shadowedTokenCount==`number`?o.shadowedTokenCount:0,...t.type===`compaction/summary`&&o&&Array.isArray(o.shadowedSeqs)?{count:o.shadowedSeqs.length}:{}});break}default:return e}}catch{i=void 0}return i===void 0?e:(He(i,r),i)}const O={maxRequestSteps:1500,maxKeptTurns:300,maxEvents:400,maxNodes:2e3,maxArchiveNodes:400,maxFileOps:400};function k(e){let t=e.volatile;return typeof t==`function`?t.call(e):e}function A(e){return i.number().min(1).step(1).default(e)}const xt=i.object({maxRequestSteps:A(O.maxRequestSteps),maxKeptTurns:A(O.maxKeptTurns),maxEvents:A(O.maxEvents),maxNodes:A(O.maxNodes),maxArchiveNodes:A(O.maxArchiveNodes),maxFileOps:A(O.maxFileOps),defaultPlacement:k(i.union([`all`,`tab`,`sidebar`]).default(`all`).loose()),defaultGranularity:k(i.union([`step`,`turn`]).default(`step`).loose()),defaultTrendMode:k(i.union([`total`,`delta`]).default(`total`).loose()),defaultDeltaBase:k(i.union([`step`,`turn`]).default(`step`).loose()),defaultToolSort:k(i.union([`size`,`count`,`name`]).default(`count`).loose()),defaultFileSort:k(i.union([`count`,`latest`,`path`,`name`]).default(`count`).loose()),insightsEntry:k(i.union([`show`,`hide`]).default(`show`).loose()),defaultDurationCurve:k(i.union([`show`,`hide`]).default(`show`).loose()),fleetTab:k(i.union([`show`,`hide`]).default(`show`).loose()),promptPrefix:k(i.string().default(``).loose()),promptSuffix:k(i.string().default(``).loose())});function St(e){let t=xt(e??{});return{maxRequestSteps:t.maxRequestSteps,maxKeptTurns:t.maxKeptTurns,maxEvents:t.maxEvents,maxNodes:t.maxNodes,maxArchiveNodes:t.maxArchiveNodes,maxFileOps:t.maxFileOps}}const j=t.object({seq:t.number().int().nonnegative(),time:t.number().optional(),cat:t.enum([`user`,`inject`,`skill`,`assistant`,`tool`]),tokens:t.number().int().nonnegative(),imgs:t.number().int().nonnegative().optional(),gone:t.number().int().nonnegative().optional(),form:t.string().optional(),name:t.string().optional(),text:t.string().optional(),tool:t.string().optional(),err:t.boolean().optional(),skill:t.string().optional(),calls:t.array(t.string()).optional()}).strict(),Ct=t.object({seq:t.number().int().nonnegative(),time:t.number(),tokens:t.number().int().nonnegative()}).strict(),wt=t.object({turn:t.number().optional(),step:t.number().optional(),time:t.number(),seq:t.number(),system:t.number().int().nonnegative(),tools:t.number().int().nonnegative(),user:t.number().int().nonnegative(),inject:t.number().int().nonnegative(),assistant:t.number().int().nonnegative(),tool:t.number().int().nonnegative(),total:t.number().int().nonnegative(),prompt:t.number().int().nonnegative().optional(),skill:t.number().int().nonnegative().optional(),cacheRead:t.number().int().nonnegative().optional(),output:t.number().int().nonnegative().optional(),activeMs:t.number().nonnegative().optional(),stepCount:t.number().int().positive().optional()}).strict(),Tt=t.object({seq:t.number(),time:t.number(),kind:t.enum([`compaction`,`prune`,`inject`,`model`,`mode`]),form:t.string().optional(),tokens:t.number().optional(),count:t.number().optional(),sub:t.string().optional(),name:t.string().optional(),detail:t.string().optional(),from:t.string().optional(),to:t.string().optional(),fromTurn:t.number().optional(),fromStep:t.number().optional(),turn:t.number().optional(),step:t.number().optional()}).strict(),M=t.object({seq:t.number().int().nonnegative(),path:t.string(),kind:t.enum([`read`,`write`,`search`]),tool:t.string(),time:t.number().optional(),err:t.boolean(),added:t.number().int().nonnegative(),removed:t.number().int().nonnegative(),detail:t.string().optional(),hits:t.number().int().positive().optional(),read:t.union([t.object({start:t.number().int().positive(),count:t.number().int().nonnegative()}).strict(),t.object({count:t.number().int().positive(),est:t.literal(!0)}).strict()]).optional(),parent:t.number().int().nonnegative().optional(),program:t.string().optional(),pattern:t.literal(!0).optional(),gone:t.number().int().nonnegative().optional()}).strict(),N=t.object({kind:t.enum([`ttft`,`reasoning`,`text`,`toolarg`,`tools`,`other`]),start:t.number(),end:t.number()}).strict(),Et=t.object({system:t.number().int().nonnegative(),tools:t.number().int().nonnegative(),user:t.number().int().nonnegative(),inject:t.number().int().nonnegative(),skill:t.number().int().nonnegative(),assistant:t.number().int().nonnegative(),tool:t.number().int().nonnegative(),total:t.number().int().nonnegative()}).strict(),Dt=t.object({uncached:t.number().int().nonnegative(),cacheRead:t.number().int().nonnegative(),cacheWrite:t.number().int().nonnegative(),output:t.number().int().nonnegative()}).strict(),Ot=t.object({peak:Dt.optional(),off:Dt.optional()}).strict(),kt=t.record(t.string(),Ot),P=t.record(t.string(),kt),At=t.object({calls:t.number().int().nonnegative(),ms:t.number().nonnegative()}).strict(),jt=t.object({wallMs:t.number().nonnegative(),ttftMs:t.number().nonnegative(),genMs:t.number().nonnegative(),reasoningMs:t.number().nonnegative().optional(),reasoningBlocks:t.number().int().nonnegative().optional(),textMs:t.number().nonnegative().optional(),textBlocks:t.number().int().nonnegative().optional(),toolArgMs:t.number().nonnegative().optional(),toolArgBlocks:t.number().int().nonnegative().optional(),speedTokens:t.number().nonnegative().optional(),speedMs:t.number().nonnegative().optional(),calls:t.number().int().nonnegative(),toolsMs:t.number().nonnegative(),toolCalls:t.number().int().nonnegative(),tools:t.record(t.string(),At)}).strict(),Mt=t.object({current:t.string(),minimum:t.string()}).strict(),Nt=t.object({turns:t.number().int().nonnegative(),steps:t.number().int().nonnegative(),injects:t.number().int().nonnegative(),compactions:t.number().int().nonnegative(),prunes:t.number().int().nonnegative(),skills:t.number().int().nonnegative().optional()}).strict(),Pt=t.object({seq:t.number(),total:t.number().int().nonnegative(),prompt:t.number().int().nonnegative().optional()}).strict(),Ft=t.object({ok:t.literal(!0),unsupported:Mt.optional(),model:t.string().optional(),provider:t.string().optional(),contextWindow:t.number().optional(),maxOutputTokens:t.number().positive().optional(),current:Et,images:t.number().int().nonnegative().optional(),toolCalls:t.number().int().nonnegative().optional(),humanInputs:t.number().int().nonnegative().optional(),answers:t.number().int().nonnegative().optional(),lastUser:t.string().optional(),counts:Nt.optional(),last:Pt.optional(),detailRev:t.number().int().nonnegative().optional(),requests:t.array(wt).optional(),events:t.array(Tt).optional(),cost:P.optional(),timing:jt.optional(),systems:t.array(Ct).optional(),nodes:t.array(j).optional(),droppedNodes:t.number().int().nonnegative().optional(),archive:t.array(j).optional(),surfaceFloor:t.number().int().nonnegative().optional(),archiveFloor:t.number().int().nonnegative().optional(),fileOps:t.array(M).optional(),fileOpsFloor:t.number().int().nonnegative().optional(),spans:t.array(N).optional()}).strict(),It=t.object({surface:t.array(j),sums:t.object({user:t.number().int().nonnegative(),inject:t.number().int().nonnegative(),skill:t.number().int().nonnegative(),assistant:t.number().int().nonnegative(),tool:t.number().int().nonnegative()}).strict(),systemTokens:t.number().int().nonnegative(),systems:t.array(Ct).optional(),toolsTokens:t.number().int().nonnegative(),model:t.string().optional(),provider:t.string().optional(),lastModel:t.string().optional(),contextWindow:t.number().optional(),maxOutputTokens:t.number().positive().optional(),requests:t.array(wt),turnRuns:t.number().int().nonnegative().optional(),events:t.array(Tt),archived:t.array(j),cost:P.optional(),archiveFloor:t.number().optional(),timing:jt.optional(),humanInputs:t.number().int().nonnegative().optional(),answers:t.number().int().nonnegative().optional(),lastUser:t.string().optional(),stepStart:t.object({time:t.number(),firstToken:t.number().optional()}).strict().optional(),stepWaits:t.array(t.object({start:t.number(),end:t.number()}).strict()).optional(),stepApprovals:t.record(t.string(),t.number()).optional(),stepRequestSeq:t.number().optional(),callNames:t.record(t.string(),t.object({name:t.string(),start:t.number(),argsRaw:t.string().optional()}).strict()),pendingShadowedSeqs:t.array(t.number()).optional(),pendingShadowEventSeq:t.number().optional(),detailRev:t.number().int().nonnegative().optional(),fileOps:t.array(M),fileOpsFloor:t.number().int().nonnegative().optional(),spans:t.array(N),stepSpans:t.array(N).optional(),pendingCodeOps:t.record(t.string(),t.array(M)).optional()});function Lt(e,t){let n=St(e);return{key:`contextTimeline`,stateSchema:It,wire:{viewSchema:Ft,view:e=>t()?it(e):ot(e,n)},init:()=>We(),apply:(e,t)=>bt(e,t,n),stateVersion:28}}function Rt(e){if(!Number.isFinite(e))return null;let t=new Date(e),n=t.getFullYear();return!Number.isFinite(n)||n<1970||n>9999?null:`${String(n).padStart(4,`0`)}-${String(t.getMonth()+1).padStart(2,`0`)}-${String(t.getDate()).padStart(2,`0`)}`}const zt=t.object({n:t.number().int().nonnegative(),last:t.number()}).strict(),Bt=t.object({tokens:t.number().int().nonnegative(),requests:t.number().int().nonnegative(),cost:P.optional(),skills:t.record(t.string(),zt).optional()}).strict(),Vt=t.object({days:t.record(t.string(),Bt)}).strict(),Ht=t.object({days:t.record(t.string(),Bt),model:t.string().optional(),provider:t.string().optional(),stepStart:t.number().optional(),skillCalls:t.array(t.string()).optional()});function Ut(e){if(typeof e!=`object`||!e)return null;let t=e,n=C(t.inputTokens),r=C(t.cacheReadTokens),i=C(t.cacheWriteTokens),a=C(t.outputTokens);return n===null&&r===null&&i===null&&a===null?null:{uncached:n??0,cacheRead:r??0,cacheWrite:i??0,output:a??0}}function Wt(e,t,n){let r={...e.days,[t]:n},i=Object.keys(r);if(i.length>400){i.sort();let e=new Set(i.slice(0,i.length-400));r=Object.fromEntries(Object.entries(r).filter(([t])=>!e.has(t)))}return{...e,days:r}}function Gt(e,t,n){let r=Rt(n);if(r===null)return e;let i=e.days[r],a=i?.skills?.[t];if(a===void 0&&i?.skills!==void 0&&Object.keys(i.skills).length>=100)return e;let o={...i?.skills,[t]:{n:(a?.n??0)+1,last:a===void 0?n:Math.max(a.last,n)}};return Wt(e,r,{tokens:i?.tokens??0,requests:i?.requests??0,...i?.cost===void 0?{}:{cost:i.cost},skills:o})}function Kt(e){let t=e.data,n=e.type===`developer/message`?t?.message:t,r=typeof n==`object`&&n?n.source:void 0;if(typeof r!=`object`||!r)return``;let i=r;return i.kind===`skill-invocation`&&typeof i.name==`string`?i.name:``}function qt(e){if(typeof e!=`object`||!e)return null;let t=e;if(typeof t.toolCallId==`string`&&t.toolCallId!==``)return t.toolCallId;let n=t.source;if(typeof n!=`object`||!n)return null;let r=n.callId;return typeof r==`string`&&r!==``?r:null}function Jt(e,t){if(t.type===`request/header`){let n=t.data?.header?.config;if(typeof n!=`object`||!n)return e;let r=typeof n.model==`string`?n.model:void 0,i=typeof n.provider==`string`?n.provider:void 0,a=r===void 0?e.model:r,o=i===void 0?e.provider:i;return a===e.model&&o===e.provider?e:{...e,...a===void 0?{}:{model:a},...o===void 0?{}:{provider:o}}}if(t.type===`step/start`)return Number.isFinite(t.time)?e.stepStart===t.time?e:{...e,stepStart:t.time}:e;if(t.type===`step/end`){if(e.stepStart===void 0)return e;let t={...e};return delete t.stepStart,t}if(t.type===`session/end-seed`)return t.data?.inherited===!0?{days:{}}:e;if(t.type===`user/message`||t.type===`developer/message`){let n=Kt(t);return n===``?e:Gt(e,n,t.time)}if(t.type===`tool/call`){let n=t.data,r=n?.callId;if(n?.name!==`skill`||typeof r!=`string`||r===``)return e;let i=e.skillCalls??[];return i.includes(r)?e:{...e,skillCalls:[...i,r].slice(-100)}}if(t.type===`tool/result`){let n=t.data?.message,r=qt(n),i=e.skillCalls;if(r===null||i===void 0||!i.includes(r))return e;let a=i.filter(e=>e!==r),o={...e};a.length>0?o.skillCalls=a:delete o.skillCalls;let s=_t(n);return s===``?o:Gt(o,s,t.time)}if(t.type!==`assistant/message`)return e;let n=e.stepStart===void 0?t.time:e.stepStart,r=Rt(n);if(r===null)return e;let i=t.data,a=Ut(i?.usage),o=e.days[r],s=o?.cost;return a!==null&&e.model!==void 0&&(s=Ye(s,e.provider??``,e.model,n,a)),Wt(e,r,{tokens:(o===void 0?0:o.tokens)+(a===null?0:a.uncached+a.cacheRead+a.cacheWrite+a.output),requests:(o===void 0?0:o.requests)+1,...s===void 0?{}:{cost:s},...o?.skills===void 0?{}:{skills:o.skills}})}function Yt(){return{key:`contextActivity`,stateSchema:Ht,init:()=>({days:{}}),apply:(e,t)=>Jt(e,t),wire:{viewSchema:Vt,view:e=>({days:Object.fromEntries(Object.entries(e.days).map(([e,t])=>[e,{...t,...t.cost===void 0?{}:{cost:Xe(t.cost)},...t.skills===void 0?{}:{skills:Object.fromEntries(Object.entries(t.skills).map(([e,t])=>[e,{...t}]))}}]))})},stateVersion:4}}const Xt=new Set([`png`,`jpg`,`jpeg`,`gif`,`webp`,`bmp`,`ico`,`svg`]);function Zt(e){return e.slice(Math.max(e.lastIndexOf(`/`),e.lastIndexOf(`\\`))+1)}function Qt(e){let t=Zt(e),n=t.lastIndexOf(`.`);return n<0?``:t.slice(n+1).toLowerCase()}function $t(e){return Xt.has(Qt(e))}function F(e){return typeof e==`number`&&Number.isFinite(e)&&e>0?e:void 0}function en(e){if(typeof e!=`object`||!e)return;let t=e,n=F(t.width),r=F(t.height);return n!==void 0&&r!==void 0?{width:n,height:r}:void 0}function tn(e){if(typeof e!=`object`||!e)return null;let t=e,n=typeof t.type==`string`?t.type:t.kind;if(n!==`image`&&n!==`file`||t.attachment===null||typeof t.attachment!=`object`)return null;let r=t.attachment;if(typeof r.attachmentId!=`string`||r.attachmentId===``)return null;let i=typeof r.name==`string`&&r.name!==``?r.name:void 0,a=F(r.bytes);if(n===`file`)return{kind:`file`,attachmentId:r.attachmentId,...i===void 0?{}:{name:i},...a===void 0?{}:{bytes:a}};let o=en(r.originalDimensions),s=F(r.width),c=F(r.height),l=typeof r.mediaType==`string`&&r.mediaType!==``?r.mediaType:void 0;return{kind:`image`,attachmentId:r.attachmentId,...i===void 0?{}:{name:i},...l===void 0?{}:{mediaType:l},...a===void 0?{}:{bytes:a},...s===void 0?{}:{width:s},...c===void 0?{}:{height:c},...o===void 0?{}:{originalDimensions:o}}}function nn(){let e=m();return{used:e.used_heap_size,limit:e.heap_size_limit}}const rn=()=>{};function I(e=nn){let t=()=>{try{let{used:t,limit:n}=e();return!Number.isFinite(t)||!Number.isFinite(n)||n<=0||t<n*.6666666666666666}catch{return!0}},n=Promise.resolve();return{admit(e){let r=n.then(()=>t()?e():void 0);return n=r.then(rn,rn),r}}}function an(e){return typeof e?.fetch?.register==`function`?e.fetch.register.bind(e.fetch):void 0}function L(e,t,n,r,i){let a=an(t);if(a===void 0)return!1;try{e.effect(()=>a({path:n,methods:[`POST`],requestBody:`buffered`,fetch:r}),i)}catch{return!1}return!0}const on={"image/png":`png`,"image/jpeg":`jpg`,"image/webp":`webp`,"image/gif":`gif`};function R(e){return Response.json(e,{headers:{"cache-control":`no-store`}})}function z(e,t){return R({ok:!1,error:{code:e,message:t}})}function sn(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:null}function B(e,t,n){if(n>8)return null;if(Array.isArray(e)){for(let r of e){let e=B(r,t,n+1);if(e!==null)return e}return null}if(typeof e!=`object`||!e)return null;let r=tn(e);if(r!==null&&r.attachmentId===t)return r;for(let r of Object.values(e)){let e=B(r,t,n+1);if(e!==null)return e}return null}function cn(e,t){for(let n of e)try{let e=B(n,t,0);if(e!==null)return e}catch{}return null}function ln(e){let t=Zt(e.name??``);if(t!==``&&$t(t))return t;let n=e.mediaType===void 0?void 0:on[e.mediaType];return n===void 0?null:`attachment.${n}`}function un(e){let t=l(l(l(e)));return c(t)!==`v1`||c(l(t))!==`attachments`?null:d(l(l(t)),`cache`,`dsh-context`,`previews`)}function dn(e,t){if(typeof e?.fileHostPath!=`function`)return null;try{let n=e.fileHostPath({attachmentId:t.attachmentId,name:t.name??``,bytes:t.bytes??0});return typeof n==`string`&&n!==``?n:null}catch{return null}}async function fn(e,t){if(typeof e?.imageHostPath!=`function`)return null;let n;try{n=e.imageHostPath({attachmentId:t.attachmentId,...t.mediaType===void 0?{}:{mediaType:t.mediaType},...t.bytes===void 0?{}:{bytes:t.bytes},...t.width===void 0?{}:{width:t.width},...t.height===void 0?{}:{height:t.height},...t.name===void 0?{}:{name:t.name}})}catch{return null}if(typeof n!=`string`||n===``)return null;let r=ln(t);if(r===null)return null;let i=un(n);if(i===null)return null;let u=d(i,c(l(n)),c(n),r);try{await s(l(u),{recursive:!0});try{await o(n,u)}catch(e){e instanceof Error&&`code`in e&&e.code===`EEXIST`||await a(n,u)}return u}catch{return null}}async function pn(e,t){return t.kind===`file`?dn(e,t):await fn(e,t)}function mn(e,t=I()){e.inject([`connection`],n=>{L(n,n.get(`connection`),`/api/dsh-context/attachment`,async n=>{let r,i;try{let e=sn(await n.json());r=e?.sessionId,i=e?.attachmentId}catch{return z(`dsh-context/bad-request`,`body is not JSON`)}if(typeof r!=`string`||r===``)return z(`dsh-context/bad-request`,`missing sessionId`);if(typeof i!=`string`||i===``)return z(`dsh-context/bad-request`,`missing attachmentId`);try{let n=e.get(`sessionQuery`),a=typeof n?.observeSession==`function`?n.observeSession.bind(n):void 0;if(a===void 0)return R({ok:!0,value:null});let o=e.get(`attachments`);return R({ok:!0,value:await t.admit(async()=>{let e=await a(r,{projectionMode:`none`});try{let t=e?.events;if(!Array.isArray(t))return null;let n=cn(t,i);if(n===null)return null;let r=await pn(o,n);return r===null?null:{path:r}}finally{let t=e?.[Symbol.dispose];typeof t==`function`&&t.call(e)}})??null})}catch(e){return z(`gateway/internal`,e instanceof Error?e.message:String(e))}},`dsh-context: attachment route`)})}function hn(e){if(!e.startsWith(`mcp__`))return;let t=e.lastIndexOf(`__`);if(t<5)return;let n=e.slice(5,t);return n.length>0?n:void 0}function gn(e){let t=hn(e);return t===void 0?void 0:`mcp:${t}`}function _n(e){return vn[e]}const vn=Object.freeze({read:`@deepseek-ai/dsh-tool-fs`,write:`@deepseek-ai/dsh-tool-fs`,edit:`@deepseek-ai/dsh-tool-fs`,read_image:`@deepseek-ai/dsh-tool-fs`,glob:`@deepseek-ai/dsh-tool-fs-search`,grep:`@deepseek-ai/dsh-tool-fs-search`,str_replace_editor:`@deepseek-ai/dsh-tool-str-replace-editor`,bash:`@deepseek-ai/dsh-tool-bash`,pwsh:`@deepseek-ai/dsh-tool-pwsh`,web_search:`@deepseek-ai/dsh-tool-web`,web_fetch:`@deepseek-ai/dsh-tool-web`,job_output:`@deepseek-ai/dsh-tool-jobs`,job_list:`@deepseek-ai/dsh-tool-jobs`,job_kill:`@deepseek-ai/dsh-tool-jobs`,ask_user_question:`@deepseek-ai/dsh-tool-ask-user`,plan:`@deepseek-ai/dsh-plan-mode`,exit_plan_mode:`@deepseek-ai/dsh-plan-mode`,skill:`@deepseek-ai/dsh-tool-skill`,todo_write:`@deepseek-ai/dsh-tool-todo`,subagent:`@deepseek-ai/dsh-tool-subagent`,subagent_fork:`@deepseek-ai/dsh-tool-subagent`,send_message:`@deepseek-ai/dsh-tool-subagent-control`,interrupt_agent:`@deepseek-ai/dsh-tool-subagent-control`,list_agents:`@deepseek-ai/dsh-tool-subagent-control`,ralph:`@deepseek-ai/dsh-tool-ralph`,workflow:`@deepseek-ai/dsh-tool-workflow`,run_code:`@deepseek-ai/dsh-tools`,schedule_create:`@deepseek-ai/dsh-schedule`,schedule_list:`@deepseek-ai/dsh-schedule`,schedule_delete:`@deepseek-ai/dsh-schedule`,create_goal:`@deepseek-ai/dsh-tool-goal`,get_goal:`@deepseek-ai/dsh-tool-goal`,update_goal:`@deepseek-ai/dsh-tool-goal`,lsp:`@deepseek-ai/dsh-tool-lsp`}),yn=f(g(import.meta.url)),V=new Map;function bn(e){let t=l(e);for(let e=0;e<12;e++){let e=V.get(t);if(e!==void 0)return e;let n=d(t,`package.json`);if(h(n))try{let e=JSON.parse(ee(n,`utf8`)).name;if(typeof e==`string`&&e)return V.set(t,e),e}catch{}let r=l(t);if(V.set(t,void 0),r===t)return;t=r}}const xn=/:\d+:\d+$/,Sn=Symbol.for(`cordis.original`);function Cn(e){return e?.[Sn]??e}const wn=bn(yn);function Tn(e){if(e)for(let t of e.split(`
15
15
  `).slice(1)){let e=t.trim();if(!e.startsWith(`at `))continue;e=e.slice(3),e.startsWith(`async `)&&(e=e.slice(6)),e=e.replace(/\)\s*$/,``);let n=xn.exec(e);if(!n)continue;let r=e.slice(0,-n[0].length);if(r.includes(`(`)&&(r=r.slice(r.lastIndexOf(`(`)+1)),r.startsWith(`file://`))try{r=f(g(r))}catch{continue}else if(!/^[A-Za-z]:[\\/]/.test(r)&&!r.startsWith(`/`)&&!r.startsWith(`\\\\`))continue;else r=f(r);if(r===yn)continue;let i=bn(r);if(i!==void 0&&i!==wn)return i}}function En(e){let t=new Map,n=new WeakSet,r=e.fiber.name,i,a=[],o=e=>{if(!e||typeof e!=`object`||n.has(e))return;let o=e.register;if(typeof o!=`function`)return;n.add(e);let s=o.attributedOriginal??o;if(typeof s!=`function`)return;let c=e,l=function(e){let n=e?.name,a=i;(!a||a===`root`||a===r)&&(a=Tn(Error().stack));let o=s.call(this,e);return typeof n==`string`&&a&&a!==`root`&&a!==r&&a!==wn&&(t.set(n,a),typeof o==`function`)?()=>{try{return o()}finally{t.delete(n)}}:o};l.attributedOriginal=s,c.register=l,a.push(()=>{c.register===l&&(c.register=s)})};e.on(`internal/get`,(e,t,n,r)=>{if(t!==`tools`)return r();let a=r();return i=e.fiber.name,o(Cn(a)),a}),e.effect(()=>()=>{for(let e of a.splice(0))e()},`tools.register attribution`);let s=Cn(e.get(`tools`,!1));o(s);let c=new Set;try{let e=s?.layers?.global?.tools;if(e!==void 0&&typeof e.entries==`function`)for(let[t]of e.entries())c.add(t)}catch{}return{ownerOf:e=>gn(e)??t.get(e)??_n(e)??(c.has(e)?`<unknown-plugin>`:void 0)}}function H(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:null}function Dn(e){let t=typeof e==`string`?Number(e):e;return typeof t==`number`&&Number.isFinite(t)&&t>=0?t:null}function On(e){let t=e.get(`settings`);if(typeof t?.describe!=`function`)return null;try{let e=t.describe();if(!Array.isArray(e))return null;let n=null;for(let t of e)try{let e=H(t);if(e===null)continue;let r=H(e.value);if(r===null||typeof r.apiKeyEnv!=`string`||r.apiKeyEnv===``)continue;if(e.ns===`llm-deepseek`||e.ns===`llm-deepseek-api-key`)return r;n??=r}catch{continue}return n}catch{return null}}async function kn(e){let t=On(e);if(t===null)return null;let n=t.apiKeyEnv,r=typeof t.baseURL==`string`&&t.baseURL!==``?t.baseURL:`https://api.deepseek.com`,i=e.get(`credentials`),a=typeof i?.resolve==`function`?i.resolve.bind(i):void 0;if(a===void 0)return null;let o;try{o=await a(n)}catch{return null}let s=typeof o?.value==`string`?o.value:``;return s===``?null:{baseUrl:r,apiKey:s}}function An(e){let t=H(e);if(t===null)return null;let n=Array.isArray(t.balance_infos)?t.balance_infos:[],r=[];for(let e of n)try{let t=H(e);if(t===null)continue;let n=t.currency,i=Dn(t.granted_balance),a=Dn(t.topped_up_balance);if(typeof n!=`string`||n===``||i===null||a===null)continue;r.push({currency:n,total:i+a,granted:i,toppedUp:a})}catch{continue}return r.length>0?{isAvailable:t.is_available===!0,balances:r}:null}let jn=(e,t)=>fetch(e,t),U=null;async function Mn(e){if(U!==null)return U;U=(async()=>{let t=null;try{let n=await jn(e.baseUrl.replace(/\/+$/,``)+`/user/balance`,{headers:{accept:`application/json`,authorization:`Bearer `+e.apiKey},signal:AbortSignal.timeout(1e4)});n.ok&&(t=An(await n.json()))}catch{}return t})();let t=U;try{return await t}finally{U=null}}function Nn(e){e.inject([`connection`],t=>{L(t,t.get(`connection`),`/api/dsh-context/balance`,async()=>{let t=await kn(e),n=t===null?null:await Mn(t);return Response.json({ok:!0,value:n},{headers:{"cache-control":`no-store`}})},`dsh-context: balance route`)})}const W=2e3,Pn={now:()=>te.now(),sleep:e=>new Promise(t=>setTimeout(t,e)),minRestMs:25,workBudgetMs:8e3,roundPauseMs:2e3};function Fn(e){let t=H(H(e)?.header);return t===null||typeof t.id!=`string`||t.id===``?null:t}const In=[`contextActivity`,`contextTimeline`];function Ln(e,t){try{let n=H(H(e.cachedSnapshot(t,In))?.values);return n!==null&&n.contextActivity!==void 0&&n.contextTimeline!==void 0}catch{return!1}}async function Rn(e,t,n){let i=await e.open(t,`read`,{signal:n}),a;try{let e=H(await i.read(0,void 0,{signal:n}))?.events;a=Array.isArray(e)?e:[]}catch(e){try{await i.close()}catch{}throw e}return await i.close(),{header:i.header,inheritedEventCount:i.inheritedEventCount,events:[...a,...r(a)]}}function zn(e,t){if(e===null||typeof e.get!=`function`)return!1;try{return e.get(t)!==void 0}catch{return!0}}async function Bn(e,t,n,r,i,a,o){let{header:s,inheritedEventCount:c,events:l}=r,u={},d=0;for(let e=W;;e+=W){let n=e>=l.length,r=o();u=H(t.restore(u,n?l:l.slice(0,e),0,s,c))?.checkpoint??{};let f=o()-r;if(d+=f,n)break;if(await a(f),i.aborted)return{outcome:`aborted`,workMs:d}}let f;try{f=t.prepare(s.id,{seed:l,meta:structuredClone(s),inheritedEventCount:c,eventState:`shared-frozen`})}catch(e){if(zn(n,s.id))return{outcome:`live`,workMs:d};throw e}t.hydrate(f,u,l,0);try{await t.write(f)}catch(t){e.logger.warn(`dsh-context: projection backfill write-back for "${s.id}" failed (cache stays stale): ${G(t)}`)}return{outcome:`done`,workMs:d}}function Vn(e){try{return String(H(e)?.name).startsWith(`SessionFormatUnsupported`)}catch{return!1}}function G(e){try{return String(e)}catch{return`unprintable error`}}function Hn(e,t=I(),n=Pn){let r=!1,i=!1,a=null,o=()=>{r&&!i&&a!==null&&(i=!0,a())},s=e.inject([`connection`],e=>{L(e,e.get(`connection`),`/api/dsh-context/backfill`,()=>(r=!0,o(),Response.json({ok:!0},{headers:{"cache-control":`no-store`}})),`dsh-context: backfill route`)}),c=e.inject([`sessionQuery`,`sessionProjectionCache`,`sessionPersistence`,`sessions`],r=>{let i=r,s=H(i.sessionQuery),c=H(i.sessionProjectionCache),l=H(i.sessionPersistence);if(s===null||typeof s.listSessions!=`function`||c===null||typeof c.cachedSnapshot!=`function`||typeof c.coldSnapshot!=`function`||l===null||typeof l.open!=`function`)return;let u=H(i.sessions),d=H(e.sessionProjections),f=d!==null&&typeof d.restore==`function`&&typeof d.hydrate==`function`&&u!==null&&typeof u.prepare==`function`&&typeof c.write==`function`?{restore:d.restore.bind(d),hydrate:d.hydrate.bind(d),prepare:u.prepare.bind(u),write:c.write.bind(c)}:null,p=new AbortController,m=async()=>{let r=await s.listSessions(p.signal);if(!Array.isArray(r))return;let i=0,a=0,o=!1,d=0,m=async e=>{if(p.signal.aborted)return;let t;try{await Promise.race([n.sleep(e),new Promise(e=>{t=()=>{e()},p.signal.addEventListener(`abort`,t,{once:!0})})])}finally{p.signal.removeEventListener(`abort`,t)}},h=async t=>{if(d+=t,d>=n.workBudgetMs){d=0,e.logger.info(`dsh-context: projection backfill pausing after ${Math.round(n.workBudgetMs/1e3)}s of fold work; resuming in ${Math.round(n.roundPauseMs/1e3)}s`),await m(n.roundPauseMs);return}await m(Math.max(n.minRestMs,t))};for(let s of r){if(p.signal.aborted)return;let r=Fn(s);if(r===null||typeof r.cwd!=`string`||zn(u,r.id)||Ln(c,r))continue;let d=n.now(),m=0;try{let a=await t.admit(async()=>{let t=await Rn(l,r.id,p.signal);if(f!==null&&t.events.length>W){let r=await Bn(e,f,u,t,p.signal,h,n.now);return m=r.workMs,r.outcome}return c.coldSnapshot(t.header,t.inheritedEventCount,t.events),`done`});if(a===void 0){o=!0;break}if(a===`aborted`)return;a===`done`&&i++}catch(t){Vn(t)?(a++,e.logger.debug(`dsh-context: projection backfill skipped "${r.id}" (${G(t)})`)):e.logger.warn(`dsh-context: projection backfill skipped "${r.id}" (${G(t)})`)}await h(Math.max(0,n.now()-d-m))}i>0&&e.logger.info(`dsh-context: projection rows backfilled for ${i} session(s)`),o&&e.logger.info(`dsh-context: projection backfill stopped early under heap pressure (remaining sessions refold on their next live activity)`),a>0&&e.logger.info(`dsh-context: projection backfill skipped ${a} session(s) (legacy log format is not migratable; sources left unchanged)`)};return a=()=>{m().catch(t=>{p.signal.aborted||e.logger.warn(`dsh-context: projection backfill stopped early (${G(t)})`)})},o(),()=>{p.abort()}});return()=>{for(let e of[s,c])e?.dispose?.()}}function Un(e){let t=e?.revision;return typeof t==`string`&&t!==``?t:void 0}function K(e){return Response.json(e,{headers:{"cache-control":`no-store`}})}function q(e,t){return K({ok:!1,error:{code:e,message:t}})}function Wn(e,t,n=I()){let r={live:!1},i=new Map;return e.inject([`connection`,`sessions`],a=>{let o=a.get(`sessions`),s=typeof o?.get==`function`?o.get.bind(o):void 0;if(s===void 0)return;let c=e.sessionProjections;if(L(a,a.get(`connection`),`/api/dsh-context/detail`,async r=>{let a;try{let e=await r.json();a=typeof e==`object`&&e?e.sessionId:void 0}catch{return q(`dsh-context/bad-request`,`body is not JSON`)}if(typeof a!=`string`||a===``)return q(`dsh-context/bad-request`,`missing sessionId`);try{let r=s(a);if(r!=null){let e=c.stateOf(r,`contextTimeline`);return K(e===void 0?{ok:!0,value:null}:{ok:!0,value:at(e,t)})}let o=e.get(`sessionQuery`),l=typeof o?.observeSession==`function`?o.observeSession.bind(o):void 0;return K(l===void 0?{ok:!0,value:null}:{ok:!0,value:await n.admit(async()=>{let n=await l(a,{projectionMode:`none`});try{let r=e.get(`sessionPersistence`),o=Un(n);if(o!==void 0){let e=i.get(a);if(e!==void 0&&e.revision===o&&e.persistence===r)return i.delete(a),i.set(a,e),e.value}let s=n?.events;if(!Array.isArray(s))return null;let c=We(),l=0;for(let e of s)c=bt(c,e,t),++l%1e3==0&&await new Promise(e=>setTimeout(e,0));let u=at(c,t);if(o!==void 0){i.delete(a),i.set(a,{persistence:r,revision:o,value:u});for(let e of i.keys()){if(i.size<=4)break;i.delete(e)}}return u}finally{let e=n?.[Symbol.dispose];typeof e==`function`&&e.call(n)}})??null})}catch(e){return q(`gateway/internal`,e instanceof Error?e.message:String(e))}},`dsh-context: detail route`))return r.live=!0,()=>{r.live=!1}}),r}const Gn=`0.1.7-rc.2`;function Kn(e){return e===`rc`?3:e===`beta`?2:1}function qn(e){let t=/^v?(\d+)\.(\d+)\.(\d+)(?:-(alpha|beta|rc)(?:\.(\d+))?)?(?:\+[0-9a-z.-]+)?$/i.exec(e.trim());if(t===null)return null;let n=t[4]?.toLowerCase();return{major:Number(t[1]),minor:Number(t[2]),patch:Number(t[3]),rank:n===void 0?4:Kn(n),serial:t[5]?Number(t[5]):0}}function Jn(e,t){return e.major===t.major?e.minor===t.minor?e.patch===t.patch?e.rank===t.rank?e.serial-t.serial:e.rank-t.rank:e.patch-t.patch:e.minor-t.minor:e.major-t.major}function Yn(e,t=Gn){let n=qn(e),r=qn(t);return n===null||r===null||Jn(n,r)>=0}const Xn=t.object({name:t.string(),tokens:t.number().int().nonnegative(),description:t.string().optional(),plugin:t.string().optional(),schema:t.unknown().optional()}).strict(),Zn=t.object({seq:t.number(),time:t.number(),system:t.string().optional(),systemTokens:t.number().int().nonnegative().optional(),tools:t.array(Xn)}).strict(),Qn=t.object({headers:t.array(Zn)}).strict(),$n=t.object({name:t.string(),tokens:t.number().int().nonnegative(),plugin:t.string().optional()}).strict(),er=t.object({headers:t.array(t.object({seq:t.number(),time:t.number(),systemTokens:t.number().int().nonnegative().optional(),tools:t.array($n)}).strict())}).strict();function tr(e){if(e.type!==`request/header`)return null;let t=e.data?.header;if(typeof t!=`object`||!t)return null;let n=t,r=Array.isArray(n.tools)?n.tools:[];return{seq:e.seq,time:e.time,tools:r.map(e=>{let t=typeof e==`object`&&e?e:{},n={name:typeof t.name==`string`?t.name:`?`,tokens:he(e)};return typeof t.plugin==`string`&&t.plugin!==``&&(n.plugin=t.plugin),n})}}function nr(e){return{key:`contextHeaders`,stateSchema:Qn,wire:{viewSchema:er,view:t=>({headers:t.headers.map(t=>{let n={seq:t.seq,time:t.time,tools:t.tools.map(t=>{let n={name:t.name,tokens:t.tokens},r=t.plugin??(e===void 0?void 0:e(t.name));return r!==void 0&&(n.plugin=r),n})},r=t.systemTokens??(typeof t.system==`string`&&t.system!==``?re(t.system):void 0);return r!==void 0&&(n.systemTokens=r),n})})},init:()=>({headers:[]}),apply:(e,t)=>{let n=tr(t);if(n===null)return e;let r=e.headers.at(-1);if(r!==void 0&&r.seq===n.seq)return e;let i=[...e.headers,n];return{headers:i.length>50?i.slice(-50):i}},stateVersion:1}}const rr=t.object({});function J(e,t,n){let r=()=>n;return{key:e,stateSchema:rr,init:()=>({}),apply:e=>e,wire:{viewSchema:t,view:r},schema:t,view:r,stateVersion:1}}function ir(e){return J(`contextTimeline`,Ft,{ok:!0,unsupported:{current:e,minimum:Gn},current:{system:0,tools:0,user:0,inject:0,skill:0,assistant:0,tool:0,total:0},requests:[],events:[],nodes:[],droppedNodes:0,archive:[]})}function ar(){return J(`contextHeaders`,er,{headers:[]})}function or(){return J(`contextActivity`,Vt,{days:{}})}const sr=1e5;function cr(e){return X(e)?.full===!0}function lr(e){return Response.json(e,{headers:{"cache-control":`no-store`}})}function Y(e,t){return lr({ok:!1,error:{code:e,message:t}})}function X(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:null}function Z(e){if(!Array.isArray(e))return``;let t=``;for(let n of e){let e=X(n)?.text;typeof e==`string`&&(t+=e)}return t}const ur=/^\s*<system-reminder>[\s\S]*?<\/system-reminder>\s*/;function Q(e,t){return e.length>t?{text:e.slice(0,t)+`…`,cut:!0}:{text:e,cut:!1}}function dr(e){let t=e.mode;if(t!==`one-shot`&&t!==`continuable`)return null;let n={mode:t};for(let t of[`label`,`provider`,`agentProvider`,`agentModel`,`persona`]){let r=e[t];typeof r==`string`&&r!==``&&(n[t]=r)}return n}const fr=/^Team message \S+ from [^:]{1,64}:\s*/,pr=/^(?:Agent \S+ sent a message: |Team message from [^:\n]{1,64}:\s*)/;function mr(e,t,n){let r=X(n.source),i=r?.kind,a=null;if(i===`agent-message`||i===`team-message`){let o=Z(n.content);if(o=o.replace(i===`team-message`?fr:pr,``),o.trim()===``)return null;a={seq:e,time:t,kind:i===`agent-message`?`relay`:`mailbox`,text:o};let s=i===`agent-message`?r?.senderSessionId:r?.senderId;typeof s==`string`&&s!==``&&(a.from=s);let c=r?.senderName;typeof c==`string`&&c!==``&&(a.fromName=c)}else if(i===`subagent-settled`){let i=r?.summary,o=typeof i==`string`&&i.trim()!==``?i:Z(n.content);if(o.trim()===``)return null;a={seq:e,time:t,kind:`settled`,text:o};let s=r?.senderSessionId;typeof s==`string`&&s!==``&&(a.from=s)}if(a===null)return null;let o=Q(a.text,400);return a.text=o.text,a}function hr(e){return e===null||e.kind===`user`}function gr(e){let t=X(e.member);if(t===null||typeof t.name!=`string`||t.name===``)return null;let n={name:t.name,description:typeof t.description==`string`?t.description:``};return typeof t.provider==`string`&&t.provider!==``&&(n.provider=t.provider),(t.context===`fresh`||t.context===`fork`)&&(n.context=t.context),n}function _r(e,t){for(let n=e.length-1;n>=0;n--){let r=X(e[n]);if(r===null||r.type!==`assistant/message`)continue;let i=X(X(r.data)?.message)?.content;if(!Array.isArray(i))continue;let a=``;for(let e of i){let t=X(e);t?.type===`text`&&typeof t.text==`string`&&(a+=t.text)}if(a.trim()===``)continue;let o=typeof r.time==`number`&&Number.isFinite(r.time)?r.time:0,s=Q(a,t);return{time:o,text:s.text,cut:s.cut}}return null}function vr(e,t=!1){let n=t?sr:1600,r=t?sr:300,i,a,o=!1,s=[],c=new Map;for(let t of e){let e=X(t);if(e===null)continue;let r=e.type;if(typeof r!=`string`)continue;let l=typeof e.seq==`number`&&Number.isFinite(e.seq)?e.seq:0,u=typeof e.time==`number`&&Number.isFinite(e.time)?e.time:0,d=X(e.data);if(d===null)continue;if(r===`subagent/descriptor`){let e=dr(d);e!==null&&(i=e);continue}if(r===`team/member`){let e=gr(d);e!==null&&c.set(e.name,e);continue}if(r!==`user/message`)continue;let f=mr(l,u,d);if(f!==null){f.text.endsWith(`…`)&&(o=!0),s.push(f);continue}if(a===void 0&&hr(X(d.source))){let e=Z(d.content).replace(ur,``);if(e.trim()!==``){let t=Q(e,n);a=t.text,t.cut&&(o=!0)}}}s.sort((e,t)=>t.seq-e.seq),s.length>40&&(s.length=40,o=!0);let l=_r(e,r);return l!==null&&l.cut&&(o=!0),{...i===void 0?{}:{descriptor:i},...a===void 0?{}:{initialPrompt:a},...l===null?{}:{lastReply:{time:l.time,text:l.text}},...c.size>0?{roster:[...c.values()]}:{},messages:s,truncated:o}}function yr(e,t=I()){e.inject([`connection`],n=>{L(n,n.get(`connection`),`/api/dsh-context/fleet`,async n=>{let r,i=!1;try{let e=await n.json();r=X(e)?.sessionId,i=cr(e)}catch{return Y(`dsh-context/bad-request`,`body is not JSON`)}if(typeof r!=`string`||r===``)return Y(`dsh-context/bad-request`,`missing sessionId`);try{let n=e.get(`sessionQuery`),a=typeof n?.observeSession==`function`?n.observeSession.bind(n):void 0;return lr(a===void 0?{ok:!0,value:null}:{ok:!0,value:await t.admit(async()=>{let e=await a(r,{projectionMode:`none`}),t=e?.events;if(!Array.isArray(t))return null;try{return vr(t,i)}finally{let t=e?.[Symbol.dispose];typeof t==`function`&&t.call(e)}})??null})}catch(e){return Y(`gateway/internal`,e instanceof Error?e.message:String(e))}},`dsh-context: fleet route`)})}function br(e){if(typeof e==`object`&&e&&typeof e.get==`function`){let t=e.get;return()=>{let e=t();return typeof e==`string`?e:``}}let t=typeof e==`string`?e:``;return()=>t}function xr(e){return()=>{let t=e();return t.trim().length===0?``:t}}const Sr=1e3;function Cr(e,t){e.inject([`systemPrompt`],e=>{let n=e.systemPrompt;n!=null&&typeof n.section==`function`&&typeof n.getSectionOrder==`function`&&(n.section({name:`dsh-context:prompt-prefix`,order:n.getSectionOrder(`HARNESS_IDENTITY`)-Sr,text:xr(br(t.promptPrefix)),interpolate:!1}),n.section({name:`dsh-context:prompt-suffix`,order:n.getSectionOrder(`DEPLOYMENT_PERSONA_SUFFIX`)+Sr,text:xr(br(t.promptSuffix)),interpolate:!1}))})}function wr(e){if(typeof e!=`object`||!e)return!1;let t=e.id;return typeof t!=`string`||t===``}function Tr(e){let t;for(let[n,r]of e.entries()){if(!wr(r)){t?.push(r);continue}t??=e.slice(0,n),t.push({...r,id:`dshctx-`+ne()})}return t}function Er(e){e.on(`agent/pre-step`,async(e,t)=>{let n=await t();try{if(n.kind!==`enter`||!Array.isArray(n.messages))return n;let e=Tr(n.messages);return e===void 0?n:{...n,messages:e}}catch{return n}},{prepend:!0})}function $(e){return typeof e==`string`&&e!==``?e:void 0}async function Dr(e){if(!(e===null||typeof e!=`object`&&typeof e!=`function`))try{let t=e[Symbol.asyncDispose];if(typeof t==`function`){await t.call(e);return}let n=e[Symbol.dispose];typeof n==`function`&&n.call(e)}catch{}}function Or(e){let t=H(e);return t===null||typeof t.name!=`string`||t.name===``?null:{name:t.name,description:typeof t.description==`string`?t.description:``,...typeof t.path==`string`&&t.path!==``?{path:t.path}:{},...typeof t.source==`string`&&t.source!==``?{source:t.source}:{}}}async function kr(e,t){if(t===void 0)return{};let n=H(e.get(`sessionQuery`));if(typeof n?.observeSession!=`function`)return{};let r;try{r=await n.observeSession.call(n,t)}catch{return{}}try{let e=H(r),t=$(H(e?.header)?.cwd),n=$(H(H(e?.projections)?.values)?.agentPreset);return{...t===void 0?{}:{cwd:t},...n===void 0?{}:{agentPreset:n}}}finally{await Dr(r)}}async function Ar(e,t,n){let r=H(e.get(`agentPresets`)),i;if(t!==void 0){let n=H(e.get(`agents`));if(typeof n?.get==`function`)try{i=n.get.call(n,t)}catch{i=void 0}}if(i!=null&&typeof r?.serviceFor==`function`){let e=H(r.serviceFor.call(r,i,`skills`));if(e!==null&&typeof e.list==`function`)return{registry:e,scope:i,lease:void 0}}let a=H(e.get(`skills`));if(a===null||typeof a.list!=`function`)return null;let o,s;if(typeof r?.acquireScope==`function`)try{s=await r.acquireScope.call(r,n),o=H(s)?.key}catch{s=void 0}return{registry:a,scope:o,lease:s}}function jr(e){e.inject([`connection`],t=>{L(t,t.get(`connection`),`/api/dsh-context/skills`,async t=>{let n=null,r;try{let i=H(await t.json()),a=$(i?.sessionId),o=await kr(e,a),s=o.cwd??$(i?.cwd),c=await Ar(e,a,o.agentPreset);if(c!==null){r=c.lease;let e=await c.registry.list({...s===void 0?{}:{cwd:s},...c.scope===void 0?{}:{scope:c.scope}}),t=Array.isArray(e)?e:[],i=[];for(let e of t){let t=Or(e);if(t!==null&&i.push(t),i.length>=500)break}n={skills:i}}}catch{}finally{await Dr(r)}return Response.json({ok:!0,value:n},{headers:{"cache-control":`no-store`}})},`dsh-context: skills route`)})}const Mr=[`@deepseek-ai/dsh-session-projection`,`@deepseek-ai/dsh-session`],Nr=[`@deepseek-ai/dsh-session`,`@deepseek-ai/dsh-session-projection`],Pr=[`@deepseek-ai/dsh`,...Mr];function Fr(){try{return l(g(import.meta.resolve(`dsh-context/package.json`)))}catch{return l(g(import.meta.url))}}const Ir=Fr();function Lr(e,t){try{let n=JSON.parse(ee(e,`utf8`));if(typeof n!=`object`||!n)return;let r=n;return t!==void 0&&r.name!==t?void 0:typeof r.version==`string`&&r.version!==``?r.version:void 0}catch{return}}function Rr(e,t){try{return Lr(e(t+`/package.json`))}catch{return}}function zr(e,t){let n;try{n=l(e(t))}catch{return}for(;;){let e=Lr(d(n,`package.json`),t);if(e!==void 0)return e;let r=l(n);if(r===n)return;n=r}}function Br(e,t){for(let n of t){let t=Rr(e,n)??zr(e,n);if(t!==void 0)return t}}function Vr(e,t){let n=p(e,t);return!n.startsWith(`..`)&&!u(n)}function Hr(e,t){for(let n of Nr){let r;try{r=e(n)}catch{continue}if(Vr(t,r))continue;let i=Rr(e,n)??zr(e,n);if(i!==void 0)return i}}function Ur(e){return import.meta.resolve(e)}function Wr(t,n=Ur,r=Ir){let i=Hr(e=>{let t=n(e);if(!t.startsWith(`file:`))throw Error(`dsh-context: non-file module URL for ${e}`);return g(t)},r);if(i!==void 0)return i;try{let n=t.get(`dshHomePath`);if(typeof n==`function`){let t=e(n(`profiles`,`dsh-context-version-probe.cjs`)),r=Br(e=>t.resolve(e),Pr);if(r!==void 0)return r}}catch{}}const Gr=`dsh-context`,Kr=[`sessionProjections`];function qr(e,t){let n=I();Nn(e),jr(e),yr(e,n),mn(e,n);let r=Wr(e);if(r!==void 0&&!Yn(r)){e.sessionProjections.register(ir(r)),e.sessionProjections.register(ar()),e.sessionProjections.register(or());return}let i=En(e);Er(e);let a=Wn(e,St(t),n);e.sessionProjections.register(Lt(t,()=>a.live)),e.sessionProjections.register(nr(e=>i.ownerOf(e))),e.sessionProjections.register(Yt()),Hn(e,n),Cr(e,t)}export{xt as Config,qr as apply,Kr as inject,Gr as name};
16
16
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-context",
3
- "version": "0.72.0",
3
+ "version": "0.73.1",
4
4
  "description": "A DeepSeek Harness plugin for context insight and management, with context dashboard and context command, for understanding how the context is made of, and how it evolves.",
5
5
  "icon": "icon.svg",
6
6
  "author": "bowenliang123",
@@ -14,7 +14,8 @@
14
14
  },
15
15
  "type": "module",
16
16
  "engines": {
17
- "node": "^22.19.0 || >=24.0.0"
17
+ "node": "^22.19.0 || >=24.0.0",
18
+ "dsh": ">=0.1.7-rc.2 || >=0.2.0-rc.2"
18
19
  },
19
20
  "main": "lib/index.js",
20
21
  "types": "lib/index.d.ts",
@@ -123,7 +124,7 @@
123
124
  "@types/node": "^26.6.3",
124
125
  "@types/react": "^18.3.31",
125
126
  "@types/react-dom": "^18.3.7",
126
- "@vitest/coverage-v8": "^4.1.11",
127
+ "@vitest/coverage-v8": "^5.0.5",
127
128
  "anser": "^2.3.5",
128
129
  "clsx": "^2.0.0",
129
130
  "diff": "^9.0.0",
@@ -152,7 +153,7 @@
152
153
  "simple-icons": "16.32.0",
153
154
  "tsdown": "^0.23.0",
154
155
  "typescript": "^7.0.2",
155
- "vitest": "^4.1.11",
156
+ "vitest": "^5.0.5",
156
157
  "zustand": "~4.4.7"
157
158
  }
158
159
  }