@huynle/hub 0.8.1 → 0.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/CHANGELOG.md +113 -0
  2. package/README.md +1 -1
  3. package/package.json +1 -1
  4. package/packages/claude-code/package.json +1 -1
  5. package/packages/cli/dist/hub-cli.js +87 -52
  6. package/packages/cli/package.json +1 -1
  7. package/packages/cli/src/artifact-jobs-mcp.ts +10 -9
  8. package/packages/cli/src/artifacts-mcp.ts +8 -7
  9. package/packages/cli/src/mcp.ts +4 -3
  10. package/packages/cli/src/profiles-mcp.ts +3 -3
  11. package/packages/cli/src/team-intake-mcp.ts +8 -7
  12. package/packages/cli/src/teams-mcp.ts +2 -1
  13. package/packages/cli/src/tool-args.ts +6 -0
  14. package/packages/cli/src/watchlist.ts +5 -4
  15. package/packages/codex/package.json +1 -1
  16. package/packages/node/package.json +1 -1
  17. package/packages/preset/package.json +1 -1
  18. package/packages/protocol/package.json +1 -1
  19. package/packages/protocol/src/concierge.ts +4 -1
  20. package/packages/protocol/src/embedded-media.ts +59 -0
  21. package/packages/protocol/src/index.ts +83 -6
  22. package/packages/protocol/src/wire.ts +1 -0
  23. package/packages/runtime-openshell/package.json +1 -1
  24. package/packages/runtime-sdk/package.json +1 -1
  25. package/packages/sdk/package.json +1 -1
  26. package/packages/sdk/src/client.ts +3 -1
  27. package/packages/spoke-sdk/package.json +1 -1
  28. package/packages/spoke-sdk/src/connection.ts +13 -1
  29. package/src/central/agent/acting-routes.ts +3 -2
  30. package/src/central/agent/acting.ts +67 -12
  31. package/src/central/agent/delivery.ts +12 -3
  32. package/src/central/agent/escalation.ts +30 -9
  33. package/src/central/agent/launch-spec.ts +38 -19
  34. package/src/central/agent/routes.ts +7 -0
  35. package/src/central/concierge/context.ts +3 -1
  36. package/src/central/concierge/prompt.ts +7 -4
  37. package/src/central/http.ts +50 -21
  38. package/src/central/registry.ts +23 -3
  39. package/src/central/revert-windows.ts +66 -0
  40. package/src/central/spoke-ws.ts +6 -3
  41. package/src/central/teams/staffing.ts +2 -2
  42. package/src/index.ts +26 -14
  43. package/src/spoke/deliver.ts +6 -0
  44. package/src/spoke/fork-revert.ts +94 -9
  45. package/src/spoke/hub-tool.ts +2 -2
  46. package/src/spoke/locations.ts +80 -0
  47. package/src/spoke/profile-apply.ts +24 -14
  48. package/src/spoke/session-context.ts +76 -6
  49. package/src/spoke/spoke.ts +116 -36
  50. package/src/spoke/timeline.ts +30 -3
  51. package/src/spoke/tracker.ts +17 -1
  52. package/src/status.ts +2 -1
  53. package/web/dist/assets/{ArtifactPage-mNzjlP_U.js → ArtifactPage-R0ZTpHca.js} +1 -1
  54. package/web/dist/assets/{ArtifactPane-CPQcuX7c.js → ArtifactPane-C9KrBna8.js} +1 -1
  55. package/web/dist/assets/{ArtifactWorkbench-NoFC5Sb2.js → ArtifactWorkbench-sP2mZccC.js} +1 -1
  56. package/web/dist/assets/{Library-LXHsP5Fw.js → Library-BXbJvTUS.js} +2 -2
  57. package/web/dist/assets/{ProfilesDestination-DhVVcAep.js → ProfilesDestination-D7XyLTJ7.js} +1 -1
  58. package/web/dist/assets/{TeamsPage-DBrO5hoL.js → TeamsPage-Dgxt8UI3.js} +1 -1
  59. package/web/dist/assets/{Watchtower-DxaJYQp_.js → Watchtower-DJHx6cWw.js} +2 -2
  60. package/web/dist/assets/index-g4V9mfSr.js +34 -0
  61. package/web/dist/assets/{live-BDq0AABg.js → live-OgQWPrSY.js} +1 -1
  62. package/web/dist/assets/{renderer2d-DAr4IHM8.js → renderer2d-DjEipyto.js} +1 -1
  63. package/web/dist/assets/{renderer3d-DWZj595u.js → renderer3d-B648jKGO.js} +1 -1
  64. package/web/dist/assets/{safe-area-JUb6OeI3.js → safe-area-CNLyboIj.js} +1 -1
  65. package/web/dist/assets/{silero-worker-C8-8vLVS.js → silero-worker-DhlIHyD_.js} +1 -1
  66. package/web/dist/index.html +1 -1
  67. package/web/dist/assets/index-lIOfSYck.js +0 -34
@@ -1,7 +1,7 @@
1
1
  // Sessions this OpenCode process knows about, built from the events it sees, plus which of them
2
2
  // are exposed to the central server (by mode). Pure: time is passed in.
3
3
  import type { Mode } from "../config"
4
- import { compactActivity, compactRunError, FORWARDED_EVENTS, type CompactRunError, type CompactSessionStatus, type JobInfo, type SessionInfo, type SessionRevertInfo, type TerminalInfo } from "../protocol"
4
+ import { compactActivity, compactRunError, FORWARDED_EVENTS, type CompactRunError, type CompactSessionStatus, type JobInfo, type SessionInfo, type RevertCommitted, type SessionRevertInfo, type TerminalInfo } from "../protocol"
5
5
 
6
6
  /** A session is "owned" by this process while it viewed or ran it within this window. */
7
7
  export const OWNED_WINDOW_MS = 30 * 60 * 1000
@@ -37,6 +37,8 @@ interface Entry {
37
37
  listed?: boolean
38
38
  /** A staged revert (feature "revert"). */
39
39
  revert?: SessionRevertInfo
40
+ /** The latest committed revert's removed window (feature "revert"). */
41
+ committed?: RevertCommitted
40
42
  }
41
43
 
42
44
  const ACTIVITY = new Set([
@@ -199,6 +201,19 @@ export class SessionTracker {
199
201
  return true
200
202
  }
201
203
 
204
+ /** The session's latest committed revert window, if any. */
205
+ committedOf(id: string): RevertCommitted | undefined {
206
+ return this.entries.get(id)?.committed
207
+ }
208
+
209
+ /** Sets a known session's latest committed revert window. Returns true when it changed. */
210
+ setCommitted(id: string, committed: RevertCommitted): boolean {
211
+ const entry = this.entries.get(id)
212
+ if (!entry || JSON.stringify(entry.committed ?? null) === JSON.stringify(committed)) return false
213
+ entry.committed = committed
214
+ return true
215
+ }
216
+
202
217
  /** Fills in details fetched for a session that was first seen through an activity event. */
203
218
  setInfo(id: string, details: SessionDetails): boolean {
204
219
  const entry = this.entries.get(id)
@@ -405,6 +420,7 @@ export class SessionTracker {
405
420
  ...(e.project ? { project: e.project } : {}),
406
421
  ...(e.projectName ? { projectName: e.projectName } : {}),
407
422
  ...(e.revert ? { revert: e.revert } : {}),
423
+ ...(e.committed ? { revertCommitted: e.committed } : {}),
408
424
  }))
409
425
  }
410
426
 
