@huynle/hub 0.8.7 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (213) hide show
  1. package/CHANGELOG.md +152 -0
  2. package/README.md +75 -16
  3. package/package.json +5 -1
  4. package/packages/claude-code/package.json +1 -1
  5. package/packages/claude-code/src/wrapper.ts +2 -2
  6. package/packages/cli/dist/hub-cli.js +1413 -523
  7. package/packages/cli/package.json +1 -1
  8. package/packages/cli/src/bootstrap/PHASE3-CONTRACT.md +112 -0
  9. package/packages/cli/src/bootstrap/adapters/node-services/control.ts +164 -21
  10. package/packages/cli/src/bootstrap/adapters/node-services/plan.ts +24 -7
  11. package/packages/cli/src/bootstrap/adapters/node-services/render.ts +116 -9
  12. package/packages/cli/src/bootstrap/adapters/node-services/validate.ts +8 -2
  13. package/packages/cli/src/bootstrap/contracts/actions.ts +8 -6
  14. package/packages/cli/src/bootstrap/contracts/discovery.ts +4 -3
  15. package/packages/cli/src/bootstrap/contracts/exec.ts +4 -2
  16. package/packages/cli/src/bootstrap/contracts/paths.ts +2 -1
  17. package/packages/cli/src/bootstrap/contracts/platform.ts +5 -5
  18. package/packages/cli/src/bootstrap/discovery/discover.ts +7 -2
  19. package/packages/cli/src/bootstrap/discovery/host.ts +2 -0
  20. package/packages/cli/src/bootstrap/preview/plan.ts +5 -1
  21. package/packages/cli/src/bootstrap/profiles/desired.ts +16 -1
  22. package/packages/cli/src/bootstrap/profiles/history.ts +2 -1
  23. package/packages/cli/src/bootstrap/profiles/upgrade.ts +2 -2
  24. package/packages/cli/src/bootstrap/release/assets.ts +4 -1
  25. package/packages/cli/src/cli.ts +23 -10
  26. package/packages/cli/src/http.ts +1 -0
  27. package/packages/cli/src/launches.ts +5 -1
  28. package/packages/cli/src/mcp.ts +28 -8
  29. package/packages/cli/src/messaging.ts +14 -0
  30. package/packages/cli/src/node.ts +94 -12
  31. package/packages/cli/src/setup/commands.ts +27 -7
  32. package/packages/cli/src/setup/runtime.ts +31 -4
  33. package/packages/cli/src/team-intake-mcp.ts +26 -2
  34. package/packages/codex/package.json +1 -1
  35. package/packages/codex/src/wrapper.ts +2 -2
  36. package/packages/node/package.json +1 -1
  37. package/packages/node/src/config.ts +49 -17
  38. package/packages/node/src/git.ts +16 -2
  39. package/packages/node/src/harnesses.ts +54 -9
  40. package/packages/node/src/host.ts +61 -15
  41. package/packages/node/src/opencode-service.ts +111 -0
  42. package/packages/node/src/opencode-warm.ts +11 -5
  43. package/packages/node/src/run.ts +50 -5
  44. package/packages/preset/package.json +1 -1
  45. package/packages/protocol/package.json +1 -1
  46. package/packages/protocol/schema/app-delivery/v1.schema.json +677 -0
  47. package/packages/protocol/src/artifacts.ts +43 -0
  48. package/packages/protocol/src/credentials.ts +38 -0
  49. package/packages/protocol/src/index.ts +59 -6
  50. package/packages/protocol/src/launch.ts +46 -6
  51. package/packages/protocol/src/markdown.ts +753 -0
  52. package/packages/protocol/src/media-allowlist.ts +240 -0
  53. package/packages/protocol/src/media.ts +120 -0
  54. package/packages/protocol/src/preview-bundle.ts +221 -0
  55. package/packages/protocol/src/voice-recording.ts +8 -0
  56. package/packages/runtime-openshell/package.json +1 -1
  57. package/packages/runtime-sdk/package.json +1 -1
  58. package/packages/sdk/package.json +1 -1
  59. package/packages/sdk/src/client.ts +17 -3
  60. package/packages/sdk/src/errors.ts +1 -0
  61. package/packages/sdk/src/team-intake.ts +8 -0
  62. package/packages/sdk/src/types.ts +16 -2
  63. package/packages/spoke-sdk/package.json +1 -1
  64. package/src/central/agent/delivery.ts +35 -6
  65. package/src/central/agent/errors.ts +2 -0
  66. package/src/central/agent/events.ts +11 -2
  67. package/src/central/agent/launch-engine.ts +65 -4
  68. package/src/central/agent/launch-routes.ts +8 -0
  69. package/src/central/agent/launch-spec.ts +22 -3
  70. package/src/central/agent/launch-store.ts +2 -2
  71. package/src/central/agent/message-routes.ts +49 -11
  72. package/src/central/agent/messages.ts +17 -4
  73. package/src/central/agent/not-after.ts +28 -0
  74. package/src/central/agent/placement.ts +36 -4
  75. package/src/central/agent/routes.ts +3 -1
  76. package/src/central/agent/webhook-routes.ts +21 -9
  77. package/src/central/agent/webhooks.ts +27 -9
  78. package/src/central/artifacts/host.ts +3 -1
  79. package/src/central/artifacts/maintenance.ts +2 -1
  80. package/src/central/artifacts/preview-bundle.ts +81 -0
  81. package/src/central/artifacts/previews.ts +94 -0
  82. package/src/central/artifacts/routes.ts +12 -1
  83. package/src/central/artifacts/store.ts +198 -8
  84. package/src/central/config.ts +34 -0
  85. package/src/central/fetch-budget.ts +59 -0
  86. package/src/central/fetcher.ts +372 -0
  87. package/src/central/http.ts +277 -22
  88. package/src/central/install/CONTRACT.md +4 -4
  89. package/src/central/install/install.ps1 +37 -5
  90. package/src/central/install/render.ts +13 -8
  91. package/src/central/media-remote.ts +248 -0
  92. package/src/central/media-timeline.ts +317 -0
  93. package/src/central/media-unfurl.ts +119 -0
  94. package/src/central/profiles/content.ts +3 -35
  95. package/src/central/recording/routes.ts +2 -2
  96. package/src/central/recording/schema.ts +3 -1
  97. package/src/central/registry.ts +449 -21
  98. package/src/central/spoke-ws.ts +17 -3
  99. package/src/central/store.ts +21 -0
  100. package/src/central/teams/intake-routes.ts +2 -1
  101. package/src/central/teams/intake.ts +200 -15
  102. package/src/central/unfurl-parse.ts +313 -0
  103. package/src/index.ts +68 -8
  104. package/src/speakable.ts +33 -1
  105. package/src/spoke/conversation.ts +7 -4
  106. package/src/spoke/deliver.ts +19 -0
  107. package/src/spoke/media-bytes.ts +171 -0
  108. package/src/spoke/media-policy.ts +394 -0
  109. package/src/spoke/media.ts +189 -0
  110. package/src/spoke/own-server.ts +30 -0
  111. package/src/spoke/preview-bundle.ts +538 -0
  112. package/src/spoke/spoke.ts +387 -17
  113. package/src/spoke/timeline.ts +59 -5
  114. package/src/spoke/voice-front.ts +335 -0
  115. package/web/dist/assets/24BXRY42-Zfr7jm_p.js +2 -0
  116. package/web/dist/assets/4FHPYW2L-C6Z67098.js +2 -0
  117. package/web/dist/assets/4LWW3ZNH-CUiYeygH.js +1 -0
  118. package/web/dist/assets/5THPTBWS-Ce_hS451.js +1 -0
  119. package/web/dist/assets/5XYWFMKW-CW-BCKiK.js +4 -0
  120. package/web/dist/assets/64PMEAB3-BjpCDGU9.js +8 -0
  121. package/web/dist/assets/6BEWHPQE-BpNa96Ze.js +2 -0
  122. package/web/dist/assets/6PIGVMFT-YXn9Hgnb.js +1 -0
  123. package/web/dist/assets/75JW6PN6-BFpDBuGN.js +2 -0
  124. package/web/dist/assets/7WLXJQOR-D6QVYUu9.js +1 -0
  125. package/web/dist/assets/7XWI72E6-BMuIspEy.js +2 -0
  126. package/web/dist/assets/A4UD2L5Z-BQzcD9dU.js +8 -0
  127. package/web/dist/assets/ArtifactPage-BKISN-Qj.js +1 -0
  128. package/web/dist/assets/ArtifactPane-CKOiAUNH.js +1 -0
  129. package/web/dist/assets/ArtifactWorkbench-d7R1o-rs.js +6 -0
  130. package/web/dist/assets/BGW36YJW-CJMhya8S.js +4 -0
  131. package/web/dist/assets/CGIZI67J-DYDSLME8.js +2 -0
  132. package/web/dist/assets/DKTLEL5E-DciMwFJ1.js +1 -0
  133. package/web/dist/assets/DNNCRC2E-BIeKf5t-.js +5 -0
  134. package/web/dist/assets/Diagram-azw2B_QH.js +1 -0
  135. package/web/dist/assets/Diagram-vdpmp3xu.css +1 -0
  136. package/web/dist/assets/E67EBMDD--AucIw59.js +5 -0
  137. package/web/dist/assets/EFYWJBJK-CVywe_D5.js +1 -0
  138. package/web/dist/assets/EXE5EH6O-DR1IHCTr.js +4 -0
  139. package/web/dist/assets/FTXIJQGB-BZVuiBn1.js +1 -0
  140. package/web/dist/assets/G3MDBVQH-BZmnMkFw.js +1 -0
  141. package/web/dist/assets/G6GPDDNC-DEz8F449.js +2 -0
  142. package/web/dist/assets/G76NGGFM-CrB2V34K.js +1 -0
  143. package/web/dist/assets/GH6G3TJC-D3RTYEH4.js +2 -0
  144. package/web/dist/assets/HPNUA7RO-B19NeNOJ.js +1 -0
  145. package/web/dist/assets/HQRGC5D7-Dmpzq6Rn.js +4 -0
  146. package/web/dist/assets/IX6Z2TVR-DphRHnek.js +5 -0
  147. package/web/dist/assets/J77NQRCJ-B7AGcxvw.js +3 -0
  148. package/web/dist/assets/JAD36DTZ-B9-dbsS0.js +5 -0
  149. package/web/dist/assets/LF3NJQAX-koL91UZ9.js +2 -0
  150. package/web/dist/assets/LRZCOFJZ-Cdjasfuf.js +6 -0
  151. package/web/dist/assets/Library-CcjZXsfF.js +2 -0
  152. package/web/dist/assets/Lightbox-C8KNKwOA.css +1 -0
  153. package/web/dist/assets/Lightbox-Du56MXGX.js +1 -0
  154. package/web/dist/assets/MediaImage-Ds_JUx3a.js +4 -0
  155. package/web/dist/assets/N5NF2FGY-OuapYTfr.js +2 -0
  156. package/web/dist/assets/N7OWWQHY-BNLd-Q_U.js +2 -0
  157. package/web/dist/assets/NT5JY5WP-1lJM-aun.js +1 -0
  158. package/web/dist/assets/OT7W3RNY-jDL3drzX.js +4 -0
  159. package/web/dist/assets/P67P66DB-CE-opRb8.js +3 -0
  160. package/web/dist/assets/PFLLLM7K-DDJFgzW3.js +2 -0
  161. package/web/dist/assets/PUAMC4MJ-CtBm-WuU.js +12 -0
  162. package/web/dist/assets/PVFCHRLY-CG5JXv60.js +2 -0
  163. package/web/dist/assets/ProfilesDestination-DdzbzmeK.js +1 -0
  164. package/web/dist/assets/QQW2P742-BbcEkpa4.js +1 -0
  165. package/web/dist/assets/RVARI57O-CgA1WoRv.js +1 -0
  166. package/web/dist/assets/S63OEDPG-CKlhpvl2.js +3 -0
  167. package/web/dist/assets/SG5TVYLW-BBtiwXPL.js +2 -0
  168. package/web/dist/assets/TeamsPage-CDyjrK-I.js +1 -0
  169. package/web/dist/assets/UGRSUGA2-urZ_hx83.js +5 -0
  170. package/web/dist/assets/V44WA6U7-DYfX3OlM.js +1 -0
  171. package/web/dist/assets/V67O4WWV-xYxJ00QW.js +1 -0
  172. package/web/dist/assets/VBUCM3YD-JHGjuJC_.js +1 -0
  173. package/web/dist/assets/VINGRCPA-DZuJa3SH.js +7 -0
  174. package/web/dist/assets/WL6DNKX4-BHqripdA.js +2 -0
  175. package/web/dist/assets/WQ63CJYP-D6G5frDY.js +2 -0
  176. package/web/dist/assets/Watchtower-DYwoUWME.js +2 -0
  177. package/web/dist/assets/XOYAOB3S-L-KeA1EF.js +13 -0
  178. package/web/dist/assets/Y5LQLG3M-dr2-erb8.js +2 -0
  179. package/web/dist/assets/YIK6JTN6--1t-Ud8k.js +2 -0
  180. package/web/dist/assets/artifacts-DU9uRgs1.js +1 -0
  181. package/web/dist/assets/index-C3ci5UtY.css +1 -0
  182. package/web/dist/assets/index-LNMZCqgE.js +36 -0
  183. package/web/dist/assets/lazy-f3CuUNJZ.js +43 -0
  184. package/web/dist/assets/live-ycZ_aQZO.js +5 -0
  185. package/web/dist/assets/mermaid.worker-WDVRAh32.js +1 -0
  186. package/web/dist/assets/pane-layout-0RrLHGDr.js +1 -0
  187. package/web/dist/assets/preload-helper-BLdHbfdN.js +1 -0
  188. package/web/dist/assets/{renderer2d-CYag1CnR.js → renderer2d-BIwbgRoX.js} +1 -1
  189. package/web/dist/assets/{renderer3d-BRB6rgDJ.js → renderer3d-C1a7eYGQ.js} +1 -1
  190. package/web/dist/assets/{safe-area-fOy0AOuG.js → safe-area-DHhPy61Q.js} +1 -1
  191. package/web/dist/assets/{silero-worker-DhlIHyD_.js → silero-worker-e802lB5T.js} +1 -1
  192. package/web/dist/assets/smart-turn-v3.2-cpu-WpeLRbPA.onnx +0 -0
  193. package/web/dist/assets/smart-turn-worker-DaVJPdvJ.js +11 -0
  194. package/web/dist/assets/source-BWlvaODa.js +1 -0
  195. package/web/dist/assets/toast-Cuu2K0hx.js +1 -0
  196. package/web/dist/assets/ui-CFB4wQfF.js +3 -0
  197. package/web/dist/index.html +8 -6
  198. package/web/src/voice/turn/LICENSE +28 -0
  199. package/web/dist/assets/ArtifactPage-Dq7VW-bU.js +0 -1
  200. package/web/dist/assets/ArtifactPane-DKwbMTX9.js +0 -1
  201. package/web/dist/assets/ArtifactWorkbench-vrgIfncX.js +0 -6
  202. package/web/dist/assets/Library-D6-Go6Cu.js +0 -2
  203. package/web/dist/assets/ProfilesDestination-BOML2Dgf.js +0 -1
  204. package/web/dist/assets/TeamsPage-CNBTE8gB.js +0 -1
  205. package/web/dist/assets/Watchtower-Dor1Ubjy.js +0 -2
  206. package/web/dist/assets/hub-CrbItiwP.js +0 -13
  207. package/web/dist/assets/index-82Ce0IAf.css +0 -1
  208. package/web/dist/assets/index-D9SP3_0z.js +0 -22
  209. package/web/dist/assets/live-BNJgy0vg.js +0 -5
  210. package/web/dist/assets/pane-layout-EdR1kRrG.js +0 -1
  211. package/web/dist/assets/preload-helper-DqrJTq0t.js +0 -1
  212. package/web/dist/assets/source-Wbq35qGp.js +0 -1
  213. package/web/dist/assets/ui-j5FFk90B.js +0 -3
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/renderer2d-BIwbgRoX.js","assets/live-ycZ_aQZO.js","assets/ui-CFB4wQfF.js","assets/toast-Cuu2K0hx.js","assets/plural-Bspvoqfq.js","assets/index-LNMZCqgE.js","assets/pane-layout-0RrLHGDr.js","assets/artifacts-DU9uRgs1.js","assets/MediaImage-Ds_JUx3a.js","assets/preload-helper-BLdHbfdN.js","assets/index-C3ci5UtY.css","assets/live-BUofsQpz.css","assets/safe-area-DHhPy61Q.js","assets/renderer3d-C1a7eYGQ.js","assets/renderer3d-Co5yCKMg.css"])))=>i.map(i=>d[i]);
2
+ import{$ as e,A as t,B as n,C as r,E as i,F as a,G as o,I as s,J as c,N as l,Q as u,R as d,S as f,T as p,U as m,W as h,a as g,b as _,et as v,g as y,i as b,k as x,nt as S,q as C,r as w,tt as T,u as E,x as D,y as O}from"./ui-CFB4wQfF.js";import{L as k,l as A,o as j,s as M}from"./toast-Cuu2K0hx.js";import{s as N}from"./artifacts-DU9uRgs1.js";import{t as P}from"./preload-helper-BLdHbfdN.js";import{$ as F,et as I,it as ee,k as te,nt as L,ot as ne,rt as R,tt as re}from"./index-LNMZCqgE.js";import{$ as ie,A as z,C as ae,D as oe,F as se,H as ce,I as le,J as ue,K as de,L as fe,M as pe,N as me,O as he,P as ge,Q as _e,R as ve,S as ye,T as be,U as xe,V as Se,W as Ce,X as we,Y as Te,Z as Ee,a as De,at as Oe,b as ke,ct as Ae,et as je,f as Me,ft as Ne,g as Pe,i as Fe,it as Ie,j as Le,k as B,l as Re,lt as V,m as ze,n as Be,nt as Ve,o as He,ot as Ue,p as We,q as Ge,r as H,rt as Ke,s as U,t as qe,tt as Je,u as Ye,ut as Xe,v as Ze,w as W,x as G,z as Qe}from"./live-ycZ_aQZO.js";var K=Object.create,$e=Object.defineProperty,et=Object.getOwnPropertyDescriptor,tt=Object.getOwnPropertyNames,nt=Object.getPrototypeOf,rt=Object.prototype.hasOwnProperty,it=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t,t.exports),e=null),t.exports),q=(e,t)=>{let n={};for(var r in e)$e(n,r,{get:e[r],enumerable:!0});return t||$e(n,Symbol.toStringTag,{value:`Module`}),n},J=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=tt(t),a=0,o=i.length,s;a<o;a++)s=i[a],!rt.call(e,s)&&s!==n&&$e(e,s,{get:(e=>t[e]).bind(null,s),enumerable:!(r=et(t,s))||r.enumerable});return e},at=(e,t,n)=>(n=e==null?{}:K(nt(e)),J(t||!e||!e.__esModule||!rt.call(e,`default`)?$e(n,`default`,{value:e,enumerable:!0}):n,e)),ot=[`machine`,`harness`,`state`,`team`,`role`,`project`,`workspace`,`tag`,`meta`],Y={machine:`Machine`,harness:`Harness`,state:`State`,team:`Team`,role:`Role`,project:`Project`,workspace:`Workspace`,tag:`Tag`,meta:`Metadata`},st=`watchtower.filtersOpen`,ct=`watchtower.legendOpen`;function lt(e,t={}){let n=[];for(let r of ot){let i=e[r];if(!i)continue;let a=r===`state`?z[e.state]:r===`machine`||r===`harness`||r===`team`?t[r]?.(i)??i:i;n.push({key:r,label:Y[r],value:a,clear:{[r]:void 0}})}if(e.q&&n.push({key:`q`,label:`Search`,value:e.q,clear:{q:void 0}}),e.kinds){let t=ie(e).kinds.size;n.push({key:`kinds`,label:`Lines`,value:t===be.length?`all kinds`:`${t} of ${be.length} kinds`,clear:{kinds:void 0}})}return e.tree===!1&&n.push({key:`tree`,label:`Session tree`,value:`off`,clear:{tree:void 0}}),n}var ut=e=>lt(e).filter(e=>e.key!==`q`).length,dt=(e,t)=>ot.filter(n=>!!e[n]||t.includes(n)),ft=(e,t)=>{let n=new Set(dt(e,t));return ot.filter(e=>!n.has(e))},pt=(e,t)=>e===`1`||e!==`0`&&t;function mt(e,t,n){if(!(n<=0))switch(t){case`ArrowRight`:case`ArrowDown`:return(e+1)%n;case`ArrowLeft`:case`ArrowUp`:return(e-1+n)%n;case`Home`:return 0;case`End`:return n-1;default:return}}var ht=2500;function gt(e){return e.panelOpen||e.focusInside||e.hover?!1:e.now-e.lastActivity>=ht}var _t=(e,t)=>e>Math.min(120,t/4),vt=x(`<div class=wt-backdrop aria-hidden=true>`),yt=x(`<section role=dialog tabindex=-1><header class=wt-panel-head><h2></h2></header><div class=wt-panel-body>`),bt=x(`<div class=wt-handle aria-hidden=true>`);function xt(e){let r,i=t=>{e.onClose(),t&&e.opener&&queueMicrotask(()=>document.getElementById(e.opener)?.focus())};return T(()=>{e.autoFocus&&r.focus({preventScroll:!0})}),[n(s,{get when(){return e.phone},get children(){var e=vt();return e.$$click=()=>i(!1),e}}),(()=>{var a=yt(),s=a.firstChild,c=s.firstChild,l=s.nextSibling;a.$$keydown=e=>{e.key!==`Escape`||e.defaultPrevented||(e.preventDefault(),i(!0))};var u=r;return typeof u==`function`?t(u,a):r=a,f(a,n(St,{onClose:()=>i(!1)}),s),f(c,()=>e.title),f(s,()=>e.actions,null),f(s,n(b,{icon:`close`,get label(){return`Close ${e.title.toLowerCase()}`},onClick:()=>i(!0)}),null),f(l,()=>e.children),o(t=>{var n=e.id,r=`wt-panel wt-sheetable ${e.class??``}`,i=!!e.phone,o=e.phone?`true`:`false`,s=`${e.id}-title`,l=`${e.id}-title`;return n!==t.e&&p(a,`id`,t.e=n),r!==t.t&&_(a,t.t=r),i!==t.a&&a.classList.toggle(`wt-sheet`,t.a=i),o!==t.o&&p(a,`aria-modal`,t.o=o),s!==t.i&&p(a,`aria-labelledby`,t.i=s),l!==t.n&&p(c,`id`,t.n=l),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),a})()]}function St(e){let t=0,n=0,r=null,i=t=>{if(!r)return;let i=r.offsetHeight;r.style.transform=``,r.style.transition=``,r=null,t&&_t(n,i)&&e.onClose()};return(()=>{var e=bt();return e.addEventListener(`pointercancel`,()=>i(!1)),e.$$pointerup=()=>i(!0),e.$$pointermove=e=>{r&&(n=Math.max(0,e.clientY-t),r.style.transform=`translateY(${n}px)`)},e.$$pointerdown=e=>{r=e.currentTarget.closest(`.wt-sheetable`),r&&(t=e.clientY,n=0,r.style.transition=`none`,e.currentTarget.setPointerCapture?.(e.pointerId))},e})()}D([`click`,`keydown`,`pointerdown`,`pointermove`,`pointerup`]);var Ct=x(`<div class=te-row><button type=button class="btn small">Edit team</button><a class="btn small">Open team page`),wt=x(`<p role=alert class=wt-error>Could not load the timeline: <!> <button type=button class=btn>Retry`),Tt=x(`<p class=muted>Loading…`),Et=x(`<p class=muted>No messages in this window.`),Dt=x(`<button type=button class=btn>Load older`),Ot=x(`<aside class="wt-slider wt-sheetable"aria-label=Details><header class=wt-slider-head><h2></h2></header><div class=wt-slider-body><section class=wt-section><h3>Timeline</h3><ol class=wt-timeline>`),kt=x(`<p class=muted>This is no longer in the chosen window.`),At=x(`<span class=muted>Loading…`),jt=x(`<span class=wt-error>`),Mt=x(`<div class=wt-text>`),Nt=x(`<div class="wt-text wt-answer"><span class=muted>Answer: `),Pt=x(`<li><div class=wt-tl-row><span class=wt-tl-kind></span><span> → </span><span class=muted> · `),Ft=x(`<button type=button class="btn wt-show-text">Show text`),It=x(`<dl class=wt-facts>`),Lt=x(`<dt>`),Rt=x(`<dd>`),zt=x(`<section class=wt-section><h3>Members</h3><ul class=wt-peers>`),Bt=x(`<p class=wt-actions><a class="btn primary"href=/concierge>`),Vt=x(`<span class="btn wt-drag"draggable=true title="Drag onto a pane: an edge splits, the centre replaces"aria-hidden=true> Drag into a pane`),Ht=x(`<p class=wt-actions><a class="btn primary">Open session</a> <button type=button class=btn>Open in pane beside</button> <button type=button class=btn>Start side chat…`),Ut=x(`<section class=wt-section><h3>Supervised by</h3><button type=button class=wt-link>`),Wt=x(`<section class=wt-section><h3>Parent</h3><button type=button class=wt-link>`),Gt=x(`<section class=wt-section><h3>Subsessions</h3><ul class=wt-peers>`),Kt=x(`<section class=wt-section><h3>Talks with</h3><ul class=wt-peers>`),qt=x(`<li><button type=button class=wt-link></button><span class=muted> · `),Jt=x(`<li><button type=button class=wt-link>`),Yt=x(`<p class=wt-endpoints><button type=button class=wt-link></button><span aria-hidden=true> → </span><span class=sr-only> to </span><button type=button class=wt-link>`),Xt={msg:`Message`,ask:`Ask`,reply:`Reply`,decline:`Decline`};function Zt(i){let u,h=e=>i.snap.nodes.find(t=>t.id===e)?.label??e,[g,_]=c([]),[x,S]=c(),[C,w]=c(`loading`),[D,O]=c(``),[k,A]=c({}),j=0,M=async e=>{let t=++j,n=i.selection;w(`loading`);try{let r=await ke(n,i.window,Date.now(),e?x():void 0);if(t!==j)return;_(e?[...g(),...r.messages]:r.messages),S(r.cursor),w(`ready`)}catch(e){if(t!==j)return;O(ae(e).message),w(`error`)}};m(e(()=>`${i.selection.type}:${i.selection.id}:${i.window}`,()=>{_([]),S(void 0),A({}),M(!1)}));let N=async e=>{A({...k(),[e]:`loading`});try{let t=await G(e);A({...k(),[e]:t})}catch(t){A({...k(),[e]:{error:ae(t).message}})}};T(()=>{let e=e=>{e.key===`Escape`&&!e.defaultPrevented&&!y()&&i.onClose()};document.addEventListener(`keydown`,e),v(()=>document.removeEventListener(`keydown`,e))});let P=()=>i.edge?i.edge.label:i.node?.title??i.selection.id;return(()=>{var e=Ot(),c=e.firstChild,m=c.firstChild,_=c.nextSibling,v=_.firstChild,y=v.firstChild.nextSibling,S=u;return typeof S==`function`?t(S,e):u=e,f(e,n(St,{onClose:()=>i.onClose()}),c),f(m,P),f(c,n(b,{icon:`close`,label:`Close details`,onClick:()=>i.onClose()}),null),f(_,n(d,{get fallback(){return kt()},get children(){return[n(a,{get when(){return i.edge},children:e=>n(rn,{get edge(){return e()},get onSelect(){return i.onSelect}})}),n(a,{get when(){return i.node},children:e=>n(nn,{get node(){return e()},label:h,get onSelect(){return i.onSelect}})})]}}),v),f(_,n(s,{get when(){return r(()=>i.node?.kind===`team`)()&&i.onEditTeam},get children(){var e=Ct(),t=e.firstChild,n=t.nextSibling;return t.$$click=()=>i.onEditTeam(i.node.id),o(()=>p(n,`href`,`/teams/${encodeURIComponent(i.node.id)}`)),e}}),v),f(v,n(s,{get when(){return C()===`error`},get children(){var e=wt(),t=e.firstChild.nextSibling,n=t.nextSibling.nextSibling;return f(e,D,t),n.$$click=()=>void M(!1),e}}),y),f(y,n(l,{get each(){return g()},children:e=>{let t=()=>k()[e.id];return(()=>{var i=Pt(),o=i.firstChild.firstChild,c=o.nextSibling,l=c.firstChild,u=c.nextSibling,p=u.firstChild;return f(o,()=>Xt[e.kind]??e.kind),f(c,()=>h(e.from),l),f(c,()=>h(e.to),null),f(u,()=>e.state,p),f(u,(()=>{var t=r(()=>!!e.delivery);return()=>t()?` · ${Qe(e.delivery)}`:``})(),p),f(u,()=>e.decisionID?` · Decision`:``,p),f(u,()=>E(e.at),null),f(i,n(d,{get fallback(){return(()=>{var t=Ft();return t.$$click=()=>void N(e.id),t})()},get children(){return[n(a,{get when(){return t()===`loading`},get children(){return At()}}),n(a,{get when(){return r(()=>typeof t()==`object`&&t()!==null)()&&`error`in t()},get children(){var e=jt();return f(e,()=>t().error),e}}),n(a,{get when(){return r(()=>typeof t()==`object`&&t()!==null)()&&`text`in t()},get children(){return[(()=>{var e=Mt();return f(e,()=>t().text),e})(),n(s,{get when(){return t().answer},get children(){var e=Nt();return e.firstChild,f(e,()=>t().answer,null),e}})]}})]}}),null),i})()}})),f(v,n(s,{get when(){return C()===`loading`},get children(){return Tt()}}),null),f(v,n(s,{get when(){return r(()=>C()===`ready`)()&&!g().length},get children(){return Et()}}),null),f(v,n(s,{get when(){return r(()=>C()===`ready`)()&&x()},get children(){var e=Dt();return e.$$click=()=>void M(!0),e}}),null),e})()}function Qt(e){return(()=>{var t=It();return f(t,n(l,{get each(){return e.rows.filter(e=>e[1]!==void 0&&e[1]!==``)},children:([e,t])=>[(()=>{var t=Lt();return f(t,e),t})(),(()=>{var e=Rt();return f(e,t),e})()]})),t})()}var $t=e=>Se(e),en=e=>e&&Object.keys(e).length?Object.entries(e).map(([e,t])=>`${e}=${t}`).join(`, `):void 0,tn=e=>e?Object.entries(e).map(([e,t])=>`${e} ${t}`).join(`, `):void 0;function nn(e){let t=()=>e.node,i={current:`Concierge (hub-managed session)`,previous:`Previous Concierge session (ended)`,service:`The hub's Concierge service (its updates, digests and launches)`},a=()=>t().conciergeRole?i[t().conciergeRole]:t().concierge?i.current:{hub:`Hub`,user:`You`,app:`App`,machine:`Machine`,session:`Session`,team:`Team`}[t().kind];return[n(Qt,{get rows(){return[[`Kind`,a()],[`State`,t().ring?z[t().ring]:void 0],[`Machine`,t().machine],[`Harness`,t().harness],[`Project`,t().project],[`Mode`,t().team?.mode===`restricted`?`Restricted: only its team paths`:t().team?.mode===`open`?`Open: everyone may message everyone`:void 0],[`Entry role`,t().team?.entryRole],[`Paused`,t().team?.paused?`yes`:void 0],[t().kind===`team`?`Roles`:`Directory roles`,t().roles.join(`, `)||void 0],[`Teams`,t().seats.map(e=>`${e.team} (${e.role})`).join(`, `)||void 0],[`Tags`,(t().team?.tags??t().tags).join(`, `)||void 0],[`Launch labels`,en(t().labels)],[`Metadata`,en(t().team?.metadata)],[`Workspaces`,t().workspaceIDs.join(`, `)||void 0],[`Launch`,t().launchID],[`Last seen`,t().lastSeen?E(t().lastSeen):void 0],...t().kind===`hub`||t().kind===`machine`?[[`Messages through it`,t().routed]]:[[`Sent`,t().sent],[`Received`,t().received]],[`By kind`,Object.entries(t().byKind).map(([e,t])=>`${$t(e)} ${t}`).join(`, `)||void 0],[`Sessions`,t().states?Object.entries(t().states).map(([e,t])=>`${z[e]} ${t}`).join(`, `):void 0],[`Machines online`,t().machinesOnline?`${t().machinesOnline.online} of ${t().machinesOnline.total}`:void 0]]}}),n(s,{get when(){return t().team?.members.length},get children(){var r=zt(),i=r.firstChild.nextSibling;return f(i,n(l,{get each(){return[...t().team.members]},children:t=>(()=>{var n=qt(),r=n.firstChild,i=r.nextSibling;return i.firstChild,r.$$click=()=>e.onSelect({type:`node`,id:t.id}),f(r,()=>t.label),f(i,()=>t.role,null),n})()})),r}}),n(s,{get when(){return r(()=>!!t().openable)()&&t().concierge},get children(){var e=Bt(),n=e.firstChild;return f(n,()=>t().conciergeRole===`previous`?`Open the current Concierge`:`Open the Concierge`),e}}),n(s,{get when(){return r(()=>!!t().openable)()&&!t().concierge},get children(){var e=Ht(),r=e.firstChild,i=r.nextSibling.nextSibling,a=i.nextSibling.nextSibling;return i.$$click=()=>N(t().id),f(e,n(s,{get when(){return!R()},get children(){return[(()=>{var e=Vt(),r=e.firstChild;return O(e,`dragend`,re),e.addEventListener(`dragstart`,e=>L(e,{target:{sessionID:t().id},label:t().title})),f(e,n(w,{name:`grip`}),r),e})(),` `]}}),a),a.$$click=()=>I(t().id,t().workspaceIDs[0]?{workspaceID:t().workspaceIDs[0]}:{}),o(()=>p(r,`href`,A(t().id))),e}}),n(s,{get when(){return t().supervisorID},get children(){var n=Ut(),r=n.firstChild.nextSibling;return r.$$click=()=>e.onSelect({type:`node`,id:t().supervisorID}),f(r,()=>t().supervisorLabel??t().supervisorID),n}}),n(s,{get when(){return t().parentID},get children(){var n=Wt(),r=n.firstChild.nextSibling;return r.$$click=()=>e.onSelect({type:`node`,id:t().parentID}),f(r,()=>e.label(t().parentID)),n}}),n(s,{get when(){return t().children.length},get children(){var r=Gt(),i=r.firstChild.nextSibling;return f(i,n(l,{get each(){return[...t().children]},children:t=>(()=>{var n=Jt(),r=n.firstChild;return r.$$click=()=>e.onSelect({type:`node`,id:t}),f(r,()=>e.label(t)),n})()})),r}}),n(s,{get when(){return t().peers.length},get children(){var r=Kt(),i=r.firstChild.nextSibling;return f(i,n(l,{get each(){return[...t().peers]},children:t=>(()=>{var n=qt(),r=n.firstChild,i=r.nextSibling;return i.firstChild,r.$$click=()=>e.onSelect({type:`node`,id:t.id}),f(r,()=>t.label),f(i,()=>t.count,null),n})()})),r}})]}function rn(e){let t=()=>e.edge;return[(()=>{var n=Yt(),r=n.firstChild,i=r.nextSibling.nextSibling.nextSibling;return r.$$click=()=>e.onSelect({type:`node`,id:t().from}),f(r,()=>t().fromLabel),i.$$click=()=>e.onSelect({type:`node`,id:t().to}),f(i,()=>t().toLabel),n})(),n(Qt,{get rows(){return[[`Messages`,t().kind===`policy`?void 0:t().count],[`First`,t().firstAt?E(t().firstAt):void 0],[`Last`,t().lastAt?E(t().lastAt):void 0],[`States`,tn(t().states)],[`Delivery`,ve(t().delivery)],[`Declined`,t().declined],[`Refused by team policy`,t().denied],[`To a role address`,t().roleAddressed],[`Team`,t().teamLabel??t().teamID],[`Permitted kinds`,t().kinds?.join(`, `)],[`Permitted path`,t().permitted===void 0?void 0:t().permitted?`yes`:`no (refused attempts only)`]]}})]}D([`click`]);var an=x(`<svg viewBox="0 0 24 24"width=16 height=16 fill=none stroke=currentColor stroke-width=1.8 stroke-linecap=round stroke-linejoin=round aria-hidden=true>`),on=x(`<svg><path></svg>`,!1,!0,!1),sn=x(`<button type=button class=wt-dock-item><span class=wt-dock-text>`),cn=x(`<span class="wt-dock-matches muted"role=status> `),ln=x(`<span class=wt-dock-search><input type=search aria-label="Search nodes"placeholder="Search @name, role, machine…"><button type=button class=wt-dock-close aria-label="Close search"title="Close search">`),un=x(`<div class=wt-dock-wrap><div class=wt-dock role=toolbar aria-label="Watchtower controls"aria-orientation=horizontal><div class=wt-dock-seg role=group aria-label=View></div><span class=wt-dock-sep aria-hidden=true></span><span class=wt-dock-more>`),dn=x(`<button type=button class="wt-dock-item wt-dock-view">`),fn=x(`<span class=wt-badge aria-hidden=true>`),pn=x(`<button type=button class=wt-dock-item aria-label=Search title="Search nodes"aria-expanded=false>`),mn={filters:[`M4 6h16`,`M7 12h10`,`M10 18h4`],legend:[`M12 3a9 9 0 1 0 0 18a9 9 0 0 0 0-18z`,`M12 11v6`,`M12 7.5h.01`],teams:[`M9 11a3 3 0 1 0 0-6a3 3 0 0 0 0 6z`,`M3 20a6 6 0 0 1 12 0`,`M16 5.5a3 3 0 0 1 0 5.5`,`M21 20a6 6 0 0 0-4-5.6`],hub:[`M12 9a3 3 0 1 0 0 6a3 3 0 0 0 0-6z`,`M12 3v6`,`M12 15v6`,`M3 12h6`,`M15 12h6`],reset:[`M4 9V4h5`,`M20 9V4h-5`,`M4 15v5h5`,`M20 15v5h-5`],pause:[`M8 5v14`,`M16 5v14`],play:[`M7 5l12 7-12 7z`],search:[`M11 4a7 7 0 1 0 0 14a7 7 0 0 0 0-14z`,`M20 20l-4-4`],close:[`M6 6l12 12`,`M18 6L6 18`],more:[`M5 12h.01`,`M12 12h.01`,`M19 12h.01`]};function hn(e){return(()=>{var t=an();return f(t,n(l,{get each(){return[...mn[e.name]]},children:e=>(()=>{var t=on();return p(t,`d`,e),t})()})),o(()=>p(t,`class`,`wt-glyph wt-glyph-${e.name}`)),t})()}function gn(e){let r,i,[a,u]=c(!!e.search),[d,m]=c(!1),[h,_]=c(Date.now()),[y,b]=c(Date.now()),[x,S]=c(!1),[C,w]=c(!1),E=()=>gt({now:y(),lastActivity:h(),panelOpen:e.panelOpen,focusInside:C(),hover:x()}),D,O=()=>{let e=Date.now();e-h()<150&&!E()||(_(e),b(e),clearTimeout(D),D=setTimeout(()=>b(Date.now()),ht+50))},k=!1;T(()=>{let e=[`pointermove`,`pointerdown`,`touchstart`,`keydown`,`wheel`];for(let t of e)window.addEventListener(t,O,{passive:!0});let t=e=>{k&&(k=!1,e.preventDefault(),e.stopPropagation())};r.addEventListener(`click`,t,!0),O(),j();let n=r.parentElement,i=n?new ResizeObserver(()=>m(n.clientWidth<=540)):void 0;n&&i.observe(n),v(()=>i?.disconnect()),v(()=>{r.removeEventListener(`click`,t,!0);for(let t of e)window.removeEventListener(t,O);clearTimeout(D)})});let A=()=>[...r.querySelectorAll(`.wt-dock-item`)].filter(e=>e.offsetParent!==null&&!e.disabled),j=e=>{let t=A(),n=e&&t.includes(e)?e:t.find(e=>e.tabIndex===0)??t[0];for(let e of r.querySelectorAll(`.wt-dock-item`))e.tabIndex=e===n?0:-1},M=e=>{let t=e.target;if(t.tagName===`INPUT`||!t.classList.contains(`wt-dock-item`))return;let n=A(),r=mt(n.indexOf(t),e.key,n.length);r!==void 0&&(e.preventDefault(),n[r].focus())},N=!1,P=()=>{N=!0,u(!0)},F=()=>{u(!1),queueMicrotask(()=>i?.focus())},I=e=>(()=>{var t=sn(),r=t.firstChild;return t.$$click=()=>e.onClick(),f(t,n(s,{get when(){return e.glyph},children:e=>n(hn,{get name(){return e()}})}),r),f(r,()=>e.text),f(t,()=>e.badge,null),o(n=>{var r=e.id,i=!!e.wide,a=e.label,o=e.title??e.label,s=e.pressed,c=e.expanded,l=e.expanded?e.controls:void 0,u=e.disabled;return r!==n.e&&p(t,`id`,n.e=r),i!==n.t&&t.classList.toggle(`wt-dock-wide`,n.t=i),a!==n.a&&p(t,`aria-label`,n.a=a),o!==n.o&&p(t,`title`,n.o=o),s!==n.i&&p(t,`aria-pressed`,n.i=s),c!==n.n&&p(t,`aria-expanded`,n.n=c),l!==n.s&&p(t,`aria-controls`,n.s=l),u!==n.h&&(t.disabled=n.h=u),n},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0}),t})();return(()=>{var c=un(),u=c.firstChild,m=u.firstChild,h=m.nextSibling.nextSibling;u.$$focusout=e=>{r.contains(e.relatedTarget)||w(!1)},u.$$focusin=e=>{w(!0),e.target.classList.contains(`wt-dock-item`)&&j(e.target)},u.$$pointerdown=e=>{k=E()&&e.pointerType===`touch`},u.addEventListener(`pointerleave`,()=>S(!1)),u.addEventListener(`pointerenter`,()=>S(!0)),u.$$keydown=M;var _=r;return typeof _==`function`?t(_,u):r=u,f(m,n(l,{each:[[`3d`,`3D`],[`2d`,`2D`],[`list`,`List`]],children:([t,n])=>(()=>{var r=dn();return r.$$click=()=>e.setView(t),f(r,n),o(()=>p(r,`aria-pressed`,e.view===t)),r})()})),f(u,()=>I({id:`wt-dock-filters`,label:e.filterCount?`Filters (${e.filterCount} active)`:`Filters`,text:`Filters`,glyph:`filters`,expanded:e.filtersOpen,controls:`wt-filters`,onClick:e.onFilters,badge:n(s,{get when(){return e.filterCount},get children(){var t=fn();return f(t,()=>e.filterCount),t}})}),h),f(u,()=>I({id:`wt-dock-legend`,label:`Legend`,text:`Legend`,glyph:`legend`,expanded:e.legendOpen,controls:`wt-legend`,onClick:e.onLegend}),h),f(u,()=>I({id:`wt-dock-teams`,label:`Teams`,text:`Teams`,glyph:`teams`,pressed:e.teamsOpen,onClick:e.onTeams}),h),f(u,()=>I({label:`Hub details`,text:`Hub`,glyph:`hub`,wide:!0,onClick:e.onHub}),h),f(u,()=>I({label:`Reset view`,text:`Reset`,glyph:`reset`,wide:!0,disabled:!e.drawn,onClick:e.onReset}),h),f(u,()=>I({label:e.paused?`Resume motion`:`Pause motion`,text:e.paused?`Resume`:`Pause`,glyph:e.paused?`play`:`pause`,wide:!0,pressed:e.paused,disabled:e.reduced,...e.reduced?{title:`Motion is off: your system asks for reduced motion`}:{},onClick:e.onPause}),h),f(h,n(g,{label:`More controls`,class:`wt-dock-item`,up:!0,align:`right`,items:()=>[...d()?[{label:`Hub details`,run:e.onHub},{label:`Reset view`,run:e.onReset,disabled:!e.drawn},{label:e.paused?`Resume motion`:`Pause motion`,run:e.onPause,disabled:e.reduced}]:[],{label:`Re-layout`,run:()=>e.onRelayout?.(),disabled:!e.canRelayout}],get text(){return n(hn,{name:`more`})}})),f(u,n(s,{get when(){return a()},get fallback(){return(()=>{var e=pn();e.$$click=P;var r=i;return typeof r==`function`?t(r,e):i=e,f(e,n(hn,{name:`search`})),e})()},get children(){var r=ln(),i=r.firstChild,a=i.nextSibling;return f(r,n(hn,{name:`search`}),i),i.$$keydown=t=>{t.key===`Enter`?(t.preventDefault(),e.onSearchEnter()):t.key===`Escape`&&(t.preventDefault(),F())},i.$$input=t=>e.onSearch(t.currentTarget.value),t(e=>{N&&(N=!1,queueMicrotask(()=>e.focus()))},i),f(r,n(s,{get when(){return e.search.trim()},get children(){var t=cn(),n=t.firstChild;return f(t,()=>e.matches??0,n),f(t,()=>e.matches===1?`match`:`matches`,null),t}}),a),a.$$click=F,f(a,n(hn,{name:`close`})),o(()=>i.value=e.search),r}}),null),o(e=>{var t=E()?`true`:`false`,n=a()?`open`:void 0;return t!==e.e&&p(u,`data-faded`,e.e=t),n!==e.t&&p(u,`data-search`,e.t=n),e},{e:void 0,t:void 0}),c})()}D([`click`,`keydown`,`pointerdown`,`focusin`,`focusout`,`input`]);var _n=x(`<label class=wt-field><span></span><input type=text class=wt-meta aria-label=Metadata aria-describedby=wt-meta-help placeholder="key=value"list=wt-meta-keys><datalist id=wt-meta-keys></datalist><span id=wt-meta-help class=sr-only>Launch labels and team metadata: key=value or key, several separated by spaces (all must match).`),vn=x(`<option>`),yn=x(`<fieldset class=wt-fs><legend>View</legend><div class=wt-fs-row><label class=wt-field><span>Time window</span><select aria-label="Time window"></select></label><label class=wt-field><span>Group by</span><select aria-label="Group by"></select></label><label class=wt-check><input type=checkbox><span>Session tree`),bn=x(`<div class=wt-scope>`),xn=x(`<select class=wt-add aria-label="Add filter"><option value selected>+ Add filter`),Sn=x(`<fieldset class=wt-fs><legend>Scope`),Cn=x(`<fieldset class=wt-fs><legend>Show</legend><div class=wt-kinds>`),wn=x(`<form class=wt-preset-form><input type=text aria-label="Preset name"placeholder="Preset name"maxlength=60><button type=submit class="btn small">Save</button><button type=button class="btn small">Cancel`),Tn=x(`<button type=button class="btn small">Delete preset`),En=x(`<footer class=wt-panel-foot role=group aria-label=Presets><select aria-label="Filter presets"><option value></option></select><span class=wt-foot-gap></span><button type=button class="btn small">Clear filters</button><button type=button class="btn small">Copy link</button><span class="muted wt-copied"role=status>`),Dn=x(`<p class="muted wt-fs-empty">Everything is shown. Add a filter to narrow it.`),On=x(`<div class=wt-scope-row><button type=button class=wt-x>×`),kn=x(`<label class=wt-toggle><input type=checkbox><span>`),An=x(`<button type=button class="btn small">Save preset`),jn=x(`<button type=button class=wt-chip-clear>Clear all`),Mn=x(`<div class=wt-chipbar><ul class=wt-chips aria-label="Active filters">`),Nn=x(`<li class=wt-chip><span><span class=wt-chip-label>:</span> </span><button type=button class=wt-x title=Remove>×`),Pn=x(`<label class=wt-field><span></span><select><option value>`),Fn={machine:void 0,harness:void 0,state:void 0,team:void 0,role:void 0,project:void 0,workspace:void 0,tag:void 0,meta:void 0,q:void 0,kinds:void 0,tree:void 0},In={get(e){try{return localStorage.getItem(e)}catch{return null}},set(e,t){try{localStorage.setItem(e,t)}catch{}}};function Ln(e){let[r,i]=c([]),a=()=>dt(e.url,r()),u=()=>ft(e.url,r()),d=()=>ie(e.url).kinds,m=(t,n)=>e.setURL({[t]:n.trim()?n:void 0}),h=e=>{i([...r(),e]),queueMicrotask(()=>document.getElementById(`wt-scope-${e}`)?.focus())},g=t=>{i(r().filter(e=>e!==t)),e.setURL({[t]:void 0})},_=(t,n)=>{let r=new Set(d());n?r.add(t):r.delete(t),e.setURL({kinds:be.filter(e=>r.has(e))})},[v,y]=c(je(In.get(oe))),[b,x]=c(``),[S,C]=c(!1),[w,T]=c(``),[E,D]=c(``),O=e=>{y(e),In.set(oe,JSON.stringify(e))},k=t=>{x(t);let n=v().find(e=>e.name===t);n&&e.go(se(e.url,n.search))},A=()=>{let t=w().trim();t&&(O(Oe(v(),t,Ke(e.url))),x(t),C(!1),T(``))},j=async()=>{try{await navigator.clipboard.writeText(location.href),D(`Link copied`)}catch{D(`Copy the address bar to share these filters`)}setTimeout(()=>D(``),3e3)},M=t=>{let r=Y[t],i=`wt-scope-${t}`;switch(t){case`machine`:return n(X,{id:i,label:r,all:`All machines`,get value(){return e.url.machine},get options(){return e.machines},onChange:e=>m(t,e)});case`harness`:return n(X,{id:i,label:r,all:`All harnesses`,get value(){return e.url.harness},get options(){return e.harnesses},onChange:e=>m(t,e)});case`state`:return n(X,{id:i,label:r,all:`Any state`,get value(){return e.url.state},get options(){return he.map(e=>({value:e,label:z[e]}))},onChange:t=>e.setURL({state:t||void 0})});case`team`:return n(X,{id:i,label:r,all:`All teams`,get value(){return e.teamValue},get options(){return e.choices.teams.map(e=>({value:e.id,label:e.label}))},onChange:e=>m(t,e)});case`role`:return n(X,{id:i,label:r,all:`Any role`,get value(){return e.url.role},get options(){return e.choices.roles.map(e=>({value:e,label:e}))},onChange:e=>m(t,e)});case`project`:return n(X,{id:i,label:r,all:`All projects`,get value(){return e.url.project},get options(){return e.choices.projects.map(e=>({value:e,label:e}))},onChange:e=>m(t,e)});case`workspace`:return n(X,{id:i,label:r,all:`All workspaces`,get value(){return e.url.workspace},get options(){return e.choices.workspaces.map(e=>({value:e,label:e}))},onChange:e=>m(t,e)});case`tag`:return n(X,{id:i,label:r,all:`Any tag`,get value(){return e.url.tag},get options(){return e.choices.tags.map(e=>({value:e,label:e}))},onChange:e=>m(t,e)});case`meta`:return(()=>{var t=_n(),a=t.firstChild,s=a.nextSibling,c=s.nextSibling;return p(t,`for`,i),f(a,r),s.$$input=e=>m(`meta`,e.currentTarget.value),s.addEventListener(`change`,e=>m(`meta`,e.currentTarget.value)),p(s,`id`,i),f(c,n(l,{get each(){return[...e.choices.metaKeys]},children:e=>(()=>{var t=vn();return t.value=`${e}=`,t})()})),o(()=>s.value=e.url.meta??``),t})()}};return n(xt,{id:`wt-filters`,title:`Filters`,class:`wt-pop wt-pop-filters`,get phone(){return e.phone},get autoFocus(){return e.autoFocus},opener:`wt-dock-filters`,get onClose(){return e.onClose},get children(){return[(()=>{var t=yn(),r=t.firstChild.nextSibling.firstChild,i=r.firstChild.nextSibling,a=r.nextSibling,s=a.firstChild.nextSibling,c=a.nextSibling.firstChild;return i.addEventListener(`change`,t=>e.setURL({window:t.currentTarget.value})),f(i,n(l,{get each(){return Object.entries(ge)},children:([t,n])=>(()=>{var r=vn();return r.value=t,f(r,()=>n.label),o(()=>r.selected=e.url.window===t),r})()})),s.addEventListener(`change`,t=>e.setURL({groupBy:t.currentTarget.value})),f(s,n(l,{get each(){return Object.entries(W)},children:([t,n])=>(()=>{var r=vn();return r.value=t,f(r,n),o(()=>r.selected=e.url.groupBy===t),r})()})),c.addEventListener(`change`,t=>e.setURL({tree:t.currentTarget.checked?void 0:!1})),o(()=>c.checked=e.url.tree!==!1),t})(),(()=>{var e=Sn();return e.firstChild,f(e,n(s,{get when(){return a().length},get fallback(){return Dn()},get children(){var e=bn();return f(e,n(l,{get each(){return a()},children:e=>(()=>{var t=On(),n=t.firstChild;return f(t,()=>M(e),n),n.$$click=()=>g(e),o(t=>{var r=`Remove ${Y[e]} filter`,i=`Remove ${Y[e]} filter`;return r!==t.e&&p(n,`aria-label`,t.e=r),i!==t.t&&p(n,`title`,t.t=i),t},{e:void 0,t:void 0}),t})()})),e}}),null),f(e,n(s,{get when(){return u().length},get children(){var e=xn();return e.firstChild,e.addEventListener(`change`,e=>{let t=e.currentTarget.value;e.currentTarget.value=``,t&&h(t)}),f(e,n(l,{get each(){return u()},children:e=>(()=>{var t=vn();return t.value=e,f(t,()=>Y[e]),t})()}),null),e}}),null),e})(),(()=>{var e=Cn(),t=e.firstChild.nextSibling;return f(t,n(l,{get each(){return[...ce()]},children:e=>(()=>{var t=kn(),n=t.firstChild,r=n.nextSibling;return n.addEventListener(`change`,t=>_(e.kind,t.currentTarget.checked)),f(r,()=>e.label),o(()=>p(t,`title`,e.description)),o(()=>n.checked=d().has(e.kind)),t})()})),e})(),(()=>{var r=En(),a=r.firstChild,c=a.firstChild,u=a.nextSibling,d=u.nextSibling,p=d.nextSibling,m=p.nextSibling;return a.addEventListener(`change`,e=>k(e.currentTarget.value)),f(c,()=>v().length?`Choose a preset…`:`No presets yet`),f(a,n(l,{get each(){return v()},children:e=>(()=>{var t=vn();return f(t,()=>e.name),o(()=>t.selected=b()===e.name),o(()=>t.value=e.name),t})()}),null),f(r,n(s,{get when(){return S()},get fallback(){return(()=>{var e=An();return e.$$click=()=>C(!0),e})()},get children(){var e=wn(),n=e.firstChild,r=n.nextSibling,i=r.nextSibling;return e.addEventListener(`submit`,e=>{e.preventDefault(),A()}),t(e=>queueMicrotask(()=>e.focus()),n),n.$$input=e=>T(e.currentTarget.value),i.$$click=()=>C(!1),o(()=>r.disabled=!w().trim()),o(()=>n.value=w()),e}}),u),f(r,n(s,{get when(){return b()},get children(){var e=Tn();return e.$$click=()=>{O(fe(v(),b())),x(``)},e}}),u),d.$$click=()=>{i([]),e.setURL(Fn)},p.$$click=()=>void j(),f(m,E),o(t=>{var n=b()===``,r=!lt(e.url).length;return n!==t.e&&(c.selected=t.e=n),r!==t.t&&(d.disabled=t.t=r),t},{e:void 0,t:void 0}),r})()]}})}function Rn(e){return n(s,{get when(){return e.chips.length},get children(){var t=Mn(),r=t.firstChild;return f(r,n(l,{get each(){return e.chips},children:t=>(()=>{var n=Nn(),r=n.firstChild,i=r.firstChild,a=i.firstChild;i.nextSibling;var s=r.nextSibling;return f(i,()=>t.label,a),f(r,()=>t.value,null),s.$$click=()=>e.onRemove(t),o(()=>p(s,`aria-label`,`Remove filter ${t.label}: ${t.value}`)),n})()})),f(t,n(s,{get when(){return e.chips.length>1},get children(){var t=jn();return t.$$click=()=>e.onClear(),t}}),null),t}})}function X(e){let t=()=>e.value&&!e.options.some(t=>t.value===e.value)?[...e.options,{value:e.value,label:e.value}]:e.options;return(()=>{var r=Pn(),i=r.firstChild,a=i.nextSibling,s=a.firstChild;return f(i,()=>e.label),a.addEventListener(`change`,t=>e.onChange(t.currentTarget.value)),f(s,()=>e.all),f(a,n(l,{get each(){return t()},children:t=>(()=>{var n=vn();return f(n,()=>t.label),o(()=>n.selected=e.value===t.value),o(()=>n.value=t.value),n})()}),null),o(t=>{var n=e.id,i=e.id,o=e.label,c=!e.value;return n!==t.e&&p(r,`for`,t.e=n),i!==t.t&&p(a,`id`,t.t=i),o!==t.a&&p(a,`aria-label`,t.a=o),c!==t.o&&(s.selected=t.o=c),t},{e:void 0,t:void 0,a:void 0,o:void 0}),r})()}D([`input`,`click`]);var zn=x(`<div class="wt-canvas wt-2d"><div class=wt-2d-host tabindex=0 role=application aria-roledescription="graph canvas"aria-label="Interaction graph (2D)"aria-describedby=wt-2d-help></div><p id=wt-2d-help class=sr-only>Arrow keys move between nodes, Enter opens the focused node, Home goes to the hub, Shift and arrow keys pan, plus and minus zoom, 0 fits everything. The list view shows the same as a table.</p><p class="sr-only wt-2d-live"role=status aria-live=polite>`);function Bn(e){let n,r,i=!1,a,[o,s]=c(``);return T(()=>{P(()=>import(`./renderer2d-BIwbgRoX.js`).then(t=>{if(i)return;try{r=t.createRenderer2D(n,{onNode:t=>e.onNode(t),onLink:t=>e.onLink(t),onBackground:()=>e.onBackground(),announce:s})}catch(t){e.onFail(t);return}r.resize(n.clientWidth,n.clientHeight),a=e.onRenderer?.(r,n),m(()=>r?.update(e.view,e.palette,{motion:e.motion,...e.selected===void 0?{}:{selected:e.selected},...e.look?{look:e.look}:{}})),m(()=>{let t=e.focus;t&&r?.focus(t.id,e.motion)});let o=!0;m(()=>{e.resetSeq,o?o=!1:r?.reset(e.motion)})}),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12])).catch(t=>!i&&e.onFail(t));let t=new ResizeObserver(()=>r?.resize(n.clientWidth,n.clientHeight));t.observe(n),v(()=>{i=!0,t.disconnect(),a?.(),r?.destroy(),r=void 0})}),(()=>{var e=zn(),r=e.firstChild,i=r.nextSibling.nextSibling,a=n;return typeof a==`function`?t(a,r):n=r,f(i,o),e})()}var Vn=x(`<div class=wt-canvas>`);function Hn(){try{let e=document.createElement(`canvas`);return!!(e.getContext(`webgl2`)??e.getContext(`webgl`))}catch{return!1}}function Un(e){let n,r,i=!1,a;return T(()=>{P(()=>import(`./renderer3d-C1a7eYGQ.js`).then(t=>{if(i)return;try{r=t.createRenderer(n,{onNode:t=>e.onNode(t),onLink:t=>e.onLink(t),onBackground:()=>e.onBackground()},{motion:e.motion,...e.options?{options:e.options}:{}})}catch(t){e.onFail(t);return}r.resize(n.clientWidth,n.clientHeight),a=e.onRenderer?.(r)??void 0,m(()=>e.options&&r?.setOptions(e.options)),m(()=>r?.setSelected(e.selected));let o=!1;m(()=>{r?.update(e.view,e.palette,e.motion),o||(o=!0,setTimeout(()=>r?.reset(!1),250))}),m(()=>{let t=e.focus;t&&r?.focus(t.id,e.motion)});let s=!0;m(()=>{e.resetSeq,s?s=!1:r?.reset(e.motion)})}),__vite__mapDeps([13,1,2,3,4,5,6,7,8,9,10,11,12,14])).catch(t=>!i&&e.onFail(t));let t=new ResizeObserver(()=>r?.resize(n.clientWidth,n.clientHeight));t.observe(n);let o=()=>document.visibilityState===`hidden`?r?.pause():r?.resume();document.addEventListener(`visibilitychange`,o),v(()=>{i=!0,a?.(),t.disconnect(),document.removeEventListener(`visibilitychange`,o),r?.destroy(),r=void 0})}),(()=>{var e=Vn(),r=n;return typeof r==`function`?t(r,e):n=e,e})()}var Wn={sphere:`circle`,cube:`square`,octahedron:`diamond`,tetrahedron:`triangle`,dodecahedron:`pentagon`};function Gn(e){switch(e.kind){case`hub`:return`hub`;case`machine`:return`hexagon`;case`user`:return`ring`;case`app`:return`hollow-triangle`;case`team`:case`cluster`:return`hollow-square`;case`role`:return e.vacant?`dashed-ring`:`pill`;case`aggregate`:return`dashed-ring`;default:return Wn[e.shape??`dodecahedron`]??`pentagon`}}var Kn=e=>e===`hexagon`||e===`ring`||e===`hollow-triangle`||e===`hollow-square`||e===`dashed-ring`||e===`pill`;function qn(e,t,n,r,i,a=-Math.PI/2){e.beginPath();for(let o=0;o<i;o++){let s=a+o*2*Math.PI/i;o===0?e.moveTo(t+r*Math.cos(s),n+r*Math.sin(s)):e.lineTo(t+r*Math.cos(s),n+r*Math.sin(s))}e.closePath()}function Jn(e,t,n,r,i){switch(t){case`square`:case`hollow-square`:e.beginPath(),e.roundRect(n-i*.82,r-i*.82,i*1.64,i*1.64,i*.28);return;case`diamond`:qn(e,n,r,i*1.08,4);return;case`triangle`:case`hollow-triangle`:qn(e,n,r+i*.15,i*1.12,3);return;case`pentagon`:qn(e,n,r,i,5);return;case`hexagon`:qn(e,n,r,i,6,0);return;case`pill`:e.beginPath(),e.roundRect(n-i*1.4,r-i*.6,i*2.8,i*1.2,i*.6);return;default:e.beginPath(),e.arc(n,r,i,0,Math.PI*2)}}function Yn(e,t,n,r,i,a,o=`#ffffff`){if(e.save(),Jn(e,t,n,r,i),Kn(t))e.lineWidth=Math.max(1.2,i*.24),e.strokeStyle=a,t===`dashed-ring`&&e.setLineDash([i*.5,i*.35]),e.stroke(),e.setLineDash([]),e.beginPath(),e.arc(n,r,i*.24,0,Math.PI*2),e.fillStyle=a,e.fill();else{let s=e.createRadialGradient(n-i*.25,r-i*.3,i*.05,n,r,i*1.1);s.addColorStop(0,o),s.addColorStop(t===`hub`?.45:.3,a),s.addColorStop(1,a),e.fillStyle=s,e.fill()}e.restore()}function Xn(e,t,n,r,i,a){if(a<=0||r<=0)return;e.save(),e.globalAlpha=Math.min(1,a);let o=e.createRadialGradient(t,n,0,t,n,r);o.addColorStop(0,Zn(i,.9)),o.addColorStop(.3,Zn(i,.32)),o.addColorStop(1,Zn(i,0)),e.fillStyle=o,e.beginPath(),e.arc(t,n,r,0,Math.PI*2),e.fill(),e.restore()}function Zn(e,t){let n=/^#([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(e.trim());if(!n)return e;let r=n[1].length===3?[...n[1]].map(e=>e+e).join(``):n[1],[i,a,o]=[0,2,4].map(e=>parseInt(r.slice(e,e+2),16));return`rgba(${i}, ${a}, ${o}, ${Math.max(0,Math.min(1,t))})`}function Qn(e){let t=/^#([0-9a-f]{6})$/i.exec(e.trim());if(!t)return!1;let[n,r,i]=[0,2,4].map(e=>parseInt(t[1].slice(e,e+2),16)/255);return .2126*n+.7152*r+.0722*i<.4}var $n=x(`<canvas class=wt-glyph-swatch aria-hidden=true>`),er=x(`<details class=wt-legend-sec open><summary>Teams</summary><ul><li><span class="wt-hull wt-hull-open"aria-hidden=true></span><span>Open team <span class=muted>· solid hull: everyone may message everyone, so no lines are drawn</span></span></li><li><span class="wt-hull wt-hull-restricted"aria-hidden=true></span><span>Restricted team <span class=muted>· dashed hull: only its team paths</span></span></li><li><span class="wt-role wt-role-entry"aria-hidden=true>★</span><span>Entry role <span class=muted>· ★, bold and tinted: receives the team's work</span></span></li><li><span class=wt-role aria-hidden=true></span><span>Role <span class=muted>· a row of its members, each tied to it by a violet tether</span></span></li><li><span class="wt-role wt-role-vacant"aria-hidden=true></span><span>Vacant role <span class=muted>· hollow and dashed, labelled “vacant”: nobody holds it</span></span></li><li><span class="wt-line wt-line-solid wt-line-tether"aria-hidden=true></span><span>Staffed <span class=muted>· a tether from a role to each session that holds it</span></span></li><li><span class=wt-multi aria-hidden=true>×2</span><span>In several teams <span class=muted>· dotted outer ring and ×N, drawn once; a dashed bridge reaches each other seat`),tr=x(`<div class=wt-legend-body><details class=wt-legend-sec open><summary>Machines (color)</summary><ul></ul></details><details class=wt-legend-sec open><summary>Harness (glyph)</summary><ul></ul></details><details class=wt-legend-sec open><summary>Markers</summary><ul><li><span class=wt-region aria-hidden=true></span><span>Region <span class=muted>· a soft tinted area per group of the current Group by (a machine keeps its colour)</span></span></li></ul></details><details class=wt-legend-sec open><summary>State (ring)</summary><ul></ul></details><details class=wt-legend-sec open><summary>Interactions (line)</summary><ul><li><span class="wt-line wt-line-solid wt-line-structure"aria-hidden=true></span><span>Structure <span class=muted>· thin grey: hub → group → session → subsession</span></span></li></ul><p class="muted wt-legend-note">Fibers brighten towards the receiver; brighter fibers carry more messages. Pulses travel along a fiber after a message, fade with its age, and stop once nothing on it is working or waiting.`),nr=x(`<button type=button class="btn small wt-compact"title="Hide the explanations">Compact`),rr=x(`<li><span class=wt-swatch role=img></span><span><span class=muted> · <!> sessions`),ir=x(`<li><span> <span class=muted>· <!> · `),ar=x(`<li><span> <span class=muted>· `),or=x(`<li><span aria-hidden=true></span><span> <span class=muted>· `),sr={sphere:`circle`,cube:`square`,octahedron:`diamond`,tetrahedron:`triangle`,dodecahedron:`pentagon`},cr={policy:`dotted; in 2D an arrowhead at one end is one-way, at both ends two-way`,denied:`dashed red with ✕ and the count`},lr=[{glyph:`hub`,color:`--accent`,label:`Hub`,text:`the bright core in the middle`},{glyph:`ring`,color:`--text`,label:`You`,text:`hollow circle`},{glyph:`hollow-triangle`,color:`--text`,label:`App`,text:`hollow triangle`},{glyph:`hexagon`,color:`--muted`,label:`Machine`,text:`hollow hexagon, at the head of its region`},{glyph:`hollow-square`,color:`--violet`,label:`Team or cluster`,text:`hollow square`},{glyph:`dashed-ring`,color:`--muted`,label:`Folded sessions`,text:`dashed ring with the count`}];function ur(e){let n,r=()=>e.size??14,[a,s]=c(0);return T(()=>{let e=matchMedia(`(prefers-color-scheme: dark)`),t=()=>s(e=>e+1);e.addEventListener(`change`,t),v(()=>e.removeEventListener(`change`,t))}),m(()=>{F(),a();let t=window.devicePixelRatio||1,i=r();n.width=Math.round(i*t),n.height=Math.round(i*t);let o=n.getContext(`2d`);if(!o)return;o.setTransform(t,0,0,t,0,0),o.clearRect(0,0,i,i);let s=getComputedStyle(n).getPropertyValue(e.color).trim()||`#888888`;Yn(o,e.glyph,i/2,i/2,i*.36,s,`#ffffff`)}),(()=>{var e=$n(),a=n;return typeof a==`function`?t(a,e):n=e,o(t=>{var n=`${r()}px`,a=`${r()}px`;return n!==t.e&&i(e,`width`,t.e=n),a!==t.t&&i(e,`height`,t.t=a),t},{e:void 0,t:void 0}),e})()}var dr={pulse:`pulsing ring`,thin:`thin ring`,thick:`thick ring`,double:`double ring`,broken:`broken ring`,none:`no ring`},fr=`watchtower.legendCompact`;function pr(e){let t=()=>e.view.teams.length>0||e.view.nodes.some(e=>e.teams||e.kind===`role`),[r,a]=c(mr(fr)===`1`),u=e=>{a(e);try{localStorage.setItem(fr,e?`1`:`0`)}catch{}};return n(xt,{id:`wt-legend`,title:`Legend`,get class(){return e.mode===`list`&&!e.phone?`wt-legend wt-panel-inline`:`wt-legend wt-pop wt-pop-legend`},get phone(){return e.phone},get autoFocus(){return e.autoFocus},opener:`wt-dock-legend`,get onClose(){return e.onClose},get actions(){return(()=>{var e=nr();return e.$$click=()=>u(!r()),o(()=>p(e,`aria-pressed`,r())),e})()},get children(){var a=tr(),c=a.firstChild,u=c.firstChild.nextSibling,d=c.nextSibling,m=d.firstChild.nextSibling,h=d.nextSibling,g=h.firstChild.nextSibling,v=g.firstChild,y=h.nextSibling,b=y.firstChild.nextSibling,x=y.nextSibling,S=x.firstChild.nextSibling,C=S.firstChild;return f(u,n(l,{get each(){return e.view.machines},children:e=>(()=>{var t=rr(),n=t.firstChild,r=n.nextSibling,a=r.firstChild,s=a.firstChild.nextSibling;return s.nextSibling,f(n,()=>e.symbol),f(r,()=>e.label,a),f(a,()=>e.sessions,s),f(a,()=>e.online?``:` · offline`,null),o(t=>{var r=`var(${e.color})`,a=`Marker ${e.symbol}`;return r!==t.e&&i(n,`color`,t.e=r),a!==t.t&&p(n,`aria-label`,t.t=a),t},{e:void 0,t:void 0}),t})()})),f(m,n(l,{get each(){return e.view.harnesses},children:e=>(()=>{var t=ir(),r=t.firstChild,i=r.firstChild,a=i.nextSibling,o=a.firstChild.nextSibling;return o.nextSibling,f(t,n(ur,{get glyph(){return sr[e.shape]},color:`--muted`}),r),f(r,()=>e.label,i),f(a,()=>pe[e.shape],o),f(a,()=>e.sessions,null),t})()})),f(g,n(l,{get each(){return[...lr]},children:e=>(()=>{var t=ar(),r=t.firstChild,i=r.firstChild,a=i.nextSibling;return a.firstChild,f(t,n(ur,{get glyph(){return e.glyph},get color(){return e.color}}),r),f(r,()=>e.label,i),f(a,()=>e.text,null),t})()}),v),f(b,n(l,{get each(){return[...he]},children:e=>(()=>{var t=or(),n=t.firstChild,r=n.nextSibling,a=r.firstChild,s=a.nextSibling;return s.firstChild,f(r,()=>z[e],a),f(s,()=>dr[Le[e]],null),o(t=>{var r=`wt-ring wt-ring-${Le[e]}`,a=`var(${B[e]})`;return r!==t.e&&_(n,t.e=r),a!==t.t&&i(n,`border-color`,t.t=a),t},{e:void 0,t:void 0}),t})()})),f(a,n(s,{get when(){return t()},get children(){return er()}}),x),f(S,n(l,{get each(){return[...ce()]},children:e=>(()=>{var t=or(),n=t.firstChild,r=n.nextSibling,a=r.firstChild,s=a.nextSibling;return s.firstChild,f(r,()=>e.label,a),f(s,()=>cr[e.kind]??`solid, dashed while waiting`,null),o(r=>{var a=e.description,o=`wt-line wt-line-${e.style}`,s=`var(${e.color})`;return a!==r.e&&p(t,`title`,r.e=a),o!==r.t&&_(n,r.t=o),s!==r.a&&i(n,`border-color`,r.a=s),r},{e:void 0,t:void 0,a:void 0}),t})()}),C),o(()=>a.classList.toggle(`wt-legend-compact`,!!r())),a}})}function mr(e){try{return localStorage.getItem(e)}catch{return null}}D([`click`]);var hr=x(`<p class=muted>No sessions match.`),gr=x(`<p class=muted>No interactions match.`),_r=x(`<div class=wt-list><table class=wt-table aria-label=Sessions><thead><tr><th scope=col>Session</th><th scope=col>Machine</th><th scope=col>Harness</th><th scope=col>State</th><th scope=col>Sent</th><th scope=col>Received</th></tr></thead><tbody></tbody></table><table class=wt-table aria-label=Interactions><thead><tr><th scope=col>Kind</th><th scope=col>From → to</th><th scope=col>Messages</th><th scope=col>Last</th></tr></thead><tbody>`),vr=x(`<span class=muted aria-hidden=true>↳ `),yr=x(`<tr><td><button type=button class=wt-link></button></td><td></td><td></td><td></td><td></td><td>`),br=x(`<span class=muted> (<!>)`),xr=x(`<tr><td></td><td><button type=button class=wt-link> → </button></td><td></td><td>`);function Sr(e){return(()=>{var t=_r(),a=t.firstChild,c=a.firstChild.nextSibling,u=a.nextSibling,d=u.firstChild.nextSibling;return f(t,()=>e.children,a),f(c,n(l,{get each(){return e.nodes},children:t=>(()=>{var r=yr(),a=r.firstChild,c=a.firstChild,l=a.nextSibling,u=l.nextSibling,d=u.nextSibling,p=d.nextSibling,m=p.nextSibling;return f(a,n(s,{get when(){return t.depth>0},get children(){return vr()}}),c),c.$$click=()=>e.onNode(t.id),f(c,()=>t.label),f(l,()=>t.machine),f(u,()=>t.harness),f(d,()=>t.state),f(p,()=>t.sent),f(m,()=>t.received),o(n=>{var o=e.selected===t.id,s=`${8+t.depth*16}px`;return o!==n.e&&r.classList.toggle(`selected`,n.e=o),s!==n.t&&i(a,`padding-left`,n.t=s),n},{e:void 0,t:void 0}),r})()})),f(t,n(s,{get when(){return!e.nodes.length},get children(){return hr()}}),u),f(d,n(l,{get each(){return e.edges},children:t=>(()=>{var i=xr(),a=i.firstChild,c=a.nextSibling,l=c.firstChild,u=l.firstChild,d=c.nextSibling,m=d.nextSibling;return f(a,()=>t.kind,null),f(a,n(s,{get when(){return t.style!==`solid`},get children(){var e=br(),n=e.firstChild.nextSibling;return n.nextSibling,f(e,()=>t.style===`dashed`?`waiting`:`permitted path`,n),e}}),null),l.$$click=()=>e.onEdge(t.id),f(l,()=>t.from,u),f(l,()=>t.to,null),f(d,()=>t.count),f(m,(()=>{var e=r(()=>!!t.lastAt);return()=>e()?E(t.lastAt):`—`})()),o(n=>{var r=e.selected===t.id,a=`${t.kind} from ${t.from} to ${t.to}`;return r!==n.e&&i.classList.toggle(`selected`,n.e=r),a!==n.t&&p(l,`aria-label`,n.t=a),n},{e:void 0,t:void 0}),i})()})),f(t,n(s,{get when(){return!e.edges.length},get children(){return gr()}}),null),t})()}D([`click`]);var[Cr,wr]=c(),[Tr,Er]=c(),[Dr,Or]=c(),kr=0,Z=Cr,Q=Tr,Ar=Dr,$=(e=`pick`)=>wr(e);function jr(){wr(void 0),Er(void 0)}var Mr=Er,Nr=e=>Or({...e,seq:++kr}),Pr=(e,t)=>getComputedStyle(document.documentElement).getPropertyValue(e).trim()||t;function Fr(e,t,n,r){let i=Math.atan2(n.y-t.y,n.x-t.x);e.beginPath(),e.moveTo(n.x,n.y),e.lineTo(n.x-r*Math.cos(i-.4),n.y-r*Math.sin(i-.4)),e.lineTo(n.x-r*Math.cos(i+.4),n.y-r*Math.sin(i+.4)),e.closePath(),e.fill()}function Ir(e,t,n){let r=Math.hypot(t.x-e.x,t.y-e.y)||1,i=(t.x-e.x)/r,a=(t.y-e.y)/r;return[{x:e.x+i*n,y:e.y+a*n},{x:t.x-i*n,y:t.y-a*n}]}function Lr(e,t,n){let r,i,a=(t,n)=>{let a=Q(),o=e.layout();if(!a||!o)return;s(a.id,o.positions,n);let c=e=>o.positions.get(`role:${a.id}:${e}`),l=Pr(`--accent`,`#3b82f6`);if(t.lineWidth=2/Math.max(.5,n.k),t.strokeStyle=l,t.fillStyle=l,t.font=`${11/Math.max(.6,n.k)}px system-ui, sans-serif`,t.textAlign=`center`,a.spec.mode===`restricted`)for(let e of a.spec.edges){let n=c(e.from),r=c(e.to);if(!n||!r)continue;let[i,a]=Ir(n,r,16);t.setLineDash([6,4]),t.beginPath(),t.moveTo(i.x,i.y),t.lineTo(a.x,a.y),t.stroke(),t.setLineDash([]),Fr(t,i,a,9),e.direction===`two-way`&&Fr(t,a,i,9),t.fillText(`${e.kinds.join(`+`)}${e.direction===`two-way`?` ⇄`:``}`,(i.x+a.x)/2,(i.y+a.y)/2-6)}if(r?.moved&&r.at){let e=o.positions.get(r.from);if(e){let a=i?o.positions.get(i)??r.at:r.at;t.setLineDash([]),t.lineWidth=3/Math.max(.5,n.k),t.beginPath(),t.moveTo(e.x,e.y),t.lineTo(a.x,a.y),t.stroke(),Fr(t,e,a,11),i&&(t.beginPath(),t.arc(a.x,a.y,20,0,Math.PI*2),t.stroke())}}},o=``,s=(e,n,r)=>{let i=t.getBoundingClientRect(),a={};for(let[t,o]of n)(Xe(t,e)!==void 0||t.startsWith(`ses_`))&&(a[t]=[Math.round(i.left+o.x*r.k+r.x),Math.round(i.top+o.y*r.k+r.y)]);let s=JSON.stringify(a);s!==o&&(t.dataset.editorPoints=o=s)},c=e=>{let t=Q();return!!t&&(Xe(e,t.id)!==void 0||e.startsWith(`ses_`))},l=n=>{if(n.button!==0||!Q())return;let i=e.hitTest(n.clientX,n.clientY);i?.type===`node`&&c(i.id)&&(n.stopPropagation(),n.preventDefault(),n.target.setPointerCapture?.(n.pointerId),r={from:i.id,start:{x:n.clientX,y:n.clientY},moved:!1,pointer:n.pointerId},t.dataset.editorDrag=`pending`)},u=n=>{if(!r||n.pointerId!==r.pointer||(n.stopPropagation(),!r.moved&&Math.hypot(n.clientX-r.start.x,n.clientY-r.start.y)>5&&(r.moved=!0),!r.moved))return;r.at=e.toWorld(n.clientX,n.clientY);let o=e.hitTest(n.clientX,n.clientY),s=Q();i=o?.type===`node`&&s&&Ae(s.id,r.from,o.id)?o.id:void 0,t.dataset.editorDrag=i?`over`:`dragging`,e.setOverlay(a)},d=o=>{if(!r||o.pointerId!==r.pointer)return;o.stopPropagation();let s=r;r=void 0;let c=i;if(i=void 0,delete t.dataset.editorDrag,e.setOverlay(a),!s.moved)return n(s.from);let l=Q(),u=l&&c?Ae(l.id,s.from,c):void 0;u&&Nr(u)},f=()=>{r=void 0,i=void 0,delete t.dataset.editorDrag,e.setOverlay(a)};t.addEventListener(`pointerdown`,l,!0),t.addEventListener(`pointermove`,u,!0),t.addEventListener(`pointerup`,d,!0),t.addEventListener(`pointercancel`,f,!0);let p=C(n=>(m(()=>{let n=Q();t.dataset.editorPaths=n?String(n.spec.mode===`restricted`?n.spec.edges.length:0):``,e.setOverlay(n?a:void 0)}),n));return()=>{p(),t.removeEventListener(`pointerdown`,l,!0),t.removeEventListener(`pointermove`,u,!0),t.removeEventListener(`pointerup`,d,!0),t.removeEventListener(`pointercancel`,f,!0),e.setOverlay(void 0)}}var Rr=x(`<aside class="wt-slider wt-sheetable te-panel"aria-label="Team editor">`),zr=x(`<div class=wt-slider-head><h2>Teams`),Br=x(`<p role=alert class=wt-error>`),Vr=x(`<ul class="te-list te-team-list">`),Hr=x(`<section class=wt-section aria-labelledby=te-teams><div class="te-row te-picker-head"><h3 id=te-teams>Open a team</h3><button type=button class="btn small primary">New team</button></div><p class=muted>Teams also have their own page: <a href=/teams>Teams</a>.`),Ur=x(`<div class=wt-slider-body>`),Wr=x(`<p class=muted>No teams yet. Create one to staff roles and give it work.`),Gr=x(`<li><button type=button class=te-team-open><strong></strong><span class=muted>#`),Kr=x(`<div class=wt-slider-head><h2>`),qr=x(`<button type=button class="btn small">All teams`),Jr=x(`<div class="te-row te-panel-links"><span class=muted> #</span><a class="btn small">Open team page`),Yr=x(`<section class=wt-section aria-labelledby=te-members><h3 id=te-members>Members`),Xr=x(`<section class=wt-section aria-labelledby=te-intake><h3 id=te-intake>Submit a task to the team</h3><h4 class=te-sub>Recent tasks`),Zr=x(`<section class="wt-section te-draft"aria-labelledby=te-draft><h3 id=te-draft>Edit the team (draft)</h3><h4 class=te-sub id=te-details>Details</h4><h4 class=te-sub id=te-roles>Roles</h4><h4 class=te-sub id=te-paths>Communication paths`),Qr=x(`<section class=wt-section aria-labelledby=te-life><h3 id=te-life>Team</h3><div class=te-row><button type=button class="btn small"></button><button type=button class="btn small">All teams`),$r=x(`<div class="wt-slider-body te-body">`),ei=x(`<dt>Paths`),ti=x(`<dd>`),ni=x(`<dt>Tags`),ri=x(`<section class=wt-section aria-label="Team overview"><dl class=wt-facts><dt>Communication</dt><dd></dd><dt>Entry role</dt><dd></dd><dt>Roles</dt><dd></dd></dl><h3>Members</h3><button type=button class=btn>Edit with form`);function ii(e){return(()=>{var t=Rr();return f(t,n(St,{onClose:jr}),null),f(t,n(s,{get when(){return Z()===`pick`},get fallback(){return n(s,{get when(){return Z()},keyed:!0,children:t=>n(oi,u({id:t},e))})},get children(){return n(ai,e)}}),null),t})()}function ai(e){let[t,r]=c(),[i,a]=c(``),[u,d]=c(!1);return T(async()=>{try{r(await Ze())}catch(e){a(e instanceof k&&e.status===404?`This hub doesn't have teams yet.`:V(e).message)}}),[(()=>{var e=zr();return e.firstChild,f(e,n(b,{icon:`close`,label:`Close the team editor`,onClick:jr}),null),e})(),(()=>{var e=Ur();return f(e,n(s,{get when(){return i()},get children(){var e=Br();return f(e,i),e}}),null),f(e,n(s,{get when(){return t()},get children(){var e=Hr(),r=e.firstChild,i=r.firstChild.nextSibling,a=r.nextSibling;return i.$$click=()=>d(!0),f(e,n(s,{get when(){return t().length},get fallback(){return Wr()},get children(){var e=Vr();return f(e,n(l,{get each(){return t()},children:e=>(()=>{var t=Gr(),n=t.firstChild,r=n.firstChild,i=r.nextSibling;return i.firstChild,n.$$click=()=>$(e.id),f(r,()=>e.title),f(i,()=>e.name,null),f(i,()=>e.paused?` · paused`:``,null),f(i,()=>e.hasDraft?` · draft`:``,null),o(()=>p(n,`aria-label`,`Edit ${e.title}`)),t})()})),e}}),a),e}}),null),e})(),n(Be,{get open(){return u()},onClose:()=>d(!1),onCreated:t=>{e.onChanged(),$(t)}})]}function oi(t){let i=Pe(t.id,{intake:!0,onChanged:t.onChanged}),[a,l]=c(t.phone);T(()=>void i.load()),qe(()=>i.refresh(),i.openWork),m(()=>{let e=i.team(),t=i.spec();e&&t&&Mr({id:e.id,name:e.name,spec:t,...i.roster()?{seats:i.roster().seats}:{}})}),v(()=>Mr(void 0));let u,d,h=new Map,g=e=>t.snap?.nodes.find(t=>t.id===e)?.label??e;return m(e(Ar,e=>{if(e&&i.spec()&&!a()){if(e.type===`connect`)d?.prefill(e.from,e.to),i.setNotice({kind:`ok`,text:`Path ${e.from} → ${e.to}: choose its direction and kinds, then Add path.`});else if(e.type===`attach`){if(!i.publishedRoles().has(e.role))return i.setNotice({kind:`error`,text:`${e.role} isn't published yet: publish the draft, then staff it.`});i.setNotice({kind:`ok`,text:`Add ${g(e.sessionID)} to ${e.role}? Check its other teams, then confirm.`}),u?.add(e.role,e.sessionID)}else e.type===`role`&&queueMicrotask(()=>h.get(e.role)?.focus())}},{defer:!0})),[(()=>{var e=Kr(),t=e.firstChild;return f(t,(()=>{var e=r(()=>!!i.team());return()=>e()?`Team: ${i.spec()?.title||i.team().title}`:`Team`})()),f(e,n(b,{icon:`close`,label:`Close the team editor`,onClick:jr}),null),e})(),(()=>{var e=$r();return O(e,`keydown`,i.onKey,!0),f(e,n(s,{get when(){return i.loadError()},get children(){return[(()=>{var e=Br();return f(e,()=>i.loadError()),e})(),(()=>{var e=qr();return e.$$click=()=>$(`pick`),e})()]}}),null),f(e,n(s,{get when(){return r(()=>!!i.team())()&&i.spec()},get children(){return[(()=>{var e=Jr(),t=e.firstChild;t.firstChild;var r=t.nextSibling;return f(e,n(ze,{c:i}),t),f(t,()=>i.team().name,null),o(()=>p(r,`href`,H(i.team().id))),e})(),n(Re,{get notice(){return i.notice()}}),n(s,{get when(){return!a()},get fallback(){return n(si,{c:i,get snap(){return t.snap},onEdit:()=>l(!1)})},get children(){return[(()=>{var e=Yr();return e.firstChild,f(e,n(U,{c:i,get snap(){return t.snap},canvasHint:!0,handle:e=>u=e}),null),e})(),(()=>{var e=Xr(),r=e.firstChild.nextSibling;return f(e,n(We,{c:i}),r),f(e,n(He,{c:i,get snap(){return t.snap},limit:5}),null),e})(),(()=>{var e=Zr(),t=e.firstChild.nextSibling,r=t.nextSibling,a=r.nextSibling;return f(e,n(De,{c:i}),t),f(e,n(Fe,{c:i,withMode:!0}),r),f(e,n(Me,{c:i,roleInput:(e,t)=>h.set(e,t)}),a),f(e,n(Ye,{c:i,canvasHint:!0,handle:e=>d=e}),null),e})()]}}),(()=>{var e=Qr(),t=e.firstChild.nextSibling.firstChild,n=t.nextSibling;return t.$$click=()=>void i.togglePause(),f(t,()=>i.team().paused?`Resume team`:`Pause team`),n.$$click=()=>$(`pick`),o(()=>t.disabled=i.busy()),e})()]}}),null),e})()]}function si(e){let t=()=>e.c.read().published;return(()=>{var r=ri(),i=r.firstChild,a=i.firstChild.nextSibling,o=a.nextSibling.nextSibling,c=o.nextSibling.nextSibling,l=i.nextSibling.nextSibling;return f(a,()=>t().mode===`open`?`Open: everyone may message everyone`:`Restricted: only the drawn paths`),f(o,()=>t().entryRole),f(c,()=>t().roles.map(e=>e.label?`${e.name} (${e.label})`:e.name).join(`, `)),f(i,n(s,{get when(){return t().mode===`restricted`},get children(){return[ei(),(()=>{var e=ti();return f(e,()=>t().edges.map(e=>`${e.from} ${e.direction===`two-way`?`⇄`:`→`} ${e.to} (${e.kinds.join(`+`)})`).join(`, `)||`none`),e})()]}}),null),f(i,n(s,{get when(){return t().tags?.length},get children(){return[ni(),(()=>{var e=ti();return f(e,()=>t().tags.join(`, `)),e})()]}}),null),f(r,n(U,{get c(){return e.c},get snap(){return e.snap}}),l),O(l,`click`,e.onEdit,!0),r})()}D([`click`,`keydown`]);var ci=q({default:()=>Ni}),li=x(`<p role=status class=wt-notice>Older interactions may have been evicted: the hub keeps only the most recent messages.`),ui=x(`<p role=status class=wt-notice>The hub cut this graph at its limits. Narrow the time window to see everything.`),di=x(`<p role=status class=wt-notice> messages with archived or deleted sessions are left out.`),fi=x(`<p role=status class=wt-notice>Subsessions are folded into their root to keep the picture readable. The list shows every session.`),pi=x(`<p role=status class=wt-notice>Sessions are folded per group to keep the picture readable. Narrow the filters or pick another grouping to see them; the list shows every session.`),mi=x(`<p role=status class=wt-notice>3D needs WebGL, which this browser can't use, so here's the 2D view.`),hi=x(`<p role=status class=wt-notice>This graph is too large to draw, so here's the list. Narrow the filters or group by machine.`),gi=x(`<p role=alert class="wt-notice wt-error">Couldn't refresh: <!>. Showing the last snapshot. <button type=button class="btn small">Retry`),_i=x(`<p role=alert class=wt-error>Could not load the interaction graph: `),vi=x(`<button type=button class=btn>Retry`),yi=x(`<div class=wt-center>`),bi=x(`<div class=wt-center><p class=muted>Loading…`),xi=x(`<button type=button class="btn primary wt-empty-cta">Connect a machine`),Si=x(`<p class="muted small">Copy the one-line installer, run it on the machine, then approve the machine in Settings.`),Ci=x(`<div class=wt-empty><p class=muted>No sessions or interactions in this window yet.`),wi=x(`<div class=wt-page><header class="topbar wt-top"><h1 class=title>Watchtower</h1><span class="wt-live muted"role=status></span></header><div class=wt-notices></div><div class=wt-stage><div class=wt-overlay>`),Ti=x(`<p class=muted>`),Ei=x(`<p class="muted small">Start a session on a machine, or pick a longer time window in Filters.`),Di=3e3,Oi=3e4;function ki(){let e=matchMedia(`(prefers-color-scheme: dark)`),[t,n]=c(0),r=()=>n(e=>e+1);return e.addEventListener(`change`,r),v(()=>e.removeEventListener(`change`,r)),h(()=>{F(),t();let e=getComputedStyle(document.documentElement),n=new Map;return t=>{let r=n.get(t);return r===void 0&&n.set(t,r=e.getPropertyValue(t).trim()||`#888888`),r}})}function Ai(){let e=matchMedia(`(prefers-reduced-motion: reduce)`),[t,n]=c(e.matches),r=()=>n(e.matches);return e.addEventListener(`change`,r),v(()=>e.removeEventListener(`change`,r)),t}var ji={get(e){try{return localStorage.getItem(e)}catch{return null}},set(e,t){try{localStorage.setItem(e,t)}catch{}}},Mi=1100;function Ni(l){try{Ee(localStorage)}catch{}let[g,_]=c(Ve(ji.get(me))),x=h(()=>Je(j().search,g()),void 0,{equals:(e,t)=>Ue(e)===Ue(t)}),C=e=>M(`/watchtower${Ue(e,g()??`3d`)}`,{replace:!0}),w=e=>C({...x(),...e}),E=e=>{ji.set(me,e),_(e),w({view:e})},D=()=>x().q??``,[O,k]=c(!1),[A,N]=c(innerWidth),P=()=>!R()&&A()>=Mi,[F,I]=c(!R()&&pt(ji.get(`watchtower.filtersOpen`),!1)),[L,re]=c(!R()&&pt(ji.get(`watchtower.legendOpen`),innerWidth>=1280));F()&&L()&&innerWidth<1280&&re(!1);let[z,oe]=c(),se=e=>{oe(e?`filters`:void 0),I(e),ji.set(st,e?`1`:`0`),e&&fe(`filters`)},ce=e=>{oe(e?`legend`:void 0),re(e),ji.set(ct,e?`1`:`0`),e&&fe(`legend`)},fe=e=>{e!==`filters`&&!P()&&I(!1),e!==`legend`&&!P()&&re(!1),e!==`side`&&R()&&(S(x).selected&&J(void 0),Z()&&jr())},pe=Ai(),he=()=>!pe()&&!O(),ge=ki(),[ve]=c(Hn()),[be,Se]=c(!1),[De,Oe]=c(!1),[ke,Ae]=c(),[je,Me]=c(0),[Pe,Fe]=c(),Le=h(()=>x().window),[B,Re]=c(),[V,ze]=c(),[Be,He]=c(!0),We=0,H,Ke=0,U=async()=>{clearTimeout(H),H=void 0;let e=++Ke;We=Date.now(),He(!0);try{let t=await ye(de({window:S(Le)},Date.now()));if(e!==Ke)return;Re(t),ze(void 0)}catch(t){if(e!==Ke)return;ze(ae(t))}finally{e===Ke&&He(!1)}},qe=()=>{H||document.visibilityState===`hidden`||(H=setTimeout(()=>void U(),Math.max(0,We+Di-Date.now())))};m(e(Le,()=>void U())),T(()=>{let e=ne(e=>Te(e)&&qe()),t=setInterval(()=>document.visibilityState===`visible`&&Date.now()-We>=Oi&&void U(),5e3),n=()=>document.visibilityState===`visible`&&Date.now()-We>=Oi&&void U();document.addEventListener(`visibilitychange`,n),v(()=>{e(),clearInterval(t),clearTimeout(H),document.removeEventListener(`visibilitychange`,n)})});let Ye=h(()=>{let e=B(),t=Q();return e&&t?Ne(e,t,t.spec,t.seats):e});v(jr),T(()=>{let e=j().searchParams.get(`edit`);e&&$(e)}),m(e(Z,e=>e&&e!==`pick`&&S(x).groupBy!==`team`&&w({groupBy:`team`})));let Ze=h(()=>ie(x())),W=h(()=>{let e=Ye();return e?le(e,Ze(),{now:e.at,reducedMotion:!he()}):void 0}),G=h(()=>{let e=Ie({webgl:ve()&&!be(),tooLarge:W()?.tooLarge??!1,chosen:x().view});return e.mode===`2d`&&De()?{mode:`list`,reason:`chosen`}:e}),Qe=()=>G().reason,K=()=>G().mode===`3d`||G().mode===`2d`,$e=h(()=>{let e=B();return e?Ce(e):{teams:[],roles:[],projects:[],workspaces:[],tags:[],metaKeys:[]}}),et=h(()=>(B()?.nodes??[]).filter(e=>e.kind===`team`)),tt=h(()=>lt(x(),{machine:e=>W()?.machines.find(t=>t.id===e)?.label??e,harness:ue,team:e=>$e().teams.find(t=>t.id===e)?.label??e})),nt=h(()=>{let e=Ye(),t=W();return e&&t&&G().mode===`list`?we(e,t):{nodes:[],edges:[]}}),rt=h(()=>[...new Set((B()?.nodes??[]).filter(e=>e.kind===`session`).map(Ge))].sort((e,t)=>ue(e).localeCompare(ue(t)))),it=h(()=>{let e=B();return!!e&&!e.nodes.some(e=>e.kind===`session`)&&!e.edges.length}),q=()=>x().selected,J=e=>w({selected:e}),at=h(()=>{let e=B(),t=q();return e&&t?.type===`node`?_e(e,t.id):void 0}),ot=h(()=>{let e=B(),t=q();return e&&t?.type===`edge`?xe(e,t.id):void 0});m(e([q,Z],([e,t])=>(e||t)&&R()&&fe(`side`)));let Y=e=>{if(e.startsWith(`agg:`)||e.startsWith(`group:`))return;let t=Q(),n=t?Xe(e,t.id):void 0;if(n!==void 0)return Nr({type:`role`,role:n});let r=/^role:([^:]+):/.exec(e);J({type:`node`,id:r?r[1]:e})},dt=e=>{let t=B(),n=[...e.edgeIDs].sort((e,n)=>(t?.edges.find(e=>e.id===n)?.count??0)-(t?.edges.find(t=>t.id===e)?.count??0))[0];n&&J({type:`edge`,id:n})},ft=()=>{let e=W()?.nodes.find(e=>e.match&&!e.id.startsWith(`agg:`)&&!e.id.startsWith(`group:`)&&!e.id.startsWith(`role:`));e&&(J({type:`node`,id:e.id}),Ae({id:e.id,seq:(ke()?.seq??0)+1}))},mt=()=>!!(B()&&q())||!!Z(),ht=()=>R()?`0px`:Z()?`min(440px, 100%)`:B()&&q()?`min(380px, 100%)`:`0px`,gt;return T(()=>{let e=new ResizeObserver(()=>N(gt.clientWidth));e.observe(gt),N(gt.clientWidth),F()&&L()&&!P()&&re(!1);let t=e=>{e.key!==`Escape`||e.defaultPrevented||y()||q()||Z()||(F()?se(!1):L()&&ce(!1))};document.addEventListener(`keydown`,t),v(()=>{e.disconnect(),document.removeEventListener(`keydown`,t)})}),(()=>{var e=wi(),c=e.firstChild,l=c.firstChild,m=l.nextSibling,h=c.nextSibling,g=h.nextSibling,_=g.firstChild;f(c,n(s,{get when(){return R()},get children(){return n(b,{icon:`menu`,label:`Open sidebar`,onClick:ee})}}),l),f(m,()=>Be()&&B()?`Updating…`:``),f(c,n(s,{get when(){return!R()},get children(){return n(b,{icon:`sidebar`,label:`Toggle sidebar (⌘B)`,onClick:ee})}}),null),f(h,n(s,{get when(){return B()?.truncated},get children(){return li()}}),null),f(h,n(s,{get when(){return B()?.capped},get children(){return ui()}}),null),f(h,n(s,{get when(){return(B()?.hiddenMessages??0)>0},get children(){var e=di(),t=e.firstChild;return f(e,()=>B().hiddenMessages,t),e}}),null),f(h,n(s,{get when(){return r(()=>W()?.lod===`roots`)()&&K()},get children(){return fi()}}),null),f(h,n(s,{get when(){return r(()=>W()?.lod===`groups`)()&&K()},get children(){return pi()}}),null),f(h,n(s,{get when(){return r(()=>G().mode===`2d`)()&&Qe()===`webgl`},get children(){return mi()}}),null),f(h,n(s,{get when(){return r(()=>G().mode===`list`)()&&Qe()===`large`},get children(){return hi()}}),null),f(h,n(s,{get when(){return r(()=>!!V())()&&B()},get children(){var e=gi(),t=e.firstChild.nextSibling,n=t.nextSibling.nextSibling;return f(e,()=>V().message,t),n.$$click=()=>void U(),e}}),null);var v=gt;return typeof v==`function`?t(v,g):gt=g,f(g,n(d,{get children(){return[n(a,{get when(){return r(()=>!B())()&&V()},get children(){var e=yi();return f(e,n(s,{get when(){return V().kind!==`missing`},get fallback(){return(()=>{var e=Ti();return f(e,()=>V().message),e})()},get children(){return[(()=>{var e=_i();return e.firstChild,f(e,()=>V().message,null),e})(),(()=>{var e=vi();return e.$$click=()=>void U(),e})()]}})),e}}),n(a,{get when(){return!B()},get children(){return bi()}}),n(a,{get when(){return r(()=>G().mode===`3d`)()&&W()},children:e=>n(Un,u({get view(){return e()},get palette(){return ge()},get motion(){return he()},get focus(){return ke()},get resetSeq(){return je()},onNode:Y,onLink:dt,onBackground:()=>void 0,onFail:()=>Se(!0)},()=>q()?.type===`node`?{selected:q().id}:{},{onRenderer:e=>(Fe(e),()=>Fe(void 0))}))}),n(a,{get when(){return r(()=>G().mode===`2d`)()&&W()},children:e=>n(Bn,u({get view(){return e()},get palette(){return ge()},get motion(){return he()}},()=>q()?.type===`node`?{selected:q().id}:{},{get focus(){return ke()},get resetSeq(){return je()},onNode:Y,onLink:dt,onBackground:()=>void 0,onFail:()=>Oe(!0),onRenderer:(e,t)=>Lr(e,t,Y)}))}),n(a,{get when(){return G().mode===`list`},get children(){return n(Sr,{get nodes(){return nt().nodes},get edges(){return nt().edges},get selected(){return q()?.id},onNode:Y,onEdge:e=>J({type:`edge`,id:e}),get children(){return n(s,{get when(){return r(()=>!(!L()||R()))()&&W()},children:e=>n(pr,{get view(){return e()},mode:`list`,phone:!1,get autoFocus(){return z()===`legend`},onClose:()=>ce(!1)})})}})}})]}}),_),f(g,n(s,{get when(){return it()},get children(){var e=Ci();return e.firstChild,f(e,n(s,{get when(){return!B().nodes.some(e=>e.kind===`machine`)},get fallback(){return Ei()},get children(){return[(()=>{var e=xi();return e.$$click=()=>te(),e})(),Si()]}}),null),o(()=>e.classList.toggle(`wt-empty-drawn`,!!K())),e}}),_),f(_,n(Rn,{get chips(){return tt()},onRemove:e=>w(e.clear),onClear:()=>w(Fn)}),null),f(_,n(s,{get when(){return r(()=>!!(L()&&W()))()&&(K()||R())},get children(){return n(pr,{get view(){return W()},get mode(){return r(()=>G().mode===`2d`)()?`2d`:G().mode===`list`?`list`:`3d`},get phone(){return R()},get autoFocus(){return z()===`legend`},onClose:()=>ce(!1)})}}),null),f(_,n(s,{get when(){return r(()=>!!F())()&&B()},get children(){return n(Ln,{get url(){return x()},get phone(){return R()},get autoFocus(){return z()===`filters`},get machines(){return(W()?.machines??[]).map(e=>({value:e.id,label:e.label}))},get harnesses(){return rt().map(e=>({value:e,label:ue(e)}))},get choices(){return $e()},get teamValue(){return et().find(e=>e.id===x().team||e.name===x().team)?.id??x().team},setURL:w,go:C,onClose:()=>se(!1)})}}),null),f(_,n(gn,u({get view(){return x().view},get drawn(){return K()},get filtersOpen(){return F()},get filterCount(){return ut(x())},get legendOpen(){return L()},get teamsOpen(){return!!Z()},get paused(){return O()},get reduced(){return pe()},get panelOpen(){return F()||L()&&R()||R()&&mt()},get search(){return D()}},()=>D().trim()?{matches:W()?.matches??0}:{},{setView:E,onFilters:()=>se(!F()),onLegend:()=>ce(!L()),onTeams:()=>Z()?jr():$(),onHub:()=>J({type:`node`,id:`hub`}),onReset:()=>Me(e=>e+1),onPause:()=>k(!O()),get canRelayout(){return r(()=>G().mode===`3d`)()&&!!Pe()},onRelayout:()=>Pe()?.relayout(),onSearch:e=>w({q:e.trim()?e:void 0}),onSearchEnter:ft})),null),f(g,n(s,{get when(){return r(()=>!!(B()&&q()))()&&!Z()},get children(){return n(Zt,{get snap(){return B()},get selection(){return q()},get node(){return at()},get edge(){return ot()},get window(){return x().window},onSelect:J,onClose:()=>J(void 0),onEditTeam:e=>$(e)})}}),null),f(g,n(s,{get when(){return Z()},get children(){return n(ii,{get snap(){return Ye()},get phone(){return R()},onChanged:()=>void U()})}}),null),o(e=>{var t=G().mode,n=he()?`live`:`static`,r=tt().length?``:void 0,a=ht();return t!==e.e&&p(g,`data-mode`,e.e=t),n!==e.t&&p(g,`data-motion`,e.t=n),r!==e.a&&p(g,`data-chips`,e.a=r),a!==e.o&&i(g,`--wt-side`,e.o=a),e},{e:void 0,t:void 0,a:void 0,o:void 0}),e})()}D([`click`]);export{Qn as a,at as c,Ni as default,Gn as i,Xn as n,Zn as o,Yn as r,it as s,ci as t};
@@ -0,0 +1,13 @@
1
+ import{a as e,d as t,i as n,n as r,r as i,s as a,t as o}from"./BGW36YJW-CJMhya8S.js";import{a as s,t as c}from"./DKTLEL5E-DciMwFJ1.js";import{_ as l,c as u,d,f,l as p,m,s as h,u as g}from"./EFYWJBJK-CVywe_D5.js";import{a as _,i as v,n as y,r as ee,t as b}from"./VBUCM3YD-JHGjuJC_.js";import{n as x,r as S}from"./4LWW3ZNH-CUiYeygH.js";import{a as C,i as w,n as T,t as E}from"./QQW2P742-BbcEkpa4.js";import{n as te,t as D}from"./FTXIJQGB-BZVuiBn1.js";import{t as O}from"./7WLXJQOR-D6QVYUu9.js";import{i as k,o as A,s as j,t as M}from"./6PIGVMFT-YXn9Hgnb.js";import{C as N,D as P,E as F,F as I,M as L,d as R,f as z,h as B,j as V,l as ne,p as H,r as re,s as ie,t as U,u as W,x as G}from"./lazy-f3CuUNJZ.js";var K=/* @__PURE__ */ new Map([[`task`,`roundedRect`],[`tool`,`subroutine`],[`input`,`lean-right`],[`decision`,`diamond`],[`refdoc`,`lin-doc`],[`action`,`hexagon`],[`round`,`rect`]]),ae=/* @__PURE__ */ new Set(/* @__PURE__ */ `doc.stadium.terminal.circle.trapezoid.inv_trapezoid.inv-trapezoid.doublecircle.double-circle.typeDeclaration.procs.lean_left.lean-left.in-out.cylinder.ellipse.odd.tag-rect.tagged-rectangle.delay.half-rounded-rectangle.lin-rect.lined-rectangle.win-pane.window-pane.curv-trap.curved-trapezoid`.split(`.`)),oe=/* @__PURE__ */ new Set([`roundedRect`,`subroutine`,`subprocess`,`subproc`,`framed-rectangle`,`lean-right`,`diamond`,`lin-doc`,`lined-document`,`hexagon`,`hex`,`connector`,`collapsedGroup`]),q=`roundedRect`;function J(e){return e&&(K.get(e)??e)}function se(e){return D(e)||e===`constructor`}function Y(e,t){for(let n of e)n.isGroup||((!n.shape||n.shape===`squareRect`||n.shape===`rect`)&&(n.shape=q),ae.has(n.shape)?(t.emitError(`SHAPE_REMOVED`,`shape "${n.shape}" was removed in v0.8.1, using "${q}"`,{nodeId:n.id}),n.shape=q):oe.has(n.shape)||(t.emitWarning(`SHAPE_UNSUPPORTED`,`shape "${n.shape}" is not supported, using "${q}"`,{nodeId:n.id}),n.shape=q))}var ce=/* @__PURE__ */ new Set([`shape`,`view`,`icon`,`img`,`form`,`pos`,`w`,`h`,`class`,`style`,`labelType`]),le=/* @__PURE__ */ new Set([`subroutine`,`subprocess`,`subproc`,`framed-rectangle`,`tool`]);function X(e){return le.has(e.type)}function Z(e){return e===`markdown`||e===`string`||e===`text`?e:`markdown`}function Q(e){return e.startsWith(`"`)&&e.endsWith(`"`)?e.substring(1,e.length-1):e}function ue(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function de(e){let t=e=>Array.isArray(e)?[]:ue(e)?{}:e,n=t(e),r=[[e,n]];for(;r.length>0;){let[e,n]=r.pop();if(Array.isArray(e))for(let i of e){let e=t(i);n.push(e),typeof i==`object`&&i&&r.push([i,e])}else if(ue(e))for(let i of Object.keys(e)){if(i===`__proto__`||i===`constructor`||i===`prototype`)continue;let a=e[i],o=t(a);n[i]=o,typeof a==`object`&&a&&r.push([a,o])}}return n}function fe(e,t){return Object.assign(e??{},t)}var pe=/:\s*[>|][\d+-]*\s*$/,me=/,([\t ]*)$/;function he(e){let t=!1,n=!1,r=0,i,a=[];for(let o of e.split(`
2
+ `)){if(i!==void 0){let e=o.length-o.trimStart().length;if(o.trim()===``||e>i){a.push(o);continue}i=void 0}let e=-1;for(let i=0;i<o.length;i++){let a=o[i];if(n)a===`\\`?i++:a===`"`&&(n=!1);else if(t)a===`'`&&(t=!1);else if(a===`"`)n=!0;else if(a===`'`)t=!0;else if(a===`#`&&(i===0||o[i-1]===` `||o[i-1]===` `)){e=i;break}else a===`[`||a===`{`?r++:(a===`]`||a===`}`)&&(r=Math.max(0,r-1))}if(t||n||r>0){a.push(o);continue}let s=e>=0?o.slice(0,e):o,c=e>=0?o.slice(e):``;pe.test(s)?(i=o.length-o.trimStart().length,a.push(o)):a.push(s.replace(me,`$1`)+c)}return a.join(`
3
+ `)}function ge(e,t){if(e===`arrow_point`&&t===`normal`)return`sequence`;if(e===`arrow_cross`&&t===`normal`)return`failure`;if(e===`arrow_open`&&t===`dotted`)return`reference`}function _e(e){let t=e.trim(),n=t.slice(0,-1),r=`arrow_open`;switch(t.slice(-1)){case`x`:r=`arrow_cross`;break;case`>`:r=`arrow_point`;break;case`-`:case`.`:n=t}let i=`normal`,a=n.length-1,o=0;for(let e=0;e<n.length;e++)n[e]===`.`&&o++;return o>0&&(i=`dotted`,a=o),{type:r,stroke:i,length:a}}function ve(e){if(!e)return;let t={},n=!1;for(let r of Object.keys(e))ce.has(r)||(t[r]=e[r],n=!0);return n?t:void 0}var ye=class{type=`agentflow`;direction;nodes=/* @__PURE__ */ new Map;edges=[];subgraphs=[];connectors=/* @__PURE__ */ new Map;classes=/* @__PURE__ */ new Map;tooltips=/* @__PURE__ */ new Map;defaultEdgeStyle;defaultInterpolate;mappings=[];diagnostics=[];title;accTitle;accDescr;lineOffset;subgraphLookup=/* @__PURE__ */ new Map;globalNodes=/* @__PURE__ */ new Set;members=/* @__PURE__ */ new Set;edgeById=/* @__PURE__ */ new Map;pairCount=/* @__PURE__ */ new Map;subCount=0;bareMappings=/* @__PURE__ */ new Set;firstMapping=/* @__PURE__ */ new Map;reported=/* @__PURE__ */ new Map;options;constructor(e={}){this.options=e,this.lineOffset=e.lineOffset??0}metadata(e,t,n){let r=t.includes(`
4
+ `),i;try{i=L(r?t+`
5
+ `:`{
6
+ `+t+`
7
+ }`)}catch(a){let o=r?he(t):t,s;if(o!==t)try{s=L(o+`
8
+ `)}catch{s=void 0}if(s===void 0){let{line:t,column:r}=this.errorAt(n),i=n?` (${t}:${r})`:``;throw new W(`Metadata of "${e}" is not valid YAML. ${a.message}${i}`,`syntax`,{type:`agentflow`,line:t,column:r})}i=s}return de(i??{})}errorAt(e){if(e===void 0)return{line:0,column:0};let t=this.options.source;if(t===void 0)return{line:e.first_line+this.lineOffset,column:e.first_column+1};let n=0;for(let r=1;r<e.first_line;r++)n=t.indexOf(`
9
+ `,n)+1;let{line:r,column:i}=H(t,n+e.first_column);return{line:r,column:i}}shapeError(e,t){return new W(e,`semantic`,{type:`agentflow`,...this.errorAt(t)})}addVertex(e,t,n,r,i,a,o={},s,c){if(!e||e.trim().length===0)return;let l,u,d;s!==void 0&&(l=this.metadata(e,s,c),ue(l)&&(u=l,typeof l.shape==`string`&&(d=l.shape,l.shape=J(l.shape))));let f=this.subgraphLookup.get(e);if(f&&l){f.metadata=fe(f.metadata,l);return}let p=this.connectors.get(e);if(p&&l){p.metadata=fe(p.metadata,l);return}if(e===`connectors`)return;let m=this.edgeById.get(e);if(m){u?.animate!==void 0&&(m.animate=u.animate),u?.animation!==void 0&&(m.animation=u.animation),u?.curve!==void 0&&(m.interpolate=u.curve),l&&(m.metadata=fe(m.metadata,l));return}let h=this.nodes.get(e);if(h===void 0&&(h={id:e,labelType:`text`,styles:[],classes:[]},this.nodes.set(e,h)),t===void 0?h.text===void 0&&(h.text=e):(h.labelType=t.type,h.text=Q(t.text.trim())),n!==void 0&&(h.type=n),r!=null)for(let e of r)h.styles.push(e);if(i!=null)for(let e of i)h.classes.push(e);if(a!==void 0&&(h.dir=a),h.props===void 0?h.props=o:o!==void 0&&Object.assign(h.props,o),l&&(h.metadata=fe(h.metadata,l),u!==void 0)){if(u.shape){let e=d??u.shape;if(typeof e!=`string`)throw this.shapeError(`No such shape: ${JSON.stringify(e)}.`,c);if(e!==e.toLowerCase()||e.includes(`_`))throw this.shapeError(`No such shape: ${e}. Shape names should be lowercase.`,c);let t=u.shape;if(!se(t))throw this.shapeError(`No such shape: ${t}.`,c);h.type=t}u.label&&(h.text=String(u.label),h.labelType=Z(u.labelType))}}addSingleLink(e,t,n,r){let i={start:e,end:t,type:void 0,text:``,labelType:`text`,classes:[],isUserDefinedId:!1,interpolate:this.defaultInterpolate},a=n?.text;a!==void 0&&(i.text=Q(a.text.trim()),i.labelType=Z(a.type)),n!==void 0&&(i.type=n.type,i.stroke=n.stroke,i.length=n.length>10?10:n.length,n.edgeSemantic&&(i.edgeSemantic=n.edgeSemantic));let o=e+`\0`+t,s=this.pairCount.get(o)??0;r&&!this.edgeById.has(r)?(i.id=r,i.isUserDefinedId=!0):i.id=`L_${e}_${t}_${s===0?0:s+1}`;let c=this.options.maxEdges;if(c!==void 0&&this.edges.length>=c)throw new W(`Edge limit exceeded. The limit is ${c}.`,`limit`,{type:`agentflow`});this.edges.push(i),this.pairCount.set(o,s+1),this.edgeById.has(i.id)||this.edgeById.set(i.id,i)}addLink(e,t,n){let r=typeof n?.id==`string`?n.id.replace(`@`,``):void 0,i=e[e.length-1],a=t[0];for(let o of e)for(let e of t)this.addSingleLink(o,e,n,o===i&&e===a?r:void 0)}updateLinkInterpolate(e,t){for(let n of e)n==="default"?this.defaultInterpolate=t:this.edgeAt(n).interpolate=t}updateLink(e,t){for(let n of e){if(n==="default"){this.defaultEdgeStyle=t;continue}let e=this.edgeAt(n);e.style=t,t.length>0&&!t.some(e=>e?.startsWith(`fill`))&&t.push(`fill:none`)}}edgeAt(e){let t=this.edges[Number(e)];if(t===void 0)throw new W(`The index ${e} for linkStyle is out of bounds. Valid indices for linkStyle are between 0 and ${this.edges.length-1}. (Help: Ensure that the index is within the range of existing edges.)`,`semantic`,{type:`agentflow`});return t}addClass(e,t){let n=t.join().replace(/\\,/g,`§§§`).replace(/,/g,`;`).replace(/§§§/g,`,`).split(`;`);for(let t of e.split(`,`)){let e=this.classes.get(t);e===void 0&&(e={id:t,styles:[],textStyles:[]},this.classes.set(t,e));for(let t of n)t.includes(`color`)&&e.textStyles.push(t.replace(`fill`,`bgFill`)),e.styles.push(t)}}setDirection(e){let t=e.trim();t.includes(`<`)&&(t=`RL`),t.includes(`^`)&&(t=`BT`),t.includes(`>`)&&(t=`LR`),t.includes(`v`)&&(t=`TB`),t===`TD`&&(t=`TB`),this.direction=t}setClass(e,t){for(let n of e.split(`,`))this.nodes.get(n)?.classes.push(t),this.edgeById.get(n)?.classes.push(t),this.subgraphLookup.get(n)?.classes.push(t)}setTooltip(e,t){if(t!==void 0)for(let n of e.split(`,`))this.tooltips.set(n,t)}setLink(e,t,n){let r=t.trim();for(let t of e.split(`,`)){let e=this.nodes.get(t);e!==void 0&&(e.link=r?E(r):void 0,e.linkTarget=n)}this.setClass(e,`clickable`)}setClickEvent(e,t,n){this.setClass(e,`clickable`)}setAccTitle(e){this.accTitle=e.replace(/^\s+/g,``)}setAccDescription(e){this.accDescr=e.replace(/\n\s+/g,`
10
+ `)}addSubGraph(e,t,n,r){let i=e?.text?.trim(),a=n?.text||``;e!==void 0&&e===n&&/\s/.test(a)&&(i=void 0);let o=/* @__PURE__ */ new Set,s=[],c;for(let e of t)if(typeof e==`string`)e.trim()!==``&&!o.has(e)&&(o.add(e),s.push(e));else if(Array.isArray(e))for(let t of e)t.trim()!==``&&!o.has(t)&&(o.add(t),s.push(t));else c=e.value;c??=this.options.inheritDir?this.direction??this.options.direction:void 0,i??=`subGraph`+this.subCount,this.subCount++;let l=this.members,u=s.filter(e=>e!==i&&!this.globalNodes.has(e)&&!l.has(e));for(let e of u)l.add(e);let d=this.subgraphLookup.get(i);if(d){for(let e of u)d.nodes.push(e);return a.trim()&&(d.title=a.trim()),c&&(d.dir=c),i}let f={id:i,nodes:u,title:a.trim(),classes:[],dir:c,labelType:Z(n?.type),type:`flow`};return this.subgraphs.push(f),this.subgraphLookup.set(i,f),i}addGlobal(e){let t=!1,n=e=>{let n=e.trim();n!==``&&(this.globalNodes.add(n),this.members.delete(n)&&(t=!0))};for(let t of e)if(typeof t==`string`)n(t);else if(Array.isArray(t))for(let e of t)n(e);if(t)for(let e of this.subgraphs)e.nodes=e.nodes.filter(e=>!this.globalNodes.has(e))}addConnector(e,t){let n=e?.text?.trim();if(!n)return``;let r=t?.text?.trim()??``,i=this.connectors.get(n);if(i)r.length>0&&(i.text=r);else{let e={id:n,labelType:`text`,styles:[],classes:[],isConnector:!0,text:r.length>0?r:n};this.connectors.set(n,e),this.nodes.set(n,e)}return n}destructLink(e,t){let n=_e(e);return t&&(t.includes(`.`)?`dotted`:`normal`)!==n.stroke?{type:`INVALID`,stroke:`INVALID`}:{...n,edgeSemantic:ge(n.type,n.stroke)}}subgraph(e){return this.subgraphLookup.get(e)}vertexKind(e){if(X(e))return`tool`;let t=J(e.type);return t===`hexagon`||t===`hex`?`action`:t===`lean-right`||t===`lean_right`?`input`:t===`lin-doc`||t===`lined-document`?`refdoc`:t===`diamond`?`decision`:`task`}semanticModel(){let e=[],t=[];for(let[n,r]of this.nodes){if(this.subgraphLookup.has(n))continue;let i=ve(r.metadata);if(r.isConnector){let e={id:n};r.text!==void 0&&r.text!==n&&(e.title=r.text),i&&(e.metadata=i),t.push(e);continue}let a={id:n};r.text!==void 0&&(a.label=r.text);let o=J(r.type);o!==void 0&&(a.shape=o),a.vertexKind=this.vertexKind(r),i&&(a.metadata=i),e.push(a)}let n={vertices:e,edges:this.edges.map(e=>{let t={start:e.start,end:e.end};return e.id!==void 0&&(t.id=e.id),e.text.length>0&&(t.label=e.text),e.type!==void 0&&(t.type=e.type),e.stroke!==void 0&&(t.stroke=e.stroke),e.edgeSemantic!==void 0&&(t.edgeSemantic=e.edgeSemantic),e.length!==void 0&&(t.length=e.length),e.metadata&&Object.keys(e.metadata).length>0&&(t.metadata={...e.metadata}),t}),subGraphs:this.subgraphs.map(e=>{let t={id:e.id,nodes:[...e.nodes],type:e.type,title:e.title};e.dir!==void 0&&(t.direction=e.dir);let n=ve(e.metadata);return n&&(t.metadata=n),t}),connectors:t,diagnostics:this.diagnostics};return this.direction!==void 0&&(n.direction=this.direction),n}position(e){let t=e?.first_line??0,n=e?.first_column??0;return{startLine:t+this.lineOffset,startColumn:n,endLine:(e?.last_line??t)+this.lineOffset,endColumn:e?.last_column??n,startIndex:0,endIndex:0}}pushMapping(e,t,n){let r={id:e,type:t,position:n};return this.mappings.push(r),this.firstMapping.has(e)||this.firstMapping.set(e,r),r}addVertexMapping(e,t,n,r){if(!e)return;let i=this.pushMapping(e,`vertex`,this.position(r));n??this.bareMappings.add(i)}extendVertexMapping(e,t){if(!e||!t)return;let n=this.position(t);for(let t=this.mappings.length-1;t>=0;t--){let r=this.mappings[t];if(r.type!==`vertex`||r.id!==e)continue;this.bareMappings.delete(r)&&(r.type=`attachment`);let i=r.position;(n.endLine>i.endLine||n.endLine===i.endLine&&n.endColumn>i.endColumn)&&(i.endLine=n.endLine,i.endColumn=n.endColumn);return}this.pushMapping(e,`attachment`,n)}addEdgeMapping(e,t,n,r){let i=Array.isArray(t)?t.filter(e=>typeof e==`string`&&e!==``):[];this.pushMapping(i.length>0?i.join(`>`):`edge`,`edge`,this.position(r))}blockMapping(e,t,n,r){if(!e)return;let i=this.position(n),a=r?this.position(r):i;this.pushMapping(e,t,{startLine:i.startLine,startColumn:i.startColumn,endLine:a.endLine,endColumn:a.endColumn,startIndex:0,endIndex:0})}addSubgraphMapping(e,t,n,r){let i=typeof e==`string`?e:e?.text;this.blockMapping(i??``,`subgraph`,n,r)}addConnectorMapping(e,t,n,r){this.blockMapping(e?.text?.trim()??``,`connector`,n,r)}emit(e,t,n,r){let i=r?.nodeId??r?.edgeId,a={id:e,severity:t,message:n};r?.nodeId?a.nodeId=r.nodeId:r?.edgeId&&(a.edgeId=r.edgeId);let o=i?this.firstMapping.get(i):void 0;o&&(a.position=o.position);let s=i??``,c=this.reported.get(s);if(c===void 0)this.reported.set(s,[a]);else{for(let r of c)if(r.id===e&&r.severity===t&&r.message===n&&r.nodeId===a.nodeId&&r.edgeId===a.edgeId)return;c.push(a)}this.diagnostics.push(a),this.options.log?.(t,`agentflow[${e}]: ${n}`)}emitWarning(e,t,n){this.emit(e,`warning`,t,n)}emitError(e,t,n){this.emit(e,`error`,t,n)}},be=/* @__PURE__ */ `$end.INVALID.acc_title.acc_title_value.acc_descr.acc_descr_value.acc_descr_multiline_value.SHAPE_DATA.CALLBACKNAME.CALLBACKARGS.MD_STR.STR.STYLE.DEFAULT.LINKSTYLE.INTERPOLATE.CLASSDEF.CLASS.HREF.CLICK.GRAPH.flow.connector.global.end.LINK_TARGET.NODIR.DIR.direction_tb.direction_bt.direction_rl.direction_lr.direction_td.LINK_ID.NUM.BRKT.STYLE_SEPARATOR.COLON.AMP.SEMI.COMMA.MULT.LINK.START_LINK.EDGE_TEXT.-).TEXT.(-.STADIUMEND.STADIUMSTART.SUBROUTINEEND.SUBROUTINESTART.VERTEX_WITH_PROPS_START.TAGEND.CYLINDEREND.CYLINDERSTART.DOUBLECIRCLEEND.DOUBLECIRCLESTART.TRAPEND.INVTRAPEND.TRAPSTART.INVTRAPSTART.TAGSTART.UP.SEP.DOWN.COMMENT.NODE_STRING.MINUS.UNICODE_TEXT.PIPE.PE.PS.SQE.SQS.DIAMOND_STOP.DIAMOND_START.NEWLINE.SPACE.EOF`.split(`.`),xe=/* @__PURE__ */ new Uint8Array(128);for(let e of`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!"#$%&'*+.\`?\\_/`)xe[e.charCodeAt(0)]=1;var Se=/accTitle\s*:\s*/y,Ce=/accDescr\s*:\s*/y,we=/accDescr\s*\{\s*/y,Te=/call\s+/y,Ee=/click\s+/y,De=/(?:\r?\n)*\s*\n/y,Oe=/\s*(?:LR|RL|TB|BT|TD|BR)\b/y,ke=/\s*[<>^]/y,Ae=/\s*v\b/y,je=[/.*direction\s+TB[^\n]*/y,/.*direction\s+BT[^\n]*/y,/.*direction\s+RL[^\n]*/y,/.*direction\s+LR[^\n]*/y,/.*direction\s+TD[^\n]*/y],Me=/[\n\r\u2028\u2029]/g,Ne=/\(\s*\)/y,Pe=/\n\s*/g;function Fe(e){let t=e.length,n=[],r=[],i=[],a=[],o=[],s=0,c=0,l=1,u=0,d=!0,f=e.indexOf(`direction`),p=e.indexOf(`@`),m=-1,h=0,g=0,_=-1,v=-1,y=-1,ee=-1,b=-1,x=-1,S=-1,C=t=>{let n=-1;for(let r=c;r<t;r++){let i=e.charCodeAt(r);i===10?(l++,n=r):i===13&&(r+1<t&&e.charCodeAt(r+1)===10&&r++,l++,n=r)}if(n<0)u+=t-c;else{let r=n+1;for(;r<t;){let t=e.charCodeAt(r);if(t===8232||t===8233)break;r++}u=r-n-1}c=t},w=(t,o)=>{n.push(t),r.push(e.slice(c,o)),i.push(c),a.push(l,u),C(o),a.push(l,u)},T=(t,o)=>{n.push(t),r.push(e.slice(c,o)),i.push(c),a.push(l,u),u+=o-c,c=o,a.push(l,u)},E=(t,o)=>{n.push(t),r.push(e.slice(c,o)),i.push(c),a.push(l,u);for(let t=c;t<o;t++){let n=e.charCodeAt(t);n===10||n===13?(l++,u=0):u++}c=o,a.push(l,u)},te=(e,t,o)=>{n.push(e),r.push(t),i.push(c),a.push(l,u),C(o),a.push(l,u)},D=e=>{o.push(s),s=e},k=()=>{o.length>0&&(s=o.pop())},A=(t,n)=>(t.lastIndex=n,t.test(e)?t.lastIndex:-1),j=t=>e.startsWith(t,c)&&!U(e.charCodeAt(c+t.length)),M=n=>{if(n>=v&&n<=y)return y;let r=n;for(;r<t&&I(e.charCodeAt(r));)r++;return v=n,y=r,r},N=n=>{if(n>=ee&&n<=b)return b;let r=n;for(;r<t;){let t=e.charCodeAt(r);if(t!==32&&t!==9)break;r++}return ee=n,b=r,r},P=t=>{let n=M(t);if(n===S||e.charCodeAt(n)!==45||e.charCodeAt(n+1)!==45)return-1;let r=n+2;for(;e.charCodeAt(r)===45;)r++;let i=e.charCodeAt(r);return i===120||i===62?M(r+1):(S=n,-1)},F=()=>{let t=M(c);if(t===x||e.charCodeAt(t)!==45)return!1;let n=e.charCodeAt(t+1),r=t+2;if(n===45){for(;e.charCodeAt(r)===45;)r++;let n=e.charCodeAt(r);return n===120||n===62?w(42,M(r+1)):(D(10),w(43,M(t+2))),!0}if(n===46){for(;e.charCodeAt(r)===46;)r++;if(e.charCodeAt(r)===45)return w(42,M(r+1)),!0}return x=t,!1},L=n=>{if(e.charCodeAt(n)!==37||e.charCodeAt(n+1)!==37||e.charCodeAt(n+2)===123)return-1;let r=e.indexOf(`
11
+ `,n+2);return r===-1?t:r},R=()=>{e.charCodeAt(c+1)===96?(D(2),C(c+2)):(D(1),C(c+1))},z=t=>{let n=e.charCodeAt(c+1);return t===40?(n===45?(D(8),T(47,c+2)):n===91?(D(7),T(49,c+2)):n===40&&e.charCodeAt(c+2)===40?(D(7),T(57,c+3)):(D(7),T(72,c+1)),!0):t===91?(n===91?(D(7),T(51,c+2)):n===40?(D(7),T(55,c+2)):n===47?(D(9),T(60,c+2)):n===92?(D(9),T(61,c+2)):(D(7),T(74,c+1)),!0):t===124?(D(7),T(70,c+1),!0):t===123&&(D(7),T(76,c+1),!0)},B=()=>{let n=c;for(;n<t;){let r=e.charCodeAt(n);if(r<128&&xe[r]===1)n++;else if(r===45&&n+1<t){let t=e.charCodeAt(n+1);if(t===62||t===45||t===46)break;n++}else break}return n!==c&&(T(67,n),!0)},V=n=>{let r=n;for(;r<t;){let t=e.charCodeAt(r);if(t!==32&&t!==9)break;r++}return r},ne=n=>{let r;switch(n){case 97:if(e.startsWith(`acc`,c)){if((r=A(Se,c))>=0)return D(3),w(2,r),!0;if((r=A(Ce,c))>=0)return D(4),w(4,r),!0;if((r=A(we,c))>=0)return D(5),C(r),!0}if(j(`agentflow-beta`))return d&&(d=!1,D(6)),T(20,c+14),!0;break;case 64:if(e.charCodeAt(c+1)===123)return D(14),te(7,``,c+2),!0;break;case 99:if((r=A(Te,c))>=0)return D(12),C(r),!0;if(j(`classDef`))return T(16,c+8),!0;if(j(`class`))return T(17,c+5),!0;if((r=A(Ee,c))>=0)return D(11),C(r),!0;if(j(`connector`))return T(22,c+9),!0;break;case 34:return R(),!0;case 115:if(j(`style`))return T(12,c+5),!0;break;case 100:if(j(`default`))return T(13,c+7),!0;break;case 108:if(j(`linkStyle`))return T(14,c+9),!0;break;case 105:if(j(`interpolate`))return T(15,c+11),!0;break;case 104:if(e.startsWith(`href`,c)&&I(e.charCodeAt(c+4)))return w(18,c+5),!0;break;case 102:if(j(`flow`))return T(21,c+4),!0;break;case 103:if(j(`global`))return T(23,V(c+6)),!0;break;case 101:if(j(`end`))return T(24,V(c+3)),!0;break;case 95:if(j(`_self`))return T(25,c+5),!0;if(j(`_blank`))return T(25,c+6),!0;if(j(`_parent`))return T(25,c+7),!0;if(j(`_top`))return T(25,c+4),!0}if(f!==-1&&c>=h&&(f<c&&(f=e.indexOf(`direction`,c)),f!==-1&&(m<c&&(Me.lastIndex=c,m=Me.test(e)?Me.lastIndex-1:t),f<m))){for(let e=0;e<5;e++)if((r=A(je[e],c))>=0)return w(28+e,r),!0;h=m}if(p!==-1&&n!==34&&!I(n)){if(c>=g){p<c&&(p=e.indexOf(`@`,c));let n=c;for(;n<t;){let t=e.charCodeAt(n);if(t===34||I(t))break;n++}if(g=n,_=-1,p!==-1&&p<n)for(let r=Math.min(n,t-1)-1;r>=p;r--){if(e.charCodeAt(r)!==64)continue;let t=e.charCodeAt(r+1);if(t!==123&&t!==34){_=r;break}}}if(_>c)return T(33,_+1),!0}if(n>=48&&n<=57){let n=c+1;for(;n<t;){let t=e.charCodeAt(n);if(t<48||t>57)break;n++}return T(34,n),!0}switch(n){case 35:return T(35,c+1),!0;case 58:return e.charCodeAt(c+1)===58&&e.charCodeAt(c+2)===58?T(36,c+3):T(37,c+1),!0;case 38:return T(38,c+1),!0;case 59:return T(39,c+1),!0;case 44:return T(40,c+1),!0;case 42:return T(41,c+1),!0;case 60:return T(62,c+1),!0;case 45:return F()||B()||T(68,c+1),!0;case 40:return z(n);case 91:return e.charCodeAt(c+1)===124?(T(52,c+2),!0):z(n);case 124:case 123:return z(n);case 62:return D(7),T(53,c+1),!0;case 94:return T(63,c+1),!0;case 92:return e.charCodeAt(c+1)===124?(T(64,c+2),!0):B();case 118:return U(e.charCodeAt(c+1))?B():(T(65,c+1),!0);case 37:return(r=L(c))>=0?(w(66,r),!0):B()}if(I(n)){if(F())return!0;if((n===32||n===9)&&(r=L(N(c)))>=0)return w(66,r),!0;for(r=c;;){let t=e.charCodeAt(r);if(t===10)r++;else if(t===13&&e.charCodeAt(r+1)===10)r+=2;else break}return r>c?w(77,r):w(78,c+1),!0}return n<128?B():O(n)?(T(69,c+1),!0):!1};e:for(;;){if(c>=t){let e=-1;switch(s){case 0:e=79;break;case 3:e=3;break;case 4:e=5;break;case 5:e=6;break;case 11:e=19;break;case 12:e=8;break;case 13:e=9}e!==-1&&T(e,t);break}let o=e.charCodeAt(c),d=!0;switch(s){case 0:d=ne(o);break;case 1:if(o===34)e.charCodeAt(c+1)===96?(D(2),C(c+2)):(k(),C(c+1));else{let n=e.indexOf(`"`,c);w(11,n===-1?t:n)}break;case 2:if(o===96)e.charCodeAt(c+1)===34?(k(),C(c+2)):d=!1;else if(o===34)R();else{let n=c+1;for(;n<t;){let t=e.charCodeAt(n);if(t===96||t===34)break;n++}w(10,n)}break;case 3:case 4:{let n=e.indexOf(`
12
+ `,c);n===-1&&(n=t);let r=s===3?3:5;k(),w(r,n);break}case 5:if(o===125)k(),C(c+1);else{let n=e.indexOf(`}`,c);n===-1&&(n=t),w(6,n)}break;case 6:{let e;o===34?R():(e=A(De,c))>=0?(k(),w(26,e)):(e=A(Oe,c))>=0||(e=A(ke,c))>=0||(e=A(Ae,c))>=0?(k(),w(27,e)):d=z(o);break}case 7:{let n=e.charCodeAt(c+1);switch(o){case 34:R();break;case 40:case 91:case 123:z(o);break;case 93:k(),n===41?T(48,c+2):n===93?T(50,c+2):T(73,c+1);break;case 41:k(),n===93?T(54,c+2):n===41&&e.charCodeAt(c+2)===41?T(56,c+3):T(71,c+1);break;case 124:k(),T(70,c+1);break;case 125:k(),T(75,c+1);break;case 37:{let e=L(c);e>=0?C(e):d=!1;break}default:{let n=c+1;for(;n<t;){let t=e.charCodeAt(n);if(t===91||t===93||t===40||t===41||t===123||t===125||t===124||t===34||t===37)break;n++}w(46,n)}}break}case 8:{let n=e.charCodeAt(c+1),r;if(o===34)R();else if(o===37&&(r=L(c))>=0)C(r);else if((o===45||o===47||o===41)&&n===41)k(),T(45,c+2);else if(o===40||o===91||o===123)z(o);else if(o===41||o===93||o===125)d=!1;else{let n=c+1;for(;n<t;){let t=e.charCodeAt(n);if(t===34||t===40||t===41||t===91||t===93||t===123||t===125||(t===45||t===47)&&e.charCodeAt(n+1)===41||t===37&&e.charCodeAt(n+1)===37&&e.charCodeAt(n+2)!==123)break;n++}E(46,n)}break}case 9:{let n=e.charCodeAt(c+1);if(o===34){R();break}switch(o){case 40:n===45||n===91||n===40&&e.charCodeAt(c+2)===40?z(o):n===93?(k(),T(58,c+2)):z(o);break;case 91:case 123:z(o);break;case 92:n===93?(k(),T(58,c+2)):T(46,c+1);break;case 47:n===93?(k(),T(59,c+2)):T(46,c+1);break;case 93:case 41:n===93?(k(),T(58,c+2)):d=!1;break;case 125:d=!1;break;case 37:{let e=L(c);e>=0?C(e):d=!1;break}default:{if((o===63||o===61)&&n===93){k(),T(58,c+2);break}let r=c+1;for(;r<t;){let t=e.charCodeAt(r);if(t===92||t===91||t===93||t===40||t===41||t===123||t===125||t===47||t===37)break;r++}w(46,r)}}break}case 10:{if(o===34){R();break}let n=P(c);if(n>=0){k(),w(42,n);break}if(o===45&&e.charCodeAt(c+1)===45){d=!1;break}let r=c+1;for(;r<t;){let t=e.charCodeAt(r);if(t===34)break;if(t===45){if(e.charCodeAt(r+1)===45)break}else if(I(t)&&P(r)>=0)break;r++}E(44,r);break}case 11:if(o===34)R();else if(I(o))k(),C(c+1);else{let n=c+1;for(;n<t&&!I(e.charCodeAt(n));)n++;T(19,n)}break;case 12:if(o===40){let e=A(Ne,c);k(),e>=0?C(e):(D(13),C(c+1))}else{let n=e.indexOf(`(`,c);n===-1&&(n=t),w(8,n)}break;case 13:if(o===41)k(),C(c+1);else{let n=e.indexOf(`)`,c);n===-1&&(n=t),w(9,n)}break;case 14:if(o===34)D(15),T(7,c+1);else if(o===125)k(),C(c+1);else if(o===94)d=!1;else{let n=c+1;for(;n<t;){let t=e.charCodeAt(n);if(t===125||t===94||t===34)break;n++}w(7,n)}break;case 15:if(o===34)k(),T(7,c+1);else{let n=e.indexOf(`"`,c);n===-1&&(n=t),te(7,e.slice(c,n).replace(Pe,`<br/>`),n)}}if(!d)return n.push(1),r.push(``),i.push(c),a.push(l,u,l,u),{types:n,texts:r,starts:i,locs:a};continue e}return n.push(0),r.push(``),i.push(t),a.push(l,u,l,u),{types:n,texts:r,starts:i,locs:a}}var Ie=/* @__PURE__ */ new Uint8Array(80);for(let e of[34,67,65,68,13,40,37,38,35,41,69])Ie[e]=1;var Le=/* @__PURE__ */ new Uint8Array(80);for(let e of[34,69,67,27,65,68,40,37,38,35,41])Le[e]=1;var Re=/* @__PURE__ */ new Uint8Array(80);for(let e of[34,67,78,68,38,69,37,41,35,12,14,16,17,19,20,27,21,22,23,24,65,63,43])Re[e]=1;var ze=/* @__PURE__ */ new Uint8Array(80);for(let e of[34,67,37,78,35,12])ze[e]=1;var Be=/* @__PURE__ */ new Uint8Array(80);for(let e of[77,39,79,66])Be[e]=1;var Ve=`'UNICODE_TEXT', 'TEXT', 'TAGSTART'`,He=`'COMMENT', 'SEMI', 'NEWLINE', 'EOF'`,Ue=/* @__PURE__ */ new Uint8Array(80);for(let e of[66,77,78,79])Ue[e]=1;var We=[],Ge=/}[^\S\n]*\n/g;function Ke(e,t,n=!1){let r=!n&&e.includes(`}`)?e.replace(Ge,`}
13
+ `):e,{types:i,texts:a,starts:o,locs:s}=Fe(r),c=0,l,u=0,d=0,f=t=>{let n=i[c],a=o[c];if(n===79||n===0){let e=c;for(;e>0&&Ue[i[e-1]];)e--;a=r.slice(0,o[e]).trimEnd().length}let s=r===e?a:V([G(e,Ge,2)],a);throw n===1?N(`agentflow`,e,s,``,!0):N(`agentflow`,e,s,`Expecting ${t}, got '${be[n]}'`)},p=(e,t)=>({first_line:s[4*e],first_column:s[4*e+1],last_line:s[4*t+2],last_column:s[4*t+3]}),m=(e,t=``)=>(i[c]!==e&&f(`'${be[e]}'${t?`, `+t:``}`),a[c++]),h=()=>{Be[i[c]]===0&&f(He),c++},g=()=>{Ie[i[c]]===0&&f(`'NODE_STRING'`);let e=a[c++];for(;Ie[i[c]]===1;)e+=a[c++];return e},_=()=>{Le[i[c]]===0&&f(`'NODE_STRING'`);let e=a[c++];for(;Le[i[c]]===1;)e+=a[c++];return e},v=()=>{let e=i[c],t;if(e===11)t=`string`;else if(e===10)t=`markdown`;else if(e===46||e===62||e===53||e===69)t=`text`;else return f(`${Ve}, 'TAGEND', 'STR', 'MD_STR'`);let n=a[c++];for(;;){let e=i[c];if(e!==46&&e!==62&&e!==53&&e!==69)break;n+=a[c++]}return{text:n,type:t}},y=e=>{m(e,Ve)},ee=()=>{let e=i[c],t;if(e===11)t=`string`;else if(e===10)t=`markdown`;else if(e===44||e===69)t=`text`;else return f(`'EDGE_TEXT', 'STR', 'MD_STR'`);let n=a[c++];for(;i[c]===44||i[c]===69;)n+=a[c++];return{text:n,type:t}},b=()=>{let e=i[c],t;if(e===11)t=`text`;else if(e===10)t=`markdown`;else if(Re[e]===1)t=`text`;else return f(`'NODE_STRING', 'STR', 'MD_STR'`);let n=a[c++];for(;Re[i[c]]===1;)n+=a[c++];return{text:n,type:t}},x=()=>{u=c;let e=a[c++];for(;i[c]===7;)e+=a[c++];return d=c-1,e},S=(e,n,r,i)=>{let a=p(r,i);t.addVertex(e,void 0,void 0,void 0,void 0,void 0,void 0,n,a),t.extendVertexMapping(e,a)},C=(e,n)=>{n.data!==void 0&&t.addVertex(e,void 0,void 0,void 0,void 0,void 0,void 0,n.data,p(n.dataFrom,n.dataTo))},w=()=>{let e=c,n=g(),r,a,o;switch(i[c]){case 74:c++,r=v(),y(73),a=`square`;break;case 57:c++,r=v(),y(56),a=`doublecircle`;break;case 72:c++,i[c]===72?(c++,r=v(),y(71),m(71),a=`circle`):(r=v(),y(71),a=`round`);break;case 47:c++,r=v(),y(45),a=`ellipse`;break;case 49:c++,r=v(),y(48),a=`stadium`;break;case 51:c++,r=v(),y(50),a=`subroutine`;break;case 52:{c++;let e=m(67);m(37);let t=m(67);m(70),r=v(),y(73),a=`rect`,o={[e]:t};break}case 55:c++,r=v(),y(54),a=`cylinder`;break;case 76:c++,i[c]===76?(c++,r=v(),y(75),m(75),a=`hexagon`):(r=v(),y(75),a=`diamond`);break;case 53:c++,r=v(),y(73),a=`odd`;break;case 60:c++,r=v(),i[c]===59?(c++,a=`lean_right`):(y(58),a=`trapezoid`);break;case 61:c++,r=v(),i[c]===58?(c++,a=`lean_left`):(y(59),a=`inv_trapezoid`)}return o===void 0?a===void 0?t.addVertex(n):t.addVertex(n,r,a):t.addVertex(n,r,a,void 0,void 0,void 0,o),t.addVertexMapping(n,r,a,p(e,c-1)),n},T=()=>{let e=w();return i[c]===36&&(c++,t.setClass(e,g())),e},E=()=>{let e=[T()];for(l=void 0;;){let t=i[c]===7?x():void 0,n=u,r=d;if(i[c]!==78)return l=t,e;do c++;while(i[c]===78);if(i[c]!==38)return t!==void 0&&f(`'AMP'`),e;c++,i[c]!==78&&f(`'SPACE'`);do c++;while(i[c]===78);let a=T();t!==void 0&&S(e[e.length-1],t,n,r),e.push(a)}},te=()=>{let e;if(i[c]===33&&(e=a[c++]),i[c]===42){let n=t.destructLink(a[c++]);return e!==void 0&&(n.id=e),i[c]===70&&(c++,n.text=v(),y(70),i[c]===78&&c++),n}if(i[c]===43){let n=a[c++],r=ee(),i=m(42,`'EDGE_TEXT'`),o=t.destructLink(i,n);return o.text=r,e!==void 0&&(o.id=e),o}return f(`'LINK', 'START_LINK'`)},D=()=>{let e=c,n=E();l!==void 0&&S(n[n.length-1],l,u,d);let r=n;for(;;){let a=i[c];if(a!==42&&a!==43&&a!==33)return r;let o=te(),s=E();l!==void 0&&S(s[s.length-1],l,u,d),t.addLink(n,s,o),t.addEdgeMapping(n,s,o,p(e,c-1)),r=s.concat(r),n=s}},O=()=>{ze[i[c]]===0&&f(`'NODE_STRING', 'NUM', 'COLON', 'BRKT'`);let e=a[c++];for(;ze[i[c]]===1;)e+=a[c++];return e},k=()=>{let e=[O()];for(;i[c]===40;)c++,e.push(O());return e},A=()=>{c++,m(78);let e;if(i[c]===13)e=[a[c++]];else for(e=[m(34,`'DEFAULT'`)];i[c]===40;)c++,e.push(m(34));if(m(78),i[c]!==15){t.updateLink(e,k());return}c++,m(78);let n=_();if(i[c]===78){c++;let r=k();t.updateLinkInterpolate(e,n),t.updateLink(e,r)}else t.updateLinkInterpolate(e,n)},j=(e,n)=>{if(i[c]!==78){t.setLink(e,n);return}if(c++,i[c]===25){t.setLink(e,n,a[c++]);return}let r=m(11,`'LINK_TARGET'`);i[c]===78?(c++,t.setLink(e,n,m(25))):t.setLink(e,n),t.setTooltip(e,r)},M=()=>{let e=a[c++];switch(i[c]){case 8:{let n=a[c++],r=i[c]===9,o=r?a[c++]:void 0,s;i[c]===78&&(c++,s=m(11)),r?t.setClickEvent(e,n,o):t.setClickEvent(e,n),s!==void 0&&t.setTooltip(e,s);return}case 18:c++,j(e,m(11));return;case 11:j(e,a[c++]);return;default:{let n=_();if(i[c]===78){c++;let r=m(11);t.setClickEvent(e,n),t.setTooltip(e,r)}else t.setClickEvent(e,n)}}},P=e=>{m(78,He);let t=b(),n={text:``,type:`text`};i[c]===74&&(c++,n=v(),y(73));let r=i[c]===7?x():void 0;return Be[i[c]]===0&&f(`${He}, 'SHAPE_DATA'`),{global:!1,at:e,id:t,title:n,data:r,dataFrom:u,dataTo:d,list:[],collect:!1}},F=()=>{let e=i[c];switch(e){case 12:{c++,m(78);let e=g();return m(78),t.addVertex(e,void 0,void 0,k()),h(),We}case 14:return A(),h(),We;case 16:{c++,m(78);let e=g();return m(78),t.addClass(e,k()),h(),We}case 17:{c++,m(78);let e=g();return m(78),t.setClass(e,g()),h(),We}case 19:return M(),h(),We;case 22:{let e=P(c++),n=c++,r=t.addConnector(e.id,e.title);return C(r,e),t.addConnectorMapping(e.id,e.title,p(e.at,e.at),p(n,n)),r}case 28:case 29:case 30:case 31:case 32:return c++,{stmt:`dir`,value:qe[e-28]};case 2:{c++;let e=m(3).trim();return t.setAccTitle(e),e}case 4:{c++;let e=m(5).trim();return t.setAccDescription(e),e}case 6:{let e=a[c++].trim();return t.setAccDescription(e),e}default:{Ie[e]===0&&f(Je);let t=D();return h(),t}}},I=()=>{let e=[],n=[],r=!1;for(;;){let o=i[c];if(o===0)break;if(o===24){let i=e.pop();if(i===void 0)break;let a=c++;if(i.global){t.addGlobal(n),n=i.list,r=i.collect;continue}let o=t.addSubGraph(i.id,n,i.title,`flow`);C(o,i),t.addSubgraphMapping(i.id,i.title,p(i.at,i.at),p(a,a)),n=i.list,r=i.collect,r&&n.push(o)}else if(o===39||o===77||o===78||o===79)r&&n.push(a[c]),c++;else if(o===66)c++;else if(o===21||o===23){let t=c++,a;o===23||Be[i[c]]===1?(a={global:o===23,at:t,id:void 0,title:void 0,data:void 0,dataFrom:0,dataTo:0,list:n,collect:r},h()):(a=P(t),a.list=n,a.collect=r,c++),e.push(a),n=[],r=!0}else{let e=F();r&&(!Array.isArray(e)||e.length>0)&&n.push(e)}}e.length>0&&f(`'end'`)};for(;i[c]===78||i[c]===77||i[c]===66;)c++;if(m(20,`'SPACE', 'NEWLINE', 'COMMENT'`),i[c]===26)c++,t.setDirection(`TB`);else{let e=m(27,`'NODIR'`),n=i[c];if(n===78){do c++;while(i[c]===78);n=i[c],n!==77&&f(`'NEWLINE', 'SPACE'`)}else n!==39&&n!==77&&n!==66&&f(`'COMMENT', 'SEMI', 'NEWLINE', 'SPACE'`);c++,t.setDirection(e)}I(),i[c]!==0&&f(Je)}var qe=[`TB`,`BT`,`RL`,`LR`,`TD`],Je=`'COMMENT', 'SEMI', 'NEWLINE', 'SPACE', 'EOF', 'flow', 'global', 'connector', 'acc_title', 'acc_descr', 'acc_descr_multiline_value', 'STYLE', 'LINKSTYLE', 'CLASSDEF', 'CLASS', 'CLICK', 'NODE_STRING'`,$=/* @__PURE__ */ new Map([[`tool`,0],[`task`,1],[`decision`,2],[`input`,3],[`refdoc`,4],[`connector`,5],[`action`,6]]),Ye=$.size,Xe=e=>Math.max(1,e-Ye),Ze=(e,t)=>{let n=Ye+e%Xe(t);return t>0?n%t:n};function Qe(e,t,n,r){let i=n.size;for(let a of e){if(a.isGroup||a.shape===`collapsedGroup`){a.colorIndex=Ze(n.get(a.id)??i++,r);continue}let e=t(a.id);e&&$.has(e)&&(a.kind=e)}}function $e(e,t,n){let r=[],i=[],a=e.subgraphs,o=t=>{let n=[];for(let r of t){let t=e.classes.get(r);t?.styles&&(n=[...n,...t.styles].map(e=>e.trim())),t?.textStyles&&(n=[...n,...t.textStyles].map(e=>e.trim()))}return n},s=/* @__PURE__ */ new Set,c=/* @__PURE__ */ new Map,l=/* @__PURE__ */ new Set;for(let t of a){if(t.metadata?.view!==`collapsed`||s.has(t.id))continue;let n=[t.id];for(;n.length>0;){let r=e.subgraph(n.pop())?.nodes;if(r!==void 0)for(let e of r)e===t.id||s.has(e)||(s.add(e),c.set(e,t.id),l.has(e)||n.push(e))}l.add(t.id)}let u=/* @__PURE__ */ new Map;for(let e of s){let t=[e],n=c.get(e);for(;;){let e=u.get(n),r=e??c.get(n);if(r===void 0||(e===void 0&&t.push(n),n=r,e!==void 0))break}for(let e of t)u.set(e,n)}let d=/* @__PURE__ */ new Map;a.forEach((e,t)=>d.set(e.id,t));let f=/* @__PURE__ */ new Map,p=(e,t,n)=>{let r=d.get(e);if(r===void 0||r<n)return!1;let i=t;for(let t=0;i!==void 0&&t<=a.length;t++){if(i===e)return!0;i=f.get(i)}return!1};for(let t=a.length-1;t>=0;t--){let n=a[t];if(!s.has(n.id))for(let r of n.nodes)p(r,n.id,t)?e.emitWarning(`CONTAINMENT_VIOLATION`,`Container "${n.id}" cannot contain "${r}" because "${r}" already contains it. The nesting that would close the loop is dropped.`,{nodeId:r}):f.set(r,n.id)}let m=/* @__PURE__ */ new Map;for(let e=a.length-1;e>=0;e--){let t=a[e];if(s.has(t.id))continue;let n=t.metadata?.view===`collapsed`,i={id:t.id,label:t.title,labelType:t.labelType,parentId:f.get(t.id),cssStyles:[],cssCompiledStyles:o(t.classes),cssClasses:t.classes.join(` `),shape:n?`collapsedGroup`:`flowGroup`,dir:t.dir,isGroup:!n,metadata:n?{...t.metadata,containerType:t.type}:t.metadata};r.push(i),m.set(t.id,i)}for(let t of e.nodes.values()){if(s.has(t.id))continue;let n=m.get(t.id);if(n){n.cssStyles=t.styles,n.cssCompiledStyles=o(t.classes),n.cssClasses=t.classes.join(` `);continue}let i=J(t.type),a={id:t.id,label:t.text,labelType:t.labelType,parentId:f.get(t.id),cssStyles:t.styles,cssCompiledStyles:o([`default`,`node`,...t.classes]),cssClasses:`default `+t.classes.join(` `),dir:t.dir,link:t.link,linkTarget:t.linkTarget,tooltip:e.tooltips.get(t.id),metadata:t.metadata,isGroup:!1,shape:i===`square`||i===void 0?`squareRect`:i};r.push(a),m.set(t.id,a)}e.edges.forEach((t,r)=>{let a=u.get(t.start)??t.start,s=u.get(t.end)??t.end;if(a===s&&t.start!==t.end)return;let c=[...e.defaultEdgeStyle??[]];t.style&&c.push(...t.style);let l=t.type===`arrow_open`?`none`:t.type===`arrow_cross`||t.type===`arrow_point`?t.type:`arrow_point`;i.push({id:t.id||`L_${a}_${s}_${r}`,isUserDefinedId:t.isUserDefinedId,start:a,end:s,type:t.type??`normal`,label:t.text,labelType:t.labelType,thickness:t.stroke,pattern:t.stroke,minlen:t.length,classes:`edge-thickness-normal edge-pattern-solid flowchart-link`,arrowTypeStart:`none`,arrowTypeEnd:l,cssCompiledStyles:o(t.classes),style:c,animate:t.animate,animation:t.animation,curve:t.interpolate||e.defaultInterpolate||n,metadata:t.metadata})}),Y(r,e);let h=/* @__PURE__ */ new Map;for(let e of a){let t=f.get(e.id);if(t===void 0)continue;let n=h.get(t);n?n.push(e.id):h.set(t,[e.id])}let g=/* @__PURE__ */ new Map;for(let e of a){if(f.get(e.id)!==void 0)continue;let t=[e.id];for(;t.length>0;){let e=t.pop();if(g.has(e))continue;g.set(e,g.size);let n=h.get(e);if(n)for(let e=n.length-1;e>=0;e--)t.push(n[e])}}return Qe(r,t=>{if(e.connectors.has(t))return`connector`;let n=e.nodes.get(t);return n?e.vertexKind(n):void 0},g,t),{nodes:r,edges:i}}var et=8,tt=40,nt=16,rt=48,it=20,at=26,ot=14,st=`collapsed`,ct={TB:2,RL:3,BT:0,LR:1},lt=/* @__PURE__ */ new WeakMap;function ut(e,t){let n=lt.get(e);if(n===void 0){let r=t.flowchart?.curve;n=$e(e,et,typeof r==`string`?r:void 0),lt.set(e,n)}return n}function dt(e,t,n){let r=e.agentflow?.[t];return typeof r==`number`&&r>0?Math.min(r,2e3):n}function ft(t,n,r){let i=e(t);return` fill="${i}"${o(r.shape)?``:` fill-opacity="${n}"`} stroke="${i}"`}function pt(e,t,n){return s(e.direction)?c(n,r=>mt(e,t,n,r)):mt(e,t,n,!1)}function mt(o,s,c,E){let D=ut(o,s),O=c.fontSize??16,N=Math.round(O*.875),I=c.measurer??ie(c.fontFamily,c.fontFamilyMono),L=dt(s,`wrappingWidth`,120),V=dt(s,`minNodeWidth`,120),H=c.padding??8,U=c.icons,W=/* @__PURE__ */ new Map,G=[],K=[];D.nodes.forEach((e,t)=>W.set(e.id,t));for(let e of D.nodes){let t=e.cssStyles.length>0?e.cssCompiledStyles.concat(e.cssStyles):e.cssCompiledStyles,r=i(t),a=+!!r.bold|(r.italic?2:0),o=e.labelType===`markdown`,s=r.fontSize??O,c,l;if(e.isGroup){let t=n(e.label,o,I,s,4e3,a);c={node:e,style:r,label:t,shape:`group`,w:0,h:0,dy:0,loops:0},l=_(0,0),l.isGroup=!0,l.dir=e.dir?v(e.dir):void 0,l.padX=it,l.padTop=t.height>0?t.height+16:it,l.padBottom=it,l.minW=t.width+2*it-12}else if(e.shape===`collapsedGroup`){let t=n(e.label,o,I,s,L,a),i=Math.max(t.width,V)+36,u=t.height+24+ot;c={node:e,style:r,label:t,shape:st,w:i,h:u,dy:-ot/2,loops:0},l=_(i,u)}else{let t=te(e.shape),i=n(e.label,o,I,s,L,a),u=A(t,t===`diam`?i.width:Math.max(i.width,V),i.height);c={node:e,style:r,label:i,shape:t,w:u.w,h:u.h,dy:u.dy,loops:0},l=_(u.w,u.h)}l.seq=G.length,G.push(c),K.push(l)}D.nodes.forEach((e,t)=>{K[t].parent=e.parentId===void 0?-1:W.get(e.parentId)??-1}),y(K,D.edges.map(e=>[W.get(e.start)??-1,W.get(e.end)??-1]));let ae=E?`TB`:v(o.direction),oe=e=>{let t;for(let n=K[e].parent,r=0;n>=0&&t===void 0&&r<1e4;n=K[n].parent,r++)t=K[n].dir;return t??ae},q=e=>{let t=oe(e);return t===`LR`||t===`RL`},J=new Int32Array(K.length).fill(-1);for(let e=0;e<K.length;e++){let t=[],n=e;for(;n>=0&&J[n]<0&&t.length<=K.length;)t.push(n),n=K[n].parent;let r=n>=0?J[n]+1:0;for(let e=t.length-1;e>=0;e--)J[t[e]]=r++}let se=(e,t)=>{let n=t;for(let r=J[t];r>J[e];r--)n=K[n].parent;return n===e&&t!==e},Y=[],ce=[],le=[],X=[];for(let e of D.edges){let t=W.get(e.start),r=W.get(e.end);if(t===void 0||r===void 0)continue;let i=n(e.label,e.labelType===`markdown`,I,N,L);se(t,r)||se(r,t)?X.push({edge:e,label:i,src:t,dst:r}):(t===r&&(G[t].loops++,q(t)?K[t].h+=2*(at+(i.height>0?i.height+8:0)):K[t].w+=2*(at+(i.width>0?i.width+12:0))),le.push(e),ce.push(i),Y.push({src:t,dst:r,minlen:e.minlen??1,labelW:i.width>0?i.width+12:0,labelH:i.height>0?i.height+4:0,route:[],labelX:0,labelY:0}))}let Z=ee(K,Y,ae,{nodeSep:dt(s,`nodeSpacing`,tt),edgeSep:nt,rankSep:dt(s,`rankSpacing`,rt),portSep:20}),Q=n(o.title,!1,I,O,4e3,1),ue=Q.height>0?Q.height+12:0,de=Math.max(Z.width,Q.width),fe=H+(de-Z.width)/2,pe=H+ue;b(K,Y,fe,pe);let me=Math.ceil(de+2*H),he=Math.ceil(Z.height+ue+2*H),ge=[],_e=[],ve=[],ye=[],be=X.length*K.length<2e6;for(let{edge:e,src:t,dst:n}of X){let r=se(n,t),i=r?n:t,a=r?t:n,o=K[i],s=K[a],c=ct[o.dir??oe(i)],l=r?c:c+2&3,u=e=>{let t=!(e&1),n=e===0||e===3?-1:1,i=t?s.x:s.x+n*s.w/2,a=t?s.y+n*s.h/2:s.y,c=t?s.x:o.x+n*o.w/2,l=t?o.y+n*o.h/2:s.y,u=+!t;return r?[i,a,u,c,l,u]:[c,l,u,i,a,u]},f=e=>{for(let t=0;t<K.length;t++){let n=K[t];if(t!==a&&!n.isGroup&&n.x+n.w/2>Math.min(e[0],e[3])-1&&n.x-n.w/2<Math.max(e[0],e[3])+1&&n.y+n.h/2>Math.min(e[1],e[4])-1&&n.y-n.h/2<Math.max(e[1],e[4])+1)return!0}return!1},p=u(l);if(be&&f(p))for(let e of[l+1&3,l+3&3,l+2&3]){let t=u(e);if(!f(t)){p=t;break}}ye.push(p),ve.push((p[0]+p[3])/2,(p[1]+p[4])/2);let m=p.slice();k(m,r?0:3,G[a],s),_e.push(d(m,`linear`,0,h(e.arrowTypeEnd)))}let xe=/* @__PURE__ */ new Map,Se=!1;for(let e of K)e.isGroup&&(Se=!0);if(Se){for(let e of Y)S(xe,e.route);for(let e of ye)S(xe,e)}let Ce=``,we=``,Te=[];for(let t=0;t<G.length;t++){let n=G[t],i=K[t],o=n.node,s=i.x,l=i.y,u=r(o.cssClasses.replace(/^default\s?/,``)),d=z(o.id);if(i.isGroup){ne(n.style.shape)&&Te.push({box:[s-i.w/2,l-i.h/2,s+i.w/2,l+i.h/2],shape:n.style.shape});let e=x(i,n.label.width,xe,it);Ce+=`<g class="pele-cluster pele-flow${u}" data-id="${d}"><rect x="${F(s-i.w/2)}" y="${F(l-i.h/2)}" width="${F(i.w)}" height="${F(i.h)}"${a(ft(o.colorIndex??$.size,`0.06`,n.style)+n.style.shape)}/>`+B(n.label,e,l-i.h/2+8+n.label.height/2,` class="pele-cluster-label"${re(n.style,`var(--_m)`)}${n.style.text}`,U)+`</g>`;continue}let f=n.w,p=n.h,m=``,h;if(n.shape===st){let t=e(o.colorIndex??$.size),r=p/2-ot-2,i=r+(ot+2)/2;h=`<rect x="${F(-f/2)}" y="${F(-p/2)}" width="${F(f)}" height="${F(p)}"${a(ft(o.colorIndex??$.size,`0.06`,n.style)+n.style.shape)}/><path d="M${F(-f/2+10)},${F(r)}H${F(f/2-10)}" fill="none" stroke="${t}" stroke-dasharray="3 3"${n.style.line}/><path class="pele-collapsed-mark" d="${ht(-9,i)}${ht(0,i)}${ht(9,i)}" fill="${t}" stroke="none"/>`}else{let t=$.get(o.kind??`task`)??1;m=` pele-kind-${o.kind??`task`}`,h=j(n.shape,f,p,ft(t,`0.14`,n.style)+n.style.shape,` stroke="${e(t)}"`+n.style.line)}let g=n.shape===st||M(n.shape)?re(n.style):``,_=B(n.label,0,n.dy,` class="pele-label"${g}${n.style.text}`,U);if(/ internal-link(?: |$)/.test(u+` `)&&o.label&&c.links!==!1){let e=P(o.label),t=T(e,c),n=R(e);_=`<a class="internal-link"${t?` href="${n}"${w(c)}`:``} data-href="${n}">${_}</a>`,ge.push({id:o.id,href:e,internal:!0})}let v=h+_;o.tooltip&&(v=`<title>${z(o.tooltip)}</title>`+v),o.link&&(v=C(v,o.link,o.id,ge,c,o.linkTarget?` target="${R(o.linkTarget)}"`:``)),we+=`<g class="pele-node pele-shape-${n.shape}${m}${u}" data-id="${d}" transform="translate(${F(s)},${F(l)})">${v}</g>`}let Ee=``,De=``,Oe=``,ke=(e,t,n,a,o)=>{let s=e.style.length>0||e.cssCompiledStyles.length>0?i(e.cssCompiledStyles.concat(e.style)):void 0,c=e.arrowTypeEnd,u=m(n.d,[n.ex,n.ey],Te,s?.line,n.tokens),d=u||(s?.stroke?R(s.stroke):`var(--_l)`),f=e.thickness===`dotted`?`reference`:c===`arrow_cross`?`failure`:`sequence`,h=r(e.classes.replace(/edge-thickness-normal|edge-pattern-solid|flowchart-link/g,``));u===``&&(Ee+=l(n,`none`,c,s?.line)),De+=`<g class="pele-edge pele-edge-${f}${h}" data-id="${z(e.id)}"${u?` stroke="${u}"`:``}${s?.line??``}><path d="${n.d}"${e.thickness===`dotted`?` stroke-dasharray="3 4"`:``}/>`+g(c,n.ex,n.ey,n.edx,n.edy,d)+`</g>`,t.width>0&&(Oe+=p(e.id,t,a,o,s?.text??``,U))},Ae=/* @__PURE__ */ new Map;for(let e=0;e<Y.length;e++){let t=Y[e],n=le[e],r=ce[e],i=n.arrowTypeEnd,a;if(t.src===t.dst){let e=G[t.src],n=Ae.get(t.src)??0;Ae.set(t.src,n+1),a=f(K[t.src],e.w,e.h,n,q(t.src),at,h(i),t)}else{let e=t.route.slice();k(e,0,G[t.src],K[t.src]),k(e,e.length-3,G[t.dst],K[t.dst]),a=d(e,n.curve,0,h(i))}ke(n,r,a,t.labelX,t.labelY)}return X.forEach((e,t)=>ke(e.edge,e.label,_e[t],ve[2*t],ve[2*t+1])),{svg:t(`agentflow`,me,he,O,c,o,B(Q,me/2,H+Q.height/2,` class="pele-title" font-weight="var(--_tw)"`)+(Ce?`<g class="pele-clusters">${Ce}</g>`:``)+u(Ee)+(De?`<g class="pele-edges" fill="none" stroke="var(--_l)" stroke-linecap="round">${De}</g>`:``)+(Oe?`<g class="pele-edge-labels" font-size="${N}">${Oe}</g>`:``)+`<g class="pele-nodes">${we}</g>`),width:me,height:he,links:ge}}function ht(e,t){return`M${F(e-1.75)},${F(t)}a1.75,1.75 0 1 0 3.5,0a1.75,1.75 0 1 0 -3.5,0Z`}var gt={type:`agentflow`,keepComments:!0,parse(e,t,n,r,i){let a=new ye({inheritDir:(t.flowchart??{}).inheritDir===!0,direction:typeof t.direction==`string`?t.direction:void 0,lineOffset:r,source:e,maxEdges:i.maxEdges});return n&&(a.title=n),Ke(e,a),ut(a,t),a},render:pt};export{gt as agentflow};
@@ -0,0 +1,2 @@
1
+ import{d as e,i as t}from"./BGW36YJW-CJMhya8S.js";import{r as n,t as r}from"./DKTLEL5E-DciMwFJ1.js";import{t as i}from"./5THPTBWS-Ce_hS451.js";import{_ as a,a as o,c as s,d as c,f as l,g as u,i as d,l as f,m as p,n as m,o as h,p as g,r as _,s as v,t as y,u as b}from"./EXE5EH6O-DR1IHCTr.js";import{t as x}from"./75JW6PN6-BFpDBuGN.js";import{D as S,E as C,d as w,h as T,s as E,u as D}from"./lazy-f3CuUNJZ.js";var O=1e4;function k(e,t,n,r,i){let a=e.packet?.[t];return typeof a==`number`&&a>=r?Math.min(a,i):n}function A(e){return new D(e,`semantic`,{type:`packet`})}function j(e,t,n){let r=Math.floor(k(t,`bitsPerRow`,32,1,4096)),i=[],a=-1,o=[],s=1;for(let t of e.blocks){let{start:e,end:n,bits:c}=t;if(e!==void 0&&n!==void 0&&n<e)throw A(`Packet block ${e} - ${n} is invalid. End must be greater than start.`);if(e??=a+1,e!==a+1)throw A(`Packet block ${e} - ${n??e} is not contiguous. It should start from ${a+1}.`);if(c===0)throw A(`Packet block ${e} is invalid. Cannot have a zero bit field.`);for(n??=e+(c??1)-1,c??=n-e+1,a=n;o.length<=r+1&&i.length<O;){let a=s*r-1;if(n<=a){o.push({start:e,end:n,bits:c,label:t.label}),n===a&&(i.push(o),o=[],s++);break}o.push({start:e,end:a,bits:a-e,label:t.label}),i.push(o),o=[],s++,e=a+1,c=n-e}}return o.length>0&&i.push(o),{type:`packet`,title:e.title||n,accTitle:e.accTitle?e.accTitle.replace(/^\s+/g,``):void 0,accDescr:e.accDescr?e.accDescr.replace(/\n\s+/g,`
2
+ `):void 0,bitsPerRow:r,rows:i}}var M=[{name:`packet-beta`,pattern:`packet-beta`},g(`packet`),{name:`-`,pattern:`-`,longer:[s]},{name:`+`,pattern:`+`},{name:`:`,pattern:`:`},v,y,h,{name:`INT`,pattern:/0|[1-9][0-9]*(?!\.)/y},c,l,d,s,f,o];function N(e){let t=new u(_(e,M,`packet`),M,`packet`),n={$type:`Packet`,blocks:[]},r=()=>{if(t.kind!==-1)for(t.kind!==10&&t.fail(`a line break or the end of input`);t.kind===10;)t.i++};for(;t.kind===10;)t.i++;for(t.accept(0)||t.expect(1);t.kind!==-1;)switch(t.kind){case 10:t.i++;break;case 5:n.accDescr=b(t.take()),r();break;case 6:n.accTitle=m(t.take()),r();break;case 7:n.title=a(t.take()),r();break;case 8:case 3:{let e={$type:`PacketBlock`,label:``};t.accept(3)?e.bits=Number(t.expect(8)):(e.start=Number(t.take()),t.accept(2)&&(e.end=Number(t.expect(8)))),t.expect(4),e.label=p(t.expect(9)),n.blocks.push(e),r();break}default:t.fail(`a field, a title, or a line break`)}return n}function P(e,t,n){return r(n,r=>F(e,t,n,r))}function F(r,a,o,s){let c=o.fontSize??16,l=Math.round(c*.875),u=Math.round(c*.625),d=o.measurer??E(o.fontFamily,o.fontFamilyMono),f=o.padding??8,p=a.packet??{},m=k(a,`rowHeight`,32,1,400),h=k(a,`bitWidth`,32,1,400),g=k(a,`paddingX`,5,0,400),_=k(a,`paddingY`,5,0,400),v=p.showBits!==!1,y=p.bitOrder===`descending`,b=r.bitsPerRow,D=r.rows;if(s){let e=Math.max(1,Math.floor(((o.maxWidth??320)-2*f)/Math.min(h,18)));b=Math.min(b,Math.max(8,2**Math.floor(Math.log2(e))));let t=r.rows[r.rows.length-1],n=t?.[t.length-1]?.end??0;Math.ceil((n+1)/b)>1e4&&(b=r.bitsPerRow),h=Math.min(h,Math.max(18,((o.maxWidth??320)-2*f)/b));let i=e=>e.bits===e.end-e.start,a=[];for(let e of r.rows)for(let t of e){let e=a[a.length-1];e&&i(e)&&i(t)&&e.label===t.label&&t.start===e.end+1&&t.start%r.bitsPerRow===0?(e.end=t.end,e.bits=e.end-e.start):a.push({...t})}D=[];for(let e of a)for(let t=e.start;t<=e.end;){let n=Math.min(e.end,(Math.floor(t/b)+1)*b-1),r=Math.floor(t/b);(D[r]??(D[r]=[])).push({...e,start:t,end:n}),t=n+1}}let O=/* @__PURE__ */ new Map;if(s)for(let e of D)for(let t of e){let e=Math.max(1,(t.end-t.start+1)*h-Math.min(g,h-1)-6),n=x(S(t.label).trim(),d,l,e);O.set(t,n)}let A=v?u+4:0,j=D.map(e=>{let t=m;if(s)for(let n of e)t=Math.max(t,O.get(n).height+10);return t}),M=[],N=0;for(let e of j)M.push(N),N+=A+e+_;D.length&&(N-=_);let P=Math.min(g,h-1),F=D.length>0?b*h-P:0,I=t(r.title,!1,d,c,s?n(o):4e3,1),L=I.height>0?I.height+(N>0?12:0):0,R=/* @__PURE__ */ new Map,z=(e,t)=>{let n=R.get(e);return n||R.set(e,n=/* @__PURE__ */ new Map),n.has(t)||n.set(t,i(S(e).trim(),t,l,Math.round(c*.5),d)),n.get(t)},B=f+Math.max(0,(I.width-F)/2),V=``,H=``;D.forEach((e,t)=>{let n=f+M[t]+A,r=j[t];for(let t of e){let e=t.end-t.start+1,i=t.start%b,a=B+(y?b-i-e:i)*h,o=e*h-P,c=s?void 0:z(t.label,o-6);if(V+=`<g class="pele-node" data-id="${t.start}-${t.end}"><rect x="${C(a)}" y="${C(n)}" width="${C(o)}" height="${C(r)}" fill="var(--_s)" stroke="var(--_b)" style="rx:var(--_r)"/>`+(s?T(O.get(t),a+o/2,n+r/2,``):c&&c.size<=r?`<text x="${C(a+o/2)}" y="${C(n+r/2+c.size*.35)}"${c.size===l?``:` font-size="${C(c.size)}"`}>${w(c.text)}</text>`:``)+`</g>`,!v)continue;let u=y?t.end:t.start,d=y?t.start:t.end;H+=e===1?`<text x="${C(a+o/2)}" y="${C(n-4)}" text-anchor="middle">${u}</text>`:`<text x="${C(a)}" y="${C(n-4)}">${u}</text><text x="${C(a+o)}" y="${C(n-4)}" text-anchor="end">${d}</text>`}});let U=Math.ceil(Math.max(F,I.width)+2*f),W=Math.ceil(N+L+2*f),G=(V?`<g class="pele-packet-fields" font-size="${l}" text-anchor="middle">${V}</g>`:``)+(H?`<g class="pele-packet-bits" font-size="${u}" fill="var(--_m)">${H}</g>`:``)+T(I,U/2,W-f-I.height/2,` class="pele-title" font-weight="var(--_tw)"`);return{svg:e(`packet`,U,W,c,o,r,G),width:U,height:W,links:[]}}var I={type:`packet`,parse:(e,t,n)=>j(N(e),t,n),render:P};export{I as packet};
@@ -0,0 +1,2 @@
1
+ import{d as e,i as t}from"./BGW36YJW-CJMhya8S.js";import{_ as n,a as r,c as i,f as a,g as o,i as s,l as c,n as l,o as u,p as d,r as f,s as p,t as m,u as h}from"./EXE5EH6O-DR1IHCTr.js";import{h as g,s as _}from"./lazy-f3CuUNJZ.js";function v(e,t){return{type:`info`,title:e.title||t,accTitle:e.accTitle?e.accTitle.replace(/^\s+/g,``):void 0,accDescr:e.accDescr?e.accDescr.replace(/\n\s+/g,`
2
+ `):void 0}}var y=[d(`showInfo`),d(`info`),p,m,u,a,s,i,c,r];function b(e){let t=new o(f(e,y,`info`),y,`info`),r={$type:`Info`};for(;t.kind===5;)t.i++;for(t.expect(1);t.kind===5;)t.i++;if(t.accept(0))for(;t.kind===5;)t.i++;for(;t.kind!==-1;){let e=t.kind;if(e===2?r.accDescr=h(t.take()):e===3?r.accTitle=l(t.take()):e===4?r.title=n(t.take()):t.fail(`a title or the end of input`),t.kind===-1)break;for(t.kind!==5&&t.fail(`a line break or the end of input`);t.kind===5;)t.i++}return r}var x=`1.13.0`;function S(n,r,i){let a=i.fontSize??16,o=i.measurer??_(i.fontFamily,i.fontFamilyMono),s=i.padding??8,c=t(n.title,!1,o,a,4e3,1),l=c.height>0?c.height+8:0,u=t(`Pele v${x}`,!1,o,a,4e3),d=Math.ceil(Math.max(c.width,u.width)+2*s),f=Math.ceil(l+u.height+2*s),p=g(c,d/2,s+c.height/2,` class="pele-title" font-weight="var(--_tw)"`)+g(u,d/2,s+l+u.height/2,` class="pele-version" fill="var(--_m)"`);return{svg:e(`info`,d,f,a,i,n,p),width:d,height:f,links:[]}}var C={type:`info`,parse:(e,t,n)=>v(b(e),n),render:S};export{C as info};
@@ -0,0 +1 @@
1
+ import{J as e}from"./ui-CFB4wQfF.js";import{I as t,a as n,c as r,l as i,r as a,s as o}from"./toast-Cuu2K0hx.js";import{a as s,p as c,s as l,t as u,u as d}from"./pane-layout-0RrLHGDr.js";var f=()=>{try{return globalThis.localStorage}catch{return}},[p,m]=e(s(f())??c()),h=p;function g(e){let t=p(),n=e(t);return n===t||(m(n),d(f(),n))}var _=`Up to ${u} panes side by side. Close one to open another.`;function v(e){if(n(e))return o(`/concierge`);let{layout:t,outcome:r}=l(h(),{sessionID:e},{beside:!0});if(r===`limit`)return a(_,`warn`);r!==`invalid`&&g(()=>t),o(i(e))}function y(e){if(e.sessionID!==void 0&&n(e.sessionID))return!1;let{layout:t,outcome:i}=l(h(),e,{beside:!0});if(i===`limit`)return a(_,`warn`),!1;if(i===`invalid`)return!1;g(()=>t);let s=r();return s.name!==`session`&&s.name!==`panes`&&o(`/panes`),!0}var b=e=>y({artifactID:e}),x=(e,t)=>y({sessionID:e,sideChatID:t}),S={artifactsPerUser:5e3,revisionsPerArtifact:500,blobBytes:26214400,userBlobBytes:2147483648,bundleFiles:200,chunkBytes:1048576,aiJobsPerUser:8,aiJobsPerArtifact:2,aiInstructionChars:8e3},C=[`markdown`,`code`,`image`,`table`,`chart`,`dashboard`,`html`,`app`,`file`],w=[`html`,`app`],T=[`text/markdown`,`text/plain`,`text/csv`,`text/html`,`text/css`,`text/javascript`,`application/json`,`application/pdf`,`image/png`,`image/jpeg`,`image/gif`,`image/webp`,`image/svg+xml`],E=e=>typeof e==`string`&&/^sha256:[0-9a-f]{64}$/.test(e);function D(e){if(!t(e))return`blob must be an object`;if(!E(e.hash))return`hash must be sha256:<64 hex>`;if(typeof e.bytes!=`number`||!Number.isSafeInteger(e.bytes)||e.bytes<0||e.bytes>S.blobBytes)return`bytes must be 0–${S.blobBytes}`;if(!T.includes(e.mediaType))return`mediaType is not allowed`;if(e.path!==void 0&&(typeof e.path!=`string`||!/^(?!\/)(?!.*(?:^|\/)\.\.?(?:\/|$))[A-Za-z0-9._/-]{1,200}$/.test(e.path)))return`path must be a relative path without . or .. segments`}export{_ as a,x as c,D as i,h as l,S as n,b as o,w as r,v as s,C as t,g as u};
@@ -0,0 +1 @@
1
+ .awb{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.av-page{height:100%}.awb.resizing{cursor:col-resize;-webkit-user-select:none;user-select:none}.awb.resizing iframe{pointer-events:none}.awb-side{border-left:1px solid var(--line);background:var(--bg);flex-direction:column;flex:none;min-height:0;display:flex;position:relative}.awb-side[hidden]{display:none}.awb-side>.aai{flex:1}.awb-resize{z-index:2;cursor:col-resize;touch-action:none;width:8px;position:absolute;top:0;bottom:0;left:-4px}.awb-resize:after{content:"";background:0 0;width:2px;transition:background .15s;position:absolute;top:0;bottom:0;left:3px}.awb-resize:hover:after,.awb-resize:focus-visible:after,.awb.resizing .awb-resize:after{background:var(--accent)}.awb-resize:focus-visible{outline:none}.awb-side.sheet{z-index:25;border:1px solid var(--line-2);height:min(78%,680px);box-shadow:0 -12px 40px var(--shadow);border-bottom:0;border-radius:16px 16px 0 0;position:absolute;bottom:0;left:0;right:0;overflow:hidden}.awb-grab{background:var(--line-2);border-radius:2px;flex:none;width:36px;height:4px;margin:6px auto 0}.awb-scrim{z-index:24;background:color-mix(in srgb, var(--bg) 45%, transparent);position:absolute;inset:0}.awb-ai-toggle{border:1px solid var(--line-2);background:var(--raise);height:30px;color:var(--text);font:600 .75rem/1 var(--sans);cursor:pointer;border-radius:999px;flex:none;align-items:center;gap:5px;margin-left:4px;padding:0 10px 0 8px;display:inline-flex}.awb-ai-toggle .icon{color:var(--accent)}.awb-ai-toggle:hover{background:var(--raise-2)}.awb-ai-toggle[aria-pressed=true]{background:color-mix(in srgb, var(--accent) 14%, var(--raise));border-color:color-mix(in srgb, var(--accent) 45%, var(--line-2))}.awb-ai-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.awb-badge{background:var(--accent);min-width:16px;height:16px;color:var(--accent-ink);border-radius:999px;place-items:center;padding:0 4px;font-size:.625rem;display:inline-grid}.awb.narrow .awb-ai-toggle{height:34px}.cmp-interactive{flex-direction:column;display:flex}.cmp-interactive .artifact-host{gap:0}.cmp-interactive .artifact-host-note{display:none}.cmp-interactive .artifact-host-status{padding:12px 16px}.cmp-interactive .artifact-host-frame{border:0;border-radius:0;min-height:360px}.cmp-disclose{border-top:1px solid var(--line);background:var(--side);color:var(--faint);align-items:flex-start;gap:8px;margin:0;padding:8px 14px;font-size:.75rem;display:flex}.cmp-disclose .icon{flex:none;width:14px;height:14px;margin-top:2px}.cmp-disclose strong{color:var(--muted);font-weight:600}.awb-keep-err{color:var(--err);font-size:.75rem}.cmp-consent{flex-direction:column;gap:10px;display:flex}.cmp-card{border:1px solid color-mix(in srgb, var(--accent) 55%, var(--line));background:var(--raise);box-shadow:0 2px 8px var(--shadow);border-radius:14px;flex-direction:column;gap:8px;padding:10px 12px 12px;font-size:.8125rem;display:flex}.cmp-card-head{align-items:center;gap:8px;margin:0;display:flex}.cmp-card-icon{background:color-mix(in srgb, var(--accent) 12%, transparent);width:24px;height:24px;color:var(--accent);border-radius:6px;flex:none;place-items:center;display:inline-grid}.cmp-instruction{border-left:3px solid var(--accent);background:var(--side);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:0 8px 8px 0;max-height:12em;margin:0;padding:6px 10px;font-family:inherit;font-size:.875rem;overflow:auto}.cmp-note{color:var(--muted);margin:0;font-size:.75rem}.cmp-note.err{color:var(--err)}.cmp-row{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.cmp-card .aai-picker{flex:none}.cmp-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.cmp-done{color:var(--muted);align-items:flex-start;gap:6px;margin:0;font-size:.75rem;display:flex}.cmp-done .icon{width:14px;height:14px;color:var(--faint);flex:none;margin-top:2px}.cmp-quote{overflow-wrap:anywhere;font-style:italic}.cmp-page-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.cmp-start{flex-direction:column;gap:10px;display:flex}.cmp-start label{flex-direction:column;gap:2px;display:flex}.cmp-empty{flex-direction:column;gap:8px;padding:24px;display:flex}@media (max-width:640px){.cmp-actions .btn{min-height:40px}}.awb.pane .pane-tools{border-left:1px solid var(--line);align-items:center;margin-left:2px;padding-left:4px;display:inline-flex}.cmp-disclose.cmp-preview-skipped{display:block}.cmp-preview-skipped summary{cursor:pointer;color:var(--muted)}.cmp-preview-skipped ul{overflow-wrap:anywhere;margin:4px 0 0;padding-left:18px}.md .remote-image{max-width:100%;margin:6px 0;display:block}.remote-card{border:1px dashed var(--line-2);background:var(--raise-2);max-width:min(100%,460px);color:var(--text);border-radius:10px;flex-direction:column;gap:6px;padding:10px 12px;display:inline-flex}.remote-card-head{flex-wrap:wrap;align-items:baseline;gap:6px;min-width:0;display:flex}.remote-card-head .icon{width:16px;height:16px;color:var(--muted);flex:none;align-self:center}.remote-card-domain{overflow-wrap:anywhere;font-size:1.15rem;font-weight:600}.remote-card-unicode{color:var(--muted);overflow-wrap:anywhere;font-size:.9rem}.remote-card-url{max-width:100%;color:var(--muted);font:inherit;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;background:0 0;border:0;padding:0;font-size:.78rem;display:block;overflow:hidden}.remote-card-url[aria-expanded=true]{white-space:normal;overflow-wrap:anywhere}.remote-card-alt{color:var(--faint);font-size:.8rem}.remote-card-alt:before{content:"🖼 "}.remote-card-actions{flex-wrap:wrap;gap:6px;display:flex}.remote-card-session{color:var(--accent);font:inherit;cursor:pointer;background:0 0;border:0;align-self:flex-start;padding:0;font-size:.78rem;text-decoration:underline}.remote-card-off{color:var(--muted);font-size:.82rem}.media-allowlist{flex-direction:column;gap:4px;margin:8px 0;padding:0;list-style:none;display:flex}.media-allowlist li{align-items:center;gap:8px;display:flex}.media-allowlist li .grow{overflow-wrap:anywhere}.media-allowlist-add{flex-wrap:wrap;gap:6px;display:flex}.media-allowlist-add input{flex:1;min-width:200px}.media-allowlist-error{color:var(--err)}.media-warning{color:var(--warn,var(--muted))}.md .md-artifact{width:-moz-fit-content;width:fit-content;max-width:100%;margin:6px 0;display:block}.md .md-artifact .md-media{margin:0}.md .md-artifact-link{color:var(--muted);margin-top:2px;font-size:.75rem;display:inline-block}.md .md-artifact-link:before{content:"↗ "}.md .link-cards{flex-direction:column;gap:8px;margin:4px 0 10px;display:flex}.link-card{border:1px solid var(--line-2);background:var(--raise-2);max-width:min(100%,520px);color:var(--text);border-radius:10px;flex-direction:column;gap:8px;padding:10px 12px;display:flex}.md a.link-card-link,.link-card-link{min-width:0;color:inherit;flex-direction:column;gap:3px;text-decoration:none;display:flex}.md a.link-card-link:hover .link-card-title,.md a.link-card-link:focus-visible .link-card-title{text-decoration:underline}.link-card-site{color:var(--muted);overflow-wrap:anywhere;font-size:.78rem}.link-card-title{color:var(--accent);overflow-wrap:anywhere;font-weight:600}.link-card-desc{color:var(--muted);overflow-wrap:anywhere;font-size:.86rem}.link-card .link-card-image{max-width:100%}.link-card .link-card-image img{border-radius:6px;max-height:220px}.link-card-loading,.link-card-note{color:var(--muted);font-size:.82rem}.link-card-failed{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.link-preview-btn{border:1px solid var(--line-2);width:20px;height:20px;color:var(--muted);vertical-align:middle;cursor:pointer;background:0 0;border-radius:5px;justify-content:center;align-items:center;margin-left:3px;padding:0;display:inline-flex}.link-preview-btn:hover,.link-preview-btn:focus-visible{color:var(--accent);border-color:var(--accent)}.link-preview-btn .icon{width:12px;height:12px}.ws-section .link-btn{color:var(--accent);cursor:pointer;font:inherit;background:0 0;border:0;padding:0;text-decoration:underline}.ws-list{margin:0;padding:0;list-style:none}.ws-item{margin:2px 0 6px}.ws-head{width:100%;min-height:30px;color:var(--text);cursor:pointer;text-align:left;font:inherit;background:0 0;border:0;border-radius:6px;align-items:center;gap:6px;padding:0 8px;display:flex}.ws-head:hover{background:var(--raise-2)}.ws-head .icon{width:14px;height:14px;color:var(--muted);flex:none}.ws-title{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.ws-goal{color:var(--muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0 8px 2px 28px;font-size:.75rem;display:-webkit-box;overflow:hidden}.ws-panel{padding:2px 0 2px 8px}.ws-notice{min-height:0;color:var(--muted);margin:0 8px;font-size:.7188rem}.ws-notice:empty{display:none}.ws-tree{margin:0;padding:0;list-style:none}.ws-node{--ws-depth:0;padding-left:calc(var(--ws-depth) * 14px);border-radius:6px;outline:none;position:relative}.ws-node:focus-visible>.ws-row{box-shadow:0 0 0 2px var(--accent) inset}.ws-node.away .ws-member{color:var(--muted)}.ws-node.dragged{opacity:.5}.ws-node.drop-inside>.ws-row{background:var(--raise-2);box-shadow:0 0 0 1px var(--accent) inset}.ws-node.drop-before>.ws-row{box-shadow:0 -2px 0 var(--accent)}.ws-node.drop-after>.ws-row{box-shadow:0 2px 0 var(--accent)}.ws-node[draggable=true]>.ws-row{cursor:grab}.ws-row{border-radius:6px;align-items:center;gap:6px;min-height:28px;padding:0 2px 0 8px;display:flex}.ws-row:hover{background:var(--raise-2)}.ws-member{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--text);flex:auto;font-size:.8125rem;text-decoration:none;overflow:hidden}.ws-meta{color:var(--faint);flex-wrap:wrap;align-items:center;gap:3px 4px;margin:0 8px 2px 30px;font-size:.6875rem;display:flex}.ws-badge{border:1px solid var(--line-2);color:var(--muted);white-space:nowrap;border-radius:6px;padding:2px 4px;font-size:.625rem;line-height:1}.ws-badge.master{color:var(--accent);border-color:var(--accent)}.ws-badge.offline{color:var(--err);border-color:var(--err)}.ws-keys{color:var(--faint);margin:0 8px 2px 30px;font-size:.6875rem}.ws-rel a{color:inherit}.ws-assignments{color:var(--muted);margin:0 8px 2px 30px;padding:0;font-size:.7188rem;list-style:none}.ws-assignment-status{color:var(--faint)}.ws-assignment.blocked .ws-assignment-status{color:var(--warn)}.ws-controls{color:var(--muted);margin:0 8px 4px 30px;font-size:.6875rem}.ws-controls summary{cursor:pointer;color:var(--faint)}.ws-controls p,.ws-controls ul{margin:4px 0}.ws-controls ul{padding-left:14px}.ws-root-drop{border:1px dashed var(--line-2);text-align:center;color:var(--muted);border-radius:6px;margin:4px 8px;padding:6px;font-size:.7188rem}.ws-root-drop.over{border-color:var(--accent);color:var(--accent)}.ws-keys{margin-left:8px}.feature-nav ul,.nav-rail-links ul{margin:0;padding:0;list-style:none}.nav-link .icon{flex:none}.nav-link:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.nav-link.active{color:var(--text)}.nav-link.disabled{opacity:.5;cursor:default}.nav-link.disabled:hover{background:0 0}.side-sessions{flex-direction:column;flex:1;min-height:0;display:flex}.nav-rail{background:var(--side);border-right:1px solid var(--line);flex-direction:column;flex:none;align-items:center;gap:6px;width:48px;padding:9px 0;display:flex}.nav-rail-links ul{flex-direction:column;gap:2px;display:flex}.nav-rail .nav-link{justify-content:center;width:32px;height:32px;margin:0;padding:0}.feature-page{flex-direction:column;flex:1;min-height:0;display:flex}.feature-scroll{flex:1;min-height:0;overflow:auto}.feature-body{max-width:980px;margin:0 auto;padding:16px 20px 40px}.feature-note{color:var(--muted)}@media (max-width:760px){.feature-body{padding:12px 14px 40px}}.side-top-actions{align-items:center;gap:2px;display:flex}.concierge-btn{position:relative}.concierge-btn.on{background:var(--raise-2);color:var(--accent)}.concierge-btn.ind-off{color:var(--muted)}.concierge-btn.ind-running{color:var(--accent)}.concierge-ind{border:1px solid var(--side);pointer-events:none;border-radius:50%;width:8px;height:8px;position:absolute;top:4px;right:4px}.concierge-ind.ind-off{background:var(--muted);opacity:.7}.concierge-ind.ind-busy{background:var(--warn)}.concierge-ind.ind-attention{background:var(--err);color:#fff;place-items:center;width:14px;height:14px;font-size:10px;font-weight:700;line-height:1;display:grid;top:1px;right:1px}.side-top{container:side-top/inline-size}.concierge-btn.labelled{align-items:center;gap:4px;width:auto;min-width:30px;padding-inline:6px;display:inline-flex}.concierge-btn-text{font-size:.8125rem;font-weight:500;display:none}@container side-top (width>=200px){.concierge-btn-text{display:inline}.concierge-btn.labelled .concierge-ind{left:16px;right:auto}.concierge-btn.labelled .concierge-ind.ind-attention{top:-1px;left:12px}}.concierge-panel{background:var(--bg);outline:none;flex-direction:column;min-height:0;display:flex}.concierge-panel.side{height:100%;width:var(--concierge-w,min(440px, 40vw));border-left:1px solid var(--line);min-width:0;box-shadow:-12px 0 32px var(--shadow);flex:none;position:relative}.concierge-panel.page{flex:1;width:100%}.concierge-head{border-bottom:1px solid var(--line);flex:none;align-items:center;gap:8px;min-height:max(48px,2.4rem);padding:8px 10px 8px 14px;display:flex}.concierge-head .title{margin:0;font-size:.9375rem;font-weight:600}.concierge-title{min-width:0}.concierge-status{text-overflow:ellipsis;white-space:nowrap;margin:0;overflow:hidden}.concierge-mark{color:var(--accent);flex:none}.concierge-notice{border-radius:var(--r);border:1px solid color-mix(in srgb, var(--warn) 40%, var(--line));color:var(--warn);background:color-mix(in srgb, var(--warn) 8%, var(--bg));margin:8px 12px 0;padding:8px 10px;font-size:.8125rem}.concierge-notice.err{border-color:color-mix(in srgb, var(--err) 40%, var(--line));color:var(--err);background:color-mix(in srgb, var(--err) 7%, var(--bg))}.concierge-asked{flex-direction:column;gap:8px;margin-top:8px;padding:0 12px;display:flex}.concierge-scroll{overscroll-behavior:contain;flex:1;min-height:0;padding:8px 12px;overflow-y:auto}.concierge-scroll .transcript{max-width:none}.concierge-idle{flex-direction:column;flex:1;justify-content:flex-end;display:flex}.concierge-dock{border-top:1px solid var(--line);padding:8px 12px calc(8px + env(safe-area-inset-bottom));flex-direction:column;flex:none;gap:6px;display:flex}.concierge-idle .concierge-composer{margin:8px 12px calc(8px + env(safe-area-inset-bottom))}.concierge-composer{align-items:flex-end;gap:6px;display:flex}.concierge-composer textarea{resize:none;min-height:36px;max-height:200px;font:inherit;flex:1;line-height:1.4}.concierge-composer textarea:disabled{opacity:.6}.concierge-composer .btn.primary:disabled{background:var(--raise-2);color:var(--faint);border-color:var(--line);opacity:1;cursor:not-allowed}.concierge-voice.on{background:var(--accent);color:var(--accent-ink);border-radius:var(--r)}.armed-decision{border-color:color-mix(in srgb, var(--accent) 55%, var(--line));box-shadow:0 0 0 1px color-mix(in srgb, var(--accent) 30%, transparent);margin:8px 12px 0}.armed-question{white-space:pre-wrap;overflow-wrap:anywhere;margin:6px 0;font-size:.9375rem}.armed-options{flex-wrap:wrap;gap:8px;margin:8px 0 4px;display:flex}.armed-options .btn{min-height:40px;padding:0 18px}.armed-hint{margin:4px 0 0}.armed-left{font-variant-numeric:tabular-nums}@media (max-width:760px){.concierge-head{padding-left:6px}.armed-options .btn{flex:1}}#concierge-quiet .row,#concierge-digests li.row{flex-wrap:wrap;align-items:center;gap:8px}#concierge-quiet .text-field{flex-direction:row;align-items:center;gap:6px}.digest-days{flex-wrap:wrap;flex:1;gap:4px 10px;display:flex}.digest-days .check{align-items:center;gap:3px;display:inline-flex}#concierge-watchlist input[type=number]{width:6em}.concierge-panel .decision.flash{animation:1.2s ease-out 2 concierge-flash}@keyframes concierge-flash{0%{box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 60%, transparent)}to{box-shadow:0 0 #0000}}.concierge-panel .hub-update .fold-head{text-align:start;font-size:.8125rem}.concierge-panel .hub-msg-text a{color:var(--accent);text-underline-offset:2px;text-decoration:underline}.concierge-panel .hub-update .fold-body{white-space:pre-wrap;font-size:.8125rem}#concierge{padding-bottom:72px}#concierge .stack>label.text-field{flex-direction:column;align-items:stretch;gap:4px;display:flex}#concierge .stack>label.text-field>input:not([type=number]),#concierge .stack>label.text-field>textarea,#concierge .stack>label.text-field>select,#concierge-directory>input,#concierge-model>input{box-sizing:border-box;width:100%;max-width:44rem}#concierge-model [data-concierge-models-state]:empty{display:none}#concierge #concierge-time-zone>input{max-width:20rem}#concierge-quiet .text-field input:placeholder-shown{color:var(--muted)}.closed-decision{opacity:.92;margin:8px 12px 0}.closed-decision .decision-head{align-items:center;gap:6px;display:flex}.concierge-panel a[href^="/concierge#decision-"]{-webkit-box-decoration-break:clone;box-decoration-break:clone;padding:2px 0;display:inline}.prof-page{flex-direction:column;height:100%;min-height:0;display:flex}.prof-body{flex:1;min-height:0;display:flex}.prof-list{border-right:1px solid var(--line);flex-direction:column;flex:none;gap:8px;width:280px;padding:10px 8px;display:flex;overflow:auto}.prof-filter{gap:4px;display:flex}.prof-filter .btn[aria-pressed=true]{background:var(--raise-2);border-color:var(--line-2);font-weight:600}.prof-items{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.prof-item{color:var(--text);border-radius:6px;flex-direction:column;gap:2px;padding:7px 9px;text-decoration:none;display:flex}.prof-item:hover{background:var(--raise-2)}.prof-item[aria-current=page]{background:var(--raise-2);box-shadow:0 0 0 1px var(--line-2) inset}.prof-item .prof-sub{color:var(--muted);font-size:.75rem}.prof-detail{flex:1;min-width:0;padding:16px 24px 48px;overflow:auto}.prof-detail h2{font:400 1.25rem var(--serif);margin:0}.prof-detail h3{color:var(--muted);margin:18px 0 6px;font-size:.8125rem;font-weight:500}.prof-head{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.prof-tag{border:1px solid var(--line-2);color:var(--muted);border-radius:6px;padding:1px 6px;font-size:.6875rem}.prof-tag.archived{color:var(--warn);border-color:var(--warn)}.prof-note{color:var(--muted);margin:6px 0;font-size:.75rem}.prof-tabs{gap:4px;margin:12px 0 4px;display:flex}.prof-tabs .btn[aria-selected=true]{background:var(--raise-2);font-weight:600}.prof-editor{flex-direction:column;gap:10px;max-width:760px;display:flex}.prof-editor label{color:var(--muted);flex-direction:column;gap:4px;font-size:.7812rem;display:flex}.prof-editor textarea,.prof-editor input{color:var(--text);font:inherit;box-sizing:border-box;width:100%;font-size:.8125rem}.prof-editor textarea{font-family:var(--mono);resize:vertical;min-height:64px}.prof-part{border:1px solid var(--line);border-radius:var(--r);flex-direction:column;gap:6px;padding:8px 10px;display:flex}.prof-part-head{align-items:flex-end;gap:6px;display:flex}.prof-part-head label{flex:1;min-width:0}.prof-preview{color:var(--muted);margin:0;font-size:.7188rem}.prof-preview.bad{color:var(--err)}.prof-history{flex-direction:column;gap:4px;max-width:760px;margin:0;padding:0;list-style:none;display:flex}.prof-history li{border:1px solid var(--line);border-radius:6px;flex-wrap:wrap;align-items:center;gap:8px;padding:6px 8px;font-size:.8125rem;display:flex}.prof-history .mono{font-family:var(--mono);color:var(--faint);font-size:.7188rem}.prof-history pre{white-space:pre-wrap;background:var(--side);border-radius:6px;flex-basis:100%;max-height:240px;margin:4px 0 0;padding:6px 8px;font-size:.75rem;overflow:auto}.prof-detail .prof-back{display:none}.prof-filters{flex-wrap:wrap;gap:4px;display:flex}.prof-filters select{font:inherit;color:var(--text);max-width:100%;font-size:.75rem}.prof-item .prof-desc{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:.75rem;overflow:hidden}.prof-chips{flex-wrap:wrap;gap:4px;margin-top:2px;display:flex}.prof-use{background:var(--raise-2);color:var(--text);border-radius:9px;padding:1px 6px;font-size:.6875rem}.prof-use.unused{color:var(--faint);border:1px dashed var(--line-2);background:0 0}.prof-use.older{color:var(--warn);background:color-mix(in srgb, var(--warn) 12%, transparent)}.prof-details{border:1px solid var(--line);border-radius:var(--r);flex-direction:column;align-items:flex-start;gap:8px;max-width:760px;margin:10px 0 4px;padding:8px 12px;display:flex}.prof-facts{grid-template-columns:max-content 1fr;gap:3px 14px;margin:0;font-size:.8125rem;display:grid}.prof-facts dt{color:var(--muted)}.prof-facts dd{overflow-wrap:anywhere;margin:0}.prof-details .prof-editor{width:100%}.prof-meta-row{align-items:center;gap:6px;display:flex}.prof-meta-row input{flex:1;min-width:0}.prof-usage{max-width:760px}.prof-uses{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.prof-uses li{border:1px solid var(--line);border-radius:6px;flex-wrap:wrap;align-items:center;gap:8px;padding:6px 8px;font-size:.8125rem;display:flex}.prof-uses .mono{font-family:var(--mono);font-size:.7188rem}.prof-dot{background:var(--faint);border-radius:50%;flex:none;width:8px;height:8px}.prof-dot.on{background:var(--ok)}.prof-chip{color:var(--muted);border:1px solid var(--line);white-space:nowrap;cursor:pointer;text-overflow:ellipsis;background:0 0;border-radius:13px;align-items:center;gap:4px;max-width:260px;padding:2px 10px;font-size:.75rem;display:inline-flex;overflow:hidden}.prof-chip:hover{background:var(--raise-2)}.prof-chip.ok{color:var(--ok);border-color:color-mix(in srgb, var(--ok) 45%, var(--line))}.prof-chip.warn,.prof-chip.pending{color:var(--warn);border-color:color-mix(in srgb, var(--warn) 45%, var(--line))}.prof-chip.pending{border-style:dashed}.prof-chip.err{color:var(--err);border-color:color-mix(in srgb, var(--err) 45%, var(--line))}.prof-chip .prof-up{color:var(--accent);font-weight:600}.prof-dialog .dialog-body{flex-direction:column;gap:10px;display:flex}.prof-dialog h3{margin:4px 0;font-size:.8125rem;font-weight:600}.prof-dialog label{color:var(--muted);flex-direction:column;gap:4px;font-size:.7812rem;display:flex}.prof-dialog select,.prof-dialog input,.prof-dialog textarea{color:var(--text);font:inherit;font-size:.8125rem}.prof-guidance{flex-direction:column;gap:2px;margin:0;padding-left:18px;font-size:.8125rem;display:flex}.prof-status{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.prof-status .prof-chip{cursor:default}.prof-upgrade{border:1px solid color-mix(in srgb, var(--accent) 45%, var(--line));border-radius:var(--r);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:8px 10px;font-size:.8125rem;display:flex}.prof-palette .dialog-body{flex-direction:column;gap:8px;display:flex}.prof-commands{flex-direction:column;gap:2px;max-height:46vh;margin:0;padding:0;list-style:none;display:flex;overflow:auto}.prof-command{cursor:pointer;border-radius:6px;flex-direction:column;gap:1px;padding:6px 8px;display:flex}.prof-command[aria-selected=true]{background:var(--raise-2);box-shadow:0 0 0 1px var(--accent) inset}.prof-command .prof-sub{color:var(--muted);font-size:.75rem}.prof-secret{color:var(--muted);border-left:3px solid var(--warn);margin:0;padding:4px 8px;font-size:.75rem}@media (max-width:760px){.prof-list{border-right:0;flex:1;width:auto}.prof-body.has-detail .prof-list,.prof-body:not(.has-detail) .prof-detail{display:none}.prof-detail{padding:12px 14px 48px}.prof-detail .prof-back{margin-bottom:8px;display:inline-flex}.prof-chip{max-width:140px}}.prof-row-gap{margin-top:10px}.prof-fieldset{border:0;margin:0;padding:0}.pane-drop{z-index:8;outline:1px dashed color-mix(in srgb, var(--accent) 45%, transparent);outline-offset:-4px;background:color-mix(in srgb, var(--bg,#000) 18%, transparent);border-radius:6px;min-width:0;min-height:0;position:relative}.pane-drop-area{pointer-events:none;background:color-mix(in srgb, var(--accent) 22%, transparent);box-shadow:inset 0 0 0 2px var(--accent);border-radius:6px;transition:inset .12s ease-out;position:absolute}.pane-drop-area[data-zone=center]{inset:10%}.pane-drop-area[data-zone=left]{inset:0 50% 0 0}.pane-drop-area[data-zone=right]{inset:0 0 0 50%}.pane-drop-area[data-zone=top]{inset:0 0 50%}.pane-drop-area[data-zone=bottom]{inset:50% 0 0}.pane-drop[data-refused] .pane-drop-area{background:color-mix(in srgb, var(--warn) 18%, transparent);box-shadow:inset 0 0 0 2px var(--warn)}.pane-drop-hint{pointer-events:none;background:var(--raise-2);border:1px solid var(--line-2);box-shadow:0 6px 18px var(--shadow);white-space:nowrap;text-overflow:ellipsis;border-radius:999px;max-width:90%;padding:4px 12px;font-size:.8125rem;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.pane-drop[data-refused] .pane-drop-hint{color:var(--warn)}.pane-drop-label{pointer-events:none;color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:.75rem;position:absolute;top:6px;left:8px;right:8px;overflow:hidden}.cmp-empty.pane-empty-drop{flex:1;position:relative}.cmp-empty .pane-drop{position:absolute;inset:8px}.pane-dock{z-index:25;background:color-mix(in srgb, var(--bg,#000) 55%, transparent);justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.pane-dock-card{background:var(--raise);border:1px solid var(--line-2);width:min(520px,90%);box-shadow:0 16px 48px var(--shadow);border-radius:12px;padding:14px}.pane-dock-title{white-space:nowrap;text-overflow:ellipsis;margin:0 0 10px;font-weight:500;overflow:hidden}.pane-dock-map{gap:6px;height:260px;display:grid}.pane-dock-pane{background:var(--raise-2)}.pane-dock-empty{justify-content:center;align-items:center;height:200px;display:flex}.pane-dock-empty .pane-drop-label{text-align:center;position:static}.pane-dock-note{margin:10px 0 0;font-size:.75rem}.pane-grip{width:24px;height:24px;color:var(--faint);cursor:grab;border-radius:6px;justify-content:center;align-items:center;display:inline-flex}.pane-grip:hover{color:var(--text);background:var(--raise-2)}.pane-grip:active{cursor:grabbing}.pane-grip .icon{width:14px;height:14px}.side-row-link[draggable=true],.lib-row[draggable=true]{-webkit-user-drag:element}.wt-drag{cursor:grab}.seg{border:1px solid var(--line);background:var(--side,transparent);border-radius:8px;gap:2px;padding:2px;display:inline-flex}.seg button{width:30px;height:24px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;display:inline-flex}.seg button:hover{color:var(--text)}.seg button[aria-pressed=true]{background:var(--raise-2);color:var(--text);box-shadow:0 0 0 1px var(--line-2)}.seg button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.seg .icon{width:16px;height:16px}@media (prefers-reduced-motion:reduce){.pane-drop-area{transition:none}}.pane-grip .icon{stroke-width:3.2px}.sidechat-bar{border-bottom:1px solid var(--line);flex-direction:column;flex:none;gap:6px;padding:6px 12px;display:flex}.sidechat-row{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.sidechat-tools{align-items:center;gap:6px;margin-left:auto;display:inline-flex}.sidechat-note{margin:0;font-size:.8125rem}.sidechat-context{max-height:30vh;margin:0;padding-left:20px;font-size:.8125rem;overflow:auto}.sidechat-context-text{white-space:pre-wrap;overflow-wrap:anywhere}.sidechat-send{flex-direction:column;gap:6px;display:flex}.sidechat-problem{margin:0}:root{--bg:#f6f7f9;--side:#eef0f3;--raise:#fff;--raise-2:#e8ebef;--line:#d9dde3;--line-2:#c9ced6;--text:#22252a;--muted:#69707b;--faint:#9299a3;--accent:#0e7268;--accent-ink:#fff;--ok:#16834a;--warn:#9a5b08;--err:#b42318;--add:#16834a;--del:#b42318;--violet:#8954c7;--orange:#b96508;--blue:#2769b4;--mark:#22252a;--shadow:#1018281f;--serif:ui-serif, "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;--sans:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;--side-w:235px;--rail-w:260px;--col:680px;--r:8px;--font-scale:1;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#101214;--side:#171a1e;--raise:#1b1f24;--raise-2:#22272d;--line:#2d333b;--line-2:#3a424d;--text:#e7e5e0;--muted:#9ca3ad;--faint:#6f7782;--accent:#3ad3bf;--accent-ink:#04201c;--ok:#50d890;--warn:#efb851;--err:#ff8e82;--add:#50d890;--del:#ff8e82;--violet:#b68cff;--orange:#f2a340;--blue:#64a8ef;--mark:#e7e5e0;--shadow:#0006}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#101214;--side:#171a1e;--raise:#1b1f24;--raise-2:#22272d;--line:#2d333b;--line-2:#3a424d;--text:#e7e5e0;--muted:#9ca3ad;--faint:#6f7782;--accent:#3ad3bf;--accent-ink:#04201c;--ok:#50d890;--warn:#efb851;--err:#ff8e82;--add:#50d890;--del:#ff8e82;--violet:#b68cff;--orange:#f2a340;--blue:#64a8ef;--mark:#e7e5e0;--shadow:#0006}}*{box-sizing:border-box}html{font-size:calc(100% * var(--font-scale,1));-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}html,body{background:var(--bg);height:100%;color:var(--text);-webkit-font-smoothing:antialiased;margin:0}body{font:.875rem/1.5 var(--sans)}#root{height:100%}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit;color:inherit}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.muted{color:var(--muted)}.small{font-size:.7812rem}.mono,code,pre{font-family:var(--mono)}.display{font-family:var(--serif);letter-spacing:-.01em;font-weight:400}.grow{flex:1}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.stack{flex-direction:column;gap:12px;display:flex}.pad{padding:12px 16px}.error{color:var(--err)}.ok{color:var(--ok)}.icon{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:16px;height:16px}kbd{font:.6875rem var(--mono);color:var(--faint);border:1px solid var(--line-2);border-radius:4px;padding:0 4px}:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.btn{border-radius:var(--r);border:1px solid var(--line-2);background:var(--raise);cursor:pointer;white-space:nowrap;align-items:center;gap:6px;min-height:32px;padding:0 12px;display:inline-flex}.btn:hover:not(:disabled){background:var(--raise-2)}.btn:disabled{opacity:.45;cursor:default}.btn.small{height:auto;min-height:26px;padding:0 9px;font-size:.7812rem}.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:#0000;font-weight:600}.btn.primary:hover:not(:disabled){background:color-mix(in srgb, var(--accent) 88%, var(--text))}.btn.danger{color:var(--err)}.icon-btn{width:30px;height:30px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:6px;place-items:center;display:inline-grid}.icon-btn:hover:not(:disabled){background:var(--raise-2);color:var(--text)}.icon-btn:disabled{opacity:.4;cursor:default}.icon-btn.small{width:24px;height:24px}.icon-btn.on,.icon-btn[aria-pressed=true]{color:var(--accent)}.icon-btn.recording{color:var(--err)}input[type=search],input[type=text],input[type=password],select,textarea{background:var(--raise);border:1px solid var(--line);border-radius:var(--r);min-height:32px;padding:6px 10px}input:focus,select:focus,textarea:focus{border-color:var(--line-2);box-shadow:0 0 0 1px var(--line-2);outline:none}.chips{flex-wrap:wrap;gap:6px;display:flex}.chip{border:1px solid var(--line);min-height:26px;color:var(--muted);cursor:pointer;background:0 0;border-radius:13px;padding:0 10px;font-size:.7812rem}.chip[aria-pressed=true]{background:var(--raise-2);color:var(--text);border-color:var(--line-2)}.chip .count{color:var(--accent);margin-left:4px}.card{background:var(--raise);border:1px solid var(--line);border-radius:10px;padding:14px}.banner{border:1px solid var(--line);background:var(--side);border-radius:var(--r);justify-content:space-between;align-items:center;gap:12px;margin:8px 0;padding:8px 12px;display:flex}.banner.warn{border-color:color-mix(in srgb, var(--warn) 45%, var(--line));color:var(--warn);border-width:0 0 1px;border-radius:0;margin:0}.badge{background:var(--accent);min-width:18px;height:18px;color:var(--accent-ink);border-radius:9px;place-items:center;padding:0 5px;font-size:.6875rem;font-weight:700;display:inline-grid}.badge-pill{border:1px solid var(--line-2);color:var(--muted);border-radius:8px;margin-left:6px;padding:1px 6px;font-size:.6875rem}.badge-pill.off{color:var(--err)}.status{flex:none;place-items:center;width:14px;height:14px;display:inline-grid}.status-dot{background:var(--faint);border-radius:50%;width:7px;height:7px}.status.blocked .status-dot{background:var(--warn);box-shadow:0 0 0 3px color-mix(in srgb, var(--warn) 14%, transparent)}.status.error .status-dot{background:var(--err)}.spinner{border:1.6px solid color-mix(in srgb, var(--accent) 27%, transparent);border-top-color:var(--accent);border-radius:50%;flex:none;width:12px;height:12px;animation:.8s linear infinite spin;display:inline-block}.spinner.small{width:10px;height:10px}@keyframes spin{to{transform:rotate(360deg)}}.unread-dot{background:var(--accent);border-radius:50%;flex:none;width:6px;height:6px;margin-left:6px;display:inline-block}.online-dot{background:var(--faint);vertical-align:middle;border-radius:50%;width:6px;height:6px;margin-right:6px;display:inline-block}.online-dot.on{background:var(--ok)}.voice-dot{background:var(--ok);vertical-align:middle;border-radius:50%;flex:none;width:8px;height:8px;margin-right:6px;animation:1.8s ease-in-out infinite voice-dot-pulse;display:inline-block}@keyframes voice-dot-pulse{0%,to{box-shadow:0 0 0 0 color-mix(in srgb, var(--ok) 55%, transparent)}50%{box-shadow:0 0 0 4px color-mix(in srgb, var(--ok) 0%, transparent)}}@media (prefers-reduced-motion:reduce){.voice-dot{animation:none}}.shell{height:100%;display:flex;overflow:hidden}.sidebar{width:var(--side-w);background:var(--side);border-right:1px solid var(--line);flex-direction:column;flex:none;min-height:0;display:flex}.main{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;position:relative}.conn-banner{background:color-mix(in srgb, var(--warn) 16%, var(--bg));color:var(--warn);text-align:center;padding:3px;font-size:.7812rem}.side-top{justify-content:space-between;align-items:center;padding:10px 8px 6px 14px;display:flex}.brand{align-items:center;gap:8px;display:flex}.brand-mark{flex:none}.hub-mark{color:var(--mark);--mark-gap:var(--bg)}.hub-mark-gap{fill:var(--mark-gap)}.hub-mark-hub{fill:var(--accent)}.sidebar .hub-mark{--mark-gap:var(--side)}.brand-name{font-family:var(--serif);font-size:1.0625rem}.side-search{border:1px solid var(--line);border-radius:var(--r);color:var(--faint);background:var(--bg);align-items:center;gap:6px;margin:4px 10px;padding:0 8px;display:flex}.side-search input{width:100%;min-height:30px;box-shadow:none;background:0 0;border:0;padding:0}.side-new,.side-link{color:var(--text);border-radius:6px;align-items:center;gap:8px;margin:2px 8px;padding:6px 8px;display:flex}.side-new:hover,.side-link:hover,.side-link.active{background:var(--raise-2)}.side-link{color:var(--muted)}.side-head{color:var(--faint);justify-content:space-between;align-items:center;padding:10px 8px 0 16px;font-size:.75rem;display:flex}.side-scroll{flex:1;min-height:0;padding:0 6px 12px;overflow:auto}.side-section{margin-top:10px}.side-section-head{justify-content:space-between;align-items:center;height:24px;padding:0 4px 2px 10px;display:flex}.side-section-title{color:var(--faint);text-transform:none;letter-spacing:.02em;text-overflow:ellipsis;white-space:nowrap;font-size:.7188rem;overflow:hidden}.side-section.needs .side-section-title{color:var(--warn)}.side-section-head .icon-btn{opacity:0}.side-section-head:has(.side-section-toggle){padding-left:2px}.side-section-toggle{min-width:0;height:22px;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:5px;flex:1;align-items:center;gap:4px;padding:0 6px 0 4px;display:flex}.side-section-toggle:hover{background:var(--raise-2)}.side-section-toggle:hover .side-section-title{color:var(--muted)}.side-section-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.side-section-caret{width:12px;height:12px;color:var(--faint);flex:none}.side-count{background:var(--raise-2);min-width:16px;color:var(--muted);text-align:center;font-variant-numeric:tabular-nums;border-radius:8px;flex:none;padding:0 5px;font-size:.6562rem;line-height:16px}.side-count.needs{background:color-mix(in srgb, var(--warn) 22%, transparent);color:var(--warn);font-weight:600}.side-section.needs .side-section-toggle .side-section-title{color:var(--warn)}.side-section:hover .side-section-head .icon-btn,.side-section-head .icon-btn:focus-visible{opacity:1}.side-list{margin:0;padding:0;list-style:none}.side-row{border-radius:6px;align-items:center;display:flex;position:relative}.side-row:hover,.side-row.active{background:var(--raise-2)}.side-row-link{min-width:0;color:var(--muted);flex:1;align-items:center;gap:8px;padding:5px 4px 5px 8px;display:flex}.side-row.active .side-row-link,.side-row.unread .side-row-link{color:var(--text)}.side-title{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.row-more{opacity:0;margin-right:2px}.side-row:hover .row-more,.side-row.active .row-more,.row-more[aria-expanded=true],.row-more:focus-visible{opacity:1}.side-empty{color:var(--faint);padding:12px;font-size:.7812rem}.side-foot{border-top:1px solid var(--line);padding:8px}.account{color:var(--muted);border-radius:6px;align-items:center;gap:8px;padding:6px;display:flex}.account:hover{background:var(--raise-2);color:var(--text)}.account-name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.avatar{background:var(--raise-2);width:24px;height:24px;color:var(--text);border-radius:50%;flex:none;place-items:center;font-size:.75rem;font-weight:600;display:inline-grid}.avatar.admin{box-shadow:0 0 0 1.5px var(--accent)}.avatar.large{width:40px;height:40px;font-size:1.0625rem}.menu{z-index:50;background:var(--raise);border:1px solid var(--line-2);min-width:200px;max-width:320px;box-shadow:0 12px 32px var(--shadow);border-radius:10px;padding:4px;position:fixed}.menu-item{text-align:left;cursor:pointer;background:0 0;border:0;border-radius:6px;align-items:center;gap:6px;width:100%;padding:6px 8px;display:flex}.menu-item:hover:not(:disabled){background:var(--raise-2)}.menu-item.danger{color:var(--err)}.menu-check{width:14px;color:var(--accent)}.menu-label{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.menu-hint{color:var(--faint);font-size:.75rem}.menu-section{color:var(--faint);padding:6px 8px 2px;font-size:.7188rem}.menu-sep{background:var(--line);height:1px;margin:4px 0}.mic-picker{width:280px}.level{background:var(--bg);border-radius:3px;height:6px;margin:8px;overflow:hidden}.level span{background:var(--ok);height:100%;transition:width 80ms linear;display:block}.dialog{background:var(--raise);color:var(--text);border:1px solid var(--line-2);border-radius:12px;width:min(520px,94vw);max-height:84vh;padding:0}.dialog::backdrop{background:#0009}.dialog-head{justify-content:space-between;align-items:center;padding:12px 14px 6px;display:flex}.dialog-head h2{margin:0;font-size:.9375rem;font-weight:600}.confirm-dialog{width:min(440px,94vw)}.confirm-dialog .dialog-head{padding-bottom:8px}.confirm-message{white-space:pre-line;overflow-wrap:anywhere;color:var(--muted);margin:0 0 14px;font-size:.8438rem}.btn.primary.danger{background:var(--err);color:var(--bg)}.btn.primary.danger:hover:not(:disabled){background:color-mix(in srgb, var(--err) 88%, var(--text))}@media (pointer:coarse){.confirm-dialog .dialog-actions .btn{min-width:44px;min-height:44px;padding-inline:16px}}.dialog-body{max-height:calc(84vh - 56px);padding:4px 14px 14px;overflow:auto}button.account{text-align:left;cursor:pointer;background:0 0;border:0;width:100%}.setup-machine{flex-direction:column;gap:12px;display:flex}.setup-machine input[type=radio],.setup-machine input[type=checkbox]{accent-color:var(--accent)}.setup-machine>p{margin:0}.sm-field{border:0;flex-direction:column;gap:6px;min-width:0;margin:0;padding:0;display:flex}.sm-field legend,.sm-label{margin-bottom:6px;padding:0;font-size:.7812rem;font-weight:600}.sm-seg{background:var(--raise-2);border-radius:9px;align-self:flex-start;padding:2px;display:inline-flex}.sm-seg-item{min-height:28px;color:var(--muted);cursor:pointer;border-radius:7px;align-items:center;padding:0 12px;font-size:.7812rem;display:inline-flex;position:relative}.sm-seg-item input{opacity:0;cursor:pointer;width:100%;height:100%;margin:0;position:absolute;inset:0}.sm-seg-item.on{background:var(--raise);color:var(--text);box-shadow:0 1px 2px var(--shadow);font-weight:600}.sm-seg-item:has(input:focus-visible){outline:2px solid var(--accent);outline-offset:1px}.sm-profiles{flex-direction:column;gap:4px;display:flex}.sm-profile{border:1px solid var(--line);border-radius:var(--r);cursor:pointer;align-items:baseline;gap:8px;padding:6px 8px;display:flex}.sm-profile.on{border-color:var(--accent)}.sm-profile.disabled{opacity:.55;cursor:default}.sm-profile .grow{flex-direction:column;min-width:0;display:flex}.sm-profile .name{font-weight:600}.sm-root input{box-sizing:border-box;width:100%}.sm-activate .block{display:block}.sm-command-box{border:1px solid var(--line);border-radius:var(--r);background:var(--bg);align-items:center;gap:8px;padding:8px;display:flex}.sm-command-box>p{flex:1;margin:0}.sm-command{white-space:pre-wrap;overflow-wrap:anywhere;-webkit-user-select:all;user-select:all;flex:1;min-width:0;font-size:.75rem;line-height:1.5}.sm-copy{flex:none}@media (pointer:coarse){.sm-seg-item,.sm-copy{min-height:44px}.sm-profile{padding:10px}}.add-app-body{gap:10px;display:grid}.add-app .qr{width:min(260px,70vw);height:auto;image-rendering:pixelated;border-radius:8px;margin:4px auto;display:block}.add-app-link{word-break:break-all;background:var(--bg);border:1px solid var(--line-2);-webkit-user-select:all;user-select:all;border-radius:6px;padding:6px 8px;font-size:.7188rem}.add-app-countdown{font-variant-numeric:tabular-nums}.add-app-expired{justify-items:center;gap:8px;padding:24px 0;display:grid}.picker-search{width:100%;margin-bottom:8px}.picker-list{max-height:55vh;margin:0;padding:0;list-style:none;overflow:auto}.picker-group{text-transform:none;padding:8px 8px 2px;font-weight:600}.picker-note{margin:0 0 6px}.picker-opt{cursor:pointer;text-align:left;background:0 0;border:0;border-radius:6px;align-items:center;gap:8px;width:100%;padding:7px 8px;display:flex}.picker-opt:hover,.picker-opt.active{background:var(--raise-2)}.picker-opt[aria-selected=true] .po-name{color:var(--accent)}.po-name{text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.po-mark{color:var(--accent);font-size:.75rem}.toast{left:50%;bottom:calc(24px + env(safe-area-inset-bottom));z-index:60;background:var(--raise-2);border:1px solid var(--line-2);box-shadow:0 8px 24px var(--shadow);border-radius:10px;align-items:center;gap:10px;max-width:92vw;padding:8px 12px;display:flex;position:fixed;transform:translate(-50%)}.toast.err{border-color:#6a3036}.toast.warn{border-color:#5a4a2a}.topbar{border-bottom:1px solid var(--line);flex:none;align-items:center;gap:8px;height:max(48px,2.4rem);padding:0 12px;display:flex}.topbar-title{flex:1;align-items:center;gap:8px;min-width:0;display:flex}.topbar .title{text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:.875rem;font-weight:500;overflow:hidden}.title-btn{all:unset;cursor:text;text-overflow:ellipsis;white-space:nowrap;border-radius:4px;display:block;overflow:hidden}.title-btn:hover,.title-btn:focus-visible{box-shadow:0 0 0 1px var(--line-2)}input[type=text].rename-field{width:100%;min-width:0;min-height:26px;font:inherit;color:var(--text);flex:1;padding:2px 6px}.topbar input.rename-field.title{max-width:520px}.rename-wrap{vertical-align:middle;flex:1;align-items:center;gap:4px;width:100%;min-width:0;max-width:100%;display:inline-flex}.topbar .rename-wrap{max-width:560px}.auto-name-btn{flex:none;font-size:14px;line-height:1}.naming{white-space:nowrap;flex:none;align-items:center;gap:4px;margin-left:6px;font-weight:400;display:inline-flex}.chip-server{color:var(--muted);border:1px solid var(--line);white-space:nowrap;border-radius:13px;align-items:center;gap:4px;max-width:420px;padding:2px 10px;font-size:.75rem;display:inline-flex;overflow:hidden}.chip-server .place-where{text-overflow:ellipsis;min-width:0;overflow:hidden}.session-place{color:var(--muted);border-bottom:1px solid var(--line);white-space:nowrap;flex:none;align-items:center;gap:4px;padding:4px 12px;font-size:.75rem;display:flex;overflow:hidden}.session-place .place-machine{color:var(--text,inherit);font-weight:500}.session-place .place-where,.session-place .place-branch{text-overflow:ellipsis;min-width:0;overflow:hidden}.session-place .icon{flex:none;width:12px;height:12px;margin-left:4px}.chip-server .icon{width:12px;height:12px;margin-left:6px}.chip-evidence{color:var(--muted);border:1px dashed var(--line);white-space:nowrap;cursor:help;border-radius:13px;align-items:center;padding:2px 10px;font-size:.75rem;display:inline-flex}.chip-evidence.screen,.chip-evidence.unknown{color:var(--warn);border-color:#5a4a2a}.btn.changes{font-family:var(--mono)}.add{color:var(--add)}.del{color:var(--del)}.home-shell{flex-direction:column;height:100%;min-height:0;display:flex}.home-scroll{flex:1;overflow:auto}.home{max-width:1180px;margin:0 auto;padding:24px 28px 48px}.home-head{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.home-head h1{margin:0;font-size:1.75rem}.home-tools{gap:8px;margin:12px 0 8px;display:flex}.search{border:1px solid var(--line);border-radius:var(--r);background:var(--raise);color:var(--faint);flex:1;align-items:center;gap:8px;padding:0 10px;display:flex}.search input{width:100%;box-shadow:none;background:0 0;border:0}.count{margin:10px 0 4px;font-size:.75rem}.sessions-table{border-collapse:collapse;table-layout:fixed;width:100%}.sessions-table th{text-align:left;color:var(--faint);border-bottom:1px solid var(--line);padding:0;font-size:.75rem;font-weight:500}.th-btn{color:inherit;cursor:pointer;background:0 0;border:0;gap:4px;padding:8px 6px;display:inline-flex}.th-btn:hover{color:var(--text)}.sort-mark{color:var(--accent)}.sessions-table td{border-bottom:1px solid var(--line);text-overflow:ellipsis;white-space:nowrap;color:var(--muted);padding:7px 6px;overflow:hidden}.sessions-table tbody tr{cursor:pointer}.sessions-table tbody tr:hover{background:var(--side)}.sessions-table .col-title a{color:var(--text)}.sessions-table tr.unread .col-title a{font-weight:600}.col-status{width:64px}.col-pick{text-align:center;width:32px}.col-pick input{vertical-align:middle;cursor:pointer;margin:0}.home-tools .btn.small{min-height:32px}.bulk-bar{border:1px solid var(--line);border-radius:var(--r);background:var(--raise);align-items:center;gap:8px;margin:8px 0 0;padding:6px 10px;font-size:.8125rem;display:flex}.bulk-bar span{margin-right:auto}.archive-inactive{flex-direction:column;gap:12px;display:flex}.archive-inactive input[type=number]{background:var(--raise);border:1px solid var(--line);border-radius:var(--r);width:120px;min-height:32px;padding:6px 10px}.dialog-actions{justify-content:flex-end;gap:8px;display:flex}.col-title{width:30%}.col-project{width:16%}.col-server,.col-source{width:9%}.col-activity{width:10%}.col-actions{text-align:right;width:40px}.empty-cell{text-align:center;padding:24px!important}.home-list{margin:0;padding:0;list-style:none}.home-item{border-bottom:1px solid var(--line);align-items:center;display:flex}.home-item-link{flex:1;align-items:center;gap:10px;min-width:0;padding:10px 4px;display:flex}.home-item-text{flex-direction:column;flex:1;min-width:0;display:flex}.home-item-title,.home-item-meta{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.home-item.unread .home-item-title{font-weight:600}.home-item-meta{font-size:.7812rem}.offline-line{margin-top:10px}.empty{text-align:center;padding:48px 16px}.empty .display{margin:0 0 6px;font-size:1.375rem}.session-layout{height:100%;min-height:0;display:flex}.session-main{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;position:relative}.scroller{overflow-anchor:none;flex:1;min-height:0;overflow:auto}.history-sentinel{height:1px}.history-edge{text-align:center;justify-content:center;align-items:center;gap:8px;margin:16px 0 0;display:flex}.history-edge.error{color:var(--err)}.column{max-width:var(--col);margin:0 auto;padding:0 20px}.column.narrow{max-width:560px;padding-top:40px}.transcript{flex-direction:column;gap:14px;padding:24px 0 8px;display:flex}.msg.user{align-self:flex-end;align-items:flex-end;gap:6px;max-width:85%;display:flex}.user-body{flex-direction:column;align-items:flex-end;gap:6px;min-width:0;display:flex}.msg-images{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.media-box{vertical-align:top;background:var(--raise-2);border-radius:10px;max-width:100%;display:inline-block;position:relative;overflow:hidden}.media-box[data-state=tap]{background:0 0;aspect-ratio:auto!important;width:auto!important}.media-open{cursor:zoom-in;background:0 0;border:0;width:100%;height:100%;padding:0;display:block}.media-open img{max-width:100%;max-height:var(--media-max-h,220px);object-fit:contain;display:block}.media-box[style] .media-open img{width:100%;height:100%;max-height:none}.msg-image{border:1px solid var(--line-2);--media-max-h:220px;display:block}.msg-image .media-open img{max-width:min(220px,60vw)}.media-tap{border:1px dashed var(--line-2);background:var(--raise-2);min-height:40px;color:var(--muted);cursor:pointer;text-align:left;border-radius:10px;align-items:center;gap:8px;padding:8px 12px;font-size:.8125rem;display:inline-flex}.media-tap .icon{flex:none;width:16px;height:16px}.media-strip{flex-wrap:wrap;align-items:flex-start;gap:6px;padding:2px 10px 8px;display:flex}.media-thumb{--media-max-h:72px;border:1px solid var(--line-2);border-radius:8px}.media-thumb .media-open img{max-width:160px}.media-more{border:1px solid var(--line-2);background:var(--raise-2);min-width:48px;height:72px;color:var(--muted);cursor:pointer;border-radius:8px}.md .md-media{--media-max-h:360px;border:1px solid var(--line-2);width:-moz-fit-content;width:fit-content;margin:6px 0;display:block}.md .md-media .media-open img{max-width:100%}.media-failed{white-space:normal;flex-wrap:wrap;row-gap:2px;max-width:100%}.media-failed-name{text-overflow:ellipsis;white-space:nowrap;max-width:220px;overflow:hidden}.media-failed-reason{color:var(--faint)}.media-retry{color:var(--accent);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:6px;flex:none;padding:0 6px}.file-chip{background:var(--raise-2);color:var(--muted);text-overflow:ellipsis;white-space:nowrap;border-radius:999px;align-items:center;gap:6px;max-width:240px;padding:4px 10px;font-size:.7812rem;display:inline-flex;overflow:hidden}.file-chip .icon{flex:none;width:14px;height:14px}.pill{background:var(--raise-2);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:14px;padding:8px 14px}.msg-note{text-align:right;overflow-wrap:anywhere;margin:0}.tick{color:var(--faint);font-size:.6875rem}.tick.heard{color:var(--ok)}.tick.failed{color:var(--err)}.tick.queued{color:var(--warn)}.user-body{position:relative}.msg-tools{z-index:2;background:var(--raise);border:1px solid var(--line-2);opacity:0;pointer-events:none;border-radius:8px;gap:2px;margin-top:2px;padding:2px;transition:opacity .12s;display:flex;position:absolute;top:100%;right:0;box-shadow:0 2px 8px #0000001f}.msg-tools .icon-btn{width:28px;height:28px}.msg-tools .icon-btn[aria-disabled=true]{opacity:.4;cursor:default}.msg.user:hover .msg-tools,.msg.user:focus-within .msg-tools,.msg.user.tools-open .msg-tools{opacity:1;pointer-events:auto}.msg-more{opacity:.35;align-self:center;width:26px;height:26px;display:inline-grid}.msg.user:hover .msg-more,.msg.user:focus-within .msg-more,.msg.user.tools-open .msg-more{opacity:1}@media (hover:none){.msg-more{opacity:1}.msg.user:hover:not(.tools-open):not(:focus-within) .msg-tools{opacity:0;pointer-events:none}}.revert-banner{background:var(--raise-2);border:1px solid var(--line-2);border-radius:10px;align-items:center;gap:8px;margin:0 0 8px;padding:6px 8px 6px 12px;font-size:.8125rem;display:flex}.revert-banner .icon{width:16px;height:16px;color:var(--muted);flex:none}.revert-banner .revert-text{flex:1;min-width:0}.hub-msg-delivery{color:var(--warn);font-size:.6875rem}.composer-unavailable{align-items:center;gap:10px;padding:10px 2px;display:flex}.composer-unavailable p{flex:1;margin:0}.msg.assistant{overflow-wrap:anywhere;line-height:1.6}.msg.assistant.live .md>:is(p,h3,h4,h5,h6):last-child:after,.msg.assistant.live .md>:is(ul,ol):last-child>li:last-child>p:last-child:after{content:"▍";color:var(--accent);animation:1s steps(2,end) infinite blink}@keyframes blink{50%{opacity:0}}.md>:first-child{margin-top:0}.md>:last-child{margin-bottom:0}.md{min-width:0}.md p{margin:0 0 .7em}.md h3,.md h4,.md h5,.md h6{letter-spacing:-.005em;color:var(--violet);margin:1.15em 0 .45em;font-weight:600;line-height:1.35}.md h3{border-bottom:1px solid var(--line);padding-bottom:.25em;font-size:1.14em}.md h4{font-size:1.05em}.md h5,.md h6{color:color-mix(in srgb, var(--violet) 72%, var(--muted));font-size:1em}.md ul,.md ol{margin:0 0 .7em;padding-left:1.5em}.md li{margin:.15em 0}.md li::marker{color:var(--orange)}.md li>p{margin:0}.md li>:is(ul,ol){margin:.15em 0 .2em}.md :is(ul,ol).loose>li{margin:.35em 0}.md :is(ul,ol).loose>li>p{margin:0 0 .5em}.md :is(ul,ol).loose>li>p:last-child{margin-bottom:0}.md li.task{list-style:none;position:relative}.md li.task>input[type=checkbox]{width:.95em;height:.95em;accent-color:var(--accent);margin:0;position:absolute;top:.3em;left:-1.35em}.md li.task>input:checked~p{color:var(--muted)}.md .inline-code{color:var(--ok);background:color-mix(in srgb, var(--accent) 9%, var(--raise-2));border:1px solid color-mix(in srgb, var(--accent) 24%, var(--line));overflow-wrap:anywhere;border-radius:5px;padding:.05em .35em;font-size:.88em}.md a .inline-code{color:inherit}.md :is(th,td) .inline-code{white-space:nowrap;overflow-wrap:normal}.md strong{color:var(--orange);font-weight:600}.md del{color:var(--faint)}.md mark{background:color-mix(in srgb, var(--orange) 18%, transparent);color:var(--orange);-webkit-box-decoration-break:clone;box-decoration-break:clone;border-radius:3px;padding:0 .15em}.md .md-image{color:var(--accent)}.md .md-image:before{content:"🖼 "}.md blockquote{border-left:3px solid var(--line-2);color:var(--muted);margin:0 0 .7em;padding:.15em 0 .15em .85em}.md blockquote>:last-child{margin-bottom:0}.md a{color:var(--ok);text-decoration:underline;-webkit-text-decoration-color:color-mix(in srgb, var(--ok) 40%, transparent);text-decoration-color:color-mix(in srgb, var(--ok) 40%, transparent);text-underline-offset:2px;overflow-wrap:anywhere}.md a:hover{text-decoration-color:currentColor}.md hr{border:0;border-top:1px solid var(--line);margin:1em 0}.md .table-wrap{border:1px solid var(--line);border-radius:var(--r);max-width:100%;margin:0 0 .8em;overflow-x:auto}.md table{border-collapse:collapse;min-width:100%;font-size:.93em;line-height:1.45}.md th,.md td{border-bottom:1px solid var(--line);text-align:left;vertical-align:top;overflow-wrap:normal;padding:.4em .75em}.md th{background:var(--side);color:var(--text);white-space:nowrap;font-weight:600}.md tbody tr:last-child td{border-bottom:0}.md tbody tr:nth-child(2n) td{background:color-mix(in srgb, var(--text) 3%, transparent)}.md th+th,.md td+td{border-left:1px solid var(--line)}.md .code-block{border:1px solid var(--line);border-radius:var(--r);background:var(--side);margin:0 0 .8em;overflow:hidden}.md .code-head{border-bottom:1px solid var(--line);color:var(--faint);align-items:center;gap:2px;padding:2px 4px 2px 10px;font-size:.8em;display:flex}.md .code-lang{font-family:var(--mono);text-transform:lowercase;flex:1}.md .code-btn{color:var(--muted);cursor:pointer;font-size:inherit;background:0 0;border:0;border-radius:5px;min-height:24px;padding:3px 8px}.md .code-btn:hover{background:var(--raise-2);color:var(--text)}.md .code-btn[aria-pressed=true]{color:var(--accent)}.md .code-head:has(.code-preview-err){flex-wrap:wrap}.md .code-btn.code-preview{color:var(--accent)}.md .code-btn.code-preview:disabled{cursor:progress;opacity:.7}.md .code-preview-err{color:var(--err);overflow-wrap:anywhere;padding:0 6px;font-size:.95em}.md pre.code{background:0 0;border:0;border-radius:0;margin:0;padding:.7em .9em;line-height:1.5;overflow:auto}.md .code-block.wrap pre.code{white-space:pre-wrap;overflow-wrap:anywhere}.md pre code{background:0 0;padding:0}.tok-comment{color:var(--faint);font-style:italic}.tok-string{color:var(--ok)}.tok-number{color:var(--orange)}.tok-keyword{color:var(--violet)}.tok-type,.tok-attr{color:var(--orange)}.tok-fn,.tok-meta{color:var(--blue)}.tok-prop,.tok-tag{color:var(--err)}.tok-add{color:var(--add);background:color-mix(in srgb, var(--add) 10%, transparent)}.tok-del{color:var(--del);background:color-mix(in srgb, var(--del) 10%, transparent)}pre.code{white-space:pre;font-size:.75rem}.fold-head{color:var(--muted);cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;padding:2px 0;font-size:.8125rem;display:inline-flex}.fold-head:hover:not(:disabled){color:var(--text)}.fold-head:disabled{cursor:default}.fold-head .chev{width:13px;height:13px;transition:transform .15s}.fold-head[aria-expanded=true] .chev{transform:rotate(90deg)}.fold.has-failed .fold-head{color:#c9a0a4}.fold-body{border-left:1px solid var(--line);margin:6px 0 0 2px;padding-left:12px}.reasoning{color:var(--muted);white-space:pre-wrap;max-height:320px;font-size:.8125rem;overflow:auto}.reasoning.hidden-reasoning{font-style:italic}.tool-list{list-style:none}.tool-head{cursor:pointer;text-align:left;background:0 0;border:0;align-items:center;gap:8px;width:100%;padding:3px 0;font-size:.8125rem;display:flex}.tool-mark{width:14px;color:var(--ok);font-size:.6875rem}.tool.failed .tool-mark{color:var(--err)}.tool-name{font-family:var(--mono);font-size:.7812rem}.tool-summary{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:.7812rem;overflow:hidden}.tool-detail pre{background:var(--side);border:1px solid var(--line);border-radius:6px;max-height:360px;padding:8px;overflow:auto}.hub-msg{border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:var(--r);max-width:85%;padding:6px 10px}.hub-msg.out{align-self:flex-end}.hub-msg-head{color:var(--muted);align-items:center;gap:6px;margin-bottom:2px;font-size:.7812rem;display:flex}.hub-msg-mark{color:var(--accent)}.hub-msg-kind{font-family:var(--mono);text-transform:uppercase;font-size:.7188rem}.hub-msg-label{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.hub-msg-text{white-space:pre-wrap;overflow-wrap:anywhere;font-size:.875rem}.hub-note .fold-body{color:var(--muted)}.subagent{border:1px solid var(--line);border-radius:var(--r);color:var(--muted);align-items:center;gap:8px;padding:8px 10px;display:flex}.subagent:hover{background:var(--side);color:var(--text)}.sub-mark{color:var(--accent);place-items:center;width:14px;display:inline-grid}.sub-label{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.sub-label strong{color:var(--text);font-weight:500}.subagent .chev{width:14px;height:14px}.note{color:var(--muted);margin:6px 0;font-size:.7812rem}.note.err{color:var(--err)}.working-line{align-items:center;gap:8px;margin:10px 0;font-size:.8125rem;display:flex}.idle-line{margin:12px 0 20px}.empty-session{text-align:center;padding-top:18vh}.blocker{border-color:#5a4a2a;margin:12px 0}.blocker-head{color:var(--warn);margin:0 0 4px}.blocker-text{white-space:pre-wrap;overflow-wrap:anywhere;margin:0 0 10px;font-size:.7812rem}.decisions{margin:12px 0}.decisions .section-title{color:var(--warn);margin:0 0 6px;font-size:.875rem}.decision{border-color:#5a4a2a;margin:12px 0}.decision.urgency-high{border-color:var(--err)}.decision.targeted{box-shadow:0 0 0 2px var(--accent)}.decision-question{font-size:.875rem}.decision-deadline{color:var(--warn);margin:0 0 8px}.decision-deadline.overdue{color:var(--err)}.decision .badge-pill.urgency.high{color:var(--err);border-color:var(--err)}.decision .badge-pill.recommended{color:var(--accent);border-color:var(--accent)}.decision .badge-pill.safe{color:var(--ok);border-color:var(--ok)}.decision .choice.recommended>span:first-of-type{font-weight:600}.decision-why{margin:6px 0}.decision-note,.decision textarea{width:100%;margin:6px 0}.decision-tier{margin:4px 0 8px}.decision .badge-pill.agent-request{color:var(--warn);border-color:var(--warn)}.escalation-details{grid-template-columns:max-content 1fr;gap:2px 12px;margin:0 0 10px;display:grid}.escalation-details dt{color:var(--muted)}.escalation-details dd{overflow-wrap:anywhere;min-width:0;margin:0}.escalation-resource{margin:0 6px 2px 0;display:inline-block}.decision-details dd{white-space:pre-wrap}.decision-details .escalation-resource,.decision-prompt{white-space:pre-wrap;overflow-wrap:anywhere}.decision-prompt{margin:0}.decision-answer-field{display:block}.cut-note{color:var(--warn);margin:0 0 4px;display:block}.escalation-resource,.decision-answer-value{unicode-bidi:isolate}.decision-prompt,.blocker.permission .blocker-text{unicode-bidi:plaintext}.clamp-toggle{color:var(--accent);cursor:pointer;font:inherit;background:0 0;border:0;padding:0 2px;font-size:.75rem;text-decoration:underline;display:inline}.blocker-text+.clamp-toggle{margin:-8px 0 10px;display:block}.blocker-recommendation{color:var(--accent);margin:-4px 0 10px}.answered-by{margin:6px 0}.blocker .answered-by{margin:8px 0 0}.grant-row .grant-facts{grid-template-columns:max-content 1fr;gap:2px 12px;margin:4px 0 0;display:grid}.grant-row .grant-facts dt{color:var(--muted)}.grant-row .grant-facts dd{overflow-wrap:anywhere;min-width:0;margin:0}.grant-row.ended{opacity:.6}.badge-pill.active{color:var(--ok);border-color:var(--ok)}.grant-form{flex-direction:column;gap:12px;display:flex}.grant-form label.text-field{flex-direction:column;gap:4px;display:flex}.grant-form textarea,.grant-form input[type=text]{width:100%}.grant-verbs{border:0;flex-wrap:wrap;gap:4px 14px;margin:0;padding:0;display:flex}.audit-row .audit-result.ok{color:var(--ok)}.audit-row .audit-result.warn{color:var(--warn)}.audit-row .audit-result.err{color:var(--err)}.form-card fieldset{border:0;min-width:0;margin:0;padding:0}.form-card fieldset:disabled{opacity:.6}.form-field{flex-direction:column;gap:4px;margin:0 0 12px;display:flex}.field-title{font-weight:500}.field-desc{display:block}.choice-group{flex-direction:column;gap:4px;display:flex}.choice,.check{cursor:pointer;align-items:baseline;gap:8px;display:flex}.choice-group input[type=text],.form-field>input[type=text]{width:100%}.field-error{color:var(--err);margin:0}.dock{padding:8px 0 calc(12px + env(safe-area-inset-bottom));background:linear-gradient(transparent, var(--bg) 18px);flex:none}.composer-box{border:1px solid var(--line-2);background:var(--raise);border-radius:14px;padding:10px 10px 6px 14px}.composer-box:focus-within{border-color:var(--line-2)}.composer textarea{resize:none;width:100%;min-height:24px;max-height:280px;box-shadow:none;background:0 0;border:0;padding:0;line-height:1.5}.composer.dragging .composer-box{border-color:var(--accent);border-style:dashed}.attachments{flex-wrap:wrap;gap:8px;margin:0 0 8px;padding:0;list-style:none;display:flex}.attachment{border:1px solid var(--line-2);background:var(--raise-2);border-radius:10px;justify-content:center;align-items:center;width:64px;height:64px;display:flex;position:relative;overflow:hidden}.attachment img{object-fit:cover;width:100%;height:100%;display:block}.attachment-remove{color:#fff;cursor:pointer;background:#000000a6;border:0;border-radius:50%;justify-content:center;align-items:center;width:22px;height:22px;padding:0;display:flex;position:absolute;top:3px;right:3px}.attachment-remove .icon{width:13px;height:13px}.composer-actions{align-items:center;gap:4px;margin-top:4px;display:flex}.composer-meta{align-items:center;gap:6px;padding:6px 4px 0;display:flex}.composer-meta>.muted{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.composer-error{color:var(--err);margin:0 0 6px;font-size:.7812rem}.composer-hint{margin:0 0 6px}.btn.send{border-radius:8px;min-width:30px;height:30px;padding:0 9px}.btn.send.steer{padding:0 12px}.btn.stop{height:30px;color:var(--text)}.split{border:1px solid var(--line-2);border-radius:8px;height:30px;display:inline-flex;overflow:hidden}.split button{color:var(--muted);cursor:pointer;background:0 0;border:0;place-items:center;display:grid}.split button:hover:not(:disabled){background:var(--raise-2);color:var(--text)}.split button:disabled{opacity:.4;cursor:default}.split-main{width:32px}.split.on .split-main{background:var(--accent);color:var(--accent-ink)}.split.on .split-main:hover:not(:disabled){background:var(--accent);color:var(--accent-ink);filter:brightness(1.08)}.voice-pill{border:1px solid var(--accent);min-height:28px;color:var(--accent);border-radius:999px;align-items:center;gap:6px;min-width:0;max-width:320px;padding:0 4px 0 8px;font-size:.75rem;display:inline-flex}.voice-pill .icon{flex:none;width:14px;height:14px}.voice-pill-link{color:inherit;text-overflow:ellipsis;white-space:nowrap;min-width:0;text-decoration:none;overflow:hidden}.voice-pill-link strong{color:var(--text);font-weight:500}.voice-pill .btn.small{height:22px;padding:0 8px}.voice-strip{justify-content:flex-end;padding:8px 12px 0;display:flex}.side-row.voice-here .side-title{color:var(--accent)}.voice-error{margin:0 0 8px}.split-chev{width:20px;border-left:1px solid var(--line-2)!important}.split-chev .icon{width:12px;height:12px}.split.on{border-color:var(--accent)}.split.on .split-main{color:var(--accent)}.model-chip{color:var(--faint);cursor:pointer;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:0;border-radius:6px;max-width:220px;padding:2px 6px;font-size:.75rem;overflow:hidden}.model-chip:hover{background:var(--raise-2);color:var(--text)}.voice-bar{border:1px solid var(--line-2);background:var(--side);border-radius:12px;align-items:center;gap:10px;margin-bottom:8px;padding:6px 8px 6px 12px;display:flex}.voice-bar.paused{opacity:.8}.voice-bar.suspended{border-color:#5a4a2a;flex-wrap:wrap}.voice-bar.suspended .voice-state{color:var(--warn);flex:12em;min-width:0}.voice-bar.suspended .wave span{background:var(--warn)}.wave{align-items:center;gap:3px;height:22px;display:flex}.wave span{background:var(--accent);transform-origin:50%;border-radius:2px;width:3px;height:22px;transition:transform 80ms linear}.voice-bar.speaking .wave span{animation:.9s ease-in-out infinite talk}.voice-bar.speaking .wave span:nth-child(2){animation-delay:.15s}.voice-bar.speaking .wave span:nth-child(3){animation-delay:.3s}.voice-bar.speaking .wave span:nth-child(4){animation-delay:.45s}@keyframes talk{50%{transform:scaleY(.25)}}.voice-state{font-size:.8125rem}.voice-ignored{color:var(--faint);font-style:italic}.voice-turn{font-variant-numeric:tabular-nums}.voice-bar .chip.voice-front{cursor:default;min-height:0;padding:1px 8px;font-size:11px}.turn-advanced{margin-top:6px}.turn-knobs{flex-wrap:wrap;gap:10px;margin:6px 0;display:flex}.turn-knobs input{width:6.5em}.btn.end{color:var(--err)}.rail{width:var(--rail-w);border-left:1px solid var(--line);background:var(--bg);flex:none;padding:0 12px 24px;overflow:auto}.panel-handle{z-index:6;cursor:col-resize;touch-action:none;outline:none;flex:none;width:6px;margin:0 -3px;position:relative}.panel-handle:before{content:"";background:0 0;width:1px;transition:background .12s;position:absolute;top:0;bottom:0;left:50%;transform:translate(-50%)}.panel-handle:hover:before,.panel-handle.dragging:before,.panel-handle:focus-visible:before{background:var(--accent);width:2px}html.resizing,html.resizing *{cursor:col-resize!important;-webkit-user-select:none!important;user-select:none!important}html.resizing iframe{pointer-events:none}.workspace{flex-direction:column;flex:1;min-height:0;display:flex}.pane-grid{flex:1;min-height:0;display:grid}.pane{outline:none;flex-direction:column;min-width:0;min-height:0;display:flex;container-type:inline-size}.pane[hidden]{display:none}.pane>.session-layout{flex:1;height:auto;min-height:0}.workspace.ws-split .pane{box-shadow:inset 0 0 0 1px var(--line)}.workspace.ws-split .pane[data-focused]{box-shadow:inset 0 2px 0 var(--accent), inset 0 0 0 1px var(--line)}.pane:focus-visible{box-shadow:inset 0 0 0 2px var(--accent)!important}.pane-bar{border-bottom:1px solid var(--line);flex:none;align-items:center;gap:6px;padding:4px 12px;display:flex}.pane-count{margin-left:auto;font-size:.75rem}.pane-tools{flex:none;gap:2px;display:inline-flex}@container (width<=720px){.pane .chip-server{display:none}}.icon-btn.flip svg{transform:rotate(180deg)}.pane-handle{width:auto;margin:0}.pane-handle[data-axis=rows]{cursor:row-resize}.pane-handle[data-axis=rows]:before{width:auto;height:1px;inset:50% 0 auto;transform:translateY(-50%)}.pane-handle[data-axis=rows]:hover:before,.pane-handle[data-axis=rows].dragging:before,.pane-handle[data-axis=rows]:focus-visible:before{width:auto;height:2px}html.resizing-rows,html.resizing-rows *{cursor:row-resize!important;-webkit-user-select:none!important;user-select:none!important}.pane-tabs{border-bottom:1px solid var(--line);scrollbar-width:none;flex:none;display:flex;overflow-x:auto}.pane-tab{border-bottom:2px solid #0000;flex:none;align-items:center;min-width:0;max-width:60%;padding-right:4px;display:flex}.pane-tab.selected{border-bottom-color:var(--accent)}.pane-tab [role=tab]{min-height:40px;color:var(--muted);white-space:nowrap;text-overflow:ellipsis;cursor:pointer;background:0 0;border:0;padding:0 4px 0 12px;overflow:hidden}.pane-tab.selected [role=tab]{color:var(--text)}.rail-head{justify-content:space-between;align-items:center;height:48px;display:flex}.rail-title{color:var(--muted);font-size:.8125rem}.rail-card{border-top:1px solid var(--line);padding:12px 0}.rail-card h3{color:var(--faint);justify-content:space-between;margin:0 0 8px;font-size:.75rem;font-weight:500;display:flex}.kv{grid-template-columns:64px 1fr;gap:4px 8px;margin:0;font-size:.7812rem;display:grid}.kv dt{color:var(--faint)}.kv dd{text-overflow:ellipsis;white-space:nowrap;margin:0;overflow:hidden}.kv dd.kv-path{align-items:center;gap:4px;display:flex}.kv-path .path-tail{text-overflow:ellipsis;white-space:nowrap;text-align:left;direction:rtl;flex:1;min-width:0;overflow:hidden}.kv-path .icon-btn{flex:none;width:22px;height:22px}.meter{background:var(--raise-2);border-radius:3px;height:6px;margin-bottom:6px;overflow:hidden}.meter span{background:var(--accent);height:100%;display:block}.meter span.hot{background:var(--warn)}.mcp-list,.file-list{margin:0;padding:0;list-style:none}.mcp-list li{align-items:center;gap:8px;padding:2px 0;font-size:.7812rem;display:flex}.mcp-name{text-overflow:ellipsis;flex:1;overflow:hidden}.mcp-dot{background:var(--faint);border-radius:50%;width:6px;height:6px}.mcp-dot.connected{background:var(--ok)}.mcp-dot.failed,.mcp-dot.needs_auth{background:var(--err)}.mcp-dot.pending{background:var(--warn)}.diffstat{font-family:var(--mono);font-size:.75rem}.file{cursor:pointer;text-align:left;background:0 0;border:0;border-radius:5px;align-items:center;gap:6px;width:100%;padding:3px 4px;font-size:.7812rem;display:flex}.file:hover{background:var(--raise-2)}.file-status{font:600 .6562rem var(--mono);width:14px;color:var(--warn)}.file-status.added{color:var(--add)}.file-status.deleted{color:var(--del)}.file-name{text-overflow:ellipsis;white-space:nowrap;text-align:left;min-width:0;font-family:var(--mono);direction:rtl;flex:1;overflow:hidden}.diff-panel{z-index:20;background:var(--side);border:1px solid var(--line-2);border-radius:12px;flex-direction:column;display:flex;position:absolute;inset:48px 12px 12px;box-shadow:0 16px 48px #000a}.diff-head{border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:8px 10px;display:flex}.diff-head select{min-width:0;font-family:var(--mono);flex:1;font-size:.7812rem}.wrap-toggle{align-items:center;gap:4px;display:inline-flex}.diff-body{flex:1;overflow:auto}table.diff{border-collapse:collapse;width:100%;font:.75rem/1.55 var(--mono)}table.diff td{vertical-align:top;padding:0 8px}table.diff .ln{width:1%;color:var(--faint);text-align:right;-webkit-user-select:none;user-select:none;white-space:nowrap}table.diff .code-line{white-space:pre}.diff-body.wrap table.diff .code-line{white-space:pre-wrap;overflow-wrap:anywhere}table.diff tr.add{background:#7fb68518}table.diff tr.del{background:#e06c7518}table.diff tr.hunk td{color:var(--faint);background:var(--raise);padding:3px 8px}table.diff .sign{color:var(--faint);margin-right:8px}.settings,.new-session{flex-direction:column;height:100%;min-height:0;display:flex}.settings-body{flex:1;gap:28px;padding:0 24px;display:flex;overflow:auto}.settings-nav{flex-direction:column;flex:none;align-self:flex-start;gap:2px;width:200px;padding-top:20px;display:flex;position:sticky;top:0}.settings-nav a{color:var(--muted);border-radius:6px;padding:6px 10px}.settings-nav a:hover{background:var(--raise-2);color:var(--text)}.settings-nav a[aria-current=page]{background:var(--raise-2);color:var(--text);box-shadow:inset 2px 0 0 var(--accent);font-weight:500}.settings-search{margin-bottom:10px}.settings-search input{width:100%}.settings-content{flex:1;min-width:0;max-width:720px;padding:12px 0 48px}.settings-page-title{font:400 1.5rem var(--serif);margin:10px 0 4px}.settings-section{border-bottom:1px solid var(--line);padding:16px 0;scroll-margin-top:8px}.settings-section:last-child{border-bottom:0}.settings-section .section-title{font:400 1.125rem var(--serif);color:var(--text);margin:0 0 10px}.settings-section h3{color:var(--muted);font-size:.8125rem;font-weight:500}.settings-footer{margin-top:24px}.settings-results,.settings-list{border:1px solid var(--line);border-radius:10px;margin:8px 0;padding:0;list-style:none}.settings-results li,.settings-list li{border-bottom:1px solid var(--line)}.settings-results li:last-child,.settings-list li:last-child{border-bottom:0}.settings-results a,.settings-list a{color:inherit;align-items:center;gap:10px;padding:10px 12px;display:flex}.settings-results a{flex-direction:column;align-items:flex-start;gap:2px}.settings-results a:hover,.settings-list a:hover{background:var(--raise-2)}.settings-list .grow{flex-direction:column;gap:2px;min-width:0;display:flex}.settings-list .icon{color:var(--faint);flex:none}.settings-empty{padding:12px 0}.settings-hit{border-radius:6px;animation:2.4s ease-out settings-hit}@keyframes settings-hit{0%,40%{background:color-mix(in srgb, var(--accent) 22%, transparent);box-shadow:0 0 0 2px var(--accent)}to{background:0 0;box-shadow:0 0 0 2px #0000}}.list{border:1px solid var(--line);border-radius:10px;margin:0;padding:0;list-style:none}.list li{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:8px;padding:10px 12px;display:flex}.list li:last-child{border-bottom:0}.list li.disabled{opacity:.6}.name{font-weight:500}.switches{flex-direction:column;gap:10px;margin:10px 0 0;padding:0;list-style:none;display:flex}.appearance-theme{justify-content:space-between;align-items:center;gap:12px;display:flex}.theme-toggle{border:1px solid var(--line);background:var(--raise-2);border-radius:999px;gap:2px;padding:3px;display:inline-flex}.theme-choice{min-height:28px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:999px;align-items:center;gap:5px;padding:2px 9px;font-size:.75rem;display:inline-flex}.theme-choice:hover{color:var(--text)}.theme-choice[aria-checked=true]{background:var(--raise);color:var(--text);box-shadow:0 1px 3px var(--shadow)}.switch{cursor:pointer;justify-content:space-between;align-items:center;gap:12px;display:flex}.speed{align-items:center;gap:12px;display:flex}.speed input{accent-color:var(--accent);flex:1}.account-card{align-items:center;gap:12px;display:flex}.field{flex-direction:column;gap:4px;display:flex}.field label,.field-label{color:var(--muted);font-size:.7812rem}.field .row input{flex:1}.field-error{color:var(--err);margin:0;font-size:.75rem}.inherit{color:var(--faint);margin:0}.speech-card{flex-direction:column;gap:10px;display:flex}.speech-card legend{color:var(--muted);padding:0 6px}.key-summary{margin:0;font-size:.8125rem}.entry{flex-direction:column;gap:14px;max-width:440px;margin:0 auto;padding:12vh 20px 40px;display:flex}.brand-big{align-items:center;gap:12px;margin:0;font-size:1.875rem;display:flex}.pair-code{font-family:var(--mono);letter-spacing:.3em;font-size:1.25rem}.greeting{margin:0 0 18px;font-size:1.625rem}details.card summary{cursor:pointer;color:var(--muted)}.drawer-backdrop,.sheet-backdrop{z-index:30;background:#0009;position:fixed;inset:0}@media (max-width:760px){.shell.phone .sidebar{z-index:40;width:min(86vw,320px);padding-top:env(safe-area-inset-top);position:fixed;inset:0 auto 0 0;box-shadow:8px 0 32px #000a}.topbar{padding-top:env(safe-area-inset-top);height:calc(48px + env(safe-area-inset-top))}.home{padding:16px 14px 40px}.home-head h1{font-size:1.5rem}.column{padding:0 14px}.chip-server,.btn.changes{display:none}.rail{z-index:40;border:1px solid var(--line-2);width:auto;max-height:72vh;padding-bottom:calc(24px + env(safe-area-inset-bottom));border-radius:16px 16px 0 0;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -12px 40px #000a}.diff-panel{inset:calc(48px + env(safe-area-inset-top)) 0 0;border-radius:0}.settings-nav{display:none}.settings-body{padding:0 14px}.settings-page-title{display:none}.composer-meta .model-chip{max-width:40vw}.msg.user{max-width:92%}}.notify-status{border-radius:var(--r);border:1px solid var(--line);margin:8px 0;padding:8px 12px}.notify-status.warn{color:var(--warn);border-color:#5a4a2a}.notify-status.ok{color:var(--ok,inherit)}.notify-facts{grid-template-columns:max-content 1fr;gap:2px 12px;margin:0 0 8px;display:grid}.notify-facts dd{margin:0}.row-actions{flex-wrap:wrap;gap:8px;display:flex}.quiet-hours{flex-wrap:wrap;align-items:center;gap:8px;margin-top:6px;display:flex}.notify-summary{margin:4px 0 8px}.notify-status-row{flex-wrap:wrap;align-items:baseline;gap:4px 12px;margin:8px 0;display:flex}.notify-status-row .notify-status{flex:260px;margin:0}.notify-details summary{cursor:pointer;color:var(--muted)}.notify-details[open]{flex-basis:100%}.notify-details .notify-facts{margin:6px 0 0}.notify-group{border:1px solid var(--line);border-radius:10px;margin:8px 0 0}.notify-group>summary{cursor:pointer;flex-wrap:wrap;align-items:baseline;gap:4px 10px;padding:10px 12px;list-style:none;display:flex}.notify-group>summary::-webkit-details-marker{display:none}.notify-group>summary:before{content:"▸";color:var(--faint);width:.8em}.notify-group[open]>summary:before{content:"▾"}#notifications .notify-group>summary h4{margin:0}.notify-group-summary{text-align:right;flex:1;min-width:0}.notify-group>.switches{padding:0 12px 8px}.notify-group h4,#notifications h4{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin:14px 0 0;font-size:.8125rem;font-weight:500}.notify-kind{flex-direction:column;gap:2px;min-width:0;display:flex}.notify-kind .small{line-height:1.35}.switch input[type=checkbox]{flex:none}.notify-test{flex-wrap:wrap;align-items:center;gap:6px;display:inline-flex}.notify-test select{max-width:60vw}p.small.warn{color:var(--warn)}p.small.err{color:var(--err,#e5484d)}p.small.ok{color:var(--ok,inherit)}.voice-bar{flex-wrap:wrap}.voice-hint{color:var(--muted,inherit);flex-basis:100%;margin:2px 0 0}button.link{color:var(--accent,#fab283);cursor:pointer;font:inherit;background:0 0;border:0;padding:0;text-decoration:underline}.tap-to-start{width:100%;margin-bottom:8px;padding:14px;font-size:1.05em;display:block}.new-column{max-width:720px;padding-top:12vh}.new-composer .composer-box{padding:14px 12px 8px 16px}.new-composer textarea{resize:none;width:100%;min-height:72px;color:inherit;font:inherit;background:0 0;border:0;outline:0;font-size:.9375rem}.icon-send{background:var(--accent);width:32px;height:32px;color:var(--accent-ink);cursor:pointer;border:0;border-radius:50%;justify-content:center;align-items:center;display:inline-flex}.icon-send:disabled{background:var(--raise-2);color:var(--faint);cursor:not-allowed}.env-meta{flex-wrap:wrap;align-items:center;gap:4px;margin-top:8px;display:flex}.new-dir{overflow-wrap:anywhere;margin:6px 4px 0}.meta-chip{color:var(--faint);cursor:pointer;background:0 0;border:0;border-radius:6px;align-items:center;gap:6px;max-width:280px;padding:4px 8px;font-size:.7812rem;display:inline-flex}.meta-chip:hover:not(:disabled):not(.readonly){background:var(--raise-2);color:var(--text)}.meta-chip.readonly{cursor:default}.meta-chip .icon{flex:none;width:14px;height:14px}.meta-chip .online-dot{margin:0}.chip-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.meta-chip.folder-chip.unset{color:var(--text);box-shadow:inset 0 0 0 1px var(--line-2)}.meta-chip.folder-chip.unset.asked{color:var(--warn);box-shadow:inset 0 0 0 1px var(--warn)}.new-need-project{color:var(--warn);margin:6px 4px 0}.chip-caret{opacity:.6}.toggle-chip input{margin:0}.folder-menu{width:360px;max-width:calc(100vw - 16px);padding:6px}.folder-search{box-sizing:border-box;width:100%;margin-bottom:4px}.folder-list{max-height:50vh;overflow:auto}.folder-list .menu-hint{text-overflow:ellipsis;white-space:nowrap;max-width:160px;overflow:hidden}.rail-card h3{align-items:center}.card-toggle{color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;align-items:center;gap:4px;padding:0;display:inline-flex}.card-toggle:hover{color:var(--text)}.card-chevron{width:12px;height:12px;transition:transform .15s;transform:rotate(90deg)}.rail-card.collapsed .card-chevron{transform:rotate(0)}.rail-card.collapsed h3{margin-bottom:0}.new-column{box-sizing:border-box;width:100%}.menu-label{flex:1 0 auto;max-width:100%}.menu-hint{text-overflow:ellipsis;white-space:nowrap;flex:0 auto;min-width:0;overflow:hidden}.crumb{white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:4px;max-width:30%;font-size:.8125rem;text-decoration:none;display:inline-flex;overflow:hidden}.crumb:hover{color:var(--text)}.crumb-chev{width:12px;height:12px;transform:rotate(180deg)}.crumb-sep{margin:0 4px}.sync-note{z-index:30;pointer-events:none;background:var(--side);color:var(--muted,var(--faint));border:1px solid var(--line);border-radius:999px;padding:2px 10px;font-size:.857rem;position:absolute;top:6px;left:50%;transform:translate(-50%)}.sync-note.updated{color:var(--accent)}.jobs-badge{background:var(--line);min-width:16px;height:16px;color:var(--text);border-radius:8px;flex:none;justify-content:center;align-items:center;margin-left:4px;padding:0 4px;font-size:.75rem;line-height:1;display:inline-flex}.terminal-wait{white-space:nowrap;flex:none;margin-left:4px;font-size:.75rem}.job-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.job{grid-template-columns:auto 1fr;align-items:center;column-gap:8px;display:grid}.job .muted{grid-column:2}.job-command{text-overflow:ellipsis;white-space:nowrap;font-size:.893rem;overflow:hidden}.job-dot{background:var(--faint);border-radius:50%;width:7px;height:7px}.job-dot.on{background:var(--accent)}.job-dot.bad{background:var(--warn)}.retry-note{color:var(--warn);margin:0 0 6px}.activity-hint{border:1px solid var(--accent);border-radius:var(--r);background:color-mix(in srgb, var(--accent) 10%, transparent);margin:6px 0 10px;padding:8px 10px;font-size:.929rem}.scroller,.home-scroll{touch-action:pan-x pan-y}@media (pointer:coarse){input[type=search],input[type=text],input[type=password],input[type=number],select,textarea,.composer textarea,.new-composer textarea{font-size:max(16px,1rem)}}.banner.session-error{border-width:0 0 1px;border-color:color-mix(in srgb, var(--err) 45%, var(--line));background:color-mix(in srgb, var(--err) 10%, var(--bg));color:var(--text);border-radius:0;justify-content:flex-start;align-items:flex-start;margin:0}.session-error-mark,.turn-error-mark{color:var(--err);flex:none;font-weight:600;line-height:1.4}.session-error-body,.turn-error-body{flex-direction:column;gap:2px;min-width:0;display:flex}.session-error-head,.turn-error-head{color:var(--err);flex-wrap:wrap;align-items:baseline;gap:4px 8px;display:flex}.session-error-status,.turn-error-status{border:1px solid;border-radius:999px;padding:0 6px;font-size:.75rem}.session-error-where{font-size:.8125rem}.session-error-dismiss{flex:none;margin-top:-4px;margin-bottom:-4px;margin-left:auto}.session-error-message,.turn-error-message{overflow-wrap:anywhere;white-space:pre-wrap;max-height:8em;font-size:.8125rem;overflow:auto}.msg.turn-error{border:1px solid color-mix(in srgb, var(--err) 45%, var(--line));border-radius:var(--r);background:color-mix(in srgb, var(--err) 8%, transparent);align-items:flex-start;gap:8px;padding:8px 12px;display:flex}.msg.turn-retry{color:var(--muted);overflow-wrap:anywhere;align-items:baseline;gap:8px;margin:6px 0;font-size:.8125rem;display:flex}.msg.turn-retry.waiting{color:var(--warn)}.turn-retry-mark{flex:none}.error-badge{background:var(--err);min-width:16px;height:16px;color:var(--bg);border-radius:8px;flex:none;justify-content:center;align-items:center;margin-left:4px;font-size:.75rem;font-weight:700;line-height:1;display:inline-flex}.col-now.error,.home-item-meta.error{color:var(--err)}.rail-error{color:var(--err);border:1px solid color-mix(in srgb, var(--err) 45%, var(--line));border-radius:var(--r);overflow-wrap:anywhere;margin:0 0 10px;padding:6px 10px}@media (max-width:760px){.banner.session-error{padding:8px 14px}.session-error-message{max-height:5.5em}}.recording-indicator{border:1px solid var(--err);min-height:22px;color:var(--err);white-space:nowrap;border-radius:999px;flex:none;align-items:center;gap:5px;padding:0 8px;font-size:.75rem;font-weight:500;text-decoration:none;display:inline-flex}.recording-indicator:hover{background:color-mix(in srgb, var(--err) 10%, transparent)}.recording-indicator:focus-visible{outline:2px solid var(--err);outline-offset:2px}.recording-indicator.no-audio{border-style:dashed}.recording-dot{background:var(--err);border-radius:50%;flex:none;width:8px;height:8px}.recording-note{color:var(--warn);white-space:nowrap}.concierge-status .recording-indicator,.concierge-status .recording-note{vertical-align:middle;margin-left:6px}.recording-details{gap:4px;margin:6px 0 0;padding-left:18px;display:grid}.recording-head{flex-wrap:wrap;align-items:center;gap:8px;margin:12px 0 6px;display:flex}.recording-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.recording-row{border:1px solid var(--line);border-radius:8px;gap:4px;padding:8px 10px;display:grid}.recording-live{color:var(--err)}.recording-actions{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.recording-segment{width:64px}.md .md-preview{border:1px solid var(--line);color:var(--accent);font:inherit;cursor:pointer;vertical-align:baseline;background:0 0;border-radius:6px;margin-left:4px;padding:0 6px;font-size:.85em;line-height:1.5}.md .md-preview:disabled{cursor:progress;opacity:.7}.md .md-preview-err{color:var(--err);overflow-wrap:anywhere;padding:0 4px;font-size:.9em}