@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.
- package/CHANGELOG.md +152 -0
- package/README.md +75 -16
- package/package.json +5 -1
- package/packages/claude-code/package.json +1 -1
- package/packages/claude-code/src/wrapper.ts +2 -2
- package/packages/cli/dist/hub-cli.js +1413 -523
- package/packages/cli/package.json +1 -1
- package/packages/cli/src/bootstrap/PHASE3-CONTRACT.md +112 -0
- package/packages/cli/src/bootstrap/adapters/node-services/control.ts +164 -21
- package/packages/cli/src/bootstrap/adapters/node-services/plan.ts +24 -7
- package/packages/cli/src/bootstrap/adapters/node-services/render.ts +116 -9
- package/packages/cli/src/bootstrap/adapters/node-services/validate.ts +8 -2
- package/packages/cli/src/bootstrap/contracts/actions.ts +8 -6
- package/packages/cli/src/bootstrap/contracts/discovery.ts +4 -3
- package/packages/cli/src/bootstrap/contracts/exec.ts +4 -2
- package/packages/cli/src/bootstrap/contracts/paths.ts +2 -1
- package/packages/cli/src/bootstrap/contracts/platform.ts +5 -5
- package/packages/cli/src/bootstrap/discovery/discover.ts +7 -2
- package/packages/cli/src/bootstrap/discovery/host.ts +2 -0
- package/packages/cli/src/bootstrap/preview/plan.ts +5 -1
- package/packages/cli/src/bootstrap/profiles/desired.ts +16 -1
- package/packages/cli/src/bootstrap/profiles/history.ts +2 -1
- package/packages/cli/src/bootstrap/profiles/upgrade.ts +2 -2
- package/packages/cli/src/bootstrap/release/assets.ts +4 -1
- package/packages/cli/src/cli.ts +23 -10
- package/packages/cli/src/http.ts +1 -0
- package/packages/cli/src/launches.ts +5 -1
- package/packages/cli/src/mcp.ts +28 -8
- package/packages/cli/src/messaging.ts +14 -0
- package/packages/cli/src/node.ts +94 -12
- package/packages/cli/src/setup/commands.ts +27 -7
- package/packages/cli/src/setup/runtime.ts +31 -4
- package/packages/cli/src/team-intake-mcp.ts +26 -2
- package/packages/codex/package.json +1 -1
- package/packages/codex/src/wrapper.ts +2 -2
- package/packages/node/package.json +1 -1
- package/packages/node/src/config.ts +49 -17
- package/packages/node/src/git.ts +16 -2
- package/packages/node/src/harnesses.ts +54 -9
- package/packages/node/src/host.ts +61 -15
- package/packages/node/src/opencode-service.ts +111 -0
- package/packages/node/src/opencode-warm.ts +11 -5
- package/packages/node/src/run.ts +50 -5
- package/packages/preset/package.json +1 -1
- package/packages/protocol/package.json +1 -1
- package/packages/protocol/schema/app-delivery/v1.schema.json +677 -0
- package/packages/protocol/src/artifacts.ts +43 -0
- package/packages/protocol/src/credentials.ts +38 -0
- package/packages/protocol/src/index.ts +59 -6
- package/packages/protocol/src/launch.ts +46 -6
- package/packages/protocol/src/markdown.ts +753 -0
- package/packages/protocol/src/media-allowlist.ts +240 -0
- package/packages/protocol/src/media.ts +120 -0
- package/packages/protocol/src/preview-bundle.ts +221 -0
- package/packages/protocol/src/voice-recording.ts +8 -0
- package/packages/runtime-openshell/package.json +1 -1
- package/packages/runtime-sdk/package.json +1 -1
- package/packages/sdk/package.json +1 -1
- package/packages/sdk/src/client.ts +17 -3
- package/packages/sdk/src/errors.ts +1 -0
- package/packages/sdk/src/team-intake.ts +8 -0
- package/packages/sdk/src/types.ts +16 -2
- package/packages/spoke-sdk/package.json +1 -1
- package/src/central/agent/delivery.ts +35 -6
- package/src/central/agent/errors.ts +2 -0
- package/src/central/agent/events.ts +11 -2
- package/src/central/agent/launch-engine.ts +65 -4
- package/src/central/agent/launch-routes.ts +8 -0
- package/src/central/agent/launch-spec.ts +22 -3
- package/src/central/agent/launch-store.ts +2 -2
- package/src/central/agent/message-routes.ts +49 -11
- package/src/central/agent/messages.ts +17 -4
- package/src/central/agent/not-after.ts +28 -0
- package/src/central/agent/placement.ts +36 -4
- package/src/central/agent/routes.ts +3 -1
- package/src/central/agent/webhook-routes.ts +21 -9
- package/src/central/agent/webhooks.ts +27 -9
- package/src/central/artifacts/host.ts +3 -1
- package/src/central/artifacts/maintenance.ts +2 -1
- package/src/central/artifacts/preview-bundle.ts +81 -0
- package/src/central/artifacts/previews.ts +94 -0
- package/src/central/artifacts/routes.ts +12 -1
- package/src/central/artifacts/store.ts +198 -8
- package/src/central/config.ts +34 -0
- package/src/central/fetch-budget.ts +59 -0
- package/src/central/fetcher.ts +372 -0
- package/src/central/http.ts +277 -22
- package/src/central/install/CONTRACT.md +4 -4
- package/src/central/install/install.ps1 +37 -5
- package/src/central/install/render.ts +13 -8
- package/src/central/media-remote.ts +248 -0
- package/src/central/media-timeline.ts +317 -0
- package/src/central/media-unfurl.ts +119 -0
- package/src/central/profiles/content.ts +3 -35
- package/src/central/recording/routes.ts +2 -2
- package/src/central/recording/schema.ts +3 -1
- package/src/central/registry.ts +449 -21
- package/src/central/spoke-ws.ts +17 -3
- package/src/central/store.ts +21 -0
- package/src/central/teams/intake-routes.ts +2 -1
- package/src/central/teams/intake.ts +200 -15
- package/src/central/unfurl-parse.ts +313 -0
- package/src/index.ts +68 -8
- package/src/speakable.ts +33 -1
- package/src/spoke/conversation.ts +7 -4
- package/src/spoke/deliver.ts +19 -0
- package/src/spoke/media-bytes.ts +171 -0
- package/src/spoke/media-policy.ts +394 -0
- package/src/spoke/media.ts +189 -0
- package/src/spoke/own-server.ts +30 -0
- package/src/spoke/preview-bundle.ts +538 -0
- package/src/spoke/spoke.ts +387 -17
- package/src/spoke/timeline.ts +59 -5
- package/src/spoke/voice-front.ts +335 -0
- package/web/dist/assets/24BXRY42-Zfr7jm_p.js +2 -0
- package/web/dist/assets/4FHPYW2L-C6Z67098.js +2 -0
- package/web/dist/assets/4LWW3ZNH-CUiYeygH.js +1 -0
- package/web/dist/assets/5THPTBWS-Ce_hS451.js +1 -0
- package/web/dist/assets/5XYWFMKW-CW-BCKiK.js +4 -0
- package/web/dist/assets/64PMEAB3-BjpCDGU9.js +8 -0
- package/web/dist/assets/6BEWHPQE-BpNa96Ze.js +2 -0
- package/web/dist/assets/6PIGVMFT-YXn9Hgnb.js +1 -0
- package/web/dist/assets/75JW6PN6-BFpDBuGN.js +2 -0
- package/web/dist/assets/7WLXJQOR-D6QVYUu9.js +1 -0
- package/web/dist/assets/7XWI72E6-BMuIspEy.js +2 -0
- package/web/dist/assets/A4UD2L5Z-BQzcD9dU.js +8 -0
- package/web/dist/assets/ArtifactPage-BKISN-Qj.js +1 -0
- package/web/dist/assets/ArtifactPane-CKOiAUNH.js +1 -0
- package/web/dist/assets/ArtifactWorkbench-d7R1o-rs.js +6 -0
- package/web/dist/assets/BGW36YJW-CJMhya8S.js +4 -0
- package/web/dist/assets/CGIZI67J-DYDSLME8.js +2 -0
- package/web/dist/assets/DKTLEL5E-DciMwFJ1.js +1 -0
- package/web/dist/assets/DNNCRC2E-BIeKf5t-.js +5 -0
- package/web/dist/assets/Diagram-azw2B_QH.js +1 -0
- package/web/dist/assets/Diagram-vdpmp3xu.css +1 -0
- package/web/dist/assets/E67EBMDD--AucIw59.js +5 -0
- package/web/dist/assets/EFYWJBJK-CVywe_D5.js +1 -0
- package/web/dist/assets/EXE5EH6O-DR1IHCTr.js +4 -0
- package/web/dist/assets/FTXIJQGB-BZVuiBn1.js +1 -0
- package/web/dist/assets/G3MDBVQH-BZmnMkFw.js +1 -0
- package/web/dist/assets/G6GPDDNC-DEz8F449.js +2 -0
- package/web/dist/assets/G76NGGFM-CrB2V34K.js +1 -0
- package/web/dist/assets/GH6G3TJC-D3RTYEH4.js +2 -0
- package/web/dist/assets/HPNUA7RO-B19NeNOJ.js +1 -0
- package/web/dist/assets/HQRGC5D7-Dmpzq6Rn.js +4 -0
- package/web/dist/assets/IX6Z2TVR-DphRHnek.js +5 -0
- package/web/dist/assets/J77NQRCJ-B7AGcxvw.js +3 -0
- package/web/dist/assets/JAD36DTZ-B9-dbsS0.js +5 -0
- package/web/dist/assets/LF3NJQAX-koL91UZ9.js +2 -0
- package/web/dist/assets/LRZCOFJZ-Cdjasfuf.js +6 -0
- package/web/dist/assets/Library-CcjZXsfF.js +2 -0
- package/web/dist/assets/Lightbox-C8KNKwOA.css +1 -0
- package/web/dist/assets/Lightbox-Du56MXGX.js +1 -0
- package/web/dist/assets/MediaImage-Ds_JUx3a.js +4 -0
- package/web/dist/assets/N5NF2FGY-OuapYTfr.js +2 -0
- package/web/dist/assets/N7OWWQHY-BNLd-Q_U.js +2 -0
- package/web/dist/assets/NT5JY5WP-1lJM-aun.js +1 -0
- package/web/dist/assets/OT7W3RNY-jDL3drzX.js +4 -0
- package/web/dist/assets/P67P66DB-CE-opRb8.js +3 -0
- package/web/dist/assets/PFLLLM7K-DDJFgzW3.js +2 -0
- package/web/dist/assets/PUAMC4MJ-CtBm-WuU.js +12 -0
- package/web/dist/assets/PVFCHRLY-CG5JXv60.js +2 -0
- package/web/dist/assets/ProfilesDestination-DdzbzmeK.js +1 -0
- package/web/dist/assets/QQW2P742-BbcEkpa4.js +1 -0
- package/web/dist/assets/RVARI57O-CgA1WoRv.js +1 -0
- package/web/dist/assets/S63OEDPG-CKlhpvl2.js +3 -0
- package/web/dist/assets/SG5TVYLW-BBtiwXPL.js +2 -0
- package/web/dist/assets/TeamsPage-CDyjrK-I.js +1 -0
- package/web/dist/assets/UGRSUGA2-urZ_hx83.js +5 -0
- package/web/dist/assets/V44WA6U7-DYfX3OlM.js +1 -0
- package/web/dist/assets/V67O4WWV-xYxJ00QW.js +1 -0
- package/web/dist/assets/VBUCM3YD-JHGjuJC_.js +1 -0
- package/web/dist/assets/VINGRCPA-DZuJa3SH.js +7 -0
- package/web/dist/assets/WL6DNKX4-BHqripdA.js +2 -0
- package/web/dist/assets/WQ63CJYP-D6G5frDY.js +2 -0
- package/web/dist/assets/Watchtower-DYwoUWME.js +2 -0
- package/web/dist/assets/XOYAOB3S-L-KeA1EF.js +13 -0
- package/web/dist/assets/Y5LQLG3M-dr2-erb8.js +2 -0
- package/web/dist/assets/YIK6JTN6--1t-Ud8k.js +2 -0
- package/web/dist/assets/artifacts-DU9uRgs1.js +1 -0
- package/web/dist/assets/index-C3ci5UtY.css +1 -0
- package/web/dist/assets/index-LNMZCqgE.js +36 -0
- package/web/dist/assets/lazy-f3CuUNJZ.js +43 -0
- package/web/dist/assets/live-ycZ_aQZO.js +5 -0
- package/web/dist/assets/mermaid.worker-WDVRAh32.js +1 -0
- package/web/dist/assets/pane-layout-0RrLHGDr.js +1 -0
- package/web/dist/assets/preload-helper-BLdHbfdN.js +1 -0
- package/web/dist/assets/{renderer2d-CYag1CnR.js → renderer2d-BIwbgRoX.js} +1 -1
- package/web/dist/assets/{renderer3d-BRB6rgDJ.js → renderer3d-C1a7eYGQ.js} +1 -1
- package/web/dist/assets/{safe-area-fOy0AOuG.js → safe-area-DHhPy61Q.js} +1 -1
- package/web/dist/assets/{silero-worker-DhlIHyD_.js → silero-worker-e802lB5T.js} +1 -1
- package/web/dist/assets/smart-turn-v3.2-cpu-WpeLRbPA.onnx +0 -0
- package/web/dist/assets/smart-turn-worker-DaVJPdvJ.js +11 -0
- package/web/dist/assets/source-BWlvaODa.js +1 -0
- package/web/dist/assets/toast-Cuu2K0hx.js +1 -0
- package/web/dist/assets/ui-CFB4wQfF.js +3 -0
- package/web/dist/index.html +8 -6
- package/web/src/voice/turn/LICENSE +28 -0
- package/web/dist/assets/ArtifactPage-Dq7VW-bU.js +0 -1
- package/web/dist/assets/ArtifactPane-DKwbMTX9.js +0 -1
- package/web/dist/assets/ArtifactWorkbench-vrgIfncX.js +0 -6
- package/web/dist/assets/Library-D6-Go6Cu.js +0 -2
- package/web/dist/assets/ProfilesDestination-BOML2Dgf.js +0 -1
- package/web/dist/assets/TeamsPage-CNBTE8gB.js +0 -1
- package/web/dist/assets/Watchtower-Dor1Ubjy.js +0 -2
- package/web/dist/assets/hub-CrbItiwP.js +0 -13
- package/web/dist/assets/index-82Ce0IAf.css +0 -1
- package/web/dist/assets/index-D9SP3_0z.js +0 -22
- package/web/dist/assets/live-BNJgy0vg.js +0 -5
- package/web/dist/assets/pane-layout-EdR1kRrG.js +0 -1
- package/web/dist/assets/preload-helper-DqrJTq0t.js +0 -1
- package/web/dist/assets/source-Wbq35qGp.js +0 -1
- package/web/dist/assets/ui-j5FFk90B.js +0 -3
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import{$ as e,At as t,C as n,Ct as r,Et as i,Ht as a,J as o,K as s,Lt as c,Mt as l,Nt as u,Pt as d,Q as f,T as p,Ut as m,Vt as h,W as g,Wt as _,X as v,Y as y,_t as b,bt as x,dt as S,et as C,ft as w,ht as T,it as E,lt as D,nt as O,pt as k,q as A,t as j,tt as M,u as N,ut as P,yt as F}from"./ui-j5FFk90B.js";import{A as I}from"./hub-CrbItiwP.js";import{t as L}from"./plural-Bspvoqfq.js";import{O as R}from"./index-D9SP3_0z.js";var z={teamsPerUser:100,rolesPerTeam:32,edgesPerTeam:256,sessionsPerRole:16,openIntakePerTeam:500};function ee(e){if(!f(e))return`body must be an object`;if(!A(e.name))return`name must be 2–40 lowercase letters, digits or dashes`;if(!s(e.title))return`title must be 1–120 characters of text`;if(e.description!==void 0&&!o(e.description,4e3))return`description must be at most ${g} characters`;if(e.mode!==`open`&&e.mode!==`restricted`)return`mode must be open or restricted`;if(!Array.isArray(e.roles)||e.roles.length===0||e.roles.length>z.rolesPerTeam)return`roles must list 1–${z.rolesPerTeam} roles`;let t=new Set;for(let n of e.roles){if(!f(n)||!A(n.name))return`each role needs a slug name`;if(t.has(n.name))return`role ${n.name} is listed twice`;if(t.add(n.name),n.label!==void 0&&!s(n.label))return`role ${n.name} label must be 1–120 characters`;if(n.externalContact!==void 0&&typeof n.externalContact!=`boolean`)return`role ${n.name} externalContact must be true or false`}if(typeof e.entryRole!=`string`||!t.has(e.entryRole))return`entryRole must name one of the roles`;let n=e.edges??[];if(!Array.isArray(n)||n.length>z.edgesPerTeam)return`edges must be a list of at most ${z.edgesPerTeam}`;for(let e of n){if(!f(e)||typeof e.from!=`string`||typeof e.to!=`string`||!t.has(e.from)||!t.has(e.to))return`each edge must connect two listed roles`;if(e.from===e.to)return`an edge must connect two different roles`;if(!Array.isArray(e.kinds)||e.kinds.length===0||!e.kinds.every(e=>e===`msg`||e===`ask`))return`edge kinds must be msg and/or ask`;if(e.direction!==`one-way`&&e.direction!==`two-way`)return`edge direction must be one-way or two-way`}return v(e.tags)??y(e.metadata)}var B=e=>typeof e==`object`&&!!e&&!Array.isArray(e),V=e=>typeof e==`string`&&e.length>0?e:void 0,H=e=>typeof e==`number`&&Number.isFinite(e)?e:void 0,U=e=>Array.isArray(e)?e.filter(e=>typeof e==`string`):[],W=/^[a-z0-9][a-z0-9-]{0,38}[a-z0-9]$/,G=e=>({ok:!1,error:e}),K=e=>({ok:!0,spec:e});function te(e){if(!B(e)||!V(e.name))return;let t={name:e.name};for(let n of[`label`,`description`])V(e[n])&&(t[n]=e[n]);typeof e.externalContact==`boolean`&&(t.externalContact=e.externalContact),Array.isArray(e.responsibilities)&&(t.responsibilities=U(e.responsibilities)),B(e.profile)&&V(e.profile.profileID)&&(t.profile={profileID:e.profile.profileID,...H(e.profile.version)===void 0?{}:{version:e.profile.version}}),B(e.prefs)&&(t.prefs=Object.fromEntries(Object.entries(e.prefs).filter(([,e])=>typeof e==`string`)));for(let n of[`minMembers`,`maxMembers`])H(e[n])!==void 0&&(t[n]=e[n]);return t}function ne(e){if(!B(e)||!V(e.from)||!V(e.to))return;let t=U(e.kinds).filter(e=>e===`msg`||e===`ask`);return{from:e.from,to:e.to,kinds:t,direction:e.direction===`two-way`?`two-way`:`one-way`}}function re(e){if(!B(e)||!V(e.name)||typeof e.title!=`string`||!Array.isArray(e.roles))return;let t=B(e.metadata)?Object.fromEntries(Object.entries(e.metadata).filter(([,e])=>typeof e==`string`)):void 0;return{name:e.name,title:e.title,...V(e.description)?{description:e.description}:{},mode:e.mode===`open`?`open`:`restricted`,roles:e.roles.map(te).filter(e=>!!e),entryRole:typeof e.entryRole==`string`?e.entryRole:``,edges:Array.isArray(e.edges)?e.edges.map(ne).filter(e=>!!e):[],...Array.isArray(e.tags)?{tags:U(e.tags)}:{},...t?{metadata:t}:{},...Array.isArray(e.projects)?{projects:U(e.projects)}:{}}}function ie(e){if(!B(e)||!B(e.team))return;let t=e.team,n=re(t);if(!V(t.id)||!n||H(t.revision)===void 0)return;let r=B(e.draft)?re(e.draft.spec):void 0;return{team:{id:t.id,name:n.name,title:n.title,revision:t.revision,version:H(t.version)??1,state:t.state===`archived`?`archived`:`active`,paused:t.paused===!0,hasDraft:B(t.draft)||!!r},published:n,...r?{draft:r}:{}}}var ae=(e,t)=>e.roles.some(e=>e.name===t);function oe(e,t,n){let r=t.trim();if(!W.test(r))return G(`A role name is 2–40 lowercase letters, digits or dashes`);if(ae(e,r))return G(`There is already a role ${r}`);if(e.roles.length>=z.rolesPerTeam)return G(`A team has at most ${z.rolesPerTeam} roles`);let i=n?.trim();return K({...e,roles:[...e.roles,{name:r,...i?{label:i}:{}}]})}function se(e,t){return ae(e,t)?e.entryRole===t?G(`${t} is the entry role: make another role the entry role first`):K({...e,roles:e.roles.filter(e=>e.name!==t),edges:e.edges.filter(e=>e.from!==t&&e.to!==t)}):G(`There is no role ${t}`)}function ce(e,t,n){let r=e.roles.findIndex(e=>e.name===t);if(r<0)return G(`There is no role ${t}`);let i={...e.roles[r]};for(let[e,t]of Object.entries(n))t===void 0||t===``||t===!1?delete i[e]:i[e]=typeof t==`string`?t.trim():t;return i.name=t,K({...e,roles:e.roles.map((e,t)=>t===r?i:e)})}function le(e,t){return ae(e,t)?K({...e,entryRole:t}):G(`There is no role ${t}`)}function ue(e,t){if(!ae(e,t.from)||!ae(e,t.to))return G(`A path connects two roles of the team`);if(t.from===t.to)return G(`A path connects two different roles`);let n=[`msg`,`ask`].filter(e=>t.kinds.includes(e));if(n.length===0)return G(`Choose what the path permits: messages, asks or both`);let r=e=>e.from===t.from&&e.to===t.to||e.from===t.to&&e.to===t.from&&(t.direction===`two-way`||e.direction===`two-way`),i=e.edges.filter(e=>!r(e));return i.length>=z.edgesPerTeam?G(`A team has at most ${z.edgesPerTeam} paths`):K({...e,edges:[...i,{from:t.from,to:t.to,kinds:n,direction:t.direction}]})}function de(e,t,n){let r=e=>e.from===t&&e.to===n||e.direction===`two-way`&&e.from===n&&e.to===t;return e.edges.some(r)?K({...e,edges:e.edges.filter(e=>!r(e))}):G(`There is no path ${t} → ${n}`)}var fe=(e,t)=>K({...e,mode:t});function pe(e,t){let n={...e};if(t.title!==void 0&&(n.title=t.title.trim()),t.description!==void 0){let e=t.description.trim();e?n.description=e:delete n.description}if(t.tags!==void 0){let e=[...new Set(t.tags.split(/[\s,]+/).filter(Boolean))];e.length?n.tags=e:delete n.tags}if(t.metadata!==void 0){let e={};for(let n of t.metadata.split(`
|
|
2
|
-
`)){if(!n.trim())continue;let t=n.indexOf(`=`);if(t<=0)return G(`Metadata is key=value, one per line ("${n.trim().slice(0,40)}")`);e[n.slice(0,t).trim()]=n.slice(t+1).trim()}Object.keys(e).length?n.metadata=e:delete n.metadata}return K(n)}var me=e=>(e.tags??[]).join(`, `),he=e=>Object.entries(e.metadata??{}).map(([e,t])=>`${e}=${t}`).join(`
|
|
3
|
-
`);function ge(e){let t=[],n=new Set(e.roles.map(e=>e.name));e.roles.length===0?t.push({level:`error`,field:`roles`,message:`Add at least one role`}):n.has(e.entryRole)||t.push({level:`error`,field:`entry`,message:`Choose an entry role: it receives the team's work`});let r=new Map;for(let i of e.edges){let e=`edge:${i.from}>${i.to}`;if(!n.has(i.from)||!n.has(i.to)){t.push({level:`error`,field:e,message:`The path ${i.from} → ${i.to} points at a role that isn't in the team`});continue}let a=[i.from,i.to].sort().join(`>`),o=r.get(a);if(o&&(o.from===i.from||o.direction===`two-way`||i.direction===`two-way`)){let[n,r]=[i.from,i.to].sort();t.push({level:`error`,field:e,message:o.from===i.from&&o.to===i.to?`${i.from} → ${i.to} is drawn twice`:`${n} and ${r} already have a two-way path: edit that one`})}else r.set(a,i)}if(!t.some(e=>e.level===`error`)){let n=ee(e);n&&t.push({level:`error`,field:/^roles? |^each role|^role /.test(n)?`roles`:/^entryRole/.test(n)?`entry`:/edge/.test(n)?`edges`:`team`,message:n})}if(e.mode===`restricted`&&e.roles.length>1)for(let n of e.roles)e.edges.some(e=>e.from===n.name||e.to===n.name)||t.push({level:`warning`,field:`role:${n.name}`,message:`${n.name} has no path: in a restricted team its members can't message anyone in the team`});return t}var _e=e=>e.some(e=>e.level===`error`),ve=e=>({past:[],present:e,future:[]});function ye(e,t){return JSON.stringify(t)===JSON.stringify(e.present)?e:{past:[...e.past,e.present].slice(-100),present:t,future:[]}}function be(e){return e.past.length===0?e:{past:e.past.slice(0,-1),present:e.past[e.past.length-1],future:[e.present,...e.future]}}function xe(e){return e.future.length===0?e:{past:[...e.past,e.present],present:e.future[0],future:e.future.slice(1)}}function Se(e,t){return{expectedRevision:t,title:e.title,description:e.description??null,mode:e.mode,roles:e.roles,entryRole:e.entryRole,edges:e.edges,tags:e.tags?.length?e.tags:null,metadata:e.metadata&&Object.keys(e.metadata).length?e.metadata:null,...e.projects?{projects:e.projects.length?e.projects:null}:{}}}function Ce(e){let t=e.name.trim();if(!W.test(t))return{ok:!1,field:`name`,error:`The name is the team's address (#name): 2–40 lowercase letters, digits or dashes. It can't change later.`};let n=e.title.trim();if(!n||n.length>120)return{ok:!1,field:`title`,error:`Give the team a title (up to 120 characters)`};let r=e.entryRole.trim();if(!W.test(r))return{ok:!1,field:`entry`,error:`The entry role (for example pm) is 2–40 lowercase letters, digits or dashes`};let i=e.entryLabel?.trim();return{ok:!0,body:{name:t,title:n,mode:e.mode,roles:[{name:r,...i?{label:i}:{}}],entryRole:r,edges:[]}}}var we=e=>JSON.stringify(e,(e,t)=>B(t)?Object.fromEntries(Object.keys(t).sort().map(e=>[e,t[e]])):t);function Te(e,t){return{added:[...t.keys()].filter(t=>!e.has(t)),removed:[...e.keys()].filter(e=>!t.has(e)),changed:[...t.keys()].filter(n=>e.has(n)&&we(e.get(n))!==we(t.get(n)))}}function Ee(e,t){let n=[`title`,`description`,`mode`,`entryRole`].filter(n=>(e[n]??``)!==(t[n]??``)),r=e=>new Map(e.roles.map(e=>[e.name,e])),i=e=>new Map(e.edges.map(e=>[`${e.from}>${e.to}`,{...e,kinds:[...e.kinds].sort()}])),a=(e=[],t=[])=>({added:t.filter(t=>!e.includes(t)),removed:e.filter(e=>!t.includes(e))});return{fields:n,roles:Te(r(e),r(t)),edges:Te(i(e),i(t)),tags:a(e.tags,t.tags),metadata:Te(new Map(Object.entries(e.metadata??{})),new Map(Object.entries(t.metadata??{}))),projects:a(e.projects,t.projects)}}function De(e){if(!B(e)||!B(e.diff))return;let t=e.diff,n=e=>({added:B(e)?U(e.added):[],removed:B(e)?U(e.removed):[],changed:B(e)?U(e.changed):[]}),r=e=>({added:B(e)?U(e.added):[],removed:B(e)?U(e.removed):[]});return{fields:U(t.fields),roles:n(t.roles),edges:n(t.edges),tags:r(t.tags),metadata:n(t.metadata),projects:r(t.projects)}}var Oe={title:`title`,description:`description`,mode:`communication (open/restricted)`,entryRole:`entry role`},ke=e=>e.replace(`>`,` → `);function Ae(e){let t=[];e.fields.length&&t.push(`Changed: ${e.fields.map(e=>Oe[e]??e).join(`, `)}`);let n=(e,n,r=e=>e)=>n.length&&t.push(`${e}: ${n.map(r).join(`, `)}`);return n(`Roles added`,e.roles.added),n(`Roles removed`,e.roles.removed),n(`Roles changed`,e.roles.changed),n(`Paths added`,e.edges.added,ke),n(`Paths removed`,e.edges.removed,ke),n(`Paths changed`,e.edges.changed,ke),n(`Tags added`,e.tags.added),n(`Tags removed`,e.tags.removed),n(`Metadata added`,e.metadata.added),n(`Metadata removed`,e.metadata.removed),n(`Metadata changed`,e.metadata.changed),n(`Projects added`,e.projects.added),n(`Projects removed`,e.projects.removed),t}var je=e=>Ae(e).length===0;function Me(e){let t=e,n=typeof t?.message==`string`&&t.message?t.message:String(e);if(t?.status===409&&t.code===`conflict`){let e=H(t.details?.currentRevision);return{kind:`conflict`,message:`Someone changed this team${e===void 0?``:` (revision ${e} now)`}.`,...e===void 0?{}:{currentRevision:e},missing:[]}}return t?.status===403&&t.code===`needs_user`?{kind:`needs_user`,message:n,missing:(Array.isArray(t.details?.missing)?t.details.missing:[]).filter(B).map(e=>`${V(e.verb)??`?`}${V(e.directory)?` in ${e.directory}`:``}`)}:{kind:`error`,message:n,missing:[]}}function Ne(e){let t=B(e)?e.roster:void 0;if(!B(t)||!Array.isArray(t.roles))return;let n=t.roles.filter(B).map(e=>({role:String(e.role??``),entry:e.entry===!0,minMembers:H(e.minMembers)??0,maxMembers:H(e.maxMembers)??z.sessionsPerRole,vacant:e.vacant===!0,understaffed:e.understaffed===!0,launching:H(e.launching)??0,seats:(Array.isArray(e.seats)?e.seats:[]).filter(B).map(e=>B(e.staffing)?{s:e.staffing,presence:V(e.presence)??`unknown`}:void 0).filter(e=>!!e&&!!V(e.s.id)&&!!V(e.s.sessionID)).map(({s:e,presence:t})=>({staffingID:e.id,sessionID:e.sessionID,revision:H(e.revision)??1,generation:H(e.generation)??1,presence:t}))}));return{roles:n,seats:n.flatMap(e=>e.seats.map(t=>({sessionID:t.sessionID,role:e.role})))}}function Pe(e,t,n,r){let i={label:n.title||n.name,name:t.name,mode:n.mode,roles:n.roles.map(e=>e.name),entryRole:n.entryRole,tags:n.tags??[],...n.metadata?{metadata:n.metadata}:{}},a=e.nodes.some(e=>e.id===t.id),o=e.nodes.map(e=>{if(e.id===t.id){let{metadata:t,...n}=e;return{...n,...i}}if(e.kind!==`session`||!r)return e;let n=e.seats.filter(e=>e.teamID!==t.id),a=r.filter(t=>t.sessionID===e.id).map(e=>({teamID:t.id,role:e.role}));if(!a.length&&n.length===e.seats.length&&!e.teamIDs.includes(t.id))return e;let o=[...n,...a],s=[...new Set([...e.teamIDs.filter(e=>e!==t.id||a.length),...o.map(e=>e.teamID)])];return{...e,seats:o,teamIDs:s}});return a||o.push({id:t.id,kind:`team`,depth:0,workspaceIDs:[],teamIDs:[],harnesses:[],seats:[],projects:n.projects??[],...i}),{...e,nodes:o}}function Fe(e,t){let n=`role:${t}:`;return e.startsWith(n)?e.slice(n.length):void 0}function Ie(e,t,n){let r=Fe(n,e);if(r===void 0)return;let i=Fe(t,e);if(i!==void 0)return i===r?void 0:{type:`connect`,from:i,to:r};if(t.startsWith(`ses_`))return{type:`attach`,sessionID:t,role:r}}function Le(e){let t=e.repo.trim();if(!t.startsWith(`/`))return{ok:!1,field:`repo`,error:`Name the repository on the machine (an absolute path)`};let n=e.branch?.trim();if(e.mode===`worktree`&&!n)return{ok:!1,field:`branch`,error:`A worktree needs a branch name`};let r=e.remote?.trim();if(e.mode===`clone`&&!r)return{ok:!1,field:`remote`,error:`A clone needs the remote URL`};let i=e.name?.trim();if(i&&!W.test(i))return{ok:!1,field:`name`,error:`A session name is 2–40 lowercase letters, digits or dashes`};let a=e.profile?.trim()?/^(.+)@([0-9]+)$/.exec(e.profile.trim()):void 0;if(e.profile?.trim()&&!a)return{ok:!1,field:`profile`,error:`Choose a profile version`};let o=e.prompt?.trim();return{ok:!0,body:{role:e.role,launch:{workspace:{repo:t,mode:e.mode,...n&&e.mode===`worktree`?{branch:n}:{},...r&&e.mode===`clone`?{remote:r}:{}},...e.harness?{harness:e.harness}:{},...e.machine?{placement:{machine:e.machine}}:{},...a?{agentProfile:{profileID:a[1],version:Number(a[2])}}:{},...i?{name:i}:{},...o?{prompt:o}:{}}}}}var Re=[`low`,`normal`,`high`,`urgent`];function ze(e){let t=e.title.trim();if(!t)return{ok:!1,field:`title`,error:`Give the task a title`};if(t.length>120||/\n/.test(t))return{ok:!1,field:`title`,error:`A title is one line of at most 120 characters`};let n=e.brief?.trim();if(n&&n.length>16e3)return{ok:!1,field:`brief`,error:`A brief is at most 16,000 characters`};let r=(e.criteria??``).split(`
|
|
4
|
-
`).map(e=>e.trim()).filter(Boolean);if(r.length>8)return{ok:!1,field:`criteria`,error:`At most 8 criteria`};if(r.some(e=>e.length>200))return{ok:!1,field:`criteria`,error:`A criterion is at most 200 characters`};let i=Re.find(t=>t===e.priority);return{ok:!0,body:{title:t,...n?{brief:n}:{},...i&&i!==`normal`?{priority:i}:{},...r.length?{criteria:r}:{}}}}var Be=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Ve=e=>typeof e==`string`&&e.length>0?e:void 0,He=e=>typeof e==`number`&&Number.isFinite(e)?e:void 0,Ue=[`queued`,`routed`,`done`,`cancelled`,`failed`],We=[`open`,`in_progress`,`blocked`];function Ge(e){if(!Be(e)||!Ve(e.id)||typeof e.title!=`string`)return;let t=Ue.find(t=>t===e.status),n=He(e.createdAt);if(!t||n===void 0)return;let r=We.find(t=>t===e.progress),i={id:e.id,title:e.title,status:t,priority:Ve(e.priority)??`normal`,revision:He(e.revision)??1,createdAt:n,updatedAt:He(e.updatedAt)??n};r&&(i.progress=r);for(let t of[`sessionID`,`workspaceID`,`assignmentID`,`reason`,`lastError`,`ref`])Ve(e[t])&&(i[t]=e[t]);return i}function Ke(e){let t=(Be(e)&&Array.isArray(e.items)?e.items:[]).map(Ge).filter(e=>!!e).sort((e,t)=>t.createdAt-e.createdAt),n=Be(e)?Ve(e.cursor):void 0;return n?{items:t,cursor:n}:{items:t}}var qe={queued:`Queued`,routed:`Routed`,in_progress:`In progress`,blocked:`Blocked`,done:`Done`,failed:`Failed`,cancelled:`Cancelled`};function Je(e){return e.status===`routed`?e.progress===`in_progress`||e.progress===`blocked`?e.progress:`routed`:e.status}var Ye=e=>e.status===`queued`||e.status===`routed`;function Xe(e){let t=(...e)=>[`queued`,`routed`,`working`,`closed`].map((t,n)=>({step:t,state:e[n]}));switch(Je(e)){case`queued`:return t(`current`,`todo`,`todo`,`todo`);case`routed`:return t(`done`,`current`,`todo`,`todo`);case`in_progress`:return t(`done`,`done`,`current`,`todo`);case`blocked`:return t(`done`,`done`,`blocked`,`todo`);case`done`:return t(`done`,`done`,`done`,`done`);default:return e.sessionID||e.assignmentID?t(`done`,`done`,`done`,`failed`):t(`done`,`skipped`,`skipped`,`failed`)}}function Ze(e){if(!Be(e))return;let t=t=>He(e[t])??0;return{queued:t(`queued`),routed:t(`routed`),done:t(`done`),cancelled:t(`cancelled`),failed:t(`failed`),open:t(`open`),inProgress:t(`inProgress`),blocked:t(`blocked`)}}var Qe=e=>e.queued+e.routed;function $e(e,t,n){return{...e,...t?{seatsFilled:t.seats.length}:{},vacantRoles:t?t.roles.filter(e=>e.vacant||!e.seats.length).map(e=>e.role):[],...n?{openIntake:Qe(n)}:{}}}function et(e){return(Be(e)&&Array.isArray(e.items)?e.items:[]).filter(Be).map(e=>({version:He(e.version),publishedAt:He(e.publishedAt)})).filter(e=>e.version!==void 0&&e.publishedAt!==void 0).sort((e,t)=>t.version-e.version)}var tt=(e,t)=>t?e.nodes.find(e=>e.kind===`machine`&&e.machineID===t)?.label:void 0,nt=e=>e.status!==`offline`&&e.status!==`ended`;function rt(e,t){return e.seats.map(e=>{let n=t?.nodes.find(t=>t.id===e.sessionID&&t.kind===`session`),r=t&&n?tt(t,n.machineID):void 0;return{...e,online:e.presence===`online`,name:n?.label??e.sessionID,...r?{machine:r}:{},...n?.harness?{harness:n.harness}:{}}})}function it(e,t){if(!e)return[];let n=t=>e.nodes.find(e=>e.id===t)?.label??t,r=t.query.trim().toLowerCase();return e.nodes.filter(e=>e.kind===`session`&&e.status!==`ended`).map(r=>{let i=tt(e,r.machineID),a=t.roster?t.roster.filter(e=>e.sessionID===r.id).map(e=>e.role):r.seats.filter(e=>e.teamID===t.teamID).map(e=>e.role),o=r.seats.filter(e=>e.teamID!==t.teamID).map(e=>({teamID:e.teamID,team:n(e.teamID),role:e.role}));return{sessionID:r.id,name:r.label,...i?{machine:i}:{},...r.harness?{harness:r.harness}:{},online:nt(r),seated:a.includes(t.role),here:a,memberships:o,hay:[r.label,r.id,i,r.harness,...o.flatMap(e=>[e.team,e.role])].filter(Boolean).join(` `).toLowerCase()}}).filter(e=>!r||e.hay.includes(r)).sort((e,t)=>Number(t.online)-Number(e.online)||e.name.localeCompare(t.name)||(e.sessionID<t.sessionID?-1:1)).map(({hay:e,...t})=>t)}function at(e){if(e.visible)return e.openWork?5e3:3e4}function ot(e,t,n){return e>=n?e>n?`full (${e} of ${n})`:`full (${n})`:t>0&&e<t?`${e} of ${t} required`:`${L(e,`member`)} · up to ${n}`}var st=[`msg`,`ask`,`reply`,`decision`,`launch`,`policy`],ct=[...st,`denied`],lt=[`working`,`idle`,`needs-you`,`error`,`offline`,`ended`],q=e=>typeof e==`object`&&!!e&&!Array.isArray(e),J=e=>typeof e==`string`&&e.length>0?e:void 0,Y=e=>typeof e==`number`&&Number.isFinite(e)?e:void 0,ut=e=>Array.isArray(e)?e.filter(e=>typeof e==`string`&&e.length>0):[];function dt(e){if(!q(e))return;let t={};for(let[n,r]of Object.entries(e))typeof r==`number`&&Number.isFinite(r)&&r>0&&(t[n]=r);return Object.keys(t).length?t:void 0}function ft(e){if(!q(e))return;let t={};for(let[n,r]of Object.entries(e))n&&typeof r==`string`&&(t[n]=r);return Object.keys(t).length?t:void 0}function pt(e){return Array.isArray(e)?e.filter(e=>q(e)&&!!J(e.teamID)&&!!J(e.role)).map(e=>({teamID:e.teamID,role:e.role})):[]}var mt=new Set([`hub`,`machine`,`session`,`user`,`team`]),ht=new Set([`idle`,`working`,`blocked`,`error`,`offline`,`ended`]),X=(e,t)=>t===void 0?{}:{[e]:t};function gt(e){if(!q(e))return;let t=J(e.id),n=J(e.kind);if(!t||!n||!mt.has(n))return;let r=J(e.status),i=n===`session`&&e.concierge===!0,a=J(e.label)??t;return{id:t,kind:e.party===`app`?`app`:n,label:i&&!a.startsWith(`@`)?`@@concierge`:a,...X(`concierge`,i?!0:void 0),...X(`machineID`,J(e.machineID)),...X(`harness`,J(e.harness)),...X(`parentID`,J(e.parentID)),...X(`rootID`,J(e.rootID)),...X(`supervisorID`,J(e.supervisorID)),...X(`launchID`,J(e.launchID)),depth:Y(e.depth)??0,...X(`status`,r&&ht.has(r)?r:void 0),...X(`online`,typeof e.online==`boolean`?e.online:void 0),roles:ut(e.roles),workspaceIDs:ut(e.workspaceIDs),teamIDs:ut(e.teamIDs),harnesses:ut(e.harnesses),...X(`project`,J(e.project)),...X(`lastSeen`,Y(e.lastSeen)),tags:ut(e.tags),...X(`labels`,ft(e.labels)),seats:pt(e.seats),...X(`name`,J(e.name)),projects:ut(e.projects),...X(`mode`,e.mode===`open`||e.mode===`restricted`?e.mode:void 0),...X(`paused`,e.paused===!0||void 0),...X(`metadata`,ft(e.metadata)),...X(`entryRole`,J(e.entryRole))}}function _t(e,t){if(!q(e))return;let n=J(e.id),r=J(e.kind),i=J(e.from),a=J(e.to);if(n&&r&&st.includes(r)&&i&&a&&t.has(i)&&t.has(a))return{id:n,kind:r,from:i,to:a,count:Y(e.count)??0,lastAt:Y(e.lastAt)??0,...X(`firstAt`,Y(e.firstAt)),...X(`states`,dt(e.states)),...X(`delivery`,dt(e.delivery)),...X(`declined`,Y(e.declined)||void 0),...X(`denied`,Y(e.denied)||void 0),...X(`roleAddressed`,Y(e.roleAddressed)||void 0),...X(`teamID`,J(e.teamID)),...X(`permitted`,typeof e.permitted==`boolean`?e.permitted:void 0),...X(`kinds`,ut(e.kinds).length?ut(e.kinds):void 0)}}function vt(e){if(!q(e)||e.v!==1||!Array.isArray(e.nodes)||!Array.isArray(e.edges))return;let t=new Map;for(let n of e.nodes){let e=gt(n);e&&!t.has(e.id)&&t.set(e.id,e)}t.has(`hub`)||t.set(`hub`,{id:`hub`,kind:`hub`,label:`Hub`,depth:0,roles:[],workspaceIDs:[],teamIDs:[],harnesses:[],tags:[],seats:[],projects:[]});let n=new Set(t.keys()),r=e.edges.map(e=>_t(e,n)).filter(e=>e!==void 0),i=Y(e.at)??0,a=q(e.window)?{since:Y(e.window.since)??0,until:Y(e.window.until)??i}:{since:0,until:i},o=q(e.retention)?e.retention:{};return{at:i,window:a,nodes:[...t.values()],edges:r,truncated:o.truncated===!0,...X(`oldestAt`,Y(o.oldestAt)),capped:e.capped===!0,hiddenMessages:q(e.hidden)?Y(e.hidden.messages)??0:0}}function yt(e){switch(e.status){case`working`:case`idle`:case`error`:case`offline`:case`ended`:return e.status;case`blocked`:return`needs-you`}return e.online===!1?`offline`:void 0}var bt={working:`Working`,idle:`Idle`,"needs-you":`Needs you`,error:`Error`,offline:`Offline`,ended:`Ended`},xt={working:`--blue`,idle:`--faint`,"needs-you":`--warn`,error:`--err`,offline:`--line-2`,ended:`--faint`},St={working:`pulse`,idle:`thin`,"needs-you":`thick`,error:`double`,offline:`broken`,ended:`none`},Ct=[`--accent`,`--blue`,`--violet`,`--orange`,`--ok`,`--warn`],wt=[`●`,`▲`,`■`,`◆`,`★`,`⬟`,`✚`,`⬢`],Tt=[`opencode`,`claude-code`,`codex`],Et={opencode:`sphere`,"claude-code":`cube`,codex:`octahedron`},Dt=e=>e.harness??`unknown`,Ot=e=>Et[e]??(e===`unknown`?`dodecahedron`:`tetrahedron`),kt=e=>e===`unknown`?`Unknown harness`:R(e),At={sphere:`circle`,cube:`square`,octahedron:`diamond`,tetrahedron:`triangle`,dodecahedron:`pentagon`},jt=[{kind:`msg`,label:`Message`,style:`solid`,color:`--accent`,description:`A message from one party to another; dashed while some are still queued or pending.`},{kind:`ask`,label:`Ask`,style:`solid`,color:`--blue`,description:`A question waiting for a reply; dashed while one is open.`},{kind:`reply`,label:`Reply`,style:`solid`,color:`--violet`,description:`Replies and declines to asks.`},{kind:`decision`,label:`Decision`,style:`solid`,color:`--warn`,description:`An ask to you, answered on the console; dashed while open.`},{kind:`launch`,label:`Launch`,style:`solid`,color:`--orange`,description:`Who started a session.`},{kind:`policy`,label:`Team path`,style:`dotted`,color:`--muted`,description:`A path a restricted team declares, with or without traffic: an arrowhead at one end is one-way, at both ends two-way; the kinds it permits are written on it.`},{kind:`denied`,label:`Denied attempt`,style:`dashed`,color:`--err`,description:`Messages a team's policy refused, marked with a cross and the count (only you see these).`}],Mt=()=>jt,Nt=e=>jt.find(t=>t.kind===e).label,Pt=e=>jt.find(t=>t.kind===e).color,Ft={"1h":{ms:36e5,label:`Last hour`},"6h":{ms:216e5,label:`Last 6 hours`},"24h":{ms:864e5,label:`Last 24 hours`},"7d":{ms:6048e5,label:`Last 7 days`}},It={machine:`Machine`,harness:`Harness`,workspace:`Workspace`,team:`Team`,none:`Nothing`},Lt={window:`24h`,groupBy:`machine`,tree:!0,kinds:new Set([`msg`,`ask`,`reply`,`decision`,`launch`,`denied`]),search:``},Rt=e=>`machine:${e}`,zt=e=>e.kind===`hub`||e.kind===`user`||e.kind===`app`;function Bt(e,t){return e.nodes.filter(e=>e.kind===`machine`).sort((e,t)=>Number(t.online===!0)-Number(e.online===!0)||e.label.localeCompare(t.label)||(e.id<t.id?-1:1)).map((e,n)=>{let r=e.machineID??e.id.replace(/^machine:/,``);return{id:r,label:e.label,index:n,color:Ct[n%Ct.length],symbol:wt[n%wt.length],sessions:t.filter(e=>e.machineID===r).length,online:e.online===!0}})}function Vt(e){let t=new Map;for(let n of e)t.set(Dt(n),(t.get(Dt(n))??0)+1);let n=e=>Tt.includes(e)?Tt.indexOf(e):e===`unknown`?1e3:100;return[...t.keys()].sort((e,t)=>n(e)-n(t)||e.localeCompare(t)).map(e=>({id:e,label:kt(e),shape:Ot(e),sessions:t.get(e)}))}function Ht(e){return e.every(e=>e.kind===`policy`)?`dotted`:Yt(e)?`dashed`:`solid`}var Ut=e=>Math.round((.6+Math.min(5.4,Math.log2(1+Math.max(0,e))*1.2))*100)/100,Wt={holdMs:5e3,liveHalfLifeMs:45e3,idleHalfLifeMs:6e3,floor:.05};function Gt(e,t){if(!e.lastAt)return 0;let n=Math.max(0,t-e.lastAt);if(n<=Wt.holdMs)return 1;if(n>9e5)return 0;let r=.5**((n-Wt.holdMs)/(e.live?Wt.liveHalfLifeMs:Wt.idleHalfLifeMs));return r<Wt.floor?0:r}function Kt(e,t,n){return n.reducedMotion||t<=0?0:Math.max(1,Math.round(t*Math.min(4,1+Math.floor(Math.log2(Math.max(1,e))))))}var qt=e=>e===`dropped`||e===`expired`?`not delivered`:e,Jt=e=>e&&Object.keys(e).length?Object.entries(e).map(([e,t])=>`${qt(e)} ${t}`).join(`, `):void 0,Yt=e=>e.some(e=>(e.delivery?.pending??0)+(e.delivery?.queued??0)>0||(e.states?.open??0)>0),Xt=(e,t,n,r=!1)=>({id:`s|${e}|${t}`,source:e,target:t,kind:`structure`,structure:n,count:0,lastAt:0,width:.4,style:`solid`,particles:0,edgeIDs:[],...r?{bridge:!0}:{}});function Zt(e,t,n,r){let i=new Map;for(let n of e){if(n.kind===`policy`)continue;let e=t(n.from),r=t(n.to);if(e===void 0||r===void 0||e===r)continue;let a=`${n.kind}|${e}|${r}`,o=i.get(a)??{kind:n.kind,source:e,target:r,edges:[]};o.edges.push(n),i.set(a,o)}return[...i.entries()].map(([e,t])=>{let i=t.edges.reduce((e,t)=>e+t.count,0),a=Math.max(0,...t.edges.map(e=>e.lastAt)),o=Yt(t.edges)||t.edges.some(e=>r(e.from)||r(e.to));return{id:t.edges.length===1?t.edges[0].id:e,source:t.source,target:t.target,kind:t.kind,count:i,lastAt:a,width:Ut(i),style:Ht(t.edges),particles:Kt(i,Gt({lastAt:a,live:o},n.now),n),live:o,edgeIDs:t.edges.map(e=>e.id)}})}function Qt(e,t,n){let r=new Map,i=new Map;for(let a of e){if(a.kind!==`policy`)continue;let e=t(a.from),o=t(a.to);if(e!==void 0&&o!==void 0&&e!==o){if(n.has(`policy`)&&a.permitted!==!1){let[t,n]=e<o?[e,o]:[o,e],i=`${t}|${n}|${a.teamID??``}`,s=r.get(i)??{a:t,b:n,directions:new Set,edges:[]};s.directions.add(`${e}|${o}`),s.edges.push(a),r.set(i,s)}if(n.has(`denied`)&&(a.denied??0)>0){let t=`${e}|${o}`,n=i.get(t)??{source:e,target:o,edges:[]};n.edges.push(a),i.set(t,n)}}}let a=[];for(let[e,t]of r){let n=t.directions.size>1,[r,i]=n?[t.a,t.b]:t.directions.values().next().value.split(`|`),o=t.edges.reduce((e,t)=>e+t.count,0),s=[...new Set(t.edges.flatMap(e=>e.kinds??[]))].sort();a.push({id:t.edges.length===1?t.edges[0].id:`policy|${e}`,source:r,target:i,kind:`policy`,count:o,lastAt:Math.max(0,...t.edges.map(e=>e.lastAt)),width:Ut(o),style:`dotted`,particles:0,edgeIDs:t.edges.map(e=>e.id),twoWay:n,kinds:s})}for(let[e,t]of i){let n=t.edges.reduce((e,t)=>e+(t.denied??0),0);a.push({id:`denied|${e}`,source:t.source,target:t.target,kind:`denied`,count:n,denied:n,lastAt:Math.max(0,...t.edges.map(e=>e.lastAt)),width:Ut(n),style:`dashed`,particles:0,edgeIDs:t.edges.map(e=>e.id)})}return a.sort((e,t)=>e.kind<t.kind?-1:e.kind>t.kind?1:e.source<t.source?-1:e.source>t.source?1:e.target<t.target?-1:+(e.target>t.target))}function $t(e,t=0,n=0){switch(e){case`hub`:return 14;case`machine`:case`cluster`:case`team`:return 7;case`role`:return 4.5;case`aggregate`:return Math.round((4+Math.log2(1+n)*2)*10)/10;case`user`:case`app`:return 5;default:return Math.round((3+Math.min(5,Math.log2(1+t)))*10)/10}}function en(e){return e.split(/[\s,]+/).filter(Boolean).map(e=>{let t=e.indexOf(`=`);return t<=0?{key:t===0?e.slice(1):e}:{key:e.slice(0,t),value:e.slice(t+1)}}).filter(e=>e.key.length>0)}var tn=(e,t)=>`role:${e}:${t}`,nn=`group:none`,rn={machine:`No machine`,harness:`Sessions`,workspace:`No workspace`,team:`No team`,none:`All sessions`},an=(e,t)=>e.label.localeCompare(t.label)||(e.id<t.id?-1:+(e.id>t.id));function on(e,t){let n=new Map(e.nodes.filter(e=>e.kind===`team`).map(e=>[e.id,e])),r=(e,t)=>e===t||n.get(e)?.name===t,[i,a]=t.role?t.role.split(`#`,2):[],o=t.project?.toLowerCase(),s=t.meta?en(t.meta):[],c=(e,t)=>e!==void 0&&Object.prototype.hasOwnProperty.call(e,t.key)&&(t.value===void 0||e[t.key].toLowerCase()===t.value.toLowerCase());return e=>(!t.machine||e.machineID===t.machine)&&(!t.harness||Dt(e)===t.harness)&&(!t.states?.size||yt(e)!==void 0&&t.states.has(yt(e)))&&(!t.team||e.teamIDs.some(e=>r(e,t.team)))&&(!i||e.seats.some(e=>e.role===i&&(!a||r(e.teamID,a)))||!a&&e.roles.some(e=>e===i||e.split(`.`)[0]===i))&&(o===void 0||e.project?.toLowerCase()===o)&&(!t.workspace||e.workspaceIDs.includes(t.workspace))&&(!t.tag||e.tags.includes(t.tag)||e.teamIDs.some(e=>n.get(e)?.tags.includes(t.tag)))&&s.every(t=>c(e.labels,t)||e.teamIDs.some(e=>c(n.get(e)?.metadata,t)))}var sn=e=>!!(e.machine||e.harness||e.states?.size||e.team||e.role||e.project||e.workspace||e.tag||e.meta?.trim());function cn(e,t,n){let r=n.maxNodes??600,i=new Map(e.nodes.map(e=>[e.id,e])),a=e=>i.get(e)?.status===`working`,o=e.nodes.filter(e=>e.kind===`session`).filter(on(e,t)),s=new Set(o.map(e=>e.id)),c=Bt(e,o),l=new Map(c.map(e=>[e.id,e.index])),u=new Map(c.map(e=>[e.id,e.label])),d=e.nodes.filter(zt),f=t.groupBy===`machine`?e.nodes.filter(e=>e.kind===`machine`&&(!t.machine||e.machineID===t.machine)):[];f.sort((e,t)=>(l.get(e.machineID??``)??1e9)-(l.get(t.machineID??``)??1e9));let p=new Set(f.map(e=>e.id)),m=e.nodes.filter(e=>e.kind===`team`),h=new Set(m.map(e=>e.id)),g=t.team?new Set(m.filter(e=>e.id===t.team||e.name===t.team).map(e=>e.id)):void 0,_=t.groupBy===`team`,v=_?m.filter(e=>(!g||g.has(e.id))&&(!sn(t)||o.some(t=>t.teamIDs.includes(e.id)))).sort(an):[],y=new Set(v.map(e=>e.id)),b=e=>{let t=e.roles.length?[...e.roles]:[...new Set(o.flatMap(t=>t.seats.filter(t=>t.teamID===e.id).map(e=>e.role)))].sort();return e.entryRole&&t.includes(e.entryRole)?[e.entryRole,...t.filter(t=>t!==e.entryRole)]:t},x=new Map(v.map(e=>[e.id,b(e)])),S=new Map;if(_){for(let t of e.nodes)if(t.kind===`session`)for(let e of t.seats)S.set(tn(e.teamID,e.role),(S.get(tn(e.teamID,e.role))??0)+1)}let C=e=>s.has(e)||i.has(e)&&zt(i.get(e))||p.has(e),w=e=>e.kind===`policy`?t.kinds.has(`policy`)&&e.permitted!==!1||t.kinds.has(`denied`)&&(e.denied??0)>0:t.kinds.has(e.kind),T=e.edges.filter(e=>w(e)&&C(e.from)&&C(e.to)),E=new Map;for(let e of T)if(e.kind!==`policy`)for(let t of[e.from,e.to])E.set(t,(E.get(t)??0)+e.count);let D=new Map,O=e=>e.teamIDs.find(e=>y.has(e)),k=e=>{switch(t.groupBy){case`machine`:return e.machineID&&p.has(Rt(e.machineID))?Rt(e.machineID):`hub`;case`harness`:{let t=Dt(e),n=`group:harness:${t}`;return D.has(n)||D.set(n,{id:n,kind:`cluster`,label:kt(t),shape:Ot(t),size:$t(`cluster`),match:!1,dim:!1}),n}case`workspace`:{let t=e.workspaceIDs[0];if(!t)return`hub`;let n=`group:workspace:${t}`;return D.has(n)||D.set(n,{id:n,kind:`cluster`,label:t,size:$t(`cluster`),match:!1,dim:!1}),n}case`team`:return O(e)??`hub`;case`none`:return`hub`}},A=e=>{let t=O(e);if(t===void 0)return;let n=e.seats.filter(e=>e.teamID===t);return n.find(e=>e.role===i.get(t)?.entryRole)??n[0]},j=e=>e.parentID!==void 0&&s.has(e.parentID)?e.parentID:void 0,M=e=>{let t=e;for(let e=0;e<64;e++){let e=j(t);if(e===void 0)break;t=i.get(e)}return t},N=e=>{let n=e;for(let e=0;e<64&&!(_&&O(n)!==void 0);e++){let e=t.tree?j(n):void 0;if(e===void 0)break;n=i.get(e)}let r=k(n),a=r===`hub`?nn:r;if(!_||a===nn)return{group:a};let o=A(n);return o?{group:a,section:tn(o.teamID,o.role)}:{group:a}},P=e=>{let t=e.teamIDs.filter(e=>h.has(e)).length;return t>1?t:void 0},F=(e,t)=>({id:e.id,kind:`session`,label:e.label,...X(`machine`,e.machineID===void 0?void 0:l.get(e.machineID)),harness:Dt(e),shape:Ot(Dt(e)),...X(`ring`,yt(e)),size:$t(`session`,E.get(e.id)??0),match:!1,dim:!1,...X(`folded`,t),...X(`teams`,P(e)),...X(`seat`,_?A(e)?.role:void 0)}),I=e=>({id:e.id,kind:`team`,label:e.label,size:$t(`team`),match:!1,dim:!1,...X(`mode`,e.mode),...X(`paused`,e.paused)}),L=e=>[...d.map(e=>({id:e.id,kind:e.kind,label:e.label,size:$t(e.kind),match:!1,dim:!1})),...f.map(e=>({id:e.id,kind:`machine`,label:e.label,...X(`machine`,e.machineID===void 0?void 0:l.get(e.machineID)),...X(`ring`,e.online===!1?`offline`:void 0),size:$t(`machine`),match:!1,dim:!1})),...v.map(I),...e?v.flatMap(e=>x.get(e.id).map(t=>({id:tn(e.id,t),kind:`role`,label:t,size:$t(`role`),match:!1,dim:!1,team:e.id,entry:t===e.entryRole,staffed:S.get(tn(e.id,t))??0,vacant:!S.get(tn(e.id,t))}))):[]],R=e=>[...d.filter(e=>e.id!==`hub`).map(e=>Xt(`hub`,e.id,`party`)),...f.map(e=>Xt(`hub`,e.id,`group`)),...v.map(e=>Xt(`hub`,e.id,`group`)),...e?v.flatMap(e=>x.get(e.id).map(t=>Xt(e.id,tn(e.id,t),`team`))):[]],z=(e,t,n)=>{for(let r of n){let n=D.get(r);n&&(e.push(n),t.push(Xt(`hub`,r,`group`)))}},ee=(e,n,r,i)=>{let a=i&&t.tree?j(e):void 0;a!==void 0&&n.push(Xt(a,e.id,`tree`));let o=_?A(e):void 0;if(o)n.push(Xt(tn(o.teamID,o.role),e.id,`seat`));else if(a===void 0){let t=k(e);r.add(t),n.push(Xt(t,e.id,`group`))}if(_)for(let t of e.seats)t!==o&&y.has(t.teamID)&&x.get(t.teamID).includes(t.role)&&n.push(Xt(tn(t.teamID,t.role),e.id,`seat`,!0))},B=new Map,V=`full`,H=L(!0),U=R(!0),W=new Set;for(let e of o)H.push(F(e)),ee(e,U,W,!0),B.set(e.id,N(e));z(H,U,W),U.push(...Zt(T,e=>e,n,a),...Qt(T,e=>e,t.kinds));let G=!1;if(H.length>r){V=`roots`;let e=new Map;for(let t of o){let n=M(t);e.set(n.id,(e.get(n.id)??0)+(n.id===t.id?0:1))}H=L(!0),U=R(!0),W.clear(),B.clear();for(let[t,n]of e){let e=i.get(t);H.push(F(e,n||void 0)),ee(e,U,W,!1),B.set(t,N(e))}z(H,U,W);let c=e=>s.has(e)?M(i.get(e)).id:e;if(U.push(...Zt(T,c,n,a),...Qt(T,c,t.kinds)),H.length>r){if(t.groupBy===`none`)G=!0;else{V=`groups`;let e=new Map,c=e=>`agg:${k(M(e))}`;for(let t of o)e.set(c(t),(e.get(c(t))??0)+1);H=L(!1),U=R(!1),W.clear(),B.clear();for(let[t,n]of e){let e=t.slice(4);W.add(e);let r=D.get(e)??H.find(t=>t.id===e);H.push({id:t,kind:`aggregate`,label:`${n} sessions${r&&r.id!==`hub`?` · ${r.label}`:``}`,...X(`machine`,r?.machine),size:$t(`aggregate`,0,n),match:!1,dim:!1,folded:n}),U.push(Xt(e,t,`group`)),B.set(t,{group:e===`hub`?nn:e})}z(H,U,W);let l=e=>s.has(e)?c(i.get(e)):e;U.push(...Zt(T,l,n,a),...Qt(T,l,t.kinds)),H.length>r&&(G=!0)}}}let K=t.search.trim().toLowerCase(),te=0;return K&&(H=H.map(e=>{let t=i.get(e.id),n=e=>Object.entries(e??{}).map(([e,t])=>`${e}=${t}`),r=[e.label,e.id,...t?.roles??[],...(t?.seats??[]).map(e=>e.role),t?.project??``,t?.name??``,...t?.tags??[],...n(t?.labels),...n(t?.metadata),t?.kind===`session`&&t.machineID?u.get(t.machineID)??``:``].join(`
|
|
5
|
-
`).toLowerCase().includes(K);return r&&te++,{...e,match:r,dim:!r}})),{groups:ne(),teams:v.map(e=>({id:e.id,label:e.label,...X(`mode`,e.mode),...X(`paused`,e.paused),...X(`entryRole`,e.entryRole),members:o.filter(t=>t.teamIDs.includes(e.id)).length})),nodes:H,links:U,machines:c,harnesses:Vt(o),lod:V,tooLarge:G,matches:te,sessionIDs:o.map(e=>e.id),edgeIDs:T.map(e=>e.id),messages:T.filter(e=>e.kind!==`policy`).reduce((e,t)=>e+t.count,0),now:n.now};function ne(){let e=new Map,n=(t,n=[{members:[]}])=>e.set(t.id,{group:t,sections:n}),r=V!==`groups`;for(let e of f)n({id:e.id,label:e.label,kind:`machine`,...X(`machine`,e.machineID===void 0?void 0:l.get(e.machineID)),online:e.online===!0});let a=Vt(o).map(e=>`group:harness:${e.id}`),s=[...D.values()].sort(t.groupBy===`harness`?(e,t)=>a.indexOf(e.id)-a.indexOf(t.id):an);for(let e of s)(W.has(e.id)||[...B.values()].some(t=>t.group===e.id))&&n({id:e.id,label:e.label,kind:t.groupBy});for(let e of v)n({id:e.id,label:e.label,kind:`team`,...X(`mode`,e.mode),...X(`paused`,e.paused),...X(`entryRole`,e.entryRole)},r?x.get(e.id).map(t=>({id:tn(e.id,t),label:t,entry:t===e.entryRole,members:[]})):[{members:[]}]);let c=()=>e.get(nn)??(n({id:nn,label:rn[t.groupBy],kind:`none`}),e.get(nn)),u=[...B.keys()],d=new Map;for(let e of u){let t=i.get(e)?.parentID;t!==void 0&&B.has(t)&&(d.get(t)??d.set(t,[]).get(t)).push(e)}let p=new Set,m=(t,n)=>{if(p.has(t))return;p.add(t);let r=B.get(t),i=e.get(r.group)??c();if(((r.section===void 0?void 0:i.sections.find(e=>e.id===r.section))??i.sections.find(e=>e.id===void 0)??(i.sections.push({label:`Members`,members:[]}),i.sections.at(-1))).members.push(t),n<64)for(let e of d.get(t)??[])m(e,n+1)};for(let e of u){let t=i.get(e)?.parentID;(t===void 0||!B.has(t))&&m(e,0)}for(let e of u)m(e,0);let h=[...e.values()].filter(e=>e.group.id!==nn),g=e.get(nn);return g&&h.push(g),h.map(e=>({...e.group,sections:e.sections.map(e=>({...X(`id`,e.id),...X(`label`,e.label),...e.entry===void 0?{}:{entry:e.entry},members:e.members}))}))}}function ln(e){return e.chosen===`list`?{mode:`list`,reason:`chosen`}:e.tooLarge?{mode:`list`,reason:`large`}:e.chosen===`2d`?{mode:`2d`}:e.webgl?{mode:`3d`}:{mode:`2d`,reason:`webgl`}}function un(e){let t={};for(let n of e){let e=yt(n);e&&(t[e]=(t[e]??0)+1)}return t}var dn=`app:concierge`;function fn(e){if(e.id===dn)return`service`;if(e.concierge)return e.status===`ended`||/ \(previous\)$/.test(e.label)?`previous`:`current`}function pn(e,t){let n=e.nodes.find(e=>e.id===t);if(!n)return;let r=t=>e.nodes.find(e=>e.id===t)?.label??t,i=e.edges.filter(e=>e.kind!==`policy`),a=e.nodes.filter(e=>e.kind===`session`),o=n.kind===`machine`?new Set(a.filter(e=>e.machineID===n.machineID).map(e=>e.id)):void 0,s=i.filter(e=>n.kind===`hub`?!0:o?o.has(e.from)||o.has(e.to):e.from===t||e.to===t),c={},l=new Map,u=0,d=0;for(let e of s){if(c[e.kind]=(c[e.kind]??0)+e.count,n.kind===`hub`||o)continue;e.from===t&&(u+=e.count),e.to===t&&(d+=e.count);let r=e.from===t?e.to:e.from;l.set(r,(l.get(r)??0)+e.count)}let f=n.machineID?e.nodes.find(e=>e.kind===`machine`&&e.machineID===n.machineID)?.label:void 0,p=e.nodes.filter(e=>e.kind===`machine`);return{id:t,kind:n.kind,title:n.label,...X(`ring`,yt(n)),...X(`machine`,f),...X(`harness`,n.kind===`session`?kt(Dt(n)):void 0),...X(`project`,n.project),roles:n.roles,workspaceIDs:n.workspaceIDs,...X(`parentID`,n.parentID),...X(`supervisorID`,n.supervisorID),...X(`supervisorLabel`,n.supervisorID?r(n.supervisorID):void 0),...X(`launchID`,n.launchID),...X(`concierge`,n.concierge),...X(`conciergeRole`,fn(n)),children:a.filter(e=>e.parentID===t).map(e=>e.id),sent:u,received:d,routed:s.reduce((e,t)=>e+t.count,0),byKind:c,peers:[...l.entries()].map(([e,t])=>({id:e,label:r(e),count:t})).sort((e,t)=>t.count-e.count||e.label.localeCompare(t.label)),...n.kind===`hub`?{states:un(a),machinesOnline:{online:p.filter(e=>e.online).length,total:p.length}}:{},...o?{states:un(a.filter(e=>o.has(e.id)))}:{},...X(`online`,n.online),...X(`lastSeen`,n.lastSeen),openable:n.kind===`session`,seats:n.seats.map(e=>({teamID:e.teamID,team:r(e.teamID),role:e.role})),...X(`labels`,n.labels),tags:n.tags,...n.kind===`team`?{team:m(n)}:{}};function m(e){let t=e.entryRole?[e.entryRole,...e.roles.filter(t=>t!==e.entryRole)]:[...e.roles],n=e=>t.includes(e)?t.indexOf(e):t.length,r=a.flatMap(t=>t.seats.filter(t=>t.teamID===e.id).map(e=>({id:t.id,label:t.label,role:e.role}))).sort((e,t)=>n(e.role)-n(t.role)||e.role.localeCompare(t.role)||e.label.localeCompare(t.label));return{...X(`mode`,e.mode),...X(`entryRole`,e.entryRole),...X(`paused`,e.paused),tags:e.tags,...X(`metadata`,e.metadata),members:r}}}function mn(e,t){let n=e.edges.find(e=>e.id===t);if(!n)return;let r=t=>e.nodes.find(e=>e.id===t)?.label??t;return{...n,label:Nt(n.kind),fromLabel:r(n.from),toLabel:r(n.to),...X(`teamLabel`,n.teamID?r(n.teamID):void 0)}}function hn(e){if(!q(e)||!Array.isArray(e.messages))return{messages:[]};let t=[];for(let n of e.messages){if(!q(n))continue;let e=J(n.id),r=J(n.kind),i=J(n.state),a=J(n.from),o=J(n.to),s=Y(n.at);e&&r&&i&&a&&o&&s!==void 0&&t.push({id:e,kind:r,state:i,from:a,to:o,at:s,...X(`delivery`,J(n.delivery)),...X(`decisionID`,J(n.decisionID))})}return{messages:t,...X(`cursor`,J(e.cursor))}}function gn(e){if(!q(e)||!q(e.message))return;let t=e.message,n=J(t.id);if(!n||typeof t.text!=`string`)return;let r=q(e.answer)&&typeof e.answer.text==`string`?e.answer.text:void 0;return{id:n,text:t.text,...X(`at`,Y(t.at)),...X(`kind`,J(t.kind)),...X(`state`,J(t.state)),...X(`answer`,r)}}function _n(e,t){let n=new Map(e.nodes.map(e=>[e.id,e])),r=new Set(t.sessionIDs),i=t.sessionIDs.map(e=>n.get(e)).filter(Boolean),a=t.edgeIDs.map(t=>e.edges.find(e=>e.id===t)).filter(Boolean),o=new Map,s=new Map;for(let e of a)e.kind!==`policy`&&(o.set(e.from,(o.get(e.from)??0)+e.count),s.set(e.to,(s.get(e.to)??0)+e.count));let c=new Map(t.machines.map(e=>[e.id,e.index])),l=new Map(t.machines.map(e=>[e.id,e.label])),u=(e,t)=>e.label.localeCompare(t.label)||(e.id<t.id?-1:1),d=e=>i.filter(t=>t.parentID===e).sort(u),f=i.filter(e=>!e.parentID||!r.has(e.parentID)).sort((e,t)=>(c.get(e.machineID??``)??1e9)-(c.get(t.machineID??``)??1e9)||u(e,t)),p=[],m=(e,t)=>{let n=yt(e);if(p.push({id:e.id,label:e.label,machine:e.machineID&&l.get(e.machineID)||`—`,harness:kt(Dt(e)),state:n?bt[n]:`—`,depth:t,sent:o.get(e.id)??0,received:s.get(e.id)??0}),t<64)for(let n of d(e.id))m(n,t+1)};for(let e of f)m(e,0);let h=e=>n.get(e)?.label??e;return{nodes:p,edges:a.map(e=>({id:e.id,kind:Nt(e.kind),from:h(e.from),to:h(e.to),count:e.count,lastAt:e.lastAt,style:Ht([e])})).sort((e,t)=>t.count-e.count||t.lastAt-e.lastAt)}}var vn=(e,t)=>`/api/agent/graph?since=${t-Ft[e.window].ms}&until=${t}`,yn=new Set([`catalog`,`status`,`decision`,`agent`,`resync`]),bn=e=>typeof e.type==`string`&&yn.has(e.type),xn=[`3d`,`2d`,`list`],Sn=`watchtower.view`,Cn=`watchtower.presets`,wn=`watchtower.`,Tn=`birdsEye.`;function En(e){try{let t=[];for(let n=0;n<e.length;n++){let r=e.key(n);r?.startsWith(Tn)&&t.push(r)}for(let n of t)try{let t=e.getItem(n),r=wn+n.slice(9);t!==null&&e.getItem(r)===null&&e.setItem(r,t),e.removeItem(n)}catch{}}catch{}}var Dn=e=>e!==null&&e in Ft,On=e=>e!==null&&e in It,kn=e=>typeof e==`string`&&xn.includes(e),An=[[`machine`,`machine`],[`harness`,`harness`],[`team`,`team`],[`role`,`role`],[`project`,`project`],[`workspace`,`ws`],[`tag`,`tag`],[`meta`,`meta`],[`q`,`q`]],jn=200,Mn=(e,t)=>e.length===t.size&&e.every(e=>t.has(e)),Nn=e=>kn(e)?e:void 0;function Pn(e,t){let n=new URLSearchParams(e),r=n.get(`window`),i=n.get(`group`),a=n.get(`view`),o=/^(node|edge):(.+)$/.exec(n.get(`sel`)??``),s={};for(let[e,t]of An){let r=n.get(t)?.trim();r&&(s[e]=r.slice(0,jn))}let c=n.get(`state`),l=n.get(`kinds`),u=l===null?void 0:ct.filter(e=>l.split(`,`).includes(e));return{window:Dn(r)?r:Lt.window,view:kn(a)?a:t??`3d`,groupBy:On(i)?i:Lt.groupBy,...o?{selected:{type:o[1],id:o[2]}}:{},...s,...c&<.includes(c)?{state:c}:{},...u&&!Mn(u,Lt.kinds)?{kinds:u}:{},...n.get(`tree`)===`0`?{tree:!1}:{}}}function Fn(e,t=`3d`){let n=new URLSearchParams;e.window!==Lt.window&&n.set(`window`,e.window),(e.view!==`3d`||t!==`3d`)&&n.set(`view`,e.view),e.groupBy!==Lt.groupBy&&n.set(`group`,e.groupBy);for(let[t,r]of An)e[t]&&n.set(r,e[t]);e.state&&n.set(`state`,e.state),e.kinds&&!Mn(e.kinds,Lt.kinds)&&n.set(`kinds`,ct.filter(t=>e.kinds.includes(t)).join(`,`)),e.tree===!1&&n.set(`tree`,`0`),e.selected&&n.set(`sel`,`${e.selected.type}:${e.selected.id}`);let r=n.toString();return r?`?${r}`:``}function In(e){return{window:e.window,groupBy:e.groupBy,tree:e.tree!==!1,kinds:e.kinds?new Set(e.kinds):Lt.kinds,...e.state?{states:new Set([e.state])}:{},...X(`machine`,e.machine),...X(`harness`,e.harness),...X(`team`,e.team),...X(`role`,e.role),...X(`project`,e.project),...X(`workspace`,e.workspace),...X(`tag`,e.tag),...X(`meta`,e.meta),search:e.q??``}}function Ln(e){let t=e=>[...new Set(e)].sort((e,t)=>e.localeCompare(t)),n=e.nodes.filter(e=>e.kind===`session`),r=e.nodes.filter(e=>e.kind===`team`);return{teams:r.sort(an).map(e=>({id:e.id,label:e.label})),roles:t([...n.flatMap(e=>[...e.roles,...e.seats.map(e=>e.role)]),...r.flatMap(e=>e.roles)]),projects:t(n.flatMap(e=>e.project?[e.project]:[])),workspaces:t(n.flatMap(e=>e.workspaceIDs)),tags:t([...n,...r].flatMap(e=>e.tags)),metaKeys:t([...n.flatMap(e=>Object.keys(e.labels??{})),...r.flatMap(e=>Object.keys(e.metadata??{}))])}}var Rn=e=>{let{selected:t,...n}=e;return Fn({...n,view:`3d`})};function zn(e,t){return{...Pn(t,e.view),view:e.view,...e.selected?{selected:e.selected}:{}}}function Bn(e){try{let t=JSON.parse(e??`[]`);return Array.isArray(t)?t.filter(e=>q(e)&&typeof e.name==`string`&&e.name.trim().length>0&&typeof e.search==`string`).map(e=>({name:e.name,search:e.search})).slice(-20):[]}catch{return[]}}function Vn(e,t,n){let r=t.trim().slice(0,60);if(!r)return[...e];let i=e.findIndex(e=>e.name===r);return(i>=0?e.map((e,t)=>t===i?{name:r,search:n}:e):[...e,{name:r,search:n}]).slice(-20)}var Hn=(e,t)=>e.filter(e=>e.name!==t);function Un(t){return t instanceof C?{kind:`offline`,message:t.message}:t instanceof e?t.status===404&&t.code===`not_found`?{kind:`missing`,message:`This hub doesn't have the interaction graph yet.`}:t.status===403||t.status===401?{kind:`forbidden`,message:t.message||`This device may not read the interaction graph.`}:t.status===503?{kind:`offline`,message:t.message||`The hub is offline.`}:{kind:`error`,message:t.message}:{kind:`error`,message:t instanceof Error?t.message:String(t)}}async function Wn(e){let t=vt(await E(e));if(!t)throw Error(`The hub answered something that isn't an interaction graph`);return t}var Gn=(e,t)=>`since=${t-Ft[e].ms}&until=${t}`;async function Kn(e,t,n,r){let i=`/api/agent/graph/${e.type===`edge`?`edges`:`nodes`}/${O(e.id)}`;return hn(await E(`${i}?${Gn(t,n)}&limit=50${r?`&cursor=${O(r)}`:``}`))}async function qn(e){let t=gn(await E(`/api/agent/messages/${O(e)}`));if(!t)throw Error(`The hub didn't return this message's text`);return t}var Jn=`/api/agent/teams`,Z=e=>`${Jn}/${O(e)}`,Q=async(e,t,n,r)=>(await M(e,{method:t,...n===void 0?{}:{json:n},...r?{headers:{"idempotency-key":r}}:{}})).json().catch(()=>({}));function Yn(e){let t=ie(e);if(!t)throw Error(`The hub answered something that isn't a team`);return t}async function Xn(){return((await E(`${Jn}?limit=200`)).items??[]).map(e=>ie({team:e})?.team).filter(e=>!!e).map(e=>({id:e.id,name:e.name,title:e.title,paused:e.paused,hasDraft:e.hasDraft}))}async function Zn(e=`all`){return((await E(`${Jn}?limit=200&state=${e}`)).items??[]).flatMap(e=>{let t=ie({team:e}),n=re(e);if(!t||!n)return[];let r=t.team;return[{id:r.id,name:r.name,title:r.title,mode:n.mode,entryRole:n.entryRole,paused:r.paused,state:r.state,hasDraft:r.hasDraft,tags:n.tags??[],roles:n.roles.length}]})}async function Qn(e){let t=await E(`${Z(e)}/status`),n=Ne({roster:t.roster}),r=Ze(t.intake);return{...n?{roster:n}:{},...r?{intake:r}:{}}}async function $n(e,t=50){return Ke(await E(`${Z(e)}/intake?limit=${t}`)).items}async function er(e,t,n,r,i){return Ge((await Q(`${Z(e)}/intake/${O(t)}/status`,`POST`,{status:n,expectedRevision:r,...i?{reason:i}:{}})).intake)}async function tr(e){return et(await E(`${Z(e)}/versions?limit=50`))}async function nr(e,t,n){return await Q(`${Z(e)}/${t?`archive`:`restore`}`,`POST`,{expectedRevision:n}),rr(e)}var rr=async e=>Yn(await E(Z(e))),ir=async(e,t)=>Yn(await Q(Jn,`POST`,e,t));async function ar(e,t,n){return await Q(Z(e),`PATCH`,Se(t,n)),rr(e)}async function or(e,t){return await Q(`${Z(e)}/draft?expectedRevision=${t}`,`DELETE`),rr(e)}async function sr(e){let t=De(await E(`${Z(e)}/diff?to=draft`));if(!t)throw Error(`The hub didn't answer a diff`);return t}async function cr(e,t){return await Q(`${Z(e)}/publish`,`POST`,{expectedRevision:t}),rr(e)}async function lr(e,t,n){return await Q(`${Z(e)}/${t?`pause`:`resume`}`,`POST`,{expectedRevision:n}),rr(e)}async function ur(e){let t=Ne(await E(`${Z(e)}/roster`));if(!t)throw Error(`The hub didn't answer a roster`);return t}var dr=(e,t,n,r)=>Q(`${Z(e)}/staffing`,`PUT`,{role:t,sessionID:n},r),fr=(e,t,n)=>Q(`${Z(e)}/staffing/launch`,`POST`,t,n),pr=(e,t,n)=>Q(`${Z(e)}/staffing/${O(t)}?expectedRevision=${n}`,`DELETE`);async function mr(e,t,n){let r=await Q(`${Z(e)}/intake`,`POST`,t,n),i=Ge(r.intake);return{id:String(r.intake?.id??``),status:String(r.intake?.status??`queued`),...i?{intake:i}:{}}}async function hr(){try{return((await E(`/api/agent/profiles?state=active&limit=200`)).items??[]).filter(e=>typeof e.id==`string`&&typeof e.latestVersion==`number`).map(e=>({id:e.id,title:String(e.title||e.name),version:e.latestVersion}))}catch{return[]}}var gr=()=>crypto.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2)}`;function _r(t,n={}){let[r,i]=c(),[a,o]=c(``),[s,l]=c(),[d,f]=c(),[p,m]=c(),[h,g]=c(),[_,v]=c(),[y,b]=c(``),[x,S]=c(),[C,w]=c(!1),[T,E]=c(),D=()=>s()?.present,O=e=>JSON.stringify(e??null),k=u(()=>!!s()&&O(D())!==O(d())),A=u(()=>D()?ge(D()):[]),j=()=>r()?.team,M=()=>j()?.id??t,N=u(()=>new Set(r()?.published.roles.map(e=>e.name)??[])),P=u(()=>r()&&D()?Ee(r().published,D()):void 0),F=u(()=>(_()??[]).some(Ye)),I=()=>n.onChanged?.(),L=async()=>{try{m(await ur(t))}catch{m(void 0)}},R=async()=>{if(n.intake)try{let[e,t]=await Promise.all([$n(M()),Qn(M()).catch(()=>({}))]);v(e),b(``),t.intake&&g(t.intake)}catch(e){b(Me(e).message),_()||v([])}},z=(e,t)=>{let n=e.draft??e.published;i(e),f(n);let r=s();(!t||!r)&&l(ve(n))},ee=async()=>{try{z(await rr(t),!1),await Promise.all([L(),R()])}catch(t){o(t instanceof e&&t.status===404?`This hub doesn't have that team (or teams at all).`:Me(t).message)}},B=async()=>{if(!C()&&r()){try{let e=await rr(t);e.team.revision!==j()?.revision&&z(e,k())}catch{}await Promise.all([L(),R()])}},V=async e=>{w(!0),S(void 0);try{await e()}catch(e){let n=Me(e);if(n.kind===`conflict`){try{z(await rr(t),!0),await L()}catch{}E(void 0),S({kind:`conflict`,text:`${n.message} Your edits are kept on top of the latest version: review them, then save or publish again — or discard your edits to see theirs.`})}else S({kind:n.kind,text:n.message,missing:n.missing})}finally{w(!1)}},H,U=e=>{if(!e.ok)return S(H={kind:`error`,text:e.error});H&&x()===H&&S(void 0),H=void 0,E(void 0),l(ye(s(),e.spec))},W=()=>s()&&l(be(s())),G=()=>s()&&l(xe(s())),K=e=>{e.target.matches(`input[type=text], input[type=search], input:not([type]), textarea`)||(e.metaKey||e.ctrlKey)&&e.key.toLowerCase()===`z`&&(e.preventDefault(),e.shiftKey?G():W())},te=async()=>{let e=await ar(t,D(),j().revision);return z(e,!1),e},ne=()=>V(async()=>{await te(),S({kind:`ok`,text:`Draft saved. It isn't live until you publish it.`})}),re=()=>V(async()=>{k()&&await te(),j().hasDraft?E(await sr(t)):S({kind:`ok`,text:`Nothing to publish: the draft matches version ${j().version}.`})}),ie=()=>V(async()=>{let e=j().version,n=await cr(t,j().revision);z(n,!1),E(void 0),await L(),I(),S({kind:`ok`,text:n.team.version>e?`Published version ${n.team.version}.`:`Nothing changed: the draft matched the published version.`})}),ae=()=>V(async()=>{j().hasDraft?z(await or(t,j().revision),!1):z(r(),!1),E(void 0),S({kind:`ok`,text:`Draft discarded.`})}),oe=()=>V(async()=>{let e=!j().paused;z(await lr(t,e,j().revision),!0),I(),S({kind:`ok`,text:e?`Paused: the team takes no new work or members until you resume it.`:`Resumed: the team takes work again.`})}),se=()=>V(async()=>{let e=j().state!==`archived`;z(await nr(t,e,j().revision),!0),I(),S({kind:`ok`,text:e?`Archived: its communication policy no longer applies. Seats are kept; restore it to use it again.`:`Restored: the team's policy applies again.`})}),ce=gr(),le=async(e,n,r)=>{let i=!1;return await V(async()=>{await dr(t,e,n,ce),ce=gr(),await L(),I(),S({kind:`ok`,text:`${r} is staffed as ${e}.`}),i=!0}),i},ue=(e,n,r,i)=>V(async()=>{await pr(t,e,n),await L(),I(),S({kind:`ok`,text:`${r} no longer holds ${i}.`})}),de=gr(),fe=async(e,n)=>{let r=!1;return await V(async()=>{let i=await fr(t,n,de);de=gr(),await L(),S({kind:`ok`,text:`Launching a new ${e}${i.request?.id?` (request ${i.request.id})`:``}. It joins the role once the session starts.`}),r=!0}),r},pe=gr();return{id:t,read:r,team:j,spec:D,hist:s,dirty:k,probs:A,roster:p,summary:h,items:_,intakeError:y,openWork:F,notice:x,setNotice:S,busy:C,preview:T,setPreview:E,publishedRoles:N,localPreview:P,loadError:a,blocked:()=>_e(A()),fieldProblem:(e,t)=>A().find(n=>n.field===e&&n.level===t)?.message,load:ee,refresh:B,loadRoster:L,loadIntake:R,apply:U,undo:W,redo:G,onKey:K,saveDraft:ne,review:re,publish:ie,discard:ae,togglePause:oe,toggleArchive:se,attach:le,unstaff:ue,launch:fe,submit:async e=>{let t=!1;return await V(async()=>{let n=await mr(M(),e,pe);pe=gr(),n.intake&&v([n.intake,...(_()??[]).filter(e=>e.id!==n.intake.id)]),S({kind:`ok`,text:`Task ${n.id} ${n.status}: it goes to the entry role (${r().published.entryRole}).`}),t=!0}),t&&R(),t},setIntake:(e,t)=>V(async()=>{let n=await er(M(),e.id,t,e.revision);n&&v((_()??[]).map(e=>e.id===n.id?n:e)),S({kind:`ok`,text:`${e.title}: ${t===`cancelled`?`cancelled`:`marked ${t.replace(`_`,` `)}`}.`})})}}var vr=F(`<p>Missing grants:`),yr=F(`<ul>`),br=F(`<p class=muted>Staffing never issues grants: grant these in Settings → Agents, or staff the role yourself here.`),xr=F(`<div><p>`),Sr=F(`<li>`),Cr=F(`<span>`),wr=F(`<label class=te-field><span>`),Tr=F(`<fieldset class=te-mode><legend>Communication</legend><label class=wt-check><input type=radio><span>Open team: everyone may message and ask everyone</span></label><label class=wt-check><input type=radio><span>Restricted paths: only the paths you draw`),Er=F(`<span class="te-chip te-chip-warn">Paused: no new members or tasks`),Dr=F(`<span class="te-chip te-chip-warn">Archived: its policy no longer applies`),Or=F(`<p class=te-status role=status aria-label="Team state"><span class=te-chip>`),kr=F(`<div class=te-toolbar role=toolbar aria-label=Draft><button type=button class="btn small"aria-keyshortcuts=Control+Z>Undo</button><button type=button class="btn small"aria-keyshortcuts=Control+Shift+Z>Redo</button><button type=button class="btn small">Save draft</button><button type=button class="btn small primary">Review and publish…</button><button type=button class="btn small">Discard draft`),Ar=F(`<p class="muted te-pending">Unsaved: `),jr=F(`<section class=te-preview role=region><h3>Publish version <!>?</h3><p class=muted>Delivery and staffing switch to the new version when you publish. Publishing is refused while sessions hold a role it removes.</p><div class=te-row><button type=button class="btn primary">Publish version </button><button type=button class=btn>Keep editing`),Mr=F(`<div role=alert class=te-problems><p>Fix these before saving:</p><ul>`),Nr=F(`<p>No changes against version <!>.`),Pr=F(`<input>`),Fr=F(`<textarea>`),Ir=F(`<p class=te-err role=alert>`),Lr=F(`<ul class=te-roles aria-label=Roles>`),Rr=F(`<form class="te-row te-add"aria-label="Add role"><input type=text aria-label="New role name"placeholder="role name (dev)"><input type=text aria-label="New role label"placeholder="label (optional)"><button type=submit class="btn small">Add role`),zr=F(`<span class=te-chip>new in draft`),Br=F(`<li class=te-role><div class=te-row><strong></strong><label class=wt-check><input type=radio><span></span></label><button type=button class="btn small">Remove</button></div><label class=wt-check><input type=checkbox><span>May contact sessions outside the team`),Vr=F(`<p class=muted>Open team: every member may message and ask every other. The paths below are kept and apply again if you switch back to restricted.`),Hr=F(`<ul class=te-paths aria-label=Paths>`),Ur=F(`<form class="te-form te-connect"aria-label="Connect roles"><h4 class=te-form-title>Connect two roles</h4><div class=te-row><label class=te-field><span>From</span><select aria-label="Path from"><option value>Pick a role</option></select></label><label class=te-field><span>To</span><select aria-label="Path to"><option value>Pick a role</option></select></label></div><fieldset class=te-mode><legend>Direction</legend><label class=wt-check><input type=radio><span>One-way (from may contact to)</span></label><label class=wt-check><input type=radio><span>Two-way (both may contact each other)</span></label></fieldset><fieldset class=te-mode><legend>Permits</legend><label class=wt-check><input type=checkbox><span>Messages (msg)</span></label><label class=wt-check><input type=checkbox><span>Questions (ask)</span></label></fieldset><button type=submit class="btn small primary">Add path`),Wr=F(`<p class=muted>No paths yet. `),Gr=F(`<span class=te-err> — `),Kr=F(`<li><span> <!> <!> · <!> · </span> <button type=button class="btn small">Edit</button><button type=button class="btn small">Remove`),qr=F(`<option>`),Jr=F(`<p><strong>Restricted.</strong> Members may only use these paths; the entry role <code></code> receives the team's work.`),Yr=F(`<ul class=tm-edges>`),Xr=F(`<div class=tm-policy aria-label="Published communication">`),Zr=F(`<p><strong>Open team.</strong> Every member may message and ask every other; the entry role <code></code> receives the team's work.`),Qr=F(`<p class=muted>No paths are published: members can't reach each other.`),$r=F(`<li><span class=tm-node></span><span class=tm-arrow></span><span class=tm-node></span><span class=muted> `),ei=F(`<p class=muted>Members unknown (the roster didn't load).`),ti=F(`<p class=muted>The team is paused: resume it to add members.`),ni=F(`<p class=muted>Tip: on the 2D canvas, drag a session onto a role to add it.`),ri=F(`<div class=tm-members>`),ii=F(`<span class=muted> `),ai=F(`<span class=te-chip>entry role: receives the work`),oi=F(`<span class="te-chip te-chip-warn">`),si=F(`<span class="muted tm-count">`),ci=F(`<ul class=tm-seats>`),li=F(`<div class="te-row tm-role-actions"><button type=button class="btn small primary">+ Add member</button><button type=button class="btn small">Launch new <!>…`),ui=F(`<section class=tm-role role=group><header class=tm-role-head><div class=tm-role-name><strong>`),di=F(`<p class=muted>Publish the draft to add members to <!>.`),fi=F(`<p class="muted tm-empty">No members yet.`),pi=F(`<li class=tm-seat><span aria-hidden=true></span><a class=tm-seat-name></a><span class="muted tm-seat-facts"></span><button type=button class="btn small">Unstaff`),mi=F(`<fieldset class=tm-choices><legend class=sr-only>Sessions`),hi=F(`<p class=te-memberships role=status aria-label="Other memberships">`),gi=F(`<form><p class=muted>Pick a running session to hold <!>. A session may hold roles in several teams.</p><input type=search class=tm-search aria-label="Search sessions"placeholder="Search by name, machine, harness or team"><div class="dialog-actions tm-picker-actions"><button type=button class="btn small tm-launch-instead">Launch a new member instead…</button><button type=button class=btn>Cancel</button><button type=submit class="btn primary">Add to `),_i=F(`<p class=muted>Loading sessions…`),vi=F(`<p class=muted>`),yi=F(`<label class=tm-choice><input type=radio><span aria-hidden=true></span><span class=tm-choice-text><strong></strong><span class=muted> </span><span class=tm-choice-note>`),bi=F(`<button type=button class="btn small">Cancel`),xi=F(`<form class=te-form aria-label="Launch a new member"><h4 class=te-form-title>Launch a new member</h4><div class=te-row><button type=submit class="btn small primary">Launch member`),Si=F(`<select><option value>Pick a role`),Ci=F(`<select><option value>Any machine (the hub picks)`),wi=F(`<select><option value>The role's default`),Ti=F(`<select><option value>The role's profile (or none)`),Ei=F(`<option> (v<!>)`),Di=F(`<select><option value=worktree>New worktree</option><option value=checkout>The checkout itself</option><option value=clone>A fresh clone`),Oi=F(`<form class="te-form tm-submit"aria-label="Submit a task"><div class=te-row></div><div class=te-row><button type=submit class="btn primary">Submit task</button><span class=muted>It goes to the entry role (<!>) of the published team.`),ki=F(`<select>`),Ai=F(`<p class=muted role=note>Couldn't refresh the tasks: `),ji=F(`<ul class=tm-intake aria-label=Tasks>`),Mi=F(`<p class=muted>Loading tasks…`),Ni=F(`<p class=muted>No tasks yet. Submitted tasks and their progress show up here.`),Pi=F(`<span class=muted>With`),Fi=F(`<a>`),Ii=F(`<a>Workspace assignment`),Li=F(`<button type=button class="btn small">Mark done`),Ri=F(`<span class=tm-intake-actions><button type=button class="btn small">Cancel`),zi=F(`<li class=tm-intake-item><div class=tm-intake-head><strong class=tm-intake-title></strong><span></span></div><ol class=tm-steps aria-label=Progress></ol><p class="muted tm-intake-facts"></p><div class="te-row tm-intake-links">`),Bi=F(`<span class=muted>Waiting for the entry role.`),Vi=F(`<ul class=tm-versions aria-label=Versions>`),Hi=F(`<p class=muted>History unavailable: `),Ui=F(`<p class=muted>Loading history…`),Wi=F(`<span class=te-chip>live`),Gi=F(`<li><strong>Version </strong><span class=muted> published `);function Ki(e){return t(i,{get when(){return e.notice},children:e=>(()=>{var n=xr(),a=n.firstChild;return w(a,()=>e().text),w(n,t(i,{get when(){return e().missing?.length},get children(){return[vr(),(()=>{var n=yr();return w(n,t(r,{get each(){return[...e().missing]},children:e=>(()=>{var t=Sr();return w(t,e),t})()})),n})(),br()]}}),null),d(t=>{var r=`te-notice te-${e().kind}`,i=e().kind===`ok`?`status`:`alert`;return r!==t.e&&P(n,t.e=r),i!==t.t&&T(n,`role`,t.t=i),t},{e:void 0,t:void 0}),n})()})}var qi=0;function $(e){let n=`te-f${++qi}`,r=()=>e.error??e.warning;return(()=>{var a=wr(),o=a.firstChild;return T(a,`for`,n),w(o,()=>e.label),w(a,()=>e.children({id:n,"aria-label":e.label,...r()?{"aria-describedby":`${n}-msg`}:{},...e.error?{"aria-invalid":!0}:{}}),null),w(a,t(i,{get when(){return r()},get children(){var t=Cr();return T(t,`id`,`${n}-msg`),w(t,r),d(()=>P(t,e.error?`te-err`:`te-warn`)),t}}),null),a})()}function Ji(e){return(()=>{var t=Tr(),n=t.firstChild.nextSibling,r=n.firstChild,i=n.nextSibling.firstChild;return r.addEventListener(`change`,()=>e.onChange(`open`)),i.addEventListener(`change`,()=>e.onChange(`restricted`)),d(t=>{var n=e.name,a=e.name;return n!==t.e&&T(r,`name`,t.e=n),a!==t.t&&T(i,`name`,t.t=a),t},{e:void 0,t:void 0}),d(()=>r.checked=e.value===`open`),d(()=>i.checked=e.value===`restricted`),t})()}var Yi=e=>e.direction===`two-way`?`⇄`:`→`;function Xi(e){let n=e.c,r=()=>{let e=n.team();return e?n.dirty()?`Draft · unsaved edits`:e.hasDraft?`Draft saved · not published (version ${e.version} is live)`:`Published · version ${e.version}`:``};return(()=>{var e=Or(),a=e.firstChild;return w(a,r),w(e,t(i,{get when(){return n.team()?.paused},get children(){return Er()}}),null),w(e,t(i,{get when(){return n.team()?.state===`archived`},get children(){return Dr()}}),null),d(()=>T(e,`data-state`,n.dirty()?`dirty`:n.team()?.hasDraft?`draft`:`published`)),e})()}function Zi(e){let n=e.c;return[(()=>{var e=kr(),t=e.firstChild,r=t.nextSibling,i=r.nextSibling,a=i.nextSibling,o=a.nextSibling;return D(t,`click`,n.undo,!0),D(r,`click`,n.redo,!0),i.$$click=()=>void n.saveDraft(),a.$$click=()=>void n.review(),o.$$click=()=>void n.discard(),d(e=>{var s=!n.hist()?.past.length,c=!n.hist()?.future.length,l=!n.dirty()||n.busy()||n.blocked(),u=n.busy()||n.blocked()||!n.dirty()&&!n.team()?.hasDraft,d=n.busy()||!n.dirty()&&!n.team()?.hasDraft;return s!==e.e&&(t.disabled=e.e=s),c!==e.t&&(r.disabled=e.t=c),l!==e.a&&(i.disabled=e.a=l),u!==e.o&&(a.disabled=e.o=u),d!==e.i&&(o.disabled=e.i=d),e},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),e})(),t(i,{get when(){return k(()=>!!(n.dirty()&&n.localPreview()))()&&!je(n.localPreview())},get children(){var e=Ar();return e.firstChild,w(e,()=>Ae(n.localPreview()).join(` · `),null),e}}),t(i,{get when(){return n.preview()},get children(){var e=jr(),a=e.firstChild,o=a.firstChild.nextSibling;o.nextSibling;var s=a.nextSibling,c=s.nextSibling.firstChild;c.firstChild;var l=c.nextSibling;return w(a,()=>n.team().version+1,o),w(e,t(i,{get when(){return!je(n.preview())},get fallback(){return(()=>{var e=Nr(),t=e.firstChild.nextSibling;return t.nextSibling,w(e,()=>n.team().version,t),e})()},get children(){var e=yr();return w(e,t(r,{get each(){return Ae(n.preview())},children:e=>(()=>{var t=Sr();return w(t,e),t})()})),e}}),s),c.$$click=()=>void n.publish(),w(c,()=>n.team().version+1,null),l.$$click=()=>n.setPreview(void 0),d(t=>{var r=`te-preview-${n.id}`,i=`te-preview-${n.id}`,o=n.busy();return r!==t.e&&T(e,`aria-labelledby`,t.e=r),i!==t.t&&T(a,`id`,t.t=i),o!==t.a&&(c.disabled=t.a=o),t},{e:void 0,t:void 0,a:void 0}),e}}),t(i,{get when(){return n.probs().some(e=>e.level===`error`)},get children(){var e=Mr(),i=e.firstChild.nextSibling;return w(i,t(r,{get each(){return n.probs().filter(e=>e.level===`error`)},children:e=>(()=>{var t=Sr();return w(t,()=>e.message),t})()})),e}})]}function Qi(e){let n=e.c,r=()=>n.spec();return[t($,{label:`Title`,get error(){return n.fieldProblem(`team`,`error`)},children:e=>(()=>{var t=Pr();return b(t,h(e,{type:`text`,get value(){return r().title},onChange:e=>n.apply(pe(r(),{title:e.currentTarget.value}))}),!1,!1),t})()}),t($,{label:`Description`,children:e=>(()=>{var t=Fr();return b(t,h(e,{rows:`2`,get value(){return r().description??``},onChange:e=>n.apply(pe(r(),{description:e.currentTarget.value}))}),!1,!1),t})()}),t($,{label:`Tags (comma separated)`,children:e=>(()=>{var t=Pr();return b(t,h(e,{type:`text`,get value(){return me(r())},onChange:e=>n.apply(pe(r(),{tags:e.currentTarget.value}))}),!1,!1),t})()}),t($,{label:`Metadata (key=value per line)`,children:e=>(()=>{var t=Fr();return b(t,h(e,{rows:`2`,get value(){return he(r())},onChange:e=>n.apply(pe(r(),{metadata:e.currentTarget.value}))}),!1,!1),t})()}),t(i,{get when(){return e.withMode},get children(){return t(Ji,{get value(){return r().mode},onChange:e=>n.apply(fe(r(),e)),get name(){return`te-mode-${n.id}`}})}})]}function $i(e){let n=e.c,a=()=>n.spec(),[o,s]=c(``),[l,u]=c(``);return[t(i,{get when(){return n.fieldProblem(`entry`,`error`)||n.fieldProblem(`roles`,`error`)},get children(){var e=Ir();return w(e,()=>n.fieldProblem(`entry`,`error`)??n.fieldProblem(`roles`,`error`)),e}}),(()=>{var o=Lr();return w(o,t(r,{get each(){return[...a().roles]},children:r=>(()=>{var o=Br(),s=o.firstChild,c=s.firstChild,l=c.nextSibling,u=l.firstChild,f=u.nextSibling,p=l.nextSibling,m=s.nextSibling,g=m.firstChild;return w(c,()=>r.name),w(s,t(i,{get when(){return!n.publishedRoles().has(r.name)},get children(){return zr()}}),l),u.addEventListener(`change`,()=>n.apply(le(a(),r.name))),w(f,()=>a().entryRole===r.name?`★ Entry role`:`Entry role`),p.$$click=()=>n.apply(se(a(),r.name)),w(o,t($,{get label(){return`Label of ${r.name}`},get warning(){return n.fieldProblem(`role:${r.name}`,`warning`)},children:t=>(()=>{var i=Pr();return x(t=>e.roleInput?.(r.name,t),i),b(i,h(t,{type:`text`,get value(){return r.label??``},onChange:e=>n.apply(ce(a(),r.name,{label:e.currentTarget.value}))}),!1,!1),i})()}),m),g.addEventListener(`change`,e=>n.apply(ce(a(),r.name,{externalContact:e.currentTarget.checked}))),d(e=>{var t=r.name,i=`te-entry-${n.id}`,s=`Entry role: ${r.name}`,c=a().entryRole===r.name,l=`Remove role ${r.name}`;return t!==e.e&&T(o,`data-role`,e.e=t),i!==e.t&&T(u,`name`,e.t=i),s!==e.a&&T(u,`aria-label`,e.a=s),c!==e.o&&(p.disabled=e.o=c),l!==e.i&&T(p,`aria-label`,e.i=l),e},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),d(()=>u.checked=a().entryRole===r.name),d(()=>g.checked=r.externalContact===!0),o})()})),o})(),(()=>{var e=Rr(),t=e.firstChild,r=t.nextSibling,i=r.nextSibling;return e.addEventListener(`submit`,e=>{e.preventDefault();let t=oe(a(),o(),l());n.apply(t),t.ok&&(s(``),u(``))}),t.$$input=e=>s(e.currentTarget.value),r.$$input=e=>u(e.currentTarget.value),d(()=>i.disabled=!o().trim()),d(()=>t.value=o()),d(()=>r.value=l()),e})()]}function ea(e){let n=e.c,a=()=>n.spec(),[o,s]=c(``),[l,u]=c(``),[f,p]=c(`one-way`),[m,h]=c(!0),[g,v]=c(!1),y,b=(e,t)=>{let n=a().edges.find(n=>n.from===e&&n.to===t);s(e),u(t),n&&(p(n.direction),h(n.kinds.includes(`msg`)),v(n.kinds.includes(`ask`))),queueMicrotask(()=>y?.focus())};_(()=>e.handle?.({prefill:b}));let S=e=>{e.preventDefault();let t=[...m()?[`msg`]:[],...g()?[`ask`]:[]];n.apply(ue(a(),{from:o(),to:l(),kinds:t,direction:f()}))},C=e=>n.fieldProblem(`edge:${e.from}>${e.to}`,`error`);return[t(i,{get when(){return a().mode===`open`},get children(){return Vr()}}),t(i,{get when(){return a().edges.length},get fallback(){return(()=>{var t=Wr();return t.firstChild,w(t,()=>e.canvasHint?`Drag from one role to another on the 2D canvas, or use the form below.`:`Connect two roles below.`,null),t})()},get children(){var e=Hr();return w(e,t(r,{get each(){return[...a().edges]},children:e=>(()=>{var r=Kr(),o=r.firstChild,s=o.firstChild,c=s.nextSibling,l=c.nextSibling.nextSibling,u=l.nextSibling.nextSibling;u.nextSibling;var f=o.nextSibling,p=f.nextSibling,m=p.nextSibling;return w(o,()=>e.from,s),w(o,()=>Yi(e),c),w(o,()=>e.to,l),w(o,()=>e.direction,u),w(o,()=>e.kinds.join(` + `),null),w(r,t(i,{get when(){return C(e)},get children(){var t=Gr();return t.firstChild,w(t,()=>C(e),null),t}}),f),p.$$click=()=>b(e.from,e.to),m.$$click=()=>n.apply(de(a(),e.from,e.to)),d(t=>{var n=C(e)?`te-err`:``,r=`Edit path ${e.from} to ${e.to}`,i=`Remove path ${e.from} to ${e.to}`;return n!==t.e&&P(o,t.e=n),r!==t.t&&T(p,`aria-label`,t.t=r),i!==t.a&&T(m,`aria-label`,t.a=i),t},{e:void 0,t:void 0,a:void 0}),r})()})),e}}),(()=>{var e=Ur(),i=e.firstChild.nextSibling,c=i.firstChild,_=c.firstChild.nextSibling;_.firstChild;var b=c.nextSibling.firstChild.nextSibling;b.firstChild;var C=i.nextSibling,E=C.firstChild.nextSibling,D=E.firstChild,O=E.nextSibling.firstChild,k=C.nextSibling,A=k.firstChild.nextSibling,j=A.firstChild,M=A.nextSibling.firstChild,N=k.nextSibling;e.addEventListener(`submit`,S),_.addEventListener(`change`,e=>s(e.currentTarget.value)),w(_,t(r,{get each(){return[...a().roles]},children:e=>(()=>{var t=qr();return w(t,()=>e.name),d(()=>t.selected=o()===e.name),d(()=>t.value=e.name),t})()}),null),b.addEventListener(`change`,e=>u(e.currentTarget.value)),w(b,t(r,{get each(){return[...a().roles]},children:e=>(()=>{var t=qr();return w(t,()=>e.name),d(()=>t.selected=l()===e.name),d(()=>t.value=e.name),t})()}),null),D.addEventListener(`change`,()=>p(`one-way`));var P=y;return typeof P==`function`?x(P,D):y=D,O.addEventListener(`change`,()=>p(`two-way`)),j.addEventListener(`change`,e=>h(e.currentTarget.checked)),M.addEventListener(`change`,e=>v(e.currentTarget.checked)),d(e=>{var t=`te-dir-${n.id}`,r=`te-dir-${n.id}`,i=!o()||!l();return t!==e.e&&T(D,`name`,e.e=t),r!==e.t&&T(O,`name`,e.t=r),i!==e.a&&(N.disabled=e.a=i),e},{e:void 0,t:void 0,a:void 0}),d(()=>_.value=o()),d(()=>b.value=l()),d(()=>D.checked=f()===`one-way`),d(()=>O.checked=f()===`two-way`),d(()=>j.checked=m()),d(()=>M.checked=g()),e})()]}function ta(e){let n=()=>e.c.read().published;return(()=>{var e=Xr();return w(e,t(i,{get when(){return n().mode===`restricted`},get fallback(){return(()=>{var e=Zr(),t=e.firstChild.nextSibling.nextSibling;return w(t,()=>n().entryRole),e})()},get children(){return[(()=>{var e=Jr(),t=e.firstChild.nextSibling.nextSibling;return w(t,()=>n().entryRole),e})(),t(i,{get when(){return n().edges.length},get fallback(){return Qr()},get children(){var e=Yr();return w(e,t(r,{get each(){return[...n().edges]},children:e=>(()=>{var t=$r(),n=t.firstChild,r=n.nextSibling,i=r.nextSibling,a=i.nextSibling;return a.firstChild,w(n,()=>e.from),w(r,()=>Yi(e)),w(i,()=>e.to),w(a,()=>e.kinds.join(` + `),null),d(()=>T(r,`aria-label`,e.direction===`two-way`?`both ways`:`to`)),t})()})),e}})]}})),e})()}function na(e){let n=e.c,[a,o]=c(),[s,l]=c();_(()=>e.handle?.({add:(e,t)=>o({role:e,...t?{sessionID:t}:{}})}));let f=u(()=>{let e=n.roster()?.roles??(n.read()?.published.roles??[]).map(e=>({role:e.name,entry:e.name===n.read().published.entryRole,minMembers:e.minMembers??0,maxMembers:e.maxMembers??16,vacant:!0,understaffed:!1,launching:0,seats:[]})),t=(n.spec()?.roles??[]).filter(e=>!n.publishedRoles().has(e.name)).map(e=>({role:e.name,draftOnly:!0}));return[...e,...t]}),m=u(()=>new Map(f().map(e=>[e.role,e]))),g=u(()=>f().map(e=>e.role),void 0,{equals:(e,t)=>e.length===t.length&&e.every((e,n)=>e===t[n])}),v=e=>n.read()?.published.roles.find(t=>t.name===e)?.label,y=()=>!!n.team()?.paused;return(()=>{var c=ri();return w(c,t(i,{get when(){return!n.roster()},get children(){return ei()}}),null),w(c,t(i,{get when(){return y()},get children(){return ti()}}),null),w(c,t(r,{get each(){return g()},children:a=>{let c=()=>m().get(a),f=()=>{let e=c();return e&&`seats`in e?e:void 0},h=u(()=>f()?rt(f(),e.snap):[]),g=e=>h().find(t=>t.staffingID===e);return(()=>{var c=ui(),u=c.firstChild,m=u.firstChild,_=m.firstChild;return T(c,`aria-label`,`Role ${a}`),T(c,`data-role`,a),w(_,()=>f()?.entry?`★ `:``,null),w(_,a,null),w(m,t(i,{get when(){return v(a)},get children(){var e=ii();return e.firstChild,w(e,()=>v(a),null),e}}),null),w(m,t(i,{get when(){return f()?.entry},get children(){return ai()}}),null),w(m,t(i,{get when(){return!f()},get children(){return zr()}}),null),w(m,t(i,{get when(){return k(()=>!!f())()&&(f().vacant||f().understaffed)},get children(){var e=oi();return w(e,()=>f()?.vacant?`vacant`:`understaffed`),e}}),null),w(u,t(i,{get when(){return f()},get children(){var e=si();return w(e,(()=>{var e=k(()=>!!f());return()=>e()?ot(f().seats.length,f().minMembers,f().maxMembers):``})(),null),w(e,(()=>{var e=k(()=>!!f()?.launching);return()=>e()?` · ${f().launching} launching`:``})(),null),e}}),null),w(c,t(i,{get when(){return!!f()},get fallback(){return(()=>{var e=di(),t=e.firstChild.nextSibling;return t.nextSibling,w(e,a,t),e})()},get children(){return[t(i,{get when(){return h().length>0},get fallback(){return fi()},get children(){var e=ci();return T(e,`aria-label`,`Members of ${a}`),w(e,t(r,{get each(){return h().map(e=>e.staffingID)},children:e=>t(i,{get when(){return g(e)},children:e=>(()=>{var t=pi(),r=t.firstChild,i=r.nextSibling,o=i.nextSibling,s=o.nextSibling;return w(i,()=>e().name),w(o,()=>[e().online?`online`:e().presence===`unknown`?`presence unknown`:e().presence,e().machine,e().harness,`gen ${e().generation}`].filter(Boolean).join(` · `)),s.$$click=()=>void n.unstaff(e().staffingID,e().revision,e().name,a),d(t=>{var o=`tm-dot ${e().online?`on`:`off`}`,c=p(e().sessionID),l=n.busy(),u=`Unstaff ${e().name} from ${a}`;return o!==t.e&&P(r,t.e=o),c!==t.t&&T(i,`href`,t.t=c),l!==t.a&&(s.disabled=t.a=l),u!==t.o&&T(s,`aria-label`,t.o=u),t},{e:void 0,t:void 0,a:void 0,o:void 0}),t})()})})),e}}),(()=>{var e=li(),t=e.firstChild,r=t.nextSibling,i=r.firstChild.nextSibling;return i.nextSibling,t.$$click=()=>o({role:a}),T(t,`aria-label`,`Add member to ${a}`),r.$$click=()=>l(s()===a?void 0:a),w(r,a,i),d(e=>{var i=y()||n.busy(),o=y()||n.busy(),c=s()===a;return i!==e.e&&(t.disabled=e.e=i),o!==e.t&&(r.disabled=e.t=o),c!==e.a&&T(r,`aria-expanded`,e.a=c),e},{e:void 0,t:void 0,a:void 0}),e})(),t(i,{get when(){return s()===a},get children(){return t(ia,{c:n,get snap(){return e.snap},role:a,onDone:()=>l(void 0)})}})]}}),null),c})()}}),null),w(c,t(i,{get when(){return e.canvasHint},get children(){return ni()}}),null),w(c,t(i,{get when(){return a()},keyed:!0,children:r=>t(ra,h({c:n,get snap(){return e.snap},get role(){return r.role}},()=>r.sessionID?{sessionID:r.sessionID}:{},{onClose:()=>o(void 0),onLaunch:()=>l(r.role)}))}),null),c})()}function ra(e){let n=e.c,[a,o]=c(``),[s,l]=c(e.sessionID??``),f,p=t=>({teamID:n.id,role:e.role,query:t,...n.roster()?{roster:n.roster().seats}:{}}),m=u(()=>it(e.snap,p(a()))),h=u(()=>it(e.snap,p(``)).find(e=>e.sessionID===s())),g=()=>h()?.name??s();_(()=>e.sessionID&&queueMicrotask(()=>f?.focus()));let v=async t=>{t.preventDefault(),s()&&await n.attach(e.role,s(),g())&&e.onClose()},y=e=>e.map(e=>`${e.team} (${e.role})`).join(`, `);return t(j,{open:!0,get title(){return`Add a member to ${e.role}`},get onClose(){return e.onClose},class:`tm-picker`,get children(){var c=gi(),u=c.firstChild,p=u.firstChild.nextSibling;p.nextSibling;var _=u.nextSibling,b=_.nextSibling,S=b.firstChild,C=S.nextSibling,E=C.nextSibling;E.firstChild,c.addEventListener(`submit`,v),w(u,()=>e.role,p),_.$$input=e=>o(e.currentTarget.value),w(c,t(i,{get when(){return e.snap},get fallback(){return _i()},get children(){var o=mi();return o.firstChild,w(o,t(i,{get when(){return m().length},get fallback(){return(()=>{var e=vi();return w(e,()=>a()?`No session matches.`:`No running sessions.`),e})()},get children(){return t(r,{get each(){return m()},children:t=>(()=>{var r=yi(),i=r.firstChild,a=i.nextSibling,o=a.nextSibling.firstChild,c=o.nextSibling;c.firstChild;var u=c.nextSibling;return i.addEventListener(`change`,()=>l(t.sessionID)),w(o,()=>t.name),w(c,()=>[t.online?`online`:`offline`,t.machine,t.harness].filter(Boolean).join(` · `),null),w(u,(()=>{var n=k(()=>!!t.seated);return()=>n()?`Already holds ${e.role}.`:k(()=>!!t.memberships.length)()?`Also in ${y([...t.memberships])}`:`In no other team`})(),null),w(u,(()=>{var e=k(()=>!(!t.here.length||t.seated));return()=>e()?` · here as ${t.here.join(`, `)}`:``})(),null),d(e=>{var o=s()===t.sessionID,c=!!t.seated,l=`tm-pick-${n.id}`,u=t.seated,d=`tm-dot ${t.online?`on`:`off`}`;return o!==e.e&&r.classList.toggle(`chosen`,e.e=o),c!==e.t&&r.classList.toggle(`seated`,e.t=c),l!==e.a&&T(i,`name`,e.a=l),u!==e.o&&(i.disabled=e.o=u),d!==e.i&&P(a,e.i=d),e},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),d(()=>i.value=t.sessionID),d(()=>i.checked=s()===t.sessionID),r})()})}}),null),o}}),b),w(c,t(i,{get when(){return s()},get children(){var e=hi();return w(e,(()=>{var e=k(()=>!!h()?.memberships.length);return()=>e()?`${g()} is also in: ${h().memberships.map(e=>`${e.team} as ${e.role}`).join(`; `)}.`:`${g()} is in no other team.`})()),e}}),b),w(c,t(Ki,{get notice(){return k(()=>n.notice()?.kind===`ok`)()?void 0:n.notice()}}),b),S.$$click=()=>{e.onClose(),e.onLaunch()},D(C,`click`,e.onClose,!0);var O=f;return typeof O==`function`?x(O,E):f=E,w(E,()=>e.role,null),d(t=>{var r=`Add a member to ${e.role}`,i=!e.sessionID,a=!s()||n.busy();return r!==t.e&&T(c,`aria-label`,t.e=r),i!==t.t&&(_.autofocus=t.t=i),a!==t.a&&(E.disabled=t.a=a),t},{e:void 0,t:void 0,a:void 0}),d(()=>_.value=a()),c}})}function ia(e){let n=e.c,[a,o]=c(e.role??``),[s,l]=c(``),[f,p]=c(``),[m,g]=c(``),[v,y]=c(``),[x,S]=c(`worktree`),[C,T]=c(``),[E,D]=c(``),[O,k]=c(``),[A,j]=c(``),[M,N]=c(),[P,F]=c([]);_(()=>void hr().then(F));let I=u(()=>(e.snap?.nodes??[]).filter(e=>e.kind===`machine`)),L=u(()=>{let e=I().find(e=>e.machineID===s());return e?.harnesses.length?e.harnesses:[`opencode`,`claude-code`,`codex`]}),R=e=>M()?.field===e?M().error:void 0,z=async t=>{t.preventDefault();let r=Le({role:a(),machine:s(),harness:f(),profile:m(),repo:v(),mode:x(),branch:C(),remote:E(),name:O(),prompt:A()});if(!a())return N({field:`role`,error:`Choose a published role`});if(!r.ok)return N({field:r.field,error:r.error});N(void 0),await n.launch(a(),r.body)&&e.onDone?.()};return(()=>{var c=xi(),u=c.firstChild.nextSibling,m=u.firstChild;return c.addEventListener(`submit`,z),w(c,t($,{label:`Role`,get error(){return R(`role`)},children:e=>(()=>{var i=Si();return i.firstChild,b(i,h(e,{onChange:e=>o(e.currentTarget.value)}),!1,!0),w(i,t(r,{get each(){return[...n.publishedRoles()]},children:e=>(()=>{var t=qr();return t.value=e,w(t,e),d(()=>t.selected=a()===e),t})()}),null),i})()}),u),w(c,t($,{label:`Machine`,children:e=>(()=>{var n=Ci();return n.firstChild,b(n,h(e,{onChange:e=>l(e.currentTarget.value)}),!1,!0),w(n,t(r,{get each(){return I().map(e=>e.machineID??e.id)},children:e=>{let t=()=>I().find(t=>(t.machineID??t.id)===e);return(()=>{var n=qr();return n.value=e,w(n,()=>t()?.label??e,null),w(n,()=>t()?.online===!1?` (offline)`:``,null),d(()=>n.selected=s()===e),n})()}}),null),n})()}),u),w(c,t($,{label:`Harness`,children:e=>(()=>{var n=wi();return n.firstChild,b(n,h(e,{onChange:e=>p(e.currentTarget.value)}),!1,!0),w(n,t(r,{get each(){return L()},children:e=>(()=>{var t=qr();return t.value=e,w(t,e),d(()=>t.selected=f()===e),t})()}),null),n})()}),u),w(c,t($,{label:`Agent profile`,children:e=>(()=>{var n=Ti();return n.firstChild,b(n,h(e,{onChange:e=>g(e.currentTarget.value)}),!1,!0),w(n,t(r,{get each(){return P()},children:e=>(()=>{var t=Ei(),n=t.firstChild,r=n.nextSibling;return r.nextSibling,w(t,()=>e.title,n),w(t,()=>e.version,r),d(()=>t.value=`${e.id}@${e.version}`),t})()}),null),n})()}),u),w(c,t($,{label:`Repository on the machine`,get error(){return R(`repo`)},children:e=>(()=>{var t=Pr();return b(t,h(e,{type:`text`,placeholder:`/home/you/projects/app`,get value(){return v()},onInput:e=>y(e.currentTarget.value)}),!1,!1),t})()}),u),w(c,t($,{label:`Workspace`,children:e=>(()=>{var t=Di();return b(t,h(e,{onChange:e=>S(e.currentTarget.value)}),!1,!0),t})()}),u),w(c,t(i,{get when(){return x()===`worktree`},get children(){return t($,{label:`Branch`,get error(){return R(`branch`)},children:e=>(()=>{var t=Pr();return b(t,h(e,{type:`text`,get value(){return C()},onInput:e=>T(e.currentTarget.value)}),!1,!1),t})()})}}),u),w(c,t(i,{get when(){return x()===`clone`},get children(){return t($,{label:`Remote`,get error(){return R(`remote`)},children:e=>(()=>{var t=Pr();return b(t,h(e,{type:`text`,get value(){return E()},onInput:e=>D(e.currentTarget.value)}),!1,!1),t})()})}}),u),w(c,t($,{label:`Session name (optional)`,get error(){return R(`name`)},children:e=>(()=>{var t=Pr();return b(t,h(e,{type:`text`,get value(){return O()},onInput:e=>k(e.currentTarget.value)}),!1,!1),t})()}),u),w(c,t($,{label:`First prompt (optional)`,children:e=>(()=>{var t=Fr();return b(t,h(e,{rows:`2`,get value(){return A()},onInput:e=>j(e.currentTarget.value)}),!1,!1),t})()}),u),w(u,t(i,{get when(){return e.onDone},get children(){var t=bi();return t.$$click=()=>e.onDone(),t}}),null),d(()=>m.disabled=n.busy()||!!n.team()?.paused),c})()}function aa(e){let n=e.c,[a,o]=c(``),[s,l]=c(``),[u,f]=c(`normal`),[p,m]=c(``),[g,_]=c(),v=e=>g()?.field===e?g().error:void 0,y=async e=>{e.preventDefault();let t=ze({title:a(),brief:s(),priority:u(),criteria:p()});if(!t.ok)return _({field:t.field,error:t.error});_(void 0),await n.submit(t.body)&&(o(``),l(``),m(``))};return t(i,{get when(){return k(()=>!n.team()?.paused)()&&n.team()?.state!==`archived`},get fallback(){return(()=>{var e=vi();return w(e,()=>n.team()?.state===`archived`?`The team is archived: restore it to give it work.`:`The team is paused: it takes no new work. Resume it first.`),e})()},get children(){var e=Oi(),i=e.firstChild,c=i.nextSibling,g=c.firstChild,_=g.nextSibling,x=_.firstChild.nextSibling;return x.nextSibling,e.addEventListener(`submit`,y),w(e,t($,{label:`Task title`,get error(){return v(`title`)},children:e=>(()=>{var t=Pr();return b(t,h(e,{type:`text`,placeholder:`What should the team do?`,get value(){return a()},onInput:e=>o(e.currentTarget.value)}),!1,!1),t})()}),i),w(e,t($,{label:`Brief`,get error(){return v(`brief`)},children:e=>(()=>{var t=Fr();return b(t,h(e,{rows:`3`,get value(){return s()},onInput:e=>l(e.currentTarget.value)}),!1,!1),t})()}),i),w(i,t($,{label:`Priority`,children:e=>(()=>{var n=ki();return b(n,h(e,{onChange:e=>f(e.currentTarget.value)}),!1,!0),w(n,t(r,{get each(){return[...Re]},children:e=>(()=>{var t=qr();return t.value=e,w(t,e),d(()=>t.selected=u()===e),t})()})),n})()})),w(e,t($,{label:`Done when (one per line)`,get error(){return v(`criteria`)},children:e=>(()=>{var t=Fr();return b(t,h(e,{rows:`2`,get value(){return p()},onInput:e=>m(e.currentTarget.value)}),!1,!1),t})()}),c),w(_,()=>n.read()?.published.entryRole,x),d(()=>g.disabled=n.busy()),e}})}var oa={queued:`Submitted`,routed:`Routed`,working:`Working`,closed:`Closed`};function sa(e){let n=e.c,a=u(()=>e.limit?(n.items()??[]).slice(0,e.limit):n.items()??[]),o=t=>e.snap?.nodes.find(e=>e.id===t)?.label??t;return[t(i,{get when(){return n.intakeError()},get children(){var e=Ai();return e.firstChild,w(e,()=>n.intakeError(),null),e}}),t(i,{get when(){return n.items()},get fallback(){return Mi()},get children(){return t(i,{get when(){return a().length},get fallback(){return Ni()},get children(){var e=ji();return w(e,t(r,{get each(){return a().map(e=>e.id)},children:e=>t(i,{get when(){return a().find(t=>t.id===e)},children:e=>t(ca,{c:n,get item(){return e()},sessionName:o})})})),e}})}})]}function ca(e){let n=()=>e.item,a=()=>Je(n());return(()=>{var o=zi(),s=o.firstChild,c=s.firstChild,l=c.nextSibling,u=s.nextSibling,f=u.nextSibling,m=f.nextSibling;return w(c,()=>n().title),w(l,()=>qe[a()]),w(u,t(r,{get each(){return Xe(n())},children:e=>(()=>{var t=Sr();return w(t,()=>oa[e.step]),d(n=>{var r=`tm-step tm-step-${e.state}`,i=e.state===`current`||e.state===`blocked`?`step`:void 0;return r!==n.e&&P(t,n.e=r),i!==n.t&&T(t,`aria-current`,n.t=i),n},{e:void 0,t:void 0}),t})()})),w(f,()=>[n().priority===`normal`?void 0:`${n().priority} priority`,`submitted ${N(n().createdAt)}`,n().updatedAt===n().createdAt?void 0:`updated ${N(n().updatedAt)}`,n().lastError?`last routing error: ${n().lastError}`:void 0,n().reason?`reason: ${n().reason}`:void 0].filter(Boolean).join(` · `)),w(m,t(i,{get when(){return n().sessionID},get fallback(){return t(i,{get when(){return n().status===`queued`},get children(){return Bi()}})},get children(){return[Pi(),(()=>{var t=Fi();return w(t,()=>e.sessionName(n().sessionID)),d(()=>T(t,`href`,p(n().sessionID))),t})()]}}),null),w(m,t(i,{get when(){return n().workspaceID},get children(){var e=Ii();return d(t=>{var r=`/watchtower?group=workspace&ws=${encodeURIComponent(n().workspaceID)}`,i=`Assignment ${n().assignmentID??``} in workspace ${n().workspaceID}`;return r!==t.e&&T(e,`href`,t.e=r),i!==t.t&&T(e,`title`,t.t=i),t},{e:void 0,t:void 0}),e}}),null),w(m,t(i,{get when(){return Ye(n())},get children(){var r=Ri(),a=r.firstChild;return w(r,t(i,{get when(){return n().status===`routed`},get children(){var t=Li();return t.$$click=()=>void e.c.setIntake(n(),`done`),d(r=>{var i=e.c.busy(),a=`Mark ${n().title} done`;return i!==r.e&&(t.disabled=r.e=i),a!==r.t&&T(t,`aria-label`,r.t=a),r},{e:void 0,t:void 0}),t}}),a),a.$$click=()=>void e.c.setIntake(n(),`cancelled`),d(t=>{var r=e.c.busy(),i=`Cancel ${n().title}`;return r!==t.e&&(a.disabled=t.e=r),i!==t.t&&T(a,`aria-label`,t.t=i),t},{e:void 0,t:void 0}),r}}),null),d(e=>{var t=a(),n=`tm-phase tm-phase-${a()}`;return t!==e.e&&T(o,`data-phase`,e.e=t),n!==e.t&&P(l,e.t=n),e},{e:void 0,t:void 0}),o})()}function la(e){let[n,o]=c(),[s,u]=c(``);return l(a(()=>e.c.team()?.version,()=>void tr(e.c.id).then(e=>(o(e),u(``))).catch(e=>u(e.message)))),t(i,{get when(){return!s()},get fallback(){return(()=>{var e=Hi();return e.firstChild,w(e,s,null),e})()},get children(){return t(i,{get when(){return n()},get fallback(){return Ui()},get children(){var a=Vi();return w(a,t(r,{get each(){return n()},children:n=>(()=>{var r=Gi(),a=r.firstChild;a.firstChild;var o=a.nextSibling;return o.firstChild,w(a,()=>n.version,null),w(o,()=>N(n.publishedAt),null),w(r,t(i,{get when(){return n.version===e.c.team()?.version},get children(){return Wi()}}),null),r})()})),a}})}})}S([`click`,`input`]);var ua=F(`<p role=alert class=wt-error>`),da=F(`<form class="te-form tm-create"aria-label="New team"><div class=te-row></div><p class=muted>Creating publishes version 1 at once. You add members and more roles next.</p><div class=dialog-actions><button type=button class=btn>Cancel</button><button type=submit class="btn primary">Create team`),fa=F(`<input>`),pa=e=>`/teams/${encodeURIComponent(e)}`;function ma(e){let[r,a]=c(``),[o,s]=c(``),[l,u]=c(`restricted`),[f,p]=c(`pm`),[m,g]=c(`Project manager`),[_,v]=c(),[y,x]=c(!1),S=gr(),C=e=>_()?.field===e?_().error:void 0,T=async t=>{t.preventDefault();let i=Ce({name:r(),title:o(),mode:l(),entryRole:f(),entryLabel:m()});if(!i.ok)return v({field:i.field,error:i.error});v(void 0),x(!0);try{let t=await ir(i.body,S);S=gr(),e.onClose(),a(``),s(``),e.onCreated?e.onCreated(t.team.id):n(pa(t.team.id))}catch(e){v({field:`form`,error:Me(e).message})}finally{x(!1)}};return t(j,{get open(){return e.open},title:`New team`,get onClose(){return e.onClose},get children(){var n=da(),c=n.firstChild,_=c.nextSibling,v=_.nextSibling.firstChild,x=v.nextSibling;return n.addEventListener(`submit`,T),w(n,t($,{label:`Name (the #team address, can't change)`,get error(){return C(`name`)},children:e=>(()=>{var t=fa();return b(t,h(e,{get value(){return r()},onInput:e=>a(e.currentTarget.value),placeholder:`product-a`,autofocus:!0}),!1,!1),t})()}),c),w(n,t($,{label:`Title`,get error(){return C(`title`)},children:e=>(()=>{var t=fa();return b(t,h(e,{get value(){return o()},onInput:e=>s(e.currentTarget.value),placeholder:`Product A`}),!1,!1),t})()}),c),w(n,t(Ji,{get value(){return l()},onChange:u,name:`tm-new-mode`}),c),w(c,t($,{label:`Entry role (receives the team's work)`,get error(){return C(`entry`)},children:e=>(()=>{var t=fa();return b(t,h(e,{get value(){return f()},onInput:e=>p(e.currentTarget.value)}),!1,!1),t})()}),null),w(c,t($,{label:`Entry role label`,children:e=>(()=>{var t=fa();return b(t,h(e,{get value(){return m()},onInput:e=>g(e.currentTarget.value)}),!1,!1),t})()}),null),w(n,t(i,{get when(){return C(`form`)},get children(){var e=ua();return w(e,()=>C(`form`)),e}}),_),D(v,`click`,e.onClose,!0),d(()=>x.disabled=y()),n}})}S([`click`]);var ha=new Set([`agent`,`status`,`catalog`,`resync`,`decision`]),ga=2e3;function _a(e,t){let n,r=Date.now(),i=!1,o=!1,s=!0,c=()=>document.visibilityState===`visible`,u=async()=>{if(!i&&s){i=!0,o=!1,r=Date.now();try{await e()}finally{i=!1,o?f():d()}}},d=()=>{clearTimeout(n);let e=at({visible:c(),openWork:t()});e!==void 0&&s&&(n=setTimeout(()=>void u(),e))},f=()=>{c()&&s&&(o=!0,!i&&(clearTimeout(n),n=setTimeout(()=>void u(),Math.max(0,r+ga-Date.now()))))};_(()=>{let e=I(e=>typeof e.type==`string`&&ha.has(e.type)&&f()),t=()=>c()?void u():clearTimeout(n);document.addEventListener(`visibilitychange`,t),d(),m(()=>{s=!1,e(),clearTimeout(n),document.removeEventListener(`visibilitychange`,t)})}),l(a(t,()=>!i&&!o&&d(),{defer:!0}))}export{In as $,bt as A,Pt as B,Un as C,Cn as D,Ct as E,zn as F,Gt as G,Mt as H,cn as I,kt as J,vn as K,Hn as L,At as M,Sn as N,lt as O,Ft as P,pn as Q,Jt as R,Wn as S,ct as T,mn as U,Nt as V,Ln as W,_n as X,bn as Y,En as Z,Zn as _,Zi as a,Vn as at,Kn as b,Ji as c,Ie as ct,ta as d,fe as dt,Bn as et,$i as f,Pe as ft,_r as g,la as h,Qi as i,ln as it,St as j,xt as k,Ki as l,Me as lt,Xi as m,ma as n,Nn as nt,sa as o,Fn as ot,aa as p,Dt as q,pa as r,Rn as rt,na as s,$e as st,_a as t,Pn as tt,ea as u,Fe as ut,Xn as v,It as w,qn as x,Qn as y,qt as z};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Z as e}from"./ui-j5FFk90B.js";var t={workspacesPerUser:200,membersPerWorkspace:200,bindingsPerWorkspace:16,supervisionLinksPerWorkspace:400,supervisionDepth:6,checkpointsPerSupervisor:50,sideChatsPerWorkspace:100,sideChatContextItems:20,sideChatContextBytes:65536,panes:4};function n(e,n,r,i=t.supervisionDepth){let a=new Map(e);a.set(n,r);let o=e=>{let t=new Set,n=0;for(let r=e;r!==void 0;r=a.get(r)){if(t.has(r))return`cycle`;t.add(r),a.has(r)&&n++}return n},s=0;for(let e of a.keys()){let t=o(e);if(t===`cycle`)return`cycle`;s=Math.max(s,t)}return s>i?`depth`:void 0}var r=t.panes,i=`hub.paneLayout.v1`,a=[`single`,`vertical`,`horizontal`,`grid`],o=t=>typeof t==`string`&&e.test(t),s=e=>`artifactID`in e&&e.sessionID===void 0?e.artifactID:void 0,c=(e,t)=>s(e)!==void 0||s(t)!==void 0?s(e)===s(t):e.sessionID===t.sessionID&&e.sideChatID===t.sideChatID,l=s,u=c;function d(e){if(typeof e!=`object`||!e)return;let{sessionID:t,sideChatID:n,artifactID:r}=e;return t===void 0?o(r)?{artifactID:r}:void 0:!o(t)||n!==void 0&&!o(n)?void 0:o(n)?{sessionID:t,sideChatID:n}:{sessionID:t}}function f(e){return{v:1,split:`single`,panes:e?[{sessionID:e}]:[],focused:0}}function p(e,t,n){let r=Number.isInteger(n)?Math.min(Math.max(0,n),Math.max(0,t.length-1)):0;return{v:1,split:t.length<=1?`single`:e===`single`?`vertical`:e,panes:t,focused:r}}function m(e){if(typeof e!=`object`||!e||Array.isArray(e))return;let t=e;if(t.v!==1||!Array.isArray(t.panes))return;let n=[];for(let e of t.panes){if(n.length>=r)break;let t=d(e)??(typeof e==`object`&&e&&o(e.sessionID)?{sessionID:e.sessionID}:void 0);t&&(n.some(e=>c(e,t))||n.push(t))}return p(a.includes(t.split)?t.split:`vertical`,n,typeof t.focused==`number`?t.focused:0)}function h(e,t,n={}){let i=d(t);if(!i)return{layout:e,outcome:`invalid`};let a=e.panes.findIndex(e=>c(e,i));if(a>=0)return{layout:a===e.focused?e:p(e.split,e.panes,a),outcome:`focused`};if(!e.panes.length)return{layout:p(e.split,[i],0),outcome:`added`};if(n.beside){if(e.panes.length>=r)return{layout:e,outcome:`limit`};let t=e.focused+1;return{layout:p(e.split,[...e.panes.slice(0,t),i,...e.panes.slice(t)],t),outcome:`added`}}return{layout:p(e.split,e.panes.map((t,n)=>n===e.focused?i:t),e.focused),outcome:`replaced`}}function g(e,t){if(!Number.isInteger(t)||t<0||t>=e.panes.length)return e;let n=e.panes.filter((e,n)=>n!==t);return p(e.split,n,t<e.focused?e.focused-1:e.focused)}function _(e,t){return!Number.isInteger(t)||t<0||t>=e.panes.length||t===e.focused?e:p(e.split,e.panes,t)}function v(e,t){return!a.includes(t)||e.panes.length<=1||t===`single`||t===e.split?e:p(t,e.panes,e.focused)}function y(e){try{let t=e?.getItem(i);return t?m(JSON.parse(t)):void 0}catch{return}}function b(e,t){if(!e)return!1;try{return e.setItem(i,JSON.stringify(t)),!0}catch{return!1}}function x(e,t,n){let r=e.panes.length,i=e=>Number.isInteger(e)&&e>=0&&e<r;if(!i(t)||!i(n)||t===n)return e;let a=e.panes.map((e,t)=>t);return a.splice(n,0,...a.splice(t,1)),p(e.split,a.map(t=>e.panes[t]),a.indexOf(e.focused))}function S(e,t){let n=e.panes.length;return n>1?_(e,(e.focused+t+n)%n):e}export{y as a,l as c,v as d,p as f,n as g,t as h,_ as i,u as l,d as m,g as n,x as o,f as p,S as r,h as s,r as t,b as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{C as e,Lt as t,T as n,w as r,x as i,y as a}from"./ui-j5FFk90B.js";import{a as o,p as s,s as c,t as l,u}from"./pane-layout-EdR1kRrG.js";var d=()=>{try{return globalThis.localStorage}catch{return}},[f,p]=t(o(d())??s()),m=f;function h(e){let t=f(),n=e(t);return n===t||(p(n),u(d(),n))}var g=`Up to ${l} panes side by side. Close one to open another.`;function _(t){if(i(t))return e(`/concierge`);let{layout:r,outcome:o}=c(m(),{sessionID:t},{beside:!0});if(o===`limit`)return a(g,`warn`);o!==`invalid`&&h(()=>r),e(n(t))}function v(t){if(t.sessionID!==void 0&&i(t.sessionID))return!1;let{layout:n,outcome:o}=c(m(),t,{beside:!0});if(o===`limit`)return a(g,`warn`),!1;if(o===`invalid`)return!1;h(()=>n);let s=r();return s.name!==`session`&&s.name!==`panes`&&e(`/panes`),!0}var y=e=>v({artifactID:e}),b=(e,t)=>v({sessionID:e,sideChatID:t}),x=`modulepreload`,S=function(e){return`/`+e},C={},w=function(e){return e.pathname.endsWith(`.css`)},T=function(e,t,n){if(t in e)return e[t];let r=n();if(!r){e[t]=void 0;return}let i=r.then(()=>{e[t]=void 0},n=>{throw e[t]=void 0,n});return e[t]=i,i},E=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e,i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?new URL(import.meta.resolve(e)):new URL(e,import.meta.url)}r=o(t.map(t=>{t=S(t,n);let r=s(t),i=w(r);return T(C,r.href,()=>{if(e===void 0){e={all:new Set,styles:new Set};let t=document.getElementsByTagName(`link`);for(let n=t.length-1;n>=0;n--){let r=t[n];e.all.add(r.href),r.rel===`stylesheet`&&e.styles.add(r.href)}}if((i?e.styles:e.all).has(r.href))return;let t=document.createElement(`link`);if(t.rel=i?`stylesheet`:x,i||(t.as=`script`),t.crossOrigin=``,t.href=r.href,a&&t.setAttribute(`nonce`,a),document.head.appendChild(t),i)return new Promise((e,n)=>{t.addEventListener(`load`,e),t.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${r}`)))})})}).filter(e=>e!==void 0))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})};export{b as a,_ as i,g as n,m as o,y as r,h as s,E as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{G as e,Q as t,it as n}from"./ui-j5FFk90B.js";var r={artifactsPerUser:5e3,revisionsPerArtifact:500,blobBytes:26214400,userBlobBytes:2147483648,bundleFiles:200,chunkBytes:1048576,aiJobsPerUser:8,aiJobsPerArtifact:2,aiInstructionChars:8e3},i=[`markdown`,`code`,`image`,`table`,`chart`,`dashboard`,`html`,`app`,`file`],a=[`html`,`app`],o=[`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`],s=e=>typeof e==`string`&&/^sha256:[0-9a-f]{64}$/.test(e);function c(e){if(!t(e))return`blob must be an object`;if(!s(e.hash))return`hash must be sha256:<64 hex>`;if(typeof e.bytes!=`number`||!Number.isSafeInteger(e.bytes)||e.bytes<0||e.bytes>r.blobBytes)return`bytes must be 0–${r.blobBytes}`;if(!o.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`}var l=`/api/agent/artifacts`,u={workspace:``,type:``},d=e=>typeof e==`string`&&i.includes(e);function f(t){let n=typeof t==`string`?new URLSearchParams(t):t,r=n.get(`workspace`)??``,i=n.get(`type`)??``;return{workspace:r===`none`||e(`workspace`,r)?r:``,type:d(i)?i:``}}function p(e){let t=new URLSearchParams;e.workspace&&t.set(`workspace`,e.workspace),e.type&&t.set(`type`,e.type);let n=t.toString();return n?`?${n}`:``}var m=e=>e.workspace&&e.workspace!==`none`?e.workspace:``;function h(e,t){let n=new URLSearchParams({state:`active`,limit:`50`}),r=m(e);return r&&n.set(`workspace`,r),t&&n.set(`cursor`,t),`${l}?${n}`}var g=e=>typeof e==`string`&&e.length>0;function _(e){if(!e||typeof e!=`object`)return;let t=e;if(g(t.id)&&typeof t.title==`string`&&d(t.kind)&&typeof t.updatedAt==`number`)return{id:t.id,title:t.title,kind:t.kind,visibility:t.visibility===`workspace`?`workspace`:`private`,...g(t.workspaceID)?{workspaceID:t.workspaceID}:{},...g(t.description)?{description:t.description}:{},updatedAt:t.updatedAt}}function v(e){let t=e&&typeof e==`object`?e:{};return{items:Array.isArray(t.items)?t.items.flatMap(e=>_(e)??[]):[],...g(t.cursor)?{cursor:t.cursor}:{}}}function y(e,t){return e.filter(e=>(t.type===``||e.kind===t.type)&&(t.workspace===``||(t.workspace===`none`?!e.workspaceID:e.workspaceID===t.workspace)))}function b(e){return e.status===422||e.code===`unsupported`?{kind:`unsupported`,text:`Artifacts aren't supported on this hub yet.`}:e.status===404?{kind:`unavailable`,text:`This hub doesn't have artifacts.`}:e.status===403||e.status===401?{kind:`forbidden`,text:`This device isn't allowed to read artifacts.`}:{kind:`error`,text:e.message?`Could not load artifacts: ${e.message}`:`Could not load artifacts (HTTP ${e.status}).`}}function x(e){let t=e&&typeof e==`object`?e:{};return{status:typeof t.status==`number`?t.status:0,...typeof t.code==`string`?{code:t.code}:{},message:typeof t.message==`string`?t.message:String(e)}}function S(e,t){return t?`None of the artifacts loaded so far match. Load more to keep looking.`:e.workspace===``&&e.type===``?`No artifacts yet. Artifacts that your sessions create show up here.`:`No artifacts match these filters.`}var C=(e,t)=>t.get(e)??`Workspace ${e.slice(0,12)}…`,w=e=>`/artifacts/${encodeURIComponent(e)}`;function T(e,t){let n=u,r,i=0,a=[],o,s={status:`loading`},c=()=>s.status===`ready`?{status:`ready`,items:y(a,n),total:a.length,more:o!==void 0,loadingMore:s.loadingMore,...s.moreError?{moreError:s.moreError}:{}}:s,l=e=>{s=e,t(c())};function d(u){n=u;let d=m(u);if(d===r&&s.status===`ready`){t(c());return}r=d;let f=++i;a=[],o=void 0,l({status:`loading`}),e.list(u).then(e=>{f===i&&(a=[...e.items],o=e.cursor,l({status:`ready`,loadingMore:!1}))},e=>f===i&&l({status:`error`,error:b(x(e))}))}function f(){if(s.status!==`ready`||s.loadingMore||o===void 0)return;let t=i;l({status:`ready`,loadingMore:!0}),e.list(n,o).then(e=>{if(t!==i)return;let n=new Set(a.map(e=>e.id));a=[...a,...e.items.filter(e=>!n.has(e.id))],o=e.cursor,l({status:`ready`,loadingMore:!1})},e=>t===i&&l({status:`ready`,loadingMore:!1,moreError:b(x(e)).text}))}function p(){r=void 0,d(n)}return{load:d,more:f,reload:p,view:c}}var E={list:async(e,t)=>v(await n(h(e,t)))};async function D(){try{return((await n(`/api/agent/workspaces?state=active&limit=200`)).items??[]).flatMap(e=>typeof e.id==`string`&&typeof e.title==`string`?[{id:e.id,title:e.title}]:[])}catch{return[]}}export{S as a,C as c,a as d,c as f,T as i,i as l,D as n,p as o,w as r,f as s,E as t,r as u};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
var e={context:void 0,registry:void 0,effects:void 0,done:!1,getContextId(){return t(this.context.count)},getNextContextId(){return t(this.context.count++)}};function t(t){let n=String(t),r=n.length-1;return e.context.id+(r?String.fromCharCode(96+r):``)+n}function n(t){e.context=t}var r=(e,t)=>e===t,i=Symbol(`solid-proxy`),a=typeof Proxy==`function`,o=Symbol(`solid-track`),s={equals:r},c=null,l=ge,u=1,d=2,f={owned:null,cleanups:null,context:null,owner:null},p={},m=null,h=null,g=null,_=null,v=null,y=0;function b(e,t){let n=g,r=m,i=e.length===0,a=t===void 0?r:t,o=i?f:{owned:null,cleanups:null,context:a?a.context:null,owner:a},s=i?e:()=>e(()=>T(()=>L(o)));m=o,g=null;try{return F(s,!0)}finally{g=n,m=r}}function x(e,t){t=t?Object.assign({},s,t):s;let n={value:e,observers:null,observerSlots:null,comparator:t.equals||void 0};return[fe.bind(n),e=>(typeof e==`function`&&(e=h&&h.running&&h.sources.has(n)?e(n.tValue):e(n.value)),pe(n,e))]}function ee(e,t,n){M(N(e,t,!0,u))}function S(e,t,n){M(N(e,t,!1,u))}function C(e,t,n){l=_e;let r=N(e,t,!1,u),i=j&&le(j);i&&(r.suspense=i),(!n||!n.render)&&(r.user=!0),v?v.push(r):M(r)}function w(e,t,n){n=n?Object.assign({},s,n):s;let r=N(e,t,!0,0);return r.observers=null,r.observerSlots=null,r.comparator=n.equals||void 0,M(r),fe.bind(r)}function te(e){return e&&typeof e==`object`&&`then`in e}function ne(t,n,r){let i,a,o;typeof n==`function`?(i=t,a=n,o=r||{}):(i=!0,a=t,o=n||{});let s=null,c=p,l=null,u=!1,d=!1,f=`initialValue`in o,_=typeof i==`function`&&w(i),v=new Set,[y,b]=(o.storage||x)(o.initialValue),[S,C]=x(void 0),[ne,re]=x(void 0,{equals:!1}),[ie,E]=x(f?`ready`:`unresolved`);m&&D(()=>{for(let e of v.keys())e.decrement();v.clear(),h&&s&&h.promises.delete(s),s=null}),e.context&&(l=e.getNextContextId(),o.ssrLoadFrom===`initial`?c=o.initialValue:e.load&&e.has(l)&&(c=e.load(l)));function O(e,t,n,r){return s===e&&(s=null,r!==void 0&&(f=!0),(e===c||t===c)&&o.onHydrated&&queueMicrotask(()=>o.onHydrated(r,{value:t})),c=p,h&&e&&u?(h.promises.delete(e),u=!1,F(()=>{h.running=!0,k(t,n)},!1)):k(t,n)),t}function k(e,t){F(()=>{t===void 0&&b(()=>e),E(t===void 0?f?`ready`:`unresolved`:`errored`),C(t);for(let e of v.keys())e.decrement();v.clear()},!1)}function oe(){let e=j&&le(j),t=y(),n=S();if(n!==void 0&&!s)throw n;return g&&!g.user&&e&&ee(()=>{ne(),s&&(e.resolved&&h&&u?h.promises.add(s):v.has(e)||(e.increment(),v.add(e)))}),t}function A(e=!0){if(e!==!1&&d)return;d=!1;let t=_?_():i;if(u=h&&h.running,t==null||t===!1){O(s,T(y));return}h&&s&&h.promises.delete(s);let n,r=c===p?T(()=>{try{return a(t,{value:y(),refetching:e})}catch(e){n=e}}):c;if(n!==void 0)O(s,void 0,R(n),t);else return te(r)?(s=r,`v`in r?(r.s===1?O(s,r.v,void 0,t):O(s,void 0,R(r.v),t),r):(d=!0,queueMicrotask(()=>d=!1),F(()=>{E(f?`refreshing`:`pending`),re()},!1),r.then(e=>O(r,e,void 0,t),e=>O(r,void 0,R(e),t)))):(O(s,r,void 0,t),r)}Object.defineProperties(oe,{state:{get:()=>ie()},error:{get:()=>S()},loading:{get(){let e=ie();return e===`pending`||e===`refreshing`}},latest:{get(){if(!f)return oe();let e=S();if(e&&!s)throw e;return y()}}});let se=m;return _?ee(()=>(se=m,A(!1))):A(!1),[oe,{refetch:e=>ae(se,()=>A(e)),mutate:b}]}function re(e){return F(e,!1)}function T(e){if(g===null)return e();let t=g;g=null;try{return e()}finally{g=t}}function ie(e,t,n){let r=Array.isArray(e),i,a=n&&n.defer;return n=>{let o;if(r){o=Array(e.length);for(let t=0;t<e.length;t++)o[t]=e[t]()}else o=e();if(a)return a=!1,n;let s=T(()=>t(o,i,n));return i=o,s}}function E(e){C(()=>T(e))}function D(e){return m===null||(m.cleanups===null?m.cleanups=[e]:m.cleanups.push(e)),e}function O(){return g}function k(){return m}function ae(e,t){let n=m,r=g;m=e,g=null;try{return F(t,!0)}catch(e){z(e)}finally{m=n,g=r}}var[oe,A]=x(!1);function se(e){v.push.apply(v,e),e.length=0}function ce(e,t){let n=Symbol(`context`);return{id:n,Provider:Se(n),defaultValue:e}}function le(e){let t;return m&&m.context&&(t=m.context[e.id])!==void 0?t:e.defaultValue}function ue(e){let t=w(e),n=w(()=>xe(t()));return n.toArray=()=>{let e=n();return Array.isArray(e)?e:e==null?[]:[e]},n}var j;function de(){return j||=ce()}function fe(){let e=h&&h.running;if(this.sources&&(e?this.tState:this.state)){if((e?this.tState:this.state)===u)M(this);else{let e=_;_=null,F(()=>I(this),!1),_=e}}if(g){let e=this.observers;if(!e||e[e.length-1]!==g){let t=e?e.length:0;g.sources?(g.sources.push(this),g.sourceSlots.push(t)):(g.sources=[this],g.sourceSlots=[t]),e?(e.push(g),this.observerSlots.push(g.sources.length-1)):(this.observers=[g],this.observerSlots=[g.sources.length-1])}}return e&&h.sources.has(this)?this.tValue:this.value}function pe(e,t,n){let r=h&&h.running&&h.sources.has(e)?e.tValue:e.value;if(!e.comparator||!e.comparator(r,t)){if(h){let r=h.running;(r||!n&&h.sources.has(e))&&(h.sources.add(e),e.tValue=t),r||(e.value=t)}else e.value=t;e.observers&&e.observers.length&&F(()=>{for(let t=0;t<e.observers.length;t+=1){let n=e.observers[t],r=h&&h.running;r&&h.disposed.has(n)||((r?!n.tState:!n.state)&&(n.pure?_.push(n):v.push(n),n.observers&&ve(n)),r?n.tState=u:n.state=u)}if(_.length>1e6)throw _=[],Error()},!1)}return t}function M(e){if(!e.fn)return;L(e);let t=y;me(e,h&&h.running&&h.sources.has(e)?e.tValue:e.value,t),h&&!h.running&&h.sources.has(e)&&queueMicrotask(()=>{F(()=>{h&&(h.running=!0),g=m=e,me(e,e.tValue,t),g=m=null},!1)})}function me(e,t,n){let r,i=m,a=g;g=m=e;try{r=e.fn(t)}catch(t){return e.pure&&(h&&h.running?(e.tState=u,e.tOwned&&e.tOwned.forEach(L),e.tOwned=void 0):(e.state=u,e.owned&&e.owned.forEach(L),e.owned=null)),e.updatedAt=n+1,z(t)}finally{g=a,m=i}(!e.updatedAt||e.updatedAt<=n)&&(e.updatedAt!=null&&`observers`in e?pe(e,r,!0):h&&h.running&&e.pure?(h.sources.has(e)||(e.value=r),h.sources.add(e),e.tValue=r):e.value=r,e.updatedAt=n)}function N(e,t,n,r=u,i){let a={fn:e,state:r,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:t,owner:m,context:m?m.context:null,pure:n};return h&&h.running&&(a.state=0,a.tState=r),m===null||m!==f&&(h&&h.running&&m.pure?m.tOwned?m.tOwned.push(a):m.tOwned=[a]:m.owned?m.owned.push(a):m.owned=[a]),a}function P(e){let t=h&&h.running;if((t?e.tState:e.state)===0)return;if((t?e.tState:e.state)===d)return I(e);if(e.suspense&&T(e.suspense.inFallback))return e.suspense.effects.push(e);let n=[e];for(;(e=e.owner)&&(!e.updatedAt||e.updatedAt<y);){if(t&&h.disposed.has(e))return;(t?e.tState:e.state)&&n.push(e)}for(let r=n.length-1;r>=0;r--){if(e=n[r],t){let t=e,i=n[r+1];for(;(t=t.owner)&&t!==i;)if(h.disposed.has(t))return}if((t?e.tState:e.state)===u)M(e);else if((t?e.tState:e.state)===d){let t=_;_=null,F(()=>I(e,n[0]),!1),_=t}}}function F(e,t){if(_)return e();let n=!1;t||(_=[]),v?n=!0:v=[],y++;try{let t=e();return he(n),t}catch(e){n||(v=null),_=null,z(e)}}function he(e){if(_&&=(ge(_),null),e)return;let t;if(h){if(!h.promises.size&&!h.queue.size){let e=h.sources,n=h.disposed;v.push.apply(v,h.effects),t=h.resolve;for(let e of v)`tState`in e&&(e.state=e.tState),delete e.tState;h=null,F(()=>{for(let e of n)L(e);for(let t of e){if(t.value=t.tValue,t.owned)for(let e=0,n=t.owned.length;e<n;e++)L(t.owned[e]);t.tOwned&&(t.owned=t.tOwned),delete t.tValue,delete t.tOwned,t.tState=0}A(!1)},!1)}else if(h.running){h.running=!1,h.effects.push.apply(h.effects,v),v=null,A(!0);return}}let n=v;v=null,n.length&&F(()=>l(n),!1),t&&t()}function ge(e){for(let t=0;t<e.length;t++)P(e[t])}function _e(t){let r,i=0;for(r=0;r<t.length;r++){let e=t[r];e.user?t[i++]=e:P(e)}if(e.context){if(e.count){e.effects||=[],e.effects.push(...t.slice(0,i));return}n()}for(e.effects&&(e.done||!e.count)&&(t=[...e.effects,...t],i+=e.effects.length,delete e.effects),r=0;r<i;r++)P(t[r])}function I(e,t){let n=h&&h.running;n?e.tState=0:e.state=0;for(let r=0;r<e.sources.length;r+=1){let i=e.sources[r];if(i.sources){let e=n?i.tState:i.state;e===u?i!==t&&(!i.updatedAt||i.updatedAt<y)&&P(i):e===d&&I(i,t)}}}function ve(e){let t=h&&h.running;for(let n=0;n<e.observers.length;n+=1){let r=e.observers[n];(t?!r.tState:!r.state)&&(t?r.tState=d:r.state=d,r.pure?_.push(r):v.push(r),r.observers&&ve(r))}}function L(e){let t;if(e.sources)for(;e.sources.length;){let t=e.sources.pop(),n=e.sourceSlots.pop(),r=t.observers;if(r&&r.length){let e=r.pop(),i=t.observerSlots.pop();n<r.length&&(e.sourceSlots[i]=n,r[n]=e,t.observerSlots[n]=i)}}if(e.tOwned){for(t=e.tOwned.length-1;t>=0;t--)L(e.tOwned[t]);delete e.tOwned}if(h&&h.running&&e.pure)ye(e,!0);else if(e.owned){for(t=e.owned.length-1;t>=0;t--)L(e.owned[t]);e.owned=null}if(e.cleanups){for(t=e.cleanups.length-1;t>=0;t--)e.cleanups[t]();e.cleanups=null}h&&h.running?e.tState=0:e.state=0}function ye(e,t){if(t||(e.tState=0,h.disposed.add(e)),e.owned)for(let t=0;t<e.owned.length;t++)ye(e.owned[t])}function R(e){return e instanceof Error?e:Error(typeof e==`string`?e:`Unknown error`,{cause:e})}function be(e,t,n){try{for(let n of t)n(e)}catch(e){z(e,n&&n.owner||null)}}function z(e,t=m){let n=c&&t&&t.context&&t.context[c],r=R(e);if(!n)throw r;v?v.push({fn(){be(r,n,t)},state:u}):be(r,n,t)}function xe(e){if(typeof e==`function`&&!e.length)return xe(e());if(Array.isArray(e)){let t=[];for(let n=0;n<e.length;n++){let r=xe(e[n]);if(Array.isArray(r)){if(r.length<32768)t.push.apply(t,r);else for(let e=0;e<r.length;e++)t.push(r[e])}else t.push(r)}return t}return e}function Se(e,t){return function(t){let n;return S(()=>n=T(()=>(m.context={...m.context,[e]:t.value},ue(()=>t.children))),void 0),n}}var Ce=Symbol(`fallback`);function B(e){for(let t=0;t<e.length;t++)e[t]()}function we(e,t,n={}){let r=[],i=[],a=[],s=0,c=t.length>1?[]:null;return D(()=>B(a)),()=>{let l=e()||[],u=l.length,d,f;return l[o],T(()=>{let e,t,o,m,h,g,_,v,y;if(u===0)s!==0&&(B(a),a=[],r=[],i=[],s=0,c&&=[]),n.fallback&&(r=[Ce],i[0]=b(e=>(a[0]=e,n.fallback())),s=1);else if(s===0){for(i=Array(u),f=0;f<u;f++)r[f]=l[f],i[f]=b(p);s=u}else{for(o=Array(u),m=Array(u),c&&(h=Array(u)),g=0,_=Math.min(s,u);g<_&&r[g]===l[g];g++);for(_=s-1,v=u-1;_>=g&&v>=g&&r[_]===l[v];_--,v--)o[v]=i[_],m[v]=a[_],c&&(h[v]=c[_]);for(e=new Map,t=Array(v+1),f=v;f>=g;f--)y=l[f],d=e.get(y),t[f]=d===void 0?-1:d,e.set(y,f);for(d=g;d<=_;d++)y=r[d],f=e.get(y),f!==void 0&&f!==-1?(o[f]=i[d],m[f]=a[d],c&&(h[f]=c[d]),f=t[f],e.set(y,f)):a[d]();for(f=g;f<u;f++)f in o?(i[f]=o[f],a[f]=m[f],c&&(c[f]=h[f],c[f](f))):i[f]=b(p);i=i.slice(0,s=u),r=l.slice(0)}return i});function p(e){if(a[f]=e,c){let[e,n]=x(f);return c[f]=n,t(l[f],e)}return t(l[f])}}}function Te(e,t,n={}){let r=[],i=[],a=[],s=[],c=0,l;return D(()=>B(a)),()=>{let u=e()||[],d=u.length;return u[o],T(()=>{if(d===0)return c!==0&&(B(a),a=[],r=[],i=[],c=0,s=[]),n.fallback&&(r=[Ce],i[0]=b(e=>(a[0]=e,n.fallback())),c=1),i;for(r[0]===Ce&&(a[0](),a=[],r=[],i=[],c=0),l=0;l<d;l++)l<r.length&&r[l]!==u[l]?s[l](()=>u[l]):l>=r.length&&(i[l]=b(f));for(;l<r.length;l++)a[l]();return c=s.length=a.length=d,r=u.slice(0),i=i.slice(0,c)});function f(e){a[l]=e;let[n,r]=x(u[l]);return s[l]=r,t(n,l)}}}function V(e,t){return T(()=>e(t||{}))}function H(){return!0}var Ee={get(e,t,n){return t===i?n:e.get(t)},has(e,t){return t===i||e.has(t)},set:H,deleteProperty:H,getOwnPropertyDescriptor(e,t){return{configurable:!0,enumerable:!0,get(){return e.get(t)},set:H,deleteProperty:H}},ownKeys(e){return e.keys()}};function De(e){return(e=typeof e==`function`?e():e)?e:{}}function Oe(){for(let e=0,t=this.length;e<t;++e){let t=this[e]();if(t!==void 0)return t}}function ke(...e){let t=!1;for(let n=0;n<e.length;n++){let r=e[n];t||=!!r&&i in r,e[n]=typeof r==`function`?(t=!0,w(r)):r}if(a&&t)return new Proxy({get(t){for(let n=e.length-1;n>=0;n--){let r=De(e[n])[t];if(r!==void 0)return r}},has(t){for(let n=e.length-1;n>=0;n--)if(t in De(e[n]))return!0;return!1},keys(){let t=[];for(let n=0;n<e.length;n++)t.push(...Object.keys(De(e[n])));return[...new Set(t)]}},Ee);let n={},r=Object.create(null);for(let t=e.length-1;t>=0;t--){let i=e[t];if(!i)continue;let a=Object.getOwnPropertyNames(i);for(let e=a.length-1;e>=0;e--){let t=a[e];if(t===`__proto__`||t===`constructor`)continue;let o=Object.getOwnPropertyDescriptor(i,t);if(!r[t])r[t]=o.get?{enumerable:!0,configurable:!0,get:Oe.bind(n[t]=[o.get.bind(i)])}:o.value===void 0?void 0:o;else{let e=n[t];e&&(o.get?e.push(o.get.bind(i)):o.value!==void 0&&e.push(()=>o.value))}}}let o={},s=Object.keys(r);for(let e=s.length-1;e>=0;e--){let t=s[e],n=r[t];n&&n.get?Object.defineProperty(o,t,n):o[t]=n?n.value:void 0}return o}function Ae(e,...t){let n=t.length;if(a&&i in e){let r=n>1?t.flat():t[0],i=new Set,a=t.map(t=>{let n=t.filter(e=>!i.has(e)&&(i.add(e),!0));return new Proxy({get(t){return n.includes(t)?e[t]:void 0},has(t){return n.includes(t)&&t in e},keys(){return n.filter(t=>t in e)}},Ee)});return a.push(new Proxy({get(t){return r.includes(t)?void 0:e[t]},has(t){return!r.includes(t)&&t in e},keys(){return Object.keys(e).filter(e=>!r.includes(e))}},Ee)),a}let r=[];for(let e=0;e<=n;e++)r[e]={};for(let i of Object.getOwnPropertyNames(e)){let a=n;for(let e=0;e<t.length;e++)if(t[e].includes(i)){a=e;break}let o=Object.getOwnPropertyDescriptor(e,i);!o.get&&!o.set&&o.enumerable&&o.writable&&o.configurable?r[a][i]=o.value:Object.defineProperty(r[a],i,o)}return r}function je(t){let r,i,a=()=>{if(!i){let e=i=t();e.then(e=>{r=()=>e.default},()=>{i===e&&(i=void 0)})}return i},o=t=>{let i=e.context;if(i){let[t,o]=x();e.count||=0,e.count++,a().then(t=>{!e.done&&n(i),e.count--,o(()=>t.default),n()},t=>{!e.done&&n(i),e.count--,o(()=>()=>{throw t}),n()}),r=t}else if(!r){let[e]=ne(()=>a().then(e=>e.default));r=e,D(()=>r=void 0)}let o;return w(()=>(o=r?.())?T(()=>{if(!i||e.done)return o(t);let r=e.context;n(i);let a=o(t);return n(r),a}):``)};return o.preload=()=>a(),o}var Me=0;function Ne(){return e.context?e.getNextContextId():`cl-${Me++}`}var Pe=e=>`Stale read from <${e}>.`;function Fe(e){let t=`fallback`in e&&{fallback:()=>e.fallback};return w(we(()=>e.each,e.children,t||void 0))}function Ie(e){let t=`fallback`in e&&{fallback:()=>e.fallback};return w(Te(()=>e.each,e.children,t||void 0))}function U(e){let t=e.keyed,n=w(()=>e.when,void 0,void 0),r=t?n:w(n,void 0,{equals:(e,t)=>!e==!t});return w(()=>{let i=r();if(i){let a=e.children;return typeof a==`function`&&a.length>0?T(()=>a(t?i:()=>{if(!T(r))throw Pe(`Show`);return n()})):a}return e.fallback},void 0,void 0)}function Le(e){let t=ue(()=>e.children),n=w(()=>{let e=t(),n=Array.isArray(e)?e:[e],r=()=>void 0;for(let e=0;e<n.length;e++){let t=e,i=n[e],a=r,o=w(()=>a()?void 0:i.when,void 0,void 0),s=i.keyed?o:w(o,void 0,{equals:(e,t)=>!e==!t});r=()=>a()||(s()?[t,o,i]:void 0)}return r});return w(()=>{let t=n()();if(!t)return e.fallback;let[r,i,a]=t,o=a.children;return typeof o==`function`&&o.length>0?T(()=>o(a.keyed?i():()=>{if(T(n)()?.[0]!==r)throw Pe(`Match`);return i()})):o},void 0,void 0)}function Re(e){return e}var ze=ce();function Be(t){let r=0,i,a,o,s,c,[l,u]=x(!1),d=de(),f={increment:()=>{++r===1&&u(!0)},decrement:()=>{--r===0&&u(!1)},inFallback:l,effects:[],resolved:!1},p=k();if(e.context&&e.load){let t=e.getContextId(),r=e.load(t);if(r&&(typeof r!=`object`||r.s!==1?o=r:e.gather(t)),o&&o!==`$$f`){let[r,i]=x(void 0,{equals:!1});s=r,o.then(()=>{if(e.done)return i();e.gather(t),n(a),i(),n()},e=>{c=e,i()})}}let m=le(ze);m&&(i=m.register(f.inFallback));let h;return D(()=>h&&h()),V(d.Provider,{value:f,get children(){return w(()=>{if(c)throw c;if(a=e.context,s){s(),s=void 0;return}a&&o===`$$f`&&n();let r=w(()=>t.children);return w(e=>{let s=f.inFallback(),{showContent:c=!0,showFallback:l=!0}=i?i():{};if((!s||o&&o!==`$$f`)&&c)return f.resolved=!0,h&&h(),h=a=o=void 0,se(f.effects),r();if(l)return h?e:b(e=>(h=e,a&&=(n({id:a.id+`F`,count:0}),void 0),t.fallback),p)})})}})}var Ve=new Set([`className`,`value`,`readOnly`,`noValidate`,`formNoValidate`,`isMap`,`noModule`,`playsInline`,`adAuctionHeaders`,`allowFullscreen`,`browsingTopics`,`defaultChecked`,`defaultMuted`,`defaultSelected`,`disablePictureInPicture`,`disableRemotePlayback`,`preservesPitch`,`shadowRootClonable`,`shadowRootCustomElementRegistry`,`shadowRootDelegatesFocus`,`shadowRootSerializable`,`sharedStorageWritable`,...`allowfullscreen.async.alpha.autofocus.autoplay.checked.controls.default.disabled.formnovalidate.hidden.indeterminate.inert.ismap.loop.multiple.muted.nomodule.novalidate.open.playsinline.readonly.required.reversed.seamless.selected.adauctionheaders.browsingtopics.credentialless.defaultchecked.defaultmuted.defaultselected.defer.disablepictureinpicture.disableremoteplayback.preservespitch.shadowrootclonable.shadowrootcustomelementregistry.shadowrootdelegatesfocus.shadowrootserializable.sharedstoragewritable`.split(`.`)]),He=new Set([`innerHTML`,`textContent`,`innerText`,`children`]),Ue=Object.assign(Object.create(null),{className:`class`,htmlFor:`for`}),We=Object.assign(Object.create(null),{class:`className`,novalidate:{$:`noValidate`,FORM:1},formnovalidate:{$:`formNoValidate`,BUTTON:1,INPUT:1},ismap:{$:`isMap`,IMG:1},nomodule:{$:`noModule`,SCRIPT:1},playsinline:{$:`playsInline`,VIDEO:1},readonly:{$:`readOnly`,INPUT:1,TEXTAREA:1},adauctionheaders:{$:`adAuctionHeaders`,IFRAME:1},allowfullscreen:{$:`allowFullscreen`,IFRAME:1},browsingtopics:{$:`browsingTopics`,IMG:1},defaultchecked:{$:`defaultChecked`,INPUT:1},defaultmuted:{$:`defaultMuted`,AUDIO:1,VIDEO:1},defaultselected:{$:`defaultSelected`,OPTION:1},disablepictureinpicture:{$:`disablePictureInPicture`,VIDEO:1},disableremoteplayback:{$:`disableRemotePlayback`,AUDIO:1,VIDEO:1},preservespitch:{$:`preservesPitch`,AUDIO:1,VIDEO:1},shadowrootclonable:{$:`shadowRootClonable`,TEMPLATE:1},shadowrootdelegatesfocus:{$:`shadowRootDelegatesFocus`,TEMPLATE:1},shadowrootserializable:{$:`shadowRootSerializable`,TEMPLATE:1},sharedstoragewritable:{$:`sharedStorageWritable`,IFRAME:1,IMG:1}});function Ge(e,t){let n=We[e];return typeof n==`object`?n[t]?n.$:void 0:n}var Ke=new Set([`beforeinput`,`click`,`dblclick`,`contextmenu`,`focusin`,`focusout`,`input`,`keydown`,`keyup`,`mousedown`,`mousemove`,`mouseout`,`mouseover`,`mouseup`,`pointerdown`,`pointermove`,`pointerout`,`pointerover`,`pointerup`,`touchend`,`touchmove`,`touchstart`]),qe=new Set(`altGlyph.altGlyphDef.altGlyphItem.animate.animateColor.animateMotion.animateTransform.circle.clipPath.color-profile.cursor.defs.desc.ellipse.feBlend.feColorMatrix.feComponentTransfer.feComposite.feConvolveMatrix.feDiffuseLighting.feDisplacementMap.feDistantLight.feDropShadow.feFlood.feFuncA.feFuncB.feFuncG.feFuncR.feGaussianBlur.feImage.feMerge.feMergeNode.feMorphology.feOffset.fePointLight.feSpecularLighting.feSpotLight.feTile.feTurbulence.filter.font.font-face.font-face-format.font-face-name.font-face-src.font-face-uri.foreignObject.g.glyph.glyphRef.hkern.image.line.linearGradient.marker.mask.metadata.missing-glyph.mpath.path.pattern.polygon.polyline.radialGradient.rect.set.stop.svg.switch.symbol.text.textPath.tref.tspan.use.view.vkern`.split(`.`)),Je={xlink:`http://www.w3.org/1999/xlink`,xml:`http://www.w3.org/XML/1998/namespace`},Ye=e=>w(()=>e());function Xe(e,t,n){let r=n.length,i=t.length,a=r,o=0,s=0,c=t[i-1].nextSibling,l=null;for(;o<i||s<a;)if(t[o]===n[s])o++,s++;else{for(;t[i-1]===n[a-1];)i--,a--;if(i===o){let t=a<r?s?n[s-1].nextSibling:n[a-s]:c;for(;s<a;)e.insertBefore(n[s++],t)}else if(a===s)for(;o<i;)(!l||!l.has(t[o]))&&t[o].remove(),o++;else if(t[o]===n[a-1]&&n[s]===t[i-1]){let r=t[--i].nextSibling;e.insertBefore(n[s++],t[o++].nextSibling),e.insertBefore(n[--a],r),t[i]=n[a]}else{if(!l){l=new Map;let e=s;for(;e<a;)l.set(n[e],e++)}let r=l.get(t[o]);if(r!=null){if(s<r&&r<a){let c=o,u=1,d;for(;++c<i&&c<a&&(d=l.get(t[c]))!=null&&d===r+u;)u++;if(u>r-s){let i=t[o];for(;s<r;)e.insertBefore(n[s++],i)}else e.replaceChild(n[s++],t[o++])}else o++}else t[o++].remove()}}}var Ze=`_$DX_DELEGATE`;function Qe(e,t,n,r={}){let i;return b(r=>{i=r,t===document?e():Y(t,e(),!n&&t.firstChild?null:void 0,n)},r.owner),()=>{i(),t.textContent=``}}function W(e,t,n,r){let i,a=()=>{let t=r?document.createElementNS(`http://www.w3.org/1998/Math/MathML`,`template`):document.createElement(`template`);return t.innerHTML=e,n?t.content.firstChild.firstChild:r?t.firstChild:t.content.firstChild},o=t?()=>T(()=>document.importNode(i||=a(),!0)):()=>(i||=a()).cloneNode(!0);return o.cloneNode=o,o}function G(e,t=window.document){let n=t[Ze]||(t[Ze]=new Set);for(let r=0,i=e.length;r<i;r++){let i=e[r];n.has(i)||(n.add(i),t.addEventListener(i,dt))}}function K(e,t,n){X(e)||(n==null?e.removeAttribute(t):e.setAttribute(t,n))}function $e(e,t,n,r){X(e)||(r==null?e.removeAttributeNS(t,n):e.setAttributeNS(t,n,r))}function et(e,t,n){X(e)||(n?e.setAttribute(t,``):e.removeAttribute(t))}function q(e,t){X(e)||(t==null?e.removeAttribute(`class`):e.className=t)}function tt(e,t,n,r){if(r)Array.isArray(n)?(e[`$$${t}`]=n[0],e[`$$${t}Data`]=n[1]):e[`$$${t}`]=n;else if(Array.isArray(n)){let r=n[0];e.addEventListener(t,n[0]=t=>r.call(e,n[1],t))}else e.addEventListener(t,n,typeof n!=`function`&&n)}function nt(e,t,n={}){let r=Object.keys(t||{}),i=Object.keys(n),a,o;for(a=0,o=i.length;a<o;a++){let r=i[a];r&&r!==`undefined`&&!t[r]&&(lt(e,r,!1),delete n[r])}for(a=0,o=r.length;a<o;a++){let i=r[a],o=!!t[i];i&&i!==`undefined`&&n[i]!==o&&o&&(lt(e,i,!0),n[i]=o)}return n}function rt(e,t,n){if(!t)return n?K(e,`style`):t;let r=e.style;if(typeof t==`string`)return r.cssText=t;typeof n==`string`&&(r.cssText=n=void 0),n||={},t||={};let i,a;for(a in n)t[a]??r.removeProperty(a),delete n[a];for(a in t)i=t[a],i!==n[a]&&(r.setProperty(a,i),n[a]=i);return n}function it(e,t,n){n==null?e.style.removeProperty(t):e.style.setProperty(t,n)}function at(e,t={},n,r){let i={};return r||S(()=>i.children=Z(e,t.children,i.children)),S(()=>typeof t.ref==`function`&&J(t.ref,e)),S(()=>ot(e,t,n,!0,i,!0)),i}function J(e,t,n){return T(()=>e(t,n))}function Y(e,t,n,r){if(n!==void 0&&!r&&(r=[]),typeof t!=`function`)return Z(e,t,r,n);S(r=>Z(e,t(),r,n),r)}function ot(e,t,n,r,i={},a=!1){t||={};for(let r in i)if(!(r in t)){if(r===`children`)continue;i[r]=ut(e,r,null,i[r],n,a,t)}for(let o in t){if(o===`children`){r||Z(e,t.children);continue}let s=t[o];i[o]=ut(e,o,s,i[o],n,a,t)}}function st(t){let n,r;return!X()||!(n=e.registry.get(r=mt()))?t():(e.completed&&e.completed.add(n),e.registry.delete(r),n)}function X(t){return!!e.context&&!e.done&&(!t||t.isConnected)}function ct(e){return e.toLowerCase().replace(/-([a-z])/g,(e,t)=>t.toUpperCase())}function lt(e,t,n){let r=t.trim().split(/\s+/);for(let t=0,i=r.length;t<i;t++)e.classList.toggle(r[t],n)}function ut(e,t,n,r,i,a,o){let s,c,l,u,d;if(t===`style`)return rt(e,n,r);if(t===`classList`)return nt(e,n,r);if(n===r)return r;if(t===`ref`)a||n(e);else if(t.slice(0,3)===`on:`){let i=t.slice(3);r&&e.removeEventListener(i,r,typeof r!=`function`&&r),n&&e.addEventListener(i,n,typeof n!=`function`&&n)}else if(t.slice(0,10)===`oncapture:`){let i=t.slice(10);r&&e.removeEventListener(i,r,!0),n&&e.addEventListener(i,n,!0)}else if(t.slice(0,2)===`on`){let i=t.slice(2).toLowerCase(),a=Ke.has(i);if(!a&&r){let t=Array.isArray(r)?r[0]:r;e.removeEventListener(i,t)}(a||n)&&(tt(e,i,n,a),a&&G([i]))}else if(t.slice(0,5)===`attr:`)K(e,t.slice(5),n);else if(t.slice(0,5)===`bool:`)et(e,t.slice(5),n);else if((d=t.slice(0,5)===`prop:`)||(l=He.has(t))||!i&&((u=Ge(t,e.tagName))||(c=Ve.has(t)))||(s=e.nodeName.includes(`-`)||`is`in o)){if(d)t=t.slice(5),c=!0;else if(X(e))return n;t===`class`||t===`className`?q(e,n):s&&!c&&!l?e[ct(t)]=n:(t===`value`||t===`defaultValue`)&&(e.nodeName===`INPUT`||e.nodeName===`TEXTAREA`)?e[u||t]=n??``:e[u||t]=n}else{let r=i&&t.indexOf(`:`)>-1&&Je[t.split(`:`)[0]];r?$e(e,r,t,n):K(e,Ue[t]||t,n)}return n}function dt(t){if(e.registry&&e.events&&e.events.find(([e,n])=>n===t))return;let n=t.target,r=`$$${t.type}`,i=t.target,a=t.currentTarget,o=e=>Object.defineProperty(t,"target",{configurable:!0,value:e}),s=()=>{let e=n[r];if(e&&!n.disabled){let i=n[`${r}Data`];if(i===void 0?e.call(n,t):e.call(n,i,t),t.cancelBubble)return}return n.host&&typeof n.host!=`string`&&!n.host._$host&&n.contains(t.target)&&o(n.host),!0},c=()=>{for(;s()&&(n=n._$host||n.parentNode||n.host););};Object.defineProperty(t,"currentTarget",{configurable:!0,get(){return n||document}}),e.registry&&!e.done&&(e.done=_$HY.done=!0);try{if(t.composedPath){let e=t.composedPath();o(e[0]);for(let t=0;t<e.length-2&&(n=e[t],s());t++){if(n._$host){n=n._$host,c();break}if(n.parentNode===a)break}}else c();o(i)}finally{t=n=null}}function Z(e,t,n,r,i){let a=X(e);if(a){!n&&(n=[...e.childNodes]);let t=[];for(let e=0;e<n.length;e++){let r=n[e];r.nodeType===8&&r.data.slice(0,2)===`!$`?r.remove():t.push(r)}n=t}for(;typeof n==`function`;)n=n();if(t===n)return n;let o=typeof t,s=r!==void 0;if(e=s&&n[0]&&n[0].parentNode||e,o===`string`||o===`number`){if(a||o===`number`&&(t=t.toString(),t===n))return n;if(s){let i=n[0];i&&i.nodeType===3?i.data!==t&&(i.data=t):i=document.createTextNode(t),n=Q(e,n,r,i)}else n=n!==``&&typeof n==`string`?e.firstChild.data=t:e.textContent=t}else if(t==null||o===`boolean`){if(a)return n;n=Q(e,n,r)}else if(o===`function`)return S(()=>{let i=t();for(;typeof i==`function`;)i=i();n=Z(e,i,n,r)}),()=>n;else if(Array.isArray(t)){let o=[],c=n&&Array.isArray(n);if(ft(o,t,n,i))return S(()=>n=Z(e,o,n,r,!0)),()=>n;if(a){if(!o.length)return n;if(r===void 0)return n=[...e.childNodes];let t=o[0];if(t.parentNode!==e)return n;let i=[t];for(;(t=t.nextSibling)!==r;)i.push(t);return n=i}if(o.length===0){if(n=Q(e,n,r),s)return n}else c?n.length===0?pt(e,o,r):Xe(e,n,o):(n&&Q(e),pt(e,o));n=o}else if(t.nodeType){if(a&&t.parentNode)return n=s?[t]:t;if(Array.isArray(n)){if(s)return n=Q(e,n,r,t);Q(e,n,null,t)}else n==null||n===``||!e.firstChild?e.appendChild(t):e.replaceChild(t,e.firstChild);n=t}return n}function ft(e,t,n,r){let i=!1;for(let a=0,o=t.length;a<o;a++){let o=t[a],s=n&&n[e.length],c;if(o!=null&&o!==!0&&o!==!1){if((c=typeof o)==`object`&&o.nodeType)e.push(o);else if(Array.isArray(o))i=ft(e,o,s)||i;else if(c===`function`){if(r){for(;typeof o==`function`;)o=o();i=ft(e,Array.isArray(o)?o:[o],Array.isArray(s)?s:[s])||i}else e.push(o),i=!0}else{let t=String(o);s&&s.nodeType===3&&s.data===t?e.push(s):e.push(document.createTextNode(t))}}}return i}function pt(e,t,n=null){for(let r=0,i=t.length;r<i;r++)e.insertBefore(t[r],n)}function Q(e,t,n,r){if(n===void 0)return e.textContent=``;let i=r||document.createTextNode(``);if(t.length){let r=!1;for(let a=t.length-1;a>=0;a--){let o=t[a];if(i!==o){let t=o.parentNode===e;!r&&!a?t?e.replaceChild(i,o):e.insertBefore(i,n):t&&o.remove()}else r=!0}}else e.insertBefore(i,n);return[i]}function mt(){return e.getNextContextId()}var ht=`http://www.w3.org/2000/svg`;function gt(e,t=!1,n=void 0){return t?document.createElementNS(ht,e):document.createElement(e,{is:n})}function _t(t){let{useShadow:n}=t,r=document.createTextNode(``),i=()=>t.mount||document.body,a=k(),o,s=!!e.context;return C(()=>{s&&(k().user=s=!1),o||=ae(a,()=>w(()=>t.children));let e=i();if(e instanceof HTMLHeadElement){let[t,n]=x(!1);b(n=>Y(e,()=>t()?n():o(),null)),D(()=>n(!0))}else{let i=gt(t.isSVG?`g`:`div`,t.isSVG),a=n&&i.attachShadow?i.attachShadow({mode:`open`}):i;Object.defineProperty(i,"_$host",{get(){return r.parentNode},configurable:!0}),Y(a,o),e.appendChild(i),t.ref&&t.ref(i),D(()=>e.contains(i)&&e.removeChild(i))}},void 0,{render:!s}),r}function vt(t,n){let r=w(t);return w(()=>{let t=r();switch(typeof t){case`function`:return T(()=>t(n));case`string`:let r=qe.has(t),i=e.context?st():gt(t,r,T(()=>n.is));return at(i,n,r),i}})}function yt(e){let[,t]=Ae(e,[`component`]);return vt(()=>e.component,t)}var bt=class extends Error{status;code;field;hint;details;constructor(e,t){super(t),this.status=e}},xt=class extends Error{cause;name=`NetworkError`;constructor(e){super(`Can't reach the hub: the connection dropped. Check your network and try again.`),this.cause=e}},St;function Ct(e){St=e}async function wt(e,{method:t=`GET`,json:n,body:r,headers:i={},signal:a,keepalive:o}={}){let s={method:t,credentials:`same-origin`,headers:{...i},signal:a,keepalive:o};n===void 0?r!==void 0&&(s.body=r):(s.headers[`content-type`]=`application/json`,s.body=JSON.stringify(n));let c;try{c=await fetch(e,s)}catch(e){throw e instanceof TypeError?new xt(e):e}if(!c.ok){let e=await c.json().catch(()=>({}));c.status===401&&St?.();let t=e.error&&typeof e.error==`object`?e.error:e,n=typeof e.error==`string`?e.error:typeof t.message==`string`?t.message:``,r=new bt(c.status,n||`HTTP ${c.status}`);throw typeof t.field==`string`&&(r.field=t.field),typeof t.code==`string`&&(r.code=t.code),typeof t.hint==`string`&&(r.hint=t.hint),e.error&&typeof e.error==`object`&&(r.details=t),r}return c}var Tt=async e=>(await wt(e)).json(),Et=encodeURIComponent,Dt=e=>`/api/sessions/${Et(e)}`,Ot=e=>e instanceof Error?e.message:String(e),kt=e=>typeof e==`object`&&!!e&&!Array.isArray(e),At=/^[A-Za-z0-9_.:@/+~-]{1,300}$/,jt=/[\p{Cc}\p{Cf}\u2028\u2029]/u,Mt={workspace:`ws`,binding:`wsb`,member:`wsm`,assignment:`asg`,supervision:`sup`,checkpoint:`chk`,sideChat:`chat`,profile:`prof`,artifact:`art`,revision:`rev`,blob:`blob`,aiJob:`job`,team:`team`,staffing:`stf`,intake:`itk`},Nt=/^[A-Za-z0-9]{16,32}$/;function Pt(e,t){if(typeof t!=`string`)return!1;let n=`${Mt[e]}_`;return t.startsWith(n)&&Nt.test(t.slice(n.length))}var Ft=/^[a-z0-9-]{2,40}$/,It=e=>typeof e==`string`&&Ft.test(e),Lt=(e,t=120)=>typeof e==`string`&&e.trim().length>0&&e.length<=t&&!jt.test(e),Rt=4e3,zt=/[\u0000-\u0009\u000b-\u001f\u007f\u2028\u2029\u200b-\u200f\u202a-\u202e\u2066-\u2069]/,Bt=(e,t=Rt)=>typeof e==`string`&&e.length<=t&&!zt.test(e);function Vt(e){if(e!==void 0){if(!Array.isArray(e)||e.length>32)return`tags must be a list of at most 32`;if(!e.every(It))return`each tag must be 2–40 lowercase letters, digits or dashes`;if(new Set(e).size!==e.length)return`tags must be unique`}}function Ht(e){if(e===void 0)return;if(typeof e!=`object`||!e||Array.isArray(e))return`metadata must be an object`;let t=Object.entries(e);if(t.length>32)return`metadata has more than 32 keys`;for(let[e,n]of t){if(!It(e))return`metadata key ${JSON.stringify(String(e).slice(0,50))} must be a slug`;if(!Lt(n,200))return`metadata.${e} must be 1–200 characters of text`}}var $=e=>e.signedIn,Ut=[{id:`sessions`,label:`All sessions`,icon:`home`,route:`/`,order:10,available:e=>$(e)?!0:`hidden`},{id:`concierge`,label:`Concierge`,icon:`spark`,route:`/concierge`,order:15,available:e=>$(e)&&e.concierge!==void 0&&e.concierge!==`disabled`?!0:`hidden`},{id:`artifacts`,label:`Artifacts`,icon:`file`,route:`/artifacts`,order:20,available:e=>$(e)?!0:`hidden`},{id:`teams`,label:`Teams`,icon:`team`,route:`/teams`,order:25,available:e=>$(e)?!0:`hidden`},{id:`watchtower`,label:`Watchtower`,icon:`watchtower`,route:`/watchtower`,order:30,available:e=>$(e)?!0:`hidden`},{id:`profiles`,label:`Agent profiles`,icon:`settings`,route:`/profiles`,order:40,available:e=>$(e)?!0:`hidden`}],Wt={"/birds-eye":`/watchtower`};function Gt(e,t=``,n=``){for(let[r,i]of Object.entries(Wt))if(e===r||e.startsWith(`${r}/`))return`${i}${e.slice(r.length)}${t}${n}`}function Kt(e,t){try{return e.available(t)}catch{return`hidden`}}function qt(e,t=Ut){return[...t].sort((e,t)=>e.order-t.order).flatMap(t=>{let n=Kt(t,e);return n===`hidden`?[]:[{dest:t,enabled:n===!0}]})}var Jt=(e,t)=>Kt(e,t)===!0?`ok`:`unavailable`;function Yt(e,t=Ut){for(let n of t)if(n.route!==`/`&&(e===n.route||e.startsWith(`${n.route}/`)))try{return{dest:n,rest:e.slice(n.route.length).split(`/`).filter(Boolean).map(decodeURIComponent)}}catch{return}}function Xt(e,t=Ut){return e===`/`?t.find(e=>e.route===`/`)?.id:Yt(e,t)?.dest.id}function Zt(e){return e.supported?e.permission===`denied`?{state:`blocked`,message:`Notifications are blocked for this site. Allow them in the browser's site settings, then reload.`,action:`none`,warn:!0}:e.permission==="default"?{state:`off`,message:`Notifications are off on this device.`,action:`enable`,warn:!0}:!e.worker||!e.endpoint||!e.hubSubscribed?{state:`repair`,message:`Allowed, but this device is not subscribed on this hub, so nothing will arrive (this happens after the hub moves to a new address). Enable again to fix it.`,action:`enable`,warn:!0}:{state:`on`,message:`On for this device.`,action:`disable`,warn:!1}:{state:`unsupported`,message:`This browser can't get notifications here. On iPhone, add the app to the Home Screen first (iOS 16.4+); everywhere else the hub must be on https.`,action:`none`,warn:!0}}var Qt=e=>e.supported&&e.permission===`granted`&&(!e.endpoint||!e.hubSubscribed);function $t(e){if(e.subscriptions===0)return{ok:!1,text:`This device is not subscribed; enable notifications first`};if(e.sent>0)return{ok:!0,text:e.sent===1?`Test notification sent to this device`:`Test notification sent (${e.sent} subscriptions)`};let t=e.failed[0];return t?{ok:!1,text:`Test failed: ${t.host} ${t.status===void 0?`did not answer`:`answered ${t.status}`}`}:{ok:!1,text:`Test failed`}}var en=[1,2,5,10,15,30,60],tn=[{title:`Needs you`,kinds:[{key:`question`,label:`Question`,description:`A session or subagent asks you something.`},{key:`permission`,label:`Needs permission`,description:`A tool call waits for your OK (answer from the notification).`},{key:`decision`,label:`Decision`,description:`A session asks you to decide (hub ask @me), with options and a recommendation.`},{key:`message`,label:`Message`,description:`Agent messaging needs you: a message to you, an unanswered ask, or sessions looping.`},{key:`concierge`,label:`Concierge`,description:`Your Concierge needs you or has news: its questions, permissions, decisions, messages and spoken replies.`}]},{title:`Session`,kinds:[{key:`done`,label:`All done`,description:`The session and all its subagents and scripts finished; nothing waits on you. Once per run.`},{key:`failed`,label:`Failed`,description:`The session's run failed (provider or tool error), with the reason.`},{key:`providerError`,label:`Model provider error`,description:`Quota, budget, auth or model-routing errors of the session or a subagent; once per run.`},{key:`turn`,label:`Turn finished`,description:`Every reply of the main session, also the short ones between subagents. Noisy.`},{key:`stopped`,label:`Stopped`,description:`A run stopped without you asking (OpenCode shut down, inactivity).`},{key:`retry`,label:`Retrying`,description:`The provider failed and OpenCode is retrying the request.`}]},{title:`Subagents`,kinds:[{key:`subagentDone`,label:`Subagent finished`,description:`Each subagent that finishes, by name.`},{key:`subagentFailed`,label:`Subagent failed`,description:`Each subagent that fails, with the reason.`}]},{title:`Scripts and tools`,kinds:[{key:`jobDone`,label:`Script finished`,description:`A background shell or terminal exited 0.`},{key:`jobFailed`,label:`Script failed`,description:`A background shell or terminal exited non-zero, was killed or timed out.`},{key:`longTool`,label:`Long tool finished`,description:`A tool call that ran 30 seconds or more ended.`}]},{title:`Voice`,kinds:[{key:`say`,label:`Spoken reply`,description:`Voice mode replies while no device shows the session.`},{key:`handoff`,label:`Hand-off`,description:`A session sent to this device from the terminal (ignores quiet hours).`}]},{title:`Activity digest`,kinds:[{key:`activity`,label:`Activity`,description:`One quiet, self-replacing summary per session: subagents, long tools, scripts, idle.`}]}],nn=tn.flatMap(e=>e.kinds);function rn(e){let t=nn.filter(t=>e[t.key]).map(e=>e.label);return t.length?`You'll get: ${t.join(`, `)}.`:`You'll get no notifications on this device.`}function an(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone||`UTC`}catch{return`UTC`}}var on=[{id:`general`,label:`General`,description:`Account, theme, text size and the Hub app`},{id:`notifications`,label:`Notifications`,description:`This device's notifications, what to notify about, quiet hours`},{id:`voice`,label:`Voice & speech`,description:`Voice mode, mic sensitivity, speech-to-text and text-to-speech`},{id:`machines`,label:`Machines & devices`,description:`Connected machines, approvals, signed-in browsers and apps`},{id:`agents`,label:`Agents & access`,description:`App tokens, acting switches, grants and agent activity`},{id:`concierge`,label:`Concierge`,description:`Your hub-managed assistant: machine, directory, model and its grant`},{id:`teams`,label:`Teams`,description:`Team isolation: what team members see`},{id:`admin`,label:`Admin`,description:`Users, all machines, approvals and the audit log`,admin:!0}],sn=e=>on.filter(t=>e||!t.admin);function cn(e){if(e!==`/settings`&&!e.startsWith(`/settings/`))return;let t=e.slice(10).split(`/`)[0]??``;if(!t)return{};try{return{section:decodeURIComponent(t)}}catch{return{section:t}}}function ln(e,t){return e===void 0?t.phone?`list`:`general`:sn(t.admin).find(t=>t.id===e)?.id}var un={account:`general`,appearance:`general`,notifications:`notifications`,voice:`voice`,speech:`voice`,machines:`machines`,devices:`machines`,agents:`agents`,admin:`admin`};function dn(e){let t=e.replace(/^#/,``);if(!t)return;let n=un[t];if(n)return`/settings/${n}#${t}`;if(on.some(e=>e.id===t))return`/settings/${t}`}var fn=[{id:`account`,section:`general`,label:`Account`,description:`Who you are signed in as; sign out of this device`,keywords:`sign out logout user email`},{id:`set-theme`,section:`general`,label:`Color theme`,description:`Light, dark or the system's theme`,keywords:`appearance light dark system mode`},{id:`set-text-size`,section:`general`,label:`Text size`,description:`How big text is on this device`,keywords:`appearance font scale zoom`},{id:`add-app`,section:`general`,label:`Add the Hub app`,description:`Link the Hub app on a phone or tablet with a QR code`,keywords:`mobile android ios install pair link`},{id:`notifications`,section:`notifications`,label:`Notifications on this device`,description:`Enable or turn off push notifications here; permission and subscription status`,keywords:`push enable subscribe permission service worker`},{id:`notify-test`,section:`notifications`,label:`Send test notification`,description:`Check that notifications reach this device`,keywords:`push try`},{id:`quiet-hours`,section:`notifications`,label:`Quiet hours`,description:`No notifications at night (hand-offs still come through)`,keywords:`do not disturb night sleep time`},{id:`set-voice-speed`,section:`voice`,label:`Voice speed`,description:`How fast replies are spoken`,keywords:`rate tts`},{id:`set-sensitivity`,section:`voice`,label:`Mic sensitivity`,description:`How sure Voice mode must be that you are speaking to it`,keywords:`microphone noise vad`},{id:`set-cues`,section:`voice`,label:`Progress cues`,description:`Tones and short acknowledgements while the agent works`,keywords:`sounds acknowledgement`},{id:`set-background`,section:`voice`,label:`Keep listening when the screen is off`,description:`Lock-screen controls and listening with the screen off`,keywords:`background lock screen`},{id:`recording`,section:`voice`,label:`Record voice conversations (developer)`,description:`Saves your voice segments, transcripts, replies, timing and Concierge actions on this hub, for 7 days; export or delete them`,keywords:`record debug developer training audio export delete`},{id:`speech`,section:`voice`,label:`Speech`,description:`Speech-to-text and text-to-speech provider, model, voice and API keys`,keywords:`stt tts transcription openrouter openai key`},{id:`machines`,section:`machines`,label:`Machines`,description:`Computers running OpenCode connected to this hub; approve or revoke them`,keywords:`computer approve enrollment revoke opencode`},{id:`setup-machine`,section:`machines`,label:`Set up Hub on a machine`,description:`A one-line installer for macOS, Linux or Windows that connects a computer to this hub`,keywords:`setup install connect add new computer server laptop hubctl curl powershell windows linux macos enroll`},{id:`devices`,section:`machines`,label:`Devices`,description:`Browsers and the Hub app signed in to your account; revoke them`,keywords:`browser phone sessions revoke sign out`},{id:`agents`,section:`agents`,label:`Acting switch`,description:`Whether sessions and apps may act for you at all`,keywords:`pause kill switch acting`},{id:`app-tokens`,section:`agents`,label:`App tokens`,description:`Tokens for MCP gateways, CLIs and other apps, with their scopes`,keywords:`api key token scopes mcp cli`},{id:`grants`,section:`agents`,label:`Grants`,description:`What sessions and apps may approve, deny, answer, prompt or stop for you`,keywords:`permissions delegate allow`},{id:`agent-activity`,section:`agents`,label:`Agent activity`,description:`What agents did for you (the agent audit)`,keywords:`audit log history`},{id:`concierge`,section:`concierge`,label:`Concierge`,description:`Turn the Concierge on or off, pick its machine and directory, restart it`,keywords:`assistant butler watch sessions`},{id:`concierge-grant`,section:`concierge`,label:`Concierge grant`,description:`What the Concierge may do for you without asking; renew or remove it`,keywords:`permissions approve deny preset`},{id:`team-isolation`,section:`teams`,label:`Team isolation`,description:`Team members see only their teams' sessions, not your other sessions`,keywords:`teams privacy hide members`}],pn=[{id:`admin`,section:`admin`,label:`Users`,description:`Everyone on this hub: roles, disable, remove`,keywords:`admin accounts people`},{id:`admin-machines`,section:`admin`,label:`All machines`,description:`Every machine connected to this hub, by owner`,keywords:`admin revoke`},{id:`admin-audit`,section:`admin`,label:`Audit log`,description:`Who changed what on this hub`,keywords:`admin history`}],mn=(e,t)=>({id:`pref-${e.key}`,section:`notifications`,label:e.label,description:e.description,keywords:`notify ${t}`});function hn(e){return[...fn,...tn.flatMap(e=>e.kinds.map(t=>mn(t,e.title))),...e?pn:[]]}var gn=e=>on.find(t=>t.id===e)?.label??e;function _n(e,t){let n=e.trim().toLowerCase();if(!n)return[];let r=n.split(/\s+/),i=e=>{let t=e.label.toLowerCase();return t.startsWith(n)?0:t.includes(n)?1:r.every(e=>t.includes(e))?2:3};return t.filter(e=>{let t=`${e.label} ${e.description} ${e.keywords??``} ${gn(e.section)}`.toLowerCase();return r.every(e=>t.includes(e))}).map((e,t)=>({e,i:t,r:i(e)})).sort((e,t)=>e.r-t.r||e.i-t.i).map(e=>e.e)}function vn(e,t){let n=e.filter(e=>e.key in t);if(!n.length)return``;let r=n.filter(e=>t[e.key]);return r.length===n.length?`All on`:r.length?`${r.length} of ${n.length} on: ${r.map(e=>e.label).join(`, `)}`:`All off`}var yn=e=>e&&e.startsWith(`/`)&&!e.startsWith(`//`)&&!e.includes(`\\`)?e:`/`;function bn(e){let t=e.pathname,n=e.searchParams;if(t===`/pair`)return{name:`pair`,next:yn(n.get(`next`)),error:n.get(`error`)??``};if(t===`/approve`)return{name:`approve`,code:n.get(`code`)??``};if(t===`/new`)return{name:`new`,machine:n.get(`machine`)??void 0,dir:n.get(`dir`)??void 0,key:n.get(`key`)??void 0};if(t===`/panes`)return{name:`panes`};if(t===`/concierge`||t.startsWith(`/concierge/`))return{name:`concierge`};let r=cn(t);if(r)return{name:`settings`,...r};let i=Yt(t);if(i)return{name:`feature`,id:i.dest.id,rest:i.rest};let a=/^\/s\/([^/]+)$/.exec(t);if(a)try{return{name:`session`,id:decodeURIComponent(a[1])}}catch{return{name:`home`}}return{name:`home`}}function xn(){let e=(location.pathname===`/settings`?dn(location.hash):void 0)??Gt(location.pathname,location.search,location.hash);return e&&history.replaceState(history.state,``,e),new URL(location.href)}var[Sn,Cn]=x(xn()),wn=Sn,Tn=()=>bn(Sn()),En=0;function Dn(e,{replace:t=!1}={}){let n=new URL(e,location.origin);n.pathname+n.search+n.hash!==location.pathname+location.search+location.hash&&(history[t?`replaceState`:`pushState`]({},``,n.pathname+n.search+n.hash),t||En++),Cn(xn())}function On(e=`/`){En>0?history.back():Dn(e)}window.addEventListener(`popstate`,()=>{En=Math.max(0,En-1),Cn(xn())}),document.addEventListener(`click`,e=>{let t=e.target?.closest?.(`a[href]`);if(!t||t.target||t.hasAttribute(`download`)||e.defaultPrevented||e.button!==0||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey)return;let n=t.getAttribute(`href`)??``;!n.startsWith(`/`)||n.startsWith(`//`)||n.startsWith(`/auth/`)||n.startsWith(`/api/`)||(e.preventDefault(),Dn(n))});var kn=()=>new Set;function An(e){kn=e}var jn=e=>kn().has(e),Mn=e=>kn().has(e)?`/concierge`:`/s/${encodeURIComponent(e)}`,[Nn,Pn]=x(),Fn=Nn,In=0,Ln;function Rn(e,t=``,n){let r=++In;Pn({id:r,text:e,kind:t,action:n}),clearTimeout(Ln),Ln=setTimeout(()=>Nn()?.id===r&&Pn(void 0),n||t?8e3:4e3)}var zn=()=>Pn(void 0);function Bn(e){let t=[];return{ask(n){return new Promise(r=>{t.push({request:n,resolve:r}),t.length===1&&e(n)})},current:()=>t[0]?.request,settle(n){let r=t.shift();r&&(r.resolve(n),e(t[0]?.request))}}}function Vn(e){let t=e.trim(),n=t.indexOf(`
|
|
2
|
-
|
|
3
|
-
`);if(n>=0)return{title:t.slice(0,n).trim(),message:t.slice(n+2).trim()};let r=/\?\s/.exec(t);return r?{title:t.slice(0,r.index+1),message:t.slice(r.index+1).trim()}:{title:t,message:``}}var Hn=e=>e.danger?`cancel`:`primary`,Un=e=>e.repeat&&(e.key===`Enter`||e.key===` `);function Wn(e,t){return Array.from(e.querySelectorAll(`dialog:modal`)).some(e=>!t||!e.contains(t))}var Gn=W(`<dialog class="dialog confirm-dialog"role=alertdialog aria-modal=true aria-labelledby=confirm-dialog-title data-confirm-dialog>`),Kn=W(`<p id=confirm-dialog-message class=confirm-message>`),qn=W(`<form method=dialog><div class=dialog-head><h2 id=confirm-dialog-title></h2></div><div class=dialog-body><div class=dialog-actions><button type=button class=btn data-confirm-cancel></button><button type=submit data-confirm-primary>`),[Jn,Yn]=x(),Xn=Bn(Yn);function Zn(e){return Xn.ask(e)}var Qn=e=>Wn(document,e??void 0);function $n(e,t,n={}){let{title:r,message:i}=Vn(e);return Zn({title:r,message:i,confirm:t,...n})}var er=`button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])`;function tr(){let e,t,n,r=null;C(()=>{let i=Jn();e&&(i&&!e.open?(r=document.activeElement,e.showModal()):!i&&e.open&&(e.close(),r?.isConnected&&r.focus(),r=null),i&&queueMicrotask(()=>(Hn(i)===`cancel`?n:t)?.focus()))});let i=e=>Xn.settle(e);return(()=>{var r=Gn();r.$$keydown=t=>{if(Un(t)){t.preventDefault();return}if(t.key!==`Tab`||!e)return;let n=[...e.querySelectorAll(er)];if(!n.length)return;let r=n[0],i=n[n.length-1];t.shiftKey&&document.activeElement===r?(t.preventDefault(),i.focus()):!t.shiftKey&&document.activeElement===i&&(t.preventDefault(),r.focus())},r.$$click=t=>t.target===e&&i(!1),r.addEventListener(`cancel`,e=>{e.preventDefault(),i(!1)});var a=e;return typeof a==`function`?J(a,r):e=r,Y(r,V(U,{get when(){return Jn()},children:e=>(()=>{var r=qn(),a=r.firstChild,o=a.firstChild,s=a.nextSibling,c=s.firstChild,l=c.firstChild,u=l.nextSibling;r.addEventListener(`submit`,e=>{e.preventDefault(),i(!0)}),Y(o,()=>e().title),Y(s,V(U,{get when(){return e().message},get children(){var t=Kn();return Y(t,()=>e().message),t}}),c),l.$$click=()=>i(!1);var d=n;typeof d==`function`?J(d,l):n=l,Y(l,()=>e().cancel??`Cancel`);var f=t;return typeof f==`function`?J(f,u):t=u,Y(u,()=>e().confirm),S(()=>q(u,`btn primary${e().danger?` danger`:``}`)),r})()})),S(()=>K(r,`aria-describedby`,Jn()?.message?`confirm-dialog-message`:void 0)),r})()}G([`click`,`keydown`]);var nr=W(`<svg viewBox="0 0 24 24"aria-hidden=true>`),rr=W(`<svg><path></svg>`,!1,!0,!1),ir=W(`<span class=voice-dot role=img aria-label="Voice mode on"title="Voice mode on">`),ar=W(`<span class=spinner>`),or=W(`<span role=img>`),sr=W(`<span class=status-dot>`),cr=W(`<button type=button>`),lr=W(`<button type=button aria-haspopup=menu>`),ur=W(`<div class=menu role=menu>`),dr=W(`<div class=menu-sep role=separator>`),fr=W(`<div class=menu-section>`),pr=W(`<span class=menu-hint>`),mr=W(`<kbd class=menu-key>`),hr=W(`<button type=button><span class=menu-check></span><span class=menu-label>`),gr=W(`<div class=dialog-head><h2>`),_r=W(`<div class=dialog-body>`),vr=W(`<dialog>`),yr=W(`<span class=error-badge role=img>!`),br={menu:[`M4 6h16`,`M4 12h16`,`M4 18h16`],sidebar:[`M4 5h16v14H4z`,`M9 5v14`],rail:[`M4 5h16v14H4z`,`M15 5v14`],plus:[`M12 5v14`,`M5 12h14`],file:[`M6 3h8l4 4v14H6z`,`M14 3v4h4`],more:[`M5 12h.01`,`M12 12h.01`,`M19 12h.01`],search:[`M11 4a7 7 0 1 0 0 14a7 7 0 0 0 0-14z`,`M20 20l-4-4`],mic:[`M12 3a3 3 0 0 1 3 3v6a3 3 0 0 1-6 0V6a3 3 0 0 1 3-3z`,`M5 11a7 7 0 0 0 14 0`,`M12 18v3`],wave:[`M3 12h2`,`M7 8v8`,`M11 5v14`,`M15 8v8`,`M19 11v2`],stop:[`M7 7h10v10H7z`],send:[`M12 19V5`,`M5 12l7-7 7 7`],chevron:[`M9 6l6 6-6 6`],down:[`M6 9l6 6 6-6`],close:[`M6 6l12 12`,`M18 6L6 18`],back:[`M15 5l-7 7 7 7`],settings:[`M4 7h10M18 7h2M4 17h4M12 17h8`,`M16 5v4`,`M10 15v4`],branch:[`M6 3v12`,`M18 9a3 3 0 1 0 0-6a3 3 0 0 0 0 6z`,`M6 21a3 3 0 1 0 0-6a3 3 0 0 0 0 6z`,`M18 9a9 9 0 0 1-9 9`],server:[`M4 5h16v6H4z`,`M4 13h16v6H4z`,`M8 8h.01`,`M8 16h.01`],diff:[`M12 3v6`,`M9 6h6`,`M9 18h6`,`M5 3h14v18H5z`],pin:[`M12 17v5`,`M8 3h8l-1 6 3 3H6l3-3z`],muted:[`M12 3a3 3 0 0 1 3 3v6a3 3 0 0 1-6 0V6a3 3 0 0 1 3-3z`,`M5 11a7 7 0 0 0 14 0`,`M4 4l16 16`],home:[`M4 11l8-7 8 7`,`M6 10v10h12V10`],cloud:[`M7 18h10a4 4 0 0 0 .5-7.97A6 6 0 0 0 6.1 9.1A4.5 4.5 0 0 0 7 18z`],folder:[`M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z`],bell:[`M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9`,`M10.3 21a1.94 1.94 0 0 0 3.4 0`],watchtower:[`M6 7l6-4 6 4`,`M8 7h8v4H8z`,`M9 11l-2 10`,`M15 11l2 10`,`M8.2 15h7.6`],copy:[`M9 9h11v11H9z`,`M5 15H4V4h11v1`],fork:[`M6 3v5a6 6 0 0 0 6 6`,`M18 3v5a6 6 0 0 1-6 6v7`,`M4 5l2-2 2 2`,`M16 5l2-2 2 2`],undo:[`M9 14L4 9l5-5`,`M4 9h11a5 5 0 0 1 0 10h-3`],download:[`M12 4v11`,`M7 10l5 5 5-5`,`M5 20h14`],edit:[`M4 20h4L19 9l-4-4L4 16z`,`M13 7l4 4`],info:[`M12 3a9 9 0 1 0 0 18a9 9 0 0 0 0-18z`,`M12 11v5`,`M12 8h.01`],check:[`M5 12l5 5 9-10`],spark:[`M12 3l1.8 5.2L19 10l-5.2 1.8L12 17l-1.8-5.2L5 10l5.2-1.8z`,`M19 16l.7 1.8 1.8.7-1.8.7L19 21l-.7-1.8-1.8-.7 1.8-.7z`],split:[`M4 5h16v14H4z`,`M12 5v14`],expand:[`M14 4h6v6`,`M20 4l-7 7`,`M10 20H4v-6`,`M4 20l7-7`],archive:[`M4 5h16v4H4z`,`M6 9v10h12V9`,`M10 13h4`],wrap:[`M4 6h16`,`M4 12h13a3 3 0 0 1 0 6h-4`,`M15 16l-2 2 2 2`,`M4 18h5`],lock:[`M6 11h12v9H6z`,`M8 11V8a4 4 0 0 1 8 0v3`],code:[`M9 8l-4 4 4 4`,`M15 8l4 4-4 4`],image:[`M4 5h16v14H4z`,`M4 16l5-5 4 4 2-2 5 5`,`M15 9h.01`],table:[`M4 5h16v14H4z`,`M4 10h16`,`M4 15h16`,`M10 5v14`],chart:[`M4 20h16`,`M7 16v-5`,`M12 16V7`,`M17 16v-8`],grid:[`M4 4h7v7H4z`,`M13 4h7v7h-7z`,`M4 13h7v7H4z`,`M13 13h7v7h-7z`],stack:[`M4 5h16v14H4z`,`M4 12h16`],grip:[`M9 6h.01`,`M15 6h.01`,`M9 12h.01`,`M15 12h.01`,`M9 18h.01`,`M15 18h.01`],app:[`M4 5h16v14H4z`,`M4 9h16`,`M7 7h.01`,`M10 7h.01`],doc:[`M6 3h8l4 4v14H6z`,`M14 3v4h4`,`M9 12h6`,`M9 16h6`],team:[`M9 11a3 3 0 1 0 0-6a3 3 0 0 0 0 6z`,`M3 20a6 6 0 0 1 12 0`,`M16 11a2.5 2.5 0 1 0 0-5`,`M17 14.2a5 5 0 0 1 4 4.8`]};function xr(e){return(()=>{var t=nr();return Y(t,V(Fe,{get each(){return[...br[e.name]]},children:e=>(()=>{var t=rr();return K(t,`d`,e),t})()})),S(()=>K(t,`class`,`icon ${e.class??``}`)),t})()}var Sr={idle:`Idle`,working:`Running`,blocked:`Needs you`,error:`Error`};function Cr(){return ir()}function wr(e){return(()=>{var t=or();return Y(t,V(U,{get when(){return e.state===`working`},get fallback(){return sr()},get children(){return ar()}})),S(n=>{var r=`status ${e.state} ${e.class??``}`,i=Sr[e.state],a=Sr[e.state];return r!==n.e&&q(t,n.e=r),i!==n.t&&K(t,`aria-label`,n.t=i),a!==n.a&&K(t,`title`,n.a=a),n},{e:void 0,t:void 0,a:void 0}),t})()}function Tr(e){let[t,n]=Ae(e,[`icon`,`label`,`class`]);return(()=>{var e=cr();return at(e,ke({get class(){return`icon-btn ${t.class??``}`},get"aria-label"(){return t.label},get title(){return t.label}},n),!1,!0),Y(e,V(xr,{get name(){return t.icon}})),e})()}function Er(e){let[t,n]=x(!1),r,i,[a,o]=x({top:0,left:0,right:0,bottom:0}),s=()=>{let e=r.getBoundingClientRect();o({top:e.bottom+4,left:e.left,right:window.innerWidth-e.right,bottom:window.innerHeight-e.top+4})},c=()=>n(!1),l=e=>{if(!t())return;let n=e.target;!r.contains(n)&&!i?.contains(n)&&c()},u=n=>{if(t()){if(n.key===`Escape`){if(Qn(i??r))return;c(),r.focus()}else if(/^[1-9]$/.test(n.key)&&!(n.target instanceof HTMLInputElement||n.target instanceof HTMLTextAreaElement)){let t=e.items().filter(e=>typeof e==`object`&&`run`in e&&!e.disabled)[Number(n.key)-1];t&&(n.preventDefault(),c(),t.run())}}};E(()=>{document.addEventListener(`mousedown`,l),document.addEventListener(`keydown`,u)}),D(()=>{document.removeEventListener(`mousedown`,l),document.removeEventListener(`keydown`,u)});let d=()=>{let t=0;return e.items().map(e=>({item:e,index:typeof e==`object`&&`run`in e&&!e.disabled?++t:0}))};return[(()=>{var i=lr();i.$$click=e=>{e.stopPropagation(),e.preventDefault(),s(),n(!t())};var a=r;return typeof a==`function`?J(a,i):r=i,Y(i,()=>e.text??V(xr,{get name(){return e.icon??`more`}})),S(n=>{var r=e.class??`icon-btn`,a=e.label,o=e.label,s=t();return r!==n.e&&q(i,n.e=r),a!==n.t&&K(i,`aria-label`,n.t=a),o!==n.a&&K(i,`title`,n.a=o),s!==n.o&&K(i,`aria-expanded`,n.o=s),n},{e:void 0,t:void 0,a:void 0,o:void 0}),i})(),V(U,{get when(){return t()},get children(){return V(_t,{get children(){var t=ur(),n=i;return typeof n==`function`?J(n,t):i=t,Y(t,V(Fe,{get each(){return d()},children:({item:e,index:t})=>e===`sep`?dr():`section`in e?(()=>{var t=fr();return Y(t,()=>e.section),t})():(()=>{var n=hr(),r=n.firstChild,i=r.nextSibling;return n.$$click=t=>{t.stopPropagation(),c(),e.run()},Y(r,()=>e.checked?`✓`:``),Y(i,()=>e.label),Y(n,V(U,{get when(){return e.hint},get children(){var t=pr();return Y(t,()=>e.hint),t}}),null),Y(n,V(U,{when:t>0&&t<10,get children(){var e=mr();return Y(e,t),e}}),null),S(t=>{var r=e.checked===void 0?`menuitem`:`menuitemradio`,i=e.checked,a=`menu-item${e.danger?` danger`:``}`,o=e.disabled;return r!==t.e&&K(n,`role`,t.e=r),i!==t.t&&K(n,`aria-checked`,t.t=i),a!==t.a&&q(n,t.a=a),o!==t.o&&(n.disabled=t.o=o),t},{e:void 0,t:void 0,a:void 0,o:void 0}),n})()})),S(n=>rt(t,{...e.up?{bottom:`${a().bottom}px`}:{top:`${a().top}px`},...e.align===`left`?{left:`${a().left}px`}:{right:`${a().right}px`}},n)),t}})}})]}function Dr(e){let t;return C(()=>{let n=e.open;t&&(n&&!t.open?t.showModal():!n&&t.open&&t.close())}),(()=>{var n=vr();n.$$click=n=>n.target===t&&e.onClose(),n.addEventListener(`close`,()=>e.onClose());var r=t;return typeof r==`function`?J(r,n):t=n,Y(n,V(U,{get when(){return e.open},get children(){return[(()=>{var t=gr(),n=t.firstChild;return Y(n,()=>e.title),Y(t,V(Tr,{icon:`close`,label:`Close`,onClick:()=>e.onClose()}),null),t})(),(()=>{var t=_r();return Y(t,()=>e.children),t})()]}})),S(t=>{var r=`dialog${e.wide?` wide`:``} ${e.class??``}`,i=e.title;return r!==t.e&&q(n,t.e=r),i!==t.t&&K(n,`aria-label`,t.t=i),t},{e:void 0,t:void 0}),n})()}var[Or,kr]=x(Date.now());setInterval(()=>kr(Date.now()),3e4);var Ar=Or,[jr,Mr]=x(Date.now());setInterval(()=>Mr(Date.now()),1e3);var Nr=jr;function Pr(e){return(()=>{var t=yr();return S(n=>{var r=`Error: ${e.text}`,i=e.text;return r!==n.e&&K(t,`aria-label`,n.e=r),i!==n.t&&K(t,`title`,n.t=i),n},{e:void 0,t:void 0}),t})()}function Fr(e,t=Or()){if(!e)return``;let n=Math.max(0,Math.round((t-e)/1e3));return n<45?`just now`:n<3600?`${Math.round(n/60)}m ago`:n<86400?`${Math.round(n/3600)}h ago`:`${Math.round(n/86400)}d ago`}var Ir=e=>String(e??``).replace(/[\\/]+$/,``).split(/[\\/]/).pop()||e||``,Lr={herdr:`Herdr`,tui:`TUI`,background:`Background`};G([`click`]);export{bt as $,hn as A,V as At,Ut as B,je as Bt,Dn as C,Fe as Ct,vn as D,Be as Dt,An as E,U as Et,$t as F,ne as Ft,Pt as G,T as Gt,qt as H,ie as Ht,an as I,b as It,Bt as J,Lt as K,Zt as L,x as Lt,en as M,C as Mt,tn as N,w as Nt,ln as O,Le as Ot,nn as P,S as Pt,kt as Q,rn as R,Ne as Rt,wn as S,o as St,Mn as T,Re as Tt,Jt as U,D as Ut,Xt as V,ke as Vt,Rt as W,E as Wt,Vt as X,Ht as Y,At as Z,Fn as _,at as _t,Er as a,Dt as at,On as b,J as bt,wr as c,_t as ct,Ir as d,G as dt,xt as et,Ar as f,Y as ft,Qn as g,it as gt,$n as h,K as ht,Tr as i,Tt as it,sn as j,ee as jt,_n as k,re as kt,Cr as l,tt as lt,tr as m,Qe as mt,Pr as n,Et as nt,Lr as o,Ct as ot,Nr as p,Ye as pt,It as q,xr as r,Ot as rt,Sr as s,yt as st,Dr as t,wt as tt,Fr as u,q as ut,zn as v,rt as vt,Tn as w,Ie as wt,jn as x,i as xt,Rn as y,W as yt,Qt as z,O as zt};
|