@contraagent/ui 0.7.2 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/custom-elements.json +1 -1
  2. package/dist/adapters/filters.d.ts +7 -1
  3. package/dist/adapters/filters.d.ts.map +1 -1
  4. package/dist/adapters/filters.js +8 -2
  5. package/dist/adapters/filters.js.map +1 -1
  6. package/dist/adapters/journal-columns.js +2 -2
  7. package/dist/adapters/journal-columns.js.map +1 -1
  8. package/dist/adapters/kpi-tiles.d.ts.map +1 -1
  9. package/dist/adapters/kpi-tiles.js +3 -2
  10. package/dist/adapters/kpi-tiles.js.map +1 -1
  11. package/dist/contraagent-ui.js +172 -171
  12. package/dist/elements/lists/ca-contracts.js +2 -2
  13. package/dist/elements/lists/ca-contracts.js.map +1 -1
  14. package/dist/elements/shared/file-card.d.ts.map +1 -1
  15. package/dist/elements/shared/file-card.js +2 -2
  16. package/dist/elements/shared/file-card.js.map +1 -1
  17. package/dist/elements/task/ca-transcript.js +2 -2
  18. package/dist/elements/task/ca-transcript.js.map +1 -1
  19. package/dist/elements/task/context.d.ts +1 -3
  20. package/dist/elements/task/context.d.ts.map +1 -1
  21. package/dist/elements/task/context.js +2 -1
  22. package/dist/elements/task/context.js.map +1 -1
  23. package/dist/elements/task/header.d.ts.map +1 -1
  24. package/dist/elements/task/header.js +4 -2
  25. package/dist/elements/task/header.js.map +1 -1
  26. package/dist/elements/task/panes/io.d.ts.map +1 -1
  27. package/dist/elements/task/panes/io.js +7 -4
  28. package/dist/elements/task/panes/io.js.map +1 -1
  29. package/dist/locales/ja.d.ts +11 -5
  30. package/dist/locales/ja.d.ts.map +1 -1
  31. package/dist/locales/ja.js +11 -5
  32. package/dist/locales/ja.js.map +1 -1
  33. package/dist/words/contract.d.ts +4 -2
  34. package/dist/words/contract.d.ts.map +1 -1
  35. package/dist/words/contract.js +7 -5
  36. package/dist/words/contract.js.map +1 -1
  37. package/dist/words/index.d.ts +1 -0
  38. package/dist/words/index.d.ts.map +1 -1
  39. package/dist/words/index.js +1 -0
  40. package/dist/words/index.js.map +1 -1
  41. package/dist/words/lineage.d.ts +11 -0
  42. package/dist/words/lineage.d.ts.map +1 -1
  43. package/dist/words/lineage.js +13 -1
  44. package/dist/words/lineage.js.map +1 -1
  45. package/dist/words/rounds.d.ts +2 -2
  46. package/dist/words/rounds.js +4 -4
  47. package/dist/words/rounds.js.map +1 -1
  48. package/dist/words/working-directory.d.ts +5 -0
  49. package/dist/words/working-directory.d.ts.map +1 -0
  50. package/dist/words/working-directory.js +7 -0
  51. package/dist/words/working-directory.js.map +1 -0
  52. package/package.json +3 -3
  53. package/src/adapters/filters.ts +10 -2
  54. package/src/adapters/journal-columns.ts +2 -2
  55. package/src/adapters/kpi-tiles.ts +3 -2
  56. package/src/elements/lists/ca-contracts.ts +2 -2
  57. package/src/elements/shared/file-card.ts +2 -2
  58. package/src/elements/task/ca-transcript.ts +2 -2
  59. package/src/elements/task/context.ts +2 -1
  60. package/src/elements/task/header.ts +4 -2
  61. package/src/elements/task/panes/io.ts +7 -4
  62. package/src/locales/ja.ts +11 -5
  63. package/src/words/contract.ts +9 -5
  64. package/src/words/index.ts +1 -0
  65. package/src/words/lineage.ts +16 -2
  66. package/src/words/rounds.ts +4 -4
  67. package/src/words/working-directory.ts +8 -0
@@ -2,7 +2,7 @@ var e=Object.defineProperty,t=(t,n)=>{let r={};for(var i in t)e(r,i,{get:t[i],en
2
2
  `)}\n\n${this.trendPanelNames().join(`
3
3
  `)}`}trendPanelNames(){return this.snap.info.panels.filter(e=>e.scope===`trends`).map(e=>e.name)}async loadTrends(e){let t=this.snap.trends&&JSON.stringify(this.snap.trends.query)===JSON.stringify(e);this.trendsQuery=e,this.set({trends:{query:e,data:t?this.snap.trends.data:this.snap.trends?.data??null,panels:t?this.snap.trends.panels:{},loading:!0,error:null}}),await this.fetchTrends(e)}closeTrends(){this.trendsQuery=null}async fetchTrends(e){let t=++this.trendsAsked;this.trendsOver=this.trendsKey();let n=()=>t!==this.trendsAsked||this.stopped?null:this.snap.trends,r=this.trendPanelNames(),i=this.client.trends(e).then(t=>{let r=n();r&&this.set({trends:{...r,query:e,data:t,loading:!1,error:null}})},t=>{let r=n();r&&this.set({trends:{...r,query:e,loading:!1,error:_e(t,`${this.client.baseUrl}/api/trends`)}})}),a=(e,t)=>{let r=n();r&&this.set({trends:{...r,panels:{...r.panels,[e]:t}}})},o=r.map(t=>this.client.trendsPanel(t,e).then(e=>a(t,e),e=>a(t,{error:String(e)})));await Promise.allSettled([i,...o])}async loadInfo(){try{let e=this.panelNames(),t=await this.client.info();if(this.stopped)return;this.infoLoaded=!0,this.infoError=null,this.set({info:t}),this.snap.run&&this.panelNames()!==e&&this.reopen()}catch(e){this.infoError=_e(e,`${this.client.baseUrl}/api/info`)}}async refreshRuns(){let[e,t]=await Promise.allSettled([this.client.runs(),this.snap.info.hosts?this.client.hosts():Promise.resolve(null)]);if(this.stopped)return;let n={};e.status===`fulfilled`?(n.runs=e.value,n.runsLoaded=!0,this.runsError=null):this.runsError=_e(e.reason,`${this.client.baseUrl}/api/runs`),t.status===`fulfilled`?(n.hosts=t.value,this.hostsError=null):this.hostsError=_e(t.reason,`${this.client.baseUrl}/api/hosts`);let r=this.infoError??this.runsError??this.hostsError;r?.message!==this.snap.error?.message&&(n.error=r),Object.keys(n).length&&this.set(n)}panelNames(){return this.snap.info.panels.filter(he).map(e=>e.name).join(`
4
4
  `)}reopen(){let e=this.snap.run;this.closeFeed?.(),this.closeFeed=null,this.selectRun(e)}selectRun(e){if(e===this.snap.run&&(this.closeFeed||!e)||(this.closeFeed?.(),this.closeFeed=null,this.queue=[],this.set({run:e,state:{journal:[],procs:null,plan:{nodes:[],groups:[],flow_calls:[]},outputs:{contracts:[],tally:{valid:0,invalid:0,refused:0,pending:0,failed:0,running:0}},forecast:null,cursor:null,panels:{},ready:!1},connected:!1,fresh:new Set}),!e))return;let t=this.snap.info.panels.filter(he).map(e=>e.name),n={open:()=>{this.push({event:`connected`}),this.set({connected:!0})},error:()=>this.set({connected:!1}),message:e=>this.push(e)};this.closeFeed=this.opts.openRunFeed?this.opts.openRunFeed(e,t,n):function(e,t,n,r={}){let i=[...o,...t.map(e=>`panel:${e}`)];return s(`${l(r)}/events?run=${c(e)}`,i,n,r)}(e,t,n,{...this.opts.baseUrl===void 0?{}:{baseUrl:this.opts.baseUrl},...this.opts.feed})}stop(){this.stopped=!0,this.closeFeed?.(),this.closeFeed=null,this.pollTimer&&clearTimeout(this.pollTimer),this.pollTimer=null,this.flushTimer&&clearTimeout(this.flushTimer),this.flushTimer=null}push(e){this.queue.push(e),this.flushTimer??=setTimeout(()=>this.flush(),this.opts.batchMs)}flush(){this.flushTimer=null;let e=this.queue;this.queue=[];let t=this.snap.state.ready,n=[];for(let r of e)r.event===`connected`?t=!1:r.event===`ready`?t=!0:r.event===`journal`&&t&&n.push(r.data);let r=function(e,t){let n=e,r=null,i=()=>{if(!r)return;let e=n.journal.concat(r);n={...n,journal:e.length>4e3?e.slice(e.length-4e3):e},r=null};for(let e of t)if(e.event!==`journal`)switch(i(),e.event){case`connected`:n={...n,journal:[],ready:!1};break;case`ready`:n={...n,ready:!0};break;case`procs`:n={...n,procs:e.data};break;case`plan`:n={...n,plan:e.data};break;case`outputs`:n={...n,outputs:e.data};break;case`forecast`:n={...n,forecast:e.data};break;case`cursor`:n={...n,cursor:e.data};break;default:n={...n,panels:{...n.panels,[e.event.slice(6)]:e.data}}}else(r??=[]).push(e.data);return i(),n}(this.snap.state,e);if(!n.length)return void this.set({state:r});let i=new Set(this.snap.fresh);for(let e of n)i.add(le(e));this.set({state:r,fresh:i});for(let e of n)for(let t of this.rowListeners)t(e);setTimeout(()=>{let e=new Set(this.snap.fresh);for(let t of n)e.delete(le(t));this.set({fresh:e})},this.opts.freshMs)}set(e){this.snap={...this.snap,...e};for(let e of this.listeners)e(this.snap)}},ye=encodeURIComponent;function be(e){let t=Array.from(e,e=>/^[\p{L}\p{N}._-]$/u.test(e)?e:`_`).join(``).replace(/\.\.+/g,e=>`_`.repeat(e.length));return t.startsWith(`.`)?`_${t.slice(1)}`:t||`_`}var xe=e=>Object.keys(e).length>0;function Se(e){return(t,n,r)=>{let i=!1;return(async()=>{try{let[a,o,s,c,l,u]=await Promise.all([e.journal(t),e.file(`runs/${ye(t)}/plan.json`),e.file(`runs/${ye(t)}/outputs.json`),e.file(`runs/${ye(t)}/forecast.json`).catch(()=>null),e.file(`runs/${ye(t)}/cursor.json`),Promise.all(n.map(n=>e.panel(t,n).catch(e=>({error:String(e)}))))]);if(i)return;r.open?.();let d=e=>!i&&r.message(e);for(let e of a.entries)d({event:`journal`,data:e});d({event:`plan`,data:o}),d({event:`outputs`,data:s}),c&&d({event:`forecast`,data:c}),d({event:`cursor`,data:xe(l)?l:null}),n.forEach((e,t)=>d({event:`panel:${e}`,data:u[t]??{}})),d({event:`ready`,data:{journal:a.total}})}catch{i||r.error?.()}})(),()=>{i=!0}}}var Ce=()=>({input:0,output:0,cache_read:0,cache_creation:0,calls:0,cost:null,reported:0}),we=e=>e.input+e.output+e.cache_read+e.cache_creation;function Te(e,t){let n=t.usage;return n||t.cost_usd!==null&&t.cost_usd!==void 0?(n&&(e.input+=n.input??0,e.output+=n.output??0,e.cache_read+=n.cache_read??0,e.cache_creation+=n.cache_creation??0,e.calls+=n.calls??0),t.cost_usd!==null&&t.cost_usd!==void 0&&(e.cost=(e.cost??0)+t.cost_usd),e.reported++,e):e}function Ee(e){let t={input:0,output:0,cache_read:0,cache_creation:0,calls:0,cost:null,reported:0};for(let n of e)Te(t,n);return t.reported?t:null}function De(e,t){let n=new Map,r={input:0,output:0,cache_read:0,cache_creation:0,calls:0,cost:null,reported:0};for(let i of e){Te(r,i);let e=t(i),a=n.get(e);a||n.set(e,a={id:e,kind:i.kind,unit:i.unit??``,spend:Ce(),share:null}),Te(a.spend,i)}let i=[...n.values()].filter(e=>e.spend.reported);for(let e of i)e.share=r.cost?(e.spend.cost??0)/r.cost:null;return i.sort((e,t)=>(t.spend.cost??0)-(e.spend.cost??0)||we(t.spend)-we(e.spend))}var Oe=e=>De(e,e=>e.kind).map(e=>({...e,unit:``})),ke=e=>(e.input??0)+(e.output??0)+(e.cache_read??0)+(e.cache_creation??0);function Ae(e,t){switch(t){case`cost`:return e.cost_usd??null;case`tokens`:return ke(e);case`time`:return e.wall_s??0;case`sessions`:return e.sessions}}var je=e=>[`cost`,`tokens`,`time`,`sessions`].filter(t=>e.some(e=>(Ae(e,t)??0)>0)),Me=e=>Date.parse(e.observed_at??``),Ne=e=>!Number.isNaN(Me(e))&&(e.five_hour_pct!=null||e.seven_day_pct!=null);function Pe(e){let t=[];for(let n of e)for(let e of n.quota??[])Ne(e)&&t.push({reading:e,key:n.key,attempt:n.attempt??0});return t.sort((e,t)=>Me(e.reading)-Me(t.reading))}var Fe=e=>`${e.credential??``}\0${e.account??``}`;function Ie(e){let t=new Map;for(let{reading:n}of Pe(e)){let e=Fe(n),r=t.get(e);r||t.set(e,r=[]),r.push(n)}let n=[];for(let e of t.values()){let t=e[0],r=e[e.length-1];t&&r&&n.push({credential:r.credential??``,account:r.account??``,first:t,last:r})}return n.sort((e,t)=>(t.last.seven_day_pct??0)-(e.last.seven_day_pct??0))}function Le(e,t){let n=(e.quota??[]).filter(Ne).sort((e,t)=>Me(e)-Me(t)),r=Date.parse(e.ts),i=n[0]??null,a=i===null?``:Fe(i);return{start:i,next:(i===null||Number.isNaN(r)?void 0:t.find(e=>Me(e.reading)>r&&Fe(e.reading)===a))?.reading??null}}function Re(e){let t=/^invalid input:\s*(.*)$/s.exec(e||``);if(!t)return[];let n=[];for(let e of(t[1]??``).split(`; `)){let t=/^input from (\S+) is missing: (\S+)/.exec(e);t?n.push({path:t[2]??``,producer:t[1]??``,problem:`missing`}):(t=/^input from (\S+) ended \S+: (\S+)/.exec(e),t?n.push({path:t[2]??``,producer:t[1]??``,problem:`failed`}):(t=/^(\S+?): required input is missing/.exec(e),t?n.push({path:t[1]??``,producer:``,problem:`missing`}):(t=/^(\S+?): /.exec(e),t&&!n.some(e=>e.path===t?.[1])&&n.push({path:t[1]??``,producer:``,problem:`checks`}))))}return n}function T(e,t){if(!e||!t)return e??``;let n=t.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);return e.replace(RegExp(`(?:/[^\\s:'"]*)?/${n}/`,`g`),``)}var ze=`lit-localize-status`,E=(e,...t)=>({strTag:!0,strings:e,values:t}),Be=(e,t,n)=>{let r=e[0];for(let i=1;i<e.length;i++)r+=t[n?n[i-1]:i-1],r+=e[i];return r},Ve=e=>{return typeof(t=e)!=`string`&&`strTag`in t?Be(e.strings,e.values):e;var t},D=Ve,He=!1,Ue=class{constructor(e){this.__litLocalizeEventHandler=e=>{e.detail.status===`ready`&&this.host.requestUpdate()},this.host=e}hostConnected(){window.addEventListener(ze,this.__litLocalizeEventHandler)}hostDisconnected(){window.removeEventListener(ze,this.__litLocalizeEventHandler)}},We=e=>e.addController(new Ue(e)),O=()=>(e,t)=>(e.addInitializer(We),e),Ge=class{constructor(){this.settled=!1,this.promise=new Promise((e,t)=>{this._resolve=e,this._reject=t})}resolve(e){this.settled=!0,this._resolve(e)}reject(e){this.settled=!0,this._reject(e)}},Ke=[];for(let e=0;e<256;e++)Ke[e]=(e>>4&15).toString(16)+(15&e).toString(16);var qe=new WeakMap,Je=new Map;function Ye(e){window.dispatchEvent(new CustomEvent(ze,{detail:e}))}var Xe,Ze,Qe,$e,et,tt=``,nt=new Ge;nt.resolve();var rt=0,it=e=>(function(){if(He)throw Error(`lit-localize can only be configured once`);D=(e,t)=>function(e,t,n){if(e){let r=e[n?.id??function(e){let t=typeof e==`string`?e:e.strings,n=Je.get(t);return n===void 0&&(n=function(e,t){return(t?`h`:`s`)+function(e){let t=0,n=8997,r=0,i=33826,a=0,o=40164,s=0,c=52210;for(let l=0;l<e.length;l++)n^=e.charCodeAt(l),t=435*n,r=435*i,a=435*o,s=435*c,a+=n<<8,s+=i<<8,r+=t>>>16,n=65535&t,a+=r>>>16,i=65535&r,c=s+(a>>>16)&65535,o=65535&a;return Ke[c>>8]+Ke[255&c]+Ke[o>>8]+Ke[255&o]+Ke[i>>8]+Ke[255&i]+Ke[n>>8]+Ke[255&n]}(typeof e==`string`?e:e.join(``))}(t,typeof e!=`string`&&!(`strTag`in e)),Je.set(t,n)),n}(t)];if(r){if(typeof r==`string`)return r;if(`strTag`in r)return Be(r.strings,t.values,r.values);{let e=qe.get(r);return e===void 0&&(e=r.values,qe.set(r,e)),{...r,values:e.map(e=>t.values[e])}}}}return Ve(t)}(et,e,t),He=!0}(),tt=Ze=e.sourceLocale,(Qe=new Set(e.targetLocales)).add(e.sourceLocale),$e=e.loadLocale,{getLocale:at,setLocale:ot}),at=()=>tt,ot=e=>{if(e===(Xe??tt))return nt.promise;if(!Qe||!$e)throw Error(`Internal error`);if(!Qe.has(e))throw Error(`Invalid locale code`);let t=++rt;return Xe=e,nt.settled&&(nt=new Ge),Ye({status:`loading`,loadingLocale:e}),(e===Ze?Promise.resolve({templates:void 0}):$e(e)).then(n=>{rt===t&&(tt=e,Xe=void 0,et=n.templates,Ye({status:`ready`,readyLocale:e}),nt.resolve())},n=>{rt===t&&(Ye({status:`error`,errorLocale:e,errorMessage:n.toString()}),nt.reject(n))}),nt.promise},st=globalThis,ct=st.ShadowRoot&&(st.ShadyCSS===void 0||st.ShadyCSS.nativeShadow)&&`adoptedStyleSheets`in Document.prototype&&`replace`in CSSStyleSheet.prototype,lt=Symbol(),ut=new WeakMap,dt=class{constructor(e,t,n){if(this._$cssResult$=!0,n!==lt)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=t}get styleSheet(){let e=this.o,t=this.t;if(ct&&e===void 0){let n=t!==void 0&&t.length===1;n&&(e=ut.get(t)),e===void 0&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),n&&ut.set(t,e))}return e}toString(){return this.cssText}},ft=e=>new dt(typeof e==`string`?e:e+``,void 0,lt),k=(e,...t)=>new dt(e.length===1?e[0]:t.reduce((t,n,r)=>t+(e=>{if(!0===e._$cssResult$)return e.cssText;if(typeof e==`number`)return e;throw Error(`Value passed to 'css' function must be a 'css' function result: `+e+`. Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.`)})(n)+e[r+1],e[0]),e,lt),pt=(e,t)=>{if(ct)e.adoptedStyleSheets=t.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(let n of t){let t=document.createElement(`style`),r=st.litNonce;r!==void 0&&t.setAttribute(`nonce`,r),t.textContent=n.cssText,e.appendChild(t)}},mt=ct?e=>e:e=>e instanceof CSSStyleSheet?(e=>{let t=``;for(let n of e.cssRules)t+=n.cssText;return ft(t)})(e):e,{is:ht,defineProperty:gt,getOwnPropertyDescriptor:_t,getOwnPropertyNames:vt,getOwnPropertySymbols:yt,getPrototypeOf:bt}=Object,xt=globalThis,St=xt.trustedTypes,Ct=St?St.emptyScript:``,wt=xt.reactiveElementPolyfillSupport,Tt=(e,t)=>e,Et={toAttribute(e,t){switch(t){case Boolean:e=e?Ct:null;break;case Object:case Array:e=e==null?e:JSON.stringify(e)}return e},fromAttribute(e,t){let n=e;switch(t){case Boolean:n=e!==null;break;case Number:n=e===null?null:Number(e);break;case Object:case Array:try{n=JSON.parse(e)}catch{n=null}}return n}},Dt=(e,t)=>!ht(e,t),Ot={attribute:!0,type:String,converter:Et,reflect:!1,useDefault:!1,hasChanged:Dt};Symbol.metadata??=Symbol(`metadata`),xt.litPropertyMetadata??=new WeakMap;var kt=class extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??=[]).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,t=Ot){if(t.state&&(t.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(e)&&((t=Object.create(t)).wrapped=!0),this.elementProperties.set(e,t),!t.noAccessor){let n=Symbol(),r=this.getPropertyDescriptor(e,n,t);r!==void 0&&gt(this.prototype,e,r)}}static getPropertyDescriptor(e,t,n){let{get:r,set:i}=_t(this.prototype,e)??{get(){return this[t]},set(e){this[t]=e}};return{get:r,set(t){let a=r?.call(this);i?.call(this,t),this.requestUpdate(e,a,n)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??Ot}static _$Ei(){if(this.hasOwnProperty(Tt(`elementProperties`)))return;let e=bt(this);e.finalize(),e.l!==void 0&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(Tt(`finalized`)))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(Tt(`properties`))){let e=this.properties,t=[...vt(e),...yt(e)];for(let n of t)this.createProperty(n,e[n])}let e=this[Symbol.metadata];if(e!==null){let t=litPropertyMetadata.get(e);if(t!==void 0)for(let[e,n]of t)this.elementProperties.set(e,n)}this._$Eh=new Map;for(let[e,t]of this.elementProperties){let n=this._$Eu(e,t);n!==void 0&&this._$Eh.set(n,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){let t=[];if(Array.isArray(e)){let n=new Set(e.flat(1/0).reverse());for(let e of n)t.unshift(mt(e))}else e!==void 0&&t.push(mt(e));return t}static _$Eu(e,t){let n=t.attribute;return!1===n?void 0:typeof n==`string`?n:typeof e==`string`?e.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(e=>this.enableUpdating=e),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(e=>e(this))}addController(e){(this._$EO??=new Set).add(e),this.renderRoot!==void 0&&this.isConnected&&e.hostConnected?.()}removeController(e){this._$EO?.delete(e)}_$E_(){let e=new Map,t=this.constructor.elementProperties;for(let n of t.keys())this.hasOwnProperty(n)&&(e.set(n,this[n]),delete this[n]);e.size>0&&(this._$Ep=e)}createRenderRoot(){let e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return pt(e,this.constructor.elementStyles),e}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(e=>e.hostConnected?.())}enableUpdating(e){}disconnectedCallback(){this._$EO?.forEach(e=>e.hostDisconnected?.())}attributeChangedCallback(e,t,n){this._$AK(e,n)}_$ET(e,t){let n=this.constructor.elementProperties.get(e),r=this.constructor._$Eu(e,n);if(r!==void 0&&!0===n.reflect){let i=(n.converter?.toAttribute===void 0?Et:n.converter).toAttribute(t,n.type);this._$Em=e,i==null?this.removeAttribute(r):this.setAttribute(r,i),this._$Em=null}}_$AK(e,t){let n=this.constructor,r=n._$Eh.get(e);if(r!==void 0&&this._$Em!==r){let e=n.getPropertyOptions(r),i=typeof e.converter==`function`?{fromAttribute:e.converter}:e.converter?.fromAttribute===void 0?Et:e.converter;this._$Em=r;let a=i.fromAttribute(t,e.type);this[r]=a??this._$Ej?.get(r)??a,this._$Em=null}}requestUpdate(e,t,n,r=!1,i){if(e!==void 0){let a=this.constructor;if(!1===r&&(i=this[e]),n??=a.getPropertyOptions(e),!((n.hasChanged??Dt)(i,t)||n.useDefault&&n.reflect&&i===this._$Ej?.get(e)&&!this.hasAttribute(a._$Eu(e,n))))return;this.C(e,t,n)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(e,t,{useDefault:n,reflect:r,wrapped:i},a){n&&!(this._$Ej??=new Map).has(e)&&(this._$Ej.set(e,a??t??this[e]),!0!==i||a!==void 0)||(this._$AL.has(e)||(this.hasUpdated||n||(t=void 0),this._$AL.set(e,t)),!0===r&&this._$Em!==e&&(this._$Eq??=new Set).add(e))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}let e=this.scheduleUpdate();return e!=null&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(let[e,t]of this._$Ep)this[e]=t;this._$Ep=void 0}let e=this.constructor.elementProperties;if(e.size>0)for(let[t,n]of e){let{wrapped:e}=n,r=this[t];!0!==e||this._$AL.has(t)||r===void 0||this.C(t,void 0,n,r)}}let e=!1,t=this._$AL;try{e=this.shouldUpdate(t),e?(this.willUpdate(t),this._$EO?.forEach(e=>e.hostUpdate?.()),this.update(t)):this._$EM()}catch(t){throw e=!1,this._$EM(),t}e&&this._$AE(t)}willUpdate(e){}_$AE(e){this._$EO?.forEach(e=>e.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(e){return!0}update(e){this._$Eq&&=this._$Eq.forEach(e=>this._$ET(e,this[e])),this._$EM()}updated(e){}firstUpdated(e){}};kt.elementStyles=[],kt.shadowRootOptions={mode:`open`},kt[Tt(`elementProperties`)]=new Map,kt[Tt(`finalized`)]=new Map,wt?.({ReactiveElement:kt}),(xt.reactiveElementVersions??=[]).push(`2.1.2`);var At=globalThis,jt=e=>e,Mt=At.trustedTypes,Nt=Mt?Mt.createPolicy(`lit-html`,{createHTML:e=>e}):void 0,Pt=`$lit$`,Ft=`lit$${Math.random().toFixed(9).slice(2)}$`,It=`?`+Ft,Lt=`<${It}>`,Rt=document,zt=()=>Rt.createComment(``),Bt=e=>e===null||typeof e!=`object`&&typeof e!=`function`,Vt=Array.isArray,Ht=e=>Vt(e)||typeof e?.[Symbol.iterator]==`function`,Ut=`[
5
- \f\r]`,Wt=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,Gt=/-->/g,Kt=/>/g,qt=RegExp(`>|${Ut}(?:([^\\s"'>=/]+)(${Ut}*=${Ut}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,`g`),Jt=/'/g,Yt=/"/g,Xt=/^(?:script|style|textarea|title)$/i,Zt=e=>(t,...n)=>({_$litType$:e,strings:t,values:n}),A=Zt(1),j=Zt(2),Qt=Symbol.for(`lit-noChange`),M=Symbol.for(`lit-nothing`),$t=new WeakMap,en=Rt.createTreeWalker(Rt,129);function tn(e,t){if(!Vt(e)||!e.hasOwnProperty(`raw`))throw Error(`invalid template strings array`);return Nt===void 0?t:Nt.createHTML(t)}var nn=(e,t)=>{let n=e.length-1,r=[],i,a=t===2?`<svg>`:t===3?`<math>`:``,o=Wt;for(let t=0;t<n;t++){let n=e[t],s,c,l=-1,u=0;for(;u<n.length&&(o.lastIndex=u,c=o.exec(n),c!==null);)u=o.lastIndex,o===Wt?c[1]===`!--`?o=Gt:c[1]===void 0?c[2]===void 0?c[3]!==void 0&&(o=qt):(Xt.test(c[2])&&(i=RegExp(`</`+c[2],`g`)),o=qt):o=Kt:o===qt?c[0]===`>`?(o=i??Wt,l=-1):c[1]===void 0?l=-2:(l=o.lastIndex-c[2].length,s=c[1],o=c[3]===void 0?qt:c[3]===`"`?Yt:Jt):o===Yt||o===Jt?o=qt:o===Gt||o===Kt?o=Wt:(o=qt,i=void 0);let d=o===qt&&e[t+1].startsWith(`/>`)?` `:``;a+=o===Wt?n+Lt:l>=0?(r.push(s),n.slice(0,l)+Pt+n.slice(l)+Ft+d):n+Ft+(l===-2?t:d)}return[tn(e,a+(e[n]||`<?>`)+(t===2?`</svg>`:t===3?`</math>`:``)),r]},rn=class e{constructor({strings:t,_$litType$:n},r){let i;this.parts=[];let a=0,o=0,s=t.length-1,c=this.parts,[l,u]=nn(t,n);if(this.el=e.createElement(l,r),en.currentNode=this.el.content,n===2||n===3){let e=this.el.content.firstChild;e.replaceWith(...e.childNodes)}for(;(i=en.nextNode())!==null&&c.length<s;){if(i.nodeType===1){if(i.hasAttributes())for(let e of i.getAttributeNames())if(e.endsWith(Pt)){let t=u[o++],n=i.getAttribute(e).split(Ft),r=/([.?@])?(.*)/.exec(t);c.push({type:1,index:a,name:r[2],strings:n,ctor:r[1]===`.`?ln:r[1]===`?`?un:r[1]===`@`?dn:cn}),i.removeAttribute(e)}else e.startsWith(Ft)&&(c.push({type:6,index:a}),i.removeAttribute(e));if(Xt.test(i.tagName)){let e=i.textContent.split(Ft),t=e.length-1;if(t>0){i.textContent=Mt?Mt.emptyScript:``;for(let n=0;n<t;n++)i.append(e[n],zt()),en.nextNode(),c.push({type:2,index:++a});i.append(e[t],zt())}}}else if(i.nodeType===8){if(i.data===It)c.push({type:2,index:a});else{let e=-1;for(;(e=i.data.indexOf(Ft,e+1))!==-1;)c.push({type:7,index:a}),e+=Ft.length-1}}a++}}static createElement(e,t){let n=Rt.createElement(`template`);return n.innerHTML=e,n}};function an(e,t,n=e,r){if(t===Qt)return t;let i=r===void 0?n._$Cl:n._$Co?.[r],a=Bt(t)?void 0:t._$litDirective$;return i?.constructor!==a&&(i?._$AO?.(!1),a===void 0?i=void 0:(i=new a(e),i._$AT(e,n,r)),r===void 0?n._$Cl=i:(n._$Co??=[])[r]=i),i!==void 0&&(t=an(e,i._$AS(e,t.values),i,r)),t}var on=class{constructor(e,t){this._$AV=[],this._$AN=void 0,this._$AD=e,this._$AM=t}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(e){let{el:{content:t},parts:n}=this._$AD,r=(e?.creationScope??Rt).importNode(t,!0);en.currentNode=r;let i=en.nextNode(),a=0,o=0,s=n[0];for(;s!==void 0;){if(a===s.index){let t;s.type===2?t=new sn(i,i.nextSibling,this,e):s.type===1?t=new s.ctor(i,s.name,s.strings,this,e):s.type===6&&(t=new fn(i,this,e)),this._$AV.push(t),s=n[++o]}a!==s?.index&&(i=en.nextNode(),a++)}return en.currentNode=Rt,r}p(e){let t=0;for(let n of this._$AV)n!==void 0&&(n.strings===void 0?n._$AI(e[t]):(n._$AI(e,n,t),t+=n.strings.length-2)),t++}},sn=class e{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(e,t,n,r){this.type=2,this._$AH=M,this._$AN=void 0,this._$AA=e,this._$AB=t,this._$AM=n,this.options=r,this._$Cv=r?.isConnected??!0}get parentNode(){let e=this._$AA.parentNode,t=this._$AM;return t!==void 0&&e?.nodeType===11&&(e=t.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,t=this){e=an(this,e,t),Bt(e)?e===M||e==null||e===``?(this._$AH!==M&&this._$AR(),this._$AH=M):e!==this._$AH&&e!==Qt&&this._(e):e._$litType$===void 0?e.nodeType===void 0?Ht(e)?this.k(e):this._(e):this.T(e):this.$(e)}O(e){return this._$AA.parentNode.insertBefore(e,this._$AB)}T(e){this._$AH!==e&&(this._$AR(),this._$AH=this.O(e))}_(e){this._$AH!==M&&Bt(this._$AH)?this._$AA.nextSibling.data=e:this.T(Rt.createTextNode(e)),this._$AH=e}$(e){let{values:t,_$litType$:n}=e,r=typeof n==`number`?this._$AC(e):(n.el===void 0&&(n.el=rn.createElement(tn(n.h,n.h[0]),this.options)),n);if(this._$AH?._$AD===r)this._$AH.p(t);else{let e=new on(r,this),n=e.u(this.options);e.p(t),this.T(n),this._$AH=e}}_$AC(e){let t=$t.get(e.strings);return t===void 0&&$t.set(e.strings,t=new rn(e)),t}k(t){Vt(this._$AH)||(this._$AH=[],this._$AR());let n=this._$AH,r,i=0;for(let a of t)i===n.length?n.push(r=new e(this.O(zt()),this.O(zt()),this,this.options)):r=n[i],r._$AI(a),i++;i<n.length&&(this._$AR(r&&r._$AB.nextSibling,i),n.length=i)}_$AR(e=this._$AA.nextSibling,t){for(this._$AP?.(!1,!0,t);e!==this._$AB;){let t=jt(e).nextSibling;jt(e).remove(),e=t}}setConnected(e){this._$AM===void 0&&(this._$Cv=e,this._$AP?.(e))}},cn=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(e,t,n,r,i){this.type=1,this._$AH=M,this._$AN=void 0,this.element=e,this.name=t,this._$AM=r,this.options=i,n.length>2||n[0]!==``||n[1]!==``?(this._$AH=Array(n.length-1).fill(new String),this.strings=n):this._$AH=M}_$AI(e,t=this,n,r){let i=this.strings,a=!1;if(i===void 0)e=an(this,e,t,0),a=!Bt(e)||e!==this._$AH&&e!==Qt,a&&(this._$AH=e);else{let r=e,o,s;for(e=i[0],o=0;o<i.length-1;o++)s=an(this,r[n+o],t,o),s===Qt&&(s=this._$AH[o]),a||=!Bt(s)||s!==this._$AH[o],s===M?e=M:e!==M&&(e+=(s??``)+i[o+1]),this._$AH[o]=s}a&&!r&&this.j(e)}j(e){e===M?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e??``)}},ln=class extends cn{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===M?void 0:e}},un=class extends cn{constructor(){super(...arguments),this.type=4}j(e){this.element.toggleAttribute(this.name,!!e&&e!==M)}},dn=class extends cn{constructor(e,t,n,r,i){super(e,t,n,r,i),this.type=5}_$AI(e,t=this){if((e=an(this,e,t,0)??M)===Qt)return;let n=this._$AH,r=e===M&&n!==M||e.capture!==n.capture||e.once!==n.once||e.passive!==n.passive,i=e!==M&&(n===M||r);r&&this.element.removeEventListener(this.name,this,n),i&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){typeof this._$AH==`function`?this._$AH.call(this.options?.host??this.element,e):this._$AH.handleEvent(e)}},fn=class{constructor(e,t,n){this.element=e,this.type=6,this._$AN=void 0,this._$AM=t,this.options=n}get _$AU(){return this._$AM._$AU}_$AI(e){an(this,e)}},pn={M:Pt,P:Ft,A:It,C:1,L:nn,R:on,D:Ht,V:an,I:sn,H:cn,N:un,U:dn,B:ln,F:fn},mn=At.litHtmlPolyfillSupport;mn?.(rn,sn),(At.litHtmlVersions??=[]).push(`3.3.3`);var hn=globalThis,N=class extends kt{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){let e=super.createRenderRoot();return this.renderOptions.renderBefore??=e.firstChild,e}update(e){let t=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Do=((e,t,n)=>{let r=n?.renderBefore??t,i=r._$litPart$;if(i===void 0){let e=n?.renderBefore??null;r._$litPart$=i=new sn(t.insertBefore(zt(),e),e,void 0,n??{})}return i._$AI(e),i})(t,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return Qt}};N._$litElement$=!0,N.finalized=!0,hn.litElementHydrateSupport?.({LitElement:N});var gn=hn.litElementPolyfillSupport;gn?.({LitElement:N}),(hn.litElementVersions??=[]).push(`4.2.2`);var P=e=>(t,n)=>{n===void 0?customElements.define(e,t):n.addInitializer(()=>{customElements.define(e,t)})},_n={attribute:!0,type:String,converter:Et,reflect:!1,hasChanged:Dt},vn=(e=_n,t,n)=>{let{kind:r,metadata:i}=n,a=globalThis.litPropertyMetadata.get(i);if(a===void 0&&globalThis.litPropertyMetadata.set(i,a=new Map),r===`setter`&&((e=Object.create(e)).wrapped=!0),a.set(n.name,e),r===`accessor`){let{name:r}=n;return{set(n){let i=t.get.call(this);t.set.call(this,n),this.requestUpdate(r,i,e,!0,n)},init(t){return t!==void 0&&this.C(r,void 0,e,t),t}}}if(r===`setter`){let{name:r}=n;return function(n){let i=this[r];t.call(this,n),this.requestUpdate(r,i,e,!0,n)}}throw Error(`Unsupported decorator location: `+r)};function F(e){return(t,n)=>typeof n==`object`?vn(e,t,n):((e,t,n)=>{let r=t.hasOwnProperty(n);return t.constructor.createProperty(n,e),r?Object.getOwnPropertyDescriptor(t,n):void 0})(e,t,n)}function I(e){return F({...e,state:!0,attribute:!1})}var yn=(e,t,n)=>(n.configurable=!0,n.enumerable=!0,Reflect.decorate&&typeof t!=`object`&&Object.defineProperty(e,t,n),n);function bn(e,t){return(n,r,i)=>{let a=t=>t.renderRoot?.querySelector(e)??null;if(t){let{get:e,set:t}=typeof r==`object`?n:i??(()=>{let e=Symbol();return{get(){return this[e]},set(t){this[e]=t}}})();return yn(n,r,{get(){let n=e.call(this);return n===void 0&&(n=a(this),(n!==null||this.hasUpdated)&&t.call(this,n)),n}})}return yn(n,r,{get(){return a(this)}})}}var xn,Sn=t({templates:()=>Cn}),Cn=function(e){let t=new Map;return new Proxy(e,{get(e,n){if(typeof n==`string`){if(!t.has(n)){let r;for(let t=1;t<=n.length&&r===void 0;t++){let i=n.slice(0,t);Object.hasOwn(e,i)&&(r=e[i])}t.set(n,r)}return t.get(n)}}})}({c:`実行`,d:`出力`,"edge-a":`完了を待つ`,"edge-c":`結果を受けて作成`,"edge-g":`出力を受け取る`,f:`停止`,h0:A`JSON Lines(1 行ごとに JSON オブジェクト、スキーマ ${0})`,h5:A`${0} の出力`,h6:A`JSON オブジェクト(スキーマ ${0})`,h87:A`依存先タスク ${0}`,h8e:A`この実行には階層 <code>${0}</code> がありません`,ha:A`ファイルなし | Python コードで定義(<code>TaskAdapter</code>)`,hc:A`実行中 ${0}${1}`,hf:A`${0} の出力から`,i:`未確認`,"no-":`実行はまだありません`,non:`なし`,"outcome-c":`取り消し`,"outcome-d":`完了`,"outcome-p":`一部のみ完了`,"part-d":`定義`,"part-i":`入力ファイル`,"part-p":`パラメータ`,s000:`実行履歴の未実行のタスク`,s00c:E`HTTP ステータス ${0}`,s02f7:`実行されず`,s02f9:E`アカウント: ${0}`,s030:E`カスタムビュー ${0} はありません`,s037:`完了`,s0382:E`${0}: ${1}`,s038b:`ページ`,s03b:`タブ`,s03e:`タスク`,s03f:E`古い試行 ${0} 件は非表示`,s041:E`ほか ${0} 件`,s042:`タスクが宣言したパターンの下で、試行が作成・変更・削除したファイル(changes)`,s044:E`一部のみ完了 ${0} 件`,s048:`再開後に再実行`,s04f:`停止した部分`,s051:`実行中のエージェントのセッション`,s055:`選択中の項目`,s05f:`認証エラー`,s061:`OutputContract`,s062:`トランスクリプト`,s0668:`ユニットごとのステージとステップ(CursorStore)`,s066d:`出力`,s06a:`Esc: 1 つ上の階層`,s06b0:`実行中ではありません`,s06bf:`中を表示`,s077:`テキストフィルター(/)`,s079:E`キャッシュ ${0}`,s07d:`関数`,s07e:E`+${0}`,s087:E`${0}%`,s08b1:E`${0}(認証情報が休止中)`,s08b3:`いいえ`,s08c:`稼働中`,s0932:`出力の検証: OK`,s0935:`終了日`,s094:`最初のエージェントのセッションの前に終了`,s09b:`プロンプトなし`,s0a:E`入力元: ${0}`,s0b0:E`作成元: ${0}`,s0b2:`エージェントのセッション開始時のサブスクリプション利用率(アカウント全体)`,s0b3:`OK`,s0b7:`実行前からあるファイル`,s0bf:E`${0} 周目`,s0c:E`モデル切り替えのあったタスク ${0} 件`,s0d7:E`キャッシュ書き込み ${0}`,s0df:`依存先タスクが登録されなかった`,s0e6:`問題`,s0ea:`プラグインディレクトリ`,s0ef:`すべてのホスト`,s0f0:`一部省略`,s0f1:`リセット済み`,s0f2:E`最初の API 呼び出しの入力: ${0}`,s0f8:E`出力ファイル ${0} 件`,s103:`再開カーソル`,s104:`昇順に並べ替え`,s107:`種別の最初のタスクの開始時に記録(definitions/&lt;kind&gt;.json)`,s108:E`${0} の実装`,s114:E`${0} 型の JSON 値`,s115:`過去 24 時間`,s123:`待機中`,s125:E`要素 ${0} 個`,s12c:`型の不一致`,s13:E`最終報告 ${0}`,s14b:`コーディングエージェントが報告した値`,s14c:E`この失敗で ${0} が ${1} で停止`,s150:`出力`,s156:`なし(任意)`,s158:E`週の利用率 ${0}`,s159:`このタスクが代わりに出力ファイルを書く種別(output_of)`,s163:`検証対象のファイルなし`,s165:E`${0} 回目で完了 | 失敗 1 回`,s168:`検証のタイミング`,s170:E`実行されず ${0} 件`,s172:E`同じフローの実行 ${0} から見込んだ、この実行がまだ作成していないタスク(forecast)`,s179:`アカウントごと、最初の値 → 最後の値`,s17d:`利用率のルール`,s17e:`書き込み待ち(タスクが待機中)`,s18:E`ループ内の ${0}`,s197:`利用できるモデルなし`,s19e:`上限: max_concurrent`,s1a2:E`スキップ ${0} 件`,s1a3:`種別 · ユニット`,s1a4:`モデルごとの、エージェントのセッションの使用量。モデル切り替えの前後は別々に集計(Plan.models)`,s1ac8:`エディタのテーマ`,s1acc:`書き込まれていない出力 1 件(タスクが未実行)`,s1b2:E`種別 ${0}`,s1bb:`すべてのタスクが開始済み`,s1bf:`実行中のプロセスなし`,s1c0:`パラメータ`,s1c2:`タスクが選択されていません`,s1c4:E`セッション開始時の利用率(アカウント全体): ${0}`,s1c7:`実行に登録されたすべてのタスク(種別ごと、plan.jsonl)`,s1cc:`実行中の Python タスク`,s1d4:`どのフローも結果を待たず、after= にも渡さず、戻り値にも含めなかったタスク(unawaited)。出力ファイルと変更のために実行された`,s1db:`API エラー`,s1dc:E`試行 ${0} 回`,s1dd:`実行中のタスクなし`,s1e9:E`プロンプト(${0} 文字、ほか ${1} 文字は未保存)`,s1eb:`入力`,s1f2:`削除`,s1f5:E`所要時間 ${0}`,s204:`安全分類器による停止`,s20e:E`リセットまで ${0}`,s20f9:`依存先タスクが実行されなかった`,s20fd:`ホストなし`,s217:`あり`,s21a:`発生したらリトライする例外(retry_on)`,s221:`JSON ではありません`,s224:`ツール実行中に中止`,s230:`スキーマにないフィールド`,s234:`終了した試行はまだありません`,s236:`拡大`,s23b:E`${0} 回の試行がすべて失敗: ${1}`,s23f:`定義はまだありません`,s24:E`完了 ${0}`,s257:`OutputContract・InputContract を宣言したタスクはありません`,s25f:E`まだ登録されていない種別: ${0}`,s260:`API 呼び出し 1 回`,s26ba:`ユニットなし`,s26bb:`実行した試行の回数(リトライを含む、journal.jsonl)`,s26e:E`API 呼び出し ${0} 回`,s27a:`最後のメッセージから`,s27b:E`ユニット: ${0}`,s27d:`フローの構成`,s28a2:`リプレイ`,s28ad:`曜日と時刻ごと(期間のタイムゾーン)`,s28f:`InputContract`,s29:E`最大コンテキスト: ${0}`,s2a:`現在`,s2c0:E`パラメータ ${0}`,s2c8:`リトライ`,s2cd:`モデルの利用可否`,s2dd:`試行の結果(stop)`,s2df0:`割合`,s2df6:`開始時も同じ内容`,s2e3:E`ほかの出力 ${0} 件`,s2e4:`周`,s2f34:E`${0} 周`,s2f3c:`問題なし`,s2f4:`すべての出力`,s2f5:`定義なし`,s2fa:E`5 時間枠の利用率 ${0}(リセット ${1})`,s2fe3:`ツール`,s2fea:E`修正依頼 ${0}`,s313:`終了(未実行のタスク 1 件)`,s31a:E`待たれなかったタスク ${0} 件`,s321:`余分なフィールド`,s326:E`キャッシュ読み込み ${0}`,s32d:`最大コンテキスト`,s33b:`パイプラインの階層`,s33f:E`${0} で停止`,s343:`新しいイベント 1 件を表示`,s34b:`終了`,s34e:`降順に並べ替え`,s351:`終了した試行なし`,s352:`ファイル全体`,s355:`入力ファイルに検証エラー`,s366:`週`,s367:`料金`,s368:`コピー`,s36d:E`この書き出しに含まれないもの: ${0}`,s36e:E`所要時間 ${0}`,s3700:`Web 検索 1 回`,s370b:E`報告時刻 ${0}`,s378:`検証エラーの後に、同じエージェントのセッションで続けるラウンド(rounds)`,s37d:`スキーマ以外の検証(validators)`,s384:E`${0} を展開`,s387:E`検索結果 ${0} 件`,s38e65:`修正依頼のプロンプトに含めて送信`,s38e6a:`日ごとの料金`,s390:`JSON オブジェクトではありません`,s39e:`パイプライン`,s3a7:E`上限: ${0}`,s3aa:`出力ファイルなし`,s3b3:`プロセスツリー`,s3b9:E`${0} にモニター API がありません: ${1}`,s3bd:E`task_detail コールバックが失敗: ${0}`,s3c6:`実行した試行の回数`,s3cd:`実行中のエージェントのセッション 1 件`,s3d0:`エージェントのセッション`,s3d1:`概要`,s3d31:`利用できるモデルがなく、設定どおりのモデルで実行する種別(kept)`,s3d38:E`認証情報 ${0}`,s3d99:`検証エラー後の、同じエージェントのセッション`,s3d9b:`テキストファイル`,s3dd:`ネットワークエラーで応答なし`,s3f1:`各タスクが書き込むファイル`,s3f7:`修正依頼`,s3fd6:`開始`,s3fda:`このタスクの出力が後続タスクのパラメータに含まれる(given_from)`,s407:E`${0}: 入力`,s408:`週の利用率`,s41:`Tab: 次のノード`,s42a:`フィールド`,s42c:`検証`,s438:`ハイライトを解除`,s43a:`入力ファイル`,s43e:`利用不可`,s451:`料金の高いタスク`,s454:E`${0} のループの各周`,s45d:E`${0}(カスタムビュー)`,s466:`モデル切り替えのあったタスク 1 件`,s467:E`1 周: ${0}`,s473:`キャッシュ読み込み`,s478:`検証対象のファイル(OutputContract、InputContract)`,s479:`締め切り`,s47a:E`このタスクの入力 ${0} 件`,s47b:`Python タスク`,s47c:`未対応のイベント`,s482:E`終了 ${0}`,s484:`テキストなし`,s48e:`所要時間`,s490:`モニターのサーバーに接続済み`,s491:E`${0} のループ`,s4a:E`${0} 日前`,s4c:`あと 1 件の見込み(forecast)`,s4d6:`検索結果 1 件`,s4d8:`モデル切り替え`,s4e7:E`修正依頼 ${0} 回で完了 | 最初の検証エラー: ${1}`,s4ef:`ループ`,s4f0:`スキーマにない`,s4f9:E`ホスト ${0}`,s4fe:`エージェントタスク`,s5013:E`取り消し ${0} 件`,s5018:E`${0}: ${1} → ${2}`,s504:`日付指定`,s5131:`そのモデルで始めたエージェントのセッションの数`,s5138:`入力・出力・キャッシュ読み込み・キャッシュ書き込みの合計`,s514:`実行が終了した`,s521:`1 ユニット`,s522:`安全分類器がエージェントのセッションの一部を止め、セッションはそのまま続いた(safety_stops)`,s525b:`失敗の後の、次のモデルでの新しいエージェントのセッション(Router のホップ)`,s525c:`記録から再生した試行(replayed)`,s529:E`上限 ${0}`,s52b:`このバージョンの contraagent が対応していないイベント種別(unread_events)`,s52c7:`次の周`,s52cc:E`${0} の締め切りと仕上げの猶予を過ぎた`,s52cf:`カスタムビュー`,s535:`種別`,s53c5:E`${0}: 未実行`,s53c8:`不可`,s541:`開始できず`,s543:`プロンプト`,s5522:E`フロー呼び出し ${0}`,s552a:E`${0} の失敗により停止`,s555:`プラグインディレクトリ`,s558:`認証情報の不一致`,s5590:`項目`,s559f:`その他のモデル`,s55f:E`${0}(${1})`,s566:E`(ほか ${0} 文字は未保存)`,s567:`未実行(依存先タスクが失敗)`,s568:E`後続タスク: ${0}`,s571:E`入力 ${0} がありません(${1} が未実行)`,s574:E`キャッシュ書き込み ${0}`,s585:E`入力 ${0} がありません(${1} が失敗)`,s587:E`${0} 以降報告なし`,s58b:`モデルの置き換え`,s58c:`実行履歴`,s591:`5 時間枠`,s594:E`修正依頼 ${0} 回`,s59e:`上限に接近`,s5a3:`休止中`,s5a7:`ツール`,s5ab:`並び順`,s5b9:`種別ごとのトークンと料金`,s5bd:`フロー呼び出しごとの締め切り(time_box)`,s5c7:`サービスなし`,s5cb:`分岐`,s5cd:E`エージェントのセッション ${0} 回`,s5cf:`値なし`,s5d0:`実行中にこのタスクが占有する名前(claims)`,s5d4:E`${0} 回目で完了 | 失敗 ${1} 回`,s5da:`モデル`,s5de:`依存先タスク`,s5e3:`書き込みなし(タスクが未実行)`,s5e6:`テキスト(JSON 文字列)`,s5f2:`ロールなし`,s5f31:`エージェント・モデル・認証情報`,s5f34:`エラー`,s5f40:`行なし`,s5f43:`ソース`,s5f7:`なし(必須)`,s5f8:E`認証情報 ${0} は休止中`,s5ff:`エージェントタスク`,s601:`実行中`,s605:E`未実行の後続タスク ${0} 件`,s620:`キャッシュ書き込み`,s629:`任意`,s647:`応答が JSON ではなく HTML`,s649:`後続タスク`,s64a:`前のタスクの出力は同じなのに、フローが別のパラメータを渡した(divergence)。時刻、乱数、外部の状態、フローのコードの変更による`,s64f:`変更禁止の箇所`,s652:E`ロック ${0} 件`,s653:`締め切りを過ぎた`,s65c:`中断`,s6645:`拡大(Ctrl + スクロール)`,s6647:`ファイルなし`,s664b:`ツール呼び出しが戻る前に実行が終了`,s670:E`${0} ユニット`,s673:`停止でエラー`,s680:`タイムライン`,s685:`修正依頼`,s688:`その他の検証`,s68d:E`仕上げの猶予 ${0}`,s695:`修正依頼 1 回`,s699:E`スキーマ ${0}`,s6a0:`1 ステップ完了`,s6a8:E`入力 ${0} がありません(${1} が未完了)`,s6aa:`未実行(入力ファイルなし)`,s6b0:`ホスト`,s6b8:E`同時実行 ${0}/${1}`,s6b9:`タスクなし`,s6c3:`依存先タスクなし`,s6c7:`実行の開始時刻`,s6c8:E`依存先タスク ${0} が失敗`,s6d7:E`${1} タスク中 ${0} 件完了`,s6db:E`${0} 文字`,s6e4:`未選択`,s6eb:`読み込み中…`,s6f1:`API 呼び出し`,s6f2:`出力ファイル 1 件`,s6f5:E`見込み: あと ${0} タスク`,s6fa:`フロー呼び出しがエラーで終了`,s700:`書き出しに含まれない`,s703:E`${0} まで休止`,s706:`実行グループ`,s70a7:E`タスク終了後の利用率: ${0}`,s70af:`種別`,s71:E`モデル切り替え: ${0}`,s721:`ホストからの報告なし`,s7233:`古い試行 1 件は非表示`,s7239:E`修正依頼のあったタスク ${0} 件`,s72dc:`ユニットごとの周回数`,s72dd:`キャッシュ読み込み`,s734:`スタブエージェント`,s737:`ループの周回数`,s73d:`未実行の後続タスク 1 件`,s755:E`プラグイン ${0}`,s758:`エージェントのセッションなし`,s75e:`実行を検索`,s767:E`${0} モニター`,s76d:`カスタム列(row_extras)`,s76f:`原因`,s771:E`入力 ${0} は失敗したタスク ${1} の出力`,s77e:E`未実行 ${0} 件`,s782:`書き足す対象のファイル`,s786:`トランスクリプト`,s78f:`トークン`,s797:`すべての中を隠す`,s79a:E`未対応のイベント: ${0}`,s79f:E`5 時間枠の利用率 ${0}`,s7a1:`エラーで終了したフロー呼び出し 1 件`,s7a3:`出力ファイル`,s7a4:`権限エラー`,s7b16:`入力ファイルなし`,s7b1c:`修正依頼のあった試行`,s7b3:`検索に一致する実行なし`,s7bf:E`最初のエージェントのセッションの前に各モデルへ送る 1 回のリクエスト(preflight, policy ${0})`,s7c0:E`ホストからの報告なし ${0} 件`,s7c9:`フィルター`,s7cd8:`このタスクの入力 1 件`,s7cd9:`利用できるモデルがなく、最初に応答したモデルで実行する種別(substitute)`,s7cf:`応答が JSON ではない`,s7da:`最終報告`,s7df:E`終了(未実行のタスク ${0} 件)`,s7e:E`ロール ${0}`,s7f:`表示形式`,s803:`ファイル`,s807:`実行 1 件`,s80c:`1 行`,s816:`モデル切り替えなし`,s817:`変更したファイル 1 件`,s822:E`以前の試行のモデル: ${0}`,s826:`エージェントのセッションが使ったモデル`,s827:`認証情報が休止中`,s83:E`書き込み ${0}`,s841:`たった今`,s843:E`修正依頼 ${0} 回後`,s84f:`リトライ`,s8512:E`テーマ: ${0}`,s851d:`ファイルの値`,s859:`実行中`,s85e:E`${0}: モデル切り替え`,s863:E`入力 ${0} がありません`,s864:`全体を表示`,s868:E`${2} 年 ${0}〜${1} | ${3}`,s86c:E`ホスト ${0} 台`,s874:E`${0} ステップ完了`,s877:E`${0} 回目の失敗後の、新しいエージェントのセッション`,s87a:`実行されず`,s87b:E`モデル切り替え後に完了: ${0}`,s87c:`修正依頼 1 回後`,s880:`全試行の合計`,s888:`入力`,s88b:`表で表示`,s88e:E`修正依頼 ${0}`,s892:E`入力 ${0}(${1} の出力)がありません`,s89e:`パラメータなし`,s8a56:`なし`,s8a59:E`PID ${0}`,s8ab:`コーディングエージェント`,s8ad:`周回数`,s8ae:E`${0} の記録から再生したエージェントのセッションと、そこに記録した新しいセッション(replay, record_missing)`,s8b1:`リトライしたタスク`,s8b4:`同じロックを持つタスクが共有する常駐の補助プロセス(services.jsonl)`,s8bb:`終了したすべての試行から集計(journal.jsonl)`,s8c1:E`${0} 分前`,s8c5:`このタスクの結果を受け取った直後に、フロー呼び出しが後続タスクを作成した(created_from)`,s8d3:`コーディングエージェントが使ったアカウントまたは API キー(credential)`,s8d4:`PID`,s8dd:E`キャッシュ読み込み ${0}`,s8de:`再開後の実行での、新しいエージェントのセッション`,s8df:`オブジェクト`,s8e3:`アシスタント`,s8e6:`Python コードで定義`,s8e9:E`ほか ${0} アカウント`,s8ea:`Tab: 次の行`,s8f1:`選択を解除`,s8f2:`ユニット`,s8f4:`入力と出力(全試行の合計)`,s8f5:`未実行`,s8fa:`未実行(入力ファイルなし、入力ファイルに検証エラー)`,s8fc:E`修正依頼 1 回で完了 | 最初の検証エラー: ${0}`,s900:`ビュー`,s901:`完了したタスク`,s906:`Python タスク`,s90c:E`コンテキストの上限 ${1} の ${0}%`,s90e:`ほかの種別が実装する種別(base_kind)`,s90f:`認証エラー`,s914:E`最大 ${0} 周`,s915:E`モデル ${0} 種類`,s919:E`${0}d ${1}h`,s91d:`順序のみの依存先`,s924:E`モデル ${0}`,s92a:E`依存先タスク ${0} 件の出力待ち`,s92b:E`5 時間枠 ${0}`,s934:`試行 1 回`,s936:`キュー内で同順位のタスクの順序を決める値(priority)`,s93e:`リプレイ`,s941:E`1 日あたり ${0}`,s949:`書き出しの期間`,s94d:`認証情報`,s94e:E`最終更新 ${0}`,s94f0:`実行中のタスク`,s94fd:E`${0} を折りたたむ`,s967:E`失敗 ${0} 件`,s96a:`コンテキストの上限`,s96c:E`出力 ${0}`,s97:E`修正依頼 ${0} 回で完了`,s980:`テキストフィルター`,s9893d9:E`利用率のルール: ${0}`,s9893de:`ホスト 1 台`,s98b:`グループ`,s98f:`入力ファイルなし`,s99:E`${0} 日間`,s9a2:`すべてのプロセス`,s9a4:E`失敗: ${0}`,s9a6:E`Web 検索 ${0} 回`,s9aa:`API 呼び出し 1 回あたりの入力の最大値。キャッシュ読み込みとキャッシュ書き込みを含む(peak_context)`,s9b1a6:`実行中ではありません`,s9b1a9:E`仕上げの種別: ${0}`,s9b3:`報告間隔`,s9b7:`書き込みなし(タスクが失敗)`,s9bd:E`${0} 回目で完了 | 失敗 ${1} 回 | 最初の失敗: ${2}`,s9c3:E`上限を超えた利用: ${0}`,s9c5:E`${0} の出力`,s9c7:`すべての中を表示`,s9cb:`実装する種別`,s9d3:E`${0} 時点の書き出し`,s9d6:`最終応答なしで終了`,s9de:`モデル`,s9e0:E`状態: ${0}`,s9e8:`未実行(入力ファイルに検証エラー)`,s9f0:E`入力 ${0}`,s9f2:`一部のみ完了`,s9f7:`エラー`,s9f92:E`${0} の内部`,s9f97:`料金の上限`,s9fb:`実行`,s9fd:`タスクの開始前からあるファイルも有効`,s9ff:`モデル切り替え`,sa1:`リプレイした試行`,sa23:`ターン数の上限`,sa24:E`${0} の締め切りまでに終わらない`,sa31:`行を折り返す`,sa33:`後続タスクなし`,sa358:`ロール`,sa35c:`試行`,sa36:`モデル別の内訳`,sa39:E`実行中のエージェントのセッションの新しいイベント ${0} 件を表示`,sa3c:`形式`,sa3d3:E`週の利用率 ${0}(リセット ${1})`,sa3de:`停止`,sa3e:`アカウント全体の値 | エージェントのセッション開始時に取得`,sa3f:`各タスクが読み込むファイル`,sa43:`作成元`,sa48:`コマンドライン`,sa4f:E`最大 ${0} 回`,sa508:`安全分類器による停止 1 件`,sa50a:`折りたたむ`,sa54:`API 呼び出しごとのトークンは不明`,sa57:`権限エラーになったツール呼び出し`,sa58:`周回数`,sa62:E`${0}: トランスクリプト`,sa66:E`前の ${0} 行を表示`,sa6a:`開始日`,sa70:`項目なし`,sa71:`期待する型`,sa74:`縮小(Ctrl + スクロール)`,sa81:`システム設定に合わせる`,sa84:E`新しいイベント ${0} 件を表示`,sa86:E`${0} 時間前`,sa87:`ソースを表示`,sa88:E`${0} の入れ子のループ`,sa8b:`Shift + 矢印キー: 依存先タスク・後続タスク`,sa9b:`タスク詳細`,sa9d:`報告なし`,saa0:`書き込み待ち(タスクが実行中)`,saa2:`理由`,saaa:`5 時間枠の利用率`,saab:`テーマ`,sab5:E`${0} 行目`,sabd:`思考`,sac1:`モニターのサーバーに未接続`,sac7:E`${0} に利用できるモデルなし`,saca:`期間内の実行の合計`,sacb:`分かっているのはコーディングエージェントが出力したトークンの合計だけ。API 呼び出しごとのトークンは不明(usage_unknown)`,sacc:`可`,sad1:E`ほかに休止中の認証情報 ${0} 件`,sad3:`状態`,sad9:`API リクエストを再送`,sadb:`トークンは不明`,sae5:`必須`,sae6:`実行履歴のリトライしたタスク`,saee:`プロセス`,saf2:`すべてのモデルが利用可能`,saf8:`変更したファイルなし`,safd:E`${0} 回目が失敗: ${1}`,sb05:`エラー`,sb06:`実行履歴の修正依頼のあった試行`,sb0c:`サブスクリプションの利用率`,sb0f:`Python タスク 1 回`,sb105:E`未実行: ${0}`,sb106:`検索語`,sb108:`作成、試行の失敗後に削除`,sb14:E`報告なし ${0} 台`,sb16:E`${0} 行`,sb1f:`前の 1 行を表示`,sb24:E`この失敗で ${0} が停止`,sb26a:`登録順`,sb26f:`表示中の階層の外`,sb27:`Enter: 開く`,sb28:`キャッシュ書き込み`,sb31:E`プロンプト(${0} 文字)`,sb34:E`変更したファイル ${0} 件`,sb38:`ツール呼び出し`,sb45:`リトライしたタスク 1 件`,sb4d:`トランスクリプトなし`,sb51:`パイプラインのプロセス内`,sb53:`はい`,sb55:`コーディングエージェントが報告した値`,sb59:E`コンテキストの上限に接近(${0}%)`,sb5a:`未実行`,sb6:`タスク実行中の書き込みが必須`,sb7:E`${0} に停止`,sb81:`実行したエージェントのセッションのトークンは不明(usage_unknown)`,sb89:`エージェントのセッション 1 回`,sb94:E`5 時間枠(${0})`,sb97:`コンテキストの上限に接近`,sb98:E`${0}: 完了`,sb99:`トークンと料金`,sb9c:E`Python タスク: ${0}`,sba3:`1 周`,sba7:`ほかの出力 1 件`,sba8:`検証を通るファイルを書き込む前に、タスクが失敗`,sbaf:`要素 1 個`,sbb0:E`このバージョンの contraagent が対応していないイベント種別(unread_events): ${0}`,sbb2:`開始時の利用率`,sbb7:E`${1} タスク中 ${0} 件が未完了`,sbb9:`終了`,sbbe:`入力元`,sbc6:E`${0} 周: ${1}`,sbc9:E`以前の試行のモデル: ${0}`,sbca:`タスクの開始時`,sbcc:`依存先タスクが失敗`,sbd4:`実行を切り替え(r)`,sbd5:`停止の記録なし`,sbd9:`再開後`,sbdc:E`履歴にほか ${0} 件`,sbe2:`実行履歴の失敗した試行`,sbe4:E`${0} の記録から再生したエージェントのセッション(replay)`,sbe9:E`週(${0})`,sbea:`保存対象外(keep_transcripts = false)`,sbf18:`種別のロール`,sbf1d:E`ロック ${0}`,sbf2:`アクティビティなし`,sbf9:`スタブエージェントが台本どおりの応答で処理したタスク(stub)`,sc03:`それ以前`,sc07:`リトライ対象の例外`,sc15:`スキップ`,sc1a:E`待機中 ${0} 件`,sc1b:E`リトライしたタスク ${0} 件`,sc2:`ツール`,sc3:`この期間の実行はありません`,sc4:`タイムアウト`,sc53:`休止した認証情報`,sc54:E`${0} の締め切りを過ぎた`,sc57:E`入力 ${0} に検証エラー`,sc5b:`次のモデルでの新しいエージェントのセッション`,sc61:E`週 ${0}`,sc65:`縮小`,sc68:`日時`,sc6c:E`書き込まれていない出力 ${0} 件(タスクが未実行)`,sc6e:`締め切りまでに終わらない`,sc6f:E`エラーで終了したフロー呼び出し ${0} 件`,sc73:`開始`,sc75:E`全 ${1} 行のうち先頭 ${0} 行`,sc79:`タスク`,sc7d:`同時実行(上限)`,sc87a:E`警告のしきい値: ${0}`,sc87d:E`終了 ${0}`,sc92:`空き`,sc94:`全体`,sc97:`タイムゾーン`,sc9e:`その他`,sca1:`開始前に変更された`,sca4:`プロセスなし`,sca6:`プレビューを表示`,sca7:`ロール`,scb8:`終了(未完了のタスク 1 件)`,scb9:`最終試行の終了時刻`,scbd:`全文`,scca:E`最も高い種別: ${0}`,sccc:`モデルが応答を拒否`,scd1:`モデルの応答`,scd2:E`${0}: ${1} → 次のモデル`,scd94:`エージェントの所要時間`,scd9c:E`優先度 ${0}`,scdb:`Esc: 選択を解除`,scde:`ループ`,scf41:E`完了 ${0} 件`,scf43:E`入力 ${0} は失敗したタスクの出力`,scf70:`レート制限`,scf71:`失敗した試行の後の試行(retries)`,sd05:E`締め切り ${0}`,sd0e:`出来事`,sd17:`入力 / 出力 | キャッシュ読み込み / キャッシュ書き込み`,sd1f:`ファイルの検証に使うスキーマ`,sd20:E`順序のみの依存先: ${0}`,sd26:E`${0} 件を同時実行`,sd34:E`${0} に開始(${1})`,sd38:`変更`,sd3c:`登録済みのタスクなし`,sd3e:E`終了(未完了のタスク ${0} 件)`,sd40:`読み込むファイル(検証あり)`,sd47:`ローカルの認証情報(ambient)`,sd58:`終了(失敗したタスク 1 件)`,sd5a:`実行がシグナルで停止された`,sd5c:E`変更: ${0}`,sd5d:E`トークン: 入力 ${0}、出力 ${1}、キャッシュ読み込み ${2}、キャッシュ書き込み ${3}`,sd5e:`所要時間の合計`,sd73:`失敗`,sd744:`検証対象のファイル`,sd747:`なし(任意)`,sd75:`検証エラー`,sd776:E`全体の ${0}%`,sd77d:`実行中のエージェントのセッションの新しいイベント 1 件を表示`,sd7d:E`入力 ${0}(${1} の出力)に検証エラー`,sd82:`タスクの開始前からあるファイルは無効`,sd8a:E`${0} まで`,sd93:E`依存先タスク ${0} の出力待ち`,sd95:E`一部のみ完了: ${0}`,sd96:`中を隠す`,sda2:E`セッション開始時の利用率: ${0}`,sda80:E`すべて表示(${0} 文字)`,sda8d:`最大コンテキストが警告のしきい値を超えた(context_warned)`,sdb1:`入力`,sdb4:`イベントが途絶えた`,sdb8:`出力に検証エラー`,sdc:E`実行グループ ${0}`,sdd1:`モニターから応答がありません`,sdd4:`モデル 1 種類`,sdd8:`修正依頼なし`,sddf:`ビューを表示`,sde7:`履歴にほか 1 件`,sde8:E`アカウント ${0}`,sdf1:E`${0} 回目で完了 | 失敗 1 回 | 最初の失敗: ${1}`,sdf4:`リトライなし`,sdf9:`リトライ後に完了`,se0e6:E`${0} から休止中`,se0ed:E`実行されず: ${0}`,se17:E`必要な時間 ${0}`,se1a:`作成`,se21:`指標`,se27:`タスクを実行した CLI(claude、omp)`,se2b:E`キー ${0} 個: ${1}`,se2c:E`期待する型: ${0}`,se3:`キーボードショートカット`,se41:`作成、試行の失敗後も保持`,se4b:`修正依頼のあったタスク 1 件`,se55:`エージェントのセッションの所要時間の合計`,se5a:`モデル切り替え`,se5b:`推移`,se5d:`monitor.Panel`,se60:`ハイコントラスト`,se61:`パイプラインのプロセス内の関数`,se66:`1 タスク`,se69:`後続タスクはこのタスクの完了を待つが、出力は受け取らない(after)`,se6d:`下の階層あり`,se71:E`${0} 回目`,se75:`リプレイと新しいセッション`,se7b:E`タスクの所要時間 ${0}`,se8:E`安全分類器による停止 ${0} 件`,se90:`認証情報`,se99d:`ロック`,se99f:E`終了(失敗したタスク ${0} 件)`,sea2:`期間`,sea4:`定義`,sea6:`矢印キー: マーク`,sea74:E`${0} タスク`,sea7b:`実行の一覧`,seac:`待機中`,seb0:`グラフで表示`,seb2:`締め切りと仕上げの猶予を過ぎた`,seba:`既定`,sec2:`すべての種別`,sec7:`コーディングエージェントが使ったエージェント定義(agents/&lt;role&gt;.md)`,secc:`上限に到達`,secf:E`${0}の利用率 ${1}`,sed05:`コーディングエージェントが報告した料金(試行が終わった日に計上)`,sed0a:`タスクごとに 1 つ(Backend.run)`,sed7:`種別または関数`,sed8:`合計`,sede:`ステージなし`,seea0:`結果`,seea1:`ホスト ID なし`,seee1:`スキップ`,seee3:`完了しなかった試行`,sef0:E`実行中 ${0} 件`,sefc:`言語`,ser:`稼働中`,sf03:`所要時間の中央値`,sf06:E`タスクは ${0} 回目で完了`,sf08:`すべてのエージェントのセッションの合計(同時に実行した分も含む)`,sf11:`終了時刻`,sf14:`最初のエージェントのセッション`,sf26:E`実行 ${0} 件`,sf2b:`トークンの報告なし`,sf2c:`すべての試行が完了`,sf2d:E`関数 ${0}`,sf2e:`定義`,sf39:`周回数`,sf3c:`ほか 1 アカウント`,sf3e:`カスタムビュー`,sf46:E`${0} 周目`,sf48:`終了後の利用率`,sf4d:`コピー済み`,sf55:`サービス`,sf56:`試行の終了後に、同じアカウントで最初に報告された値`,sf5d:`ユニットごとではなく、実行ごとに 1 回実行されるタスク`,sf6:`フロー呼び出し`,sf7b:E`不明(${0})`,sf7d:E`残り ${0}`,sf7e:`すべての実行グループ`,sf82:E`休止 ${0} → ${1}`,sf86:`内容不明`,sf93:`合計`,sf9b:`エージェントのセッションが始まらなかった`,sfa04:`テキスト`,sfa06:`待たれなかったタスク 1 件`,sfa25:E`${0} 〜 ${1}`,sfa29:E`あと ${0} 件の見込み(forecast)`,sfa6:`フィルターに一致するタスクなし`,sfa8:`ツールのリクエスト`,sfad:`修正依頼 1 回で完了`,sfae:`ホスト一覧`,sfb3:`実行を切り替え`,sfb6:E`実行中のエージェントのセッション ${0} 件`,sfbb1:`失敗した試行`,sfbb8:E`${1} の失敗により ${0} で停止`,sfc4:`外部の状態`,sfc7:`再開カーソルなし`,sfd3:E`リトライ後に完了 ${0} 件`,sfd5:E`要素 ${0} 個: ${1}`,sfd7:`出力`,sfd85:`タスクの前から変わらない出力ファイルの箇所(preserve)`,sfd8b:`各日の最大値`,sfdd:`プロセス`,sfde:`ファイルにない必須フィールド`,sfe7:E`${0}: 入力と出力`,sfe9:E`プロセス ${0}`,sfef:`見込み: あと 1 タスク`,sff6:`登録済みのタスクはまだありません`,sff8:E`${0} のタスク`,sffa:`定義なし`,sfff:E`Python タスク ${0} 回`,stag:`完了`,stat:`状態`,"stop-ca":`取り消し`,"stop-co":`完了`,"stop-i":`未実行`,"stop-p":`一部のみ完了`,tab:`タスク`,tas:`タスク`,tok:`出力`,too:`完了`,"trends-p":`一部のみ完了`,"trends-r":`実行`,"view-g":`グラフ`,"view-o":`出力`,"view-t":`表`}),wn=`en`,Tn=[`ja`],En=[`en`,`ja`],Dn={en:`English`,ja:`日本語`},On={ja:()=>Promise.resolve(Sn)};function kn(){if(xn===void 0)try{xn=it({sourceLocale:wn,targetLocales:Tn,loadLocale:e=>On[e]()})}catch{xn=null}return xn!==null}var An=()=>xn?.getLocale()??wn;async function jn(e){kn()&&await xn.setLocale(e)}var Mn=`contraagent:locale`,Nn=e=>En.includes(e);function Pn(){try{let e=globalThis.localStorage?.getItem(Mn);if(Nn(e))return e}catch{}for(let e of globalThis.navigator?.languages??[]){let t=e.toLowerCase().split(`-`)[0];if(Nn(t))return t}return wn}async function Fn(e){try{globalThis.localStorage?.setItem(Mn,e)}catch{}await jn(e)}var In=`contraagent`,Ln=null,Rn=``,zn=null,Bn=!1;function Vn(){let e=globalThis.history?.state;return e&&typeof e==`object`?e:{}}function Hn(){let e=Vn()[In];return e&&typeof e==`object`?e:{}}function Un(){zn&&clearTimeout(zn),zn=null;let e=Ln;Ln=null,e&&globalThis.history&&Hn().entry===Rn&&history.replaceState({...Vn(),[In]:{...Hn(),...e}},``)}function Wn(){Un()}var Gn={recall:function(e){if(globalThis.history)return Ln&&Rn===Hn().entry&&e in Ln?Ln[e]:Hn()[e]},remember:function(e,t){if(!globalThis.history)return;let n=function(){let e=Hn().entry;if(e)return e;let t=Math.random().toString(36).slice(2);return history.replaceState({...Vn(),[In]:{...Hn(),entry:t}},``),t}();Ln&&Rn!==n&&(Ln=null),Rn=n,(Ln??={})[e]=t,zn??=setTimeout(Un,200),Bn||(Bn=!0,globalThis.addEventListener?.(`pagehide`,Wn))}},Kn=class{constructor(){this.values=new Map}recall(e){return this.values.get(e)}remember(e,t){this.values.set(e,t)}},qn=new WeakMap;function Jn(e,t){t?qn.set(e,t):qn.delete(e)}function Yn(e){for(let t=e;t;t=t.parentNode??t.host){let e=qn.get(t);if(e)return e}return Gn}var Xn=class{constructor(e,t){this.id=e,this.from=t,this.items=null}get memory(){return Yn(this.from)}get loaded(){return this.items??=new Set(this.memory.recall(this.id)??[])}has(e){return this.loaded.has(e)}set(e,t){let n=this.loaded;t!==n.has(e)&&(t?n.add(e):n.delete(e),this.memory.remember(this.id,[...n]))}values(){return[...this.loaded]}clear(){this.loaded.size&&(this.loaded.clear(),this.memory.remember(this.id,[]))}},Zn=class{constructor(e){this.id=e;let t=null;try{t=JSON.parse(globalThis.sessionStorage?.getItem(`${In}:${e}`)??`null`)}catch{}this.items=new Set(Array.isArray(t)?t.filter(e=>typeof e==`string`):[])}has(e){return this.items.has(e)}set(e,t){if(t!==this.items.has(e)){t?this.items.add(e):this.items.delete(e);try{globalThis.sessionStorage?.setItem(`${In}:${this.id}`,JSON.stringify([...this.items]))}catch{}}}},Qn=[`wheel`,`touchstart`,`pointerdown`,`keydown`],$n=class{constructor(e,t=()=>Gn){this.id=e,this.memory=t,this.el=null,this.frame=0,this.restoring=!1,this.target=0,this.until=null,this.step=()=>{if(this.frame=0,this.restoring&&this.el)return this.place()?this.cancel():void(this.until!==null&&(this.frame=requestAnimationFrame(this.step)))},this.cancel=()=>{if(cancelAnimationFrame(this.frame),this.frame=0,this.restoring){this.restoring=!1,this.el&&(this.el.style.overflowAnchor=``);for(let e of Qn)this.el?.removeEventListener(e,this.cancel)}},this.onScroll=()=>{!this.restoring&&this.el&&this.memory().remember(this.id,Math.round(this.el.scrollTop))}}attach(e){this.el!==e&&(this.detach(),this.el=e,e.addEventListener(`scroll`,this.onScroll,{passive:!0}))}detach(){this.cancel(),this.el?.removeEventListener(`scroll`,this.onScroll),this.el=null}restore(){let e=this.el;if(!e)return;this.cancel();let t=this.memory().recall(this.id)??0;if(t<=0)e.scrollTop=0;else{this.target=t,this.until=null,this.restoring=!0,e.style.overflowAnchor=`none`;for(let t of Qn)e.addEventListener(t,this.cancel,{passive:!0,once:!0});this.place()}}update(e){this.restoring&&(e&&(this.until??=performance.now()+6e3),this.frame||=requestAnimationFrame(this.step))}reset(){this.cancel(),this.el&&(this.el.scrollTop=0)}place(){let e=this.el,t=e.scrollHeight-e.clientHeight;return e.scrollTop=Math.min(this.target,t),this.until!==null&&(t>=this.target||performance.now()>this.until)}},er=[`overview`,`tasks`,`journal`,`outputs`,`definitions`,`procs`,`stream`],tr=[`transcript`,`input`,`output`,`definition`],nr=[7,14,30],rr={page:``,run:``,tab:`overview`,key:null,view:`transcript`,round:null,def:null,kind:``,stop:``,q:``,layer:``,unit:``,sel:``,days:14,from:``,to:``,tz:``,group:``,trendsTab:``},ir=e=>er.includes(e)||/^panel:.+/.test(e),ar=e=>tr.includes(e);function or(e){let t=new URLSearchParams(e),n=t.get(`tab`)??``,r=t.get(`view`)??``,i=Number(t.get(`round`)),a=t.get(`page`)===`hosts`?`hosts`:t.get(`page`)===`trends`?`trends`:``,o=t.get(`from`)??``,s=t.get(`to`)??``,c=/^\d{4}-\d{2}-\d{2}$/.test(o)&&/^\d{4}-\d{2}-\d{2}$/.test(s),l=Number(t.get(`days`));return{page:a,run:a?``:t.get(`run`)??``,tab:a!==`trends`&&ir(n)?n:`overview`,key:t.get(`key`)||null,view:ar(r)?r:`transcript`,round:Number.isInteger(i)&&i>0?i:null,def:t.get(`def`)||null,kind:t.get(`kind`)??``,stop:t.get(`stop`)??``,q:t.get(`q`)??``,layer:t.get(`layer`)??``,unit:t.get(`unit`)??``,sel:t.get(`sel`)??``,days:c?0:nr.includes(l)?l:rr.days,from:c?o:``,to:c?s:``,tz:t.get(`tz`)??``,group:t.get(`group`)??``,trendsTab:a===`trends`?t.get(`tab`)??``:``}}function sr(e){if(e.page===`hosts`)return`?page=hosts`;if(e.page===`trends`){let t=new URLSearchParams({page:`trends`});return e.days===0&&e.from&&e.to?(t.set(`from`,e.from),t.set(`to`,e.to)):e.days!==rr.days&&t.set(`days`,String(e.days)),e.tz&&t.set(`tz`,e.tz),e.group&&t.set(`group`,e.group),e.trendsTab&&t.set(`tab`,e.trendsTab),`?${t.toString()}`}let t=new URLSearchParams;e.run&&t.set(`run`,e.run),e.tab!==`overview`&&t.set(`tab`,e.tab),e.tab===`stream`&&(e.key&&t.set(`key`,e.key),e.view!==`transcript`&&t.set(`view`,e.view),e.round!=null&&t.set(`round`,String(e.round))),e.tab===`definitions`&&e.def&&t.set(`def`,e.def),e.tab===`overview`&&e.layer&&t.set(`layer`,e.layer),e.tab===`overview`&&e.unit&&t.set(`unit`,e.unit),e.tab===`overview`&&e.sel&&t.set(`sel`,e.sel);let n=e.tab===`tasks`||e.tab===`journal`;n&&e.kind&&t.set(`kind`,e.kind),e.tab===`journal`&&e.stop&&t.set(`stop`,e.stop),n&&e.q&&t.set(`q`,e.q);let r=t.toString();return r?`?${r}`:``}function cr(e,t){let n={...e,...t};return t.run!==void 0&&t.run!==e.run&&Object.assign(n,{key:null,def:null,round:null,layer:``,unit:``,sel:``,...t}),t.layer!==void 0&&t.layer!==e.layer&&t.sel===void 0&&(n.sel=``),t.key!==void 0&&t.key!==e.key&&(t.view===void 0&&(n.view=`transcript`),t.round===void 0&&(n.round=null)),n}function lr(e,t){let n=e=>sr({...e,kind:``,stop:``,q:``,unit:``,sel:``});return n(e)!==n(t)}var ur=class{constructor(e,t,n,r=()=>{}){this.mode=e,this.onChange=t,this.onLeave=r,this.onPop=()=>{this.current=or(location.search),this.onChange(this.current,`pop`)};let i=or(e===`url`?location.search:``);this.current=cr(i,n??{})}get viewRoute(){return this.current}start(){this.mode===`url`&&(history.scrollRestoration=`manual`,addEventListener(`popstate`,this.onPop)),this.onChange(this.current,`init`)}stop(){this.mode===`url`&&removeEventListener(`popstate`,this.onPop)}navigate(e,t={}){let n=cr(this.current,e);if(sr(n)===sr(this.current))return;let r=!t.replace&&lr(this.current,n);if(this.current=n,this.mode===`url`){let e=`${location.pathname}${sr(n)}${location.hash}`;r?(this.onLeave(),history.pushState({},``,e)):history.replaceState(history.state,``,e)}this.onChange(n,r?`push`:`replace`)}},dr=class{constructor(e,t){this.host=e,this.opts=t,this.ready=Promise.resolve(),e.addController(this)}hostConnected(){let e=this.opts.locale();this.ready=jn(Nn(e)?e:Pn()).catch(()=>{})}hostUpdated(){let e=this.opts.locale();e!==this.seen&&(this.seen=e,Nn(e)&&e!==An()&&jn(e)),this.opts.pageWide()&&(document.documentElement.lang=An()),this.host.lang=An()}},fr=class{constructor(e,t,n){this.host=e,this.onKey=t,this.scope=n,this.bound=null,this.boundScope=`off`,this.listener=e=>{let t=e;t.defaultPrevented||function(e){let t=e.composedPath()[0];return t instanceof HTMLElement&&(t.isContentEditable||t.matches(`input, select, textarea, [contenteditable]:not([contenteditable="false"])`))}(t)||t.metaKey||t.ctrlKey||t.altKey||this.onKey(t)},e.addController(this)}hostConnected(){this.bind()}hostUpdated(){this.scope()!==this.boundScope&&this.bind()}hostDisconnected(){this.unbind()}bind(){this.unbind();let e=this.scope();this.boundScope=e,this.bound=e===`page`?document:e===`element`?this.host:null,this.bound?.addEventListener(`keydown`,this.listener)}unbind(){this.bound?.removeEventListener(`keydown`,this.listener),this.bound=null,this.boundScope=`off`}},pr=[{name:`backdrop`,prop:`--ca-backdrop`},{name:`bg`,prop:`--ca-bg`},{name:`card`,prop:`--ca-card`},{name:`panel`,prop:`--ca-panel`},{name:`panel2`,prop:`--ca-panel2`},{name:`raise`,prop:`--ca-raise`},{name:`well`,prop:`--ca-well`},{name:`track`,prop:`--ca-track`},{name:`line`,prop:`--ca-line`},{name:`line2`,prop:`--ca-line2`},{name:`shadow`,prop:`--ca-shadow`},{name:`text`,prop:`--ca-text`},{name:`text-2`,prop:`--ca-text-secondary`},{name:`text-muted`,prop:`--ca-text-muted`},{name:`accent`,prop:`--ca-accent`},{name:`accent-bg`,prop:`--ca-accent-bg`,derive:`color-mix(in srgb, var(--accent) calc(var(--tint) + 1%), transparent)`},{name:`focus`,prop:`--ca-focus`},{name:`focus-width`,prop:`--ca-focus-width`},{name:`selection`,prop:`--ca-selection`},{name:`status-failed`,prop:`--ca-status-failed`},{name:`status-failed-bg`,prop:`--ca-status-failed-bg`,derive:`color-mix(in srgb, var(--status-failed) var(--tint), transparent)`},{name:`status-attention`,prop:`--ca-status-attention`},{name:`status-attention-bg`,prop:`--ca-status-attention-bg`,derive:`color-mix(in srgb, var(--status-attention) var(--tint), transparent)`},{name:`status-done`,prop:`--ca-status-done`},{name:`status-done-bg`,prop:`--ca-status-done-bg`,derive:`color-mix(in srgb, var(--status-done) var(--tint), transparent)`},{name:`status-running`,prop:`--ca-status-running`},{name:`status-running-bg`,prop:`--ca-status-running-bg`,derive:`color-mix(in srgb, var(--status-running) var(--tint), transparent)`},{name:`status-muted`,prop:`--ca-status-muted`},{name:`status-muted-bg`,prop:`--ca-status-muted-bg`,derive:`color-mix(in srgb, var(--status-muted) calc(var(--tint) - 1%), transparent)`},{name:`tint`,prop:`--ca-tint`},{name:`agent`,prop:`--ca-agent`},{name:`agent-bg`,prop:`--ca-agent-bg`,derive:`color-mix(in srgb, var(--agent) calc(var(--tint) + 2%), transparent)`},{name:`meter`,prop:`--ca-meter`},{name:`tok-input`,prop:`--ca-tok-input`},{name:`tok-cache-read`,prop:`--ca-tok-cache-read`},{name:`tok-cache-write`,prop:`--ca-tok-cache-write`},{name:`tok-output`,prop:`--ca-tok-output`},{name:`series-1`,prop:`--ca-series-1`},{name:`series-2`,prop:`--ca-series-2`},{name:`series-3`,prop:`--ca-series-3`},{name:`series-4`,prop:`--ca-series-4`},{name:`series-5`,prop:`--ca-series-5`},{name:`series-6`,prop:`--ca-series-6`},{name:`code-keyword`,prop:`--ca-code-keyword`},{name:`code-string`,prop:`--ca-code-string`},{name:`code-number`,prop:`--ca-code-number`},{name:`code-constant`,prop:`--ca-code-constant`},{name:`code-comment`,prop:`--ca-code-comment`},{name:`code-function`,prop:`--ca-code-function`},{name:`code-type`,prop:`--ca-code-type`},{name:`code-name`,prop:`--ca-code-name`},{name:`font-size-xs`,prop:`--ca-font-size-xs`,derive:`10px`},{name:`font-size-sm`,prop:`--ca-font-size-sm`,derive:`11px`},{name:`font-size-md`,prop:`--ca-font-size-md`,derive:`12px`},{name:`font-size-lg`,prop:`--ca-font-size-lg`,derive:`13px`},{name:`font-size-xl`,prop:`--ca-font-size-xl`,derive:`15px`},{name:`font-size-2xl`,prop:`--ca-font-size-2xl`,derive:`28px`},{name:`radius-sm`,prop:`--ca-radius-sm`,derive:`4px`},{name:`radius-md`,prop:`--ca-radius-md`,derive:`8px`},{name:`radius-lg`,prop:`--ca-radius-lg`,derive:`12px`},{name:`radius-pill`,prop:`--ca-radius-pill`,derive:`999px`}],mr=[`contraagent-dark`,`contraagent-light`,`github-dark`,`github-light`,`one-dark`,`nord`,`high-contrast`],hr=[`contraagent-dark`,`contraagent-light`,`system`,`github-dark`,`github-light`,`one-dark`,`nord`,`high-contrast`],gr=[`github-dark`,`github-light`,`one-dark`,`nord`,`high-contrast`],_r=`contraagent-dark`,vr={"contraagent-dark":{label:`contraagent Dark`,scheme:`dark`,tokens:{backdrop:`radial-gradient(1100px 520px at 8% -12%, #10203a 0%, transparent 62%), radial-gradient(900px 480px at 108% 4%, #1b1238 0%, transparent 58%), #060a11`,bg:`#060a11`,card:`#0f1724`,panel:`#0f1724`,panel2:`#142034`,raise:`#1a2740`,well:`#0a111c`,track:`#1b273b`,line:`#1d2940`,line2:`#2b3c58`,shadow:`#060a11`,text:`#e7edf5`,"text-2":`#bcc7d6`,"text-muted":`#909db2`,accent:`#7aa2ff`,focus:`#7aa2ff`,"focus-width":`2px`,selection:`#7aa2ff4d`,"status-failed":`#f87171`,"status-attention":`#fbbf24`,"status-done":`#34d399`,"status-running":`#22d3ee`,"status-muted":`#94a3b8`,tint:`13%`,agent:`#b597fb`,meter:`#7d8ba3`,"tok-input":`#7c86f5`,"tok-cache-read":`#3f4d63`,"tok-cache-write":`#8796ad`,"tok-output":`#d6b8ff`,"series-1":`#3987e5`,"series-2":`#d95926`,"series-3":`#199e70`,"series-4":`#c98500`,"series-5":`#d55181`,"series-6":`#008300`,"code-keyword":`#c4a5ff`,"code-string":`#7ee2a8`,"code-number":`#f5c26b`,"code-constant":`#ff9e64`,"code-comment":`#74839a`,"code-function":`#7dd3fc`,"code-type":`#ffd479`,"code-name":`#79b8ff`}},"contraagent-light":{label:`contraagent Light`,scheme:`light`,tokens:{backdrop:`radial-gradient(1100px 520px at 8% -12%, #dde7fb 0%, transparent 62%), radial-gradient(900px 480px at 108% 4%, #ebe3fa 0%, transparent 58%), #eef2f8`,bg:`#eef2f8`,card:`#ffffff`,panel:`#ffffff`,panel2:`#f7f9fc`,raise:`#e6ecf5`,well:`#f3f6fa`,track:`#e1e7f0`,line:`#d6dde8`,line2:`#b6c2d3`,shadow:`#0f172438`,text:`#0f1724`,"text-2":`#34415a`,"text-muted":`#556279`,accent:`#2f58d4`,focus:`#2f58d4`,"focus-width":`2px`,selection:`#2f58d42e`,"status-failed":`#b8132d`,"status-attention":`#6c4801`,"status-done":`#026b49`,"status-running":`#01525f`,"status-muted":`#56637a`,tint:`11%`,agent:`#6f45c0`,meter:`#8a97ab`,"tok-input":`#4d4cc8`,"tok-cache-read":`#cdd6e3`,"tok-cache-write":`#7d8aa0`,"tok-output":`#a07ad9`,"series-1":`#2a78d6`,"series-2":`#eb6834`,"series-3":`#1baf7a`,"series-4":`#eda100`,"series-5":`#e87ba4`,"series-6":`#008300`,"code-keyword":`#6f49a8`,"code-string":`#076b40`,"code-number":`#7b5605`,"code-constant":`#964605`,"code-comment":`#5d6b80`,"code-function":`#086586`,"code-type":`#785902`,"code-name":`#095ea8`}},"github-dark":{label:`GitHub Dark`,scheme:`dark`,tokens:{backdrop:`#010409`,bg:`#010409`,card:`#0d1117`,panel:`#0d1117`,panel2:`#151b23`,raise:`#212830`,well:`#010409`,track:`#262c36`,line:`#262c36`,line2:`#3d444d`,shadow:`#010409`,text:`#f0f6fc`,"text-2":`#d1d7e0`,"text-muted":`#9299a2`,accent:`#4796fb`,focus:`#1f6feb`,"focus-width":`2px`,selection:`#388bfd4d`,"status-failed":`#fc554d`,"status-attention":`#d29922`,"status-done":`#3fb950`,"status-running":`#39c5cf`,"status-muted":`#9198a1`,tint:`15%`,agent:`#ab7df8`,meter:`#656c76`,"tok-input":`#58a6ff`,"tok-cache-read":`#2f3742`,"tok-cache-write":`#656c76`,"tok-output":`#d2a8ff`,"series-1":`#3987e5`,"series-2":`#d95926`,"series-3":`#199e70`,"series-4":`#c98500`,"series-5":`#d55181`,"series-6":`#008300`,"code-keyword":`#ff7b72`,"code-string":`#a5d6ff`,"code-number":`#79c0ff`,"code-constant":`#79c0ff`,"code-comment":`#9198a1`,"code-function":`#d2a8ff`,"code-type":`#ffa657`,"code-name":`#7ee787`}},"github-light":{label:`GitHub Light`,scheme:`light`,tokens:{backdrop:`#f6f8fa`,bg:`#f6f8fa`,card:`#ffffff`,panel:`#ffffff`,panel2:`#ffffff`,raise:`#eff2f5`,well:`#f6f8fa`,track:`#e6eaef`,line:`#d1d9e0`,line2:`#b7c0ca`,shadow:`#1f232833`,text:`#1f2328`,"text-2":`#393f46`,"text-muted":`#59636e`,accent:`#0165d6`,focus:`#0165d6`,"focus-width":`2px`,selection:`#0969da33`,"status-failed":`#cd1e2b`,"status-attention":`#916103`,"status-done":`#147b33`,"status-running":`#10767d`,"status-muted":`#59636e`,tint:`8%`,agent:`#804ddc`,meter:`#818b98`,"tok-input":`#54aeff`,"tok-cache-read":`#d1d9e0`,"tok-cache-write":`#818b98`,"tok-output":`#a475f9`,"series-1":`#2a78d6`,"series-2":`#eb6834`,"series-3":`#1baf7a`,"series-4":`#eda100`,"series-5":`#e87ba4`,"series-6":`#008300`,"code-keyword":`#cf222e`,"code-string":`#0a3069`,"code-number":`#0550ae`,"code-constant":`#0550ae`,"code-comment":`#59636e`,"code-function":`#6639ba`,"code-type":`#953800`,"code-name":`#116329`}},"one-dark":{label:`One Dark`,scheme:`dark`,tokens:{backdrop:`#21252b`,bg:`#21252b`,card:`#282c34`,panel:`#282c34`,panel2:`#2c313a`,raise:`#2c313a`,well:`#21252b`,track:`#3a3f4b`,line:`#181a1f`,line2:`#4b5263`,shadow:`#0e1013`,text:`#d7dae0`,"text-2":`#abb2bf`,"text-muted":`#a7afbe`,accent:`#64b2f2`,focus:`#528bff`,"focus-width":`2px`,selection:`#3e4451`,"status-failed":`#fc858d`,"status-attention":`#e5c07b`,"status-done":`#98c379`,"status-running":`#57b7c3`,"status-muted":`#a7afbe`,tint:`12%`,agent:`#d788ee`,meter:`#5c6370`,"tok-input":`#61afef`,"tok-cache-read":`#3e4451`,"tok-cache-write":`#5c6370`,"tok-output":`#c678dd`,"series-1":`#3987e5`,"series-2":`#d95926`,"series-3":`#199e70`,"series-4":`#c98500`,"series-5":`#d55181`,"series-6":`#008300`,"code-keyword":`#c678dd`,"code-string":`#98c379`,"code-number":`#d19a66`,"code-constant":`#d19a66`,"code-comment":`#8f949e`,"code-function":`#61afef`,"code-type":`#e5c07b`,"code-name":`#e36e77`}},nord:{label:`Nord`,scheme:`dark`,tokens:{backdrop:`#2e3440`,bg:`#242933`,card:`#2e3440`,panel:`#2e3440`,panel2:`#323946`,raise:`#3b4252`,well:`#272c36`,track:`#3b4252`,line:`#3b4252`,line2:`#4c566a`,shadow:`#1d2129`,text:`#eceff4`,"text-2":`#d8dee9`,"text-muted":`#adbcd9`,accent:`#9dbedf`,focus:`#88c0d0`,"focus-width":`2px`,selection:`#4c566a`,"status-failed":`#fe9aa1`,"status-attention":`#ebcb8b`,"status-done":`#a5c18e`,"status-running":`#89c1d1`,"status-muted":`#adbcd9`,tint:`13%`,agent:`#d0a9c9`,meter:`#7b88a1`,"tok-input":`#5e81ac`,"tok-cache-read":`#4c566a`,"tok-cache-write":`#7b88a1`,"tok-output":`#b48ead`,"series-1":`#3987e5`,"series-2":`#d95926`,"series-3":`#199e70`,"series-4":`#c98500`,"series-5":`#d55181`,"series-6":`#008300`,"code-keyword":`#81a1c1`,"code-string":`#a3be8c`,"code-number":`#b790b0`,"code-constant":`#d38972`,"code-comment":`#8f9db8`,"code-function":`#88c0d0`,"code-type":`#8fbcbb`,"code-name":`#8fbcbb`}},"high-contrast":{label:`High contrast`,scheme:`dark`,tokens:{backdrop:`#010409`,bg:`#010409`,card:`#0a0c10`,panel:`#0a0c10`,panel2:`#0a0c10`,raise:`#1c2128`,well:`#010409`,track:`#272b33`,line:`#7a828e`,line2:`#9ea7b3`,shadow:`#000000`,text:`#ffffff`,"text-2":`#f0f3f6`,"text-muted":`#bdc4cc`,accent:`#7abbfe`,focus:`#7abbfe`,"focus-width":`3px`,selection:`#409eff66`,"status-failed":`#ffacb8`,"status-attention":`#fad209`,"status-done":`#0ef38e`,"status-running":`#62ceff`,"status-muted":`#bdc4cc`,tint:`12%`,agent:`#c299fe`,meter:`#9ea7b3`,"tok-input":`#409eff`,"tok-cache-read":`#525964`,"tok-cache-write":`#9ea7b3`,"tok-output":`#dbb7ff`,"series-1":`#3987e5`,"series-2":`#d95926`,"series-3":`#199e70`,"series-4":`#c98500`,"series-5":`#d55181`,"series-6":`#008300`,"code-keyword":`#ff9492`,"code-string":`#addcff`,"code-number":`#91cbff`,"code-constant":`#91cbff`,"code-comment":`#bdc4cc`,"code-function":`#dbb7ff`,"code-type":`#ffb757`,"code-name":`#72f088`}}},yr=Object.fromEntries(pr.map(e=>[e.name,e.prop])),br=e=>`:where([data-ca-theme="${e}"])`;function xr(e=br){return mr.map(t=>{let n=vr[t],r=Object.entries(n.tokens).map(([e,t])=>`${yr[e]}: ${t};`);return`${e(t)} { color-scheme: ${n.scheme}; --ca-color-scheme: ${n.scheme}; ${r.join(` `)} }`}).join(`
5
+ \f\r]`,Wt=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,Gt=/-->/g,Kt=/>/g,qt=RegExp(`>|${Ut}(?:([^\\s"'>=/]+)(${Ut}*=${Ut}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,`g`),Jt=/'/g,Yt=/"/g,Xt=/^(?:script|style|textarea|title)$/i,Zt=e=>(t,...n)=>({_$litType$:e,strings:t,values:n}),A=Zt(1),j=Zt(2),Qt=Symbol.for(`lit-noChange`),M=Symbol.for(`lit-nothing`),$t=new WeakMap,en=Rt.createTreeWalker(Rt,129);function tn(e,t){if(!Vt(e)||!e.hasOwnProperty(`raw`))throw Error(`invalid template strings array`);return Nt===void 0?t:Nt.createHTML(t)}var nn=(e,t)=>{let n=e.length-1,r=[],i,a=t===2?`<svg>`:t===3?`<math>`:``,o=Wt;for(let t=0;t<n;t++){let n=e[t],s,c,l=-1,u=0;for(;u<n.length&&(o.lastIndex=u,c=o.exec(n),c!==null);)u=o.lastIndex,o===Wt?c[1]===`!--`?o=Gt:c[1]===void 0?c[2]===void 0?c[3]!==void 0&&(o=qt):(Xt.test(c[2])&&(i=RegExp(`</`+c[2],`g`)),o=qt):o=Kt:o===qt?c[0]===`>`?(o=i??Wt,l=-1):c[1]===void 0?l=-2:(l=o.lastIndex-c[2].length,s=c[1],o=c[3]===void 0?qt:c[3]===`"`?Yt:Jt):o===Yt||o===Jt?o=qt:o===Gt||o===Kt?o=Wt:(o=qt,i=void 0);let d=o===qt&&e[t+1].startsWith(`/>`)?` `:``;a+=o===Wt?n+Lt:l>=0?(r.push(s),n.slice(0,l)+Pt+n.slice(l)+Ft+d):n+Ft+(l===-2?t:d)}return[tn(e,a+(e[n]||`<?>`)+(t===2?`</svg>`:t===3?`</math>`:``)),r]},rn=class e{constructor({strings:t,_$litType$:n},r){let i;this.parts=[];let a=0,o=0,s=t.length-1,c=this.parts,[l,u]=nn(t,n);if(this.el=e.createElement(l,r),en.currentNode=this.el.content,n===2||n===3){let e=this.el.content.firstChild;e.replaceWith(...e.childNodes)}for(;(i=en.nextNode())!==null&&c.length<s;){if(i.nodeType===1){if(i.hasAttributes())for(let e of i.getAttributeNames())if(e.endsWith(Pt)){let t=u[o++],n=i.getAttribute(e).split(Ft),r=/([.?@])?(.*)/.exec(t);c.push({type:1,index:a,name:r[2],strings:n,ctor:r[1]===`.`?ln:r[1]===`?`?un:r[1]===`@`?dn:cn}),i.removeAttribute(e)}else e.startsWith(Ft)&&(c.push({type:6,index:a}),i.removeAttribute(e));if(Xt.test(i.tagName)){let e=i.textContent.split(Ft),t=e.length-1;if(t>0){i.textContent=Mt?Mt.emptyScript:``;for(let n=0;n<t;n++)i.append(e[n],zt()),en.nextNode(),c.push({type:2,index:++a});i.append(e[t],zt())}}}else if(i.nodeType===8){if(i.data===It)c.push({type:2,index:a});else{let e=-1;for(;(e=i.data.indexOf(Ft,e+1))!==-1;)c.push({type:7,index:a}),e+=Ft.length-1}}a++}}static createElement(e,t){let n=Rt.createElement(`template`);return n.innerHTML=e,n}};function an(e,t,n=e,r){if(t===Qt)return t;let i=r===void 0?n._$Cl:n._$Co?.[r],a=Bt(t)?void 0:t._$litDirective$;return i?.constructor!==a&&(i?._$AO?.(!1),a===void 0?i=void 0:(i=new a(e),i._$AT(e,n,r)),r===void 0?n._$Cl=i:(n._$Co??=[])[r]=i),i!==void 0&&(t=an(e,i._$AS(e,t.values),i,r)),t}var on=class{constructor(e,t){this._$AV=[],this._$AN=void 0,this._$AD=e,this._$AM=t}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(e){let{el:{content:t},parts:n}=this._$AD,r=(e?.creationScope??Rt).importNode(t,!0);en.currentNode=r;let i=en.nextNode(),a=0,o=0,s=n[0];for(;s!==void 0;){if(a===s.index){let t;s.type===2?t=new sn(i,i.nextSibling,this,e):s.type===1?t=new s.ctor(i,s.name,s.strings,this,e):s.type===6&&(t=new fn(i,this,e)),this._$AV.push(t),s=n[++o]}a!==s?.index&&(i=en.nextNode(),a++)}return en.currentNode=Rt,r}p(e){let t=0;for(let n of this._$AV)n!==void 0&&(n.strings===void 0?n._$AI(e[t]):(n._$AI(e,n,t),t+=n.strings.length-2)),t++}},sn=class e{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(e,t,n,r){this.type=2,this._$AH=M,this._$AN=void 0,this._$AA=e,this._$AB=t,this._$AM=n,this.options=r,this._$Cv=r?.isConnected??!0}get parentNode(){let e=this._$AA.parentNode,t=this._$AM;return t!==void 0&&e?.nodeType===11&&(e=t.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,t=this){e=an(this,e,t),Bt(e)?e===M||e==null||e===``?(this._$AH!==M&&this._$AR(),this._$AH=M):e!==this._$AH&&e!==Qt&&this._(e):e._$litType$===void 0?e.nodeType===void 0?Ht(e)?this.k(e):this._(e):this.T(e):this.$(e)}O(e){return this._$AA.parentNode.insertBefore(e,this._$AB)}T(e){this._$AH!==e&&(this._$AR(),this._$AH=this.O(e))}_(e){this._$AH!==M&&Bt(this._$AH)?this._$AA.nextSibling.data=e:this.T(Rt.createTextNode(e)),this._$AH=e}$(e){let{values:t,_$litType$:n}=e,r=typeof n==`number`?this._$AC(e):(n.el===void 0&&(n.el=rn.createElement(tn(n.h,n.h[0]),this.options)),n);if(this._$AH?._$AD===r)this._$AH.p(t);else{let e=new on(r,this),n=e.u(this.options);e.p(t),this.T(n),this._$AH=e}}_$AC(e){let t=$t.get(e.strings);return t===void 0&&$t.set(e.strings,t=new rn(e)),t}k(t){Vt(this._$AH)||(this._$AH=[],this._$AR());let n=this._$AH,r,i=0;for(let a of t)i===n.length?n.push(r=new e(this.O(zt()),this.O(zt()),this,this.options)):r=n[i],r._$AI(a),i++;i<n.length&&(this._$AR(r&&r._$AB.nextSibling,i),n.length=i)}_$AR(e=this._$AA.nextSibling,t){for(this._$AP?.(!1,!0,t);e!==this._$AB;){let t=jt(e).nextSibling;jt(e).remove(),e=t}}setConnected(e){this._$AM===void 0&&(this._$Cv=e,this._$AP?.(e))}},cn=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(e,t,n,r,i){this.type=1,this._$AH=M,this._$AN=void 0,this.element=e,this.name=t,this._$AM=r,this.options=i,n.length>2||n[0]!==``||n[1]!==``?(this._$AH=Array(n.length-1).fill(new String),this.strings=n):this._$AH=M}_$AI(e,t=this,n,r){let i=this.strings,a=!1;if(i===void 0)e=an(this,e,t,0),a=!Bt(e)||e!==this._$AH&&e!==Qt,a&&(this._$AH=e);else{let r=e,o,s;for(e=i[0],o=0;o<i.length-1;o++)s=an(this,r[n+o],t,o),s===Qt&&(s=this._$AH[o]),a||=!Bt(s)||s!==this._$AH[o],s===M?e=M:e!==M&&(e+=(s??``)+i[o+1]),this._$AH[o]=s}a&&!r&&this.j(e)}j(e){e===M?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e??``)}},ln=class extends cn{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===M?void 0:e}},un=class extends cn{constructor(){super(...arguments),this.type=4}j(e){this.element.toggleAttribute(this.name,!!e&&e!==M)}},dn=class extends cn{constructor(e,t,n,r,i){super(e,t,n,r,i),this.type=5}_$AI(e,t=this){if((e=an(this,e,t,0)??M)===Qt)return;let n=this._$AH,r=e===M&&n!==M||e.capture!==n.capture||e.once!==n.once||e.passive!==n.passive,i=e!==M&&(n===M||r);r&&this.element.removeEventListener(this.name,this,n),i&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){typeof this._$AH==`function`?this._$AH.call(this.options?.host??this.element,e):this._$AH.handleEvent(e)}},fn=class{constructor(e,t,n){this.element=e,this.type=6,this._$AN=void 0,this._$AM=t,this.options=n}get _$AU(){return this._$AM._$AU}_$AI(e){an(this,e)}},pn={M:Pt,P:Ft,A:It,C:1,L:nn,R:on,D:Ht,V:an,I:sn,H:cn,N:un,U:dn,B:ln,F:fn},mn=At.litHtmlPolyfillSupport;mn?.(rn,sn),(At.litHtmlVersions??=[]).push(`3.3.3`);var hn=globalThis,N=class extends kt{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){let e=super.createRenderRoot();return this.renderOptions.renderBefore??=e.firstChild,e}update(e){let t=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Do=((e,t,n)=>{let r=n?.renderBefore??t,i=r._$litPart$;if(i===void 0){let e=n?.renderBefore??null;r._$litPart$=i=new sn(t.insertBefore(zt(),e),e,void 0,n??{})}return i._$AI(e),i})(t,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return Qt}};N._$litElement$=!0,N.finalized=!0,hn.litElementHydrateSupport?.({LitElement:N});var gn=hn.litElementPolyfillSupport;gn?.({LitElement:N}),(hn.litElementVersions??=[]).push(`4.2.2`);var P=e=>(t,n)=>{n===void 0?customElements.define(e,t):n.addInitializer(()=>{customElements.define(e,t)})},_n={attribute:!0,type:String,converter:Et,reflect:!1,hasChanged:Dt},vn=(e=_n,t,n)=>{let{kind:r,metadata:i}=n,a=globalThis.litPropertyMetadata.get(i);if(a===void 0&&globalThis.litPropertyMetadata.set(i,a=new Map),r===`setter`&&((e=Object.create(e)).wrapped=!0),a.set(n.name,e),r===`accessor`){let{name:r}=n;return{set(n){let i=t.get.call(this);t.set.call(this,n),this.requestUpdate(r,i,e,!0,n)},init(t){return t!==void 0&&this.C(r,void 0,e,t),t}}}if(r===`setter`){let{name:r}=n;return function(n){let i=this[r];t.call(this,n),this.requestUpdate(r,i,e,!0,n)}}throw Error(`Unsupported decorator location: `+r)};function F(e){return(t,n)=>typeof n==`object`?vn(e,t,n):((e,t,n)=>{let r=t.hasOwnProperty(n);return t.constructor.createProperty(n,e),r?Object.getOwnPropertyDescriptor(t,n):void 0})(e,t,n)}function I(e){return F({...e,state:!0,attribute:!1})}var yn=(e,t,n)=>(n.configurable=!0,n.enumerable=!0,Reflect.decorate&&typeof t!=`object`&&Object.defineProperty(e,t,n),n);function bn(e,t){return(n,r,i)=>{let a=t=>t.renderRoot?.querySelector(e)??null;if(t){let{get:e,set:t}=typeof r==`object`?n:i??(()=>{let e=Symbol();return{get(){return this[e]},set(t){this[e]=t}}})();return yn(n,r,{get(){let n=e.call(this);return n===void 0&&(n=a(this),(n!==null||this.hasUpdated)&&t.call(this,n)),n}})}return yn(n,r,{get(){return a(this)}})}}var xn,Sn=t({templates:()=>Cn}),Cn=function(e){let t=new Map;return new Proxy(e,{get(e,n){if(typeof n==`string`){if(!t.has(n)){let r;for(let t=1;t<=n.length&&r===void 0;t++){let i=n.slice(0,t);Object.hasOwn(e,i)&&(r=e[i])}t.set(n,r)}return t.get(n)}}})}({c:`実行`,d:`出力`,"edge-a":`完了を待つ`,"edge-c":`結果を受けて作成`,"edge-g":`出力を受け取る`,f:`停止`,h0:A`JSON Lines(1 行ごとに JSON オブジェクト、スキーマ ${0})`,h5:A`${0} の出力`,h6:A`JSON オブジェクト(スキーマ ${0})`,h87:A`依存先タスク ${0}`,h8e:A`この実行には階層 <code>${0}</code> がありません`,ha:A`ファイルなし | Python コードで定義(<code>TaskAdapter</code>)`,hc:A`実行中 ${0}${1}`,hf:A`${0} の出力から`,i:`未確認`,"no-":`実行はまだありません`,non:`なし`,"outcome-c":`取り消し`,"outcome-d":`完了`,"outcome-p":`一部のみ完了`,"part-d":`定義`,"part-i":`入力ファイル`,"part-p":`パラメータ`,s000:`実行履歴の未実行のタスク`,s009:`修正ラウンド 1 回後`,s00c:E`HTTP ステータス ${0}`,s02f7:`実行されず`,s02f9:E`アカウント: ${0}`,s030:E`カスタムビュー ${0} はありません`,s037:`完了`,s0382:E`${0}: ${1}`,s038b:`ページ`,s03b:`タブ`,s03e:`タスク`,s03f:E`古い試行 ${0} 件は非表示`,s041:E`ほか ${0} 件`,s042:`タスクが宣言したパターンの下で、試行が作成・変更・削除したファイル(changes)`,s044:E`一部のみ完了 ${0} 件`,s048:`再開後に再実行`,s04f:`停止した部分`,s051:`実行中のエージェントのセッション`,s055:`選択中の項目`,s05f:`認証エラー`,s061:`OutputContract`,s062:`トランスクリプト`,s0668:`ユニットごとのステージとステップ(CursorStore)`,s066d:`出力`,s06a:`Esc: 1 つ上の階層`,s06b0:`実行中ではありません`,s06bf:`中を表示`,s077:`テキストフィルター(/)`,s079:E`キャッシュ ${0}`,s07d:`関数`,s07e:E`+${0}`,s087:E`${0}%`,s08b1:E`${0}(認証情報が休止中)`,s08b3:`いいえ`,s08c:`稼働中`,s0932:`出力の検証: OK`,s0935:`終了日`,s094:`最初のエージェントのセッションの前に終了`,s09b:`プロンプトなし`,s0a:E`入力元: ${0}`,s0b0:E`作成元: ${0}`,s0b2:`エージェントのセッション開始時のサブスクリプション利用率(アカウント全体)`,s0b3:`OK`,s0b7:`実行前からあるファイル`,s0bf:E`${0} 周目`,s0c:E`モデル切り替えのあったタスク ${0} 件`,s0d7:E`キャッシュ書き込み ${0}`,s0df:`依存先タスクが登録されなかった`,s0e6:`問題`,s0ea:`プラグインディレクトリ`,s0ef:`すべてのホスト`,s0f0:`一部省略`,s0f1:`リセット済み`,s0f2:E`最初の API 呼び出しの入力: ${0}`,s0f8:E`出力ファイル ${0} 件`,s103:`再開カーソル`,s104:`昇順に並べ替え`,s107:`種別の最初のタスクの開始時に記録(definitions/&lt;kind&gt;.json)`,s108:E`${0} の実装`,s114:E`${0} 型の JSON 値`,s115:`過去 24 時間`,s123:`待機中`,s125:E`要素 ${0} 個`,s12c:`型の不一致`,s13:E`最終報告 ${0}`,s14b:`コーディングエージェントが報告した値`,s14c:E`この失敗で ${0} が ${1} で停止`,s150:`出力`,s156:`なし(任意)`,s158:E`週の利用率 ${0}`,s159:`このタスクが代わりに出力ファイルを書く種別(output_of)`,s163:`検証対象のファイルなし`,s165:E`${0} 回目で完了 | 失敗 1 回`,s168:`検証のタイミング`,s170:E`実行されず ${0} 件`,s172:E`同じフローの実行 ${0} から見込んだ、この実行がまだ作成していないタスク(forecast)`,s179:`アカウントごと、最初の値 → 最後の値`,s17d:`利用率のルール`,s17e:`書き込み待ち(タスクが待機中)`,s18:E`ループ内の ${0}`,s197:`利用できるモデルなし`,s19e:`上限: max_concurrent`,s1a2:E`スキップ ${0} 件`,s1a3:`種別 · ユニット`,s1a4:`モデルごとの、エージェントのセッションの使用量。モデル切り替えの前後は別々に集計(Plan.models)`,s1ac8:`エディタのテーマ`,s1acc:`書き込まれていない出力 1 件(タスクが未実行)`,s1b2:E`種別 ${0}`,s1bb:`すべてのタスクが開始済み`,s1bf:`実行中のプロセスなし`,s1c0:`パラメータ`,s1c2:`タスクが選択されていません`,s1c4:E`セッション開始時の利用率(アカウント全体): ${0}`,s1c7:`実行に登録されたすべてのタスク(種別ごと、plan.jsonl)`,s1cc:`実行中の Python タスク`,s1d4:`どのフローも結果を待たず、after= にも渡さず、戻り値にも含めなかったタスク(unawaited)。出力ファイルと変更のために実行された`,s1db:`API エラー`,s1dc:E`試行 ${0} 回`,s1dd:`実行中のタスクなし`,s1e9:E`プロンプト(${0} 文字、ほか ${1} 文字は未保存)`,s1eb:`入力`,s1f2:`削除`,s1f5:E`所要時間 ${0}`,s204:`安全分類器による停止`,s20e:E`リセットまで ${0}`,s20f9:`依存先タスクが実行されなかった`,s20fd:`ホストなし`,s217:`あり`,s21a:`発生したらリトライする例外(retry_on)`,s221:`JSON ではありません`,s224:`ツール実行中に中止`,s230:`スキーマにないフィールド`,s234:`終了した試行はまだありません`,s236:`拡大`,s23b:E`${0} 回の試行がすべて失敗: ${1}`,s23f:`定義はまだありません`,s24:E`完了 ${0}`,s257:`OutputContract・InputContract を宣言したタスクはありません`,s25f:E`まだ登録されていない種別: ${0}`,s260:`API 呼び出し 1 回`,s26ba:`ユニットなし`,s26bb:`実行した試行の回数(リトライを含む、journal.jsonl)`,s26e:E`API 呼び出し ${0} 回`,s27a:`最後のメッセージから`,s27b:E`ユニット: ${0}`,s27d:`フローの構成`,s28a2:`リプレイ`,s28ad:`曜日と時刻ごと(期間のタイムゾーン)`,s28f:`InputContract`,s29:E`最大コンテキスト: ${0}`,s2a:`現在`,s2c0:E`パラメータ ${0}`,s2c8:`リトライ`,s2cd:`モデルの利用可否`,s2dd:`試行の結果(stop)`,s2df0:`割合`,s2df6:`開始時も同じ内容`,s2e3:E`ほかの出力 ${0} 件`,s2e4:`周`,s2f34:E`${0} 周`,s2f3c:`問題なし`,s2f4:`すべての出力`,s2f5:`定義なし`,s2fa:E`5 時間枠の利用率 ${0}(リセット ${1})`,s2fe:`ツール`,s313:`終了(未実行のタスク 1 件)`,s31a:E`待たれなかったタスク ${0} 件`,s321:`余分なフィールド`,s326:E`キャッシュ読み込み ${0}`,s32d:`最大コンテキスト`,s33b:`パイプラインの階層`,s33f:E`${0} で停止`,s343:`新しいイベント 1 件を表示`,s34b:`終了`,s34e:`降順に並べ替え`,s351:`終了した試行なし`,s352:`ファイル全体`,s355:`入力ファイルに検証エラー`,s366:`週`,s367:`料金`,s368:`コピー`,s36d:E`この書き出しに含まれないもの: ${0}`,s36e:E`所要時間 ${0}`,s3700:`Web 検索 1 回`,s370b:E`報告時刻 ${0}`,s378:`検証エラーの後に、同じエージェントのセッションで続けるラウンド(rounds)`,s37d:`スキーマ以外の検証(validators)`,s384:E`${0} を展開`,s385:E`修正ラウンド ${0}`,s387:E`検索結果 ${0} 件`,s38e65:`修正依頼のプロンプトに含めて送信`,s38e6a:`日ごとの料金`,s390:`JSON オブジェクトではありません`,s39e:`パイプライン`,s3a7:E`上限: ${0}`,s3aa:`出力ファイルなし`,s3b3:`プロセスツリー`,s3b9:E`${0} にモニター API がありません: ${1}`,s3bd:E`task_detail コールバックが失敗: ${0}`,s3c6:`実行した試行の回数`,s3cd:`実行中のエージェントのセッション 1 件`,s3d0:`エージェントのセッション`,s3d1:`概要`,s3d31:`利用できるモデルがなく、設定どおりのモデルで実行する種別(kept)`,s3d38:E`認証情報 ${0}`,s3d99:`検証エラー後の、同じエージェントのセッション`,s3d9b:`テキストファイル`,s3dd:`ネットワークエラーで応答なし`,s3f1:`各タスクが書き込むファイル`,s3f7:`修正依頼`,s3fd6:`開始`,s3fda:`このタスクの出力が後続タスクのパラメータに含まれる(given_from)`,s407:E`${0}: 入力`,s408:`週の利用率`,s41:`Tab: 次のノード`,s42a:`フィールド`,s42c:`検証`,s438:`ハイライトを解除`,s43a:`入力ファイル`,s43e:`利用不可`,s451:`料金の高いタスク`,s454:E`${0} のループの各周`,s45d:E`${0}(カスタムビュー)`,s466:`モデル切り替えのあったタスク 1 件`,s467:E`1 周: ${0}`,s473:`キャッシュ読み込み`,s478:`検証対象のファイル(OutputContract、InputContract)`,s479:`締め切り`,s47a:E`このタスクの入力 ${0} 件`,s47b:`Python タスク`,s47c:`未対応のイベント`,s482:E`終了 ${0}`,s484:`テキストなし`,s48e:`所要時間`,s490:`モニターのサーバーに接続済み`,s491:E`${0} のループ`,s49c:E`修正ラウンド ${0} 回`,s4a:E`${0} 日前`,s4c:`あと 1 件の見込み(forecast)`,s4d6:`検索結果 1 件`,s4d8:`モデル切り替え`,s4e7:E`修正依頼 ${0} 回で完了 | 最初の検証エラー: ${1}`,s4ef:`ループ`,s4f0:`スキーマにない`,s4f9:E`ホスト ${0}`,s4fc:`検証エラーを示し、同じエージェントのセッションで出力の修正を求める依頼。ラウンドの途中、または修正ラウンドで(hook_errors, rounds)`,s4fe:`エージェントタスク`,s5013:E`取り消し ${0} 件`,s5018:E`${0}: ${1} → ${2}`,s504:`日付指定`,s5131:`そのモデルで始めたエージェントのセッションの数`,s5138:`入力・出力・キャッシュ読み込み・キャッシュ書き込みの合計`,s514:`実行が終了した`,s521:`1 ユニット`,s522:`安全分類器がエージェントのセッションの一部を止め、セッションはそのまま続いた(safety_stops)`,s525b:`失敗の後の、次のモデルでの新しいエージェントのセッション(Router のホップ)`,s525c:`記録から再生した試行(replayed)`,s529:E`上限 ${0}`,s52b:`このバージョンの contraagent が対応していないイベント種別(unread_events)`,s52c7:`次の周`,s52cc:E`${0} の締め切りと仕上げの猶予を過ぎた`,s52cf:`カスタムビュー`,s535:`種別`,s53c5:E`${0}: 未実行`,s53c8:`不可`,s541:`開始できず`,s543:`プロンプト`,s5522:E`フロー呼び出し ${0}`,s552a:E`${0} の失敗により停止`,s555:`プラグインディレクトリ`,s558:`認証情報の不一致`,s5590:`項目`,s559f:`その他のモデル`,s55f:E`${0}(${1})`,s565:`修正ラウンド 1 回`,s566:E`(ほか ${0} 文字は未保存)`,s567:`未実行(依存先タスクが失敗)`,s568:E`後続タスク: ${0}`,s571:E`入力 ${0} がありません(${1} が未実行)`,s574:E`キャッシュ書き込み ${0}`,s585:E`入力 ${0} がありません(${1} が失敗)`,s587:E`${0} 以降報告なし`,s58b:`モデルの置き換え`,s58c:`実行履歴`,s591:`5 時間枠`,s594:E`修正依頼 ${0} 回`,s59e:`上限に接近`,s5a3:`休止中`,s5a7:`ツール`,s5ab:`並び順`,s5b9:`種別ごとのトークンと料金`,s5bd:`フロー呼び出しごとの締め切り(time_box)`,s5c7:`サービスなし`,s5cb:`分岐`,s5cd:E`エージェントのセッション ${0} 回`,s5cf:`値なし`,s5d0:`実行中にこのタスクが占有する名前(claims)`,s5d4:E`${0} 回目で完了 | 失敗 ${1} 回`,s5da:`モデル`,s5de:`依存先タスク`,s5e3:`書き込みなし(タスクが未実行)`,s5e6:`テキスト(JSON 文字列)`,s5f2:`ロールなし`,s5f31:`エージェント・モデル・認証情報`,s5f34:`エラー`,s5f40:`行なし`,s5f43:`ソース`,s5f7:`なし(必須)`,s5f8:E`認証情報 ${0} は休止中`,s5ff:`エージェントタスク`,s601:`実行中`,s605:E`未実行の後続タスク ${0} 件`,s620:`キャッシュ書き込み`,s629:`任意`,s647:`応答が JSON ではなく HTML`,s649:`後続タスク`,s64a:`前のタスクの出力は同じなのに、フローが別のパラメータを渡した(divergence)。時刻、乱数、外部の状態、フローのコードの変更による`,s64f:`変更禁止の箇所`,s652:E`ロック ${0} 件`,s653:`締め切りを過ぎた`,s65c:`中断`,s6645:`拡大(Ctrl + スクロール)`,s6647:`ファイルなし`,s664b:`ツール呼び出しが戻る前に実行が終了`,s670:E`${0} ユニット`,s673:`停止でエラー`,s680:`タイムライン`,s688:`その他の検証`,s68d:E`仕上げの猶予 ${0}`,s695:`修正依頼 1 回`,s699:E`スキーマ ${0}`,s6a0:`1 ステップ完了`,s6a8:E`入力 ${0} がありません(${1} が未完了)`,s6aa:`未実行(入力ファイルなし)`,s6b0:`ホスト`,s6b8:E`同時実行 ${0}/${1}`,s6b9:`タスクなし`,s6c3:`依存先タスクなし`,s6c7:`実行の開始時刻`,s6c8:E`依存先タスク ${0} が失敗`,s6d7:E`${1} タスク中 ${0} 件完了`,s6db:E`${0} 文字`,s6e4:`未選択`,s6eb:`読み込み中…`,s6f1:`API 呼び出し`,s6f2:`出力ファイル 1 件`,s6f5:E`見込み: あと ${0} タスク`,s6fa:`フロー呼び出しがエラーで終了`,s700:`書き出しに含まれない`,s703:E`${0} まで休止`,s706:`実行グループ`,s70a7:E`タスク終了後の利用率: ${0}`,s70af:`種別`,s71:E`モデル切り替え: ${0}`,s721:`ホストからの報告なし`,s7233:`古い試行 1 件は非表示`,s7239:E`修正依頼のあったタスク ${0} 件`,s72dc:`ユニットごとの周回数`,s72dd:`キャッシュ読み込み`,s734:`スタブエージェント`,s737:`ループの周回数`,s73d:`未実行の後続タスク 1 件`,s755:E`プラグイン ${0}`,s758:`エージェントのセッションなし`,s75e:`実行を検索`,s767:E`${0} モニター`,s76d:`カスタム列(row_extras)`,s76f:`原因`,s771:E`入力 ${0} は失敗したタスク ${1} の出力`,s77e:E`未実行 ${0} 件`,s782:`書き足す対象のファイル`,s786:`トランスクリプト`,s78f:`トークン`,s797:`すべての中を隠す`,s79a:E`未対応のイベント: ${0}`,s79f:E`5 時間枠の利用率 ${0}`,s7a1:`エラーで終了したフロー呼び出し 1 件`,s7a3:`出力ファイル`,s7a4:`権限エラー`,s7b16:`入力ファイルなし`,s7b1c:`修正依頼のあった試行`,s7b3:`検索に一致する実行なし`,s7bf:E`最初のエージェントのセッションの前に各モデルへ送る 1 回のリクエスト(preflight, policy ${0})`,s7c0:E`ホストからの報告なし ${0} 件`,s7c9:`フィルター`,s7cd8:`このタスクの入力 1 件`,s7cd9:`利用できるモデルがなく、最初に応答したモデルで実行する種別(substitute)`,s7cf:`応答が JSON ではない`,s7da:`最終報告`,s7df:E`終了(未実行のタスク ${0} 件)`,s7e:E`ロール ${0}`,s7f:`表示形式`,s803:`ファイル`,s807:`実行 1 件`,s80c:`1 行`,s816:`モデル切り替えなし`,s817:`変更したファイル 1 件`,s822:E`以前の試行のモデル: ${0}`,s826:`エージェントのセッションが使ったモデル`,s827:`認証情報が休止中`,s83:E`書き込み ${0}`,s841:`たった今`,s84f:`リトライ`,s8512:E`テーマ: ${0}`,s851d:`ファイルの値`,s859:`実行中`,s85e:E`${0}: モデル切り替え`,s863:E`入力 ${0} がありません`,s864:`全体を表示`,s868:E`${2} 年 ${0}〜${1} | ${3}`,s86c:E`ホスト ${0} 台`,s874:E`${0} ステップ完了`,s877:E`${0} 回目の失敗後の、新しいエージェントのセッション`,s87a:`実行されず`,s87b:E`モデル切り替え後に完了: ${0}`,s880:`全試行の合計`,s888:`入力`,s88b:`表で表示`,s892:E`入力 ${0}(${1} の出力)がありません`,s89e:`パラメータなし`,s8a56:`なし`,s8a59:E`PID ${0}`,s8ab:`コーディングエージェント`,s8ad:`周回数`,s8ae:E`${0} の記録から再生したエージェントのセッションと、そこに記録した新しいセッション(replay, record_missing)`,s8b1:`リトライしたタスク`,s8b4:`同じロックを持つタスクが共有する常駐の補助プロセス(services.jsonl)`,s8bb:`終了したすべての試行から集計(journal.jsonl)`,s8c1:E`${0} 分前`,s8c5:`このタスクの結果を受け取った直後に、フロー呼び出しが後続タスクを作成した(created_from)`,s8d3:`コーディングエージェントが使ったアカウントまたは API キー(credential)`,s8d4:`PID`,s8dd:E`キャッシュ読み込み ${0}`,s8de:`再開後の実行での、新しいエージェントのセッション`,s8df:`オブジェクト`,s8e3:`アシスタント`,s8e6:`Python コードで定義`,s8e9:E`ほか ${0} アカウント`,s8ea:`Tab: 次の行`,s8f1:`選択を解除`,s8f2:`ユニット`,s8f4:`入力と出力(全試行の合計)`,s8f5:`未実行`,s8fa:`未実行(入力ファイルなし、入力ファイルに検証エラー)`,s8fc:E`修正依頼 1 回で完了 | 最初の検証エラー: ${0}`,s900:`ビュー`,s901:`完了したタスク`,s906:`Python タスク`,s90c:E`コンテキストの上限 ${1} の ${0}%`,s90e:`ほかの種別が実装する種別(base_kind)`,s90f:`認証エラー`,s914:E`最大 ${0} 周`,s915:E`モデル ${0} 種類`,s919:E`${0}d ${1}h`,s91d:`順序のみの依存先`,s924:E`モデル ${0}`,s92a:E`依存先タスク ${0} 件の出力待ち`,s92b:E`5 時間枠 ${0}`,s934:`試行 1 回`,s936:`キュー内で同順位のタスクの順序を決める値(priority)`,s93e:`リプレイ`,s941:E`1 日あたり ${0}`,s949:`書き出しの期間`,s94d:`認証情報`,s94e:E`最終更新 ${0}`,s94f0:`実行中のタスク`,s94fd:E`${0} を折りたたむ`,s967:E`失敗 ${0} 件`,s96a:`コンテキストの上限`,s96c:E`出力 ${0}`,s97:E`修正依頼 ${0} 回で完了`,s980:`テキストフィルター`,s9893d9:E`利用率のルール: ${0}`,s9893de:`ホスト 1 台`,s98b:`グループ`,s98f:`入力ファイルなし`,s99:E`${0} 日間`,s9a2:`すべてのプロセス`,s9a4:E`失敗: ${0}`,s9a6:E`Web 検索 ${0} 回`,s9aa:`API 呼び出し 1 回あたりの入力の最大値。キャッシュ読み込みとキャッシュ書き込みを含む(peak_context)`,s9b1a6:`実行中ではありません`,s9b1a9:E`仕上げの種別: ${0}`,s9b3:`報告間隔`,s9b7:`書き込みなし(タスクが失敗)`,s9bd:E`${0} 回目で完了 | 失敗 ${1} 回 | 最初の失敗: ${2}`,s9c3:E`上限を超えた利用: ${0}`,s9c5:E`${0} の出力`,s9c6:`修正ラウンド`,s9c7:`すべての中を表示`,s9cb:`実装する種別`,s9d3:E`${0} 時点の書き出し`,s9d6:`最終応答なしで終了`,s9da:E`修正ラウンド ${0} 回後`,s9de:`モデル`,s9e0:E`状態: ${0}`,s9e8:`未実行(入力ファイルに検証エラー)`,s9f0:E`入力 ${0}`,s9f2:`一部のみ完了`,s9f7:`エラー`,s9f92:E`${0} の内部`,s9f97:`料金の上限`,s9fb:`実行`,s9fd:`タスクの開始前からあるファイルも有効`,s9ff:`モデル切り替え`,sa1:`リプレイした試行`,sa23:`ターン数の上限`,sa24:E`${0} の締め切りまでに終わらない`,sa31:`行を折り返す`,sa33:`後続タスクなし`,sa358:`ロール`,sa35c:`試行`,sa36:`モデル別の内訳`,sa39:E`実行中のエージェントのセッションの新しいイベント ${0} 件を表示`,sa3c:`形式`,sa3d3:E`週の利用率 ${0}(リセット ${1})`,sa3de:`停止`,sa3e:`アカウント全体の値 | エージェントのセッション開始時に取得`,sa3f:`各タスクが読み込むファイル`,sa43:`作成元`,sa48:`コマンドライン`,sa4f:E`最大 ${0} 回`,sa508:`安全分類器による停止 1 件`,sa50a:`折りたたむ`,sa54:`API 呼び出しごとのトークンは不明`,sa57:`権限エラーになったツール呼び出し`,sa58:`周回数`,sa62:E`${0}: トランスクリプト`,sa66:E`前の ${0} 行を表示`,sa6a:`開始日`,sa70:`項目なし`,sa71:`期待する型`,sa74:`縮小(Ctrl + スクロール)`,sa81:`システム設定に合わせる`,sa84:E`新しいイベント ${0} 件を表示`,sa86:E`${0} 時間前`,sa87:`ソースを表示`,sa88:E`${0} の入れ子のループ`,sa8b:`Shift + 矢印キー: 依存先タスク・後続タスク`,sa9b:`タスク詳細`,sa9d:`報告なし`,saa0:`書き込み待ち(タスクが実行中)`,saa2:`理由`,saaa:`5 時間枠の利用率`,saab:`テーマ`,sab5:E`${0} 行目`,sabd:`思考`,sac1:`モニターのサーバーに未接続`,sac7:E`${0} に利用できるモデルなし`,saca:`期間内の実行の合計`,sacb:`分かっているのはコーディングエージェントが出力したトークンの合計だけ。API 呼び出しごとのトークンは不明(usage_unknown)`,sacc:`可`,sad1:E`ほかに休止中の認証情報 ${0} 件`,sad3:`状態`,sad9:`API リクエストを再送`,sadb:`トークンは不明`,sae5:`必須`,sae6:`実行履歴のリトライしたタスク`,saee:`プロセス`,saf2:`すべてのモデルが利用可能`,saf8:`変更したファイルなし`,safd:E`${0} 回目が失敗: ${1}`,sb05:`エラー`,sb06:`実行履歴の修正依頼のあった試行`,sb0c:`サブスクリプションの利用率`,sb0f:`Python タスク 1 回`,sb105:E`未実行: ${0}`,sb106:`検索語`,sb108:`作成、試行の失敗後に削除`,sb14:E`報告なし ${0} 台`,sb16:E`${0} 行`,sb1f:`前の 1 行を表示`,sb24:E`この失敗で ${0} が停止`,sb26a:`登録順`,sb26f:`表示中の階層の外`,sb27:`Enter: 開く`,sb28:`キャッシュ書き込み`,sb31:E`プロンプト(${0} 文字)`,sb34:E`変更したファイル ${0} 件`,sb38:`ツール呼び出し`,sb45:`リトライしたタスク 1 件`,sb4d:`トランスクリプトなし`,sb51:`パイプラインのプロセス内`,sb53:`はい`,sb55:`コーディングエージェントが報告した値`,sb59:E`コンテキストの上限に接近(${0}%)`,sb5a:`未実行`,sb6:`タスク実行中の書き込みが必須`,sb7:E`${0} に停止`,sb81:`実行したエージェントのセッションのトークンは不明(usage_unknown)`,sb89:`エージェントのセッション 1 回`,sb94:E`5 時間枠(${0})`,sb97:`コンテキストの上限に接近`,sb98:E`${0}: 完了`,sb99:`トークンと料金`,sb9c:E`Python タスク: ${0}`,sba3:`1 周`,sba7:`ほかの出力 1 件`,sba8:`検証を通るファイルを書き込む前に、タスクが失敗`,sbaf:`要素 1 個`,sbb0:E`このバージョンの contraagent が対応していないイベント種別(unread_events): ${0}`,sbb2:`開始時の利用率`,sbb7:E`${1} タスク中 ${0} 件が未完了`,sbb9:`終了`,sbbe:`入力元`,sbc6:E`${0} 周: ${1}`,sbc9:E`以前の試行のモデル: ${0}`,sbca:`タスクの開始時`,sbcc:`依存先タスクが失敗`,sbd4:`実行を切り替え(r)`,sbd5:`停止の記録なし`,sbd9:`再開後`,sbdc:E`履歴にほか ${0} 件`,sbe2:`実行履歴の失敗した試行`,sbe4:E`${0} の記録から再生したエージェントのセッション(replay)`,sbe9:E`週(${0})`,sbea:`保存対象外(keep_transcripts = false)`,sbf18:`種別のロール`,sbf1d:E`ロック ${0}`,sbf2:`アクティビティなし`,sbf9:`スタブエージェントが台本どおりの応答で処理したタスク(stub)`,sc03:`それ以前`,sc07:`リトライ対象の例外`,sc15:`スキップ`,sc1a:E`待機中 ${0} 件`,sc1b:E`リトライしたタスク ${0} 件`,sc2:`ツール`,sc3:`この期間の実行はありません`,sc4:`タイムアウト`,sc53:`休止した認証情報`,sc54:E`${0} の締め切りを過ぎた`,sc57:E`入力 ${0} に検証エラー`,sc5b:`次のモデルでの新しいエージェントのセッション`,sc61:E`週 ${0}`,sc65:`縮小`,sc68:`日時`,sc6c:E`書き込まれていない出力 ${0} 件(タスクが未実行)`,sc6e:`締め切りまでに終わらない`,sc6f:E`エラーで終了したフロー呼び出し ${0} 件`,sc73:`開始`,sc75:E`全 ${1} 行のうち先頭 ${0} 行`,sc79:`タスク`,sc7d:`同時実行(上限)`,sc87a:E`警告のしきい値: ${0}`,sc87d:E`終了 ${0}`,sc92:`空き`,sc94:`全体`,sc97:`タイムゾーン`,sc9e:`その他`,sca1:`開始前に変更された`,sca4:`プロセスなし`,sca6:`プレビューを表示`,sca7:`ロール`,scb8:`終了(未完了のタスク 1 件)`,scb9:`最終試行の終了時刻`,scbd:`全文`,scca:E`最も高い種別: ${0}`,sccc:`モデルが応答を拒否`,scd1:`モデルの応答`,scd2:E`${0}: ${1} → 次のモデル`,scd94:`エージェントの所要時間`,scd9c:E`優先度 ${0}`,scdb:`Esc: 選択を解除`,scde:`ループ`,scf41:E`完了 ${0} 件`,scf43:E`入力 ${0} は失敗したタスクの出力`,scf70:`レート制限`,scf71:`失敗した試行の後の試行(retries)`,sd05:E`締め切り ${0}`,sd0e:`出来事`,sd17:`入力 / 出力 | キャッシュ読み込み / キャッシュ書き込み`,sd1f:`ファイルの検証に使うスキーマ`,sd20:E`順序のみの依存先: ${0}`,sd26:E`${0} 件を同時実行`,sd34:E`${0} に開始(${1})`,sd38:`変更`,sd3c:`登録済みのタスクなし`,sd3e:E`終了(未完了のタスク ${0} 件)`,sd40:`読み込むファイル(検証あり)`,sd47:`ローカルの認証情報(ambient)`,sd58:`終了(失敗したタスク 1 件)`,sd5a:`実行がシグナルで停止された`,sd5c:E`変更: ${0}`,sd5d:E`トークン: 入力 ${0}、出力 ${1}、キャッシュ読み込み ${2}、キャッシュ書き込み ${3}`,sd5e:`所要時間の合計`,sd6:`タスク呼び出しが実行全体の代わりに指定した、このタスクの作業ディレクトリ(cwd)`,sd73:`失敗`,sd744:`検証対象のファイル`,sd747:`なし(任意)`,sd75:`検証エラー`,sd776:E`全体の ${0}%`,sd77d:`実行中のエージェントのセッションの新しいイベント 1 件を表示`,sd7d:E`入力 ${0}(${1} の出力)に検証エラー`,sd82:`タスクの開始前からあるファイルは無効`,sd8a:E`${0} まで`,sd93:E`依存先タスク ${0} の出力待ち`,sd95:E`一部のみ完了: ${0}`,sd96:`中を隠す`,sda2:E`セッション開始時の利用率: ${0}`,sda80:E`すべて表示(${0} 文字)`,sda8d:`最大コンテキストが警告のしきい値を超えた(context_warned)`,sdb1:`入力`,sdb4:`イベントが途絶えた`,sdb8:`出力に検証エラー`,sdc:E`実行グループ ${0}`,sdd1:`モニターから応答がありません`,sdd4:`モデル 1 種類`,sdd8:`修正依頼なし`,sddf:`ビューを表示`,sde3:E`作業ディレクトリ ${0}`,sde7:`履歴にほか 1 件`,sde8:E`アカウント ${0}`,sdf1:E`${0} 回目で完了 | 失敗 1 回 | 最初の失敗: ${1}`,sdf4:`リトライなし`,sdf9:`リトライ後に完了`,se0e6:E`${0} から休止中`,se0ed:E`実行されず: ${0}`,se17:E`必要な時間 ${0}`,se1a:`作成`,se21:`指標`,se27:`タスクを実行した CLI(claude、omp)`,se2b:E`キー ${0} 個: ${1}`,se2c:E`期待する型: ${0}`,se3:`キーボードショートカット`,se41:`作成、試行の失敗後も保持`,se4b:`修正依頼のあったタスク 1 件`,se55:`エージェントのセッションの所要時間の合計`,se5ad:`モデル切り替え`,se5af:E`修正ラウンド ${0}`,se5b:`推移`,se5d:`monitor.Panel`,se60:`ハイコントラスト`,se61:`パイプラインのプロセス内の関数`,se66:`1 タスク`,se69:`後続タスクはこのタスクの完了を待つが、出力は受け取らない(after)`,se6d:`下の階層あり`,se71:E`${0} 回目`,se75:`リプレイと新しいセッション`,se7b:E`タスクの所要時間 ${0}`,se8:E`安全分類器による停止 ${0} 件`,se90:`認証情報`,se99d:`ロック`,se99f:E`終了(失敗したタスク ${0} 件)`,sea2:`期間`,sea4:`定義`,sea6:`矢印キー: マーク`,sea74:E`${0} タスク`,sea7b:`実行の一覧`,seac:`待機中`,seb0:`グラフで表示`,seb2:`締め切りと仕上げの猶予を過ぎた`,seba:`既定`,sec2:`すべての種別`,sec7:`コーディングエージェントが使ったエージェント定義(agents/&lt;role&gt;.md)`,secc:`上限に到達`,secf:E`${0}の利用率 ${1}`,sed05:`コーディングエージェントが報告した料金(試行が終わった日に計上)`,sed0a:`タスクごとに 1 つ(Backend.run)`,sed7:`種別または関数`,sed8:`合計`,sede:`ステージなし`,seea0:`結果`,seea1:`ホスト ID なし`,seed:E`入力ルート ${1} の ${0}`,seee1:`スキップ`,seee3:`完了しなかった試行`,sef0:E`実行中 ${0} 件`,sefc:`言語`,ser:`稼働中`,sf03:`所要時間の中央値`,sf06:E`タスクは ${0} 回目で完了`,sf08:`すべてのエージェントのセッションの合計(同時に実行した分も含む)`,sf11:`終了時刻`,sf14:`最初のエージェントのセッション`,sf26:E`実行 ${0} 件`,sf2b:`トークンの報告なし`,sf2c:`すべての試行が完了`,sf2d:E`関数 ${0}`,sf2e:`定義`,sf39:`周回数`,sf3c:`ほか 1 アカウント`,sf3e:`カスタムビュー`,sf46:E`${0} 周目`,sf48:`終了後の利用率`,sf4d:`コピー済み`,sf55:`サービス`,sf56:`試行の終了後に、同じアカウントで最初に報告された値`,sf5d:`ユニットごとではなく、実行ごとに 1 回実行されるタスク`,sf6:`フロー呼び出し`,sf7b:E`不明(${0})`,sf7d:E`残り ${0}`,sf7e:`すべての実行グループ`,sf82:E`休止 ${0} → ${1}`,sf86:`内容不明`,sf93:`合計`,sf9b:`エージェントのセッションが始まらなかった`,sfa04:`テキスト`,sfa06:`待たれなかったタスク 1 件`,sfa25:E`${0} 〜 ${1}`,sfa29:E`あと ${0} 件の見込み(forecast)`,sfa6:`フィルターに一致するタスクなし`,sfa8:`ツールのリクエスト`,sfad:`修正依頼 1 回で完了`,sfae:`ホスト一覧`,sfb3:`実行を切り替え`,sfb6:E`実行中のエージェントのセッション ${0} 件`,sfbb1:`失敗した試行`,sfbb8:E`${1} の失敗により ${0} で停止`,sfc4:`外部の状態`,sfc7:`再開カーソルなし`,sfd3:E`リトライ後に完了 ${0} 件`,sfd5:E`要素 ${0} 個: ${1}`,sfd7:`出力`,sfd85:`タスクの前から変わらない出力ファイルの箇所(preserve)`,sfd8b:`各日の最大値`,sfdd:`プロセス`,sfde:`ファイルにない必須フィールド`,sfe7:E`${0}: 入力と出力`,sfe9:E`プロセス ${0}`,sfef:`見込み: あと 1 タスク`,sff6:`登録済みのタスクはまだありません`,sff8:E`${0} のタスク`,sffa:`定義なし`,sfff:E`Python タスク ${0} 回`,stag:`完了`,stat:`状態`,"stop-ca":`取り消し`,"stop-co":`完了`,"stop-i":`未実行`,"stop-p":`一部のみ完了`,tab:`タスク`,tas:`タスク`,tok:`出力`,too:`完了`,"trends-p":`一部のみ完了`,"trends-r":`実行`,"view-g":`グラフ`,"view-o":`出力`,"view-t":`表`}),wn=`en`,Tn=[`ja`],En=[`en`,`ja`],Dn={en:`English`,ja:`日本語`},On={ja:()=>Promise.resolve(Sn)};function kn(){if(xn===void 0)try{xn=it({sourceLocale:wn,targetLocales:Tn,loadLocale:e=>On[e]()})}catch{xn=null}return xn!==null}var An=()=>xn?.getLocale()??wn;async function jn(e){kn()&&await xn.setLocale(e)}var Mn=`contraagent:locale`,Nn=e=>En.includes(e);function Pn(){try{let e=globalThis.localStorage?.getItem(Mn);if(Nn(e))return e}catch{}for(let e of globalThis.navigator?.languages??[]){let t=e.toLowerCase().split(`-`)[0];if(Nn(t))return t}return wn}async function Fn(e){try{globalThis.localStorage?.setItem(Mn,e)}catch{}await jn(e)}var In=`contraagent`,Ln=null,Rn=``,zn=null,Bn=!1;function Vn(){let e=globalThis.history?.state;return e&&typeof e==`object`?e:{}}function Hn(){let e=Vn()[In];return e&&typeof e==`object`?e:{}}function Un(){zn&&clearTimeout(zn),zn=null;let e=Ln;Ln=null,e&&globalThis.history&&Hn().entry===Rn&&history.replaceState({...Vn(),[In]:{...Hn(),...e}},``)}function Wn(){Un()}var Gn={recall:function(e){if(globalThis.history)return Ln&&Rn===Hn().entry&&e in Ln?Ln[e]:Hn()[e]},remember:function(e,t){if(!globalThis.history)return;let n=function(){let e=Hn().entry;if(e)return e;let t=Math.random().toString(36).slice(2);return history.replaceState({...Vn(),[In]:{...Hn(),entry:t}},``),t}();Ln&&Rn!==n&&(Ln=null),Rn=n,(Ln??={})[e]=t,zn??=setTimeout(Un,200),Bn||(Bn=!0,globalThis.addEventListener?.(`pagehide`,Wn))}},Kn=class{constructor(){this.values=new Map}recall(e){return this.values.get(e)}remember(e,t){this.values.set(e,t)}},qn=new WeakMap;function Jn(e,t){t?qn.set(e,t):qn.delete(e)}function Yn(e){for(let t=e;t;t=t.parentNode??t.host){let e=qn.get(t);if(e)return e}return Gn}var Xn=class{constructor(e,t){this.id=e,this.from=t,this.items=null}get memory(){return Yn(this.from)}get loaded(){return this.items??=new Set(this.memory.recall(this.id)??[])}has(e){return this.loaded.has(e)}set(e,t){let n=this.loaded;t!==n.has(e)&&(t?n.add(e):n.delete(e),this.memory.remember(this.id,[...n]))}values(){return[...this.loaded]}clear(){this.loaded.size&&(this.loaded.clear(),this.memory.remember(this.id,[]))}},Zn=class{constructor(e){this.id=e;let t=null;try{t=JSON.parse(globalThis.sessionStorage?.getItem(`${In}:${e}`)??`null`)}catch{}this.items=new Set(Array.isArray(t)?t.filter(e=>typeof e==`string`):[])}has(e){return this.items.has(e)}set(e,t){if(t!==this.items.has(e)){t?this.items.add(e):this.items.delete(e);try{globalThis.sessionStorage?.setItem(`${In}:${this.id}`,JSON.stringify([...this.items]))}catch{}}}},Qn=[`wheel`,`touchstart`,`pointerdown`,`keydown`],$n=class{constructor(e,t=()=>Gn){this.id=e,this.memory=t,this.el=null,this.frame=0,this.restoring=!1,this.target=0,this.until=null,this.step=()=>{if(this.frame=0,this.restoring&&this.el)return this.place()?this.cancel():void(this.until!==null&&(this.frame=requestAnimationFrame(this.step)))},this.cancel=()=>{if(cancelAnimationFrame(this.frame),this.frame=0,this.restoring){this.restoring=!1,this.el&&(this.el.style.overflowAnchor=``);for(let e of Qn)this.el?.removeEventListener(e,this.cancel)}},this.onScroll=()=>{!this.restoring&&this.el&&this.memory().remember(this.id,Math.round(this.el.scrollTop))}}attach(e){this.el!==e&&(this.detach(),this.el=e,e.addEventListener(`scroll`,this.onScroll,{passive:!0}))}detach(){this.cancel(),this.el?.removeEventListener(`scroll`,this.onScroll),this.el=null}restore(){let e=this.el;if(!e)return;this.cancel();let t=this.memory().recall(this.id)??0;if(t<=0)e.scrollTop=0;else{this.target=t,this.until=null,this.restoring=!0,e.style.overflowAnchor=`none`;for(let t of Qn)e.addEventListener(t,this.cancel,{passive:!0,once:!0});this.place()}}update(e){this.restoring&&(e&&(this.until??=performance.now()+6e3),this.frame||=requestAnimationFrame(this.step))}reset(){this.cancel(),this.el&&(this.el.scrollTop=0)}place(){let e=this.el,t=e.scrollHeight-e.clientHeight;return e.scrollTop=Math.min(this.target,t),this.until!==null&&(t>=this.target||performance.now()>this.until)}},er=[`overview`,`tasks`,`journal`,`outputs`,`definitions`,`procs`,`stream`],tr=[`transcript`,`input`,`output`,`definition`],nr=[7,14,30],rr={page:``,run:``,tab:`overview`,key:null,view:`transcript`,round:null,def:null,kind:``,stop:``,q:``,layer:``,unit:``,sel:``,days:14,from:``,to:``,tz:``,group:``,trendsTab:``},ir=e=>er.includes(e)||/^panel:.+/.test(e),ar=e=>tr.includes(e);function or(e){let t=new URLSearchParams(e),n=t.get(`tab`)??``,r=t.get(`view`)??``,i=Number(t.get(`round`)),a=t.get(`page`)===`hosts`?`hosts`:t.get(`page`)===`trends`?`trends`:``,o=t.get(`from`)??``,s=t.get(`to`)??``,c=/^\d{4}-\d{2}-\d{2}$/.test(o)&&/^\d{4}-\d{2}-\d{2}$/.test(s),l=Number(t.get(`days`));return{page:a,run:a?``:t.get(`run`)??``,tab:a!==`trends`&&ir(n)?n:`overview`,key:t.get(`key`)||null,view:ar(r)?r:`transcript`,round:Number.isInteger(i)&&i>0?i:null,def:t.get(`def`)||null,kind:t.get(`kind`)??``,stop:t.get(`stop`)??``,q:t.get(`q`)??``,layer:t.get(`layer`)??``,unit:t.get(`unit`)??``,sel:t.get(`sel`)??``,days:c?0:nr.includes(l)?l:rr.days,from:c?o:``,to:c?s:``,tz:t.get(`tz`)??``,group:t.get(`group`)??``,trendsTab:a===`trends`?t.get(`tab`)??``:``}}function sr(e){if(e.page===`hosts`)return`?page=hosts`;if(e.page===`trends`){let t=new URLSearchParams({page:`trends`});return e.days===0&&e.from&&e.to?(t.set(`from`,e.from),t.set(`to`,e.to)):e.days!==rr.days&&t.set(`days`,String(e.days)),e.tz&&t.set(`tz`,e.tz),e.group&&t.set(`group`,e.group),e.trendsTab&&t.set(`tab`,e.trendsTab),`?${t.toString()}`}let t=new URLSearchParams;e.run&&t.set(`run`,e.run),e.tab!==`overview`&&t.set(`tab`,e.tab),e.tab===`stream`&&(e.key&&t.set(`key`,e.key),e.view!==`transcript`&&t.set(`view`,e.view),e.round!=null&&t.set(`round`,String(e.round))),e.tab===`definitions`&&e.def&&t.set(`def`,e.def),e.tab===`overview`&&e.layer&&t.set(`layer`,e.layer),e.tab===`overview`&&e.unit&&t.set(`unit`,e.unit),e.tab===`overview`&&e.sel&&t.set(`sel`,e.sel);let n=e.tab===`tasks`||e.tab===`journal`;n&&e.kind&&t.set(`kind`,e.kind),e.tab===`journal`&&e.stop&&t.set(`stop`,e.stop),n&&e.q&&t.set(`q`,e.q);let r=t.toString();return r?`?${r}`:``}function cr(e,t){let n={...e,...t};return t.run!==void 0&&t.run!==e.run&&Object.assign(n,{key:null,def:null,round:null,layer:``,unit:``,sel:``,...t}),t.layer!==void 0&&t.layer!==e.layer&&t.sel===void 0&&(n.sel=``),t.key!==void 0&&t.key!==e.key&&(t.view===void 0&&(n.view=`transcript`),t.round===void 0&&(n.round=null)),n}function lr(e,t){let n=e=>sr({...e,kind:``,stop:``,q:``,unit:``,sel:``});return n(e)!==n(t)}var ur=class{constructor(e,t,n,r=()=>{}){this.mode=e,this.onChange=t,this.onLeave=r,this.onPop=()=>{this.current=or(location.search),this.onChange(this.current,`pop`)};let i=or(e===`url`?location.search:``);this.current=cr(i,n??{})}get viewRoute(){return this.current}start(){this.mode===`url`&&(history.scrollRestoration=`manual`,addEventListener(`popstate`,this.onPop)),this.onChange(this.current,`init`)}stop(){this.mode===`url`&&removeEventListener(`popstate`,this.onPop)}navigate(e,t={}){let n=cr(this.current,e);if(sr(n)===sr(this.current))return;let r=!t.replace&&lr(this.current,n);if(this.current=n,this.mode===`url`){let e=`${location.pathname}${sr(n)}${location.hash}`;r?(this.onLeave(),history.pushState({},``,e)):history.replaceState(history.state,``,e)}this.onChange(n,r?`push`:`replace`)}},dr=class{constructor(e,t){this.host=e,this.opts=t,this.ready=Promise.resolve(),e.addController(this)}hostConnected(){let e=this.opts.locale();this.ready=jn(Nn(e)?e:Pn()).catch(()=>{})}hostUpdated(){let e=this.opts.locale();e!==this.seen&&(this.seen=e,Nn(e)&&e!==An()&&jn(e)),this.opts.pageWide()&&(document.documentElement.lang=An()),this.host.lang=An()}},fr=class{constructor(e,t,n){this.host=e,this.onKey=t,this.scope=n,this.bound=null,this.boundScope=`off`,this.listener=e=>{let t=e;t.defaultPrevented||function(e){let t=e.composedPath()[0];return t instanceof HTMLElement&&(t.isContentEditable||t.matches(`input, select, textarea, [contenteditable]:not([contenteditable="false"])`))}(t)||t.metaKey||t.ctrlKey||t.altKey||this.onKey(t)},e.addController(this)}hostConnected(){this.bind()}hostUpdated(){this.scope()!==this.boundScope&&this.bind()}hostDisconnected(){this.unbind()}bind(){this.unbind();let e=this.scope();this.boundScope=e,this.bound=e===`page`?document:e===`element`?this.host:null,this.bound?.addEventListener(`keydown`,this.listener)}unbind(){this.bound?.removeEventListener(`keydown`,this.listener),this.bound=null,this.boundScope=`off`}},pr=[{name:`backdrop`,prop:`--ca-backdrop`},{name:`bg`,prop:`--ca-bg`},{name:`card`,prop:`--ca-card`},{name:`panel`,prop:`--ca-panel`},{name:`panel2`,prop:`--ca-panel2`},{name:`raise`,prop:`--ca-raise`},{name:`well`,prop:`--ca-well`},{name:`track`,prop:`--ca-track`},{name:`line`,prop:`--ca-line`},{name:`line2`,prop:`--ca-line2`},{name:`shadow`,prop:`--ca-shadow`},{name:`text`,prop:`--ca-text`},{name:`text-2`,prop:`--ca-text-secondary`},{name:`text-muted`,prop:`--ca-text-muted`},{name:`accent`,prop:`--ca-accent`},{name:`accent-bg`,prop:`--ca-accent-bg`,derive:`color-mix(in srgb, var(--accent) calc(var(--tint) + 1%), transparent)`},{name:`focus`,prop:`--ca-focus`},{name:`focus-width`,prop:`--ca-focus-width`},{name:`selection`,prop:`--ca-selection`},{name:`status-failed`,prop:`--ca-status-failed`},{name:`status-failed-bg`,prop:`--ca-status-failed-bg`,derive:`color-mix(in srgb, var(--status-failed) var(--tint), transparent)`},{name:`status-attention`,prop:`--ca-status-attention`},{name:`status-attention-bg`,prop:`--ca-status-attention-bg`,derive:`color-mix(in srgb, var(--status-attention) var(--tint), transparent)`},{name:`status-done`,prop:`--ca-status-done`},{name:`status-done-bg`,prop:`--ca-status-done-bg`,derive:`color-mix(in srgb, var(--status-done) var(--tint), transparent)`},{name:`status-running`,prop:`--ca-status-running`},{name:`status-running-bg`,prop:`--ca-status-running-bg`,derive:`color-mix(in srgb, var(--status-running) var(--tint), transparent)`},{name:`status-muted`,prop:`--ca-status-muted`},{name:`status-muted-bg`,prop:`--ca-status-muted-bg`,derive:`color-mix(in srgb, var(--status-muted) calc(var(--tint) - 1%), transparent)`},{name:`tint`,prop:`--ca-tint`},{name:`agent`,prop:`--ca-agent`},{name:`agent-bg`,prop:`--ca-agent-bg`,derive:`color-mix(in srgb, var(--agent) calc(var(--tint) + 2%), transparent)`},{name:`meter`,prop:`--ca-meter`},{name:`tok-input`,prop:`--ca-tok-input`},{name:`tok-cache-read`,prop:`--ca-tok-cache-read`},{name:`tok-cache-write`,prop:`--ca-tok-cache-write`},{name:`tok-output`,prop:`--ca-tok-output`},{name:`series-1`,prop:`--ca-series-1`},{name:`series-2`,prop:`--ca-series-2`},{name:`series-3`,prop:`--ca-series-3`},{name:`series-4`,prop:`--ca-series-4`},{name:`series-5`,prop:`--ca-series-5`},{name:`series-6`,prop:`--ca-series-6`},{name:`code-keyword`,prop:`--ca-code-keyword`},{name:`code-string`,prop:`--ca-code-string`},{name:`code-number`,prop:`--ca-code-number`},{name:`code-constant`,prop:`--ca-code-constant`},{name:`code-comment`,prop:`--ca-code-comment`},{name:`code-function`,prop:`--ca-code-function`},{name:`code-type`,prop:`--ca-code-type`},{name:`code-name`,prop:`--ca-code-name`},{name:`font-size-xs`,prop:`--ca-font-size-xs`,derive:`10px`},{name:`font-size-sm`,prop:`--ca-font-size-sm`,derive:`11px`},{name:`font-size-md`,prop:`--ca-font-size-md`,derive:`12px`},{name:`font-size-lg`,prop:`--ca-font-size-lg`,derive:`13px`},{name:`font-size-xl`,prop:`--ca-font-size-xl`,derive:`15px`},{name:`font-size-2xl`,prop:`--ca-font-size-2xl`,derive:`28px`},{name:`radius-sm`,prop:`--ca-radius-sm`,derive:`4px`},{name:`radius-md`,prop:`--ca-radius-md`,derive:`8px`},{name:`radius-lg`,prop:`--ca-radius-lg`,derive:`12px`},{name:`radius-pill`,prop:`--ca-radius-pill`,derive:`999px`}],mr=[`contraagent-dark`,`contraagent-light`,`github-dark`,`github-light`,`one-dark`,`nord`,`high-contrast`],hr=[`contraagent-dark`,`contraagent-light`,`system`,`github-dark`,`github-light`,`one-dark`,`nord`,`high-contrast`],gr=[`github-dark`,`github-light`,`one-dark`,`nord`,`high-contrast`],_r=`contraagent-dark`,vr={"contraagent-dark":{label:`contraagent Dark`,scheme:`dark`,tokens:{backdrop:`radial-gradient(1100px 520px at 8% -12%, #10203a 0%, transparent 62%), radial-gradient(900px 480px at 108% 4%, #1b1238 0%, transparent 58%), #060a11`,bg:`#060a11`,card:`#0f1724`,panel:`#0f1724`,panel2:`#142034`,raise:`#1a2740`,well:`#0a111c`,track:`#1b273b`,line:`#1d2940`,line2:`#2b3c58`,shadow:`#060a11`,text:`#e7edf5`,"text-2":`#bcc7d6`,"text-muted":`#909db2`,accent:`#7aa2ff`,focus:`#7aa2ff`,"focus-width":`2px`,selection:`#7aa2ff4d`,"status-failed":`#f87171`,"status-attention":`#fbbf24`,"status-done":`#34d399`,"status-running":`#22d3ee`,"status-muted":`#94a3b8`,tint:`13%`,agent:`#b597fb`,meter:`#7d8ba3`,"tok-input":`#7c86f5`,"tok-cache-read":`#3f4d63`,"tok-cache-write":`#8796ad`,"tok-output":`#d6b8ff`,"series-1":`#3987e5`,"series-2":`#d95926`,"series-3":`#199e70`,"series-4":`#c98500`,"series-5":`#d55181`,"series-6":`#008300`,"code-keyword":`#c4a5ff`,"code-string":`#7ee2a8`,"code-number":`#f5c26b`,"code-constant":`#ff9e64`,"code-comment":`#74839a`,"code-function":`#7dd3fc`,"code-type":`#ffd479`,"code-name":`#79b8ff`}},"contraagent-light":{label:`contraagent Light`,scheme:`light`,tokens:{backdrop:`radial-gradient(1100px 520px at 8% -12%, #dde7fb 0%, transparent 62%), radial-gradient(900px 480px at 108% 4%, #ebe3fa 0%, transparent 58%), #eef2f8`,bg:`#eef2f8`,card:`#ffffff`,panel:`#ffffff`,panel2:`#f7f9fc`,raise:`#e6ecf5`,well:`#f3f6fa`,track:`#e1e7f0`,line:`#d6dde8`,line2:`#b6c2d3`,shadow:`#0f172438`,text:`#0f1724`,"text-2":`#34415a`,"text-muted":`#556279`,accent:`#2f58d4`,focus:`#2f58d4`,"focus-width":`2px`,selection:`#2f58d42e`,"status-failed":`#b8132d`,"status-attention":`#6c4801`,"status-done":`#026b49`,"status-running":`#01525f`,"status-muted":`#56637a`,tint:`11%`,agent:`#6f45c0`,meter:`#8a97ab`,"tok-input":`#4d4cc8`,"tok-cache-read":`#cdd6e3`,"tok-cache-write":`#7d8aa0`,"tok-output":`#a07ad9`,"series-1":`#2a78d6`,"series-2":`#eb6834`,"series-3":`#1baf7a`,"series-4":`#eda100`,"series-5":`#e87ba4`,"series-6":`#008300`,"code-keyword":`#6f49a8`,"code-string":`#076b40`,"code-number":`#7b5605`,"code-constant":`#964605`,"code-comment":`#5d6b80`,"code-function":`#086586`,"code-type":`#785902`,"code-name":`#095ea8`}},"github-dark":{label:`GitHub Dark`,scheme:`dark`,tokens:{backdrop:`#010409`,bg:`#010409`,card:`#0d1117`,panel:`#0d1117`,panel2:`#151b23`,raise:`#212830`,well:`#010409`,track:`#262c36`,line:`#262c36`,line2:`#3d444d`,shadow:`#010409`,text:`#f0f6fc`,"text-2":`#d1d7e0`,"text-muted":`#9299a2`,accent:`#4796fb`,focus:`#1f6feb`,"focus-width":`2px`,selection:`#388bfd4d`,"status-failed":`#fc554d`,"status-attention":`#d29922`,"status-done":`#3fb950`,"status-running":`#39c5cf`,"status-muted":`#9198a1`,tint:`15%`,agent:`#ab7df8`,meter:`#656c76`,"tok-input":`#58a6ff`,"tok-cache-read":`#2f3742`,"tok-cache-write":`#656c76`,"tok-output":`#d2a8ff`,"series-1":`#3987e5`,"series-2":`#d95926`,"series-3":`#199e70`,"series-4":`#c98500`,"series-5":`#d55181`,"series-6":`#008300`,"code-keyword":`#ff7b72`,"code-string":`#a5d6ff`,"code-number":`#79c0ff`,"code-constant":`#79c0ff`,"code-comment":`#9198a1`,"code-function":`#d2a8ff`,"code-type":`#ffa657`,"code-name":`#7ee787`}},"github-light":{label:`GitHub Light`,scheme:`light`,tokens:{backdrop:`#f6f8fa`,bg:`#f6f8fa`,card:`#ffffff`,panel:`#ffffff`,panel2:`#ffffff`,raise:`#eff2f5`,well:`#f6f8fa`,track:`#e6eaef`,line:`#d1d9e0`,line2:`#b7c0ca`,shadow:`#1f232833`,text:`#1f2328`,"text-2":`#393f46`,"text-muted":`#59636e`,accent:`#0165d6`,focus:`#0165d6`,"focus-width":`2px`,selection:`#0969da33`,"status-failed":`#cd1e2b`,"status-attention":`#916103`,"status-done":`#147b33`,"status-running":`#10767d`,"status-muted":`#59636e`,tint:`8%`,agent:`#804ddc`,meter:`#818b98`,"tok-input":`#54aeff`,"tok-cache-read":`#d1d9e0`,"tok-cache-write":`#818b98`,"tok-output":`#a475f9`,"series-1":`#2a78d6`,"series-2":`#eb6834`,"series-3":`#1baf7a`,"series-4":`#eda100`,"series-5":`#e87ba4`,"series-6":`#008300`,"code-keyword":`#cf222e`,"code-string":`#0a3069`,"code-number":`#0550ae`,"code-constant":`#0550ae`,"code-comment":`#59636e`,"code-function":`#6639ba`,"code-type":`#953800`,"code-name":`#116329`}},"one-dark":{label:`One Dark`,scheme:`dark`,tokens:{backdrop:`#21252b`,bg:`#21252b`,card:`#282c34`,panel:`#282c34`,panel2:`#2c313a`,raise:`#2c313a`,well:`#21252b`,track:`#3a3f4b`,line:`#181a1f`,line2:`#4b5263`,shadow:`#0e1013`,text:`#d7dae0`,"text-2":`#abb2bf`,"text-muted":`#a7afbe`,accent:`#64b2f2`,focus:`#528bff`,"focus-width":`2px`,selection:`#3e4451`,"status-failed":`#fc858d`,"status-attention":`#e5c07b`,"status-done":`#98c379`,"status-running":`#57b7c3`,"status-muted":`#a7afbe`,tint:`12%`,agent:`#d788ee`,meter:`#5c6370`,"tok-input":`#61afef`,"tok-cache-read":`#3e4451`,"tok-cache-write":`#5c6370`,"tok-output":`#c678dd`,"series-1":`#3987e5`,"series-2":`#d95926`,"series-3":`#199e70`,"series-4":`#c98500`,"series-5":`#d55181`,"series-6":`#008300`,"code-keyword":`#c678dd`,"code-string":`#98c379`,"code-number":`#d19a66`,"code-constant":`#d19a66`,"code-comment":`#8f949e`,"code-function":`#61afef`,"code-type":`#e5c07b`,"code-name":`#e36e77`}},nord:{label:`Nord`,scheme:`dark`,tokens:{backdrop:`#2e3440`,bg:`#242933`,card:`#2e3440`,panel:`#2e3440`,panel2:`#323946`,raise:`#3b4252`,well:`#272c36`,track:`#3b4252`,line:`#3b4252`,line2:`#4c566a`,shadow:`#1d2129`,text:`#eceff4`,"text-2":`#d8dee9`,"text-muted":`#adbcd9`,accent:`#9dbedf`,focus:`#88c0d0`,"focus-width":`2px`,selection:`#4c566a`,"status-failed":`#fe9aa1`,"status-attention":`#ebcb8b`,"status-done":`#a5c18e`,"status-running":`#89c1d1`,"status-muted":`#adbcd9`,tint:`13%`,agent:`#d0a9c9`,meter:`#7b88a1`,"tok-input":`#5e81ac`,"tok-cache-read":`#4c566a`,"tok-cache-write":`#7b88a1`,"tok-output":`#b48ead`,"series-1":`#3987e5`,"series-2":`#d95926`,"series-3":`#199e70`,"series-4":`#c98500`,"series-5":`#d55181`,"series-6":`#008300`,"code-keyword":`#81a1c1`,"code-string":`#a3be8c`,"code-number":`#b790b0`,"code-constant":`#d38972`,"code-comment":`#8f9db8`,"code-function":`#88c0d0`,"code-type":`#8fbcbb`,"code-name":`#8fbcbb`}},"high-contrast":{label:`High contrast`,scheme:`dark`,tokens:{backdrop:`#010409`,bg:`#010409`,card:`#0a0c10`,panel:`#0a0c10`,panel2:`#0a0c10`,raise:`#1c2128`,well:`#010409`,track:`#272b33`,line:`#7a828e`,line2:`#9ea7b3`,shadow:`#000000`,text:`#ffffff`,"text-2":`#f0f3f6`,"text-muted":`#bdc4cc`,accent:`#7abbfe`,focus:`#7abbfe`,"focus-width":`3px`,selection:`#409eff66`,"status-failed":`#ffacb8`,"status-attention":`#fad209`,"status-done":`#0ef38e`,"status-running":`#62ceff`,"status-muted":`#bdc4cc`,tint:`12%`,agent:`#c299fe`,meter:`#9ea7b3`,"tok-input":`#409eff`,"tok-cache-read":`#525964`,"tok-cache-write":`#9ea7b3`,"tok-output":`#dbb7ff`,"series-1":`#3987e5`,"series-2":`#d95926`,"series-3":`#199e70`,"series-4":`#c98500`,"series-5":`#d55181`,"series-6":`#008300`,"code-keyword":`#ff9492`,"code-string":`#addcff`,"code-number":`#91cbff`,"code-constant":`#91cbff`,"code-comment":`#bdc4cc`,"code-function":`#dbb7ff`,"code-type":`#ffb757`,"code-name":`#72f088`}}},yr=Object.fromEntries(pr.map(e=>[e.name,e.prop])),br=e=>`:where([data-ca-theme="${e}"])`;function xr(e=br){return mr.map(t=>{let n=vr[t],r=Object.entries(n.tokens).map(([e,t])=>`${yr[e]}: ${t};`);return`${e(t)} { color-scheme: ${n.scheme}; --ca-color-scheme: ${n.scheme}; ${r.join(` `)} }`}).join(`
6
6
  `)}var Sr=e=>hr.includes(e);function Cr(e,t){return e===`system`?t?`contraagent-light`:`contraagent-dark`:(e=>mr.includes(e))(e)?e:_r}var wr=`contraagent:theme`,Tr=()=>{try{return globalThis.localStorage}catch{return}},Er=ft(xr()),Dr=ft(xr(e=>`:host([data-ca-theme="${e}"])`)),Or=new WeakSet,kr=class{constructor(e,t){this.host=e,this.opts=t,this.light=globalThis.matchMedia?.(`(prefers-color-scheme: light)`).matches??!1,this.stop=null,e.addController(this)}get choice(){let e=this.opts.theme();return Sr(e)?e:function(e=Tr()){try{let t=e?.getItem(wr);if(Sr(t))return t}catch{}return _r}()}get shown(){return Cr(this.choice,this.light)}get system(){return Cr(`system`,this.light)}hostConnected(){this.apply();let e=globalThis.matchMedia?.(`(prefers-color-scheme: light)`);if(!e)return;let t=e=>{this.light=e.matches,this.host.requestUpdate()};e.addEventListener(`change`,t),this.stop=()=>e.removeEventListener(`change`,t)}hostDisconnected(){this.stop?.(),this.stop=null}hostUpdated(){this.apply()}apply(){let e=this.shown;this.host.getAttribute(`data-ca-theme`)!==e&&this.host.setAttribute(`data-ca-theme`,e),this.opts.pageWide()&&document.documentElement.getAttribute(`data-ca-theme`)!==e&&document.documentElement.setAttribute(`data-ca-theme`,e)}},L=e=>e&&e!==`neutral`?e:M;function R(e,t,n){return e.dispatchEvent(new CustomEvent(t,{detail:n,bubbles:!0,composed:!0}))}function Ar(e,t){let n={...e};if(t)for(let[e,r]of Object.entries(t))r!==void 0&&(n[e]=r);return n}function z(e,t){customElements.get(e)||customElements.define(e,t)}function B(e){if(e==null||Number.isNaN(e))return`—`;let t=Math.max(0,e);if(t<.05)return`<0.1s`;if(t<9.95)return`${t.toFixed(1)}s`;let n=Math.round(t);return n<60?`${n}s`:n<3600?`${Math.floor(n/60)}m ${String(n%60).padStart(2,`0`)}s`:`${Math.floor(n/3600)}h ${String(Math.floor(n%3600/60)).padStart(2,`0`)}m`}var jr=e=>String(e??``).replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`),Mr=new Set,Nr=null;function Pr(){for(let e of Mr)e.requestUpdate()}var Fr=class{constructor(e){this.host=e,e.addController(this)}hostConnected(){Mr.add(this.host),Nr??=setInterval(Pr,1e3)}hostDisconnected(){Mr.delete(this.host),!Mr.size&&Nr&&(clearInterval(Nr),Nr=null)}},Ir=new class{constructor(){this.seen=new Map}at(e,t,n=Date.now()){let r=Math.round(n-1e3*t),i=this.seen.get(e);return i!==void 0&&Math.abs(i-r)<5e3?i:(this.seen.set(e,r),r)}},Lr=k` .tag{font-size:var(--font-size-xs);padding:0 7px;border-radius:var(--radius-pill);border:1px solid var(--line2);color:var(--text-muted);white-space:nowrap;}.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;}.chip{font-size:var(--font-size-sm);padding:1px 8px;border-radius:var(--radius-pill);border:1px solid var(--line);color:var(--text-muted);white-space:nowrap;}.chip[data-tone='done']{color:var(--text-2);}.chip[data-tone='done']>[aria-hidden]{color:var(--tone);font-weight:700;}.chip[data-tone='running']{background:var(--tone);color:var(--bg);border-color:var(--tone);font-weight:600;animation:ping 1.6s var(--ease) infinite;}.chip.todo{opacity:0.65;}.taskchip{display:inline-block;font:inherit;font-family:var(--mono);font-size:var(--font-size-sm);line-height:1.5;padding:0 8px;border-radius:var(--radius-pill);border:1px solid var(--line);background:var(--raise);color:var(--text-2);white-space:nowrap;}button.taskchip{cursor:pointer;}button.taskchip:hover{border-color:var(--accent);color:var(--text);}.kbd{font-family:var(--mono);font-size:var(--font-size-xs);border:1px solid var(--line2);border-bottom-width:2px;border-radius:var(--radius-sm);padding:0 4px;color:var(--text-muted);}`,Rr=k` .g12{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:14px;container-type:inline-size;}.c12{grid-column:span 12;}.c7{grid-column:span 7;}.c5{grid-column:span 5;}@container (max-width:1100px){.c7,.c5{grid-column:span 12;}}.panel{background:linear-gradient(180deg,var(--panel2),var(--panel));border:1px solid var(--line);border-radius:var(--radius-lg);padding:14px 16px;min-width:0;box-shadow:0 10px 28px color-mix(in srgb,var(--shadow) 40%,transparent);}.panel>h3{margin:0 0 12px;display:flex;align-items:center;gap:8px;font-size:12.5px;font-weight:600;color:var(--text-2);}.panel>h3 .r{margin-left:auto;font-weight:400;font-size:11.5px;color:var(--text-muted);}.sect-h{margin:14px 0 8px;font-size:var(--font-size-md);color:var(--text-2);font-weight:600;}.sect-h .meta{margin-left:8px;font-weight:400;}.blank{display:flex;flex-direction:column;align-items:center;gap:8px;padding:60px 16px;color:var(--text-muted);text-align:center;}.blank .ic{font-size:30px;opacity:0.55;}.blank b{color:var(--text-2);font-weight:600;}.blank a.lnk{text-decoration:underline;}.blank.small{padding:24px;}.fl{padding:7px 10px;border-radius:var(--radius-md);cursor:pointer;display:grid;grid-template-columns:auto 1fr auto;gap:2px 10px;align-items:baseline;}button.fl{width:100%;background:none;border:0;color:inherit;text-align:start;}.fl-name{background:none;border:0;padding:0;color:inherit;font-weight:700;text-align:start;cursor:pointer;min-width:0;}.fl>.meta:last-child{grid-column:1 / 4;overflow:hidden;text-overflow:ellipsis;}.fl:hover{background:var(--raise);}`,zr=k` .enter{animation:enter 0.5s var(--ease) both;}@keyframes turn{to{transform:rotate(360deg);}}@keyframes breathe{0%,100%{opacity:0.45;box-shadow:0 0 0 0 transparent;transform:scale(0.85);}50%{opacity:1;box-shadow:0 0 0 4px var(--status-running-bg);transform:scale(1);}}@keyframes ping{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--status-running) 55%,transparent);}80%,100%{box-shadow:0 0 0 9px transparent;}}@keyframes enter{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:none;}}@keyframes bump{0%{transform:scale(1);}35%{transform:scale(1.04);box-shadow:0 0 0 1px var(--line2);}100%{transform:scale(1);}}@keyframes scan{from{transform:translateX(-100%);}to{transform:translateX(100%);}}@keyframes growx{from{transform:scaleX(0);}to{transform:scaleX(1);}}@keyframes stripes{to{background-position:17px 0;}}@keyframes toast-in{from{opacity:0;transform:translateY(12px) scale(0.97);}to{opacity:1;transform:none;}}@keyframes toast-out{to{opacity:0;transform:translateX(24px);}}@keyframes rowin{from{background:color-mix(in srgb,var(--text) 10%,transparent);}to{background:transparent;}}@keyframes bounce{0%,80%,100%{transform:translateY(0);opacity:0.45;}40%{transform:translateY(-5px);opacity:1;}}@keyframes core-beat{0%,100%{transform:scale(1);}50%{transform:scale(0.72);}}@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none !important;transition:none !important;}}`,Br=k` *,*::before,*::after{box-sizing:border-box;}*{scrollbar-width:thin;scrollbar-color:var(--line2) transparent;}*:hover{scrollbar-color:var(--text-muted) transparent;}::selection{background:var(--selection);}:focus-visible{outline:var(--focus-width) solid var(--focus);outline-offset:2px;}button{font:inherit;color:inherit;}[hidden]{display:none !important;}`,Vr=k` [data-tone='failed']{--tone:var(--status-failed);--tone-bg:var(--status-failed-bg);}[data-tone='attention']{--tone:var(--status-attention);--tone-bg:var(--status-attention-bg);}[data-tone='done']{--tone:var(--status-done);--tone-bg:var(--status-done-bg);}[data-tone='running']{--tone:var(--status-running);--tone-bg:var(--status-running-bg);}[data-tone='muted']{--tone:var(--status-muted);--tone-bg:var(--status-muted-bg);}[data-mark]::before{margin-right:0.35em;font-weight:700;}[data-mark='done']::before{content:'✓';content:'✓' / '';color:var(--status-done);}[data-mark='failed']::before{content:'✕';content:'✕' / '';}[data-mark='pending']::before{content:'◌';content:'◌' / '';}.tone-text[data-tone]{color:var(--tone);}.pill{border-radius:var(--radius-pill);padding:1px 10px;font-size:var(--font-size-sm);font-weight:500;background:var(--raise);color:var(--text-2);white-space:nowrap;}.pill[data-tone]{background:var(--tone-bg);color:var(--tone);}.pill[data-tone='done']{background:none;padding-left:2px;color:var(--text-2);}.jstop{font-weight:600;}.jstop[data-tone='failed'],.jstop[data-tone='attention']{color:var(--tone);}.jstop[data-tone='done']{color:var(--text-2);font-weight:500;}.dot{width:8px;height:8px;border-radius:50%;background:var(--line2);flex:none;display:inline-block;}.dot[data-tone]{background:var(--tone);}.dot[data-tone='running']{animation:breathe 1.8s ease-in-out infinite;}.dot[data-tone='attention']{border-radius:1px;transform:rotate(45deg) scale(0.86);}.dot[data-tone='failed']{border-radius:1.5px;}.spin{width:14px;height:14px;border-radius:50%;border:2px solid var(--status-running-bg);border-top-color:var(--status-running);animation:turn 0.9s linear infinite;flex:none;display:inline-block;}`,Hr=k` .jmono,code,.mono{font-family:var(--mono);}.sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;}.jmono{font-size:11.5px;}.meta{color:var(--text-muted);font-size:var(--font-size-sm);}.words{word-break:keep-all;overflow-wrap:break-word;line-break:strict;}.words .f{display:inline-block;max-width:100%;}@supports (word-break:auto-phrase){.words:lang(ja){word-break:auto-phrase;}}.mut,.jdim{color:var(--text-muted);}a.lnk{color:var(--accent);cursor:pointer;text-decoration:none;}a.lnk:hover{text-decoration:underline;}`,Ur=vr[_r].tokens,Wr=k` :host{${ft(pr.map(e=>e.derive?`--${e.name}: var(${e.prop}, ${e.derive});`:`--${e.name}: var(${e.prop}, ${Ur[e.name]});`).join(`
7
7
  `))} --sans:var(--ca-sans,system-ui,-apple-system,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif);--mono:var(--ca-mono,ui-monospace,SFMono-Regular,Menlo,Consolas,'Liberation Mono',monospace);--ease:cubic-bezier(0.2,0.8,0.2,1);color-scheme:var(--ca-color-scheme,${ft(vr[_r].scheme)});color:var(--text);}:host([hidden]){display:none !important;}`,Gr=k` .jtree{font-family:var(--mono);font-size:var(--font-size-md);overflow:auto;}.jt{margin-left:16px;}details.jt>summary{cursor:pointer;list-style:revert;}.jk{color:var(--code-name);}.js{color:var(--code-string);}.jn{color:var(--code-number);}.md-p{margin:0.15em 0;}.md-gap{height:0.5em;}.md-h{font-weight:600;margin:0.7em 0 0.25em;}.md-h1{font-size:1.25em;}.md-h2{font-size:1.12em;}.md-h3{font-size:1.03em;color:var(--text-2);}.md-h4{color:var(--text-2);}.md-li{padding-left:16px;text-indent:-12px;margin:0.1em 0;}.md-li::before{content:'• ';color:var(--text-muted);}.md-ol::before{content:'';}.md-n{color:var(--text-muted);margin-right:6px;}.md-q{border-left:3px solid var(--line2);padding-left:10px;color:var(--text-2);margin:0.2em 0;}.md-hr{border:0;border-top:1px solid var(--line);margin:0.7em 0;}.md-t{border-collapse:collapse;margin:0.4em 0;}.md-t th,.md-t td{border:1px solid var(--line);padding:3px 9px;text-align:left;font-size:12.5px;}.md-t th{background:var(--raise);}.md-doc{padding:10px 14px;background:var(--well);border:1px solid var(--line);border-radius:var(--radius-md);max-height:460px;overflow:auto;line-height:1.55;}.md-doc code,.tx code{background:var(--raise);border-radius:var(--radius-sm);padding:0 4px;font-size:0.92em;}.md-doc pre{background:var(--well);border:1px solid var(--line);border-radius:6px;padding:8px 10px;white-space:pre-wrap;}.md-doc pre code,.tx pre code{background:none;padding:0;border-radius:0;font-size:inherit;}.md-front{margin-bottom:10px;border-collapse:collapse;}.md-front td{padding:2px 14px 2px 0;font-size:12.5px;border:0;vertical-align:top;}.md-front td:first-child{color:var(--text-muted);}.md-tele{color:var(--text-muted);font-size:11.5px;margin-bottom:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.df-text{background:var(--well);border:1px solid var(--line);border-radius:var(--radius-md);padding:10px 12px;font-size:var(--font-size-md);white-space:pre-wrap;max-height:420px;overflow:auto;margin:0;}.df-tog{margin-left:auto;font-size:var(--font-size-sm);color:var(--accent);border:1px solid var(--line2);border-radius:var(--radius-pill);padding:0 9px;cursor:pointer;background:none;}.df-tog:hover{background:var(--accent-bg);}.pv{color:var(--code-constant);background:color-mix(in srgb,var(--code-constant) 12%,transparent);border-radius:var(--radius-sm);padding:0 3px;}.pv.pc{color:var(--code-keyword);background:color-mix(in srgb,var(--code-keyword) 12%,transparent);}.hl{font-family:var(--mono);}.hl-k{color:var(--code-keyword);}.hl-const{color:var(--code-constant);font-style:italic;}.hl-s{color:var(--code-string);}.hl-doc{color:var(--code-string);font-style:italic;opacity:0.85;}.hl-c{color:var(--code-comment);font-style:italic;}.hl-n{color:var(--code-number);}.hl-d{color:var(--code-function);}.hl-f{color:var(--code-function);font-weight:600;}.hl-cls{color:var(--code-type);font-weight:700;}.hl-t{color:var(--code-type);}.hl-b{color:var(--code-name);}.hl-key{color:var(--code-name);}.hl-tag{color:var(--code-keyword);}.hl-attr{color:var(--code-name);}.hl-meta{color:var(--code-comment);font-weight:600;}.hl-ins{color:var(--status-done);}.hl-del{color:var(--status-failed);}`,Kr=k` .jdur{position:relative;display:block;height:6px;border-radius:3px;background:var(--track);overflow:hidden;margin-top:2px;}.jdur i{position:absolute;left:0;top:0;bottom:0;border-radius:3px;background:var(--meter);}.jdur i.bad{background:var(--status-failed);}`,qr=k` .drv-facts{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:8px;font-size:var(--font-size-md);}.drv-facts i{font-style:normal;color:var(--text-muted);margin-right:5px;font-size:var(--font-size-sm);}`,Jr=k` .mark{width:var(--m);height:var(--m);padding:0;margin:0;border:0;border-radius:50%;background:var(--tone,var(--status-done));opacity:0.9;cursor:pointer;position:relative;transition:opacity 0.2s,transform 0.15s,background 0.3s;}.mark:not([data-tone]){--tone:initial;}.mark[data-tone='muted']{opacity:0.55;}.mark[data-tone='running']{opacity:1;animation:breathe 1.4s ease-in-out infinite;}.mark[data-shape='ring']{background:transparent;box-shadow:inset 0 0 0 1.5px var(--tone,var(--line2));}.mark[data-shape='hatched']{border-radius:2px;background:repeating-linear-gradient(135deg,transparent 0 2px,color-mix(in srgb,var(--tone) 55%,transparent) 2px 3px);box-shadow:inset 0 0 0 1.5px var(--tone);opacity:1;}.mark[data-shape='half']{background:linear-gradient(0deg,var(--tone) 50%,transparent 50%);box-shadow:inset 0 0 0 1.5px var(--tone);opacity:1;}.mark[data-shape='square']{border-radius:2px;opacity:1;}.big .mark[data-tone='failed']::after{content:'✕';position:absolute;inset:0;display:grid;place-items:center;color:var(--bg);font-size:calc(var(--m) - 3px);line-height:1;font-weight:700;}.mark[data-n]::after{content:'';position:absolute;inset:32%;border-radius:50%;background:var(--card);}.big .mark[data-n]::after{content:attr(data-n);inset:0;display:grid;place-items:center;border-radius:0;background:none;font:700 max(7px,calc(var(--m) - 4px)) / 1 var(--sans);color:var(--bg);letter-spacing:-0.5px;}.big .mark:is(:not([data-tone]),[data-tone='attention'],[data-tone='muted'])[data-n]::after{color:var(--text);}.mark:hover,.mark:focus-visible{transform:scale(1.4);outline:var(--focus-width) solid var(--text);outline-offset:1px;z-index:2;}.mark.sel{outline:var(--focus-width) solid var(--accent);outline-offset:2px;z-index:2;}@media (prefers-reduced-motion:reduce){.mark{transition:none;}.mark[data-tone='running']{animation:none;background:linear-gradient(90deg,var(--status-running) 50%,transparent 50%);box-shadow:inset 0 0 0 1.5px var(--status-running);}}`,V=[Wr,Br,Hr,Vr,Lr,Rr,zr];function Yr(e){switch(e){case`done`:return`done`;case`failed`:return`failed`;case`attention`:return`pending`;default:return null}}var Xr=e=>(e.mark===void 0||!0===e.mark?Yr(e.tone??`neutral`):e.mark||null)??M;function Zr(e){let t=e.tone??`neutral`;return A`<span class="pill ${e.cls??``}" part="pill tone-${t}" data-tone=${L(t)} data-mark=${Xr(e)} title=${e.title||M}>${e.text}</span>`}function Qr(e){let t=e.tone??`neutral`;return A`<span class="jstop ${e.cls??``}" part="status tone-${t}" data-tone=${L(t)} data-mark=${Xr(e)} title=${e.title||M}>${e.text}</span>`}function $r(e,t){let n=t.tone??`neutral`;return A`<span class="${e} ${t.cls??``}" data-tone=${L(n)} data-mark=${Xr(t)} title=${t.title||M}>${t.text}</span>`}var ei=e=>(...t)=>({_$litDirective$:e,values:t}),ti=class{constructor(e){}get _$AU(){return this._$AM._$AU}_$AT(e,t,n){this._$Ct=e,this._$AM=t,this._$Ci=n}_$AS(e,t){return this.update(e,t)}update(e,t){return this.render(...t)}},ni=`important`,ri=` !`+ni,ii=ei(class extends ti{constructor(e){if(super(e),e.type!==1||e.name!==`style`||e.strings?.length>2)throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.")}render(e){return Object.keys(e).reduce((t,n)=>{let r=e[n];return r==null?t:t+`${n=n.includes(`-`)?n:n.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,`-$&`).toLowerCase()}:${r};`},``)}update(e,[t]){let{style:n}=e.element;if(this.ft===void 0)return this.ft=new Set(Object.keys(t)),this.render(t);for(let e of this.ft)t[e]??(this.ft.delete(e),e.includes(`-`)?n.removeProperty(e):n[e]=null);for(let e in t){let r=t[e];if(r!=null){this.ft.add(e);let t=typeof r==`string`&&r.endsWith(ri);e.includes(`-`)||t?n.setProperty(e,t?r.slice(0,-11):r,t?ni:``):n[e]=r}}return Qt}});function ai(e,t={}){return A`<div class="legend ${t.cls??``}" part="legend" role="list" aria-label=${t.label||M}>
8
8
  ${e.map(e=>A`<span role="listitem" aria-hidden=${e.decorative?`true`:M}>${(e=>e.icon??(e.swatch||e.tone||e.shape||e.cls?A`<i class=${e.cls||M} data-tone=${L(e.tone)} data-shape=${e.shape??M} style=${e.swatch?ii({background:e.swatch}):M}></i>`:M))(e)}${e.label}</span>`)}
@@ -321,46 +321,46 @@ ${n===null?M:r.length?A`<details class="rawfold"><summary>${e.s.fullText}</summa
321
321
  `)[0]||``).trim();return n.length>100?`${n.slice(0,100)}…`:n}function Y(e){let t=e??0;return t<1e3?String(Math.round(t)):t<1e4?`${(t/1e3).toFixed(1).replace(/\.0$/,``)}k`:t<1e6?`${Math.round(t/1e3)}k`:`${(t/1e6).toFixed(1).replace(/\.0$/,``)}M`}function X(e){return e==null?`—`:e===0?`$0`:e<.001?`<$0.001`:e<1?`$${e.toFixed(3)}`:`$${e.toFixed(2)}`}function ts(e){let t=new Set(e.map(e=>e.usage_unknown??``));return t.has(`tokens`)?`tokens`:t.has(`calls`)?`calls`:``}function ns(e){return e===`calls`?{label:D(`Tokens per API call unknown`),tip:D(`Only the token totals that the coding agent printed are known, not the tokens of each API call (usage_unknown)`)}:e===`tokens`?{label:D(`Tokens unknown`),tip:D(`The tokens of an agent session that ran are not known (usage_unknown)`)}:null}function rs(e){let t=new Map;for(let n of e)for(let[e,r]of Object.entries(n.unread_events??{}))t.set(e,(t.get(e)??0)+r);return[...t].map(([e,t])=>`${e} ×${t}`).join(`, `)}function is(e){switch(e){case`done`:return D(`done`,{id:`outcome-done`});case`recovered`:return D(`done after retrying`);case`partial`:return D(`partly done`,{id:`outcome-partial`});case`failed`:return D(`failed`);case`not_started`:return D(`not started`);case`running`:return D(`running`);case`waiting`:return D(`waiting`);case`skipped`:return D(`skipped`);case`cancelled`:return D(`cancelled`,{id:`outcome-cancelled`})}}var as=(e,t)=>e!==`waiting`||t?is(e):D(`not run`);function Z(e,t){switch(e){case`done`:return D(E`${t} done`);case`recovered`:return D(E`${t} done after retrying`);case`partial`:return D(E`${t} partly done`);case`failed`:return D(E`${t} failed`);case`not_started`:return D(E`${t} not started`);case`running`:return D(E`${t} running`);case`waiting`:return D(E`${t} waiting`);case`skipped`:return D(E`${t} skipped`);case`cancelled`:return D(E`${t} cancelled`);case`not_run`:return D(E`${t} not run`)}}function os(e,t){return e>0?t:`neutral`}function ss(e,t){return e===`running`?`running`:e===`unresponsive`?`attention`:t?.total?t.failed?`failed`:t.not_started||t.partial?`attention`:`done`:`neutral`}var cs={completed:`done`,partial:`attention`,invalid_input:`attention`,skipped:`muted`,cancelled:`muted`,timeout:`failed`,max_turns:`failed`,budget:`failed`,context_budget:`failed`,stalled:`failed`,auth_failed:`failed`,api_error:`failed`,rate_limited:`failed`,refused:`failed`,aborted:`failed`,denied:`failed`,error:`failed`,no_output:`failed`,launch_failed:`failed`,invalid_output:`failed`,credential_mismatch:`failed`},ls=(Object.keys(cs),e=>e!=null&&Object.hasOwn(cs,e));function us(e){return ls(e)?cs[e]:`failed`}function ds(e){switch(e){case`done`:case`recovered`:return`done`;case`failed`:return`failed`;case`partial`:case`not_started`:return`attention`;case`running`:return`running`;case`waiting`:case`skipped`:case`cancelled`:return`muted`}}function fs(e){switch(e){case`valid`:return`done`;case`invalid`:case`failed`:return`failed`;case`refused`:return`attention`;case`running`:return`running`;case`pending`:return`muted`;case null:case void 0:return`neutral`}}var ps=e=>e===`waiting`?`pending`:Yr(ds(e));function Q(e,t){return e?ls(e)?function(e,t){switch(e){case`completed`:return D(`done`,{id:`stop-completed`});case`skipped`:return D(`skipped`);case`cancelled`:return D(`cancelled`,{id:`stop-cancelled`});case`partial`:return D(`partly done`,{id:`stop-partial`});case`invalid_input`:{let e=new Set(Re(t).map(e=>e.problem));return e.size===1&&e.has(`missing`)?D(`not started (input missing)`):e.size===1&&e.has(`checks`)?D(`not started (input failed checks)`):e.size===1&&e.has(`failed`)?D(`not started (earlier task failed)`):e.size===2&&e.has(`missing`)&&e.has(`checks`)?D(`not started (input missing and input failed checks)`):D(`not started`,{id:`stop-invalid-input`})}case`invalid_output`:return D(`failed checks`);case`timeout`:return D(`timed out`);case`max_turns`:return D(`turn limit reached`);case`budget`:return D(`cost limit reached`);case`context_budget`:return D(`context limit reached`);case`stalled`:return D(`stalled (no events)`);case`auth_failed`:return D(`authentication failed`);case`api_error`:return D(`API error`);case`rate_limited`:return D(`rate limited`);case`refused`:return D(`refused by the model`);case`aborted`:return D(`aborted`);case`denied`:return D(`permission denied`);case`error`:return D(`error`);case`no_output`:return D(`ended without a result`);case`launch_failed`:return D(`agent session did not start`);case`credential_mismatch`:return D(`wrong identity used`)}}(e,t):D(E`unknown (${e})`):`—`}function ms(e,t,n){return t===`failed`?D(n?E`input ${e} is the output of failed task ${n.name}`:E`input ${e} is the output of a failed task`):t===`checks`?D(n?E`input ${e} from ${n.name} failed checks`:E`input ${e} failed checks`):n?n.outcome===`failed`?D(E`input ${e} is missing because ${n.name} failed`):n.outcome===`not_started`?D(E`input ${e} is missing because ${n.name} did not start`):n.outcome&&g(n.outcome)?D(E`input ${e} from ${n.name} is missing`):D(E`input ${e} is missing because ${n.name} did not finish`):D(E`input ${e} is missing`)}function hs(e,t,n,r){let i=e.attempts[e.attempts.length-1];if(i?.stop===`invalid_input`){let e=Re(i.reason)[0];if(!e)return T(i.reason,n);let a=e.producer||r?.(e.path)||``,o=a?t.get(a):void 0;return ms(T(e.path,n),e.problem,o?{name:J(o),outcome:o.outcome}:void 0)}let a=e.cause?t.get(e.cause):void 0;return a?D(E`earlier task ${J(a)} failed`):``}var gs=()=>D(`An attempt after a failed attempt (retries)`),_s=e=>D(E`Attempt ${(e??0)+1}`);function vs(e){let t=ce(e),n=e.map((e,n)=>t[n]?K(_s(e.attempt),D(`resumed run`)):_s(e.attempt));return n.map((t,r)=>n.indexOf(t)===n.lastIndexOf(t)?t:K(t,G(e[r]?.ts)))}function ys(e){return e<=0?``:D(e===1?`1 correction`:E`${e} corrections`)}var bs=e=>D(E`Pass ${e}`),xs=e=>D(e<=1?`1 pass`:E`up to ${e} passes`),Ss=e=>D(e<=1?`1 pass`:E`${e} passes`),Cs=e=>e.map(([e,t])=>D(e<=1?E`1 pass: ${t}`:E`${e} passes: ${t}`)).join(` | `),ws=()=>D(`loop`),Ts=e=>e?e===`ambient`?D(`default`):e:``,Es=e=>e===`ambient`?D(`local credentials (ambient)`):``,Ds=e=>e==null?`—`:`${Math.round(e)}%`;function Os(e,t){if(!e||e===`allowed`)return``;let n=e.split(`,`),r=n.some(e=>[`rejected`,`exhausted`,`quota`,`blocked`].includes(e))?D(`limit reached`):n.every(e=>[`allowed_warning`,`warning`].includes(e))?D(`near the limit`):D(E`unknown (${e})`);return t?K(r,ks(t)):r}function ks(e){if(e===`five_hour`)return D(`5-hour`);if(e===`seven_day`)return D(`weekly`);let t=/^(five_hour|seven_day)_(.+)$/.exec(e);return t?t[1]===`five_hour`?D(E`5-hour (${t[2]})`):D(E`weekly (${t[2]})`):e}var As=e=>D(E`account ${e.slice(0,6)}`),js=e=>K(D(E`weekly ${Ds(e.seven_day_pct)}`),D(E`5-hour ${Ds(e.five_hour_pct)}`));function Ms(e){let t=[e.seven_day_resets_at?D(E`Weekly usage ${Ds(e.seven_day_pct)} (resets ${G(e.seven_day_resets_at,!0)})`):D(E`Weekly usage ${Ds(e.seven_day_pct)}`),e.five_hour_resets_at?D(E`5-hour usage ${Ds(e.five_hour_pct)} (resets ${G(e.five_hour_resets_at,!0)})`):D(E`5-hour usage ${Ds(e.five_hour_pct)}`),...Object.entries(e.windows??{}).filter(([e])=>e!==`five_hour`&&e!==`seven_day`).map(([e,t])=>D(E`${Zo(ks(e))} usage ${Ds(t.pct)}`)),D(E`Reported ${G(e.observed_at,!0)}`)],n=Os(e.status,e.status_window);return n&&t.push(D(E`Status: ${n}`)),e.threshold_pct!=null&&t.push(D(E`Warning threshold: ${Ds(e.threshold_pct)}`)),e.overage_status&&t.push(D(E`Extra usage: ${function(e){return e===`allowed`||e===`allowed_warning`?D(`allowed`):e===`rejected`?D(`not allowed`):e}(e.overage_status)}`)),e.account&&t.push(D(E`Account: ${e.account}`)),t.join(`
322
322
  `)}var Ns=e=>K(js(e),Ts(e.credential));function Ps(e){let t=e[0];if(!t)return``;let n=e.length-1;return n?K(Ns(t.last),D(n===1?`1 more account`:E`${n} more accounts`)):js(t.last)}var Fs=e=>e.map(e=>e.credential?`${Ts(e.credential)}\n${Ms(e.last)}`:Ms(e.last)).join(`
323
323
 
324
- `);function Is(e,t){return D(e===`seven_day`?E`Weekly usage ${Ds(t)}`:E`5-hour usage ${Ds(t)}`)}var Ls=e=>e==null?`—`:`${Number(e.toFixed(2))}%`,Rs=e=>D(E`limit ${Ls(e)}`),zs=e=>K(D(`Authentication failed`),e.model??``);function Bs(e){return e.stop?zs(e):e.rule?D(E`Usage rule: ${e.rule}`):K(Is(e.window??``,e.pct),Rs(e.cap),e.until?D(E`until ${G(e.until,!0)}`):``)}var Vs=e=>K(D(E`Identity ${Ts(e.credential)} paused`),Bs(e));function Hs(e){let t=new Set;return e.filter(e=>!t.has(e.credential)&&t.add(e.credential))}function Us(e,t=``,n=``){let r=n?n.slice(n.lastIndexOf(`.`)+1):``;switch(e?.cause){case`deadline`:return D(r?E`Past the deadline of ${r}`:`Past the deadline`);case`grace_window`:return D(r?E`Past the deadline of ${r} and its finishing time`:`Past the deadline and its finishing time`);case`cannot_finish`:return K(D(r?E`Cannot finish before the deadline of ${r}`:`Cannot finish before the deadline`),e.need_s==null?``:D(E`needs ${B(e.need_s)}`),e.left_s==null?``:D(E`${B(e.left_s)} left`));case`dependency_not_queued`:return D(`An earlier task was never scheduled`);case`dependency_deferred`:return D(`An earlier task was not run`);case`rest`:{let n=Hs(e.rests??[]);return n.length?n.length===1?Vs(n[0]):K(Vs(n[0]),D(E`+${n.length-1} paused identities`)):t}default:return t}}var Ws=e=>D(E`${e.model||e.route||`—`} (identity paused)`);function Gs(e){if(!e||e.five_hour_pct==null&&e.seven_day_pct==null)return``;let t=K(e.seven_day_pct==null?``:D(E`weekly ${Ls(e.seven_day_pct)}`),e.five_hour_pct==null?``:D(E`5-hour ${Ls(e.five_hour_pct)}`));return D(E`Limits: ${t}`)}var Ks=()=>D(`A new agent session on the next model after a failed one (Router hops)`),qs=e=>e.model||e.route||`—`;function Js(e,t,n){let r=[...new Map((n??[]).map(e=>[e.route||e.model,e])).values()];if(!e||e.length+r.length<2||!e.length)return``;let i=[...r.map(Ws),...e.map((t,n)=>n<e.length-1?D(E`${qs(t)} (${Q(t.stop)})`):qs(t))].join(` → `);return t==null?i:`${i} | ${B(t)}`}function Ys(e){switch(e){case`valid`:return D(`passed`);case`invalid`:return D(`failed checks`);case`refused`:return D(`not written (task not started)`);case`failed`:return D(`not written (task failed)`);case`running`:return D(`not written yet (task running)`);case`pending`:return D(`not written yet (task waiting)`)}}function Xs(e){return e===`failed`?D(`The task failed before it wrote a file that passes its checks`):``}var Zs=()=>D(`Another round in the same agent session after failed checks (rounds)`);function Qs(e,t){let n=(e??1)-1;return n<1?``:D(t?n===1?`after 1 correction`:E`after ${n} corrections`:n===1?`1 correction`:E`${n} corrections`)}function $s(e,t,n){let r=e.errors??[],i=Re(`invalid input: ${r.map(e=>e.replace(/^invalid input:\s*/,``)).join(`; `)}`)[0];if(!i)return r[0]?Zo(T(r[0],t)):``;let a=n?.(i.path);return Zo(ms(T(i.path,t),i.problem,a))}var ec=(e,t)=>e.ready?Ie(e.journal):t.quota??[],tc=e=>D(E`Agent sessions played from the recordings in ${e} (replay)`),nc=e=>!!e?.replay&&!e.stub,rc=()=>D(`replayed`),ic=()=>D(`Played from a recording (replayed)`);function ac(e){return e?.replay&&nc(e)?{text:D(`replay and new sessions`),title:(t=e.replay,D(E`Agent sessions played from the recordings in ${t}, and new agent sessions recorded there (replay, record_missing)`))}:e?.replay?{text:D(`replay`),title:tc(e.replay)}:e?.stub?{text:D(`stub agent`),title:D(`Tasks played by the stub agent with scripted replies (stub)`)}:null;var t}var oc=()=>D(`no report from host`),sc=e=>e.up?D(`up`):D(`no report`),cc=e=>e?.last_seen?D(E`Last report ${G(e.last_seen,!0)}`):``,lc=e=>D(e?E`Host ${e}`:`No host id`),uc=e=>D(e===1?`1 run`:E`${e} runs`);function dc(e){let t=e.filter(e=>!e.up).length;return K(e.length===1?D(`1 host`):D(E`${e.length} hosts`),t?D(E`${t} with no report`):``)}var fc=e=>({empty:e,sortAscending:D(`Sort ascending`),sortDescending:D(`Sort descending`)}),pc=()=>D(`Names this task holds while it runs (claims)`);function mc(e){switch(e){case`running`:return D(`running`,{id:`service-running`});case`stopped`:return D(`stopped`);case`failed`:return D(`did not start`);default:return D(`stop not recorded`)}}var hc=()=>D(`A deadline of its own (time_box)`),gc=()=>D(`Custom column (row_extras)`);function _c(e){if(e==null||e===``)return`—`;if(typeof e==`string`)return e;if(typeof e==`number`||typeof e==`boolean`)return String(e);try{return JSON.stringify(e)??`—`}catch{return`—`}}function vc(e,t){let n=e;return t.filter(e=>n[e]!==null&&n[e]!==void 0&&n[e]!==``).map(e=>[e,_c(n[e])])}function yc(e){switch(e){case`cost`:return D(`Cost`);case`tokens`:return D(`Tokens`);case`time`:return D(`Time`);case`sessions`:return D(`Agent sessions`)}}function bc(e){switch(e){case`cost`:return D(`Reported by the coding agent`);case`tokens`:return D(`Input, output, cache read and cache write`);case`time`:return D(`Time of the agent sessions, summed`);case`sessions`:return D(`Agent sessions started on the model`)}}function xc(e,t){switch(t){case`cost`:return e.cost_usd===null||e.cost_usd===void 0?`—`:X(e.cost_usd);case`tokens`:return Y(ke(e));case`time`:return B(e.wall_s??0);case`sessions`:return String(e.sessions)}}function Sc(e){let t=100*e;return t>0&&t<.05?`<0.1%`:Math.abs(t)<10?Math.round(10*t)/10+`%`:`${Math.round(t)}%`}var Cc=e=>String(Math.round(100*e)/100);function wc(e){switch(e){case`usd`:return X;case`pct`:return Sc;case`duration`:return B;case`tokens`:return Y;default:return Cc}}function Tc(e,t){return e==null||e===``?`—`:t===`datetime`&&typeof e==`string`?G(e,!0)||e:typeof e==`number`?wc(t)(e):typeof e==`boolean`?String(e):typeof e==`string`?e:JSON.stringify(e)}var Ec=e=>D(E`Exported ${G(e.exported_at,!0)}`);function Dc(e){return e===`transcripts`?D(`transcripts`):e===`processes`?D(`processes`):e}var Oc=e=>D(E`Not in this export: ${q(e.left_out.map(Dc))}`),kc=()=>D(`not in this export`),Ac=()=>D(`Trends`),jc=()=>D(`Totals of the runs in a period`);function Mc(e,t=An()){let n=new Date(`${e}T12:00:00Z`);return Number.isNaN(n.getTime())?e:new Intl.DateTimeFormat(t,{month:`short`,day:`numeric`,timeZone:`UTC`}).format(n)}var Nc=e=>D(E`${e} days`);function Pc(e=An()){let t=new Intl.DateTimeFormat(e,{weekday:`short`,timeZone:`UTC`});return Array.from({length:7},(e,n)=>t.format(new Date(Date.UTC(2026,9,12+n,12))))}var Fc=()=>({runs:D(`Runs`,{id:`trends-runs`}),attempts:D(`Attempts`),done:D(`Done`),cost:D(`Cost`),tokens:D(`Tokens`),time:D(`Time`),costByDay:D(`Cost by day`),costByDayTip:D(`Reported by the coding agent, on the day each attempt ended`),kinds:D(`Kinds`),kind:D(`Kind`),group:D(`Group`),tasks:D(`Tasks`),tasksDone:D(`Tasks done`),partial:D(`Partly done`,{id:`trends-partial`}),medianTime:D(`Median time`),totalTime:D(`Total time`),models:D(`Models`),model:D(`Model`),sessions:D(`Agent sessions`),calls:D(`API calls`),input:D(`Input`),output:D(`Output`),cacheRead:D(`Cache read`),cacheWrite:D(`Cache write`),outcomes:D(`Attempts not done`),outcome:D(`Outcome`),denials:D(`Denied tool calls`),toolCalls:D(`Tool calls`),pythonKinds:D(`Python tasks`),tool:D(`Tool`),usage:D(`Subscription usage`),usageTip:D(`The highest reading of each day`),deferred:D(`Not run`),cause:D(`Cause`),task:D(`Task`),when:D(`When`),rests:D(`Paused identities`),identity:D(`Identity`),event:D(`Event`),starts:D(`Run starts`),startsTip:D(`By weekday and hour, in the period's time zone`),run:D(`Run`),started:D(`Started`),trendPanels:D(`Custom views`)}),Ic=(e,t)=>`${e} | ${t}`,Lc=e=>{let t=/^(\S+) rests\b/.exec(e)?.[1];return D(t?E`Identity ${t} paused`:`Identity paused`)},Rc=(e,t)=>`${e} | ${t}`,zc=e=>e?D(E`Priority ${e}`):``,Bc=()=>D(`Tie-breaker in the queue's order (priority)`),Vc=()=>D(`Peak context`),Hc=()=>D(`Largest input of one API call, cache read and cache write included (peak_context)`);function Uc(e){let t=e.usage?.peak_context;return t==null?``:D(E`Peak context: ${function(e,t){let n=t?Math.round(100*e/t):null;return K(Y(e),n===null?``:D(E`${n}% of the context limit ${Y(t)}`))}(t,e.context_budget)}`)}function Wc(e){let t=e.usage?.peak_context,n=e.context_budget;return D(t!=null&&n?E`near the context limit (${Math.round(100*t/n)}%)`:`near the context limit`)}var Gc=()=>D(`Peak context above the warning threshold (context_warned)`),Kc=(e,t)=>t?`${e} / ${t}`:e,qc=e=>K(Kc(e.agent,e.model),e.credential?D(E`identity ${Ts(e.credential)}`):``,e.reason,e.kinds.length?D(E`kinds ${q(e.kinds)}`):``),Jc=e=>K(e.kind,`${Kc(e.from_agent,e.from_model)} → ${Kc(e.to_agent,e.to_model)}`),Yc=()=>D(`No available model`),Xc=()=>D(`Must stay unchanged`),Zc=()=>D(`Parts of the output file kept as before the task (preserve)`),Qc=()=>D(`Safety stops`),$c=e=>D(e===1?`1 safety stop`:E`${e} safety stops`),el=()=>D(`A safety classifier stopped part of the agent session, and the session went on (safety_stops)`);function tl(e){switch(e){case`response`:return D(`model response`);case`tool`:return D(`tool request`);case`unread`:return D(`unrecognized`);default:return e||`—`}}var nl=e=>K(tl(e.part),e.model,e.category,e.tool,G(e.ts,!0));function rl(e){switch(e){case`given_from`:return D(`given output`,{id:`edge-given`});case`after`:return D(`runs after`,{id:`edge-after`});case`created_from`:return D(`created after result`,{id:`edge-created`})}}function il(e){switch(e){case`passed`:return D(`same content at the start`);case`refused`:return D(`changed before the start`);case`not_checked`:return D(`not checked`,{id:`input-file-not-checked`})}}function al(e,t){let n=e[t];if(!n?.rerun)return null;let r=n.fingerprint_parts??{},i=e.slice(0,t).reverse().find(e=>Object.keys(e.fingerprint_parts??{}).length)?.fingerprint_parts??{},a=Object.keys(r).length&&Object.keys(i).length?[...new Set([...Object.keys(r),...Object.keys(i)])].filter(e=>r[e]!==i[e]):[];return{text:n.rerun,changed:a,divergence:n.rerun.startsWith(`divergence`)}}function ol(e){switch(e){case`definition`:return D(`definition`,{id:`part-definition`});case`params`:return D(`params`,{id:`part-params`});case`outside`:return D(`outside state`);case`output_of`:return D(`the file it fills in`);case`input_files`:return D(`input files`,{id:`part-input-files`});default:return e}}var sl=()=>D(`divergence`);function cl(e){return K(D(`Ran again after a resume`),e.divergence?sl():``,e.changed.length?D(E`Changed: ${q(e.changed.map(ol))}`):e.divergence?``:e.text)}function ll(e,t=``){let n=e.raised_at;return n?`${T(n.file,t)}:${n.line}`:``}function ul(e,t=``){let n=(e=>e.slice(e.lastIndexOf(`.`)+1)||e)(e.function),r=ll(e,t);return D(r?E`This failure stopped ${n} at ${r}`:E`This failure stopped ${n}`)}function dl({url:e,failure:t,status:n,type:r}){let i=t===`network`?D(`network error, no response`):t===`status`?D(E`the response status is ${n}`):r.includes(`html`)?D(`the response is HTML, not JSON`):D(`the response is not JSON`);return D(E`No monitor API at ${e}: ${i}`)}function fl(e,t){let n=J(e),r=T(e.reason,t).slice(0,110);if(e.stop===`invalid_input`)return[`attention`,D(E`${n}: not started`),r];if(se(e))return[`failed`,D(E`${n}: ${Q(e.stop)}`),r];if(e.stop===`partial`)return[`attention`,D(E`${n}: ${Q(e.stop)}`),r];let i=Js(e.hops,e.wall_s,e.skipped_hops);return i?[`agent`,D(E`${n}: model switch`),i.slice(0,110)]:[`done`,D(E`${n}: done`),K(B(e.wall_s),e.model)]}z(`cae-segmented`,Ei);var pl={done:`✓`,failed:`✕`,attention:`◌`,running:`●`,agent:`✦`},ml=class extends N{constructor(...e){super(...e),this.toasts=[],this.next=0}static{this.styles=[V,k` :host{position:fixed;right:18px;bottom:18px;display:flex;flex-direction:column;gap:8px;z-index:60;pointer-events:none;}.toast{pointer-events:auto;min-width:240px;max-width:380px;padding:10px 14px;border-radius:11px;background:var(--panel2);border:1px solid var(--line2);box-shadow:0 18px 40px color-mix(in srgb,var(--shadow) 60%,transparent);display:flex;gap:10px;align-items:flex-start;animation:toast-in 0.35s var(--ease) both;}.toast.out{animation:toast-out 0.35s var(--ease) both;}.ti{font-size:16px;line-height:1.2;}b{display:block;font-size:12.5px;}span.sub{font-size:11.5px;color:var(--text-muted);}.ti{color:var(--text-muted);}.toast[data-tone] .ti{color:var(--tone);}.toast[data-tone='failed'],.toast[data-tone='attention']{border-color:color-mix(in srgb,var(--tone) 50%,var(--line2));}.agent .ti{color:var(--agent);}`]}show(e,t,n=``){let r={id:this.next++,kind:e,title:t,sub:n,out:!1};this.toasts=[...this.toasts,r].slice(-4),setTimeout(()=>{this.toasts=this.toasts.map(e=>e.id===r.id?{...e,out:!0}:e),setTimeout(()=>this.toasts=this.toasts.filter(e=>e.id!==r.id),400)},5200)}render(){let e=e=>H(this.toasts.filter(t=>!t.out&&t.kind===`failed`===e),e=>e.id,e=>A`<p>${K(e.title,e.sub)}</p>`);return A`<div class="sr" role="status" aria-live="polite">${e(!1)}</div>
324
+ `);function Is(e,t){return D(e===`seven_day`?E`Weekly usage ${Ds(t)}`:E`5-hour usage ${Ds(t)}`)}var Ls=e=>e==null?`—`:`${Number(e.toFixed(2))}%`,Rs=e=>D(E`limit ${Ls(e)}`),zs=e=>K(D(`Authentication failed`),e.model??``);function Bs(e){return e.stop?zs(e):e.rule?D(E`Usage rule: ${e.rule}`):K(Is(e.window??``,e.pct),Rs(e.cap),e.until?D(E`until ${G(e.until,!0)}`):``)}var Vs=e=>K(D(E`Identity ${Ts(e.credential)} paused`),Bs(e));function Hs(e){let t=new Set;return e.filter(e=>!t.has(e.credential)&&t.add(e.credential))}function Us(e,t=``,n=``){let r=n?n.slice(n.lastIndexOf(`.`)+1):``;switch(e?.cause){case`deadline`:return D(r?E`Past the deadline of ${r}`:`Past the deadline`);case`grace_window`:return D(r?E`Past the deadline of ${r} and its finishing time`:`Past the deadline and its finishing time`);case`cannot_finish`:return K(D(r?E`Cannot finish before the deadline of ${r}`:`Cannot finish before the deadline`),e.need_s==null?``:D(E`needs ${B(e.need_s)}`),e.left_s==null?``:D(E`${B(e.left_s)} left`));case`dependency_not_queued`:return D(`An earlier task was never scheduled`);case`dependency_deferred`:return D(`An earlier task was not run`);case`rest`:{let n=Hs(e.rests??[]);return n.length?n.length===1?Vs(n[0]):K(Vs(n[0]),D(E`+${n.length-1} paused identities`)):t}default:return t}}var Ws=e=>D(E`${e.model||e.route||`—`} (identity paused)`);function Gs(e){if(!e||e.five_hour_pct==null&&e.seven_day_pct==null)return``;let t=K(e.seven_day_pct==null?``:D(E`weekly ${Ls(e.seven_day_pct)}`),e.five_hour_pct==null?``:D(E`5-hour ${Ls(e.five_hour_pct)}`));return D(E`Limits: ${t}`)}var Ks=()=>D(`A new agent session on the next model after a failed one (Router hops)`),qs=e=>e.model||e.route||`—`;function Js(e,t,n){let r=[...new Map((n??[]).map(e=>[e.route||e.model,e])).values()];if(!e||e.length+r.length<2||!e.length)return``;let i=[...r.map(Ws),...e.map((t,n)=>n<e.length-1?D(E`${qs(t)} (${Q(t.stop)})`):qs(t))].join(` → `);return t==null?i:`${i} | ${B(t)}`}function Ys(e){switch(e){case`valid`:return D(`passed`);case`invalid`:return D(`failed checks`);case`refused`:return D(`not written (task not started)`);case`failed`:return D(`not written (task failed)`);case`running`:return D(`not written yet (task running)`);case`pending`:return D(`not written yet (task waiting)`)}}function Xs(e){return e===`failed`?D(`The task failed before it wrote a file that passes its checks`):``}var Zs=()=>D(`Failed checks sent back to the same agent session, within its round or in a correction round (hook_errors, rounds)`),Qs=()=>D(`Another round in the same agent session after failed checks (rounds)`);function $s(e,t){let n=(e??1)-1;return n<1?``:D(t?n===1?`after 1 correction round`:E`after ${n} correction rounds`:n===1?`1 correction round`:E`${n} correction rounds`)}function ec(e,t,n){let r=e.errors??[],i=Re(`invalid input: ${r.map(e=>e.replace(/^invalid input:\s*/,``)).join(`; `)}`)[0];if(!i)return r[0]?Zo(T(r[0],t)):``;let a=n?.(i.path);return Zo(ms(T(i.path,t),i.problem,a))}var tc=(e,t)=>e.ready?Ie(e.journal):t.quota??[],nc=e=>D(E`Agent sessions played from the recordings in ${e} (replay)`),rc=e=>!!e?.replay&&!e.stub,ic=()=>D(`replayed`),ac=()=>D(`Played from a recording (replayed)`);function oc(e){return e?.replay&&rc(e)?{text:D(`replay and new sessions`),title:(t=e.replay,D(E`Agent sessions played from the recordings in ${t}, and new agent sessions recorded there (replay, record_missing)`))}:e?.replay?{text:D(`replay`),title:nc(e.replay)}:e?.stub?{text:D(`stub agent`),title:D(`Tasks played by the stub agent with scripted replies (stub)`)}:null;var t}var sc=()=>D(`no report from host`),cc=e=>e.up?D(`up`):D(`no report`),lc=e=>e?.last_seen?D(E`Last report ${G(e.last_seen,!0)}`):``,uc=e=>D(e?E`Host ${e}`:`No host id`),dc=e=>D(e===1?`1 run`:E`${e} runs`);function fc(e){let t=e.filter(e=>!e.up).length;return K(e.length===1?D(`1 host`):D(E`${e.length} hosts`),t?D(E`${t} with no report`):``)}var pc=e=>({empty:e,sortAscending:D(`Sort ascending`),sortDescending:D(`Sort descending`)}),mc=()=>D(`Names this task holds while it runs (claims)`);function hc(e){switch(e){case`running`:return D(`running`,{id:`service-running`});case`stopped`:return D(`stopped`);case`failed`:return D(`did not start`);default:return D(`stop not recorded`)}}var gc=()=>D(`A deadline of its own (time_box)`),_c=()=>D(`Custom column (row_extras)`);function vc(e){if(e==null||e===``)return`—`;if(typeof e==`string`)return e;if(typeof e==`number`||typeof e==`boolean`)return String(e);try{return JSON.stringify(e)??`—`}catch{return`—`}}function yc(e,t){let n=e;return t.filter(e=>n[e]!==null&&n[e]!==void 0&&n[e]!==``).map(e=>[e,vc(n[e])])}function bc(e){switch(e){case`cost`:return D(`Cost`);case`tokens`:return D(`Tokens`);case`time`:return D(`Time`);case`sessions`:return D(`Agent sessions`)}}function xc(e){switch(e){case`cost`:return D(`Reported by the coding agent`);case`tokens`:return D(`Input, output, cache read and cache write`);case`time`:return D(`Time of the agent sessions, summed`);case`sessions`:return D(`Agent sessions started on the model`)}}function Sc(e,t){switch(t){case`cost`:return e.cost_usd===null||e.cost_usd===void 0?`—`:X(e.cost_usd);case`tokens`:return Y(ke(e));case`time`:return B(e.wall_s??0);case`sessions`:return String(e.sessions)}}function Cc(e){let t=100*e;return t>0&&t<.05?`<0.1%`:Math.abs(t)<10?Math.round(10*t)/10+`%`:`${Math.round(t)}%`}var wc=e=>String(Math.round(100*e)/100);function Tc(e){switch(e){case`usd`:return X;case`pct`:return Cc;case`duration`:return B;case`tokens`:return Y;default:return wc}}function Ec(e,t){return e==null||e===``?`—`:t===`datetime`&&typeof e==`string`?G(e,!0)||e:typeof e==`number`?Tc(t)(e):typeof e==`boolean`?String(e):typeof e==`string`?e:JSON.stringify(e)}var Dc=e=>D(E`Exported ${G(e.exported_at,!0)}`);function Oc(e){return e===`transcripts`?D(`transcripts`):e===`processes`?D(`processes`):e}var kc=e=>D(E`Not in this export: ${q(e.left_out.map(Oc))}`),Ac=()=>D(`not in this export`),jc=()=>D(`Trends`),Mc=()=>D(`Totals of the runs in a period`);function Nc(e,t=An()){let n=new Date(`${e}T12:00:00Z`);return Number.isNaN(n.getTime())?e:new Intl.DateTimeFormat(t,{month:`short`,day:`numeric`,timeZone:`UTC`}).format(n)}var Pc=e=>D(E`${e} days`);function Fc(e=An()){let t=new Intl.DateTimeFormat(e,{weekday:`short`,timeZone:`UTC`});return Array.from({length:7},(e,n)=>t.format(new Date(Date.UTC(2026,9,12+n,12))))}var Ic=()=>({runs:D(`Runs`,{id:`trends-runs`}),attempts:D(`Attempts`),done:D(`Done`),cost:D(`Cost`),tokens:D(`Tokens`),time:D(`Time`),costByDay:D(`Cost by day`),costByDayTip:D(`Reported by the coding agent, on the day each attempt ended`),kinds:D(`Kinds`),kind:D(`Kind`),group:D(`Group`),tasks:D(`Tasks`),tasksDone:D(`Tasks done`),partial:D(`Partly done`,{id:`trends-partial`}),medianTime:D(`Median time`),totalTime:D(`Total time`),models:D(`Models`),model:D(`Model`),sessions:D(`Agent sessions`),calls:D(`API calls`),input:D(`Input`),output:D(`Output`),cacheRead:D(`Cache read`),cacheWrite:D(`Cache write`),outcomes:D(`Attempts not done`),outcome:D(`Outcome`),denials:D(`Denied tool calls`),toolCalls:D(`Tool calls`),pythonKinds:D(`Python tasks`),tool:D(`Tool`),usage:D(`Subscription usage`),usageTip:D(`The highest reading of each day`),deferred:D(`Not run`),cause:D(`Cause`),task:D(`Task`),when:D(`When`),rests:D(`Paused identities`),identity:D(`Identity`),event:D(`Event`),starts:D(`Run starts`),startsTip:D(`By weekday and hour, in the period's time zone`),run:D(`Run`),started:D(`Started`),trendPanels:D(`Custom views`)}),Lc=(e,t)=>`${e} | ${t}`,Rc=e=>{let t=/^(\S+) rests\b/.exec(e)?.[1];return D(t?E`Identity ${t} paused`:`Identity paused`)},zc=(e,t)=>`${e} | ${t}`,Bc=e=>e?D(E`Priority ${e}`):``,Vc=()=>D(`Tie-breaker in the queue's order (priority)`),Hc=()=>D(`Peak context`),Uc=()=>D(`Largest input of one API call, cache read and cache write included (peak_context)`);function Wc(e){let t=e.usage?.peak_context;return t==null?``:D(E`Peak context: ${function(e,t){let n=t?Math.round(100*e/t):null;return K(Y(e),n===null?``:D(E`${n}% of the context limit ${Y(t)}`))}(t,e.context_budget)}`)}function Gc(e){let t=e.usage?.peak_context,n=e.context_budget;return D(t!=null&&n?E`near the context limit (${Math.round(100*t/n)}%)`:`near the context limit`)}var Kc=()=>D(`Peak context above the warning threshold (context_warned)`),qc=(e,t)=>t?`${e} / ${t}`:e,Jc=e=>K(qc(e.agent,e.model),e.credential?D(E`identity ${Ts(e.credential)}`):``,e.reason,e.kinds.length?D(E`kinds ${q(e.kinds)}`):``),Yc=e=>K(e.kind,`${qc(e.from_agent,e.from_model)} → ${qc(e.to_agent,e.to_model)}`),Xc=()=>D(`No available model`),Zc=()=>D(`Must stay unchanged`),Qc=()=>D(`Parts of the output file kept as before the task (preserve)`),$c=()=>D(`Safety stops`),el=e=>D(e===1?`1 safety stop`:E`${e} safety stops`),tl=()=>D(`A safety classifier stopped part of the agent session, and the session went on (safety_stops)`);function nl(e){switch(e){case`response`:return D(`model response`);case`tool`:return D(`tool request`);case`unread`:return D(`unrecognized`);default:return e||`—`}}var rl=e=>K(nl(e.part),e.model,e.category,e.tool,G(e.ts,!0));function il(e){switch(e){case`given_from`:return D(`given output`,{id:`edge-given`});case`after`:return D(`runs after`,{id:`edge-after`});case`created_from`:return D(`created after result`,{id:`edge-created`})}}function al(e){switch(e){case`passed`:return D(`same content at the start`);case`refused`:return D(`changed before the start`);case`not_checked`:return D(`not checked`,{id:`input-file-not-checked`})}}function ol(e,t){let n=e[t];if(!n?.rerun)return null;let r=n.fingerprint_parts??{},i=e.slice(0,t).reverse().find(e=>Object.keys(e.fingerprint_parts??{}).length)?.fingerprint_parts??{},a=Object.keys(r).length&&Object.keys(i).length?[...new Set([...Object.keys(r),...Object.keys(i)])].filter(e=>r[e]!==i[e]):[];return{text:n.rerun,changed:a,divergence:n.rerun.startsWith(`divergence`)}}function sl(e){switch(e){case`definition`:return D(`definition`,{id:`part-definition`});case`params`:return D(`params`,{id:`part-params`});case`outside`:return D(`outside state`);case`output_of`:return D(`the file it fills in`);case`input_files`:return D(`input files`,{id:`part-input-files`});default:return e}}var cl=()=>D(`divergence`);function ll(e){return K(D(`Ran again after a resume`),e.divergence?cl():``,e.changed.length?D(E`Changed: ${q(e.changed.map(sl))}`):e.divergence?``:e.text)}function ul(e,t=``){let n=e.raised_at;return n?`${T(n.file,t)}:${n.line}`:``}function dl(e,t=``){let n=(e=>e.slice(e.lastIndexOf(`.`)+1)||e)(e.function),r=ul(e,t);return D(r?E`This failure stopped ${n} at ${r}`:E`This failure stopped ${n}`)}function fl({url:e,failure:t,status:n,type:r}){let i=t===`network`?D(`network error, no response`):t===`status`?D(E`the response status is ${n}`):r.includes(`html`)?D(`the response is HTML, not JSON`):D(`the response is not JSON`);return D(E`No monitor API at ${e}: ${i}`)}function pl(e,t){let n=J(e),r=T(e.reason,t).slice(0,110);if(e.stop===`invalid_input`)return[`attention`,D(E`${n}: not started`),r];if(se(e))return[`failed`,D(E`${n}: ${Q(e.stop)}`),r];if(e.stop===`partial`)return[`attention`,D(E`${n}: ${Q(e.stop)}`),r];let i=Js(e.hops,e.wall_s,e.skipped_hops);return i?[`agent`,D(E`${n}: model switch`),i.slice(0,110)]:[`done`,D(E`${n}: done`),K(B(e.wall_s),e.model)]}z(`cae-segmented`,Ei);var ml={done:`✓`,failed:`✕`,attention:`◌`,running:`●`,agent:`✦`},hl=class extends N{constructor(...e){super(...e),this.toasts=[],this.next=0}static{this.styles=[V,k` :host{position:fixed;right:18px;bottom:18px;display:flex;flex-direction:column;gap:8px;z-index:60;pointer-events:none;}.toast{pointer-events:auto;min-width:240px;max-width:380px;padding:10px 14px;border-radius:11px;background:var(--panel2);border:1px solid var(--line2);box-shadow:0 18px 40px color-mix(in srgb,var(--shadow) 60%,transparent);display:flex;gap:10px;align-items:flex-start;animation:toast-in 0.35s var(--ease) both;}.toast.out{animation:toast-out 0.35s var(--ease) both;}.ti{font-size:16px;line-height:1.2;}b{display:block;font-size:12.5px;}span.sub{font-size:11.5px;color:var(--text-muted);}.ti{color:var(--text-muted);}.toast[data-tone] .ti{color:var(--tone);}.toast[data-tone='failed'],.toast[data-tone='attention']{border-color:color-mix(in srgb,var(--tone) 50%,var(--line2));}.agent .ti{color:var(--agent);}`]}show(e,t,n=``){let r={id:this.next++,kind:e,title:t,sub:n,out:!1};this.toasts=[...this.toasts,r].slice(-4),setTimeout(()=>{this.toasts=this.toasts.map(e=>e.id===r.id?{...e,out:!0}:e),setTimeout(()=>this.toasts=this.toasts.filter(e=>e.id!==r.id),400)},5200)}render(){let e=e=>H(this.toasts.filter(t=>!t.out&&t.kind===`failed`===e),e=>e.id,e=>A`<p>${K(e.title,e.sub)}</p>`);return A`<div class="sr" role="status" aria-live="polite">${e(!1)}</div>
325
325
  <div class="sr" role="alert" aria-live="assertive">${e(!0)}</div>
326
326
  <div aria-hidden="true" style="display:contents">
327
327
  ${H(this.toasts,e=>e.id,e=>A`<div class="toast ${e.kind===`agent`?`agent`:``} ${e.out?`out`:``}" data-tone=${e.kind===`agent`?M:e.kind}>
328
- <span class="ti">${pl[e.kind]}</span>
328
+ <span class="ti">${ml[e.kind]}</span>
329
329
  <div><b>${e.title}</b>${e.sub?A`<span class="sub">${e.sub}</span>`:M}</div>
330
330
  </div>`)}
331
- </div>`}};U([I()],ml.prototype,`toasts`,void 0),ml=U([P(`ca-toasts`)],ml);var hl=k` :host{display:flex;flex-direction:column;height:100%;min-height:0;font:13px/1.5 var(--sans);color:var(--text);background:var(--backdrop);container:ca-monitor / inline-size;}header{flex:none;display:flex;gap:14px;align-items:center;padding:10px 18px;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--bg) 75%,transparent);backdrop-filter:blur(10px);position:relative;z-index:20;}.brand{display:flex;align-items:center;gap:8px;font-weight:700;font-size:15px;letter-spacing:0.02em;}.brand{flex:none;max-width:30cqi;white-space:nowrap;}.brand span{overflow:hidden;text-overflow:ellipsis;}.brand svg{width:22px;height:22px;flex:none;}.logo-braces{stroke:var(--text);}.spark-a{stop-color:var(--accent);}.spark-b{stop-color:var(--agent);}.logo-spark{transform-origin:60px 60px;}:host([live]) .logo-spark{animation:core-beat 1.8s var(--ease) infinite;}.runbtn{display:flex;align-items:center;gap:10px;min-width:min(150px,100%);max-width:52cqi;cursor:pointer;padding:6px 13px;border-radius:999px;background:var(--panel);border:1px solid var(--line);color:var(--text);transition:border-color 0.2s,background 0.2s;}.runbtn:hover{border-color:var(--line2);background:var(--panel2);}.rn{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:none;max-width:40%;}.rs{color:var(--text-muted);font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.chev{color:var(--text-muted);}.hostchip{flex:none;font-family:var(--mono);font-size:11px;color:var(--text-2);padding:0 7px;border:1px solid var(--line2);border-radius:999px;white-space:nowrap;max-width:24ch;overflow:hidden;text-overflow:ellipsis;}.runbtn .pill{flex:none;font-size:11px;}ca-run-picker{inset-inline-start:110px;}.hdr-right{margin-left:auto;display:flex;align-items:center;gap:12px;flex:none;white-space:nowrap;}.nowline{font-size:12px;color:var(--text-2);white-space:nowrap;overflow:hidden;max-width:40cqi;display:inline-flex;align-items:center;gap:4px;}.clock{font-family:var(--mono);font-size:11.5px;color:var(--text-muted);}.langs{--cae-segmented-radius:999px;--cae-segmented-height:auto;--cae-segmented-padding:2px 9px;--cae-segmented-font-size:11px;--cae-segmented-divider:0;--cae-segmented-hover:var(--text-2);}.live-dot{width:9px;height:9px;border-radius:50%;background:var(--status-running);display:inline-block;animation:breathe 1.8s ease-in-out infinite;}.live-dot.off{background:var(--line2);animation:none;box-shadow:none;}.bar{flex:none;display:flex;gap:8px;padding:8px 18px;border-top:1px solid var(--line);align-items:center;flex-wrap:wrap;}.bar select,.bar input{background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:5px 9px;outline:none;font:inherit;font-size:12px;}.bar input:focus,.bar select:focus{border-color:var(--focus);box-shadow:0 0 0 calc(var(--focus-width) - 2px) var(--focus);}.api-error{flex:none;margin:0;padding:8px 18px;color:var(--status-failed);font:12px var(--mono);overflow-wrap:anywhere;}.api-error:empty{padding:0;}main{border-top:1px solid var(--line);flex:1 1 auto;min-height:0;overflow:auto;padding:16px 18px 48px;}main.stream{display:flex;flex-direction:column;overflow:hidden;padding-bottom:16px;}@container ca-monitor (max-width:1000px){header{flex-wrap:wrap;row-gap:8px;}}@container ca-monitor (max-width:760px){header{gap:8px;padding:8px 12px;}.runbtn{flex:1 1 0;min-width:0;max-width:none;}ca-run-picker{inset-inline:16px;width:auto;}.hdr-right{width:100%;margin-left:0;flex-wrap:wrap;row-gap:6px;}.nowline{max-width:none;flex:1 1 100%;}main{padding:12px 12px 40px;}.bar{padding:8px 12px;}.bar input{flex:1 1 10em;min-width:0;}}@container ca-monitor (max-width:420px){.brand{max-width:40cqi;}.runbtn{padding:6px 10px;gap:8px;}}`;function gl(e){return[...[{id:`overview`,label:D(`Overview`),icon:`◎`},{id:`tasks`,label:D(`Tasks`,{id:`tab-tasks`}),icon:`≡`},{id:`journal`,label:D(`History`),icon:`▤`,tip:`journal.jsonl`},{id:`outputs`,label:D(`Outputs`),icon:`▣`},{id:`definitions`,label:D(`Definitions`),icon:`⌘`},{id:`procs`,label:D(`Processes`),icon:`⚙`},{id:`stream`,label:D(`Task detail`),icon:`✦`}].map(e=>({...e,panel:!1})),...e.filter(he).map(e=>({id:`panel:${e.name}`,label:e.title||e.name,icon:e.icon||`▤`,tip:e.description?D(E`${e.description} (custom view)`):D(`Custom view`),panel:!0}))]}var _l=e=>`tab-${e}`;function vl(e){let t=e.querySelector(`.tab.sel`),n=e.querySelector(`.tab-ind`);if(!t||!n)return;n.style.left=`${t.offsetLeft+10}px`,n.style.width=`${Math.max(12,t.offsetWidth-20)}px`,n.classList.contains(`init`)&&requestAnimationFrame(()=>n.classList.remove(`init`));let r=n.parentElement;r&&n.dataset.tab!==t.id&&(n.dataset.tab=t.id,t.offsetLeft-24<r.scrollLeft?r.scrollLeft=Math.max(0,t.offsetLeft-24):t.offsetLeft+t.offsetWidth+24>r.scrollLeft+r.clientWidth&&(r.scrollLeft=t.offsetLeft+t.offsetWidth+24-r.clientWidth))}var yl=k` nav{flex:none;display:flex;gap:2px;padding:6px 18px 0;position:relative;overflow-x:auto;scrollbar-width:none;align-items:center;--shade:color-mix(in srgb,var(--text) 22%,transparent);background:linear-gradient(to right,var(--backdrop) 40%,transparent) left / 32px 100% no-repeat local,linear-gradient(to left,var(--backdrop) 40%,transparent) right / 32px 100% no-repeat local,radial-gradient(farthest-side at 0 50%,var(--shade),transparent) left / 12px 100% no-repeat scroll,radial-gradient(farthest-side at 100% 50%,var(--shade),transparent) right / 12px 100% no-repeat scroll;}nav::-webkit-scrollbar{display:none;}.tabs{flex:none;display:flex;gap:2px;align-items:center;}.tab{position:relative;background:none;border:none;padding:8px 14px 11px;color:var(--text-muted);cursor:pointer;font-weight:500;white-space:nowrap;transition:color 0.2s;}.tab:hover{color:var(--text-2);}.tab.sel{color:var(--text);font-weight:600;}.tab-label{display:inline-flex;flex-direction:column;}.tab-label::after{content:attr(data-label);font-weight:600;height:0;overflow:hidden;visibility:hidden;}.tab-ic{opacity:0.55;margin-right:6px;font-size:12px;}.tab.sel .tab-ic{opacity:1;color:var(--accent);}.badge{margin-left:6px;font-size:10px;font-weight:500;padding:0 6px;border-radius:999px;background:var(--raise);color:var(--text-2);font-variant-numeric:tabular-nums;}.badge[data-tone]{background:var(--tone-bg);color:var(--tone);}.tab-sep{width:1px;height:18px;background:var(--line2);margin:0 8px 3px;flex:none;align-self:center;}.tab-ind{position:absolute;bottom:0;left:0;width:0;height:2px;border-radius:2px;background:var(--accent);transition:left 0.3s var(--ease),width 0.3s var(--ease);}.tab-ind.init{transition:none;}.tabhint{margin-left:auto;padding-left:12px;white-space:nowrap;}@container ca-monitor (max-width:900px){.tabhint{display:none;}}@container ca-monitor (max-width:760px){nav{padding:4px 8px 0;}.tab{padding:8px 10px 11px;}}`;function $(e,t,n,{bubbles:r=!0}={}){e.dispatchEvent(new CustomEvent(t,{detail:n,bubbles:r,composed:!0}))}function bl(e,t,n){return n.key?A`<button type="button" class="taskchip" title=${n.key} @click=${t=>{t.stopPropagation(),$(e,`ca-open-task`,{key:n.key,...w(n)?{view:`output`}:{}})}}>${t}</button>`:A`<span class="taskchip">${t}</span>`}function xl(e,t){return e.startsWith(`list[`)||e===`array`?Array.isArray(t):e===`string`?typeof t==`string`:e===`integer`?Number.isInteger(t):e===`number`?typeof t==`number`:e===`boolean`?typeof t==`boolean`:e!==`object`||typeof t==`object`&&!!t&&!Array.isArray(t)}z(`cae-check-table`,Za);var Sl=e=>/^RootModel\[(.+)\]$/.exec(e)?.[1]??null,Cl=e=>/^Rows\[(.+)\]$/.exec(e)?.[1]??null;function wl(e){let t=e.file.content;return e.file.exists&&typeof t==`object`&&t&&!Array.isArray(t)?t:null}function Tl(e){if(!e.fields.length&&(e.schema_name===`text`||Sl(e.schema_name)!==null))return null;let t=wl(e),n=e.fields.map(e=>{let n={name:e.name,expected:e.type,optional:!e.required};if(!t)return{...n,hasValue:!1,verdict:`none`,verdictLabel:``};if(!(e.name in t))return e.required?{...n,hasValue:!1,verdict:`fail`,verdictLabel:D(`missing`),tip:D(`A required field that is not in the file`)}:{...n,hasValue:!1,verdict:`none`,verdictLabel:D(`absent (optional)`)};let r=t[e.name];return xl(e.type,r)?{...n,hasValue:!0,value:r,verdict:`pass`,verdictLabel:D(`passed`)}:{...n,hasValue:!0,value:r,verdict:`fail`,verdictLabel:D(`wrong type`),tip:D(E`Expected ${e.type}`)}}),r=t?Object.keys(t).filter(t=>!e.fields.some(e=>e.name===t)):[];return[...n,...r.map(e=>({name:e,expected:D(`not in the schema`),extra:!0,hasValue:!0,value:t?.[e],verdict:`warn`,verdictLabel:D(`extra field`),tip:D(`Not in the schema`)}))]}function El(){return{name:D(`Field`),expected:D(`Expected`),actual:D(`In the file`),verdict:D(`Check`),optional:D(`optional`),items:e=>D(e===1?`1 item`:E`${e} items`),object:D(`object`)}}function Dl(e){let t=!!e.file.exists;return $r(`ct-chip`,{text:t?D(`found`):e.required?D(`missing (required)`):D(`missing (optional)`),tone:t?`done`:e.required?`failed`:`muted`})}function Ol(e,t){return $r(`ct-chip`,e?{text:t===void 0?Ys(e):A`${Ys(e)} <b>${t}</b>`,tone:fs(e),title:Xs(e)}:{text:`—`})}function kl(e){let t=e.content;return typeof t==`object`&&t?A`<cae-json-tree .value=${t}></cae-json-tree>`:A`<pre class="jtree">${typeof t==`string`?t:D(`Not JSON`)}</pre>`}function Al(e){let t=e.file,n=Tl(e),r=A`<details class="ct-raw">
332
- <summary>${jl(t)}</summary>
333
- ${kl(t)}
331
+ </div>`}};U([I()],hl.prototype,`toasts`,void 0),hl=U([P(`ca-toasts`)],hl);var gl=k` :host{display:flex;flex-direction:column;height:100%;min-height:0;font:13px/1.5 var(--sans);color:var(--text);background:var(--backdrop);container:ca-monitor / inline-size;}header{flex:none;display:flex;gap:14px;align-items:center;padding:10px 18px;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--bg) 75%,transparent);backdrop-filter:blur(10px);position:relative;z-index:20;}.brand{display:flex;align-items:center;gap:8px;font-weight:700;font-size:15px;letter-spacing:0.02em;}.brand{flex:none;max-width:30cqi;white-space:nowrap;}.brand span{overflow:hidden;text-overflow:ellipsis;}.brand svg{width:22px;height:22px;flex:none;}.logo-braces{stroke:var(--text);}.spark-a{stop-color:var(--accent);}.spark-b{stop-color:var(--agent);}.logo-spark{transform-origin:60px 60px;}:host([live]) .logo-spark{animation:core-beat 1.8s var(--ease) infinite;}.runbtn{display:flex;align-items:center;gap:10px;min-width:min(150px,100%);max-width:52cqi;cursor:pointer;padding:6px 13px;border-radius:999px;background:var(--panel);border:1px solid var(--line);color:var(--text);transition:border-color 0.2s,background 0.2s;}.runbtn:hover{border-color:var(--line2);background:var(--panel2);}.rn{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:none;max-width:40%;}.rs{color:var(--text-muted);font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.chev{color:var(--text-muted);}.hostchip{flex:none;font-family:var(--mono);font-size:11px;color:var(--text-2);padding:0 7px;border:1px solid var(--line2);border-radius:999px;white-space:nowrap;max-width:24ch;overflow:hidden;text-overflow:ellipsis;}.runbtn .pill{flex:none;font-size:11px;}ca-run-picker{inset-inline-start:110px;}.hdr-right{margin-left:auto;display:flex;align-items:center;gap:12px;flex:none;white-space:nowrap;}.nowline{font-size:12px;color:var(--text-2);white-space:nowrap;overflow:hidden;max-width:40cqi;display:inline-flex;align-items:center;gap:4px;}.clock{font-family:var(--mono);font-size:11.5px;color:var(--text-muted);}.langs{--cae-segmented-radius:999px;--cae-segmented-height:auto;--cae-segmented-padding:2px 9px;--cae-segmented-font-size:11px;--cae-segmented-divider:0;--cae-segmented-hover:var(--text-2);}.live-dot{width:9px;height:9px;border-radius:50%;background:var(--status-running);display:inline-block;animation:breathe 1.8s ease-in-out infinite;}.live-dot.off{background:var(--line2);animation:none;box-shadow:none;}.bar{flex:none;display:flex;gap:8px;padding:8px 18px;border-top:1px solid var(--line);align-items:center;flex-wrap:wrap;}.bar select,.bar input{background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:5px 9px;outline:none;font:inherit;font-size:12px;}.bar input:focus,.bar select:focus{border-color:var(--focus);box-shadow:0 0 0 calc(var(--focus-width) - 2px) var(--focus);}.api-error{flex:none;margin:0;padding:8px 18px;color:var(--status-failed);font:12px var(--mono);overflow-wrap:anywhere;}.api-error:empty{padding:0;}main{border-top:1px solid var(--line);flex:1 1 auto;min-height:0;overflow:auto;padding:16px 18px 48px;}main.stream{display:flex;flex-direction:column;overflow:hidden;padding-bottom:16px;}@container ca-monitor (max-width:1000px){header{flex-wrap:wrap;row-gap:8px;}}@container ca-monitor (max-width:760px){header{gap:8px;padding:8px 12px;}.runbtn{flex:1 1 0;min-width:0;max-width:none;}ca-run-picker{inset-inline:16px;width:auto;}.hdr-right{width:100%;margin-left:0;flex-wrap:wrap;row-gap:6px;}.nowline{max-width:none;flex:1 1 100%;}main{padding:12px 12px 40px;}.bar{padding:8px 12px;}.bar input{flex:1 1 10em;min-width:0;}}@container ca-monitor (max-width:420px){.brand{max-width:40cqi;}.runbtn{padding:6px 10px;gap:8px;}}`;function _l(e){return[...[{id:`overview`,label:D(`Overview`),icon:`◎`},{id:`tasks`,label:D(`Tasks`,{id:`tab-tasks`}),icon:`≡`},{id:`journal`,label:D(`History`),icon:`▤`,tip:`journal.jsonl`},{id:`outputs`,label:D(`Outputs`),icon:`▣`},{id:`definitions`,label:D(`Definitions`),icon:`⌘`},{id:`procs`,label:D(`Processes`),icon:`⚙`},{id:`stream`,label:D(`Task detail`),icon:`✦`}].map(e=>({...e,panel:!1})),...e.filter(he).map(e=>({id:`panel:${e.name}`,label:e.title||e.name,icon:e.icon||`▤`,tip:e.description?D(E`${e.description} (custom view)`):D(`Custom view`),panel:!0}))]}var vl=e=>`tab-${e}`;function yl(e){let t=e.querySelector(`.tab.sel`),n=e.querySelector(`.tab-ind`);if(!t||!n)return;n.style.left=`${t.offsetLeft+10}px`,n.style.width=`${Math.max(12,t.offsetWidth-20)}px`,n.classList.contains(`init`)&&requestAnimationFrame(()=>n.classList.remove(`init`));let r=n.parentElement;r&&n.dataset.tab!==t.id&&(n.dataset.tab=t.id,t.offsetLeft-24<r.scrollLeft?r.scrollLeft=Math.max(0,t.offsetLeft-24):t.offsetLeft+t.offsetWidth+24>r.scrollLeft+r.clientWidth&&(r.scrollLeft=t.offsetLeft+t.offsetWidth+24-r.clientWidth))}var bl=k` nav{flex:none;display:flex;gap:2px;padding:6px 18px 0;position:relative;overflow-x:auto;scrollbar-width:none;align-items:center;--shade:color-mix(in srgb,var(--text) 22%,transparent);background:linear-gradient(to right,var(--backdrop) 40%,transparent) left / 32px 100% no-repeat local,linear-gradient(to left,var(--backdrop) 40%,transparent) right / 32px 100% no-repeat local,radial-gradient(farthest-side at 0 50%,var(--shade),transparent) left / 12px 100% no-repeat scroll,radial-gradient(farthest-side at 100% 50%,var(--shade),transparent) right / 12px 100% no-repeat scroll;}nav::-webkit-scrollbar{display:none;}.tabs{flex:none;display:flex;gap:2px;align-items:center;}.tab{position:relative;background:none;border:none;padding:8px 14px 11px;color:var(--text-muted);cursor:pointer;font-weight:500;white-space:nowrap;transition:color 0.2s;}.tab:hover{color:var(--text-2);}.tab.sel{color:var(--text);font-weight:600;}.tab-label{display:inline-flex;flex-direction:column;}.tab-label::after{content:attr(data-label);font-weight:600;height:0;overflow:hidden;visibility:hidden;}.tab-ic{opacity:0.55;margin-right:6px;font-size:12px;}.tab.sel .tab-ic{opacity:1;color:var(--accent);}.badge{margin-left:6px;font-size:10px;font-weight:500;padding:0 6px;border-radius:999px;background:var(--raise);color:var(--text-2);font-variant-numeric:tabular-nums;}.badge[data-tone]{background:var(--tone-bg);color:var(--tone);}.tab-sep{width:1px;height:18px;background:var(--line2);margin:0 8px 3px;flex:none;align-self:center;}.tab-ind{position:absolute;bottom:0;left:0;width:0;height:2px;border-radius:2px;background:var(--accent);transition:left 0.3s var(--ease),width 0.3s var(--ease);}.tab-ind.init{transition:none;}.tabhint{margin-left:auto;padding-left:12px;white-space:nowrap;}@container ca-monitor (max-width:900px){.tabhint{display:none;}}@container ca-monitor (max-width:760px){nav{padding:4px 8px 0;}.tab{padding:8px 10px 11px;}}`;function $(e,t,n,{bubbles:r=!0}={}){e.dispatchEvent(new CustomEvent(t,{detail:n,bubbles:r,composed:!0}))}function xl(e,t,n){return n.key?A`<button type="button" class="taskchip" title=${n.key} @click=${t=>{t.stopPropagation(),$(e,`ca-open-task`,{key:n.key,...w(n)?{view:`output`}:{}})}}>${t}</button>`:A`<span class="taskchip">${t}</span>`}function Sl(e,t){return e.startsWith(`list[`)||e===`array`?Array.isArray(t):e===`string`?typeof t==`string`:e===`integer`?Number.isInteger(t):e===`number`?typeof t==`number`:e===`boolean`?typeof t==`boolean`:e!==`object`||typeof t==`object`&&!!t&&!Array.isArray(t)}z(`cae-check-table`,Za);var Cl=e=>/^RootModel\[(.+)\]$/.exec(e)?.[1]??null,wl=e=>/^Rows\[(.+)\]$/.exec(e)?.[1]??null;function Tl(e){let t=e.file.content;return e.file.exists&&typeof t==`object`&&t&&!Array.isArray(t)?t:null}function El(e){if(!e.fields.length&&(e.schema_name===`text`||Cl(e.schema_name)!==null))return null;let t=Tl(e),n=e.fields.map(e=>{let n={name:e.name,expected:e.type,optional:!e.required};if(!t)return{...n,hasValue:!1,verdict:`none`,verdictLabel:``};if(!(e.name in t))return e.required?{...n,hasValue:!1,verdict:`fail`,verdictLabel:D(`missing`),tip:D(`A required field that is not in the file`)}:{...n,hasValue:!1,verdict:`none`,verdictLabel:D(`absent (optional)`)};let r=t[e.name];return Sl(e.type,r)?{...n,hasValue:!0,value:r,verdict:`pass`,verdictLabel:D(`passed`)}:{...n,hasValue:!0,value:r,verdict:`fail`,verdictLabel:D(`wrong type`),tip:D(E`Expected ${e.type}`)}}),r=t?Object.keys(t).filter(t=>!e.fields.some(e=>e.name===t)):[];return[...n,...r.map(e=>({name:e,expected:D(`not in the schema`),extra:!0,hasValue:!0,value:t?.[e],verdict:`warn`,verdictLabel:D(`extra field`),tip:D(`Not in the schema`)}))]}function Dl(){return{name:D(`Field`),expected:D(`Expected`),actual:D(`In the file`),verdict:D(`Check`),optional:D(`optional`),items:e=>D(e===1?`1 item`:E`${e} items`),object:D(`object`)}}function Ol(e){let t=!!e.file.exists;return $r(`ct-chip`,{text:t?D(`found`):e.required?D(`missing (required)`):D(`missing (optional)`),tone:t?`done`:e.required?`failed`:`muted`})}function kl(e,t){return $r(`ct-chip`,e?{text:t===void 0?Ys(e):A`${Ys(e)} <b>${t}</b>`,tone:fs(e),title:Xs(e)}:{text:`—`})}function Al(e){let t=e.content;return typeof t==`object`&&t?A`<cae-json-tree .value=${t}></cae-json-tree>`:A`<pre class="jtree">${typeof t==`string`?t:D(`Not JSON`)}</pre>`}function jl(e){let t=e.file,n=El(e),r=A`<details class="ct-raw">
332
+ <summary>${Ml(t)}</summary>
333
+ ${Al(t)}
334
334
  </details>`;if(!n)return t.exists?r:A``;if(e.format===`jsonl`){let e=A`<details class="ct-raw">
335
335
  <summary>${K(function(e){let t=Array.isArray(e.content)?e.content.length:0;return D(t===1?`1 row`:E`${t} rows`)}(t),`${t.size??0} B`,t.mtime?D(E`written ${G(t.mtime,!0)}`):``,t.truncated?D(`truncated`):``)}</summary>
336
- ${kl(t)}
337
- </details>`;return A`<cae-check-table .rows=${n} .showValues=${!1} .strings=${El()}></cae-check-table>
338
- ${t.exists?e:M}`}return t.exists?A`<cae-check-table .rows=${n} .strings=${El()}></cae-check-table>
339
- ${wl(e)?M:A`<div class="meta note">${D(`Not a JSON object`)}</div>`}
340
- ${r}`:n.length?A`<cae-check-table .rows=${n} .showValues=${!1} .strings=${El()}></cae-check-table>`:A``}z(`cae-json-tree`,Di);var jl=e=>K(D(`Whole file`),`${e.size??0} B`,e.mtime?D(E`written ${G(e.mtime,!0)}`):``,e.truncated?D(`truncated`):``);function Ml(e){let t=Sl(e.schema_name),n=e.schema_name===`text`||t===`str`?D(`text`):t??Cl(e.schema_name)??e.schema_name;return A`<b class="jmono" title=${e.schema_ref||e.schema_name}>${n}</b>`}function Nl(e){let t=e.schema_ref||e.schema_name;if(e.schema_name===`text`)return D(`text file`);if(e.format===`jsonl`)return D(A`JSON Lines, one object of schema ${Ml(e)} per line`);let n=Sl(e.schema_name);return n===`str`?A`<span title=${t}>${D(`text (JSON string)`)}</span>`:n?A`<span title=${t}>${D(E`JSON value of type ${n}`)}</span>`:D(A`JSON object, schema ${Ml(e)}`)}function Pl(e,t){let n=Nl(e),r=function(e){let t=e.validators??[];if(!t.length)return null;let n=(e.errors??[]).join(`
336
+ ${Al(t)}
337
+ </details>`;return A`<cae-check-table .rows=${n} .showValues=${!1} .strings=${Dl()}></cae-check-table>
338
+ ${t.exists?e:M}`}return t.exists?A`<cae-check-table .rows=${n} .strings=${Dl()}></cae-check-table>
339
+ ${Tl(e)?M:A`<div class="meta note">${D(`Not a JSON object`)}</div>`}
340
+ ${r}`:n.length?A`<cae-check-table .rows=${n} .showValues=${!1} .strings=${Dl()}></cae-check-table>`:A``}z(`cae-json-tree`,Di);var Ml=e=>K(D(`Whole file`),`${e.size??0} B`,e.mtime?D(E`written ${G(e.mtime,!0)}`):``,e.truncated?D(`truncated`):``);function Nl(e){let t=Cl(e.schema_name),n=e.schema_name===`text`||t===`str`?D(`text`):t??wl(e.schema_name)??e.schema_name;return A`<b class="jmono" title=${e.schema_ref||e.schema_name}>${n}</b>`}function Pl(e){let t=e.schema_ref||e.schema_name;if(e.schema_name===`text`)return D(`text file`);if(e.format===`jsonl`)return D(A`JSON Lines, one object of schema ${Nl(e)} per line`);let n=Cl(e.schema_name);return n===`str`?A`<span title=${t}>${D(`text (JSON string)`)}</span>`:n?A`<span title=${t}>${D(E`JSON value of type ${n}`)}</span>`:D(A`JSON object, schema ${Nl(e)}`)}function Fl(e,t){let n=Pl(e),r=function(e){let t=e.validators??[];if(!t.length)return null;let n=(e.errors??[]).join(`
341
341
  `);return A`${t.map((t,r)=>A`${r?`, `:``}<span class="jmono">${t}</span> ${(t=>e.status===`valid`?Ya(`pass`,D(`passed`)):n.includes(t)?Ya(`fail`,D(`failed checks`)):M)(t)}`)}`}(e);return A`<dl class="conds">
342
- ${(t===`output`?[[D(`Format`),n],...r?[[D(`Other checks`),r,D(`Checks beyond the schema (validators)`)]]:[],[D(`Must be written during the task`),e.fresh?D(`yes`):D(`no`),e.fresh?D(`A file from before the task does not count`):D(`A file from before the task counts`)],...e.preserve?.length?[[Xc(),A`<span class="jmono">${e.preserve.join(`, `)}</span>`,Zc()]]:[]]:[[D(`Format`),n],...r?[[D(`Other checks`),r,D(`Checks beyond the schema (validators)`)]]:[],[D(`Check time`),D(`when the task starts`)],[D(`Required`),e.required?D(`yes`):D(`no`)]]).map(([e,t,n])=>A`<dt>${e}</dt><dd title=${n??``}>${t}</dd>`)}
343
- </dl>`}var Fl=k` .ct-chip{display:inline-block;padding:1px 10px;border-radius:var(--radius-pill);font-size:11.5px;background:var(--raise);color:var(--text-2);white-space:nowrap;}.ct-chip b{margin-left:4px;}.ct-chip[data-tone]{background:var(--tone-bg);color:var(--tone);}.ct-chip[data-tone='done']{background:none;box-shadow:inset 0 0 0 1px var(--line2);color:var(--text-2);}`,Il=k` ${Fl} ${qa} .ct-path{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.ct-lead{margin:2px 0 8px;display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 6px;}.conds{display:grid;grid-template-columns:fit-content(50%) minmax(0,1fr);gap:2px 14px;margin:2px 0 10px;font-size:12px;}.conds dt{color:var(--text-muted);overflow-wrap:anywhere;}.conds dd{margin:0;color:var(--text-2);min-width:0;overflow-wrap:anywhere;}.note{margin-top:6px;}.ct-raw{margin-top:8px;}.ct-raw>summary{cursor:pointer;color:var(--text-muted);font-size:12px;}.ct-err{color:var(--status-failed);white-space:pre-wrap;}.ct-fields{border-collapse:collapse;width:100%;}.ct-fields td{padding:2px 10px 2px 0;border:0;font-size:12px;}.ct-in{display:flex;align-items:center;gap:10px;padding:5px 4px;border-top:1px solid var(--line);}h4{margin:8px 0 6px;font-size:12px;color:var(--text-2);font-weight:600;}.io-card{border:1px solid var(--line);border-radius:10px;padding:10px 14px;margin-bottom:10px;background:var(--raise);}.io-hd{display:flex;align-items:center;gap:10px;margin-bottom:6px;}.io-from{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;margin:-2px 0 8px;}.io-hd .ct-path{flex:1;}.io-card.one .io-hd{margin-bottom:2px;}`;z(`cae-count`,la),z(`cae-elapsed`,ua);var Ll=class extends N{constructor(...e){super(...e),this.procs=null}static{this.styles=[V,k` :host{display:block;}.ptree2{font-family:var(--mono);font-size:11.5px;max-height:220px;overflow:auto;}.pt-n{display:flex;gap:10px;align-items:center;padding:3px 6px 3px calc(6px + var(--d) * 18px);border-radius:6px;position:relative;}.pt-n:hover{background:color-mix(in srgb,var(--text) 4%,transparent);}.pt-n::before{content:'';position:absolute;left:calc(var(--d) * 18px - 8px);top:0;bottom:50%;width:8px;border-left:1px solid var(--line2);border-bottom:1px solid var(--line2);}.pt-n.root::before{display:none;}.pt-pid{color:var(--text-muted);min-width:58px;}.pt-cmd{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;color:var(--text-2);}.pt-n.llm .pt-cmd{color:var(--text);}.pt-n.llm .pt-pid{box-shadow:inset 2px 0 0 color-mix(in srgb,var(--agent) 70%,transparent);padding-left:6px;}.pt-age{color:var(--text-muted);}`]}render(){let e=this.procs?.tree[0];return e?A`<div class="ptree2">${this.node(e,0)}</div>`:A`<div class="meta">${D(`No running processes`)}</div>`}node(e,t){let n=e.full_cmd||e.cmd||``,r=(e.cmd||n).split(` `).slice(0,3).join(` `);return A`<div class="pt-n ${/\b(claude|omp)\b/.test(n)?`llm`:``} ${t?``:`root`}" style="--d:${t}" title=${n}>
342
+ ${(t===`output`?[[D(`Format`),n],...r?[[D(`Other checks`),r,D(`Checks beyond the schema (validators)`)]]:[],[D(`Must be written during the task`),e.fresh?D(`yes`):D(`no`),e.fresh?D(`A file from before the task does not count`):D(`A file from before the task counts`)],...e.preserve?.length?[[Zc(),A`<span class="jmono">${e.preserve.join(`, `)}</span>`,Qc()]]:[]]:[[D(`Format`),n],...r?[[D(`Other checks`),r,D(`Checks beyond the schema (validators)`)]]:[],[D(`Check time`),D(`when the task starts`)],[D(`Required`),e.required?D(`yes`):D(`no`)]]).map(([e,t,n])=>A`<dt>${e}</dt><dd title=${n??``}>${t}</dd>`)}
343
+ </dl>`}var Il=k` .ct-chip{display:inline-block;padding:1px 10px;border-radius:var(--radius-pill);font-size:11.5px;background:var(--raise);color:var(--text-2);white-space:nowrap;}.ct-chip b{margin-left:4px;}.ct-chip[data-tone]{background:var(--tone-bg);color:var(--tone);}.ct-chip[data-tone='done']{background:none;box-shadow:inset 0 0 0 1px var(--line2);color:var(--text-2);}`,Ll=k` ${Il} ${qa} .ct-path{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.ct-lead{margin:2px 0 8px;display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 6px;}.conds{display:grid;grid-template-columns:fit-content(50%) minmax(0,1fr);gap:2px 14px;margin:2px 0 10px;font-size:12px;}.conds dt{color:var(--text-muted);overflow-wrap:anywhere;}.conds dd{margin:0;color:var(--text-2);min-width:0;overflow-wrap:anywhere;}.note{margin-top:6px;}.ct-raw{margin-top:8px;}.ct-raw>summary{cursor:pointer;color:var(--text-muted);font-size:12px;}.ct-err{color:var(--status-failed);white-space:pre-wrap;}.ct-fields{border-collapse:collapse;width:100%;}.ct-fields td{padding:2px 10px 2px 0;border:0;font-size:12px;}.ct-in{display:flex;align-items:center;gap:10px;padding:5px 4px;border-top:1px solid var(--line);}h4{margin:8px 0 6px;font-size:12px;color:var(--text-2);font-weight:600;}.io-card{border:1px solid var(--line);border-radius:10px;padding:10px 14px;margin-bottom:10px;background:var(--raise);}.io-hd{display:flex;align-items:center;gap:10px;margin-bottom:6px;}.io-from{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;margin:-2px 0 8px;}.io-hd .ct-path{flex:1;}.io-card.one .io-hd{margin-bottom:2px;}`;z(`cae-count`,la),z(`cae-elapsed`,ua);var Rl=class extends N{constructor(...e){super(...e),this.procs=null}static{this.styles=[V,k` :host{display:block;}.ptree2{font-family:var(--mono);font-size:11.5px;max-height:220px;overflow:auto;}.pt-n{display:flex;gap:10px;align-items:center;padding:3px 6px 3px calc(6px + var(--d) * 18px);border-radius:6px;position:relative;}.pt-n:hover{background:color-mix(in srgb,var(--text) 4%,transparent);}.pt-n::before{content:'';position:absolute;left:calc(var(--d) * 18px - 8px);top:0;bottom:50%;width:8px;border-left:1px solid var(--line2);border-bottom:1px solid var(--line2);}.pt-n.root::before{display:none;}.pt-pid{color:var(--text-muted);min-width:58px;}.pt-cmd{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;color:var(--text-2);}.pt-n.llm .pt-cmd{color:var(--text);}.pt-n.llm .pt-pid{box-shadow:inset 2px 0 0 color-mix(in srgb,var(--agent) 70%,transparent);padding-left:6px;}.pt-age{color:var(--text-muted);}`]}render(){let e=this.procs?.tree[0];return e?A`<div class="ptree2">${this.node(e,0)}</div>`:A`<div class="meta">${D(`No running processes`)}</div>`}node(e,t){let n=e.full_cmd||e.cmd||``,r=(e.cmd||n).split(` `).slice(0,3).join(` `);return A`<div class="pt-n ${/\b(claude|omp)\b/.test(n)?`llm`:``} ${t?``:`root`}" style="--d:${t}" title=${n}>
344
344
  <span class="pt-pid">${e.pid}</span>
345
345
  <span class="pt-cmd">${e.key?A`<b>${J(e)}</b> `:M}${r.length>70?`${r.slice(0,70)}…`:r}</span>
346
346
  <cae-elapsed class="pt-age" .since=${Ir.at(`p:${e.pid}`,e.age_s)}></cae-elapsed>
347
347
  </div>
348
- ${(e.children??[]).map(e=>this.node(e,t+1))}`}};function Rl(e){let t=e.filter(f),n=t.filter(w),r=t.filter(e=>!w(e)),i=e=>e.reduce((e,t)=>e+(t.wall_s||0),0),a=e=>[...new Set(e.map(e=>e.key))],o=e=>a(e).length,s=m(e),c=t.filter(e=>(e.rounds||1)>1),l=t.filter(e=>(e.hops||[]).length>1);return{attempts:t.length,python:n.length,launches:r.length,bad:t.filter(e=>!e.ok).length,launchWall:i(r),pythonWall:i(n),retries:s.length,retriedTasks:o(s),retriedKeys:a(s),fixupKeys:a(c),fixups:c.reduce((e,t)=>e+(t.rounds||1)-1,0),fixupTasks:o(c),switches:l.reduce((e,t)=>e+(t.hops||[]).length-1,0),switchTasks:o(l)}}function zl(e){return e.startsWith(`task:`)?{key:e.slice(5)}:{stop:e.replace(/^history:/,``)}}function Bl(e){let t=!1,n=!1,r=!1;for(let i of e){if(i.outcome!==`not_started`)continue;let e=i.attempts[i.attempts.length-1],a=e?.stop===`invalid_input`?Re(e.reason):[];a.some(e=>e.problem===`missing`)&&(t=!0),a.some(e=>e.problem===`checks`)&&(n=!0),(a.some(e=>e.problem===`failed`)||!a.length&&i.cause)&&(r=!0)}return Qo(r?D(`Earlier task failed`):``,t?D(`Input missing`):``,n?D(`Input failed checks`):``)}U([F({attribute:!1})],Ll.prototype,`procs`,void 0),Ll=U([P(`ca-proc-tree`),O()],Ll),z(`cae-stat-tiles`,_a),z(`cae-count`,la);var Vl=(e,t)=>({id:`history:${e}`,label:t});function Hl(e,t,n,r){let i=t.length===1?t[0]:void 0;if(!i)return Vl(n,r);let a=e.find(e=>e.key===i);return{id:`task:${i}`,label:a?J(a):i}}function Ul(e,t){let n=Rl(e),{outcomes:r,counts:i}=t,a=[{text:Z(`done`,i.doneTotal),tone:`neutral`},{text:i.skipped?Z(`skipped`,i.skipped):``,tone:`neutral`},{text:i.failed?Z(`failed`,i.failed):``,tone:os(i.failed,`failed`)},{text:i.not_started?Z(`not_started`,i.not_started):``,tone:os(i.not_started,`attention`)},{text:i.partial?Z(`partial`,i.partial):``,tone:os(i.partial,`attention`)},{text:i.cancelled?Z(`cancelled`,i.cancelled):``,tone:`neutral`}];return[{id:`tasks`,label:D(`Tasks`,{id:`tasks`}),value:i.total,sub:[a]},{id:`attempts`,label:D(`Attempts`),value:n.attempts,sub:[Qo(n.launches===1?D(`1 agent session`):D(E`${n.launches} agent sessions`),n.python===1?D(`1 Python task attempt`):D(E`${n.python} Python task attempts`))],tip:D(`Attempts that ran, retries included (journal.jsonl)`)},...Wl(e),{id:`bad`,tone:os(n.bad,`failed`),label:D(`Failed attempts`),value:n.bad,sub:[n.bad?[]:[D(`All attempts done`)]],...n.bad?{action:Vl(`bad`,D(`Failed attempts in history`))}:{}},{id:`notstarted`,tone:os(i.not_started,`attention`),label:D(`Not started`),value:i.not_started,sub:[i.not_started?Bl(r.values()):[D(`All tasks started`)]],...i.not_started?{action:Vl(`invalid_input`,D(`Tasks not started in history`))}:{}},{id:`wall`,label:D(`Agent session time`),value:B(n.launchWall),sub:[[D(E`Python tasks: ${B(n.pythonWall)}`)]],tip:D(`Summed over agent sessions, including sessions that ran at once`)},{id:`retry`,label:D(`Retries`),value:n.retries,sub:[[n.retries?n.retriedTasks===1?D(`1 task retried`):D(E`${n.retriedTasks} tasks retried`):D(`No retries`)]],tip:gs(),...n.retries?{action:Hl(e,n.retriedKeys,`retried`,D(`Retried tasks in history`))}:{}},{id:`ct`,label:D(`Corrections`),value:n.fixups,sub:[[n.fixups?n.fixupTasks===1?D(`1 task with a correction`):D(E`${n.fixupTasks} tasks with corrections`):D(`No corrections`)]],tip:Zs(),...n.fixups?{action:Hl(e,n.fixupKeys,`fixup`,D(`Attempts with corrections in history`))}:{}},{id:`fo`,label:D(`Model switches`),value:n.switches,sub:[[n.switches?n.switchTasks===1?D(`1 task with a model switch`):D(E`${n.switchTasks} tasks with model switches`):D(`No model switches`)]],tip:Ks()}]}function Wl(e){let t=Ee(e);if(!t)return[];let n=Oe(e)[0];return[{id:`cost`,label:D(`Cost`),value:X(t.cost),sub:n&&n.share!==null?[[D(E`Highest cost: ${n.kind}`)],Qo(X(n.spend.cost),D(E`${Math.round(100*n.share)}% of the total`))]:[[]],tip:D(`Reported by the coding agent`)},{id:`tokens`,label:D(`Tokens`),value:Y(we(t)),sub:[Qo(D(E`${Y(t.input)} input`),D(E`${Y(t.output)} output`),D(E`${Y(t.cache_read+t.cache_creation)} cache`))],tip:K(D(E`${Y(t.cache_read)} cache read`),D(E`${Y(t.cache_creation)} cache write`),t.calls===1?D(`1 API call`):D(E`${t.calls} API calls`))}]}var Gl=class extends N{constructor(...e){super(...e),this.journal=[],this.plan={nodes:[],groups:[]},this.onAction=e=>{e.stopPropagation();let t=zl(e.detail.action);`key`in t?$(this,`ca-open-task`,{key:t.key}):$(this,`ca-navigate`,{tab:`journal`,stop:t.stop})}}static{this.styles=k` :host{display:block;}`}render(){return A`<cae-stat-tiles exportparts="tiles, tile, label, value, sub, action" .tiles=${Ul(this.journal,S(this.journal,this.plan))} @cae-action=${this.onAction}></cae-stat-tiles>`}};U([F({attribute:!1})],Gl.prototype,`journal`,void 0),U([F({attribute:!1})],Gl.prototype,`plan`,void 0),Gl=U([P(`ca-kpis`),O()],Gl);var Kl=[`input`,`cache_read`,`cache_creation`,`output`],ql=class extends N{constructor(...e){super(...e),this.journal=[],this.top=5}static{this.styles=[V,oi,k` :host{display:block;}.kinds{display:grid;grid-template-columns:minmax(70px,max-content) minmax(0,420px) max-content max-content;justify-content:start;gap:8px 14px;align-items:center;}.kind{font-family:var(--mono);font-size:12px;color:var(--text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.bar{display:flex;height:12px;border-radius:4px;overflow:hidden;background:var(--track);}.bar i{display:block;height:100%;}.num{font-variant-numeric:tabular-nums;text-align:right;font-size:12px;white-space:nowrap;}.share{color:var(--text-muted);min-width:3.5em;}.seg-input{background:var(--tok-input);}.seg-cache_read{background:var(--tok-cache-read);}.seg-cache_creation{background:var(--tok-cache-write);}.seg-output{background:var(--tok-output);}.legend{margin-top:10px;}h4{margin:16px 0 6px;font-size:12px;color:var(--text-2);font-weight:600;}.top{display:grid;grid-template-columns:minmax(0,max-content) 64px 64px max-content;column-gap:20px;row-gap:4px;align-items:baseline;}.top a{font-family:var(--mono);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}`]}partLabel(e){switch(e){case`input`:return D(`input`);case`cache_read`:return D(`cache read`);case`cache_creation`:return D(`cache write`);case`output`:return D(`output`)}}bar(e,t){let n=we(e),r=t?100*n/t:0;return A`<div class="bar" title=${K(...Kl.map(t=>`${this.partLabel(t)} ${Y(e[t])}`))} style="width:${Math.max(r,.5).toFixed(2)}%">
349
- ${Kl.map(t=>e[t]&&n?A`<i class="seg-${t}" style="width:${(100*e[t]/n).toFixed(2)}%"></i>`:M)}
348
+ ${(e.children??[]).map(e=>this.node(e,t+1))}`}};function zl(e,t,n){let r=n.toLowerCase();return e.filter(e=>(!t||e.kind===t)&&(!r||`${e.kind} ${e.unit} ${(e.claims??[]).join(` `)} ${e.key} ${e.last_stop}`.toLowerCase().includes(r)))}U([F({attribute:!1})],Rl.prototype,`procs`,void 0),Rl=U([P(`ca-proc-tree`),O()],Rl),z(`cae-stat-tiles`,_a),z(`cae-count`,la);var Bl={failed:0,not_started:1,partial:2,running:3,waiting:4};function Vl(e){return e.map((e,t)=>({t:e,i:t})).sort((e,t)=>(Bl[e.t.outcome]??9)-(Bl[t.t.outcome]??9)||t.t.last_ts.localeCompare(e.t.last_ts)||e.i-t.i).map(e=>e.t)}var Hl=[`key`,`unit`,`stop`,`kind`,`route`,`reason`],Ul=e=>new Set(m(e).map(e=>e.key)),Wl=e=>Math.max((e.rounds??1)-1,0)+(e.hook_errors??[]).length,Gl=e=>Wl(e)>0;function Kl(e,t,n,r){let i=r.toLowerCase(),a=n===`retried`?Ul(e):null;return e.filter(e=>!(n===`bad`&&!se(e))&&!(n===`fixup`&&!Gl(e))&&!(a&&!a.has(e.key))&&!(n===`replayed`&&!e.replayed)&&!(n&&![`bad`,`fixup`,`retried`,`replayed`].includes(n)&&e.stop!==n)&&(!t||e.kind===t)&&(!i||Hl.some(t=>String(e[t]??``).toLowerCase().includes(i))))}function ql(e){let t=new Map;for(let n of e)t.set(n.stop||`?`,(t.get(n.stop||`?`)??0)+1);return[...t.entries()].sort((e,t)=>t[1]-e[1])}function Jl(e){let t=new Map;return e.forEach((e,n)=>{let r=t.get(e.key)??{count:0,lastOk:-1,lastOkTry:0};f(e)&&r.count++,e.ok&&(r.lastOk=n,r.lastOkTry=(e.attempt??0)+1),t.set(e.key,r)}),t}function Yl(e){let t=e.filter(f),n=t.filter(w),r=t.filter(e=>!w(e)),i=e=>e.reduce((e,t)=>e+(t.wall_s||0),0),a=e=>[...new Set(e.map(e=>e.key))],o=e=>a(e).length,s=m(e),c=t.filter(Gl),l=t.filter(e=>(e.hops||[]).length>1);return{attempts:t.length,python:n.length,launches:r.length,bad:t.filter(e=>!e.ok).length,launchWall:i(r),pythonWall:i(n),retries:s.length,retriedTasks:o(s),retriedKeys:a(s),fixupKeys:a(c),fixups:c.reduce((e,t)=>e+Wl(t),0),fixupTasks:o(c),switches:l.reduce((e,t)=>e+(t.hops||[]).length-1,0),switchTasks:o(l)}}function Xl(e){return e.startsWith(`task:`)?{key:e.slice(5)}:{stop:e.replace(/^history:/,``)}}function Zl(e){let t=!1,n=!1,r=!1;for(let i of e){if(i.outcome!==`not_started`)continue;let e=i.attempts[i.attempts.length-1],a=e?.stop===`invalid_input`?Re(e.reason):[];a.some(e=>e.problem===`missing`)&&(t=!0),a.some(e=>e.problem===`checks`)&&(n=!0),(a.some(e=>e.problem===`failed`)||!a.length&&i.cause)&&(r=!0)}return Qo(r?D(`Earlier task failed`):``,t?D(`Input missing`):``,n?D(`Input failed checks`):``)}var Ql=(e,t)=>({id:`history:${e}`,label:t});function $l(e,t,n,r){let i=t.length===1?t[0]:void 0;if(!i)return Ql(n,r);let a=e.find(e=>e.key===i);return{id:`task:${i}`,label:a?J(a):i}}function eu(e,t){let n=Yl(e),{outcomes:r,counts:i}=t,a=[{text:Z(`done`,i.doneTotal),tone:`neutral`},{text:i.skipped?Z(`skipped`,i.skipped):``,tone:`neutral`},{text:i.failed?Z(`failed`,i.failed):``,tone:os(i.failed,`failed`)},{text:i.not_started?Z(`not_started`,i.not_started):``,tone:os(i.not_started,`attention`)},{text:i.partial?Z(`partial`,i.partial):``,tone:os(i.partial,`attention`)},{text:i.cancelled?Z(`cancelled`,i.cancelled):``,tone:`neutral`}];return[{id:`tasks`,label:D(`Tasks`,{id:`tasks`}),value:i.total,sub:[a]},{id:`attempts`,label:D(`Attempts`),value:n.attempts,sub:[Qo(n.launches===1?D(`1 agent session`):D(E`${n.launches} agent sessions`),n.python===1?D(`1 Python task attempt`):D(E`${n.python} Python task attempts`))],tip:D(`Attempts that ran, retries included (journal.jsonl)`)},...tu(e),{id:`bad`,tone:os(n.bad,`failed`),label:D(`Failed attempts`),value:n.bad,sub:[n.bad?[]:[D(`All attempts done`)]],...n.bad?{action:Ql(`bad`,D(`Failed attempts in history`))}:{}},{id:`notstarted`,tone:os(i.not_started,`attention`),label:D(`Not started`),value:i.not_started,sub:[i.not_started?Zl(r.values()):[D(`All tasks started`)]],...i.not_started?{action:Ql(`invalid_input`,D(`Tasks not started in history`))}:{}},{id:`wall`,label:D(`Agent session time`),value:B(n.launchWall),sub:[[D(E`Python tasks: ${B(n.pythonWall)}`)]],tip:D(`Summed over agent sessions, including sessions that ran at once`)},{id:`retry`,label:D(`Retries`),value:n.retries,sub:[[n.retries?n.retriedTasks===1?D(`1 task retried`):D(E`${n.retriedTasks} tasks retried`):D(`No retries`)]],tip:gs(),...n.retries?{action:$l(e,n.retriedKeys,`retried`,D(`Retried tasks in history`))}:{}},{id:`ct`,label:D(`Corrections`),value:n.fixups,sub:[[n.fixups?n.fixupTasks===1?D(`1 task with a correction`):D(E`${n.fixupTasks} tasks with corrections`):D(`No corrections`)]],tip:Zs(),...n.fixups?{action:$l(e,n.fixupKeys,`fixup`,D(`Attempts with corrections in history`))}:{}},{id:`fo`,label:D(`Model switches`),value:n.switches,sub:[[n.switches?n.switchTasks===1?D(`1 task with a model switch`):D(E`${n.switchTasks} tasks with model switches`):D(`No model switches`)]],tip:Ks()}]}function tu(e){let t=Ee(e);if(!t)return[];let n=Oe(e)[0];return[{id:`cost`,label:D(`Cost`),value:X(t.cost),sub:n&&n.share!==null?[[D(E`Highest cost: ${n.kind}`)],Qo(X(n.spend.cost),D(E`${Math.round(100*n.share)}% of the total`))]:[[]],tip:D(`Reported by the coding agent`)},{id:`tokens`,label:D(`Tokens`),value:Y(we(t)),sub:[Qo(D(E`${Y(t.input)} input`),D(E`${Y(t.output)} output`),D(E`${Y(t.cache_read+t.cache_creation)} cache`))],tip:K(D(E`${Y(t.cache_read)} cache read`),D(E`${Y(t.cache_creation)} cache write`),t.calls===1?D(`1 API call`):D(E`${t.calls} API calls`))}]}var nu=class extends N{constructor(...e){super(...e),this.journal=[],this.plan={nodes:[],groups:[]},this.onAction=e=>{e.stopPropagation();let t=Xl(e.detail.action);`key`in t?$(this,`ca-open-task`,{key:t.key}):$(this,`ca-navigate`,{tab:`journal`,stop:t.stop})}}static{this.styles=k` :host{display:block;}`}render(){return A`<cae-stat-tiles exportparts="tiles, tile, label, value, sub, action" .tiles=${eu(this.journal,S(this.journal,this.plan))} @cae-action=${this.onAction}></cae-stat-tiles>`}};U([F({attribute:!1})],nu.prototype,`journal`,void 0),U([F({attribute:!1})],nu.prototype,`plan`,void 0),nu=U([P(`ca-kpis`),O()],nu);var ru=[`input`,`cache_read`,`cache_creation`,`output`],iu=class extends N{constructor(...e){super(...e),this.journal=[],this.top=5}static{this.styles=[V,oi,k` :host{display:block;}.kinds{display:grid;grid-template-columns:minmax(70px,max-content) minmax(0,420px) max-content max-content;justify-content:start;gap:8px 14px;align-items:center;}.kind{font-family:var(--mono);font-size:12px;color:var(--text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.bar{display:flex;height:12px;border-radius:4px;overflow:hidden;background:var(--track);}.bar i{display:block;height:100%;}.num{font-variant-numeric:tabular-nums;text-align:right;font-size:12px;white-space:nowrap;}.share{color:var(--text-muted);min-width:3.5em;}.seg-input{background:var(--tok-input);}.seg-cache_read{background:var(--tok-cache-read);}.seg-cache_creation{background:var(--tok-cache-write);}.seg-output{background:var(--tok-output);}.legend{margin-top:10px;}h4{margin:16px 0 6px;font-size:12px;color:var(--text-2);font-weight:600;}.top{display:grid;grid-template-columns:minmax(0,max-content) 64px 64px max-content;column-gap:20px;row-gap:4px;align-items:baseline;}.top a{font-family:var(--mono);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}`]}partLabel(e){switch(e){case`input`:return D(`input`);case`cache_read`:return D(`cache read`);case`cache_creation`:return D(`cache write`);case`output`:return D(`output`)}}bar(e,t){let n=we(e),r=t?100*n/t:0;return A`<div class="bar" title=${K(...ru.map(t=>`${this.partLabel(t)} ${Y(e[t])}`))} style="width:${Math.max(r,.5).toFixed(2)}%">
349
+ ${ru.map(t=>e[t]&&n?A`<i class="seg-${t}" style="width:${(100*e[t]/n).toFixed(2)}%"></i>`:M)}
350
350
  </div>`}render(){if(!Ee(this.journal))return A`<div class="meta">${D(`No tokens reported`)}</div>`;let e=Oe(this.journal),t=Math.max(1,...e.map(e=>we(e.spend))),n=(r=this.journal,De(r,e=>e.key)).slice(0,this.top);var r;return A`<div class="kinds">
351
351
  ${H(e,e=>e.id,e=>A`<span class="kind" title=${e.id}>${e.id}</span>${this.bar(e.spend,t)}
352
352
  <span class="num">${K(Y(we(e.spend)),X(e.spend.cost))}</span>
353
353
  <span class="num share">${e.share===null?``:`${Math.round(100*e.share)}%`}</span>`)}
354
354
  </div>
355
- ${ai(Kl.map(e=>({label:this.partLabel(e),cls:`seg-${e}`})))}
355
+ ${ai(ru.map(e=>({label:this.partLabel(e),cls:`seg-${e}`})))}
356
356
  <h4>${D(`Most expensive tasks`)}</h4>
357
357
  <div class="top">
358
358
  ${n.map(e=>A`<a class="lnk" href="#" title=${e.id} @click=${t=>{t.preventDefault(),$(this,`ca-open-task`,{key:e.id})}}>${J(e)}</a>
359
359
  <span class="num">${Y(we(e.spend))}</span>
360
360
  <span class="num">${X(e.spend.cost)}</span>
361
361
  <span class="num share">${e.share===null?``:D(E`${Math.round(100*e.share)}%`)}</span>`)}
362
- </div>`}};U([F({attribute:!1})],ql.prototype,`journal`,void 0),U([F({type:Number})],ql.prototype,`top`,void 0),ql=U([P(`ca-spend-breakdown`),O()],ql);var Jl=6,Yl=`var(--meter)`,Xl=e=>`${e.agent}/${e.model}`;function Zl(e){let t=e.length>6?5:6;return new Map(e.map((e,n)=>[Xl(e),n<t?`var(--series-${n+1})`:Yl]))}function Ql(e,t){let n=Zl(e),r=[],i=0;for(let a of e){let e=Ae(a,t)??0,o=n.get(Xl(a));o===`var(--meter)`?i+=e:r.push({id:Xl(a),label:a.model,value:e,color:o,text:xc(a,t)})}return e.length>6&&r.push({id:`other`,label:D(`Other models`),value:i,color:Yl}),r}function $l(e,t){let n=Zl(e),r=e.map(e=>Ae(e,t)??0),i=si(r),a=r.some(e=>e>0);return e.map((e,t)=>({id:Xl(e),usage:e,colour:n.get(Xl(e)),share:a?ci(i[t],r[t]):`—`}))}var eu=[`cost`,`tokens`,`time`,`sessions`],tu=class extends N{constructor(...e){super(...e),this.models=[],this.measure=``}static{this.styles=[V,li,k` :host{display:block;}.head{display:flex;justify-content:flex-end;margin-bottom:10px;overflow-x:auto;}.head cae-segmented{flex:none;}.wrap{overflow-x:auto;margin-top:14px;border-radius:6px;}.wrap:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}table{border-collapse:collapse;font-size:12px;font-variant-numeric:tabular-nums;}th{font-weight:500;color:var(--text-muted);text-align:right;padding:0 0 6px 28px;white-space:nowrap;border-bottom:1px solid var(--line);}th:first-child{text-align:left;padding-left:0;}th.on{color:var(--text);font-weight:600;}td{padding:7px 0 7px 28px;text-align:right;white-space:nowrap;color:var(--text-2);vertical-align:top;}tr + tr td{border-top:1px solid var(--line);}td:first-child{text-align:left;padding-left:0;}td.on{color:var(--text);}td.share{color:var(--text);font-weight:600;}.model{display:grid;grid-template-columns:10px max-content;column-gap:8px;align-items:baseline;}.model i{width:10px;height:10px;border-radius:3px;align-self:center;}.model b{font-family:var(--mono);font-weight:500;color:var(--text);}.model small{grid-column:2;font-size:11px;color:var(--text-muted);}`]}chosen(){let e=je(this.models);return this.measure&&e.includes(this.measure)?this.measure:e[0]??`sessions`}render(){if(!this.models.length)return A`<div class="meta">${D(`No agent sessions`)}</div>`;let e=this.chosen(),t=je(this.models),n=$l(this.models,e),r=this.models.some(e=>e.peak_context!=null);return A`${t.length>1?A`<div class="head">
363
- <cae-segmented label=${D(`Measure`)} .value=${e} .options=${t.map(e=>({value:e,label:yc(e),title:bc(e)}))} @cae-change=${e=>this.measure=e.detail.value}></cae-segmented>
362
+ </div>`}};U([F({attribute:!1})],iu.prototype,`journal`,void 0),U([F({type:Number})],iu.prototype,`top`,void 0),iu=U([P(`ca-spend-breakdown`),O()],iu);var au=6,ou=`var(--meter)`,su=e=>`${e.agent}/${e.model}`;function cu(e){let t=e.length>6?5:6;return new Map(e.map((e,n)=>[su(e),n<t?`var(--series-${n+1})`:ou]))}function lu(e,t){let n=cu(e),r=[],i=0;for(let a of e){let e=Ae(a,t)??0,o=n.get(su(a));o===`var(--meter)`?i+=e:r.push({id:su(a),label:a.model,value:e,color:o,text:Sc(a,t)})}return e.length>6&&r.push({id:`other`,label:D(`Other models`),value:i,color:ou}),r}function uu(e,t){let n=cu(e),r=e.map(e=>Ae(e,t)??0),i=si(r),a=r.some(e=>e>0);return e.map((e,t)=>({id:su(e),usage:e,colour:n.get(su(e)),share:a?ci(i[t],r[t]):`—`}))}var du=[`cost`,`tokens`,`time`,`sessions`],fu=class extends N{constructor(...e){super(...e),this.models=[],this.measure=``}static{this.styles=[V,li,k` :host{display:block;}.head{display:flex;justify-content:flex-end;margin-bottom:10px;overflow-x:auto;}.head cae-segmented{flex:none;}.wrap{overflow-x:auto;margin-top:14px;border-radius:6px;}.wrap:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}table{border-collapse:collapse;font-size:12px;font-variant-numeric:tabular-nums;}th{font-weight:500;color:var(--text-muted);text-align:right;padding:0 0 6px 28px;white-space:nowrap;border-bottom:1px solid var(--line);}th:first-child{text-align:left;padding-left:0;}th.on{color:var(--text);font-weight:600;}td{padding:7px 0 7px 28px;text-align:right;white-space:nowrap;color:var(--text-2);vertical-align:top;}tr + tr td{border-top:1px solid var(--line);}td:first-child{text-align:left;padding-left:0;}td.on{color:var(--text);}td.share{color:var(--text);font-weight:600;}.model{display:grid;grid-template-columns:10px max-content;column-gap:8px;align-items:baseline;}.model i{width:10px;height:10px;border-radius:3px;align-self:center;}.model b{font-family:var(--mono);font-weight:500;color:var(--text);}.model small{grid-column:2;font-size:11px;color:var(--text-muted);}`]}chosen(){let e=je(this.models);return this.measure&&e.includes(this.measure)?this.measure:e[0]??`sessions`}render(){if(!this.models.length)return A`<div class="meta">${D(`No agent sessions`)}</div>`;let e=this.chosen(),t=je(this.models),n=uu(this.models,e),r=this.models.some(e=>e.peak_context!=null);return A`${t.length>1?A`<div class="head">
363
+ <cae-segmented label=${D(`Measure`)} .value=${e} .options=${t.map(e=>({value:e,label:bc(e),title:xc(e)}))} @cae-change=${e=>this.measure=e.detail.value}></cae-segmented>
364
364
  </div>`:M}
365
365
  ${function(e,t={}){let n=e.filter(e=>e.value>0),r=si(n.map(e=>e.value)),i=n.reduce((e,t)=>e+t.value,0),a=t.labelAt??.15,o=(e,t)=>[e.label,ci(r[t],e.value),e.text].filter(Boolean).join(` | `);return A`<div class="share" part="share">
366
366
  <div class="share-bar" role="list" aria-label=${t.label||M}>
@@ -369,16 +369,16 @@ ${n.map((e,t)=>A`<span class="share-seg" role="listitem" tabindex="0" aria-label
369
369
  <div class="share-names" aria-hidden="true">
370
370
  ${n.map((e,t)=>A`<span style=${ii({flexGrow:String(e.value/i)})} >${e.value/i>=a?A`<b>${e.label}</b> ${ci(r[t],e.value)}`:M}</span>`)}
371
371
  </div>
372
- </div>`}(Ql(this.models,e),{label:yc(e)})}
372
+ </div>`}(lu(this.models,e),{label:bc(e)})}
373
373
  <div class="wrap" data-scroll="x" tabindex="0" role="region" aria-label=${D(`Models`)}>
374
374
  <table>
375
375
  <thead>
376
376
  <tr>
377
377
  <th scope="col">${D(`Model`)}</th>
378
- <th scope="col" class="on" title=${yc(e)}>${D(`Share`)}</th>
379
- ${eu.map(t=>A`<th scope="col" class=${t===e?`on`:M} title=${bc(t)}>${yc(t)}</th>`)}
378
+ <th scope="col" class="on" title=${bc(e)}>${D(`Share`)}</th>
379
+ ${du.map(t=>A`<th scope="col" class=${t===e?`on`:M} title=${xc(t)}>${bc(t)}</th>`)}
380
380
  <th scope="col">${D(`API calls`)}</th>
381
- ${r?A`<th scope="col" title=${Hc()}>${Vc()}</th>`:M}
381
+ ${r?A`<th scope="col" title=${Uc()}>${Hc()}</th>`:M}
382
382
  </tr>
383
383
  </thead>
384
384
  <tbody>
@@ -387,13 +387,13 @@ ${H(n,e=>e.id,t=>A`<tr>
387
387
  <span class="model"><i style=${ii({background:t.colour})}></i><b>${t.usage.model}</b><small>${t.usage.agent}</small></span>
388
388
  </td>
389
389
  <td class="share">${t.share}</td>
390
- ${eu.map(n=>A`<td class=${n===e?`on`:M}>${xc(t.usage,n)}</td>`)}
390
+ ${du.map(n=>A`<td class=${n===e?`on`:M}>${Sc(t.usage,n)}</td>`)}
391
391
  <td>${t.usage.calls??0}</td>
392
392
  ${r?A`<td>${t.usage.peak_context==null?`—`:Y(t.usage.peak_context)}</td>`:M}
393
393
  </tr>`)}
394
394
  </tbody>
395
395
  </table>
396
- </div>`}};U([F({attribute:!1})],tu.prototype,`models`,void 0),U([I()],tu.prototype,`measure`,void 0),tu=U([P(`ca-model-usage`),O()],tu);var nu=class extends N{static{this.styles=[V,k` :host{display:block;container-type:inline-size;}.rows{display:grid;grid-template-columns:max-content minmax(70px,420px) max-content max-content;justify-content:start;gap:10px 14px;align-items:center;}.name{font-size:12px;color:var(--text-2);white-space:nowrap;}.bar{position:relative;height:12px;border-radius:4px;background:var(--track);overflow:hidden;}.bar i{position:absolute;top:0;bottom:0;}.bar .before{left:0;background:var(--meter);opacity:0.45;}.bar .during{background:var(--meter);}.bar.hot .during,.bar.full .during,.bar.hot .before,.bar.full .before{background:var(--status-attention);}.bar .cap{width:2px;margin-left:-1px;background:var(--text);opacity:0.7;}.val.hot b,.val.full b{color:var(--status-attention);}.val{font-family:var(--mono);font-size:12px;font-variant-numeric:tabular-nums;white-space:nowrap;}.val b{color:var(--text);}.val .lim{color:var(--text-muted);}.reset{font-size:11.5px;color:var(--text-muted);white-space:nowrap;}@container (max-width:460px){.rows{grid-template-columns:max-content minmax(70px,1fr) max-content;row-gap:2px;}.reset{grid-column:2 / -1;margin-bottom:6px;}}.status{margin-top:8px;}.acct{padding:10px 0;border-top:1px solid var(--line);}.acct:first-child{border-top:0;padding-top:0;}.acct-h{display:flex;align-items:baseline;flex-wrap:wrap;gap:8px;margin-bottom:8px;font-size:12px;}.acct-h i{font-style:normal;color:var(--text-muted);font-size:11px;}.acct-h b{font-family:var(--mono);color:var(--text);font-weight:600;}.rests{margin:8px 0 0;padding:0;list-style:none;font-size:11.5px;color:var(--text-2);}.rests li{padding:2px 0;}.rule{margin-bottom:10px;font-size:12px;color:var(--text-2);}.rule code{font-family:var(--mono);color:var(--text);}`]}constructor(){super(),this.journal=[],this.accounts=null,this.caps=[],this.rests=[],this.rule=``,this.live=!1,new Fr(this)}row(e,t,n,r,i){let a=n[`${e}_pct`],o=r[`${e}_pct`];if(a==null&&o==null)return M;let s=Math.max(0,Math.min(100,a??o??0)),c=Math.max(s,Math.min(100,o??s)),l=r[`${e}_resets_at`],u=c>=100||i!=null&&c>=i?`full`:c>=80?`hot`:``,d=i==null?``:Rs(i);return A`<span class="name">${t}</span>
396
+ </div>`}};U([F({attribute:!1})],fu.prototype,`models`,void 0),U([I()],fu.prototype,`measure`,void 0),fu=U([P(`ca-model-usage`),O()],fu);var pu=class extends N{static{this.styles=[V,k` :host{display:block;container-type:inline-size;}.rows{display:grid;grid-template-columns:max-content minmax(70px,420px) max-content max-content;justify-content:start;gap:10px 14px;align-items:center;}.name{font-size:12px;color:var(--text-2);white-space:nowrap;}.bar{position:relative;height:12px;border-radius:4px;background:var(--track);overflow:hidden;}.bar i{position:absolute;top:0;bottom:0;}.bar .before{left:0;background:var(--meter);opacity:0.45;}.bar .during{background:var(--meter);}.bar.hot .during,.bar.full .during,.bar.hot .before,.bar.full .before{background:var(--status-attention);}.bar .cap{width:2px;margin-left:-1px;background:var(--text);opacity:0.7;}.val.hot b,.val.full b{color:var(--status-attention);}.val{font-family:var(--mono);font-size:12px;font-variant-numeric:tabular-nums;white-space:nowrap;}.val b{color:var(--text);}.val .lim{color:var(--text-muted);}.reset{font-size:11.5px;color:var(--text-muted);white-space:nowrap;}@container (max-width:460px){.rows{grid-template-columns:max-content minmax(70px,1fr) max-content;row-gap:2px;}.reset{grid-column:2 / -1;margin-bottom:6px;}}.status{margin-top:8px;}.acct{padding:10px 0;border-top:1px solid var(--line);}.acct:first-child{border-top:0;padding-top:0;}.acct-h{display:flex;align-items:baseline;flex-wrap:wrap;gap:8px;margin-bottom:8px;font-size:12px;}.acct-h i{font-style:normal;color:var(--text-muted);font-size:11px;}.acct-h b{font-family:var(--mono);color:var(--text);font-weight:600;}.rests{margin:8px 0 0;padding:0;list-style:none;font-size:11.5px;color:var(--text-2);}.rests li{padding:2px 0;}.rule{margin-bottom:10px;font-size:12px;color:var(--text-2);}.rule code{font-family:var(--mono);color:var(--text);}`]}constructor(){super(),this.journal=[],this.accounts=null,this.caps=[],this.rests=[],this.rule=``,this.live=!1,new Fr(this)}row(e,t,n,r,i){let a=n[`${e}_pct`],o=r[`${e}_pct`];if(a==null&&o==null)return M;let s=Math.max(0,Math.min(100,a??o??0)),c=Math.max(s,Math.min(100,o??s)),l=r[`${e}_resets_at`],u=c>=100||i!=null&&c>=i?`full`:c>=80?`hot`:``,d=i==null?``:Rs(i);return A`<span class="name">${t}</span>
397
397
  <span class="bar ${u}" title=${d?`${Ds(a)} → ${Ds(o)} | ${d}`:`${Ds(a)} → ${Ds(o)}`}>
398
398
  <i class="before" style="width:${s}%"></i>
399
399
  <i class="during" style="left:${s}%;width:${c-s}%"></i>
@@ -410,76 +410,76 @@ ${this.restList(a)}
410
410
  </div>`})}${this.unread(e,t)}`}restList(e){return e.length?A`<ul class="rests" title="rests.jsonl">${e.map(e=>A`<li>${function(e){let t=e.ended?D(E`Paused ${G(e.since)} → ${G(e.ended)}`):D(E`Paused since ${G(e.since)}`);return e.stop?K(t,zs(e)):K(t,e.rule?D(E`Usage rule: ${e.rule}`):K(Is(e.window??``,e.pct),Rs(e.cap)))}(e)}</li>`)}</ul>`:M}unread(e,t){let n=new Set(e.map(e=>e.credential));return[...new Set(this.rests.map(e=>e.credential))].filter(e=>!n.has(e)).map(e=>{let n=this.rests.filter(t=>t.credential===e),r=t.get(e);return A`<div class="acct">
411
411
  <div class="acct-h"><i>${D(`Identity`)}</i><b>${Ts(e)}</b>${this.paused(n)}${r?A`<i title="max_five_hour_pct, max_seven_day_pct">${Gs(r)}</i>`:M}</div>
412
412
  ${this.restList(n)}
413
- </div>`})}};U([F({attribute:!1})],nu.prototype,`journal`,void 0),U([F({attribute:!1})],nu.prototype,`accounts`,void 0),U([F({attribute:!1})],nu.prototype,`caps`,void 0),U([F({attribute:!1})],nu.prototype,`rests`,void 0),U([F()],nu.prototype,`rule`,void 0),U([F({type:Boolean})],nu.prototype,`live`,void 0),nu=U([P(`ca-quota`),O()],nu);var ru={running:`running`,stopped:`done`,failed:`failed`,unknown:`muted`},iu=class extends N{constructor(...e){super(...e),this.services=[],this.nodes=[],this.live=!1}static{this.styles=[V,k` :host{display:block;}ul{margin:0;padding:0;list-style:none;display:grid;gap:8px;}li{display:grid;grid-template-columns:max-content 1fr;column-gap:10px;row-gap:2px;align-items:baseline;font-size:12px;}.name{font-family:var(--mono);color:var(--text);overflow-wrap:anywhere;}.addr{font-family:var(--mono);color:var(--text-2);overflow-wrap:anywhere;}.facts{grid-column:2;color:var(--text-2);overflow-wrap:anywhere;}.by{grid-column:2;}`]}render(){if(!this.services.length)return A`<div class="meta">${D(`No services`)}</div>`;let e=new Map(this.nodes.map(e=>[e.key,e]));return A`<ul>
413
+ </div>`})}};U([F({attribute:!1})],pu.prototype,`journal`,void 0),U([F({attribute:!1})],pu.prototype,`accounts`,void 0),U([F({attribute:!1})],pu.prototype,`caps`,void 0),U([F({attribute:!1})],pu.prototype,`rests`,void 0),U([F()],pu.prototype,`rule`,void 0),U([F({type:Boolean})],pu.prototype,`live`,void 0),pu=U([P(`ca-quota`),O()],pu);var mu={running:`running`,stopped:`done`,failed:`failed`,unknown:`muted`},hu=class extends N{constructor(...e){super(...e),this.services=[],this.nodes=[],this.live=!1}static{this.styles=[V,k` :host{display:block;}ul{margin:0;padding:0;list-style:none;display:grid;gap:8px;}li{display:grid;grid-template-columns:max-content 1fr;column-gap:10px;row-gap:2px;align-items:baseline;font-size:12px;}.name{font-family:var(--mono);color:var(--text);overflow-wrap:anywhere;}.addr{font-family:var(--mono);color:var(--text-2);overflow-wrap:anywhere;}.facts{grid-column:2;color:var(--text-2);overflow-wrap:anywhere;}.by{grid-column:2;}`]}render(){if(!this.services.length)return A`<div class="meta">${D(`No services`)}</div>`;let e=new Map(this.nodes.map(e=>[e.key,e]));return A`<ul>
414
414
  ${this.services.map(t=>{let n=function(e,t){return e.start_error?`failed`:e.stopped_at?`stopped`:t?`running`:`unknown`}(t,this.live),r=t.key?e.get(t.key):void 0;return A`<li>
415
- ${Qr({text:mc(n),tone:ru[n]})}
415
+ ${Qr({text:hc(n),tone:mu[n]})}
416
416
  <div><span class="name" title="services.jsonl">${t.name}</span>${t.address?A` <span class="addr">${t.address}</span>`:M}</div>
417
417
  <div class="facts">${function(e){return e.start_error?K(G(e.started_at),e.start_error):K(D(E`Started ${G(e.started_at)} in ${B(e.start_s??0)}`),e.stopped_at?D(E`Stopped ${G(e.stopped_at)}`):``,function(e){switch(e){case`run_end`:return D(`The run ended`);case`interrupted`:return D(`The run was stopped by a signal`);default:return``}}(e.stop_cause),e.stop_error?D(`Stop failed`):``,e.stop_error)}(t)}</div>
418
- ${t.key?A`<div class="by">${bl(this,r?J(r):t.key,r??{key:t.key})}</div>`:M}
418
+ ${t.key?A`<div class="by">${xl(this,r?J(r):t.key,r??{key:t.key})}</div>`:M}
419
419
  </li>`})}
420
- </ul>`}};U([F({attribute:!1})],iu.prototype,`services`,void 0),U([F({attribute:!1})],iu.prototype,`nodes`,void 0),U([F({type:Boolean})],iu.prototype,`live`,void 0),iu=U([P(`ca-services`),O()],iu),z(`cae-mark-matrix`,to),z(`cae-layered-graph`,zo);var au=`loop:`,ou=[`given`,`after`,`created`],su=(e,t,n)=>{let r=e.get(t);r?r.push(n):e.set(t,[n])},cu=e=>typeof e==`string`;function lu(e){let t=e.flow_calls;return Array.isArray(t)&&t.length!==0?new Map(t.filter(e=>e&&cu(e.id)&&cu(e.function)).map(e=>[e.id,e])):null}var uu=new WeakMap;function du(e){let t=uu.get(e);if(t)return t;let n=e.nodes.map(e=>{let t=function(e){let t=e.flow;if(!Array.isArray(t))return[];let n=[];for(let e of t){let t=e;if(!t||typeof t!=`object`||!cu(t.function))break;let r=(Array.isArray(t.loops)?t.loops:[]).filter(e=>!!e&&typeof e.line==`number`);n.push({function:t.function,file:cu(t.file)?t.file:``,line:typeof t.line==`number`?t.line:0,loops:r.map(e=>e.line),passes:r.map(e=>typeof e.pass==`number`&&e.pass>=1?e.pass:1)})}return n}(e),n=e.created_from;return{n:e,frames:t,path:t.map(e=>e.function),from:Array.isArray(n)?n.filter(cu):[],call:cu(e.flow_call)?e.flow_call:``}}),r=new Map;for(let t of e.nodes)t.unit&&!r.has(t.unit)&&r.set(t.unit,r.size);let i={tasks:n,byKey:new Map(n.map(e=>[e.n.key,e])),calls:lu(e),unitRank:r,labels:new Map(e.groups.map(e=>[e.id,e.label]))};return uu.set(e,i),i}var fu=(e,t)=>t.every((t,n)=>e[n]===t),pu=e=>e.slice(e.lastIndexOf(`.`)+1)||e,mu=(e,t)=>t>0?e.frames[t-1]?.loops??[]:[],hu=(e,t)=>t>0?e.frames[t-1]?.passes??[]:[];function gu(e,t){for(let n=0;n<Math.max(e.length,t.length);n++){let r=(e[n]??0)-(t[n]??0);if(r)return r}return 0}var _u=e=>e.map((t,n)=>`${au}${e.slice(0,n+1).join(`.`)}`);function vu(e,t){let n=mu(e,t),r=n.length?`@${n.join(`.`)}`:``;if(e.path.length<=t)return{id:`kind:${e.n.group}${r}`,type:`kind`,name:e.n.group,loops:n};let i=e.path[t];return{id:`flow:${i}${r}`,type:`flow`,name:i,loops:n}}function yu(e,t,n){if(!e.call)return{id:`>${t}`,own:!1};let r=e.call.split(`.`),i=r.map((e,t)=>r.slice(0,t+1).join(`.`)),a=0,o=0;if(n)for(let r=1;r<i.length;r++){let s=n.get(i[r])?.function,c=s===void 0?-1:e.frames.findIndex((e,t)=>t>o&&e.function===s);if(c<0||c>t)break;a=r,o=c}else a=Math.min(t,i.length-1),o=a;let s=i[a];return o===t?{id:s,own:!0}:{id:`${s}>${t}`,own:!1}}var bu={failed:7,running:6,blocked:5,partial:4,pending:3,cancelled:2,skipped:1,done:0},xu=e=>e.reduce((e,t)=>bu[t.state]>bu[e]?t.state:e,`done`),Su=e=>e.reduce((e,t)=>bu[t]>bu[e]?t:e,`done`);function Cu(e){let t=e.filter(w).length;return t===0?`agent`:t===e.length?`python`:`mixed`}var wu={running:`running`,returned:`done`,raised:`failed`,closed:`failed`},Tu=e=>e?.state===`raised`||e?.state===`closed`;function Eu(e,t){let n=e.map(e=>e.n);return{key:(n.find(e=>e.state===`running`)??n[n.length-1]??{key:``}).key,unit:t,state:xu(n),count:n.length,keys:n.map(e=>e.key)}}function Du(e){let t=new Map,n=[];for(let r of e)r.n.unit?su(t,r.n.unit,r):n.push(Eu([r],``));return{byUnit:new Map([...t].map(([e,t])=>[e,Eu(t,e)])),single:n}}function Ou(e,t,n,r){let i=(e,t)=>{let i=e.map(e=>e.own?r?.get(e.id):void 0),a=e.map((e,t)=>{let n=i[t],r=xu(e.tasks.map(e=>e.n));return n&&wu[n.state]?Su([wu[n.state],r]):r}),o=e.flatMap(e=>e.tasks),s=o.map(e=>e.n.key),c=e.find((e,t)=>a[t]===`running`)??e[e.length-1],l=i.find(Tu),u={key:c?.id??``,unit:t,state:Su(a),count:s.length,keys:s,flow:n,counts:ku(o)},d=c?.own?r?.get(c.id)?.time_box:null,f=d?function(e){let t=Date.parse(e.started_at);return Number.isNaN(t)?``:new Date(t+1e3*e.deadline_s).toISOString()}(d):``,p=f?{...u,deadlineAt:f}:u;return l?{...p,error:l.error??``}:p},a=new Map,o=[],s=function(e,t,n){let r=new Map;for(let i of e){let{id:e,own:a}=yu(i,t,n);(r.get(e)??r.set(e,{id:e,own:a,tasks:[],unit:``}).get(e))?.tasks.push(i)}for(let e of r.values()){let t=new Set(e.tasks.map(e=>e.n.unit||``));e.unit=t.size===1?[...t][0]:``}return[...r.values()]}(e,t,r);for(let e of s)e.unit?su(a,e.unit,e):o.push(i([e],``));let c=r?s.filter(e=>e.own&&Tu(r.get(e.id))).length:0,l=s.map(e=>e.own?r?.get(e.id)?.time_box:null).find(e=>e)??null;return{byUnit:new Map([...a].map(([e,t])=>[e,i(t,e)])),single:o,calls:s.length,errors:c,timeBox:l}}function ku(e){let t={total:e.length,done:0,partial:0,failed:0,running:0,pending:0,skipped:0,blocked:0,cancelled:0};for(let n of e)t[n.n.state]+=1;return t}function Au(e,t){let n=new Map;for(let r of e){let e=r.n.unit||``,i=n.get(e);(!i||gu(hu(r,t),i)>0)&&n.set(e,hu(r,t))}return e.filter(e=>gu(hu(e,t),n.get(e.n.unit||``)??[])===0)}function ju(e,t){let n=new Map;for(let r of e){let e=r.n.unit||``;(n.get(e)??n.set(e,new Set).get(e))?.add(hu(r,t).join(`.`))}return new Map([...n].map(([e,t])=>[e,t.size]))}var Mu=(e,t)=>t&&t>1?{...e,passes:t}:e;function Nu(e,t){let n=du(e);return Pu(n,t,n.tasks.filter(e=>fu(e.path,t)))}function Pu(e,t,n){let r=t.length,i=new Map,a=new Map;for(let e of n){let t=vu(e,r);(i.get(t.id)??i.set(t.id,{...t,tasks:[]}).get(t.id))?.tasks.push(e),a.set(e.n.key,t.id)}let o=new Map,s=new Map,c=new Map,l=new Map;for(let t of i.values()){let n=_u(t.loops),i=n[n.length-1]??null;n.forEach((e,t)=>l.set(e,n[t-1]??null)),i&&c.set(t.id,i);let a=i?Au(t.tasks,r):t.tasks;s.set(t.id,a);let u=t.type===`kind`?Du(a):Ou(a,r,t.name,e.calls);if(i){let e=ju(t.tasks,r);u.byUnit=new Map([...u.byUnit].map(([t,n])=>[t,Mu(n,e.get(t))]))}o.set(t.id,u)}let u=[...new Set([...o.values()].flatMap(e=>[...e.byUnit.keys()]))].sort((t,n)=>(e.unitRank.get(t)??0)-(e.unitRank.get(n)??0)),d=new Map,f=new Map;for(let e of i.values()){let t=_u(e.loops);for(let n of e.tasks){let e=hu(n,r);t.forEach((t,r)=>{d.set(t,Math.max(d.get(t)??1,e[r]??1));let i=f.get(t)??f.set(t,new Map).get(t),a=n.n.unit||``;(i?.get(a)??i?.set(a,new Set).get(a))?.add(e.slice(0,r+1).join(`.`))})}}let p=new Set,m=new Map,h=new Map,g=n=>{let i=0;for(;i<r&&n.path[i]===t[i];)i++;let a=vu(n,i);return{id:`stub:${i}:${a.id}`,label:a.type===`kind`?e.labels.get(a.name)??a.name:pu(a.name)}};for(let t of n){let n=a.get(t.n.key),i=(i,o)=>{let s=a.get(i);if(s===n)return void(o!==`created`&&p.add(n));if(s!==void 0){let a=e.byKey.get(i),c=mu(a,r),l=mu(t,r),u=0;for(;u<c.length&&c[u]===l[u];)u++;let d=gu(hu(a,r).slice(0,u),hu(t,r).slice(0,u))===0,f=`${s}\0${n}\0${o}`,p=m.get(f)??m.set(f,{from:s,to:n,type:o,tasks:new Set,samePass:!1}).get(f);p?.tasks.add(t.n.key),p&&d&&(p.samePass=!0);return}let c=e.byKey.get(i);if(!c)return;let l=g(c),u=`${l.id}\0${n}\0${o}`;(h.get(u)??h.set(u,{...l,to:n,type:o,tasks:new Set}).get(u))?.tasks.add(t.n.key)};for(let e of t.n.given_from??[])i(e,`given`);for(let e of t.n.after??[])i(e,`after`);for(let e of t.from)i(e,`created`)}let _=(e,t)=>e<t?-1:+(e>t),v=[...m.values()].filter(e=>!Iu(e.type).some(t=>m.has(`${e.from}\0${e.to}\0${t}`))).sort((e,t)=>_(`${e.from}\0${e.to}\0${e.type}`,`${t.from}\0${t.to}\0${t.type}`)),y=[...h.values()].filter(e=>!Iu(e.type).some(t=>h.has(`${e.id}\0${e.to}\0${t}`))).sort((e,t)=>_(`${e.id}\0${e.to}\0${e.type}`,`${t.id}\0${t.to}\0${t.type}`)),b=[...l.keys()].map(e=>{let i=new Map;for(let[t,n]of f.get(e)??[])t&&i.set(n.size,(i.get(n.size)??0)+1);return{id:e,local:e,layer:[...t],loop:Number(e.slice(5).split(`.`).pop()),file:n[0]?.frames[r-1]?.file??``,parent:l.get(e)??null,passes:d.get(e)??1,spread:[...i].sort((e,t)=>e[0]-t[0]),layers:[]}});return{model:{path:[...t],nodes:[...i.values()].map(n=>{let r=o.get(n.id),i=r.byUnit.size>0;return{id:n.id,type:n.type,name:n.name,label:n.type===`kind`?e.labels.get(n.name)??n.name:pu(n.name),layer:[...t],kinds:[...new Set(n.tasks.map(e=>e.n.kind))],executor:n.type===`flow`?null:Cu(n.tasks.map(e=>e.n)),box:c.get(n.id)??null,units:i?u.map(e=>r.byUnit.get(e)??null):[],single:r.single,inOrder:p.has(n.id),counts:ku(s.get(n.id)??[]),calls:r.calls??0,errors:r.errors??0,timeBox:r.timeBox??null}}),boxes:b,fns:[],edges:v.map(e=>({from:e.from,to:e.to,tasks:e.tasks.size,type:e.type,samePass:e.samePass,back:!1})),stubs:y.map(e=>({id:e.id,label:e.label,to:e.to,tasks:e.tasks.size,type:e.type})),units:u},drafts:i,ix:e}}var Fu=e=>e===`given`?`solid`:e===`after`?`dotted`:`dashed`,Iu=e=>ou.slice(0,ou.indexOf(e));function Lu(e){return{nodes:e.nodes.map(e=>({id:e.id,cluster:e.box})),clusters:[...e.boxes.map(e=>({id:e.id,parent:e.parent,cycle:!0})),...e.fns.map(e=>({id:e.id,parent:e.parent,cycle:!1}))],edges:e.edges.map(e=>({from:e.from,to:e.to,style:Fu(e.type),ranks:e.samePass})),stubs:e.stubs.map(e=>({id:e.id,to:e.to,style:Fu(e.type)}))}}function Ru(e,t){let n=new Map(e.nodes.map(e=>[e.id,e])),r=new Map(t.clusters.map(e=>[e.id,e.layers]));return{...t,path:e.path,nodes:t.drawn.map(e=>n.get(e)),boxes:e.boxes.map(e=>({...e,layers:r.get(e.id)??[]})),fns:e.fns,edges:e.edges.map((e,n)=>({...e,back:t.back[n]??!1})),stubs:e.stubs,units:e.units}}var zu=`fx::`,Bu=(e,t)=>`${e.join(`/`)}/${t}`,Vu=e=>e?.state===`raised`||e?.state===`closed`;function Hu(e,t,n=!1){let r=t.length,i=new Map,a=new Set;if(e.calls)for(let t of e.calls.values())Vu(t)&&a.add(t.id);for(let o of e.tasks){if(!fu(o.path,t))continue;let e=o.n.state,s=!!o.call&&[...a].some(e=>o.call===e||o.call.startsWith(`${e}.`)),c=null;for(let t=r;t<o.path.length;t++){let a=vu(o,t),l=o.path.slice(0,t),u=Bu(l,a.id),d=i.get(u);if(!d){let e={total:0,done:0,partial:0,failed:0,running:0,pending:0,skipped:0,blocked:0,cancelled:0},n=t>0?o.frames[t-1]?.file??``:``;d={key:u,layer:l,id:a.id,name:a.name,depth:t-r,loops:a.loops,file:n,counts:e,tasks:0,agent:0,failed:0,running:0,stuck:0,errors:!1,kids:new Set,fns:new Set,parent:c},i.set(u,d)}d.tasks+=1,d.counts.total+=1,d.counts[e]+=1,w(o.n)||(d.agent+=1),e===`failed`?d.failed+=1:e===`running`?d.running+=1:(e===`blocked`||e===`pending`&&!n)&&(d.stuck+=1),s&&(d.errors=!0);let f=vu(o,t+1);d.kids.add(f.id),f.type===`flow`&&d.fns.add(Bu(o.path.slice(0,t+1),f.id)),c=u}}return i}function Uu(e,t=new Set){return Math.log2(1+e.tasks)+(e.failed||e.errors?4:0)+(e.running?3:0)+(e.stuck?1.5:0)+(t.has(e.key)?6:0)}var Wu=(e,t=new Set)=>e.agent>0||e.failed>0||e.errors||e.running>0||e.stuck>0||t.has(e.key),Gu=(e,t)=>Uu(e,t)-1.5*e.depth;function Ku(e,t,n){let r=new Set,i=[],a=n.closed??new Set,o=n.open??new Set,s=t,c=new Set([...e.values()].filter(e=>e.parent===null).map(e=>e.key));for(;c.size;){let t=null,l=-1/0;for(let r of c){let i=e.get(r),a=o.has(r)?1/0:Gu(i,n.toward);a>l&&(t=i,l=a)}if(!t)break;if(c.delete(t.key),a.has(t.key))continue;let u=t.kids.size-1;if(o.has(t.key)||n.all||!(s+u>n.budget)&&Wu(t,n.toward)){r.add(t.key),o.has(t.key)||i.push(t.key),s+=u;for(let e of t.fns)c.add(e)}}return{open:r,auto:i}}function qu(e,t){let n=new Set,r=null;e.startsWith(`fx::`)?r=e.slice(4).split(`#`)[0]??null:e.includes(`::`)&&(r=e.slice(0,e.lastIndexOf(`::`)));for(let e=r;e!==null&&t.has(e);e=t.get(e)?.parent??null)n.add(e);return n}function Ju(e,t,n){let r=du(e),i=t.length,a=r.tasks.filter(e=>fu(e.path,t)),o=Hu(r,t,n.live),s=new Set(a.map(e=>vu(e,i).id)).size,c=n.sel?qu(n.sel,o):n.toward,{open:l,auto:u}=Ku(o,s,{...n,toward:c}),d=Yu(r,t,a,o,l),f=e=>uo(lo(Lu(e))).span;if(n.maxSpan&&!n.all)for(;u.length&&f(d)>n.maxSpan;)l.delete(u.pop()),d=Yu(r,t,a,o,l);return{model:d,open:l,stats:o}}function Yu(e,t,n,r,i){let a=t.length,o=new Map,s=new Map([[``,[]]]);for(let e of n){let t=a,n=``;for(s.get(``)?.push(e);t<e.path.length;){let r=Bu(e.path.slice(0,t),vu(e,t).id);if(!i.has(r))break;n=r,su(s,r,e),t++}o.set(e.n.key,{key:n,depth:t})}let c=new Map,l=new Map;for(let[n,i]of s){let a=r.get(n),o=a?[...a.layer,a.name]:[...t];l.set(n,o),c.set(n,Pu(e,o,i))}let u=(e,t)=>e===``?t:`${e}::${t}`,d=e=>{let t=r.get(e);return(t?c.get(t.parent??``):void 0)?.model.nodes.find(e=>e.id===t?.id)},f=e=>(e=>{let t=r.get(e);if(!t||t.parent===null)return!1;let n=c.get(t.parent);if(!n)return!1;let i=n.model.nodes.filter(e=>e.type===`flow`);return i.length===1&&i[0]?.id===t.id&&!i[0]?.box})(e)?f(r.get(e).parent):`${zu}${e}`,p=[],m=[],h=new Map,g=new Set;for(let e of[...c.keys()].sort((e,t)=>e===``?-1:t===``?1:(r.get(e)?.depth??0)-(r.get(t)?.depth??0))){let t=c.get(e),n=l.get(e),a=e===``?null:f(e);if(e!==``){let t=d(e),n=r.get(e),i=t?{...t,id:u(n.parent??``,t.id)}:void 0,o={id:`${zu}${e}`,key:e,node:i};if(a===`fx::${e}`){let e=t?.box?u(n.parent??``,t.box):n.parent===null?null:f(n.parent);h.set(a,{id:a,parent:e,parts:[o]})}else h.get(a)?.parts.push(o)}for(let r of t.model.boxes)m.push({...r,id:u(e,r.id),parent:r.parent?u(e,r.parent):a,layer:n});for(let r of t.model.nodes)r.type===`flow`&&i.has(Bu(n,r.id))||p.push({...r,id:u(e,r.id),box:r.box?u(e,r.box):a,layer:n});for(let e of t.model.units)g.add(e)}let _=[...g].sort((t,n)=>(e.unitRank.get(t)??0)-(e.unitRank.get(n)??0)),v=new Map([...c].map(([e,t])=>[e,t.model.units]));for(let e of p){let t=e.id.includes(`::`)?e.id.slice(0,e.id.lastIndexOf(`::`)):``,n=v.get(t)??[];if(!e.units.length)continue;let r=new Map(n.map((t,n)=>[t,e.units[n]??null]));e.units=_.map(e=>r.get(e)??null)}let y=e=>{let t=o.get(e.n.key);return u(t.key,vu(e,t.depth).id)},b=e=>e.path.slice(0,o.get(e.n.key).depth),x=new Set,S=new Map,C=new Map;for(let r of n){let n=y(r),i=(i,o)=>{let s=e.byKey.get(i);if(!s)return;if(fu(s.path,t)){let e=y(s);if(e===n)return void(o!==`created`&&x.add(n));let t=b(s),i=b(r),a=0;for(;a<t.length&&a<i.length&&t[a]===i[a];)a++;let c=mu(s,a),l=mu(r,a),u=0;for(;u<c.length&&c[u]===l[u];)u++;let d=gu(hu(s,a).slice(0,u),hu(r,a).slice(0,u))===0,f=`${e}\0${n}\0${o}`,p=S.get(f)??S.set(f,{from:e,to:n,type:o,tasks:new Set,samePass:!1}).get(f);p?.tasks.add(r.n.key),p&&d&&(p.samePass=!0);return}let c=0;for(;c<a&&s.path[c]===t[c];)c++;let l=vu(s,c),u={id:`stub:${c}:${l.id}`,label:l.type===`kind`?e.labels.get(l.name)??l.name:pu(l.name)},d=`${u.id}\0${n}\0${o}`;(C.get(d)??C.set(d,{...u,to:n,type:o,tasks:new Set}).get(d))?.tasks.add(r.n.key)};for(let e of r.n.given_from??[])i(e,`given`);for(let e of r.n.after??[])i(e,`after`);for(let e of r.from)i(e,`created`)}for(let e of p)e.inOrder=x.has(e.id);let ee=[...S.values()].filter(e=>!Iu(e.type).some(t=>S.has(`${e.from}\0${e.to}\0${t}`))).map(e=>({from:e.from,to:e.to,tasks:e.tasks.size,type:e.type,samePass:e.samePass,back:!1})),te=[...C.values()].filter(e=>!Iu(e.type).some(t=>C.has(`${e.id}\0${e.to}\0${t}`))).map(e=>({id:e.id,label:e.label,to:e.to,tasks:e.tasks.size,type:e.type}));return{path:[...t],nodes:p,boxes:m,fns:[...h.values()],edges:ee,stubs:te,units:_}}function Xu(e){let t=new Map,n=new Map;for(let r of e){let e=Zu(r);t.set(r.key,e);for(let t of e)(n.get(t.key)??n.set(t.key,[]).get(t.key))?.push({key:r.key,type:t.type})}return{byKey:new Map(e.map(e=>[e.key,e])),earlier:t,later:n}}function Zu(e){let t=new Map;for(let n of e.given_from??[])t.set(n,`given`);for(let n of e.after??[])t.has(n)||t.set(n,`after`);for(let n of e.created_from??[])t.has(n)||t.set(n,`created`);return[...t].map(([e,t])=>({key:e,type:t}))}var Qu=(e,t)=>e.length===t.length&&e.every((e,n)=>e===t[n]);function $u(e,t){let n=new Map;for(let r of e?.entries??[]){if(!r.remaining)continue;let e=t.nodes.find(e=>e.type===`kind`?e.name===r.group&&Qu(e.layer,r.flow):r.flow.length>e.layer.length&&Qu(e.layer,r.flow.slice(0,e.layer.length))&&r.flow[e.layer.length]===e.name);e&&n.set(e.id,(n.get(e.id)??0)+r.remaining)}return n}function ed(e,t){let n=new Set(t.nodes.map(e=>`${e.group}\0${(e.flow??[]).map(e=>e.function).join(`\0`)}`)),r=new Map;for(let t of e?.entries??[])t.remaining&&!n.has(`${t.group}\0${t.flow.join(`\0`)}`)&&r.set(t.group,(r.get(t.group)??0)+t.remaining);return[...r].map(([e,t])=>({group:e,remaining:t}))}var td=e=>!!e?.earlier_run&&e.remaining>0;function nd(e,t,n,r,i=Nu(e,t)){let{drafts:a,ix:o}=i,s=Ru(i.model,lo(Lu(i.model),r,!1)),c=s.boxes.find(e=>e.id===n);if(!c)return null;let l=t.length,u=c.id.slice(5).split(`.`).length-1,d=new Map(s.boxes.map(e=>[e.id,e])),f=new Map(s.nodes.map(e=>[e.id,e])),p=e=>hu(e,l).slice(u),m=e=>e.layers.flat().flatMap(e=>d.has(e)?m(d.get(e)):[e]),h=e=>m(e).flatMap(e=>a.get(e)?.tasks??[]),g=(e,t)=>e.length===t.length&&gu(e,t)===0,_=(e,t)=>{let n=t.length;return[...new Set(h(e).map(p).filter(e=>e.length>n&&gu(e.slice(0,n),t)===0).map(e=>e[n]))].sort((e,t)=>e-t).flatMap(n=>{let r=[...t,n],i=e.layers.flat().flatMap(e=>{let t=d.get(e);if(t){let e=_(t,r);return e.length?[{type:`loop`,box:t,kids:e}]:[]}let n=f.get(e);return n&&a.get(e)?.tasks.some(e=>g(p(e),r))?[{type:`node`,node:n,passes:r}]:[]});return i.length?[{type:`pass`,box:e,pass:n,kids:i}]:[]})},v=_(c,[]),y=[],b=e=>e.type===`node`?1:e.kids.reduce((e,t)=>e+b(t),0),x=e=>e.type===`node`?1:1+Math.max(0,...e.kids.map(x)),S=Math.max(1,...v.map(x)),C=Array.from({length:S},()=>[]),ee=(e,t)=>{let n=C[t];if(e.type===`node`)return n.push({type:`node`,node:e.node,passes:e.passes,span:1,rows:S-t}),void y.push({node:e.node,passes:e.passes});n.push(e.type===`pass`?{type:`pass`,box:e.box,pass:e.pass,span:b(e),rows:1}:{type:`loop`,box:e.box,span:b(e),rows:1});for(let n of e.kids)ee(n,t+1)};for(let e of v)ee(e,0);let te=h(c),ne=new Set(te.map(e=>e.n.unit||``)),re=[...s.units.filter(e=>ne.has(e)),...ne.has(``)?[``]:[]],ie=new Map;return y.forEach((e,t)=>{for(let n of a.get(e.node.id)?.tasks??[])g(p(n),e.passes)&&su(ie,`${t}\0${n.n.unit||``}`,n)}),{box:c,columns:y,head:C,rows:re.map(e=>{let t=y.map((t,n)=>{let r=ie.get(`${n}\0${e}`);return r?.length?((e,t,n)=>{let r=a.get(e.node.id);if(r.type===`kind`)return Eu(t,n);let i=Ou(t,l,r.name,o.calls);return n?i.byUnit.get(n)??i.single[0]??null:i.single[0]??null})(t,r,e):null});return{unit:e,passes:new Set(te.filter(t=>(t.n.unit||``)===e).map(e=>hu(e,l).slice(0,u+1).join(`.`))).size,state:Su(t.filter(e=>e!==null).map(e=>e.state)),cells:t}})}}function rd(e,t){let n=new Map(e.map((e,t)=>[e,t])),r=e=>t===`passes`?-e.passes:t===`state`?-bu[e.state]:0;return[...e].sort((e,t)=>r(e)-r(t)||(n.get(e)??0)-(n.get(t)??0))}var id=(e,t,n=[])=>`${e}${n.length?`|${n.join(`.`)}`:``}#${t.unit||t.key}`;function ad(e,t,n){if(!n)return null;let r=n.indexOf(`#`);if(r<0){let t=e.nodes.find(e=>e.id===n);if(t)return{type:`node`,id:n,node:t};let r=e.boxes.find(e=>e.id===n);if(r)return{type:`box`,id:n,box:r};let i=e.fns.flatMap(e=>e.parts).find(e=>e.id===n);return i?{type:`node`,id:n,node:i.node}:null}let[i=``,a]=n.slice(0,r).split(`|`),o=n.slice(r+1),s=e=>!!e&&(e.unit?e.unit===o:e.key===o);if(a!==void 0){if(!t)return null;let e=t.columns.findIndex(e=>e.node.id===i&&e.passes.join(`.`)===a),r=t.columns[e],o=t.rows.map(t=>t.cells[e]).find(s);return r&&o?{type:`mark`,id:n,node:r.node,mark:o,passes:r.passes}:null}let c=e.nodes.find(e=>e.id===i),l=c?[...c.units,...c.single].find(s):void 0;return c&&l?{type:`mark`,id:n,node:c,mark:l,passes:[]}:null}var od=[`done`,`partial`,`running`,`pending`,`failed`,`blocked`,`skipped`,`cancelled`],sd={done:{tone:`done`,shape:`round`},partial:{tone:`attention`,shape:`half`},running:{tone:`running`,shape:`round`},pending:{tone:`neutral`,shape:`ring`},failed:{tone:`failed`,shape:`square`},blocked:{tone:`attention`,shape:`hatched`},skipped:{tone:`muted`,shape:`round`},cancelled:{tone:`muted`,shape:`ring`}};function cd(e){return Object.fromEntries(od.map(t=>[t,{...sd[t],label:ld(t,e),rank:bu[t],count:n=>ud(t,n,e)}]))}function ld(e,t){return as(h(e),t)}function ud(e,t,n){let r=h(e);return Z(r!==`waiting`||n?r:`not_run`,t)}function dd(e){return D(E`${e.done} of ${e.total} tasks done`)}function fd(e,t){return[`failed`,`blocked`,`partial`,`running`,`pending`,`cancelled`,`skipped`].filter(t=>e[t]).map(n=>ud(n,e[n],t))}function pd(e,t){let n=e.counts,r=[];return n.failed&&r.push([`err`,ud(`failed`,n.failed,t)]),e.errors&&r.push([`err`,e.errors===1?D(`1 flow call stopped with an error`):D(E`${e.errors} flow calls stopped with an error`)]),n.blocked&&r.push([`warn`,ud(`blocked`,n.blocked,t)]),n.partial&&r.push([`warn`,ud(`partial`,n.partial,t)]),n.running&&r.push([`live`,ud(`running`,n.running,t)]),n.pending&&r.push([`mut`,ud(`pending`,n.pending,t)]),n.skipped&&r.push([`mut`,ud(`skipped`,n.skipped,t)]),r}function md(e,t){let n=t?t.slice(t.lastIndexOf(`/`)+1):``;return n?`${n}:${e}`:D(E`line ${e}`)}function hd(e){return e.executor===`agent`?D(`Agent task`):e.executor===`python`?D(`Python task`):e.executor===`mixed`?K(D(`Agent task`),D(`Python task`)):``}function gd(e){return e.type===`flow`?K(D(E`Function ${e.name}`),e.timeBox?D(E`Deadline ${B(e.timeBox.deadline_s)}`):``,dd(e.counts)):K(e.label,hd(e),dd(e.counts))}function _d(e,t){let n=e=>{let n=t.nodes.find(t=>t.id===e);return n?n.box?D(E`${n.label} in the loop`):n.label:e},r=r=>[...t.stubs.filter(t=>t.to===e.id&&t.type===r).map(e=>e.label),...t.edges.filter(t=>t.to===e.id&&t.type===r).map(e=>n(e.from))];return{given:r(`given`),order:r(`after`),created:r(`created`),feeds:[...new Set(t.edges.filter(t=>t.from===e.id).map(e=>n(e.to)))]}}function vd(e,t,n){let r=e.counts,{given:i,order:a,created:o,feeds:s}=_d(e,t);return[e.type===`flow`?K(D(E`Function ${e.label}`),dd(r)):K(e.label,hd(e),dd(r)),...pd(e,n).map(([,e])=>e),i.length?D(E`Given output of: ${q(i)}`):``,a.length?D(E`Runs after: ${q(a)}`):``,o.length?D(E`Created after: ${q(o)}`):``,s.length?D(E`Later tasks: ${q(s)}`):``].filter(Boolean).join(`. `)}function yd(e,t,n,r=``){let i=t.flow?void 0:n.task,a=J({kind:t.count===1&&i?i.kind:e,unit:t.unit}),o=t.flow||t.state!==`blocked`?``:n.causeOf(t.key),s=o?D(E`Not started: ${o}`):ld(t.state,n.live),c=i?.attempts??1,l=c>1?D(E`${c} attempts`):``;return{name:a,parts:[s,r,t.passes?Ss(t.passes):``,l,t.flow||t.count>1?D(E`${t.count} tasks`):``,...t.counts?fd(t.counts,n.live):[],...t.error===void 0?[]:[D(`Flow call stopped with an error`),t.error],t.flow||t.state!==`done`&&t.state!==`partial`&&t.state!==`failed`||!i?.wall_s?``:B(i.wall_s)].filter(Boolean),id:t.flow?D(E`Flow call ${t.key}`):t.key}}var bd={err:`failed`,warn:`attention`,live:`running`,mut:`muted`};function xd(e){return t=>{let{outcomes:n}=S(e.journal,e.plan),r=n.get(t);return r?hs(r,n,e.run):``}}var Sd=e=>{let t=xd(e);return n=>({task:e.links.byKey.get(n.key),causeOf:t,live:e.live})},Cd=e=>D(E`Loop at ${md(e.loop,e.file)}`),wd=e=>e.executor===`mixed`?[`agent`,`python`]:e.executor?[e.executor]:[];function Td(e,t,n=!1){let r=Sd(t),i=(e,t)=>{let{name:n,parts:i}=yd(e.label,t,r(t));return{id:id(e.id,t),state:t.state,label:K(n,...i),tip:[n,i[0]??``].filter(Boolean).join(`
421
- `),...t.passes?{badge:String(t.passes)}:{},name:t.unit||t.key,drill:!!t.flow}},a=$u(t.forecast,e),o=e.nodes.map(r=>{let o=r.counts,s=a.get(r.id),c=s?function(e){return{text:D(E`+${e}`),label:D(e===1?`1 more task expected (forecast)`:E`${e} more tasks expected (forecast)`)}}(s):null;return{id:r.id,label:r.label,tip:gd(r),summary:c?K(vd(r,e,t.live),c.label):vd(r,e,t.live),...c?{expected:c}:{},cluster:r.box,icons:wd(r),accent:r.executor===`agent`,drill:r.type===`flow`,marks:r.units.map(e=>e&&i(r,e)),loose:r.single.map(e=>i(r,e)),counts:o,progress:{done:o.done,total:o.total,label:dd(o)},notes:pd(r,t.live).map(([e,t])=>({text:t,tone:bd[e]})),look:o.failed||r.errors?`failed`:o.running?`running`:o.done+o.skipped===o.total?`done`:void 0,...r.type===`flow`&&n?{toggle:`closed`}:{}}}),s=e.fns.map(n=>{let r=n.parts[0].node,i=n.parts.map(e=>e.node.label).join(` › `),a=r.counts,o=pd(r,t.live).map(([,e])=>e);return{id:n.id,parent:n.parent,label:i,tip:r.name,note:`${a.done}/${a.total}`,...o.length?{detail:K(...o)}:{},summary:K(i,vd(r,e,t.live)),chipLabel:D(E`Inside ${i}`),chipTip:K(D(`Function`),i),drill:!0,cycle:!1,toggle:`open`,path:n.parts.map(e=>({id:e.id,label:e.node.label,tip:e.node.name}))}}),c=e.boxes.map(e=>{let t=Cd(e),n=e.spread.length>1?Cs(e.spread):``,r=xs(e.passes);return{id:e.id,parent:e.parent,label:ws(),tip:K(ws(),t),note:r,...n?{detail:n,detailTip:D(`Units by number of passes`)}:{},summary:K(t,r,n),chipLabel:K(D(E`Passes of the loop at ${md(e.loop,e.file)}`),r),chipTip:K(t,r),drill:!0,cycle:!0}});return{series:e.units,nodes:o,clusters:[...c,...s],edges:e.edges.map(e=>({from:e.from,to:e.to,style:Fu(e.type),weight:e.tasks,ranks:e.samePass})),stubs:e.stubs.map(e=>({id:e.id,label:e.label,to:e.to,style:Fu(e.type),weight:e.tasks}))}}function Ed(e,t,n){let r=Nu(e,t);return{input:Td(r.model,{...n,plan:e}),proj:r}}function Dd(e,t,n){let r=Sd(n),i=e.box,a=Cd(i),o=e.rows.filter(e=>e.unit).length,s=e.head.map(e=>e.map(e=>{if(e.type===`pass`)return{id:`${e.box.id}|${e.pass}`,label:bs(e.pass),tip:e.box.id===i.id?Cd(e.box):D(E`Nested loop at ${md(e.box.loop,e.box.file)}`),span:e.span,rows:e.rows,type:`group`};if(e.type===`loop`)return{id:e.box.id,label:ws(),tip:D(E`Nested loop at ${md(e.box.loop,e.box.file)}`),code:!0,span:e.span,rows:e.rows,type:`group`};let t=e.node,n=t.type===`flow`;return{id:`${t.id}|${e.passes.join(`.`)}`,label:t.label,tip:n?D(E`Function ${t.name}`):K(t.label,hd(t)),summary:n?t.label:K(t.label,hd(t)),icons:t.executor&&t.executor!==`mixed`?[t.executor]:[],span:e.span,rows:e.rows,type:`column`}}));return{caption:a,...i.file?{captionTip:`${i.file}:${i.loop}`}:{},label:K(a,xs(i.passes)),facts:[xs(i.passes),i.spread.length>1?Cs(i.spread):``,D(o===1?`1 unit`:E`${o} units`)].filter(Boolean),head:s,columns:e.columns.map(e=>({id:`${e.node.id}|${e.passes.join(`.`)}`,groups:e.passes.map((t,n)=>e.passes.slice(0,n+1).join(`.`))})),rows:rd(e.rows,t).map(t=>({id:t.unit,label:t.unit||D(`No unit`),tip:t.unit||D(`Tasks that run once per run, not once per unit`),muted:!t.unit,value:t.passes,strong:t.passes>1,cells:t.cells.map((t,n)=>t&&((t,n)=>{let i=e.columns[t],a=i?.node.label??``,o=i?.passes??[],{name:s,parts:c}=yd(a,n,r(n),q(o.map(bs)));return{id:id(i?.node.id??``,n,o),state:n.state,label:K(s,...c),tip:[s,c[0]??``].filter(Boolean).join(`
422
- `),drill:!!n.flow}})(n,t))})),value:{label:D(`Passes`),tip:D(`Passes of this loop`)},sorts:[{id:`order`,label:D(`Scheduled order`)},{id:`passes`,label:D(`Number of passes`)},{id:`state`,label:D(`Status`,{id:`status`})}],sort:t}}function Od(e,t,n,r,i,a,o){let s=nd(e,t,n,r,o);return s&&{input:Dd(s,i,{...a,plan:e}),matrix:s}}function kd(e,t=[],n,r=!1){let{model:i}=Nu(e,t);return Ru(i,lo(Lu(i),n,r))}function Ad(e){let t=du(e),n=[],r=new Set;if(t.calls)for(let e of t.calls.values())e.state!==`raised`&&e.state!==`closed`||r.add(e.id);for(;;){let e=null,i=!0,a=[];for(let r of t.tasks){if(!fu(r.path,n))continue;let t=vu(r,n.length);if(t.type===`kind`||e&&e.id!==t.id){i=!1;break}e=t,a.push(r)}let o=a.some(e=>{return i=yu(e,n.length,t.calls).id,r.has(i)&&![...r].some(e=>e!==i&&e.startsWith(`${i}.`));var i});if(!i||!e||o)return n;n.push(e.name)}}function jd(e){let t=e[e.length-1];return t?.startsWith(`loop:`)?{path:e.slice(0,-1),loop:t}:{path:[...e],loop:null}}function Md(e,t){let{path:n,loop:r}=jd(t),i=du(e),a=t=>!r||Nu(e,t).model.boxes.some(e=>e.id===r);if(i.tasks.some(e=>fu(e.path,n)))return a(n)?[...t]:null;let o=n[n.length-1];if(o===void 0)return null;let s=e=>{let t=new Map;for(let n of i.tasks)n.path.forEach((r,i)=>e(r)&&t.set(n.path.slice(0,i+1).join(`/`),n.path.slice(0,i+1)));return[...t.values()]},c=s(e=>e===o),l=c.length?c:s(e=>pu(e)===o),u=l.length===1?l[0]:null;return u&&a(u)?r?[...u,r]:u:null}function Nd(e,t){if(e.length<=t.length)return null;let n=e.slice(0,-1);return n.length<=t.length?[]:n}function Pd(e,t,n){return pi((e=>e?`⚙`:`✦`)(e),t,{cls:n??`k-ic `+(e?``:`llm`)})}var Fd=k` .k-ic{display:inline-grid;place-items:center;width:20px;height:20px;border-radius:6px;margin-right:7px;font-size:var(--font-size-sm);background:var(--raise);color:var(--text-muted);flex:none;}.k-ic.llm{background:var(--agent-bg);color:var(--agent);}`;function Id(e,t){t!==e.sel&&$(e.el,`ca-navigate`,{sel:t})}function Ld(e,t,n=e.unit){let r=t.join(`/`);$(e.el,`ca-navigate`,{layer:r===e.auto.join(`/`)?``:r,unit:n})}function Rd(e,t){$(e.el,`ca-navigate`,{tab:`tasks`,kind:t.kinds.length===1?t.kinds[0]:``})}function zd(e,t,n){if(t.flow)return Ld(e,[...n?.layer??e.graph.path,t.flow],t.unit||e.unit);let r=e.links.byKey.get(t.key);$(e.el,`ca-open-task`,t.state===`blocked`?{key:t.key,view:`input`}:r?.executor===`python`?{key:t.key,view:`output`}:{key:t.key})}function Bd(e,t){return t.type===`mark`?zd(e,t.mark,t.node):t.type===`box`?Ld(e,[...t.box.layer,t.box.local]):t.node.type===`flow`?Ld(e,[...t.node.layer,t.node.name]):void Rd(e,t.node)}function Vd(e,t){let n=function(e,t){let n=e=>{let r=e;for(;r.type===`fn`&&!t(r.id)&&r.kids.length===1&&r.kids[0]?.type===`fn`&&!t(r.kids[0].id);){let e=r.kids[0];r={...r,label:`${r.label} › ${e.label}`,tip:`${r.tip}\n${e.tip}`,kids:e.kids,parts:[...r.parts,...e.parts]}}return{...r,kids:r.kids.map(n)}};return e.map(n)}(t,t=>e.current(t)),r=(t,n=``)=>{let i=t.kids.length>0&&e.expanded(t.id),a=t.counts,o=a.total?Math.round((a.done+a.partial+a.skipped)/a.total*100):0,s=(t=>pd({counts:t.counts,errors:+!!t.errors},e.live))(t),c=s.map(([,e])=>e).join(`|`),l=c===n?[]:s,u=t.parts.some(t=>e.current(t.id)),d=t.parts.some(t=>e.here(t.id));return A`<li>
420
+ </ul>`}};U([F({attribute:!1})],hu.prototype,`services`,void 0),U([F({attribute:!1})],hu.prototype,`nodes`,void 0),U([F({type:Boolean})],hu.prototype,`live`,void 0),hu=U([P(`ca-services`),O()],hu),z(`cae-mark-matrix`,to),z(`cae-layered-graph`,zo);var gu=`loop:`,_u=[`given`,`after`,`created`],vu=(e,t,n)=>{let r=e.get(t);r?r.push(n):e.set(t,[n])},yu=e=>typeof e==`string`;function bu(e){let t=e.flow_calls;return Array.isArray(t)&&t.length!==0?new Map(t.filter(e=>e&&yu(e.id)&&yu(e.function)).map(e=>[e.id,e])):null}var xu=new WeakMap;function Su(e){let t=xu.get(e);if(t)return t;let n=e.nodes.map(e=>{let t=function(e){let t=e.flow;if(!Array.isArray(t))return[];let n=[];for(let e of t){let t=e;if(!t||typeof t!=`object`||!yu(t.function))break;let r=(Array.isArray(t.loops)?t.loops:[]).filter(e=>!!e&&typeof e.line==`number`);n.push({function:t.function,file:yu(t.file)?t.file:``,line:typeof t.line==`number`?t.line:0,loops:r.map(e=>e.line),passes:r.map(e=>typeof e.pass==`number`&&e.pass>=1?e.pass:1)})}return n}(e),n=e.created_from;return{n:e,frames:t,path:t.map(e=>e.function),from:Array.isArray(n)?n.filter(yu):[],call:yu(e.flow_call)?e.flow_call:``}}),r=new Map;for(let t of e.nodes)t.unit&&!r.has(t.unit)&&r.set(t.unit,r.size);let i={tasks:n,byKey:new Map(n.map(e=>[e.n.key,e])),calls:bu(e),unitRank:r,labels:new Map(e.groups.map(e=>[e.id,e.label]))};return xu.set(e,i),i}var Cu=(e,t)=>t.every((t,n)=>e[n]===t),wu=e=>e.slice(e.lastIndexOf(`.`)+1)||e,Tu=(e,t)=>t>0?e.frames[t-1]?.loops??[]:[],Eu=(e,t)=>t>0?e.frames[t-1]?.passes??[]:[];function Du(e,t){for(let n=0;n<Math.max(e.length,t.length);n++){let r=(e[n]??0)-(t[n]??0);if(r)return r}return 0}var Ou=e=>e.map((t,n)=>`${gu}${e.slice(0,n+1).join(`.`)}`);function ku(e,t){let n=Tu(e,t),r=n.length?`@${n.join(`.`)}`:``;if(e.path.length<=t)return{id:`kind:${e.n.group}${r}`,type:`kind`,name:e.n.group,loops:n};let i=e.path[t];return{id:`flow:${i}${r}`,type:`flow`,name:i,loops:n}}function Au(e,t,n){if(!e.call)return{id:`>${t}`,own:!1};let r=e.call.split(`.`),i=r.map((e,t)=>r.slice(0,t+1).join(`.`)),a=0,o=0;if(n)for(let r=1;r<i.length;r++){let s=n.get(i[r])?.function,c=s===void 0?-1:e.frames.findIndex((e,t)=>t>o&&e.function===s);if(c<0||c>t)break;a=r,o=c}else a=Math.min(t,i.length-1),o=a;let s=i[a];return o===t?{id:s,own:!0}:{id:`${s}>${t}`,own:!1}}var ju={failed:7,running:6,blocked:5,partial:4,pending:3,cancelled:2,skipped:1,done:0},Mu=e=>e.reduce((e,t)=>ju[t.state]>ju[e]?t.state:e,`done`),Nu=e=>e.reduce((e,t)=>ju[t]>ju[e]?t:e,`done`);function Pu(e){let t=e.filter(w).length;return t===0?`agent`:t===e.length?`python`:`mixed`}var Fu={running:`running`,returned:`done`,raised:`failed`,closed:`failed`},Iu=e=>e?.state===`raised`||e?.state===`closed`;function Lu(e,t){let n=e.map(e=>e.n);return{key:(n.find(e=>e.state===`running`)??n[n.length-1]??{key:``}).key,unit:t,state:Mu(n),count:n.length,keys:n.map(e=>e.key)}}function Ru(e){let t=new Map,n=[];for(let r of e)r.n.unit?vu(t,r.n.unit,r):n.push(Lu([r],``));return{byUnit:new Map([...t].map(([e,t])=>[e,Lu(t,e)])),single:n}}function zu(e,t,n,r){let i=(e,t)=>{let i=e.map(e=>e.own?r?.get(e.id):void 0),a=e.map((e,t)=>{let n=i[t],r=Mu(e.tasks.map(e=>e.n));return n&&Fu[n.state]?Nu([Fu[n.state],r]):r}),o=e.flatMap(e=>e.tasks),s=o.map(e=>e.n.key),c=e.find((e,t)=>a[t]===`running`)??e[e.length-1],l=i.find(Iu),u={key:c?.id??``,unit:t,state:Nu(a),count:s.length,keys:s,flow:n,counts:Bu(o)},d=c?.own?r?.get(c.id)?.time_box:null,f=d?function(e){let t=Date.parse(e.started_at);return Number.isNaN(t)?``:new Date(t+1e3*e.deadline_s).toISOString()}(d):``,p=f?{...u,deadlineAt:f}:u;return l?{...p,error:l.error??``}:p},a=new Map,o=[],s=function(e,t,n){let r=new Map;for(let i of e){let{id:e,own:a}=Au(i,t,n);(r.get(e)??r.set(e,{id:e,own:a,tasks:[],unit:``}).get(e))?.tasks.push(i)}for(let e of r.values()){let t=new Set(e.tasks.map(e=>e.n.unit||``));e.unit=t.size===1?[...t][0]:``}return[...r.values()]}(e,t,r);for(let e of s)e.unit?vu(a,e.unit,e):o.push(i([e],``));let c=r?s.filter(e=>e.own&&Iu(r.get(e.id))).length:0,l=s.map(e=>e.own?r?.get(e.id)?.time_box:null).find(e=>e)??null;return{byUnit:new Map([...a].map(([e,t])=>[e,i(t,e)])),single:o,calls:s.length,errors:c,timeBox:l}}function Bu(e){let t={total:e.length,done:0,partial:0,failed:0,running:0,pending:0,skipped:0,blocked:0,cancelled:0};for(let n of e)t[n.n.state]+=1;return t}function Vu(e,t){let n=new Map;for(let r of e){let e=r.n.unit||``,i=n.get(e);(!i||Du(Eu(r,t),i)>0)&&n.set(e,Eu(r,t))}return e.filter(e=>Du(Eu(e,t),n.get(e.n.unit||``)??[])===0)}function Hu(e,t){let n=new Map;for(let r of e){let e=r.n.unit||``;(n.get(e)??n.set(e,new Set).get(e))?.add(Eu(r,t).join(`.`))}return new Map([...n].map(([e,t])=>[e,t.size]))}var Uu=(e,t)=>t&&t>1?{...e,passes:t}:e;function Wu(e,t){let n=Su(e);return Gu(n,t,n.tasks.filter(e=>Cu(e.path,t)))}function Gu(e,t,n){let r=t.length,i=new Map,a=new Map;for(let e of n){let t=ku(e,r);(i.get(t.id)??i.set(t.id,{...t,tasks:[]}).get(t.id))?.tasks.push(e),a.set(e.n.key,t.id)}let o=new Map,s=new Map,c=new Map,l=new Map;for(let t of i.values()){let n=Ou(t.loops),i=n[n.length-1]??null;n.forEach((e,t)=>l.set(e,n[t-1]??null)),i&&c.set(t.id,i);let a=i?Vu(t.tasks,r):t.tasks;s.set(t.id,a);let u=t.type===`kind`?Ru(a):zu(a,r,t.name,e.calls);if(i){let e=Hu(t.tasks,r);u.byUnit=new Map([...u.byUnit].map(([t,n])=>[t,Uu(n,e.get(t))]))}o.set(t.id,u)}let u=[...new Set([...o.values()].flatMap(e=>[...e.byUnit.keys()]))].sort((t,n)=>(e.unitRank.get(t)??0)-(e.unitRank.get(n)??0)),d=new Map,f=new Map;for(let e of i.values()){let t=Ou(e.loops);for(let n of e.tasks){let e=Eu(n,r);t.forEach((t,r)=>{d.set(t,Math.max(d.get(t)??1,e[r]??1));let i=f.get(t)??f.set(t,new Map).get(t),a=n.n.unit||``;(i?.get(a)??i?.set(a,new Set).get(a))?.add(e.slice(0,r+1).join(`.`))})}}let p=new Set,m=new Map,h=new Map,g=n=>{let i=0;for(;i<r&&n.path[i]===t[i];)i++;let a=ku(n,i);return{id:`stub:${i}:${a.id}`,label:a.type===`kind`?e.labels.get(a.name)??a.name:wu(a.name)}};for(let t of n){let n=a.get(t.n.key),i=(i,o)=>{let s=a.get(i);if(s===n)return void(o!==`created`&&p.add(n));if(s!==void 0){let a=e.byKey.get(i),c=Tu(a,r),l=Tu(t,r),u=0;for(;u<c.length&&c[u]===l[u];)u++;let d=Du(Eu(a,r).slice(0,u),Eu(t,r).slice(0,u))===0,f=`${s}\0${n}\0${o}`,p=m.get(f)??m.set(f,{from:s,to:n,type:o,tasks:new Set,samePass:!1}).get(f);p?.tasks.add(t.n.key),p&&d&&(p.samePass=!0);return}let c=e.byKey.get(i);if(!c)return;let l=g(c),u=`${l.id}\0${n}\0${o}`;(h.get(u)??h.set(u,{...l,to:n,type:o,tasks:new Set}).get(u))?.tasks.add(t.n.key)};for(let e of t.n.given_from??[])i(e,`given`);for(let e of t.n.after??[])i(e,`after`);for(let e of t.from)i(e,`created`)}let _=(e,t)=>e<t?-1:+(e>t),v=[...m.values()].filter(e=>!qu(e.type).some(t=>m.has(`${e.from}\0${e.to}\0${t}`))).sort((e,t)=>_(`${e.from}\0${e.to}\0${e.type}`,`${t.from}\0${t.to}\0${t.type}`)),y=[...h.values()].filter(e=>!qu(e.type).some(t=>h.has(`${e.id}\0${e.to}\0${t}`))).sort((e,t)=>_(`${e.id}\0${e.to}\0${e.type}`,`${t.id}\0${t.to}\0${t.type}`)),b=[...l.keys()].map(e=>{let i=new Map;for(let[t,n]of f.get(e)??[])t&&i.set(n.size,(i.get(n.size)??0)+1);return{id:e,local:e,layer:[...t],loop:Number(e.slice(5).split(`.`).pop()),file:n[0]?.frames[r-1]?.file??``,parent:l.get(e)??null,passes:d.get(e)??1,spread:[...i].sort((e,t)=>e[0]-t[0]),layers:[]}});return{model:{path:[...t],nodes:[...i.values()].map(n=>{let r=o.get(n.id),i=r.byUnit.size>0;return{id:n.id,type:n.type,name:n.name,label:n.type===`kind`?e.labels.get(n.name)??n.name:wu(n.name),layer:[...t],kinds:[...new Set(n.tasks.map(e=>e.n.kind))],executor:n.type===`flow`?null:Pu(n.tasks.map(e=>e.n)),box:c.get(n.id)??null,units:i?u.map(e=>r.byUnit.get(e)??null):[],single:r.single,inOrder:p.has(n.id),counts:Bu(s.get(n.id)??[]),calls:r.calls??0,errors:r.errors??0,timeBox:r.timeBox??null}}),boxes:b,fns:[],edges:v.map(e=>({from:e.from,to:e.to,tasks:e.tasks.size,type:e.type,samePass:e.samePass,back:!1})),stubs:y.map(e=>({id:e.id,label:e.label,to:e.to,tasks:e.tasks.size,type:e.type})),units:u},drafts:i,ix:e}}var Ku=e=>e===`given`?`solid`:e===`after`?`dotted`:`dashed`,qu=e=>_u.slice(0,_u.indexOf(e));function Ju(e){return{nodes:e.nodes.map(e=>({id:e.id,cluster:e.box})),clusters:[...e.boxes.map(e=>({id:e.id,parent:e.parent,cycle:!0})),...e.fns.map(e=>({id:e.id,parent:e.parent,cycle:!1}))],edges:e.edges.map(e=>({from:e.from,to:e.to,style:Ku(e.type),ranks:e.samePass})),stubs:e.stubs.map(e=>({id:e.id,to:e.to,style:Ku(e.type)}))}}function Yu(e,t){let n=new Map(e.nodes.map(e=>[e.id,e])),r=new Map(t.clusters.map(e=>[e.id,e.layers]));return{...t,path:e.path,nodes:t.drawn.map(e=>n.get(e)),boxes:e.boxes.map(e=>({...e,layers:r.get(e.id)??[]})),fns:e.fns,edges:e.edges.map((e,n)=>({...e,back:t.back[n]??!1})),stubs:e.stubs,units:e.units}}var Xu=`fx::`,Zu=(e,t)=>`${e.join(`/`)}/${t}`,Qu=e=>e?.state===`raised`||e?.state===`closed`;function $u(e,t,n=!1){let r=t.length,i=new Map,a=new Set;if(e.calls)for(let t of e.calls.values())Qu(t)&&a.add(t.id);for(let o of e.tasks){if(!Cu(o.path,t))continue;let e=o.n.state,s=!!o.call&&[...a].some(e=>o.call===e||o.call.startsWith(`${e}.`)),c=null;for(let t=r;t<o.path.length;t++){let a=ku(o,t),l=o.path.slice(0,t),u=Zu(l,a.id),d=i.get(u);if(!d){let e={total:0,done:0,partial:0,failed:0,running:0,pending:0,skipped:0,blocked:0,cancelled:0},n=t>0?o.frames[t-1]?.file??``:``;d={key:u,layer:l,id:a.id,name:a.name,depth:t-r,loops:a.loops,file:n,counts:e,tasks:0,agent:0,failed:0,running:0,stuck:0,errors:!1,kids:new Set,fns:new Set,parent:c},i.set(u,d)}d.tasks+=1,d.counts.total+=1,d.counts[e]+=1,w(o.n)||(d.agent+=1),e===`failed`?d.failed+=1:e===`running`?d.running+=1:(e===`blocked`||e===`pending`&&!n)&&(d.stuck+=1),s&&(d.errors=!0);let f=ku(o,t+1);d.kids.add(f.id),f.type===`flow`&&d.fns.add(Zu(o.path.slice(0,t+1),f.id)),c=u}}return i}function ed(e,t=new Set){return Math.log2(1+e.tasks)+(e.failed||e.errors?4:0)+(e.running?3:0)+(e.stuck?1.5:0)+(t.has(e.key)?6:0)}var td=(e,t=new Set)=>e.agent>0||e.failed>0||e.errors||e.running>0||e.stuck>0||t.has(e.key),nd=(e,t)=>ed(e,t)-1.5*e.depth;function rd(e,t,n){let r=new Set,i=[],a=n.closed??new Set,o=n.open??new Set,s=t,c=new Set([...e.values()].filter(e=>e.parent===null).map(e=>e.key));for(;c.size;){let t=null,l=-1/0;for(let r of c){let i=e.get(r),a=o.has(r)?1/0:nd(i,n.toward);a>l&&(t=i,l=a)}if(!t)break;if(c.delete(t.key),a.has(t.key))continue;let u=t.kids.size-1;if(o.has(t.key)||n.all||!(s+u>n.budget)&&td(t,n.toward)){r.add(t.key),o.has(t.key)||i.push(t.key),s+=u;for(let e of t.fns)c.add(e)}}return{open:r,auto:i}}function id(e,t){let n=new Set,r=null;e.startsWith(`fx::`)?r=e.slice(4).split(`#`)[0]??null:e.includes(`::`)&&(r=e.slice(0,e.lastIndexOf(`::`)));for(let e=r;e!==null&&t.has(e);e=t.get(e)?.parent??null)n.add(e);return n}function ad(e,t,n){let r=Su(e),i=t.length,a=r.tasks.filter(e=>Cu(e.path,t)),o=$u(r,t,n.live),s=new Set(a.map(e=>ku(e,i).id)).size,c=n.sel?id(n.sel,o):n.toward,{open:l,auto:u}=rd(o,s,{...n,toward:c}),d=od(r,t,a,o,l),f=e=>uo(lo(Ju(e))).span;if(n.maxSpan&&!n.all)for(;u.length&&f(d)>n.maxSpan;)l.delete(u.pop()),d=od(r,t,a,o,l);return{model:d,open:l,stats:o}}function od(e,t,n,r,i){let a=t.length,o=new Map,s=new Map([[``,[]]]);for(let e of n){let t=a,n=``;for(s.get(``)?.push(e);t<e.path.length;){let r=Zu(e.path.slice(0,t),ku(e,t).id);if(!i.has(r))break;n=r,vu(s,r,e),t++}o.set(e.n.key,{key:n,depth:t})}let c=new Map,l=new Map;for(let[n,i]of s){let a=r.get(n),o=a?[...a.layer,a.name]:[...t];l.set(n,o),c.set(n,Gu(e,o,i))}let u=(e,t)=>e===``?t:`${e}::${t}`,d=e=>{let t=r.get(e);return(t?c.get(t.parent??``):void 0)?.model.nodes.find(e=>e.id===t?.id)},f=e=>(e=>{let t=r.get(e);if(!t||t.parent===null)return!1;let n=c.get(t.parent);if(!n)return!1;let i=n.model.nodes.filter(e=>e.type===`flow`);return i.length===1&&i[0]?.id===t.id&&!i[0]?.box})(e)?f(r.get(e).parent):`${Xu}${e}`,p=[],m=[],h=new Map,g=new Set;for(let e of[...c.keys()].sort((e,t)=>e===``?-1:t===``?1:(r.get(e)?.depth??0)-(r.get(t)?.depth??0))){let t=c.get(e),n=l.get(e),a=e===``?null:f(e);if(e!==``){let t=d(e),n=r.get(e),i=t?{...t,id:u(n.parent??``,t.id)}:void 0,o={id:`${Xu}${e}`,key:e,node:i};if(a===`fx::${e}`){let e=t?.box?u(n.parent??``,t.box):n.parent===null?null:f(n.parent);h.set(a,{id:a,parent:e,parts:[o]})}else h.get(a)?.parts.push(o)}for(let r of t.model.boxes)m.push({...r,id:u(e,r.id),parent:r.parent?u(e,r.parent):a,layer:n});for(let r of t.model.nodes)r.type===`flow`&&i.has(Zu(n,r.id))||p.push({...r,id:u(e,r.id),box:r.box?u(e,r.box):a,layer:n});for(let e of t.model.units)g.add(e)}let _=[...g].sort((t,n)=>(e.unitRank.get(t)??0)-(e.unitRank.get(n)??0)),v=new Map([...c].map(([e,t])=>[e,t.model.units]));for(let e of p){let t=e.id.includes(`::`)?e.id.slice(0,e.id.lastIndexOf(`::`)):``,n=v.get(t)??[];if(!e.units.length)continue;let r=new Map(n.map((t,n)=>[t,e.units[n]??null]));e.units=_.map(e=>r.get(e)??null)}let y=e=>{let t=o.get(e.n.key);return u(t.key,ku(e,t.depth).id)},b=e=>e.path.slice(0,o.get(e.n.key).depth),x=new Set,S=new Map,C=new Map;for(let r of n){let n=y(r),i=(i,o)=>{let s=e.byKey.get(i);if(!s)return;if(Cu(s.path,t)){let e=y(s);if(e===n)return void(o!==`created`&&x.add(n));let t=b(s),i=b(r),a=0;for(;a<t.length&&a<i.length&&t[a]===i[a];)a++;let c=Tu(s,a),l=Tu(r,a),u=0;for(;u<c.length&&c[u]===l[u];)u++;let d=Du(Eu(s,a).slice(0,u),Eu(r,a).slice(0,u))===0,f=`${e}\0${n}\0${o}`,p=S.get(f)??S.set(f,{from:e,to:n,type:o,tasks:new Set,samePass:!1}).get(f);p?.tasks.add(r.n.key),p&&d&&(p.samePass=!0);return}let c=0;for(;c<a&&s.path[c]===t[c];)c++;let l=ku(s,c),u={id:`stub:${c}:${l.id}`,label:l.type===`kind`?e.labels.get(l.name)??l.name:wu(l.name)},d=`${u.id}\0${n}\0${o}`;(C.get(d)??C.set(d,{...u,to:n,type:o,tasks:new Set}).get(d))?.tasks.add(r.n.key)};for(let e of r.n.given_from??[])i(e,`given`);for(let e of r.n.after??[])i(e,`after`);for(let e of r.from)i(e,`created`)}for(let e of p)e.inOrder=x.has(e.id);let ee=[...S.values()].filter(e=>!qu(e.type).some(t=>S.has(`${e.from}\0${e.to}\0${t}`))).map(e=>({from:e.from,to:e.to,tasks:e.tasks.size,type:e.type,samePass:e.samePass,back:!1})),te=[...C.values()].filter(e=>!qu(e.type).some(t=>C.has(`${e.id}\0${e.to}\0${t}`))).map(e=>({id:e.id,label:e.label,to:e.to,tasks:e.tasks.size,type:e.type}));return{path:[...t],nodes:p,boxes:m,fns:[...h.values()],edges:ee,stubs:te,units:_}}function sd(e){let t=new Map,n=new Map;for(let r of e){let e=cd(r);t.set(r.key,e);for(let t of e)(n.get(t.key)??n.set(t.key,[]).get(t.key))?.push({key:r.key,type:t.type})}return{byKey:new Map(e.map(e=>[e.key,e])),earlier:t,later:n}}function cd(e){let t=new Map;for(let n of e.given_from??[])t.set(n,`given`);for(let n of e.after??[])t.has(n)||t.set(n,`after`);for(let n of e.created_from??[])t.has(n)||t.set(n,`created`);return[...t].map(([e,t])=>({key:e,type:t}))}var ld=(e,t)=>e.length===t.length&&e.every((e,n)=>e===t[n]);function ud(e,t){let n=new Map;for(let r of e?.entries??[]){if(!r.remaining)continue;let e=t.nodes.find(e=>e.type===`kind`?e.name===r.group&&ld(e.layer,r.flow):r.flow.length>e.layer.length&&ld(e.layer,r.flow.slice(0,e.layer.length))&&r.flow[e.layer.length]===e.name);e&&n.set(e.id,(n.get(e.id)??0)+r.remaining)}return n}function dd(e,t){let n=new Set(t.nodes.map(e=>`${e.group}\0${(e.flow??[]).map(e=>e.function).join(`\0`)}`)),r=new Map;for(let t of e?.entries??[])t.remaining&&!n.has(`${t.group}\0${t.flow.join(`\0`)}`)&&r.set(t.group,(r.get(t.group)??0)+t.remaining);return[...r].map(([e,t])=>({group:e,remaining:t}))}var fd=e=>!!e?.earlier_run&&e.remaining>0;function pd(e,t,n,r,i=Wu(e,t)){let{drafts:a,ix:o}=i,s=Yu(i.model,lo(Ju(i.model),r,!1)),c=s.boxes.find(e=>e.id===n);if(!c)return null;let l=t.length,u=c.id.slice(5).split(`.`).length-1,d=new Map(s.boxes.map(e=>[e.id,e])),f=new Map(s.nodes.map(e=>[e.id,e])),p=e=>Eu(e,l).slice(u),m=e=>e.layers.flat().flatMap(e=>d.has(e)?m(d.get(e)):[e]),h=e=>m(e).flatMap(e=>a.get(e)?.tasks??[]),g=(e,t)=>e.length===t.length&&Du(e,t)===0,_=(e,t)=>{let n=t.length;return[...new Set(h(e).map(p).filter(e=>e.length>n&&Du(e.slice(0,n),t)===0).map(e=>e[n]))].sort((e,t)=>e-t).flatMap(n=>{let r=[...t,n],i=e.layers.flat().flatMap(e=>{let t=d.get(e);if(t){let e=_(t,r);return e.length?[{type:`loop`,box:t,kids:e}]:[]}let n=f.get(e);return n&&a.get(e)?.tasks.some(e=>g(p(e),r))?[{type:`node`,node:n,passes:r}]:[]});return i.length?[{type:`pass`,box:e,pass:n,kids:i}]:[]})},v=_(c,[]),y=[],b=e=>e.type===`node`?1:e.kids.reduce((e,t)=>e+b(t),0),x=e=>e.type===`node`?1:1+Math.max(0,...e.kids.map(x)),S=Math.max(1,...v.map(x)),C=Array.from({length:S},()=>[]),ee=(e,t)=>{let n=C[t];if(e.type===`node`)return n.push({type:`node`,node:e.node,passes:e.passes,span:1,rows:S-t}),void y.push({node:e.node,passes:e.passes});n.push(e.type===`pass`?{type:`pass`,box:e.box,pass:e.pass,span:b(e),rows:1}:{type:`loop`,box:e.box,span:b(e),rows:1});for(let n of e.kids)ee(n,t+1)};for(let e of v)ee(e,0);let te=h(c),ne=new Set(te.map(e=>e.n.unit||``)),re=[...s.units.filter(e=>ne.has(e)),...ne.has(``)?[``]:[]],ie=new Map;return y.forEach((e,t)=>{for(let n of a.get(e.node.id)?.tasks??[])g(p(n),e.passes)&&vu(ie,`${t}\0${n.n.unit||``}`,n)}),{box:c,columns:y,head:C,rows:re.map(e=>{let t=y.map((t,n)=>{let r=ie.get(`${n}\0${e}`);return r?.length?((e,t,n)=>{let r=a.get(e.node.id);if(r.type===`kind`)return Lu(t,n);let i=zu(t,l,r.name,o.calls);return n?i.byUnit.get(n)??i.single[0]??null:i.single[0]??null})(t,r,e):null});return{unit:e,passes:new Set(te.filter(t=>(t.n.unit||``)===e).map(e=>Eu(e,l).slice(0,u+1).join(`.`))).size,state:Nu(t.filter(e=>e!==null).map(e=>e.state)),cells:t}})}}function md(e,t){let n=new Map(e.map((e,t)=>[e,t])),r=e=>t===`passes`?-e.passes:t===`state`?-ju[e.state]:0;return[...e].sort((e,t)=>r(e)-r(t)||(n.get(e)??0)-(n.get(t)??0))}var hd=(e,t,n=[])=>`${e}${n.length?`|${n.join(`.`)}`:``}#${t.unit||t.key}`;function gd(e,t,n){if(!n)return null;let r=n.indexOf(`#`);if(r<0){let t=e.nodes.find(e=>e.id===n);if(t)return{type:`node`,id:n,node:t};let r=e.boxes.find(e=>e.id===n);if(r)return{type:`box`,id:n,box:r};let i=e.fns.flatMap(e=>e.parts).find(e=>e.id===n);return i?{type:`node`,id:n,node:i.node}:null}let[i=``,a]=n.slice(0,r).split(`|`),o=n.slice(r+1),s=e=>!!e&&(e.unit?e.unit===o:e.key===o);if(a!==void 0){if(!t)return null;let e=t.columns.findIndex(e=>e.node.id===i&&e.passes.join(`.`)===a),r=t.columns[e],o=t.rows.map(t=>t.cells[e]).find(s);return r&&o?{type:`mark`,id:n,node:r.node,mark:o,passes:r.passes}:null}let c=e.nodes.find(e=>e.id===i),l=c?[...c.units,...c.single].find(s):void 0;return c&&l?{type:`mark`,id:n,node:c,mark:l,passes:[]}:null}var _d=[`done`,`partial`,`running`,`pending`,`failed`,`blocked`,`skipped`,`cancelled`],vd={done:{tone:`done`,shape:`round`},partial:{tone:`attention`,shape:`half`},running:{tone:`running`,shape:`round`},pending:{tone:`neutral`,shape:`ring`},failed:{tone:`failed`,shape:`square`},blocked:{tone:`attention`,shape:`hatched`},skipped:{tone:`muted`,shape:`round`},cancelled:{tone:`muted`,shape:`ring`}};function yd(e){return Object.fromEntries(_d.map(t=>[t,{...vd[t],label:bd(t,e),rank:ju[t],count:n=>xd(t,n,e)}]))}function bd(e,t){return as(h(e),t)}function xd(e,t,n){let r=h(e);return Z(r!==`waiting`||n?r:`not_run`,t)}function Sd(e){return D(E`${e.done} of ${e.total} tasks done`)}function Cd(e,t){return[`failed`,`blocked`,`partial`,`running`,`pending`,`cancelled`,`skipped`].filter(t=>e[t]).map(n=>xd(n,e[n],t))}function wd(e,t){let n=e.counts,r=[];return n.failed&&r.push([`err`,xd(`failed`,n.failed,t)]),e.errors&&r.push([`err`,e.errors===1?D(`1 flow call stopped with an error`):D(E`${e.errors} flow calls stopped with an error`)]),n.blocked&&r.push([`warn`,xd(`blocked`,n.blocked,t)]),n.partial&&r.push([`warn`,xd(`partial`,n.partial,t)]),n.running&&r.push([`live`,xd(`running`,n.running,t)]),n.pending&&r.push([`mut`,xd(`pending`,n.pending,t)]),n.skipped&&r.push([`mut`,xd(`skipped`,n.skipped,t)]),r}function Td(e,t){let n=t?t.slice(t.lastIndexOf(`/`)+1):``;return n?`${n}:${e}`:D(E`line ${e}`)}function Ed(e){return e.executor===`agent`?D(`Agent task`):e.executor===`python`?D(`Python task`):e.executor===`mixed`?K(D(`Agent task`),D(`Python task`)):``}function Dd(e){return e.type===`flow`?K(D(E`Function ${e.name}`),e.timeBox?D(E`Deadline ${B(e.timeBox.deadline_s)}`):``,Sd(e.counts)):K(e.label,Ed(e),Sd(e.counts))}function Od(e,t){let n=e=>{let n=t.nodes.find(t=>t.id===e);return n?n.box?D(E`${n.label} in the loop`):n.label:e},r=r=>[...t.stubs.filter(t=>t.to===e.id&&t.type===r).map(e=>e.label),...t.edges.filter(t=>t.to===e.id&&t.type===r).map(e=>n(e.from))];return{given:r(`given`),order:r(`after`),created:r(`created`),feeds:[...new Set(t.edges.filter(t=>t.from===e.id).map(e=>n(e.to)))]}}function kd(e,t,n){let r=e.counts,{given:i,order:a,created:o,feeds:s}=Od(e,t);return[e.type===`flow`?K(D(E`Function ${e.label}`),Sd(r)):K(e.label,Ed(e),Sd(r)),...wd(e,n).map(([,e])=>e),i.length?D(E`Given output of: ${q(i)}`):``,a.length?D(E`Runs after: ${q(a)}`):``,o.length?D(E`Created after: ${q(o)}`):``,s.length?D(E`Later tasks: ${q(s)}`):``].filter(Boolean).join(`. `)}function Ad(e,t,n,r=``){let i=t.flow?void 0:n.task,a=J({kind:t.count===1&&i?i.kind:e,unit:t.unit}),o=t.flow||t.state!==`blocked`?``:n.causeOf(t.key),s=o?D(E`Not started: ${o}`):bd(t.state,n.live),c=i?.attempts??1,l=c>1?D(E`${c} attempts`):``;return{name:a,parts:[s,r,t.passes?Ss(t.passes):``,l,t.flow||t.count>1?D(E`${t.count} tasks`):``,...t.counts?Cd(t.counts,n.live):[],...t.error===void 0?[]:[D(`Flow call stopped with an error`),t.error],t.flow||t.state!==`done`&&t.state!==`partial`&&t.state!==`failed`||!i?.wall_s?``:B(i.wall_s)].filter(Boolean),id:t.flow?D(E`Flow call ${t.key}`):t.key}}var jd={err:`failed`,warn:`attention`,live:`running`,mut:`muted`};function Md(e){return t=>{let{outcomes:n}=S(e.journal,e.plan),r=n.get(t);return r?hs(r,n,e.run):``}}var Nd=e=>{let t=Md(e);return n=>({task:e.links.byKey.get(n.key),causeOf:t,live:e.live})},Pd=e=>D(E`Loop at ${Td(e.loop,e.file)}`),Fd=e=>e.executor===`mixed`?[`agent`,`python`]:e.executor?[e.executor]:[];function Id(e,t,n=!1){let r=Nd(t),i=(e,t)=>{let{name:n,parts:i}=Ad(e.label,t,r(t));return{id:hd(e.id,t),state:t.state,label:K(n,...i),tip:[n,i[0]??``].filter(Boolean).join(`
421
+ `),...t.passes?{badge:String(t.passes)}:{},name:t.unit||t.key,drill:!!t.flow}},a=ud(t.forecast,e),o=e.nodes.map(r=>{let o=r.counts,s=a.get(r.id),c=s?function(e){return{text:D(E`+${e}`),label:D(e===1?`1 more task expected (forecast)`:E`${e} more tasks expected (forecast)`)}}(s):null;return{id:r.id,label:r.label,tip:Dd(r),summary:c?K(kd(r,e,t.live),c.label):kd(r,e,t.live),...c?{expected:c}:{},cluster:r.box,icons:Fd(r),accent:r.executor===`agent`,drill:r.type===`flow`,marks:r.units.map(e=>e&&i(r,e)),loose:r.single.map(e=>i(r,e)),counts:o,progress:{done:o.done,total:o.total,label:Sd(o)},notes:wd(r,t.live).map(([e,t])=>({text:t,tone:jd[e]})),look:o.failed||r.errors?`failed`:o.running?`running`:o.done+o.skipped===o.total?`done`:void 0,...r.type===`flow`&&n?{toggle:`closed`}:{}}}),s=e.fns.map(n=>{let r=n.parts[0].node,i=n.parts.map(e=>e.node.label).join(` › `),a=r.counts,o=wd(r,t.live).map(([,e])=>e);return{id:n.id,parent:n.parent,label:i,tip:r.name,note:`${a.done}/${a.total}`,...o.length?{detail:K(...o)}:{},summary:K(i,kd(r,e,t.live)),chipLabel:D(E`Inside ${i}`),chipTip:K(D(`Function`),i),drill:!0,cycle:!1,toggle:`open`,path:n.parts.map(e=>({id:e.id,label:e.node.label,tip:e.node.name}))}}),c=e.boxes.map(e=>{let t=Pd(e),n=e.spread.length>1?Cs(e.spread):``,r=xs(e.passes);return{id:e.id,parent:e.parent,label:ws(),tip:K(ws(),t),note:r,...n?{detail:n,detailTip:D(`Units by number of passes`)}:{},summary:K(t,r,n),chipLabel:K(D(E`Passes of the loop at ${Td(e.loop,e.file)}`),r),chipTip:K(t,r),drill:!0,cycle:!0}});return{series:e.units,nodes:o,clusters:[...c,...s],edges:e.edges.map(e=>({from:e.from,to:e.to,style:Ku(e.type),weight:e.tasks,ranks:e.samePass})),stubs:e.stubs.map(e=>({id:e.id,label:e.label,to:e.to,style:Ku(e.type),weight:e.tasks}))}}function Ld(e,t,n){let r=Wu(e,t);return{input:Id(r.model,{...n,plan:e}),proj:r}}function Rd(e,t,n){let r=Nd(n),i=e.box,a=Pd(i),o=e.rows.filter(e=>e.unit).length,s=e.head.map(e=>e.map(e=>{if(e.type===`pass`)return{id:`${e.box.id}|${e.pass}`,label:bs(e.pass),tip:e.box.id===i.id?Pd(e.box):D(E`Nested loop at ${Td(e.box.loop,e.box.file)}`),span:e.span,rows:e.rows,type:`group`};if(e.type===`loop`)return{id:e.box.id,label:ws(),tip:D(E`Nested loop at ${Td(e.box.loop,e.box.file)}`),code:!0,span:e.span,rows:e.rows,type:`group`};let t=e.node,n=t.type===`flow`;return{id:`${t.id}|${e.passes.join(`.`)}`,label:t.label,tip:n?D(E`Function ${t.name}`):K(t.label,Ed(t)),summary:n?t.label:K(t.label,Ed(t)),icons:t.executor&&t.executor!==`mixed`?[t.executor]:[],span:e.span,rows:e.rows,type:`column`}}));return{caption:a,...i.file?{captionTip:`${i.file}:${i.loop}`}:{},label:K(a,xs(i.passes)),facts:[xs(i.passes),i.spread.length>1?Cs(i.spread):``,D(o===1?`1 unit`:E`${o} units`)].filter(Boolean),head:s,columns:e.columns.map(e=>({id:`${e.node.id}|${e.passes.join(`.`)}`,groups:e.passes.map((t,n)=>e.passes.slice(0,n+1).join(`.`))})),rows:md(e.rows,t).map(t=>({id:t.unit,label:t.unit||D(`No unit`),tip:t.unit||D(`Tasks that run once per run, not once per unit`),muted:!t.unit,value:t.passes,strong:t.passes>1,cells:t.cells.map((t,n)=>t&&((t,n)=>{let i=e.columns[t],a=i?.node.label??``,o=i?.passes??[],{name:s,parts:c}=Ad(a,n,r(n),q(o.map(bs)));return{id:hd(i?.node.id??``,n,o),state:n.state,label:K(s,...c),tip:[s,c[0]??``].filter(Boolean).join(`
422
+ `),drill:!!n.flow}})(n,t))})),value:{label:D(`Passes`),tip:D(`Passes of this loop`)},sorts:[{id:`order`,label:D(`Scheduled order`)},{id:`passes`,label:D(`Number of passes`)},{id:`state`,label:D(`Status`,{id:`status`})}],sort:t}}function zd(e,t,n,r,i,a,o){let s=pd(e,t,n,r,o);return s&&{input:Rd(s,i,{...a,plan:e}),matrix:s}}function Bd(e,t=[],n,r=!1){let{model:i}=Wu(e,t);return Yu(i,lo(Ju(i),n,r))}function Vd(e){let t=Su(e),n=[],r=new Set;if(t.calls)for(let e of t.calls.values())e.state!==`raised`&&e.state!==`closed`||r.add(e.id);for(;;){let e=null,i=!0,a=[];for(let r of t.tasks){if(!Cu(r.path,n))continue;let t=ku(r,n.length);if(t.type===`kind`||e&&e.id!==t.id){i=!1;break}e=t,a.push(r)}let o=a.some(e=>{return i=Au(e,n.length,t.calls).id,r.has(i)&&![...r].some(e=>e!==i&&e.startsWith(`${i}.`));var i});if(!i||!e||o)return n;n.push(e.name)}}function Hd(e){let t=e[e.length-1];return t?.startsWith(`loop:`)?{path:e.slice(0,-1),loop:t}:{path:[...e],loop:null}}function Ud(e,t){let{path:n,loop:r}=Hd(t),i=Su(e),a=t=>!r||Wu(e,t).model.boxes.some(e=>e.id===r);if(i.tasks.some(e=>Cu(e.path,n)))return a(n)?[...t]:null;let o=n[n.length-1];if(o===void 0)return null;let s=e=>{let t=new Map;for(let n of i.tasks)n.path.forEach((r,i)=>e(r)&&t.set(n.path.slice(0,i+1).join(`/`),n.path.slice(0,i+1)));return[...t.values()]},c=s(e=>e===o),l=c.length?c:s(e=>wu(e)===o),u=l.length===1?l[0]:null;return u&&a(u)?r?[...u,r]:u:null}function Wd(e,t){if(e.length<=t.length)return null;let n=e.slice(0,-1);return n.length<=t.length?[]:n}function Gd(e,t,n){return pi((e=>e?`⚙`:`✦`)(e),t,{cls:n??`k-ic `+(e?``:`llm`)})}var Kd=k` .k-ic{display:inline-grid;place-items:center;width:20px;height:20px;border-radius:6px;margin-right:7px;font-size:var(--font-size-sm);background:var(--raise);color:var(--text-muted);flex:none;}.k-ic.llm{background:var(--agent-bg);color:var(--agent);}`;function qd(e,t){t!==e.sel&&$(e.el,`ca-navigate`,{sel:t})}function Jd(e,t,n=e.unit){let r=t.join(`/`);$(e.el,`ca-navigate`,{layer:r===e.auto.join(`/`)?``:r,unit:n})}function Yd(e,t){$(e.el,`ca-navigate`,{tab:`tasks`,kind:t.kinds.length===1?t.kinds[0]:``})}function Xd(e,t,n){if(t.flow)return Jd(e,[...n?.layer??e.graph.path,t.flow],t.unit||e.unit);let r=e.links.byKey.get(t.key);$(e.el,`ca-open-task`,t.state===`blocked`?{key:t.key,view:`input`}:r?.executor===`python`?{key:t.key,view:`output`}:{key:t.key})}function Zd(e,t){return t.type===`mark`?Xd(e,t.mark,t.node):t.type===`box`?Jd(e,[...t.box.layer,t.box.local]):t.node.type===`flow`?Jd(e,[...t.node.layer,t.node.name]):void Yd(e,t.node)}function Qd(e,t){let n=function(e,t){let n=e=>{let r=e;for(;r.type===`fn`&&!t(r.id)&&r.kids.length===1&&r.kids[0]?.type===`fn`&&!t(r.kids[0].id);){let e=r.kids[0];r={...r,label:`${r.label} › ${e.label}`,tip:`${r.tip}\n${e.tip}`,kids:e.kids,parts:[...r.parts,...e.parts]}}return{...r,kids:r.kids.map(n)}};return e.map(n)}(t,t=>e.current(t)),r=(t,n=``)=>{let i=t.kids.length>0&&e.expanded(t.id),a=t.counts,o=a.total?Math.round((a.done+a.partial+a.skipped)/a.total*100):0,s=(t=>wd({counts:t.counts,errors:+!!t.errors},e.live))(t),c=s.map(([,e])=>e).join(`|`),l=c===n?[]:s,u=t.parts.some(t=>e.current(t.id)),d=t.parts.some(t=>e.here(t.id));return A`<li>
423
423
  <div class="orow ${u?`cur`:``} ${t.parts.some(t=>e.selected(t.id))?`sel`:``}">
424
424
  ${t.kids.length?A`<button type="button" class="odisc" aria-expanded=${i} aria-label=${D(i?E`Fold ${t.label}`:E`Unfold ${t.label}`)} @click=${()=>e.expand(t.id,!i)}><span aria-hidden="true">${i?`▾`:`▸`}</span></button>`:A`<span class="odisc" aria-hidden="true"></span>`}
425
425
  <button type="button" class="oname" title=${t.tip||M} aria-current=${d?`location`:M} @click=${n=>n.detail<2&&e.pick(t)} @dblclick=${()=>e.enter(t)} @keydown=${n=>{n.key===`Enter`&&(n.preventDefault(),e.enter(t))}}>
426
426
  ${t.type===`loop`?bo(12):M}<span class="ol">${t.label}</span>
427
427
  <span class="obar" aria-hidden="true"><i style="width:${o}%"></i></span>
428
- <span class="ocount" title=${dd(a)}>${a.done}/${a.total}</span>
428
+ <span class="ocount" title=${Sd(a)}>${a.done}/${a.total}</span>
429
429
  </button>
430
430
  ${l.length?A`<div class="onote">${l.map(([e,t])=>A`<span class=${e}>${t}</span>`)}</div>`:M}
431
431
  </div>
432
432
  ${i?A`<ul>${t.kids.map(e=>r(e,c))}</ul>`:M}
433
- </li>`};return A`<nav class="outline" aria-label=${D(`Outline of the flow`)}><ul class="otree">${n.map(e=>r(e))}</ul></nav>`}var Hd=[V,Fd,Jr,k` :host{display:flex;flex-direction:column;}cae-layered-graph{flex:auto;min-height:0;}.bar{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;margin-bottom:8px;font-size:12px;}.crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:4px;list-style:none;margin:0;padding:0;}.crumbs li{display:inline-flex;align-items:center;gap:4px;}.crumbs .sep{color:var(--text-muted);}.crumbs button{all:unset;cursor:pointer;color:var(--accent);font-family:var(--mono);}.crumbs button:hover{text-decoration:underline;}.crumbs button:focus-visible{outline:var(--focus-width) solid var(--focus);outline-offset:2px;border-radius:3px;}.crumbs [aria-current]{font-family:var(--mono);color:var(--text);font-weight:600;}.pin{display:inline-flex;align-items:center;gap:8px;color:var(--text-2);}.pin b{font-family:var(--mono);}.missing{margin-bottom:8px;font-size:12px;color:var(--status-attention);}.missing code{font-family:var(--mono);}.card{display:contents;}.ic{display:block;flex:none;}.loop-ic{color:var(--text-2);}.in-ic{color:var(--text-muted);}.card h4{margin:0;display:flex;align-items:center;gap:7px;font-family:var(--mono);font-size:13px;font-weight:600;color:var(--text);overflow-wrap:anywhere;}.card h4 .mark{--m:11px;flex:none;cursor:default;animation:none;}.card h4 .mark:hover{transform:none;outline:none;}.card h4 .k-ic{width:18px;height:18px;margin:0;border-radius:5px;font-size:10px;}.card .sub{color:var(--text-2);}.card dl{display:grid;grid-template-columns:fit-content(42%) minmax(0,1fr);gap:4px 12px;margin:0;}.card dt{color:var(--text-muted);word-break:keep-all;overflow-wrap:break-word;}.card dd{margin:0;color:var(--text);overflow-wrap:anywhere;font-variant-numeric:tabular-nums;}.card dd .err{color:var(--status-failed);}.card dd .warn{color:var(--status-attention);}.card .acts{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;padding-top:2px;}.card .go{all:unset;cursor:pointer;color:var(--accent);overflow-wrap:anywhere;}.card .go.primary{font-weight:600;}.card .go:hover{text-decoration:underline;}.card .go:focus-visible{outline:var(--focus-width) solid var(--focus);outline-offset:2px;border-radius:3px;}.card .acts .switch{margin-left:auto;}.switch{all:unset;cursor:pointer;font-size:11.5px;color:var(--text-2);padding:2px 8px;border-radius:6px;border:1px solid var(--line);}.switch:hover{color:var(--text);border-color:var(--line2);}.switch:focus-visible{outline:var(--focus-width) solid var(--focus);outline-offset:1px;}.switch[aria-pressed='true']{color:var(--text);background:var(--accent-bg);border-color:var(--accent);}.opens{display:inline-flex;gap:6px;margin-left:auto;}.forecast{font-size:12px;color:var(--text-muted);margin:0 0 8px;display:flex;flex-wrap:wrap;align-items:center;gap:4px;}.forecast .expected-mark{display:inline-block;width:18px;height:10px;border:1.5px dotted var(--line2);border-radius:999px;margin-right:4px;}.unawaited{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 8px;}.card .down{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px;}.whole,.whole>.g{display:flex;flex-direction:column;flex:auto;min-height:0;min-width:0;}.whole.side{display:grid;grid-template-columns:minmax(200px,282px) minmax(0,1fr);gap:14px;align-items:start;}.outline{font-size:12px;max-height:70vh;overflow:auto;padding:2px 6px 2px 0;border-right:1px solid var(--line);}.otree,.otree ul{list-style:none;margin:0;padding:0;}.otree ul{padding-left:10px;}.orow{display:grid;grid-template-columns:16px minmax(0,1fr);align-items:start;border-radius:6px;}.orow.sel{background:var(--accent-bg);}.orow.cur .ol{font-weight:600;color:var(--text);}.odisc{all:unset;cursor:pointer;width:16px;text-align:center;color:var(--text-muted);font-size:10px;line-height:22px;}.odisc:focus-visible,.oname:focus-visible{outline:var(--focus-width) solid var(--focus);outline-offset:1px;border-radius:4px;}.oname{all:unset;cursor:pointer;display:flex;align-items:flex-start;gap:6px;min-width:0;padding:3px 6px 3px 2px;border-radius:6px;color:var(--text-2);}.oname:hover{background:var(--raise);color:var(--text);}.oname .loop-ic{flex:none;color:var(--text-muted);}.ol{flex:1;min-width:0;overflow-wrap:break-word;font-family:var(--mono);line-height:1.35;}.obar{flex:none;width:32px;height:4px;margin-top:6px;border-radius:2px;background:var(--track);overflow:hidden;}.obar i{display:block;height:100%;background:var(--meter);}.ocount{flex:none;font-size:11px;color:var(--text-muted);font-variant-numeric:tabular-nums;}.onote{grid-column:2;display:flex;flex-wrap:wrap;gap:0 8px;padding:0 6px 2px 2px;font-size:11px;}.onote .err{color:var(--status-failed);}.onote .warn{color:var(--status-attention);}.onote .live{color:var(--status-running);}.onote .mut{color:var(--text-muted);}.odet{margin-bottom:8px;}.odet>summary{cursor:pointer;font-size:12px;color:var(--text-2);padding:2px 0;}.odet .outline{border-right:none;max-height:50vh;}`],Ud=[Fd,k` .node .k-ic{width:16px;height:16px;margin-right:6px;border-radius:4px;font-size:9.5px;}.legend .k-ic{width:14px;height:14px;margin:0;border-radius:4px;font-size:8.5px;}.list .k-ic{width:16px;height:16px;border-radius:4px;font-size:9.5px;}.list .nm .k-ic{margin:0 -2px 0 0;}.matrix thead th.nh .k-ic{width:14px;height:14px;margin-right:5px;border-radius:4px;font-size:8.5px;vertical-align:-2px;}`],Wd=e=>Math.max(14,Math.min(60,Math.round(e/34))),Gd=e=>Math.max(8,Math.min(16,Math.round(e/105))),Kd=(e,t)=>t>0&&t/(180*e)<.6,qd=`*all`,Jd=`*none`,Yd={...lo({nodes:[],clusters:[],edges:[],stubs:[]}),path:[],nodes:[],boxes:[],fns:[],edges:[],stubs:[],units:[]},Xd=class extends N{constructor(...e){super(...e),this.plan={nodes:[],groups:[]},this.forecast=null,this.journal=[],this.run=``,this.live=!1,this.layer=``,this.unit=``,this.sel=``,this.down=!1,this.tall=!1,this.sort=`order`,this.missing=``,this.fixLayer=null,this.replacing=!1,this.auto=[],this.segments=[],this.proj=null,this.model=null,this.graph=Yd,this.input={series:[],nodes:[],clusters:[],edges:[],stubs:[]},this.prevOrder=void 0,this.matrix=null,this.matrixIn=null,this.orders=new Map,this.links=Xu([]),this.states=cd(!1),this.locale=``,this.opened=null,this.closed=null,this.memRun=null,this.rev=0,this.budget=40,this.shownOpen=new Set,this.stats=new Map,this.focusToggle=``,this.flowStats=new Map,this.tree=[],this.folds=new Map,this.wide=!0,this.oh=this.outlineHost(),this.lights=()=>new Set,this.refocus=!1,this.cameFrom=``,this.h=this.partsHost(),this.onToggle=e=>this.toggle(e.detail.id,e.detail.open),this.onEscape=e=>{if(e.key!==`Escape`||e.defaultPrevented)return;let t=Nd(this.segments,this.auto);t&&(e.preventDefault(),this.refocus=!0,this.cameFrom=this.segments[this.segments.length-1]??``,Ld(this.h,t))},this.onSelect=e=>Id(this.h,e.detail.id??``),this.onActivate=e=>{let t=ad(this.graph,this.matrix,e.detail.id);t?.type===`mark`?zd(this.h,t.mark,t.node):t?.type===`node`&&Rd(this.h,t.node)},this.onDrill=e=>{let t=ad(this.graph,this.matrix,e.detail.id);t&&Bd(this.h,t)},this.onView=e=>{e.detail.view===`graph`&&this.matrix&&function(e){let t=e.segments[e.segments.length-1]??``,n=Nd(e.segments,e.auto)??[],r=e.auto.join(`/`);$(e.el,`ca-navigate`,{layer:n.join(`/`)===r?``:n.join(`/`),unit:e.unit,sel:t})}(this.h)}}static{this.styles=Hd}static{this.properties={plan:{attribute:!1},forecast:{attribute:!1},journal:{attribute:!1},run:{},live:{type:Boolean},layer:{},unit:{},sel:{},down:{state:!0},sort:{state:!0},missing:{state:!0},rev:{state:!0},budget:{state:!0},wide:{state:!0}}}willUpdate(e){if(e.has(`run`)&&this.orders.clear(),e.has(`layer`)&&e.get(`layer`)!==void 0){let e=this.renderRoot instanceof ShadowRoot?this.renderRoot.activeElement:null,t=e?.shadowRoot?.activeElement;this.refocus=e!==null&&!t?.closest(`.views`),this.replacing?this.replacing=!1:this.missing=``}e.has(`run`)&&e.get(`run`)!==void 0&&(this.missing=``),e.has(`plan`)&&(this.links=Xu(this.plan.nodes)),(e.has(`plan`)||e.has(`live`))&&(this.flowStats=Hu(du(this.plan),[],this.live),this.tree=function(e){let t=new Map;for(let n of e.values())(t.get(n.parent)??t.set(n.parent,[]).get(n.parent))?.push(n);let n=e=>{let r=[],i=new Map;for(let a of t.get(e)??[]){let e={id:a.key,type:`fn`,label:pu(a.name),tip:a.name,layer:a.layer,name:a.name,counts:a.counts,errors:a.errors,kids:n(a.key),parts:[{id:a.key,layer:a.layer,name:a.name}]},t=r;a.loops.forEach((e,n)=>{let r=`${au}${a.loops.slice(0,n+1).join(`.`)}`,o=`${a.layer.join(`/`)}|${r}`,s=i.get(o);if(!s){let e=a.loops[n];s={id:o,type:`loop`,label:D(E`Loop at ${md(e,a.file)}`),tip:a.file?`${a.file}:${e}`:``,layer:a.layer,name:r,counts:{total:0,done:0,partial:0,failed:0,running:0,pending:0,skipped:0,blocked:0,cancelled:0},errors:!1,kids:[],parts:[{id:o,layer:a.layer,name:r}]},i.set(o,s),t.push(s)}for(let e of Object.keys(s.counts))s.counts[e]+=a.counts[e];s.errors||=a.errors,t=s.kids}),t.push(e)}return r};return n(null)}(this.flowStats)),e.has(`run`)&&this.folds.clear();let t=e.has(`sel`)&&!!this.sel&&!jd(this.segments).loop&&!ad(this.graph,this.matrix,this.sel),n=e.has(`plan`)||e.has(`layer`)||e.has(`run`)||e.has(`down`)||e.has(`rev`)||e.has(`budget`)||t;if(n){if(this.auto=Ad(this.plan),this.segments=this.layer?this.layer.split(`/`):this.auto,this.layer&&this.plan.nodes.length){let e=Md(this.plan,this.segments);e?e.join(`/`)!==this.layer&&(this.segments=e,this.fixLayer=e.join(`/`)===this.auto.join(`/`)?``:e.join(`/`)):(this.missing=this.layer,this.segments=this.auto,this.fixLayer=``)}let{path:e,loop:t}=jd(this.segments);if(t)this.proj=Nu(this.plan,e),this.model=this.proj.model;else{let t=this.memory(),n=this.openMode(),r=Ju(this.plan,e,{open:new Set(t.opened.values().filter(e=>!e.startsWith(`*`))),closed:new Set(t.closed.values()),all:n===`all`,budget:n===`none`?0:this.budget,maxSpan:Gd(this.graphWidth()),sel:this.sel,live:this.live});this.proj=null,this.model=r.model,this.shownOpen=r.open,this.stats=r.stats}this.prevOrder=this.orders.get(e.join(`/`))}let r=An(),i=n||e.has(`journal`)||e.has(`live`)||e.has(`forecast`)||r!==this.locale;(i||e.has(`sort`))&&this.build(i,r)}build(e,t){let n=this.model;if(!n)return;let r=this.proj,{path:i,loop:a}=jd(this.segments),o={plan:this.plan,journal:this.journal,run:this.run,live:this.live,links:this.links,forecast:this.forecast};if(e){this.locale=t,this.states=cd(this.live),this.input=Td(n,o,!a);let e=lo(this.input,this.prevOrder,this.down);this.tall=!this.down&&!a&&Kd(uo(e).span,this.graphWidth()),this.tall&&(e=lo(this.input,this.prevOrder,!0)),this.graph=Ru(n,e),this.orders.set(i.join(`/`),e.order),this.lights=function(e,t,n){let r=n.nodes.flatMap(e=>[...e.units,...e.single].filter(e=>e!==null).map(t=>[id(e.id,t),t])),i=new Map(r.map(([e,t])=>[e,t.key])),a=new Map;return n=>{let o=a.get(n);if(o)return o;let s=function(e,t,n){let r=e.filter(e=>e.unit?e.unit===n:e.key===n).map(e=>e.key),i=new Map(r.map(e=>[e,null]));for(let[e,n]of ou.entries()){let a=new Set(ou.slice(0,e+1));for(let e of[t.earlier,t.later]){let t=new Set(r),o=[...r];for(let r=o.pop();r!==void 0;r=o.pop())for(let s of e.get(r)??[])a.has(s.type)&&!t.has(s.key)&&(t.add(s.key),i.has(s.key)||i.set(s.key,n),o.push(s.key))}}return i}(e.nodes,t,i.get(n)??n),c=new Map;for(let[e,t]of r){let n=t.keys.filter(e=>s.has(e)).map(e=>s.get(e)??null);if(!n.length)continue;let r=ou.find(e=>n.includes(e));c.set(e,n.includes(null)||!r?null:Fu(r))}return a.set(n,c),c}}(this.plan,this.links,this.graph)}let s=a&&r?Od(this.plan,i,a,this.graph.order,this.sort,o,r):null;this.matrix=s?.matrix??null,this.matrixIn=s?.input??null}connectedCallback(){super.connectedCallback(),this.addEventListener(`keydown`,this.onEscape),this.resize=new ResizeObserver(()=>{let e=this.clientWidth,t=e>0&&e<640;t!==this.down&&(this.down=t);let n=e>0?Wd(this.graphWidth()):this.budget;n!==this.budget&&(this.budget=n);let r=e===0||e>=1500;r!==this.wide&&(this.wide=r)}),this.resize.observe(this)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener(`keydown`,this.onEscape),this.resize?.disconnect()}memory(){return this.opened&&this.closed&&this.memRun===this.run||(this.memRun=this.run,this.opened=new Xn(`graph-open:${this.run}`,this),this.closed=new Xn(`graph-closed:${this.run}`,this)),{opened:this.opened,closed:this.closed}}openMode(){let{opened:e}=this.memory();return e.has(qd)?`all`:e.has(Jd)?`none`:`auto`}setMode(e){let{opened:t,closed:n}=this.memory();t.clear(),n.clear(),e===`all`&&t.set(qd,!0),e===`none`&&t.set(Jd,!0),Wn(),this.rev++}placeOfNode(e){let t=this.graph.nodes.find(t=>t.id===e);if(!t||t.type!==`flow`)return null;let n=e.includes(`::`)?e.slice(e.lastIndexOf(`::`)+2):e;return Bu(t.layer,n)}toggle(e,t){let n=e.startsWith(`fx::`)?e.slice(4):this.placeOfNode(e);if(!n)return;let{opened:r,closed:i}=this.memory();r.set(n,t),i.set(n,!t),Wn(),this.focusToggle=t?`${zu}${n}`:this.nodeIdOf(n),this.rev++}nodeIdOf(e){let t=this.stats.get(e);if(!t)return``;let n=t.parent;return n!==null&&this.shownOpen.has(n)?`${n}::${t.id}`:t.id}updated(){if(this.focusToggle){let e=this.focusToggle;this.focusToggle=``;let t=this.renderRoot.querySelector(`cae-layered-graph`);t&&t.updateComplete.then(()=>t.focusToggle(e))}if(this.fixLayer!==null){let e=this.fixLayer;this.fixLayer=null,this.replacing=!0,$(this,`ca-navigate`,{layer:e,unit:this.unit,sel:this.sel,replace:!0})}if(this.refocus||this.cameFrom){let e=this.cameFrom;this.refocus=!1,this.cameFrom=``;let t=e.startsWith(`loop:`)?e:this.graph.nodes.find(t=>t.type===`flow`&&t.name===e)?.id??null,n=this.renderRoot.querySelector(`cae-layered-graph`);n&&n.updateComplete.then(()=>n.focusItem(e?t:null))}}render(){if(!this.plan.nodes.length)return A`<div class="blank" style="padding:24px">${this.live?D(`No tasks scheduled yet`):D(`No tasks scheduled`)}</div>`;let e=this.wide&&this.tree.length>0,t=this.tree.length?e?Vd(this.oh,this.tree):A`<details class="odet"><summary>${D(`Outline of the flow`)}</summary>${Vd(this.oh,this.tree)}</details>`:M;return A`<div class="whole ${e?`side`:``}">${t}<div class="g">${this.renderGraph()}</div></div>`}renderGraph(){let e=ad(this.graph,this.matrix,this.sel),t=this.graph.nodes.some(e=>e.type===`flow`);return A`<cae-layered-graph .graph=${this.input} .states=${this.states} .selected=${this.sel||null} .highlight=${this.unit||null} .order=${this.prevOrder} key=${this.segments.join(`/`)} direction=${this.down||this.tall?`down`:`across`} .matrix=${this.matrixIn} .related=${this.lights} .strings=${function(e,t){let n=D(`Enter: open`);return{graph:D(`Graph`,{id:`view-graph`}),table:D(`Table`,{id:`view-table`}),view:D(`View`),zoomIn:D(`Zoom in`),zoomInTip:D(`Zoom in (Ctrl + scroll)`),zoomOut:D(`Zoom out`),zoomOutTip:D(`Zoom out (Ctrl + scroll)`),showAll:D(`Show all`),graphKeys:[D(`Tab: next node`),D(`Arrow keys: marks`),D(`Shift + arrow keys: earlier and later tasks`),n],tableKeys:[D(`Tab: next row`),n],matrixKeys:[D(`Arrow keys: marks`),n],clearKey:D(`Esc: clear selection`),upKey:e?D(`Esc: up a level`):``,inspector:D(`Selected item`),stubTip:D(`Outside this layer`),more:e=>D(E`+${e}`),badge:D(`number of passes`),solidEdge:rl(`given_from`),dottedEdge:rl(`after`),dashedEdge:rl(`created_from`),cycle:D(`next pass`),drill:D(`has a level below`),open:D(`Show inside`),close:D(`Hide inside`),iconNames:{agent:D(`agent task`),python:D(`Python task`)},nameHeader:D(t?`Kind or function`:`Kind`),statusHeader:D(`Status`,{id:`status`}),solidHeader:D(`Given output of`),dottedHeader:D(`Runs after`),dashedHeader:D(`Created after`),laterHeader:D(`Later tasks`),none:D(`none`,{id:`none`}),inCluster:e=>D(E`${e} in the loop`),list:e=>q(e)}}(!!Nd(this.segments,this.auto),t)} .matrixStrings=${{sortBy:D(`Sort units`),rowsHeader:D(`Unit`)}} .renderIcon=${Zd} .iconStyles=${Ud} @cae-select=${this.onSelect} @cae-activate=${this.onActivate} @cae-drill=${this.onDrill} @cae-view-change=${this.onView} @cae-toggle=${this.onToggle} @cae-sort=${e=>this.sort=e.detail.id}>
434
- <div slot="crumbs">${function(e,t=null){let n=e.segments,r=e.unit;if(!n.length&&!r&&!t)return M;let{path:i,loop:a}=jd(n),o=[...i.map((e,t)=>({name:pu(e),tip:e,to:i.slice(0,t+1)})),...(a?a.slice(5).split(`.`):[]).map((t,n,r)=>{let a=au+r.slice(0,n+1).join(`.`),o=e.graph.boxes.find(e=>e.id===a)?.file||e.matrix?.box.file||``,s=/^\d+$/.test(t);return{name:D(s?E`Loop at ${md(t,o)}`:`Loop`),tip:s&&o?`${o}:${t}`:``,to:[...i,a]}})];return A`<div class="bar">
433
+ </li>`};return A`<nav class="outline" aria-label=${D(`Outline of the flow`)}><ul class="otree">${n.map(e=>r(e))}</ul></nav>`}var $d=[V,Kd,Jr,k` :host{display:flex;flex-direction:column;}cae-layered-graph{flex:auto;min-height:0;}.bar{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;margin-bottom:8px;font-size:12px;}.crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:4px;list-style:none;margin:0;padding:0;}.crumbs li{display:inline-flex;align-items:center;gap:4px;}.crumbs .sep{color:var(--text-muted);}.crumbs button{all:unset;cursor:pointer;color:var(--accent);font-family:var(--mono);}.crumbs button:hover{text-decoration:underline;}.crumbs button:focus-visible{outline:var(--focus-width) solid var(--focus);outline-offset:2px;border-radius:3px;}.crumbs [aria-current]{font-family:var(--mono);color:var(--text);font-weight:600;}.pin{display:inline-flex;align-items:center;gap:8px;color:var(--text-2);}.pin b{font-family:var(--mono);}.missing{margin-bottom:8px;font-size:12px;color:var(--status-attention);}.missing code{font-family:var(--mono);}.card{display:contents;}.ic{display:block;flex:none;}.loop-ic{color:var(--text-2);}.in-ic{color:var(--text-muted);}.card h4{margin:0;display:flex;align-items:center;gap:7px;font-family:var(--mono);font-size:13px;font-weight:600;color:var(--text);overflow-wrap:anywhere;}.card h4 .mark{--m:11px;flex:none;cursor:default;animation:none;}.card h4 .mark:hover{transform:none;outline:none;}.card h4 .k-ic{width:18px;height:18px;margin:0;border-radius:5px;font-size:10px;}.card .sub{color:var(--text-2);}.card dl{display:grid;grid-template-columns:fit-content(42%) minmax(0,1fr);gap:4px 12px;margin:0;}.card dt{color:var(--text-muted);word-break:keep-all;overflow-wrap:break-word;}.card dd{margin:0;color:var(--text);overflow-wrap:anywhere;font-variant-numeric:tabular-nums;}.card dd .err{color:var(--status-failed);}.card dd .warn{color:var(--status-attention);}.card .acts{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;padding-top:2px;}.card .go{all:unset;cursor:pointer;color:var(--accent);overflow-wrap:anywhere;}.card .go.primary{font-weight:600;}.card .go:hover{text-decoration:underline;}.card .go:focus-visible{outline:var(--focus-width) solid var(--focus);outline-offset:2px;border-radius:3px;}.card .acts .switch{margin-left:auto;}.switch{all:unset;cursor:pointer;font-size:11.5px;color:var(--text-2);padding:2px 8px;border-radius:6px;border:1px solid var(--line);}.switch:hover{color:var(--text);border-color:var(--line2);}.switch:focus-visible{outline:var(--focus-width) solid var(--focus);outline-offset:1px;}.switch[aria-pressed='true']{color:var(--text);background:var(--accent-bg);border-color:var(--accent);}.opens{display:inline-flex;gap:6px;margin-left:auto;}.forecast{font-size:12px;color:var(--text-muted);margin:0 0 8px;display:flex;flex-wrap:wrap;align-items:center;gap:4px;}.forecast .expected-mark{display:inline-block;width:18px;height:10px;border:1.5px dotted var(--line2);border-radius:999px;margin-right:4px;}.unawaited{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 8px;}.card .down{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px;}.whole,.whole>.g{display:flex;flex-direction:column;flex:auto;min-height:0;min-width:0;}.whole.side{display:grid;grid-template-columns:minmax(200px,282px) minmax(0,1fr);gap:14px;align-items:start;}.outline{font-size:12px;max-height:70vh;overflow:auto;padding:2px 6px 2px 0;border-right:1px solid var(--line);}.otree,.otree ul{list-style:none;margin:0;padding:0;}.otree ul{padding-left:10px;}.orow{display:grid;grid-template-columns:16px minmax(0,1fr);align-items:start;border-radius:6px;}.orow.sel{background:var(--accent-bg);}.orow.cur .ol{font-weight:600;color:var(--text);}.odisc{all:unset;cursor:pointer;width:16px;text-align:center;color:var(--text-muted);font-size:10px;line-height:22px;}.odisc:focus-visible,.oname:focus-visible{outline:var(--focus-width) solid var(--focus);outline-offset:1px;border-radius:4px;}.oname{all:unset;cursor:pointer;display:flex;align-items:flex-start;gap:6px;min-width:0;padding:3px 6px 3px 2px;border-radius:6px;color:var(--text-2);}.oname:hover{background:var(--raise);color:var(--text);}.oname .loop-ic{flex:none;color:var(--text-muted);}.ol{flex:1;min-width:0;overflow-wrap:break-word;font-family:var(--mono);line-height:1.35;}.obar{flex:none;width:32px;height:4px;margin-top:6px;border-radius:2px;background:var(--track);overflow:hidden;}.obar i{display:block;height:100%;background:var(--meter);}.ocount{flex:none;font-size:11px;color:var(--text-muted);font-variant-numeric:tabular-nums;}.onote{grid-column:2;display:flex;flex-wrap:wrap;gap:0 8px;padding:0 6px 2px 2px;font-size:11px;}.onote .err{color:var(--status-failed);}.onote .warn{color:var(--status-attention);}.onote .live{color:var(--status-running);}.onote .mut{color:var(--text-muted);}.odet{margin-bottom:8px;}.odet>summary{cursor:pointer;font-size:12px;color:var(--text-2);padding:2px 0;}.odet .outline{border-right:none;max-height:50vh;}`],ef=[Kd,k` .node .k-ic{width:16px;height:16px;margin-right:6px;border-radius:4px;font-size:9.5px;}.legend .k-ic{width:14px;height:14px;margin:0;border-radius:4px;font-size:8.5px;}.list .k-ic{width:16px;height:16px;border-radius:4px;font-size:9.5px;}.list .nm .k-ic{margin:0 -2px 0 0;}.matrix thead th.nh .k-ic{width:14px;height:14px;margin-right:5px;border-radius:4px;font-size:8.5px;vertical-align:-2px;}`],tf=e=>Math.max(14,Math.min(60,Math.round(e/34))),nf=e=>Math.max(8,Math.min(16,Math.round(e/105))),rf=(e,t)=>t>0&&t/(180*e)<.6,af=`*all`,of=`*none`,sf={...lo({nodes:[],clusters:[],edges:[],stubs:[]}),path:[],nodes:[],boxes:[],fns:[],edges:[],stubs:[],units:[]},cf=class extends N{constructor(...e){super(...e),this.plan={nodes:[],groups:[]},this.forecast=null,this.journal=[],this.run=``,this.live=!1,this.layer=``,this.unit=``,this.sel=``,this.down=!1,this.tall=!1,this.sort=`order`,this.missing=``,this.fixLayer=null,this.replacing=!1,this.auto=[],this.segments=[],this.proj=null,this.model=null,this.graph=sf,this.input={series:[],nodes:[],clusters:[],edges:[],stubs:[]},this.prevOrder=void 0,this.matrix=null,this.matrixIn=null,this.orders=new Map,this.links=sd([]),this.states=yd(!1),this.locale=``,this.opened=null,this.closed=null,this.memRun=null,this.rev=0,this.budget=40,this.shownOpen=new Set,this.stats=new Map,this.focusToggle=``,this.flowStats=new Map,this.tree=[],this.folds=new Map,this.wide=!0,this.oh=this.outlineHost(),this.lights=()=>new Set,this.refocus=!1,this.cameFrom=``,this.h=this.partsHost(),this.onToggle=e=>this.toggle(e.detail.id,e.detail.open),this.onEscape=e=>{if(e.key!==`Escape`||e.defaultPrevented)return;let t=Wd(this.segments,this.auto);t&&(e.preventDefault(),this.refocus=!0,this.cameFrom=this.segments[this.segments.length-1]??``,Jd(this.h,t))},this.onSelect=e=>qd(this.h,e.detail.id??``),this.onActivate=e=>{let t=gd(this.graph,this.matrix,e.detail.id);t?.type===`mark`?Xd(this.h,t.mark,t.node):t?.type===`node`&&Yd(this.h,t.node)},this.onDrill=e=>{let t=gd(this.graph,this.matrix,e.detail.id);t&&Zd(this.h,t)},this.onView=e=>{e.detail.view===`graph`&&this.matrix&&function(e){let t=e.segments[e.segments.length-1]??``,n=Wd(e.segments,e.auto)??[],r=e.auto.join(`/`);$(e.el,`ca-navigate`,{layer:n.join(`/`)===r?``:n.join(`/`),unit:e.unit,sel:t})}(this.h)}}static{this.styles=$d}static{this.properties={plan:{attribute:!1},forecast:{attribute:!1},journal:{attribute:!1},run:{},live:{type:Boolean},layer:{},unit:{},sel:{},down:{state:!0},sort:{state:!0},missing:{state:!0},rev:{state:!0},budget:{state:!0},wide:{state:!0}}}willUpdate(e){if(e.has(`run`)&&this.orders.clear(),e.has(`layer`)&&e.get(`layer`)!==void 0){let e=this.renderRoot instanceof ShadowRoot?this.renderRoot.activeElement:null,t=e?.shadowRoot?.activeElement;this.refocus=e!==null&&!t?.closest(`.views`),this.replacing?this.replacing=!1:this.missing=``}e.has(`run`)&&e.get(`run`)!==void 0&&(this.missing=``),e.has(`plan`)&&(this.links=sd(this.plan.nodes)),(e.has(`plan`)||e.has(`live`))&&(this.flowStats=$u(Su(this.plan),[],this.live),this.tree=function(e){let t=new Map;for(let n of e.values())(t.get(n.parent)??t.set(n.parent,[]).get(n.parent))?.push(n);let n=e=>{let r=[],i=new Map;for(let a of t.get(e)??[]){let e={id:a.key,type:`fn`,label:wu(a.name),tip:a.name,layer:a.layer,name:a.name,counts:a.counts,errors:a.errors,kids:n(a.key),parts:[{id:a.key,layer:a.layer,name:a.name}]},t=r;a.loops.forEach((e,n)=>{let r=`${gu}${a.loops.slice(0,n+1).join(`.`)}`,o=`${a.layer.join(`/`)}|${r}`,s=i.get(o);if(!s){let e=a.loops[n];s={id:o,type:`loop`,label:D(E`Loop at ${Td(e,a.file)}`),tip:a.file?`${a.file}:${e}`:``,layer:a.layer,name:r,counts:{total:0,done:0,partial:0,failed:0,running:0,pending:0,skipped:0,blocked:0,cancelled:0},errors:!1,kids:[],parts:[{id:o,layer:a.layer,name:r}]},i.set(o,s),t.push(s)}for(let e of Object.keys(s.counts))s.counts[e]+=a.counts[e];s.errors||=a.errors,t=s.kids}),t.push(e)}return r};return n(null)}(this.flowStats)),e.has(`run`)&&this.folds.clear();let t=e.has(`sel`)&&!!this.sel&&!Hd(this.segments).loop&&!gd(this.graph,this.matrix,this.sel),n=e.has(`plan`)||e.has(`layer`)||e.has(`run`)||e.has(`down`)||e.has(`rev`)||e.has(`budget`)||t;if(n){if(this.auto=Vd(this.plan),this.segments=this.layer?this.layer.split(`/`):this.auto,this.layer&&this.plan.nodes.length){let e=Ud(this.plan,this.segments);e?e.join(`/`)!==this.layer&&(this.segments=e,this.fixLayer=e.join(`/`)===this.auto.join(`/`)?``:e.join(`/`)):(this.missing=this.layer,this.segments=this.auto,this.fixLayer=``)}let{path:e,loop:t}=Hd(this.segments);if(t)this.proj=Wu(this.plan,e),this.model=this.proj.model;else{let t=this.memory(),n=this.openMode(),r=ad(this.plan,e,{open:new Set(t.opened.values().filter(e=>!e.startsWith(`*`))),closed:new Set(t.closed.values()),all:n===`all`,budget:n===`none`?0:this.budget,maxSpan:nf(this.graphWidth()),sel:this.sel,live:this.live});this.proj=null,this.model=r.model,this.shownOpen=r.open,this.stats=r.stats}this.prevOrder=this.orders.get(e.join(`/`))}let r=An(),i=n||e.has(`journal`)||e.has(`live`)||e.has(`forecast`)||r!==this.locale;(i||e.has(`sort`))&&this.build(i,r)}build(e,t){let n=this.model;if(!n)return;let r=this.proj,{path:i,loop:a}=Hd(this.segments),o={plan:this.plan,journal:this.journal,run:this.run,live:this.live,links:this.links,forecast:this.forecast};if(e){this.locale=t,this.states=yd(this.live),this.input=Id(n,o,!a);let e=lo(this.input,this.prevOrder,this.down);this.tall=!this.down&&!a&&rf(uo(e).span,this.graphWidth()),this.tall&&(e=lo(this.input,this.prevOrder,!0)),this.graph=Yu(n,e),this.orders.set(i.join(`/`),e.order),this.lights=function(e,t,n){let r=n.nodes.flatMap(e=>[...e.units,...e.single].filter(e=>e!==null).map(t=>[hd(e.id,t),t])),i=new Map(r.map(([e,t])=>[e,t.key])),a=new Map;return n=>{let o=a.get(n);if(o)return o;let s=function(e,t,n){let r=e.filter(e=>e.unit?e.unit===n:e.key===n).map(e=>e.key),i=new Map(r.map(e=>[e,null]));for(let[e,n]of _u.entries()){let a=new Set(_u.slice(0,e+1));for(let e of[t.earlier,t.later]){let t=new Set(r),o=[...r];for(let r=o.pop();r!==void 0;r=o.pop())for(let s of e.get(r)??[])a.has(s.type)&&!t.has(s.key)&&(t.add(s.key),i.has(s.key)||i.set(s.key,n),o.push(s.key))}}return i}(e.nodes,t,i.get(n)??n),c=new Map;for(let[e,t]of r){let n=t.keys.filter(e=>s.has(e)).map(e=>s.get(e)??null);if(!n.length)continue;let r=_u.find(e=>n.includes(e));c.set(e,n.includes(null)||!r?null:Ku(r))}return a.set(n,c),c}}(this.plan,this.links,this.graph)}let s=a&&r?zd(this.plan,i,a,this.graph.order,this.sort,o,r):null;this.matrix=s?.matrix??null,this.matrixIn=s?.input??null}connectedCallback(){super.connectedCallback(),this.addEventListener(`keydown`,this.onEscape),this.resize=new ResizeObserver(()=>{let e=this.clientWidth,t=e>0&&e<640;t!==this.down&&(this.down=t);let n=e>0?tf(this.graphWidth()):this.budget;n!==this.budget&&(this.budget=n);let r=e===0||e>=1500;r!==this.wide&&(this.wide=r)}),this.resize.observe(this)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener(`keydown`,this.onEscape),this.resize?.disconnect()}memory(){return this.opened&&this.closed&&this.memRun===this.run||(this.memRun=this.run,this.opened=new Xn(`graph-open:${this.run}`,this),this.closed=new Xn(`graph-closed:${this.run}`,this)),{opened:this.opened,closed:this.closed}}openMode(){let{opened:e}=this.memory();return e.has(af)?`all`:e.has(of)?`none`:`auto`}setMode(e){let{opened:t,closed:n}=this.memory();t.clear(),n.clear(),e===`all`&&t.set(af,!0),e===`none`&&t.set(of,!0),Wn(),this.rev++}placeOfNode(e){let t=this.graph.nodes.find(t=>t.id===e);if(!t||t.type!==`flow`)return null;let n=e.includes(`::`)?e.slice(e.lastIndexOf(`::`)+2):e;return Zu(t.layer,n)}toggle(e,t){let n=e.startsWith(`fx::`)?e.slice(4):this.placeOfNode(e);if(!n)return;let{opened:r,closed:i}=this.memory();r.set(n,t),i.set(n,!t),Wn(),this.focusToggle=t?`${Xu}${n}`:this.nodeIdOf(n),this.rev++}nodeIdOf(e){let t=this.stats.get(e);if(!t)return``;let n=t.parent;return n!==null&&this.shownOpen.has(n)?`${n}::${t.id}`:t.id}updated(){if(this.focusToggle){let e=this.focusToggle;this.focusToggle=``;let t=this.renderRoot.querySelector(`cae-layered-graph`);t&&t.updateComplete.then(()=>t.focusToggle(e))}if(this.fixLayer!==null){let e=this.fixLayer;this.fixLayer=null,this.replacing=!0,$(this,`ca-navigate`,{layer:e,unit:this.unit,sel:this.sel,replace:!0})}if(this.refocus||this.cameFrom){let e=this.cameFrom;this.refocus=!1,this.cameFrom=``;let t=e.startsWith(`loop:`)?e:this.graph.nodes.find(t=>t.type===`flow`&&t.name===e)?.id??null,n=this.renderRoot.querySelector(`cae-layered-graph`);n&&n.updateComplete.then(()=>n.focusItem(e?t:null))}}render(){if(!this.plan.nodes.length)return A`<div class="blank" style="padding:24px">${this.live?D(`No tasks scheduled yet`):D(`No tasks scheduled`)}</div>`;let e=this.wide&&this.tree.length>0,t=this.tree.length?e?Qd(this.oh,this.tree):A`<details class="odet"><summary>${D(`Outline of the flow`)}</summary>${Qd(this.oh,this.tree)}</details>`:M;return A`<div class="whole ${e?`side`:``}">${t}<div class="g">${this.renderGraph()}</div></div>`}renderGraph(){let e=gd(this.graph,this.matrix,this.sel),t=this.graph.nodes.some(e=>e.type===`flow`);return A`<cae-layered-graph .graph=${this.input} .states=${this.states} .selected=${this.sel||null} .highlight=${this.unit||null} .order=${this.prevOrder} key=${this.segments.join(`/`)} direction=${this.down||this.tall?`down`:`across`} .matrix=${this.matrixIn} .related=${this.lights} .strings=${function(e,t){let n=D(`Enter: open`);return{graph:D(`Graph`,{id:`view-graph`}),table:D(`Table`,{id:`view-table`}),view:D(`View`),zoomIn:D(`Zoom in`),zoomInTip:D(`Zoom in (Ctrl + scroll)`),zoomOut:D(`Zoom out`),zoomOutTip:D(`Zoom out (Ctrl + scroll)`),showAll:D(`Show all`),graphKeys:[D(`Tab: next node`),D(`Arrow keys: marks`),D(`Shift + arrow keys: earlier and later tasks`),n],tableKeys:[D(`Tab: next row`),n],matrixKeys:[D(`Arrow keys: marks`),n],clearKey:D(`Esc: clear selection`),upKey:e?D(`Esc: up a level`):``,inspector:D(`Selected item`),stubTip:D(`Outside this layer`),more:e=>D(E`+${e}`),badge:D(`number of passes`),solidEdge:il(`given_from`),dottedEdge:il(`after`),dashedEdge:il(`created_from`),cycle:D(`next pass`),drill:D(`has a level below`),open:D(`Show inside`),close:D(`Hide inside`),iconNames:{agent:D(`agent task`),python:D(`Python task`)},nameHeader:D(t?`Kind or function`:`Kind`),statusHeader:D(`Status`,{id:`status`}),solidHeader:D(`Given output of`),dottedHeader:D(`Runs after`),dashedHeader:D(`Created after`),laterHeader:D(`Later tasks`),none:D(`none`,{id:`none`}),inCluster:e=>D(E`${e} in the loop`),list:e=>q(e)}}(!!Wd(this.segments,this.auto),t)} .matrixStrings=${{sortBy:D(`Sort units`),rowsHeader:D(`Unit`)}} .renderIcon=${lf} .iconStyles=${ef} @cae-select=${this.onSelect} @cae-activate=${this.onActivate} @cae-drill=${this.onDrill} @cae-view-change=${this.onView} @cae-toggle=${this.onToggle} @cae-sort=${e=>this.sort=e.detail.id}>
434
+ <div slot="crumbs">${function(e,t=null){let n=e.segments,r=e.unit;if(!n.length&&!r&&!t)return M;let{path:i,loop:a}=Hd(n),o=[...i.map((e,t)=>({name:wu(e),tip:e,to:i.slice(0,t+1)})),...(a?a.slice(5).split(`.`):[]).map((t,n,r)=>{let a=gu+r.slice(0,n+1).join(`.`),o=e.graph.boxes.find(e=>e.id===a)?.file||e.matrix?.box.file||``,s=/^\d+$/.test(t);return{name:D(s?E`Loop at ${Td(t,o)}`:`Loop`),tip:s&&o?`${o}:${t}`:``,to:[...i,a]}})];return A`<div class="bar">
435
435
  ${n.length?A`<nav aria-label=${D(`Pipeline layer`)}>
436
436
  <ol class="crumbs">
437
- <li><button type="button" @click=${()=>Ld(e,[])}>${D(`Pipeline`)}</button></li>
437
+ <li><button type="button" @click=${()=>Jd(e,[])}>${D(`Pipeline`)}</button></li>
438
438
  ${o.map((t,n)=>A`<li><span class="sep" aria-hidden="true">›</span>
439
- ${n===o.length-1?A`<span aria-current="page" title=${t.tip||M}>${t.name}</span>`:A`<button type="button" title=${t.tip||M} @click=${()=>Ld(e,t.to)}>${t.name}</button>`}</li>`)}
439
+ ${n===o.length-1?A`<span aria-current="page" title=${t.tip||M}>${t.name}</span>`:A`<button type="button" title=${t.tip||M} @click=${()=>Jd(e,t.to)}>${t.name}</button>`}</li>`)}
440
440
  </ol>
441
441
  </nav>`:M}
442
442
  ${r?A`<span class="pin">${D(E`Unit: ${r}`)}
443
443
  <button type="button" class="switch" @click=${()=>$(e.el,`ca-navigate`,{unit:``})}>${D(`Clear highlight`)}</button></span>`:M}
444
444
  ${t??M}
445
- </div>`}(this.h,jd(this.segments).loop?null:function(e,t){let n=(n,r)=>A`<button type="button" class="switch" aria-pressed=${e===n} @click=${()=>t(e===n?`auto`:n)}>${r}</button>`;return A`<span class="opens">${n(`all`,D(`Show all inside`))}${n(`none`,D(`Hide all inside`))}</span>`}(this.openMode(),e=>this.setMode(e)))}${function(e){if(!e)return M;let t=e.split(`/`),n=t[t.length-1]||e;return A`<div class="missing" role="status" title=${e}>${D(A`No layer <code>${n}</code> in this run`)}</div>`}(this.missing)}${this.segments.join(`/`)===this.auto.join(`/`)?A`${function(e,t){if(!td(t))return M;let n=(r=ed(t,e)).length?D(E`Not in the plan yet: ${q(r.map(e=>`${e.group} +${e.remaining}`))}`):``;var r,i;return A`<div class="forecast" title=${i=t,D(E`Tasks this run is expected to create and has not yet, from the run ${i.earlier_run} of the same flow (forecast)`)}><span class="expected-mark" aria-hidden="true"></span>${function(e){return K(e.remaining===1?D(`Forecast: 1 more task`):D(E`Forecast: ${e.remaining} more tasks`),e.wall_s?D(E`${B(e.wall_s)} of task time`):``,e.cost_usd!==null&&e.cost_usd!==void 0?X(e.cost_usd):``)}(t)}${n?A`<span class="sep" aria-hidden="true"> | </span>${n}`:M}</div>`}(this.plan,this.forecast)}${function(e){let t=[...new Set((e.plan.flow_calls??[]).filter(e=>e.parent===null).flatMap(e=>e.unawaited??[]))];return t.length?A`<div class="unawaited" title=${D(`Tasks whose result no flow awaited, ordered a task after or returned (unawaited); they ran for their output files and changes`)}>
445
+ </div>`}(this.h,Hd(this.segments).loop?null:function(e,t){let n=(n,r)=>A`<button type="button" class="switch" aria-pressed=${e===n} @click=${()=>t(e===n?`auto`:n)}>${r}</button>`;return A`<span class="opens">${n(`all`,D(`Show all inside`))}${n(`none`,D(`Hide all inside`))}</span>`}(this.openMode(),e=>this.setMode(e)))}${function(e){if(!e)return M;let t=e.split(`/`),n=t[t.length-1]||e;return A`<div class="missing" role="status" title=${e}>${D(A`No layer <code>${n}</code> in this run`)}</div>`}(this.missing)}${this.segments.join(`/`)===this.auto.join(`/`)?A`${function(e,t){if(!fd(t))return M;let n=(r=dd(t,e)).length?D(E`Not in the plan yet: ${q(r.map(e=>`${e.group} +${e.remaining}`))}`):``;var r,i;return A`<div class="forecast" title=${i=t,D(E`Tasks this run is expected to create and has not yet, from the run ${i.earlier_run} of the same flow (forecast)`)}><span class="expected-mark" aria-hidden="true"></span>${function(e){return K(e.remaining===1?D(`Forecast: 1 more task`):D(E`Forecast: ${e.remaining} more tasks`),e.wall_s?D(E`${B(e.wall_s)} of task time`):``,e.cost_usd!==null&&e.cost_usd!==void 0?X(e.cost_usd):``)}(t)}${n?A`<span class="sep" aria-hidden="true"> | </span>${n}`:M}</div>`}(this.plan,this.forecast)}${function(e){let t=[...new Set((e.plan.flow_calls??[]).filter(e=>e.parent===null).flatMap(e=>e.unawaited??[]))];return t.length?A`<div class="unawaited" title=${D(`Tasks whose result no flow awaited, ordered a task after or returned (unawaited); they ran for their output files and changes`)}>
446
446
  <span class="meta">${n=t.length,D(n===1?`1 task not awaited`:E`${n} tasks not awaited`)}</span>
447
- ${t.map(t=>{let n=e.links.byKey.get(t);return bl(e.el,n?J(n):t,n??{key:t})})}
447
+ ${t.map(t=>{let n=e.links.byKey.get(t);return xl(e.el,n?J(n):t,n??{key:t})})}
448
448
  </div>`:M;var n}(this.h)}`:M}</div>
449
- ${e?function(e,t){return A`<div slot="inspector" class="card">${function(e,t){let n=(e,t)=>A`<dt>${e}</dt><dd>${t}</dd>`,r=(e,t,n=!1)=>A`<button type="button" class="go ${n?`primary`:``}" @click=${t}>${e}</button>`,i=A`<button type="button" class="switch" @click=${()=>Id(e,``)}>${D(`Clear selection`)}</button>`,a=e=>e.length?q(e):D(`none`,{id:`none`});if(t.type===`box`){let a=t.box,o=md(a.loop,a.file);return A`<h4 title=${a.file?`${a.file}:${a.loop}`:M}>${bo(16)}${D(E`Loop at ${o}`)}</h4>
449
+ ${e?function(e,t){return A`<div slot="inspector" class="card">${function(e,t){let n=(e,t)=>A`<dt>${e}</dt><dd>${t}</dd>`,r=(e,t,n=!1)=>A`<button type="button" class="go ${n?`primary`:``}" @click=${t}>${e}</button>`,i=A`<button type="button" class="switch" @click=${()=>qd(e,``)}>${D(`Clear selection`)}</button>`,a=e=>e.length?q(e):D(`none`,{id:`none`});if(t.type===`box`){let a=t.box,o=Td(a.loop,a.file);return A`<h4 title=${a.file?`${a.file}:${a.loop}`:M}>${bo(16)}${D(E`Loop at ${o}`)}</h4>
450
450
  <dl>
451
451
  ${n(D(`Passes`),xs(a.passes))}
452
452
  ${a.spread.length>1?n(D(`Units by number of passes`),Cs(a.spread)):M}
453
453
  </dl>
454
- <div class="acts">${r(D(E`Passes of the loop at ${o}`),()=>Bd(e,t),!0)}${i}</div>`}if(t.type===`node`){let o=t.node,s=o.counts,{given:c,order:l,created:u,feeds:d}=_d(o,e.graph),f=function(e,t,n,r,i){let a=!n.length&&!r.length&&!i.length;return A`${n.length||a?e(D(`Given output of`),t(n)):M}
454
+ <div class="acts">${r(D(E`Passes of the loop at ${o}`),()=>Zd(e,t),!0)}${i}</div>`}if(t.type===`node`){let o=t.node,s=o.counts,{given:c,order:l,created:u,feeds:d}=Od(o,e.graph),f=function(e,t,n,r,i){let a=!n.length&&!r.length&&!i.length;return A`${n.length||a?e(D(`Given output of`),t(n)):M}
455
455
  ${r.length?e(D(`Runs after`),t(r)):M}
456
- ${i.length?e(D(`Created after`),t(i)):M}`}(n,a,c,l,u),p=pd(o,e.live).map(([e,t])=>A`<div class=${e}>${t}</div>`);return o.type===`flow`?A`<h4 title=${o.name}>${xo()}${o.label}</h4>
456
+ ${i.length?e(D(`Created after`),t(i)):M}`}(n,a,c,l,u),p=wd(o,e.live).map(([e,t])=>A`<div class=${e}>${t}</div>`);return o.type===`flow`?A`<h4 title=${o.name}>${xo()}${o.label}</h4>
457
457
  <div class="sub">${D(`Function`)}</div>
458
458
  <dl>
459
459
  ${n(D(`Flow calls`),o.calls)}
460
- ${o.timeBox?n(D(`Deadline`),A`<span title=${hc()}>${function(e){let t=e.finishing_kinds??[];return K(B(e.deadline_s),e.grace_s&&t.length?D(E`finishing time ${B(e.grace_s)}`):``,t.length?D(E`finishing kinds: ${q(t)}`):``)}(o.timeBox)}</span>`):M}
461
- ${n(D(`Tasks`,{id:`tasks`}),A`${dd(s)}${p}`)}
460
+ ${o.timeBox?n(D(`Deadline`),A`<span title=${gc()}>${function(e){let t=e.finishing_kinds??[];return K(B(e.deadline_s),e.grace_s&&t.length?D(E`finishing time ${B(e.grace_s)}`):``,t.length?D(E`finishing kinds: ${q(t)}`):``)}(o.timeBox)}</span>`):M}
461
+ ${n(D(`Tasks`,{id:`tasks`}),A`${Sd(s)}${p}`)}
462
462
  ${f}
463
463
  ${n(D(`Later tasks`),a(d))}
464
464
  </dl>
465
- <div class="acts">${r(D(E`Inside ${o.label}`),()=>Bd(e,t),!0)}${i}</div>`:A`<h4>${o.executor&&o.executor!==`mixed`?Pd(o.executor===`python`):M}${o.label}</h4>
466
- <div class="sub">${hd(o)}</div>
465
+ <div class="acts">${r(D(E`Inside ${o.label}`),()=>Zd(e,t),!0)}${i}</div>`:A`<h4>${o.executor&&o.executor!==`mixed`?Gd(o.executor===`python`):M}${o.label}</h4>
466
+ <div class="sub">${Ed(o)}</div>
467
467
  <dl>
468
468
  ${o.kinds.length>1?n(D(`Kinds`),q(o.kinds)):M}
469
- ${n(D(`Tasks`,{id:`tasks`}),A`${dd(s)}${p}`)}
469
+ ${n(D(`Tasks`,{id:`tasks`}),A`${Sd(s)}${p}`)}
470
470
  ${f}
471
471
  ${n(D(`Later tasks`),a(d))}
472
472
  </dl>
473
- <div class="acts">${r(D(E`Tasks of ${o.label}`),()=>Bd(e,t),!0)}${i}</div>`}let{node:o,mark:s,passes:c}=t,l=s.flow||s.count!==1?void 0:e.links.byKey.get(s.key),u=J({kind:l?.kind??o.label,unit:s.unit}),d=s.flow||s.state!==`blocked`?``:xd(e)(s.key),p=A`<span data-status class=${s.state===`failed`?`err`:s.state===`blocked`||s.state===`partial`?`warn`:``}>${ld(s.state,e.live)}</span>`,m=cd(e.live)[s.state],h=A`<h4 title=${s.flow?D(E`Flow call ${s.key}`):s.key}><i class="mark" data-tone=${L(m?.tone)} data-shape=${m?.shape??M} aria-hidden="true"></i>${u}</h4>`,g=c.length?q(c.map(bs)):s.passes?Ss(s.passes):``;if(s.flow){let a=s.counts;return A`${h}
473
+ <div class="acts">${r(D(E`Tasks of ${o.label}`),()=>Zd(e,t),!0)}${i}</div>`}let{node:o,mark:s,passes:c}=t,l=s.flow||s.count!==1?void 0:e.links.byKey.get(s.key),u=J({kind:l?.kind??o.label,unit:s.unit}),d=s.flow||s.state!==`blocked`?``:Md(e)(s.key),p=A`<span data-status class=${s.state===`failed`?`err`:s.state===`blocked`||s.state===`partial`?`warn`:``}>${bd(s.state,e.live)}</span>`,m=yd(e.live)[s.state],h=A`<h4 title=${s.flow?D(E`Flow call ${s.key}`):s.key}><i class="mark" data-tone=${L(m?.tone)} data-shape=${m?.shape??M} aria-hidden="true"></i>${u}</h4>`,g=c.length?q(c.map(bs)):s.passes?Ss(s.passes):``;if(s.flow){let a=s.counts;return A`${h}
474
474
  <dl>
475
475
  ${n(D(`Status`,{id:`status`}),p)}
476
476
  ${g?n(D(`Pass`),g):M}
477
- ${s.deadlineAt?n(D(`Deadline`),A`<span title=${hc()}>${_=s.deadlineAt,G(_,!0)}</span>`):M}
478
- ${a?n(D(`Tasks`,{id:`tasks`}),A`${dd(a)}${fd(a,e.live).map(e=>A`<div>${e}</div>`)}`):M}
477
+ ${s.deadlineAt?n(D(`Deadline`),A`<span title=${gc()}>${_=s.deadlineAt,G(_,!0)}</span>`):M}
478
+ ${a?n(D(`Tasks`,{id:`tasks`}),A`${Sd(a)}${Cd(a,e.live).map(e=>A`<div>${e}</div>`)}`):M}
479
479
  ${s.error===void 0?M:n(D(`Error`),A`<span class="err">${s.error||D(`Flow call stopped with an error`)}</span>`)}
480
- ${function(e,t,n){let r=e.plan.flow_calls?.find(e=>e.id===n);if(!r||r.state!==`raised`)return M;let i=r.raised_by?e.links.byKey.get(r.raised_by):void 0,a=i?J(i):r.raised_by??``,o=function(e,t,n=``){let r=ll(e,n);return t?D(r?E`Stopped at ${r} by the failure of ${t}`:E`Stopped by the failure of ${t}`):r?D(E`Stopped at ${r}`):``}(r,a,e.run);return o?t(D(`Stopped`,{id:`flow-call-stopped`}),A`<div>${o}</div>${r.raised_by?A`<div class="down">${bl(e.el,a,i??{key:r.raised_by})}</div>`:M}`):M}(e,n,s.key)}
480
+ ${function(e,t,n){let r=e.plan.flow_calls?.find(e=>e.id===n);if(!r||r.state!==`raised`)return M;let i=r.raised_by?e.links.byKey.get(r.raised_by):void 0,a=i?J(i):r.raised_by??``,o=function(e,t,n=``){let r=ul(e,n);return t?D(r?E`Stopped at ${r} by the failure of ${t}`:E`Stopped by the failure of ${t}`):r?D(E`Stopped at ${r}`):``}(r,a,e.run);return o?t(D(`Stopped`,{id:`flow-call-stopped`}),A`<div>${o}</div>${r.raised_by?A`<div class="down">${xl(e.el,a,i??{key:r.raised_by})}</div>`:M}`):M}(e,n,s.key)}
481
481
  </dl>
482
- <div class="acts">${r(D(E`Inside ${pu(s.flow)}`),()=>Bd(e,t),!0)}${i}</div>`}var _;let v=e.journal.filter(e=>s.keys.includes(e.key)).filter(f),y=v.map(e=>e.cost_usd).filter(e=>typeof e==`number`),b=v.reduce((e,t)=>e+(t.wall_s??0),0);return A`${h}
482
+ <div class="acts">${r(D(E`Inside ${wu(s.flow)}`),()=>Zd(e,t),!0)}${i}</div>`}var _;let v=e.journal.filter(e=>s.keys.includes(e.key)).filter(f),y=v.map(e=>e.cost_usd).filter(e=>typeof e==`number`),b=v.reduce((e,t)=>e+(t.wall_s??0),0);return A`${h}
483
483
  <dl>
484
484
  ${n(D(`Status`,{id:`status`}),d?A`${p}<div>${d}</div>`:p)}
485
485
  ${g?n(D(`Pass`),g):M}
@@ -487,14 +487,14 @@ ${s.count>1?n(D(`Tasks`,{id:`tasks`}),D(E`${s.count} tasks`)):M}
487
487
  ${n(D(`Attempts`),v.length||D(`none`,{id:`none`}))}
488
488
  ${n(D(`Time`),v.length?B(b):D(`none`,{id:`none`}))}
489
489
  ${n(D(`Cost`),y.length?X(y.reduce((e,t)=>e+t,0)):`—`)}
490
- ${l?function(e,t,n){let r=(e.plan.flow_calls??[]).filter(e=>e.raised_by===n);return r.length?t(D(`Stopped`,{id:`flow-call-stopped`}),r.map(t=>A`<div>${ul(t,e.run)}</div>`)):M}(e,n,l.key):M}
490
+ ${l?function(e,t,n){let r=(e.plan.flow_calls??[]).filter(e=>e.raised_by===n);return r.length?t(D(`Stopped`,{id:`flow-call-stopped`}),r.map(t=>A`<div>${dl(t,e.run)}</div>`)):M}(e,n,l.key):M}
491
491
  </dl>
492
- <div class="acts">${r(D(`Task detail`),()=>Bd(e,t),!0)}${o.kinds.length===1?r(D(E`Tasks of ${o.label}`),()=>Rd(e,o)):M}${i}</div>`}(e,t)}</div>`}(this.h,e):M}
493
- </cae-layered-graph>`}graphWidth(){let e=this.clientWidth||1200;return this.tree.length&&e>=1500?e-300:e}currentKeys(){let{path:e}=jd(this.segments),t=new Set;for(let n of this.flowStats.values()){let r=n.layer.length;r<e.length&&fu(e,n.layer)&&e[r]===n.name&&t.add(n.key)}return t}selectedItem(){let e=this.sel;if(!e)return``;if(e.startsWith(`fx::`))return e.slice(4);let t=e.split(`#`)[0]??``;if(this.graph.nodes.find(e=>e.id===t)?.type===`flow`)return this.placeOfNode(t)??``;let n=this.graph.boxes.find(e=>e.id===t);return n?`${n.layer.join(`/`)}|${n.local}`:``}drawnId(e){let{path:t}=jd(this.segments);if(e.layer.length<t.length||!fu(e.layer,t))return null;let n=[];for(let r=this.flowStats.get(e.type===`fn`?this.flowStats.get(e.id)?.parent??``:this.containerKey(e)??``);r&&r.layer.length>=t.length;r=this.flowStats.get(r.parent??``))n.unshift(r.key);let r=n[n.length-1]??``;if(e.type===`fn`){let t=this.flowStats.get(e.id);return t?this.shownOpen.has(e.id)?{id:`${zu}${e.id}`,open:n}:{id:r?`${r}::${t.id}`:t.id,open:n}:null}return{id:r?`${r}::${e.name}`:e.name,open:n}}containerKey(e){let{path:t}=jd(this.segments);if(e.layer.length===t.length)return``;for(let t of this.flowStats.values())if([...t.layer,t.name].join(`/`)===e.layer.join(`/`))return t.key;return null}outlineHost(){let e=this;return{get live(){return e.live},expanded(t){let n=e.folds.get(t);if(n!==void 0)return n;let r=new Set([...e.currentKeys(),...e.shownOpen,e.selectedItem()]),i=e=>r.has(e.id)||e.kids.some(i),a=Qd(e.tree,t);return!!a&&(e.tree.includes(a)||i(a))},expand(t,n){e.folds.set(t,n),e.requestUpdate()},current:t=>e.currentKeys().has(t),here:t=>{let{path:n}=jd(e.segments),r=e.flowStats.get(t);return!!r&&r.layer.length===n.length-1&&fu(n,[...r.layer,r.name])},selected:t=>!!t&&e.selectedItem()===t,pick(t){let n=e.drawnId(t);if(!n){let n=t.type===`fn`?e.flowStats.get(t.id)?.id??``:t.name;$(e,`ca-navigate`,{layer:t.layer.join(`/`)===e.auto.join(`/`)?``:t.layer.join(`/`),unit:e.unit,sel:n});return}let{opened:r,closed:i}=e.memory(),a=!1;for(let t of n.open)e.shownOpen.has(t)||(a=!0),r.set(t,!0),i.set(t,!1);a&&e.rev++,Id(e.h,n.id)},enter(t){let n=t.parts[t.parts.length-1]??t;Ld(e.h,[...n.layer,n.name])}}}partsHost(){let e=this;return{el:e,get plan(){return e.plan},get journal(){return e.journal},get run(){return e.run},get live(){return e.live},get sel(){return e.sel},get unit(){return e.unit},get segments(){return e.segments},get auto(){return e.auto},get graph(){return e.graph},get matrix(){return e.matrix},get links(){return e.links}}}};Xd=U([P(`ca-pipeline-graph`),O()],Xd);var Zd=e=>Pd(e===`python`);function Qd(e,t){for(let n of e){if(n.id===t)return n;let e=Qd(n.kids,t);if(e)return e}}function $d(e){if(!e||e.policy===`off`)return[];let t=[...(e.stopped??[]).map(e=>({label:Yc(),text:e,tone:`failed`,tip:``})),...(e.kept??[]).map(e=>({label:Yc(),text:K(e.kind,Kc(e.agent,e.model),e.reason),tone:`attention`,tip:D(`A kind with no available model, run on its own model (kept)`)})),...(e.substituted??[]).map(e=>({label:D(`Model replaced`),text:Jc(e),tone:`attention`,tip:D(`A kind with no available model, run on the first model that answered (substitute)`)})),...(e.dropped??[]).map(e=>({label:D(`Unavailable`),text:qc(e),tone:`muted`,tip:``}))];return t.length?t:[{label:``,text:D(`all models available`),tone:`neutral`,tip:``}]}var ef={failed:`✕`,attention:`◌`,done:`✓`,running:``,muted:`■`,neutral:`■`},tf=class extends N{constructor(...e){super(...e),this.procs=null,this.plan={nodes:[],groups:[]}}static{this.styles=[V,qr,k` :host{display:block;}.drv{display:flex;gap:14px;align-items:flex-start;}.drv-ic{width:42px;height:42px;border-radius:12px;flex:none;display:grid;place-items:center;font-size:16px;background:var(--raise);color:var(--text-muted);}.drv.on .drv-ic{background:var(--status-running-bg);box-shadow:0 0 0 1px color-mix(in srgb,var(--status-running) 35%,transparent),0 0 22px var(--status-running-bg);}.drv-ic[data-tone]{color:var(--tone);font-weight:700;}.drv-ic[data-tone='failed'],.drv-ic[data-tone='attention']{background:var(--tone-bg);}.drv.on .drv-ic .spin{width:18px;height:18px;}.drv-t{font-size:15px;font-weight:600;}.drv-up{font-family:var(--mono);font-size:12px;color:var(--status-running);margin-left:6px;font-weight:400;}.drv-cmd{margin-top:8px;}.drv-cmd summary{cursor:pointer;font-size:11px;color:var(--text-muted);}.pf{margin-top:10px;font-size:12px;}.pf-h{color:var(--text-muted);font-size:11px;margin-bottom:4px;}.pf-rows{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:3px 12px;margin:0;}.pf-rows dt{color:var(--text-muted);}.pf-rows dt[data-tone]{color:var(--tone);}.pf-rows dd{margin:0;color:var(--text-2);overflow-wrap:anywhere;}.drv-cmd code{display:block;margin-top:4px;white-space:pre-wrap;word-break:break-all;color:var(--text-2);max-height:120px;overflow:auto;}`]}stateTitle(){if(this.plan.preflight?.stopped?.length)return[D(`Ended before the first agent session`),`failed`];if(!this.plan.nodes.length)return[D(`Not running`),`neutral`];let e=ee(this.plan);return e.failed?[e.failed===1?D(`Finished with 1 task failed`):D(E`Finished with ${e.failed} tasks failed`),`failed`]:e.left?[e.left===1?D(`Finished with 1 task not done`):D(E`Finished with ${e.left} tasks not done`),`attention`]:e.notStarted?[e.notStarted===1?D(`Finished with 1 task not started`):D(E`Finished with ${e.notStarted} tasks not started`),`attention`]:[D(`Finished`),`done`]}render(){let e=this.procs,t=this.summary;if(!e?.alive){let e=ne(t)===`unresponsive`,[r,i]=e?[Zo(oc()),`attention`]:this.stateTitle(),a=e?null:te(t);return A`<div class="drv off">
494
- <div class="drv-ic" data-tone=${L(i)} aria-hidden="true">${ef[i]}</div>
492
+ <div class="acts">${r(D(`Task detail`),()=>Zd(e,t),!0)}${o.kinds.length===1?r(D(E`Tasks of ${o.label}`),()=>Yd(e,o)):M}${i}</div>`}(e,t)}</div>`}(this.h,e):M}
493
+ </cae-layered-graph>`}graphWidth(){let e=this.clientWidth||1200;return this.tree.length&&e>=1500?e-300:e}currentKeys(){let{path:e}=Hd(this.segments),t=new Set;for(let n of this.flowStats.values()){let r=n.layer.length;r<e.length&&Cu(e,n.layer)&&e[r]===n.name&&t.add(n.key)}return t}selectedItem(){let e=this.sel;if(!e)return``;if(e.startsWith(`fx::`))return e.slice(4);let t=e.split(`#`)[0]??``;if(this.graph.nodes.find(e=>e.id===t)?.type===`flow`)return this.placeOfNode(t)??``;let n=this.graph.boxes.find(e=>e.id===t);return n?`${n.layer.join(`/`)}|${n.local}`:``}drawnId(e){let{path:t}=Hd(this.segments);if(e.layer.length<t.length||!Cu(e.layer,t))return null;let n=[];for(let r=this.flowStats.get(e.type===`fn`?this.flowStats.get(e.id)?.parent??``:this.containerKey(e)??``);r&&r.layer.length>=t.length;r=this.flowStats.get(r.parent??``))n.unshift(r.key);let r=n[n.length-1]??``;if(e.type===`fn`){let t=this.flowStats.get(e.id);return t?this.shownOpen.has(e.id)?{id:`${Xu}${e.id}`,open:n}:{id:r?`${r}::${t.id}`:t.id,open:n}:null}return{id:r?`${r}::${e.name}`:e.name,open:n}}containerKey(e){let{path:t}=Hd(this.segments);if(e.layer.length===t.length)return``;for(let t of this.flowStats.values())if([...t.layer,t.name].join(`/`)===e.layer.join(`/`))return t.key;return null}outlineHost(){let e=this;return{get live(){return e.live},expanded(t){let n=e.folds.get(t);if(n!==void 0)return n;let r=new Set([...e.currentKeys(),...e.shownOpen,e.selectedItem()]),i=e=>r.has(e.id)||e.kids.some(i),a=uf(e.tree,t);return!!a&&(e.tree.includes(a)||i(a))},expand(t,n){e.folds.set(t,n),e.requestUpdate()},current:t=>e.currentKeys().has(t),here:t=>{let{path:n}=Hd(e.segments),r=e.flowStats.get(t);return!!r&&r.layer.length===n.length-1&&Cu(n,[...r.layer,r.name])},selected:t=>!!t&&e.selectedItem()===t,pick(t){let n=e.drawnId(t);if(!n){let n=t.type===`fn`?e.flowStats.get(t.id)?.id??``:t.name;$(e,`ca-navigate`,{layer:t.layer.join(`/`)===e.auto.join(`/`)?``:t.layer.join(`/`),unit:e.unit,sel:n});return}let{opened:r,closed:i}=e.memory(),a=!1;for(let t of n.open)e.shownOpen.has(t)||(a=!0),r.set(t,!0),i.set(t,!1);a&&e.rev++,qd(e.h,n.id)},enter(t){let n=t.parts[t.parts.length-1]??t;Jd(e.h,[...n.layer,n.name])}}}partsHost(){let e=this;return{el:e,get plan(){return e.plan},get journal(){return e.journal},get run(){return e.run},get live(){return e.live},get sel(){return e.sel},get unit(){return e.unit},get segments(){return e.segments},get auto(){return e.auto},get graph(){return e.graph},get matrix(){return e.matrix},get links(){return e.links}}}};cf=U([P(`ca-pipeline-graph`),O()],cf);var lf=e=>Gd(e===`python`);function uf(e,t){for(let n of e){if(n.id===t)return n;let e=uf(n.kids,t);if(e)return e}}function df(e){if(!e||e.policy===`off`)return[];let t=[...(e.stopped??[]).map(e=>({label:Xc(),text:e,tone:`failed`,tip:``})),...(e.kept??[]).map(e=>({label:Xc(),text:K(e.kind,qc(e.agent,e.model),e.reason),tone:`attention`,tip:D(`A kind with no available model, run on its own model (kept)`)})),...(e.substituted??[]).map(e=>({label:D(`Model replaced`),text:Yc(e),tone:`attention`,tip:D(`A kind with no available model, run on the first model that answered (substitute)`)})),...(e.dropped??[]).map(e=>({label:D(`Unavailable`),text:Jc(e),tone:`muted`,tip:``}))];return t.length?t:[{label:``,text:D(`all models available`),tone:`neutral`,tip:``}]}var ff={failed:`✕`,attention:`◌`,done:`✓`,running:``,muted:`■`,neutral:`■`},pf=class extends N{constructor(...e){super(...e),this.procs=null,this.plan={nodes:[],groups:[]}}static{this.styles=[V,qr,k` :host{display:block;}.drv{display:flex;gap:14px;align-items:flex-start;}.drv-ic{width:42px;height:42px;border-radius:12px;flex:none;display:grid;place-items:center;font-size:16px;background:var(--raise);color:var(--text-muted);}.drv.on .drv-ic{background:var(--status-running-bg);box-shadow:0 0 0 1px color-mix(in srgb,var(--status-running) 35%,transparent),0 0 22px var(--status-running-bg);}.drv-ic[data-tone]{color:var(--tone);font-weight:700;}.drv-ic[data-tone='failed'],.drv-ic[data-tone='attention']{background:var(--tone-bg);}.drv.on .drv-ic .spin{width:18px;height:18px;}.drv-t{font-size:15px;font-weight:600;}.drv-up{font-family:var(--mono);font-size:12px;color:var(--status-running);margin-left:6px;font-weight:400;}.drv-cmd{margin-top:8px;}.drv-cmd summary{cursor:pointer;font-size:11px;color:var(--text-muted);}.pf{margin-top:10px;font-size:12px;}.pf-h{color:var(--text-muted);font-size:11px;margin-bottom:4px;}.pf-rows{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:3px 12px;margin:0;}.pf-rows dt{color:var(--text-muted);}.pf-rows dt[data-tone]{color:var(--tone);}.pf-rows dd{margin:0;color:var(--text-2);overflow-wrap:anywhere;}.drv-cmd code{display:block;margin-top:4px;white-space:pre-wrap;word-break:break-all;color:var(--text-2);max-height:120px;overflow:auto;}`]}stateTitle(){if(this.plan.preflight?.stopped?.length)return[D(`Ended before the first agent session`),`failed`];if(!this.plan.nodes.length)return[D(`Not running`),`neutral`];let e=ee(this.plan);return e.failed?[e.failed===1?D(`Finished with 1 task failed`):D(E`Finished with ${e.failed} tasks failed`),`failed`]:e.left?[e.left===1?D(`Finished with 1 task not done`):D(E`Finished with ${e.left} tasks not done`),`attention`]:e.notStarted?[e.notStarted===1?D(`Finished with 1 task not started`):D(E`Finished with ${e.notStarted} tasks not started`),`attention`]:[D(`Finished`),`done`]}render(){let e=this.procs,t=this.summary;if(!e?.alive){let e=ne(t)===`unresponsive`,[r,i]=e?[Zo(sc()),`attention`]:this.stateTitle(),a=e?null:te(t);return A`<div class="drv off">
494
+ <div class="drv-ic" data-tone=${L(i)} aria-hidden="true">${ff[i]}</div>
495
495
  <div>
496
496
  <div class="drv-t tone-text" data-tone=${i===`done`?M:L(i)}>${r}</div>
497
- <div class="meta">${K(this.plan.preflight?.stopped?.length?(n=this.plan.preflight.stopped,D(E`No available model for ${q(n)}`)):``,e?cc(this.host):``,D(t?.last_ts?e?E`Last activity ${G(t.last_ts,!0)}`:E`Ended ${G(t.last_ts,!0)}`:`No activity`),a==null?``:D(E`Took ${B(a)}`),t?.run_group?D(E`Run group ${t.run_group}`):``,e?lc(t?.host_id??``):``)}</div>
497
+ <div class="meta">${K(this.plan.preflight?.stopped?.length?(n=this.plan.preflight.stopped,D(E`No available model for ${q(n)}`)):``,e?lc(this.host):``,D(t?.last_ts?e?E`Last activity ${G(t.last_ts,!0)}`:E`Ended ${G(t.last_ts,!0)}`:`No activity`),a==null?``:D(E`Took ${B(a)}`),t?.run_group?D(E`Run group ${t.run_group}`):``,e?uc(t?.host_id??``):``)}</div>
498
498
  ${this.preflight()}
499
499
  </div>
500
500
  </div>`}var n;let r=Date.parse(e.started_at),i=Ir.at(`drv:${e.pid??``}`,Number.isNaN(r)?1:(Date.now()-r)/1e3),a=[[D(`PID`),e.pid??`—`],[D(`Run group`),e.run_group],[D(`Running at once (limit)`),e.max_workers||`—`],[D(`Started`),G(e.started_at,!0)]];return A`<div class="drv on">
@@ -505,20 +505,20 @@ ${this.preflight()}
505
505
  ${this.preflight()}
506
506
  <details class="drv-cmd"><summary>${D(`Command line`)}</summary><code>${e.argv.join(` `)}</code></details>
507
507
  </div>
508
- </div>`}preflight(){let e=this.plan.preflight,t=$d(e);return e&&t.length?A`<div class="pf">
508
+ </div>`}preflight(){let e=this.plan.preflight,t=df(e);return e&&t.length?A`<div class="pf">
509
509
  <div class="pf-h" title=${n=e.policy,D(E`One request to each model before the first agent session (preflight, policy ${n})`)}>${D(`Model availability`)}</div>
510
510
  <dl class="pf-rows">
511
511
  ${t.map(e=>A`<dt data-tone=${L(e.tone)} title=${e.tip||M}>${e.label}</dt><dd class="jmono">${e.text}</dd>`)}
512
512
  </dl>
513
- </div>`:M;var n}};U([F({attribute:!1})],tf.prototype,`procs`,void 0),U([F({attribute:!1})],tf.prototype,`summary`,void 0),U([F({attribute:!1})],tf.prototype,`plan`,void 0),U([F({attribute:!1})],tf.prototype,`host`,void 0),tf=U([P(`ca-run-driver`),O()],tf),z(`cae-lanes`,ba);var nf=216e5,rf=e=>new Date(e).toLocaleTimeString(An(),{hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hourCycle:`h23`});function af(){return{py:{label:D(`Python task`),color:`var(--meter)`},llm:{label:D(`Agent task`),color:`var(--agent)`},run:{label:D(`running`),color:`var(--status-running)`,pattern:`striped`,group:1},bad:{label:D(`failed`),color:`var(--status-failed)`,pattern:`hatched`,group:1},idle:{label:D(`not started`),color:`var(--line2)`,pattern:`outline`,group:1}}}function of(e,t,n,r){if(!f(e)){let t=n.get(e.key),i=e.stop===`invalid_input`&&t?hs(t,n,r):``;return[J(e),i?D(E`Not started: ${i}`):Q(e.stop,e.reason),e.key].join(`
514
- `)}let i=Js(e.hops,null,e.skipped_hops),a=e.reason&&!e.ok?T(e.reason,r):``;return[J(e),K(Q(e.stop),B(e.wall_s),D(E`ended ${rf(t)}`)),i?D(E`Model switch: ${i}`):e.model?D(E`Model ${e.model}`):``,a,e.key].filter(Boolean).join(`
515
- `)}function sf(e,t,n,r){let i=[];if(e.forEach((e,t)=>{if(!e.ts)return;let a=Date.parse(e.ts);if(Number.isNaN(a))return;let o=f(e)?e.ok?w(e)?`py`:`llm`:`bad`:`idle`;i.push({lane:e.kind||`?`,bar:{id:`j${t}`,style:o,start:a-1e3*(e.wall_s||0),end:a,label:of(e,a,n,r)}})}),!i.length&&!t.length)return null;let a=Math.max(...i.map(e=>e.bar.end),...t.map(e=>e.t0)),o=i.filter(e=>e.bar.end>=a-nf),s=i.length-o.length;t.forEach((e,t)=>o.push({lane:e.kind,bar:{id:`live${t}`,style:`run`,start:e.t0,end:null,label:`${e.kind}\n${D(`running`)}`}}));let c=new Map;for(let{lane:e,bar:t}of[...o].sort((e,t)=>e.bar.start-t.bar.start))(c.get(e)??c.set(e,[]).get(e)).push(t);return{lanes:[...c].map(([e,t])=>({id:e,label:e,bars:t})),omitted:s}}var cf=class extends N{constructor(...e){super(...e),this.journal=[],this.plan=null,this.procs=null,this.live=!1,this.run=``}static{this.styles=[V,k`:host{display:block;}`]}render(){let e=Date.now(),t=this.live?fe(this.procs).map(t=>({kind:t.kind,cls:t.cls,t0:Ir.at(t.id,t.ageS,e)})):[],n=sf(this.journal,t,S(this.journal,this.plan).outcomes,this.run);return n?wo(this.run,A`<cae-lanes .lanes=${n.lanes} .barStyles=${af()} .omitted=${n.omitted} ?live=${this.live} locale=${An()} .strings=${{omitted:e=>D(e===1?`1 older attempt not shown`:E`${e} older attempts not shown`)}}></cae-lanes>`):A`<div class="blank" style="padding:28px"><span class="ic" aria-hidden="true">⏱</span>${this.live?D(`No finished attempts yet`):D(`No finished attempts`)}</div>`}};U([F({attribute:!1})],cf.prototype,`journal`,void 0),U([F({attribute:!1})],cf.prototype,`plan`,void 0),U([F({attribute:!1})],cf.prototype,`procs`,void 0),U([F({type:Boolean})],cf.prototype,`live`,void 0),U([F()],cf.prototype,`run`,void 0),cf=U([P(`ca-timeline`),O()],cf);var lf=class extends N{constructor(...e){super(...e),this.procs=null,this.live=!1}static{this.styles=[V,k` :host{display:block;container-type:inline-size;}.wks{display:grid;grid-template-columns:repeat(var(--n,3),minmax(0,1fr));gap:10px;}@container (max-width:860px){.wks{grid-template-columns:repeat(2,minmax(0,1fr));}}@container (max-width:360px){.wks{grid-template-columns:minmax(0,1fr);}}.wk{border-radius:11px;padding:10px 12px;border:1px solid var(--line);background:color-mix(in srgb,var(--text) 2.5%,transparent);min-width:0;position:relative;overflow:hidden;display:block;width:100%;color:inherit;text-align:start;}.wk>.meta{display:block;}.wk.py,.wk.llm{border-color:var(--line2);}.wk.llm{box-shadow:inset 3px 0 0 -1px color-mix(in srgb,var(--agent) 60%,transparent);cursor:pointer;}.wk.llm:hover{border-color:var(--accent);}.wk.idle{opacity:0.45;border-style:dashed;}.wk-top{display:flex;align-items:center;gap:8px;min-width:0;}.wk-top b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.wk-ic{width:24px;height:24px;border-radius:7px;flex:none;display:grid;place-items:center;background:var(--raise);font-size:12px;}.wk.llm .wk-ic{color:var(--agent);}.wk.py .wk-ic{color:var(--text-muted);}.wk-el{margin-left:auto;font-family:var(--mono);font-size:11.5px;color:var(--status-running);}.wk-bar{position:absolute;left:0;right:0;bottom:0;height:2px;overflow:hidden;}.wk-bar i{position:absolute;top:0;bottom:0;width:30%;background:linear-gradient(90deg,transparent,var(--status-running),transparent);animation:scan 1.8s linear infinite;}`]}render(){let e=this.live?fe(this.procs):[],t=Math.max(this.procs?.max_workers||1,e.length),n=Array.from({length:t-e.length},(e,t)=>t);return A`<div class="wks" style="--n:${Math.min(t,6)}">
516
- ${H(e,e=>e.id,e=>{let t=A`<span class="wk-top">${Pd(e.cls!==`llm`,e.cls===`llm`?D(`Agent task`):D(`Python task`),`wk-ic`)}<b>${e.kind}</b>
513
+ </div>`:M;var n}};U([F({attribute:!1})],pf.prototype,`procs`,void 0),U([F({attribute:!1})],pf.prototype,`summary`,void 0),U([F({attribute:!1})],pf.prototype,`plan`,void 0),U([F({attribute:!1})],pf.prototype,`host`,void 0),pf=U([P(`ca-run-driver`),O()],pf),z(`cae-lanes`,ba);var mf=216e5,hf=e=>new Date(e).toLocaleTimeString(An(),{hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hourCycle:`h23`});function gf(){return{py:{label:D(`Python task`),color:`var(--meter)`},llm:{label:D(`Agent task`),color:`var(--agent)`},run:{label:D(`running`),color:`var(--status-running)`,pattern:`striped`,group:1},bad:{label:D(`failed`),color:`var(--status-failed)`,pattern:`hatched`,group:1},idle:{label:D(`not started`),color:`var(--line2)`,pattern:`outline`,group:1}}}function _f(e,t,n,r){if(!f(e)){let t=n.get(e.key),i=e.stop===`invalid_input`&&t?hs(t,n,r):``;return[J(e),i?D(E`Not started: ${i}`):Q(e.stop,e.reason),e.key].join(`
514
+ `)}let i=Js(e.hops,null,e.skipped_hops),a=e.reason&&!e.ok?T(e.reason,r):``;return[J(e),K(Q(e.stop),B(e.wall_s),D(E`ended ${hf(t)}`)),i?D(E`Model switch: ${i}`):e.model?D(E`Model ${e.model}`):``,a,e.key].filter(Boolean).join(`
515
+ `)}function vf(e,t,n,r){let i=[];if(e.forEach((e,t)=>{if(!e.ts)return;let a=Date.parse(e.ts);if(Number.isNaN(a))return;let o=f(e)?e.ok?w(e)?`py`:`llm`:`bad`:`idle`;i.push({lane:e.kind||`?`,bar:{id:`j${t}`,style:o,start:a-1e3*(e.wall_s||0),end:a,label:_f(e,a,n,r)}})}),!i.length&&!t.length)return null;let a=Math.max(...i.map(e=>e.bar.end),...t.map(e=>e.t0)),o=i.filter(e=>e.bar.end>=a-mf),s=i.length-o.length;t.forEach((e,t)=>o.push({lane:e.kind,bar:{id:`live${t}`,style:`run`,start:e.t0,end:null,label:`${e.kind}\n${D(`running`)}`}}));let c=new Map;for(let{lane:e,bar:t}of[...o].sort((e,t)=>e.bar.start-t.bar.start))(c.get(e)??c.set(e,[]).get(e)).push(t);return{lanes:[...c].map(([e,t])=>({id:e,label:e,bars:t})),omitted:s}}var yf=class extends N{constructor(...e){super(...e),this.journal=[],this.plan=null,this.procs=null,this.live=!1,this.run=``}static{this.styles=[V,k`:host{display:block;}`]}render(){let e=Date.now(),t=this.live?fe(this.procs).map(t=>({kind:t.kind,cls:t.cls,t0:Ir.at(t.id,t.ageS,e)})):[],n=vf(this.journal,t,S(this.journal,this.plan).outcomes,this.run);return n?wo(this.run,A`<cae-lanes .lanes=${n.lanes} .barStyles=${gf()} .omitted=${n.omitted} ?live=${this.live} locale=${An()} .strings=${{omitted:e=>D(e===1?`1 older attempt not shown`:E`${e} older attempts not shown`)}}></cae-lanes>`):A`<div class="blank" style="padding:28px"><span class="ic" aria-hidden="true">⏱</span>${this.live?D(`No finished attempts yet`):D(`No finished attempts`)}</div>`}};U([F({attribute:!1})],yf.prototype,`journal`,void 0),U([F({attribute:!1})],yf.prototype,`plan`,void 0),U([F({attribute:!1})],yf.prototype,`procs`,void 0),U([F({type:Boolean})],yf.prototype,`live`,void 0),U([F()],yf.prototype,`run`,void 0),yf=U([P(`ca-timeline`),O()],yf);var bf=class extends N{constructor(...e){super(...e),this.procs=null,this.live=!1}static{this.styles=[V,k` :host{display:block;container-type:inline-size;}.wks{display:grid;grid-template-columns:repeat(var(--n,3),minmax(0,1fr));gap:10px;}@container (max-width:860px){.wks{grid-template-columns:repeat(2,minmax(0,1fr));}}@container (max-width:360px){.wks{grid-template-columns:minmax(0,1fr);}}.wk{border-radius:11px;padding:10px 12px;border:1px solid var(--line);background:color-mix(in srgb,var(--text) 2.5%,transparent);min-width:0;position:relative;overflow:hidden;display:block;width:100%;color:inherit;text-align:start;}.wk>.meta{display:block;}.wk.py,.wk.llm{border-color:var(--line2);}.wk.llm{box-shadow:inset 3px 0 0 -1px color-mix(in srgb,var(--agent) 60%,transparent);cursor:pointer;}.wk.llm:hover{border-color:var(--accent);}.wk.idle{opacity:0.45;border-style:dashed;}.wk-top{display:flex;align-items:center;gap:8px;min-width:0;}.wk-top b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.wk-ic{width:24px;height:24px;border-radius:7px;flex:none;display:grid;place-items:center;background:var(--raise);font-size:12px;}.wk.llm .wk-ic{color:var(--agent);}.wk.py .wk-ic{color:var(--text-muted);}.wk-el{margin-left:auto;font-family:var(--mono);font-size:11.5px;color:var(--status-running);}.wk-bar{position:absolute;left:0;right:0;bottom:0;height:2px;overflow:hidden;}.wk-bar i{position:absolute;top:0;bottom:0;width:30%;background:linear-gradient(90deg,transparent,var(--status-running),transparent);animation:scan 1.8s linear infinite;}`]}render(){let e=this.live?fe(this.procs):[],t=Math.max(this.procs?.max_workers||1,e.length),n=Array.from({length:t-e.length},(e,t)=>t);return A`<div class="wks" style="--n:${Math.min(t,6)}">
516
+ ${H(e,e=>e.id,e=>{let t=A`<span class="wk-top">${Gd(e.cls!==`llm`,e.cls===`llm`?D(`Agent task`):D(`Python task`),`wk-ic`)}<b>${e.kind}</b>
517
517
  <cae-elapsed class="wk-el" .since=${Ir.at(e.id,e.ageS)}></cae-elapsed></span>
518
518
  <span class="meta">${e.detail}</span>
519
519
  <span class="wk-bar"><i></i></span>`;return e.key?A`<button type="button" class="wk ${e.cls}" @click=${()=>$(this,`ca-open-task`,{key:e.key})}>${t}</button>`:A`<div class="wk ${e.cls}">${t}</div>`})}
520
520
  ${n.map(()=>A`<div class="wk idle"><div class="wk-top"><b>${D(`Idle`)}</b></div></div>`)}
521
- </div>`}};U([F({attribute:!1})],lf.prototype,`procs`,void 0),U([F({type:Boolean})],lf.prototype,`live`,void 0),lf=U([P(`ca-workers`),O()],lf);var uf=[`invalid`,`refused`,`failed`,`running`,`pending`,`valid`];function df(e){if(e.title)return e.title;if(e.type===`tiles`){let t=e.tiles[0];return t?`${t.label}: ${String(t.value)}`:``}if(e.type===`blocks`)for(let t of e.blocks){let e=me(t),n=e?df(e):``;if(n)return n}return``}function ff(e){if(e===void 0)return D(`Loading…`);let t=me(e);if(t)return df(t);if(typeof e!=`object`||!e)return JSON.stringify(e);let n=Object.keys(e);if(!n.length)return D(`none`,{id:`none`});let r=`${n.slice(0,4).join(`, `)}${n.length>4?`, …`:``}`;return D(Array.isArray(e)?E`${n.length} items: ${r}`:E`${n.length} keys: ${r}`)}var pf=class extends N{constructor(...e){super(...e),this.run=``,this.layer=``,this.unit=``,this.sel=``}static{this.styles=[V,k` :host{display:block;container-type:inline-size;}.ov{display:flex;flex-direction:column;gap:14px;}.band.status{display:grid;gap:14px;align-items:stretch;}.stack{display:flex;flex-direction:column;gap:14px;min-width:0;}.stack>.panel:first-child{flex:1;}.band.parts{display:grid;gap:14px;align-items:stretch;grid-template-columns:repeat(auto-fit,minmax(min(100%,max(440px,calc((100% - 14px) / 2))),1fr));}@container (min-width:894px){.band.parts>.panel:last-child:nth-child(odd){grid-column:1 / -1;}}.stack{grid-area:stack;}.problems{grid-area:problems;}.outputs{grid-area:outputs;}.row{grid-area:running;}.band.status{grid-template-areas:'stack' 'problems' 'outputs' 'running';}@container (min-width:760px){.band.status{grid-template-columns:minmax(240px,1fr) minmax(0,1.4fr);grid-template-areas:'stack problems' 'outputs outputs' 'running running';}}@container (min-width:1100px){.band.status{grid-template-columns:minmax(240px,1fr) minmax(0,1.3fr) minmax(0,1.3fr);grid-template-areas:'stack problems outputs' 'running running running';}}.ok{display:flex;align-items:baseline;gap:6px;color:var(--text-2);}.ok span[aria-hidden]{color:var(--status-done);}.ofl{grid-template-columns:max-content minmax(0,1fr);}.ofl>.jstop{white-space:nowrap;}.ofl>b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.ofl>.meta{grid-column:1 / -1;overflow:hidden;text-overflow:ellipsis;}.ct-row{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px;}.pcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(320px,100%),1fr));gap:12px;}.pcard{display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px 12px;align-items:start;padding:12px 14px;border-radius:10px;background:var(--raise);border:1px solid var(--line);cursor:pointer;transition:border-color 0.15s,transform 0.15s;text-align:left;color:inherit;font:inherit;width:100%;min-width:0;}.pcard>div{min-width:0;}.pcard .meta{overflow-wrap:anywhere;}.pcard:hover{border-color:var(--accent);transform:translateY(-1px);}.pc-ic{width:34px;height:34px;display:grid;place-items:center;border-radius:9px;background:var(--well);color:var(--text-2);font-size:16px;}.pc-peek{font-family:var(--mono);font-size:11.5px;color:var(--text-2);margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.pc-go{grid-column:2;color:var(--accent);font-size:12px;opacity:0.8;margin-top:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.pcard:hover .pc-go{opacity:1;}.cur-units{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:8px 14px;}.cu{display:grid;grid-template-columns:90px 1fr 70px auto;gap:8px;align-items:center;}.cu-bar{height:5px;border-radius:3px;background:var(--track);overflow:hidden;}.cu-bar i{display:block;height:100%;background:var(--meter);}.fl>div.meta{grid-column:1 / 4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.ofl>.meta{white-space:nowrap;}.stopped{grid-column:1 / 4;color:var(--text-muted);font-size:11px;display:flex;flex-wrap:wrap;align-items:center;gap:4px;}.fl.muted{opacity:0.7;}.problems h4.sub{margin:10px 0 2px;font-size:11px;font-weight:600;color:var(--text-muted);display:flex;}.problems h4.sub .r{margin-left:auto;font-weight:400;}.next{margin:10px 2px 2px;font-size:12px;color:var(--text-2);}.next code{font-family:var(--mono);}.more{font-size:12px;margin:6px 10px 0;}`]}go(e){$(this,`ca-navigate`,{tab:e})}open(e){$(this,`ca-open-task`,{key:e.key,...w(e)?{view:`output`}:{}})}render(){let e=this.state,t=de(e,this.summary),n=t?fe(e.procs).length:0,r=e.procs?.max_workers||null,i=this.info.panels.filter(he),a=t&&n>0;return A`<div class="ov">
521
+ </div>`}};U([F({attribute:!1})],bf.prototype,`procs`,void 0),U([F({type:Boolean})],bf.prototype,`live`,void 0),bf=U([P(`ca-workers`),O()],bf);var xf=[`invalid`,`refused`,`failed`,`running`,`pending`,`valid`];function Sf(e){if(e.title)return e.title;if(e.type===`tiles`){let t=e.tiles[0];return t?`${t.label}: ${String(t.value)}`:``}if(e.type===`blocks`)for(let t of e.blocks){let e=me(t),n=e?Sf(e):``;if(n)return n}return``}function Cf(e){if(e===void 0)return D(`Loading…`);let t=me(e);if(t)return Sf(t);if(typeof e!=`object`||!e)return JSON.stringify(e);let n=Object.keys(e);if(!n.length)return D(`none`,{id:`none`});let r=`${n.slice(0,4).join(`, `)}${n.length>4?`, …`:``}`;return D(Array.isArray(e)?E`${n.length} items: ${r}`:E`${n.length} keys: ${r}`)}var wf=class extends N{constructor(...e){super(...e),this.run=``,this.layer=``,this.unit=``,this.sel=``}static{this.styles=[V,k` :host{display:block;container-type:inline-size;}.ov{display:flex;flex-direction:column;gap:14px;}.band.status{display:grid;gap:14px;align-items:stretch;}.stack{display:flex;flex-direction:column;gap:14px;min-width:0;}.stack>.panel:first-child{flex:1;}.band.parts{display:grid;gap:14px;align-items:stretch;grid-template-columns:repeat(auto-fit,minmax(min(100%,max(440px,calc((100% - 14px) / 2))),1fr));}@container (min-width:894px){.band.parts>.panel:last-child:nth-child(odd){grid-column:1 / -1;}}.stack{grid-area:stack;}.problems{grid-area:problems;}.outputs{grid-area:outputs;}.row{grid-area:running;}.band.status{grid-template-areas:'stack' 'problems' 'outputs' 'running';}@container (min-width:760px){.band.status{grid-template-columns:minmax(240px,1fr) minmax(0,1.4fr);grid-template-areas:'stack problems' 'outputs outputs' 'running running';}}@container (min-width:1100px){.band.status{grid-template-columns:minmax(240px,1fr) minmax(0,1.3fr) minmax(0,1.3fr);grid-template-areas:'stack problems outputs' 'running running running';}}.ok{display:flex;align-items:baseline;gap:6px;color:var(--text-2);}.ok span[aria-hidden]{color:var(--status-done);}.ofl{grid-template-columns:max-content minmax(0,1fr);}.ofl>.jstop{white-space:nowrap;}.ofl>b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.ofl>.meta{grid-column:1 / -1;overflow:hidden;text-overflow:ellipsis;}.ct-row{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px;}.pcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(320px,100%),1fr));gap:12px;}.pcard{display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px 12px;align-items:start;padding:12px 14px;border-radius:10px;background:var(--raise);border:1px solid var(--line);cursor:pointer;transition:border-color 0.15s,transform 0.15s;text-align:left;color:inherit;font:inherit;width:100%;min-width:0;}.pcard>div{min-width:0;}.pcard .meta{overflow-wrap:anywhere;}.pcard:hover{border-color:var(--accent);transform:translateY(-1px);}.pc-ic{width:34px;height:34px;display:grid;place-items:center;border-radius:9px;background:var(--well);color:var(--text-2);font-size:16px;}.pc-peek{font-family:var(--mono);font-size:11.5px;color:var(--text-2);margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.pc-go{grid-column:2;color:var(--accent);font-size:12px;opacity:0.8;margin-top:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.pcard:hover .pc-go{opacity:1;}.cur-units{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:8px 14px;}.cu{display:grid;grid-template-columns:90px 1fr 70px auto;gap:8px;align-items:center;}.cu-bar{height:5px;border-radius:3px;background:var(--track);overflow:hidden;}.cu-bar i{display:block;height:100%;background:var(--meter);}.fl>div.meta{grid-column:1 / 4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.ofl>.meta{white-space:nowrap;}.stopped{grid-column:1 / 4;color:var(--text-muted);font-size:11px;display:flex;flex-wrap:wrap;align-items:center;gap:4px;}.fl.muted{opacity:0.7;}.problems h4.sub{margin:10px 0 2px;font-size:11px;font-weight:600;color:var(--text-muted);display:flex;}.problems h4.sub .r{margin-left:auto;font-weight:400;}.next{margin:10px 2px 2px;font-size:12px;color:var(--text-2);}.next code{font-family:var(--mono);}.more{font-size:12px;margin:6px 10px 0;}`]}go(e){$(this,`ca-navigate`,{tab:e})}open(e){$(this,`ca-open-task`,{key:e.key,...w(e)?{view:`output`}:{}})}render(){let e=this.state,t=de(e,this.summary),n=t?fe(e.procs).length:0,r=e.procs?.max_workers||null,i=this.info.panels.filter(he),a=t&&n>0;return A`<div class="ov">
522
522
  <div class="band status">
523
523
  <div class="stack">
524
524
  <section class="panel enter">
@@ -590,13 +590,13 @@ ${this.panelCards(i)}
590
590
  <h3 title=${D(`Limit: max_concurrent`)}>${D(`Running tasks`)}
591
591
  ${e?A`<span class="r">${D(n?E`${t} of ${n} running at once`:E`${t} running at once`)}</span>`:M}</h3>
592
592
  ${t?A`<ca-workers .procs=${this.state.procs} .live=${e}></ca-workers>`:A`<div class="meta">${D(`No tasks running`)}</div>`}
593
- </section>`}outputs(){let{contracts:e,tally:t}=this.state.outputs;if(!e.length)return A`<div class="meta">${D(`No output files`)}</div>`;let n=uf.filter(e=>t[e]),r=e.flatMap(e=>(e.outputs??[]).map(t=>[e,t])).filter(([,e])=>e.status===`invalid`||e.status===`failed`),i=r.slice(0,5),a=t.refused;return A`<div class="ct-row">
594
- ${n.length?n.map(e=>Ol(e,t[e])):A`<span class="meta">${D(`No checked files`)}</span>`}
593
+ </section>`}outputs(){let{contracts:e,tally:t}=this.state.outputs;if(!e.length)return A`<div class="meta">${D(`No output files`)}</div>`;let n=xf.filter(e=>t[e]),r=e.flatMap(e=>(e.outputs??[]).map(t=>[e,t])).filter(([,e])=>e.status===`invalid`||e.status===`failed`),i=r.slice(0,5),a=t.refused;return A`<div class="ct-row">
594
+ ${n.length?n.map(e=>kl(e,t[e])):A`<span class="meta">${D(`No checked files`)}</span>`}
595
595
  </div>
596
596
  ${i.map(([e,t])=>A`<button type="button" class="fl ofl" @click=${()=>this.go(`outputs`)}>
597
597
  ${Qr({text:t.status?Ys(t.status):`—`,tone:fs(t.status),title:t.status?Xs(t.status):null})}
598
598
  <b class="jmono" title=${e.key}>${J({kind:e.kind,unit:e.unit===e.key?``:e.unit})}</b>
599
- <span class="meta">${Nl(t)}</span>
599
+ <span class="meta">${Pl(t)}</span>
600
600
  <span class="meta" title=${T(t.errors?.[0]||t.path,this.run)}>${T(t.errors?.[0]||t.path,this.run)}</span>
601
601
  </button>`)}
602
602
  ${r.length>i.length?A`<div class="more"><a class="lnk" href="#" @click=${e=>this.nav(e,()=>this.go(`outputs`))}>${r.length-i.length===1?D(`1 more output`):D(E`${r.length-i.length} more outputs`)}</a></div>`:M}
@@ -612,7 +612,7 @@ ${t.inflight.length?Zr({text:D(`running`),tone:`running`,title:t.inflight.join(`
612
612
  `)}):M}
613
613
  </div>`)}
614
614
  </div>`:M}`}panelCards(e){return A`<div class="pcards">
615
- ${H(e,e=>e.name,e=>{let t=ff(this.state.panels[e.name]);return A`<button type="button" class="pcard" @click=${()=>this.go(`panel:${e.name}`)}>
615
+ ${H(e,e=>e.name,e=>{let t=Cf(this.state.panels[e.name]);return A`<button type="button" class="pcard" @click=${()=>this.go(`panel:${e.name}`)}>
616
616
  <span class="pc-ic" aria-hidden="true">${e.icon||`▤`}</span>
617
617
  <div>
618
618
  <b>${e.title||e.name}</b>
@@ -623,7 +623,7 @@ ${t?A`<div class="pc-peek">${t}</div>`:M}
623
623
  </button>`})}
624
624
  </div>`}nameButton(e){return A`<button type="button" class="fl-name jmono" title=${e.key} @click=${()=>this.open(e)}>${this.name(e)}</button>`}openRow(e,t){e.target.closest(`button`)||this.open(t)}name(e){return J(e)}problems(e){let{outcomes:t,problems:n}=S(this.state.journal,this.state.plan),{failed:r,notStarted:i,partial:a,recovered:o}=n,s=r.length+i.length+a.length,c=A`<div class="ok"><span aria-hidden="true">✓</span>${D(`No problems`)}</div>`;if(!s&&!o.length)return c;let l=e=>T(e.attempts[e.attempts.length-1]?.reason||`—`,this.run),u=e=>e.length?A`<div class="stopped">
625
625
  <span>${e.length===1?D(`1 later task not started`):D(E`${e.length} later tasks not started`)}</span>
626
- ${e.slice(0,4).map(e=>bl(this,this.name(e),e))}
626
+ ${e.slice(0,4).map(e=>xl(this,this.name(e),e))}
627
627
  ${e.length>4?A`<span>${D(E`${e.length-4} more`)}</span>`:M}
628
628
  </div>`:M,d=(e,t,n)=>e>t?A`<div class="more"><a class="lnk" href="#" @click=${e=>this.nav(e,()=>$(this,`ca-navigate`,{tab:`journal`,stop:n}))}>${D(e-t===1?`1 more in history`:E`${e-t} more in history`)}</a></div>`:M;return A`${s?M:c}${H(r.slice(0,5),e=>e.task.key,e=>{let t=e.task.attempts[e.task.attempts.length-1];return A`<div class="fl" @click=${t=>this.openRow(t,e.task)}>
629
629
  ${Qr({text:is(`failed`),tone:`failed`})}
@@ -651,30 +651,30 @@ ${this.nameButton(e)}<span></span>
651
651
  <div class="meta">${D(t===1?E`Done on attempt ${n} | 1 failed attempt`:E`Done on attempt ${n} | ${t} failed attempts`)}</div>
652
652
  </div>`})}
653
653
  ${d(o.length,3,`retried`)}
654
- ${this.nextStep(e,s)}`}metaLine(e){return A`<div class="meta" title=${e}>${e}</div>`}nextStep(e,t){if(e||!t)return M;let n=S(this.state.journal,this.state.plan).counts,r=n.total-n.finished+n.partial;return r?A`<div class="next" title="resume=True">${D(E`${r} of ${n.total} tasks not done`)}</div>`:M}};function mf(e,t,n){let r=n.toLowerCase();return e.filter(e=>(!t||e.kind===t)&&(!r||`${e.kind} ${e.unit} ${(e.claims??[]).join(` `)} ${e.key} ${e.last_stop}`.toLowerCase().includes(r)))}U([F({attribute:!1})],pf.prototype,`state`,void 0),U([F({attribute:!1})],pf.prototype,`summary`,void 0),U([F({attribute:!1})],pf.prototype,`host`,void 0),U([F({attribute:!1})],pf.prototype,`info`,void 0),U([F()],pf.prototype,`run`,void 0),U([F()],pf.prototype,`layer`,void 0),U([F()],pf.prototype,`unit`,void 0),U([F()],pf.prototype,`sel`,void 0),pf=U([P(`ca-overview`),O()],pf),z(`cae-data-table`,ha);var hf={failed:0,not_started:1,partial:2,running:3,waiting:4};function gf(e){return e.map((e,t)=>({t:e,i:t})).sort((e,t)=>(hf[e.t.outcome]??9)-(hf[t.t.outcome]??9)||t.t.last_ts.localeCompare(e.t.last_ts)||e.i-t.i).map(e=>e.t)}var _f=[`key`,`unit`,`stop`,`kind`,`route`,`reason`],vf=e=>new Set(m(e).map(e=>e.key)),yf=e=>(e.rounds??1)>1;function bf(e,t,n,r){let i=r.toLowerCase(),a=n===`retried`?vf(e):null;return e.filter(e=>!(n===`bad`&&!se(e))&&!(n===`fixup`&&!yf(e))&&!(a&&!a.has(e.key))&&!(n===`replayed`&&!e.replayed)&&!(n&&![`bad`,`fixup`,`retried`,`replayed`].includes(n)&&e.stop!==n)&&(!t||e.kind===t)&&(!i||_f.some(t=>String(e[t]??``).toLowerCase().includes(i))))}function xf(e){let t=new Map;for(let n of e)t.set(n.stop||`?`,(t.get(n.stop||`?`)??0)+1);return[...t.entries()].sort((e,t)=>t[1]-e[1])}function Sf(e){let t=new Map;return e.forEach((e,n)=>{let r=t.get(e.key)??{count:0,lastOk:-1,lastOkTry:0};f(e)&&r.count++,e.ok&&(r.lastOk=n,r.lastOkTry=(e.attempt??0)+1),t.set(e.key,r)}),t}var Cf=()=>D(`none`,{id:`none`});function wf(e){let t=new Map;for(let n of e.all)t.set(`${n.kind}|${n.unit}`,(t.get(`${n.kind}|${n.unit}`)??0)+1);let n=Math.max(1,...e.rows.map(e=>e.wall_s)),r=new Map;for(let t of e.journal)Te(r.get(t.key)??r.set(t.key,Ce()).get(t.key),t);let i=e=>e.tries.length>0,a=(e,t)=>{if(!i(e))return A`<span class="jdim">${Cf()}</span>`;let n=r.get(e.key);return n?.reported?t(n):A`<span class="jdim">—</span>`};return[{id:`task`,header:D(`Task`),tip:D(`Kind · unit`),width:`minmax(220px, 0.6fr)`,rowHeader:!0,text:e=>e.key,cell:e=>{let n=w(e),r=e.pass!==null&&(t.get(`${e.kind}|${e.unit}`)??0)>1?e.pass:null;return A`<span class="grow jmono" title=${e.key}>
655
- ${Pd(n,D(n?`Python task`:`Agent task`))}${e.kind}
654
+ ${this.nextStep(e,s)}`}metaLine(e){return A`<div class="meta" title=${e}>${e}</div>`}nextStep(e,t){if(e||!t)return M;let n=S(this.state.journal,this.state.plan).counts,r=n.total-n.finished+n.partial;return r?A`<div class="next" title="resume=True">${D(E`${r} of ${n.total} tasks not done`)}</div>`:M}};U([F({attribute:!1})],wf.prototype,`state`,void 0),U([F({attribute:!1})],wf.prototype,`summary`,void 0),U([F({attribute:!1})],wf.prototype,`host`,void 0),U([F({attribute:!1})],wf.prototype,`info`,void 0),U([F()],wf.prototype,`run`,void 0),U([F()],wf.prototype,`layer`,void 0),U([F()],wf.prototype,`unit`,void 0),U([F()],wf.prototype,`sel`,void 0),wf=U([P(`ca-overview`),O()],wf),z(`cae-data-table`,ha);var Tf=()=>D(`none`,{id:`none`});function Ef(e){let t=new Map;for(let n of e.all)t.set(`${n.kind}|${n.unit}`,(t.get(`${n.kind}|${n.unit}`)??0)+1);let n=Math.max(1,...e.rows.map(e=>e.wall_s)),r=new Map;for(let t of e.journal)Te(r.get(t.key)??r.set(t.key,Ce()).get(t.key),t);let i=e=>e.tries.length>0,a=(e,t)=>{if(!i(e))return A`<span class="jdim">${Tf()}</span>`;let n=r.get(e.key);return n?.reported?t(n):A`<span class="jdim">—</span>`};return[{id:`task`,header:D(`Task`),tip:D(`Kind · unit`),width:`minmax(220px, 0.6fr)`,rowHeader:!0,text:e=>e.key,cell:e=>{let n=w(e),r=e.pass!==null&&(t.get(`${e.kind}|${e.unit}`)??0)>1?e.pass:null;return A`<span class="grow jmono" title=${e.key}>
655
+ ${Gd(n,D(n?`Python task`:`Agent task`))}${e.kind}
656
656
  ${e.unit?A`<span class="jdim">· ${e.unit}</span>`:M}${r===null?M:A`<span class="pass">${bs(r)}</span>`}
657
- ${e.claims?.length?A`<span class="jdim also" title=${i=e.claims,K(pc(),q(i))}>${(e=>e.length>2?D(E`Locks ${e.length} names`):D(E`Locks ${q(e)}`))(e.claims)}</span>`:M}
658
- ${e.priority?A`<span class="jdim also" title=${Bc()}>${zc(e.priority)}</span>`:M}
659
- </span>`;var i}},{id:`attempts`,header:D(`Attempts`),tip:D(`Attempts that ran`),align:`end`,width:`64px`,cell:e=>e.tries.length},{id:`time`,header:D(`Time`),tip:D(`Summed over all attempts`),align:`end`,width:`132px`,cell:e=>A`<span class="wall">${i(e)?A`${B(e.wall_s)}<span class="jdur"><i class=${w(e)?``:`llm`} style="width:${Math.max(4,Math.round(100*e.wall_s/n))}%"></i></span>`:A`<span class="jdim">${Cf()}</span><span class="jdur" style="visibility:hidden"></span>`}</span>`},{id:`tokens`,header:D(`Tokens`),tip:D(`Input and output, summed over all attempts`),align:`end`,width:`72px`,cell:e=>a(e,e=>A`<span title=${K(D(E`Cache read ${Y(e.cache_read)}`),D(E`Cache write ${Y(e.cache_creation)}`))}>${Y(e.input+e.output)}</span>`)},{id:`cost`,header:D(`Cost`),tip:D(`Reported by the coding agent`),align:`end`,width:`72px`,cell:e=>a(e,e=>X(e.cost))},{id:`ended`,header:D(`Last attempt ended`),align:`end`,width:`128px`,cell:e=>A`<span class="meta">${i(e)?G(e.tries[e.tries.length-1]?.ts,!0):Cf()}</span>`},{id:`status`,header:D(`Status`,{id:`status`}),width:`minmax(240px, 1fr)`,cell:t=>{let n=function(e,t){return e.outcome===`not_started`?hs(e,t.outcomes,t.run):e.outcome===`partial`?T(e.attempts[e.attempts.length-1]?.reason??``,t.run):e.outcome===`waiting`&&e.deferred?Us(e.deferredCause,e.deferred,e.deferredIn):e.outcome===`waiting`?function(e){let t=e[0];return t?e.length===1?D(E`waits for output of ${J(t)}`):D(E`waits for output of ${e.length} earlier tasks`):``}(e.waits_for.map(e=>t.outcomes.get(e)??{kind:e})):``}(t,e),r=t.outcome===`waiting`&&t.deferred?function(e){let t=e?.cause===`rest`?Hs(e.rests??[]):[];return t.length>1?t.map(Vs).join(`
660
- `):``}(t.deferredCause)||t.deferred:``;return A`${Zr({text:as(t.outcome,e.live&&!t.deferred),tone:ds(t.outcome),mark:ps(t.outcome),title:t.last_stop})}${n?A`<span class="cause" title=${r||M}>${n}</span>`:M}`}}]}var Tf=[Kr,Fd,k` caption{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;}tr{column-gap:20px;padding:6px 12px;}tbody tr{border-bottom:0;border-radius:8px;transition:background 0.15s;}thead tr{align-items:end;white-space:nowrap;padding:4px 12px 8px;margin-bottom:4px;}tbody [data-col='ended']{font-size:var(--font-size-sm);}.wall{display:flex;align-items:center;justify-content:flex-end;gap:8px;}.wall .jdur{width:56px;margin:0;flex:none;}.grow{display:flex;align-items:center;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.grow .jdim{margin-left:8px;}.pass{margin-left:8px;font-size:11px;color:var(--text-muted);}.cause{display:block;font-size:11px;color:var(--text-muted);margin-top:2px;white-space:normal;overflow-wrap:anywhere;}@container (max-width:760px){tr{grid-template-columns:minmax(0,1fr) 128px 90px;}[data-col='attempts'],[data-col='tokens'],[data-col='cost'],[data-col='ended']{display:none;}}`],Ef=class extends N{constructor(...e){super(...e),this.journal=[],this.plan=null,this.kind=``,this.q=``,this.live=!1,this.run=``}static{this.styles=[V,k`:host{display:block;margin-top:4px;}`]}open(e,t){let n=e.find(e=>e.key===t);n&&$(this,`ca-open-task`,w(n)?{key:t,view:`output`}:{key:t})}render(){let e=this.plan?S(this.journal,this.plan):null,t=e?.rows??[],n=gf(mf(t,this.kind,this.q));return n.length?A`<cae-data-table .columns=${wf({run:this.run,live:this.live,outcomes:e?.outcomes??new Map,all:t,rows:n,journal:this.journal})} .rows=${n} .rowKey=${e=>e.key} .rowTone=${e=>e.outcome===`running`?`running`:void 0} .rowAttrs=${e=>({"data-executor":w(e)?`python`:`agent`})} .cellStyles=${Tf} .caption=${D(`Tasks`,{id:`tab-tasks`})} .strings=${fc(D(`No tasks`))} @cae-activate=${e=>this.open(n,e.detail.id)} ></cae-data-table>`:A`<div class="blank"><span class="ic" aria-hidden="true">≡</span>${t.length?D(`No tasks match the filter`):D(`No tasks`)}</div>`}};function Df(e){return e===`invalid_input`?is(`not_started`):Q(e)}function Of(e){let t=Math.max(1,...e.rows.map(e=>e.wall_s||0)),n=Sf(e.journal),r=new Map(e.journal.map((e,t)=>[e,t]));return[{id:`ended`,header:D(`Ended`),width:`64px`,cell:e=>A`<span class="jmono" title=${G(e.ts,!0)}>${G(e.ts)}</span>`},{id:`task`,header:D(`Task`),width:`minmax(130px,0.8fr)`,rowHeader:!0,text:e=>e.key,cell:e=>{let t=w(e);return A`<span class="jmono" title=${e.key}>${Pd(t,D(t?`Python task`:`Agent task`),``)}
661
- ${J(e)}</span>`}},{id:`outcome`,header:D(`Outcome`),tip:D(`How the attempt ended (stop)`),width:`minmax(150px,0.7fr)`,cell:t=>{let r=f(t),i=r&&(n.get(t.key)?.count??1)>1,a=r?ys((t.rounds??1)-1):``,o=e.replayMarks&&t.replayed?rc():``;return Qr({text:A`<span class="nw">${Df(t.stop)}</span>${i||a||o?A`<span class="sub" title=${o?ic():M}>${K(i?_s(t.attempt):``,a,o)}</span>`:M}`,tone:us(t.stop),cls:`two`,title:t.stop})}},{id:`agent`,header:D(`Agent, model, identity`),width:`minmax(150px,1fr)`,cell:e=>A`<span class="jmono jdim two" title=${K(e.route,Js(e.hops,null,e.skipped_hops))||M}>${f(e)?A`<span>${[e.agent,e.model].filter(Boolean).join(` / `)||`—`}</span>${function(e){let t=[...new Set([...(e.hops??[]).map(e=>e.credential),e.credential].filter(Boolean))];if(!t.length)return M;let n=(e.quota??[])[0],r=n?D(E`Usage at session start (account-wide): ${Ns(n)}`):``,i=n&&t.length===1&&(n.credential??``)===t[0],a=n?i?js(n):Ns(n):``;return A`<span class="sub" title=${[r,...t.map(Es)].filter(Boolean).join(`
662
- `)||M}>${t.map(e=>Ts(e)).join(` → `)}${n?A` <span class="q">${a}</span>`:M}</span>`}(e)}`:`—`}</span>`},{id:`tokens`,header:D(`Tokens`),tip:D(`Input / output | cache read / cache write`),align:`end`,width:`92px`,cell:e=>{let t=e.usage;return A`<span class="two" title=${[t?.resident==null?``:D(E`Input of the first API call: ${Y(t.resident)}`),Uc(e)].filter(Boolean).join(`
657
+ ${e.claims?.length?A`<span class="jdim also" title=${i=e.claims,K(mc(),q(i))}>${(e=>e.length>2?D(E`Locks ${e.length} names`):D(E`Locks ${q(e)}`))(e.claims)}</span>`:M}
658
+ ${e.priority?A`<span class="jdim also" title=${Vc()}>${Bc(e.priority)}</span>`:M}
659
+ </span>`;var i}},{id:`attempts`,header:D(`Attempts`),tip:D(`Attempts that ran`),align:`end`,width:`64px`,cell:e=>e.tries.length},{id:`time`,header:D(`Time`),tip:D(`Summed over all attempts`),align:`end`,width:`132px`,cell:e=>A`<span class="wall">${i(e)?A`${B(e.wall_s)}<span class="jdur"><i class=${w(e)?``:`llm`} style="width:${Math.max(4,Math.round(100*e.wall_s/n))}%"></i></span>`:A`<span class="jdim">${Tf()}</span><span class="jdur" style="visibility:hidden"></span>`}</span>`},{id:`tokens`,header:D(`Tokens`),tip:D(`Input and output, summed over all attempts`),align:`end`,width:`72px`,cell:e=>a(e,e=>A`<span title=${K(D(E`Cache read ${Y(e.cache_read)}`),D(E`Cache write ${Y(e.cache_creation)}`))}>${Y(e.input+e.output)}</span>`)},{id:`cost`,header:D(`Cost`),tip:D(`Reported by the coding agent`),align:`end`,width:`72px`,cell:e=>a(e,e=>X(e.cost))},{id:`ended`,header:D(`Last attempt ended`),align:`end`,width:`128px`,cell:e=>A`<span class="meta">${i(e)?G(e.tries[e.tries.length-1]?.ts,!0):Tf()}</span>`},{id:`status`,header:D(`Status`,{id:`status`}),width:`minmax(240px, 1fr)`,cell:t=>{let n=function(e,t){return e.outcome===`not_started`?hs(e,t.outcomes,t.run):e.outcome===`partial`?T(e.attempts[e.attempts.length-1]?.reason??``,t.run):e.outcome===`waiting`&&e.deferred?Us(e.deferredCause,e.deferred,e.deferredIn):e.outcome===`waiting`?function(e){let t=e[0];return t?e.length===1?D(E`waits for output of ${J(t)}`):D(E`waits for output of ${e.length} earlier tasks`):``}(e.waits_for.map(e=>t.outcomes.get(e)??{kind:e})):``}(t,e),r=t.outcome===`waiting`&&t.deferred?function(e){let t=e?.cause===`rest`?Hs(e.rests??[]):[];return t.length>1?t.map(Vs).join(`
660
+ `):``}(t.deferredCause)||t.deferred:``;return A`${Zr({text:as(t.outcome,e.live&&!t.deferred),tone:ds(t.outcome),mark:ps(t.outcome),title:t.last_stop})}${n?A`<span class="cause" title=${r||M}>${n}</span>`:M}`}}]}var Df=[Kr,Kd,k` caption{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;}tr{column-gap:20px;padding:6px 12px;}tbody tr{border-bottom:0;border-radius:8px;transition:background 0.15s;}thead tr{align-items:end;white-space:nowrap;padding:4px 12px 8px;margin-bottom:4px;}tbody [data-col='ended']{font-size:var(--font-size-sm);}.wall{display:flex;align-items:center;justify-content:flex-end;gap:8px;}.wall .jdur{width:56px;margin:0;flex:none;}.grow{display:flex;align-items:center;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.grow .jdim{margin-left:8px;}.pass{margin-left:8px;font-size:11px;color:var(--text-muted);}.cause{display:block;font-size:11px;color:var(--text-muted);margin-top:2px;white-space:normal;overflow-wrap:anywhere;}@container (max-width:760px){tr{grid-template-columns:minmax(0,1fr) 128px 90px;}[data-col='attempts'],[data-col='tokens'],[data-col='cost'],[data-col='ended']{display:none;}}`],Of=class extends N{constructor(...e){super(...e),this.journal=[],this.plan=null,this.kind=``,this.q=``,this.live=!1,this.run=``}static{this.styles=[V,k`:host{display:block;margin-top:4px;}`]}open(e,t){let n=e.find(e=>e.key===t);n&&$(this,`ca-open-task`,w(n)?{key:t,view:`output`}:{key:t})}render(){let e=this.plan?S(this.journal,this.plan):null,t=e?.rows??[],n=Vl(zl(t,this.kind,this.q));return n.length?A`<cae-data-table .columns=${Ef({run:this.run,live:this.live,outcomes:e?.outcomes??new Map,all:t,rows:n,journal:this.journal})} .rows=${n} .rowKey=${e=>e.key} .rowTone=${e=>e.outcome===`running`?`running`:void 0} .rowAttrs=${e=>({"data-executor":w(e)?`python`:`agent`})} .cellStyles=${Df} .caption=${D(`Tasks`,{id:`tab-tasks`})} .strings=${pc(D(`No tasks`))} @cae-activate=${e=>this.open(n,e.detail.id)} ></cae-data-table>`:A`<div class="blank"><span class="ic" aria-hidden="true">≡</span>${t.length?D(`No tasks match the filter`):D(`No tasks`)}</div>`}};function kf(e){return e===`invalid_input`?is(`not_started`):Q(e)}function Af(e){let t=Math.max(1,...e.rows.map(e=>e.wall_s||0)),n=Jl(e.journal),r=new Map(e.journal.map((e,t)=>[e,t]));return[{id:`ended`,header:D(`Ended`),width:`64px`,cell:e=>A`<span class="jmono" title=${G(e.ts,!0)}>${G(e.ts)}</span>`},{id:`task`,header:D(`Task`),width:`minmax(130px,0.8fr)`,rowHeader:!0,text:e=>e.key,cell:e=>{let t=w(e);return A`<span class="jmono" title=${e.key}>${Gd(t,D(t?`Python task`:`Agent task`),``)}
661
+ ${J(e)}</span>`}},{id:`outcome`,header:D(`Outcome`),tip:D(`How the attempt ended (stop)`),width:`minmax(150px,0.7fr)`,cell:t=>{let r=f(t),i=r&&(n.get(t.key)?.count??1)>1,a=r?ys(Wl(t)):``,o=e.replayMarks&&t.replayed?ic():``;return Qr({text:A`<span class="nw">${kf(t.stop)}</span>${i||a||o?A`<span class="sub" title=${o?ac():M}>${K(i?_s(t.attempt):``,a,o)}</span>`:M}`,tone:us(t.stop),cls:`two`,title:t.stop})}},{id:`agent`,header:D(`Agent, model, identity`),width:`minmax(150px,1fr)`,cell:e=>A`<span class="jmono jdim two" title=${K(e.route,Js(e.hops,null,e.skipped_hops))||M}>${f(e)?A`<span>${[e.agent,e.model].filter(Boolean).join(` / `)||`—`}</span>${function(e){let t=[...new Set([...(e.hops??[]).map(e=>e.credential),e.credential].filter(Boolean))];if(!t.length)return M;let n=(e.quota??[])[0],r=n?D(E`Usage at session start (account-wide): ${Ns(n)}`):``,i=n&&t.length===1&&(n.credential??``)===t[0],a=n?i?js(n):Ns(n):``;return A`<span class="sub" title=${[r,...t.map(Es)].filter(Boolean).join(`
662
+ `)||M}>${t.map(e=>Ts(e)).join(` → `)}${n?A` <span class="q">${a}</span>`:M}</span>`}(e)}`:`—`}</span>`},{id:`tokens`,header:D(`Tokens`),tip:D(`Input / output | cache read / cache write`),align:`end`,width:`92px`,cell:e=>{let t=e.usage;return A`<span class="two" title=${[t?.resident==null?``:D(E`Input of the first API call: ${Y(t.resident)}`),Wc(e)].filter(Boolean).join(`
663
663
  `)||M}>${t?A`<span>${Y(t.input)} / ${Y(t.output)}</span><span class="sub">${Y(t.cache_read)} / ${Y(t.cache_creation)}</span>`:A`<span class="jdim">—</span>`}</span>`}},{id:`cost`,header:D(`Cost`),tip:D(`Reported by the coding agent`),align:`end`,width:`60px`,cell:e=>{let t=e.hops??[];return A`<span class="cost" title=${(t.length>1?t.map(e=>K(e.model||e.route||`—`,Ts(e.credential)||`—`,X(e.cost_usd),Q(e.stop))).join(`
664
- `):``)||D(`Reported by the coding agent`)}>${X(e.cost_usd)}</span>`}},{id:`time`,header:D(`Time`),align:`end`,width:`76px`,cell:e=>{let n=w(e);return f(e)?A`${B(e.wall_s)}<span class="jdur"><i class=${se(e)?`bad`:n?``:`llm`} style="width:${Math.max(2,Math.round(100*(e.wall_s||0)/t))}%"></i></span>`:`—`}},{id:`reason`,header:D(`Reason`),width:`minmax(200px,2.2fr)`,cell:t=>{let i=rs([t]),a=ns(ts([t])),o=t.safety_stops??[];return A`<span class="jwhy" title=${t.reason||M}>${(t=>{let i=f(t),a=Js(t.hops,null,t.skipped_hops),o=e.run||t.run_id||``,s=e.outcomes.get(t.key),c=t.stop===`invalid_input`&&s?hs({attempts:[t],cause:null},e.outcomes,o):``,l=c?Zo(c):t.ok&&i&&t.stop!==`partial`||!t.reason?``:T(t.reason,o),u=(e=>{let t=n.get(e.key);return!e.ok&&f(e)&&(t?.lastOk??-1)>(r.get(e)??0)?t?.lastOkTry??0:0})(t),d=u?D(E`Task done on attempt ${u}`):``,p=t.context_warned?Wc(t):``;return a||l||d||p?A`${a?A`<span class="nw" title=${D(`Model switch`)}>${a}</span><br />`:M}${l?A`${l}<br />`:M}${d?A`<span class="later">${d}</span>${p?A`<br />`:M}`:M}${p?A`<span class="tone-text" data-tone="attention" title=${[Gc(),Uc(t)].filter(Boolean).join(`
665
- `)}>${p}</span>`:M}`:A`<span class="jdim">—</span>`})(t)}${o.length?A` <span class="tone-text nw" data-tone="attention" title=${[el(),...o.map(nl)].join(`
666
- `)} >${$c(o.length)}</span >`:M}${i?A` <span class="unread nw" title=${D(E`Event types this contraagent version does not know (unread_events): ${i}`)} ><span aria-hidden="true">⚠</span> ${D(`Unrecognized events`)}</span >`:M}${a?A` <span class="unread nw" title=${a.tip}><span aria-hidden="true">⚠</span> ${a.label}</span>`:M}</span>`}},...(e.extras??[]).map(e=>({id:`x:${e}`,header:e,tip:gc(),width:`minmax(80px,0.6fr)`,text:t=>_c(t[e]),cell:t=>{let n=_c(t[e]);return n===`—`?A`<span class="jdim">—</span>`:A`<span class="jmono" title=${n}>${n}</span>`}}))]}U([F({attribute:!1})],Ef.prototype,`journal`,void 0),U([F({attribute:!1})],Ef.prototype,`plan`,void 0),U([F()],Ef.prototype,`kind`,void 0),U([F()],Ef.prototype,`q`,void 0),U([F({type:Boolean})],Ef.prototype,`live`,void 0),U([F()],Ef.prototype,`run`,void 0),Ef=U([P(`ca-task-table`),O()],Ef);var kf=[Kr,Fd,k` caption{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;}tr{column-gap:12px;row-gap:2px;padding:7px 12px;border-bottom:1px solid var(--line);font-size:12px;min-width:980px;}th,td{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}tbody [data-col='outcome'],tbody [data-col='agent'],tbody [data-col='tokens'],tbody [data-col='reason']{white-space:normal;}tbody [data-col='ended'],tbody [data-col='task']{font-family:var(--mono);font-size:11.5px;}thead{position:sticky;top:0;z-index:1;}thead tr{color:var(--text-muted);font-size:11px;background:var(--bg);}tbody tr[data-key]:hover{background:var(--card);}tbody tr[data-executor='python']{opacity:0.85;}tbody tr[data-executor='python']:hover,tbody tr[data-executor='python'][data-tone='failed']{opacity:1;}tbody tr[data-ran='false']{opacity:0.8;}tbody tr[data-fresh]{animation:rowin 1.6s var(--ease);}tr.empty{min-width:0;}tr.empty td{font-size:var(--font-size-sm);}.jwhy{color:var(--text-2);overflow-wrap:anywhere;}.later{color:var(--status-done);}.nw{white-space:nowrap;}.unread{color:var(--status-attention);}.two{display:flex;flex-direction:column;line-height:1.35;}.jstop.two{display:grid;grid-template-columns:auto minmax(0,1fr);align-content:center;}.jstop.two>*{grid-column:2;}.jstop.two::before{grid-row:1;}.two .sub{color:var(--text-muted);font-size:11px;white-space:normal;overflow-wrap:anywhere;}[data-col='tokens'] .two>span{white-space:nowrap;}.sub .q{color:var(--text-2);font-family:var(--mono);white-space:nowrap;}.jstop .sub{font-weight:400;}.cost{font-variant-numeric:tabular-nums;color:var(--text-2);}`],Af=class extends N{constructor(...e){super(...e),this.rows=[],this.plan=null,this.fresh=new Set,this.kind=``,this.stop=``,this.q=``,this.run=``,this.extras=[],this.replayMarks=!1}static{this.styles=[V,k` :host{display:block;}.jtally{display:flex;flex-wrap:wrap;gap:8px;padding:2px 0 12px;}.jchip{border:1px solid var(--line);border-radius:999px;padding:3px 11px;font-size:11.5px;color:var(--text-muted);cursor:pointer;transition:all 0.15s;background:none;}.jchip b{color:var(--text);}.jchip:hover{border-color:var(--line2);color:var(--text);}.jchip.on{background:var(--accent-bg);border-color:var(--accent);color:var(--text);}.jchip[data-tone='failed'],.jchip[data-tone='attention']{color:var(--tone);border-color:color-mix(in srgb,var(--tone) 40%,transparent);}`]}open(e,t){let n=e.find(e=>le(e)===t);n&&$(this,`ca-open-task`,w(n)?{key:n.key,view:`output`}:{key:n.key})}render(){let e=bf(this.rows,this.kind,this.stop,this.q).reverse(),t=this.rows.filter(yf).length,n=vf(this.rows).size,r=this.replayMarks?this.rows.filter(e=>e.replayed).length:0,i=(e,t,n,r,i=`neutral`)=>A`<button type="button" class="jchip ${this.stop===e?`on`:``}" data-tone=${L(i)} data-mark=${Yr(i)??M} aria-pressed=${this.stop===e} title=${r} @click=${()=>$(this,`ca-filter`,{stop:this.stop===e?``:e})}>${t} <b>${n}</b></button>`,a=Of({run:this.run,outcomes:S(this.rows,this.plan).outcomes,journal:this.rows,rows:e,extras:this.extras,replayMarks:this.replayMarks});return A`<div class="jtally">
667
- ${xf(this.rows).map(([e,t])=>i(e,Df(e),t,e,us(e)))}
664
+ `):``)||D(`Reported by the coding agent`)}>${X(e.cost_usd)}</span>`}},{id:`time`,header:D(`Time`),align:`end`,width:`76px`,cell:e=>{let n=w(e);return f(e)?A`${B(e.wall_s)}<span class="jdur"><i class=${se(e)?`bad`:n?``:`llm`} style="width:${Math.max(2,Math.round(100*(e.wall_s||0)/t))}%"></i></span>`:`—`}},{id:`reason`,header:D(`Reason`),width:`minmax(200px,2.2fr)`,cell:t=>{let i=rs([t]),a=ns(ts([t])),o=t.safety_stops??[];return A`<span class="jwhy" title=${t.reason||M}>${(t=>{let i=f(t),a=Js(t.hops,null,t.skipped_hops),o=e.run||t.run_id||``,s=e.outcomes.get(t.key),c=t.stop===`invalid_input`&&s?hs({attempts:[t],cause:null},e.outcomes,o):``,l=c?Zo(c):t.ok&&i&&t.stop!==`partial`||!t.reason?``:T(t.reason,o),u=(e=>{let t=n.get(e.key);return!e.ok&&f(e)&&(t?.lastOk??-1)>(r.get(e)??0)?t?.lastOkTry??0:0})(t),d=u?D(E`Task done on attempt ${u}`):``,p=t.context_warned?Gc(t):``;return a||l||d||p?A`${a?A`<span class="nw" title=${D(`Model switch`)}>${a}</span><br />`:M}${l?A`${l}<br />`:M}${d?A`<span class="later">${d}</span>${p?A`<br />`:M}`:M}${p?A`<span class="tone-text" data-tone="attention" title=${[Kc(),Wc(t)].filter(Boolean).join(`
665
+ `)}>${p}</span>`:M}`:A`<span class="jdim">—</span>`})(t)}${o.length?A` <span class="tone-text nw" data-tone="attention" title=${[tl(),...o.map(rl)].join(`
666
+ `)} >${el(o.length)}</span >`:M}${i?A` <span class="unread nw" title=${D(E`Event types this contraagent version does not know (unread_events): ${i}`)} ><span aria-hidden="true">⚠</span> ${D(`Unrecognized events`)}</span >`:M}${a?A` <span class="unread nw" title=${a.tip}><span aria-hidden="true">⚠</span> ${a.label}</span>`:M}</span>`}},...(e.extras??[]).map(e=>({id:`x:${e}`,header:e,tip:_c(),width:`minmax(80px,0.6fr)`,text:t=>vc(t[e]),cell:t=>{let n=vc(t[e]);return n===`—`?A`<span class="jdim">—</span>`:A`<span class="jmono" title=${n}>${n}</span>`}}))]}U([F({attribute:!1})],Of.prototype,`journal`,void 0),U([F({attribute:!1})],Of.prototype,`plan`,void 0),U([F()],Of.prototype,`kind`,void 0),U([F()],Of.prototype,`q`,void 0),U([F({type:Boolean})],Of.prototype,`live`,void 0),U([F()],Of.prototype,`run`,void 0),Of=U([P(`ca-task-table`),O()],Of);var jf=[Kr,Kd,k` caption{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;}tr{column-gap:12px;row-gap:2px;padding:7px 12px;border-bottom:1px solid var(--line);font-size:12px;min-width:980px;}th,td{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}tbody [data-col='outcome'],tbody [data-col='agent'],tbody [data-col='tokens'],tbody [data-col='reason']{white-space:normal;}tbody [data-col='ended'],tbody [data-col='task']{font-family:var(--mono);font-size:11.5px;}thead{position:sticky;top:0;z-index:1;}thead tr{color:var(--text-muted);font-size:11px;background:var(--bg);}tbody tr[data-key]:hover{background:var(--card);}tbody tr[data-executor='python']{opacity:0.85;}tbody tr[data-executor='python']:hover,tbody tr[data-executor='python'][data-tone='failed']{opacity:1;}tbody tr[data-ran='false']{opacity:0.8;}tbody tr[data-fresh]{animation:rowin 1.6s var(--ease);}tr.empty{min-width:0;}tr.empty td{font-size:var(--font-size-sm);}.jwhy{color:var(--text-2);overflow-wrap:anywhere;}.later{color:var(--status-done);}.nw{white-space:nowrap;}.unread{color:var(--status-attention);}.two{display:flex;flex-direction:column;line-height:1.35;}.jstop.two{display:grid;grid-template-columns:auto minmax(0,1fr);align-content:center;}.jstop.two>*{grid-column:2;}.jstop.two::before{grid-row:1;}.two .sub{color:var(--text-muted);font-size:11px;white-space:normal;overflow-wrap:anywhere;}[data-col='tokens'] .two>span{white-space:nowrap;}.sub .q{color:var(--text-2);font-family:var(--mono);white-space:nowrap;}.jstop .sub{font-weight:400;}.cost{font-variant-numeric:tabular-nums;color:var(--text-2);}`],Mf=class extends N{constructor(...e){super(...e),this.rows=[],this.plan=null,this.fresh=new Set,this.kind=``,this.stop=``,this.q=``,this.run=``,this.extras=[],this.replayMarks=!1}static{this.styles=[V,k` :host{display:block;}.jtally{display:flex;flex-wrap:wrap;gap:8px;padding:2px 0 12px;}.jchip{border:1px solid var(--line);border-radius:999px;padding:3px 11px;font-size:11.5px;color:var(--text-muted);cursor:pointer;transition:all 0.15s;background:none;}.jchip b{color:var(--text);}.jchip:hover{border-color:var(--line2);color:var(--text);}.jchip.on{background:var(--accent-bg);border-color:var(--accent);color:var(--text);}.jchip[data-tone='failed'],.jchip[data-tone='attention']{color:var(--tone);border-color:color-mix(in srgb,var(--tone) 40%,transparent);}`]}open(e,t){let n=e.find(e=>le(e)===t);n&&$(this,`ca-open-task`,w(n)?{key:n.key,view:`output`}:{key:n.key})}render(){let e=Kl(this.rows,this.kind,this.stop,this.q).reverse(),t=this.rows.filter(Gl).length,n=Ul(this.rows).size,r=this.replayMarks?this.rows.filter(e=>e.replayed).length:0,i=(e,t,n,r,i=`neutral`)=>A`<button type="button" class="jchip ${this.stop===e?`on`:``}" data-tone=${L(i)} data-mark=${Yr(i)??M} aria-pressed=${this.stop===e} title=${r} @click=${()=>$(this,`ca-filter`,{stop:this.stop===e?``:e})}>${t} <b>${n}</b></button>`,a=Af({run:this.run,outcomes:S(this.rows,this.plan).outcomes,journal:this.rows,rows:e,extras:this.extras,replayMarks:this.replayMarks});return A`<div class="jtally">
667
+ ${ql(this.rows).map(([e,t])=>i(e,kf(e),t,e,us(e)))}
668
668
  ${t?i(`fixup`,D(`attempts with corrections`),t,Zs()):M}
669
669
  ${n?i(`retried`,D(`tasks retried`),n,gs()):M}
670
- ${r?i(`replayed`,D(`attempts replayed`),r,ic()):M}
670
+ ${r?i(`replayed`,D(`attempts replayed`),r,ac()):M}
671
671
  </div>
672
- <cae-data-table .columns=${a} .rows=${e} .rowKey=${le} .rowTone=${e=>f(e)&&se(e)?`failed`:void 0} .rowAttrs=${e=>({"data-executor":w(e)?`python`:`agent`,...f(e)?{}:{"data-ran":`false`},...this.fresh.has(le(e))?{"data-fresh":``}:{}})} .cellStyles=${kf} .caption=${D(`History`)} .strings=${fc(D(`No finished attempts`))} @cae-activate=${t=>this.open(e,t.detail.id)} ></cae-data-table>`}};U([F({attribute:!1})],Af.prototype,`rows`,void 0),U([F({attribute:!1})],Af.prototype,`plan`,void 0),U([F({attribute:!1})],Af.prototype,`fresh`,void 0),U([F()],Af.prototype,`kind`,void 0),U([F()],Af.prototype,`stop`,void 0),U([F()],Af.prototype,`q`,void 0),U([F()],Af.prototype,`run`,void 0),U([F({attribute:!1})],Af.prototype,`extras`,void 0),U([F({type:Boolean,attribute:`replay-marks`})],Af.prototype,`replayMarks`,void 0),Af=U([P(`ca-journal-table`),O()],Af);var jf=[`invalid`,`refused`,`failed`,`running`,`pending`,`valid`];function Mf(e){let t=e?.tally,n=t?jf.filter(e=>t[e]):[];return n.length?n.map(e=>Ol(e,t?.[e])):A`<span class="meta">${D(`No checked files`)}</span>`}var Nf=e=>e.split(`/`).slice(-2).join(`/`),Pf=e=>J({kind:e.kind||e.key,unit:e.unit&&e.unit!==e.key?e.unit:``}),Ff=e=>e?jf.indexOf(e):jf.length,If=class extends N{constructor(...e){super(...e),this.outputs=null,this.run=``,this.journal=[],this.plan=null,this.outcomes=new Map,this.open=new Xn(`contracts:open`,this),this.producerOf=e=>{for(let t of this.outputs?.contracts??[]){let n=(t.outputs??[]).find(t=>t.path===e);if(n)return{name:Pf(t),written:!!n.file.exists,outcome:this.outcomes.get(t.key)?.outcome}}}}static{this.styles=[V,Il,Fd,k` :host{display:block;container-type:inline-size;}.ct-row{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px;}details.ct{border-top:1px solid var(--line);}details.ct>summary{list-style:none;cursor:pointer;padding:7px 4px;display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;}details.ct>summary>*{min-width:0;overflow-wrap:anywhere;}details.ct>summary::-webkit-details-marker{display:none;}details.ct>summary::before{content:'▸';color:var(--text-muted);width:10px;transition:transform 0.15s;}details.ct[open]>summary::before{transform:rotate(90deg);}details.ct>summary:hover{background:var(--raise);border-radius:8px;}.k-ic{margin-right:0;}.ct-f{margin-left:auto;white-space:nowrap;}.ct-body{padding:4px 10px 14px 24px;}@container (max-width:480px){.ct-body{padding:4px 0 14px 12px;}}.ct-links{margin-top:10px;font-size:12px;}.lead{margin:-4px 0 10px;}.one{display:flex;align-items:center;gap:10px;padding:7px 4px 7px 24px;border-top:1px solid var(--line);flex-wrap:wrap;}.why{color:var(--text-2);font-size:12px;}`]}render(){let e=this.outputs?.contracts??[];if(this.outcomes=this.plan?S(this.journal,this.plan).outcomes:new Map,!e.length)return A`<div class="blank"><span class="ic" aria-hidden="true">▣</span><b>${D(`No checked files`)}</b>
673
- <span>${D(`No task declares an OutputContract or an InputContract`)}</span></div>`;let t=e.flatMap(e=>(e.outputs??[]).map(t=>[e,t])).sort(([e,t],[n,r])=>Ff(t.status)-Ff(r.status)||e.key.localeCompare(n.key)),n=e.flatMap(e=>(e.inputs??[]).map(t=>[e,t]));return A`<div class="g12">
672
+ <cae-data-table .columns=${a} .rows=${e} .rowKey=${le} .rowTone=${e=>f(e)&&se(e)?`failed`:void 0} .rowAttrs=${e=>({"data-executor":w(e)?`python`:`agent`,...f(e)?{}:{"data-ran":`false`},...this.fresh.has(le(e))?{"data-fresh":``}:{}})} .cellStyles=${jf} .caption=${D(`History`)} .strings=${pc(D(`No finished attempts`))} @cae-activate=${t=>this.open(e,t.detail.id)} ></cae-data-table>`}};U([F({attribute:!1})],Mf.prototype,`rows`,void 0),U([F({attribute:!1})],Mf.prototype,`plan`,void 0),U([F({attribute:!1})],Mf.prototype,`fresh`,void 0),U([F()],Mf.prototype,`kind`,void 0),U([F()],Mf.prototype,`stop`,void 0),U([F()],Mf.prototype,`q`,void 0),U([F()],Mf.prototype,`run`,void 0),U([F({attribute:!1})],Mf.prototype,`extras`,void 0),U([F({type:Boolean,attribute:`replay-marks`})],Mf.prototype,`replayMarks`,void 0),Mf=U([P(`ca-journal-table`),O()],Mf);var Nf=[`invalid`,`refused`,`failed`,`running`,`pending`,`valid`];function Pf(e){let t=e?.tally,n=t?Nf.filter(e=>t[e]):[];return n.length?n.map(e=>kl(e,t?.[e])):A`<span class="meta">${D(`No checked files`)}</span>`}var Ff=e=>e.split(`/`).slice(-2).join(`/`),If=e=>J({kind:e.kind||e.key,unit:e.unit&&e.unit!==e.key?e.unit:``}),Lf=e=>e?Nf.indexOf(e):Nf.length,Rf=class extends N{constructor(...e){super(...e),this.outputs=null,this.run=``,this.journal=[],this.plan=null,this.outcomes=new Map,this.open=new Xn(`contracts:open`,this),this.producerOf=e=>{for(let t of this.outputs?.contracts??[]){let n=(t.outputs??[]).find(t=>t.path===e);if(n)return{name:If(t),written:!!n.file.exists,outcome:this.outcomes.get(t.key)?.outcome}}}}static{this.styles=[V,Ll,Kd,k` :host{display:block;container-type:inline-size;}.ct-row{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px;}details.ct{border-top:1px solid var(--line);}details.ct>summary{list-style:none;cursor:pointer;padding:7px 4px;display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;}details.ct>summary>*{min-width:0;overflow-wrap:anywhere;}details.ct>summary::-webkit-details-marker{display:none;}details.ct>summary::before{content:'▸';color:var(--text-muted);width:10px;transition:transform 0.15s;}details.ct[open]>summary::before{transform:rotate(90deg);}details.ct>summary:hover{background:var(--raise);border-radius:8px;}.k-ic{margin-right:0;}.ct-f{margin-left:auto;white-space:nowrap;}.ct-body{padding:4px 10px 14px 24px;}@container (max-width:480px){.ct-body{padding:4px 0 14px 12px;}}.ct-links{margin-top:10px;font-size:12px;}.lead{margin:-4px 0 10px;}.one{display:flex;align-items:center;gap:10px;padding:7px 4px 7px 24px;border-top:1px solid var(--line);flex-wrap:wrap;}.why{color:var(--text-2);font-size:12px;}`]}render(){let e=this.outputs?.contracts??[];if(this.outcomes=this.plan?S(this.journal,this.plan).outcomes:new Map,!e.length)return A`<div class="blank"><span class="ic" aria-hidden="true">▣</span><b>${D(`No checked files`)}</b>
673
+ <span>${D(`No task declares an OutputContract or an InputContract`)}</span></div>`;let t=e.flatMap(e=>(e.outputs??[]).map(t=>[e,t])).sort(([e,t],[n,r])=>Lf(t.status)-Lf(r.status)||e.key.localeCompare(n.key)),n=e.flatMap(e=>(e.inputs??[]).map(t=>[e,t]));return A`<div class="g12">
674
674
  <section class="panel c12">
675
675
  <h3 title=${D(`OutputContract`)}>${D(`Outputs`)}
676
676
  <span class="r">${D(`Files each task must write`)}</span></h3>
677
- <div class="ct-row">${Mf(this.outputs)}</div>
677
+ <div class="ct-row">${Pf(this.outputs)}</div>
678
678
  ${H(t,([e,t])=>`out|${e.key}|${t.path}`,([e,t])=>this.outRow(e,t))}
679
679
  </section>
680
680
  ${n.length?A`<section class="panel c12">
@@ -685,28 +685,28 @@ ${H(n,([e,t])=>`in|${e.key}|${t.path}`,([e,t])=>this.inRow(e,t))}
685
685
  </div>`}details(e,t,n){return A`<details class="ct" ?open=${this.open.has(e)} @toggle=${t=>this.open.set(e,t.target.open)}>
686
686
  <summary class="ct-sum">${t}</summary>
687
687
  <div class="ct-body">${n}</div>
688
- </details>`}link(e,t,n){return A`<a class="lnk" href="#" @click=${n=>{n.preventDefault(),$(this,`ca-open-task`,{key:e,view:t})}}>${n}</a>`}who(e){let t=w(e);return A`${Pd(t,D(t?`Python task`:`Agent task`))}
689
- <b class="jmono" title=${e.key}>${Pf(e)}</b>`}reasonOf(e){for(let t=this.journal.length-1;t>=0;t--){let n=this.journal[t];if(n?.key===e)return T(n.reason,this.run)}return``}outRow(e,t){if(t.status===`refused`)return A`<div class="one">
690
- ${Ol(`refused`)}${this.who(e)}
691
- <span class="why">${$s(t,this.run,this.producerOf)}</span>
692
- </div>`;let n=t.file,r=t.status,i=t.rounds??0,a=t.errors??[],o=Pf(e);return this.details(`out|${e.key}|${t.path}`,A`${Ol(r)}
693
- ${i>1?A`<span class="meta" title=${Zs()}>${Qs(i,r===`valid`)}</span>`:M}
688
+ </details>`}link(e,t,n){return A`<a class="lnk" href="#" @click=${n=>{n.preventDefault(),$(this,`ca-open-task`,{key:e,view:t})}}>${n}</a>`}who(e){let t=w(e);return A`${Gd(t,D(t?`Python task`:`Agent task`))}
689
+ <b class="jmono" title=${e.key}>${If(e)}</b>`}reasonOf(e){for(let t=this.journal.length-1;t>=0;t--){let n=this.journal[t];if(n?.key===e)return T(n.reason,this.run)}return``}outRow(e,t){if(t.status===`refused`)return A`<div class="one">
690
+ ${kl(`refused`)}${this.who(e)}
691
+ <span class="why">${ec(t,this.run,this.producerOf)}</span>
692
+ </div>`;let n=t.file,r=t.status,i=t.rounds??0,a=t.errors??[],o=If(e);return this.details(`out|${e.key}|${t.path}`,A`${kl(r)}
693
+ ${i>1?A`<span class="meta" title=${Qs()}>${$s(i,r===`valid`)}</span>`:M}
694
694
  ${this.who(e)}
695
- <span class="jmono jdim ct-path" title=${t.path}>${Nf(t.path)}</span>
695
+ <span class="jmono jdim ct-path" title=${t.path}>${Ff(t.path)}</span>
696
696
  ${r===`failed`&&this.reasonOf(e.key)?A`<span class="why">${this.reasonOf(e.key)}</span>`:M}
697
- <span class="meta ct-f">${n.exists?`${n.size??0} B`:r?M:D(`No file`)}</span>`,A`${Pl(t,`output`)}
698
- ${Al(t)}
697
+ <span class="meta ct-f">${n.exists?`${n.size??0} B`:r?M:D(`No file`)}</span>`,A`${Fl(t,`output`)}
698
+ ${jl(t)}
699
699
  ${a.length?A`<h4>${D(`Errors`)}</h4><pre class="ct-err">${a.map(e=>T(e,this.run)).join(`
700
700
  `)}</pre>`:M}
701
701
  <div class="ct-links">
702
702
  ${this.link(e.key,`output`,D(E`${o}: input and output`))}
703
703
  ${w(e)?M:A`<br />${this.link(e.key,`transcript`,D(E`${o}: transcript`))}`}
704
- </div>`)}inRow(e,t){let n=t.file,r=!!n.exists;return this.details(`in|${e.key}|${t.path}`,A`${Dl(t)}
704
+ </div>`)}inRow(e,t){let n=t.file,r=!!n.exists;return this.details(`in|${e.key}|${t.path}`,A`${Ol(t)}
705
705
  ${this.who(e)}
706
- <span class="jmono jdim ct-path" title=${t.path}>${Nf(t.path)}</span>
707
- <span class="meta ct-f">${r?`${n.size??0} B`:D(`No file`)}</span>`,A`${Pl(t,`input`)}
708
- ${Al(t)}
709
- <div class="ct-links">${this.link(e.key,`input`,D(E`${Pf(e)}: input`))}</div>`)}};U([F({attribute:!1})],If.prototype,`outputs`,void 0),U([F()],If.prototype,`run`,void 0),U([F({attribute:!1})],If.prototype,`journal`,void 0),U([F({attribute:!1})],If.prototype,`plan`,void 0),If=U([P(`ca-contracts`),O()],If);var Lf=e=>e.replace(/\$\{?([A-Za-z_]\w*)\}?/g,`<span class="pv">$&</span>`).replace(/\{\{contract\}\}/g,`<span class="pv pc">{{contract}}</span>`);function Rf(e){let t=e.match(/^(TELEMETRY [^\n]*)\n+([\s\S]*)$/);return t?{head:t[1]??``,body:t[2]??``}:{head:``,body:e}}var zf=new Set([`instructions`,`schema`,`agent`]),Bf=class extends N{constructor(...e){super(...e),this.definition=null,this.memory=`definition`,this.open=new Xn(`definition:open`,this),this.source=new Xn(`definition:source`,this)}static{this.styles=[V,Gr,qr,Fl,k` :host{display:block;}.ct-in{display:flex;align-items:center;gap:10px;padding:5px 4px;border-top:1px solid var(--line);}.df{border-top:1px solid var(--line);}.df-hd{padding:6px 2px;display:flex;flex-wrap:wrap;gap:4px 10px;align-items:center;}.df-sum{flex:1 1 16em;min-width:0;display:flex;flex-wrap:wrap;gap:4px 10px;align-items:center;padding:0;background:none;border:0;color:inherit;text-align:start;cursor:pointer;}.df-sum .jmono{min-width:0;overflow-wrap:anywhere;}.df-tog{flex:none;margin-inline-start:auto;}.df-sum::before{content:'▸';color:var(--text-muted);width:10px;flex:none;transition:transform 0.15s;}.df-sum[aria-expanded='true']::before{transform:rotate(90deg);}.py-sig{font-family:var(--mono);font-size:14px;padding:10px 14px;background:var(--well);border:1px solid var(--line);border-radius:8px;overflow-x:auto;white-space:pre;}.py-where{margin:6px 2px 12px;font-family:var(--mono);font-size:11.5px;color:var(--text-muted);overflow-wrap:anywhere;}.py-doc{margin:0 0 12px;padding:8px 12px;border-left:3px solid var(--line2);color:var(--text-2);white-space:pre-wrap;line-height:1.6;}.src{display:grid;grid-template-columns:auto minmax(0,1fr);background:var(--well);border:1px solid var(--line);border-radius:8px;font-family:var(--mono);font-size:12px;line-height:1.55;max-height:520px;overflow:auto;}.src pre{margin:0;padding:10px 12px;white-space:pre;}.src .ln{color:var(--text-muted);text-align:right;user-select:none;border-right:1px solid var(--line);opacity:0.7;}`]}willUpdate(e){e.has(`memory`)&&(this.open=new Xn(`${this.memory}:open`,this),this.source=new Xn(`${this.memory}:source`,this))}render(){let e=this.definition;if(!e)return A`<div class="blank"><span class="ic" aria-hidden="true">⌘</span><b>${D(`No definition`)}</b></div>`;if(e.executor===`python`)return this.python(e);let t=e.plugin_dirs||[],n=e.output_from===`message`?K(e.output||``,D(`from the final message`)):e.output||``,r=e.preserve??[],i=[...e.base_kind?[[D(`Implementation of`),A`<span class="jmono" title=${D(`A kind that other kinds implement (base_kind)`)}>${e.base_kind}</span>`]]:[],[D(`Role`),e.role||D(`none`,{id:`none`})],[t.length>1?D(`Plugin directories`):D(`Plugin directory`),t.length?A`${t.map((e,t)=>A`${t?`, `:``}<span class="jmono" title=${e}>${(e=>{let t=e.split(`/`).filter(Boolean);return t.length>2?`…/${t.slice(-2).join(`/`)}`:e})(e)}</span>`)}`:D(`none`,{id:`none`})],[D(`Parameters`),e.params||D(`none`,{id:`none`})],[D(`Output`,{id:`definition-output`}),e.output_of?A`<span title=${D(`The kind whose output file this task writes (output_of)`)}>${K(n,(a=e.output_of,D(E`output of ${a}`)))}</span>`:n||D(`none`,{id:`none`})],...r.length?[[Xc(),A`<span class="jmono" title=${Zc()}>${r.join(`, `)}</span>`]]:[],...(e.validators||[]).length?[[D(`Other checks`),(e.validators||[]).join(`, `)]]:[],...Array.isArray(e.tools)&&e.tools.length===0?[[D(`Tools`),D(`none`,{id:`none`})]]:[]];var a;let o=Array.isArray(e.declared)?e.declared:[],s=t=>t.part===`agent`&&!!e.role&&t.path.replace(/^.*\//,``)===`${e.role}.md`,c=[...e.files||[]].sort((e,t)=>Number(s(t))-Number(s(e)));return A`<div class="drv-facts" style="margin-bottom:10px">${i.map(([e,t])=>A`<span><i>${e}</i>${t}</span>`)}</div>
706
+ <span class="jmono jdim ct-path" title=${t.path}>${Ff(t.path)}</span>
707
+ <span class="meta ct-f">${r?`${n.size??0} B`:D(`No file`)}</span>`,A`${Fl(t,`input`)}
708
+ ${jl(t)}
709
+ <div class="ct-links">${this.link(e.key,`input`,D(E`${If(e)}: input`))}</div>`)}};U([F({attribute:!1})],Rf.prototype,`outputs`,void 0),U([F()],Rf.prototype,`run`,void 0),U([F({attribute:!1})],Rf.prototype,`journal`,void 0),U([F({attribute:!1})],Rf.prototype,`plan`,void 0),Rf=U([P(`ca-contracts`),O()],Rf);var zf=e=>e.replace(/\$\{?([A-Za-z_]\w*)\}?/g,`<span class="pv">$&</span>`).replace(/\{\{contract\}\}/g,`<span class="pv pc">{{contract}}</span>`);function Bf(e){let t=e.match(/^(TELEMETRY [^\n]*)\n+([\s\S]*)$/);return t?{head:t[1]??``,body:t[2]??``}:{head:``,body:e}}var Vf=new Set([`instructions`,`schema`,`agent`]),Hf=class extends N{constructor(...e){super(...e),this.definition=null,this.memory=`definition`,this.open=new Xn(`definition:open`,this),this.source=new Xn(`definition:source`,this)}static{this.styles=[V,Gr,qr,Il,k` :host{display:block;}.ct-in{display:flex;align-items:center;gap:10px;padding:5px 4px;border-top:1px solid var(--line);}.df{border-top:1px solid var(--line);}.df-hd{padding:6px 2px;display:flex;flex-wrap:wrap;gap:4px 10px;align-items:center;}.df-sum{flex:1 1 16em;min-width:0;display:flex;flex-wrap:wrap;gap:4px 10px;align-items:center;padding:0;background:none;border:0;color:inherit;text-align:start;cursor:pointer;}.df-sum .jmono{min-width:0;overflow-wrap:anywhere;}.df-tog{flex:none;margin-inline-start:auto;}.df-sum::before{content:'▸';color:var(--text-muted);width:10px;flex:none;transition:transform 0.15s;}.df-sum[aria-expanded='true']::before{transform:rotate(90deg);}.py-sig{font-family:var(--mono);font-size:14px;padding:10px 14px;background:var(--well);border:1px solid var(--line);border-radius:8px;overflow-x:auto;white-space:pre;}.py-where{margin:6px 2px 12px;font-family:var(--mono);font-size:11.5px;color:var(--text-muted);overflow-wrap:anywhere;}.py-doc{margin:0 0 12px;padding:8px 12px;border-left:3px solid var(--line2);color:var(--text-2);white-space:pre-wrap;line-height:1.6;}.src{display:grid;grid-template-columns:auto minmax(0,1fr);background:var(--well);border:1px solid var(--line);border-radius:8px;font-family:var(--mono);font-size:12px;line-height:1.55;max-height:520px;overflow:auto;}.src pre{margin:0;padding:10px 12px;white-space:pre;}.src .ln{color:var(--text-muted);text-align:right;user-select:none;border-right:1px solid var(--line);opacity:0.7;}`]}willUpdate(e){e.has(`memory`)&&(this.open=new Xn(`${this.memory}:open`,this),this.source=new Xn(`${this.memory}:source`,this))}render(){let e=this.definition;if(!e)return A`<div class="blank"><span class="ic" aria-hidden="true">⌘</span><b>${D(`No definition`)}</b></div>`;if(e.executor===`python`)return this.python(e);let t=e.plugin_dirs||[],n=e.output_from===`message`?K(e.output||``,D(`from the final message`)):e.output||``,r=e.preserve??[],i=[...e.base_kind?[[D(`Implementation of`),A`<span class="jmono" title=${D(`A kind that other kinds implement (base_kind)`)}>${e.base_kind}</span>`]]:[],[D(`Role`),e.role||D(`none`,{id:`none`})],[t.length>1?D(`Plugin directories`):D(`Plugin directory`),t.length?A`${t.map((e,t)=>A`${t?`, `:``}<span class="jmono" title=${e}>${(e=>{let t=e.split(`/`).filter(Boolean);return t.length>2?`…/${t.slice(-2).join(`/`)}`:e})(e)}</span>`)}`:D(`none`,{id:`none`})],[D(`Parameters`),e.params||D(`none`,{id:`none`})],[D(`Output`,{id:`definition-output`}),e.output_of?A`<span title=${D(`The kind whose output file this task writes (output_of)`)}>${K(n,(a=e.output_of,D(E`output of ${a}`)))}</span>`:n||D(`none`,{id:`none`})],...r.length?[[Zc(),A`<span class="jmono" title=${Qc()}>${r.join(`, `)}</span>`]]:[],...(e.validators||[]).length?[[D(`Other checks`),(e.validators||[]).join(`, `)]]:[],...Array.isArray(e.tools)&&e.tools.length===0?[[D(`Tools`),D(`none`,{id:`none`})]]:[]];var a;let o=Array.isArray(e.declared)?e.declared:[],s=t=>t.part===`agent`&&!!e.role&&t.path.replace(/^.*\//,``)===`${e.role}.md`,c=[...e.files||[]].sort((e,t)=>Number(s(t))-Number(s(e)));return A`<div class="drv-facts" style="margin-bottom:10px">${i.map(([e,t])=>A`<span><i>${e}</i>${t}</span>`)}</div>
710
710
  ${o.length?A`<h4 class="sect-h">${D(`Checked files`)}</h4>
711
711
  ${o.map(e=>A`<div class="ct-in">
712
712
  <span class="ct-chip">${e.io}</span><span class="jmono">${e.path}</span>
@@ -724,7 +724,7 @@ ${t?A`<h4 class="sect-h">${D(`Source`)}</h4>
724
724
  <pre class="ln">${Array.from({length:r},(e,t)=>n+t).join(`
725
725
  `)}</pre>
726
726
  <pre class="hl">${qi(Gi(t.text.replace(/\n$/,``),`python`))}</pre>
727
- </div>`:M}`}file(e,t=!1,n=!1){let r=`${e.part}|${e.path}`,i=/\.md$/i.test(e.path),a=e.part===`instructions`,o=!i||this.source.has(r),s=e.part===`agent`&&n?t:zf.has(e.part),c=this.open.has(r)||s&&!this.open.has(`closed:${r}`);return A`<div class="df">
727
+ </div>`:M}`}file(e,t=!1,n=!1){let r=`${e.part}|${e.path}`,i=/\.md$/i.test(e.path),a=e.part===`instructions`,o=!i||this.source.has(r),s=e.part===`agent`&&n?t:Vf.has(e.part),c=this.open.has(r)||s&&!this.open.has(`closed:${r}`);return A`<div class="df">
728
728
  <div class="df-hd">
729
729
  <button type="button" class="df-sum" aria-expanded=${c?`true`:`false`} @click=${()=>{this.open.set(r,!c),this.open.set(`closed:${r}`,c),this.requestUpdate()}}>
730
730
  <span class="tag">${e.part}</span><span class="jmono">${e.path}</span>
@@ -732,8 +732,8 @@ ${t?A`<span class="ct-chip">${D(`Role of this kind`)}</span>`:M}
732
732
  </button>
733
733
  ${i?A`<button type="button" class="df-tog" @click=${()=>{this.source.set(r,!this.source.has(r)),this.requestUpdate()}}>${D(o?`Show rendered`:`Show source`)}</button>`:M}
734
734
  </div>
735
- ${c?o?A`<pre class="df-text"><code class="hl">${qi(a?(l=e.text,Lf(jr(l))):Gi(e.text,e.path))}</code></pre>`:qi($i(e.text,a?Lf:void 0)):M}
736
- </div>`;var l}};U([F({attribute:!1})],Bf.prototype,`definition`,void 0),U([F()],Bf.prototype,`memory`,void 0),Bf=U([P(`ca-definition`),O()],Bf);var Vf=class extends N{constructor(...e){super(...e),this.run=``,this.live=!1,this.journal=[],this.plan=null,this.selected=null,this.defs=[],this.defsRun=``,this.timer=null}static{this.styles=[V,k` :host{display:block;container-type:inline-size;}.defs{display:grid;grid-template-columns:260px minmax(0,1fr);gap:14px;align-items:start;}.deflist{display:flex;flex-direction:column;gap:6px;}.defitem{padding:9px 12px;border-radius:10px;background:var(--panel);border:1px solid var(--line);cursor:pointer;color:inherit;text-align:start;display:flex;flex-direction:column;gap:2px;}.defitem:hover{border-color:var(--line2);}.defitem.sel{border-color:var(--accent);background:var(--accent-bg);}@container (max-width:720px){.defs{grid-template-columns:minmax(0,1fr);}}`]}disconnectedCallback(){super.disconnectedCallback(),this.clearTimer(),this.defsRun=``}connectedCallback(){super.connectedCallback(),this.run&&this.defsRun!==this.run&&this.load()}willUpdate(e){(e.has(`run`)||e.has(`client`))&&this.run&&this.client&&this.defsRun!==this.run&&(this.defs=[],this.load())}updated(){let e=new Set(this.tasks().filter(e=>!w(e)&&(e.tries.length||e.outcome===`running`)).map(e=>e.kind)).size;this.live&&this.defsRun===this.run&&this.defs.length<e&&!this.timer&&(this.timer=setTimeout(()=>{this.timer=null,this.load()},3e3))}tasks(){return[...S(this.journal,this.plan).outcomes.values()]}clearTimer(){this.timer&&clearTimeout(this.timer),this.timer=null}async load(){if(!this.client||!this.run)return;let e=this.run;this.defsRun=e;let t=[];try{t=await this.client.definitions(e)}catch{t=[]}e===this.run&&(this.defs=t)}render(){let e=this.defs,t=this.tasks(),n=[...new Set(t.filter(e=>w(e)).map(e=>e.kind))].filter(t=>!e.some(e=>e.kind===t));if(!e.length&&!n.length)return A`<div class="blank"><span class="ic" aria-hidden="true">⌘</span><b>${this.live?D(`No definitions yet`):D(`No definitions`)}</b></div>`;let r=this.selected!==null&&n.includes(this.selected)?this.selected:null,i=r?void 0:e.find(e=>e.kind===this.selected)??e.find(e=>e.plugin)??e[0],a=r??i?.kind??n[0]??``,o=e=>{let n=t.filter(t=>t.kind===e),r=n.length,i=n.reduce((e,t)=>e+t.tries.length,0);return Qo(D(r===1?`1 task`:E`${r} tasks`),D(i===1?`1 attempt`:E`${i} attempts`))};return A`<div class="defs">
735
+ ${c?o?A`<pre class="df-text"><code class="hl">${qi(a?(l=e.text,zf(jr(l))):Gi(e.text,e.path))}</code></pre>`:qi($i(e.text,a?zf:void 0)):M}
736
+ </div>`;var l}};U([F({attribute:!1})],Hf.prototype,`definition`,void 0),U([F()],Hf.prototype,`memory`,void 0),Hf=U([P(`ca-definition`),O()],Hf);var Uf=class extends N{constructor(...e){super(...e),this.run=``,this.live=!1,this.journal=[],this.plan=null,this.selected=null,this.defs=[],this.defsRun=``,this.timer=null}static{this.styles=[V,k` :host{display:block;container-type:inline-size;}.defs{display:grid;grid-template-columns:260px minmax(0,1fr);gap:14px;align-items:start;}.deflist{display:flex;flex-direction:column;gap:6px;}.defitem{padding:9px 12px;border-radius:10px;background:var(--panel);border:1px solid var(--line);cursor:pointer;color:inherit;text-align:start;display:flex;flex-direction:column;gap:2px;}.defitem:hover{border-color:var(--line2);}.defitem.sel{border-color:var(--accent);background:var(--accent-bg);}@container (max-width:720px){.defs{grid-template-columns:minmax(0,1fr);}}`]}disconnectedCallback(){super.disconnectedCallback(),this.clearTimer(),this.defsRun=``}connectedCallback(){super.connectedCallback(),this.run&&this.defsRun!==this.run&&this.load()}willUpdate(e){(e.has(`run`)||e.has(`client`))&&this.run&&this.client&&this.defsRun!==this.run&&(this.defs=[],this.load())}updated(){let e=new Set(this.tasks().filter(e=>!w(e)&&(e.tries.length||e.outcome===`running`)).map(e=>e.kind)).size;this.live&&this.defsRun===this.run&&this.defs.length<e&&!this.timer&&(this.timer=setTimeout(()=>{this.timer=null,this.load()},3e3))}tasks(){return[...S(this.journal,this.plan).outcomes.values()]}clearTimer(){this.timer&&clearTimeout(this.timer),this.timer=null}async load(){if(!this.client||!this.run)return;let e=this.run;this.defsRun=e;let t=[];try{t=await this.client.definitions(e)}catch{t=[]}e===this.run&&(this.defs=t)}render(){let e=this.defs,t=this.tasks(),n=[...new Set(t.filter(e=>w(e)).map(e=>e.kind))].filter(t=>!e.some(e=>e.kind===t));if(!e.length&&!n.length)return A`<div class="blank"><span class="ic" aria-hidden="true">⌘</span><b>${this.live?D(`No definitions yet`):D(`No definitions`)}</b></div>`;let r=this.selected!==null&&n.includes(this.selected)?this.selected:null,i=r?void 0:e.find(e=>e.kind===this.selected)??e.find(e=>e.plugin)??e[0],a=r??i?.kind??n[0]??``,o=e=>{let n=t.filter(t=>t.kind===e),r=n.length,i=n.reduce((e,t)=>e+t.tries.length,0);return Qo(D(r===1?`1 task`:E`${r} tasks`),D(i===1?`1 attempt`:E`${i} attempts`))};return A`<div class="defs">
737
737
  <div class="deflist">
738
738
  ${H(e,e=>e.kind,e=>{return A`<button type="button" class="defitem ${e.kind===a?`sel`:``}" aria-current=${e.kind===a?`true`:M} @click=${()=>$(this,`ca-navigate`,{def:e.kind})}>
739
739
  <b class="jmono">${e.kind}</b>
@@ -751,7 +751,7 @@ ${i.kind}<span class="r">${i.executor===`python`?D(`Python task`):i.plugin?D(E`P
751
751
  <ca-definition .definition=${i} memory="definition:${i.kind}"></ca-definition>`:A`<h3>${a}<span class="r">${D(`Python task`)}</span></h3>
752
752
  <ca-definition .definition=${null}></ca-definition>`}
753
753
  </section>
754
- </div>`}};U([F({attribute:!1})],Vf.prototype,`client`,void 0),U([F()],Vf.prototype,`run`,void 0),U([F({type:Boolean})],Vf.prototype,`live`,void 0),U([F({attribute:!1})],Vf.prototype,`journal`,void 0),U([F({attribute:!1})],Vf.prototype,`plan`,void 0),U([F({attribute:!1})],Vf.prototype,`selected`,void 0),U([I()],Vf.prototype,`defs`,void 0),Vf=U([P(`ca-definitions`),O()],Vf);var Hf=class extends N{constructor(...e){super(...e),this.procs=null,this.unresponsive=!1,this.exported=!1}static{this.styles=[V,k` :host{display:block;}.cmd{word-break:break-all;}`]}open(e){$(this,`ca-open-task`,{key:e})}render(){let e=this.procs;if(!e?.alive){let e=this.exported?kc():this.unresponsive?oc():D(`not running`);return A`<div class="blank"><span class="ic" aria-hidden="true">⚙</span><b>${K(D(`No processes`),e)}</b></div>`}let t=e.python_tasks;return A`<div class="g12">
754
+ </div>`}};U([F({attribute:!1})],Uf.prototype,`client`,void 0),U([F()],Uf.prototype,`run`,void 0),U([F({type:Boolean})],Uf.prototype,`live`,void 0),U([F({attribute:!1})],Uf.prototype,`journal`,void 0),U([F({attribute:!1})],Uf.prototype,`plan`,void 0),U([F({attribute:!1})],Uf.prototype,`selected`,void 0),U([I()],Uf.prototype,`defs`,void 0),Uf=U([P(`ca-definitions`),O()],Uf);var Wf=class extends N{constructor(...e){super(...e),this.procs=null,this.unresponsive=!1,this.exported=!1}static{this.styles=[V,k` :host{display:block;}.cmd{word-break:break-all;}`]}open(e){$(this,`ca-open-task`,{key:e})}render(){let e=this.procs;if(!e?.alive){let e=this.exported?Ac():this.unresponsive?sc():D(`not running`);return A`<div class="blank"><span class="ic" aria-hidden="true">⚙</span><b>${K(D(`No processes`),e)}</b></div>`}let t=e.python_tasks;return A`<div class="g12">
755
755
  <section class="panel c12">
756
756
  <h3 title=${D(`One per task (Backend.run)`)}>${D(`Agent sessions running`)} <span class="r">${e.launches.length}</span></h3>
757
757
  ${e.launches.length?H(e.launches,e=>e.key,e=>A`<div class="fl" @click=${t=>!t.target.closest(`button`)&&this.open(e.key)}>
@@ -769,37 +769,38 @@ ${H(t,e=>e.key,e=>A`<div class="fl">
769
769
  </div>`)}
770
770
  </section>`:M}
771
771
  <section class="panel c12"><h3>${D(`Process tree`)}</h3><ca-proc-tree .procs=${e}></ca-proc-tree></section>
772
- </div>`}};U([F({attribute:!1})],Hf.prototype,`procs`,void 0),U([F({type:Boolean})],Hf.prototype,`unresponsive`,void 0),U([F({type:Boolean})],Hf.prototype,`exported`,void 0),Hf=U([P(`ca-procs-view`),O()],Hf),z(`cae-column-chart`,ja),z(`cae-line-chart`,Ma),z(`cae-heatmap`,Ia),z(`cae-state-grid`,Wa),z(`cae-bar-chart`,Ga),z(`cae-code`,Yi),z(`cae-tree`,ca);var Uf=[`failed`,`attention`,`done`,`running`,`muted`,`neutral`],Wf=e=>typeof e._tone==`string`&&Uf.includes(e._tone)?e._tone:void 0,Gf=new Set([`usd`,`pct`,`duration`,`tokens`,`number`]),Kf=e=>typeof e==`string`?e:JSON.stringify(e),qf=[Kr,k` caption{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;}tr{column-gap:12px;padding:6px 12px;border-bottom:1px solid var(--line);font-size:12px;min-width:560px;}th,td{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}thead tr{color:var(--text-muted);font-size:11px;}tbody [data-align='end']{font-variant-numeric:tabular-nums;}tbody tr[data-tone='failed'],tbody tr[data-tone='attention']{box-shadow:inset 2px 0 0 var(--tone);}td a,th a{color:var(--accent);text-decoration:none;}td a:hover,th a:hover,td a:focus-visible,th a:focus-visible{text-decoration:underline;}`],Jf=class extends N{constructor(...e){super(...e),this.baseUrl=``,this.label=``,this.sorts=new Map,this.picks=new Map}static{this.styles=[V,Gr,k` :host{display:block;}.note{font-size:var(--font-size-sm);color:var(--text-2);line-height:1.55;max-width:78ch;}.note>:first-child{margin-top:0;}.note>:last-child{margin-bottom:0;}.note[data-tone]{padding-left:10px;border-left:3px solid var(--line2);}.note[data-tone='failed']{border-left-color:var(--status-failed);}.note[data-tone='attention']{border-left-color:var(--status-attention);}.note[data-tone='done']{border-left-color:var(--status-done);}.note[data-tone='running']{border-left-color:var(--status-running);}.block + .block{margin-top:18px;}h4{margin:0 0 8px;font-size:var(--font-size-sm);font-weight:600;color:var(--text-2);}details>summary{cursor:pointer;margin-bottom:8px;font-size:var(--font-size-sm);font-weight:600;color:var(--text-2);}details:not([open])>summary{margin-bottom:0;}.block[data-anchor]{scroll-margin-top:12px;}.block[data-anchor]:focus{outline:none;}.pair{display:grid;grid-template-columns:minmax(180px,30%) minmax(0,1fr);gap:12px;align-items:start;}.pair>.tree{border:1px solid var(--line);border-radius:var(--radius-md);max-height:70vh;overflow:auto;}.pane{min-width:0;}@media (max-width:720px){.pair{grid-template-columns:minmax(0,1fr);}.pair>.tree{max-height:40vh;}}.embed{display:block;width:100%;height:calc(100dvh - 160px);min-height:320px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface);}`]}render(){let e=me(this.body);return e?this.draw(e,`0`):A`<cae-json-tree .value=${this.body??{}}></cae-json-tree>`}draw(e,t){let n=this.content(e,t),r=e.anchor||M;return e.title?e.collapsed?A`<details class="block" data-anchor=${r} tabindex=${e.anchor?-1:M}><summary>${e.title}</summary>${n}</details>`:A`<div class="block" data-anchor=${r} tabindex=${e.anchor?-1:M}><h4>${e.title}</h4>${n}</div>`:A`<div class="block" data-anchor=${r} tabindex=${e.anchor?-1:M}>${n}</div>`}code(e,t){return A`<cae-code .code=${e.text} .language=${e.language??``} .start=${e.start??1} .highlight=${e.highlight??[]} .path=${e.path??t??``} .label=${e.title??e.path??t??``} ?wrap=${!!e.wrap} .strings=${{copy:D(`Copy`),copied:D(`Copied`),wrap:D(`Wrap lines`),empty:D(`No text`),cut:(e,t)=>D(E`First ${e.toLocaleString(An())} of ${t.toLocaleString(An())} lines`)}}></cae-code>`}embed(e){let t=new URL(this.baseUrl?this.baseUrl.replace(/\/?$/,`/`):`./`,document.baseURI),n=new URL(e.url,t);return n.searchParams.set(`theme`,function(e){for(let t=e;t;t=t.parentNode??(t instanceof ShadowRoot?t.host:null)){let e=t instanceof Element?t.getAttribute(`data-ca-theme`):null;if(e)return e.includes(`light`)?`light`:`dark`}return matchMedia(`(prefers-color-scheme: light)`).matches?`light`:`dark`}(this)),A`<iframe class="embed" src=${n.href} title=${e.title||this.label} style=${e.height?`height:${e.height}px`:M}></iframe>`}tree(e,t){let{items:n,nodes:r,first:i}=function(e){let t=new Map,n=null,r=(e,i)=>e.map(e=>{let a=i?`${i}/${e.name}`:e.name,o=e.id??a;return t.set(o,e),n===null&&e.code&&(n=o),{id:o,name:e.name,icon:e.icon??null,badge:e.badge??null,tone:e.tone??null,open:e.open??!0,selectable:!!e.code||!!e.link,children:e.children?.length?r(e.children,a):null}});return{items:r(e.nodes,``),nodes:t,first:e.selected??n}}(e),a=this.picks.get(t),o=a!==void 0&&r.has(a)?a:i,s=o?r.get(o):void 0,c=[...r.values()].some(e=>e.code),l=A`<cae-tree class="tree" .items=${n} .selected=${s?.code?o:null} .label=${e.title??``} .strings=${{empty:D(`No items`)}} @cae-select=${e=>this.choose(t,e.detail.id,r)}></cae-tree>`;return c?A`<div class="pair">
772
+ </div>`}};U([F({attribute:!1})],Wf.prototype,`procs`,void 0),U([F({type:Boolean})],Wf.prototype,`unresponsive`,void 0),U([F({type:Boolean})],Wf.prototype,`exported`,void 0),Wf=U([P(`ca-procs-view`),O()],Wf),z(`cae-column-chart`,ja),z(`cae-line-chart`,Ma),z(`cae-heatmap`,Ia),z(`cae-state-grid`,Wa),z(`cae-bar-chart`,Ga),z(`cae-code`,Yi),z(`cae-tree`,ca);var Gf=[`failed`,`attention`,`done`,`running`,`muted`,`neutral`],Kf=e=>typeof e._tone==`string`&&Gf.includes(e._tone)?e._tone:void 0,qf=new Set([`usd`,`pct`,`duration`,`tokens`,`number`]),Jf=e=>typeof e==`string`?e:JSON.stringify(e),Yf=[Kr,k` caption{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;}tr{column-gap:12px;padding:6px 12px;border-bottom:1px solid var(--line);font-size:12px;min-width:560px;}th,td{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}thead tr{color:var(--text-muted);font-size:11px;}tbody [data-align='end']{font-variant-numeric:tabular-nums;}tbody tr[data-tone='failed'],tbody tr[data-tone='attention']{box-shadow:inset 2px 0 0 var(--tone);}td a,th a{color:var(--accent);text-decoration:none;}td a:hover,th a:hover,td a:focus-visible,th a:focus-visible{text-decoration:underline;}`],Xf=class extends N{constructor(...e){super(...e),this.baseUrl=``,this.label=``,this.sorts=new Map,this.picks=new Map}static{this.styles=[V,Gr,k` :host{display:block;}.note{font-size:var(--font-size-sm);color:var(--text-2);line-height:1.55;max-width:78ch;}.note>:first-child{margin-top:0;}.note>:last-child{margin-bottom:0;}.note[data-tone]{padding-left:10px;border-left:3px solid var(--line2);}.note[data-tone='failed']{border-left-color:var(--status-failed);}.note[data-tone='attention']{border-left-color:var(--status-attention);}.note[data-tone='done']{border-left-color:var(--status-done);}.note[data-tone='running']{border-left-color:var(--status-running);}.block + .block{margin-top:18px;}h4{margin:0 0 8px;font-size:var(--font-size-sm);font-weight:600;color:var(--text-2);}details>summary{cursor:pointer;margin-bottom:8px;font-size:var(--font-size-sm);font-weight:600;color:var(--text-2);}details:not([open])>summary{margin-bottom:0;}.block[data-anchor]{scroll-margin-top:12px;}.block[data-anchor]:focus{outline:none;}.pair{display:grid;grid-template-columns:minmax(180px,30%) minmax(0,1fr);gap:12px;align-items:start;}.pair>.tree{border:1px solid var(--line);border-radius:var(--radius-md);max-height:70vh;overflow:auto;}.pane{min-width:0;}@media (max-width:720px){.pair{grid-template-columns:minmax(0,1fr);}.pair>.tree{max-height:40vh;}}.embed{display:block;width:100%;height:calc(100dvh - 160px);min-height:320px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface);}`]}render(){let e=me(this.body);return e?this.draw(e,`0`):A`<cae-json-tree .value=${this.body??{}}></cae-json-tree>`}draw(e,t){let n=this.content(e,t),r=e.anchor||M;return e.title?e.collapsed?A`<details class="block" data-anchor=${r} tabindex=${e.anchor?-1:M}><summary>${e.title}</summary>${n}</details>`:A`<div class="block" data-anchor=${r} tabindex=${e.anchor?-1:M}><h4>${e.title}</h4>${n}</div>`:A`<div class="block" data-anchor=${r} tabindex=${e.anchor?-1:M}>${n}</div>`}code(e,t){return A`<cae-code .code=${e.text} .language=${e.language??``} .start=${e.start??1} .highlight=${e.highlight??[]} .path=${e.path??t??``} .label=${e.title??e.path??t??``} ?wrap=${!!e.wrap} .strings=${{copy:D(`Copy`),copied:D(`Copied`),wrap:D(`Wrap lines`),empty:D(`No text`),cut:(e,t)=>D(E`First ${e.toLocaleString(An())} of ${t.toLocaleString(An())} lines`)}}></cae-code>`}embed(e){let t=new URL(this.baseUrl?this.baseUrl.replace(/\/?$/,`/`):`./`,document.baseURI),n=new URL(e.url,t);return n.searchParams.set(`theme`,function(e){for(let t=e;t;t=t.parentNode??(t instanceof ShadowRoot?t.host:null)){let e=t instanceof Element?t.getAttribute(`data-ca-theme`):null;if(e)return e.includes(`light`)?`light`:`dark`}return matchMedia(`(prefers-color-scheme: light)`).matches?`light`:`dark`}(this)),A`<iframe class="embed" src=${n.href} title=${e.title||this.label} style=${e.height?`height:${e.height}px`:M}></iframe>`}tree(e,t){let{items:n,nodes:r,first:i}=function(e){let t=new Map,n=null,r=(e,i)=>e.map(e=>{let a=i?`${i}/${e.name}`:e.name,o=e.id??a;return t.set(o,e),n===null&&e.code&&(n=o),{id:o,name:e.name,icon:e.icon??null,badge:e.badge??null,tone:e.tone??null,open:e.open??!0,selectable:!!e.code||!!e.link,children:e.children?.length?r(e.children,a):null}});return{items:r(e.nodes,``),nodes:t,first:e.selected??n}}(e),a=this.picks.get(t),o=a!==void 0&&r.has(a)?a:i,s=o?r.get(o):void 0,c=[...r.values()].some(e=>e.code),l=A`<cae-tree class="tree" .items=${n} .selected=${s?.code?o:null} .label=${e.title??``} .strings=${{empty:D(`No items`)}} @cae-select=${e=>this.choose(t,e.detail.id,r)}></cae-tree>`;return c?A`<div class="pair">
773
773
  ${l}
774
774
  <div class="pane">${s?.code?this.code(s.code,o??``):A`<div class="meta">${D(`No selection`)}</div>`}</div>
775
- </div>`:l}choose(e,t,n){let r=t===null?void 0:n.get(t);r&&t!==null&&(r.code?this.picks=new Map(this.picks).set(e,t):r.link&&this.follow(r.link))}follow(e){if(e.anchor){let t=this.renderRoot.querySelector(`[data-anchor="${CSS.escape(e.anchor)}"]`);t?.scrollIntoView?.({block:`start`}),t?.focus({preventScroll:!0});return}let t=e.run?{run:e.run}:{};e.panel?$(this,`ca-navigate`,{page:``,...t,tab:`panel:${e.panel}`}):e.task&&$(this,`ca-navigate`,{page:``,...t,tab:`stream`,key:e.task,view:`transcript`,round:null})}content(e,t){let n={empty:D(`No values`),showTable:D(`Show table`),showChart:D(`Show chart`),label:D(`Label`),other:D(`Other`),total:D(`Total`),none:`—`,scale:(e,t)=>D(E`${e} to ${t}`)};switch(e.type){case`blocks`:return A`${e.blocks.map((e,n)=>{let r=me(e);return r?this.draw(r,`${t}.${n}`):A`<div class="block"><cae-json-tree .value=${e}></cae-json-tree></div>`})}`;case`tiles`:return A`<cae-stat-tiles .tiles=${r=e.tiles,r.map(e=>({id:e.id,label:e.label,value:e.value,tone:e.tone??void 0,tip:e.tip??void 0,sub:e.sub??[]}))} .bump=${!1}></cae-stat-tiles>`;case`table`:return this.table(e,t);case`columns`:return A`<cae-column-chart .label=${e.title??``} .x=${e.x} .series=${e.series} ?stacked=${!!e.stacked} .format=${wc(e.unit)} .strings=${n}></cae-column-chart>`;case`lines`:return A`<cae-line-chart .label=${e.title??``} .x=${e.x} .series=${e.series} .format=${wc(e.unit)} .strings=${n}></cae-line-chart>`;case`heatmap`:return A`<cae-heatmap .label=${e.title??``} .x=${e.x} .y=${e.y} .values=${e.values} .format=${wc(e.unit)} .strings=${n}></cae-heatmap>`;case`hbars`:return A`<cae-bar-chart .label=${e.title??``} .bars=${e.bars.map(e=>({label:e.label,value:e.value,tone:e.tone??void 0}))} .format=${wc(e.unit)} .strings=${n}></cae-bar-chart>`;case`status_grid`:return A`<cae-state-grid .label=${e.title??``} .x=${e.x} .y=${e.y} .cells=${e.cells} .strings=${n}></cae-state-grid>`;case`note`:return A`<div class="note" data-tone=${e.tone&&e.tone!==`neutral`?e.tone:M}>${qi(Qi(e.text))}</div>`;case`code`:return this.code(e);case`tree`:return this.tree(e,t);case`embed`:return this.embed(e);default:return A`${M}`}var r}table(e,t){let n=(s=e).columns.map((e,t)=>{let n=e.format?Gf.has(e.format):s.rows.some(t=>typeof t[e.id]==`number`),r=e.bar?Math.max(0,...s.rows.map(t=>Number(t[e.id])||0)):0;return{id:e.id,header:e.label,tip:e.tip??void 0,align:e.align??(n?`end`:`start`),rowHeader:t===0,compare:(t,n)=>function(e,t){let n=e=>e==null||e===``;return n(e)||n(t)?n(e)===n(t)?0:n(e)?1:-1:typeof e==`number`&&typeof t==`number`?e-t:Kf(e).localeCompare(Kf(t))}(t[e.id],n[e.id]),text:t=>Tc(t[e.id],e.format),cell:t=>{let n=t[e.id],i=Tc(n,e.format),a=e.link?function(e){if(typeof e!=`string`||!/^https?:\/\//i.test(e.trim()))return null;try{let t=new URL(e.trim());return t.protocol===`http:`||t.protocol===`https:`?t.href:null}catch{return null}}(t[e.link]):null;return a?A`<a href=${a} target="_blank" rel="noopener noreferrer">${i}</a>`:e.bar&&typeof n==`number`?A`${i}<span class="jdur" aria-hidden="true"><i style="width: ${r>0?100*Math.max(0,n)/r:0}%"></i></span>`:i}}}),r=e.rows,i=new Map(r.map((e,t)=>[e,String(t)])),a=this.sorts.get(t)??null,o=a?function(e,t,n){let r=n&&t.find(e=>e.id===n.id);if(!n||!r)return[...e];let i=n.direction===`desc`?-1:1,{compare:a,text:o}=r,s=(e,t)=>{let n=o?o(e):r.cell(e,t);return typeof n==`number`||typeof n==`string`?n:``};return e.map((e,t)=>({r:e,i:t,v:a?0:s(e,t)})).sort((e,t)=>i*((e,t)=>a?a(e.r,t.r):typeof e.v==`number`&&typeof t.v==`number`?e.v-t.v:String(e.v).localeCompare(String(t.v),void 0,{numeric:!0}))(e,t)||e.i-t.i).map(e=>e.r)}(r,n,a):r;var s;return A`<cae-data-table .columns=${n} .rows=${o} .rowKey=${e=>i.get(e)??``} .rowTone=${Wf} .activatable=${!1} .sort=${a} .cellStyles=${qf} .caption=${e.title??``} .strings=${fc(D(`No rows`))} @cae-sort=${e=>this.sorts=new Map(this.sorts).set(t,e.detail)} ></cae-data-table>`}};U([F({attribute:!1})],Jf.prototype,`body`,void 0),U([F({attribute:`base-url`})],Jf.prototype,`baseUrl`,void 0),U([F()],Jf.prototype,`label`,void 0),U([I()],Jf.prototype,`sorts`,void 0),U([I()],Jf.prototype,`picks`,void 0),Jf=U([P(`ca-panel-body`),O()],Jf);var Yf=class extends N{constructor(...e){super(...e),this.name=``,this.baseUrl=``}static{this.styles=[V,k` :host{display:block;}.tab-ic{opacity:1;margin-right:6px;font-size:12px;}.desc{margin:-4px 0 12px;}`]}render(){if(this.data===void 0)return this.panel?A`<div class="blank"><span class="ic" aria-hidden="true">…</span>${D(`Loading…`)}</div>`:A`<div class="blank"><span class="ic" aria-hidden="true">▤</span>${D(E`No custom view named ${this.name}`)}</div>`;let e=this.panel;return A`<section class="panel">
775
+ </div>`:l}choose(e,t,n){let r=t===null?void 0:n.get(t);r&&t!==null&&(r.code?this.picks=new Map(this.picks).set(e,t):r.link&&this.follow(r.link))}follow(e){if(e.anchor){let t=this.renderRoot.querySelector(`[data-anchor="${CSS.escape(e.anchor)}"]`);t?.scrollIntoView?.({block:`start`}),t?.focus({preventScroll:!0});return}let t=e.run?{run:e.run}:{};e.panel?$(this,`ca-navigate`,{page:``,...t,tab:`panel:${e.panel}`}):e.task&&$(this,`ca-navigate`,{page:``,...t,tab:`stream`,key:e.task,view:`transcript`,round:null})}content(e,t){let n={empty:D(`No values`),showTable:D(`Show table`),showChart:D(`Show chart`),label:D(`Label`),other:D(`Other`),total:D(`Total`),none:`—`,scale:(e,t)=>D(E`${e} to ${t}`)};switch(e.type){case`blocks`:return A`${e.blocks.map((e,n)=>{let r=me(e);return r?this.draw(r,`${t}.${n}`):A`<div class="block"><cae-json-tree .value=${e}></cae-json-tree></div>`})}`;case`tiles`:return A`<cae-stat-tiles .tiles=${r=e.tiles,r.map(e=>({id:e.id,label:e.label,value:e.value,tone:e.tone??void 0,tip:e.tip??void 0,sub:e.sub??[]}))} .bump=${!1}></cae-stat-tiles>`;case`table`:return this.table(e,t);case`columns`:return A`<cae-column-chart .label=${e.title??``} .x=${e.x} .series=${e.series} ?stacked=${!!e.stacked} .format=${Tc(e.unit)} .strings=${n}></cae-column-chart>`;case`lines`:return A`<cae-line-chart .label=${e.title??``} .x=${e.x} .series=${e.series} .format=${Tc(e.unit)} .strings=${n}></cae-line-chart>`;case`heatmap`:return A`<cae-heatmap .label=${e.title??``} .x=${e.x} .y=${e.y} .values=${e.values} .format=${Tc(e.unit)} .strings=${n}></cae-heatmap>`;case`hbars`:return A`<cae-bar-chart .label=${e.title??``} .bars=${e.bars.map(e=>({label:e.label,value:e.value,tone:e.tone??void 0}))} .format=${Tc(e.unit)} .strings=${n}></cae-bar-chart>`;case`status_grid`:return A`<cae-state-grid .label=${e.title??``} .x=${e.x} .y=${e.y} .cells=${e.cells} .strings=${n}></cae-state-grid>`;case`note`:return A`<div class="note" data-tone=${e.tone&&e.tone!==`neutral`?e.tone:M}>${qi(Qi(e.text))}</div>`;case`code`:return this.code(e);case`tree`:return this.tree(e,t);case`embed`:return this.embed(e);default:return A`${M}`}var r}table(e,t){let n=(s=e).columns.map((e,t)=>{let n=e.format?qf.has(e.format):s.rows.some(t=>typeof t[e.id]==`number`),r=e.bar?Math.max(0,...s.rows.map(t=>Number(t[e.id])||0)):0;return{id:e.id,header:e.label,tip:e.tip??void 0,align:e.align??(n?`end`:`start`),rowHeader:t===0,compare:(t,n)=>function(e,t){let n=e=>e==null||e===``;return n(e)||n(t)?n(e)===n(t)?0:n(e)?1:-1:typeof e==`number`&&typeof t==`number`?e-t:Jf(e).localeCompare(Jf(t))}(t[e.id],n[e.id]),text:t=>Ec(t[e.id],e.format),cell:t=>{let n=t[e.id],i=Ec(n,e.format),a=e.link?function(e){if(typeof e!=`string`||!/^https?:\/\//i.test(e.trim()))return null;try{let t=new URL(e.trim());return t.protocol===`http:`||t.protocol===`https:`?t.href:null}catch{return null}}(t[e.link]):null;return a?A`<a href=${a} target="_blank" rel="noopener noreferrer">${i}</a>`:e.bar&&typeof n==`number`?A`${i}<span class="jdur" aria-hidden="true"><i style="width: ${r>0?100*Math.max(0,n)/r:0}%"></i></span>`:i}}}),r=e.rows,i=new Map(r.map((e,t)=>[e,String(t)])),a=this.sorts.get(t)??null,o=a?function(e,t,n){let r=n&&t.find(e=>e.id===n.id);if(!n||!r)return[...e];let i=n.direction===`desc`?-1:1,{compare:a,text:o}=r,s=(e,t)=>{let n=o?o(e):r.cell(e,t);return typeof n==`number`||typeof n==`string`?n:``};return e.map((e,t)=>({r:e,i:t,v:a?0:s(e,t)})).sort((e,t)=>i*((e,t)=>a?a(e.r,t.r):typeof e.v==`number`&&typeof t.v==`number`?e.v-t.v:String(e.v).localeCompare(String(t.v),void 0,{numeric:!0}))(e,t)||e.i-t.i).map(e=>e.r)}(r,n,a):r;var s;return A`<cae-data-table .columns=${n} .rows=${o} .rowKey=${e=>i.get(e)??``} .rowTone=${Kf} .activatable=${!1} .sort=${a} .cellStyles=${Yf} .caption=${e.title??``} .strings=${pc(D(`No rows`))} @cae-sort=${e=>this.sorts=new Map(this.sorts).set(t,e.detail)} ></cae-data-table>`}};U([F({attribute:!1})],Xf.prototype,`body`,void 0),U([F({attribute:`base-url`})],Xf.prototype,`baseUrl`,void 0),U([F()],Xf.prototype,`label`,void 0),U([I()],Xf.prototype,`sorts`,void 0),U([I()],Xf.prototype,`picks`,void 0),Xf=U([P(`ca-panel-body`),O()],Xf);var Zf=class extends N{constructor(...e){super(...e),this.name=``,this.baseUrl=``}static{this.styles=[V,k` :host{display:block;}.tab-ic{opacity:1;margin-right:6px;font-size:12px;}.desc{margin:-4px 0 12px;}`]}render(){if(this.data===void 0)return this.panel?A`<div class="blank"><span class="ic" aria-hidden="true">…</span>${D(`Loading…`)}</div>`:A`<div class="blank"><span class="ic" aria-hidden="true">▤</span>${D(E`No custom view named ${this.name}`)}</div>`;let e=this.panel;return A`<section class="panel">
776
776
  <h3><span class="tab-ic" aria-hidden="true">${e?.icon||`▤`}</span>${e?.title||this.name}
777
777
  <span class="r">${D(`Custom view`)}</span></h3>
778
778
  ${e?.description?A`<div class="meta desc">${e.description}</div>`:M}
779
779
  ${me(this.data)?A`<ca-panel-body .body=${this.data} base-url=${this.baseUrl} label=${e?.title||this.name}></ca-panel-body>`:A`<cae-json-tree .value=${this.data}></cae-json-tree>`}
780
- </section>`}};U([F()],Yf.prototype,`name`,void 0),U([F({attribute:!1})],Yf.prototype,`panel`,void 0),U([F({attribute:!1})],Yf.prototype,`data`,void 0),U([F({attribute:`base-url`})],Yf.prototype,`baseUrl`,void 0),Yf=U([P(`ca-panel-view`),O()],Yf);var Xf=class{constructor(e){this.host=e,this.value=null,this.error=null,this.token=0}load(e,t,n){let r=++this.token;this.value=null,this.error=null,t&&n&&e&&this.fetch(r,e,t,n)}async fetch(e,t,n,r){let i,a=null;try{i=await t.task(n,r)}catch(e){i=(e=>({key:e,rows:[],launches:[],definition:null,io:{params:{},inputs:[],outputs:[],executor:`agent`,upstream:[],downstream:[]},stream:null}))(r),a=e}e===this.token&&(this.value=i,this.error=a,this.host.requestUpdate())}};function Zf(e){let t=[],n=!1;for(let r of(e||``).split(`
781
- `))/^Errors:\s*$/.test(r)?n=!0:n&&r.startsWith(`- `)?t.push(r.slice(2)):n&&r.trim()&&!r.startsWith(`- `)&&(n=!1);return t}z(`cae-transcript`,Jo);var Qf=e=>!!e&&(e.prompt||``).startsWith(`The output file(s) you wrote do not pass their checks.`);function $f(e,t){let n=new Map(t.filter(e=>e.stop!==`invalid_input`&&e.stop!==`skipped`).map((e,t)=>[t+1,e])),r=[],i=0,a=0,o=0;return e.forEach((e,t)=>{let s=n.get(i)?.hops?.length??1;t>0&&Qf(e)?a++:t>0&&o+1<s?(o++,a=0):(i++,o=0,a=0);let c=n.get(i)?.hops?.[o],l=c?.model||c?.route||``,u=a?`fixup`:o?`switch`:`try`;r.push({kind:u,tryNo:i,fixupNo:a,hopNo:o,model:l,result:null,rejectedWith:[],switchedStop:``,switchedTo:``,row:null})}),r.forEach((t,i)=>{let a=r[i+1];if(a&&a.tryNo===t.tryNo&&a.hopNo!==t.hopNo)return t.result=`switched`,t.switchedStop=n.get(t.tryNo)?.hops?.[t.hopNo]?.stop??``,void(t.switchedTo=a.model);if(a&&a.tryNo===t.tryNo)return t.result=`rejected`,void(t.rejectedWith=Zf(e[i+1]?.prompt));let o=n.get(t.tryNo)??null;t.row=o,t.result=o?o.ok?`ok`:`failed`:null}),r}var ep=e=>/\[([\w.-]+)\]/.exec(e)?.[1]??``;function tp(e){let t=/\[([\w.-]+)\]\s*(.*)$/.exec(e);return t?`${t[1]}: ${t[2]}`:e}function np(e,t,n=_s(e.tryNo-1)){return t>1?e.fixupNo?K(n,D(E`correction ${e.fixupNo}`)):e.hopNo?K(n,D(`model switch`)):n:e.fixupNo?D(E`Correction ${e.fixupNo}`):e.hopNo?D(`Model switch`):_s(0)}function rp(e){let t=e.model||D(`model`);return e.switchedTo?D(E`${t}: ${Q(e.switchedStop)} → ${e.switchedTo}`):D(E`${t}: ${Q(e.switchedStop)} → next model`)}var ip={claude:`Claude Code`,omp:`omp`,codex:`Codex`,opencode:`opencode`,gemini:`Gemini CLI`};function ap(e){let t=String(e||``).split(`/`).pop()??``;return ip[t]??t}var op=(e,t)=>{let n=e.indexOf(t);return n>=0?e[n+1]??``:``};function sp(e){let t=e.argv,n=/TELEMETRY [^\n]*role=([\w:-]+)/.exec(e.prompt||``)?.[1];return{agent:ap(t[0]),model:op(t,`--model`)||op(t,`-m`),role:n&&n!==`-`?n:``}}function cp(e){if(!e)return[];let t=[];return e.agent&&t.push({label:D(`coding agent`),value:e.agent,tip:D(`The CLI that ran the task (claude, omp)`)}),e.model&&t.push({label:D(`model`),value:e.model,tip:D(`The model the agent session ran on`),look:`mono`}),e.role&&t.push({label:D(`role`),value:e.role,tip:D(`The agent definition the coding agent ran as (agents/<role>.md)`),look:`quiet`}),t}function lp(e){let t=e.prompt||``,n=e.prompt_truncated||0;return[{id:`cmd`,code:!0,summary:D(`Command line`),text:e.argv.join(` `)},{id:`prompt`,summary:D(n?E`Prompt (${t.length} characters; ${n} characters not saved)`:E`Prompt (${t.length} characters)`),text:t+(n?`\n\n${D(E`(${n} characters not saved)`)}`:``)}]}function up(e,t){if(e.result===`rejected`)return{tone:`attention`,title:D(`Output failed checks`),list:e.rejectedWith.map(e=>T(e,t)),note:D(`Sent in the correction prompt`)};if(e.result===`switched`)return{tone:`failed`,title:rp(e)};if(e.result===`failed`&&e.row){let n=T(e.row.reason,t)||Q(e.row.stop);return{tone:`failed`,title:D(E`Attempt ${e.tryNo} failed: ${n}`)}}}function dp(e,t,n){let r=t[t.length-1]?.tryNo??1,i=vs(n.rows.filter(f)),a=e.rounds.length-1;return e.rounds.map((e,o)=>{let s=t[o],[c,l,u]=s?function(e,t){switch(e.result){case`ok`:return[`✓`,D(`passed`),D(`Output passed checks`)];case`rejected`:return[`✕`,D(`failed checks`),D(`Output failed checks`)];case`switched`:return[`✕`,Q(e.switchedStop),rp(e)];case`failed`:return[`✕`,D(`failed`),T(e.row?.reason,t)||Q(e.row?.stop)];default:return[``,``,``]}}(s,n.run):[``,``,``],d=e.who?.model;return{id:e.id,title:s?np(s,r,i[s.tryNo-1]):String(o+1),facts:d?[d.replace(/^claude-/,``)]:[],verdict:c?{tone:c===`✓`?`done`:`failed`,text:l,tip:u}:void 0,active:o===a&&n.active,tags:e.launch?cp(e.who):[],details:e.launch?lp(e.launch):[],items:e.items.map(e=>e.type===`event`?{...e,title:D(`API request sent again`)}:e),footer:s&&up(s,n.run)}})}var fp=/\{\s*"title"\s*:\s*"((?:[^"\\]|\\.)*)"\s*,\s*"url"\s*:\s*"(https?:\/\/[^"\s]+)"/g,pp=/^\s*\[\d+\]\s+(.+)\n\s*(https?:\/\/\S+)/gm,mp=/https?:\/\/[^\s"'<>)\]]+/g;function hp(e){let t=e??``,n=[],r=new Set,i=(e,t)=>{r.has(t)||n.length>=20||(r.add(t),n.push({title:e.trim()||t,url:t}))};for(let e of t.matchAll(fp)){let t=e[1]??``;try{t=JSON.parse(`"${t}"`)}catch{}i(t,e[2]??``)}if(!n.length)for(let e of t.matchAll(pp))i(e[1]??``,e[2]??``);if(!n.length)for(let e of t.matchAll(mp))i(``,e[0].replace(/[.,;:!?]+$/,``));return n}var gp=()=>({rounds:[],tools:new Map,next:0}),_p=/session init:.*?model=([\w.\-:]+)/;function vp(e){return`i`+e.next++}function yp(e,t){let n={id:`r${e.rounds.length}`,launch:t,who:t?sp(t):null,items:[]};return e.rounds.push(n),n}function bp(e){return e.rounds[e.rounds.length-1]??yp(e,null)}function xp(e,t){t?e.name=t:e.name||=`tool`,e.icon=(e.name.split(/[_:]/).pop()??``).toLowerCase()}function Sp(e,t,n){let r=n?e.tools.get(n):void 0;return r||(r={type:`tool`,id:n?`call:${n}`:vp(e),call:n,name:``,icon:``,summary:``,intent:``,body:``,output:null,status:`running`},n&&e.tools.set(n,r),t.items.push(r)),r}function Cp(e,t){let n=0;for(let i of t){let t=r(i);if(!t)continue;if(t.type===`launch`){yp(e,t),n++;continue}let a=bp(e);switch(t.type){case`message_start`:case`message_end`:if(t.role!==`user`||!t.text)continue;a.items.push({type:`prompt`,id:vp(e),text:t.text});break;case`turn_end`:if(!t.thinking)continue;a.items.push({type:`reasoning`,id:vp(e),text:t.thinking});break;case`acall`:case`tool_execution_start`:case`tool_execution_update`:{let n=Sp(e,a,t.call);n.output===null?(xp(n,t.tool),n.summary=es(t.cmd),n.intent=t.intent||``,n.body=t.cmd||n.body,t.web_query&&(n.query=t.web_query),t.web_fetch&&(n.page=t.web_fetch)):!n.summary&&t.cmd&&(n.summary=es(t.cmd));break}case`aresult`:case`tool_execution_end`:{let n=Sp(e,a,t.call);if(n.output!==null&&!t.out)break;xp(n,t.tool),n.status=t.err?`error`:`ok`,!n.summary&&n.body&&(n.summary=es(n.body)),n.output=t.out||`(no output)`,n.query&&(n.links=hp(n.output));break}case`message_update`:{if(!t.delta)continue;let n=a.items[a.items.length-1];n?.type===`message`?n.text+=t.delta:a.items.push({type:`message`,id:vp(e),text:t.delta});break}case`auto_retry_start`:a.items.push({type:`event`,id:vp(e),icon:`↻`,title:``,text:t.err??``});break;case`notice`:{let n=_p.exec(t.text||``)?.[1];n&&(a.who??={agent:``,model:``,role:``},a.who.model||(a.who.model=n)),a.items.push({type:`notice`,id:vp(e),text:(t.text||``).replace(/\s+/g,` `).trim()});break}}n++}return n}var wp=class{constructor(e){this.host=e,this.model=gp(),this.behind=0,this.count=0,this.ready=!1,this.version=0,this.generation=0,this.loaded=``,this.close=null,e.addController(this)}get tailing(){return this.close!==null}hostDisconnected(){this.stop(),this.loaded=``}stop(){this.close?.(),this.close=null}load(e,t){if(this.stop(),this.loaded=e,this.generation++,this.version++,this.model=gp(),this.behind=0,this.count=0,this.ready=!1,t&&`events`in t)this.count=Cp(this.model,t.events),this.ready=!0;else if(t){let e=this.generation;this.close=function(e,t,n,r={}){return s(`${l(r)}/events/stream?run=${c(e)}&key=${c(t)}`,[`stream`],{...n,message:e=>n.message(e.data)},r)}(t.run,t.stream,{message:t=>this.onPage(t,e)},{baseUrl:t.baseUrl})}}append(e){e.length&&(this.count+=Cp(this.model,e),this.version++)}onPage(e,t){t===this.generation&&(!this.ready&&e.behind&&(this.behind=e.behind),this.count+=Cp(this.model,e.events),this.ready=!0,this.version++,this.host.requestUpdate())}async loadEarlier(e,t,n){let r=this.generation,i=Math.max(0,this.behind-3e3);this.behind=0,this.host.requestUpdate();let a=await e.stream(t,n,i);r===this.generation&&(this.model=gp(),Cp(this.model,a.events),this.version++,this.host.requestUpdate())}};function Tp(e){return A`<cae-markdown .text=${e} .split=${Rf} .strings=${{showRendered:D(`Show rendered`),showSource:D(`Show source`)}}></cae-markdown>`}z(`cae-markdown`,ta);var Ep=class extends N{constructor(...e){super(...e),this.events=null,this.run=``,this.stream=null,this.baseUrl=``,this.client=null,this.live=!1,this.round=null,this.rows=[],this.mode=`full`,this.shown=-1,this.feed=new wp(this),this.memory=null,this.drawn=null,this.lastSent=``,this.fed=null}static{this.styles=k` :host{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;position:relative;}:host([mode='none']){display:none;}:host([mode='tabs']){flex:none;}`}get source(){return this.events?`static`:this.run&&this.stream?`${this.run}\n${this.stream}`:``}connectedCallback(){super.connectedCallback(),this.hasUpdated&&this.requestUpdate()}willUpdate(e){let t=this.source;if(!e.has(`events`)&&t===this.feed.loaded)return;let n=this.fed,r=this.events;if(this.fed=r,r&&n&&t===this.feed.loaded&&function(e,t){if(e===t||e.length<t.length)return e===t;for(let n=t.length-1;n>=0;n--)if(e[n]!==t[n])return!1;return!0}(r,n))return void this.feed.append(r.slice(n.length));let{run:i,stream:a}=this,o=`transcript:${i}/${a??``}`,s=Yn(this),c=s===Gn?new Zn(`${o}:open`):new Xn(`${o}:open`,this),l=!this.events&&!!a;this.memory={isOpen:e=>c.has(e),setOpen:(e,t)=>c.set(e,t),scroll:()=>l?s.recall(`${o}:scroll`):void 0,setScroll:e=>l&&s.remember(`${o}:scroll`,e)},this.shown=-1,this.feed.load(t,this.events?{events:this.events}:t&&a?{run:i,stream:a,baseUrl:this.baseUrl}:null)}sections(){let e=this.live&&this.feed.tailing,t=[this.feed.version,this.rows,this.run,e,An()];if(this.drawn?.key.every((e,n)=>e===t[n]))return this.drawn;let n=this.feed.model,r=$f(n.rounds.map(e=>e.launch),this.rows);return this.drawn={key:t,rounds:r,sections:dp(n,r,{run:this.run,rows:this.rows,active:e})},this.drawn}render(){let e=this.feed,{sections:t}=this.sections();return wo(e.generation,A`<cae-transcript .sections=${t} .shown=${this.round===null?null:this.round-1} ?live=${this.live} .earlier=${e.behind} ?loading=${!e.ready} .count=${e.count} mode=${this.mode} .memory=${this.memory} .markdown=${Qi} .renderDetail=${e=>Tp(e.text)} .strings=${{sections:D(`Agent sessions`),sectionsTip:[`${D(`Retry`)}: ${gs()}`,`${D(`Correction`)}: ${Zs()}`,`${D(`Model switch`)}: ${Ks()}`].join(`
782
- `),loadEarlier:e=>D(e===1?`Show 1 earlier line`:E`Show ${e} earlier lines`),newBelow:e=>D(e===1?`Show 1 new event`:E`Show ${e} new events`),newInLatest:e=>D(e===1?`Show 1 new event in the running agent session`:E`Show ${e} new events in the running agent session`),prompt:D(`Prompt`),assistant:D(`Assistant`),reasoning:D(`Reasoning`),characters:e=>D(E`${e} characters`),tool:D(`tool`),results:e=>D(e===1?`1 result`:E`${e} results`),done:D(`done`,{id:`tool-done`}),failed:D(`failed`),running:D(`running`),interrupted:D(`interrupted`),interruptedTip:D(`The run ended before the tool call returned`),query:D(`query`),page:D(`page`),fullText:D(`Full text`),showAll:e=>D(E`Show all (${e} characters)`),showLess:D(`Show less`)}} @cae-section-change=${e=>{e.stopPropagation(),$(this,`ca-navigate`,{round:e.detail.index===null?null:e.detail.index+1})}} @cae-section-shown=${e=>{e.stopPropagation(),this.shown=e.detail.index}} @cae-load-earlier=${t=>{t.stopPropagation(),this.stream&&e.loadEarlier(this.client??a({baseUrl:this.baseUrl}),this.run,this.stream)}}></cae-transcript>`)}updated(){let{rounds:e}=this.sections(),t=`${this.feed.version}|${this.shown}|${e.length}|${this.rows.length}`;t!==this.lastSent&&(this.lastSent=t,$(this,`ca-rounds`,{launches:this.feed.model.rounds.map(e=>e.launch),shown:this.shown,rounds:e},{bubbles:!1}))}revealWebSearch(e,t=0){let n=this.feed.model.rounds.flatMap(e=>e.items).filter(t=>t.type===`tool`&&t.query===e)[t],r=n&&this.view?this.view.reveal(n.id):-1;if(!(r<0))return{round:r===this.feed.model.rounds.length-1?null:r+1}}};U([F({attribute:!1})],Ep.prototype,`events`,void 0),U([F()],Ep.prototype,`run`,void 0),U([F({attribute:!1})],Ep.prototype,`stream`,void 0),U([F({attribute:`base-url`})],Ep.prototype,`baseUrl`,void 0),U([F({attribute:!1})],Ep.prototype,`client`,void 0),U([F({type:Boolean})],Ep.prototype,`live`,void 0),U([F({attribute:!1})],Ep.prototype,`round`,void 0),U([F({attribute:!1})],Ep.prototype,`rows`,void 0),U([F({reflect:!0})],Ep.prototype,`mode`,void 0),U([I()],Ep.prototype,`shown`,void 0),U([bn(`cae-transcript`)],Ep.prototype,`view`,void 0),Ep=U([P(`ca-transcript`),O()],Ep);var Dp=e=>w(e.io)||e.rows.some(w),Op=e=>!Dp(e)&&(!!e.stream||e.launches.length>0||e.rows.some(f)),kp=e=>e.live?`running`:e.outcomes.get(e.detail.key)?.outcome??p(void 0,e.detail.rows),Ap=(e,t)=>e.detail.io.upstream.find(e=>e.outputs.some(e=>e.path===t)),jp=e=>t=>{let n=Ap(e,t);if(!n)return;let r=n.outputs.find(e=>e.path===t);return{name:J(n),written:!!r?.file.exists,outcome:e.outcomes.get(n.key)?.outcome}},Mp=e=>ys((e.rounds||1)-1),Np=(e,t)=>A`<a class="lnk" href="#" @click=${n=>{n.preventDefault(),$(e.host,`ca-open-task`,{key:t.key})}}>${J(t)}</a>`,Pp=new Set([`key`,`rows`,`launches`,`stream`,`task_detail_error`,`definition`,`io`,`row_extras`]);function Fp(e){for(let t=e.launches.length-1;t>=0;t--){let n=e.launches[t],r=n?sp(n).model:``;if(r)return r}return``}function Ip(e){let t=[...new Set(e.flatMap(e=>[...(e.hops??[]).map(e=>e.credential),e.credential]).filter(e=>!!e))];if(!t.length)return[];let n=[D(`Account or API key the coding agent used (credential)`),...t.map(Es)].filter(Boolean).join(`
783
- `);return[{label:D(`identity`),value:q(t.map(Ts)),tip:n,look:`quiet`}]}function Lp(e,t,n=``,r={}){let i=t===`output`?A`${Ol(e.status)}${(e.rounds??0)>1?A` <span class="meta" title=${Zs()}>${Qs(e.rounds,e.status===`valid`)}</span>`:M}`:Dl(e),a=A`<div class="io-hd">${r.chip??i}<span class="jmono ct-path" title=${e.path}>${T(e.path,n)}</span></div>${r.origin?A`<div class="meta io-from">${r.origin}</div>`:M}`;if(t===`output`&&e.status===`refused`)return A`<div class="io-card one">${a}<div class="meta">${$s(e,n,r.producerOf)}</div></div>`;if(t===`output`&&e.status===`failed`&&!e.file.exists)return A`<div class="io-card one">${a}</div>`;let o=e.errors??[];return A`<div class="io-card">
780
+ </section>`}};U([F()],Zf.prototype,`name`,void 0),U([F({attribute:!1})],Zf.prototype,`panel`,void 0),U([F({attribute:!1})],Zf.prototype,`data`,void 0),U([F({attribute:`base-url`})],Zf.prototype,`baseUrl`,void 0),Zf=U([P(`ca-panel-view`),O()],Zf);var Qf=class{constructor(e){this.host=e,this.value=null,this.error=null,this.token=0}load(e,t,n){let r=++this.token;this.value=null,this.error=null,t&&n&&e&&this.fetch(r,e,t,n)}async fetch(e,t,n,r){let i,a=null;try{i=await t.task(n,r)}catch(e){i=(e=>({key:e,rows:[],launches:[],definition:null,io:{params:{},inputs:[],outputs:[],executor:`agent`,upstream:[],downstream:[]},stream:null}))(r),a=e}e===this.token&&(this.value=i,this.error=a,this.host.requestUpdate())}};function $f(e){let t=[],n=!1;for(let r of(e||``).split(`
781
+ `))/^Errors:\s*$/.test(r)?n=!0:n&&r.startsWith(`- `)?t.push(r.slice(2)):n&&r.trim()&&!r.startsWith(`- `)&&(n=!1);return t}z(`cae-transcript`,Jo);var ep=e=>!!e&&(e.prompt||``).startsWith(`The output file(s) you wrote do not pass their checks.`);function tp(e,t){let n=new Map(t.filter(e=>e.stop!==`invalid_input`&&e.stop!==`skipped`).map((e,t)=>[t+1,e])),r=[],i=0,a=0,o=0;return e.forEach((e,t)=>{let s=n.get(i)?.hops?.length??1;t>0&&ep(e)?a++:t>0&&o+1<s?(o++,a=0):(i++,o=0,a=0);let c=n.get(i)?.hops?.[o],l=c?.model||c?.route||``,u=a?`fixup`:o?`switch`:`try`;r.push({kind:u,tryNo:i,fixupNo:a,hopNo:o,model:l,result:null,rejectedWith:[],switchedStop:``,switchedTo:``,row:null})}),r.forEach((t,i)=>{let a=r[i+1];if(a&&a.tryNo===t.tryNo&&a.hopNo!==t.hopNo)return t.result=`switched`,t.switchedStop=n.get(t.tryNo)?.hops?.[t.hopNo]?.stop??``,void(t.switchedTo=a.model);if(a&&a.tryNo===t.tryNo)return t.result=`rejected`,void(t.rejectedWith=$f(e[i+1]?.prompt));let o=n.get(t.tryNo)??null;t.row=o,t.result=o?o.ok?`ok`:`failed`:null}),r}var np=e=>/\[([\w.-]+)\]/.exec(e)?.[1]??``;function rp(e){let t=/\[([\w.-]+)\]\s*(.*)$/.exec(e);return t?`${t[1]}: ${t[2]}`:e}function ip(e,t,n=_s(e.tryNo-1)){return t>1?e.fixupNo?K(n,D(E`correction round ${e.fixupNo}`)):e.hopNo?K(n,D(`model switch`)):n:e.fixupNo?D(E`Correction round ${e.fixupNo}`):e.hopNo?D(`Model switch`):_s(0)}function ap(e){let t=e.model||D(`model`);return e.switchedTo?D(E`${t}: ${Q(e.switchedStop)} → ${e.switchedTo}`):D(E`${t}: ${Q(e.switchedStop)} → next model`)}var op={claude:`Claude Code`,omp:`omp`,codex:`Codex`,opencode:`opencode`,gemini:`Gemini CLI`};function sp(e){let t=String(e||``).split(`/`).pop()??``;return op[t]??t}var cp=(e,t)=>{let n=e.indexOf(t);return n>=0?e[n+1]??``:``};function lp(e){let t=e.argv,n=/TELEMETRY [^\n]*role=([\w:-]+)/.exec(e.prompt||``)?.[1];return{agent:sp(t[0]),model:cp(t,`--model`)||cp(t,`-m`),role:n&&n!==`-`?n:``}}function up(e){if(!e)return[];let t=[];return e.agent&&t.push({label:D(`coding agent`),value:e.agent,tip:D(`The CLI that ran the task (claude, omp)`)}),e.model&&t.push({label:D(`model`),value:e.model,tip:D(`The model the agent session ran on`),look:`mono`}),e.role&&t.push({label:D(`role`),value:e.role,tip:D(`The agent definition the coding agent ran as (agents/<role>.md)`),look:`quiet`}),t}function dp(e){let t=e.prompt||``,n=e.prompt_truncated||0;return[{id:`cmd`,code:!0,summary:D(`Command line`),text:e.argv.join(` `)},{id:`prompt`,summary:D(n?E`Prompt (${t.length} characters; ${n} characters not saved)`:E`Prompt (${t.length} characters)`),text:t+(n?`\n\n${D(E`(${n} characters not saved)`)}`:``)}]}function fp(e,t){if(e.result===`rejected`)return{tone:`attention`,title:D(`Output failed checks`),list:e.rejectedWith.map(e=>T(e,t)),note:D(`Sent in the correction prompt`)};if(e.result===`switched`)return{tone:`failed`,title:ap(e)};if(e.result===`failed`&&e.row){let n=T(e.row.reason,t)||Q(e.row.stop);return{tone:`failed`,title:D(E`Attempt ${e.tryNo} failed: ${n}`)}}}function pp(e,t,n){let r=t[t.length-1]?.tryNo??1,i=vs(n.rows.filter(f)),a=e.rounds.length-1;return e.rounds.map((e,o)=>{let s=t[o],[c,l,u]=s?function(e,t){switch(e.result){case`ok`:return[`✓`,D(`passed`),D(`Output passed checks`)];case`rejected`:return[`✕`,D(`failed checks`),D(`Output failed checks`)];case`switched`:return[`✕`,Q(e.switchedStop),ap(e)];case`failed`:return[`✕`,D(`failed`),T(e.row?.reason,t)||Q(e.row?.stop)];default:return[``,``,``]}}(s,n.run):[``,``,``],d=e.who?.model;return{id:e.id,title:s?ip(s,r,i[s.tryNo-1]):String(o+1),facts:d?[d.replace(/^claude-/,``)]:[],verdict:c?{tone:c===`✓`?`done`:`failed`,text:l,tip:u}:void 0,active:o===a&&n.active,tags:e.launch?up(e.who):[],details:e.launch?dp(e.launch):[],items:e.items.map(e=>e.type===`event`?{...e,title:D(`API request sent again`)}:e),footer:s&&fp(s,n.run)}})}var mp=/\{\s*"title"\s*:\s*"((?:[^"\\]|\\.)*)"\s*,\s*"url"\s*:\s*"(https?:\/\/[^"\s]+)"/g,hp=/^\s*\[\d+\]\s+(.+)\n\s*(https?:\/\/\S+)/gm,gp=/https?:\/\/[^\s"'<>)\]]+/g;function _p(e){let t=e??``,n=[],r=new Set,i=(e,t)=>{r.has(t)||n.length>=20||(r.add(t),n.push({title:e.trim()||t,url:t}))};for(let e of t.matchAll(mp)){let t=e[1]??``;try{t=JSON.parse(`"${t}"`)}catch{}i(t,e[2]??``)}if(!n.length)for(let e of t.matchAll(hp))i(e[1]??``,e[2]??``);if(!n.length)for(let e of t.matchAll(gp))i(``,e[0].replace(/[.,;:!?]+$/,``));return n}var vp=()=>({rounds:[],tools:new Map,next:0}),yp=/session init:.*?model=([\w.\-:]+)/;function bp(e){return`i`+e.next++}function xp(e,t){let n={id:`r${e.rounds.length}`,launch:t,who:t?lp(t):null,items:[]};return e.rounds.push(n),n}function Sp(e){return e.rounds[e.rounds.length-1]??xp(e,null)}function Cp(e,t){t?e.name=t:e.name||=`tool`,e.icon=(e.name.split(/[_:]/).pop()??``).toLowerCase()}function wp(e,t,n){let r=n?e.tools.get(n):void 0;return r||(r={type:`tool`,id:n?`call:${n}`:bp(e),call:n,name:``,icon:``,summary:``,intent:``,body:``,output:null,status:`running`},n&&e.tools.set(n,r),t.items.push(r)),r}function Tp(e,t){let n=0;for(let i of t){let t=r(i);if(!t)continue;if(t.type===`launch`){xp(e,t),n++;continue}let a=Sp(e);switch(t.type){case`message_start`:case`message_end`:if(t.role!==`user`||!t.text)continue;a.items.push({type:`prompt`,id:bp(e),text:t.text});break;case`turn_end`:if(!t.thinking)continue;a.items.push({type:`reasoning`,id:bp(e),text:t.thinking});break;case`acall`:case`tool_execution_start`:case`tool_execution_update`:{let n=wp(e,a,t.call);n.output===null?(Cp(n,t.tool),n.summary=es(t.cmd),n.intent=t.intent||``,n.body=t.cmd||n.body,t.web_query&&(n.query=t.web_query),t.web_fetch&&(n.page=t.web_fetch)):!n.summary&&t.cmd&&(n.summary=es(t.cmd));break}case`aresult`:case`tool_execution_end`:{let n=wp(e,a,t.call);if(n.output!==null&&!t.out)break;Cp(n,t.tool),n.status=t.err?`error`:`ok`,!n.summary&&n.body&&(n.summary=es(n.body)),n.output=t.out||`(no output)`,n.query&&(n.links=_p(n.output));break}case`message_update`:{if(!t.delta)continue;let n=a.items[a.items.length-1];n?.type===`message`?n.text+=t.delta:a.items.push({type:`message`,id:bp(e),text:t.delta});break}case`auto_retry_start`:a.items.push({type:`event`,id:bp(e),icon:`↻`,title:``,text:t.err??``});break;case`notice`:{let n=yp.exec(t.text||``)?.[1];n&&(a.who??={agent:``,model:``,role:``},a.who.model||(a.who.model=n)),a.items.push({type:`notice`,id:bp(e),text:(t.text||``).replace(/\s+/g,` `).trim()});break}}n++}return n}var Ep=class{constructor(e){this.host=e,this.model=vp(),this.behind=0,this.count=0,this.ready=!1,this.version=0,this.generation=0,this.loaded=``,this.close=null,e.addController(this)}get tailing(){return this.close!==null}hostDisconnected(){this.stop(),this.loaded=``}stop(){this.close?.(),this.close=null}load(e,t){if(this.stop(),this.loaded=e,this.generation++,this.version++,this.model=vp(),this.behind=0,this.count=0,this.ready=!1,t&&`events`in t)this.count=Tp(this.model,t.events),this.ready=!0;else if(t){let e=this.generation;this.close=function(e,t,n,r={}){return s(`${l(r)}/events/stream?run=${c(e)}&key=${c(t)}`,[`stream`],{...n,message:e=>n.message(e.data)},r)}(t.run,t.stream,{message:t=>this.onPage(t,e)},{baseUrl:t.baseUrl})}}append(e){e.length&&(this.count+=Tp(this.model,e),this.version++)}onPage(e,t){t===this.generation&&(!this.ready&&e.behind&&(this.behind=e.behind),this.count+=Tp(this.model,e.events),this.ready=!0,this.version++,this.host.requestUpdate())}async loadEarlier(e,t,n){let r=this.generation,i=Math.max(0,this.behind-3e3);this.behind=0,this.host.requestUpdate();let a=await e.stream(t,n,i);r===this.generation&&(this.model=vp(),Tp(this.model,a.events),this.version++,this.host.requestUpdate())}};function Dp(e){return A`<cae-markdown .text=${e} .split=${Bf} .strings=${{showRendered:D(`Show rendered`),showSource:D(`Show source`)}}></cae-markdown>`}z(`cae-markdown`,ta);var Op=class extends N{constructor(...e){super(...e),this.events=null,this.run=``,this.stream=null,this.baseUrl=``,this.client=null,this.live=!1,this.round=null,this.rows=[],this.mode=`full`,this.shown=-1,this.feed=new Ep(this),this.memory=null,this.drawn=null,this.lastSent=``,this.fed=null}static{this.styles=k` :host{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;position:relative;}:host([mode='none']){display:none;}:host([mode='tabs']){flex:none;}`}get source(){return this.events?`static`:this.run&&this.stream?`${this.run}\n${this.stream}`:``}connectedCallback(){super.connectedCallback(),this.hasUpdated&&this.requestUpdate()}willUpdate(e){let t=this.source;if(!e.has(`events`)&&t===this.feed.loaded)return;let n=this.fed,r=this.events;if(this.fed=r,r&&n&&t===this.feed.loaded&&function(e,t){if(e===t||e.length<t.length)return e===t;for(let n=t.length-1;n>=0;n--)if(e[n]!==t[n])return!1;return!0}(r,n))return void this.feed.append(r.slice(n.length));let{run:i,stream:a}=this,o=`transcript:${i}/${a??``}`,s=Yn(this),c=s===Gn?new Zn(`${o}:open`):new Xn(`${o}:open`,this),l=!this.events&&!!a;this.memory={isOpen:e=>c.has(e),setOpen:(e,t)=>c.set(e,t),scroll:()=>l?s.recall(`${o}:scroll`):void 0,setScroll:e=>l&&s.remember(`${o}:scroll`,e)},this.shown=-1,this.feed.load(t,this.events?{events:this.events}:t&&a?{run:i,stream:a,baseUrl:this.baseUrl}:null)}sections(){let e=this.live&&this.feed.tailing,t=[this.feed.version,this.rows,this.run,e,An()];if(this.drawn?.key.every((e,n)=>e===t[n]))return this.drawn;let n=this.feed.model,r=tp(n.rounds.map(e=>e.launch),this.rows);return this.drawn={key:t,rounds:r,sections:pp(n,r,{run:this.run,rows:this.rows,active:e})},this.drawn}render(){let e=this.feed,{sections:t}=this.sections();return wo(e.generation,A`<cae-transcript .sections=${t} .shown=${this.round===null?null:this.round-1} ?live=${this.live} .earlier=${e.behind} ?loading=${!e.ready} .count=${e.count} mode=${this.mode} .memory=${this.memory} .markdown=${Qi} .renderDetail=${e=>Dp(e.text)} .strings=${{sections:D(`Agent sessions`),sectionsTip:[`${D(`Retry`)}: ${gs()}`,`${D(`Correction round`)}: ${Qs()}`,`${D(`Model switch`)}: ${Ks()}`].join(`
782
+ `),loadEarlier:e=>D(e===1?`Show 1 earlier line`:E`Show ${e} earlier lines`),newBelow:e=>D(e===1?`Show 1 new event`:E`Show ${e} new events`),newInLatest:e=>D(e===1?`Show 1 new event in the running agent session`:E`Show ${e} new events in the running agent session`),prompt:D(`Prompt`),assistant:D(`Assistant`),reasoning:D(`Reasoning`),characters:e=>D(E`${e} characters`),tool:D(`tool`),results:e=>D(e===1?`1 result`:E`${e} results`),done:D(`done`,{id:`tool-done`}),failed:D(`failed`),running:D(`running`),interrupted:D(`interrupted`),interruptedTip:D(`The run ended before the tool call returned`),query:D(`query`),page:D(`page`),fullText:D(`Full text`),showAll:e=>D(E`Show all (${e} characters)`),showLess:D(`Show less`)}} @cae-section-change=${e=>{e.stopPropagation(),$(this,`ca-navigate`,{round:e.detail.index===null?null:e.detail.index+1})}} @cae-section-shown=${e=>{e.stopPropagation(),this.shown=e.detail.index}} @cae-load-earlier=${t=>{t.stopPropagation(),this.stream&&e.loadEarlier(this.client??a({baseUrl:this.baseUrl}),this.run,this.stream)}}></cae-transcript>`)}updated(){let{rounds:e}=this.sections(),t=`${this.feed.version}|${this.shown}|${e.length}|${this.rows.length}`;t!==this.lastSent&&(this.lastSent=t,$(this,`ca-rounds`,{launches:this.feed.model.rounds.map(e=>e.launch),shown:this.shown,rounds:e},{bubbles:!1}))}revealWebSearch(e,t=0){let n=this.feed.model.rounds.flatMap(e=>e.items).filter(t=>t.type===`tool`&&t.query===e)[t],r=n&&this.view?this.view.reveal(n.id):-1;if(!(r<0))return{round:r===this.feed.model.rounds.length-1?null:r+1}}};U([F({attribute:!1})],Op.prototype,`events`,void 0),U([F()],Op.prototype,`run`,void 0),U([F({attribute:!1})],Op.prototype,`stream`,void 0),U([F({attribute:`base-url`})],Op.prototype,`baseUrl`,void 0),U([F({attribute:!1})],Op.prototype,`client`,void 0),U([F({type:Boolean})],Op.prototype,`live`,void 0),U([F({attribute:!1})],Op.prototype,`round`,void 0),U([F({attribute:!1})],Op.prototype,`rows`,void 0),U([F({reflect:!0})],Op.prototype,`mode`,void 0),U([I()],Op.prototype,`shown`,void 0),U([bn(`cae-transcript`)],Op.prototype,`view`,void 0),Op=U([P(`ca-transcript`),O()],Op);var kp=e=>w(e.io)||e.rows.some(w),Ap=e=>!kp(e)&&(!!e.stream||e.launches.length>0||e.rows.some(f)),jp=e=>e.live?`running`:e.outcomes.get(e.detail.key)?.outcome??p(void 0,e.detail.rows),Mp=(e,t)=>e.detail.io.upstream.find(e=>e.outputs.some(e=>e.path===t)),Np=e=>t=>{let n=Mp(e,t);if(!n)return;let r=n.outputs.find(e=>e.path===t);return{name:J(n),written:!!r?.file.exists,outcome:e.outcomes.get(n.key)?.outcome}},Pp=e=>ys(Wl(e)),Fp=(e,t)=>A`<a class="lnk" href="#" @click=${n=>{n.preventDefault(),$(e.host,`ca-open-task`,{key:t.key})}}>${J(t)}</a>`,Ip=new Set([`key`,`rows`,`launches`,`stream`,`task_detail_error`,`definition`,`io`,`row_extras`]);function Lp(e){for(let t=e.launches.length-1;t>=0;t--){let n=e.launches[t],r=n?lp(n).model:``;if(r)return r}return``}function Rp(e){let t=[...new Set(e.flatMap(e=>[...(e.hops??[]).map(e=>e.credential),e.credential]).filter(e=>!!e))];if(!t.length)return[];let n=[D(`Account or API key the coding agent used (credential)`),...t.map(Es)].filter(Boolean).join(`
783
+ `);return[{label:D(`identity`),value:q(t.map(Ts)),tip:n,look:`quiet`}]}function zp(e,t,n=``,r={}){let i=t===`output`?A`${kl(e.status)}${(e.rounds??0)>1?A` <span class="meta" title=${Qs()}>${$s(e.rounds,e.status===`valid`)}</span>`:M}`:Ol(e),a=A`<div class="io-hd">${r.chip??i}<span class="jmono ct-path" title=${e.path}>${T(e.path,n)}</span></div>${r.origin?A`<div class="meta io-from">${r.origin}</div>`:M}`;if(t===`output`&&e.status===`refused`)return A`<div class="io-card one">${a}<div class="meta">${ec(e,n,r.producerOf)}</div></div>`;if(t===`output`&&e.status===`failed`&&!e.file.exists)return A`<div class="io-card one">${a}</div>`;let o=e.errors??[];return A`<div class="io-card">
784
784
  ${a}
785
- ${Pl(e,t)}
786
- ${Al(e)}
785
+ ${Fl(e,t)}
786
+ ${jl(e)}
787
787
  ${o.length?A`<h4>${D(`Errors`)}</h4><pre class="ct-err">${o.map(e=>T(e,n)).join(`
788
788
  `)}</pre>`:M}
789
- </div>`}var Rp=e=>!e.file.exists||e.status!=null&&e.status!==`valid`,zp=e=>Zr({text:is(e),tone:ds(e),mark:ps(e)});function Bp(e){return e.map(e=>A`<span class="lineage" data-lineage=${e} title=${function(e){switch(e){case`given_from`:return D(`Its output is in the params of the later task (given_from)`);case`after`:return D(`The later task waits for it and is not given its output (after)`);case`created_from`:return D(`Its result reached the flow call just before the flow call created the later task (created_from)`)}}(e)}>${rl(e)}</span>`)}var Vp=k` :host{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;position:relative;container-type:inline-size;}.taskmeta{flex:none;background:linear-gradient(180deg,var(--panel2),var(--panel));border:1px solid var(--line);border-radius:14px;padding:10px 12px;margin-bottom:8px;color:var(--text-2);}.tm-head{display:flex;gap:12px;align-items:center;}.tm-av{width:36px;height:36px;border-radius:11px;display:grid;place-items:center;font-size:16px;flex:none;background:var(--agent-bg);color:var(--agent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--agent) 35%,transparent);}.tm-av.py{background:var(--raise);color:var(--text-muted);box-shadow:none;}.tm-name{font-size:15px;font-weight:600;color:var(--text);display:flex;gap:8px;align-items:center;}.verdict{font-size:12.5px;color:var(--text);margin-top:2px;}.verdict[data-tone='failed'],.verdict[data-tone='attention']{color:var(--tone);}.verdict[data-tone='muted']{color:var(--text-muted);}.whos{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:6px;}.runchips{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px;}.spend{display:flex;flex-wrap:wrap;gap:4px 14px;margin-top:6px;font-size:12px;color:var(--text-muted);font-variant-numeric:tabular-nums;}.spend b{color:var(--text);font-weight:600;}.spend.quota{flex-direction:column;gap:0;}.usage-wrap{overflow-x:auto;margin:4px 0 12px;}.usage{width:auto;border-collapse:collapse;font-size:12px;font-variant-numeric:tabular-nums;}.usage th{text-align:right;font-weight:600;color:var(--text-muted);font-size:10.5px;white-space:nowrap;padding:6px 14px;border-bottom:1px solid var(--line2);vertical-align:bottom;}.usage td{text-align:right;padding:8px 14px;border-bottom:1px solid var(--line);white-space:nowrap;vertical-align:baseline;}.usage th:first-child,.usage td:first-child{padding-left:4px;}.usage td.l.jmono{font-size:12px;}.usage td.l:not(:first-child):not(.jmono){white-space:normal;min-width:12ch;}.usage th.l,.usage td.l{text-align:left;}.usage tr.hop td{padding-top:4px;padding-bottom:4px;color:var(--text-muted);}.usage tr.hop td:first-child{padding-left:28px;}.runchip{font-size:11px;padding:2px 9px;border-radius:999px;border:1px solid var(--line2);color:var(--text-2);}.runchip.ok>[aria-hidden]{color:var(--status-done);font-weight:700;}.runchip.part{border-color:color-mix(in srgb,var(--status-attention) 45%,transparent);background:var(--status-attention-bg);}.runchip.part>[aria-hidden]{color:var(--status-attention);font-weight:700;}.runchip.bad{border-color:color-mix(in srgb,var(--status-failed) 45%,transparent);color:var(--status-failed);background:var(--status-failed-bg);}.io-fold{margin-top:6px;}.io-fold>summary,.launch>summary{cursor:pointer;color:var(--text-muted);}.searches{margin:4px 0 0;padding-left:22px;}.unread{color:var(--status-attention);margin-top:4px;}.qlink{background:none;border:0;padding:0;color:var(--accent);cursor:pointer;text-align:left;font:inherit;}.qlink:hover{text-decoration:underline;}.tviews{flex:none;display:flex;flex-wrap:wrap;gap:4px;margin:2px 0 8px;border-bottom:1px solid var(--line);}@container (max-width:480px){.tviews{gap:0;}.tview{padding:6px 10px;}}.tview{background:none;border:0;border-bottom:2px solid transparent;color:var(--text-muted);padding:6px 14px;cursor:pointer;}.tview:hover{color:var(--text-2);}.tview.sel{color:var(--text);border-bottom-color:var(--accent);}.tview .badge{margin-left:6px;font-size:10px;padding:0 6px;border-radius:999px;background:var(--raise);color:var(--text-2);}.pane{flex:1 1 auto;min-height:0;overflow:auto;position:relative;}.upstream{margin-bottom:12px;}.up-hd{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;margin:2px 0 6px;}.down{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:6px;}.lineage{font-size:11px;color:var(--text-2);border:1.5px solid var(--line2);border-radius:999px;padding:0 7px;white-space:nowrap;}.lineage[data-lineage='after']{border-style:dotted;}.lineage[data-lineage='created_from']{border-style:dashed;}.notrans{flex:1 1 auto;border:1px solid var(--line);border-radius:14px;}details.upstream>summary{cursor:pointer;list-style:none;}details.upstream>summary::-webkit-details-marker{display:none;}.params td{vertical-align:top;}.from{color:var(--text-muted);white-space:nowrap;}`,Hp=class extends N{constructor(...e){super(...e),this.baseUrl=``,this.run=``,this.taskKey=null,this.view=`transcript`,this.round=null,this.live=!1,this.journal=[],this.plan=null,this.exported=!1,this.replayMarks=!1,this.detail=new Xf(this),this.launches=[],this.shownRound=-1,this.rounds=[],this.outcomes=new Map}static{this.styles=[V,Il,Wo,Fd,Vp]}willUpdate(e){(e.has(`run`)||e.has(`taskKey`)||e.has(`client`))&&(this.detail.load(this.client,this.run,this.taskKey),this.launches=[],this.shownRound=-1,this.rounds=[]),this.outcomes=this.plan?S(this.journal,this.plan).outcomes:new Map}shownView(e){return this.view===`transcript`&&Dp(e)&&!e.stream?`output`:this.view}revealSearch(e,t){let n=this.transcriptEl?.revealWebSearch(e,t);$(this,`ca-navigate`,n?{view:`transcript`,round:n.round}:{view:`transcript`})}render(){let e=this.taskKey;if(!e)return A`<div class="blank"><span class="ic" aria-hidden="true">✦</span><b>${D(`No task selected`)}</b></div>`;let t=this.detail.value;if(!t)return A`<div class="taskmeta meta"><strong>${e}</strong> ${D(`Loading…`)}</div>`;let n={host:this,run:this.run,detail:t,live:t.launches.length>0&&this.live,journal:this.journal,plan:this.plan,outcomes:this.outcomes,launches:this.launches,shownRound:this.shownRound,rounds:this.rounds,exported:this.exported,replayMarks:this.replayMarks},r=this.shownView(t);return A`${function(e,t,n){let r=e.detail,i=e.live,{rows:a,launches:o}=r,s=Dp(r),c=Op(r),l=a.slice().sort((e,t)=>String(e.ts).localeCompare(String(t.ts))),d=l[l.length-1],p=o[0],m={agent:ap(p?.cmd?p.cmd.split(` `)[0]:d?.agent),model:p?.model||d?.model||Fp(e),role:p?.role||``},h=c?[...new Set(l.map(e=>e.model).filter(e=>!!e&&e!==m.model))]:[],g=a[0],_=a.filter(f),v=ns(ts(_)),y=Object.entries(r).filter(([e])=>!Pp.has(e)),[b,x]=function(e){let t=e.detail.rows,n=t.filter(f),r=t[t.length-1],i=kp(e);switch(i){case`running`:return[D(`Running`),`neutral`];case`waiting`:{let t=e.plan?.nodes.find(t=>t.key===e.detail.key),n=t?.deferred?Us(t.deferred_cause,t.deferred,u(e.plan,t.deferred_cause)):``;return n?[D(E`Not run: ${n}`),`attention`]:[D(`Waiting`),`muted`]}case`skipped`:return[D(`Skipped`),`muted`];case`not_started`:{let t=function(e){let t=e.detail,n=hs(e.outcomes.get(t.key)??{attempts:t.rows,cause:null},e.outcomes,e.run,t=>Ap(e,t)?.key);if(n)return n;let r=Re(t.rows[t.rows.length-1]?.reason)[0],i=r?Ap(e,r.path):void 0;return r?ms(T(r.path,e.run),r.problem,i?{name:J(i)}:void 0):``}(e);return[D(t?E`Not started: ${t}`:`Not started`),`attention`]}case`partial`:{let t=r?.reason&&ls(r.reason)?Q(r.reason):T(r?.reason,e.run);return[D(t?E`Partly done: ${t}`:`Partly done`),`attention`]}case`failed`:{let t=T(r?.reason,e.run)||Q(r?.stop);return[n.length>1?D(E`Failed on all ${n.length} attempts: ${t}`):D(E`Failed: ${t}`),`failed`]}}if(!r)return[is(i),`neutral`];let a=n.filter(e=>!e.ok);if(a.length){let t=T(a[0]?.reason,e.run)||Q(a[0]?.stop);return[a.length===1?D(E`Done on attempt ${n.length} | 1 failed attempt | first failure: ${t}`):D(E`Done on attempt ${n.length} | ${a.length} failed attempts | first failure: ${t}`),`neutral`]}let o=(r.rounds||1)-1+(r.hook_errors??[]).length;if(o>0){let t=[...(r.hook_errors??[]).flat(),...(r.round_errors??[]).flat(),...e.rounds.flatMap(e=>e.rejectedWith)],n=t[0]?tp(T(t[0],e.run)):``;return n?[D(o===1?E`Done after 1 correction | first failed check: ${n}`:E`Done after ${o} corrections | first failed check: ${n}`),`neutral`]:[D(o===1?`Done after 1 correction`:E`Done after ${o} corrections`),`neutral`]}let s=Js(r.hops,null,r.skipped_hops);return s?[D(E`Done after a model switch: ${s}`),`neutral`]:[D(`Done`),`neutral`]}(e),S=D(s?`Python task`:`Agent task`),C=e.plan?.nodes.find(e=>e.key===r.key);return A`<div class="taskmeta">
789
+ </div>`}var Bp=e=>!e.file.exists||e.status!=null&&e.status!==`valid`,Vp=e=>Zr({text:is(e),tone:ds(e),mark:ps(e)});function Hp(e){return e.map(e=>A`<span class="lineage" data-lineage=${e} title=${function(e){switch(e){case`given_from`:return D(`Its output is in the params of the later task (given_from)`);case`after`:return D(`The later task waits for it and is not given its output (after)`);case`created_from`:return D(`Its result reached the flow call just before the flow call created the later task (created_from)`)}}(e)}>${il(e)}</span>`)}var Up=k` :host{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;position:relative;container-type:inline-size;}.taskmeta{flex:none;background:linear-gradient(180deg,var(--panel2),var(--panel));border:1px solid var(--line);border-radius:14px;padding:10px 12px;margin-bottom:8px;color:var(--text-2);}.tm-head{display:flex;gap:12px;align-items:center;}.tm-av{width:36px;height:36px;border-radius:11px;display:grid;place-items:center;font-size:16px;flex:none;background:var(--agent-bg);color:var(--agent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--agent) 35%,transparent);}.tm-av.py{background:var(--raise);color:var(--text-muted);box-shadow:none;}.tm-name{font-size:15px;font-weight:600;color:var(--text);display:flex;gap:8px;align-items:center;}.verdict{font-size:12.5px;color:var(--text);margin-top:2px;}.verdict[data-tone='failed'],.verdict[data-tone='attention']{color:var(--tone);}.verdict[data-tone='muted']{color:var(--text-muted);}.whos{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:6px;}.runchips{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px;}.spend{display:flex;flex-wrap:wrap;gap:4px 14px;margin-top:6px;font-size:12px;color:var(--text-muted);font-variant-numeric:tabular-nums;}.spend b{color:var(--text);font-weight:600;}.spend.quota{flex-direction:column;gap:0;}.usage-wrap{overflow-x:auto;margin:4px 0 12px;}.usage{width:auto;border-collapse:collapse;font-size:12px;font-variant-numeric:tabular-nums;}.usage th{text-align:right;font-weight:600;color:var(--text-muted);font-size:10.5px;white-space:nowrap;padding:6px 14px;border-bottom:1px solid var(--line2);vertical-align:bottom;}.usage td{text-align:right;padding:8px 14px;border-bottom:1px solid var(--line);white-space:nowrap;vertical-align:baseline;}.usage th:first-child,.usage td:first-child{padding-left:4px;}.usage td.l.jmono{font-size:12px;}.usage td.l:not(:first-child):not(.jmono){white-space:normal;min-width:12ch;}.usage th.l,.usage td.l{text-align:left;}.usage tr.hop td{padding-top:4px;padding-bottom:4px;color:var(--text-muted);}.usage tr.hop td:first-child{padding-left:28px;}.runchip{font-size:11px;padding:2px 9px;border-radius:999px;border:1px solid var(--line2);color:var(--text-2);}.runchip.ok>[aria-hidden]{color:var(--status-done);font-weight:700;}.runchip.part{border-color:color-mix(in srgb,var(--status-attention) 45%,transparent);background:var(--status-attention-bg);}.runchip.part>[aria-hidden]{color:var(--status-attention);font-weight:700;}.runchip.bad{border-color:color-mix(in srgb,var(--status-failed) 45%,transparent);color:var(--status-failed);background:var(--status-failed-bg);}.io-fold{margin-top:6px;}.io-fold>summary,.launch>summary{cursor:pointer;color:var(--text-muted);}.searches{margin:4px 0 0;padding-left:22px;}.unread{color:var(--status-attention);margin-top:4px;}.qlink{background:none;border:0;padding:0;color:var(--accent);cursor:pointer;text-align:left;font:inherit;}.qlink:hover{text-decoration:underline;}.tviews{flex:none;display:flex;flex-wrap:wrap;gap:4px;margin:2px 0 8px;border-bottom:1px solid var(--line);}@container (max-width:480px){.tviews{gap:0;}.tview{padding:6px 10px;}}.tview{background:none;border:0;border-bottom:2px solid transparent;color:var(--text-muted);padding:6px 14px;cursor:pointer;}.tview:hover{color:var(--text-2);}.tview.sel{color:var(--text);border-bottom-color:var(--accent);}.tview .badge{margin-left:6px;font-size:10px;padding:0 6px;border-radius:999px;background:var(--raise);color:var(--text-2);}.pane{flex:1 1 auto;min-height:0;overflow:auto;position:relative;}.upstream{margin-bottom:12px;}.up-hd{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;margin:2px 0 6px;}.down{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:6px;}.lineage{font-size:11px;color:var(--text-2);border:1.5px solid var(--line2);border-radius:999px;padding:0 7px;white-space:nowrap;}.lineage[data-lineage='after']{border-style:dotted;}.lineage[data-lineage='created_from']{border-style:dashed;}.notrans{flex:1 1 auto;border:1px solid var(--line);border-radius:14px;}details.upstream>summary{cursor:pointer;list-style:none;}details.upstream>summary::-webkit-details-marker{display:none;}.params td{vertical-align:top;}.from{color:var(--text-muted);white-space:nowrap;}`,Wp=class extends N{constructor(...e){super(...e),this.baseUrl=``,this.run=``,this.taskKey=null,this.view=`transcript`,this.round=null,this.live=!1,this.journal=[],this.plan=null,this.exported=!1,this.replayMarks=!1,this.detail=new Qf(this),this.launches=[],this.shownRound=-1,this.rounds=[],this.outcomes=new Map}static{this.styles=[V,Ll,Wo,Kd,Up]}willUpdate(e){(e.has(`run`)||e.has(`taskKey`)||e.has(`client`))&&(this.detail.load(this.client,this.run,this.taskKey),this.launches=[],this.shownRound=-1,this.rounds=[]),this.outcomes=this.plan?S(this.journal,this.plan).outcomes:new Map}shownView(e){return this.view===`transcript`&&kp(e)&&!e.stream?`output`:this.view}revealSearch(e,t){let n=this.transcriptEl?.revealWebSearch(e,t);$(this,`ca-navigate`,n?{view:`transcript`,round:n.round}:{view:`transcript`})}render(){let e=this.taskKey;if(!e)return A`<div class="blank"><span class="ic" aria-hidden="true">✦</span><b>${D(`No task selected`)}</b></div>`;let t=this.detail.value;if(!t)return A`<div class="taskmeta meta"><strong>${e}</strong> ${D(`Loading…`)}</div>`;let n={host:this,run:this.run,detail:t,live:t.launches.length>0&&this.live,journal:this.journal,plan:this.plan,outcomes:this.outcomes,launches:this.launches,shownRound:this.shownRound,rounds:this.rounds,exported:this.exported,replayMarks:this.replayMarks},r=this.shownView(t);return A`${function(e,t,n){let r=e.detail,i=e.live,{rows:a,launches:o}=r,s=kp(r),c=Ap(r),l=a.slice().sort((e,t)=>String(e.ts).localeCompare(String(t.ts))),d=l[l.length-1],p=o[0],m={agent:sp(p?.cmd?p.cmd.split(` `)[0]:d?.agent),model:p?.model||d?.model||Lp(e),role:p?.role||``},h=c?[...new Set(l.map(e=>e.model).filter(e=>!!e&&e!==m.model))]:[],g=a[0],_=a.filter(f),v=ns(ts(_)),y=Object.entries(r).filter(([e])=>!Ip.has(e)),[b,x]=function(e){let t=e.detail.rows,n=t.filter(f),r=t[t.length-1],i=jp(e);switch(i){case`running`:return[D(`Running`),`neutral`];case`waiting`:{let t=e.plan?.nodes.find(t=>t.key===e.detail.key),n=t?.deferred?Us(t.deferred_cause,t.deferred,u(e.plan,t.deferred_cause)):``;return n?[D(E`Not run: ${n}`),`attention`]:[D(`Waiting`),`muted`]}case`skipped`:return[D(`Skipped`),`muted`];case`not_started`:{let t=function(e){let t=e.detail,n=hs(e.outcomes.get(t.key)??{attempts:t.rows,cause:null},e.outcomes,e.run,t=>Mp(e,t)?.key);if(n)return n;let r=Re(t.rows[t.rows.length-1]?.reason)[0],i=r?Mp(e,r.path):void 0;return r?ms(T(r.path,e.run),r.problem,i?{name:J(i)}:void 0):``}(e);return[D(t?E`Not started: ${t}`:`Not started`),`attention`]}case`partial`:{let t=r?.reason&&ls(r.reason)?Q(r.reason):T(r?.reason,e.run);return[D(t?E`Partly done: ${t}`:`Partly done`),`attention`]}case`failed`:{let t=T(r?.reason,e.run)||Q(r?.stop);return[n.length>1?D(E`Failed on all ${n.length} attempts: ${t}`):D(E`Failed: ${t}`),`failed`]}}if(!r)return[is(i),`neutral`];let a=n.filter(e=>!e.ok);if(a.length){let t=T(a[0]?.reason,e.run)||Q(a[0]?.stop);return[a.length===1?D(E`Done on attempt ${n.length} | 1 failed attempt | first failure: ${t}`):D(E`Done on attempt ${n.length} | ${a.length} failed attempts | first failure: ${t}`),`neutral`]}let o=Wl(r);if(o>0){let t=[...(r.hook_errors??[]).flat(),...(r.round_errors??[]).flat(),...e.rounds.flatMap(e=>e.rejectedWith)],n=t[0]?rp(T(t[0],e.run)):``;return n?[D(o===1?E`Done after 1 correction | first failed check: ${n}`:E`Done after ${o} corrections | first failed check: ${n}`),`neutral`]:[D(o===1?`Done after 1 correction`:E`Done after ${o} corrections`),`neutral`]}let s=Js(r.hops,null,r.skipped_hops);return s?[D(E`Done after a model switch: ${s}`),`neutral`]:[D(`Done`),`neutral`]}(e),S=D(s?`Python task`:`Agent task`),C=e.plan?.nodes.find(e=>e.key===r.key);return A`<div class="taskmeta">
790
790
  <div class="tm-head">
791
- ${Pd(s,S,`tm-av `+(s?`py`:``))}
791
+ ${Gd(s,S,`tm-av `+(s?`py`:``))}
792
792
  <div style="min-width:0">
793
793
  <div class="tm-name" title=${t}>${g?J(g):C?J(C):t.replace(/^python:/,``)} ${i?Zr({text:D(`running`),tone:`running`}):M}</div>
794
794
  <div class="verdict" data-tone=${L(x)}>${b}</div>
795
- ${C?.claims?.length?A`<div class="meta" title=${pc()}>
795
+ ${C?.claims?.length?A`<div class="meta" title=${mc()}>
796
796
  ${D(`Locks`)} ${C.claims.map(e=>Zr({text:e}))}
797
797
  </div>`:M}
798
- ${C?.priority?A`<div class="meta" title=${Bc()}>${zc(C.priority)}</div>`:M}
799
- ${function(e,t){let n=e.map(e=>!!e.rerun).lastIndexOf(!0),r=n>=0?al(e,n):t?{text:t,changed:[],divergence:t.startsWith(`divergence`)}:null;return r?A`<div class="meta rerun" title=${r.text}>${cl(r)}${r.divergence?A` <span class="divergence" title=${D(`The flow gave other params for the same outputs of the tasks before it (divergence): a clock, randomness, outside state or changed flow code`)}>${Zr({text:sl(),tone:`attention`})}</span>`:M}</div>`:M}(a,C?.rerun)}
800
- ${function(e){let t=(e.plan?.flow_calls??[]).filter(t=>t.raised_by===e.detail.key);return t.length?A`${t.map(t=>A`<div class="meta stopped" title=${t.error??``}>${ul(t,e.run)}</div>`)}`:M}(e)}
798
+ ${C?.priority?A`<div class="meta" title=${Vc()}>${Bc(C.priority)}</div>`:M}
799
+ ${C?.cwd?A`<div class="meta" title=${D(`Directory the task worked in, named by its task call in place of the run's (cwd)`)}>${ee=C.cwd,ee?D(E`Working directory ${ee}`):``}</div>`:M}
800
+ ${function(e,t){let n=e.map(e=>!!e.rerun).lastIndexOf(!0),r=n>=0?ol(e,n):t?{text:t,changed:[],divergence:t.startsWith(`divergence`)}:null;return r?A`<div class="meta rerun" title=${r.text}>${ll(r)}${r.divergence?A` <span class="divergence" title=${D(`The flow gave other params for the same outputs of the tasks before it (divergence): a clock, randomness, outside state or changed flow code`)}>${Zr({text:cl(),tone:`attention`})}</span>`:M}</div>`:M}(a,C?.rerun)}
801
+ ${function(e){let t=(e.plan?.flow_calls??[]).filter(t=>t.raised_by===e.detail.key);return t.length?A`${t.map(t=>A`<div class="meta stopped" title=${t.error??``}>${dl(t,e.run)}</div>`)}`:M}(e)}
801
802
  ${c?A`<div class="whos">
802
- ${Uo([...cp(m),...Ip(_)])}
803
+ ${Uo([...up(m),...Rp(_)])}
803
804
  ${h.length?A`<span class="meta">${D(h.length===1?E`Earlier attempts used model ${h[0]??``}`:E`Earlier attempts used models ${q(h)}`)}</span>`:M}
804
805
  </div>`:M}
805
806
  ${o.length?A`<div class="meta">${o.length===1?D(`1 agent session running`):D(E`${o.length} agent sessions running`)}</div>`:M}
@@ -807,8 +808,8 @@ ${function(e,t){if(!e)return M;let n=function(e){let t=null;for(let n of e){let
807
808
  <b title=${D(`Reported by the coding agent`)}>${X(e.cost)}</b>
808
809
  <span>${D(E`Tokens: ${Y(e.input)} input, ${Y(e.output)} output, ${Y(e.cache_read)} cache read, ${Y(e.cache_creation)} cache write`)}</span>
809
810
  <span>${e.calls===1?D(`1 API call`):D(E`${e.calls} API calls`)}</span>
810
- ${n?A`<span title=${Hc()}>${Uc(n)}</span>`:M}
811
- ${r?A`<span class="tone-text" data-tone="attention" title=${Gc()}>${Wc(r)}</span>`:M}
811
+ ${n?A`<span title=${Uc()}>${Wc(n)}</span>`:M}
812
+ ${r?A`<span class="tone-text" data-tone="attention" title=${Kc()}>${Gc(r)}</span>`:M}
812
813
  </div>`}(Ee(a),_)}
813
814
  ${function(e,t){let n=Pe(e.journal.length?e.journal:t),r=t[0],i=t[t.length-1],a=r?Le(r,n).start:null;if(!a||!i)return M;let o=Le(i,n).next;return A`<div class="spend quota">
814
815
  <span title=${Ms(a)}>${D(E`Usage at session start: ${js(a)}`)}</span>
@@ -816,11 +817,11 @@ ${o?A`<span title=${Ms(o)}>${D(E`Usage after this task: ${js(o)}`)}</span>`:M}
816
817
  </div>`}(e,_)}
817
818
  </div>
818
819
  </div>
819
- ${_.length?A`<div class="runchips">${vs(_).map((t,n)=>function(e,t,n,r,i){let a=t.stop===`partial`?`part`:t.ok?`ok`:`bad`,o=e.detail.rows,s=al(o,o.indexOf(t)),c=!!e.replayMarks&&!!t.replayed,l=T(t.reason,e.run),u=Js(t.hops,null,t.skipped_hops),d=t.safety_stops?.length?$c(t.safety_stops.length):``,f=[D(E`Ended ${G(t.ts,!0)}`),Mp(t),r&&t.model?D(E`Model ${t.model}`):``,u?D(E`Model switch: ${u}`):``,Uc(t),t.context_warned?Wc(t):``,l,t.route||``,c?ic():``,s?cl(s):``,...vc(t,i).map(([e,t])=>`${e}: ${t}`)].filter(Boolean).join(`
820
+ ${_.length?A`<div class="runchips">${vs(_).map((t,n)=>function(e,t,n,r,i){let a=t.stop===`partial`?`part`:t.ok?`ok`:`bad`,o=e.detail.rows,s=ol(o,o.indexOf(t)),c=!!e.replayMarks&&!!t.replayed,l=T(t.reason,e.run),u=Js(t.hops,null,t.skipped_hops),d=t.safety_stops?.length?el(t.safety_stops.length):``,f=[D(E`Ended ${G(t.ts,!0)}`),Pp(t),r&&t.model?D(E`Model ${t.model}`):``,u?D(E`Model switch: ${u}`):``,Wc(t),t.context_warned?Gc(t):``,l,t.route||``,c?ac():``,s?ll(s):``,...yc(t,i).map(([e,t])=>`${e}: ${t}`)].filter(Boolean).join(`
820
821
  `),p=t.cost_usd!==null&&t.cost_usd!==void 0?X(t.cost_usd):``;return A`<span class="runchip ${a}" title=${f}>
821
- ${(e=>e.stop===`partial`?A`<span aria-hidden="true">◌</span><span class="sr">${is(`partial`)}</span>`:A`<span aria-hidden="true">${e.ok?`✓`:`✕`}</span><span class="sr">${e.ok?D(`passed`):D(`failed`)}</span>`)(t)} ${K(n,Q(t.stop,t.reason),B(t.wall_s),p,d,c?rc():``,s?.divergence?sl():``)}
822
+ ${(e=>e.stop===`partial`?A`<span aria-hidden="true">◌</span><span class="sr">${is(`partial`)}</span>`:A`<span aria-hidden="true">${e.ok?`✓`:`✕`}</span><span class="sr">${e.ok?D(`passed`):D(`failed`)}</span>`)(t)} ${K(n,Q(t.stop,t.reason),B(t.wall_s),p,d,c?ic():``,s?.divergence?cl():``)}
822
823
  </span>`}(e,_[n],t,c,r.row_extras??[]))}</div>`:M}
823
- ${function(e,t){let n=e[e.length-1],r=n?vc(n,t):[];if(!r.length)return M;let i=gc();return A`<div class="whos">${Uo(r.map(([e,t])=>({label:e,value:t,tip:i,look:`quiet`})))}</div>`}(_,r.row_extras??[])}
824
+ ${function(e,t){let n=e[e.length-1],r=n?yc(n,t):[];if(!r.length)return M;let i=_c();return A`<div class="whos">${Uo(r.map(([e,t])=>({label:e,value:t,tip:i,look:`quiet`})))}</div>`}(_,r.row_extras??[])}
824
825
  ${function(e,t){let n=e.flatMap(e=>e.web_queries??[]),r=new Map;return n.length?A`<details class="io-fold">
825
826
  <summary>${n.length===1?D(`1 web search`):D(E`${n.length} web searches`)}</summary>
826
827
  <ol class="meta searches">
@@ -833,8 +834,8 @@ ${function(e){let t=vs(e),n=e.filter(e=>e.changes).length,r=e.flatMap((e,r)=>{le
833
834
  <summary title=${D(`Files under the task's declared patterns that its attempts created, modified or deleted (changes)`)}>${i=r.length,D(i===1?`1 changed file`:E`${i} changed files`)}</summary>
834
835
  <ul class="meta searches jmono">${r.map(e=>A`<li>${e}</li>`)}</ul>
835
836
  </details>`:A`<div class="meta">${D(`No changed files`)}</div>`:M;var i}(_)}
836
- ${function(e){let t=vs(e),n=e.filter(e=>e.safety_stops?.length).length;if(!n)return M;let r=e.flatMap((e,r)=>(e.safety_stops??[]).map(e=>K(n>1?t[r]??``:``,nl(e))));return A`<details class="io-fold">
837
- <summary title=${el()}>${$c(r.length)}</summary>
837
+ ${function(e){let t=vs(e),n=e.filter(e=>e.safety_stops?.length).length;if(!n)return M;let r=e.flatMap((e,r)=>(e.safety_stops??[]).map(e=>K(n>1?t[r]??``:``,rl(e))));return A`<details class="io-fold">
838
+ <summary title=${tl()}>${el(r.length)}</summary>
838
839
  <ul class="meta searches">${r.map(e=>A`<li>${e}</li>`)}</ul>
839
840
  </details>`}(_)}
840
841
  ${rs(_)?A`<div class="meta unread" title=${D(`Event types this contraagent version does not know (unread_events)`)}>
@@ -847,44 +848,44 @@ ${o.map(e=>A`<details class="launch">
847
848
  <div class="meta">${K(D(E`Plugin ${e.plugin||D(`none`,{id:`none`})}`),D(E`Model ${e.model||`—`}`),D(E`Role ${e.role||D(`none`,{id:`none`})}`))}</div>
848
849
  </details>`)}
849
850
  ${y.map(([e,t])=>A`<details class="io-fold"><summary>${e}</summary><cae-json-tree .value=${t}></cae-json-tree></details>`)}
850
- </div>`}(n,e,(e,t)=>this.revealSearch(e,t))} ${this.renderViews(t,r)}
851
- ${t.stream?A`<ca-transcript .run=${this.run} .stream=${t.stream} base-url=${this.baseUrl} .client=${this.client} .live=${n.live} .rows=${t.rows} .round=${this.round} mode=${r===`transcript`?`full`:r===`input`?`tabs`:`none`} @ca-rounds=${e=>{this.launches=e.detail.launches,this.shownRound=e.detail.shown,this.rounds=e.detail.rounds}}></ca-transcript>`:r===`transcript`?function(e){let t=e.detail,n=kp(e);if(n===`not_started`){let t=function(e){let t=e.detail,n=Re(t.rows[t.rows.length-1]?.reason)[0],r=n?.producer?e.outcomes.get(n.producer):void 0;if(r)return r;let i=n?Ap(e,n.path):void 0;if(i)return i;let a=e.outcomes.get(t.key)?.cause;return a?e.outcomes.get(a):void 0}(e);return A`<div class="blank notrans"><span class="ic" aria-hidden="true">⊘</span><b>${K(D(`No transcript`),is(n))}</b>
852
- ${t?A`<span>${D(A`Earlier task ${bl(e.host,J(t),t)}`)}</span>`:M}</div>`}if(e.exported&&Op(t))return A`<div class="blank notrans"><span class="ic" aria-hidden="true">✦</span><b>${K(D(`No transcript`),kc())}</b></div>`;if(Op(t))return A`<div class="blank notrans"><span class="ic" aria-hidden="true">✦</span><b>${K(D(`No transcript`),D(`not saved (keep_transcripts = false)`))}</b></div>`;let r=n===`waiting`&&!!e.plan?.nodes.find(e=>e.key===t.key)?.deferred;return A`<div class="blank notrans"><span class="ic" aria-hidden="true">✦</span><b>${K(D(`No transcript`),r?as(n,!1):is(n))}</b></div>`}(n):M}
853
- ${r===`transcript`?M:A`<div class="pane">${this.renderPane(n,r)}</div>`}`}renderViews(e,t){let n=e.io,r=Dp(e)&&!e.stream,i={input:new Set([...n.inputs.map(e=>e.path),...(n.input_files??[]).map(e=>e.path),...n.upstream.filter(Up).flatMap(e=>e.outputs.map(e=>e.path))]).size+Object.keys(n.params).length,output:n.outputs.length};return A`<div class="tviews" role="tablist">
851
+ </div>`;var ee}(n,e,(e,t)=>this.revealSearch(e,t))} ${this.renderViews(t,r)}
852
+ ${t.stream?A`<ca-transcript .run=${this.run} .stream=${t.stream} base-url=${this.baseUrl} .client=${this.client} .live=${n.live} .rows=${t.rows} .round=${this.round} mode=${r===`transcript`?`full`:r===`input`?`tabs`:`none`} @ca-rounds=${e=>{this.launches=e.detail.launches,this.shownRound=e.detail.shown,this.rounds=e.detail.rounds}}></ca-transcript>`:r===`transcript`?function(e){let t=e.detail,n=jp(e);if(n===`not_started`){let t=function(e){let t=e.detail,n=Re(t.rows[t.rows.length-1]?.reason)[0],r=n?.producer?e.outcomes.get(n.producer):void 0;if(r)return r;let i=n?Mp(e,n.path):void 0;if(i)return i;let a=e.outcomes.get(t.key)?.cause;return a?e.outcomes.get(a):void 0}(e);return A`<div class="blank notrans"><span class="ic" aria-hidden="true">⊘</span><b>${K(D(`No transcript`),is(n))}</b>
853
+ ${t?A`<span>${D(A`Earlier task ${xl(e.host,J(t),t)}`)}</span>`:M}</div>`}if(e.exported&&Ap(t))return A`<div class="blank notrans"><span class="ic" aria-hidden="true">✦</span><b>${K(D(`No transcript`),Ac())}</b></div>`;if(Ap(t))return A`<div class="blank notrans"><span class="ic" aria-hidden="true">✦</span><b>${K(D(`No transcript`),D(`not saved (keep_transcripts = false)`))}</b></div>`;let r=n===`waiting`&&!!e.plan?.nodes.find(e=>e.key===t.key)?.deferred;return A`<div class="blank notrans"><span class="ic" aria-hidden="true">✦</span><b>${K(D(`No transcript`),r?as(n,!1):is(n))}</b></div>`}(n):M}
854
+ ${r===`transcript`?M:A`<div class="pane">${this.renderPane(n,r)}</div>`}`}renderViews(e,t){let n=e.io,r=kp(e)&&!e.stream,i={input:new Set([...n.inputs.map(e=>e.path),...(n.input_files??[]).map(e=>e.path),...n.upstream.filter(Gp).flatMap(e=>e.outputs.map(e=>e.path))]).size+Object.keys(n.params).length,output:n.outputs.length};return A`<div class="tviews" role="tablist">
854
855
  ${tr.filter(e=>!(r&&e===`transcript`)).map(e=>{let n={transcript:D(`Transcript`),input:D(`Input`),output:D(`Output`,{id:`view-output`}),definition:D(`Definition`)}[e];return A`<button type="button" role="tab" aria-selected=${e===t} class="tview ${e===t?`sel`:``}" @click=${()=>$(this,`ca-navigate`,{view:e})}>
855
856
  ${n}${i[e]?A`<span class="badge">${i[e]}</span>`:M}
856
857
  </button>`})}
857
- </div>`}renderPane(e,t){return t===`input`?function(e){let t=e.detail,n=t.io,r=Object.entries(n.params),{files:i,earlier:a}=function(e){let t=new Set(e.inputs.map(e=>e.path)),n=e.inputs.map(t=>{for(let n of e.upstream){let e=n.outputs.find(e=>e.path===t.path);if(e)return{spec:t,from:n,out:e}}return{spec:t,from:null,out:null}}),r=e.upstream.map(e=>({task:e,read:e.outputs.filter(e=>t.has(e.path)).length,rest:e.outputs.filter(e=>!t.has(e.path))})),i=e=>Number(e.task.outputs.some(Rp));return{files:n,earlier:[...r].sort((e,t)=>i(t)-i(e))}}(n);return A`<h4 class="sect-h">${D(`Parameters`)}</h4>
858
+ </div>`}renderPane(e,t){return t===`input`?function(e){let t=e.detail,n=t.io,r=Object.entries(n.params),{files:i,earlier:a}=function(e){let t=new Set(e.inputs.map(e=>e.path)),n=e.inputs.map(t=>{for(let n of e.upstream){let e=n.outputs.find(e=>e.path===t.path);if(e)return{spec:t,from:n,out:e}}return{spec:t,from:null,out:null}}),r=e.upstream.map(e=>({task:e,read:e.outputs.filter(e=>t.has(e.path)).length,rest:e.outputs.filter(e=>!t.has(e.path))})),i=e=>Number(e.task.outputs.some(Bp));return{files:n,earlier:[...r].sort((e,t)=>i(t)-i(e))}}(n);return A`<h4 class="sect-h">${D(`Parameters`)}</h4>
858
859
  ${r.length?A`<table class="ct-fields params">
859
860
  ${r.map(([t,r])=>{let i=(e=>n.upstream.find(t=>t.outputs.some(t=>t.file.exists&&((e,t)=>{try{return JSON.stringify(e)===JSON.stringify(t)}catch{return!1}})(t.file.content,e))))(r);return A`<tr>
860
861
  <td class="jmono">${t}</td>
861
862
  <td>${typeof r==`object`&&r?A`<cae-json-tree .value=${r} .open=${0}></cae-json-tree>`:A`<span class="jmono">${(e=>typeof e==`string`?e:JSON.stringify(e)??String(e))(r)}</span>`}</td>
862
- <td>${i?A`<span class="from">${D(A`From ${Np(e,i)}`)}</span>`:M}</td>
863
+ <td>${i?A`<span class="from">${D(A`From ${Fp(e,i)}`)}</span>`:M}</td>
863
864
  </tr>`})}
864
865
  </table>`:A`<div class="meta">${D(`No parameters`)}</div>`}
865
866
  <h4 class="sect-h">${D(`Input files`)}</h4>
866
- ${n.input_files?.length?n.input_files.map(t=>function(e,t){let n=t.check===`passed`?`done`:t.check===`refused`?`failed`:`neutral`,r=t.check===`passed`?`done`:t.check===`refused`?`failed`:`pending`,i=t.writer?e.detail.io.upstream.find(e=>e.key===t.writer)??e.outcomes.get(t.writer):void 0,a=t.writer?A`<span>${D(A`Output of ${Np(e,i??{key:t.writer,kind:t.writer,unit:``})}`)}</span>`:M;return A`<div class="io-card one infile">
867
- <div class="io-hd">${Zr({text:il(t.check),tone:n,mark:r})}<span class="jmono ct-path" title=${t.path}>${T(t.path,e.run)}</span></div>
867
+ ${n.input_files?.length?n.input_files.map(t=>function(e,t){let n=t.check===`passed`?`done`:t.check===`refused`?`failed`:`neutral`,r=t.check===`passed`?`done`:t.check===`refused`?`failed`:`pending`,i=t.writer?e.detail.io.upstream.find(e=>e.key===t.writer)??e.outcomes.get(t.writer):void 0,a=t.writer?A`<span>${D(A`Output of ${Fp(e,i??{key:t.writer,kind:t.writer,unit:``})}`)}</span>`:M,o=function(e){return e.root?e.root===`out`?`out/${e.path}`:`${e.root}: ${e.path}`:null}(t),s=t.root&&t.root!==`out`?(c=t.root,l=t.path,D(E`${l} in the input root ${c}`)):t.path;var c,l;return A`<div class="io-card one infile">
868
+ <div class="io-hd">${Zr({text:al(t.check),tone:n,mark:r})}<span class="jmono ct-path" title=${s}>${o??T(t.path,e.run)}</span></div>
868
869
  <div class="meta io-from"><span title=${t.sha256}>${K(D(E`Param ${t.param}`),`sha256 ${t.sha256.slice(0,12)}`)}</span>${t.writer?A` | ${a}`:M}</div>
869
870
  ${t.reason?A`<div class="meta err">${t.reason}</div>`:M}
870
871
  </div>`}(e,t)):A`<div class="meta">${D(`No input files`)}</div>`}
871
872
  ${i.length?A`<h4 class="sect-h">${D(`Checked files it reads`)}</h4>
872
- ${i.map(t=>function(e,t){let n=t.from,r=n?e.outcomes.get(n.key)?.outcome:void 0,i=n?A`<span>${D(A`Output of ${Np(e,n)}`)}</span>${r&&r!==`done`?zp(r):M}`:D(`File from before the run`),a=t.out?.status;if(!a)return Lp(t.spec,`input`,e.run,{origin:i});let o=Ol(a);return Lp({...t.spec,status:a},`input`,e.run,{origin:i,chip:o})}(e,t))}`:M}
873
+ ${i.map(t=>function(e,t){let n=t.from,r=n?e.outcomes.get(n.key)?.outcome:void 0,i=n?A`<span>${D(A`Output of ${Fp(e,n)}`)}</span>${r&&r!==`done`?Vp(r):M}`:D(`File from before the run`),a=t.out?.status;if(!a)return zp(t.spec,`input`,e.run,{origin:i});let o=kl(a);return zp({...t.spec,status:a},`input`,e.run,{origin:i,chip:o})}(e,t))}`:M}
873
874
  <h4 class="sect-h">${D(`Earlier tasks`)}</h4>
874
875
  ${a.length?a.map(t=>function(e,t){let n=t.task,r=w(n)?D(`Python task`):D(`Agent task`),i=e.outcomes.get(n.key)?.outcome,a=n.outputs.length,o=a?K(D(a===1?`1 output file`:E`${a} output files`),t.read?t.read===1?D(`1 read by this task`):D(E`${t.read} read by this task`):``):D(`No output files`),s=A`<div class="up-hd">
875
- ${Pd(w(n),r)}
876
- ${Np(e,n)}
877
- ${i?zp(i):M}
878
- ${Bp(n.lineage??[])}
876
+ ${Gd(w(n),r)}
877
+ ${Fp(e,n)}
878
+ ${i?Vp(i):M}
879
+ ${Hp(n.lineage??[])}
879
880
  <span class="meta">${o}</span>
880
- </div>`;if(!t.rest.length)return A`<div class="upstream">${s}</div>`;let c=t.rest.map(t=>Lp(t,`output`,e.run,{producerOf:jp(e)}));return t.rest.some(Rp)?A`<div class="upstream">${s}${c}</div>`:A`<details class="upstream"><summary>${s}</summary>${c}</details>`}(e,t)):A`<div class="meta">${D(`No earlier tasks`)}</div>`}
881
- ${Dp(t)?M:function(e){let t=e.detail,n=e.launches.length,r=e.shownRound,i=e.rounds[r],a=e.rounds[e.rounds.length-1]?.tryNo??1,o=t.rows.filter(f),s=vs(o),c=ce(o),l=e.launches[r]?.prompt??``,u=kp(e);return A`<h4 class="sect-h">${D(`Prompt`)}${n>1&&i?A` <span class="meta">${np(i,a,s[i.tryNo-1])}: ${function(e,t=!1){return e.fixupNo?D(`same agent session, after failed checks`):e.hopNo?D(`new agent session on the next model`):e.tryNo>1&&t?D(`new agent session in the resumed run`):e.tryNo>1?D(E`new agent session after attempt ${e.tryNo-1} failed`):D(`first agent session`)}(i,c[i.tryNo-1]!==c[i.tryNo-2])}</span>`:M}</h4>
882
- ${l?Tp(l):A`<div class="meta">${t.stream?D(`Loading…`):Op(t)?K(D(`No prompt`),D(`not saved (keep_transcripts = false)`)):K(D(`No prompt`),is(u))}</div>`}`}(e)}`}(e):t===`output`?function(e){let t=e.detail,n=t.io,r=t.rows[t.rows.length-1];return A`<h4 class="sect-h">${D(`Output files`)}</h4>
883
- ${n.outputs.length?n.outputs.map(t=>Lp(t,`output`,e.run,{producerOf:jp(e)})):A`<div class="meta">${D(`No output files`)}</div>`}
881
+ </div>`;if(!t.rest.length)return A`<div class="upstream">${s}</div>`;let c=t.rest.map(t=>zp(t,`output`,e.run,{producerOf:Np(e)}));return t.rest.some(Bp)?A`<div class="upstream">${s}${c}</div>`:A`<details class="upstream"><summary>${s}</summary>${c}</details>`}(e,t)):A`<div class="meta">${D(`No earlier tasks`)}</div>`}
882
+ ${kp(t)?M:function(e){let t=e.detail,n=e.launches.length,r=e.shownRound,i=e.rounds[r],a=e.rounds[e.rounds.length-1]?.tryNo??1,o=t.rows.filter(f),s=vs(o),c=ce(o),l=e.launches[r]?.prompt??``,u=jp(e);return A`<h4 class="sect-h">${D(`Prompt`)}${n>1&&i?A` <span class="meta">${ip(i,a,s[i.tryNo-1])}: ${function(e,t=!1){return e.fixupNo?D(`same agent session, after failed checks`):e.hopNo?D(`new agent session on the next model`):e.tryNo>1&&t?D(`new agent session in the resumed run`):e.tryNo>1?D(E`new agent session after attempt ${e.tryNo-1} failed`):D(`first agent session`)}(i,c[i.tryNo-1]!==c[i.tryNo-2])}</span>`:M}</h4>
883
+ ${l?Dp(l):A`<div class="meta">${t.stream?D(`Loading…`):Ap(t)?K(D(`No prompt`),D(`not saved (keep_transcripts = false)`)):K(D(`No prompt`),is(u))}</div>`}`}(e)}`}(e):t===`output`?function(e){let t=e.detail,n=t.io,r=t.rows[t.rows.length-1];return A`<h4 class="sect-h">${D(`Output files`)}</h4>
884
+ ${n.outputs.length?n.outputs.map(t=>zp(t,`output`,e.run,{producerOf:Np(e)})):A`<div class="meta">${D(`No output files`)}</div>`}
884
885
  ${r?A`<h4 class="sect-h">${D(`Outcome`)}</h4>
885
886
  <div class="ct-in">
886
887
  ${Zr({text:Q(r.stop,r.reason),tone:us(r.stop)})}
887
- ${f(r)?A`<span class="meta">${K(_s(r.attempt),B(r.wall_s),Mp(r))}</span>`:M}
888
+ ${f(r)?A`<span class="meta">${K(_s(r.attempt),B(r.wall_s),Pp(r))}</span>`:M}
888
889
  </div>`:M}
889
890
  ${function(e,t){let n=t.filter(e=>f(e)&&(e.usage||e.cost_usd!==null&&e.cost_usd!==void 0));if(!n.length)return M;let r=A`<td class="jdim">—</td>`,i=Pe(e.journal.length?e.journal:t),a=n.some(e=>(e.quota??[]).length),o=A`<td class="l jdim">—</td>`,s=(e,t)=>e?A`<td class="l" title=${Ms(e)}>${(e.credential??``)===(t??``)?js(e):Ns(e)}</td>`:o;return A`<h4 class="sect-h">${D(`Tokens and cost`)}</h4>
890
891
  <div class="usage-wrap" data-scroll="x"><table class="usage">
@@ -908,19 +909,19 @@ ${a?A`<td></td><td></td>`:M}
908
909
  </tr>`):M}`})}
909
910
  </table></div>`}(e,t.rows)}
910
911
  <h4 class="sect-h">${D(`Later tasks`)}</h4>
911
- ${n.downstream.length?function(e,t){let n=[`given_from`,`after`,`created_from`];return[...n,null].map(e=>[e,t.filter(t=>(e=>n.find(t=>(e.lineage??[]).includes(t))??null)(t)===e)]).filter(([,e])=>e.length).map(([t,n])=>A`<div class="down">${t?Bp([t]):M}${n.map(t=>bl(e.host,J(t),t))}</div>`)}(e,n.downstream):A`<div class="meta">${D(`No later tasks`)}</div>`}`}(e):(e=>A`<ca-definition .definition=${e.detail.definition??null} memory="task-definition"></ca-definition>`)(e)}};U([F({attribute:!1})],Hp.prototype,`client`,void 0),U([F({attribute:`base-url`})],Hp.prototype,`baseUrl`,void 0),U([F()],Hp.prototype,`run`,void 0),U([F({attribute:!1})],Hp.prototype,`taskKey`,void 0),U([F()],Hp.prototype,`view`,void 0),U([F({attribute:!1})],Hp.prototype,`round`,void 0),U([F({type:Boolean})],Hp.prototype,`live`,void 0),U([F({attribute:!1})],Hp.prototype,`journal`,void 0),U([F({attribute:!1})],Hp.prototype,`plan`,void 0),U([F({type:Boolean})],Hp.prototype,`exported`,void 0),U([F({type:Boolean,attribute:`replay-marks`})],Hp.prototype,`replayMarks`,void 0),U([bn(`ca-transcript`)],Hp.prototype,`transcriptEl`,void 0),U([I()],Hp.prototype,`launches`,void 0),U([I()],Hp.prototype,`shownRound`,void 0),U([I()],Hp.prototype,`rounds`,void 0),Hp=U([P(`ca-task-view`),O()],Hp);var Up=e=>!e.lineage?.length||e.lineage.some(e=>e!==`created_from`),Wp=class extends N{constructor(){super(),new Fr(this)}createRenderRoot(){return this}render(){return new Date().toLocaleTimeString(An(),{hour12:!1})}};Wp=U([P(`ca-clock`),O()],Wp);var Gp=()=>D(`Runs`,{id:`col-runs`}),Kp=class extends N{constructor(...e){super(...e),this.hosts=null}static{this.styles=[V,k` :host{display:block;container-type:inline-size;}.g12{align-content:start;}table{width:100%;border-collapse:collapse;font-size:12.5px;}th,td{text-align:start;padding:8px 10px;border-top:1px solid var(--line);vertical-align:baseline;}thead th{border-top:0;font-size:11.5px;font-weight:600;color:var(--text-muted);white-space:nowrap;}tbody th{font-family:var(--mono);font-weight:600;color:var(--text);overflow-wrap:anywhere;}.num{font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap;}td.runs{color:var(--text-2);}@container (max-width:640px){thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);}tr{display:block;padding:8px 0;border-top:1px solid var(--line);}tbody tr:first-child{border-top:0;}th,td{display:flex;gap:12px;padding:2px 0;border:0;white-space:normal;}td::before{content:attr(data-label);flex:0 0 9em;color:var(--text-muted);font-family:var(--sans);font-size:11.5px;}}`]}row(e){let t=!e.up;return A`<tr>
912
+ ${n.downstream.length?function(e,t){let n=[`given_from`,`after`,`created_from`];return[...n,null].map(e=>[e,t.filter(t=>(e=>n.find(t=>(e.lineage??[]).includes(t))??null)(t)===e)]).filter(([,e])=>e.length).map(([t,n])=>A`<div class="down">${t?Hp([t]):M}${n.map(t=>xl(e.host,J(t),t))}</div>`)}(e,n.downstream):A`<div class="meta">${D(`No later tasks`)}</div>`}`}(e):(e=>A`<ca-definition .definition=${e.detail.definition??null} memory="task-definition"></ca-definition>`)(e)}};U([F({attribute:!1})],Wp.prototype,`client`,void 0),U([F({attribute:`base-url`})],Wp.prototype,`baseUrl`,void 0),U([F()],Wp.prototype,`run`,void 0),U([F({attribute:!1})],Wp.prototype,`taskKey`,void 0),U([F()],Wp.prototype,`view`,void 0),U([F({attribute:!1})],Wp.prototype,`round`,void 0),U([F({type:Boolean})],Wp.prototype,`live`,void 0),U([F({attribute:!1})],Wp.prototype,`journal`,void 0),U([F({attribute:!1})],Wp.prototype,`plan`,void 0),U([F({type:Boolean})],Wp.prototype,`exported`,void 0),U([F({type:Boolean,attribute:`replay-marks`})],Wp.prototype,`replayMarks`,void 0),U([bn(`ca-transcript`)],Wp.prototype,`transcriptEl`,void 0),U([I()],Wp.prototype,`launches`,void 0),U([I()],Wp.prototype,`shownRound`,void 0),U([I()],Wp.prototype,`rounds`,void 0),Wp=U([P(`ca-task-view`),O()],Wp);var Gp=e=>!e.lineage?.length||e.lineage.some(e=>e!==`created_from`),Kp=class extends N{constructor(){super(),new Fr(this)}createRenderRoot(){return this}render(){return new Date().toLocaleTimeString(An(),{hour12:!1})}};Kp=U([P(`ca-clock`),O()],Kp);var qp=()=>D(`Runs`,{id:`col-runs`}),Jp=class extends N{constructor(...e){super(...e),this.hosts=null}static{this.styles=[V,k` :host{display:block;container-type:inline-size;}.g12{align-content:start;}table{width:100%;border-collapse:collapse;font-size:12.5px;}th,td{text-align:start;padding:8px 10px;border-top:1px solid var(--line);vertical-align:baseline;}thead th{border-top:0;font-size:11.5px;font-weight:600;color:var(--text-muted);white-space:nowrap;}tbody th{font-family:var(--mono);font-weight:600;color:var(--text);overflow-wrap:anywhere;}.num{font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap;}td.runs{color:var(--text-2);}@container (max-width:640px){thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);}tr{display:block;padding:8px 0;border-top:1px solid var(--line);}tbody tr:first-child{border-top:0;}th,td{display:flex;gap:12px;padding:2px 0;border:0;white-space:normal;}td::before{content:attr(data-label);flex:0 0 9em;color:var(--text-muted);font-family:var(--sans);font-size:11.5px;}}`]}row(e){let t=!e.up;return A`<tr>
912
913
  <th scope="row">${e.host_id}</th>
913
- <td data-label=${D(`Status`)}>${Qr({text:sc(e),tone:t?`attention`:`done`})}</td>
914
+ <td data-label=${D(`Status`)}>${Qr({text:cc(e),tone:t?`attention`:`done`})}</td>
914
915
  <td data-label=${D(`Last report`)} class="num" title=${e.last_seen}>${G(e.last_seen,!0)||`—`}</td>
915
916
  <td data-label=${D(`Report interval`)} class="num">${e.interval_s==null?`—`:B(e.interval_s)}</td>
916
- <td data-label=${Gp()} class="runs" ><span>${uc(e.runs)}${e.running?A` | ${D(E`${e.running} running`)}`:M}${e.unresponsive?A` | <span class="tone-text" data-tone="attention">${n=e.unresponsive,D(E`${n} with no report from host`)}</span>`:M}</span></td >
917
+ <td data-label=${qp()} class="runs" ><span>${dc(e.runs)}${e.running?A` | ${D(E`${e.running} running`)}`:M}${e.unresponsive?A` | <span class="tone-text" data-tone="attention">${n=e.unresponsive,D(E`${n} with no report from host`)}</span>`:M}</span></td >
917
918
  </tr>`;var n}render(){let e=this.hosts?.hosts??[],t=this.hosts?.quota??[];return A`<div class="g12">
918
919
  <section class="panel c12 enter">
919
- <h3>${D(`Hosts`)}<span class="r">${dc(e)}</span></h3>
920
+ <h3>${D(`Hosts`)}<span class="r">${fc(e)}</span></h3>
920
921
  ${e.length?A`<table>
921
922
  <thead><tr>
922
923
  <th scope="col">${D(`Host`)}</th><th scope="col">${D(`Status`)}</th><th scope="col">${D(`Last report`)}</th>
923
- <th scope="col">${D(`Report interval`)}</th><th scope="col">${Gp()}</th>
924
+ <th scope="col">${D(`Report interval`)}</th><th scope="col">${qp()}</th>
924
925
  </tr></thead>
925
926
  <tbody>${e.map(e=>this.row(e))}</tbody>
926
927
  </table>`:A`<div class="meta">${D(`No hosts`)}</div>`}
@@ -930,7 +931,7 @@ ${t.length?A`<section class="panel c12 enter">
930
931
  ${D(`Subscription usage`)}<span class="r">${D(`Per account, first → last reading`)}</span></h3>
931
932
  <ca-quota .accounts=${t} .rests=${t.flatMap(e=>e.rests??[])} live></ca-quota>
932
933
  </section>`:M}
933
- </div>`}};U([F({attribute:!1})],Kp.prototype,`hosts`,void 0),Kp=U([P(`ca-hosts`),O()],Kp);var qp=e=>`run-${e}`,Jp=class extends N{constructor(...e){super(...e),this.runs=[],this.current=``,this.open=!1,this.hub=!1,this.hosts=[],this.page=``,this.q=``,this.host=``,this.kb=-1}static{this.styles=[V,k` :host{position:absolute;top:50px;width:min(580px,calc(100cqi - 24px));max-height:min(72vh,660px);display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--line2);border-radius:14px;box-shadow:0 24px 70px color-mix(in srgb,var(--shadow) 70%,transparent);opacity:0;transform:translateY(-6px) scale(0.985);pointer-events:none;z-index:40;visibility:hidden;container-type:inline-size;transition:opacity 0.16s var(--ease),transform 0.16s var(--ease),visibility 0s linear 0.16s;}:host([open]){opacity:1;transform:none;pointer-events:auto;visibility:visible;transition-delay:0s;}.search{padding:10px;border-bottom:1px solid var(--line);}input,select{background:var(--well);border:1px solid var(--line);color:var(--text);border-radius:9px;font:inherit;outline:none;}input{width:100%;padding:8px 11px;}input:focus,select:focus{border-color:var(--accent);}.list{overflow:auto;padding:6px;}.group{font-size:11.5px;font-weight:600;color:var(--text-muted);padding:10px 9px 4px;}.group .n{font-weight:400;margin-left:4px;}.keys{margin-top:6px;display:flex;gap:4px;align-items:center;}.item{display:grid;grid-template-columns:12px minmax(0,1fr) auto;gap:3px 10px;align-items:center;padding:7px 9px;border-radius:9px;cursor:pointer;}.item:hover,.item.kb{background:var(--raise);}.item.cur{box-shadow:inset 2px 0 0 var(--accent);background:var(--accent-bg);}.nm{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.when{font-size:11px;color:var(--text-muted);white-space:nowrap;}@container (max-width:480px){.when.page{grid-column:2 / 4;white-space:normal;}}.sub{grid-column:2 / 4;display:flex;gap:7px;flex-wrap:wrap;font-size:11px;color:var(--text-muted);}.row{display:flex;gap:8px;}select{max-width:40%;padding:0 8px;}.host{display:flex;gap:8px;flex-wrap:wrap;color:var(--text-2);border-top:1px solid var(--line);margin-top:6px;}.host b{font-family:var(--mono);color:var(--text);}.host .n{margin-left:auto;}.when[data-tone]{color:var(--tone);font-weight:600;}`]}connectedCallback(){super.connectedCallback(),this.setAttribute(`role`,`dialog`),this.setAttribute(`aria-modal`,`true`)}willUpdate(){this.setAttribute(`aria-label`,D(`Runs`))}updated(e){e.has(`open`)&&this.open&&(this.q=``,this.kb=-1,setTimeout(()=>this.input?.focus(),30))}groups(){let e=this.q.toLowerCase().trim(),t=this.runs.filter(t=>(!e||t.run.toLowerCase().includes(e)||(t.run_group||``).toLowerCase().includes(e))&&(!this.host||t.host_id===this.host));if(this.hub)return oe(t,this.hosts).map(({hostId:e,host:t,runs:n})=>{let r=e||lc(``),i=t?(e=>!e.up&&e.last_seen?D(E`no report since ${G(e.last_seen,!0)}`):sc(e))(t):``,a=uc(n.length);return[K(r,i,a),A`<b>${r}</b>${t?Qr({text:i,tone:t.up?`done`:`attention`,title:cc(t)}):M}<span class="n">${a}</span>`,n]});let n=e=>!e.running&&(e=>{let t=Date.parse(e.last_ts||``);return Number.isNaN(t)?1/0:(Date.now()-t)/1e3})(e)>=86400;return[[D(`Running`),t.filter(e=>e.running)],[D(`Last 24 hours`),t.filter(e=>!e.running&&!n(e))],[D(`Older`),t.filter(n)]].map(([e,t])=>[e,A`${e} <span class="n">${t.length}</span>`,t])}pick(e){this.close(),typeof e==`string`?e!==this.page&&$(this,`ca-navigate`,{page:e,run:``}):(e.run!==this.current||this.page)&&$(this,`ca-select-run`,{run:e.run})}close(){$(this,`ca-close`,{})}onDialogKey(e){e.key===`Escape`?this.close():e.key===`Tab`&&(e.preventDefault(),(e.target===this.input&&this.hub?this.select:this.input)?.focus())}onKey(e,t){if(e.key===`ArrowDown`)this.kb=Math.min(t.length-1,this.kb+1);else{if(e.key!==`ArrowUp`){if(e.key===`Enter`){e.preventDefault();let n=t[Math.max(0,this.kb)];n!==void 0&&this.pick(n);return}return}this.kb=Math.max(0,this.kb-1)}e.preventDefault(),this.updateComplete.then(()=>this.renderRoot.querySelector(`.item.kb`)?.scrollIntoView({block:`nearest`}))}render(){let e=this.groups().filter(e=>e[2].length),t=e.flatMap(e=>e[2]),n=this.q.trim()?[]:this.hub?[`trends`,`hosts`]:[`trends`],r=[...n,...t],i=r[this.kb]===void 0?M:qp(this.kb),a=A`<input placeholder=${D(`Search runs`)} aria-label=${D(`Search runs`)} autocomplete="off" .value=${this.q} role="combobox" aria-expanded=${r.length?`true`:`false`} aria-controls="runs" aria-autocomplete="list" aria-activedescendant=${i} @input=${e=>{this.q=e.target.value,this.kb=0}} @keydown=${e=>this.onKey(e,r)} />`,o=0;return A`<div class="search" @keydown=${e=>this.onDialogKey(e)}>
934
+ </div>`}};U([F({attribute:!1})],Jp.prototype,`hosts`,void 0),Jp=U([P(`ca-hosts`),O()],Jp);var Yp=e=>`run-${e}`,Xp=class extends N{constructor(...e){super(...e),this.runs=[],this.current=``,this.open=!1,this.hub=!1,this.hosts=[],this.page=``,this.q=``,this.host=``,this.kb=-1}static{this.styles=[V,k` :host{position:absolute;top:50px;width:min(580px,calc(100cqi - 24px));max-height:min(72vh,660px);display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--line2);border-radius:14px;box-shadow:0 24px 70px color-mix(in srgb,var(--shadow) 70%,transparent);opacity:0;transform:translateY(-6px) scale(0.985);pointer-events:none;z-index:40;visibility:hidden;container-type:inline-size;transition:opacity 0.16s var(--ease),transform 0.16s var(--ease),visibility 0s linear 0.16s;}:host([open]){opacity:1;transform:none;pointer-events:auto;visibility:visible;transition-delay:0s;}.search{padding:10px;border-bottom:1px solid var(--line);}input,select{background:var(--well);border:1px solid var(--line);color:var(--text);border-radius:9px;font:inherit;outline:none;}input{width:100%;padding:8px 11px;}input:focus,select:focus{border-color:var(--accent);}.list{overflow:auto;padding:6px;}.group{font-size:11.5px;font-weight:600;color:var(--text-muted);padding:10px 9px 4px;}.group .n{font-weight:400;margin-left:4px;}.keys{margin-top:6px;display:flex;gap:4px;align-items:center;}.item{display:grid;grid-template-columns:12px minmax(0,1fr) auto;gap:3px 10px;align-items:center;padding:7px 9px;border-radius:9px;cursor:pointer;}.item:hover,.item.kb{background:var(--raise);}.item.cur{box-shadow:inset 2px 0 0 var(--accent);background:var(--accent-bg);}.nm{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.when{font-size:11px;color:var(--text-muted);white-space:nowrap;}@container (max-width:480px){.when.page{grid-column:2 / 4;white-space:normal;}}.sub{grid-column:2 / 4;display:flex;gap:7px;flex-wrap:wrap;font-size:11px;color:var(--text-muted);}.row{display:flex;gap:8px;}select{max-width:40%;padding:0 8px;}.host{display:flex;gap:8px;flex-wrap:wrap;color:var(--text-2);border-top:1px solid var(--line);margin-top:6px;}.host b{font-family:var(--mono);color:var(--text);}.host .n{margin-left:auto;}.when[data-tone]{color:var(--tone);font-weight:600;}`]}connectedCallback(){super.connectedCallback(),this.setAttribute(`role`,`dialog`),this.setAttribute(`aria-modal`,`true`)}willUpdate(){this.setAttribute(`aria-label`,D(`Runs`))}updated(e){e.has(`open`)&&this.open&&(this.q=``,this.kb=-1,setTimeout(()=>this.input?.focus(),30))}groups(){let e=this.q.toLowerCase().trim(),t=this.runs.filter(t=>(!e||t.run.toLowerCase().includes(e)||(t.run_group||``).toLowerCase().includes(e))&&(!this.host||t.host_id===this.host));if(this.hub)return oe(t,this.hosts).map(({hostId:e,host:t,runs:n})=>{let r=e||uc(``),i=t?(e=>!e.up&&e.last_seen?D(E`no report since ${G(e.last_seen,!0)}`):cc(e))(t):``,a=dc(n.length);return[K(r,i,a),A`<b>${r}</b>${t?Qr({text:i,tone:t.up?`done`:`attention`,title:lc(t)}):M}<span class="n">${a}</span>`,n]});let n=e=>!e.running&&(e=>{let t=Date.parse(e.last_ts||``);return Number.isNaN(t)?1/0:(Date.now()-t)/1e3})(e)>=86400;return[[D(`Running`),t.filter(e=>e.running)],[D(`Last 24 hours`),t.filter(e=>!e.running&&!n(e))],[D(`Older`),t.filter(n)]].map(([e,t])=>[e,A`${e} <span class="n">${t.length}</span>`,t])}pick(e){this.close(),typeof e==`string`?e!==this.page&&$(this,`ca-navigate`,{page:e,run:``}):(e.run!==this.current||this.page)&&$(this,`ca-select-run`,{run:e.run})}close(){$(this,`ca-close`,{})}onDialogKey(e){e.key===`Escape`?this.close():e.key===`Tab`&&(e.preventDefault(),(e.target===this.input&&this.hub?this.select:this.input)?.focus())}onKey(e,t){if(e.key===`ArrowDown`)this.kb=Math.min(t.length-1,this.kb+1);else{if(e.key!==`ArrowUp`){if(e.key===`Enter`){e.preventDefault();let n=t[Math.max(0,this.kb)];n!==void 0&&this.pick(n);return}return}this.kb=Math.max(0,this.kb-1)}e.preventDefault(),this.updateComplete.then(()=>this.renderRoot.querySelector(`.item.kb`)?.scrollIntoView({block:`nearest`}))}render(){let e=this.groups().filter(e=>e[2].length),t=e.flatMap(e=>e[2]),n=this.q.trim()?[]:this.hub?[`trends`,`hosts`]:[`trends`],r=[...n,...t],i=r[this.kb]===void 0?M:Yp(this.kb),a=A`<input placeholder=${D(`Search runs`)} aria-label=${D(`Search runs`)} autocomplete="off" .value=${this.q} role="combobox" aria-expanded=${r.length?`true`:`false`} aria-controls="runs" aria-autocomplete="list" aria-activedescendant=${i} @input=${e=>{this.q=e.target.value,this.kb=0}} @keydown=${e=>this.onKey(e,r)} />`,o=0;return A`<div class="search" @keydown=${e=>this.onDialogKey(e)}>
934
935
  ${this.hub?A`<div class="row">${a}${this.hostFilter()}</div>`:a}
935
936
  <div class="keys meta" aria-hidden="true"><span class="kbd">↑</span><span class="kbd">↓</span> <span class="kbd">Enter</span> <span class="kbd">Esc</span></div>
936
937
  </div>
@@ -944,16 +945,16 @@ ${n.map(e=>this.item(e,o++))}
944
945
  </div>`:A`<div class="blank"><span>${D(`No runs match the search`)}</span></div>`}
945
946
  </div>`}hostFilter(){return A`<select aria-label=${D(`Host`)} title=${D(`Host`)} @change=${e=>{this.host=e.target.value,this.kb=-1}}>
946
947
  <option value="" ?selected=${!this.host}>${D(`All hosts`)}</option>
947
- ${oe(this.runs,this.hosts).map(e=>A`<option value=${e.hostId} ?selected=${e.hostId===this.host}>${e.hostId||lc(``)}</option>`)}
948
- </select>`}counts(e){let t=e.tasks,n=[D(E`${t.done} of ${t.total} tasks done`)];t.failed&&n.push(Z(`failed`,t.failed)),t.not_started&&n.push(Z(`not_started`,t.not_started)),t.partial&&n.push(Z(`partial`,t.partial)),t.skipped&&n.push(Z(`skipped`,t.skipped)),t.cancelled&&n.push(Z(`cancelled`,t.cancelled)),t.running&&n.push(Z(`running`,t.running)),t.waiting&&n.push(Z(`waiting`,t.waiting)),t.not_run&&n.push(Z(`not_run`,t.not_run));let r=(e=>te(e))(e);r!=null&&n.push(D(E`took ${B(r)}`)),e.cost_usd!==null&&e.cost_usd!==void 0&&n.push(X(e.cost_usd));let i=Ps(e.quota??[]);return i&&n.push(i),K(...n)}when(e){let t=ne(e),n=G(e.last_ts,!0),r=t===`unresponsive`;return A`<span class="when" data-tone=${r?`attention`:M} data-mark=${r?`pending`:M} title=${r?K(cc(re(this.hosts,e)),D(E`Last activity ${n}`)):n} >${t===`running`?D(`running`):r?oc():Xo(e.last_ts)}</span>`}item(e,t){let n=typeof e==`string`?e:null,r=n?n===this.page:!this.page&&e.run===this.current;return A`<div class=${`item${r?` cur`:``}${t===this.kb?` kb`:``}`} id=${qp(t)} role="option" aria-selected=${t===this.kb?`true`:`false`} aria-current=${r?n?`page`:`true`:M} @click=${()=>this.pick(e)}>
949
- ${typeof e==`string`?n===`hosts`?A`<span aria-hidden="true">⊞</span><span class="nm">${D(`Hosts`)}</span><span class="when page">${dc(this.hosts)}</span>`:A`<span aria-hidden="true">▥</span><span class="nm">${Ac()}</span><span class="when page">${jc()}</span>`:A`<span class="dot" data-tone=${L(ss(ne(e),e.tasks))} aria-hidden="true"></span><span class="nm" title=${this.hub?e.run:M}>${this.hub?ie(e):e.run}${ac(e)?A` ${Zr({...ac(e),tone:`muted`})}`:M}</span>
948
+ ${oe(this.runs,this.hosts).map(e=>A`<option value=${e.hostId} ?selected=${e.hostId===this.host}>${e.hostId||uc(``)}</option>`)}
949
+ </select>`}counts(e){let t=e.tasks,n=[D(E`${t.done} of ${t.total} tasks done`)];t.failed&&n.push(Z(`failed`,t.failed)),t.not_started&&n.push(Z(`not_started`,t.not_started)),t.partial&&n.push(Z(`partial`,t.partial)),t.skipped&&n.push(Z(`skipped`,t.skipped)),t.cancelled&&n.push(Z(`cancelled`,t.cancelled)),t.running&&n.push(Z(`running`,t.running)),t.waiting&&n.push(Z(`waiting`,t.waiting)),t.not_run&&n.push(Z(`not_run`,t.not_run));let r=(e=>te(e))(e);r!=null&&n.push(D(E`took ${B(r)}`)),e.cost_usd!==null&&e.cost_usd!==void 0&&n.push(X(e.cost_usd));let i=Ps(e.quota??[]);return i&&n.push(i),K(...n)}when(e){let t=ne(e),n=G(e.last_ts,!0),r=t===`unresponsive`;return A`<span class="when" data-tone=${r?`attention`:M} data-mark=${r?`pending`:M} title=${r?K(lc(re(this.hosts,e)),D(E`Last activity ${n}`)):n} >${t===`running`?D(`running`):r?sc():Xo(e.last_ts)}</span>`}item(e,t){let n=typeof e==`string`?e:null,r=n?n===this.page:!this.page&&e.run===this.current;return A`<div class=${`item${r?` cur`:``}${t===this.kb?` kb`:``}`} id=${Yp(t)} role="option" aria-selected=${t===this.kb?`true`:`false`} aria-current=${r?n?`page`:`true`:M} @click=${()=>this.pick(e)}>
950
+ ${typeof e==`string`?n===`hosts`?A`<span aria-hidden="true">⊞</span><span class="nm">${D(`Hosts`)}</span><span class="when page">${fc(this.hosts)}</span>`:A`<span aria-hidden="true">▥</span><span class="nm">${jc()}</span><span class="when page">${Mc()}</span>`:A`<span class="dot" data-tone=${L(ss(ne(e),e.tasks))} aria-hidden="true"></span><span class="nm" title=${this.hub?e.run:M}>${this.hub?ie(e):e.run}${oc(e)?A` ${Zr({...oc(e),tone:`muted`})}`:M}</span>
950
951
  ${this.when(e)}
951
952
  <span class="sub">
952
953
  ${e.run_group&&e.run_group!==ie(e)?A`<span>${D(E`Run group ${e.run_group}`)}</span>`:M} <span title=${Fs(e.quota??[])}>${this.counts(e)}</span>
953
954
  </span>`}
954
- </div>`}};function Yp(e){return e===`system`?D(`System`):e===`high-contrast`?D(`High contrast`):vr[e].label}U([F({attribute:!1})],Jp.prototype,`runs`,void 0),U([F()],Jp.prototype,`current`,void 0),U([F({type:Boolean,reflect:!0})],Jp.prototype,`open`,void 0),U([F({type:Boolean})],Jp.prototype,`hub`,void 0),U([F({attribute:!1})],Jp.prototype,`hosts`,void 0),U([F()],Jp.prototype,`page`,void 0),U([I()],Jp.prototype,`q`,void 0),U([I()],Jp.prototype,`host`,void 0),U([I()],Jp.prototype,`kb`,void 0),U([bn(`input`)],Jp.prototype,`input`,void 0),U([bn(`select`)],Jp.prototype,`select`,void 0),Jp=U([P(`ca-run-picker`),O()],Jp);var Xp=class extends N{constructor(...e){super(...e),this.value=`contraagent-dark`,this.system=`contraagent-dark`,this.open=!1,this.onDocDown=e=>{this.open&&!e.composedPath().includes(this)&&(this.open=!1)}}static{this.styles=[V,k` :host{position:relative;display:inline-flex;}.trig{display:inline-flex;align-items:center;gap:6px;background:none;border:1px solid var(--line);border-radius:999px;padding:2px 10px 2px 7px;font-size:11px;color:var(--text-muted);cursor:pointer;}.trig:hover,.trig[aria-expanded='true']{color:var(--text);border-color:var(--line2);}.trig svg{width:13px;height:13px;}.menu{position:absolute;right:0;top:calc(100% + 8px);min-width:236px;padding:6px;z-index:50;background:var(--panel);border:1px solid var(--line2);border-radius:12px;box-shadow:0 18px 48px color-mix(in srgb,var(--shadow) 65%,transparent);animation:enter 0.16s var(--ease) both;}.grp{font-size:11px;color:var(--text-muted);padding:8px 9px 4px;}[role='separator']{height:1px;background:var(--line);margin:6px 4px;}.item{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;width:100%;background:none;border:0;border-radius:8px;padding:6px 9px;text-align:left;cursor:pointer;color:var(--text-2);font-size:12px;}.item:hover{background:var(--raise);color:var(--text);}.item:focus-visible{outline-offset:-2px;}.item[aria-checked='true']{background:var(--accent-bg);color:var(--text);font-weight:600;}.item .meta{font-weight:400;}.item .sub{display:block;}.rd{width:12px;height:12px;border-radius:50%;border:1.5px solid var(--line2);display:grid;place-items:center;}[aria-checked='true'] .rd{border-color:var(--accent);}[aria-checked='true'] .rd::after{content:'';width:6px;height:6px;border-radius:50%;background:var(--accent);}.sw{display:inline-flex;gap:2px;align-items:flex-end;width:30px;height:18px;border-radius:5px;border:1px solid;padding:3px 4px;}.sw i{flex:1;height:4px;border-radius:2px;}.sw i:first-child{height:8px;}.sw.split{padding:0;overflow:hidden;gap:0;}.sw.split>span{flex:1;height:100%;display:flex;gap:2px;align-items:flex-end;padding:3px 2px;}`]}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener(`pointerdown`,this.onDocDown)}items(){return[...this.renderRoot.querySelectorAll(`.item`)]}updated(e){e.has(`open`)&&(this.open?document.addEventListener(`pointerdown`,this.onDocDown):document.removeEventListener(`pointerdown`,this.onDocDown)),e.has(`open`)&&this.open&&(this.items().find(e=>e.getAttribute(`aria-checked`)===`true`)??this.items()[0])?.focus()}close(e){this.open=!1,e&&this.trig?.focus()}choose(e){this.value=e,$(this,`ca-choose-theme`,{theme:e}),this.close(!0)}onTrigKey(e){e.key!==`ArrowDown`&&e.key!==`ArrowUp`||(e.preventDefault(),this.open=!0)}onMenuKey(e){let t=this.items(),n=t.indexOf(e.composedPath()[0]),r=e=>t[(e+t.length)%t.length]?.focus();if(e.key===`ArrowDown`)r(n+1);else if(e.key===`ArrowUp`)r(n-1);else if(e.key===`Home`)r(0);else if(e.key===`End`)r(t.length-1);else{if(e.key!==`Escape`)return e.key===`Tab`?void(this.open=!1):void 0;this.close(!0)}e.preventDefault(),e.stopPropagation()}item(e){let t=e===this.value,n=e===`system`?A`<span class="sw split" style="border-color:${vr[`contraagent-dark`].tokens.line2}" ><span style="background:${vr[`contraagent-dark`].tokens.card}"><i style="background:${vr[`contraagent-dark`].tokens.accent}"></i></span ><span style="background:${vr[`contraagent-light`].tokens.card}"><i style="background:${vr[`contraagent-light`].tokens.accent}"></i></span ></span>`:(e=>{let t=vr[e].tokens;return A`<span class="sw" style="background:${t.card};border-color:${t.line2}" ><i style="background:${t.accent}"></i><i style="background:${t[`code-string`]}"></i><i style="background:${t[`code-keyword`]}"></i ></span>`})(e);return A`<button type="button" class="item" role="menuitemradio" aria-checked=${t?`true`:`false`} tabindex="-1" data-theme=${e} @click=${()=>this.choose(e)}>
955
- ${n}<span>${Yp(e)}${e===`system`?A`<span class="meta sub">${vr[this.system].label}</span>`:M}</span><span class="rd" aria-hidden="true"></span>
956
- </button>`}render(){let e=hr.filter(e=>e===`system`||!gr.includes(e));return A`<button type="button" class="trig" aria-haspopup="menu" aria-expanded=${this.open?`true`:`false`} aria-controls="menu" title=${D(E`Theme: ${Yp(this.value)}`)} @click=${()=>this.open=!this.open} @keydown=${e=>this.onTrigKey(e)}>
955
+ </div>`}};function Zp(e){return e===`system`?D(`System`):e===`high-contrast`?D(`High contrast`):vr[e].label}U([F({attribute:!1})],Xp.prototype,`runs`,void 0),U([F()],Xp.prototype,`current`,void 0),U([F({type:Boolean,reflect:!0})],Xp.prototype,`open`,void 0),U([F({type:Boolean})],Xp.prototype,`hub`,void 0),U([F({attribute:!1})],Xp.prototype,`hosts`,void 0),U([F()],Xp.prototype,`page`,void 0),U([I()],Xp.prototype,`q`,void 0),U([I()],Xp.prototype,`host`,void 0),U([I()],Xp.prototype,`kb`,void 0),U([bn(`input`)],Xp.prototype,`input`,void 0),U([bn(`select`)],Xp.prototype,`select`,void 0),Xp=U([P(`ca-run-picker`),O()],Xp);var Qp=class extends N{constructor(...e){super(...e),this.value=`contraagent-dark`,this.system=`contraagent-dark`,this.open=!1,this.onDocDown=e=>{this.open&&!e.composedPath().includes(this)&&(this.open=!1)}}static{this.styles=[V,k` :host{position:relative;display:inline-flex;}.trig{display:inline-flex;align-items:center;gap:6px;background:none;border:1px solid var(--line);border-radius:999px;padding:2px 10px 2px 7px;font-size:11px;color:var(--text-muted);cursor:pointer;}.trig:hover,.trig[aria-expanded='true']{color:var(--text);border-color:var(--line2);}.trig svg{width:13px;height:13px;}.menu{position:absolute;right:0;top:calc(100% + 8px);min-width:236px;padding:6px;z-index:50;background:var(--panel);border:1px solid var(--line2);border-radius:12px;box-shadow:0 18px 48px color-mix(in srgb,var(--shadow) 65%,transparent);animation:enter 0.16s var(--ease) both;}.grp{font-size:11px;color:var(--text-muted);padding:8px 9px 4px;}[role='separator']{height:1px;background:var(--line);margin:6px 4px;}.item{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;width:100%;background:none;border:0;border-radius:8px;padding:6px 9px;text-align:left;cursor:pointer;color:var(--text-2);font-size:12px;}.item:hover{background:var(--raise);color:var(--text);}.item:focus-visible{outline-offset:-2px;}.item[aria-checked='true']{background:var(--accent-bg);color:var(--text);font-weight:600;}.item .meta{font-weight:400;}.item .sub{display:block;}.rd{width:12px;height:12px;border-radius:50%;border:1.5px solid var(--line2);display:grid;place-items:center;}[aria-checked='true'] .rd{border-color:var(--accent);}[aria-checked='true'] .rd::after{content:'';width:6px;height:6px;border-radius:50%;background:var(--accent);}.sw{display:inline-flex;gap:2px;align-items:flex-end;width:30px;height:18px;border-radius:5px;border:1px solid;padding:3px 4px;}.sw i{flex:1;height:4px;border-radius:2px;}.sw i:first-child{height:8px;}.sw.split{padding:0;overflow:hidden;gap:0;}.sw.split>span{flex:1;height:100%;display:flex;gap:2px;align-items:flex-end;padding:3px 2px;}`]}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener(`pointerdown`,this.onDocDown)}items(){return[...this.renderRoot.querySelectorAll(`.item`)]}updated(e){e.has(`open`)&&(this.open?document.addEventListener(`pointerdown`,this.onDocDown):document.removeEventListener(`pointerdown`,this.onDocDown)),e.has(`open`)&&this.open&&(this.items().find(e=>e.getAttribute(`aria-checked`)===`true`)??this.items()[0])?.focus()}close(e){this.open=!1,e&&this.trig?.focus()}choose(e){this.value=e,$(this,`ca-choose-theme`,{theme:e}),this.close(!0)}onTrigKey(e){e.key!==`ArrowDown`&&e.key!==`ArrowUp`||(e.preventDefault(),this.open=!0)}onMenuKey(e){let t=this.items(),n=t.indexOf(e.composedPath()[0]),r=e=>t[(e+t.length)%t.length]?.focus();if(e.key===`ArrowDown`)r(n+1);else if(e.key===`ArrowUp`)r(n-1);else if(e.key===`Home`)r(0);else if(e.key===`End`)r(t.length-1);else{if(e.key!==`Escape`)return e.key===`Tab`?void(this.open=!1):void 0;this.close(!0)}e.preventDefault(),e.stopPropagation()}item(e){let t=e===this.value,n=e===`system`?A`<span class="sw split" style="border-color:${vr[`contraagent-dark`].tokens.line2}" ><span style="background:${vr[`contraagent-dark`].tokens.card}"><i style="background:${vr[`contraagent-dark`].tokens.accent}"></i></span ><span style="background:${vr[`contraagent-light`].tokens.card}"><i style="background:${vr[`contraagent-light`].tokens.accent}"></i></span ></span>`:(e=>{let t=vr[e].tokens;return A`<span class="sw" style="background:${t.card};border-color:${t.line2}" ><i style="background:${t.accent}"></i><i style="background:${t[`code-string`]}"></i><i style="background:${t[`code-keyword`]}"></i ></span>`})(e);return A`<button type="button" class="item" role="menuitemradio" aria-checked=${t?`true`:`false`} tabindex="-1" data-theme=${e} @click=${()=>this.choose(e)}>
956
+ ${n}<span>${Zp(e)}${e===`system`?A`<span class="meta sub">${vr[this.system].label}</span>`:M}</span><span class="rd" aria-hidden="true"></span>
957
+ </button>`}render(){let e=hr.filter(e=>e===`system`||!gr.includes(e));return A`<button type="button" class="trig" aria-haspopup="menu" aria-expanded=${this.open?`true`:`false`} aria-controls="menu" title=${D(E`Theme: ${Zp(this.value)}`)} @click=${()=>this.open=!this.open} @keydown=${e=>this.onTrigKey(e)}>
957
958
  <svg viewBox="0 0 16 16" aria-hidden="true"><circle cx="8" cy="8" r="6.25" fill="none" stroke="currentColor" stroke-width="1.5" /><path d="M8 1.75a6.25 6.25 0 0 1 0 12.5z" fill="currentColor" /></svg>
958
959
  ${D(`Theme`)}
959
960
  </button>
@@ -964,18 +965,18 @@ ${e.map(e=>this.item(e))}
964
965
  <div class="grp" id="grp-editor">${D(`Editor themes`)}</div>
965
966
  ${gr.map(e=>this.item(e))}
966
967
  </div>
967
- </div>`:M}`}};U([F()],Xp.prototype,`value`,void 0),U([F()],Xp.prototype,`system`,void 0),U([I()],Xp.prototype,`open`,void 0),U([bn(`.trig`)],Xp.prototype,`trig`,void 0),Xp=U([P(`ca-theme-switch`),O()],Xp);var Zp=e=>(e.input??0)+(e.output??0)+(e.cache_read??0)+(e.cache_creation??0);function Qp(e,t){if(!e.totals.runs)return[];let n=Fc(),r=e.period.days.map(e=>Mc(e,t)),i=[],a=function(e){let t=new Map;for(let n of[...e.quota,...e.rests]){let e=n.credential??``;if(!n.account)continue;let r=t.get(e)??new Set;r.add(n.account),t.set(e,r)}return(e,n)=>{let r=e??``,i=Ts(r)||r||`—`;return n&&(t.get(r)?.size??0)>1?`${i} | ${As(n)}`:i}}(e),o=e.totals,s=e.daily.filter(e=>Object.keys(e.cost_usd).length).length;var c,l;i.push({id:`totals`,wide:!0,body:{type:`tiles`,collapsed:!1,tiles:[{id:`runs`,label:n.runs,value:String(o.runs),sub:[]},{id:`attempts`,label:n.attempts,value:String(o.attempts),sub:[[(l=o.attempts?`${Math.round(o.ok/o.attempts*100)}%`:`—`,D(E`Done ${l}`)),...o.partial?[Z(`partial`,o.partial)]:[]]]},{id:`cost`,label:n.cost,value:o.cost_usd==null?`—`:X(o.cost_usd),sub:s&&o.cost_usd!=null?[[(c=X(o.cost_usd/s),D(E`${c} a day`))]]:[]},{id:`tokens`,label:n.tokens,value:Y(Zp(o.tokens)),sub:[[`${n.input} ${Y(o.tokens.input)} | ${n.output} ${Y(o.tokens.output)}`]]},{id:`time`,label:n.time,value:B(o.wall_s),sub:[]}]}});let u=[...new Set(e.daily.flatMap(e=>Object.keys(e.cost_usd)))].map(t=>({s:t,total:e.daily.reduce((e,n)=>e+(n.cost_usd[t]??0),0)})).sort((e,t)=>t.total-e.total).map(e=>e.s);i.push({id:`cost-by-day`,wide:!0,body:{type:`columns`,collapsed:!1,title:n.costByDay,x:r,unit:`usd`,stacked:!0,series:u.map(t=>({name:t,values:e.daily.map(e=>e.cost_usd[t]??null)}))}});let d=(t,r,i,a)=>({id:t,wide:!0,body:{type:`table`,collapsed:a,title:r,columns:[{id:`kind`,label:n.kind},...e.kinds.some(e=>e.group&&e.group!==e.kind)?[{id:`group`,label:n.group}]:[],{id:`tasks`,label:n.tasks,align:`end`,format:`number`},{id:`passed`,label:n.tasksDone,align:`end`,format:`pct`},...i.some(e=>e.tasks_partial)?[{id:`partial`,label:n.partial,align:`end`,format:`number`}]:[],{id:`attempts`,label:n.attempts,align:`end`,format:`number`},{id:`median`,label:n.medianTime,align:`end`,format:`duration`},{id:`wall`,label:n.totalTime,align:`end`,format:`duration`},{id:`tokens`,label:n.tokens,align:`end`,format:`tokens`},{id:`cost`,label:n.cost,align:`end`,format:`usd`,bar:!0}],rows:[...i].sort((e,t)=>(t.cost_usd??0)-(e.cost_usd??0)||t.attempts-e.attempts).map(e=>({kind:e.kind,group:e.group,tasks:e.tasks,passed:e.tasks?e.tasks_ok/e.tasks:null,partial:e.tasks_partial??0,attempts:e.attempts,median:e.wall_s_median,wall:e.wall_s,tokens:Zp(e.tokens),cost:e.cost_usd,...e.tasks_ok<e.tasks?{_tone:`attention`}:{}}))}}),f=e.kinds.filter(e=>e.executor!==`python`),p=e.kinds.filter(e=>e.executor===`python`);f.length&&i.push(d(`kinds`,n.kinds,f,!1)),p.length&&i.push(d(`python-kinds`,Ic(n.pythonKinds,p.length),p,f.length>0)),e.models.length&&i.push({id:`models`,wide:!0,body:{type:`table`,collapsed:!1,title:n.models,columns:[{id:`model`,label:n.model},{id:`sessions`,label:n.sessions,align:`end`,format:`number`},{id:`calls`,label:n.calls,align:`end`,format:`number`},{id:`input`,label:n.input,align:`end`,format:`tokens`},{id:`output`,label:n.output,align:`end`,format:`tokens`},{id:`cache_read`,label:n.cacheRead,align:`end`,format:`tokens`},{id:`cache_write`,label:n.cacheWrite,align:`end`,format:`tokens`},{id:`cost`,label:n.cost,align:`end`,format:`usd`,bar:!0},{id:`wall`,label:n.time,align:`end`,format:`duration`},...e.models.some(e=>e.peak_context!=null)?[{id:`peak`,label:Vc(),align:`end`,format:`tokens`,tip:Hc()}]:[]],rows:e.models.map(e=>{return{model:(t=e.agent,n=e.model,t?`${n||`—`} | ${t}`:n||`—`),sessions:e.sessions,calls:e.calls,input:e.input,output:e.output,cache_read:e.cache_read,cache_write:e.cache_creation,cost:e.cost_usd,wall:e.wall_s,peak:e.peak_context??null};var t,n})}}),e.quota.length&&i.push({id:`usage`,wide:!0,body:{type:`lines`,collapsed:!1,title:n.usage,x:r,unit:`pct`,series:e.quota.map(e=>({name:Rc(a(e.credential,e.account),ks(e.window)),values:e.daily_peak.map(e=>e==null?null:e/100)}))}});let m=e.stops.filter(e=>e.stop!==`completed`&&e.stop!==`skipped`);return m.length&&i.push({id:`outcomes`,body:{type:`table`,collapsed:!1,title:n.outcomes,columns:[{id:`outcome`,label:n.outcome},{id:`attempts`,label:n.attempts,align:`end`,format:`number`,bar:!0},{id:`kinds`,label:n.kinds}],rows:m.map(e=>({outcome:Q(e.stop),attempts:e.attempts,kinds:Object.entries(e.kinds).sort((e,t)=>t[1]-e[1]).map(([e,t])=>`${e} ${t}`).join(` | `),_tone:`failed`}))}}),e.denials.length&&i.push({id:`denials`,body:{type:`table`,collapsed:!1,title:n.denials,columns:[{id:`tool`,label:n.tool},{id:`count`,label:n.toolCalls,align:`end`,format:`number`,bar:!0},{id:`kinds`,label:n.kinds}],rows:e.denials.map(e=>({tool:e.tool,count:e.count,kinds:Object.entries(e.kinds).map(([e,t])=>`${e} ${t}`).join(` | `)}))}}),e.safety_stops.length&&i.push({id:`safety-stops`,body:{type:`table`,collapsed:!1,title:Qc(),columns:[{id:`part`,label:D(`Stopped part`),tip:el()},{id:`model`,label:n.model},{id:`count`,label:Qc(),align:`end`,format:`number`,bar:!0},{id:`kinds`,label:n.kinds}],rows:e.safety_stops.map(e=>({part:tl(e.part),model:e.model||`—`,count:e.count,kinds:Object.entries(e.kinds).sort((e,t)=>t[1]-e[1]).map(([e,t])=>`${e} ${t}`).join(` | `)}))}}),e.deferred.length&&i.push({id:`deferred`,body:{type:`table`,collapsed:e.deferred.length>20,title:Ic(n.deferred,e.deferred.length),columns:[{id:`when`,label:n.when,format:`datetime`},{id:`task`,label:n.task},{id:`cause`,label:n.cause},{id:`run`,label:n.run}],rows:[...e.deferred].sort((e,t)=>t.ts.localeCompare(e.ts)).map(e=>({when:e.ts,task:e.key,cause:e.cause===`rest`?Lc(e.reason):Us({cause:e.cause},e.reason),run:e.run,_tone:`attention`}))}}),e.rests.length&&i.push({id:`rests`,body:{type:`table`,collapsed:!1,title:n.rests,columns:[{id:`when`,label:n.when,format:`datetime`},{id:`identity`,label:n.identity},{id:`event`,label:n.event},{id:`run`,label:n.run}],rows:[...e.rests].sort((e,t)=>(t.ts??``).localeCompare(e.ts??``)).map(e=>{return{when:e.ts,identity:a(e.credential,e.account),event:(t=e.event,t===`end`?D(`ended`):t===`start`?D(`started`):t||`—`),run:e.run};var t})}}),e.starts.counts.some(e=>e.some(e=>e>0))&&i.push({id:`starts`,wide:!0,body:{type:`heatmap`,collapsed:!1,title:n.starts,x:e.starts.hours.map(e=>String(e).padStart(2,`0`)),y:Pc(t),values:e.starts.counts.map(e=>e.map(e=>e||null)),unit:`number`}}),i.push({id:`runs`,wide:!0,body:{type:`table`,collapsed:!1,title:n.runs,columns:[{id:`run`,label:n.run},{id:`started`,label:n.started,format:`datetime`},{id:`attempts`,label:n.attempts,align:`end`,format:`number`},{id:`passed`,label:n.done,align:`end`,format:`pct`},...e.runs.some(e=>e.partial)?[{id:`partial`,label:n.partial,align:`end`,format:`number`}]:[],{id:`cost`,label:n.cost,align:`end`,format:`usd`,bar:!0},{id:`wall`,label:n.time,align:`end`,format:`duration`}],rows:e.runs.map(e=>({run:e.run,started:e.started_at||null,attempts:e.attempts,passed:e.attempts?e.ok/e.attempts:null,partial:e.partial??0,cost:e.cost_usd,wall:e.wall_s,...e.ok<e.attempts?{_tone:`attention`}:{}}))}}),i}var $p=()=>Intl.DateTimeFormat().resolvedOptions().timeZone||`UTC`;function em(e,t){let n=new Date(`${e}T00:00:00Z`);return n.setUTCDate(n.getUTCDate()-t),n.toISOString().slice(0,10)}function tm(e,t=new Date){let n=e.tz||$p();return{...e.days===0&&e.from&&e.to?{from:e.from,to:e.to}:(()=>{let r=function(e,t=new Date){try{return new Intl.DateTimeFormat(`en-CA`,{timeZone:e,year:`numeric`,month:`2-digit`,day:`2-digit`}).format(t)}catch{return t.toISOString().slice(0,10)}}(n,t);return{from:em(r,Math.max(1,e.days)-1),to:r}})(),tz:n,...e.group?{run_group:e.group}:{}}}var nm=e=>[``,...new Set(e.filter(e=>e.scope===`trends`&&e.tab).map(e=>e.tab))],rm=class extends N{constructor(...e){super(...e),this.view=null,this.days=14,this.from=``,this.to=``,this.tz=``,this.group=``,this.groups=[],this.panels=[],this.exported=!1,this.tab=``,this.tabFocus=new mi(this,{items:()=>[...this.renderRoot.querySelectorAll(`[role="tab"]`)],layout:`horizontal`,wrap:!0})}static{this.styles=[V,k` :host{display:block;}.controls{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;margin-bottom:14px;}.controls label{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--text-muted);}input,select{background:var(--well);border:1px solid var(--line);color:var(--text);border-radius:8px;font:inherit;font-size:12px;padding:4px 8px;}input:focus-visible,select:focus-visible{outline:var(--focus-width) solid var(--focus);outline-offset:1px;}.period{font-size:12px;color:var(--text-2);}.loading{font-size:12px;color:var(--text-muted);}.err{font-size:12px;color:var(--status-failed);}.wide{margin-bottom:14px;}.pairs{columns:2 440px;column-gap:14px;margin-bottom:14px;}.pairs>.panel{break-inside:avoid;margin-bottom:14px;}.panel{display:block;}.tabs{display:flex;flex-wrap:wrap;gap:2px;border-bottom:1px solid var(--line);margin-bottom:14px;}.tab{background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-1px;padding:8px 14px 9px;color:var(--text-muted);font:inherit;font-weight:500;cursor:pointer;white-space:nowrap;}.tab:hover{color:var(--text-2);}.tab[aria-selected='true']{color:var(--text);font-weight:600;border-bottom-color:var(--accent);}.tab:focus-visible{outline:var(--focus-width) solid var(--focus);outline-offset:-2px;}`]}go(e){$(this,`ca-navigate`,e)}render(){let e=this.view,t=this.panels.filter(e=>e.scope===`trends`),n=nm(t),r=n.includes(this.tab)?this.tab:``,i=t.filter(e=>(e.tab??``)===r),a=r?this.trendPanels(i,e?.panels??{},!1):this.trends(i);return A`<h2 class="sr">${Ac()}</h2>
968
+ </div>`:M}`}};U([F()],Qp.prototype,`value`,void 0),U([F()],Qp.prototype,`system`,void 0),U([I()],Qp.prototype,`open`,void 0),U([bn(`.trig`)],Qp.prototype,`trig`,void 0),Qp=U([P(`ca-theme-switch`),O()],Qp);var $p=e=>(e.input??0)+(e.output??0)+(e.cache_read??0)+(e.cache_creation??0);function em(e,t){if(!e.totals.runs)return[];let n=Ic(),r=e.period.days.map(e=>Nc(e,t)),i=[],a=function(e){let t=new Map;for(let n of[...e.quota,...e.rests]){let e=n.credential??``;if(!n.account)continue;let r=t.get(e)??new Set;r.add(n.account),t.set(e,r)}return(e,n)=>{let r=e??``,i=Ts(r)||r||`—`;return n&&(t.get(r)?.size??0)>1?`${i} | ${As(n)}`:i}}(e),o=e.totals,s=e.daily.filter(e=>Object.keys(e.cost_usd).length).length;var c,l;i.push({id:`totals`,wide:!0,body:{type:`tiles`,collapsed:!1,tiles:[{id:`runs`,label:n.runs,value:String(o.runs),sub:[]},{id:`attempts`,label:n.attempts,value:String(o.attempts),sub:[[(l=o.attempts?`${Math.round(o.ok/o.attempts*100)}%`:`—`,D(E`Done ${l}`)),...o.partial?[Z(`partial`,o.partial)]:[]]]},{id:`cost`,label:n.cost,value:o.cost_usd==null?`—`:X(o.cost_usd),sub:s&&o.cost_usd!=null?[[(c=X(o.cost_usd/s),D(E`${c} a day`))]]:[]},{id:`tokens`,label:n.tokens,value:Y($p(o.tokens)),sub:[[`${n.input} ${Y(o.tokens.input)} | ${n.output} ${Y(o.tokens.output)}`]]},{id:`time`,label:n.time,value:B(o.wall_s),sub:[]}]}});let u=[...new Set(e.daily.flatMap(e=>Object.keys(e.cost_usd)))].map(t=>({s:t,total:e.daily.reduce((e,n)=>e+(n.cost_usd[t]??0),0)})).sort((e,t)=>t.total-e.total).map(e=>e.s);i.push({id:`cost-by-day`,wide:!0,body:{type:`columns`,collapsed:!1,title:n.costByDay,x:r,unit:`usd`,stacked:!0,series:u.map(t=>({name:t,values:e.daily.map(e=>e.cost_usd[t]??null)}))}});let d=(t,r,i,a)=>({id:t,wide:!0,body:{type:`table`,collapsed:a,title:r,columns:[{id:`kind`,label:n.kind},...e.kinds.some(e=>e.group&&e.group!==e.kind)?[{id:`group`,label:n.group}]:[],{id:`tasks`,label:n.tasks,align:`end`,format:`number`},{id:`passed`,label:n.tasksDone,align:`end`,format:`pct`},...i.some(e=>e.tasks_partial)?[{id:`partial`,label:n.partial,align:`end`,format:`number`}]:[],{id:`attempts`,label:n.attempts,align:`end`,format:`number`},{id:`median`,label:n.medianTime,align:`end`,format:`duration`},{id:`wall`,label:n.totalTime,align:`end`,format:`duration`},{id:`tokens`,label:n.tokens,align:`end`,format:`tokens`},{id:`cost`,label:n.cost,align:`end`,format:`usd`,bar:!0}],rows:[...i].sort((e,t)=>(t.cost_usd??0)-(e.cost_usd??0)||t.attempts-e.attempts).map(e=>({kind:e.kind,group:e.group,tasks:e.tasks,passed:e.tasks?e.tasks_ok/e.tasks:null,partial:e.tasks_partial??0,attempts:e.attempts,median:e.wall_s_median,wall:e.wall_s,tokens:$p(e.tokens),cost:e.cost_usd,...e.tasks_ok<e.tasks?{_tone:`attention`}:{}}))}}),f=e.kinds.filter(e=>e.executor!==`python`),p=e.kinds.filter(e=>e.executor===`python`);f.length&&i.push(d(`kinds`,n.kinds,f,!1)),p.length&&i.push(d(`python-kinds`,Lc(n.pythonKinds,p.length),p,f.length>0)),e.models.length&&i.push({id:`models`,wide:!0,body:{type:`table`,collapsed:!1,title:n.models,columns:[{id:`model`,label:n.model},{id:`sessions`,label:n.sessions,align:`end`,format:`number`},{id:`calls`,label:n.calls,align:`end`,format:`number`},{id:`input`,label:n.input,align:`end`,format:`tokens`},{id:`output`,label:n.output,align:`end`,format:`tokens`},{id:`cache_read`,label:n.cacheRead,align:`end`,format:`tokens`},{id:`cache_write`,label:n.cacheWrite,align:`end`,format:`tokens`},{id:`cost`,label:n.cost,align:`end`,format:`usd`,bar:!0},{id:`wall`,label:n.time,align:`end`,format:`duration`},...e.models.some(e=>e.peak_context!=null)?[{id:`peak`,label:Hc(),align:`end`,format:`tokens`,tip:Uc()}]:[]],rows:e.models.map(e=>{return{model:(t=e.agent,n=e.model,t?`${n||`—`} | ${t}`:n||`—`),sessions:e.sessions,calls:e.calls,input:e.input,output:e.output,cache_read:e.cache_read,cache_write:e.cache_creation,cost:e.cost_usd,wall:e.wall_s,peak:e.peak_context??null};var t,n})}}),e.quota.length&&i.push({id:`usage`,wide:!0,body:{type:`lines`,collapsed:!1,title:n.usage,x:r,unit:`pct`,series:e.quota.map(e=>({name:zc(a(e.credential,e.account),ks(e.window)),values:e.daily_peak.map(e=>e==null?null:e/100)}))}});let m=e.stops.filter(e=>e.stop!==`completed`&&e.stop!==`skipped`);return m.length&&i.push({id:`outcomes`,body:{type:`table`,collapsed:!1,title:n.outcomes,columns:[{id:`outcome`,label:n.outcome},{id:`attempts`,label:n.attempts,align:`end`,format:`number`,bar:!0},{id:`kinds`,label:n.kinds}],rows:m.map(e=>({outcome:Q(e.stop),attempts:e.attempts,kinds:Object.entries(e.kinds).sort((e,t)=>t[1]-e[1]).map(([e,t])=>`${e} ${t}`).join(` | `),_tone:`failed`}))}}),e.denials.length&&i.push({id:`denials`,body:{type:`table`,collapsed:!1,title:n.denials,columns:[{id:`tool`,label:n.tool},{id:`count`,label:n.toolCalls,align:`end`,format:`number`,bar:!0},{id:`kinds`,label:n.kinds}],rows:e.denials.map(e=>({tool:e.tool,count:e.count,kinds:Object.entries(e.kinds).map(([e,t])=>`${e} ${t}`).join(` | `)}))}}),e.safety_stops.length&&i.push({id:`safety-stops`,body:{type:`table`,collapsed:!1,title:$c(),columns:[{id:`part`,label:D(`Stopped part`),tip:tl()},{id:`model`,label:n.model},{id:`count`,label:$c(),align:`end`,format:`number`,bar:!0},{id:`kinds`,label:n.kinds}],rows:e.safety_stops.map(e=>({part:nl(e.part),model:e.model||`—`,count:e.count,kinds:Object.entries(e.kinds).sort((e,t)=>t[1]-e[1]).map(([e,t])=>`${e} ${t}`).join(` | `)}))}}),e.deferred.length&&i.push({id:`deferred`,body:{type:`table`,collapsed:e.deferred.length>20,title:Lc(n.deferred,e.deferred.length),columns:[{id:`when`,label:n.when,format:`datetime`},{id:`task`,label:n.task},{id:`cause`,label:n.cause},{id:`run`,label:n.run}],rows:[...e.deferred].sort((e,t)=>t.ts.localeCompare(e.ts)).map(e=>({when:e.ts,task:e.key,cause:e.cause===`rest`?Rc(e.reason):Us({cause:e.cause},e.reason),run:e.run,_tone:`attention`}))}}),e.rests.length&&i.push({id:`rests`,body:{type:`table`,collapsed:!1,title:n.rests,columns:[{id:`when`,label:n.when,format:`datetime`},{id:`identity`,label:n.identity},{id:`event`,label:n.event},{id:`run`,label:n.run}],rows:[...e.rests].sort((e,t)=>(t.ts??``).localeCompare(e.ts??``)).map(e=>{return{when:e.ts,identity:a(e.credential,e.account),event:(t=e.event,t===`end`?D(`ended`):t===`start`?D(`started`):t||`—`),run:e.run};var t})}}),e.starts.counts.some(e=>e.some(e=>e>0))&&i.push({id:`starts`,wide:!0,body:{type:`heatmap`,collapsed:!1,title:n.starts,x:e.starts.hours.map(e=>String(e).padStart(2,`0`)),y:Fc(t),values:e.starts.counts.map(e=>e.map(e=>e||null)),unit:`number`}}),i.push({id:`runs`,wide:!0,body:{type:`table`,collapsed:!1,title:n.runs,columns:[{id:`run`,label:n.run},{id:`started`,label:n.started,format:`datetime`},{id:`attempts`,label:n.attempts,align:`end`,format:`number`},{id:`passed`,label:n.done,align:`end`,format:`pct`},...e.runs.some(e=>e.partial)?[{id:`partial`,label:n.partial,align:`end`,format:`number`}]:[],{id:`cost`,label:n.cost,align:`end`,format:`usd`,bar:!0},{id:`wall`,label:n.time,align:`end`,format:`duration`}],rows:e.runs.map(e=>({run:e.run,started:e.started_at||null,attempts:e.attempts,passed:e.attempts?e.ok/e.attempts:null,partial:e.partial??0,cost:e.cost_usd,wall:e.wall_s,...e.ok<e.attempts?{_tone:`attention`}:{}}))}}),i}var tm=()=>Intl.DateTimeFormat().resolvedOptions().timeZone||`UTC`;function nm(e,t){let n=new Date(`${e}T00:00:00Z`);return n.setUTCDate(n.getUTCDate()-t),n.toISOString().slice(0,10)}function rm(e,t=new Date){let n=e.tz||tm();return{...e.days===0&&e.from&&e.to?{from:e.from,to:e.to}:(()=>{let r=function(e,t=new Date){try{return new Intl.DateTimeFormat(`en-CA`,{timeZone:e,year:`numeric`,month:`2-digit`,day:`2-digit`}).format(t)}catch{return t.toISOString().slice(0,10)}}(n,t);return{from:nm(r,Math.max(1,e.days)-1),to:r}})(),tz:n,...e.group?{run_group:e.group}:{}}}var im=e=>[``,...new Set(e.filter(e=>e.scope===`trends`&&e.tab).map(e=>e.tab))],am=class extends N{constructor(...e){super(...e),this.view=null,this.days=14,this.from=``,this.to=``,this.tz=``,this.group=``,this.groups=[],this.panels=[],this.exported=!1,this.tab=``,this.tabFocus=new mi(this,{items:()=>[...this.renderRoot.querySelectorAll(`[role="tab"]`)],layout:`horizontal`,wrap:!0})}static{this.styles=[V,k` :host{display:block;}.controls{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;margin-bottom:14px;}.controls label{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--text-muted);}input,select{background:var(--well);border:1px solid var(--line);color:var(--text);border-radius:8px;font:inherit;font-size:12px;padding:4px 8px;}input:focus-visible,select:focus-visible{outline:var(--focus-width) solid var(--focus);outline-offset:1px;}.period{font-size:12px;color:var(--text-2);}.loading{font-size:12px;color:var(--text-muted);}.err{font-size:12px;color:var(--status-failed);}.wide{margin-bottom:14px;}.pairs{columns:2 440px;column-gap:14px;margin-bottom:14px;}.pairs>.panel{break-inside:avoid;margin-bottom:14px;}.panel{display:block;}.tabs{display:flex;flex-wrap:wrap;gap:2px;border-bottom:1px solid var(--line);margin-bottom:14px;}.tab{background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-1px;padding:8px 14px 9px;color:var(--text-muted);font:inherit;font-weight:500;cursor:pointer;white-space:nowrap;}.tab:hover{color:var(--text-2);}.tab[aria-selected='true']{color:var(--text);font-weight:600;border-bottom-color:var(--accent);}.tab:focus-visible{outline:var(--focus-width) solid var(--focus);outline-offset:-2px;}`]}go(e){$(this,`ca-navigate`,e)}render(){let e=this.view,t=this.panels.filter(e=>e.scope===`trends`),n=im(t),r=n.includes(this.tab)?this.tab:``,i=t.filter(e=>(e.tab??``)===r),a=r?this.trendPanels(i,e?.panels??{},!1):this.trends(i);return A`<h2 class="sr">${jc()}</h2>
968
969
  ${this.controls()}
969
970
  ${e?.error?A`<p class="err" role="alert">${D(`No answer from the monitor`)} | ${e.error.message}</p>`:M}
970
- ${n.length>1?A`${this.tabList(n,r)}<div role="tabpanel" id="trends-tabpanel" aria-labelledby=${`trends-tab-${n.indexOf(r)}`}>${a}</div>`:a}`}tabList(e,t){return A`<div class="tabs" role="tablist" aria-label=${Ac()}>
971
+ ${n.length>1?A`${this.tabList(n,r)}<div role="tabpanel" id="trends-tabpanel" aria-labelledby=${`trends-tab-${n.indexOf(r)}`}>${a}</div>`:a}`}tabList(e,t){return A`<div class="tabs" role="tablist" aria-label=${jc()}>
971
972
  ${e.map((e,n)=>A`<button type="button" role="tab" class="tab" id=${`trends-tab-${n}`} aria-selected=${e===t?`true`:`false`} aria-controls="trends-tabpanel" @click=${()=>e!==t&&$(this,`ca-navigate`,{trendsTab:e})}>${e||D(`Summary`)}</button>`)}
972
- </div>`}updated(){let e=nm(this.panels);this.tabFocus.set(Math.max(0,e.indexOf(this.tab)))}trends(e){let t=this.view,n=t?.data??null,r=n?Qp(n,An()):[],i=r.filter(e=>e.wide),a=r.filter(e=>!e.wide),o=[`totals`,`cost-by-day`,`kinds`,`python-kinds`,`models`,`usage`],s=i.filter(e=>o.includes(e.id)),c=i.filter(e=>!o.includes(e.id)),l=(e,t)=>A`<section class="panel" data-section=${t}><ca-panel-body .body=${e}></ca-panel-body></section>`;return A`${!n&&t?.loading?A`<p class="loading">${D(`Loading…`)}</p>`:M}
973
+ </div>`}updated(){let e=im(this.panels);this.tabFocus.set(Math.max(0,e.indexOf(this.tab)))}trends(e){let t=this.view,n=t?.data??null,r=n?em(n,An()):[],i=r.filter(e=>e.wide),a=r.filter(e=>!e.wide),o=[`totals`,`cost-by-day`,`kinds`,`python-kinds`,`models`,`usage`],s=i.filter(e=>o.includes(e.id)),c=i.filter(e=>!o.includes(e.id)),l=(e,t)=>A`<section class="panel" data-section=${t}><ca-panel-body .body=${e}></ca-panel-body></section>`;return A`${!n&&t?.loading?A`<p class="loading">${D(`Loading…`)}</p>`:M}
973
974
  ${n&&!r.length?A`<div class="blank small"><span>${D(`No runs in this period`)}</span></div>`:M}
974
975
  ${H(s,e=>e.id,e=>A`<div class="wide">${l(e.body,e.id)}</div>`)}
975
976
  ${a.length?A`<div class="pairs">${H(a,e=>e.id,e=>l(e.body,e.id))}</div>`:M}
976
977
  ${H(c,e=>e.id,e=>A`<div class="wide">${l(e.body,e.id)}</div>`)}
977
- ${this.trendPanels(e,t?.panels??{},!0)}`}controls(){let e=this.view?.data,t=e?A`<span class="period">${function(e,t,n,r=An()){let i=t.slice(0,4);return D(E`${Mc(e,r)} to ${Mc(t,r)}, ${i} | ${n}`)}(e.period.from,e.period.to,e.period.tz)}</span>`:M;if(this.exported)return A`<div class="controls"><span class="meta">${D(`Period of this export`)}</span>${t}</div>`;let n=this.days?String(this.days):`dates`,r=e?.period.to||new Date().toISOString().slice(0,10),i=[...new Set([this.tz,Intl.DateTimeFormat().resolvedOptions().timeZone,`UTC`].filter(Boolean))];return A`<div class="controls">
978
- <cae-segmented label=${D(`Period`)} .value=${n} .options=${[...nr.map(e=>({value:String(e),label:Nc(e)})),{value:`dates`,label:D(`Dates`)}]} @cae-change=${e=>e.detail.value===`dates`?this.go({days:0,from:this.from||em(r,(this.days||14)-1),to:this.to||r}):this.go({days:Number(e.detail.value),from:``,to:``})}></cae-segmented>
978
+ ${this.trendPanels(e,t?.panels??{},!0)}`}controls(){let e=this.view?.data,t=e?A`<span class="period">${function(e,t,n,r=An()){let i=t.slice(0,4);return D(E`${Nc(e,r)} to ${Nc(t,r)}, ${i} | ${n}`)}(e.period.from,e.period.to,e.period.tz)}</span>`:M;if(this.exported)return A`<div class="controls"><span class="meta">${D(`Period of this export`)}</span>${t}</div>`;let n=this.days?String(this.days):`dates`,r=e?.period.to||new Date().toISOString().slice(0,10),i=[...new Set([this.tz,Intl.DateTimeFormat().resolvedOptions().timeZone,`UTC`].filter(Boolean))];return A`<div class="controls">
979
+ <cae-segmented label=${D(`Period`)} .value=${n} .options=${[...nr.map(e=>({value:String(e),label:Pc(e)})),{value:`dates`,label:D(`Dates`)}]} @cae-change=${e=>e.detail.value===`dates`?this.go({days:0,from:this.from||nm(r,(this.days||14)-1),to:this.to||r}):this.go({days:Number(e.detail.value),from:``,to:``})}></cae-segmented>
979
980
  ${this.days===0?A`<label>${D(`From`)} <input type="date" .value=${this.from} max=${this.to||M} @change=${e=>this.go({days:0,from:e.target.value,to:this.to})} /></label>
980
981
  <label>${D(`To`)} <input type="date" .value=${this.to} min=${this.from||M} @change=${e=>this.go({days:0,from:this.from,to:e.target.value})} /></label>`:M}
981
982
  <label>${D(`Time zone`)}
@@ -989,11 +990,11 @@ ${this.groups.map(e=>A`<option value=${e} ?selected=${e===this.group}>${e}</opti
989
990
  </select></label>`:M}
990
991
  ${t}
991
992
  ${this.view?.loading&&e?A`<span class="loading" aria-live="polite">${D(`Loading…`)}</span>`:M}
992
- </div>`}trendPanels(e,t,n){return e.length?A`${n?A`<h3 class="sect-h">${Fc().trendPanels}</h3>`:M}
993
+ </div>`}trendPanels(e,t,n){return e.length?A`${n?A`<h3 class="sect-h">${Ic().trendPanels}</h3>`:M}
993
994
  ${e.map(e=>A`<section class="panel wide" data-panel=${e.name}>
994
995
  <h3>${e.icon} ${e.title||e.name}${e.description?A`<span class="r">${e.description}</span>`:M}</h3>
995
996
  ${t[e.name]?A`<ca-panel-body .body=${t[e.name]}></ca-panel-body>`:A`<p class="loading">${D(`Loading…`)}</p>`}
996
- </section>`)}`:M}};U([F({attribute:!1})],rm.prototype,`view`,void 0),U([F({type:Number})],rm.prototype,`days`,void 0),U([F()],rm.prototype,`from`,void 0),U([F()],rm.prototype,`to`,void 0),U([F()],rm.prototype,`tz`,void 0),U([F()],rm.prototype,`group`,void 0),U([F({attribute:!1})],rm.prototype,`groups`,void 0),U([F({attribute:!1})],rm.prototype,`panels`,void 0),U([F({type:Boolean})],rm.prototype,`exported`,void 0),U([F()],rm.prototype,`tab`,void 0),rm=U([P(`ca-trends`),O()],rm);var im=class extends N{static{this.styles=[Dr,V,yl,hl]}constructor(){super(),this.baseUrl=``,this.exportUrl=``,this.history=`url`,this.shortcuts=``,this.run=``,this.locale=``,this.theme=``,this.live=!1,this.pickerOpen=!1,this.qDraft=null,this.themes=new kr(this,{theme:()=>this.theme,pageWide:()=>this.history===`url`}),this.tabFocus=new mi(this,{items:()=>[...this.renderRoot.querySelectorAll(`[role="tablist"] [role="tab"]`)],layout:`horizontal`,wrap:!0}),this.storeBase=``,this.viewRouterMode=`url`,this.storeCleanups=[],this.mainScroll=new $n(`main`,()=>Yn(this)),this.pendingScroll=null,this.qTimer=null,this.cleanups=[],this.localMemory=new Kn,this.onOutsideClick=e=>{e.composedPath().some(e=>e instanceof HTMLElement&&(e.localName===`ca-run-picker`||e.classList.contains(`runbtn`)))||(this.pickerOpen=!1)},this.outsideClickOn=!1,this.navObserver=null,this.navObserved=null,this.locales=!1,this.language=new dr(this,{locale:()=>this.locale,pageWide:()=>this.history===`url`}),new fr(this,e=>this.onKey(e),()=>this.shortcutScope)}async scheduleUpdate(){return await this.language.ready,super.scheduleUpdate()}connectedCallback(){this.locales=kn(),function(e=document){if(Or.has(e))return;let t=Er.styleSheet;t&&`adoptedStyleSheets`in e&&(e.adoptedStyleSheets=[...e.adoptedStyleSheets,t],Or.add(e))}(this.ownerDocument),super.connectedCallback(),this.openStore(),this.openViewRouter(),this.store.start(),this.cleanups.push(()=>{this.listenOutside(!1),this.navObserver?.disconnect(),this.navObserver=null,this.navObserved=null}),this.addEventListener(`ca-open-task`,e=>{this.navigate({tab:`stream`,key:e.detail.key,...e.detail.view?{view:e.detail.view}:{}})}),this.addEventListener(`ca-navigate`,e=>{let{replace:t,...n}=e.detail;this.navigate(n,{replace:!0===t})}),this.addEventListener(`ca-select-run`,e=>this.navigate({run:e.detail.run,page:``})),this.addEventListener(`ca-filter`,e=>this.navigate(e.detail)),this.addEventListener(`ca-choose-theme`,e=>{this.theme=e.detail.theme,function(e,t=Tr()){try{t?.setItem(wr,e)}catch{}}(e.detail.theme)})}get source(){return this.exportUrl?`export:${this.exportUrl}`:this.baseUrl}openStore(){if(this.storeBase=this.source,this.exportUrl){let e=function(e,t={}){let n=e.endsWith(`/`)?e:`${e}/`,r=t.fetch??globalThis.fetch,a=new Map;function o(e){let t=a.get(e);return t||(t=async function(e){let t;try{t=await r(new Request(e))}catch{throw new i(e,`network`)}let n=(t.headers.get(`Content-Type`)??``).split(`;`)[0].trim().toLowerCase();if(!t.ok)throw new i(e,`status`,t.status,n);try{return await t.json()}catch{throw new i(e,`not-json`,t.status,n)}}(n+e),t.catch(()=>a.delete(e)),a.set(e,t)),t}let s=(e,t)=>`runs/${ye(e)}/${t}`,c=e=>Promise.reject(new i(n+e,`status`,404));return{baseUrl:n.replace(/\/$/,``),file:o,info:()=>o(`info.json`),runs:()=>o(`runs.json`),hosts:()=>c(`hosts.json`),async journal(e,t=0){let n=await o(s(e,`journal.json`));return t>0?{entries:n.entries.slice(t),total:n.total}:n},definitions:e=>o(s(e,`definitions.json`)),async task(e,t){let[n,r,i,a]=await Promise.all([o(s(e,`tasks/${ye(be(t))}.json`)),o(s(e,`journal.json`)),o(s(e,`definitions.json`)),o(s(e,`plan.json`))]),c=r.entries.filter(e=>e.key===t),l=c.at(-1)?.kind??a.nodes.find(e=>e.key===t)?.kind;return{...n,rows:c,definition:i.find(e=>e.kind===l)??null}},stream:(e,t)=>c(s(e,`streams/${ye(be(t))}.json`)),panel:(e,t)=>o(s(e,`panels/${ye(t)}.json`)),trends:()=>o(`trends.json`),trendsPanel:e=>o(`trends/panels/${ye(e)}.json`)}}(new URL(this.exportUrl,this.ownerDocument.baseURI).href);this.store=new ve({client:e,openRunFeed:Se(e),runsEveryMs:0})}else this.store=new ve({baseUrl:this.baseUrl});this.show(this.store.snapshot),this.storeCleanups.push(this.store.subscribe(e=>{this.show(e),this.pickDefaultRun()}),this.store.onNewRow(e=>this.toasts?.show(...fl(e,this.snap.run))))}closeStore(){for(let e of this.storeCleanups.splice(0))e();this.store.stop()}openViewRouter(){this.viewRouterMode=this.history,Jn(this,this.history===`memory`?this.localMemory:null);let e=this.viewRoute?this.history===`memory`?this.viewRoute:{}:this.run?{run:this.run}:{};this.viewRouter=new ur(this.history,(e,t)=>this.onViewRoute(e,t),e,Wn),this.viewRouter.start()}willUpdate(e){this.isConnected&&this.store&&(this.source!==this.storeBase&&(this.closeStore(),this.openStore(),this.navigate({run:this.run},{replace:!0}),this.store.selectRun(this.viewRoute.run),this.store.start()),this.history!==this.viewRouterMode&&(this.viewRouter.stop(),this.openViewRouter()),e.has(`run`)&&e.get(`run`)!==void 0&&this.run&&this.navigate({run:this.run}))}show(e){e.error&&e.error!==this.snap?.error&&console.error(dl(e.error)),this.snap=e,this.live=de(e.state,ue(e.runs,e.run))}get shortcutScope(){return(e=>e===`page`||e===`element`||e===`off`)(this.shortcuts)?this.shortcuts:this.history===`url`?`page`:`element`}listenOutside(e){e!==this.outsideClickOn&&(this.outsideClickOn=e,e?document.addEventListener(`click`,this.onOutsideClick):document.removeEventListener(`click`,this.onOutsideClick))}get shownTheme(){return this.themes.shown}disconnectedCallback(){super.disconnectedCallback();for(let e of this.cleanups.splice(0))e();Jn(this,null),this.viewRouter.stop(),this.closeStore(),this.mainScroll.detach()}navigate(e,t={}){this.viewRouter.navigate(e,t)}onViewRoute(e,t){let n=this.viewRoute;this.viewRoute=e,t!==`replace`&&(this.qDraft=null),this.store.selectRun(e.run);let r=n?.page===`trends`&&JSON.stringify(tm(n))===JSON.stringify(tm(e));e.page===`trends`?r||this.store.loadTrends(tm(e)):this.store.closeTrends(),this.pickDefaultRun(),t!==`replace`&&(this.pendingScroll=t)}pickDefaultRun(){let{info:e,runs:t}=this.snap;if(this.viewRoute.page===`trends`)return;if(this.viewRoute.page===`hosts`){if(!e.api_version||e.hosts)return;this.navigate({page:``},{replace:!0})}let n=t[0];!this.viewRoute.run&&n&&this.navigate({run:n.run},{replace:!0})}onKey(e){if(e.key===`r`)e.preventDefault(),this.pickerOpen=!0;else if(e.key===`/`)e.preventDefault(),this.renderRoot.querySelector(`.bar input`)?.focus();else if(/^[1-9]$/.test(e.key)&&!this.viewRoute.page){let t=gl(this.snap.info.panels)[Number(e.key)-1];t&&this.navigate({tab:t.id})}}selectedTab(){return gl(this.snap.info.panels).findIndex(e=>e.id===this.viewRoute.tab)}closePicker(){let e=this.picker?.matches(`:focus-within`);this.pickerOpen=!1,e&&this.runBtn?.focus()}updated(){this.history===`url`&&this.snap&&(document.title=D(E`${this.snap.info.title} monitor`)),this.listenOutside(this.isConnected&&this.pickerOpen),this.observeNav(),this.snap&&this.viewRoute&&this.tabFocus.set(Math.max(0,this.selectedTab())),vl(this.renderRoot),this.main&&this.mainScroll.attach(this.main),this.pendingScroll&&=(this.pendingScroll===`push`?this.mainScroll.reset():this.mainScroll.restore(),null),this.snap&&this.viewRoute&&this.mainScroll.update(this.complete())}complete(){let{snap:e,viewRoute:t}=this;return t.page===`hosts`?e.hosts!==null:t.page===`trends`?!!e.trends?.data&&!e.trends.loading:e.run===t.run&&e.state.ready}observeNav(){let e=this.renderRoot.querySelector(`nav`);e&&typeof ResizeObserver<`u`&&this.navObserved!==e&&(this.navObserver?this.navObserver.disconnect():this.navObserver=new ResizeObserver(()=>vl(this.renderRoot)),this.navObserver.observe(e),this.navObserved=e)}setQ(e){this.qDraft=e,this.qTimer&&clearTimeout(this.qTimer),this.qTimer=setTimeout(()=>{this.qTimer=null,this.navigate({q:e})},250)}pickLocale(e){this.locale=e,Fn(e)}render(){if(!this.snap||!this.viewRoute)return M;let{snap:e,viewRoute:t}=this,n=fe(e.state.procs),r=S(e.state.journal,e.state.plan),i=this.selectedTab(),a=this.shortcutScope!==`off`,o=!!e.info.hosts,s=t.page===`hosts`,c=t.page===`trends`;return A`
997
+ </section>`)}`:M}};U([F({attribute:!1})],am.prototype,`view`,void 0),U([F({type:Number})],am.prototype,`days`,void 0),U([F()],am.prototype,`from`,void 0),U([F()],am.prototype,`to`,void 0),U([F()],am.prototype,`tz`,void 0),U([F()],am.prototype,`group`,void 0),U([F({attribute:!1})],am.prototype,`groups`,void 0),U([F({attribute:!1})],am.prototype,`panels`,void 0),U([F({type:Boolean})],am.prototype,`exported`,void 0),U([F()],am.prototype,`tab`,void 0),am=U([P(`ca-trends`),O()],am);var om=class extends N{static{this.styles=[Dr,V,bl,gl]}constructor(){super(),this.baseUrl=``,this.exportUrl=``,this.history=`url`,this.shortcuts=``,this.run=``,this.locale=``,this.theme=``,this.live=!1,this.pickerOpen=!1,this.qDraft=null,this.themes=new kr(this,{theme:()=>this.theme,pageWide:()=>this.history===`url`}),this.tabFocus=new mi(this,{items:()=>[...this.renderRoot.querySelectorAll(`[role="tablist"] [role="tab"]`)],layout:`horizontal`,wrap:!0}),this.storeBase=``,this.viewRouterMode=`url`,this.storeCleanups=[],this.mainScroll=new $n(`main`,()=>Yn(this)),this.pendingScroll=null,this.qTimer=null,this.cleanups=[],this.localMemory=new Kn,this.onOutsideClick=e=>{e.composedPath().some(e=>e instanceof HTMLElement&&(e.localName===`ca-run-picker`||e.classList.contains(`runbtn`)))||(this.pickerOpen=!1)},this.outsideClickOn=!1,this.navObserver=null,this.navObserved=null,this.locales=!1,this.language=new dr(this,{locale:()=>this.locale,pageWide:()=>this.history===`url`}),new fr(this,e=>this.onKey(e),()=>this.shortcutScope)}async scheduleUpdate(){return await this.language.ready,super.scheduleUpdate()}connectedCallback(){this.locales=kn(),function(e=document){if(Or.has(e))return;let t=Er.styleSheet;t&&`adoptedStyleSheets`in e&&(e.adoptedStyleSheets=[...e.adoptedStyleSheets,t],Or.add(e))}(this.ownerDocument),super.connectedCallback(),this.openStore(),this.openViewRouter(),this.store.start(),this.cleanups.push(()=>{this.listenOutside(!1),this.navObserver?.disconnect(),this.navObserver=null,this.navObserved=null}),this.addEventListener(`ca-open-task`,e=>{this.navigate({tab:`stream`,key:e.detail.key,...e.detail.view?{view:e.detail.view}:{}})}),this.addEventListener(`ca-navigate`,e=>{let{replace:t,...n}=e.detail;this.navigate(n,{replace:!0===t})}),this.addEventListener(`ca-select-run`,e=>this.navigate({run:e.detail.run,page:``})),this.addEventListener(`ca-filter`,e=>this.navigate(e.detail)),this.addEventListener(`ca-choose-theme`,e=>{this.theme=e.detail.theme,function(e,t=Tr()){try{t?.setItem(wr,e)}catch{}}(e.detail.theme)})}get source(){return this.exportUrl?`export:${this.exportUrl}`:this.baseUrl}openStore(){if(this.storeBase=this.source,this.exportUrl){let e=function(e,t={}){let n=e.endsWith(`/`)?e:`${e}/`,r=t.fetch??globalThis.fetch,a=new Map;function o(e){let t=a.get(e);return t||(t=async function(e){let t;try{t=await r(new Request(e))}catch{throw new i(e,`network`)}let n=(t.headers.get(`Content-Type`)??``).split(`;`)[0].trim().toLowerCase();if(!t.ok)throw new i(e,`status`,t.status,n);try{return await t.json()}catch{throw new i(e,`not-json`,t.status,n)}}(n+e),t.catch(()=>a.delete(e)),a.set(e,t)),t}let s=(e,t)=>`runs/${ye(e)}/${t}`,c=e=>Promise.reject(new i(n+e,`status`,404));return{baseUrl:n.replace(/\/$/,``),file:o,info:()=>o(`info.json`),runs:()=>o(`runs.json`),hosts:()=>c(`hosts.json`),async journal(e,t=0){let n=await o(s(e,`journal.json`));return t>0?{entries:n.entries.slice(t),total:n.total}:n},definitions:e=>o(s(e,`definitions.json`)),async task(e,t){let[n,r,i,a]=await Promise.all([o(s(e,`tasks/${ye(be(t))}.json`)),o(s(e,`journal.json`)),o(s(e,`definitions.json`)),o(s(e,`plan.json`))]),c=r.entries.filter(e=>e.key===t),l=c.at(-1)?.kind??a.nodes.find(e=>e.key===t)?.kind;return{...n,rows:c,definition:i.find(e=>e.kind===l)??null}},stream:(e,t)=>c(s(e,`streams/${ye(be(t))}.json`)),panel:(e,t)=>o(s(e,`panels/${ye(t)}.json`)),trends:()=>o(`trends.json`),trendsPanel:e=>o(`trends/panels/${ye(e)}.json`)}}(new URL(this.exportUrl,this.ownerDocument.baseURI).href);this.store=new ve({client:e,openRunFeed:Se(e),runsEveryMs:0})}else this.store=new ve({baseUrl:this.baseUrl});this.show(this.store.snapshot),this.storeCleanups.push(this.store.subscribe(e=>{this.show(e),this.pickDefaultRun()}),this.store.onNewRow(e=>this.toasts?.show(...pl(e,this.snap.run))))}closeStore(){for(let e of this.storeCleanups.splice(0))e();this.store.stop()}openViewRouter(){this.viewRouterMode=this.history,Jn(this,this.history===`memory`?this.localMemory:null);let e=this.viewRoute?this.history===`memory`?this.viewRoute:{}:this.run?{run:this.run}:{};this.viewRouter=new ur(this.history,(e,t)=>this.onViewRoute(e,t),e,Wn),this.viewRouter.start()}willUpdate(e){this.isConnected&&this.store&&(this.source!==this.storeBase&&(this.closeStore(),this.openStore(),this.navigate({run:this.run},{replace:!0}),this.store.selectRun(this.viewRoute.run),this.store.start()),this.history!==this.viewRouterMode&&(this.viewRouter.stop(),this.openViewRouter()),e.has(`run`)&&e.get(`run`)!==void 0&&this.run&&this.navigate({run:this.run}))}show(e){e.error&&e.error!==this.snap?.error&&console.error(fl(e.error)),this.snap=e,this.live=de(e.state,ue(e.runs,e.run))}get shortcutScope(){return(e=>e===`page`||e===`element`||e===`off`)(this.shortcuts)?this.shortcuts:this.history===`url`?`page`:`element`}listenOutside(e){e!==this.outsideClickOn&&(this.outsideClickOn=e,e?document.addEventListener(`click`,this.onOutsideClick):document.removeEventListener(`click`,this.onOutsideClick))}get shownTheme(){return this.themes.shown}disconnectedCallback(){super.disconnectedCallback();for(let e of this.cleanups.splice(0))e();Jn(this,null),this.viewRouter.stop(),this.closeStore(),this.mainScroll.detach()}navigate(e,t={}){this.viewRouter.navigate(e,t)}onViewRoute(e,t){let n=this.viewRoute;this.viewRoute=e,t!==`replace`&&(this.qDraft=null),this.store.selectRun(e.run);let r=n?.page===`trends`&&JSON.stringify(rm(n))===JSON.stringify(rm(e));e.page===`trends`?r||this.store.loadTrends(rm(e)):this.store.closeTrends(),this.pickDefaultRun(),t!==`replace`&&(this.pendingScroll=t)}pickDefaultRun(){let{info:e,runs:t}=this.snap;if(this.viewRoute.page===`trends`)return;if(this.viewRoute.page===`hosts`){if(!e.api_version||e.hosts)return;this.navigate({page:``},{replace:!0})}let n=t[0];!this.viewRoute.run&&n&&this.navigate({run:n.run},{replace:!0})}onKey(e){if(e.key===`r`)e.preventDefault(),this.pickerOpen=!0;else if(e.key===`/`)e.preventDefault(),this.renderRoot.querySelector(`.bar input`)?.focus();else if(/^[1-9]$/.test(e.key)&&!this.viewRoute.page){let t=_l(this.snap.info.panels)[Number(e.key)-1];t&&this.navigate({tab:t.id})}}selectedTab(){return _l(this.snap.info.panels).findIndex(e=>e.id===this.viewRoute.tab)}closePicker(){let e=this.picker?.matches(`:focus-within`);this.pickerOpen=!1,e&&this.runBtn?.focus()}updated(){this.history===`url`&&this.snap&&(document.title=D(E`${this.snap.info.title} monitor`)),this.listenOutside(this.isConnected&&this.pickerOpen),this.observeNav(),this.snap&&this.viewRoute&&this.tabFocus.set(Math.max(0,this.selectedTab())),yl(this.renderRoot),this.main&&this.mainScroll.attach(this.main),this.pendingScroll&&=(this.pendingScroll===`push`?this.mainScroll.reset():this.mainScroll.restore(),null),this.snap&&this.viewRoute&&this.mainScroll.update(this.complete())}complete(){let{snap:e,viewRoute:t}=this;return t.page===`hosts`?e.hosts!==null:t.page===`trends`?!!e.trends?.data&&!e.trends.loading:e.run===t.run&&e.state.ready}observeNav(){let e=this.renderRoot.querySelector(`nav`);e&&typeof ResizeObserver<`u`&&this.navObserved!==e&&(this.navObserver?this.navObserver.disconnect():this.navObserver=new ResizeObserver(()=>yl(this.renderRoot)),this.navObserver.observe(e),this.navObserved=e)}setQ(e){this.qDraft=e,this.qTimer&&clearTimeout(this.qTimer),this.qTimer=setTimeout(()=>{this.qTimer=null,this.navigate({q:e})},250)}pickLocale(e){this.locale=e,Fn(e)}render(){if(!this.snap||!this.viewRoute)return M;let{snap:e,viewRoute:t}=this,n=fe(e.state.procs),r=S(e.state.journal,e.state.plan),i=this.selectedTab(),a=this.shortcutScope!==`off`,o=!!e.info.hosts,s=t.page===`hosts`,c=t.page===`trends`;return A`
997
998
  <header>
998
999
  ${u=e.info.title,A`<div class="brand">
999
1000
  <svg viewBox="12 12 96 96" aria-hidden="true">
@@ -1018,38 +1019,38 @@ ${s?this.hostsLabel():c?this.trendsLabel():this.runLabel(o,r)}
1018
1019
  <span class="chev" aria-hidden="true">▾</span>
1019
1020
  </button>
1020
1021
  <div class="hdr-right">
1021
- ${((e,t)=>A`<span class="nowline">${t.length?D(A`Running ${t.slice(0,3).map(t=>bl(e,J(t),{key:t.key}))}${t.length>3?A` <span>+${t.length-3}</span>`:M}`):M}</span>`)(this,n)}
1022
+ ${((e,t)=>A`<span class="nowline">${t.length?D(A`Running ${t.slice(0,3).map(t=>xl(e,J(t),{key:t.key}))}${t.length>3?A` <span>+${t.length-3}</span>`:M}`):M}</span>`)(this,n)}
1022
1023
  <ca-theme-switch .value=${this.themes.choice} .system=${this.themes.system}></ca-theme-switch>
1023
1024
  ${this.locales?A`<cae-segmented class="langs" label=${D(`Language`)} .value=${An()} .options=${En.map(e=>({value:e,label:Dn[e],lang:e}))} @cae-change=${e=>Nn(e.detail.value)&&this.pickLocale(e.detail.value)}></cae-segmented>`:M}
1024
- ${e.info.export?Zr({text:Ec(e.info.export),tone:`muted`,title:Oc(e.info.export)}):(e=>{let t=D(e?`Connected to the monitor server`:`Not connected to the monitor server`);return A`<span role="img" aria-label=${t} title=${t}><span class="live-dot ${e?``:`off`}"></span></span>`})(e.connected)}
1025
+ ${e.info.export?Zr({text:Dc(e.info.export),tone:`muted`,title:kc(e.info.export)}):(e=>{let t=D(e?`Connected to the monitor server`:`Not connected to the monitor server`);return A`<span role="img" aria-label=${t} title=${t}><span class="live-dot ${e?``:`off`}"></span></span>`})(e.connected)}
1025
1026
  <ca-clock class="clock"></ca-clock>
1026
1027
  </div>
1027
1028
  <ca-run-picker .runs=${e.runs} current=${t.run} ?open=${this.pickerOpen} ?hub=${o} .hosts=${e.hosts?.hosts??[]} page=${t.page} @ca-close=${()=>this.closePicker()}></ca-run-picker>
1028
1029
  </header>
1029
- ${s?A`${this.renderApiError()}<main id="main"><ca-hosts .hosts=${e.hosts}></ca-hosts></main>`:c?A`${this.renderApiError()}<main id="main"><ca-trends .view=${e.trends} days=${t.days} from=${t.from} to=${t.to} tz=${t.tz||$p()} group=${t.group} .groups=${l=e.runs,[...new Set(l.map(e=>e.run_group).filter(e=>!!e))]} .panels=${e.info.panels} tab=${t.trendsTab} ?exported=${!!e.info.export}></ca-trends></main>`:A`${this.renderTabs(r,n.length)} ${this.renderBar(r)} ${this.renderApiError()}
1030
- <main id="main" class=${t.tab===`stream`?`stream`:``} role="tabpanel" aria-labelledby=${i>=0?_l(i):M} >${function({snap:e,viewRoute:t,derived:n,q:r,client:i,baseUrl:a}){let{state:o}=e;if(!t.run)return A`<div class="blank">${e.runsLoaded&&!e.error?A`<span class="ic" aria-hidden="true">✦</span><b>${D(`No runs yet`,{id:`no-runs-yet`})}</b>`:M}</div>`;let s=ue(e.runs,e.run),c=de(o,s);switch(t.tab){case`overview`:return A`<ca-overview .state=${o} .summary=${s} .host=${re(e.hosts?.hosts,s)} .info=${e.info} .run=${t.run} .layer=${t.layer} .unit=${t.unit} .sel=${t.sel}></ca-overview>`;case`tasks`:return A`<ca-task-table .run=${t.run} .journal=${o.journal} .plan=${o.plan} .kind=${t.kind} .q=${r} ?live=${c}></ca-task-table>`;case`journal`:return A`<ca-journal-table .run=${t.run} .rows=${o.journal} .plan=${o.plan} .fresh=${e.fresh} .kind=${t.kind} .stop=${t.stop} .q=${r} .extras=${s?.row_extras??[]} ?replay-marks=${nc(s)}></ca-journal-table>`;case`outputs`:return A`<ca-contracts .run=${t.run} .outputs=${o.outputs} .journal=${o.journal} .plan=${o.plan}></ca-contracts>`;case`definitions`:return A`<ca-definitions .client=${i} .run=${t.run} .journal=${o.journal} .plan=${o.plan} .live=${c} .selected=${t.def}></ca-definitions>`;case`procs`:return A`<ca-procs-view .procs=${o.procs} ?unresponsive=${ne(s,!!o.procs?.alive)===`unresponsive`} ?exported=${!!e.info.export}></ca-procs-view>`;case`stream`:return A`<ca-task-view .client=${i} .journal=${o.journal} .plan=${o.plan} base-url=${a} .run=${t.run} .taskKey=${t.key??function(e){let t=e.filter(e=>e.executor!==`python`),n=t.find(e=>e.outcome===`running`);if(n)return n.key;let r=e=>e.tries[e.tries.length-1]?.ts??``;return t.filter(r).sort((e,t)=>r(t).localeCompare(r(e)))[0]?.key??null}(n.rows)} .view=${t.view} .round=${t.round} .live=${c} ?exported=${!!e.info.export} ?replay-marks=${nc(s)}></ca-task-view>`;default:{let n=t.tab.slice(6);return A`<ca-panel-view .name=${n} .panel=${e.info.panels.find(e=>e.name===n)} .data=${o.panels[n]} base-url=${a}></ca-panel-view>`}}}({snap:e,viewRoute:t,derived:r,q:this.qDraft??t.q,client:this.store.client,baseUrl:this.store.client.baseUrl})}</main>`}
1030
+ ${s?A`${this.renderApiError()}<main id="main"><ca-hosts .hosts=${e.hosts}></ca-hosts></main>`:c?A`${this.renderApiError()}<main id="main"><ca-trends .view=${e.trends} days=${t.days} from=${t.from} to=${t.to} tz=${t.tz||tm()} group=${t.group} .groups=${l=e.runs,[...new Set(l.map(e=>e.run_group).filter(e=>!!e))]} .panels=${e.info.panels} tab=${t.trendsTab} ?exported=${!!e.info.export}></ca-trends></main>`:A`${this.renderTabs(r,n.length)} ${this.renderBar(r)} ${this.renderApiError()}
1031
+ <main id="main" class=${t.tab===`stream`?`stream`:``} role="tabpanel" aria-labelledby=${i>=0?vl(i):M} >${function({snap:e,viewRoute:t,derived:n,q:r,client:i,baseUrl:a}){let{state:o}=e;if(!t.run)return A`<div class="blank">${e.runsLoaded&&!e.error?A`<span class="ic" aria-hidden="true">✦</span><b>${D(`No runs yet`,{id:`no-runs-yet`})}</b>`:M}</div>`;let s=ue(e.runs,e.run),c=de(o,s);switch(t.tab){case`overview`:return A`<ca-overview .state=${o} .summary=${s} .host=${re(e.hosts?.hosts,s)} .info=${e.info} .run=${t.run} .layer=${t.layer} .unit=${t.unit} .sel=${t.sel}></ca-overview>`;case`tasks`:return A`<ca-task-table .run=${t.run} .journal=${o.journal} .plan=${o.plan} .kind=${t.kind} .q=${r} ?live=${c}></ca-task-table>`;case`journal`:return A`<ca-journal-table .run=${t.run} .rows=${o.journal} .plan=${o.plan} .fresh=${e.fresh} .kind=${t.kind} .stop=${t.stop} .q=${r} .extras=${s?.row_extras??[]} ?replay-marks=${rc(s)}></ca-journal-table>`;case`outputs`:return A`<ca-contracts .run=${t.run} .outputs=${o.outputs} .journal=${o.journal} .plan=${o.plan}></ca-contracts>`;case`definitions`:return A`<ca-definitions .client=${i} .run=${t.run} .journal=${o.journal} .plan=${o.plan} .live=${c} .selected=${t.def}></ca-definitions>`;case`procs`:return A`<ca-procs-view .procs=${o.procs} ?unresponsive=${ne(s,!!o.procs?.alive)===`unresponsive`} ?exported=${!!e.info.export}></ca-procs-view>`;case`stream`:return A`<ca-task-view .client=${i} .journal=${o.journal} .plan=${o.plan} base-url=${a} .run=${t.run} .taskKey=${t.key??function(e){let t=e.filter(e=>e.executor!==`python`),n=t.find(e=>e.outcome===`running`);if(n)return n.key;let r=e=>e.tries[e.tries.length-1]?.ts??``;return t.filter(r).sort((e,t)=>r(t).localeCompare(r(e)))[0]?.key??null}(n.rows)} .view=${t.view} .round=${t.round} .live=${c} ?exported=${!!e.info.export} ?replay-marks=${rc(s)}></ca-task-view>`;default:{let n=t.tab.slice(6);return A`<ca-panel-view .name=${n} .panel=${e.info.panels.find(e=>e.name===n)} .data=${o.panels[n]} base-url=${a}></ca-panel-view>`}}}({snap:e,viewRoute:t,derived:r,q:this.qDraft??t.q,client:this.store.client,baseUrl:this.store.client.baseUrl})}</main>`}
1031
1032
  <ca-toasts></ca-toasts>
1032
1033
  `;var l,u}runLabel(e,t){let{snap:n,viewRoute:r}=this,i=ue(n.runs,n.run),a=ne(i,!!n.state.procs?.alive),o=ss(a,i?.tasks),s=e?i?.host_id??``:``;return A`<span class="dot" data-tone=${L(o)} aria-hidden="true"></span>
1033
1034
  <span class="rn" title=${s?r.run:M}>${i&&s?ie(i):r.run||`—`}</span>
1034
- ${s?A`<span class="hostchip" title=${lc(s)}><span class="sr">${lc(s)}</span><span aria-hidden="true">${s}</span></span>`:M}
1035
- ${a===`unresponsive`?Zr({text:oc(),tone:`attention`,title:cc(re(n.hosts?.hosts,i))}):M}
1036
- ${ac(i)?Zr({...ac(i),tone:`muted`}):M}
1037
- <span class="rs" title=${i?Fs(ec(n.state,i)):``}>${i?function(e,t,n=S(e.journal,e.plan)){let r=te(t),i=e.ready?Ee(e.journal)?.cost:t.cost_usd,a=i==null?``:X(i),o=Ps(ec(e,t)),s=K(r==null?``:D(E`took ${B(r)}`),a,o,t.running?D(`running`):``);if(!e.ready)return s;let c=n.counts,l=t.tasks.not_run?Z(`not_run`,t.tasks.not_run):``;return K(D(E`${c.doneTotal} of ${c.total} tasks done`),l,s)}(n.state,i,t):``}</span>`}trendsLabel(){return A`<span class="dot" data-tone="neutral" aria-hidden="true"></span><span class="rn">${Ac()}</span><span class="rs">${jc()}</span>`}hostsLabel(){let e=this.snap.hosts?.hosts??[];return A`<span class="dot" data-tone=${L(e.some(e=>!e.up)?`attention`:`neutral`)} aria-hidden="true"></span>
1038
- <span class="rn">${D(`Hosts`)}</span><span class="rs">${dc(e)}</span>`}renderApiError(){let{error:e}=this.snap;return A`<p class="api-error" role="alert">${e?A`<span class="ic" aria-hidden="true">✕</span> ${dl(e)}`:M}</p>`}renderTabs(e,t){let{state:n}=this.snap,{tries:r}=e.tries,i=e.counts;return function(e,t,n,r,i,a=!0){return A`<nav data-scroll="x">
1035
+ ${s?A`<span class="hostchip" title=${uc(s)}><span class="sr">${uc(s)}</span><span aria-hidden="true">${s}</span></span>`:M}
1036
+ ${a===`unresponsive`?Zr({text:sc(),tone:`attention`,title:lc(re(n.hosts?.hosts,i))}):M}
1037
+ ${oc(i)?Zr({...oc(i),tone:`muted`}):M}
1038
+ <span class="rs" title=${i?Fs(tc(n.state,i)):``}>${i?function(e,t,n=S(e.journal,e.plan)){let r=te(t),i=e.ready?Ee(e.journal)?.cost:t.cost_usd,a=i==null?``:X(i),o=Ps(tc(e,t)),s=K(r==null?``:D(E`took ${B(r)}`),a,o,t.running?D(`running`):``);if(!e.ready)return s;let c=n.counts,l=t.tasks.not_run?Z(`not_run`,t.tasks.not_run):``;return K(D(E`${c.doneTotal} of ${c.total} tasks done`),l,s)}(n.state,i,t):``}</span>`}trendsLabel(){return A`<span class="dot" data-tone="neutral" aria-hidden="true"></span><span class="rn">${jc()}</span><span class="rs">${Mc()}</span>`}hostsLabel(){let e=this.snap.hosts?.hosts??[];return A`<span class="dot" data-tone=${L(e.some(e=>!e.up)?`attention`:`neutral`)} aria-hidden="true"></span>
1039
+ <span class="rn">${D(`Hosts`)}</span><span class="rs">${fc(e)}</span>`}renderApiError(){let{error:e}=this.snap;return A`<p class="api-error" role="alert">${e?A`<span class="ic" aria-hidden="true">✕</span> ${fl(e)}`:M}</p>`}renderTabs(e,t){let{state:n}=this.snap,{tries:r}=e.tries,i=e.counts;return function(e,t,n,r,i,a=!0){return A`<nav data-scroll="x">
1039
1040
  <div class="tabs" role="tablist" aria-label=${D(`Views`)}>
1040
1041
  ${e.map((a,o)=>{let s=n(a.id),c=a.id===t;return A`${a.panel&&!e[o-1]?.panel?A`<span class="tab-sep" aria-hidden="true" title=${D(`Custom views`)}></span>`:M}
1041
- <button type="button" role="tab" id=${_l(o)} aria-selected=${c?`true`:`false`} aria-controls=${i} class="tab ${a.panel?`panel-tab`:``} ${c?`sel`:``}" title=${a.tip??M} @click=${()=>r(a.id)}>
1042
+ <button type="button" role="tab" id=${vl(o)} aria-selected=${c?`true`:`false`} aria-controls=${i} class="tab ${a.panel?`panel-tab`:``} ${c?`sel`:``}" title=${a.tip??M} @click=${()=>r(a.id)}>
1042
1043
  <span class="tab-ic" aria-hidden="true">${a.icon}</span><span class="tab-label" data-label=${a.label}>${a.label}</span>${s&&s[0]!==``?A`<span class="badge" data-tone=${L(s[1])}>${s[0]}</span>`:M}
1043
1044
  </button>`})}
1044
1045
  </div>
1045
1046
  <span class="tab-ind init" aria-hidden="true"></span>
1046
1047
  ${a?A`<span class="tabhint meta" role="note" aria-label=${D(`Keyboard shortcuts`)} ><span aria-hidden="true"><span class="kbd">1</span>–<span class="kbd">${Math.min(9,e.length)}</span> ${D(`Tabs`)} |
1047
1048
  <span class="kbd">r</span> ${D(`Runs`)} | <span class="kbd">/</span> ${D(`Filter`)}</span></span >`:M}
1048
- </nav>`}(gl(this.snap.info.panels),this.viewRoute.tab,e=>e===`tasks`?[i.total||``,`neutral`]:e===`journal`?[r||``,`neutral`]:e===`procs`?[n.procs?.alive&&t||``,`running`]:null,e=>this.navigate({tab:e}),`main`,this.shortcutScope!==`off`)}renderBar(e){let{viewRoute:t}=this;if(t.tab!==`tasks`&&t.tab!==`journal`)return M;let{counts:n,kinds:r}=e,i=n.total;return A`<div class="bar">
1049
+ </nav>`}(_l(this.snap.info.panels),this.viewRoute.tab,e=>e===`tasks`?[i.total||``,`neutral`]:e===`journal`?[r||``,`neutral`]:e===`procs`?[n.procs?.alive&&t||``,`running`]:null,e=>this.navigate({tab:e}),`main`,this.shortcutScope!==`off`)}renderBar(e){let{viewRoute:t}=this;if(t.tab!==`tasks`&&t.tab!==`journal`)return M;let{counts:n,kinds:r}=e,i=n.total;return A`<div class="bar">
1049
1050
  <select title=${D(`Kind`)} aria-label=${D(`Kind`)} @change=${e=>this.navigate({kind:e.target.value})}>
1050
1051
  <option value="" ?selected=${!t.kind}>${D(`All kinds`)}</option>
1051
1052
  ${r.map(e=>A`<option ?selected=${e===t.kind}>${e}</option>`)}
1052
1053
  </select>
1053
1054
  <input placeholder=${D(`Filter`)} aria-label=${D(`Text filter`)} size="22" title=${this.shortcutScope===`off`?D(`Text filter`):D(`Text filter (/)`)} .value=${this.qDraft??t.q} @input=${e=>this.setQ(e.target.value)} />
1054
1055
  <span class="meta">${t.tab===`journal`?function({tries:e,notStarted:t}){return K(D(e===1?`1 attempt`:E`${e} attempts`),t?Z(`not_started`,t):``)}(e.tries):D(i===1?`1 task`:E`${i} tasks`)}</span>
1055
- </div>`}};U([F({attribute:`base-url`})],im.prototype,`baseUrl`,void 0),U([F({attribute:`export`})],im.prototype,`exportUrl`,void 0),U([F()],im.prototype,`history`,void 0),U([F()],im.prototype,`shortcuts`,void 0),U([F()],im.prototype,`run`,void 0),U([F()],im.prototype,`locale`,void 0),U([F()],im.prototype,`theme`,void 0),U([F({type:Boolean,reflect:!0})],im.prototype,`live`,void 0),U([I()],im.prototype,`snap`,void 0),U([I()],im.prototype,`viewRoute`,void 0),U([I()],im.prototype,`pickerOpen`,void 0),U([I()],im.prototype,`qDraft`,void 0),U([bn(`main`)],im.prototype,`main`,void 0),U([bn(`ca-toasts`)],im.prototype,`toasts`,void 0),U([bn(`.runbtn`)],im.prototype,`runBtn`,void 0),U([bn(`ca-run-picker`)],im.prototype,`picker`,void 0),im=U([P(`ca-monitor`),O()],im);export{er as BUILTIN_TABS,Wp as CaClock,If as CaContracts,Bf as CaDefinition,Vf as CaDefinitions,Kp as CaHosts,Af as CaJournalTable,Gl as CaKpis,tu as CaModelUsage,im as CaMonitor,pf as CaOverview,Jf as CaPanelBody,Yf as CaPanelView,Xd as CaPipelineGraph,Ll as CaProcTree,Hf as CaProcsView,nu as CaQuota,tf as CaRunDriver,Jp as CaRunPicker,iu as CaServices,ql as CaSpendBreakdown,Ef as CaTaskTable,Hp as CaTaskView,cf as CaTimeline,ml as CaToasts,Ep as CaTranscript,lf as CaWorkers,rr as DEFAULT_VIEW_ROUTE,Dn as LOCALE_NAMES,au as LOOP_SEGMENT,Yl as OTHER_COLOUR,Jl as SERIES_COLOURS,tr as TASK_VIEWS,nf as TIMELINE_WINDOW_MS,nr as TREND_DAYS,ur as ViewRouter,ap as agentLabel,En as allLocales,cr as applyPatch,Cp as applyTranscriptEvents,Sf as attemptFacts,Ad as autoLayer,Wd as budgetFor,tp as checkMessage,ep as checkName,Tl as checkRowsFromContract,El as checkTableStrings,Fn as chooseLocale,Ku as chooseOpen,$f as classifyRounds,Ju as compound,kn as configureLocales,wl as contentObject,Mf as ctChips,Gu as doi,$ as emit,gp as emptyTranscript,jr as esc,$u as expectedByNode,Qo as factList,K as facts,bf as filterJournal,mf as filterTasks,es as firstLine,Zf as fixupErrors,B as fmtDur,td as forecastShown,sr as formatViewRoute,An as getLocale,Ed as graphFromPlan,Td as graphInput,yf as hadFixup,Uu as interest,Qf as isFixup,lr as isNewPlace,Of as journalColumns,xf as journalTally,J as kindUnit,zl as kpiAction,Ul as kpiTiles,Rl as kpis,af as laneStyles,sf as lanesFromJournal,sp as launchWho,kd as layerGraph,q as listText,G as localTime,id as markSel,Od as matrixFromPlan,Dd as matrixInput,Zl as modelColours,Xl as modelId,$l as modelRows,ed as notInPlan,Wu as notable,Nd as parentLayer,ad as parseSelection,or as parseViewRoute,nd as passMatrix,Bu as placeKey,Hu as placeStats,Pn as preferredLocale,$d as preflightRows,Xo as relAgo,Md as resolveLayer,vf as retriedKeys,Sl as rootOf,Cl as rowOf,fl as rowToast,Zo as sentence,jn as setLocale,Ql as shareParts,Df as shortStop,rd as sortPassRows,gf as sortTasks,Gd as spanFor,jd as splitLayer,wf as taskColumns,Pf as taskName,cd as taskStateStyles,Y as tokenCount,Kd as tooWide,qu as towardOf,dp as transcriptSections,Qp as trendSections,xl as typeOk,rs as unreadEvents,ts as usageUnknown,ns as usageUnknownWords,X as usd,hp as webResults,cp as whoTags};
1056
+ </div>`}};U([F({attribute:`base-url`})],om.prototype,`baseUrl`,void 0),U([F({attribute:`export`})],om.prototype,`exportUrl`,void 0),U([F()],om.prototype,`history`,void 0),U([F()],om.prototype,`shortcuts`,void 0),U([F()],om.prototype,`run`,void 0),U([F()],om.prototype,`locale`,void 0),U([F()],om.prototype,`theme`,void 0),U([F({type:Boolean,reflect:!0})],om.prototype,`live`,void 0),U([I()],om.prototype,`snap`,void 0),U([I()],om.prototype,`viewRoute`,void 0),U([I()],om.prototype,`pickerOpen`,void 0),U([I()],om.prototype,`qDraft`,void 0),U([bn(`main`)],om.prototype,`main`,void 0),U([bn(`ca-toasts`)],om.prototype,`toasts`,void 0),U([bn(`.runbtn`)],om.prototype,`runBtn`,void 0),U([bn(`ca-run-picker`)],om.prototype,`picker`,void 0),om=U([P(`ca-monitor`),O()],om);export{er as BUILTIN_TABS,Kp as CaClock,Rf as CaContracts,Hf as CaDefinition,Uf as CaDefinitions,Jp as CaHosts,Mf as CaJournalTable,nu as CaKpis,fu as CaModelUsage,om as CaMonitor,wf as CaOverview,Xf as CaPanelBody,Zf as CaPanelView,cf as CaPipelineGraph,Rl as CaProcTree,Wf as CaProcsView,pu as CaQuota,pf as CaRunDriver,Xp as CaRunPicker,hu as CaServices,iu as CaSpendBreakdown,Of as CaTaskTable,Wp as CaTaskView,yf as CaTimeline,hl as CaToasts,Op as CaTranscript,bf as CaWorkers,rr as DEFAULT_VIEW_ROUTE,Dn as LOCALE_NAMES,gu as LOOP_SEGMENT,ou as OTHER_COLOUR,au as SERIES_COLOURS,tr as TASK_VIEWS,mf as TIMELINE_WINDOW_MS,nr as TREND_DAYS,ur as ViewRouter,sp as agentLabel,En as allLocales,cr as applyPatch,Tp as applyTranscriptEvents,Jl as attemptFacts,Vd as autoLayer,tf as budgetFor,rp as checkMessage,np as checkName,El as checkRowsFromContract,Dl as checkTableStrings,Fn as chooseLocale,rd as chooseOpen,tp as classifyRounds,ad as compound,kn as configureLocales,Tl as contentObject,Wl as correctionCount,Pf as ctChips,nd as doi,$ as emit,vp as emptyTranscript,jr as esc,ud as expectedByNode,Qo as factList,K as facts,Kl as filterJournal,zl as filterTasks,es as firstLine,$f as fixupErrors,B as fmtDur,fd as forecastShown,sr as formatViewRoute,An as getLocale,Ld as graphFromPlan,Id as graphInput,Gl as hadFixup,ed as interest,ep as isFixup,lr as isNewPlace,Af as journalColumns,ql as journalTally,J as kindUnit,Xl as kpiAction,eu as kpiTiles,Yl as kpis,gf as laneStyles,vf as lanesFromJournal,lp as launchWho,Bd as layerGraph,q as listText,G as localTime,hd as markSel,zd as matrixFromPlan,Rd as matrixInput,cu as modelColours,su as modelId,uu as modelRows,dd as notInPlan,td as notable,Wd as parentLayer,gd as parseSelection,or as parseViewRoute,pd as passMatrix,Zu as placeKey,$u as placeStats,Pn as preferredLocale,df as preflightRows,Xo as relAgo,Ud as resolveLayer,Ul as retriedKeys,Cl as rootOf,wl as rowOf,pl as rowToast,Zo as sentence,jn as setLocale,lu as shareParts,kf as shortStop,md as sortPassRows,Vl as sortTasks,nf as spanFor,Hd as splitLayer,Ef as taskColumns,If as taskName,yd as taskStateStyles,Y as tokenCount,rf as tooWide,id as towardOf,pp as transcriptSections,em as trendSections,Sl as typeOk,rs as unreadEvents,ts as usageUnknown,ns as usageUnknownWords,X as usd,_p as webResults,up as whoTags};