@abelxiaoxing/cadence 2.0.8 → 2.0.10

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.
@@ -1,5 +1,5 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vis-timeline.js","assets/rolldown-runtime.js"])))=>i.map(i=>d[i]);
2
- import{t as e}from"./cadence.js";var t={zh:{title:`已记录顺序(非时间轴测量)`,live:`已提交页面`,current:`当前`,search:`搜索分段…`,fit:`⤢ 适应`,follow:`◎ 跟随`,zoomHint:`滚轮缩放 · 拖拽平移 · 点击色块看分析`,replay:`回放`,exitReplay:`退出回放`,play:`播放`,pause:`暂停`,speed:`速度`,empty:`暂无对话`,emptyHint:`打开一个对话后,这里直接显示它的时间线与分析。`,selectHint:`点击时间轴色块或左侧分段查看分析。`,loading:`加载中…`,noMatch:`没有匹配的分段(检查搜索/筛选)。`,copy:`复制`,copied:`已复制`,lanes:{input:`输入`,model:`模型`,tools:`工具`},filters:{input:`输入`,model:`模型`,tools:`工具`},tabs:{overview:`概述`,preview:`预览`,raw:`原始内容`,source:`来源`},status:{done:`已完成`,running:`执行中`,error:`失败`},f:{source:`来源`,status:`状态`,dur:`时长`,len:`长度`,pos:`位置`,segs:`分段`,msgKey:`消息`,toolCall:`调用`,conv:`对话`,time:`时间`}},en:{title:`Recorded sequence`,live:`committed page — not wall time`,current:`active`,search:`Filter loaded events…`,fit:`⤢ Fit`,follow:`◎ Follow`,zoomHint:`wheel zoom · drag pan · click a block for analysis`,replay:`Visual replay`,exitReplay:`Exit replay`,play:`Play`,pause:`Pause`,speed:`Speed`,empty:`No recorded scope`,emptyHint:`Select recorded events. More history remains available through the page controls.`,selectHint:`Click a ruler block or a left segment for analysis.`,loading:`Loading…`,noMatch:`No matching segments (check search/filters).`,copy:`Copy`,copied:`Copied`,lanes:{input:`Input`,model:`Model`,tools:`Tools`},filters:{input:`Input`,model:`Model`,tools:`Tools`},tabs:{overview:`Overview`,preview:`Preview`,raw:`Raw`,source:`Source`},status:{done:`Done`,running:`Running`,error:`Failed`},f:{source:`Source`,status:`Status`,dur:`Duration`,len:`Length`,pos:`Position`,segs:`Segments`,msgKey:`Message`,toolCall:`Call`,conv:`Conversation`,time:`Time`}}};function n(e){return String(e??``).replace(/[&<>"']/g,e=>({"&":`&amp;`,"<":`&lt;`,">":`&gt;`,'"':`&quot;`,"'":`&#39;`})[e])}function r(e){return`page event ${Math.floor(e/1e3)+1}`}function i(e){if(e==null)return`—`;let t=Math.max(0,e)/1e3;return t<1?`${Math.round(e)}ms`:t<60?`${t.toFixed(1)}s`:`${Math.floor(t/60)}m${Math.round(t%60)}s`}function a(e,t){return e.kind===`user`?t===`zh`?`用户`:`user`:e.kind===`thinking`?t===`zh`?`思考`:`think`:e.kind===`text`?t===`zh`?`回答`:`text`:e.kind===`file`?t===`zh`?`文件`:`file`:e.kind===`system`?t===`zh`?`系统`:`sys`:e.kind===`result`?t===`zh`?`结果`:`done`:e.kind===`tool`?(e.meta?.tool??`tool`).slice(0,10):e.kind}var o=[`#3b82f6`,`#22c55e`,`#ec4899`,`#06b6d4`,`#f97316`,`#84cc16`,`#818cf8`,`#fb7185`,`#eab308`,`#14b8a6`],s={read:`#2dd4bf`,get:`#2dd4bf`,list:`#2dd4bf`,glob:`#2dd4bf`,grep:`#2dd4bf`,search:`#2dd4bf`,fetch:`#2dd4bf`,cat:`#2dd4bf`,show:`#2dd4bf`,query:`#2dd4bf`,edit:`#f59e0b`,write:`#f59e0b`,patch:`#f59e0b`,apply:`#f59e0b`,create:`#f59e0b`,save:`#f59e0b`,move:`#f59e0b`,rename:`#f59e0b`,bash:`#a78bfa`};function c(e){let t=String(e??`tool`);if(s[t])return s[t];let n=0;for(let e=0;e<t.length;e++)n=(n<<5)-n+t.charCodeAt(e)|0;return o[Math.abs(n)%o.length]}var l={thinking:`#38bdf8`,text:`#3b82f6`};function u(e){return e.status===`error`?`#f87171`:e.lane===`tools`?c(e.meta?.tool??(e.kind===`file`?`file`:`tool`)):e.lane===`model`&&(e.kind===`thinking`||e.kind===`text`)?l[e.kind]:null}var d={mount(o,s){let d=`en`,f=!1,p=()=>t[d],m=[],h=null,ee=null,g=null,_=new Map,v=new Map,y=new Set,b=null,x=null,S=`overview`,te=``,C={input:!0,model:!0,tools:!0},w={on:!1,idx:0,playing:!1,speed:1,raf:0,basePos:0,baseClock:0},T=0,E=null,D=null,O=null,k=null,ne=null,A=null,re=!1,ie=0,ae=0,j=!0,oe=!1,M=null,N=0;function se(){D||(D=(async()=>{try{let t=await e(()=>import(`./vis-timeline.js`).then(e=>e.t),__vite__mapDeps([0,1]));return{Timeline:t.Timeline,DataSet:t.DataSet}}catch{return re=!0,null}})(),D.then(e=>{f||(E=e,Y(!1))}))}function P(){return ne||=document.createElement(`div`),ne}function F(){K();try{O?.destroy()}catch{}O=null,k=null,A=null}o.innerHTML=`
2
+ import{t as e}from"./cadence.js";var t={zh:{title:`已记录顺序(非时间轴测量)`,live:`已提交页面——非真实时间`,current:`当前`,search:`筛选已加载事件…`,fit:`⤢ 适应`,follow:`◎ 跟随`,zoomHint:`滚轮缩放 · 拖拽平移 · 点击色块看分析`,replay:`可视回放`,exitReplay:`退出回放`,play:`播放`,pause:`暂停`,speed:`速度`,empty:`无已记录范围`,emptyHint:`选择已记录事件。更多历史可通过分页控件读取。`,selectHint:`点击时间轴色块或左侧分段查看分析。`,loading:`加载中…`,noMatch:`没有匹配的分段(检查搜索/筛选)。`,copy:`复制`,copied:`已复制`,lanes:{input:`输入`,model:`模型`,tools:`工具`},filters:{input:`所有者/上下文`,model:`消息`,tools:`工具`},searchAll:`搜索保留历史`,vendorFailed:`本地时间线组件不可用——仅显示降级的序号预览。保留的列表与详情仍可访问。`,vendorLoading:`正在加载本地时间线组件…`,axisDegraded:`降级:本地组件不可用,仅序号预览`,axisOrdinal:`序号预览——非真实/原生时间`,replayPosition:`可视回放位置`,recordedClock:`记录时钟`,nativeElapsed:`原生检查耗时(其他情况不可用)`,rawNote:`已记录的事件元数据;长字段单独分页。`,inspectFields:`查看保留字段`,chars:`字`,pageEvent:`页内事件`,tabs:{overview:`概述`,preview:`预览`,raw:`原始内容`,source:`来源`},status:{done:`已完成`,running:`执行中`,error:`失败`},f:{source:`来源`,status:`状态`,dur:`时长`,len:`长度`,pos:`位置`,segs:`分段`,msgKey:`消息`,toolCall:`调用`,conv:`对话`,time:`时间`}},en:{title:`Recorded sequence`,live:`committed page — not wall time`,current:`active`,search:`Filter loaded events…`,fit:`⤢ Fit`,follow:`◎ Follow`,zoomHint:`wheel zoom · drag pan · click a block for analysis`,replay:`Visual replay`,exitReplay:`Exit replay`,play:`Play`,pause:`Pause`,speed:`Speed`,empty:`No recorded scope`,emptyHint:`Select recorded events. More history remains available through the page controls.`,selectHint:`Click a ruler block or a left segment for analysis.`,loading:`Loading…`,noMatch:`No matching segments (check search/filters).`,copy:`Copy`,copied:`Copied`,lanes:{input:`Input`,model:`Model`,tools:`Tools`},filters:{input:`Owner/context`,model:`Messages`,tools:`Tools`},searchAll:`Search retained history`,vendorFailed:`Local timeline vendor unavailable — degraded ordinal preview only. Retained list/details remain available.`,vendorLoading:`Loading local timeline vendor…`,axisDegraded:`Degraded: local vendor unavailable; ordinal preview only`,axisOrdinal:`Ordinal preview — not wall/native time`,replayPosition:`Visual replay position`,recordedClock:`Recorded clock`,nativeElapsed:`Native check elapsed (otherwise unavailable)`,rawNote:`Recorded event metadata; long fields are independently paged.`,inspectFields:`Inspect retained fields`,chars:`chars`,pageEvent:`page event`,tabs:{overview:`Overview`,preview:`Preview`,raw:`Raw`,source:`Source`},status:{done:`Done`,running:`Running`,error:`Failed`},f:{source:`Source`,status:`Status`,dur:`Duration`,len:`Length`,pos:`Position`,segs:`Segments`,msgKey:`Message`,toolCall:`Call`,conv:`Conversation`,time:`Time`}}};function n(e){return String(e??``).replace(/[&<>"']/g,e=>({"&":`&amp;`,"<":`&lt;`,">":`&gt;`,'"':`&quot;`,"'":`&#39;`})[e])}function r(e,t){return`${t.pageEvent} ${Math.floor(e/1e3)+1}`}function i(e){if(e==null)return`—`;let t=Math.max(0,e)/1e3;return t<1?`${Math.round(e)}ms`:t<60?`${t.toFixed(1)}s`:`${Math.floor(t/60)}m${Math.round(t%60)}s`}function a(e,t){return e.kind===`user`?t===`zh`?`用户`:`user`:e.kind===`thinking`?t===`zh`?`思考`:`think`:e.kind===`text`?t===`zh`?`回答`:`text`:e.kind===`file`?t===`zh`?`文件`:`file`:e.kind===`system`?t===`zh`?`系统`:`sys`:e.kind===`result`?t===`zh`?`结果`:`done`:e.kind===`tool`?(e.meta?.tool??`tool`).slice(0,10):e.kind}var o=[`#3b82f6`,`#22c55e`,`#ec4899`,`#06b6d4`,`#f97316`,`#84cc16`,`#818cf8`,`#fb7185`,`#eab308`,`#14b8a6`],s={read:`#2dd4bf`,get:`#2dd4bf`,list:`#2dd4bf`,glob:`#2dd4bf`,grep:`#2dd4bf`,search:`#2dd4bf`,fetch:`#2dd4bf`,cat:`#2dd4bf`,show:`#2dd4bf`,query:`#2dd4bf`,edit:`#f59e0b`,write:`#f59e0b`,patch:`#f59e0b`,apply:`#f59e0b`,create:`#f59e0b`,save:`#f59e0b`,move:`#f59e0b`,rename:`#f59e0b`,bash:`#a78bfa`};function c(e){let t=String(e??`tool`);if(s[t])return s[t];let n=0;for(let e=0;e<t.length;e++)n=(n<<5)-n+t.charCodeAt(e)|0;return o[Math.abs(n)%o.length]}var l={thinking:`#38bdf8`,text:`#3b82f6`};function u(e){return e.status===`error`?`#f87171`:e.lane===`tools`?c(e.meta?.tool??(e.kind===`file`?`file`:`tool`)):e.lane===`model`&&(e.kind===`thinking`||e.kind===`text`)?l[e.kind]:null}var d={mount(o,s){let d=s.lang===`zh`?`zh`:`en`,f=!1,p=()=>t[d],m=[],h=null,ee=null,g=null,_=new Map,v=new Map,y=new Set,b=null,x=null,S=`overview`,te=``,C={input:!0,model:!0,tools:!0},w={on:!1,idx:0,playing:!1,speed:1,raf:0,basePos:0,baseClock:0},T=0,E=null,ne=null,D=null,O=null,re=null,k=null,ie=!1,ae=0,A=0,j=!0,M=!1,N=null,P=0;function oe(){ne||(ne=(async()=>{try{let t=await e(()=>import(`./vis-timeline.js`).then(e=>e.t),__vite__mapDeps([0,1]));return{Timeline:t.Timeline,DataSet:t.DataSet}}catch{return ie=!0,null}})(),ne.then(e=>{f||(E=e,Y(!1))}))}function F(){return re||=document.createElement(`div`),re}function I(){K();try{D?.destroy()}catch{}D=null,O=null,k=null}o.innerHTML=`
3
3
  <div class="rtr">
4
4
 
5
5
  <div class="rtr-hd">
@@ -8,11 +8,10 @@ import{t as e}from"./cadence.js";var t={zh:{title:`已记录顺序(非时间
8
8
  <span class="sp"></span>
9
9
  <input type="search" class="q" />
10
10
  <button class="rtr-btn act-replay"></button>
11
- <button class="rtr-btn act-lang">EN</button>
12
- <button class="rtr-btn act-search-all">Search retained history</button>
13
- <button class="rtr-btn on" data-lane="input" aria-pressed="true">Owner/context</button>
14
- <button class="rtr-btn on" data-lane="model" aria-pressed="true">Messages</button>
15
- <button class="rtr-btn on" data-lane="tools" aria-pressed="true">Tools</button>
11
+ <button class="rtr-btn act-search-all">${n(p().searchAll)}</button>
12
+ <button class="rtr-btn on" data-lane="input" aria-pressed="true">${n(p().filters.input)}</button>
13
+ <button class="rtr-btn on" data-lane="model" aria-pressed="true">${n(p().filters.model)}</button>
14
+ <button class="rtr-btn on" data-lane="tools" aria-pressed="true">${n(p().filters.tools)}</button>
16
15
  </div>
17
16
  <div class="rtr-convs"></div>
18
17
  <div class="rtr-ruler"><div class="rtr-rulerbar"><span class="hint"></span><span class="sp"></span><button class="rtr-btn act-follow"></button><button class="rtr-btn act-fit"></button></div><div class="rtr-legend"></div><div class="rtr-tlbody"></div></div>
@@ -21,21 +20,21 @@ import{t as e}from"./cadence.js";var t={zh:{title:`已记录顺序(非时间
21
20
  <div class="rtr-list"></div>
22
21
  <div class="rtr-detail"></div>
23
22
  </div>
24
- </div>`;let I=e=>o.querySelector(e),ce=I(`.t-title`),le=I(`.rtr-live`),L=I(`.q`),R=I(`.act-replay`),ue=I(`.act-lang`),de=I(`.act-search-all`),z=I(`.rtr-convs`),B=I(`.rtr-ruler`),V=I(`.rtr-replaybar`),H=I(`.rtr-list`),fe=I(`.rtr-detail`);function U(){let e=p();ce.textContent=e.title,le.textContent=`● ${e.live}`,L.placeholder=e.search,L.setAttribute(`aria-label`,e.search),R.textContent=w.on?`⏹ ${e.exitReplay}`:`▶ ${e.replay}`,R.classList.toggle(`on`,w.on),ue.textContent=d===`zh`?`EN`:`中文`}function pe(e){return m.find(t=>t.id===e)}function W(){return _.get(g??``)??[]}function G(){let e=te.trim().toLowerCase();return W().filter(t=>!(!C[t.lane]||e&&!`${t.title}\n${t.summary}\n${t.source}\n${t.meta?.tool??``}`.toLowerCase().includes(e)))}function me(){let e=p();m.length?z.innerHTML=m.map(t=>`<button class="rtr-conv${t.id===g?` sel`:``}" data-id="${n(t.id)}">${t.id===h?`<span class="cur">●</span> `:``}${n(t.title||e.empty)}${t.isStreaming?` ⏳`:``}</button>`).join(``):z.innerHTML=`<span style="opacity:.55;font-size:12px">${n(e.emptyHint)}</span>`}function he(){let e=p(),t=B.querySelector(`.hint`),r=B.querySelector(`.act-fit`),i=B.querySelector(`.act-follow`);t&&(t.textContent=re?`Local timeline vendor unavailable — degraded ordinal preview only. Retained list/details remain available.`:E?e.zoomHint:`Loading local timeline vendor…`),r&&(r.textContent=e.fit),i&&(i.textContent=e.follow,i.classList.toggle(`on`,j));let a=B.querySelector(`.rtr-tlbody`),o=G();se();let s=!!a&&a.clientWidth>0&&a.clientHeight>0;if(!E||!g||!o.length||!s){O&&F(),a&&Ce(a,o);return}a&&a.firstChild!==P()&&(a.innerHTML=``,a.appendChild(P()));let c=[...new Map(o.map(e=>[e.group,{id:e.group,content:n(e.groupLabel)}])).values()];if(!O||A!==g){F(),k=new E.DataSet(Se(o)),O=new E.Timeline(P(),k,c,{stack:!0,orientation:`top`,showMajorLabels:!1,showCurrentTime:!1,showMinorLabels:!1,zoomable:!0,moveable:!0,selectable:!0,multiselect:!1,zoomMin:10,zoomMax:2592e6,margin:{item:3,axis:6},tooltip:{followMouse:!0,overflowMethod:`cap`},height:matchMedia(`(max-width: 640px)`).matches?`200px`:`252px`}),O.on(`select`,e=>{if(oe)return;let t=e.items?.[0];t===void 0?b&&(b=null,Y(!1)):X(String(t),{scroll:!0})}),O.on(`rangechange`,e=>{xe(),e?.byUser&&(j=!1,B.querySelector(`.act-follow`)?.classList.remove(`on`))}),O.on(`rangechanged`,()=>{K(),xe(),w.on&&Pe(!1)}),O.on(`itemover`,e=>{e.item!==void 0&&e.event&&ge(String(e.item),e.event)}),O.on(`itemout`,()=>K()),A=g,j=!0;try{O.fit({animation:!1})}catch{}xe(),ie=requestAnimationFrame(()=>{try{!f&&O&&A===g&&O.redraw()}catch{}})}else{try{O.setGroups(c),k.clear(),k.add(Se(o))}catch{}if(j&&!w.on){let e=o.at(-1);e&&O.moveTo(e.t,{animation:!1})}}try{oe=!0,O.setSelection(b?[b]:[])}catch{}finally{oe=!1}}function ge(e,t){let a=W().find(t=>t.key===e);if(!a)return;let s=o.querySelector(`.rtr-tip`);s||(s=document.createElement(`div`),s.className=`rtr-tip`,o.appendChild(s)),s.innerHTML=`<div class="tt">${n(a.title)}</div><div class="tm">${n(a.source??``)}</div><div class="tm">${n(r(a.t))}${a.dur===void 0?``:` · ${n(i(a.dur))}`}${a.end>a.t?` → ${n(r(a.end))}`:``}</div>`,s.style.display=`block`;let c=o.getBoundingClientRect(),l=Math.min(Math.max(8,(t.clientX??0)-c.left+14),Math.max(8,c.width-330)),u=Math.min(Math.max(8,(t.clientY??0)-c.top+16),Math.max(8,c.height-90));s.style.left=`${l}px`,s.style.top=`${u}px`}function K(){o.querySelector(`.rtr-tip`)?.remove()}function _e(e){if(!e.length)return 1;let t=1/0,n=-1/0;for(let r of e){r.t<t&&(t=r.t);let e=Math.max(r.end??r.t,r.t);e>n&&(n=e)}return Math.max(1,n-t)}function ve(){try{let e=P().clientWidth||800,t=P().querySelector(`.vis-labelset`);return Math.max(50,e-(t?t.getBoundingClientRect().width:0))}catch{return 800}}function ye(){try{if(!O)return 0;let e=O.getWindow?.();if(!e)return 0;let t=e.start instanceof Date?e.start.getTime():Number(e.start),n=e.end instanceof Date?e.end.getTime():Number(e.end);return Math.max(1,(n||0)-(t||0))*2/ve()}catch{return 0}}function be(){try{if(!k||!O)return;let e=ye(),t=Math.max(.5,e/8),n=[];for(let r of G()){let i=r.t,a=Math.max(r.end??i,i),o=Math.max(a,i+e),s=k.get(r.key)?.end,c=s instanceof Date?s.getTime():Number(s??a);Math.abs(c-o)>t&&n.push({id:r.key,end:new Date(o)})}n.length&&k.update(n)}catch{}}let q=0;function xe(){q||=requestAnimationFrame(()=>{q=0,be()})}function Se(e){let t=ye()||Math.max(1,_e(e)*1e-4);return e.map(e=>{let n=e.t,r=Math.max(e.end??n,n),i=Math.max(r,n+t),a=e.status===`error`,o=`lane-${e.lane}${a?` st-error`:``}${e.status===`running`?` st-running`:``}`,s=u(e),c=s?`background-color:${s};border-color:${s};`:void 0;return{id:e.key,group:e.group,start:new Date(n),end:new Date(i),type:`range`,content:``,className:o,...c?{style:c}:{}}})}function Ce(e,t){let i=p();if(O&&F(),!g||!t.length){e.innerHTML=[`input`,`model`,`tools`].map(e=>`<div class="rtr-lane"><span class="ln">${n(i.lanes[e])}</span><div class="rtr-track"></div></div>`).join(``),e._vis=null;return}let a=Math.min(...t.map(e=>e.t)),o=Math.max(...t.map(e=>Math.max(e.end??e.t,e.t))),s=Math.max(1,o-a),c=re?`Degraded: local vendor unavailable; ordinal preview only`:`Ordinal preview — not wall/native time`,l=e.clientWidth,d=l>0?2/l*s:0;e.innerHTML=`
25
- <div class="rtr-axis"><span>${n(r(a))}</span><span>${n(c)}</span><span>${n(r(o))}</span></div>
26
- ${[`input`,`model`,`tools`].map(e=>{let r=t.map((e,t)=>({s:e,i:t})).filter(({s:t})=>t.lane===e);return`<div class="rtr-lane"><span class="ln">${n(i.lanes[e])}</span><div class="rtr-track">${r.map(({s:t,i:r})=>{let i=(t.t-a)/s*100,o=Math.max(t.end??t.t,t.t),c=(Math.max(o,t.t+d)-t.t)/s*100,l=u(t);return`<span class="rtr-blk lane-${e}${t.status===`error`?` st-error`:``}${t.status===`running`?` st-running`:``}${t.key===b?` sel`:``}" data-i="${r}" title="${n(t.title)}" style="left:${i.toFixed(2)}%;width:${c.toFixed(2)}%${l?`;background-color:${l};border-color:${l}`:``}"></span>`}).join(``)}</div></div>`}).join(``)}`,e._vis=t}function we(){let e=p(),t=G();if(!g){H.innerHTML=`<div class="rtr-empty">${n(e.selectHint)}</div>`;return}if(!t.length){H.innerHTML=`<div class="rtr-empty">${n(W().length?e.noMatch:e.emptyHint)}</div>`;return}let o=w.on?t.slice(0,w.idx+1):t;H.innerHTML=o.map(e=>{let t=e.status===`error`?null:e.kind===`tool`?c(e.meta?.tool??`tool`):e.kind===`thinking`||e.kind===`text`?l[e.kind]:null;return`<button class="rtr-row${e.key===b?` sel`:``}${e.status===`error`?` err`:``}" data-key="${n(e.key)}">
27
- <span class="rtr-chip"${t?` style="border-color:${t};color:${t}"`:``}>${n(a(e,d))}</span>
28
- <span class="tt">${n(e.title)}</span>
29
- <time>${n(r(e.t))}${e.dur===void 0?``:` · ${n(i(e.dur))}`}</time>
30
- </button>`}).join(``),Ee(t)}function Te(){let e=B.querySelector(`.rtr-legend`);if(!e)return;let t=G(),r=new Map;t.some(e=>e.kind===`thinking`)&&r.set(d===`zh`?`思考`:`think`,l.thinking),t.some(e=>e.kind===`text`)&&r.set(d===`zh`?`回答`:`text`,l.text);for(let e of t){if(e.lane!==`tools`||e.status===`error`)continue;let t=e.meta?.tool??(e.kind===`file`?`file`:null);t&&!r.has(t)&&r.set(t,c(t))}e.innerHTML=[...r.entries()].map(([e,t])=>`<span class="lg-item"><i style="background:${t}"></i>${n(e)}</span>`).join(``),e.style.display=r.size?``:`none`}function Ee(e){let t=p();if(!w.on||!e.length){V.hidden=!0,V.innerHTML=``;return}V.hidden=!1;let r=Math.max(0,e.length-1),i=Math.min(w.idx,r);V.innerHTML=`
23
+ </div>`;let L=e=>o.querySelector(e),se=L(`.t-title`),ce=L(`.rtr-live`),R=L(`.q`),le=L(`.act-replay`),ue=L(`.act-search-all`),de=L(`.rtr-convs`),z=L(`.rtr-ruler`),B=L(`.rtr-replaybar`),V=L(`.rtr-list`),H=L(`.rtr-detail`);function U(){let e=p();se.textContent=e.title,ce.textContent=`● ${e.live}`,R.placeholder=e.search,R.setAttribute(`aria-label`,e.search),le.textContent=w.on?`⏹ ${e.exitReplay}`:`▶ ${e.replay}`,le.classList.toggle(`on`,w.on)}function fe(e){return m.find(t=>t.id===e)}function W(){return _.get(g??``)??[]}function G(){let e=te.trim().toLowerCase();return W().filter(t=>!(!C[t.lane]||e&&!`${t.title}\n${t.summary}\n${t.source}\n${t.meta?.tool??``}`.toLowerCase().includes(e)))}function pe(){let e=p();m.length?de.innerHTML=m.map(t=>`<button class="rtr-conv${t.id===g?` sel`:``}" data-id="${n(t.id)}">${t.id===h?`<span class="cur">●</span> `:``}${n(t.title||e.empty)}${t.isStreaming?` ⏳`:``}</button>`).join(``):de.innerHTML=`<span style="opacity:.55;font-size:12px">${n(e.emptyHint)}</span>`}function me(){let e=p(),t=z.querySelector(`.hint`),r=z.querySelector(`.act-fit`),i=z.querySelector(`.act-follow`);t&&(t.textContent=ie?e.vendorFailed:E?e.zoomHint:e.vendorLoading),r&&(r.textContent=e.fit),i&&(i.textContent=e.follow,i.classList.toggle(`on`,j));let a=z.querySelector(`.rtr-tlbody`),o=G();oe();let s=!!a&&a.clientWidth>0&&a.clientHeight>0;if(!E||!g||!o.length||!s){D&&I(),a&&Se(a,o);return}a&&a.firstChild!==F()&&(a.innerHTML=``,a.appendChild(F()));let c=[...new Map(o.map(e=>[e.group,{id:e.group,content:n(e.groupLabel)}])).values()];if(!D||k!==g){I(),O=new E.DataSet(xe(o)),D=new E.Timeline(F(),O,c,{stack:!0,orientation:`top`,showMajorLabels:!1,showCurrentTime:!1,showMinorLabels:!1,zoomable:!0,moveable:!0,selectable:!0,multiselect:!1,zoomMin:10,zoomMax:2592e6,margin:{item:3,axis:6},tooltip:{followMouse:!0,overflowMethod:`cap`},height:matchMedia(`(max-width: 640px)`).matches?`200px`:`252px`}),D.on(`select`,e=>{if(M)return;let t=e.items?.[0];t===void 0?b&&(b=null,Y(!1)):X(String(t),{scroll:!0})}),D.on(`rangechange`,e=>{be(),e?.byUser&&(j=!1,z.querySelector(`.act-follow`)?.classList.remove(`on`))}),D.on(`rangechanged`,()=>{K(),be(),w.on&&Ne(!1)}),D.on(`itemover`,e=>{e.item!==void 0&&e.event&&he(String(e.item),e.event)}),D.on(`itemout`,()=>K()),k=g,j=!0;try{D.fit({animation:!1})}catch{}be(),ae=requestAnimationFrame(()=>{try{!f&&D&&k===g&&D.redraw()}catch{}})}else{try{D.setGroups(c),O.clear(),O.add(xe(o))}catch{}if(j&&!w.on){let e=o.at(-1);e&&D.moveTo(e.t,{animation:!1})}}try{M=!0,D.setSelection(b?[b]:[])}catch{}finally{M=!1}}function he(e,t){let a=W().find(t=>t.key===e);if(!a)return;let s=o.querySelector(`.rtr-tip`);s||(s=document.createElement(`div`),s.className=`rtr-tip`,o.appendChild(s)),s.innerHTML=`<div class="tt">${n(a.title)}</div><div class="tm">${n(a.source??``)}</div><div class="tm">${n(r(a.t,p()))}${a.dur===void 0?``:` · ${n(i(a.dur))}`}${a.end>a.t?` → ${n(r(a.end,p()))}`:``}</div>`,s.style.display=`block`;let c=o.getBoundingClientRect(),l=Math.min(Math.max(8,(t.clientX??0)-c.left+14),Math.max(8,c.width-330)),u=Math.min(Math.max(8,(t.clientY??0)-c.top+16),Math.max(8,c.height-90));s.style.left=`${l}px`,s.style.top=`${u}px`}function K(){o.querySelector(`.rtr-tip`)?.remove()}function ge(e){if(!e.length)return 1;let t=1/0,n=-1/0;for(let r of e){r.t<t&&(t=r.t);let e=Math.max(r.end??r.t,r.t);e>n&&(n=e)}return Math.max(1,n-t)}function _e(){try{let e=F().clientWidth||800,t=F().querySelector(`.vis-labelset`);return Math.max(50,e-(t?t.getBoundingClientRect().width:0))}catch{return 800}}function ve(){try{if(!D)return 0;let e=D.getWindow?.();if(!e)return 0;let t=e.start instanceof Date?e.start.getTime():Number(e.start),n=e.end instanceof Date?e.end.getTime():Number(e.end);return Math.max(1,(n||0)-(t||0))*2/_e()}catch{return 0}}function ye(){try{if(!O||!D)return;let e=ve(),t=Math.max(.5,e/8),n=[];for(let r of G()){let i=r.t,a=Math.max(r.end??i,i),o=Math.max(a,i+e),s=O.get(r.key)?.end,c=s instanceof Date?s.getTime():Number(s??a);Math.abs(c-o)>t&&n.push({id:r.key,end:new Date(o)})}n.length&&O.update(n)}catch{}}let q=0;function be(){q||=requestAnimationFrame(()=>{q=0,ye()})}function xe(e){let t=ve()||Math.max(1,ge(e)*1e-4);return e.map(e=>{let n=e.t,r=Math.max(e.end??n,n),i=Math.max(r,n+t),a=e.status===`error`,o=`lane-${e.lane}${a?` st-error`:``}${e.status===`running`?` st-running`:``}`,s=u(e),c=s?`background-color:${s};border-color:${s};`:void 0;return{id:e.key,group:e.group,start:new Date(n),end:new Date(i),type:`range`,content:``,className:o,...c?{style:c}:{}}})}function Se(e,t){let i=p();if(D&&I(),!g||!t.length){e.innerHTML=[`input`,`model`,`tools`].map(e=>`<div class="rtr-lane"><span class="ln">${n(i.lanes[e])}</span><div class="rtr-track"></div></div>`).join(``),e._vis=null;return}let a=Math.min(...t.map(e=>e.t)),o=Math.max(...t.map(e=>Math.max(e.end??e.t,e.t))),s=Math.max(1,o-a),c=ie?i.axisDegraded:i.axisOrdinal,l=e.clientWidth,d=l>0?2/l*s:0;e.innerHTML=`
24
+ <div class="rtr-axis"><span>${n(r(a,i))}</span><span>${n(c)}</span><span>${n(r(o,i))}</span></div>
25
+ ${[`input`,`model`,`tools`].map(e=>{let r=t.map((e,t)=>({s:e,i:t})).filter(({s:t})=>t.lane===e);return`<div class="rtr-lane"><span class="ln">${n(i.lanes[e])}</span><div class="rtr-track">${r.map(({s:t,i:r})=>{let i=(t.t-a)/s*100,o=Math.max(t.end??t.t,t.t),c=(Math.max(o,t.t+d)-t.t)/s*100,l=u(t);return`<span class="rtr-blk lane-${e}${t.status===`error`?` st-error`:``}${t.status===`running`?` st-running`:``}${t.key===b?` sel`:``}" data-i="${r}" title="${n(t.title)}" style="left:${i.toFixed(2)}%;width:${c.toFixed(2)}%${l?`;background-color:${l};border-color:${l}`:``}"></span>`}).join(``)}</div></div>`}).join(``)}`,e._vis=t}function Ce(){let e=p(),t=G();if(!g){V.innerHTML=`<div class="rtr-empty">${n(e.selectHint)}</div>`;return}if(!t.length){V.innerHTML=`<div class="rtr-empty">${n(W().length?e.noMatch:e.emptyHint)}</div>`;return}let o=w.on?t.slice(0,w.idx+1):t;V.innerHTML=o.map(t=>{let o=t.status===`error`?null:t.kind===`tool`?c(t.meta?.tool??`tool`):t.kind===`thinking`||t.kind===`text`?l[t.kind]:null;return`<button class="rtr-row${t.key===b?` sel`:``}${t.status===`error`?` err`:``}" data-key="${n(t.key)}">
26
+ <span class="rtr-chip"${o?` style="border-color:${o};color:${o}"`:``}>${n(a(t,d))}</span>
27
+ <span class="tt">${n(t.title)}</span>
28
+ <time>${n(r(t.t,e))}${t.dur===void 0?``:` · ${n(i(t.dur))}`}</time>
29
+ </button>`}).join(``),Te(t)}function we(){let e=z.querySelector(`.rtr-legend`);if(!e)return;let t=G(),r=new Map;t.some(e=>e.kind===`thinking`)&&r.set(d===`zh`?`思考`:`think`,l.thinking),t.some(e=>e.kind===`text`)&&r.set(d===`zh`?`回答`:`text`,l.text);for(let e of t){if(e.lane!==`tools`||e.status===`error`)continue;let t=e.meta?.tool??(e.kind===`file`?`file`:null);t&&!r.has(t)&&r.set(t,c(t))}e.innerHTML=[...r.entries()].map(([e,t])=>`<span class="lg-item"><i style="background:${t}"></i>${n(e)}</span>`).join(``),e.style.display=r.size?``:`none`}function Te(e){let t=p();if(!w.on||!e.length){B.hidden=!0,B.innerHTML=``;return}B.hidden=!1;let r=Math.max(0,e.length-1),i=Math.min(w.idx,r);B.innerHTML=`
31
30
  <button class="rtr-btn act-play">${w.playing?`⏸ ${n(t.pause)}`:`▶ ${n(t.play)}`}</button>
32
- <input type="range" aria-label="Visual replay position" min="0" max="${r}" value="${i}" />
31
+ <input type="range" aria-label="${n(t.replayPosition)}" min="0" max="${r}" value="${i}" />
33
32
  <span>${i+1}/${e.length}</span>
34
- <label>${n(t.speed)} <select class="spd">${[.5,1,2,4].map(e=>`<option value="${e}"${e===w.speed?` selected`:``}>${e}x</option>`).join(``)}</select></label>`}function J(e,t){return`<dt>${n(e)}</dt><dd>${t}</dd>`}function De(){let e=p(),t=e.f,a=pe(g??``),o=W().find(e=>e.key===b)??null,s=o?v.get(`${g}\n${o.key}`):null;if(!o||!a){fe.innerHTML=`<div class="rtr-empty">${n(a?e.selectHint:e.emptyHint)}</div>`;return}let c=[`overview`,`preview`,`raw`,`source`].map(t=>`<button class="rtr-dtab${S===t?` on`:``}" data-tab="${t}">${n(e.tabs[t])}</button>`).join(``),l=``;if(!s)l=`<div class="rtr-empty"><span class="rtr-spin">⏳</span> ${n(e.loading)}</div>`;else if(S===`overview`){let r=s.analysis??{},a=e.status[o.status]??o.status;l=`<dl class="rtr-kv">
35
- ${J(`Recorded clock`,n(o.clock))}${J(t.source,n(o.source??`—`))}${J(t.status,n(a))}${J(`Native check elapsed (otherwise unavailable)`,n(i(o.dur)))}
36
- ${J(t.len,n(o.meta?.chars?`${o.meta.chars} 字`:`${(s.detail??``).length} 字`))}${J(t.pos,n(r.position??`—`))}
37
- </dl>`,l+=`<div class="rtr-sec">${n(e.tabs.preview)}</div><pre>${n((s.detail??``).slice(0,800))}</pre>`}else l=S===`preview`?`<pre>${n((s.detail??``).slice(0,2e3))}</pre>`:S===`raw`?`<pre>${n(s.detail??``)}</pre><p>Recorded event metadata; long fields are independently paged.</p><button class="rtr-btn act-open-detail">Inspect retained fields</button><button class="rtr-btn act-copy">📋 ${n(e.copy)}</button>`:`<dl class="rtr-kv">
33
+ <label>${n(t.speed)} <select class="spd">${[.5,1,2,4].map(e=>`<option value="${e}"${e===w.speed?` selected`:``}>${e}x</option>`).join(``)}</select></label>`}function J(e,t){return`<dt>${n(e)}</dt><dd>${t}</dd>`}function Ee(){let e=p(),t=e.f,a=fe(g??``),o=W().find(e=>e.key===b)??null,s=o?v.get(`${g}\n${o.key}`):null;if(!o||!a){H.innerHTML=`<div class="rtr-empty">${n(a?e.selectHint:e.emptyHint)}</div>`;return}let c=[`overview`,`preview`,`raw`,`source`].map(t=>`<button class="rtr-dtab${S===t?` on`:``}" data-tab="${t}">${n(e.tabs[t])}</button>`).join(``),l=``;if(!s)l=`<div class="rtr-empty"><span class="rtr-spin">⏳</span> ${n(e.loading)}</div>`;else if(S===`overview`){let r=s.analysis??{},a=e.status[o.status]??o.status;l=`<dl class="rtr-kv">
34
+ ${J(e.recordedClock,n(o.clock))}${J(t.source,n(o.source??`—`))}${J(t.status,n(a))}${J(e.nativeElapsed,n(i(o.dur)))}
35
+ ${J(t.len,n(`${o.meta?.chars??(s.detail??``).length} ${e.chars}`))}${J(t.pos,n(r.position??`—`))}
36
+ </dl>`,l+=`<div class="rtr-sec">${n(e.tabs.preview)}</div><pre>${n((s.detail??``).slice(0,800))}</pre>`}else l=S===`preview`?`<pre>${n((s.detail??``).slice(0,2e3))}</pre>`:S===`raw`?`<pre>${n(s.detail??``)}</pre><p>${n(e.rawNote)}</p><button class="rtr-btn act-open-detail">${n(e.inspectFields)}</button><button class="rtr-btn act-copy">📋 ${n(e.copy)}</button>`:`<dl class="rtr-kv">
38
37
  ${J(t.msgKey,n(o.key))}${o.meta?.toolCallId?J(t.toolCall,n(o.meta.toolCallId)):``}
39
38
 
40
- ${J(t.conv,n(`${a.title??``} · ${String(a.id).slice(0,8)}`))}${J(t.time,n(r(o.t)))}
41
- </dl>`;fe.innerHTML=`<h3 style="margin:0 0 8px">${n(o.title)}</h3><div class="rtr-dtabs">${c}</div>${l}`}function Y(e=!0){f||T||(T=requestAnimationFrame(()=>{T=0;let t=e&&!w.on&&H.scrollHeight-H.scrollTop-H.clientHeight<80,n=document.activeElement,r=n&&o.contains(n)?n.matches(`.rtr-row[data-key]`)?`.rtr-row[data-key="${CSS.escape(n.dataset.key)}"]`:n.matches(`.rtr-conv[data-id]`)?`.rtr-conv[data-id="${CSS.escape(n.dataset.id)}"]`:n.matches(`.rtr-dtab[data-tab]`)?`.rtr-dtab[data-tab="${CSS.escape(n.dataset.tab)}"]`:n.matches(`.rtr-replaybar input[type=range]`)?`.rtr-replaybar input[type=range]`:n.matches(`.spd`)?`.spd`:n.matches(`.act-play`)?`.act-play`:null:null;if(me(),he(),Te(),we(),x){let e=x;x=null;let t=typeof CSS<`u`&&CSS.escape?CSS.escape(e):e,n=H.querySelector(`[data-key="${t}"]`);n&&n.scrollIntoView({block:`nearest`})}De(),r&&!n.isConnected&&o.querySelector(r)?.focus({preventScroll:!0}),t&&(H.scrollTop=H.scrollHeight)}))}function Oe(e){g=e,b=null,w.on=!1,$(),j=!0,U(),e&&!_.has(e)&&s.readSegments(e),Y(!1)}function X(e,t={}){if(K(),e===b&&!t.force){b=null,Y(!1);return}if(b=e,w.on){let t=G().findIndex(t=>t.key===e);t>=0&&(w.idx=t)}let n=`${g}\n${e}`;e&&!v.has(n)&&!y.has(n)&&(y.add(n),s.readSegment(g,e)),t.scroll&&(x=e),Y()}function Z(){let e=G();return{segs:e.map((e,t)=>({seg:e,p0:t*1e3,p1:(t+1)*1e3})),totalLen:e.length*1e3}}function ke(e,t){let n=-1;for(let r=0;r<e.segs.length&&e.segs[r].p0<=t;r++)n=r;return n}function Ae(e,t,n){return e.segs[Math.max(0,n)]?.seg.t??0}function je(e){return w.playing?Math.min(e.totalLen,w.basePos+(performance.now()-w.baseClock)*w.speed):w.basePos}function Q(e){try{if(!O)return;let t=P().querySelector(`.rtr-playhead`);t||(P().style.position=`relative`,t=document.createElement(`div`),t.className=`rtr-playhead`,P().appendChild(t));let n=O.getWindow?.();if(!n)return;let r=n.start instanceof Date?n.start.getTime():Number(n.start),i=n.end instanceof Date?n.end.getTime():Number(n.end),a=Math.max(1,(i||0)-(r||0)),o=ve(),s=(P().clientWidth||o)-o;t.style.left=`${s+(e-r)/a*o}px`,t.style.display=`block`}catch{}}function Me(){let e=P().querySelector(`.rtr-playhead`);e&&(e.style.display=`none`)}function Ne(e){try{if(!O)return;let t=O.getWindow?.();if(!t)return;let n=t.start instanceof Date?t.start.getTime():Number(t.start),r=t.end instanceof Date?t.end.getTime():Number(t.end),i=(r-n)*.08;(e<n+i||e>r-i)&&O.moveTo(e,{animation:!1})}catch{}}function Pe(e){let t=Z();if(!t.segs.length){Me();return}let n=je(t),r=Ae(t,n,ke(t,n));Q(r),e&&Ne(r)}function $(){if(w.playing){let e=Z();e.segs.length&&(w.basePos=je(e))}w.playing=!1,w.raf&&cancelAnimationFrame(w.raf),w.raf=0}function Fe(){$();let e=Z();e.segs.length&&(w.basePos=Math.max(0,Math.min(e.totalLen,w.basePos)),w.baseClock=performance.now(),w.playing=!0,w.raf=requestAnimationFrame(Ie))}function Ie(){if(!w.playing)return;let e=Z();if(!e.segs.length){$();return}let t=je(e),n=ke(e,t);if(n>=0){w.idx=n;let t=e.segs[n].seg.key;t!==b&&(b=t,x=t,Y());let r=Math.min(e.segs.length,n+12);for(let t=n;t<r;t++){let n=e.segs[t].seg.key,r=`${g}\n${n}`;n&&!v.has(r)&&!y.has(r)&&(y.add(r),s.readSegment(g,n))}}let r=Ae(e,t,n);Q(r),Ne(r),t>=e.totalLen?($(),Y()):w.raf=requestAnimationFrame(Ie)}z.addEventListener(`click`,e=>{let t=e.target.closest(`[data-id]`);t&&Oe(t.dataset.id)}),B.addEventListener(`click`,e=>{if(e.target.closest(`.act-follow`)){if(j=!j,j){let e=G().at(-1);e&&O?.moveTo(e.t,{animation:!1})}e.target.closest(`.act-follow`).classList.toggle(`on`,j);return}if(e.target.closest(`.act-fit`)){try{O?.fit({animation:!0}),j=!1,B.querySelector(`.act-follow`)?.classList.remove(`on`)}catch{}return}if(O)return;let t=B.querySelector(`.rtr-tlbody`),n=e.target.closest(`[data-i]`);if(n&&t?._vis){let e=t._vis[Number(n.dataset.i)];e&&X(e.key,{scroll:!0})}}),H.addEventListener(`click`,e=>{let t=e.target.closest(`[data-key]`);t&&X(t.dataset.key,{scroll:!0})}),fe.addEventListener(`click`,e=>{let t=e.target.closest(`[data-tab]`);if(t)S=t.dataset.tab,Y();else if(e.target.closest(`.act-open-detail`))s.openDetail(g,b);else if(e.target.closest(`.act-copy`)){let t=v.get(`${g}\n${b}`),n=t?`${t.seg.title}\n${t.detail}`:``;n&&navigator.clipboard?.writeText(n).then(()=>{f||(e.target.textContent=`✅ ${p().copied}`,ae=setTimeout(Y,1200))},()=>{})}}),L.addEventListener(`input`,()=>{te=L.value,Y()}),R.addEventListener(`click`,()=>{if(g){if(w.on=!w.on,$(),w.on){w.idx=0,w.basePos=0,b=null;let e=Z().segs[0];e&&(b=e.seg.key,Q(e.seg.t),X(e.seg.key,{force:!0}))}else Me(),j=!0;U(),Y(!1)}}),V.addEventListener(`click`,e=>{e.target.closest(`.act-play`)&&(w.playing?$():Fe(),Y())}),V.addEventListener(`input`,e=>{if(e.target.matches(`input[type="range"]`)){$();let t=Z(),n=Number(e.target.value);w.idx=n;let r=t.segs[n];w.basePos=r?r.p0:0,b=r?r.seg.key:null,r&&Q(r.seg.t),Y()}}),V.addEventListener(`change`,e=>{e.target.matches(`.spd`)&&(w.speed=Number(e.target.value),w.playing&&Fe())}),ue.addEventListener(`click`,()=>{d=d===`zh`?`en`:`zh`,U(),Y()}),de.addEventListener(`click`,()=>s.searchHistory());for(let e of o.querySelectorAll(`[data-lane]`))e.addEventListener(`click`,()=>{let t=e.dataset.lane;C[t]=!C[t],e.classList.toggle(`on`,C[t]),e.setAttribute(`aria-pressed`,String(C[t])),Y(!1)});let Le=s.onData(e=>{if(!f&&e&&typeof e==`object`)switch(e.kind){case`state`:{m=e.conversations;let t=ee;if(h=e.activeId??null,ee=h,h&&h!==g&&(h!==t||!m.some(e=>e.id===g))){Oe(h);return}Y();break}case`segs`:if(!e.convId||!Array.isArray(e.segs))break;if(e.reset||!_.has(e.convId)?_.set(e.convId,[...e.segs]):_.get(e.convId).push(...e.segs),e.convId===g&&!b&&e.segs.length&&!w.on){b=e.segs[e.segs.length-1].key,X(b,{force:!0});return}Y();break;case`seg_detail`:if(e.key){let t=`${e.convId}\n${e.key}`;y.delete(t),v.set(t,{detail:String(e.detail??``),seg:e.seg,analysis:e.analysis}),e.convId===g&&e.key===b&&Y(!1)}}});try{let e=B.querySelector(`.rtr-tlbody`);e&&typeof ResizeObserver<`u`&&(M=new ResizeObserver(()=>{N||=setTimeout(()=>{N=0,Y(!1)},150)}),M.observe(e))}catch{}return U(),Y(!1),s.readState(),()=>{f=!0,$(),ie&&cancelAnimationFrame(ie),ae&&clearTimeout(ae),T&&cancelAnimationFrame(T),q&&cancelAnimationFrame(q),N&&clearTimeout(N);try{M?.disconnect()}catch{}M=null,F(),Le(),o.innerHTML=``}}};export{d as default};
39
+ ${J(t.conv,n(`${a.title??``} · ${String(a.id).slice(0,8)}`))}${J(t.time,n(r(o.t,e)))}
40
+ </dl>`;H.innerHTML=`<h3 style="margin:0 0 8px">${n(o.title)}</h3><div class="rtr-dtabs">${c}</div>${l}`}function Y(e=!0){f||T||(T=requestAnimationFrame(()=>{T=0;let t=e&&!w.on&&V.scrollHeight-V.scrollTop-V.clientHeight<80,n=document.activeElement,r=n&&o.contains(n)?n.matches(`.rtr-row[data-key]`)?`.rtr-row[data-key="${CSS.escape(n.dataset.key)}"]`:n.matches(`.rtr-conv[data-id]`)?`.rtr-conv[data-id="${CSS.escape(n.dataset.id)}"]`:n.matches(`.rtr-dtab[data-tab]`)?`.rtr-dtab[data-tab="${CSS.escape(n.dataset.tab)}"]`:n.matches(`.rtr-replaybar input[type=range]`)?`.rtr-replaybar input[type=range]`:n.matches(`.spd`)?`.spd`:n.matches(`.act-play`)?`.act-play`:null:null;if(pe(),me(),we(),Ce(),x){let e=x;x=null;let t=typeof CSS<`u`&&CSS.escape?CSS.escape(e):e,n=V.querySelector(`[data-key="${t}"]`);n&&n.scrollIntoView({block:`nearest`})}Ee(),r&&!n.isConnected&&o.querySelector(r)?.focus({preventScroll:!0}),t&&(V.scrollTop=V.scrollHeight)}))}function De(e){g=e,b=null,w.on=!1,$(),j=!0,U(),e&&!_.has(e)&&s.readSegments(e),Y(!1)}function X(e,t={}){if(K(),e===b&&!t.force){b=null,Y(!1);return}if(b=e,w.on){let t=G().findIndex(t=>t.key===e);t>=0&&(w.idx=t)}let n=`${g}\n${e}`;e&&!v.has(n)&&!y.has(n)&&(y.add(n),s.readSegment(g,e)),t.scroll&&(x=e),Y()}function Z(){let e=G();return{segs:e.map((e,t)=>({seg:e,p0:t*1e3,p1:(t+1)*1e3})),totalLen:e.length*1e3}}function Oe(e,t){let n=-1;for(let r=0;r<e.segs.length&&e.segs[r].p0<=t;r++)n=r;return n}function ke(e,t,n){return e.segs[Math.max(0,n)]?.seg.t??0}function Ae(e){return w.playing?Math.min(e.totalLen,w.basePos+(performance.now()-w.baseClock)*w.speed):w.basePos}function Q(e){try{if(!D)return;let t=F().querySelector(`.rtr-playhead`);t||(F().style.position=`relative`,t=document.createElement(`div`),t.className=`rtr-playhead`,F().appendChild(t));let n=D.getWindow?.();if(!n)return;let r=n.start instanceof Date?n.start.getTime():Number(n.start),i=n.end instanceof Date?n.end.getTime():Number(n.end),a=Math.max(1,(i||0)-(r||0)),o=_e(),s=(F().clientWidth||o)-o;t.style.left=`${s+(e-r)/a*o}px`,t.style.display=`block`}catch{}}function je(){let e=F().querySelector(`.rtr-playhead`);e&&(e.style.display=`none`)}function Me(e){try{if(!D)return;let t=D.getWindow?.();if(!t)return;let n=t.start instanceof Date?t.start.getTime():Number(t.start),r=t.end instanceof Date?t.end.getTime():Number(t.end),i=(r-n)*.08;(e<n+i||e>r-i)&&D.moveTo(e,{animation:!1})}catch{}}function Ne(e){let t=Z();if(!t.segs.length){je();return}let n=Ae(t),r=ke(t,n,Oe(t,n));Q(r),e&&Me(r)}function $(){if(w.playing){let e=Z();e.segs.length&&(w.basePos=Ae(e))}w.playing=!1,w.raf&&cancelAnimationFrame(w.raf),w.raf=0}function Pe(){$();let e=Z();e.segs.length&&(w.basePos=Math.max(0,Math.min(e.totalLen,w.basePos)),w.baseClock=performance.now(),w.playing=!0,w.raf=requestAnimationFrame(Fe))}function Fe(){if(!w.playing)return;let e=Z();if(!e.segs.length){$();return}let t=Ae(e),n=Oe(e,t);if(n>=0){w.idx=n;let t=e.segs[n].seg.key;t!==b&&(b=t,x=t,Y());let r=Math.min(e.segs.length,n+12);for(let t=n;t<r;t++){let n=e.segs[t].seg.key,r=`${g}\n${n}`;n&&!v.has(r)&&!y.has(r)&&(y.add(r),s.readSegment(g,n))}}let r=ke(e,t,n);Q(r),Me(r),t>=e.totalLen?($(),Y()):w.raf=requestAnimationFrame(Fe)}de.addEventListener(`click`,e=>{let t=e.target.closest(`[data-id]`);t&&De(t.dataset.id)}),z.addEventListener(`click`,e=>{if(e.target.closest(`.act-follow`)){if(j=!j,j){let e=G().at(-1);e&&D?.moveTo(e.t,{animation:!1})}e.target.closest(`.act-follow`).classList.toggle(`on`,j);return}if(e.target.closest(`.act-fit`)){try{D?.fit({animation:!0}),j=!1,z.querySelector(`.act-follow`)?.classList.remove(`on`)}catch{}return}if(D)return;let t=z.querySelector(`.rtr-tlbody`),n=e.target.closest(`[data-i]`);if(n&&t?._vis){let e=t._vis[Number(n.dataset.i)];e&&X(e.key,{scroll:!0})}}),V.addEventListener(`click`,e=>{let t=e.target.closest(`[data-key]`);t&&X(t.dataset.key,{scroll:!0})}),H.addEventListener(`click`,e=>{let t=e.target.closest(`[data-tab]`);if(t)S=t.dataset.tab,Y();else if(e.target.closest(`.act-open-detail`))s.openDetail(g,b);else if(e.target.closest(`.act-copy`)){let t=v.get(`${g}\n${b}`),n=t?`${t.seg.title}\n${t.detail}`:``;n&&navigator.clipboard?.writeText(n).then(()=>{f||(e.target.textContent=`✅ ${p().copied}`,A=setTimeout(Y,1200))},()=>{})}}),R.addEventListener(`input`,()=>{te=R.value,Y()}),le.addEventListener(`click`,()=>{if(g){if(w.on=!w.on,$(),w.on){w.idx=0,w.basePos=0,b=null;let e=Z().segs[0];e&&(b=e.seg.key,Q(e.seg.t),X(e.seg.key,{force:!0}))}else je(),j=!0;U(),Y(!1)}}),B.addEventListener(`click`,e=>{e.target.closest(`.act-play`)&&(w.playing?$():Pe(),Y())}),B.addEventListener(`input`,e=>{if(e.target.matches(`input[type="range"]`)){$();let t=Z(),n=Number(e.target.value);w.idx=n;let r=t.segs[n];w.basePos=r?r.p0:0,b=r?r.seg.key:null,r&&Q(r.seg.t),Y()}}),B.addEventListener(`change`,e=>{e.target.matches(`.spd`)&&(w.speed=Number(e.target.value),w.playing&&Pe())}),ue.addEventListener(`click`,()=>s.searchHistory());for(let e of o.querySelectorAll(`[data-lane]`))e.addEventListener(`click`,()=>{let t=e.dataset.lane;C[t]=!C[t],e.classList.toggle(`on`,C[t]),e.setAttribute(`aria-pressed`,String(C[t])),Y(!1)});let Ie=s.onData(e=>{if(!f&&e&&typeof e==`object`)switch(e.kind){case`state`:{m=e.conversations;let t=ee;if(h=e.activeId??null,ee=h,h&&h!==g&&(h!==t||!m.some(e=>e.id===g))){De(h);return}Y();break}case`segs`:if(!e.convId||!Array.isArray(e.segs))break;if(e.reset||!_.has(e.convId)?_.set(e.convId,[...e.segs]):_.get(e.convId).push(...e.segs),e.convId===g&&!b&&e.segs.length&&!w.on){b=e.segs[e.segs.length-1].key,X(b,{force:!0});return}Y();break;case`seg_detail`:if(e.key){let t=`${e.convId}\n${e.key}`;y.delete(t),v.set(t,{detail:String(e.detail??``),seg:e.seg,analysis:e.analysis}),e.convId===g&&e.key===b&&Y(!1)}}});try{let e=z.querySelector(`.rtr-tlbody`);e&&typeof ResizeObserver<`u`&&(N=new ResizeObserver(()=>{P||=setTimeout(()=>{P=0,Y(!1)},150)}),N.observe(e))}catch{}return U(),Y(!1),s.readState(),()=>{f=!0,$(),ae&&cancelAnimationFrame(ae),A&&clearTimeout(A),T&&cancelAnimationFrame(T),q&&cancelAnimationFrame(q),P&&clearTimeout(P);try{N?.disconnect()}catch{}N=null,I(),Ie(),o.innerHTML=``}}};export{d as default};
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "schema": "cadence-web-assets/1",
3
- "sourceHash": "d9b8dc8f8a1ef495ca1823295a1f5bfe8fd4f4b3940d8a3aeb9071a812e48082",
4
- "contractHash": "ff017feffc6b6b4521e470d82514d0ca008e15472fa1442ec498b243b0f7cf87",
5
- "buildId": "fcc8593b33e23577346181edf69b448e19a29148048e82677f0d9042c239e221",
3
+ "sourceHash": "2e6e1d67b722c149c26cb3cc25853d04020e613762909dc68b9fee53c51969d6",
4
+ "contractHash": "c2bb81519387005a71e88a64364dff47d5c39dab17812833ca898bc51055e59d",
5
+ "buildId": "d53f729d3971bed4e08df91c7898ac1fbf1a255f61eb7c644474971eab4a6195",
6
6
  "assets": [
7
7
  {
8
8
  "name": "assets/cadence.css",
9
- "bytes": 95904,
10
- "sha256": "4657df9dc07e357d85aa6b4c76218f4c922892a19d8d46760800a0f9772f0579",
9
+ "bytes": 95990,
10
+ "sha256": "745f6713be72f31a58f77f39dc5a033574785301efbf9c444513baacddb85c4b",
11
11
  "references": [
12
12
  "assets/KaTeX_AMS-Regular.ttf",
13
13
  "assets/KaTeX_AMS-Regular.woff",
@@ -73,8 +73,8 @@
73
73
  },
74
74
  {
75
75
  "name": "assets/cadence.js",
76
- "bytes": 187728,
77
- "sha256": "dd4a116c9a0d35482001ca7927ba48f433bb90dc3c3d2a34f4140fee6015975e",
76
+ "bytes": 222937,
77
+ "sha256": "e39dd712f21df46445997c1775cb384382c38a441e4c2069addaa5c51067a685",
78
78
  "references": [
79
79
  "assets/markdown.js",
80
80
  "assets/react.js",
@@ -467,8 +467,8 @@
467
467
  },
468
468
  {
469
469
  "name": "assets/timeline-client.js",
470
- "bytes": 20696,
471
- "sha256": "be4442e3b1dfb7d297ecb8c704de834c241483128792ff4b47fd49fda1711977",
470
+ "bytes": 21598,
471
+ "sha256": "557957e2a2d3ae1a014ff1a4808b716c3e7c708be9f3f11540f5be46e3029a9f",
472
472
  "references": [
473
473
  "assets/cadence.js",
474
474
  "assets/vis-timeline.js"