@rubytech/create-maxy-code 0.1.148 → 0.1.151

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 (84) hide show
  1. package/package.json +1 -1
  2. package/payload/platform/lib/graph-style/dist/index.d.ts +5 -5
  3. package/payload/platform/lib/graph-style/dist/index.d.ts.map +1 -1
  4. package/payload/platform/lib/graph-style/dist/index.js +11 -9
  5. package/payload/platform/lib/graph-style/dist/index.js.map +1 -1
  6. package/payload/platform/lib/graph-style/src/index.ts +11 -9
  7. package/payload/platform/lib/graph-trash/dist/index.js +6 -6
  8. package/payload/platform/lib/graph-trash/dist/index.js.map +1 -1
  9. package/payload/platform/lib/graph-trash/src/index.ts +6 -6
  10. package/payload/platform/neo4j/edge-annotations.json +4 -4
  11. package/payload/platform/neo4j/schema.cypher +107 -46
  12. package/payload/platform/plugins/admin/PLUGIN.md +1 -1
  13. package/payload/platform/plugins/admin/hooks/__tests__/{post-turn-graph-pass.test.sh → pre-turn-graph-pass.test.sh} +184 -112
  14. package/payload/platform/plugins/admin/hooks/archive-ingest-surface-gate.sh +2 -2
  15. package/payload/platform/plugins/admin/hooks/{post-turn-graph-pass.sh → pre-turn-graph-pass.sh} +83 -53
  16. package/payload/platform/plugins/docs/references/linkedin-extension.md +1 -1
  17. package/payload/platform/plugins/docs/references/platform.md +1 -1
  18. package/payload/platform/plugins/docs/references/plugins-guide.md +2 -2
  19. package/payload/platform/plugins/linkedin-import/skills/linkedin-import/SKILL.md +5 -5
  20. package/payload/platform/plugins/memory/.claude-plugin/plugin.json +1 -1
  21. package/payload/platform/plugins/memory/PLUGIN.md +4 -4
  22. package/payload/platform/plugins/memory/bin/conversation-archive-ingest.mjs +5 -5
  23. package/payload/platform/plugins/memory/bin/conversation-archive-ingest.sh +1 -1
  24. package/payload/platform/plugins/memory/mcp/dist/index.js +14 -14
  25. package/payload/platform/plugins/memory/mcp/dist/index.js.map +1 -1
  26. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-citation-audit.d.ts +1 -1
  27. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-citation-audit.js +2 -2
  28. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-orphans.d.ts +1 -1
  29. package/payload/platform/plugins/memory/mcp/dist/lib/dream-cycle/phase-orphans.js +1 -1
  30. package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.d.ts +2 -2
  31. package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.d.ts.map +1 -1
  32. package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.js +3 -4
  33. package/payload/platform/plugins/memory/mcp/dist/lib/llm-classifier.js.map +1 -1
  34. package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-schema.d.ts.map +1 -1
  35. package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-schema.js +6 -0
  36. package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-schema.js.map +1 -1
  37. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights.test.js +2 -2
  38. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/conversation-archive-derive-insights.test.js.map +1 -1
  39. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest.test.js +17 -17
  40. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest.test.js.map +1 -1
  41. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-derive-insights.d.ts +3 -3
  42. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-derive-insights.js +6 -6
  43. package/payload/platform/plugins/memory/mcp/dist/tools/conversation-archive-derive-insights.js.map +1 -1
  44. package/payload/platform/plugins/memory/mcp/dist/tools/memory-delete.d.ts +1 -1
  45. package/payload/platform/plugins/memory/mcp/dist/tools/memory-delete.js +9 -3
  46. package/payload/platform/plugins/memory/mcp/dist/tools/memory-delete.js.map +1 -1
  47. package/payload/platform/plugins/memory/mcp/dist/tools/memory-empty-trash.d.ts +2 -0
  48. package/payload/platform/plugins/memory/mcp/dist/tools/memory-empty-trash.d.ts.map +1 -1
  49. package/payload/platform/plugins/memory/mcp/dist/tools/memory-empty-trash.js.map +1 -1
  50. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.d.ts +6 -5
  51. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.d.ts.map +1 -1
  52. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.js +30 -29
  53. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.js.map +1 -1
  54. package/payload/platform/plugins/memory/mcp/dist/tools/memory-restore.d.ts +1 -1
  55. package/payload/platform/plugins/memory/mcp/dist/tools/memory-restore.js +4 -1
  56. package/payload/platform/plugins/memory/mcp/dist/tools/memory-restore.js.map +1 -1
  57. package/payload/platform/plugins/memory/references/schema-base.md +2 -2
  58. package/payload/platform/plugins/memory/skills/conversation-archive/SKILL.md +12 -12
  59. package/payload/platform/plugins/scheduling/skills/daily-prep/SKILL.md +2 -2
  60. package/payload/platform/plugins/whatsapp/PLUGIN.md +1 -1
  61. package/payload/platform/plugins/x-import/PLUGIN.md +3 -3
  62. package/payload/platform/plugins/x-import/skills/x-import/SKILL.md +7 -7
  63. package/payload/platform/scripts/seed-neo4j.sh +3 -3
  64. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
  65. package/payload/platform/services/claude-session-manager/dist/http-server.js +22 -3
  66. package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
  67. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts +16 -1
  68. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
  69. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +29 -3
  70. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
  71. package/payload/platform/templates/agents/admin/IDENTITY.md +7 -7
  72. package/payload/platform/templates/specialists/agents/database-operator.md +6 -6
  73. package/payload/platform/templates/specialists/agents/librarian.md +2 -2
  74. package/payload/server/public/assets/{admin-_pm0RRTE.js → admin-CnLGltuE.js} +1 -1
  75. package/payload/server/public/assets/{data-b6q64Ot4.js → data-MB2EWZUP.js} +1 -1
  76. package/payload/server/public/assets/{graph-D1SVlBLb.js → graph-B2FnDRz-.js} +1 -1
  77. package/payload/server/public/assets/graph-labels-DDYqDlu3.js +1 -0
  78. package/payload/server/public/assets/{page-DwFigpyR.js → page-BJKRa6Db.js} +1 -1
  79. package/payload/server/public/assets/{page-BV6E4J2q.js → page-Bx2p3W1k.js} +1 -1
  80. package/payload/server/public/data.html +3 -3
  81. package/payload/server/public/graph.html +3 -3
  82. package/payload/server/public/index.html +4 -4
  83. package/payload/server/server.js +20 -18
  84. package/payload/server/public/assets/graph-labels-BiDGzVs2.js +0 -1