package/src/status.ts CHANGED
@@ -23,7 +23,8 @@ export interface Blocker {
23
23
  export interface BlockerRecommendation {
24
24
  /** Who recommends it, as the hub names the agent. */
25
25
  readonly by: string
26
- readonly recommends: "approve"
26
+ /** (R-03) Absent: the escalation recommends nothing (a Concierge that only tried); the blocker just links the Decision. */
27
+ readonly recommends?: "approve"
27
28
  readonly why?: string
28
29
  /** The Decision the user answers it in. */
29
30
  readonly decisionID?: string
@@ -1 +1 @@
1
- import{At as e,Et as t,ft as n,i as r,r as i,yt as a}from"./ui-Dh1-78Cl.js";import{L as o,R as s,z as c}from"./index-lIOfSYck.js";import{t as l}from"./ArtifactWorkbench-NoFC5Sb2.js";var u=a(`<div class="feature-page av-page">`),d=a(`<a class="icon-btn av-back"href=/artifacts aria-label="All artifacts"title="All artifacts">`);function f(a){return(()=>{var f=u();return n(f,e(l,{get id(){return a.id},layout:`page`,get lead(){return[e(t,{get when(){return o()},get children(){return e(r,{icon:`menu`,label:`Open sidebar`,onClick:s})}}),(()=>{var t=d();return n(t,e(i,{name:`back`})),t})()]},get actions(){return e(r,{class:`av-wide`,icon:`split`,label:`Open in pane`,onClick:()=>c(a.id)})}})),f})()}export{f as default};
1
+ import{At as e,Et as t,ft as n,i as r,r as i,yt as a}from"./ui-Dh1-78Cl.js";import{L as o,R as s,z as c}from"./index-g4V9mfSr.js";import{t as l}from"./ArtifactWorkbench-sP2mZccC.js";var u=a(`<div class="feature-page av-page">`),d=a(`<a class="icon-btn av-back"href=/artifacts aria-label="All artifacts"title="All artifacts">`);function f(a){return(()=>{var f=u();return n(f,e(l,{get id(){return a.id},layout:`page`,get lead(){return[e(t,{get when(){return o()},get children(){return e(r,{icon:`menu`,label:`Open sidebar`,onClick:s})}}),(()=>{var t=d();return n(t,e(i,{name:`back`})),t})()]},get actions(){return e(r,{class:`av-wide`,icon:`split`,label:`Open in pane`,onClick:()=>c(a.id)})}})),f})()}export{f as default};
@@ -1 +1 @@
1
- import{At as e,Pt as t,ft as n,ht as r,r as i,yt as a}from"./ui-Dh1-78Cl.js";import{t as o}from"./ArtifactWorkbench-NoFC5Sb2.js";var s=a(`<a class=icon-btn aria-label="Full page"title="Open the artifact's full page">`);function c(a){return e(o,{get id(){return a.artifactID},layout:`pane`,onArtifact:e=>a.onTitle?.(e.title||`Untitled`),get actions(){return(()=>{var o=s();return n(o,e(i,{name:`expand`})),t(()=>r(o,`href`,`/artifacts/${encodeURIComponent(a.artifactID)}`)),o})()},get trailing(){return a.paneTools}})}export{c as ArtifactPane};
1
+ import{At as e,Pt as t,ft as n,ht as r,r as i,yt as a}from"./ui-Dh1-78Cl.js";import{t as o}from"./ArtifactWorkbench-sP2mZccC.js";var s=a(`<a class=icon-btn aria-label="Full page"title="Open the artifact's full page">`);function c(a){return e(o,{get id(){return a.artifactID},layout:`pane`,onArtifact:e=>a.onTitle?.(e.title||`Untitled`),get actions(){return(()=>{var o=s();return n(o,e(i,{name:`expand`})),t(()=>r(o,`href`,`/artifacts/${encodeURIComponent(a.artifactID)}`)),o})()},get trailing(){return a.paneTools}})}export{c as ArtifactPane};
@@ -1,4 +1,4 @@
1
- import{$ as e,At as t,Ct as n,Et as r,G as i,Ht as a,Lt as o,Mt as s,Nt as c,Ot as l,Pt as u,Tt as d,Ut as f,Vt as p,Wt as m,a as h,bt as g,dt as _,ft as v,g as y,gt as b,ht as x,i as S,it as C,lt as w,nt as T,pt as E,q as D,r as O,st as k,tt as A,u as j,ut as M,vt as N,wt as P,yt as F}from"./ui-Dh1-78Cl.js";import{A as I,O as L,P as R,U as z,V as ee,k as te,z as ne}from"./index-lIOfSYck.js";import{c as re,d as ie,f as ae,i as oe,l as se,n as ce,r as le,t as ue,u as de}from"./source-CDU04kYw.js";var fe=`ai-actions`,B=16,pe=[`ask`,`propose-edit`,`run-action`],me=[`queued`,`running`,`succeeded`,`failed`,`cancelled`],he=[`starting`,`waiting`,`offline`,`ready`,`ended`,`failed`],ge=/[\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]/,V=e=>typeof e==`object`&&!!e&&!Array.isArray(e),H=e=>typeof e==`string`&&e.length>0,U=e=>typeof e==`number`&&Number.isFinite(e),_e=(e,t)=>typeof t==`string`&&e.includes(t),ve=e=>e.replace(/\/+$/,``).split(`/`).pop()||e;function ye(e){if(V(e)&&_e(he,e.status)){if(e.kind===`session`&&H(e.address))return e;if(e.kind===`launch`&&H(e.machine)&&H(e.repo))return{harness:``,mode:`checkout`,...e}}}function be(e){if(!V(e)||!_e([`pending`,`applied`,`conflict`],e.state)||!Array.isArray(e.files))return;let t=e.files.filter(e=>V(e)&&H(e.mediaType)&&U(e.bytes)&&H(e.hash));return{state:e.state,files:t,...Array.isArray(e.keep)?{keep:e.keep.filter(H)}:{},...H(e.entry)?{entry:e.entry}:{},...H(e.appliedRevisionID)?{appliedRevisionID:e.appliedRevisionID}:{}}}function xe(e){if(!V(e)||!H(e.id)||!H(e.artifactID)||!H(e.baseRevisionID)||!U(e.revision)||!_e(me,e.state)||!_e(pe,e.kind)||typeof e.instruction!=`string`||!H(e.by)||!U(e.createdAt)||!U(e.updatedAt))return;let t=ye(e.handler);if(!t)return;let n=be(e.proposal),{proposal:r,...i}=e;return{...i,handler:t,...n?{proposal:n}:{},...typeof e.answer==`string`?{answer:e.answer}:{},...typeof e.error==`string`?{error:e.error}:{}}}function Se(e){let t=V(e)?e:{};return{items:Array.isArray(t.items)?t.items.flatMap(e=>xe(e)??[]):[],...H(t.cursor)?{cursor:t.cursor}:{}}}function Ce(e){let t=e?.[fe];return t?t.split(`,`).map(e=>e.trim()).filter(D).slice(0,B):[]}var W=e=>e.state===`queued`||e.state===`running`;function G(e,t){return e.kind===`session`?e.address.startsWith(`@`)?e.address:t?.(e.sessionID??e.address)??(e.sessionID?t?.(e.address):void 0)??e.address:`New ${e.harness||`agent`} session on ${e.machine} · ${ve(e.repo)}`}function we(e,t){let n=(e,t)=>({tone:e,active:!1,text:t});if(e.state===`failed`)return n(`failed`,`Failed: ${e.error||`no reason given`}`);if(e.state===`cancelled`)return n(`cancelled`,`Cancelled`);if(e.state===`succeeded`){if(e.kind!==`propose-edit`)return n(`done`,`Answered`);let t=e.proposal;return t?t.state===`applied`?n(`done`,`Edit accepted`):t.state===`conflict`?n(`failed`,`Not accepted: the artifact changed after this edit was proposed. Request it again on the latest revision.`):n(`done`,`Proposed an edit: review it below`):n(`done`,`Finished without a proposal`)}let r=e.handler,i=(e,t)=>({tone:e,active:!0,text:t});switch(r.status){case`offline`:return r.kind===`session`?i(`offline`,`Waiting: ${G(r,t)} is offline. The request is queued and is delivered when it reconnects.`):i(`offline`,`Waiting: ${r.machine} is offline. The request is queued until it's back.`);case`starting`:return i(`waiting`,r.kind===`session`?`Sending to ${G(r,t)}…`:`Starting a session on ${r.machine}…`);case`waiting`:return i(`waiting`,r.kind===`launch`?`Waiting for a session on ${r.machine}${r.reason?`: ${r.reason}`:``}`:`Waiting for ${G(r,t)}`);case`ready`:return e.state===`running`?i(`running`,`Working: ${G(r,t)} has the request.`):i(`waiting`,`Request delivered to ${G(r,t)}; waiting for it to pick it up.`);default:return i(`waiting`,`The handler ${r.status===`ended`?`ended`:`failed`}; the job finishes shortly.`)}}function Te(e){return e===`user`?`You`:e.startsWith(`app:`)?`App ${e.slice(4)}`:`Session ${e}`}function K(e,t){let n=t.get(e);return n===void 0?`revision ${e.slice(-6)}`:`revision ${n}`}function Ee(e){let t=[],n=[];for(let r of e.sessions){if(r.archived)continue;let e=r.name?.replace(/^@+/,``)?`@${r.name.replace(/^@+/,``)}`:void 0,i=r.title||r.id,a=[r.machineName,r.harness].filter(Boolean).join(` · `),o=`${r.online?`●`:`○`} ${e?`${e} — ${i} · ${a}`:`${i} · ${a}`}${r.online?``:` (offline: queued until it reconnects)`}`,s={key:`session:${r.id}`,kind:`session`,label:o,display:e??i,online:r.online,handler:{session:r.id},search:[e,r.title,r.id,r.machineName,r.harness].filter(Boolean).join(` `).toLowerCase()};e?t.push({...s,sortName:e.toLowerCase()}):n.push(s)}t.sort((e,t)=>e.sortName<t.sortName?-1:+(e.sortName>t.sortName));let r=[...t.map(({sortName:e,...t})=>t),...n];for(let t of e.bindings){let n=e.machines.find(e=>e.id===t.machineID),i=n?.online??!1,a=`New session in ${t.label||ve(t.repo)} on ${n?.name??t.machineID}`;r.push({key:`launch:${t.id}`,kind:`launch`,label:`${a}${i?``:` (machine offline: waits for it)`}`,display:a,online:i,handler:{launch:{machine:t.machineID,repo:t.repo}},search:[a,t.repo,t.machineID].join(` `).toLowerCase()})}return r}function De(e,t,n){let r=t.trim().toLowerCase();return r?e.filter(e=>e.key===n||e.search.includes(r)):[...e]}function Oe(e){let t=new Map;for(let n of e)n.kind===`session`&&`session`in n.handler&&n.handler.session&&t.set(n.handler.session,n.display);return t}function ke(e){return e.kind===`session`?{session:e.sessionID??e.address}:{launch:{machine:e.machine,repo:e.repo,...e.harness?{harness:e.harness}:{},...e.model?{model:e.model}:{},...e.agent?{agent:e.agent}:{},mode:e.mode}}}function Ae(e){let t=e=>({ok:!1,problem:e});if(!e.handler)return t(`Choose who handles this request.`);let n=e.instruction.trim();if(e.kind===`run-action`){let r=e.actions??[];if(r.length===0)return t(`This artifact declares no AI actions.`);if(!e.action||!r.includes(e.action))return t(`Choose one of the artifact's actions.`);n||=`Run the ${e.action} action.`}if(!n)return t(e.kind===`ask`?`Write a question.`:`Describe the edit.`);if(n.length>de.aiInstructionChars)return t(`Keep it under ${de.aiInstructionChars.toLocaleString(`en-US`)} characters.`);if(ge.test(n))return t(`Use plain text (no control characters).`);let r={kind:e.kind,baseRevisionID:e.baseRevisionID,instruction:n,handler:e.handler};return e.kind===`run-action`?{ok:!0,request:{kind:`run-action`,action:e.action,baseRevisionID:e.baseRevisionID,instruction:n,handler:e.handler}}:{ok:!0,request:e.kind===`propose-edit`?{...r,apply:`manual`}:r}}var je=4e6,Me=3,Ne=e=>{let t=e.replace(/\r\n?/g,`
1
+ import{$ as e,At as t,Ct as n,Et as r,G as i,Ht as a,Lt as o,Mt as s,Nt as c,Ot as l,Pt as u,Tt as d,Ut as f,Vt as p,Wt as m,a as h,bt as g,dt as _,ft as v,g as y,gt as b,ht as x,i as S,it as C,lt as w,nt as T,pt as E,q as D,r as O,st as k,tt as A,u as j,ut as M,vt as N,wt as P,yt as F}from"./ui-Dh1-78Cl.js";import{A as I,O as L,P as R,U as z,V as ee,k as te,z as ne}from"./index-g4V9mfSr.js";import{c as re,d as ie,f as ae,i as oe,l as se,n as ce,r as le,t as ue,u as de}from"./source-CDU04kYw.js";var fe=`ai-actions`,B=16,pe=[`ask`,`propose-edit`,`run-action`],me=[`queued`,`running`,`succeeded`,`failed`,`cancelled`],he=[`starting`,`waiting`,`offline`,`ready`,`ended`,`failed`],ge=/[\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]/,V=e=>typeof e==`object`&&!!e&&!Array.isArray(e),H=e=>typeof e==`string`&&e.length>0,U=e=>typeof e==`number`&&Number.isFinite(e),_e=(e,t)=>typeof t==`string`&&e.includes(t),ve=e=>e.replace(/\/+$/,``).split(`/`).pop()||e;function ye(e){if(V(e)&&_e(he,e.status)){if(e.kind===`session`&&H(e.address))return e;if(e.kind===`launch`&&H(e.machine)&&H(e.repo))return{harness:``,mode:`checkout`,...e}}}function be(e){if(!V(e)||!_e([`pending`,`applied`,`conflict`],e.state)||!Array.isArray(e.files))return;let t=e.files.filter(e=>V(e)&&H(e.mediaType)&&U(e.bytes)&&H(e.hash));return{state:e.state,files:t,...Array.isArray(e.keep)?{keep:e.keep.filter(H)}:{},...H(e.entry)?{entry:e.entry}:{},...H(e.appliedRevisionID)?{appliedRevisionID:e.appliedRevisionID}:{}}}function xe(e){if(!V(e)||!H(e.id)||!H(e.artifactID)||!H(e.baseRevisionID)||!U(e.revision)||!_e(me,e.state)||!_e(pe,e.kind)||typeof e.instruction!=`string`||!H(e.by)||!U(e.createdAt)||!U(e.updatedAt))return;let t=ye(e.handler);if(!t)return;let n=be(e.proposal),{proposal:r,...i}=e;return{...i,handler:t,...n?{proposal:n}:{},...typeof e.answer==`string`?{answer:e.answer}:{},...typeof e.error==`string`?{error:e.error}:{}}}function Se(e){let t=V(e)?e:{};return{items:Array.isArray(t.items)?t.items.flatMap(e=>xe(e)??[]):[],...H(t.cursor)?{cursor:t.cursor}:{}}}function Ce(e){let t=e?.[fe];return t?t.split(`,`).map(e=>e.trim()).filter(D).slice(0,B):[]}var W=e=>e.state===`queued`||e.state===`running`;function G(e,t){return e.kind===`session`?e.address.startsWith(`@`)?e.address:t?.(e.sessionID??e.address)??(e.sessionID?t?.(e.address):void 0)??e.address:`New ${e.harness||`agent`} session on ${e.machine} · ${ve(e.repo)}`}function we(e,t){let n=(e,t)=>({tone:e,active:!1,text:t});if(e.state===`failed`)return n(`failed`,`Failed: ${e.error||`no reason given`}`);if(e.state===`cancelled`)return n(`cancelled`,`Cancelled`);if(e.state===`succeeded`){if(e.kind!==`propose-edit`)return n(`done`,`Answered`);let t=e.proposal;return t?t.state===`applied`?n(`done`,`Edit accepted`):t.state===`conflict`?n(`failed`,`Not accepted: the artifact changed after this edit was proposed. Request it again on the latest revision.`):n(`done`,`Proposed an edit: review it below`):n(`done`,`Finished without a proposal`)}let r=e.handler,i=(e,t)=>({tone:e,active:!0,text:t});switch(r.status){case`offline`:return r.kind===`session`?i(`offline`,`Waiting: ${G(r,t)} is offline. The request is queued and is delivered when it reconnects.`):i(`offline`,`Waiting: ${r.machine} is offline. The request is queued until it's back.`);case`starting`:return i(`waiting`,r.kind===`session`?`Sending to ${G(r,t)}…`:`Starting a session on ${r.machine}…`);case`waiting`:return i(`waiting`,r.kind===`launch`?`Waiting for a session on ${r.machine}${r.reason?`: ${r.reason}`:``}`:`Waiting for ${G(r,t)}`);case`ready`:return e.state===`running`?i(`running`,`Working: ${G(r,t)} has the request.`):i(`waiting`,`Request delivered to ${G(r,t)}; waiting for it to pick it up.`);default:return i(`waiting`,`The handler ${r.status===`ended`?`ended`:`failed`}; the job finishes shortly.`)}}function Te(e){return e===`user`?`You`:e.startsWith(`app:`)?`App ${e.slice(4)}`:`Session ${e}`}function K(e,t){let n=t.get(e);return n===void 0?`revision ${e.slice(-6)}`:`revision ${n}`}function Ee(e){let t=[],n=[];for(let r of e.sessions){if(r.archived)continue;let e=r.name?.replace(/^@+/,``)?`@${r.name.replace(/^@+/,``)}`:void 0,i=r.title||r.id,a=[r.machineName,r.harness].filter(Boolean).join(` · `),o=`${r.online?`●`:`○`} ${e?`${e} — ${i} · ${a}`:`${i} · ${a}`}${r.online?``:` (offline: queued until it reconnects)`}`,s={key:`session:${r.id}`,kind:`session`,label:o,display:e??i,online:r.online,handler:{session:r.id},search:[e,r.title,r.id,r.machineName,r.harness].filter(Boolean).join(` `).toLowerCase()};e?t.push({...s,sortName:e.toLowerCase()}):n.push(s)}t.sort((e,t)=>e.sortName<t.sortName?-1:+(e.sortName>t.sortName));let r=[...t.map(({sortName:e,...t})=>t),...n];for(let t of e.bindings){let n=e.machines.find(e=>e.id===t.machineID),i=n?.online??!1,a=`New session in ${t.label||ve(t.repo)} on ${n?.name??t.machineID}`;r.push({key:`launch:${t.id}`,kind:`launch`,label:`${a}${i?``:` (machine offline: waits for it)`}`,display:a,online:i,handler:{launch:{machine:t.machineID,repo:t.repo}},search:[a,t.repo,t.machineID].join(` `).toLowerCase()})}return r}function De(e,t,n){let r=t.trim().toLowerCase();return r?e.filter(e=>e.key===n||e.search.includes(r)):[...e]}function Oe(e){let t=new Map;for(let n of e)n.kind===`session`&&`session`in n.handler&&n.handler.session&&t.set(n.handler.session,n.display);return t}function ke(e){return e.kind===`session`?{session:e.sessionID??e.address}:{launch:{machine:e.machine,repo:e.repo,...e.harness?{harness:e.harness}:{},...e.model?{model:e.model}:{},...e.agent?{agent:e.agent}:{},mode:e.mode}}}function Ae(e){let t=e=>({ok:!1,problem:e});if(!e.handler)return t(`Choose who handles this request.`);let n=e.instruction.trim();if(e.kind===`run-action`){let r=e.actions??[];if(r.length===0)return t(`This artifact declares no AI actions.`);if(!e.action||!r.includes(e.action))return t(`Choose one of the artifact's actions.`);n||=`Run the ${e.action} action.`}if(!n)return t(e.kind===`ask`?`Write a question.`:`Describe the edit.`);if(n.length>de.aiInstructionChars)return t(`Keep it under ${de.aiInstructionChars.toLocaleString(`en-US`)} characters.`);if(ge.test(n))return t(`Use plain text (no control characters).`);let r={kind:e.kind,baseRevisionID:e.baseRevisionID,instruction:n,handler:e.handler};return e.kind===`run-action`?{ok:!0,request:{kind:`run-action`,action:e.action,baseRevisionID:e.baseRevisionID,instruction:n,handler:e.handler}}:{ok:!0,request:e.kind===`propose-edit`?{...r,apply:`manual`}:r}}var je=4e6,Me=3,Ne=e=>{let t=e.replace(/\r\n?/g,`
2
2
  `).split(`
3
3
  `);return t.length>1&&t[t.length-1]===``&&t.pop(),e===``?[]:t};function Pe(e,t){let n=Ne(e),r=Ne(t),i=[{type:`meta`,text:`Too large to compare line by line.`}];if(n.length+r.length>1e4)return i;let a=0;for(;a<n.length&&a<r.length&&n[a]===r[a];)a++;let o=n.length,s=r.length;for(;o>a&&s>a&&n[o-1]===r[s-1];)o--,s--;let c=o-a,l=s-a;if((c+1)*(l+1)>je)return i;let u=l+1,d=new Uint32Array((c+1)*u);for(let e=c-1;e>=0;e--)for(let t=l-1;t>=0;t--)d[e*u+t]=n[a+e]===r[a+t]?d[(e+1)*u+t+1]+1:Math.max(d[(e+1)*u+t],d[e*u+t+1]);let f=[];for(let e=0;e<a;e++)f.push({type:`context`,text:n[e],oldNo:e+1,newNo:e+1});let p=0,m=0,h=[],g=[],_=()=>{f.push(...h,...g),h=[],g=[]};for(;p<c||m<l;)p<c&&m<l&&n[a+p]===r[a+m]?(_(),f.push({type:`context`,text:n[a+p],oldNo:a+p+1,newNo:a+m+1}),p++,m++):m<l&&(p===c||d[p*u+m+1]>=d[(p+1)*u+m])?(g.push({type:`add`,text:r[a+m],newNo:a+m+1}),m++):(h.push({type:`del`,text:n[a+p],oldNo:a+p+1}),p++);_();for(let e=0;e<n.length-o;e++)f.push({type:`context`,text:n[o+e],oldNo:o+e+1,newNo:s+e+1});let v=new Uint8Array(f.length);f.forEach((e,t)=>{if(e.type!==`context`)for(let e=Math.max(0,t-Me);e<=Math.min(f.length-1,t+Me);e++)v[e]=1});let y=[],b=0;for(;b<f.length;){if(!v[b]){b++;continue}let e=b;for(;e<f.length&&v[e];)e++;let t=f.slice(b,e),n=t.find(e=>e.oldNo!==void 0)?.oldNo??0,r=t.find(e=>e.newNo!==void 0)?.newNo??0,i=t.filter(e=>e.type!==`add`).length,a=t.filter(e=>e.type!==`del`).length;y.push({type:`hunk`,text:`@@ -${n},${i} +${r},${a} @@`});for(let e of t)y.push(e);b=e}return y}function Fe(e,t){if(!(t.files.some(e=>e.path!==void 0)||t.keep.length>0||e.some(e=>e.path!==void 0))){let n=e[0];return t.files.map(e=>({change:n?n.hash===e.hash?`unchanged`:`changed`:`added`,mediaType:e.mediaType,bytes:e.bytes,...n?{baseBytes:n.bytes}:{}}))}let n=new Map(e.map(e=>[e.path??``,e])),r=[],i=new Set;for(let e of t.files){let t=e.path??``;i.add(t);let a=n.get(t);r.push({path:t,change:a?a.hash===e.hash?`unchanged`:`changed`:`added`,mediaType:e.mediaType,bytes:e.bytes,...a?{baseBytes:a.bytes}:{}})}for(let e of t.keep){if(i.has(e))continue;i.add(e);let t=n.get(e);r.push({path:e,change:`kept`,mediaType:t?.mediaType??``,bytes:t?.bytes??0,...t?{baseBytes:t.bytes}:{}})}for(let t of e){let e=t.path??``;i.has(e)||r.push({path:e,change:`removed`,mediaType:t.mediaType,bytes:0,baseBytes:t.bytes})}return r}function Ie(e){let t=V(e)||e instanceof Error?e:{},n=U(t.status)?t.status:0,r=typeof t.code==`string`?t.code:``,i=typeof t.message==`string`?t.message:String(e),a=V(t.details)?t.details:{};if(n===422||r===`unsupported`){let e=typeof a.feature==`string`?a.feature:``;return e===`artifactActions`?{kind:`unsupported`,text:`This artifact declares no AI actions.`}:!e||e===`artifacts`?{kind:`unsupported`,text:`AI requests aren't supported on this hub.`}:{kind:`unsupported`,text:`Not supported on this hub (${e}): ${i}`}}return n===404||r===`not_found`?{kind:`unavailable`,text:`AI requests aren't available for this artifact (it doesn't exist, or you can't see it).`}:n===401||n===403||r===`forbidden`?{kind:`forbidden`,text:`Not allowed: ${i}`}:n===409||r===`conflict`?{kind:`conflict`,text:i}:n===429||r===`rate_limited`?{kind:`rate_limited`,text:`Too many AI requests are running (on this artifact or for you). Wait for one to finish.`}:n===503||r===`offline`?{kind:`offline`,text:`Offline: ${i}`}:n===400||r===`invalid`?{kind:`invalid`,text:i}:{kind:`error`,text:i}}function Le(e){return e.proposal?.state===`conflict`?`stale-base`:`job-changed`}function Re(e){return Math.min(1e4,Math.round(1500*1.5**Math.max(0,e)))}var ze={set(e,t){let n=setTimeout(e,t);return()=>clearTimeout(n)}},Be=()=>globalThis.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2)}`,Ve=e=>!(e&&typeof e==`object`&&typeof e.status==`number`);function He(e){let{source:t,artifactID:n,onState:r}=e,i=e.timers??ze,a=e.key??Be,o={status:`loading`,actions:[],revisionNumbers:new Map,jobs:[],more:!1,loadingMore:!1,handlers:[],sending:!1,pending:{},notices:{},reviews:{}},s,c,l=0,u=!1,d,f=e=>{u||(o={...o,...e},r(o))},p=e=>o.jobs.find(t=>t.id===e),m=e=>f({jobs:o.jobs.some(t=>t.id===e.id)?o.jobs.map(t=>t.id===e.id?e:t):[e,...o.jobs]}),h=(e,t)=>{let{[e]:n,...r}=o.notices;f({notices:t?{...r,[e]:t}:r})},g=(e,t)=>{let{[e]:n,...r}=o.pending;f({pending:t?{...r,[e]:t}:r})};async function _(){let[e,r]=await Promise.all([t.artifact(n),t.revisionNumbers(n).catch(()=>o.revisionNumbers)]);f({artifact:e,actions:Ce(e.metadata),revisionNumbers:r})}function v(){c?.(),c=void 0,u||!o.jobs.some(W)?l=0:c=i.set(()=>{c=void 0,x()},Re(l))}async function y(){f({status:`loading`});try{let[,e]=await Promise.all([_(),t.jobs(n)]);s=e.cursor,f({status:`ready`,jobs:e.items,more:!!e.cursor,error:void 0})}catch(e){f({status:`error`,error:Ie(e)});return}v(),await b()}async function b(){if(!u&&o.artifact)try{f({handlers:await t.handlers(o.artifact),handlersError:void 0})}catch(e){f({handlersError:Ie(e).text})}}async function x(){if(!(u||o.status!==`ready`)){try{let e=await t.jobs(n),r=new Map(o.jobs.map(e=>[e.id,e])),i=new Set(e.items.map(e=>e.id)),a=e.items.some(e=>r.get(e.id)?.revision!==e.revision),s=e.items.some(e=>!W(e)&&r.get(e.id)&&W(r.get(e.id)));f({jobs:[...e.items,...o.jobs.filter(e=>!i.has(e.id))]}),l=a?0:l+1,s&&await _().catch(()=>void 0)}catch{l++}v()}}async function S(){if(s&&!o.loadingMore){f({loadingMore:!0});try{let e=await t.jobs(n,s);s=e.cursor;let r=new Set(o.jobs.map(e=>e.id));f({jobs:[...o.jobs,...e.items.filter(e=>!r.has(e.id))],more:!!e.cursor,loadingMore:!1})}catch(e){f({loadingMore:!1,sendError:Ie(e)})}}}async function C(e){let r=JSON.stringify(e),i=d?.body===r?d.key:a();try{let r=await t.create(n,e,i);return d=void 0,m(r),f({sending:!1,sendError:void 0}),l=0,v(),r}catch(e){d=Ve(e)?{body:r,key:i}:void 0;let t=Ie(e);f({sending:!1,sendError:t}),t.kind===`conflict`&&await _().catch(()=>void 0);return}}async function w(e){return await T(e)!==void 0}async function T(e){if(o.sending||!o.artifact)return;if(e.baseRevisionID!==void 0&&e.baseRevisionID!==o.artifact.latestRevisionID){f({sendError:{kind:`conflict`,text:`The artifact changed since that view opened: the request was not sent.`}});return}let t=o.handlers.find(t=>t.key===e.handlerKey)?.handler,n=Ae({kind:e.kind,instruction:e.instruction,baseRevisionID:o.artifact.latestRevisionID,...t?{handler:t}:{},...e.action?{action:e.action}:{},actions:o.actions});if(!n.ok)f({sendError:{kind:`invalid`,text:n.problem}});else return f({sending:!0,sendError:void 0}),C(n.request)}async function E(e){try{let r=await t.job(n,e);return m(r),r}catch{return}}async function D(e){let r=p(e);if(!r||o.pending[e]||!W(r))return!1;g(e,`cancel`);try{return m(await t.cancel(n,e,r.revision)),h(e,void 0),!0}catch(t){let n=Ie(t),r=n.kind===`conflict`?await E(e):void 0;return h(e,{kind:n.kind===`conflict`?`conflict`:`error`,text:r&&!W(r)?`Not cancelled: it already ${r.state===`succeeded`?`finished`:r.state}.`:n.text}),!1}finally{g(e,void 0),v()}}async function O(e){let r=p(e);if(!r||o.pending[e]||r.kind!==`propose-edit`||r.state!==`succeeded`||r.proposal?.state!==`pending`)return!1;g(e,`apply`);try{let i=await t.apply(n,e,r.revision);m(i.job),await _().catch(()=>void 0);let a=i.revisionNumber??o.revisionNumbers.get(i.revisionID);return h(e,{kind:`info`,text:a===void 0?`Accepted as a new revision.`:`Accepted as revision ${a}.`}),!0}catch(t){let n=Ie(t);if(n.kind!==`conflict`)return h(e,{kind:`error`,text:n.text}),!1;let[r]=await Promise.all([E(e),_().catch(()=>void 0)]);if(r&&Le(r)===`stale-base`){let t=o.artifact?K(o.artifact.latestRevisionID,o.revisionNumbers):`a newer revision`;h(e,{kind:`conflict`,stale:!0,text:`Not accepted: the artifact changed since this edit was proposed (it is at ${t} now). Nothing was changed. Request the edit again on the latest revision.`})}else h(e,{kind:`conflict`,stale:!1,text:`This request changed since you read it. Review it again, then Accept.`});return!1}finally{g(e,void 0)}}async function k(e){let t=p(e);if(!t||o.pending[e]||o.sending||t.kind!==`propose-edit`)return!1;g(e,`rerequest`),f({sending:!0,sendError:void 0});try{await _();let n=!!await C({kind:`propose-edit`,baseRevisionID:o.artifact.latestRevisionID,instruction:t.instruction,handler:ke(t.handler),apply:`manual`});return n&&h(e,{kind:`info`,text:`Requested again on the latest revision.`}),n}catch(e){return f({sending:!1,sendError:Ie(e)}),!1}finally{g(e,void 0)}}async function A(e){let r=p(e);if(r?.proposal){f({reviews:{...o.reviews,[e]:{status:`loading`}}});try{let[i,a]=await Promise.all([t.proposal(n,e),t.revisionFiles(n,r.baseRevisionID)]),s=Fe(a,{files:i.files,keep:i.keep}),c=a.length<=1&&i.files.every(e=>e.path===void 0),l=i.files.map(e=>{let t=c?a[0]:a.find(t=>t.path===e.path),n=e.path===void 0?{}:{path:e.path};return e.omitted===`binary`?{...n,note:`Binary file: not compared.`}:e.omitted===`budget`||e.text===void 0?{...n,note:`Too large to show here.`}:t&&t.text===void 0?{...n,note:t.omitted===`binary`?`Replaces a binary file.`:`The current file is too large to compare.`}:t&&t.hash===e.hash?{...n,note:`Unchanged.`}:{...n,lines:Pe(t?.text??``,e.text)}});f({reviews:{...o.reviews,[e]:{status:`ready`,changes:s,diffs:l,truncated:i.truncated}}})}catch(t){f({reviews:{...o.reviews,[e]:{status:`error`,text:Ie(t).text}}})}}}return{state:()=>o,load:y,refresh:x,more:S,request:w,requestJob:T,cancel:D,accept:O,rerequest:k,review:A,reloadHandlers:b,dispose(){c?.(),c=void 0,u=!0}}}var Ue=`/api/agent/artifacts`,q={textBytes:2097152,imageBytes:10485760,editBytes:1048576,revisionsPage:20},We=encodeURIComponent,Ge=e=>`${Ue}/${We(e)}`,Ke=(e,t)=>`${Ge(e)}/revisions?limit=${q.revisionsPage}${t?`&cursor=${We(t)}`:``}`,qe=(e,t)=>`${Ge(e)}/revisions/${We(t)}`,Je=(e,t,n)=>`${qe(e,t)}/blobs/${We(n)}`,Ye=e=>typeof e==`object`&&!!e&&!Array.isArray(e),J=e=>typeof e==`string`&&e.length>0,Xe=e=>typeof e==`number`&&Number.isFinite(e),Ze=e=>typeof e==`string`&&se.includes(e),Qe=(e,t)=>Ye(e)&&Ye(e[t])?e[t]:e;function $e(e){let t=Qe(e,`artifact`);if(!Ye(t)||!J(t.id)||typeof t.title!=`string`||!Ze(t.kind)||!J(t.latestRevisionID)||!Xe(t.revision))return;let n=Array.isArray(t.tags)?t.tags.filter(e=>typeof e==`string`):void 0;return{v:1,id:t.id,title:t.title,kind:t.kind,state:t.state===`archived`?`archived`:`active`,visibility:t.visibility===`workspace`?`workspace`:`private`,latestRevisionID:t.latestRevisionID,revision:t.revision,createdAt:Xe(t.createdAt)?t.createdAt:0,updatedAt:Xe(t.updatedAt)?t.updatedAt:0,...J(t.description)?{description:t.description}:{},...J(t.workspaceID)?{workspaceID:t.workspaceID}:{},...J(t.createdBySessionID)?{createdBySessionID:t.createdBySessionID}:{},...n?.length?{tags:n}:{}}}function et(e){if(Ye(e)){if(e.kind===`user`)return{kind:`user`};if(e.kind===`session`&&J(e.sessionID))return{kind:`session`,sessionID:e.sessionID};if(e.kind===`ai_job`&&J(e.jobID))return{kind:`ai_job`,jobID:e.jobID}}}function tt(e){let t=Qe(e,`revision`);if(!Ye(t)||!J(t.id)||!J(t.artifactID)||!Xe(t.number)||!Array.isArray(t.blobs))return;let n=et(t.author);if(!n)return;let r=t.blobs.filter(e=>ae(e)===void 0);return{v:1,id:t.id,artifactID:t.artifactID,number:t.number,blobs:r.map(e=>({hash:e.hash,bytes:e.bytes,mediaType:e.mediaType,...e.path===void 0?{}:{path:e.path}})),author:n,createdAt:Xe(t.createdAt)?t.createdAt:0,...J(t.baseRevisionID)?{baseRevisionID:t.baseRevisionID}:{},...J(t.entry)?{entry:t.entry}:{}}}function nt(e){let t=Ye(e)?e:{};return{items:Array.isArray(t.items)?t.items.flatMap(e=>tt(e)??[]):[],...J(t.cursor)?{cursor:t.cursor}:{}}}function rt(e){return e.kind===`user`?`You`:e.kind===`session`?`Session ${e.sessionID.slice(0,12)}…`:`AI job`}var it=[`text/markdown`,`text/plain`,`text/csv`,`text/html`,`text/css`,`text/javascript`,`application/json`],at=[`image/png`,`image/jpeg`,`image/gif`,`image/webp`,`image/svg+xml`],ot={markdown:{"text/markdown":`markdown`,"text/plain":`markdown`},code:Object.fromEntries(it.map(e=>[e,`code`])),image:Object.fromEntries(at.map(e=>[e,`image`])),table:{"text/csv":`table`,"application/json":`table`},chart:{"application/json":`chart`},dashboard:{"application/json":`dashboard`},file:{...Object.fromEntries(at.map(e=>[e,`image`])),"text/plain":`text`,"text/markdown":`text`}},st={ts:`ts`,tsx:`tsx`,js:`js`,jsx:`jsx`,mjs:`js`,cjs:`js`,py:`python`,go:`go`,rs:`rust`,sh:`bash`,bash:`bash`,json:`json`,css:`css`,html:`html`,htm:`html`,md:`markdown`,yaml:`yaml`,yml:`yaml`,toml:`toml`,sql:`sql`,java:`java`,c:`c`,h:`c`,cpp:`cpp`,rb:`ruby`,swift:`swift`,kt:`kotlin`,diff:`diff`,csv:`csv`,txt:``},ct={"text/javascript":`js`,"text/css":`css`,"application/json":`json`,"text/html":`html`,"text/markdown":`markdown`,"text/csv":`csv`};function lt(e){let t=e.path?.split(`/`).pop()?.split(`.`).slice(1).pop()?.toLowerCase();return t!==void 0&&t in st?st[t]:ct[e.mediaType]??``}function ut(e,t){let n=t.blobs;if(ie.includes(e))return{mode:`isolated`,files:n,...n[0]?{file:dt(t)??n[0]}:{}};if(!n.length)return{mode:`empty`,files:n};let r=ot[e],i=dt(t)??n.find(e=>r[e.mediaType])??n[0],a=r[i.mediaType];if(!a)return{mode:`download`,file:i,files:n,note:`A ${i.mediaType} file can't be shown as ${e===`image`?`an`:`a`} ${e} here.`};let o=a===`image`?q.imageBytes:q.textBytes;return i.bytes>o?{mode:`download`,file:i,files:n,note:`This file is too large to preview (${Math.ceil(i.bytes/1024)} KiB).`}:{mode:a,file:i,files:n,...a===`code`?{lang:lt(i)}:{}}}function dt(e){return e.entry===void 0?void 0:e.blobs.find(t=>t.path===e.entry)}var ft=class extends Error{limit;name=`TooLargeError`;code=`too_large`;constructor(e){super(`A file here is at most ${Math.round(e/1024)} KiB`),this.limit=e}};async function pt(e,t){let n=Number(e.headers.get(`content-length`)??``);if(Number.isFinite(n)&&n>t)throw await e.body?.cancel().catch(()=>{}),new ft(t);if(!e.body)return new Uint8Array;let r=e.body.getReader(),i=[],a=0;for(;;){let{done:e,value:n}=await r.read();if(e)break;if(a+=n.byteLength,a>t)throw await r.cancel().catch(()=>{}),new ft(t);i.push(n)}let o=new Uint8Array(a),s=0;for(let e of i)o.set(e,s),s+=e.byteLength;return o}function mt(e){let t=e&&typeof e==`object`?e:{},n=typeof t.status==`number`?t.status:0,r=typeof t.message==`string`?t.message:``;return t.name===`NetworkError`||n===503?{kind:`offline`,text:`Can't reach the hub right now. Nothing was lost; try again when it's back.`}:t.name===`TooLargeError`||t.code===`too_large`?{kind:`too_large`,text:r||`The file is too large.`}:n===404||n===403?{kind:`not_found`,text:`This artifact doesn't exist or you can't see it.`}:n===401?{kind:`forbidden`,text:`This device isn't signed in to the hub.`}:n===422||t.code===`unsupported`?{kind:`unsupported`,text:`Artifacts aren't supported on this hub yet.`}:n===409||t.code===`conflict`?{kind:`conflict`,text:`The artifact changed since you opened it.`}:n===429||t.code===`rate_limited`?{kind:`rate_limited`,text:r?`Limit reached: ${r}`:`A limit was reached; try again later.`}:n===400?{kind:`invalid`,text:r||`The hub refused the change.`}:{kind:`error`,text:r?`Something went wrong: ${r}`:`Something went wrong (HTTP ${n}).`}}var ht=e=>new TextEncoder().encode(e).byteLength;function gt(e,t){if(e.state!==`active`||t.id!==e.latestRevisionID||ie.includes(e.kind)||t.blobs.length!==1)return!1;let n=t.blobs[0];return it.includes(n.mediaType)&&n.bytes<=q.editBytes}function _t(e,t,n){if(ht(n)>q.editBytes)throw new ft(q.editBytes);return{baseRevisionID:e,upload:[{mediaType:t.mediaType,data:n,encoding:`utf8`,...t.path===void 0?{}:{path:t.path}}]}}var vt=e=>`hub.artifactDraft.v1.${e}`;function yt(e,t){try{let n=e?.getItem(vt(t)),r=n?JSON.parse(n):void 0;return Ye(r)&&r.v===1&&J(r.base)&&typeof r.text==`string`?{v:1,base:r.base,text:r.text}:void 0}catch{return}}function bt(e,t){let n=yt(t.storage,e.artifactID),r=n?n.base===e.baseRevisionID?{status:`editing`,draft:n.text,baseRevisionID:n.base,restored:!0}:{status:`conflict`,draft:n.text,baseRevisionID:n.base,latestRevisionID:e.baseRevisionID,restored:!0}:{status:`editing`,draft:e.original,baseRevisionID:e.baseRevisionID},i=e.original,a,o=e=>{r=e,t.onChange()},s=()=>{try{r.draft===i&&r.baseRevisionID===e.baseRevisionID?t.storage?.removeItem(vt(e.artifactID)):ht(r.draft)<=q.editBytes&&t.storage?.setItem(vt(e.artifactID),JSON.stringify({v:1,base:r.baseRevisionID,text:r.draft}))}catch{}};return{state:()=>r,setDraft(e){o({...r,draft:e,status:r.status===`conflict`?`conflict`:`editing`}),s()},async save(){if(r.status===`saving`||r.status===`conflict`||r.draft===i&&r.baseRevisionID===e.baseRevisionID)return;let n;try{n=_t(r.baseRevisionID,e.file,r.draft)}catch(e){o({...r,status:`error`,error:{kind:`too_large`,text:`${e.message}; shorten the draft to save it.`}});return}let c=`${r.baseRevisionID}\n${r.draft}`,l=a?.sig===c?a.key:t.newKey();a={sig:c,key:l};let u=r;o({...r,status:`saving`});try{let r=await t.revise(e.artifactID,n,l);return i=u.draft,t.storage?.removeItem(vt(e.artifactID)),o({status:`saved`,draft:u.draft,baseRevisionID:r.id}),r}catch(e){let t=mt(e),n=e.details;t.kind===`conflict`?o({...u,status:`conflict`,error:t,...J(n?.latestRevisionID)?{latestRevisionID:n.latestRevisionID}:{}}):o({...u,status:`error`,error:t}),s();return}},rebase(e){let{latestRevisionID:t,error:n,...i}=r;o({...i,status:`editing`,baseRevisionID:e}),s()},discard(){t.storage?.removeItem(vt(e.artifactID)),a=void 0,o({status:`editing`,draft:i,baseRevisionID:e.baseRevisionID})}}}var xt={markdown:`Markdown`,code:`Code`,image:`Image`,table:`Table`,chart:`Chart`,dashboard:`Dashboard`,html:`HTML`,app:`App`,file:`File`};function St(e){let t=[[]];for(let n of e)n.text.split(`
4
4
  `).forEach((e,r)=>{r>0&&t.push([]),e&&t[t.length-1].push(n.kind?{text:e,kind:n.kind}:{text:e})});return t.length>1&&t[t.length-1].length===0&&t.pop(),t}var Ct={ts:`TypeScript`,tsx:`TypeScript (TSX)`,js:`JavaScript`,jsx:`JavaScript (JSX)`,python:`Python`,go:`Go`,rust:`Rust`,bash:`Shell`,json:`JSON`,css:`CSS`,html:`HTML`,markdown:`Markdown`,yaml:`YAML`,toml:`TOML`,sql:`SQL`,java:`Java`,c:`C`,cpp:`C++`,ruby:`Ruby`,swift:`Swift`,kotlin:`Kotlin`,diff:`Diff`,csv:`CSV`};function wt(e,t){return{name:e?.path?.split(`/`).pop()||`Untitled`,language:t?Ct[t]??t.toUpperCase():`Plain text`}}function Tt(e,t){let n=[{label:`Type`,value:xt[e.kind]??e.kind},{label:`Visibility`,value:e.visibility===`workspace`?`Workspace members`:`Private (only you)`}];e.workspaceID&&n.push({label:`Workspace`,value:t.workspaceName??e.workspaceID}),n.push({label:`Created by`,value:e.createdBySessionID?rt({kind:`session`,sessionID:e.createdBySessionID}):`You`}),n.push({label:`Created`,value:t.when(e.createdAt)},{label:`Updated`,value:t.when(e.updatedAt)}),e.state===`archived`&&n.push({label:`State`,value:`Archived (read only)`}),e.tags?.length&&n.push({label:`Tags`,value:e.tags.join(`, `)});let r=Ce(e.metadata);r.length&&n.push({label:`AI actions`,value:r.join(`, `)});for(let[t,r]of Object.entries(e.metadata??{}))t!==`ai-actions`&&n.push({label:t,value:r});return n}var Et={ask:`ask`,edit:`propose-edit`,action:`run-action`};function Dt(e,t){let n=/^\/([a-z]+)(?:\s+([\s\S]*))?$/.exec(e),r=n?Et[n[1]]:void 0;if(!n||!r)return{text:e};let i=n[2]??``;if(r!==`run-action`)return{kind:r,text:i};let a=/^(\S+)\s*([\s\S]*)$/.exec(i);return!a||!t.includes(a[1])?{text:e}:{kind:r,action:a[1],text:a[2]}}var Ot=`hub.artifactAiHandler.v1`;function kt(e,t){try{e?.setItem(Ot,t)}catch{}}function At(e,t){let n=null;try{n=e?.getItem(`hub.artifactAiHandler.v1`)??null}catch{return}return n?t.find(e=>e.key===n):void 0}function jt(e){return[...e].reverse()}var Mt=`hub.artifactAiPanel.v1`,Y={min:280,max:640,default:380,share:.6};function Nt(e,t){if(!Number.isFinite(e))return Y.default;let n=Math.max(Y.min,Math.min(Y.max,Math.floor(t*Y.share)));return Math.min(n,Math.max(Y.min,Math.round(e)))}function Pt(e){try{let t=JSON.parse(e?.getItem(`hub.artifactAiPanel.v1`)??`null`);if(!t||typeof t!=`object`)return{};let{open:n,width:r}=t;return{...typeof n==`boolean`?{open:n}:{},...typeof r==`number`&&Number.isFinite(r)?{width:r}:{}}}catch{return{}}}function Ft(e,t){try{e?.setItem(Mt,JSON.stringify(t))}catch{}}var It=F(`<input type=search class=aai-picker-search aria-label="Search handlers"placeholder=Find… title="Find a handler by @name, title or session ID">`),Lt=F(`<optgroup label="Your sessions">`),Rt=F(`<optgroup label="New session in a workspace repo">`),zt=F(`<span><select aria-label="Handled by"title="Who handles this request"><option value>`),Bt=F(`<option>`),Vt=F(`<button type=button class=aai-recent>Use `);function Ht(){try{return window.localStorage}catch{return}}function Ut(e){let[i,a]=o(``),s=()=>e.value?void 0:At(Ht(),e.handlers),l=c(()=>De(e.handlers,i(),e.value)),d=()=>l().filter(e=>e.kind===`session`),f=()=>l().filter(e=>e.kind===`launch`),p=()=>!!i().trim()&&!l().some(t=>t.key!==e.value);return(()=>{var o=zt(),c=o.firstChild,l=c.firstChild;return v(o,t(r,{get when(){return e.handlers.length>1},get children(){var t=It();return t.$$input=e=>a(e.currentTarget.value),t.addEventListener(`focus`,()=>e.onPick?.()),u(()=>t.value=i()),t}}),c),c.addEventListener(`change`,t=>e.onChange(t.currentTarget.value)),c.addEventListener(`focus`,()=>e.onPick?.()),v(l,()=>p()?`No handler matches the search`:`Choose a session…`),v(c,t(r,{get when(){return d().length},get children(){var r=Lt();return v(r,t(n,{get each(){return d()},children:t=>(()=>{var n=Bt();return v(n,()=>t.label),u(()=>n.selected=t.key===e.value),u(()=>n.value=t.key),n})()})),r}}),null),v(c,t(r,{get when(){return f().length},get children(){var r=Rt();return v(r,t(n,{get each(){return f()},children:t=>(()=>{var n=Bt();return v(n,()=>t.label),u(()=>n.selected=t.key===e.value),u(()=>n.value=t.key),n})()})),r}}),null),v(o,t(r,{get when(){return s()},children:t=>(()=>{var n=Vt();return n.firstChild,n.$$click=()=>e.onChange(t().key),v(n,()=>t().display,null),u(e=>{var r=`Last used on this device: ${t().label}`,i=`Use ${t().display} (last used)`;return r!==e.e&&x(n,`title`,e.e=r),i!==e.t&&x(n,`aria-label`,e.t=i),e},{e:void 0,t:void 0}),n})()}),null),u(()=>M(o,`aai-picker ${e.class??``}`)),u(()=>c.value=e.value),o})()}_([`input`,`click`]);var Wt=`/api/agent/artifacts`,Gt=50,Kt=262144,qt=e=>e.startsWith(`text/`)||e===`application/json`||e===`image/svg+xml`,X=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Jt=t=>new e(502,`The hub answered an unexpected ${t}`);function Yt(e){let t=X(e)&&X(e.artifact)?e.artifact:e;if(!X(t)||typeof t.id!=`string`||typeof t.latestRevisionID!=`string`||typeof t.revision!=`number`)throw Jt(`artifact`);return{id:t.id,title:typeof t.title==`string`?t.title:``,kind:typeof t.kind==`string`?t.kind:`file`,state:typeof t.state==`string`?t.state:`active`,latestRevisionID:t.latestRevisionID,revision:t.revision,...typeof t.workspaceID==`string`?{workspaceID:t.workspaceID}:{},...X(t.metadata)?{metadata:t.metadata}:{}}}var Xt=e=>{let t=xe(X(e)?e.job:void 0);if(!t)throw Jt(`job`);return t},Zt=async(e,t,n={})=>(await A(e,{method:`POST`,json:t,headers:n})).json();async function Qt(){try{let e=await C(`/api/agent/who`),t=X(e)&&Array.isArray(e.sessions)?e.sessions:[];return new Map(t.flatMap(e=>X(e)&&typeof e.sessionID==`string`&&typeof e.name==`string`&&e.name?[[e.sessionID,e.name]]:[]))}catch{return new Map}}function $t(e){let t=e=>`${Wt}/${T(e)}/jobs`,n=(e,n,r=``)=>`${t(e)}/${T(n)}${r}`;return{artifact:async e=>Yt(await C(`${Wt}/${T(e)}`)),async revisionNumbers(e){let t=await C(`${Wt}/${T(e)}/revisions?limit=200`),n=X(t)&&Array.isArray(t.items)?t.items:[];return new Map(n.flatMap(e=>X(e)&&typeof e.id==`string`&&typeof e.number==`number`?[[e.id,e.number]]:[]))},jobs:async(e,n)=>Se(await C(`${t(e)}?limit=${Gt}${n?`&cursor=${T(n)}`:``}`)),job:async(e,t)=>Xt(await C(n(e,t))),create:async(e,n,r)=>Xt(await Zt(t(e),n,{"idempotency-key":r})),cancel:async(e,t,r)=>Xt(await Zt(n(e,t,`/cancel`),{expectedRevision:r})),async apply(e,t,r){let i=await Zt(n(e,t,`/apply`),{expectedRevision:r}),a=X(i)&&X(i.revision)?i.revision:{};if(typeof a.id!=`string`)throw Jt(`revision`);return{job:Xt(i),revisionID:a.id,...typeof a.number==`number`?{revisionNumber:a.number}:{}}},proposal:async(e,t)=>{let r=await C(n(e,t,`/proposal`));if(!X(r)||!Array.isArray(r.files))throw Jt(`proposal`);return{...r,keep:Array.isArray(r.keep)?r.keep:[],truncated:r.truncated===!0}},async revisionFiles(e,t){let n=await C(`${Wt}/${T(e)}/revisions/${T(t)}`),r=X(n)&&X(n.revision)&&Array.isArray(n.revision.blobs)?n.revision.blobs:[],i=Kt,a=[];for(let n of r){if(!X(n)||typeof n.hash!=`string`||typeof n.mediaType!=`string`||typeof n.bytes!=`number`)continue;let r={...typeof n.path==`string`?{path:n.path}:{},hash:n.hash,mediaType:n.mediaType,bytes:n.bytes};qt(n.mediaType)?n.bytes>i?a.push({...r,omitted:`budget`}):(i-=n.bytes,a.push({...r,text:await(await A(`${Wt}/${T(e)}/revisions/${T(t)}/blobs/${T(n.hash)}`)).text()})):a.push({...r,omitted:`binary`})}return a},async handlers(t){let[n,r]=await Promise.all([(async()=>{if(!t.workspaceID)return[];try{let e=await C(`/api/agent/workspaces/${T(t.workspaceID)}/bindings`);return(X(e)&&Array.isArray(e.bindings)?e.bindings:[]).flatMap(e=>X(e)&&typeof e.id==`string`&&typeof e.machineID==`string`&&typeof e.repo==`string`?[{id:e.id,machineID:e.machineID,repo:e.repo,...typeof e.label==`string`?{label:e.label}:{}}]:[])}catch{return[]}})(),Qt()]);return Ee({sessions:e.sessions().map(e=>r.get(e.id)?{...e,name:r.get(e.id)}:e),bindings:n,machines:e.machines()})}}}var en=F(`<span>an unknown revision`),tn=F(`<button type=button class=aai-link>`),nn=F(`<span>`),rn=F(`<strong class=aai-older>You are viewing an older revision.`),an=F(`<p class=aai-sub>Requests use the latest revision (<!>).`),on=F(`<p class=aai-note role=status>Loading AI requests…`),sn=F(`<button type=button class="btn small aai-older-btn">Load older requests`),cn=F(`<ol class=aai-jobs aria-label="AI request history">`),ln=F(`<p class=aai-note>Could not list handlers: `),un=F(`<p class=aai-note role=status>`),dn=F(`<div class=aai-confirm role=group aria-label="Confirm action"><p>Run <strong></strong> on <!>, handled by <strong></strong>? It gets a read-only copy of this revision; its answer shows here and nothing is changed.</p><div class=aai-actions><button type=button class="btn primary small">Confirm and run</button><button type=button class="btn small">Back`),fn=F(`<select class=aai-action aria-label="Declared action"><option value>Choose an action…`),pn=F(`<form class=aai-composer aria-label="New AI request"><div class=aai-box><div class=aai-box-top><div class=aai-seg role=radiogroup aria-label="Request type"></div></div><textarea class=aai-input rows=2></textarea><div class=aai-box-foot><span class=aai-hint>Ctrl+Enter</span><button type=submit class=aai-send><span class=aai-send-text>`),mn=F(`<section class=aai><header class=aai-head><span class=aai-mark aria-hidden=true></span><div class=aai-head-text><h2 class=aai-title>AI requests</h2></div></header><div class=aai-scroll>`),hn=F(`<button type=button class="btn small">Retry`),gn=F(`<p class=aai-note> `),_n=F(`<kbd>/action `),vn=F(`<div class=aai-empty><p><strong>Ask about this artifact, or describe an edit.</strong></p><p>The session you choose gets a read-only copy. Nothing changes until you accept an edit.</p><p class=aai-tips>Tip: start with <kbd>/ask</kbd>, <kbd>/edit</kbd>.`),yn=F(`<p class="aai-note err"role=alert>`),bn=F(`<label class=aai-seg-item><input type=radio>`),xn=F(`<option>`),Sn=F(`<span class=aai-dot aria-hidden=true>`),Cn=F(`<div class=aai-answer>`),wn=F(`<p class="aai-note warn"role=status>The artifact changed since this edit was proposed: accepting it will be refused. Request it again on the latest revision.`),Tn=F(`<button type=button class="btn primary small">`),En=F(`<button type=button class="btn small">Request again on the latest revision`),Dn=F(`<button type=button class="btn small">`),On=F(`<button type=button class="btn small">Continue in side chat`),kn=F(`<li class=aai-job><div class=aai-q><div class=aai-q-meta><span class=aai-badge></span><span class=aai-meta> · </span></div><p class=aai-instruction></p></div><div class=aai-a><p class="aai-meta aai-prov">On <!> · handled by </p><p role=status aria-live=polite></p><div class=aai-actions>`),An=F(`<div class=aai-proposal>`),jn=F(`<button type=button class="btn small">Review proposed edit (<!> file<!>)`),Mn=F(`<p class=aai-note role=status>Loading the proposal…`),Nn=F(`<p class="aai-note err">Could not load the proposal: `),Pn=F(`<ul class=aai-files aria-label="Proposed files">`),Fn=F(`<p class=aai-note>Some files are too large to show here.`),In=F(`<li><span class=aai-file-change></span> <code>`),Ln=F(`<p class=aai-meta><code>`),Rn=F(`<table class=diff><tbody>`),zn=F(`<div class=aai-diff>`),Bn=F(`<p class=aai-note>`),Vn=F(`<tr><td class=ln></td><td class=ln></td><td class=code-line><span class=sign>`),Hn=F(`<p>`),Un={ask:`Ask`,"propose-edit":`Edit`,"run-action":`Action`},Wn={ask:`Ask a question (answer only)`,"propose-edit":`Propose an edit you review before it applies`,"run-action":`Run one of the artifact's declared actions`},Gn=e=>e.kind===`ask`?`Question`:e.kind===`propose-edit`?`Edit`:`Action: ${e.action??`?`}`;function Kn(){return $t({sessions:()=>{let e=new Map;for(let t of ee.machines??[])for(let n of t.processes)for(let t of n.sessions)e.set(t.id,n.harness||`opencode`);return z().filter(e=>!e.hidden&&!e.archived).map(t=>({id:t.id,title:t.title,machineName:t.machineName,online:t.machineOnline,...e.get(t.id)?{harness:e.get(t.id)}:{}}))},machines:()=>(ee.machines??[]).map(e=>({id:e.id,name:e.name,online:!!e.online}))})}function qn(e){let[i,p]=o(),h=!e.controller,_=e.controller?.ai??He({source:e.source??Kn(),artifactID:e.artifactID,onState:p});m(()=>h&&void _.load()),f(()=>h&&_.dispose());let y=()=>(h?i():e.controller.state())??_.state(),b=()=>y().revisionNumbers,S=()=>y().artifact?.latestRevisionID,[C,w]=o(`ask`),[T,D]=o(``),[k,A]=o(``),[j,M]=o(``),[N,P]=o(!1),F,I,L,R=c(()=>y().handlers.find(e=>e.key===k())),z=()=>C()===`ask`?`Ask`:C()===`propose-edit`?`Propose edit`:j()?`Run ${j()}…`:`Run action…`,ee=c(()=>jt(y().jobs));s(a(()=>[y().jobs.length,e.tailCount??0],()=>queueMicrotask(()=>L&&(L.scrollTop=L.scrollHeight))));async function te(){let e=k(),t=await _.request({kind:C(),instruction:T(),...e?{handlerKey:e}:{},...C()===`run-action`&&j()?{action:j()}:{}});P(!1),t&&(D(``),kt(Ht(),e))}function ne(e){e?.preventDefault(),!y().sending&&(C()===`run-action`&&j()&&k()?(P(!0),queueMicrotask(()=>F?.focus())):te())}function re(e){let t=Dt(e,y().actions);t.kind&&/\s$/.test(e)?(w(t.kind),t.action&&M(t.action),P(!1),D(t.text),I&&(I.value=t.text)):D(e)}async function ie(t){if(await _.accept(t.id)){let t=S();t&&e.onRevised?.(t)}}let ae=(n,i=``)=>t(r,{when:n,get fallback(){return(()=>{var e=en(),t=e.firstChild;return v(e,i,t),e})()},children:n=>t(r,{get when(){return e.onShowRevision},get fallback(){return(()=>{var e=nn();return v(e,()=>i+K(n(),b())),e})()},get children(){var t=tn();return t.$$click=()=>e.onShowRevision?.(n()),v(t,()=>i+K(n(),b())),t}})});return(()=>{var i=mn(),a=i.firstChild,o=a.firstChild,s=o.nextSibling,c=s.firstChild,f=a.nextSibling;v(o,t(O,{name:`spark`})),v(s,t(r,{get when(){return y().status===`ready`},get children(){var n=an(),i=n.firstChild.nextSibling;return i.nextSibling,v(n,()=>ae(S()),i),v(n,t(r,{get when(){return E(()=>!!(e.revisionID&&S()))()&&e.revisionID!==S()},get children(){return[` `,rn()]}}),null),n}}),null),v(a,()=>e.headerActions,null);var p=L;return typeof p==`function`?g(p,f):L=f,v(f,t(l,{get children(){return[t(d,{get when(){return y().status===`loading`},get children(){return on()}}),t(d,{get when(){return E(()=>y().status===`error`)()&&y().error},children:e=>(()=>{var n=gn(),i=n.firstChild;return v(n,()=>e().text,i),v(n,t(r,{get when(){return e().kind===`error`||e().kind===`offline`},get children(){var e=hn();return e.$$click=()=>void _.load(),e}}),null),u(t=>{var r=e().kind===`error`,i=e().kind===`error`?`alert`:`status`;return r!==t.e&&n.classList.toggle(`err`,t.e=r),i!==t.t&&x(n,`role`,t.t=i),t},{e:void 0,t:void 0}),n})()}),t(d,{get when(){return y().status===`ready`},get children(){return[t(r,{get when(){return y().more},get children(){var e=sn();return e.$$click=()=>void _.more(),u(t=>{var n=y().loadingMore,r=y().loadingMore;return n!==t.e&&(e.disabled=t.e=n),r!==t.t&&x(e,`aria-busy`,t.t=r),t},{e:void 0,t:void 0}),e}}),t(r,{get when(){return y().jobs.length},get fallback(){return(()=>{var e=vn(),n=e.firstChild.nextSibling.nextSibling,i=n.firstChild.nextSibling.nextSibling.nextSibling.nextSibling;return v(n,t(r,{get when(){return y().actions.length},get children(){return[` `,`or `,(()=>{var e=_n();return e.firstChild,v(e,()=>y().actions[0],null),e})()]}}),i),e})()},get children(){var r=cn();return v(r,t(n,{get each(){return ee()},children:n=>t(Jn,{job:n,get state(){return y()},revisionRef:ae,onCancel:()=>void _.cancel(n.id),onReview:()=>void _.review(n.id),onAccept:()=>void ie(n),onRerequest:()=>void _.rerequest(n.id),get onContinue(){return e.onContinueInSideChat}})})),r}})]}})]}}),null),v(f,()=>e.threadTail,null),v(i,t(r,{get when(){return y().status===`ready`},get children(){var i=pn(),a=i.firstChild,o=a.firstChild,s=o.firstChild,c=o.nextSibling,l=c.nextSibling,d=l.firstChild,f=d.nextSibling,p=f.firstChild;i.addEventListener(`submit`,ne),v(i,t(r,{get when(){return y().sendError},children:e=>(()=>{var t=yn();return v(t,()=>e().text),t})()}),a),v(i,t(r,{get when(){return y().handlersError},get children(){var e=ln();return e.firstChild,v(e,()=>y().handlersError,null),e}}),a),v(i,t(r,{get when(){return E(()=>!!R())()&&!R().online},get children(){var e=un();return v(e,()=>R().kind===`session`?`That session is offline: the request is queued and delivered when it reconnects.`:`That machine is offline: the new session starts when it's back.`),e}}),a),v(i,t(r,{get when(){return N()},get children(){var e=dn(),t=e.firstChild,n=t.firstChild.nextSibling,r=n.nextSibling.nextSibling,i=r.nextSibling.nextSibling,a=t.nextSibling.firstChild,o=a.nextSibling;e.$$keydown=e=>{e.key===`Escape`&&(e.preventDefault(),P(!1),I?.focus())},v(n,j),v(t,()=>K(S()??``,b()),r),v(i,()=>R()?.display),a.$$click=()=>void te();var s=F;return typeof s==`function`?g(s,a):F=a,o.$$click=()=>{P(!1),I?.focus()},u(()=>a.disabled=y().sending),e}}),a),v(s,t(n,{each:[`ask`,`propose-edit`,`run-action`],children:t=>{let n=()=>t===`run-action`&&y().actions.length===0;return(()=>{var r=bn(),i=r.firstChild;return i.addEventListener(`change`,()=>{w(t),P(!1)}),i.value=t,v(r,()=>Un[t],null),u(a=>{var o=C()===t,s=!!n(),c=n()?`This artifact declares no AI actions`:Wn[t],l=`aai-mode-${e.artifactID}`,u=n();return o!==a.e&&r.classList.toggle(`on`,a.e=o),s!==a.t&&r.classList.toggle(`disabled`,a.t=s),c!==a.a&&x(r,`title`,a.a=c),l!==a.o&&x(i,`name`,a.o=l),u!==a.i&&(i.disabled=a.i=u),a},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),u(()=>i.checked=C()===t),r})()}})),v(o,t(r,{get when(){return C()===`run-action`},get children(){var e=fn();return e.firstChild,e.addEventListener(`change`,e=>(M(e.currentTarget.value),P(!1))),v(e,t(n,{get each(){return y().actions},children:e=>(()=>{var t=xn();return t.value=e,v(t,e),t})()}),null),u(()=>e.value=j()),e}}),null),c.$$keydown=e=>{e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&ne(e)},c.$$input=e=>re(e.currentTarget.value);var m=I;return typeof m==`function`?g(m,c):I=c,v(l,t(Ut,{get handlers(){return y().handlers},get value(){return k()},onPick:()=>void _.reloadHandlers(),onChange:e=>(A(e),P(!1))}),d),v(f,t(O,{name:`send`}),p),v(p,(()=>{var e=E(()=>!!y().sending);return()=>e()?`Sending…`:z()})()),u(e=>{var t=C()===`ask`?`Question`:C()===`propose-edit`?`Describe the edit`:`Notes for the action (optional)`,n=C()===`ask`?`Ask about this artifact…`:C()===`propose-edit`?`Describe the edit, e.g. Add a rollback section`:`Notes for the action (optional)`,r=y().sending||N(),i=y().sending,a=y().sending?`Sending…`:z(),o=`${z()} (Ctrl+Enter)`;return t!==e.e&&x(c,`aria-label`,e.e=t),n!==e.t&&x(c,`placeholder`,e.t=n),r!==e.a&&(f.disabled=e.a=r),i!==e.o&&x(f,`aria-busy`,e.o=i),a!==e.i&&x(f,`aria-label`,e.i=a),o!==e.n&&x(f,`title`,e.n=o),e},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),u(()=>c.value=T()),i}}),null),u(t=>{var n=`aai-h-${e.artifactID}`,r=`aai-h-${e.artifactID}`;return n!==t.e&&x(i,`aria-labelledby`,t.e=n),r!==t.t&&x(c,`id`,t.t=r),t},{e:void 0,t:void 0}),i})()}function Jn(e){let i=()=>e.job,a=c(()=>Oe(e.state.handlers)),o=e=>a().get(e)??z().find(t=>t.id===e)?.title,s=()=>we(i(),o),f=()=>e.state.pending[i().id],p=()=>e.state.notices[i().id],m=()=>e.state.reviews[i().id],h=()=>e.state.artifact?.latestRevisionID,g=()=>i().kind===`propose-edit`&&i().state===`succeeded`&&i().proposal?.state===`pending`,_=()=>g()&&h()!==void 0&&i().baseRevisionID!==h(),y=()=>i().kind===`propose-edit`&&(i().proposal?.state===`conflict`||_()||p()?.stale);return(()=>{var a=kn(),c=a.firstChild,h=c.firstChild,b=h.firstChild,S=b.nextSibling,C=S.firstChild,T=h.nextSibling,D=c.nextSibling,O=D.firstChild,k=O.firstChild.nextSibling;k.nextSibling;var A=O.nextSibling,N=A.nextSibling;return v(b,()=>Gn(i())),v(S,()=>Te(i().by),C),v(S,()=>j(i().createdAt),null),v(T,()=>i().instruction),v(O,()=>e.revisionRef(i().baseRevisionID),k),v(O,()=>G(i().handler,o),null),v(O,t(r,{get when(){return i().proposal?.appliedRevisionID},children:t=>[` · became `,E(()=>e.revisionRef(t()))]}),null),v(A,t(r,{get when(){return s().active},get children(){return Sn()}}),null),v(A,()=>s().text,null),v(D,t(r,{get when(){return i().answer},get children(){var t=Cn();return v(t,()=>i().answer),u(()=>x(t,`aria-label`,`Answer from ${G(i().handler,o)} on ${K(i().baseRevisionID,e.state.revisionNumbers)}`)),t}}),N),v(D,t(r,{get when(){return E(()=>!!(i().proposal&&i().proposal.state!==`applied`))()&&i().proposal},children:i=>(()=>{var a=An();return v(a,t(r,{get when(){return m()},get fallback(){return(()=>{var t=jn(),n=t.firstChild.nextSibling,r=n.nextSibling.nextSibling;return r.nextSibling,w(t,`click`,e.onReview,!0),v(t,()=>i().files.length,n),v(t,()=>i().files.length===1?``:`s`,r),v(t,(()=>{var e=E(()=>!!i().keep?.length);return()=>e()?`, ${i().keep.length} kept`:``})(),r),t})()},children:e=>t(l,{get children(){return[t(d,{get when(){return e().status===`loading`},get children(){return Mn()}}),t(d,{get when(){return E(()=>e().status===`error`)()&&e()},children:e=>(()=>{var t=Nn();return t.firstChild,v(t,()=>e().text,null),t})()}),t(d,{get when(){return E(()=>e().status===`ready`)()&&e()},children:e=>{let i=()=>e();return[t(r,{get when(){return i().changes.some(e=>e.path!==void 0)},get children(){var e=Pn();return v(e,t(n,{get each(){return i().changes},children:e=>(()=>{var t=In(),n=t.firstChild,r=n.nextSibling.nextSibling;return v(n,()=>e.change),v(r,()=>e.path),u(()=>M(t,`aai-file ${e.change}`)),t})()})),e}}),t(n,{get each(){return i().diffs},children:e=>(()=>{var i=zn();return v(i,t(r,{get when(){return e.path},get children(){var t=Ln(),n=t.firstChild;return v(n,()=>e.path),t}}),null),v(i,t(r,{get when(){return e.lines},get fallback(){return(()=>{var t=Bn();return v(t,()=>e.note),t})()},get children(){var r=Rn(),i=r.firstChild;return v(i,t(n,{get each(){return e.lines},children:e=>(()=>{var t=Vn(),n=t.firstChild,r=n.nextSibling,i=r.nextSibling,a=i.firstChild;return v(n,()=>e.oldNo??``),v(r,()=>e.newNo??``),v(a,(()=>{var t=E(()=>e.type===`add`);return()=>t()?`+`:e.type===`del`?`−`:` `})()),v(i,()=>e.text,null),u(()=>M(t,e.type)),t})()})),u(()=>x(r,`aria-label`,`Changes${e.path?` to ${e.path}`:``}`)),r}}),null),i})()}),t(r,{get when(){return i().truncated},get children(){return Fn()}})]}})]}})})),a})()}),N),v(D,t(r,{get when(){return E(()=>!!_())()&&!p()},get children(){return wn()}}),N),v(D,t(r,{get when(){return p()},children:e=>(()=>{var t=Hn();return v(t,()=>e().text),u(n=>{var r=`aai-note ${e().kind===`info`?`ok`:e().kind===`conflict`?`warn`:`err`}`,i=e().kind===`info`?`status`:`alert`;return r!==n.e&&M(t,n.e=r),i!==n.t&&x(t,`role`,n.t=i),n},{e:void 0,t:void 0}),t})()}),N),v(N,t(r,{get when(){return g()},get children(){var t=Tn();return w(t,`click`,e.onAccept,!0),v(t,()=>f()===`apply`?`Accepting…`:`Accept as new revision`),u(e=>{var n=!!f(),r=f()===`apply`;return n!==e.e&&(t.disabled=e.e=n),r!==e.t&&x(t,`aria-busy`,e.t=r),e},{e:void 0,t:void 0}),t}}),null),v(N,t(r,{get when(){return y()},get children(){var t=En();return w(t,`click`,e.onRerequest,!0),u(()=>t.disabled=!!f()||e.state.sending),t}}),null),v(N,t(r,{get when(){return W(i())},get children(){var t=Dn();return w(t,`click`,e.onCancel,!0),v(t,()=>f()===`cancel`?`Cancelling…`:`Cancel`),u(e=>{var n=!!f(),r=f()===`cancel`;return n!==e.e&&(t.disabled=e.e=n),r!==e.t&&x(t,`aria-busy`,e.t=r),e},{e:void 0,t:void 0}),t}}),null),v(N,t(r,{get when(){return E(()=>!!e.onContinue)()&&i().handler.sessionID},get children(){var t=On();return t.$$click=()=>e.onContinue?.(i()),t}}),null),u(e=>{var t=i().id,n=i().state,r=`${Gn(i())}: ${i().instruction}`,o=`aai-status ${s().tone}`;return t!==e.e&&x(a,`data-job`,e.e=t),n!==e.t&&x(a,`data-state`,e.t=n),r!==e.a&&x(a,`aria-label`,e.a=r),o!==e.o&&M(A,e.o=o),e},{e:void 0,t:void 0,a:void 0,o:void 0}),a})()}_([`click`,`keydown`,`input`]);var Yn={rows:1e3,columns:50,cellChars:2e3};function Xn(e){let t=e.length>Yn.columns,n=e.slice(0,Yn.columns).map(e=>i(e)),r=[];function i(e){return typeof e==`string`&&e.length>Yn.cellChars?(t=!0,e.slice(0,Yn.cellChars)):e}return{add(e,a){return r.length>=Yn.rows?(t=!0,!1):(r.push(n.map((t,n)=>i(n<e.length?e[n]:a))),!0)},done:()=>({columns:n,rows:r,truncated:t})}}function Zn(e){let t=[],n=[],r=``,i=!1,a=0,o=()=>{n.push(r),r=``,(n.length!==1||n[0]!==``)&&t.push(n),n=[]};for(;a<e.length&&t.length<=Yn.rows+1;){let t=e[a];i?t===`"`?e[a+1]===`"`?(r+=`"`,a++):i=!1:r+=t:t===`"`&&r===``?i=!0:t===`,`?(n.push(r),r=``):t===`
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ArtifactPage-mNzjlP_U.js","assets/ui-Dh1-78Cl.js","assets/index-lIOfSYck.js","assets/pane-layout-DWXfDU-1.js","assets/plural-Bspvoqfq.js","assets/index-BabrNDB3.css","assets/ArtifactWorkbench-NoFC5Sb2.js","assets/source-CDU04kYw.js","assets/ArtifactWorkbench-9eTj1CeW.css"])))=>i.map(i=>d[i]);
2
- import{At as e,Bt as t,C as n,Ct as r,Et as i,Lt as a,Mt as o,Nt as s,Ot as c,Pt as l,S as u,Tt as d,Wt as f,dt as p,ft as m,ht as h,lt as g,pt as _,u as v,yt as y}from"./ui-Dh1-78Cl.js";import{F as b,I as x,L as S,j as C,t as w,z as T}from"./index-lIOfSYck.js";import{a as E,c as D,i as O,l as k,n as A,o as j,r as M,s as N,t as P}from"./source-CDU04kYw.js";var F=y(`<p class="lib-intro muted">Everything your sessions made, across workspaces.`),I=y(`<div class=lib-filters><label><span>Workspace</span><select aria-label=Workspace><option value>All workspaces</option><option value=none>No workspace</option></select></label><label><span>Type</span><select aria-label=Type><option value>All types`),L=y(`<p class=muted role=status>Loading artifacts…`),R=y(`<option>`),z=y(`<p class="lib-note err"role=alert> <button type=button class="btn small">Retry`),B=y(`<p class=lib-note>`),V=y(`<ul class=lib-list aria-label=Artifacts>`),H=y(`<p class="lib-note err"role=alert>`),U=y(`<button type=button class="btn lib-more">Load more`),W=y(`<p class=lib-desc>`),G=y(`<li class=lib-row><a class=lib-title></a><button type=button class="btn small lib-pane">Open in pane</button><span class=lib-meta><span class=lib-kind></span><span></span><span>`),K=t(()=>C(()=>import(`./ArtifactPage-mNzjlP_U.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8]))),q={markdown:`Markdown`,code:`Code`,image:`Image`,table:`Table`,chart:`Chart`,dashboard:`Dashboard`,html:`HTML`,app:`App`,file:`File`};function J(t){return e(i,{get when(){return t.rest[0]},keyed:!0,get fallback(){return e(X,{})},children:t=>e(K,{id:t})})}var Y=(e,t)=>e.workspace===t.workspace&&e.type===t.type;function X(){let t=s(()=>N(u().search),void 0,{equals:Y}),[p,g]=a({status:`loading`}),v=O(P,g);o(()=>v.load(t()));let[y,b]=a(new Map);f(()=>void A().then(e=>b(new Map(e.map(e=>[e.id,e.title])))));let x=e=>n(`/artifacts${j({...t(),...e})}`),S=s(()=>{let e=new Set(y().keys()),n=p();if(n.status===`ready`)for(let t of n.items)t.workspaceID&&e.add(t.workspaceID);let r=t().workspace;return r&&r!==`none`&&e.add(r),[...e].map(e=>({id:e,label:D(e,y())}))}),C=()=>{let e=p();return e.status===`error`&&e.error.kind!==`error`};return e(w,{title:`Artifacts`,get children(){return[F(),e(i,{get when(){return!C()},get children(){var n=I(),i=n.firstChild,a=i.firstChild.nextSibling,o=a.firstChild,s=o.nextSibling,c=i.nextSibling.firstChild.nextSibling,u=c.firstChild;return a.addEventListener(`change`,e=>x({workspace:e.currentTarget.value})),m(a,e(r,{get each(){return S()},children:e=>(()=>{var n=R();return m(n,()=>e.label),l(()=>n.selected=t().workspace===e.id),l(()=>n.value=e.id),n})()}),null),c.addEventListener(`change`,e=>x({type:e.currentTarget.value})),m(c,e(r,{get each(){return[...k]},children:e=>(()=>{var n=R();return n.value=e,m(n,()=>q[e]),l(()=>n.selected=t().type===e),n})()}),null),l(e=>{var n=t().workspace===``,r=t().workspace===`none`,i=t().type===``;return n!==e.e&&(o.selected=e.e=n),r!==e.t&&(s.selected=e.t=r),i!==e.a&&(u.selected=e.a=i),e},{e:void 0,t:void 0,a:void 0}),n}}),e(c,{get children(){return[e(d,{get when(){return p().status===`loading`},get children(){return L()}}),e(d,{get when(){return _(()=>p().status===`error`)()&&p()},children:t=>{let n=()=>t().error;return e(i,{get when(){return n().kind===`error`},get fallback(){return(()=>{var e=B();return m(e,()=>n().text),e})()},get children(){var e=z(),t=e.firstChild,r=t.nextSibling;return m(e,()=>n().text,t),r.$$click=()=>v.reload(),e}})}}),e(d,{get when(){return _(()=>p().status===`ready`)()&&p()},children:n=>{let a=()=>n();return[e(i,{get when(){return a().items.length},get fallback(){return(()=>{var e=B();return m(e,()=>E(t(),a().more)),e})()},get children(){var t=V();return m(t,e(r,{get each(){return a().items},children:t=>e(Q,{item:t,get names(){return y()}})})),t}}),e(i,{get when(){return a().moreError},get children(){var e=H();return m(e,()=>a().moreError),e}}),e(i,{get when(){return a().more},get children(){var e=U();return e.$$click=()=>v.more(),l(t=>{var n=a().loadingMore,r=a().loadingMore;return n!==t.e&&(e.disabled=t.e=n),r!==t.t&&h(e,`aria-busy`,t.t=r),t},{e:void 0,t:void 0}),e}})]}})]}})]}})}function Z(e,t){return e.workspaceID?D(e.workspaceID,t):`Private`}function Q(t){let n=()=>t.item;return(()=>{var r=G(),a=r.firstChild,o=a.nextSibling,s=o.nextSibling.firstChild,c=s.nextSibling,u=c.nextSibling;return g(r,`dragend`,b),r.addEventListener(`dragstart`,e=>x(e,{target:{artifactID:n().id},label:n().title||`Untitled`})),m(a,()=>n().title||`Untitled`),o.$$click=()=>T(n().id),m(s,()=>q[n().kind]),m(c,()=>Z(n(),t.names)),m(u,()=>v(n().updatedAt)),m(r,e(i,{get when(){return n().description},get children(){var e=W();return m(e,()=>n().description),e}}),null),l(e=>{var t=n().id,i=!S(),s=M(n().id),c=`Open ${n().title||`Untitled`} in a pane`;return t!==e.e&&h(r,`data-artifact`,e.e=t),i!==e.t&&h(r,`draggable`,e.t=i),s!==e.a&&h(a,`href`,e.a=s),c!==e.o&&h(o,`aria-label`,e.o=c),e},{e:void 0,t:void 0,a:void 0,o:void 0}),r})()}p([`click`]);export{J as default};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ArtifactPage-R0ZTpHca.js","assets/ui-Dh1-78Cl.js","assets/index-g4V9mfSr.js","assets/pane-layout-DWXfDU-1.js","assets/plural-Bspvoqfq.js","assets/index-BabrNDB3.css","assets/ArtifactWorkbench-sP2mZccC.js","assets/source-CDU04kYw.js","assets/ArtifactWorkbench-9eTj1CeW.css"])))=>i.map(i=>d[i]);
2
+ import{At as e,Bt as t,C as n,Ct as r,Et as i,Lt as a,Mt as o,Nt as s,Ot as c,Pt as l,S as u,Tt as d,Wt as f,dt as p,ft as m,ht as h,lt as g,pt as _,u as v,yt as y}from"./ui-Dh1-78Cl.js";import{F as b,I as x,L as S,j as C,t as w,z as T}from"./index-g4V9mfSr.js";import{a as E,c as D,i as O,l as k,n as A,o as j,r as M,s as N,t as P}from"./source-CDU04kYw.js";var F=y(`<p class="lib-intro muted">Everything your sessions made, across workspaces.`),I=y(`<div class=lib-filters><label><span>Workspace</span><select aria-label=Workspace><option value>All workspaces</option><option value=none>No workspace</option></select></label><label><span>Type</span><select aria-label=Type><option value>All types`),L=y(`<p class=muted role=status>Loading artifacts…`),R=y(`<option>`),z=y(`<p class="lib-note err"role=alert> <button type=button class="btn small">Retry`),B=y(`<p class=lib-note>`),V=y(`<ul class=lib-list aria-label=Artifacts>`),H=y(`<p class="lib-note err"role=alert>`),U=y(`<button type=button class="btn lib-more">Load more`),W=y(`<p class=lib-desc>`),G=y(`<li class=lib-row><a class=lib-title></a><button type=button class="btn small lib-pane">Open in pane</button><span class=lib-meta><span class=lib-kind></span><span></span><span>`),K=t(()=>C(()=>import(`./ArtifactPage-R0ZTpHca.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8]))),q={markdown:`Markdown`,code:`Code`,image:`Image`,table:`Table`,chart:`Chart`,dashboard:`Dashboard`,html:`HTML`,app:`App`,file:`File`};function J(t){return e(i,{get when(){return t.rest[0]},keyed:!0,get fallback(){return e(X,{})},children:t=>e(K,{id:t})})}var Y=(e,t)=>e.workspace===t.workspace&&e.type===t.type;function X(){let t=s(()=>N(u().search),void 0,{equals:Y}),[p,g]=a({status:`loading`}),v=O(P,g);o(()=>v.load(t()));let[y,b]=a(new Map);f(()=>void A().then(e=>b(new Map(e.map(e=>[e.id,e.title])))));let x=e=>n(`/artifacts${j({...t(),...e})}`),S=s(()=>{let e=new Set(y().keys()),n=p();if(n.status===`ready`)for(let t of n.items)t.workspaceID&&e.add(t.workspaceID);let r=t().workspace;return r&&r!==`none`&&e.add(r),[...e].map(e=>({id:e,label:D(e,y())}))}),C=()=>{let e=p();return e.status===`error`&&e.error.kind!==`error`};return e(w,{title:`Artifacts`,get children(){return[F(),e(i,{get when(){return!C()},get children(){var n=I(),i=n.firstChild,a=i.firstChild.nextSibling,o=a.firstChild,s=o.nextSibling,c=i.nextSibling.firstChild.nextSibling,u=c.firstChild;return a.addEventListener(`change`,e=>x({workspace:e.currentTarget.value})),m(a,e(r,{get each(){return S()},children:e=>(()=>{var n=R();return m(n,()=>e.label),l(()=>n.selected=t().workspace===e.id),l(()=>n.value=e.id),n})()}),null),c.addEventListener(`change`,e=>x({type:e.currentTarget.value})),m(c,e(r,{get each(){return[...k]},children:e=>(()=>{var n=R();return n.value=e,m(n,()=>q[e]),l(()=>n.selected=t().type===e),n})()}),null),l(e=>{var n=t().workspace===``,r=t().workspace===`none`,i=t().type===``;return n!==e.e&&(o.selected=e.e=n),r!==e.t&&(s.selected=e.t=r),i!==e.a&&(u.selected=e.a=i),e},{e:void 0,t:void 0,a:void 0}),n}}),e(c,{get children(){return[e(d,{get when(){return p().status===`loading`},get children(){return L()}}),e(d,{get when(){return _(()=>p().status===`error`)()&&p()},children:t=>{let n=()=>t().error;return e(i,{get when(){return n().kind===`error`},get fallback(){return(()=>{var e=B();return m(e,()=>n().text),e})()},get children(){var e=z(),t=e.firstChild,r=t.nextSibling;return m(e,()=>n().text,t),r.$$click=()=>v.reload(),e}})}}),e(d,{get when(){return _(()=>p().status===`ready`)()&&p()},children:n=>{let a=()=>n();return[e(i,{get when(){return a().items.length},get fallback(){return(()=>{var e=B();return m(e,()=>E(t(),a().more)),e})()},get children(){var t=V();return m(t,e(r,{get each(){return a().items},children:t=>e(Q,{item:t,get names(){return y()}})})),t}}),e(i,{get when(){return a().moreError},get children(){var e=H();return m(e,()=>a().moreError),e}}),e(i,{get when(){return a().more},get children(){var e=U();return e.$$click=()=>v.more(),l(t=>{var n=a().loadingMore,r=a().loadingMore;return n!==t.e&&(e.disabled=t.e=n),r!==t.t&&h(e,`aria-busy`,t.t=r),t},{e:void 0,t:void 0}),e}})]}})]}})]}})}function Z(e,t){return e.workspaceID?D(e.workspaceID,t):`Private`}function Q(t){let n=()=>t.item;return(()=>{var r=G(),a=r.firstChild,o=a.nextSibling,s=o.nextSibling.firstChild,c=s.nextSibling,u=c.nextSibling;return g(r,`dragend`,b),r.addEventListener(`dragstart`,e=>x(e,{target:{artifactID:n().id},label:n().title||`Untitled`})),m(a,()=>n().title||`Untitled`),o.$$click=()=>T(n().id),m(s,()=>q[n().kind]),m(c,()=>Z(n(),t.names)),m(u,()=>v(n().updatedAt)),m(r,e(i,{get when(){return n().description},get children(){var e=W();return m(e,()=>n().description),e}}),null),l(e=>{var t=n().id,i=!S(),s=M(n().id),c=`Open ${n().title||`Untitled`} in a pane`;return t!==e.e&&h(r,`data-artifact`,e.e=t),i!==e.t&&h(r,`draggable`,e.t=i),s!==e.a&&h(a,`href`,e.a=s),c!==e.o&&h(o,`aria-label`,e.o=c),e},{e:void 0,t:void 0,a:void 0,o:void 0}),r})()}p([`click`]);export{J as default};
@@ -1 +1 @@
1
- import{At as e,B as t,C as n,Ct as r,Et as i,Ft as a,Ht as o,Lt as s,Mt as c,Nt as l,Pt as u,S as d,dt as f,et as p,ft as m,ht as h,i as g,lt as _,pt as v,t as y,u as b,ut as x,wt as S,y as C,yt as w}from"./ui-Dh1-78Cl.js";import{t as T}from"./plural-Bspvoqfq.js";import{C as E,D,E as O,L as k,R as A,S as j,T as M,_ as N,a as P,b as F,c as I,d as L,f as ee,g as R,h as z,i as B,l as V,m as H,n as U,o as W,p as G,r as K,s as q,u as te,v as J,w as Y,x as ne,y as X}from"./index-lIOfSYck.js";var re=w(`<fieldset class=prof-editor style=border:0;padding:0;margin:0><label>Instructions<textarea rows=6 placeholder="Added after the session's own instructions; local instructions win where they conflict."></textarea></label><label>Preferred model (optional, provider/model)<input type=text placeholder=anthropic/claude-sonnet-4></label><h3>Skills (<!>/<!>)</h3><div><button type=button class="btn small">Add skill</button></div><h3>Commands (<!>/<!>)</h3><p class=prof-note>Templates use <code>{{param}}</code>, <code>{{arguments}}</code> and <code>{{secret:NAME}}</code> (write <code>\\{{</code> for a literal). Secrets are never entered here: the session's machine resolves them.</p><div><button type=button class="btn small">Add command`),ie=w(`<div class=prof-part role=group><div class=prof-part-head><label>Name<input type=text title="2–40 lowercase letters, digits or dashes"></label><label>Description<input type=text></label><button type=button class="btn small danger">Remove</button></div><label>Body<textarea rows=4>`),ae=w(`<div class=prof-part role=group><div class=prof-part-head><label>Name<input type=text title="2–40 lowercase letters, digits or dashes"></label><label>Description<input type=text></label><button type=button class="btn small danger">Remove</button></div><label>Template<textarea rows=3>`),oe=w(`<p class="prof-preview bad">`),se=w(`<p class=prof-preview>`);function Z(t){let n=e=>t.onChange({...t.draft,...e}),r=(e,r)=>n({skills:t.draft.skills.map((t,n)=>n===e?{...t,...r}:t)}),a=(e,r)=>n({commands:t.draft.commands.map((t,n)=>n===e?{...t,...r}:t)});return(()=>{var o=re(),s=o.firstChild,c=s.firstChild.nextSibling,l=s.nextSibling,d=l.firstChild.nextSibling,f=l.nextSibling,p=f.firstChild.nextSibling,g=p.nextSibling.nextSibling;g.nextSibling;var _=f.nextSibling,y=_.firstChild,b=_.nextSibling,x=b.firstChild.nextSibling,C=x.nextSibling.nextSibling;C.nextSibling;var w=b.nextSibling.nextSibling,T=w.firstChild;return c.$$input=e=>n({instructions:e.currentTarget.value}),d.$$input=e=>n({model:e.currentTarget.value}),m(f,()=>t.draft.skills.length,p),m(f,()=>D.skillsPerProfile,g),m(o,e(S,{get each(){return t.draft.skills},children:(e,i)=>(()=>{var a=ie(),o=a.firstChild,s=o.firstChild,c=s.firstChild.nextSibling,l=s.nextSibling,d=l.firstChild.nextSibling,f=l.nextSibling,p=o.nextSibling.firstChild.nextSibling;return h(a,`aria-label`,`Skill ${i+1}`),c.$$input=e=>r(i,{name:e.currentTarget.value}),d.$$input=e=>r(i,{description:e.currentTarget.value}),f.$$click=()=>n({skills:t.draft.skills.filter((e,t)=>t!==i)}),p.$$input=e=>r(i,{body:e.currentTarget.value}),u(t=>{var n=`Remove skill ${e().name||i+1}`,r=D.skillChars;return n!==t.e&&h(f,`aria-label`,t.e=n),r!==t.t&&h(p,`maxlength`,t.t=r),t},{e:void 0,t:void 0}),u(()=>c.value=e().name),u(()=>d.value=e().description),u(()=>p.value=e().body),a})()}),_),y.$$click=()=>n({skills:[...t.draft.skills,{name:``,description:``,body:``}]}),m(b,()=>t.draft.commands.length,x),m(b,()=>D.commandsPerProfile,C),m(o,e(S,{get each(){return t.draft.commands},children:(r,o)=>{let s=()=>H(r().template);return(()=>{var c=ae(),l=c.firstChild,d=l.firstChild,f=d.firstChild.nextSibling,p=d.nextSibling,g=p.firstChild.nextSibling,_=p.nextSibling,y=l.nextSibling.firstChild.nextSibling;return h(c,`aria-label`,`Command ${o+1}`),f.$$input=e=>a(o,{name:e.currentTarget.value}),g.$$input=e=>a(o,{description:e.currentTarget.value}),_.$$click=()=>n({commands:t.draft.commands.filter((e,t)=>t!==o)}),y.$$input=e=>a(o,{template:e.currentTarget.value}),m(c,e(i,{get when(){return r().template.trim()},get children(){return(()=>{let e=s();return`error`in e?(()=>{var t=oe();return m(t,()=>e.error),t})():(()=>{var t=se();return m(t,(()=>{var t=v(()=>!!e.params.length);return()=>t()?`Asks for: ${e.params.join(`, `)}`:`No parameters`})(),null),m(t,(()=>{var t=v(()=>!!e.secrets.length);return()=>t()?` · Secrets (names only): ${e.secrets.join(`, `)}`:``})(),null),t})()})()}}),null),u(e=>{var t=`Remove command ${r().name||o+1}`,n=D.commandChars;return t!==e.e&&h(_,`aria-label`,e.e=t),n!==e.t&&h(y,`maxlength`,e.t=n),e},{e:void 0,t:void 0}),u(()=>f.value=r().name),u(()=>g.value=r().description),u(()=>y.value=r().template),c})()}}),w),T.$$click=()=>n({commands:[...t.draft.commands,{name:``,description:``,template:``}]}),u(e=>{var n=t.disabled,r=D.instructionsChars,i=t.draft.skills.length>=D.skillsPerProfile,a=t.draft.commands.length>=D.commandsPerProfile;return n!==e.e&&(o.disabled=e.e=n),r!==e.t&&h(c,`maxlength`,e.t=r),i!==e.a&&(y.disabled=e.a=i),a!==e.o&&(T.disabled=e.o=a),e},{e:void 0,t:void 0,a:void 0,o:void 0}),u(()=>c.value=t.draft.instructions),u(()=>d.value=t.draft.model),o})()}f([`input`,`click`]);var ce=w(`<select aria-label=Tag><option value>Any tag`),le=w(`<select aria-label=Project><option value>Any project`),ue=w(`<select aria-label=Team><option value>Any team`),de=w(`<select aria-label=Harness><option value>Any harness`),fe=w(`<ul class=prof-items>`),pe=w(`<div class=prof-page><header class=topbar><h1 class=title>Agent profiles</h1><span style=flex:1></span><button type=button class="btn small primary">New profile</button></header><div><nav class=prof-list aria-label=Profiles><div class=prof-filter role=group aria-label=Show><button type=button class="btn small">Active</button><button type=button class="btn small">Archived</button></div><div class=prof-filters role=group aria-label="Filter and sort"><select aria-label=Usage><option value>Used or not</option><option value=used>Used</option><option value=unused>Unused</option></select><select aria-label=Sort><option value=name>Sort: name</option><option value=updated>Sort: recently updated</option><option value=usage>Sort: most used</option></select></div></nav><section class=prof-detail aria-label=Profile>`),Q=w(`<option>`),$=w(`<p class="error small"role=alert>`),me=w(`<p class="muted small">Loading…`),he=w(`<p class="muted small">`),ge=w(`<p class="muted small">No profile matches these filters.`),_e=w(`<div class=prof-intro><h2>Shared agent profiles</h2><p class=prof-note>Versioned instructions, skills and commands you can pin to any session from its top bar. Saving creates a new version; running sessions keep the version they are pinned to until you upgrade each one.`),ve=w(`<span class=prof-desc>`),ye=w(`<span class=prof-chips>`),be=w(`<li><a class=prof-item><strong></strong><span class=prof-sub> · v`),xe=w(`<span class=prof-tag>`),Se=w(`<span>`),Ce=w(`<form class=prof-editor novalidate><label>Name (2–40 lowercase letters, digits or dashes; can't change later)<input type=text autofocus></label><label>Title<input type=text></label><label>Description (optional)<input type=text></label><label>Tags (comma separated, optional)<input type=text></label><div class=row><button type=submit class="btn small primary">Create v1</button><button type=button class="btn small">Cancel`),we=w(`<div><a class="btn small prof-back"href=/profiles>← Profiles`),Te=w(`<p class=error role=alert>`),Ee=w(`<p class=muted>Loading…`),De=w(`<span class="prof-tag archived">archived`),Oe=w(`<div class=prof-head><h2></h2><span class=prof-tag></span><span class=prof-tag>v</span><span style=flex:1></span><button type=button class="btn small">`),ke=w(`<p class=prof-note>`),Ae=w(`<div class=prof-tabs role=tablist aria-label="Profile views"><button type=button role=tab class="btn small">Edit</button><button type=button role=tab class="btn small">History</button><button type=button role=tab class="btn small">Used by`),je=w(`<div class=row style=margin-top:10px><button type=button class="btn small primary">Save as v</button><button type=button class="btn small">Discard changes`),Me=w(`<p class=prof-note>Versions are immutable. Restoring copies an old version into a new one; nothing is rewritten.`),Ne=w(`<ul class=prof-history aria-label=Versions>`),Pe=w(`<span class=prof-tag>latest`),Fe=w(`<button type=button class="btn small">Restore as v`),Ie=w(`<pre>`),Le=w(`<li><strong>v</strong><span class="muted small"></span><span class=mono></span><span style=flex:1></span><button type=button class="btn small">View`),Re=w(`<form class=prof-editor aria-label="Edit details"novalidate><p class=prof-note>Optional details for people browsing the library (no secrets): up to 32 keys (lowercase letters, digits, dashes) and 16 projects. Versions don't change.</p><div class=row><button type=button class="btn small">Add detail</button></div><label>Projects (comma separated)<input type=text></label><div class=row><button type=submit class="btn small primary">Save details</button><button type=button class="btn small">Cancel`),ze=w(`<section class=prof-details aria-label=Details>`),Be=w(`<dt>Tags`),Ve=w(`<dd>`),He=w(`<dl class=prof-facts><dt>Latest</dt><dd>v</dd><dt>Updated</dt><dd></dd><dt>Projects</dt><dd>`),Ue=w(`<button type=button class="btn small">Edit details`),We=w(`<span class=muted>none`),Ge=w(`<dt>`),Ke=w(`<div class=prof-meta-row role=group><input type=text aria-label=Key placeholder="key (e.g. owner)"><input type=text aria-label=Value placeholder=value>`),qe=w(`<section class=prof-usage aria-label="Used by">`),Je=w(`<p class=prof-note> Upgrading a session is always explicit; a new version never reaches a running session by itself.`),Ye=w(`<h3>Sessions`),Xe=w(`<ul class=prof-uses aria-label="Pinned sessions">`),Ze=w(`<button type=button class="btn small">More sessions`),Qe=w(`<h3>Team roles`),$e=w(`<ul class=prof-uses aria-label="Team roles">`),et=w(`<h3>Launches`),tt=w(`<ul class=prof-uses aria-label=Launches>`),nt=w(`<h3>Workspaces and projects`),rt=w(`<ul class=prof-uses aria-label=Workspaces>`),it=w(`<p class=prof-note>Projects: `),at=w(`<p class=prof-note>Hidden for this sign-in: <!>.`),ot=w(`<p class=prof-note>Only part of the <!> is listed; the counts are complete.`),st=w(`<p class="muted small">No session pins this profile.`),ct=w(`<span class=prof-tag>running v`),lt=w(`<span class="prof-use older">older`),ut=w(`<a class="btn small">Open session`),dt=w(`<button type=button class="btn small primary">Upgrade to v`),ft=w(`<li><span></span><strong></strong><span class=prof-tag>v</span><span class="muted small"></span><span style=flex:1>`),pt=w(`<p class="muted small">No team role names this profile.`),mt=w(`<span class="muted small">`),ht=w(`<li><a></a><span>role <strong></strong></span><span class=prof-tag>`),gt=w(`<p class="muted small">No retained launch named this profile.`),_t=w(`<li><span class=mono></span><span class=prof-tag></span><span class=prof-tag>v</span><span class="muted small">`),vt=w(`<p class="muted small">The pinned sessions are in no workspace or project.`),yt=w(`<li><strong></strong><span class="muted small">`),bt=e=>e?`/profiles?id=${encodeURIComponent(e)}`:`/profiles`,xt=()=>t.some(e=>e.route===`/teams`);function St(t){let[o,c]=s(`active`),[d,f]=s(!1),[p,{refetch:v}]=a(o,e=>W(e).then(e=>e.items)),[y,b]=s({}),[S,C]=s(`name`),w=l(()=>ne(p()??[])),T=l(()=>Y(F(p()??[],y()),S())),D=e=>t=>b({...y(),[e]:t.currentTarget.value||void 0});return(()=>{var a=pe(),s=a.firstChild,l=s.firstChild,b=l.nextSibling.nextSibling,O=s.nextSibling,j=O.firstChild,M=j.firstChild,N=M.firstChild,P=N.nextSibling,F=M.nextSibling,I=F.firstChild,L=I.nextSibling,ee=j.nextSibling;return m(s,e(i,{get when(){return k()},get children(){return e(g,{icon:`menu`,label:`Open sidebar`,onClick:A})}}),l),b.$$click=()=>f(!0),N.$$click=()=>c(`active`),P.$$click=()=>c(`archived`),m(F,e(i,{get when(){return w().tags.length},get children(){var t=ce();return t.firstChild,_(t,`change`,D(`tag`)),m(t,e(r,{get each(){return w().tags},children:e=>(()=>{var t=Q();return t.value=e,m(t,e),t})()}),null),u(()=>t.value=y().tag??``),t}}),I),m(F,e(i,{get when(){return w().projects.length},get children(){var t=le();return t.firstChild,_(t,`change`,D(`project`)),m(t,e(r,{get each(){return w().projects},children:e=>(()=>{var t=Q();return t.value=e,m(t,e),t})()}),null),u(()=>t.value=y().project??``),t}}),I),m(F,e(i,{get when(){return w().teams.length},get children(){var t=ue();return t.firstChild,_(t,`change`,D(`team`)),m(t,e(r,{get each(){return w().teams},children:e=>(()=>{var t=Q();return t.value=e,m(t,e),t})()}),null),u(()=>t.value=y().team??``),t}}),I),m(F,e(i,{get when(){return w().harnesses.length},get children(){var t=de();return t.firstChild,_(t,`change`,D(`harness`)),m(t,e(r,{get each(){return w().harnesses},children:e=>(()=>{var t=Q();return t.value=e,m(t,e),t})()}),null),u(()=>t.value=y().harness??``),t}}),I),_(I,`change`,D(`used`)),L.addEventListener(`change`,e=>C(e.currentTarget.value)),m(j,e(i,{get when(){return!p.error},get fallback(){return(()=>{var e=$();return m(e,()=>E(p.error)),e})()},get children(){return e(i,{get when(){return p()},get fallback(){return me()},get children(){return e(i,{get when(){return p().length},get fallback(){return(()=>{var e=he();return m(e,()=>o()===`active`?`No profiles yet. Create one to share instructions, skills and commands across sessions.`:`No archived profiles.`),e})()},get children(){return e(i,{get when(){return T().length},get fallback(){return ge()},get children(){var n=fe();return m(n,e(r,{get each(){return T()},children:n=>e(Ct,{entry:n,get current(){return n.profile.id===t.id}})})),n}})}})}})}}),null),m(ee,e(i,{get when(){return t.id},keyed:!0,get fallback(){return _e()},children:t=>e(Tt,{id:t,onChanged:()=>void v()})})),m(a,e(i,{get when(){return d()},get children(){return e(wt,{onClose:()=>f(!1),onCreated:e=>{f(!1),c(`active`),v(),n(bt(e.id))}})}}),null),u(e=>{var n=`prof-body${t.id?` has-detail`:``}`,r=o()===`active`,i=o()===`archived`;return n!==e.e&&x(O,e.e=n),r!==e.t&&h(N,`aria-pressed`,e.t=r),i!==e.a&&h(P,`aria-pressed`,e.a=i),e},{e:void 0,t:void 0,a:void 0}),u(()=>I.value=y().used??``),u(()=>L.value=S()),a})()}function Ct(t){let n=()=>t.entry.profile,a=()=>t.entry.summary,o=()=>O(t.entry.usage);return(()=>{var s=be(),c=s.firstChild,l=c.firstChild,d=l.nextSibling,f=d.firstChild;return m(l,()=>n().title),m(c,e(i,{get when(){return n().description},get children(){var e=ve();return m(e,()=>n().description),e}}),d),m(d,()=>n().name,f),m(d,()=>n().latestVersion,null),m(d,e(i,{get when(){return a()},children:e=>` · ${T(e().skills,`skill`)} · ${T(e().commands,`command`)}`}),null),m(d,(()=>{var e=v(()=>!!n().updatedAt);return()=>e()?` · updated ${b(n().updatedAt)}`:``})(),null),m(c,e(i,{get when(){return n().tags.length||o().length},get children(){var t=ye();return m(t,e(r,{get each(){return n().tags},children:e=>(()=>{var t=xe();return m(t,e),t})()}),null),m(t,e(r,{get each(){return o()},children:e=>(()=>{var t=Se();return m(t,e),u(()=>x(t,`prof-use${e===`Unused`?` unused`:/older/.test(e)?` older`:``}`)),t})()}),null),t}}),null),u(e=>{var r=bt(n().id),i=t.current?`page`:void 0,a=`${n().title} (${n().name})`;return r!==e.e&&h(c,`href`,e.e=r),i!==e.t&&h(c,`aria-current`,e.t=i),a!==e.a&&h(c,`aria-label`,e.a=a),e},{e:void 0,t:void 0,a:void 0}),s})()}function wt(t){let[n,r]=s({name:``,title:``,description:``,tags:``}),[a,o]=s(X()),[c,l]=s(``),[d,f]=s(!1),h=q(),g=async e=>{e.preventDefault();let r=z(n(),a());if(!r.ok)return l(r.error);f(!0),l(``);try{let e=await K(r.body,h);C(`Created ${e.name} v1`),t.onCreated(e)}catch(e){e instanceof p||(h=q()),l(E(e))}finally{f(!1)}},v=e=>t=>r({...n(),[e]:t.currentTarget.value});return e(y,{open:!0,wide:!0,title:`New agent profile`,get onClose(){return t.onClose},class:`prof-dialog`,get children(){var r=Ce(),s=r.firstChild,l=s.firstChild.nextSibling,f=s.nextSibling,p=f.firstChild.nextSibling,h=f.nextSibling,y=h.firstChild.nextSibling,b=h.nextSibling,x=b.firstChild.nextSibling,S=b.nextSibling,C=S.firstChild,w=C.nextSibling;return r.addEventListener(`submit`,e=>void g(e)),_(l,`input`,v(`name`),!0),_(p,`input`,v(`title`),!0),_(y,`input`,v(`description`),!0),_(x,`input`,v(`tags`),!0),m(r,e(Z,{get draft(){return a()},onChange:o}),S),m(r,e(i,{get when(){return c()},get children(){var e=$();return m(e,c),e}}),S),_(w,`click`,t.onClose,!0),u(()=>C.disabled=d()),u(()=>l.value=n().name),u(()=>p.value=n().title),u(()=>y.value=n().description),u(()=>x.value=n().tags),r}})}function Tt(t){let[n,l]=s(),[d,f]=s(),[g,_]=s(X()),[y,x]=s(``),[S,w]=s(``),[T,D]=s(!1),[O,k]=s(`edit`),A=q(),j=async(e=!1)=>{x(``);try{let{profile:n}=await P(t.id),r=await B(n.id,n.latestVersion);l(n),f(r),e||_(J(r.content))}catch(e){x(E(e))}};c(o(()=>t.id,()=>void j()));let[M,{refetch:F}]=a(()=>O()===`history`?`${t.id}#${n()?.latestVersion??0}`:void 0,()=>ee(t.id).then(e=>e.items)),I=()=>!!d()&&R(g(),d().content),L=async(e,n)=>{A=q(),C(n),t.onChanged(),l(e),await j(),F()},z=async e=>{e instanceof p||(A=q()),w(E(e)),e.code===`conflict`&&(await j(!0),t.onChanged())},V=async()=>{let e=n(),t=d();if(!e||!t)return;let r=N(g());if(!r.ok)return w(r.error);if(!R(g(),t.content))return w(`Nothing changed since v${e.latestVersion}.`);D(!0),w(``);try{let t=await U(e.id,{expectedRevision:e.revision,content:r.content},A);await L(t,`Saved ${t.name} v${t.latestVersion}. Pinned sessions keep their version until you upgrade them.`)}catch(e){await z(e)}finally{D(!1)}},H=async e=>{let t=n();if(t){D(!0),w(``);try{let n=await U(t.id,{expectedRevision:t.revision,fromVersion:e},A);await L(n,`Restored v${e} as v${n.latestVersion}`)}catch(e){await z(e)}finally{D(!1)}}},W=async e=>{let r=n();if(r){D(!0),w(``);try{let n=await te(r,e);l(n),t.onChanged(),C(e?`Archived ${n.name}. Pinned sessions keep their version; it can't be pinned again until unarchived.`:`Unarchived ${n.name}`)}catch(e){await z(e)}finally{D(!1)}}},[G,K]=s(),Y=async e=>{try{let n=await B(t.id,e);K({version:e,text:JSON.stringify(n.content,null,2)})}catch(e){w(E(e))}};return(()=>{var a=we();return a.firstChild,m(a,e(i,{get when(){return!y()},get fallback(){return(()=>{var e=Te();return m(e,y),e})()},get children(){return e(i,{get when(){return n()},get fallback(){return Ee()},children:n=>[(()=>{var t=Oe(),r=t.firstChild,a=r.nextSibling,o=a.nextSibling;o.firstChild;var s=o.nextSibling,c=s.nextSibling;return m(r,()=>n().title),m(a,()=>n().name),m(o,()=>n().latestVersion,null),m(t,e(i,{get when(){return n().state===`archived`},get children(){return De()}}),s),c.$$click=()=>void W(n().state!==`archived`),m(c,()=>n().state===`archived`?`Unarchive`:`Archive`),u(()=>c.disabled=T()),t})(),e(i,{get when(){return n().description},get children(){var e=ke();return m(e,()=>n().description),e}}),e(Et,{get profile(){return n()},get latest(){return d()},onSaved:e=>{l(e),t.onChanged()},onConflict:async()=>{await j(!0),t.onChanged()}}),(()=>{var e=Ae(),t=e.firstChild,n=t.nextSibling,r=n.nextSibling;return t.$$click=()=>k(`edit`),n.$$click=()=>k(`history`),r.$$click=()=>k(`usage`),u(e=>{var i=O()===`edit`,a=O()===`history`,o=O()===`usage`;return i!==e.e&&h(t,`aria-selected`,e.e=i),a!==e.t&&h(n,`aria-selected`,e.t=a),o!==e.a&&h(r,`aria-selected`,e.a=o),e},{e:void 0,t:void 0,a:void 0}),e})(),e(i,{get when(){return S()},get children(){var e=$();return m(e,S),e}}),e(i,{get when(){return O()===`edit`},get children(){return[(()=>{var e=ke();return m(e,(()=>{var e=v(()=>n().state===`archived`);return()=>e()?`Unarchive to edit or pin this profile.`:`Saving creates v${n().latestVersion+1}. Sessions pinned to an earlier version keep it until you upgrade each one.`})()),e})(),e(Z,{get draft(){return g()},onChange:_,get disabled(){return n().state===`archived`||T()}}),(()=>{var e=je(),t=e.firstChild;t.firstChild;var r=t.nextSibling;return t.$$click=()=>void V(),m(t,()=>n().latestVersion+1,null),r.$$click=()=>(_(J(d().content)),w(``)),u(e=>{var i=T()||n().state===`archived`||!I(),a=T()||!I();return i!==e.e&&(t.disabled=e.e=i),a!==e.t&&(r.disabled=e.t=a),e},{e:void 0,t:void 0}),e})()]}}),e(i,{get when(){return O()===`usage`},get children(){return e(Ot,{get profile(){return n()},get onChanged(){return t.onChanged}})}}),e(i,{get when(){return O()===`history`},get children(){return[Me(),e(i,{get when(){return v(()=>!M.error)()&&M()},get fallback(){return(()=>{var e=he();return m(e,(()=>{var e=v(()=>!!M.error);return()=>e()?E(M.error):`Loading…`})()),e})()},get children(){var t=Ne();return m(t,e(r,{get each(){return M()},children:t=>(()=>{var r=Le(),a=r.firstChild;a.firstChild;var o=a.nextSibling,s=o.nextSibling,c=s.nextSibling.nextSibling;return m(a,()=>t.version,null),m(r,e(i,{get when(){return t.version===n().latestVersion},get children(){return Pe()}}),o),m(o,()=>b(t.createdAt)),m(s,()=>t.digest.slice(0,12)),c.$$click=()=>void Y(t.version),m(r,e(i,{get when(){return v(()=>t.version!==n().latestVersion)()&&n().state!==`archived`},get children(){var e=Fe();return e.firstChild,e.$$click=()=>void H(t.version),m(e,()=>n().latestVersion+1,null),u(()=>e.disabled=T()),e}}),null),m(r,e(i,{get when(){return G()?.version===t.version},get children(){var e=Ie();return m(e,()=>G().text),u(()=>h(e,`aria-label`,`Version ${t.version} content`)),e}}),null),u(()=>h(s,`title`,t.digest)),r})()})),t}})]}})]})}}),null),a})()}function Et(t){let[n,a]=s(!1),[o,c]=s([]),[l,d]=s(``),[f,p]=s(``),[_,y]=s(!1),x=()=>Object.entries(t.profile.metadata),S=()=>{c([...x().map(([e,t])=>({key:e,value:t})),{key:``,value:``}]),d(t.profile.projects.join(`, `)),p(``),a(!0)},w=(e,t,n)=>c(o().map((r,i)=>i===e?{...r,[t]:n}:r)),D=async e=>{e.preventDefault();let n=j(o(),l());if(!n.ok)return p(n.error);y(!0),p(``);try{let e=await L(t.profile,n.patch);a(!1),C(`Saved the details of ${e.name}`),t.onSaved(e)}catch(e){p(E(e)),e.code===`conflict`&&await t.onConflict()}finally{y(!1)}},O=()=>t.latest?.content;return(()=>{var s=ze();return m(s,e(i,{get when(){return n()},get fallback(){return[(()=>{var n=He(),a=n.firstChild.nextSibling;a.firstChild;var o=a.nextSibling.nextSibling,s=o.nextSibling,c=s.nextSibling;return m(a,()=>t.profile.latestVersion,null),m(a,e(i,{get when(){return O()},children:e=>` · ${e().instructions?`instructions · `:``}${T(e().skills.length,`skill`)} · ${T(e().commands.length,`command`)}${e().model?` · ${e().model}`:``}`}),null),m(o,(()=>{var e=v(()=>!!t.profile.updatedAt);return()=>e()?b(t.profile.updatedAt):`—`})()),m(n,e(i,{get when(){return t.profile.tags.length},get children(){return[Be(),(()=>{var e=Ve();return m(e,()=>t.profile.tags.join(`, `)),e})()]}}),s),m(c,(()=>{var e=v(()=>!!t.profile.projects.length);return()=>e()?t.profile.projects.join(`, `):We()})()),m(n,e(r,{get each(){return x()},children:([e,t])=>[(()=>{var t=Ge();return m(t,e),t})(),(()=>{var e=Ve();return m(e,t),e})()]}),null),n})(),(()=>{var e=Ue();return e.$$click=S,e})()]},get children(){var t=Re(),n=t.firstChild.nextSibling,s=n.firstChild,p=n.nextSibling,v=p.firstChild.nextSibling,y=p.nextSibling,b=y.firstChild,x=b.nextSibling;return t.addEventListener(`submit`,e=>void D(e)),m(t,e(r,{get each(){return o()},children:(t,n)=>(()=>{var r=Ke(),i=r.firstChild,a=i.nextSibling;return i.$$input=e=>w(n(),`key`,e.currentTarget.value),a.$$input=e=>w(n(),`value`,e.currentTarget.value),m(r,e(g,{icon:`close`,get label(){return`Remove detail ${n()+1}`},type:`button`,onClick:()=>c(o().filter((e,t)=>t!==n()))}),null),u(()=>h(r,`aria-label`,`Detail ${n()+1}`)),u(()=>i.value=t.key),u(()=>a.value=t.value),r})()}),n),s.$$click=()=>c([...o(),{key:``,value:``}]),v.$$input=e=>d(e.currentTarget.value),m(t,e(i,{get when(){return f()},get children(){var e=$();return m(e,f),e}}),y),x.$$click=()=>a(!1),u(()=>b.disabled=_()),u(()=>v.value=l()),t}})),s})()}var Dt={sessions:`sessions (needs sessions:read)`,teams:`team roles (needs teams:read)`,launches:`launches (needs sessions:launch)`,workspaces:`workspaces (needs workspaces:read)`};function Ot(t){let[n,{refetch:l}]=a(()=>t.profile.id+`#`+t.profile.latestVersion,()=>V(t.profile.id)),[d,f]=s([]),[p,g]=s(),[_,y]=s();c(o(n,e=>(f([]),g(e?.cursor))));let S=()=>[...n()?.sessions??[],...d()],w=async()=>{let e=p();if(e)try{let n=await V(t.profile.id,e);f([...d(),...n.sessions]),g(n.cursor)}catch(e){C(E(e))}},D=async(e,n)=>{y(e);try{await I(e,{profileID:t.profile.id,version:t.profile.latestVersion,expectedRevision:n}),C(`Asked ${e} to run v${t.profile.latestVersion}; it confirms on its next turn.`),t.onChanged(),l()}catch(e){C(E(e)),l()}finally{y(void 0)}},O=()=>{let e=n()?.counts;return e?[e.sessions===void 0?``:`${T(e.sessions,`session`)}${e.olderVersion?` (${e.olderVersion} on older versions)`:``}`,e.teamRoles===void 0?``:T(e.teamRoles,`team role`),e.launches===void 0?``:T(e.launches,`launch`),e.workspaces===void 0?``:T(e.workspaces,`workspace`)].filter(Boolean).join(` · `):``};return(()=>{var a=qe();return m(a,e(i,{get when(){return!n.error},get fallback(){return(()=>{var e=$();return m(e,()=>E(n.error)),e})()},get children(){return e(i,{get when(){return n()},get fallback(){return me()},children:n=>[(()=>{var e=Je(),t=e.firstChild;return m(e,(()=>{var e=v(()=>!!O());return()=>e()?`${O()}.`:`Nothing you can see uses this profile.`})(),t),e})(),e(i,{get when(){return!n().hidden.includes(`sessions`)},get children(){return[Ye(),e(i,{get when(){return S().length},get fallback(){return st()},get children(){return[(()=>{var n=Xe();return m(n,e(r,{get each(){return S()},children:n=>(()=>{var r=ft(),a=r.firstChild,o=a.nextSibling,s=o.nextSibling;s.firstChild;var c=s.nextSibling;return c.nextSibling,m(o,(()=>{var e=v(()=>!!n.name);return()=>e()?`@${n.name}`:n.title??n.sessionID})()),m(s,()=>n.version,null),m(r,e(i,{get when(){return v(()=>n.running!==void 0)()&&n.running!==n.version},get children(){var e=ct();return e.firstChild,m(e,()=>n.running,null),e}}),c),m(r,e(i,{get when(){return n.olderVersion},get children(){return lt()}}),c),m(c,()=>[n.ack?G[n.ack]+(n.offline?` (offline)`:``):``,n.harness??``,n.machineID??``,n.project??``,n.known?``:`session gone`].filter(Boolean).join(` · `)),m(r,e(i,{get when(){return n.known},get children(){var e=ut();return u(()=>h(e,`href`,`/s/${encodeURIComponent(n.sessionID)}`)),e}}),null),m(r,e(i,{get when(){return v(()=>!!n.olderVersion)()&&t.profile.state===`active`},get children(){var e=dt();return e.firstChild,e.$$click=()=>void D(n.sessionID,n.revision),m(e,()=>t.profile.latestVersion,null),u(()=>e.disabled=_()===n.sessionID),e}}),null),u(e=>{var t=`prof-dot${n.online?` on`:``}`,r=n.online?`online`:`offline`;return t!==e.e&&x(a,e.e=t),r!==e.t&&h(a,`title`,e.t=r),e},{e:void 0,t:void 0}),r})()})),n})(),e(i,{get when(){return p()},get children(){var e=Ze();return e.$$click=()=>void w(),e}})]}})]}}),e(i,{get when(){return!n().hidden.includes(`teams`)},get children(){return[Qe(),e(i,{get when(){return n().teamRoles.length},get fallback(){return pt()},get children(){var t=$e();return m(t,e(r,{get each(){return n().teamRoles},children:t=>(()=>{var n=ht(),r=n.firstChild,a=r.nextSibling,o=a.firstChild.nextSibling,s=a.nextSibling;return m(r,()=>t.teamTitle),m(o,()=>t.label??t.role),m(s,(()=>{var e=v(()=>t.version!==void 0);return()=>e()?`v${t.version}`:`latest`})()),m(n,e(i,{get when(){return t.staffed!==void 0},get children(){var e=mt();return m(e,()=>T(t.staffed,`staffed seat`)),e}}),null),u(()=>h(r,`href`,M(t.teamID,xt()))),n})()})),t}})]}}),e(i,{get when(){return!n().hidden.includes(`launches`)},get children(){return[et(),e(i,{get when(){return n().launches.length},get fallback(){return gt()},get children(){var t=tt();return m(t,e(r,{get each(){return n().launches},children:t=>(()=>{var n=_t(),r=n.firstChild,a=r.nextSibling,o=a.nextSibling;o.firstChild;var s=o.nextSibling;return m(r,()=>t.id),m(a,()=>t.state,null),m(a,(()=>{var e=v(()=>!!t.outcome);return()=>e()?` (${t.outcome})`:``})(),null),m(o,()=>t.version,null),m(s,()=>b(t.updated)),m(n,e(i,{get when(){return t.sessionID},get children(){var e=ut();return u(()=>h(e,`href`,`/s/${encodeURIComponent(t.sessionID)}`)),e}}),null),n})()})),t}})]}}),e(i,{get when(){return!n().hidden.includes(`workspaces`)},get children(){return[nt(),e(i,{get when(){return n().workspaces.length||n().projects.length},get fallback(){return vt()},get children(){return[(()=>{var t=rt();return m(t,e(r,{get each(){return n().workspaces},children:e=>(()=>{var t=yt(),n=t.firstChild,r=n.nextSibling;return m(n,()=>e.title??e.workspaceID),m(r,()=>T(e.sessions,`pinned session`)),t})()})),t})(),e(i,{get when(){return n().projects.length},get children(){var e=it();return e.firstChild,m(e,()=>n().projects.join(`, `),null),e}})]}})]}}),e(i,{get when(){return n().hidden.length},get children(){var e=at(),t=e.firstChild.nextSibling;return t.nextSibling,m(e,()=>n().hidden.map(e=>Dt[e]??e).join(`, `),t),e}}),e(i,{get when(){return n().truncated.length},get children(){var e=ot(),t=e.firstChild.nextSibling;return t.nextSibling,m(e,()=>n().truncated.join(`, `),t),e}})]})}})),a})()}f([`click`,`input`]);function kt(){return e(St,{get id(){return d().searchParams.get(`id`)??void 0}})}export{kt as default};
1
+ import{At as e,B as t,C as n,Ct as r,Et as i,Ft as a,Ht as o,Lt as s,Mt as c,Nt as l,Pt as u,S as d,dt as f,et as p,ft as m,ht as h,i as g,lt as _,pt as v,t as y,u as b,ut as x,wt as S,y as C,yt as w}from"./ui-Dh1-78Cl.js";import{t as T}from"./plural-Bspvoqfq.js";import{C as E,D,E as O,L as k,R as A,S as j,T as M,_ as N,a as P,b as F,c as I,d as L,f as ee,g as R,h as z,i as B,l as V,m as H,n as U,o as W,p as G,r as K,s as q,u as te,v as J,w as Y,x as ne,y as X}from"./index-g4V9mfSr.js";var re=w(`<fieldset class=prof-editor style=border:0;padding:0;margin:0><label>Instructions<textarea rows=6 placeholder="Added after the session's own instructions; local instructions win where they conflict."></textarea></label><label>Preferred model (optional, provider/model)<input type=text placeholder=anthropic/claude-sonnet-4></label><h3>Skills (<!>/<!>)</h3><div><button type=button class="btn small">Add skill</button></div><h3>Commands (<!>/<!>)</h3><p class=prof-note>Templates use <code>{{param}}</code>, <code>{{arguments}}</code> and <code>{{secret:NAME}}</code> (write <code>\\{{</code> for a literal). Secrets are never entered here: the session's machine resolves them.</p><div><button type=button class="btn small">Add command`),ie=w(`<div class=prof-part role=group><div class=prof-part-head><label>Name<input type=text title="2–40 lowercase letters, digits or dashes"></label><label>Description<input type=text></label><button type=button class="btn small danger">Remove</button></div><label>Body<textarea rows=4>`),ae=w(`<div class=prof-part role=group><div class=prof-part-head><label>Name<input type=text title="2–40 lowercase letters, digits or dashes"></label><label>Description<input type=text></label><button type=button class="btn small danger">Remove</button></div><label>Template<textarea rows=3>`),oe=w(`<p class="prof-preview bad">`),se=w(`<p class=prof-preview>`);function Z(t){let n=e=>t.onChange({...t.draft,...e}),r=(e,r)=>n({skills:t.draft.skills.map((t,n)=>n===e?{...t,...r}:t)}),a=(e,r)=>n({commands:t.draft.commands.map((t,n)=>n===e?{...t,...r}:t)});return(()=>{var o=re(),s=o.firstChild,c=s.firstChild.nextSibling,l=s.nextSibling,d=l.firstChild.nextSibling,f=l.nextSibling,p=f.firstChild.nextSibling,g=p.nextSibling.nextSibling;g.nextSibling;var _=f.nextSibling,y=_.firstChild,b=_.nextSibling,x=b.firstChild.nextSibling,C=x.nextSibling.nextSibling;C.nextSibling;var w=b.nextSibling.nextSibling,T=w.firstChild;return c.$$input=e=>n({instructions:e.currentTarget.value}),d.$$input=e=>n({model:e.currentTarget.value}),m(f,()=>t.draft.skills.length,p),m(f,()=>D.skillsPerProfile,g),m(o,e(S,{get each(){return t.draft.skills},children:(e,i)=>(()=>{var a=ie(),o=a.firstChild,s=o.firstChild,c=s.firstChild.nextSibling,l=s.nextSibling,d=l.firstChild.nextSibling,f=l.nextSibling,p=o.nextSibling.firstChild.nextSibling;return h(a,`aria-label`,`Skill ${i+1}`),c.$$input=e=>r(i,{name:e.currentTarget.value}),d.$$input=e=>r(i,{description:e.currentTarget.value}),f.$$click=()=>n({skills:t.draft.skills.filter((e,t)=>t!==i)}),p.$$input=e=>r(i,{body:e.currentTarget.value}),u(t=>{var n=`Remove skill ${e().name||i+1}`,r=D.skillChars;return n!==t.e&&h(f,`aria-label`,t.e=n),r!==t.t&&h(p,`maxlength`,t.t=r),t},{e:void 0,t:void 0}),u(()=>c.value=e().name),u(()=>d.value=e().description),u(()=>p.value=e().body),a})()}),_),y.$$click=()=>n({skills:[...t.draft.skills,{name:``,description:``,body:``}]}),m(b,()=>t.draft.commands.length,x),m(b,()=>D.commandsPerProfile,C),m(o,e(S,{get each(){return t.draft.commands},children:(r,o)=>{let s=()=>H(r().template);return(()=>{var c=ae(),l=c.firstChild,d=l.firstChild,f=d.firstChild.nextSibling,p=d.nextSibling,g=p.firstChild.nextSibling,_=p.nextSibling,y=l.nextSibling.firstChild.nextSibling;return h(c,`aria-label`,`Command ${o+1}`),f.$$input=e=>a(o,{name:e.currentTarget.value}),g.$$input=e=>a(o,{description:e.currentTarget.value}),_.$$click=()=>n({commands:t.draft.commands.filter((e,t)=>t!==o)}),y.$$input=e=>a(o,{template:e.currentTarget.value}),m(c,e(i,{get when(){return r().template.trim()},get children(){return(()=>{let e=s();return`error`in e?(()=>{var t=oe();return m(t,()=>e.error),t})():(()=>{var t=se();return m(t,(()=>{var t=v(()=>!!e.params.length);return()=>t()?`Asks for: ${e.params.join(`, `)}`:`No parameters`})(),null),m(t,(()=>{var t=v(()=>!!e.secrets.length);return()=>t()?` · Secrets (names only): ${e.secrets.join(`, `)}`:``})(),null),t})()})()}}),null),u(e=>{var t=`Remove command ${r().name||o+1}`,n=D.commandChars;return t!==e.e&&h(_,`aria-label`,e.e=t),n!==e.t&&h(y,`maxlength`,e.t=n),e},{e:void 0,t:void 0}),u(()=>f.value=r().name),u(()=>g.value=r().description),u(()=>y.value=r().template),c})()}}),w),T.$$click=()=>n({commands:[...t.draft.commands,{name:``,description:``,template:``}]}),u(e=>{var n=t.disabled,r=D.instructionsChars,i=t.draft.skills.length>=D.skillsPerProfile,a=t.draft.commands.length>=D.commandsPerProfile;return n!==e.e&&(o.disabled=e.e=n),r!==e.t&&h(c,`maxlength`,e.t=r),i!==e.a&&(y.disabled=e.a=i),a!==e.o&&(T.disabled=e.o=a),e},{e:void 0,t:void 0,a:void 0,o:void 0}),u(()=>c.value=t.draft.instructions),u(()=>d.value=t.draft.model),o})()}f([`input`,`click`]);var ce=w(`<select aria-label=Tag><option value>Any tag`),le=w(`<select aria-label=Project><option value>Any project`),ue=w(`<select aria-label=Team><option value>Any team`),de=w(`<select aria-label=Harness><option value>Any harness`),fe=w(`<ul class=prof-items>`),pe=w(`<div class=prof-page><header class=topbar><h1 class=title>Agent profiles</h1><span style=flex:1></span><button type=button class="btn small primary">New profile</button></header><div><nav class=prof-list aria-label=Profiles><div class=prof-filter role=group aria-label=Show><button type=button class="btn small">Active</button><button type=button class="btn small">Archived</button></div><div class=prof-filters role=group aria-label="Filter and sort"><select aria-label=Usage><option value>Used or not</option><option value=used>Used</option><option value=unused>Unused</option></select><select aria-label=Sort><option value=name>Sort: name</option><option value=updated>Sort: recently updated</option><option value=usage>Sort: most used</option></select></div></nav><section class=prof-detail aria-label=Profile>`),Q=w(`<option>`),$=w(`<p class="error small"role=alert>`),me=w(`<p class="muted small">Loading…`),he=w(`<p class="muted small">`),ge=w(`<p class="muted small">No profile matches these filters.`),_e=w(`<div class=prof-intro><h2>Shared agent profiles</h2><p class=prof-note>Versioned instructions, skills and commands you can pin to any session from its top bar. Saving creates a new version; running sessions keep the version they are pinned to until you upgrade each one.`),ve=w(`<span class=prof-desc>`),ye=w(`<span class=prof-chips>`),be=w(`<li><a class=prof-item><strong></strong><span class=prof-sub> · v`),xe=w(`<span class=prof-tag>`),Se=w(`<span>`),Ce=w(`<form class=prof-editor novalidate><label>Name (2–40 lowercase letters, digits or dashes; can't change later)<input type=text autofocus></label><label>Title<input type=text></label><label>Description (optional)<input type=text></label><label>Tags (comma separated, optional)<input type=text></label><div class=row><button type=submit class="btn small primary">Create v1</button><button type=button class="btn small">Cancel`),we=w(`<div><a class="btn small prof-back"href=/profiles>← Profiles`),Te=w(`<p class=error role=alert>`),Ee=w(`<p class=muted>Loading…`),De=w(`<span class="prof-tag archived">archived`),Oe=w(`<div class=prof-head><h2></h2><span class=prof-tag></span><span class=prof-tag>v</span><span style=flex:1></span><button type=button class="btn small">`),ke=w(`<p class=prof-note>`),Ae=w(`<div class=prof-tabs role=tablist aria-label="Profile views"><button type=button role=tab class="btn small">Edit</button><button type=button role=tab class="btn small">History</button><button type=button role=tab class="btn small">Used by`),je=w(`<div class=row style=margin-top:10px><button type=button class="btn small primary">Save as v</button><button type=button class="btn small">Discard changes`),Me=w(`<p class=prof-note>Versions are immutable. Restoring copies an old version into a new one; nothing is rewritten.`),Ne=w(`<ul class=prof-history aria-label=Versions>`),Pe=w(`<span class=prof-tag>latest`),Fe=w(`<button type=button class="btn small">Restore as v`),Ie=w(`<pre>`),Le=w(`<li><strong>v</strong><span class="muted small"></span><span class=mono></span><span style=flex:1></span><button type=button class="btn small">View`),Re=w(`<form class=prof-editor aria-label="Edit details"novalidate><p class=prof-note>Optional details for people browsing the library (no secrets): up to 32 keys (lowercase letters, digits, dashes) and 16 projects. Versions don't change.</p><div class=row><button type=button class="btn small">Add detail</button></div><label>Projects (comma separated)<input type=text></label><div class=row><button type=submit class="btn small primary">Save details</button><button type=button class="btn small">Cancel`),ze=w(`<section class=prof-details aria-label=Details>`),Be=w(`<dt>Tags`),Ve=w(`<dd>`),He=w(`<dl class=prof-facts><dt>Latest</dt><dd>v</dd><dt>Updated</dt><dd></dd><dt>Projects</dt><dd>`),Ue=w(`<button type=button class="btn small">Edit details`),We=w(`<span class=muted>none`),Ge=w(`<dt>`),Ke=w(`<div class=prof-meta-row role=group><input type=text aria-label=Key placeholder="key (e.g. owner)"><input type=text aria-label=Value placeholder=value>`),qe=w(`<section class=prof-usage aria-label="Used by">`),Je=w(`<p class=prof-note> Upgrading a session is always explicit; a new version never reaches a running session by itself.`),Ye=w(`<h3>Sessions`),Xe=w(`<ul class=prof-uses aria-label="Pinned sessions">`),Ze=w(`<button type=button class="btn small">More sessions`),Qe=w(`<h3>Team roles`),$e=w(`<ul class=prof-uses aria-label="Team roles">`),et=w(`<h3>Launches`),tt=w(`<ul class=prof-uses aria-label=Launches>`),nt=w(`<h3>Workspaces and projects`),rt=w(`<ul class=prof-uses aria-label=Workspaces>`),it=w(`<p class=prof-note>Projects: `),at=w(`<p class=prof-note>Hidden for this sign-in: <!>.`),ot=w(`<p class=prof-note>Only part of the <!> is listed; the counts are complete.`),st=w(`<p class="muted small">No session pins this profile.`),ct=w(`<span class=prof-tag>running v`),lt=w(`<span class="prof-use older">older`),ut=w(`<a class="btn small">Open session`),dt=w(`<button type=button class="btn small primary">Upgrade to v`),ft=w(`<li><span></span><strong></strong><span class=prof-tag>v</span><span class="muted small"></span><span style=flex:1>`),pt=w(`<p class="muted small">No team role names this profile.`),mt=w(`<span class="muted small">`),ht=w(`<li><a></a><span>role <strong></strong></span><span class=prof-tag>`),gt=w(`<p class="muted small">No retained launch named this profile.`),_t=w(`<li><span class=mono></span><span class=prof-tag></span><span class=prof-tag>v</span><span class="muted small">`),vt=w(`<p class="muted small">The pinned sessions are in no workspace or project.`),yt=w(`<li><strong></strong><span class="muted small">`),bt=e=>e?`/profiles?id=${encodeURIComponent(e)}`:`/profiles`,xt=()=>t.some(e=>e.route===`/teams`);function St(t){let[o,c]=s(`active`),[d,f]=s(!1),[p,{refetch:v}]=a(o,e=>W(e).then(e=>e.items)),[y,b]=s({}),[S,C]=s(`name`),w=l(()=>ne(p()??[])),T=l(()=>Y(F(p()??[],y()),S())),D=e=>t=>b({...y(),[e]:t.currentTarget.value||void 0});return(()=>{var a=pe(),s=a.firstChild,l=s.firstChild,b=l.nextSibling.nextSibling,O=s.nextSibling,j=O.firstChild,M=j.firstChild,N=M.firstChild,P=N.nextSibling,F=M.nextSibling,I=F.firstChild,L=I.nextSibling,ee=j.nextSibling;return m(s,e(i,{get when(){return k()},get children(){return e(g,{icon:`menu`,label:`Open sidebar`,onClick:A})}}),l),b.$$click=()=>f(!0),N.$$click=()=>c(`active`),P.$$click=()=>c(`archived`),m(F,e(i,{get when(){return w().tags.length},get children(){var t=ce();return t.firstChild,_(t,`change`,D(`tag`)),m(t,e(r,{get each(){return w().tags},children:e=>(()=>{var t=Q();return t.value=e,m(t,e),t})()}),null),u(()=>t.value=y().tag??``),t}}),I),m(F,e(i,{get when(){return w().projects.length},get children(){var t=le();return t.firstChild,_(t,`change`,D(`project`)),m(t,e(r,{get each(){return w().projects},children:e=>(()=>{var t=Q();return t.value=e,m(t,e),t})()}),null),u(()=>t.value=y().project??``),t}}),I),m(F,e(i,{get when(){return w().teams.length},get children(){var t=ue();return t.firstChild,_(t,`change`,D(`team`)),m(t,e(r,{get each(){return w().teams},children:e=>(()=>{var t=Q();return t.value=e,m(t,e),t})()}),null),u(()=>t.value=y().team??``),t}}),I),m(F,e(i,{get when(){return w().harnesses.length},get children(){var t=de();return t.firstChild,_(t,`change`,D(`harness`)),m(t,e(r,{get each(){return w().harnesses},children:e=>(()=>{var t=Q();return t.value=e,m(t,e),t})()}),null),u(()=>t.value=y().harness??``),t}}),I),_(I,`change`,D(`used`)),L.addEventListener(`change`,e=>C(e.currentTarget.value)),m(j,e(i,{get when(){return!p.error},get fallback(){return(()=>{var e=$();return m(e,()=>E(p.error)),e})()},get children(){return e(i,{get when(){return p()},get fallback(){return me()},get children(){return e(i,{get when(){return p().length},get fallback(){return(()=>{var e=he();return m(e,()=>o()===`active`?`No profiles yet. Create one to share instructions, skills and commands across sessions.`:`No archived profiles.`),e})()},get children(){return e(i,{get when(){return T().length},get fallback(){return ge()},get children(){var n=fe();return m(n,e(r,{get each(){return T()},children:n=>e(Ct,{entry:n,get current(){return n.profile.id===t.id}})})),n}})}})}})}}),null),m(ee,e(i,{get when(){return t.id},keyed:!0,get fallback(){return _e()},children:t=>e(Tt,{id:t,onChanged:()=>void v()})})),m(a,e(i,{get when(){return d()},get children(){return e(wt,{onClose:()=>f(!1),onCreated:e=>{f(!1),c(`active`),v(),n(bt(e.id))}})}}),null),u(e=>{var n=`prof-body${t.id?` has-detail`:``}`,r=o()===`active`,i=o()===`archived`;return n!==e.e&&x(O,e.e=n),r!==e.t&&h(N,`aria-pressed`,e.t=r),i!==e.a&&h(P,`aria-pressed`,e.a=i),e},{e:void 0,t:void 0,a:void 0}),u(()=>I.value=y().used??``),u(()=>L.value=S()),a})()}function Ct(t){let n=()=>t.entry.profile,a=()=>t.entry.summary,o=()=>O(t.entry.usage);return(()=>{var s=be(),c=s.firstChild,l=c.firstChild,d=l.nextSibling,f=d.firstChild;return m(l,()=>n().title),m(c,e(i,{get when(){return n().description},get children(){var e=ve();return m(e,()=>n().description),e}}),d),m(d,()=>n().name,f),m(d,()=>n().latestVersion,null),m(d,e(i,{get when(){return a()},children:e=>` · ${T(e().skills,`skill`)} · ${T(e().commands,`command`)}`}),null),m(d,(()=>{var e=v(()=>!!n().updatedAt);return()=>e()?` · updated ${b(n().updatedAt)}`:``})(),null),m(c,e(i,{get when(){return n().tags.length||o().length},get children(){var t=ye();return m(t,e(r,{get each(){return n().tags},children:e=>(()=>{var t=xe();return m(t,e),t})()}),null),m(t,e(r,{get each(){return o()},children:e=>(()=>{var t=Se();return m(t,e),u(()=>x(t,`prof-use${e===`Unused`?` unused`:/older/.test(e)?` older`:``}`)),t})()}),null),t}}),null),u(e=>{var r=bt(n().id),i=t.current?`page`:void 0,a=`${n().title} (${n().name})`;return r!==e.e&&h(c,`href`,e.e=r),i!==e.t&&h(c,`aria-current`,e.t=i),a!==e.a&&h(c,`aria-label`,e.a=a),e},{e:void 0,t:void 0,a:void 0}),s})()}function wt(t){let[n,r]=s({name:``,title:``,description:``,tags:``}),[a,o]=s(X()),[c,l]=s(``),[d,f]=s(!1),h=q(),g=async e=>{e.preventDefault();let r=z(n(),a());if(!r.ok)return l(r.error);f(!0),l(``);try{let e=await K(r.body,h);C(`Created ${e.name} v1`),t.onCreated(e)}catch(e){e instanceof p||(h=q()),l(E(e))}finally{f(!1)}},v=e=>t=>r({...n(),[e]:t.currentTarget.value});return e(y,{open:!0,wide:!0,title:`New agent profile`,get onClose(){return t.onClose},class:`prof-dialog`,get children(){var r=Ce(),s=r.firstChild,l=s.firstChild.nextSibling,f=s.nextSibling,p=f.firstChild.nextSibling,h=f.nextSibling,y=h.firstChild.nextSibling,b=h.nextSibling,x=b.firstChild.nextSibling,S=b.nextSibling,C=S.firstChild,w=C.nextSibling;return r.addEventListener(`submit`,e=>void g(e)),_(l,`input`,v(`name`),!0),_(p,`input`,v(`title`),!0),_(y,`input`,v(`description`),!0),_(x,`input`,v(`tags`),!0),m(r,e(Z,{get draft(){return a()},onChange:o}),S),m(r,e(i,{get when(){return c()},get children(){var e=$();return m(e,c),e}}),S),_(w,`click`,t.onClose,!0),u(()=>C.disabled=d()),u(()=>l.value=n().name),u(()=>p.value=n().title),u(()=>y.value=n().description),u(()=>x.value=n().tags),r}})}function Tt(t){let[n,l]=s(),[d,f]=s(),[g,_]=s(X()),[y,x]=s(``),[S,w]=s(``),[T,D]=s(!1),[O,k]=s(`edit`),A=q(),j=async(e=!1)=>{x(``);try{let{profile:n}=await P(t.id),r=await B(n.id,n.latestVersion);l(n),f(r),e||_(J(r.content))}catch(e){x(E(e))}};c(o(()=>t.id,()=>void j()));let[M,{refetch:F}]=a(()=>O()===`history`?`${t.id}#${n()?.latestVersion??0}`:void 0,()=>ee(t.id).then(e=>e.items)),I=()=>!!d()&&R(g(),d().content),L=async(e,n)=>{A=q(),C(n),t.onChanged(),l(e),await j(),F()},z=async e=>{e instanceof p||(A=q()),w(E(e)),e.code===`conflict`&&(await j(!0),t.onChanged())},V=async()=>{let e=n(),t=d();if(!e||!t)return;let r=N(g());if(!r.ok)return w(r.error);if(!R(g(),t.content))return w(`Nothing changed since v${e.latestVersion}.`);D(!0),w(``);try{let t=await U(e.id,{expectedRevision:e.revision,content:r.content},A);await L(t,`Saved ${t.name} v${t.latestVersion}. Pinned sessions keep their version until you upgrade them.`)}catch(e){await z(e)}finally{D(!1)}},H=async e=>{let t=n();if(t){D(!0),w(``);try{let n=await U(t.id,{expectedRevision:t.revision,fromVersion:e},A);await L(n,`Restored v${e} as v${n.latestVersion}`)}catch(e){await z(e)}finally{D(!1)}}},W=async e=>{let r=n();if(r){D(!0),w(``);try{let n=await te(r,e);l(n),t.onChanged(),C(e?`Archived ${n.name}. Pinned sessions keep their version; it can't be pinned again until unarchived.`:`Unarchived ${n.name}`)}catch(e){await z(e)}finally{D(!1)}}},[G,K]=s(),Y=async e=>{try{let n=await B(t.id,e);K({version:e,text:JSON.stringify(n.content,null,2)})}catch(e){w(E(e))}};return(()=>{var a=we();return a.firstChild,m(a,e(i,{get when(){return!y()},get fallback(){return(()=>{var e=Te();return m(e,y),e})()},get children(){return e(i,{get when(){return n()},get fallback(){return Ee()},children:n=>[(()=>{var t=Oe(),r=t.firstChild,a=r.nextSibling,o=a.nextSibling;o.firstChild;var s=o.nextSibling,c=s.nextSibling;return m(r,()=>n().title),m(a,()=>n().name),m(o,()=>n().latestVersion,null),m(t,e(i,{get when(){return n().state===`archived`},get children(){return De()}}),s),c.$$click=()=>void W(n().state!==`archived`),m(c,()=>n().state===`archived`?`Unarchive`:`Archive`),u(()=>c.disabled=T()),t})(),e(i,{get when(){return n().description},get children(){var e=ke();return m(e,()=>n().description),e}}),e(Et,{get profile(){return n()},get latest(){return d()},onSaved:e=>{l(e),t.onChanged()},onConflict:async()=>{await j(!0),t.onChanged()}}),(()=>{var e=Ae(),t=e.firstChild,n=t.nextSibling,r=n.nextSibling;return t.$$click=()=>k(`edit`),n.$$click=()=>k(`history`),r.$$click=()=>k(`usage`),u(e=>{var i=O()===`edit`,a=O()===`history`,o=O()===`usage`;return i!==e.e&&h(t,`aria-selected`,e.e=i),a!==e.t&&h(n,`aria-selected`,e.t=a),o!==e.a&&h(r,`aria-selected`,e.a=o),e},{e:void 0,t:void 0,a:void 0}),e})(),e(i,{get when(){return S()},get children(){var e=$();return m(e,S),e}}),e(i,{get when(){return O()===`edit`},get children(){return[(()=>{var e=ke();return m(e,(()=>{var e=v(()=>n().state===`archived`);return()=>e()?`Unarchive to edit or pin this profile.`:`Saving creates v${n().latestVersion+1}. Sessions pinned to an earlier version keep it until you upgrade each one.`})()),e})(),e(Z,{get draft(){return g()},onChange:_,get disabled(){return n().state===`archived`||T()}}),(()=>{var e=je(),t=e.firstChild;t.firstChild;var r=t.nextSibling;return t.$$click=()=>void V(),m(t,()=>n().latestVersion+1,null),r.$$click=()=>(_(J(d().content)),w(``)),u(e=>{var i=T()||n().state===`archived`||!I(),a=T()||!I();return i!==e.e&&(t.disabled=e.e=i),a!==e.t&&(r.disabled=e.t=a),e},{e:void 0,t:void 0}),e})()]}}),e(i,{get when(){return O()===`usage`},get children(){return e(Ot,{get profile(){return n()},get onChanged(){return t.onChanged}})}}),e(i,{get when(){return O()===`history`},get children(){return[Me(),e(i,{get when(){return v(()=>!M.error)()&&M()},get fallback(){return(()=>{var e=he();return m(e,(()=>{var e=v(()=>!!M.error);return()=>e()?E(M.error):`Loading…`})()),e})()},get children(){var t=Ne();return m(t,e(r,{get each(){return M()},children:t=>(()=>{var r=Le(),a=r.firstChild;a.firstChild;var o=a.nextSibling,s=o.nextSibling,c=s.nextSibling.nextSibling;return m(a,()=>t.version,null),m(r,e(i,{get when(){return t.version===n().latestVersion},get children(){return Pe()}}),o),m(o,()=>b(t.createdAt)),m(s,()=>t.digest.slice(0,12)),c.$$click=()=>void Y(t.version),m(r,e(i,{get when(){return v(()=>t.version!==n().latestVersion)()&&n().state!==`archived`},get children(){var e=Fe();return e.firstChild,e.$$click=()=>void H(t.version),m(e,()=>n().latestVersion+1,null),u(()=>e.disabled=T()),e}}),null),m(r,e(i,{get when(){return G()?.version===t.version},get children(){var e=Ie();return m(e,()=>G().text),u(()=>h(e,`aria-label`,`Version ${t.version} content`)),e}}),null),u(()=>h(s,`title`,t.digest)),r})()})),t}})]}})]})}}),null),a})()}function Et(t){let[n,a]=s(!1),[o,c]=s([]),[l,d]=s(``),[f,p]=s(``),[_,y]=s(!1),x=()=>Object.entries(t.profile.metadata),S=()=>{c([...x().map(([e,t])=>({key:e,value:t})),{key:``,value:``}]),d(t.profile.projects.join(`, `)),p(``),a(!0)},w=(e,t,n)=>c(o().map((r,i)=>i===e?{...r,[t]:n}:r)),D=async e=>{e.preventDefault();let n=j(o(),l());if(!n.ok)return p(n.error);y(!0),p(``);try{let e=await L(t.profile,n.patch);a(!1),C(`Saved the details of ${e.name}`),t.onSaved(e)}catch(e){p(E(e)),e.code===`conflict`&&await t.onConflict()}finally{y(!1)}},O=()=>t.latest?.content;return(()=>{var s=ze();return m(s,e(i,{get when(){return n()},get fallback(){return[(()=>{var n=He(),a=n.firstChild.nextSibling;a.firstChild;var o=a.nextSibling.nextSibling,s=o.nextSibling,c=s.nextSibling;return m(a,()=>t.profile.latestVersion,null),m(a,e(i,{get when(){return O()},children:e=>` · ${e().instructions?`instructions · `:``}${T(e().skills.length,`skill`)} · ${T(e().commands.length,`command`)}${e().model?` · ${e().model}`:``}`}),null),m(o,(()=>{var e=v(()=>!!t.profile.updatedAt);return()=>e()?b(t.profile.updatedAt):`—`})()),m(n,e(i,{get when(){return t.profile.tags.length},get children(){return[Be(),(()=>{var e=Ve();return m(e,()=>t.profile.tags.join(`, `)),e})()]}}),s),m(c,(()=>{var e=v(()=>!!t.profile.projects.length);return()=>e()?t.profile.projects.join(`, `):We()})()),m(n,e(r,{get each(){return x()},children:([e,t])=>[(()=>{var t=Ge();return m(t,e),t})(),(()=>{var e=Ve();return m(e,t),e})()]}),null),n})(),(()=>{var e=Ue();return e.$$click=S,e})()]},get children(){var t=Re(),n=t.firstChild.nextSibling,s=n.firstChild,p=n.nextSibling,v=p.firstChild.nextSibling,y=p.nextSibling,b=y.firstChild,x=b.nextSibling;return t.addEventListener(`submit`,e=>void D(e)),m(t,e(r,{get each(){return o()},children:(t,n)=>(()=>{var r=Ke(),i=r.firstChild,a=i.nextSibling;return i.$$input=e=>w(n(),`key`,e.currentTarget.value),a.$$input=e=>w(n(),`value`,e.currentTarget.value),m(r,e(g,{icon:`close`,get label(){return`Remove detail ${n()+1}`},type:`button`,onClick:()=>c(o().filter((e,t)=>t!==n()))}),null),u(()=>h(r,`aria-label`,`Detail ${n()+1}`)),u(()=>i.value=t.key),u(()=>a.value=t.value),r})()}),n),s.$$click=()=>c([...o(),{key:``,value:``}]),v.$$input=e=>d(e.currentTarget.value),m(t,e(i,{get when(){return f()},get children(){var e=$();return m(e,f),e}}),y),x.$$click=()=>a(!1),u(()=>b.disabled=_()),u(()=>v.value=l()),t}})),s})()}var Dt={sessions:`sessions (needs sessions:read)`,teams:`team roles (needs teams:read)`,launches:`launches (needs sessions:launch)`,workspaces:`workspaces (needs workspaces:read)`};function Ot(t){let[n,{refetch:l}]=a(()=>t.profile.id+`#`+t.profile.latestVersion,()=>V(t.profile.id)),[d,f]=s([]),[p,g]=s(),[_,y]=s();c(o(n,e=>(f([]),g(e?.cursor))));let S=()=>[...n()?.sessions??[],...d()],w=async()=>{let e=p();if(e)try{let n=await V(t.profile.id,e);f([...d(),...n.sessions]),g(n.cursor)}catch(e){C(E(e))}},D=async(e,n)=>{y(e);try{await I(e,{profileID:t.profile.id,version:t.profile.latestVersion,expectedRevision:n}),C(`Asked ${e} to run v${t.profile.latestVersion}; it confirms on its next turn.`),t.onChanged(),l()}catch(e){C(E(e)),l()}finally{y(void 0)}},O=()=>{let e=n()?.counts;return e?[e.sessions===void 0?``:`${T(e.sessions,`session`)}${e.olderVersion?` (${e.olderVersion} on older versions)`:``}`,e.teamRoles===void 0?``:T(e.teamRoles,`team role`),e.launches===void 0?``:T(e.launches,`launch`),e.workspaces===void 0?``:T(e.workspaces,`workspace`)].filter(Boolean).join(` · `):``};return(()=>{var a=qe();return m(a,e(i,{get when(){return!n.error},get fallback(){return(()=>{var e=$();return m(e,()=>E(n.error)),e})()},get children(){return e(i,{get when(){return n()},get fallback(){return me()},children:n=>[(()=>{var e=Je(),t=e.firstChild;return m(e,(()=>{var e=v(()=>!!O());return()=>e()?`${O()}.`:`Nothing you can see uses this profile.`})(),t),e})(),e(i,{get when(){return!n().hidden.includes(`sessions`)},get children(){return[Ye(),e(i,{get when(){return S().length},get fallback(){return st()},get children(){return[(()=>{var n=Xe();return m(n,e(r,{get each(){return S()},children:n=>(()=>{var r=ft(),a=r.firstChild,o=a.nextSibling,s=o.nextSibling;s.firstChild;var c=s.nextSibling;return c.nextSibling,m(o,(()=>{var e=v(()=>!!n.name);return()=>e()?`@${n.name}`:n.title??n.sessionID})()),m(s,()=>n.version,null),m(r,e(i,{get when(){return v(()=>n.running!==void 0)()&&n.running!==n.version},get children(){var e=ct();return e.firstChild,m(e,()=>n.running,null),e}}),c),m(r,e(i,{get when(){return n.olderVersion},get children(){return lt()}}),c),m(c,()=>[n.ack?G[n.ack]+(n.offline?` (offline)`:``):``,n.harness??``,n.machineID??``,n.project??``,n.known?``:`session gone`].filter(Boolean).join(` · `)),m(r,e(i,{get when(){return n.known},get children(){var e=ut();return u(()=>h(e,`href`,`/s/${encodeURIComponent(n.sessionID)}`)),e}}),null),m(r,e(i,{get when(){return v(()=>!!n.olderVersion)()&&t.profile.state===`active`},get children(){var e=dt();return e.firstChild,e.$$click=()=>void D(n.sessionID,n.revision),m(e,()=>t.profile.latestVersion,null),u(()=>e.disabled=_()===n.sessionID),e}}),null),u(e=>{var t=`prof-dot${n.online?` on`:``}`,r=n.online?`online`:`offline`;return t!==e.e&&x(a,e.e=t),r!==e.t&&h(a,`title`,e.t=r),e},{e:void 0,t:void 0}),r})()})),n})(),e(i,{get when(){return p()},get children(){var e=Ze();return e.$$click=()=>void w(),e}})]}})]}}),e(i,{get when(){return!n().hidden.includes(`teams`)},get children(){return[Qe(),e(i,{get when(){return n().teamRoles.length},get fallback(){return pt()},get children(){var t=$e();return m(t,e(r,{get each(){return n().teamRoles},children:t=>(()=>{var n=ht(),r=n.firstChild,a=r.nextSibling,o=a.firstChild.nextSibling,s=a.nextSibling;return m(r,()=>t.teamTitle),m(o,()=>t.label??t.role),m(s,(()=>{var e=v(()=>t.version!==void 0);return()=>e()?`v${t.version}`:`latest`})()),m(n,e(i,{get when(){return t.staffed!==void 0},get children(){var e=mt();return m(e,()=>T(t.staffed,`staffed seat`)),e}}),null),u(()=>h(r,`href`,M(t.teamID,xt()))),n})()})),t}})]}}),e(i,{get when(){return!n().hidden.includes(`launches`)},get children(){return[et(),e(i,{get when(){return n().launches.length},get fallback(){return gt()},get children(){var t=tt();return m(t,e(r,{get each(){return n().launches},children:t=>(()=>{var n=_t(),r=n.firstChild,a=r.nextSibling,o=a.nextSibling;o.firstChild;var s=o.nextSibling;return m(r,()=>t.id),m(a,()=>t.state,null),m(a,(()=>{var e=v(()=>!!t.outcome);return()=>e()?` (${t.outcome})`:``})(),null),m(o,()=>t.version,null),m(s,()=>b(t.updated)),m(n,e(i,{get when(){return t.sessionID},get children(){var e=ut();return u(()=>h(e,`href`,`/s/${encodeURIComponent(t.sessionID)}`)),e}}),null),n})()})),t}})]}}),e(i,{get when(){return!n().hidden.includes(`workspaces`)},get children(){return[nt(),e(i,{get when(){return n().workspaces.length||n().projects.length},get fallback(){return vt()},get children(){return[(()=>{var t=rt();return m(t,e(r,{get each(){return n().workspaces},children:e=>(()=>{var t=yt(),n=t.firstChild,r=n.nextSibling;return m(n,()=>e.title??e.workspaceID),m(r,()=>T(e.sessions,`pinned session`)),t})()})),t})(),e(i,{get when(){return n().projects.length},get children(){var e=it();return e.firstChild,m(e,()=>n().projects.join(`, `),null),e}})]}})]}}),e(i,{get when(){return n().hidden.length},get children(){var e=at(),t=e.firstChild.nextSibling;return t.nextSibling,m(e,()=>n().hidden.map(e=>Dt[e]??e).join(`, `),t),e}}),e(i,{get when(){return n().truncated.length},get children(){var e=ot(),t=e.firstChild.nextSibling;return t.nextSibling,m(e,()=>n().truncated.join(`, `),t),e}})]})}})),a})()}f([`click`,`input`]);function kt(){return e(St,{get id(){return d().searchParams.get(`id`)??void 0}})}export{kt as default};
@@ -1 +1 @@
1
- import{$ as e,At as t,C as n,Ct as r,Et as i,Lt as a,Nt as o,Ot as s,Pt as c,S as l,Tt as u,Wt as d,dt as f,ft as p,ht as m,lt as h,pt as g,ut as _,yt as v}from"./ui-Dh1-78Cl.js";import{t as y}from"./plural-Bspvoqfq.js";import{t as b}from"./index-lIOfSYck.js";import{K as x,S,_ as C,a as w,c as T,d as E,dt as D,f as O,g as k,h as ee,i as A,l as j,lt as M,m as N,n as P,o as te,p as ne,r as F,s as I,st as L,t as R,u as z,y as B}from"./live-BDq0AABg.js";var V=v(`<p class="muted tm-lede">A team takes work as a unit: its entry role receives tasks, its members hold roles, and its communication paths decide who may reach whom.`),H=v(`<p role=alert class=wt-error>`),U=v(`<p class=muted>Loading teams…`),W=v(`<div class=tm-empty-state><p>No teams yet.</p><button type=button class="btn primary">Create your first team`),G=v(`<ul class=tm-cards aria-label=Teams>`),K=v(`<label class="wt-check tm-archived-toggle"><input type=checkbox><span>Show `),q=v(`<button type=button class="btn small primary">New team`),J=v(`<span class="tm-badge warn">Paused`),Y=v(`<span class="tm-badge warn">Archived`),X=v(`<span class=tm-badge>Unpublished draft`),Z=v(`<span class=tm-warn> · `),re=v(`<div><dt class=sr-only>Work</dt><dd>`),ie=v(`<ul class=tm-tags aria-label=Tags>`),ae=v(`<li class=tm-card><div class=tm-card-head><a class=tm-card-title></a><span class=muted>#</span></div><div class=tm-badges><span></span></div><dl class=tm-card-facts><div><dt class=sr-only>Entry role</dt><dd>Entry role: </dd></div><div><dt class=sr-only>Members</dt><dd>`),oe=v(`<li>`),se=v(`<a class=tm-back href=/teams>← All teams`),ce=v(`<p class=tm-draft-note>'s roles or paths. <button type=button class=tm-linkish>Review them`),le=v(`<div class=tm-detail><section class=tm-head aria-label=Team><div class=tm-head-main><span class="muted tm-handle">#</span><div class=tm-badges><span></span><span class=tm-badge>Entry role: </span></div></div><div class="te-row tm-head-actions"><button type=button class="btn small"></button><button type=button class="btn small"></button><a class="btn small">Edit in Watchtower</a></div></section><div class=tm-tabs role=tablist aria-label="Team sections"></div><div class=tm-panel role=tabpanel>`),ue=v(`<p class=muted>Loading the team…`),de=v(`<span class=tm-tab-count>`),fe=v(`<button type=button role=tab class=tm-tab>`),pe=v(`<section class=tm-section aria-labelledby=tm-submit-h><h2 id=tm-submit-h>Submit a task`),me=v(`<section class=tm-section aria-labelledby=tm-intake-h><h2 id=tm-intake-h>Tasks`),he=v(`<section class=tm-section aria-labelledby=tm-live-h><h2 id=tm-live-h>Live now (version <!>)`),ge=v(`<section class=tm-section aria-labelledby=tm-mode-h><h2 id=tm-mode-h>Mode`),_e=v(`<section class=tm-section aria-labelledby=tm-roles-h><h2 id=tm-roles-h>Roles`),ve=v(`<section class=tm-section aria-labelledby=tm-paths-h><h2 id=tm-paths-h>Paths`),ye=v(`<p class=muted>Projects: `),be=v(`<section class=tm-section aria-labelledby=tm-details-h><h2 id=tm-details-h>Details`),xe=v(`<section class=tm-section aria-labelledby=tm-history-h><h2 id=tm-history-h>History`);function Q(e){return t(i,{get when(){return e.rest[0]},keyed:!0,get fallback(){return t(Se,{})},children:e=>t(Te,{id:e})})}function Se(){let[n,l]=a(),[f,m]=a(``),[h,g]=a(!1),[_,v]=a(!1),x=async()=>{try{let e=await C(`all`);l(t=>e.map(e=>t?.find(t=>t.id===e.id&&t.seatsFilled!==void 0)??L(e)).map((t,n)=>({...t,...e[n]}))),m(``);let t=[...e],n=async()=>{for(let e=t.shift();e;e=t.shift()){let t=e,n=await B(t.id).catch(()=>void 0);n&&l(e=>e?.map(e=>e.id===t.id?L(t,n.roster,n.intake):e))}};await Promise.all([n(),n(),n(),n()])}catch(t){m(t instanceof e&&t.status===404?`This hub doesn't have teams yet.`:M(t).message)}};d(()=>void x()),R(x,()=>(n()??[]).some(e=>(e.openIntake??0)>0));let S=o(()=>(n()??[]).filter(e=>_()||e.state!==`archived`)),w=o(()=>(n()??[]).filter(e=>e.state===`archived`).length);return t(b,{title:`Teams`,get actions(){return(()=>{var e=q();return e.$$click=()=>g(!0),c(()=>e.disabled=!!f()),e})()},get children(){return[V(),t(s,{get children(){return[t(u,{get when(){return f()},get children(){var e=H();return p(e,f),e}}),t(u,{get when(){return!n()},get children(){return U()}}),t(u,{get when(){return n().length===0},get children(){var e=W(),t=e.firstChild.nextSibling;return t.$$click=()=>g(!0),e}}),t(u,{get when(){return n()},get children(){return[(()=>{var e=G();return p(e,t(r,{get each(){return S().map(e=>e.id)},children:e=>t(i,{get when(){return S().find(t=>t.id===e)},children:e=>t(Ce,{get card(){return e()}})})})),e})(),t(i,{get when(){return w()},get children(){var e=K(),t=e.firstChild,n=t.nextSibling;return n.firstChild,t.addEventListener(`change`,e=>v(e.currentTarget.checked)),p(n,()=>y(w(),`archived team`),null),c(()=>t.checked=_()),e}})]}})]}}),t(P,{get open(){return h()},onClose:()=>g(!1)})]}})}function Ce(e){let n=()=>e.card;return(()=>{var e=ae(),a=e.firstChild,o=a.firstChild,s=o.nextSibling;s.firstChild;var l=a.nextSibling,u=l.firstChild,d=l.nextSibling,f=d.firstChild,h=f.firstChild.nextSibling;h.firstChild;var v=f.nextSibling.firstChild.nextSibling;return p(o,()=>n().title),p(s,()=>n().name,null),p(u,()=>n().mode===`open`?`Open`:`Restricted`),p(l,t(i,{get when(){return n().paused},get children(){return J()}}),null),p(l,t(i,{get when(){return n().state===`archived`},get children(){return Y()}}),null),p(l,t(i,{get when(){return n().hasDraft},get children(){return X()}}),null),p(h,()=>n().entryRole,null),p(v,(()=>{var e=g(()=>n().seatsFilled===void 0);return()=>e()?`${y(n().roles,`role`)}`:`${y(n().seatsFilled,`seat`)} filled`})(),null),p(v,t(i,{get when(){return n().vacantRoles.length},get children(){var e=Z();return e.firstChild,p(e,(()=>{var e=g(()=>n().vacantRoles.length===1);return()=>e()?`${n().vacantRoles[0]} vacant`:`${n().vacantRoles.length} roles vacant`})(),null),e}}),null),p(d,t(i,{get when(){return n().openIntake!==void 0},get children(){var e=re(),t=e.firstChild.nextSibling;return p(t,(()=>{var e=g(()=>!!n().openIntake);return()=>e()?`${y(n().openIntake,`open task`)}`:`No open work`})()),e}}),null),p(e,t(i,{get when(){return n().tags.length},get children(){var e=ie();return p(e,t(r,{get each(){return[...n().tags]},children:e=>(()=>{var t=oe();return p(t,e),t})()})),e}}),null),c(t=>{var r=!!n().paused,i=n().state===`archived`,a=F(n().id),s=`tm-badge tm-mode-${n().mode}`;return r!==t.e&&e.classList.toggle(`paused`,t.e=r),i!==t.t&&e.classList.toggle(`archived`,t.t=i),a!==t.a&&m(o,`href`,t.a=a),s!==t.o&&_(u,t.o=s),t},{e:void 0,t:void 0,a:void 0,o:void 0}),e})()}var $=[{id:`members`,label:`Members`},{id:`work`,label:`Work`},{id:`communication`,label:`Communication`},{id:`details`,label:`Details`}];function we(){let[e,t]=a(),n=()=>void S(x({window:`24h`},Date.now())).then(t).catch(()=>t(e=>e??{nodes:[],edges:[],at:Date.now()}));return d(n),Object.assign(e,{reload:n})}function Te(e){let a=we(),f=k(e.id,{intake:!0,onChanged:()=>a.reload()});d(()=>void f.load()),R(async()=>{await f.refresh()},f.openWork);let v=o(()=>{let e=l().searchParams.get(`tab`);return $.some(t=>t.id===e)?e:`members`}),y=t=>n(`${F(e.id)}${t===`members`?``:`?tab=${t}`}`,{replace:!0}),x=e=>{let t=$.findIndex(e=>e.id===v()),n=e.key===`ArrowRight`?(t+1)%$.length:e.key===`ArrowLeft`?(t+$.length-1)%$.length:e.key===`Home`?0:e.key===`End`?$.length-1:-1;n<0||(e.preventDefault(),y($[n].id),queueMicrotask(()=>document.getElementById(`tm-tab-${$[n].id}`)?.focus()))},S=()=>f.spec()?.title||f.team()?.title||`Team`;return t(b,{get title(){return g(()=>!!f.team())()?f.read().published.title||f.team().name:`Team`},get children(){return[se(),t(i,{get when(){return f.loadError()},get children(){var e=H();return p(e,()=>f.loadError()),e}}),t(i,{get when(){return g(()=>!!f.team())()&&f.spec()},get fallback(){return t(i,{get when(){return!f.loadError()},get children(){return ue()}})},get children(){var e=le(),n=e.firstChild,o=n.firstChild,l=o.firstChild;l.firstChild;var d=l.nextSibling,b=d.firstChild,C=b.nextSibling;C.firstChild;var w=o.nextSibling.firstChild,T=w.nextSibling,E=T.nextSibling,D=n.nextSibling,O=D.nextSibling;return h(e,`keydown`,f.onKey,!0),p(l,()=>f.team().name,null),p(b,()=>f.read().published.mode===`open`?`Open`:`Restricted`),p(C,()=>f.read().published.entryRole,null),p(d,t(i,{get when(){return f.team().paused},get children(){return J()}}),null),p(d,t(i,{get when(){return f.team().state===`archived`},get children(){return Y()}}),null),w.$$click=()=>void f.togglePause(),p(w,()=>f.team().paused?`Resume`:`Pause`),T.$$click=()=>void f.toggleArchive(),p(T,()=>f.team().state===`archived`?`Restore`:`Archive`),p(e,t(j,{get notice(){return f.notice()}}),D),p(e,t(i,{get when(){return g(()=>!!(f.dirty()||f.team().hasDraft))()&&(v()===`members`||v()===`work`)},get children(){var e=ce(),t=e.firstChild,n=t.nextSibling;return p(e,()=>f.dirty()?`You have unsaved changes to `:`An unpublished draft changes `,t),p(e,S,t),n.$$click=()=>y(`communication`),e}}),D),D.$$keydown=x,p(D,t(r,{each:$,children:e=>(()=>{var n=fe();return n.$$click=()=>y(e.id),p(n,()=>e.label,null),p(n,t(i,{get when(){return g(()=>e.id===`work`)()&&f.items()?.some(e=>e.status===`queued`||e.status===`routed`)},get children(){var e=de();return p(e,()=>f.items().filter(e=>e.status===`queued`||e.status===`routed`).length),e}}),null),c(t=>{var r=`tm-tab-${e.id}`,i=v()===e.id,a=`tm-panel-${e.id}`,o=v()===e.id?0:-1;return r!==t.e&&m(n,`id`,t.e=r),i!==t.t&&m(n,`aria-selected`,t.t=i),a!==t.a&&m(n,`aria-controls`,t.a=a),o!==t.o&&m(n,`tabindex`,t.o=o),t},{e:void 0,t:void 0,a:void 0,o:void 0}),n})()})),p(O,t(s,{get children(){return[t(u,{get when(){return v()===`members`},get children(){return t(I,{c:f,get snap(){return a()}})}}),t(u,{get when(){return v()===`work`},get children(){return t(Ee,{c:f,get snap(){return a()}})}}),t(u,{get when(){return v()===`communication`},get children(){return t(De,{c:f})}}),t(u,{get when(){return v()===`details`},get children(){return t(ke,{c:f})}})]}})),c(e=>{var t=`tm-badge tm-mode-${f.read().published.mode}`,n=f.busy()||f.team().state===`archived`,r=f.busy(),i=`/watchtower?view=2d&group=team&edit=${encodeURIComponent(f.team().id)}`,a=`tm-panel-${v()}`,o=`tm-tab-${v()}`;return t!==e.e&&_(b,e.e=t),n!==e.t&&(w.disabled=e.t=n),r!==e.a&&(T.disabled=e.a=r),i!==e.o&&m(E,`href`,e.o=i),a!==e.i&&m(O,`id`,e.i=a),o!==e.n&&m(O,`aria-labelledby`,e.n=o),e},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),e}})]}})}function Ee(e){return[(()=>{var n=pe();return n.firstChild,p(n,t(ne,{get c(){return e.c}}),null),n})(),(()=>{var n=me();return n.firstChild,p(n,t(te,{get c(){return e.c},get snap(){return e.snap}}),null),n})()]}function De(e){let n=e.c;return[t(N,{c:n}),t(w,{c:n}),(()=>{var e=he(),r=e.firstChild,i=r.firstChild.nextSibling;return i.nextSibling,p(r,()=>n.team().version,i),p(e,t(E,{c:n}),null),e})(),(()=>{var e=ge();return e.firstChild,p(e,t(T,{get value(){return n.spec().mode},onChange:e=>n.apply(Oe(n,e)),get name(){return`tm-mode-${n.id}`}}),null),e})(),(()=>{var e=_e();return e.firstChild,p(e,t(O,{c:n}),null),e})(),(()=>{var e=ve();return e.firstChild,p(e,t(z,{c:n}),null),e})()]}var Oe=(e,t)=>D(e.spec(),t);function ke(e){let n=e.c;return[t(N,{c:n}),t(w,{c:n}),(()=>{var e=be();return e.firstChild,p(e,t(A,{c:n}),null),p(e,t(i,{get when(){return n.read().published.projects?.length},get children(){var e=ye();return e.firstChild,p(e,()=>n.read().published.projects.join(`, `),null),e}}),null),e})(),(()=>{var e=xe();return e.firstChild,p(e,t(ee,{c:n}),null),e})()]}f([`click`,`keydown`]);export{Q as default};
1
+ import{$ as e,At as t,C as n,Ct as r,Et as i,Lt as a,Nt as o,Ot as s,Pt as c,S as l,Tt as u,Wt as d,dt as f,ft as p,ht as m,lt as h,pt as g,ut as _,yt as v}from"./ui-Dh1-78Cl.js";import{t as y}from"./plural-Bspvoqfq.js";import{t as b}from"./index-g4V9mfSr.js";import{K as x,S,_ as C,a as w,c as T,d as E,dt as D,f as O,g as k,h as ee,i as A,l as j,lt as M,m as N,n as P,o as te,p as ne,r as F,s as I,st as L,t as R,u as z,y as B}from"./live-OgQWPrSY.js";var V=v(`<p class="muted tm-lede">A team takes work as a unit: its entry role receives tasks, its members hold roles, and its communication paths decide who may reach whom.`),H=v(`<p role=alert class=wt-error>`),U=v(`<p class=muted>Loading teams…`),W=v(`<div class=tm-empty-state><p>No teams yet.</p><button type=button class="btn primary">Create your first team`),G=v(`<ul class=tm-cards aria-label=Teams>`),K=v(`<label class="wt-check tm-archived-toggle"><input type=checkbox><span>Show `),q=v(`<button type=button class="btn small primary">New team`),J=v(`<span class="tm-badge warn">Paused`),Y=v(`<span class="tm-badge warn">Archived`),X=v(`<span class=tm-badge>Unpublished draft`),Z=v(`<span class=tm-warn> · `),re=v(`<div><dt class=sr-only>Work</dt><dd>`),ie=v(`<ul class=tm-tags aria-label=Tags>`),ae=v(`<li class=tm-card><div class=tm-card-head><a class=tm-card-title></a><span class=muted>#</span></div><div class=tm-badges><span></span></div><dl class=tm-card-facts><div><dt class=sr-only>Entry role</dt><dd>Entry role: </dd></div><div><dt class=sr-only>Members</dt><dd>`),oe=v(`<li>`),se=v(`<a class=tm-back href=/teams>← All teams`),ce=v(`<p class=tm-draft-note>'s roles or paths. <button type=button class=tm-linkish>Review them`),le=v(`<div class=tm-detail><section class=tm-head aria-label=Team><div class=tm-head-main><span class="muted tm-handle">#</span><div class=tm-badges><span></span><span class=tm-badge>Entry role: </span></div></div><div class="te-row tm-head-actions"><button type=button class="btn small"></button><button type=button class="btn small"></button><a class="btn small">Edit in Watchtower</a></div></section><div class=tm-tabs role=tablist aria-label="Team sections"></div><div class=tm-panel role=tabpanel>`),ue=v(`<p class=muted>Loading the team…`),de=v(`<span class=tm-tab-count>`),fe=v(`<button type=button role=tab class=tm-tab>`),pe=v(`<section class=tm-section aria-labelledby=tm-submit-h><h2 id=tm-submit-h>Submit a task`),me=v(`<section class=tm-section aria-labelledby=tm-intake-h><h2 id=tm-intake-h>Tasks`),he=v(`<section class=tm-section aria-labelledby=tm-live-h><h2 id=tm-live-h>Live now (version <!>)`),ge=v(`<section class=tm-section aria-labelledby=tm-mode-h><h2 id=tm-mode-h>Mode`),_e=v(`<section class=tm-section aria-labelledby=tm-roles-h><h2 id=tm-roles-h>Roles`),ve=v(`<section class=tm-section aria-labelledby=tm-paths-h><h2 id=tm-paths-h>Paths`),ye=v(`<p class=muted>Projects: `),be=v(`<section class=tm-section aria-labelledby=tm-details-h><h2 id=tm-details-h>Details`),xe=v(`<section class=tm-section aria-labelledby=tm-history-h><h2 id=tm-history-h>History`);function Q(e){return t(i,{get when(){return e.rest[0]},keyed:!0,get fallback(){return t(Se,{})},children:e=>t(Te,{id:e})})}function Se(){let[n,l]=a(),[f,m]=a(``),[h,g]=a(!1),[_,v]=a(!1),x=async()=>{try{let e=await C(`all`);l(t=>e.map(e=>t?.find(t=>t.id===e.id&&t.seatsFilled!==void 0)??L(e)).map((t,n)=>({...t,...e[n]}))),m(``);let t=[...e],n=async()=>{for(let e=t.shift();e;e=t.shift()){let t=e,n=await B(t.id).catch(()=>void 0);n&&l(e=>e?.map(e=>e.id===t.id?L(t,n.roster,n.intake):e))}};await Promise.all([n(),n(),n(),n()])}catch(t){m(t instanceof e&&t.status===404?`This hub doesn't have teams yet.`:M(t).message)}};d(()=>void x()),R(x,()=>(n()??[]).some(e=>(e.openIntake??0)>0));let S=o(()=>(n()??[]).filter(e=>_()||e.state!==`archived`)),w=o(()=>(n()??[]).filter(e=>e.state===`archived`).length);return t(b,{title:`Teams`,get actions(){return(()=>{var e=q();return e.$$click=()=>g(!0),c(()=>e.disabled=!!f()),e})()},get children(){return[V(),t(s,{get children(){return[t(u,{get when(){return f()},get children(){var e=H();return p(e,f),e}}),t(u,{get when(){return!n()},get children(){return U()}}),t(u,{get when(){return n().length===0},get children(){var e=W(),t=e.firstChild.nextSibling;return t.$$click=()=>g(!0),e}}),t(u,{get when(){return n()},get children(){return[(()=>{var e=G();return p(e,t(r,{get each(){return S().map(e=>e.id)},children:e=>t(i,{get when(){return S().find(t=>t.id===e)},children:e=>t(Ce,{get card(){return e()}})})})),e})(),t(i,{get when(){return w()},get children(){var e=K(),t=e.firstChild,n=t.nextSibling;return n.firstChild,t.addEventListener(`change`,e=>v(e.currentTarget.checked)),p(n,()=>y(w(),`archived team`),null),c(()=>t.checked=_()),e}})]}})]}}),t(P,{get open(){return h()},onClose:()=>g(!1)})]}})}function Ce(e){let n=()=>e.card;return(()=>{var e=ae(),a=e.firstChild,o=a.firstChild,s=o.nextSibling;s.firstChild;var l=a.nextSibling,u=l.firstChild,d=l.nextSibling,f=d.firstChild,h=f.firstChild.nextSibling;h.firstChild;var v=f.nextSibling.firstChild.nextSibling;return p(o,()=>n().title),p(s,()=>n().name,null),p(u,()=>n().mode===`open`?`Open`:`Restricted`),p(l,t(i,{get when(){return n().paused},get children(){return J()}}),null),p(l,t(i,{get when(){return n().state===`archived`},get children(){return Y()}}),null),p(l,t(i,{get when(){return n().hasDraft},get children(){return X()}}),null),p(h,()=>n().entryRole,null),p(v,(()=>{var e=g(()=>n().seatsFilled===void 0);return()=>e()?`${y(n().roles,`role`)}`:`${y(n().seatsFilled,`seat`)} filled`})(),null),p(v,t(i,{get when(){return n().vacantRoles.length},get children(){var e=Z();return e.firstChild,p(e,(()=>{var e=g(()=>n().vacantRoles.length===1);return()=>e()?`${n().vacantRoles[0]} vacant`:`${n().vacantRoles.length} roles vacant`})(),null),e}}),null),p(d,t(i,{get when(){return n().openIntake!==void 0},get children(){var e=re(),t=e.firstChild.nextSibling;return p(t,(()=>{var e=g(()=>!!n().openIntake);return()=>e()?`${y(n().openIntake,`open task`)}`:`No open work`})()),e}}),null),p(e,t(i,{get when(){return n().tags.length},get children(){var e=ie();return p(e,t(r,{get each(){return[...n().tags]},children:e=>(()=>{var t=oe();return p(t,e),t})()})),e}}),null),c(t=>{var r=!!n().paused,i=n().state===`archived`,a=F(n().id),s=`tm-badge tm-mode-${n().mode}`;return r!==t.e&&e.classList.toggle(`paused`,t.e=r),i!==t.t&&e.classList.toggle(`archived`,t.t=i),a!==t.a&&m(o,`href`,t.a=a),s!==t.o&&_(u,t.o=s),t},{e:void 0,t:void 0,a:void 0,o:void 0}),e})()}var $=[{id:`members`,label:`Members`},{id:`work`,label:`Work`},{id:`communication`,label:`Communication`},{id:`details`,label:`Details`}];function we(){let[e,t]=a(),n=()=>void S(x({window:`24h`},Date.now())).then(t).catch(()=>t(e=>e??{nodes:[],edges:[],at:Date.now()}));return d(n),Object.assign(e,{reload:n})}function Te(e){let a=we(),f=k(e.id,{intake:!0,onChanged:()=>a.reload()});d(()=>void f.load()),R(async()=>{await f.refresh()},f.openWork);let v=o(()=>{let e=l().searchParams.get(`tab`);return $.some(t=>t.id===e)?e:`members`}),y=t=>n(`${F(e.id)}${t===`members`?``:`?tab=${t}`}`,{replace:!0}),x=e=>{let t=$.findIndex(e=>e.id===v()),n=e.key===`ArrowRight`?(t+1)%$.length:e.key===`ArrowLeft`?(t+$.length-1)%$.length:e.key===`Home`?0:e.key===`End`?$.length-1:-1;n<0||(e.preventDefault(),y($[n].id),queueMicrotask(()=>document.getElementById(`tm-tab-${$[n].id}`)?.focus()))},S=()=>f.spec()?.title||f.team()?.title||`Team`;return t(b,{get title(){return g(()=>!!f.team())()?f.read().published.title||f.team().name:`Team`},get children(){return[se(),t(i,{get when(){return f.loadError()},get children(){var e=H();return p(e,()=>f.loadError()),e}}),t(i,{get when(){return g(()=>!!f.team())()&&f.spec()},get fallback(){return t(i,{get when(){return!f.loadError()},get children(){return ue()}})},get children(){var e=le(),n=e.firstChild,o=n.firstChild,l=o.firstChild;l.firstChild;var d=l.nextSibling,b=d.firstChild,C=b.nextSibling;C.firstChild;var w=o.nextSibling.firstChild,T=w.nextSibling,E=T.nextSibling,D=n.nextSibling,O=D.nextSibling;return h(e,`keydown`,f.onKey,!0),p(l,()=>f.team().name,null),p(b,()=>f.read().published.mode===`open`?`Open`:`Restricted`),p(C,()=>f.read().published.entryRole,null),p(d,t(i,{get when(){return f.team().paused},get children(){return J()}}),null),p(d,t(i,{get when(){return f.team().state===`archived`},get children(){return Y()}}),null),w.$$click=()=>void f.togglePause(),p(w,()=>f.team().paused?`Resume`:`Pause`),T.$$click=()=>void f.toggleArchive(),p(T,()=>f.team().state===`archived`?`Restore`:`Archive`),p(e,t(j,{get notice(){return f.notice()}}),D),p(e,t(i,{get when(){return g(()=>!!(f.dirty()||f.team().hasDraft))()&&(v()===`members`||v()===`work`)},get children(){var e=ce(),t=e.firstChild,n=t.nextSibling;return p(e,()=>f.dirty()?`You have unsaved changes to `:`An unpublished draft changes `,t),p(e,S,t),n.$$click=()=>y(`communication`),e}}),D),D.$$keydown=x,p(D,t(r,{each:$,children:e=>(()=>{var n=fe();return n.$$click=()=>y(e.id),p(n,()=>e.label,null),p(n,t(i,{get when(){return g(()=>e.id===`work`)()&&f.items()?.some(e=>e.status===`queued`||e.status===`routed`)},get children(){var e=de();return p(e,()=>f.items().filter(e=>e.status===`queued`||e.status===`routed`).length),e}}),null),c(t=>{var r=`tm-tab-${e.id}`,i=v()===e.id,a=`tm-panel-${e.id}`,o=v()===e.id?0:-1;return r!==t.e&&m(n,`id`,t.e=r),i!==t.t&&m(n,`aria-selected`,t.t=i),a!==t.a&&m(n,`aria-controls`,t.a=a),o!==t.o&&m(n,`tabindex`,t.o=o),t},{e:void 0,t:void 0,a:void 0,o:void 0}),n})()})),p(O,t(s,{get children(){return[t(u,{get when(){return v()===`members`},get children(){return t(I,{c:f,get snap(){return a()}})}}),t(u,{get when(){return v()===`work`},get children(){return t(Ee,{c:f,get snap(){return a()}})}}),t(u,{get when(){return v()===`communication`},get children(){return t(De,{c:f})}}),t(u,{get when(){return v()===`details`},get children(){return t(ke,{c:f})}})]}})),c(e=>{var t=`tm-badge tm-mode-${f.read().published.mode}`,n=f.busy()||f.team().state===`archived`,r=f.busy(),i=`/watchtower?view=2d&group=team&edit=${encodeURIComponent(f.team().id)}`,a=`tm-panel-${v()}`,o=`tm-tab-${v()}`;return t!==e.e&&_(b,e.e=t),n!==e.t&&(w.disabled=e.t=n),r!==e.a&&(T.disabled=e.a=r),i!==e.o&&m(E,`href`,e.o=i),a!==e.i&&m(O,`id`,e.i=a),o!==e.n&&m(O,`aria-labelledby`,e.n=o),e},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),e}})]}})}function Ee(e){return[(()=>{var n=pe();return n.firstChild,p(n,t(ne,{get c(){return e.c}}),null),n})(),(()=>{var n=me();return n.firstChild,p(n,t(te,{get c(){return e.c},get snap(){return e.snap}}),null),n})()]}function De(e){let n=e.c;return[t(N,{c:n}),t(w,{c:n}),(()=>{var e=he(),r=e.firstChild,i=r.firstChild.nextSibling;return i.nextSibling,p(r,()=>n.team().version,i),p(e,t(E,{c:n}),null),e})(),(()=>{var e=ge();return e.firstChild,p(e,t(T,{get value(){return n.spec().mode},onChange:e=>n.apply(Oe(n,e)),get name(){return`tm-mode-${n.id}`}}),null),e})(),(()=>{var e=_e();return e.firstChild,p(e,t(O,{c:n}),null),e})(),(()=>{var e=ve();return e.firstChild,p(e,t(z,{c:n}),null),e})()]}var Oe=(e,t)=>D(e.spec(),t);function ke(e){let n=e.c;return[t(N,{c:n}),t(w,{c:n}),(()=>{var e=be();return e.firstChild,p(e,t(A,{c:n}),null),p(e,t(i,{get when(){return n.read().published.projects?.length},get children(){var e=ye();return e.firstChild,p(e,()=>n.read().published.projects.join(`, `),null),e}}),null),e})(),(()=>{var e=xe();return e.firstChild,p(e,t(ee,{c:n}),null),e})()]}f([`click`,`keydown`]);export{Q as default};