@@ -108,12 +108,12 @@ var require_dist = __commonJS({
108
108
  LocalBusiness: ["accountId"],
109
109
  Task: ["taskId"],
110
110
  Event: ["eventId"],
111
- // :KnowledgeDocument carries two mutually exclusive identifying keys:
112
- // `attachmentId` for the document writer path (file/URL/obsidian) and
113
- // `conversationIdentity` for the conversation-document writer path
114
- // (whatsapp/telegram/.../granola). Trash-snapshot both so MERGE against
115
- // either key clears post-trash.
116
- KnowledgeDocument: ["attachmentId", "conversationIdentity"],
111
+ // :KnowledgeDocument is keyed on `attachmentId` (document writer path —
112
+ // file/URL/obsidian/contract attachment + legacy Gmail-thread shape under
113
+ // `source:'email'`). Task 397 split the conversation transcripts off into
114
+ // `:ConversationArchive`, which carries `conversationIdentity`.
115
+ KnowledgeDocument: ["attachmentId"],
116
+ ConversationArchive: ["conversationIdentity"],
117
117
  DigitalDocument: ["attachmentId"],
118
118
  Conversation: ["conversationId"],
119
119
  Message: ["messageId"],
@@ -715,11 +715,13 @@ var require_dist3 = __commonJS({
715
715
  Preference: "#DFA67A",
716
716
  AdminUser: "#8C5230",
717
717
  AccessGrant: "#66381F",
718
- // Knowledge — moss family (organic). Conversation-document
719
- // parents (:KnowledgeDocument with `conversationIdentity`) share this
720
- // colour with document-path parents because the writer's choice of
721
- // identity key is what distinguishes them, not the label.
718
+ // Knowledge — moss family (organic). :ConversationArchive (Task 397)
719
+ // sits at the cooler/darker end of the same family so chat transcripts
720
+ // read as adjacent to documents on the canvas without colliding with
721
+ // them; the parent label is now the canvas discriminator, not a
722
+ // property heuristic.
722
723
  KnowledgeDocument: "#6E8A5A",
724
+ ConversationArchive: "#4F6B3E",
723
725
  Section: "#8AA876",
724
726
  Chunk: "#A6C194",
725
727
  DigitalDocument: "#5A7548",
@@ -9398,12 +9400,12 @@ var UNIQUE_KEYS_BY_LABEL = {
9398
9400
  LocalBusiness: ["accountId"],
9399
9401
  Task: ["taskId"],
9400
9402
  Event: ["eventId"],
9401
- // :KnowledgeDocument carries two mutually exclusive identifying keys:
9402
- // `attachmentId` for the document writer path (file/URL/obsidian) and
9403
- // `conversationIdentity` for the conversation-document writer path
9404
- // (whatsapp/telegram/.../granola). Trash-snapshot both so MERGE against
9405
- // either key clears post-trash.
9406
- KnowledgeDocument: ["attachmentId", "conversationIdentity"],
9403
+ // :KnowledgeDocument is keyed on `attachmentId` (document writer path —
9404
+ // file/URL/obsidian/contract attachment + legacy Gmail-thread shape under
9405
+ // `source:'email'`). Task 397 split the conversation transcripts off into
9406
+ // `:ConversationArchive`, which carries `conversationIdentity`.
9407
+ KnowledgeDocument: ["attachmentId"],
9408
+ ConversationArchive: ["conversationIdentity"],
9407
9409
  DigitalDocument: ["attachmentId"],
9408
9410
  Conversation: ["conversationId"],
9409
9411
  Message: ["messageId"],
@@ -12843,7 +12845,7 @@ function buildInitialMessage(env) {
12843
12845
  "- MERGE :Person on canonical key (name + sourceUrl). When the body assertively states currentCompany, MERGE :Organization and create (:Person)-[:WORKS_AT]->(:Organization).",
12844
12846
  "- MERGE any other derived entities only when assertively stated in the body. Use whatever ontology label fits (:Event, :Task, :Service, :PriceSpecification, \u2026). Each carries sourceUrl=" + env.pageUrl + ".",
12845
12847
  "- (:KD)-[:MENTIONS]->(:Person) for the subject, (:KD)-[:MENTIONS]->(:Organization) for the employer, (:KD)-[:MENTIONS]->(<derived entity>) for each.",
12846
- "- No :Communication, conversation-document :KnowledgeDocument rows (i.e. KnowledgeDocument nodes that carry conversationIdentity), or :Message nodes \u2014 those belong to other flows.",
12848
+ "- No :Communication, :ConversationArchive rows (chat transcripts route through the conversation-archive skill), or :Message nodes \u2014 those belong to other flows.",
12847
12849
  "",
12848
12850
  "Subject (assertive):",
12849
12851
  "- name=" + p.name,
@@ -12871,7 +12873,7 @@ function buildInitialMessage(env) {
12871
12873
  "- (:KD)-[:PARTICIPANT]->(:Person) for each participant. MERGE :Person on (name, profileUrl) where present.",
12872
12874
  "- MERGE any derived entity only when assertively stated. Whatever ontology label fits: :Event {startDate, endDate} with ATTENDED_BY edges for scheduled meetings; :Task {kind, name, status} with RAISED_BY/ABOUT edges for actions without a scheduled time; :Service/:PriceSpecification when an offer or price is discussed. Each carries sourceUrl=" + env.pageUrl + ".",
12873
12875
  "- (:KD)-[:MENTIONS]->(<derived entity>) for every derived entity. Person-attached insights stay in the :Section:Note body plus a (:KD)-[:MENTIONS]->(:Person) edge \u2014 no standalone insight node.",
12874
- "- No :Communication, conversation-document :KnowledgeDocument rows (i.e. KnowledgeDocument nodes that carry conversationIdentity), or :Message nodes \u2014 those belong to other flows.",
12876
+ "- No :Communication, :ConversationArchive rows (chat transcripts route through the conversation-archive skill), or :Message nodes \u2014 those belong to other flows.",
12875
12877
  "",
12876
12878
  "Participants:",
12877
12879
  participantList,
@@ -1 +0,0 @@
1
- import{o as e,t}from"./chunk-DD-I1_y5.js";import{a as n,c as r,d as i,f as a,g as o,h as s,m as c,p as l,r as u,t as d,u as f,y as p}from"./ChatInput-CJo_77bp.js";var m=o(`archive-restore`,[[`rect`,{width:`20`,height:`5`,x:`2`,y:`3`,rx:`1`,key:`1wp1u1`}],[`path`,{d:`M4 8v11a2 2 0 0 0 2 2h2`,key:`tvwodi`}],[`path`,{d:`M20 8v11a2 2 0 0 1-2 2h-2`,key:`1gkqxj`}],[`path`,{d:`m9 15 3-3 3 3`,key:`1pd0qc`}],[`path`,{d:`M12 12v9`,key:`192myk`}]]),h=o(`archive`,[[`rect`,{width:`20`,height:`5`,x:`2`,y:`3`,rx:`1`,key:`1wp1u1`}],[`path`,{d:`M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8`,key:`1s80jp`}],[`path`,{d:`M10 12h4`,key:`a56b0p`}]]),g=o(`bot`,[[`path`,{d:`M12 8V4H8`,key:`hb8ula`}],[`rect`,{width:`16`,height:`12`,x:`4`,y:`8`,rx:`2`,key:`enze0r`}],[`path`,{d:`M2 14h2`,key:`vft8re`}],[`path`,{d:`M20 14h2`,key:`4cs60a`}],[`path`,{d:`M15 13v2`,key:`1xurst`}],[`path`,{d:`M9 13v2`,key:`rq6x2g`}]]),_=o(`box`,[[`path`,{d:`M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z`,key:`hh9hay`}],[`path`,{d:`m3.3 7 8.7 5 8.7-5`,key:`g66t2b`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}]]),v=o(`check`,[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]),y=o(`corner-down-left`,[[`path`,{d:`M20 4v7a4 4 0 0 1-4 4H4`,key:`6o5b7l`}],[`path`,{d:`m9 10-5 5 5 5`,key:`1kshq7`}]]),b=o(`database`,[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`,key:`1wlel7`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`,key:`mv7ke4`}]]),x=o(`external-link`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]),S=o(`info`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]),C=o(`list-todo`,[[`path`,{d:`M13 5h8`,key:`a7qcls`}],[`path`,{d:`M13 12h8`,key:`h98zly`}],[`path`,{d:`M13 19h8`,key:`c3s6r1`}],[`path`,{d:`m3 17 2 2 4-4`,key:`1jhpwq`}],[`rect`,{x:`3`,y:`4`,width:`6`,height:`6`,rx:`1`,key:`cif1o7`}]]),w=o(`loader-circle`,[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]]),T=o(`log-out`,[[`path`,{d:`m16 17 5-5-5-5`,key:`1bji2h`}],[`path`,{d:`M21 12H9`,key:`dn1m92`}],[`path`,{d:`M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4`,key:`1uf3rs`}]]),E=o(`menu`,[[`path`,{d:`M4 5h16`,key:`1tepv9`}],[`path`,{d:`M4 12h16`,key:`1lakjw`}],[`path`,{d:`M4 19h16`,key:`1djgab`}]]),ee=o(`panel-right-open`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M15 3v18`,key:`14nvp0`}],[`path`,{d:`m10 15-3-3 3-3`,key:`1pgupc`}]]),D=o(`panel-right`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M15 3v18`,key:`14nvp0`}]]),O=o(`pencil`,[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`,key:`1a8usu`}],[`path`,{d:`m15 5 4 4`,key:`1mk7zo`}]]),k=o(`plus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]),te=o(`refresh-cw`,[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`,key:`v9h5vc`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`,key:`3uifl3`}],[`path`,{d:`M8 16H3v5`,key:`1cv678`}]]),ne=o(`search`,[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]),re=o(`share-2`,[[`circle`,{cx:`18`,cy:`5`,r:`3`,key:`gq8acd`}],[`circle`,{cx:`6`,cy:`12`,r:`3`,key:`w7nqdw`}],[`circle`,{cx:`18`,cy:`19`,r:`3`,key:`1xt0gg`}],[`line`,{x1:`8.59`,x2:`15.42`,y1:`13.51`,y2:`17.49`,key:`47mynk`}],[`line`,{x1:`15.41`,x2:`8.59`,y1:`6.51`,y2:`10.49`,key:`1n3mei`}]]),ie=o(`square`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}]]),ae=o(`terminal`,[[`path`,{d:`M12 19h8`,key:`baeox8`}],[`path`,{d:`m4 17 6-6-6-6`,key:`1yngyt`}]]),oe=o(`users`,[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`path`,{d:`M16 3.128a4 4 0 0 1 0 7.744`,key:`16gr8j`}],[`path`,{d:`M22 21v-2a4 4 0 0 0-3-3.87`,key:`kshegd`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}]]),se=o(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]),A=e(p(),1),j=f(),M=`maxy-shell-side-px`;function ce(){if(typeof window>`u`)return 0;let e=document.querySelector(`.platform > .artefact`)?.getBoundingClientRect();return e&&e.width>0?Math.round(e.width):0}function N(e){if(typeof window>`u`)return e;let t=window.innerWidth,n=Math.max(248,t-480-ce());return Math.min(Math.max(e,248),n)}function le(){if(typeof window>`u`)return 264;try{let e=window.localStorage.getItem(M);if(!e)return 264;let t=parseInt(e,10);if(Number.isFinite(t)&&t>=248)return N(t)}catch{}return 264}function ue({targetSelector:e=`.platform`}){let t=(0,A.useRef)(null),[n,r]=(0,A.useState)(()=>le()),i=(0,A.useRef)(n);(0,A.useEffect)(()=>{let t=document.querySelector(e);!t||!(t instanceof HTMLElement)||(t.style.setProperty(`--side-px`,`${n}px`),i.current=n)},[n,e]);let a=(0,A.useCallback)(()=>{r(e=>{let t=N(e);return t===e?e:t})},[]);(0,A.useEffect)(()=>{a(),window.addEventListener(`resize`,a);let t=document.querySelector(e),n=null;return t instanceof HTMLElement&&(n=new MutationObserver(a),n.observe(t,{attributes:!0,attributeFilter:[`data-artefact`,`class`]})),()=>{window.removeEventListener(`resize`,a),n?.disconnect()}},[a,e]);let o=e=>{e.preventDefault();let n=t.current;if(!n)return;n.setPointerCapture(e.pointerId),n.classList.add(`dragging`);let a=!1,o=e=>{a=!0,r(N(Math.round(e.clientX)))},s=()=>{if(n.releasePointerCapture(e.pointerId),n.classList.remove(`dragging`),window.removeEventListener(`pointermove`,o),window.removeEventListener(`pointerup`,s),!a)return;let t=i.current;try{window.localStorage.setItem(M,String(t))}catch{}console.info(`[admin-ui] sidebar-resize px=${t}`)};window.addEventListener(`pointermove`,o),window.addEventListener(`pointerup`,s)},s=()=>{let e=N(264);r(e);try{window.localStorage.removeItem(M)}catch{}console.info(`[admin-ui] sidebar-resize px=${e}`)};return(0,j.jsx)(`div`,{ref:t,className:`side-resize-handle`,role:`separator`,"aria-orientation":`vertical`,"aria-label":`Resize sidebar`,onPointerDown:o,onDoubleClick:s})}var de=!1;function fe(){let e=crypto.getRandomValues(new Uint8Array(16));e[6]=e[6]&15|64,e[8]=e[8]&63|128;let t=Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(``);return`${t.slice(0,8)}-${t.slice(8,12)}-${t.slice(12,16)}-${t.slice(16,20)}-${t.slice(20)}`}function P(){let e=typeof crypto<`u`&&typeof crypto.randomUUID==`function`;if(!de){de=!0;let t=typeof window<`u`&&`isSecureContext`in window?window.isSecureContext:!1;console.info(`[idempotency] uuid-source=${e?`native`:`getRandomValues`} secureContext=${t}`)}return e?crypto.randomUUID():fe()}function pe(e){let t=e.trim();return t.length>=1&&t.length<=200}function F(e,t,n,r){let i=e===`pane`?`pane-action`:`sidebar-${t}`;console.info(`[admin-ui] ${i} sessionId=${n.slice(0,8)} action=${t} outcome=${r}`)}var me=/session_([A-Za-z0-9_-]+)/;function he(e){if(!e)return null;let t=e.match(me);return t?t[1]:null}async function ge(e,t,n,r,i){let a=he(r)??`unknown`,o=e=>e.slice(0,8),s=t===`pane`?`pane-action action=resume-archive`:`sidebar-resume-archive`,c;try{let t=await fetch(`/api/admin/claude-sessions/${encodeURIComponent(n)}/archive?session_key=${encodeURIComponent(e)}`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({mode:`archive`})});c=t.ok?`ok`:t.status===409?`409`:`error`;let r=`[admin-ui] ${s} sourceSessionId=${o(n)} newSessionId=${o(a)} result=${c}`;c===`error`?console.error(r):console.info(r)}catch(e){let t=e instanceof Error?e.message:String(e);console.error(`[admin-ui] ${s} sourceSessionId=${o(n)} newSessionId=${o(a)} result=error detail=${t}`)}finally{i.refetch()}}function _e(e,t,n=`pane`){let[r,i]=(0,A.useState)(null),a=(0,A.useRef)(!1),o=(0,A.useCallback)(async r=>{if(!e)return{ok:!1,error:`no-cache-key`};if(a.current)return F(n,`resume`,r,`skipped-in-flight`),{ok:!1,error:`in-flight`};a.current=!0,i(`resume`);let o=P();try{let i=await fetch(`/api/admin/claude-sessions/resume?session_key=${encodeURIComponent(e)}`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({sessionId:r,channel:`browser`,idempotencyKey:o})}),a=await i.json();if(!i.ok||!(`sessionId`in a)){let e=a.error??`POST returned ${i.status}`;return F(n,`resume`,r,String(i.status)),{ok:!1,error:e}}return t.setSessions(e=>[a,...e.filter(e=>e.sessionId!==r)]),F(n,`resume`,r,`200`),ge(e,n,r,a.url,t),{ok:!0}}catch(e){let i=e instanceof Error?e.message:String(e);return F(n,`resume`,r,`threw`),t.refetch(),{ok:!1,error:i}}finally{a.current=!1,i(null)}},[e,t,n]),s=(0,A.useCallback)(async r=>{if(!e)return{ok:!1,error:`no-cache-key`};i(`end`);try{let i=await fetch(`/api/admin/claude-sessions/${encodeURIComponent(r)}/stop?session_key=${encodeURIComponent(e)}`,{method:`POST`});if(!i.ok){let e=await i.text().catch(()=>``);return F(n,`end`,r,String(i.status)),t.refetch(),{ok:!1,error:`POST /stop ${i.status} ${e.slice(0,200)}`}}return F(n,`end`,r,`204`),t.refetch(),{ok:!0}}catch(e){let i=e instanceof Error?e.message:String(e);return F(n,`end`,r,`threw`),t.refetch(),{ok:!1,error:i}}finally{i(null)}},[e,t,n]),c=(0,A.useCallback)(async r=>{if(!e)return{ok:!1,error:`no-cache-key`};i(`purge`);try{let i=await fetch(`/api/admin/claude-sessions/${encodeURIComponent(r)}?purge=1&session_key=${encodeURIComponent(e)}`,{method:`DELETE`});if(!i.ok){let e=await i.json().catch(()=>({})),t=e.detail||e.error||`DELETE ?purge=1 ${i.status}`;return F(n,`purge`,r,String(i.status)),{ok:!1,error:t}}return t.setSessions(e=>e.filter(e=>e.sessionId!==r)),F(n,`purge`,r,`200`),t.refetch(),{ok:!0}}catch(e){let t=e instanceof Error?e.message:String(e);return F(n,`purge`,r,`threw`),{ok:!1,error:t}}finally{i(null)}},[e,t,n]),l=(0,A.useCallback)(async(r,a)=>{if(!e)return{ok:!1,error:`no-cache-key`};i(a);try{let i=await fetch(`/api/admin/claude-sessions/${encodeURIComponent(r)}/archive?session_key=${encodeURIComponent(e)}`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({mode:a})});if(!i.ok){let e=await i.json().catch(()=>({})),t=e.detail||e.error||`POST /archive ${i.status}`;return F(n,a,r,String(i.status)),{ok:!1,error:t}}return a===`archive`&&t.setSessions(e=>e.filter(e=>e.sessionId!==r)),t.refetch(),F(n,a,r,`200`),{ok:!0}}catch(e){let t=e instanceof Error?e.message:String(e);return F(n,a,r,`threw`),{ok:!1,error:t}}finally{i(null)}},[e,t,n]);return{inFlight:r,resume:o,end:s,purge:c,archive:(0,A.useCallback)(e=>l(e,`archive`),[l]),unarchive:(0,A.useCallback)(e=>l(e,`unarchive`),[l]),rename:(0,A.useCallback)(async(t,r)=>{if(!e)return{ok:!1,error:`no-cache-key`};i(`rename`);try{let i=await fetch(`/api/admin/claude-sessions/${encodeURIComponent(t)}/rename?session_key=${encodeURIComponent(e)}`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({title:r})});if(!i.ok){let e=await i.json().catch(()=>({})),r=e.detail||e.error||`POST /rename ${i.status}`;return F(n,`rename`,t,String(i.status)),{ok:!1,error:r,reason:e.reason}}return F(n,`rename`,t,`200`),{ok:!0}}catch(e){let r=e instanceof Error?e.message:String(e);return F(n,`rename`,t,`threw`),{ok:!1,error:r}}finally{i(null)}},[e,n])}}function ve(e){return`code.session.pinned.${e}`}function I(e){if(typeof window>`u`)return new Set;try{let t=window.localStorage.getItem(ve(e));if(!t)return new Set;let n=JSON.parse(t);return Array.isArray(n)?new Set(n.filter(e=>typeof e==`string`)):new Set}catch{return new Set}}function ye(e,t){if(!(typeof window>`u`))try{window.localStorage.setItem(ve(e),JSON.stringify([...t]))}catch{}}function be(e){let[t,n]=(0,A.useState)(()=>I(e));(0,A.useEffect)(()=>{n(I(e))},[e]);let r=(0,A.useCallback)(t=>{n(n=>{let r=new Set(n);return r.has(t)?r.delete(t):r.add(t),ye(e,r),r})},[e]);return{pinned:t,isPinned:(0,A.useCallback)(e=>t.has(e),[t]),togglePin:r}}function L(e){let{businessName:t,onNavigate:a,onToggleSidebar:o,sidebarOpen:s,onLogout:c}=e,[l,u]=(0,A.useState)(!1),d=(0,A.useRef)(null),f=(0,A.useRef)(null),[p,m]=(0,A.useState)(null),[h,g]=(0,A.useState)(!1),[_,y]=(0,A.useState)(null),[C,O]=(0,A.useState)(null),[k,te]=(0,A.useState)(null),[ne,ie]=(0,A.useState)(``);(0,A.useEffect)(()=>{ie(window.location.hostname.startsWith(`admin.`)?window.location.origin.replace(`admin.`,`public.`):window.location.origin)},[]),(0,A.useEffect)(()=>{if(!l)return;let e=e=>{d.current&&!d.current.contains(e.target)&&u(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[l]),(0,A.useEffect)(()=>{if(!l)return;let e=e=>{e.key===`Escape`&&u(!1)};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[l]),(0,A.useEffect)(()=>{l&&f.current?.focus()},[l]),(0,A.useEffect)(()=>{if(!l)return;let e=!1;return fetch(`/api/admin/version`).then(e=>e.json()).then(t=>{e||te(t)}).catch(e=>{console.error(`[admin/version] menu-open client fetch failed:`,e)}),()=>{e=!0}},[l]);let ae=(0,A.useCallback)(()=>{u(e=>{let t=!e;return t&&console.info(`[admin-ui] header-menu-open`),t})},[]),oe=(0,A.useCallback)(e=>{u(!1),a(e)},[a]),M=(0,A.useCallback)(async()=>{if(p!==null){m(null),O(null);return}g(!0),y(null);try{let e=await fetch(`/api/admin/agents`);if(!e.ok)throw Error(`Failed to load agents`);m((await e.json()).agents??[])}catch(e){console.error(`[admin/agents] list failed:`,e),y(e instanceof Error?e.message:String(e)),m([])}finally{g(!1)}},[p]),ce=(0,A.useCallback)(e=>{O(null),m(t=>t?.filter(t=>t.slug!==e)??null),fetch(`/api/admin/agents/${encodeURIComponent(e)}`,{method:`DELETE`}).catch(e=>console.error(`[admin/agents] delete failed:`,e))},[]),N=(0,A.useCallback)(()=>{u(!1),c()},[c]),le=t||n.productName;return(0,j.jsxs)(`header`,{className:`admin-header`,children:[(0,j.jsx)(`button`,{type:`button`,className:`admin-sidebar-toggle`,"aria-label":s?`Hide sidebar`:`Show sidebar`,title:s?`Hide sidebar`:`Show sidebar`,"aria-expanded":s,onClick:o,children:s?(0,j.jsx)(ee,{size:20,strokeWidth:1.5}):(0,j.jsx)(D,{size:20,strokeWidth:1.5})}),(0,j.jsxs)(`div`,{className:`chat-header-label`,children:[(0,j.jsx)(`span`,{className:`chat-logo-btn`,"aria-hidden":`true`,children:(0,j.jsx)(`img`,{src:r,alt:``,className:`chat-logo`})}),(0,j.jsx)(`h1`,{className:`chat-tagline`,children:le})]}),(0,j.jsxs)(`div`,{className:`chat-burger-wrap`,ref:d,children:[(0,j.jsx)(`button`,{type:`button`,className:`admin-burger`,onClick:ae,"aria-label":`Menu`,"aria-haspopup":`true`,"aria-expanded":l,children:(0,j.jsx)(E,{size:20})}),l&&(0,j.jsxs)(`div`,{className:`admin-menu`,role:`menu`,children:[(0,j.jsxs)(`button`,{ref:f,type:`button`,className:`chat-menu-item`,role:`menuitem`,onClick:()=>oe(`data`),children:[(0,j.jsx)(b,{size:14}),` Data`]}),(0,j.jsxs)(`button`,{type:`button`,className:`chat-menu-item`,role:`menuitem`,onClick:()=>oe(`graph`),children:[(0,j.jsx)(re,{size:14}),` Graph`]}),(0,j.jsx)(`div`,{className:`chat-menu-divider`}),(0,j.jsxs)(`button`,{type:`button`,className:`chat-menu-item`,role:`menuitem`,onClick:M,children:[(0,j.jsx)(x,{size:14}),` Public`,h&&(0,j.jsx)(w,{size:12,className:`spin`})]}),p!==null&&(0,j.jsxs)(`div`,{className:`chat-menu-agents`,children:[_&&(0,j.jsx)(`span`,{className:`chat-menu-agent-error`,children:_}),p.length===0&&!_&&(0,j.jsx)(`span`,{className:`chat-menu-agent-empty`,children:`No public agents configured`}),p.map(e=>(0,j.jsxs)(`div`,{className:`chat-menu-item chat-menu-agent-item`,children:[(0,j.jsx)(`span`,{className:`agent-status-dot ${e.status}`}),(0,j.jsxs)(`span`,{className:`agent-text`,children:[(0,j.jsx)(`span`,{className:`agent-display-name`,children:e.displayName}),(0,j.jsxs)(`span`,{className:`agent-slug`,children:[`/`,e.slug]})]}),C===e.slug?(0,j.jsxs)(`span`,{className:`agent-actions agent-confirm`,children:[(0,j.jsx)(`button`,{type:`button`,className:`agent-action-btn agent-confirm-yes`,title:`Confirm delete`,onClick:()=>ce(e.slug),children:(0,j.jsx)(v,{size:12})}),(0,j.jsx)(`button`,{type:`button`,className:`agent-action-btn agent-confirm-no`,title:`Cancel`,onClick:()=>O(null),children:(0,j.jsx)(se,{size:12})})]}):(0,j.jsxs)(`span`,{className:`agent-actions`,children:[(0,j.jsx)(`a`,{href:`${ne}/${e.slug}`,target:`_blank`,rel:`noopener noreferrer`,className:`agent-action-btn`,title:`Open agent`,onClick:()=>u(!1),children:(0,j.jsx)(x,{size:12})}),(0,j.jsx)(`button`,{type:`button`,className:`agent-action-btn agent-delete-btn`,title:`Delete agent`,onClick:()=>O(e.slug),children:(0,j.jsx)(i,{size:12})})]})]},e.slug))]}),(0,j.jsx)(`div`,{className:`chat-menu-divider`}),(0,j.jsxs)(`div`,{className:`chat-menu-version chat-menu-version-passive`,children:[(0,j.jsx)(S,{size:14}),(0,j.jsxs)(`span`,{className:`version-installed`,children:[k?`v${k.installed}`:`…`,k&&!k.updateAvailable&&(0,j.jsx)(`span`,{className:`version-uptodate-dot`}),k?.updateAvailable&&(0,j.jsx)(`span`,{className:`version-update-dot`})]})]}),(0,j.jsxs)(`button`,{type:`button`,className:`chat-menu-item`,role:`menuitem`,onClick:N,children:[(0,j.jsx)(T,{size:14}),` Log out`]})]})]})]})}var R=`maxy-admin-session`,z=typeof BroadcastChannel<`u`;function xe(e){if(typeof e!=`object`||!e)return!1;let t=e;return t.type===`rotation`&&typeof t.newKey==`string`&&t.newKey.length>0&&(t.surface===`chat`||t.surface===`graph`||t.surface===`data`||t.surface===`sessions`)&&typeof t.ts==`number`}function B(e){if(!z)return()=>{};let t=new BroadcastChannel(R),n=t=>{if(!xe(t.data)){console.warn(`[admin-session-broadcast] outcome=received-malformed payload=${JSON.stringify(t.data)}`);return}e(t.data)};return t.addEventListener(`message`,n),()=>{t.removeEventListener(`message`,n),t.close()}}var Se=`maxy-admin-session-key`;function V(e,t){return`${e}${e.includes(`?`)?`&`:`?`}session_key=${encodeURIComponent(t)}`}async function Ce(e){let t;try{t=await e.clone().json()}catch{return`parse-failed`}if(typeof t!=`object`||!t)return`unknown-401`;let n=t.code;return n===`session-missing`||n===`session-not-registered`||n===`session-expired-age`||n===`grant-expired`?n:`unknown-401`}function we(){try{return sessionStorage.getItem(Se)}catch{return null}}function H(e){let{initialCacheKey:t,surface:n}=e,[r,i]=(0,A.useState)(t),a=(0,A.useRef)(t);(0,A.useEffect)(()=>{a.current=r},[r]),(0,A.useEffect)(()=>{t!==a.current&&(i(t),a.current=t,s(e=>e+1))},[t]);let[o,s]=(0,A.useState)(0),[c,l]=(0,A.useState)(null);(0,A.useEffect)(()=>B(e=>{let t=a.current.slice(0,8),r=e.newKey.slice(0,8);e.newKey!==a.current&&(console.log(`[admin-session-broadcast] outcome=received oldKey=${t} newKey=${r} surface=${n} senderSurface=${e.surface}`),i(e.newKey),s(e=>e+1),l(null))}),[n]);let u=(0,A.useCallback)(()=>{try{sessionStorage.removeItem(Se)}catch{}window.location.href=`/`},[]);return{adminFetch:(0,A.useCallback)(async(e,t)=>{let r=a.current,o=V(e,r),c=await fetch(o,t);if(c.status!==401)return c;let d=await Ce(c);if(d===`session-missing`)return console.warn(`[useAdminFetch] outcome=redirect-to-login reason=${d} surface=${n} path=${e}`),u(),c;if(d!==`session-not-registered`)return console.warn(`[useAdminFetch] outcome=redirect-to-login reason=${d} surface=${n} path=${e}`),l({message:`Your admin session has expired. Click to reload and sign in.`,reason:d}),c;let f=we();if(!f||f===r)return console.warn(`[useAdminFetch] outcome=redirect-to-login reason=session-not-registered-no-fresh-key surface=${n} path=${e}`),l({message:`Your admin session was renewed in another tab. Click to reload.`,reason:`session-not-registered`}),c;i(f),a.current=f,s(e=>e+1),console.log(`[useAdminFetch] outcome=retry-after-rotation oldKey=${r.slice(0,8)} newKey=${f.slice(0,8)} surface=${n} path=${e}`);let p=V(e,f),m=await fetch(p,t);return m.status===401&&(console.warn(`[useAdminFetch] outcome=redirect-to-login reason=second-401-after-retry surface=${n} path=${e}`),l({message:`Your admin session has expired. Click to reload and sign in.`,reason:`session-not-registered`})),m},[u,n]),cacheKey:r,sessionRefetchNonce:o,banner:c,reloadToLogin:u}}var U=`/api/admin/claude-sessions/events`,Te=`admin-session-list-view`,W=`admin-session-list-include-subagents`,Ee=`admin-session-list-include-background`;function De(e){return e===`active`||e===`archived`||e===`all`}function G(){let e={rows:[],view:`active`,includeBackground:!1,connected:!1},t=new Map,n=new Set,r=null,i=null,a=0,o=0,s=null,c=!1,l=!1;function u(){let n=[...t.values()].sort((e,t)=>t.updatedAt===e.updatedAt?e.sessionId<t.sessionId?-1:1:t.updatedAt-e.updatedAt);e={...e,rows:n}}function d(){for(let e of n)e()}function f(e,n){if(e===`row-removed`){let e=n?.sessionId;if(typeof e!=`string`||!t.delete(e))return;u(),d();return}let r=n;if(typeof r.sessionId!=`string`)return;let i={sessionId:r.sessionId,live:r.live===!0,status:r.status===`busy`?`busy`:r.status===`idle`?`idle`:r.status===`detached`?`detached`:`gone`,agentLabel:typeof r.agentLabel==`string`&&r.agentLabel.length>0?r.agentLabel:null,cwd:typeof r.cwd==`string`?r.cwd:null,firstPrompt:typeof r.firstPrompt==`string`&&r.firstPrompt.length>0?r.firstPrompt:null,titleSource:r.titleSource===`user`||r.titleSource===`ai`?r.titleSource:null,updatedAt:typeof r.updatedAt==`number`?r.updatedAt:0,url:typeof r.url==`string`&&r.url.length>0?r.url:null,archived:r.archived===!0};t.set(i.sessionId,i),u(),d()}function p(t){if(r&&s===t||(r&&=(r.close(),null),!t))return;s=t,c=!1,l=!1;let n=V(U,t);try{r=new EventSource(n)}catch(e){console.error(`[admin-ui] session-row-store EventSource construct failed:`,e),h(`auto`);return}r.addEventListener(`open`,()=>{c=!0,a=0,e={...e,connected:!0},d(),console.info(`[admin-ui] session-row-store connected events-received=${o}`)});for(let e of[`row-created`,`row-updated`,`row-archived`,`row-removed`])r.addEventListener(e,t=>{o+=1;try{f(e,JSON.parse(t.data))}catch(t){console.error(`[admin-ui] session-row-store parse failed kind=${e}:`,t)}});r.addEventListener(`error`,()=>{r&&=(r.close(),null),e={...e,connected:!1},d(),!c&&!l&&(l=!0,m(n)),h(`auto`)})}async function m(e){let t=a+1,n=0,r=`unknown`;try{let t=await fetch(e,{method:`GET`});n=t.status,r=t.status>=400&&t.status<500?await Ce(t):`unknown`}catch(e){console.error(`[admin-ui] session-row-store sse-error-probe-failed:`,e);return}if(console.error(`[admin-ui] session-row-store sse-error status=${n} code=${r} attempt=${t}`),n===401&&r===`session-not-registered`){let e=we();if(e&&e!==s){console.info(`[admin-ui] session-row-store outcome=adopt-fresh-key oldKey=${s?.slice(0,8)??`none`} newKey=${e.slice(0,8)}`),i&&=(clearTimeout(i),null),a=0,s=e,p(e);return}console.warn(`[admin-ui] session-row-store outcome=stopped-retry reason=session-not-registered-no-fresh-key cacheKey=${s?.slice(0,8)??`none`}`),i&&=(clearTimeout(i),null);return}}function h(e){if(i)return;a+=1;let t=Math.min(1e3*2**Math.min(a,5),3e4);console.info(`[admin-ui] session-row-store reconnect trigger=${e} attempt=${a} delay-ms=${t}`),i=setTimeout(()=>{i=null,s&&p(s)},t)}function g(){i&&=(clearTimeout(i),null),a=0,r&&=(r.close(),null),console.info(`[admin-ui] session-row-store reconnect trigger=manual attempt=0 delay-ms=0`),s&&p(s)}function _(){if(!(typeof window>`u`))try{let t=window.localStorage.getItem(Te);De(t)&&(e={...e,view:t});let n=window.localStorage.getItem(W);if(n===null){let e=window.localStorage.getItem(Ee);e!==null&&(window.localStorage.setItem(W,e),window.localStorage.removeItem(Ee),n=e,console.info(`[admin-ui] session-list-storage-migrated from=${Ee} to=${W} value=${e}`))}n===`1`&&(e={...e,includeBackground:!0})}catch{}}function v(t){e={...e,view:t};try{window.localStorage.setItem(Te,t)}catch{}d()}function y(t){e={...e,includeBackground:t};try{window.localStorage.setItem(W,t?`1`:`0`)}catch{}d()}function b(e){return n.add(e),()=>{n.delete(e)}}function x(){return e}function S(){r&&=(r.close(),null),i&&=(clearTimeout(i),null),s=null,e={...e,connected:!1}}function C(e,t){f(e,t)}function w(t){e={...e,connected:t},d()}function T(){t.clear(),u(),d()}function E(e){let n=new Set(e),r=0;for(let e of[...t.keys()])n.has(e)||(t.delete(e),r+=1);r!==0&&(console.info(`[admin-ui] session-row-store reconcile evicted=${r} kept=${t.size}`),u(),d())}return _(),{subscribe:b,getSnapshot:x,connect:p,disconnect:S,setView:v,setIncludeBackground:y,reconnectNow:g,reconcileFromList:E,_injectEventForTesting:C,_setConnectedForTesting:w,_clearRowsForTesting:T}}var K=G();K._injectEventForTesting,K.connect,K._setConnectedForTesting,K.getSnapshot,K.reconcileFromList;function Oe(e){let t=(0,A.useSyncExternalStore)(K.subscribe,K.getSnapshot,K.getSnapshot);(0,A.useEffect)(()=>{e&&K.connect(e)},[e]);let n=(0,A.useCallback)(e=>K.setView(e),[]),r=(0,A.useCallback)(e=>K.setIncludeBackground(e),[]),i=(0,A.useCallback)(()=>K.reconnectNow(),[]),a=(0,A.useCallback)(e=>K.reconcileFromList(e),[]);return{rows:t.rows,view:t.view,includeBackground:t.includeBackground,connected:t.connected,setView:n,setIncludeBackground:r,reconnectNow:i,reconcileFromList:a}}function ke(e,t,n){return e.filter(e=>!(t===`active`&&e.archived||t===`archived`&&!e.archived||!n&&e.agentLabel!==null&&e.agentLabel!==`admin`))}var q=6e4,Ae=60*q,J=24*Ae,je=q,Me=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],Ne=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`];function Pe(e){return e<10?`0${e}`:String(e)}function Fe(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime()}function Ie(e,t){if(!Number.isFinite(e)||e<=0||!Number.isFinite(t))return`—`;let n=t-e;if(n<-je)return`—`;let r=n<0?0:n;if(r<q)return`just now`;if(r<Ae)return`${Math.floor(r/q)}m`;if(r<J)return`${Math.floor(r/Ae)}h`;let i=new Date(t),a=new Date(e),o=Math.round((Fe(i)-Fe(a))/J);if(o===1)return`yesterday`;if(o>=2&&o<=6)return Ne[a.getDay()];let s=Pe(a.getDate()),c=Me[a.getMonth()];return a.getFullYear()===i.getFullYear()?`${s} ${c}`:`${s} ${c} ${a.getFullYear()}`}function Le(e=3e4){let[t,n]=(0,A.useState)(()=>Date.now());return(0,A.useEffect)(()=>{let t=setInterval(()=>n(Date.now()),e);return()=>clearInterval(t)},[e]),t}var Re={default:`Ask`,acceptEdits:`Accept edits`,plan:`Plan`,auto:`Auto`,bypassPermissions:`Bypass permissions`},ze=[`default`,`acceptEdits`,`plan`,`auto`,`bypassPermissions`],Be=`Plan does not include auto mode`,Ve=[{value:void 0,label:`Default`},{value:`claude-opus-4-7`,label:`Opus 4.7`},{value:`claude-sonnet-4-6`,label:`Sonnet 4.6`},{value:`claude-haiku-4-5`,label:`Haiku 4.5`}];function He({seedMode:e,seedModel:t,submitting:n,error:r,onSubmit:i,onCancel:a,onErrorClear:o}){let[c,l]=(0,A.useState)(``),[u,f]=(0,A.useState)(e),[p,m]=(0,A.useState)(t),[h,g]=(0,A.useState)(!1),[_,b]=(0,A.useState)(!1),[x,S]=(0,A.useState)(null),C=(0,A.useRef)(null),T=(0,A.useRef)(null),E=(0,A.useRef)(null);(0,A.useEffect)(()=>{C.current?.focus()},[]),(0,A.useEffect)(()=>{let e=!1,t=Date.now();return(async()=>{try{let n=await fetch(`/api/admin/claude-capabilities`);if(!n.ok)throw Error(`status ${n.status}`);let r=await n.json();if(e)return;S(r.autoModeAvailable),console.info(`[admin-ui] capability-fetch ok=true autoModeAvailable=${r.autoModeAvailable} seatTier=${r.seatTier??`null`} ms=${Date.now()-t}`)}catch(n){if(e)return;let r=n instanceof Error?n.message:String(n);console.error(`[admin-ui] capability-fetch ok=false reason="${r}" ms=${Date.now()-t}`)}})(),()=>{e=!0}},[]);let ee=(0,A.useMemo)(()=>e=>e===`auto`&&x===!1,[x]);(0,A.useEffect)(()=>{function e(e){if(e.key===`Escape`){if(h){g(!1),e.stopPropagation();return}if(_){b(!1),e.stopPropagation();return}a(`esc`)}}return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[h,_,a]),(0,A.useEffect)(()=>{if(!h&&!_)return;function e(e){h&&T.current&&!T.current.contains(e.target)&&g(!1),_&&E.current&&!E.current.contains(e.target)&&b(!1)}return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[h,_]);let D=c.trim(),O=D.length>0&&!n,k=(0,A.useCallback)(()=>{if(D.length===0||n)return;let e=window.open(`about:blank`,`_blank`);console.info(`[admin-ui] new-session-modal-placeholder-open outcome=${e===null?`blocked`:`ok`}`),i({message:c,permissionMode:u,model:p,placeholder:e})},[c,u,p,D,n,i]);function te(e){e.preventDefault(),k()}let ne=Ve.find(e=>e.value===p)?.label??`Default`;return(0,j.jsx)(`div`,{role:`dialog`,"aria-modal":`true`,"aria-labelledby":`new-session-modal-title`,className:`new-session-modal-overlay`,onClick:e=>{e.target===e.currentTarget&&a(`backdrop`)},children:(0,j.jsxs)(`div`,{className:`new-session-modal`,children:[(0,j.jsx)(`h2`,{id:`new-session-modal-title`,className:`new-session-modal-title`,children:`New session`}),(0,j.jsxs)(`form`,{className:`new-session-modal-form`,onSubmit:te,children:[(0,j.jsx)(`div`,{className:`chat-form`,children:(0,j.jsx)(d,{ref:C,value:c,onChange:e=>{l(e),r&&o()},placeholder:`What should this session do?`,disabled:n})}),r&&(0,j.jsx)(`div`,{className:`tunnel-route__error`,role:`alert`,children:r}),(0,j.jsxs)(`div`,{className:`new-session-modal-actions`,children:[(0,j.jsxs)(`div`,{className:`new-session-modal-pickers`,children:[(0,j.jsxs)(`div`,{className:`new-session-modal-picker-wrap`,ref:T,children:[(0,j.jsxs)(`button`,{type:`button`,className:`side-mode-trigger`,onClick:()=>{let e=!h;console.info(`[admin-ui] new-session-modal-mode-picker action=${e?`open`:`close`} current=${u}`),g(e)},disabled:n,"aria-haspopup":`menu`,"aria-expanded":h,"aria-label":`Permission mode for this session`,children:[Re[u],(0,j.jsx)(s,{size:12,"aria-hidden":`true`})]}),h&&(0,j.jsxs)(`div`,{className:`side-mode-popover`,role:`menu`,"aria-label":`Mode`,children:[(0,j.jsx)(`div`,{className:`side-mode-popover-head`,children:(0,j.jsx)(`span`,{children:`Mode`})}),ze.map((e,t)=>{let n=ee(e);return(0,j.jsxs)(`button`,{type:`button`,role:`menuitem`,className:`side-mode-popover-item`,disabled:n,title:n?Be:void 0,"aria-disabled":n||void 0,onClick:()=>{n||(console.info(`[admin-ui] new-session-modal-mode-change from=${u} to=${e} trigger=click`),f(e),g(!1))},children:[(0,j.jsx)(`span`,{children:Re[e]}),(0,j.jsxs)(`span`,{className:`side-mode-popover-shortcut`,children:[e===u&&(0,j.jsx)(v,{size:12}),(0,j.jsx)(`span`,{children:t+1})]})]},e)})]})]}),(0,j.jsxs)(`div`,{className:`new-session-modal-picker-wrap`,ref:E,children:[(0,j.jsxs)(`button`,{type:`button`,className:`side-mode-trigger`,onClick:()=>{let e=!_;console.info(`[admin-ui] new-session-modal-model-picker action=${e?`open`:`close`} current=${p??`default`}`),b(e)},disabled:n,"aria-haspopup":`menu`,"aria-expanded":_,"aria-label":`Model for this session`,children:[ne,(0,j.jsx)(s,{size:12,"aria-hidden":`true`})]}),_&&(0,j.jsxs)(`div`,{className:`side-mode-popover`,role:`menu`,"aria-label":`Model`,children:[(0,j.jsx)(`div`,{className:`side-mode-popover-head`,children:(0,j.jsx)(`span`,{children:`Model`})}),Ve.map(e=>(0,j.jsxs)(`button`,{type:`button`,role:`menuitem`,className:`side-mode-popover-item`,onClick:()=>{console.info(`[admin-ui] new-session-modal-model-change from=${p??`default`} to=${e.value??`default`} trigger=click`),m(e.value),b(!1)},children:[(0,j.jsx)(`span`,{children:e.label}),(0,j.jsx)(`span`,{className:`side-mode-popover-shortcut`,children:e.value===p&&(0,j.jsx)(v,{size:12})})]},e.label))]})]})]}),(0,j.jsxs)(`div`,{className:`new-session-modal-buttons`,children:[(0,j.jsx)(`button`,{type:`button`,className:`modal-action-btn`,onClick:()=>a(`button`),disabled:n,children:`Cancel`}),(0,j.jsx)(`button`,{type:`submit`,className:`new-session-modal-submit`,disabled:!O,"aria-label":`Send`,children:n?(0,j.jsx)(w,{size:14,className:`spinning`}):(0,j.jsx)(y,{size:14})})]})]})]})]})})}var Ue=1e4,Y=(0,A.forwardRef)(function(e,t){let{businessName:r,cacheKey:o,role:d,userName:f,userAvatar:p,sessions:y,sessionsLoading:b,sessionsError:S,ensureSessionsLoaded:T,refetchSessions:E,onSelectArtefact:ee,onSelectProjects:D,onSelectPeople:ne,onSelectTasks:re,onSelectAgents:se,onCloseMobileDrawer:M,onSelectSession:ce,selectedSessionId:N,collapsed:le,mobileDrawerOpen:ue,recentsActions:de}=e,[fe,P]=(0,A.useState)(null),[F,me]=(0,A.useState)(null),[he,ge]=(0,A.useState)(!1);(0,A.useEffect)(()=>{T()},[T]);let ve=(0,A.useRef)(null),[I,ye]=(0,A.useState)(!1),[L,R]=(0,A.useState)(`default`),[z,xe]=(0,A.useState)(void 0),B=(0,A.useRef)(null),[Se,V]=(0,A.useState)(null),[Ce,we]=(0,A.useState)(!1),H=(0,A.useRef)(0),U=(0,A.useRef)(new Map),Te=n.productName,W=typeof f==`string`?f:f===null?`name unavailable`:r||Te,Ee=(W.trim().charAt(0)||`?`).toUpperCase(),De=be(n.hostname),G=Oe(o),K=(0,A.useMemo)(()=>{let e=ke(G.rows,G.view,G.includeBackground);if(De.pinned.size===0)return e;let t=[],n=[];for(let r of e)(De.pinned.has(r.sessionId)?t:n).push(r);return[...t,...n]},[G.rows,G.view,G.includeBackground,De.pinned]),q=K.length,Ae=Le(3e4);(0,A.useEffect)(()=>{if(U.current.size!==0)for(let e of G.rows){let t=U.current.get(e.sessionId);if(!t||e.url===null)continue;U.current.delete(e.sessionId),clearTimeout(t.timeoutId);let n=e.sessionId.slice(0,8);if(t.placeholder.closed){console.info(`[admin-ui] new-session-auto-open outcome=timeout sessionId=${n}`);continue}t.placeholder.location.href=e.url,console.info(`[admin-ui] new-session-auto-open outcome=ok sessionId=${n}`)}},[G.rows]),(0,A.useEffect)(()=>{let e=U.current;return()=>{for(let{timeoutId:t}of e.values())clearTimeout(t);e.clear()}},[]);let[J,je]=(0,A.useState)(`chat`),[Me,Ne]=(0,A.useState)([]),[Pe,Fe]=(0,A.useState)(!1),[Re,ze]=(0,A.useState)(null),[Be,Ve]=(0,A.useState)(!1);(0,A.useImperativeHandle)(t,()=>({patchArtefact(e,t){Ne(n=>n.map(n=>n.id===e?{...n,...t}:n))}}),[]);let[Y,X]=(0,A.useState)(!1),Ge=(0,A.useRef)(null),Ye={default:`Ask`,acceptEdits:`Accept edits`,plan:`Plan`,auto:`Auto`,bypassPermissions:`Bypass permissions`},Xe=[`default`,`acceptEdits`,`plan`,`auto`,`bypassPermissions`];(0,A.useEffect)(()=>{if(!o)return;let e=!1,t=Date.now();return(async()=>{try{let n=await fetch(`/api/admin/session-defaults?session_key=${encodeURIComponent(o)}`);if(!n.ok)throw Error(`status ${n.status}`);let r=await n.json();if(e)return;let i=r.permissionMode,a=r.model??void 0;R(i),xe(a),B.current={permissionMode:i,model:a},console.info(`[admin-ui] session-defaults-hydrate permissionMode=${i} model=${a??`default`} ms=${Date.now()-t}`)}catch(n){if(e)return;let r=n instanceof Error?n.message:String(n);console.error(`[admin-ui] session-defaults-hydrate-failed reason="${r}" ms=${Date.now()-t}`)}})(),()=>{e=!0}},[o]);let Ze=(0,A.useCallback)(async(e,t)=>{if(!o||!B.current)return;let n=B.current,r=Date.now();console.info(`[admin-ui] session-defaults-put from={mode:${n.permissionMode},model:${n.model??`default`}} to={mode:${e.permissionMode},model:${e.model??`default`}} trigger=${t}`);try{let t=await fetch(`/api/admin/session-defaults?session_key=${encodeURIComponent(o)}`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({permissionMode:e.permissionMode,model:e.model??null})});if(!t.ok)throw Error(`status ${t.status}`);B.current=e,console.info(`[admin-ui] session-defaults-put-ok ms=${Date.now()-r}`)}catch(e){let t=e instanceof Error?e.message:String(e);console.error(`[admin-ui] session-defaults-put-failed reason="${t}" ms=${Date.now()-r}`),R(n.permissionMode),xe(n.model)}},[o]);(0,A.useEffect)(()=>{if(!Y)return;function e(e){Ge.current&&!Ge.current.contains(e.target)&&(console.info(`[admin-ui] sidebar-mode-picker action=close mode=${L}`),X(!1))}function t(e){if(e.key===`Escape`){console.info(`[admin-ui] sidebar-mode-picker action=close mode=${L}`),X(!1);return}let t=[`1`,`2`,`3`,`4`,`5`].indexOf(e.key);if(t>=0&&!e.metaKey&&!e.ctrlKey&&!e.altKey){let n=Xe[t];n&&(e.preventDefault(),console.info(`[admin-ui] sidebar-mode-picker action=select mode=${n} via=shortcut`),R(n),X(!1),Ze({permissionMode:n,model:z},`sidebar`))}}return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[Y,L,z,Ze]),(0,A.useEffect)(()=>{function e(e){e.shiftKey&&(e.metaKey||e.ctrlKey)&&(e.key===`m`||e.key===`M`)&&(e.preventDefault(),X(e=>{let t=!e;return console.info(`[admin-ui] sidebar-mode-picker action=${t?`open`:`close`} mode=${L} via=shortcut`),t}))}return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[L]);let Qe=(0,A.useCallback)(async()=>{if(o){Ve(!0),ze(null);try{let e=await fetch(`/api/admin/sidebar-artefacts?session_key=${encodeURIComponent(o)}`);if(!e.ok)throw Error(`status ${e.status}`);Ne((await e.json()).artefacts??[]),Fe(!0)}catch(e){let t=e instanceof Error?e.message:String(e);ze(`Failed to load artefacts: ${t}`),console.error(`[admin-ui] sidebar-artefacts fetch failed: ${t}`)}finally{Ve(!1)}}},[o]),$e=()=>{je(`chat`),console.info(`[admin-ui] sidebar-nav surface=sessions count=${q}`)},et=()=>{je(`artefacts`),console.info(`[admin-ui] sidebar-nav surface=artefacts count=${Pe?Me.length:0} collapsed=${le}`),Pe||Qe()},Z=1.5,tt=J===`chat`?`Sessions`:`Artefacts`,nt=J===`chat`?b?`…`:String(q):Be?`…`:String(Me.length),rt=J===`chat`?b:Be,it=()=>{console.info(`[admin-ui] sidebar-refresh surface=${J}`),J===`chat`?E().then(e=>{e!==null&&G.reconcileFromList(e.map(e=>e.sessionId))}):Qe()},at=(0,A.useCallback)(()=>{if(I||!o){console.info(`[admin-ui] sidebar-new-session-click-ignored startingSession=${I} cacheKey=${o?`set`:`missing`}`);return}V(null),H.current=Date.now(),console.info(`[admin-ui] sidebar-new-session-modal-open seedMode=${L} cacheKey-prefix=${o.slice(0,8)}`),we(!0)},[o,I,L]),ot=(0,A.useCallback)(e=>{let t=H.current?Date.now()-H.current:0;console.info(`[admin-ui] sidebar-new-session-modal-cancel reason=${e} dwell-ms=${t}`),V(null),we(!1)},[]),st=(0,A.useCallback)(async e=>{if(I||!o)return;let t=H.current?Date.now()-H.current:0,n=Date.now();console.info(`[admin-ui] sidebar-new-session-modal-submit permissionMode=${e.permissionMode} model=${e.model??`default`} messageChars=${e.message.length} dwell-ms=${t}`),ye(!0),V(null);try{console.info(`[admin-ui] sidebar-new-session-fetch-start permissionMode=${e.permissionMode} model=${e.model??`default`} messageChars=${e.message.length}`);let t={channel:`browser`,permissionMode:e.permissionMode,initialMessage:e.message};e.model!==void 0&&(t.model=e.model);let r=await fetch(`/api/admin/claude-sessions?session_key=${encodeURIComponent(o)}`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(t)}),i=Date.now()-n;console.info(`[admin-ui] sidebar-new-session-fetch-done status=${r.status} ok=${r.ok} ms=${i}`);let a=await r.json();if(!r.ok||!(`sessionId`in a)){let e=a,t=e.error??`POST returned ${r.status}`,i=e.reason?`${t}: ${e.reason}`:t;console.error(`[admin-ui] sidebar-new-session-failed status=${r.status} ms=${Date.now()-n} error=${t} reason=${e.reason??`none`} tail=${JSON.stringify(e.stderrTail??``)}`),V(i);return}console.info(`[admin-ui] sidebar-new-session-ok pid=${a.pid} sessionId=${a.sessionId.slice(0,8)} permissionMode=${e.permissionMode} model=${e.model??`default`} ms=${Date.now()-n}`),de.setSessions(e=>[a,...e]),we(!1);let s=a.sessionId,c=s.slice(0,8);if(e.placeholder===null)console.info(`[admin-ui] new-session-auto-open outcome=fallback sessionId=${c}`),ce(s);else{let t=setTimeout(()=>{let e=U.current.get(s);e&&(U.current.delete(s),e.placeholder.closed||e.placeholder.close(),console.info(`[admin-ui] new-session-auto-open outcome=timeout sessionId=${c}`))},Ue);U.current.set(s,{placeholder:e.placeholder,timeoutId:t})}}catch(e){let t=e instanceof Error?e.message:String(e);V(t),console.error(`[admin-ui] sidebar-new-session-threw ms=${Date.now()-n} message=${t}`)}finally{ye(!1)}},[o,I,de,ce]),Q=_e(o,de,`sidebar`),ct=(0,A.useCallback)(async e=>{let t=await Q.resume(e);t.ok||console.error(`[admin-ui] sidebar-resume failed: ${t.error}`)},[Q]),lt=(0,A.useCallback)(async e=>{ge(!0),me(null);let t=await Q.purge(e);t.ok?P(null):me(t.error??`purge failed`),ge(!1)},[Q]),ut=(0,A.useCallback)(async e=>{let t=await Q.end(e);t.ok||console.error(`[admin-ui] sidebar-end-session failed: ${t.error}`)},[Q]),dt=(0,A.useCallback)(async e=>{let t=await Q.archive(e);t.ok||console.error(`[admin-ui] sidebar-archive failed: ${t.error}`)},[Q]),ft=(0,A.useCallback)(async e=>{let t=await Q.unarchive(e);t.ok||console.error(`[admin-ui] sidebar-unarchive failed: ${t.error}`)},[Q]),[pt,$]=(0,A.useState)(null),[mt,ht]=(0,A.useState)(``),gt=(0,A.useCallback)(async(e,t)=>{let n=mt.trim();if(n.length===0||!pe(n)){$(null);return}if(n===(t??``)){$(null);return}let r=await Q.rename(e,n);r.ok||console.error(`[admin-ui] sidebar-rename failed: ${r.error}`),$(null)},[mt,Q]),_t=(0,A.useCallback)(()=>{$(null)},[]),[vt,yt]=(0,A.useState)(null),bt=(0,A.useCallback)(async(e,t)=>{try{await u(t),yt(e),window.setTimeout(()=>{yt(t=>t===e?null:t)},1200)}catch(e){console.error(`[admin-ui] sidebar-copy-label failed: ${String(e)}`)}},[]);return(0,j.jsxs)(`aside`,{className:`side`,children:[J===`chat`&&(0,j.jsxs)(`div`,{className:`side-new-session-row`,ref:Ge,children:[(0,j.jsxs)(`button`,{type:`button`,className:`side-new-session`,onClick:at,disabled:I||!o,children:[I?(0,j.jsx)(w,{size:14,className:`spinning`}):(0,j.jsx)(k,{size:14}),(0,j.jsx)(`span`,{children:`New session`})]}),(0,j.jsxs)(`button`,{type:`button`,className:`side-mode-trigger`,onClick:()=>{let e=!Y;console.info(`[admin-ui] sidebar-mode-picker action=${e?`open`:`close`} mode=${L}`),X(e)},disabled:I,"aria-haspopup":`menu`,"aria-expanded":Y,"aria-label":`Permission mode for the next session`,title:`Shift+Cmd+M`,children:[Ye[L],(0,j.jsx)(s,{size:12,"aria-hidden":`true`})]}),Y&&(0,j.jsxs)(`div`,{className:`side-mode-popover`,role:`menu`,"aria-label":`Mode`,children:[(0,j.jsxs)(`div`,{className:`side-mode-popover-head`,children:[(0,j.jsx)(`span`,{children:`Mode`}),(0,j.jsx)(`span`,{className:`side-mode-popover-shortcut`,"aria-hidden":`true`,children:`⇧⌘M`})]}),Xe.map((e,t)=>(0,j.jsxs)(`button`,{type:`button`,role:`menuitem`,className:`side-mode-popover-item`,onClick:()=>{console.info(`[admin-ui] sidebar-mode-picker action=select mode=${e}`),R(e),X(!1),Ze({permissionMode:e,model:z},`sidebar`)},children:[(0,j.jsx)(`span`,{children:Ye[e]}),(0,j.jsxs)(`span`,{className:`side-mode-popover-shortcut`,children:[e===L&&(0,j.jsx)(v,{size:12}),(0,j.jsx)(`span`,{children:t+1})]})]},e))]})]}),(0,j.jsxs)(`nav`,{className:`side-nav`,children:[(0,j.jsxs)(`button`,{type:`button`,className:`nav-row${J===`chat`?` active`:``}`,onClick:$e,children:[(0,j.jsx)(ae,{size:20,strokeWidth:Z}),(0,j.jsx)(`span`,{className:`label`,children:`Sessions`}),(0,j.jsx)(`span`,{className:`kbd`})]}),(0,j.jsxs)(`button`,{type:`button`,className:`nav-row`,onClick:()=>{console.info(`[admin-ui] sidebar-nav surface=people`),ne(),M()},children:[(0,j.jsx)(oe,{size:20,strokeWidth:Z}),(0,j.jsx)(`span`,{className:`label`,children:`People`}),(0,j.jsx)(`span`,{className:`kbd`})]}),(0,j.jsxs)(`button`,{type:`button`,className:`nav-row`,onClick:()=>{console.info(`[admin-ui] sidebar-nav surface=agents`),se(),M()},children:[(0,j.jsx)(g,{size:20,strokeWidth:Z}),(0,j.jsx)(`span`,{className:`label`,children:`Agents`}),(0,j.jsx)(`span`,{className:`kbd`})]}),(0,j.jsxs)(`button`,{type:`button`,className:`nav-row`,onClick:()=>{console.info(`[admin-ui] sidebar-nav surface=projects`),D(),M()},children:[(0,j.jsx)(_,{size:20,strokeWidth:Z}),(0,j.jsx)(`span`,{className:`label`,children:`Projects`}),(0,j.jsx)(`span`,{className:`kbd`})]}),(0,j.jsxs)(`button`,{type:`button`,className:`nav-row`,onClick:()=>{console.info(`[admin-ui] sidebar-nav surface=tasks`),re(),M()},children:[(0,j.jsx)(C,{size:20,strokeWidth:Z}),(0,j.jsx)(`span`,{className:`label`,children:`Tasks`}),(0,j.jsx)(`span`,{className:`kbd`})]}),(0,j.jsxs)(`button`,{type:`button`,className:`nav-row${J===`artefacts`?` active`:``}`,onClick:et,children:[(0,j.jsx)(l,{size:20,strokeWidth:Z}),(0,j.jsx)(`span`,{className:`label`,children:`Artefacts`}),(0,j.jsx)(`span`,{className:`kbd`})]})]}),(0,j.jsxs)(`div`,{className:`side-list`,ref:ve,children:[(0,j.jsxs)(`div`,{className:`group-head`,children:[(0,j.jsx)(`span`,{children:tt}),(0,j.jsxs)(`span`,{className:`group-head-meta`,children:[(0,j.jsx)(`button`,{type:`button`,className:`group-head-refresh`,title:`Refresh ${tt.toLowerCase()}`,"aria-label":`Refresh ${tt.toLowerCase()}`,onClick:it,disabled:rt,children:(0,j.jsx)(te,{size:12,className:rt?`spinning`:void 0})}),(0,j.jsx)(`span`,{children:nt})]})]}),J===`chat`&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(Ke,{view:G.view,setView:e=>{console.info(`[admin-ui] sidebar-view-change view=${e}`),G.setView(e)},connected:G.connected,reconnectNow:G.reconnectNow}),S&&(0,j.jsx)(`div`,{className:`conv`,style:{color:`var(--text-tertiary)`,cursor:`default`},children:S}),K.map(e=>{let t=N===e.sessionId,n=pt===e.sessionId;return(0,j.jsxs)(`div`,{className:`conv${t?` active`:``}`,children:[n?(0,j.jsxs)(`span`,{className:`conv-name-line`,style:{flex:1,minWidth:0},children:[(0,j.jsx)(ae,{size:12,className:`conv-channel-icon`,"aria-label":`claude session`}),(0,j.jsx)(qe,{live:e.live,status:e.status}),(0,j.jsx)(`input`,{type:`text`,value:mt,autoFocus:!0,maxLength:200,onChange:e=>ht(e.target.value),onKeyDown:t=>{t.key===`Enter`?(t.preventDefault(),gt(e.sessionId,e.firstPrompt)):t.key===`Escape`&&(t.preventDefault(),_t())},onBlur:()=>{gt(e.sessionId,e.firstPrompt)},className:`conv-name`,"aria-label":`Rename session`,style:{flex:1,minWidth:0,background:`transparent`,border:`none`,outline:`none`,color:`inherit`,font:`inherit`}})]}):(0,j.jsxs)(`button`,{type:`button`,className:`conv-name-button`,onClick:()=>{ce(e.sessionId),M()},title:`Show metadata`,children:[(0,j.jsxs)(`span`,{className:`conv-name-line`,children:[(0,j.jsx)(ae,{size:12,className:`conv-channel-icon`,"aria-label":`claude session`}),(0,j.jsx)(qe,{live:e.live,status:e.status}),e.firstPrompt?(0,j.jsx)(`span`,{className:`conv-name`,children:e.firstPrompt}):(0,j.jsxs)(`span`,{className:`conv-name`,style:{fontStyle:`italic`,opacity:.6},children:[`(unnamed · `,e.sessionId.slice(0,8),`)`]})]}),(0,j.jsx)(`span`,{className:`conv-timestamp`,children:Ie(e.updatedAt,Ae)})]}),!n&&(0,j.jsx)(`button`,{type:`button`,className:`conversations-action`,title:`Rename`,"aria-label":`Rename session`,onClick:()=>{ht(e.firstPrompt??``),$(e.sessionId)},children:(0,j.jsx)(O,{size:13})}),!n&&(0,j.jsx)(`button`,{type:`button`,className:`conversations-action`,title:`Copy label`,"aria-label":`Copy session label`,onClick:()=>void bt(e.sessionId,e.firstPrompt??`(unnamed · ${e.sessionId.slice(0,8)})`),children:vt===e.sessionId?(0,j.jsx)(v,{size:13}):(0,j.jsx)(c,{size:13})}),e.url!==null&&(0,j.jsx)(`button`,{type:`button`,className:`conversations-action`,title:`Open in new tab`,"aria-label":`Open in new tab`,onClick:()=>Je(e.url,e.sessionId),children:(0,j.jsx)(x,{size:13})}),e.live?(0,j.jsx)(`button`,{type:`button`,className:`conversations-action`,title:`End session`,"aria-label":`End session`,onClick:()=>void ut(e.sessionId),disabled:Q.inFlight===`end`,children:Q.inFlight===`end`?(0,j.jsx)(w,{size:13,className:`spinning`}):(0,j.jsx)(ie,{size:13})}):e.archived?(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(`button`,{type:`button`,className:`conversations-action`,title:`Unarchive session`,"aria-label":`Unarchive session`,onClick:()=>void ft(e.sessionId),disabled:Q.inFlight===`unarchive`,children:Q.inFlight===`unarchive`?(0,j.jsx)(w,{size:13,className:`spinning`}):(0,j.jsx)(m,{size:13})}),(0,j.jsx)(`button`,{type:`button`,className:`conversations-action`,title:`Purge JSONL`,"aria-label":`Purge JSONL`,onClick:()=>{me(null),P({sessionId:e.sessionId,displayName:e.firstPrompt})},children:(0,j.jsx)(i,{size:13})})]}):(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(`button`,{type:`button`,className:`conversations-action`,title:`Resume session`,"aria-label":`Resume session`,onClick:()=>void ct(e.sessionId),disabled:Q.inFlight===`resume`,children:Q.inFlight===`resume`?(0,j.jsx)(w,{size:13,className:`spinning`}):(0,j.jsx)(a,{size:13})}),(0,j.jsx)(`button`,{type:`button`,className:`conversations-action`,title:`Archive session`,"aria-label":`Archive session`,onClick:()=>void dt(e.sessionId),disabled:Q.inFlight===`archive`,children:Q.inFlight===`archive`?(0,j.jsx)(w,{size:13,className:`spinning`}):(0,j.jsx)(h,{size:13})}),(0,j.jsx)(`button`,{type:`button`,className:`conversations-action`,title:`Purge JSONL`,"aria-label":`Purge JSONL`,onClick:()=>{me(null),P({sessionId:e.sessionId,displayName:e.firstPrompt})},children:(0,j.jsx)(i,{size:13})})]})]},e.sessionId)})]}),J===`artefacts`&&(0,j.jsxs)(j.Fragment,{children:[Re&&(0,j.jsx)(`div`,{className:`conv`,style:{color:`var(--text-tertiary)`,cursor:`default`},children:Re}),Pe&&!Re&&Me.length===0&&(0,j.jsx)(`div`,{className:`conv`,style:{color:`var(--text-tertiary)`,cursor:`default`},children:`No artefacts yet`}),Me.map(e=>(0,j.jsxs)(`button`,{type:`button`,className:`conv`,onClick:()=>{ee({docId:e.id,name:e.name,content:e.content,editable:e.editable,mimeType:e.mimeType,skipReason:e.skipReason},`sidebar-artefacts`),M()},children:[(0,j.jsx)(`span`,{className:`conv-name`,children:e.name}),(0,j.jsx)(`span`,{className:`conv-kind`,"data-kind":e.kind===`agent-template`?`agent`:`doc`,children:e.kind===`agent-template`?`agent`:`doc`})]},e.id))]})]}),(0,j.jsx)(We,{}),(0,j.jsxs)(`div`,{className:`side-foot`,children:[(0,j.jsx)(`div`,{className:`avatar`,children:p?(0,j.jsx)(`img`,{src:p,alt:W}):Ee}),(0,j.jsxs)(`div`,{className:`who`,children:[(0,j.jsx)(`span`,{className:`name`,children:W}),(0,j.jsx)(`span`,{className:`role`,children:d??`operator`})]})]}),Ce&&(0,j.jsx)(He,{seedMode:L,seedModel:z,submitting:I,error:Se,onSubmit:e=>void st(e),onCancel:ot,onErrorClear:()=>V(null)}),fe&&(0,j.jsx)(`div`,{role:`dialog`,"aria-modal":`true`,"aria-labelledby":`purge-confirm-title`,className:`modal-overlay`,onClick:e=>{e.target===e.currentTarget&&!he&&P(null)},children:(0,j.jsxs)(`div`,{className:`modal-card`,children:[(0,j.jsx)(`h3`,{id:`purge-confirm-title`,style:{margin:0,marginBottom:8,fontSize:16,fontWeight:600},children:`Purge session JSONL?`}),(0,j.jsxs)(`p`,{style:{margin:0,marginBottom:8,fontSize:13},children:[`This hard-deletes the transcript for `,(0,j.jsx)(`strong`,{children:fe.displayName??fe.sessionId.slice(0,8)}),`. The action cannot be undone.`]}),F&&(0,j.jsx)(`p`,{style:{margin:0,marginBottom:8,fontSize:12,color:`var(--text-tertiary)`},children:F}),(0,j.jsxs)(`div`,{className:`modal-action-row`,children:[(0,j.jsx)(`button`,{type:`button`,className:`modal-action-btn`,disabled:he,onClick:()=>P(null),children:`Cancel`}),(0,j.jsx)(`button`,{type:`button`,className:`modal-action-btn`,"data-variant":`danger`,disabled:he,onClick:()=>void lt(fe.sessionId),children:he?(0,j.jsx)(w,{size:13,className:`spinning`}):`Purge`})]})]})})]})}),X=5e3;function We(){let[e,t]=(0,A.useState)(null);if((0,A.useEffect)(()=>{let e=!1,n=null;async function r(){try{let n=await fetch(`/api/admin/system-stats`);if(!n.ok){console.error(`[admin-ui] system-stats-fetch-failed status=${n.status}`);return}let r=await n.json();e||t(r)}catch(e){console.error(`[admin-ui] system-stats-fetch-failed reason=${e instanceof Error?e.message:String(e)}`)}}function i(){n===null&&(r(),n=setInterval(()=>{r()},X))}function a(){n!==null&&(clearInterval(n),n=null)}function o(){document.hidden?a():i()}return document.hidden||i(),document.addEventListener(`visibilitychange`,o),()=>{e=!0,a(),document.removeEventListener(`visibilitychange`,o)}},[]),!e||e.platform===`darwin`)return null;let n=e.cpuPct,r=e.memUsedPct,i=n!==null&&n>=.9,a=n!==null&&n>=.98,o=r!==null&&r>=.9,s=r!==null&&r>=.98,c=i||o,l=a||s,u=e=>e===null?`—`:`${Math.round(e*100)}%`,d=e=>{if(e===null)return{width:`0%`,background:`var(--text-tertiary)`};let t=Math.min(1,Math.max(0,e)),n=Math.round(140*(1-t));return{width:`${Math.round(t*100)}%`,background:`hsl(${n}, 65%, 45%)`}},f=[`system-stats`];return c&&f.push(`system-stats--warn`),l&&f.push(`system-stats--crit`),(0,j.jsxs)(`div`,{className:f.join(` `),role:`status`,"aria-label":`host CPU and RAM`,children:[(0,j.jsxs)(`div`,{className:`system-stats__metric`,children:[(0,j.jsxs)(`span`,{className:i?`system-stats__fig system-stats__fig--warn`:`system-stats__fig`,children:[`CPU `,u(n)]}),(0,j.jsx)(`div`,{className:`system-stats__bar`,children:(0,j.jsx)(`div`,{className:`system-stats__bar-fill`,style:d(n)})})]}),(0,j.jsxs)(`div`,{className:`system-stats__metric`,children:[(0,j.jsxs)(`span`,{className:o?`system-stats__fig system-stats__fig--warn`:`system-stats__fig`,children:[`RAM `,u(r)]}),(0,j.jsx)(`div`,{className:`system-stats__bar`,children:(0,j.jsx)(`div`,{className:`system-stats__bar-fill`,style:d(r)})})]})]})}var Ge=[{value:`active`,label:`Active`},{value:`archived`,label:`Archived`},{value:`all`,label:`All`}];function Ke(e){let{view:t,setView:n,connected:r,reconnectNow:i}=e;return(0,j.jsx)(`div`,{className:`session-view-controls`,children:(0,j.jsxs)(`div`,{className:`session-view-segmented`,role:`tablist`,"aria-label":`Session view`,children:[Ge.map(e=>(0,j.jsx)(`button`,{type:`button`,role:`tab`,className:`session-view-tab${t===e.value?` active`:``}`,"aria-selected":t===e.value,onClick:()=>n(e.value),children:e.label},e.value)),r?(0,j.jsx)(`span`,{className:`session-view-connection connected`,"aria-label":`Live updates connected.`,title:`Live updates connected.`}):(0,j.jsx)(`button`,{type:`button`,className:`session-view-connection disconnected`,"aria-label":`Live updates paused. Click to retry.`,title:`Live updates paused. Click to retry.`,onClick:i})]})})}function qe({live:e,status:t}){return e?t===`busy`?(0,j.jsxs)(`span`,{className:`session-status session-status-busy`,"aria-label":`session busy`,children:[(0,j.jsx)(`span`,{className:`session-status-dot`}),(0,j.jsx)(`span`,{className:`session-status-dot`}),(0,j.jsx)(`span`,{className:`session-status-dot`})]}):t===`detached`?(0,j.jsx)(`span`,{className:`session-status session-status-detached`,"aria-label":`session detached — manager restart survivor`}):(0,j.jsx)(`span`,{className:`session-status session-status-idle`,"aria-label":`session idle`}):(0,j.jsx)(`span`,{className:`session-status session-status-archived`,"aria-label":`session archived`})}function Je(e,t){let n=t.slice(0,8),r=window.open(e,`_blank`,`noopener,noreferrer`)===null?`blocked`:`ok`;console.info(`[admin-ui] sidebar-open-in-new-tab outcome=${r} sessionId=${n}`)}function Ye(e){return e.map(e=>[e.sessionId,e.displayName,e.lastMessageAt,e.status])}function Xe(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++){let r=e[n],i=t[n];if(r[0]!==i[0]||r[1]!==i[1]||r[2]!==i[2]||r[3]!==i[3])return!1}return!0}function Ze(e){let[t,n]=(0,A.useState)([]),[r,i]=(0,A.useState)(!1),[a,o]=(0,A.useState)(null),[s,c]=(0,A.useState)(null),l=(0,A.useRef)([]),u=(0,A.useCallback)(async t=>{if(!e||!t&&s===e)return null;i(!0),o(null);try{let t=await fetch(`/api/admin/claude-sessions?session_key=${encodeURIComponent(e)}`);if(!t.ok)throw Error(`claude-sessions fetch returned ${t.status}`);let r=await t.json(),i=Array.isArray(r)?r:r.sessions??[],a=Ye(i),o=Xe(l.current,a);return o||(n(i),l.current=a),c(e),console.info(`[admin-ui] sessions-poll outcome=${o?`unchanged`:`changed`} count=${i.length} cacheKey=${e.slice(0,8)}`),i}catch(t){return console.info(`[admin-ui] sessions-poll outcome=error count=0 cacheKey=${e.slice(0,8)}`),console.error(`[admin/claude-sessions] fetch failed:`,t),o(t instanceof Error?t.message:String(t)),null}finally{i(!1)}},[e,s]);(0,A.useEffect)(()=>{e||(c(null),n([]),o(null),l.current=[])},[e]);let d=(0,A.useCallback)(()=>u(!1),[u]),f=(0,A.useCallback)(()=>u(!0),[u]);return{sessions:t,setSessions:n,loading:r,loaded:s!==null&&s===e,error:a,ensureLoaded:d,refetch:f}}var Qe=`admin-sidebar-collapsed`,$e=`admin-sidebar-drawer-open`;function et(){if(typeof window>`u`)return!1;try{return window.sessionStorage.getItem(Qe)===`1`}catch{return!1}}function Z(e){if(!(typeof window>`u`))try{e?window.sessionStorage.setItem(Qe,`1`):window.sessionStorage.removeItem(Qe)}catch{}}function tt(){if(typeof window>`u`)return!1;try{return window.sessionStorage.getItem($e)===`1`}catch{return!1}}function nt(e){if(!(typeof window>`u`))try{e?window.sessionStorage.setItem($e,`1`):window.sessionStorage.removeItem($e)}catch{}}var rt=720;function it(e){let{cacheKey:t,businessName:n,onLogout:r,userName:i,userAvatar:a,role:o,selectedSessionId:s,onSelectSession:c,onSelectArtefact:l,dataArtefact:u=`closed`,children:d,footer:f}=e,[p,m]=(0,A.useState)(()=>et()),[h,g]=(0,A.useState)(()=>tt()),[_,v]=(0,A.useState)(()=>typeof window<`u`&&window.matchMedia(`(max-width: ${rt}px)`).matches);(0,A.useEffect)(()=>{if(typeof window>`u`)return;let e=window.matchMedia(`(max-width: ${rt}px)`),t=e=>v(e.matches);return e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[]);let y=(0,A.useCallback)(e=>{Z(e),m(e)},[]),b=(0,A.useCallback)(e=>{nt(e),g(e)},[]);(0,A.useEffect)(()=>{if(typeof window>`u`)return;let e=window.location?.pathname??``;console.info(`[admin-ui] shell-mount route=${e} collapsed=${p} drawer=${h}`)},[]);let x=_?h:!p,S=(0,A.useCallback)(()=>{if(!(typeof window>`u`))if(window.matchMedia(`(max-width: ${rt}px)`).matches){let e=h;console.info(`[admin-ui] header-sidebar-toggle from=${e?`open`:`closed`} mode=drawer`),b(!e)}else{let e=p;console.info(`[admin-ui] header-sidebar-toggle from=${e?`closed`:`open`} mode=collapse`),y(!e)}},[p,h,y,b]),C=(0,A.useCallback)(e=>{console.info(`[admin-ui] header-menu-nav target=${e}`),window.location.href=e===`data`?`/data`:`/graph`},[]),w=Ze(t),T=Oe(t),E=(0,A.useMemo)(()=>T.rows.map(e=>e.sessionId),[T.rows]),ee=(0,A.useCallback)(e=>{if(c){c(e);return}window.location.assign(`/?sessionId=${encodeURIComponent(e)}`)},[c]),D=(0,A.useCallback)(e=>{l&&l(e)},[l]),O={collapsed:p,mobileDrawerOpen:h,sidebarOpen:x,onToggleSidebar:S,setMobileDrawerOpen:b,sessionsState:w,sessionRowIds:E,sessionRowsConnected:T.connected};return(0,j.jsxs)(`div`,{className:`admin-shell admin-page admin-shell-root`,children:[(0,j.jsx)(L,{businessName:n,onNavigate:C,onToggleSidebar:S,sidebarOpen:x,onLogout:r}),(0,j.jsxs)(`div`,{className:`platform${h?` menu-open`:``}${p?` sidebar-collapsed`:``}`,"data-artefact":u,children:[(0,j.jsx)(Y,{businessName:n,cacheKey:t,role:o??null,userName:i,userAvatar:a??null,sessions:w.sessions,sessionsLoading:w.loading,sessionsError:w.error,ensureSessionsLoaded:w.ensureLoaded,refetchSessions:w.refetch,onSelectArtefact:D,onSelectProjects:()=>{window.location.href=`/graph?label=Project`},onSelectPeople:()=>{window.location.href=`/graph?label=Person`},onSelectTasks:()=>{window.location.href=`/graph?label=Task`},onSelectAgents:()=>{window.location.href=`/graph?label=Agent`},onCloseMobileDrawer:()=>b(!1),onSelectSession:ee,selectedSessionId:s??null,collapsed:p,mobileDrawerOpen:h,recentsActions:{setSessions:w.setSessions,refetch:w.refetch}}),typeof d==`function`?d(O):d]}),h&&(0,j.jsx)(`div`,{className:`sidebar-backdrop menu-open`,"aria-hidden":`true`,onClick:()=>b(!1)}),f]})}var at=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.ALL_GRAPH_LABELS=e.FALLBACK_LABEL_COLOUR=e.GRAPH_LABEL_COLOURS=void 0,e.pickDisplayLabel=t,e.colourForLabel=n,e.resolveNodeColour=r,e.formatRunTimestamp=o,e.formatMessageTimestamp=s,e.pickShortLabel=c,e.pickDisplayName=l,e.GRAPH_LABEL_COLOURS={LocalBusiness:`#4F6B8A`,Service:`#6B85A0`,PriceSpecification:`#8AA0B8`,OpeningHoursSpecification:`#A8BACE`,Listing:`#3F5670`,Property:`#5C7A99`,Viewing:`#D4A574`,Offer:`#B08850`,Organization:`#8A6B47`,Person:`#B86E4A`,UserProfile:`#D08960`,Preference:`#DFA67A`,AdminUser:`#8C5230`,AccessGrant:`#66381F`,KnowledgeDocument:`#6E8A5A`,Section:`#8AA876`,Chunk:`#A6C194`,DigitalDocument:`#5A7548`,CreativeWork:`#B5C9A2`,Question:`#C7D6B5`,FAQPage:`#95B385`,DefinedTerm:`#76906A`,Review:`#3F5A2E`,ImageObject:`#A0BB8C`,Conversation:`#6B5A85`,AdminConversation:`#4F4070`,PublicConversation:`#8A75A8`,Message:`#6B7280`,UserMessage:`#DFA67A`,AssistantMessage:`#C9A876`,ToolCall:`#B5ABCB`,Task:`#B0617A`,Project:`#8E4A60`,Event:`#C68095`,Workflow:`#3A6F77`,WorkflowStep:`#5A8E96`,WorkflowRun:`#7AAAB2`,StepResult:`#9CC4CB`,Email:`#6F7F4A`,EmailAccount:`#91A063`,Agent:`#B8893D`},e.FALLBACK_LABEL_COLOUR=`#94A3B8`,e.ALL_GRAPH_LABELS=Object.freeze(Object.keys(e.GRAPH_LABEL_COLOURS));function t(t){for(let n=1;n<t.length;n++)if(Object.prototype.hasOwnProperty.call(e.GRAPH_LABEL_COLOURS,t[n]))return t[n];return t[0]??null}function n(t){return e.GRAPH_LABEL_COLOURS[t]??e.FALLBACK_LABEL_COLOUR}function r(r){let i=t(r),a=i?n(i):e.FALLBACK_LABEL_COLOUR,o=0;for(let t=1;t<r.length;t++)Object.prototype.hasOwnProperty.call(e.GRAPH_LABEL_COLOURS,r[t])&&o++;return{displayLabel:i,colour:a,driftCandidates:o}}var i=/^(\d{4}-\d{2}-\d{2})T(\d{2}:\d{2})/,a=/^\d{4}-\d{2}-\d{2}T(\d{2}:\d{2}:\d{2})/;function o(e){let t=e.match(i);return t?`${t[1]} ${t[2]}`:null}function s(e){let t=e.match(a);return t?t[1]:null}function c(e){let t=e.properties,n=e.labels[0];if(n===`ToolCall`){let e=t.toolName;if(typeof e==`string`&&e.length>0)return e.length>24?e.slice(0,24)+`…`:e}else if(n===`WorkflowRun`){let e=t.startedAt;if(typeof e==`string`&&e.length>0){let t=o(e);if(t)return t}}else if(n===`WorkflowStep`){let e=t.label;if(typeof e==`string`&&e.length>0)return e.length>24?e.slice(0,24)+`…`:e}else if(n===`Person`){let e=[typeof t.givenName==`string`?t.givenName:``,typeof t.familyName==`string`?t.familyName:``].filter(e=>e.length>0).join(` `);if(e.length>0)return e.length>24?e.slice(0,24)+`…`:e}else if(n===`Agent`){let e=typeof t.displayName==`string`?t.displayName:``,n=typeof t.slug==`string`?t.slug:``,r=e.length>0?e:n;if(r.length>0)return r.length>24?r.slice(0,24)+`…`:r}else if(n===`Message`){let e=typeof t.role==`string`?t.role:``,n=e===`user`?`user`:e===`assistant`?`asst`:e===`system`?`sys`:e===`tool`?`tool`:null,r=typeof t.createdAt==`string`?t.createdAt:``;if(n&&r){let e=s(r);if(e)return`${n} ${e}`}}for(let e of[`name`,`title`,`summary`,`givenName`,`subject`,`text`]){let n=t[e];if(typeof n==`string`&&n.length>0)return n.length>24?n.slice(0,24)+`…`:n}if(n===`Conversation`){let e=typeof t.conversationId==`string`?t.conversationId:null;if(e)return`Conv ${e.slice(0,8)}`}return n??`…`}function l(e){let t=e.properties,n=e.labels[0];if(n===`ToolCall`){let e=t.toolName;if(typeof e==`string`&&e.length>0)return e}else if(n===`WorkflowRun`){let e=t.startedAt;if(typeof e==`string`&&e.length>0){let t=o(e);if(t)return t}}else if(n===`WorkflowStep`){let e=t.label;if(typeof e==`string`&&e.length>0)return e}else if(n===`Person`){let e=[typeof t.givenName==`string`?t.givenName:``,typeof t.familyName==`string`?t.familyName:``].filter(e=>e.length>0).join(` `);if(e.length>0)return e}else if(n===`Agent`){let e=typeof t.displayName==`string`?t.displayName:``,n=typeof t.slug==`string`?t.slug:``,r=e.length>0?e:n;if(r.length>0)return r}for(let e of[`name`,`title`,`summary`,`givenName`,`subject`,`text`]){let n=t[e];if(typeof n==`string`&&n.length>0)return n}if(n===`Conversation`){let e=typeof t.conversationId==`string`?t.conversationId:null;if(e)return`Conv ${e.slice(0,8)}`}return n??`…`}})),ot=at();Object.freeze(new Set([`Chunk`,`GraphPreference`]));var st=Object.freeze(new Set(`LocalBusiness.Service.PriceSpecification.OpeningHoursSpecification.Organization.Person.UserProfile.Preference.AdminUser.AccessGrant.KnowledgeDocument.DigitalDocument.CreativeWork.Question.FAQPage.DefinedTerm.Review.ImageObject.Listing.Property.Viewing.Offer.AdminConversation.PublicConversation.Task.Project.Event.Workflow.Email.EmailAccount.Agent`.split(`.`)));Object.freeze(new Set([`ToolCall`,`StepResult`,`WorkflowStep`,`WorkflowRun`])),Object.freeze(new Set([`HAS_TOOL_CALL`,`RUN_OF`,`HAS_STEP`,`HAS_RESULT`]));export{m as S,w as _,H as a,v as b,_e as c,ie as d,re as f,O as g,k as h,it as i,ue as l,te as m,ot as n,be as o,ne as p,at as r,pe as s,st as t,se as u,x as v,h as x,b as y};