@rubytech/create-maxy-code 0.1.312 → 0.1.314

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 (134) hide show
  1. package/package.json +1 -1
  2. package/payload/platform/lib/graph-style/dist/index.d.ts.map +1 -1
  3. package/payload/platform/lib/graph-style/dist/index.js +5 -3
  4. package/payload/platform/lib/graph-style/dist/index.js.map +1 -1
  5. package/payload/platform/lib/graph-style/src/index.ts +5 -3
  6. package/payload/platform/neo4j/schema.cypher +7 -17
  7. package/payload/platform/plugins/.claude-plugin/marketplace.json +5 -0
  8. package/payload/platform/plugins/admin/hooks/lib/maxy-mcp-plugins.txt +1 -0
  9. package/payload/platform/plugins/admin/skills/file-presentation/SKILL.md +1 -1
  10. package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +39 -5
  11. package/payload/platform/plugins/admin/skills/professional-document/SKILL.md +1 -1
  12. package/payload/platform/plugins/docs/references/admin-session.md +2 -0
  13. package/payload/platform/plugins/docs/references/admin-ui.md +3 -3
  14. package/payload/platform/plugins/docs/references/memory-guide.md +1 -1
  15. package/payload/platform/plugins/docs/references/quickbooks.md +29 -0
  16. package/payload/platform/plugins/graph-viewer/mcp/dist/index.js +1 -1
  17. package/payload/platform/plugins/graph-viewer/mcp/dist/index.js.map +1 -1
  18. package/payload/platform/plugins/graph-viewer/mcp/dist/tools/graph-render.d.ts.map +1 -1
  19. package/payload/platform/plugins/graph-viewer/mcp/dist/tools/graph-render.js +8 -7
  20. package/payload/platform/plugins/graph-viewer/mcp/dist/tools/graph-render.js.map +1 -1
  21. package/payload/platform/plugins/graph-viewer/skills/render-graph/SKILL.md +8 -5
  22. package/payload/platform/plugins/memory/mcp/dist/index.js +2 -0
  23. package/payload/platform/plugins/memory/mcp/dist/index.js.map +1 -1
  24. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/relationship-patterns.test.d.ts +2 -0
  25. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/relationship-patterns.test.d.ts.map +1 -0
  26. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/relationship-patterns.test.js +146 -0
  27. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/relationship-patterns.test.js.map +1 -0
  28. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-cypher-drift.test.js +4 -0
  29. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-cypher-drift.test.js.map +1 -1
  30. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-validator.test.js +1 -0
  31. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-validator.test.js.map +1 -1
  32. package/payload/platform/plugins/memory/mcp/dist/lib/relationship-patterns.d.ts +66 -0
  33. package/payload/platform/plugins/memory/mcp/dist/lib/relationship-patterns.d.ts.map +1 -0
  34. package/payload/platform/plugins/memory/mcp/dist/lib/relationship-patterns.js +102 -0
  35. package/payload/platform/plugins/memory/mcp/dist/lib/relationship-patterns.js.map +1 -0
  36. package/payload/platform/plugins/memory/mcp/dist/lib/schema-loader.d.ts +9 -0
  37. package/payload/platform/plugins/memory/mcp/dist/lib/schema-loader.d.ts.map +1 -1
  38. package/payload/platform/plugins/memory/mcp/dist/lib/schema-loader.js +6 -1
  39. package/payload/platform/plugins/memory/mcp/dist/lib/schema-loader.js.map +1 -1
  40. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-personfields-open.test.js +1 -0
  41. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-personfields-open.test.js.map +1 -1
  42. package/payload/platform/plugins/memory/mcp/dist/tools/memory-edge.d.ts +9 -0
  43. package/payload/platform/plugins/memory/mcp/dist/tools/memory-edge.d.ts.map +1 -1
  44. package/payload/platform/plugins/memory/mcp/dist/tools/memory-edge.js +25 -1
  45. package/payload/platform/plugins/memory/mcp/dist/tools/memory-edge.js.map +1 -1
  46. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.d.ts.map +1 -1
  47. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js +21 -0
  48. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js.map +1 -1
  49. package/payload/platform/plugins/memory/mcp/vitest.config.ts +2 -0
  50. package/payload/platform/plugins/memory/references/schema-construction.md +37 -15
  51. package/payload/platform/plugins/quickbooks/.claude-plugin/plugin.json +21 -0
  52. package/payload/platform/plugins/quickbooks/PLUGIN.md +91 -0
  53. package/payload/platform/plugins/quickbooks/lib/mcp-spawn-tee/index.js +159 -0
  54. package/payload/platform/plugins/quickbooks/lib/mcp-spawn-tee/package.json +3 -0
  55. package/payload/platform/plugins/quickbooks/mcp/dist/index.d.ts +2 -0
  56. package/payload/platform/plugins/quickbooks/mcp/dist/index.d.ts.map +1 -0
  57. package/payload/platform/plugins/quickbooks/mcp/dist/index.js +218 -0
  58. package/payload/platform/plugins/quickbooks/mcp/dist/index.js.map +1 -0
  59. package/payload/platform/plugins/quickbooks/mcp/dist/lib/oauth.d.ts +37 -0
  60. package/payload/platform/plugins/quickbooks/mcp/dist/lib/oauth.d.ts.map +1 -0
  61. package/payload/platform/plugins/quickbooks/mcp/dist/lib/oauth.js +75 -0
  62. package/payload/platform/plugins/quickbooks/mcp/dist/lib/oauth.js.map +1 -0
  63. package/payload/platform/plugins/quickbooks/mcp/dist/lib/qbo-client.d.ts +39 -0
  64. package/payload/platform/plugins/quickbooks/mcp/dist/lib/qbo-client.d.ts.map +1 -0
  65. package/payload/platform/plugins/quickbooks/mcp/dist/lib/qbo-client.js +178 -0
  66. package/payload/platform/plugins/quickbooks/mcp/dist/lib/qbo-client.js.map +1 -0
  67. package/payload/platform/plugins/quickbooks/mcp/dist/lib/secrets.d.ts +36 -0
  68. package/payload/platform/plugins/quickbooks/mcp/dist/lib/secrets.d.ts.map +1 -0
  69. package/payload/platform/plugins/quickbooks/mcp/dist/lib/secrets.js +107 -0
  70. package/payload/platform/plugins/quickbooks/mcp/dist/lib/secrets.js.map +1 -0
  71. package/payload/platform/plugins/quickbooks/mcp/package.json +19 -0
  72. package/payload/platform/plugins/quickbooks/skills/quickbooks/SKILL.md +37 -0
  73. package/payload/platform/scripts/check-no-esm-require.mjs +4 -0
  74. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.d.ts.map +1 -1
  75. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js +16 -0
  76. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js.map +1 -1
  77. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
  78. package/payload/platform/services/claude-session-manager/dist/http-server.js +53 -3
  79. package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
  80. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts +4 -0
  81. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
  82. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +6 -0
  83. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
  84. package/payload/platform/services/claude-session-manager/dist/session-sidecar.d.ts +10 -0
  85. package/payload/platform/services/claude-session-manager/dist/session-sidecar.d.ts.map +1 -1
  86. package/payload/platform/services/claude-session-manager/dist/session-sidecar.js +15 -0
  87. package/payload/platform/services/claude-session-manager/dist/session-sidecar.js.map +1 -1
  88. package/payload/platform/services/webchat-channel/dist/instructions.d.ts.map +1 -1
  89. package/payload/platform/services/webchat-channel/dist/instructions.js +8 -1
  90. package/payload/platform/services/webchat-channel/dist/instructions.js.map +1 -1
  91. package/payload/platform/services/whatsapp-channel/dist/notification.d.ts.map +1 -1
  92. package/payload/platform/services/whatsapp-channel/dist/notification.js +8 -1
  93. package/payload/platform/services/whatsapp-channel/dist/notification.js.map +1 -1
  94. package/payload/platform/templates/specialists/agents/content-producer.md +1 -1
  95. package/payload/server/{chunk-J6WDAWFJ.js → chunk-Q7EWROVN.js} +4 -0
  96. package/payload/server/maxy-edge.js +1 -1
  97. package/payload/server/public/assets/AccessGate-B_sL5-0I.js +1 -0
  98. package/payload/server/public/assets/{AdminLoginScreens-B8s2TbT7.js → AdminLoginScreens-BgicJfUu.js} +1 -1
  99. package/payload/server/public/assets/AdminShell-C0gZ5JKc.js +1 -0
  100. package/payload/server/public/assets/{Checkbox-B_sOAyv1.js → Checkbox-BJdwS4v2.js} +1 -1
  101. package/payload/server/public/assets/OperatorConversations-DPlZIELy.js +1 -0
  102. package/payload/server/public/assets/{admin-gZEndvJT.js → admin-DAFDivnO.js} +1 -1
  103. package/payload/server/public/assets/audio-attachment-mime-h53tpH_4.js +30 -0
  104. package/payload/server/public/assets/{brand-BcNavK6q.css → brand-bye0l_rp.css} +1 -1
  105. package/payload/server/public/assets/{browser-BUlB5_MD.js → browser-CmFjVZYo.js} +1 -1
  106. package/payload/server/public/assets/chat-CSw2u48Q.js +1 -0
  107. package/payload/server/public/assets/data-C4v6AdQ-.js +1 -0
  108. package/payload/server/public/assets/graph-BJyMQdRx.js +51 -0
  109. package/payload/server/public/assets/graph-labels-BTpv_U3g.js +1 -0
  110. package/payload/server/public/assets/operator-Bj88rdnI.js +1 -0
  111. package/payload/server/public/assets/page-hmlVCBRQ.js +1 -0
  112. package/payload/server/public/assets/{public-G_-UI9nB.js → public-IRKxc9hu.js} +3 -3
  113. package/payload/server/public/assets/{public-next-C8_nExQB.js → public-next-DqQ4PZLk.js} +1 -1
  114. package/payload/server/public/assets/{useSelectionMode-Bf6Rt-sl.js → useSelectionMode-CTJhWnNp.js} +1 -1
  115. package/payload/server/public/browser.html +6 -6
  116. package/payload/server/public/chat.html +8 -8
  117. package/payload/server/public/data.html +5 -5
  118. package/payload/server/public/graph.html +8 -8
  119. package/payload/server/public/index.html +9 -9
  120. package/payload/server/public/operator.html +10 -10
  121. package/payload/server/public/public-next.html +9 -9
  122. package/payload/server/public/public.html +7 -7
  123. package/payload/server/server.js +1387 -824
  124. package/payload/server/public/assets/AccessGate-Dh5A79FU.js +0 -1
  125. package/payload/server/public/assets/AdminShell-Cu1zlb6L.js +0 -1
  126. package/payload/server/public/assets/OperatorConversations-hm0Gpu_Q.js +0 -1
  127. package/payload/server/public/assets/audio-attachment-mime-B0b89VnH.js +0 -30
  128. package/payload/server/public/assets/chat-BnceaVl7.js +0 -1
  129. package/payload/server/public/assets/data-3Nl3P5wt.js +0 -1
  130. package/payload/server/public/assets/graph-DMCKpW6P.js +0 -51
  131. package/payload/server/public/assets/graph-labels-AZLGoVy8.js +0 -1
  132. package/payload/server/public/assets/operator-BF4F7k23.js +0 -1
  133. package/payload/server/public/assets/page-DQUEst1o.js +0 -1
  134. /package/payload/server/public/assets/{brand-BQ_u9UdS.js → brand-DqQPSWa7.js} +0 -0
@@ -1 +0,0 @@
1
- import{t as e}from"./chunk-CAM3fms7.js";import{c as t}from"./brand-BQ_u9UdS.js";var n=t(`search`,[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]),r=e((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`,Job:`#8C3B2E`,QuoteDocument:`#A65A4A`,InboundInvoice:`#6B2A20`,SubContractor:`#BF7E6E`,SubInvoice:`#52201A`,WhatsAppGroup:`#D4A096`,Organization:`#8A6B47`,Person:`#B86E4A`,UserProfile:`#D08960`,Preference:`#DFA67A`,AdminUser:`#8C5230`,AccessGrant:`#66381F`,KnowledgeDocument:`#6E8A5A`,ConversationArchive:`#4F6B3E`,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===`Job`){let e=typeof t.client==`string`?t.client:``,n=typeof t.jobId==`string`?t.jobId:``,r=[e,n.length>0?`#${n}`:``].filter(e=>e.length>0).join(` `);if(r.length>0)return r.length>24?r.slice(0,24)+`…`:r}else if(n===`QuoteDocument`){let e=typeof t.ref==`string`?t.ref:``;if(e.length>0)return e.length>24?e.slice(0,24)+`…`:e}else if(n===`InboundInvoice`){let e=typeof t.supplier==`string`?t.supplier:``,n=typeof t.confirmationNumber==`string`?t.confirmationNumber:``,r=[e,n.length>0?`#${n}`:``].filter(e=>e.length>0).join(` `);if(r.length>0)return r.length>24?r.slice(0,24)+`…`:r}else if(n===`WhatsAppGroup`){let e=typeof t.clientName==`string`?t.clientName:``;if(e.length>0)return e.length>24?e.slice(0,24)+`…`:e}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.sessionId==`string`?t.sessionId: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}else if(n===`Job`){let e=typeof t.client==`string`?t.client:``,n=typeof t.jobId==`string`?t.jobId:``,r=[e,n.length>0?`#${n}`:``].filter(e=>e.length>0).join(` `);if(r.length>0)return r}else if(n===`QuoteDocument`){let e=typeof t.ref==`string`?t.ref:``;if(e.length>0)return e}else if(n===`InboundInvoice`){let e=typeof t.supplier==`string`?t.supplier:``,n=typeof t.confirmationNumber==`string`?t.confirmationNumber:``,r=[e,n.length>0?`#${n}`:``].filter(e=>e.length>0).join(` `);if(r.length>0)return r}else if(n===`WhatsAppGroup`){let e=typeof t.clientName==`string`?t.clientName:``;if(e.length>0)return e}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.sessionId==`string`?t.sessionId:null;if(e)return`Conv ${e.slice(0,8)}`}return n??`…`}})),i=r();Object.freeze(new Set([`Chunk`,`GraphPreference`]));var a=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.Job.QuoteDocument.InboundInvoice.SubContractor.SubInvoice.WhatsAppGroup.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{n as i,i as n,r,a as t};
@@ -1 +0,0 @@
1
- import{o as e}from"./chunk-CAM3fms7.js";import{l as t,o as n,u as r}from"./brand-BQ_u9UdS.js";import"./OperatorConversations-hm0Gpu_Q.js";import{n as i,t as a}from"./AdminLoginScreens-B8s2TbT7.js";import"./admin-types-D2qTXuCg.js";import"./AdminShell-Cu1zlb6L.js";import{t as o}from"./page-DQUEst1o.js";import"./audio-attachment-mime-B0b89VnH.js";import"./useSelectionMode-Bf6Rt-sl.js";import"./Checkbox-B_sOAyv1.js";var s=t(),c=e(r(),1),l=n();function u(){let e=i(`operator`),t=(0,c.useRef)(null);return(0,c.useEffect)(()=>{e.appState!==`chat`&&t.current!==e.appState&&(t.current=e.appState,console.info(`[operator-ui] op=auth-gate state=${e.appState}`))},[e.appState]),e.appState===`chat`?(0,l.jsx)(o,{variant:`operator`}):(0,l.jsx)(a,{auth:e})}(0,s.createRoot)(document.getElementById(`root`)).render((0,l.jsx)(u,{}));
@@ -1 +0,0 @@
1
- import{o as e}from"./chunk-CAM3fms7.js";import{c as t,o as n,u as r}from"./brand-BQ_u9UdS.js";import{C as i,a,f as o,i as s,n as c,o as l,r as u,v as d}from"./OperatorConversations-hm0Gpu_Q.js";import{n as f,r as ee,t as te}from"./admin-types-D2qTXuCg.js";import{a as p,i as ne,o as re,r as m,s as h,t as g}from"./AdminShell-Cu1zlb6L.js";import{a as _,i as v,n as y,o as ie,r as ae,t as oe}from"./audio-attachment-mime-B0b89VnH.js";import{i as se}from"./useSelectionMode-Bf6Rt-sl.js";var b=t(`calendar-clock`,[[`path`,{d:`M16 14v2.2l1.6 1`,key:`fo4ql5`}],[`path`,{d:`M16 2v4`,key:`4m81vk`}],[`path`,{d:`M21 7.5V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h3.5`,key:`1osxxc`}],[`path`,{d:`M3 10h5`,key:`r794hk`}],[`path`,{d:`M8 2v4`,key:`1cmpym`}],[`circle`,{cx:`16`,cy:`16`,r:`6`,key:`qoo3c4`}]]),x=t(`circle-question-mark`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3`,key:`1u773s`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),ce=t(`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`}]]),le=t(`graduation-cap`,[[`path`,{d:`M21.42 10.922a1 1 0 0 0-.019-1.838L12.83 5.18a2 2 0 0 0-1.66 0L2.6 9.08a1 1 0 0 0 0 1.832l8.57 3.908a2 2 0 0 0 1.66 0z`,key:`j76jl0`}],[`path`,{d:`M22 10v6`,key:`1lu8f3`}],[`path`,{d:`M6 12.5V16a6 3 0 0 0 12 0v-3.5`,key:`1r8lef`}]]),ue=t(`shield`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}]]),S=`claude-opus-4-8[1m]`,C=`claude-sonnet-4-6`,w=`claude-haiku-4-5`,T={[S]:`Opus 4.8 (1M context)`,[C]:`Sonnet 4.6`,[w]:`Haiku 4.5`};function de(e){return T[e]??e}function fe(e){return e.replace(/\[1m\]$/,``)}var E=`Accomplishing.Actioning.Actualizing.Architecting.Baking.Beaming.Befuddling.Billowing.Blanching.Bloviating.Boogieing.Boondoggling.Booping.Bootstrapping.Brewing.Bunning.Burrowing.Calculating.Canoodling.Caramelizing.Cascading.Catapulting.Cerebrating.Channeling.Channelling.Choreographing.Churning.Clauding.Coalescing.Cogitating.Combobulating.Composing.Computing.Concocting.Considering.Contemplating.Cooking.Crafting.Creating.Crunching.Crystallizing.Cultivating.Deciphering.Deliberating.Determining.Discombobulating.Doing.Doodling.Drizzling.Ebbing.Effecting.Elucidating.Embellishing.Enchanting.Envisioning.Evaporating.Fermenting.Finagling.Flibbertigibbeting.Flowing.Flummoxing.Fluttering.Forging.Forming.Frolicking.Frosting.Gallivanting.Galloping.Garnishing.Generating.Germinating.Gesticulating.Gitifying.Grooving.Gusting.Harmonizing.Hashing.Hatching.Herding.Honking.Hullaballooing.Hyperspacing.Ideating.Imagining.Improvising.Incubating.Inferring.Infusing.Ionizing.Jitterbugging.Julienning.Kneading.Leavening.Levitating.Lollygagging.Manifesting.Marinating.Meandering.Metamorphosing.Misting.Moonwalking.Moseying.Mulling.Musing.Mustering.Nebulizing.Nesting.Newspapering.Noodling.Nucleating.Orbiting.Orchestrating.Osmosing.Perambulating.Percolating.Perusing.Philosophising.Photosynthesizing.Pollinating.Pondering.Pontificating.Pouncing.Precipitating.Prestidigitating.Processing.Proofing.Propagating.Puttering.Puzzling.Quantumizing.Razzmatazzing.Recombobulating.Reticulating.Roosting.Ruminating.Scampering.Schlepping.Scurrying.Seasoning.Shenaniganing.Shimmying.Simmering.Skedaddling.Sketching.Slithering.Smooshing.Spelunking.Spinning.Sprouting.Stewing.Sublimating.Swirling.Swooping.Symbioting.Synthesizing.Tempering.Thinking.Thundering.Tinkering.Tomfoolering.Transfiguring.Transmuting.Twisting.Undulating.Unfurling.Unravelling.Vibing.Waddling.Wandering.Warping.Whatchamacalliting.Whirlpooling.Whirring.Whisking.Wibbling.Working.Wrangling.Zesting.Zigzagging`.split(`.`),D=e(r(),1),O=n(),k=1800;function pe(){let[e,t]=(0,D.useState)(()=>Math.floor(Math.random()*E.length));return(0,D.useEffect)(()=>{let e=setInterval(()=>t(e=>(e+1)%E.length),k);return()=>clearInterval(e)},[]),(0,O.jsxs)(`div`,{className:`chat-activity`,"aria-live":`polite`,"aria-label":`Agent is working`,children:[(0,O.jsx)(`img`,{src:`/brand/claude.png`,alt:``,className:`chat-activity-icon`}),(0,O.jsxs)(`span`,{className:`chat-activity-word`,children:[E[e],`…`]})]})}function A({variant:e,label:t,children:n}){let[r,i]=(0,D.useState)(!1);return(0,O.jsxs)(`div`,{className:`chat-${e}`,children:[(0,O.jsxs)(`button`,{type:`button`,className:`chat-${e}-toggle`,"aria-expanded":r,onClick:()=>i(e=>!e),children:[(0,O.jsx)(`span`,{className:`wa-chevron`,children:r?`▾`:`▸`}),(0,O.jsx)(`span`,{className:`chat-${e}-label`,children:t})]}),r&&n]})}function j({turns:e}){let t=e.filter(e=>e.kind===`tool-call`).length;return(0,O.jsx)(A,{variant:`toolrun`,label:t>0?`Used ${t} tool${t===1?``:`s`}`:`${e.length} tool result${e.length===1?``:`s`}`,children:e.map((e,t)=>(0,O.jsxs)(`div`,{className:`chat-toolrun-item`,children:[(0,O.jsx)(`span`,{className:`chat-toolrun-name`,children:e.kind===`tool-call`?`↳ ${e.name}`:e.isError?`result (error)`:`result`}),(0,O.jsx)(`pre`,{className:`wa-code`,children:e.kind===`tool-call`?JSON.stringify(e.input,null,2):e.text})]},t))})}function M({turns:e}){return(0,O.jsx)(A,{variant:`thinking`,label:`Thinking`,children:e.map((e,t)=>(0,O.jsx)(`div`,{className:`chat-thinking-item`,children:(0,O.jsx)(v,{content:e.text})},t))})}function N({composed:e}){return(0,O.jsx)(A,{variant:`composed`,label:`What the agent received`,children:(0,O.jsx)(`pre`,{className:`wa-code chat-composed-body`,children:e})})}function P(e,t,n){switch(e.kind){case`operator-inbound`:case`operator-typed`:{let r=e.kind===`operator-inbound`?e.rawBody:void 0,i=r??e.text;return(0,O.jsxs)(`div`,{className:`chat-turn-op`,children:[e.kind===`operator-inbound`&&e.source&&(0,O.jsx)(`span`,{className:`chat-via`,children:a(e.source).replace(` · `,``)}),(0,O.jsx)(`p`,{className:`chat-op-body`,children:i}),r!==void 0&&n===`admin`&&(0,O.jsx)(N,{composed:e.text})]},t)}case`agent-reply`:return(0,O.jsx)(`div`,{className:`chat-prose`,children:(0,O.jsx)(v,{content:e.text})},t);case`agent-reply-document`:return(0,O.jsxs)(`div`,{className:`chat-prose`,children:[(0,O.jsxs)(`p`,{className:`chat-doc`,children:[`📎 sent document(s): `,e.files.map(s).join(`, `)]}),e.caption&&(0,O.jsx)(v,{content:e.caption})]},t);case`agent-error`:return(0,O.jsxs)(`div`,{className:`chat-agent-error`,role:`alert`,children:[(0,O.jsx)(`span`,{className:`chat-agent-error-msg`,children:l(e.code,n)}),n===`admin`&&e.code===`agent_error`&&e.raw&&(0,O.jsx)(`pre`,{className:`chat-agent-error-raw`,children:e.raw})]},t)}}function me(e,t,n,r=`admin`){let i=[],a=[],o=[],s=()=>{a.length!==0&&(i.push((0,O.jsx)(j,{turns:a},`tools-${i.length}`)),a=[])},l=()=>{o.length!==0&&(i.push((0,O.jsx)(M,{turns:o},`think-${i.length}`)),o=[])};return e.forEach((e,u)=>{if(e.kind===`turn`&&(e.turn.kind===`tool-call`||e.turn.kind===`tool-result`)){l(),a.push(e.turn);return}if(e.kind===`turn`&&e.turn.kind===`agent-text`){s(),o.push(e.turn);return}s(),l(),e.kind===`directive`?i.push((0,O.jsx)(c,{entry:e.entry,sessionId:t,sessionKey:n},u)):i.push(P(e.turn,u,r))}),s(),l(),i}var F=[S,C,w],I=[`low`,`medium`,`high`,`xhigh`],L={low:`Low`,medium:`Medium`,high:`High`,xhigh:`Highest`},he=[{value:`default`,label:`Ask permissions`},{value:`acceptEdits`,label:`Accept edits`},{value:`plan`,label:`Plan mode`},{value:`auto`,label:`Auto mode`},{value:`bypassPermissions`,label:`Bypass permissions`}],ge=Object.fromEntries(he.map(e=>[e.value,e.label])),_e=2500,ve=15e3;function R(e){let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString(void 0,{weekday:`short`,day:`numeric`,month:`short`,hour:`2-digit`,minute:`2-digit`})}function ye({cacheKey:e,userName:t}){let[n,r]=(0,D.useState)(null);(0,D.useEffect)(()=>{let t=!1;return fetch(`/api/webchat/greeting?session_key=${encodeURIComponent(e)}`).then(async e=>{let n=await e.json();if(!t){if(!e.ok||n.ok!==!0){console.warn(`[admin-ui] greeting-unavailable status=${e.status} ok=${String(n.ok)}`);return}r({events:n.events,tasks:n.tasks,specialists:n.specialists??[]})}}).catch(e=>{t||console.warn(`[admin-ui] greeting-unavailable error=${e instanceof Error?e.message:String(e)}`)}),()=>{t=!0}},[e]);let i=t?.trim().split(/\s+/)[0],a=n?n.tasks.total-n.tasks.items.length:0;return(0,O.jsxs)(`div`,{className:`webchat-greeting`,children:[(0,O.jsx)(`h2`,{className:`webchat-greeting-head`,children:i?`What's up next, ${i}?`:`What's up next?`}),n&&(0,O.jsxs)(O.Fragment,{children:[(0,O.jsxs)(`section`,{className:`webchat-greeting-section`,"data-kind":`events`,children:[(0,O.jsxs)(`h3`,{className:`webchat-greeting-label`,children:[(0,O.jsx)(b,{size:14}),` Upcoming schedule`]}),n.events.length===0?(0,O.jsx)(`p`,{className:`webchat-greeting-none`,children:`Nothing scheduled`}):n.events.map(e=>(0,O.jsxs)(`div`,{className:`webchat-greeting-row`,children:[(0,O.jsx)(`span`,{className:`webchat-greeting-name`,children:e.name}),(0,O.jsx)(`span`,{className:`webchat-greeting-when`,children:R(e.at)})]},e.eventId))]}),(0,O.jsxs)(`section`,{className:`webchat-greeting-section`,"data-kind":`tasks`,children:[(0,O.jsxs)(`h3`,{className:`webchat-greeting-label`,children:[(0,O.jsx)(p,{size:14}),` Outstanding tasks`]}),n.tasks.items.length===0?(0,O.jsx)(`p`,{className:`webchat-greeting-none`,children:`No open tasks`}):(0,O.jsxs)(O.Fragment,{children:[n.tasks.items.map(e=>(0,O.jsxs)(`div`,{className:`webchat-greeting-row`,children:[(0,O.jsx)(`span`,{className:`webchat-greeting-name`,children:e.name}),(0,O.jsx)(`span`,{className:`webchat-greeting-status`,children:e.status})]},e.taskId)),a>0&&(0,O.jsxs)(`p`,{className:`webchat-greeting-more`,children:[`+`,a,` more`]})]})]}),(0,O.jsxs)(`section`,{className:`webchat-greeting-section`,"data-kind":`specialists`,children:[(0,O.jsxs)(`h3`,{className:`webchat-greeting-label`,children:[(0,O.jsx)(m,{size:14}),` Your specialists`]}),n.specialists.length===0?(0,O.jsx)(`p`,{className:`webchat-greeting-none`,children:`No specialists installed`}):n.specialists.map((e,t)=>(0,O.jsxs)(`div`,{className:`webchat-greeting-row webchat-greeting-row-stacked`,children:[(0,O.jsx)(`span`,{className:`webchat-greeting-name`,children:e.name}),e.summary&&(0,O.jsx)(`span`,{className:`webchat-greeting-summary`,children:e.summary})]},`${t}-${e.name}`))]})]})]})}function z(e,t){let n=(0,D.useRef)(null);return(0,D.useEffect)(()=>{if(!e)return;let r=e=>{n.current&&!n.current.contains(e.target)&&t(!1)},i=e=>{e.key===`Escape`&&t(!1)};return document.addEventListener(`mousedown`,r),window.addEventListener(`keydown`,i),()=>{document.removeEventListener(`mousedown`,r),window.removeEventListener(`keydown`,i)}},[e,t]),n}function be({kind:e,label:t,icon:n,options:r,selected:a,disabled:o,onPick:s}){let[c,l]=(0,D.useState)(!1);return(0,O.jsxs)(`div`,{className:`webchat-picker`,ref:z(c,l),children:[(0,O.jsx)(`button`,{type:`button`,className:`webchat-control webchat-picker-trigger`,"data-kind":e,disabled:o,"aria-haspopup":`listbox`,"aria-expanded":c,"aria-label":a?`${t}: ${a}`:t,title:`${t} — ${a??t} (applies to new sessions)`,onClick:()=>l(e=>!e),children:n}),c&&(0,O.jsx)(`div`,{className:`webchat-picker-panel`,role:`listbox`,children:r.map(t=>(0,O.jsxs)(`button`,{type:`button`,className:`webchat-picker-option`,"data-kind":e,"data-value":t.value,role:`option`,"aria-checked":t.value===a||t.label===a,onClick:()=>{s(t.value),l(!1)},children:[(0,O.jsx)(i,{size:12,className:`webchat-picker-check`}),t.label]},t.value))})]})}function xe({icon:e,value:t,index:n,disabled:r,onPick:i}){let[a,o]=(0,D.useState)(!1),s=z(a,o),c=L[t]??`Medium`;return(0,O.jsxs)(`div`,{className:`webchat-picker`,ref:s,children:[(0,O.jsx)(`button`,{type:`button`,className:`webchat-control webchat-picker-trigger`,"data-kind":`effort`,disabled:r,"aria-haspopup":`dialog`,"aria-expanded":a,"aria-label":`Thinking effort: ${c}`,title:`Thinking — ${c} (Faster ↔ Smarter, applies to new sessions)`,onClick:()=>o(e=>!e),children:e}),a&&(0,O.jsxs)(`div`,{className:`webchat-picker-panel webchat-effort-panel`,role:`dialog`,"aria-label":`Effort for new sessions`,children:[(0,O.jsxs)(`div`,{className:`webchat-effort-head`,children:[(0,O.jsxs)(`span`,{className:`webchat-effort-title`,children:[`Effort `,(0,O.jsx)(`strong`,{children:c})]}),(0,O.jsx)(`span`,{className:`webchat-effort-help`,title:`Higher effort spends more time reasoning before each reply.`,children:(0,O.jsx)(x,{size:13})})]}),(0,O.jsxs)(`div`,{className:`webchat-effort-ends`,children:[(0,O.jsx)(`span`,{children:`Faster`}),(0,O.jsx)(`span`,{children:`Smarter`})]}),(0,O.jsxs)(`div`,{className:`webchat-effort-track`,children:[(0,O.jsx)(`span`,{className:`webchat-effort-dots`,"aria-hidden":`true`,children:I.map((e,t)=>(0,O.jsx)(`span`,{className:`webchat-effort-dot`,"data-max":t===I.length-1},e))}),(0,O.jsx)(`input`,{type:`range`,className:`webchat-effort-slider`,"data-kind":`effort`,min:0,max:I.length-1,step:1,value:n,disabled:r,"aria-label":`Effort for new sessions`,onChange:e=>i(I[Number(e.target.value)])})]})]})]})}function B({cacheKey:e,userName:t,targetSessionId:n,variant:r=`admin`}){let i=r===`public`,[a,o]=(0,D.useState)(null),[s,c]=(0,D.useState)(null),[l,d]=(0,D.useState)(``),[p,m]=(0,D.useState)(!1),[h,g]=(0,D.useState)(null),[v,b]=(0,D.useState)(null),x=(0,D.useRef)(!1),[S,C]=(0,D.useState)([]),[w,T]=(0,D.useState)(null),[E,k]=(0,D.useState)(!1),A=(0,D.useRef)(null),j=()=>Math.round((typeof window>`u`?900:window.innerHeight)/3),[M,N]=(0,D.useState)(null),P=(0,D.useRef)(null),L=(0,D.useRef)(null),R=(0,D.useCallback)(e=>{let t=L.current;t&&N(Math.min(j(),Math.max(44,t.startH+(t.startY-e.clientY))))},[]),z=(0,D.useCallback)(()=>{L.current=null,window.removeEventListener(`pointermove`,R),window.removeEventListener(`pointerup`,z)},[R]),B=(0,D.useCallback)(e=>{L.current={startY:e.clientY,startH:P.current?.offsetHeight??44},window.addEventListener(`pointermove`,R),window.addEventListener(`pointerup`,z),e.preventDefault()},[R,z]),V=(0,D.useCallback)(e=>{let t=M??P.current?.offsetHeight??44;e.key===`ArrowUp`?(e.preventDefault(),N(Math.min(j(),t+24))):e.key===`ArrowDown`&&(e.preventDefault(),N(Math.max(44,t-24)))},[M]),H=(0,D.useCallback)(e=>{T(null);let t=e.find(e=>!oe(e.type,ee));if(t){T(`Unsupported file type: "${t.type}". Supported: images, PDF, plain text, markdown, CSV, calendar, zip, voice notes.`);return}let n=e.find(e=>e.size>f);if(n){T(`"${n.name}" exceeds the 50 MB limit.`);return}C(t=>[...t,...e].slice(0,5))},[]),U=(0,D.useMemo)(()=>S.map(e=>e.type.startsWith(`image/`)?URL.createObjectURL(e):null),[S]);(0,D.useEffect)(()=>()=>{for(let e of U)e&&URL.revokeObjectURL(e)},[U]);let W=y(),Se=W.state===`recording`||W.state===`paused`||W.state===`sending`,Ce=(0,D.useCallback)(async()=>{let t=await W.send();if(!t)return;let r=t.type===`audio/ogg`?`.ogg`:t.type===`audio/mp4`?`.m4a`:`.webm`,a=new File([t],`voice-note${r}`,{type:t.type});if(p){C(e=>[...e,a].slice(0,5));return}m(!0);let o=new FormData;i?(o.append(`message`,``),o.append(`session_key`,s??``)):o.append(`text`,``),o.append(`attachments`,a),!i&&n&&o.append(`session`,n);try{let t=i?await fetch(`/api/chat`,{method:`POST`,body:o}):await fetch(`/api/webchat/send?session_key=${encodeURIComponent(e)}`,{method:`POST`,body:o});t.ok||(console.error(`[admin-ui] webchat-send-failed kind=voice status=${t.status}`),C(e=>[...e,a].slice(0,5)),T(`Voice note failed to send. The recording is attached — press send to retry.`))}catch(e){console.error(`[admin-ui] webchat-send-failed kind=voice error=${e instanceof Error?e.message:String(e)}`),C(e=>[...e,a].slice(0,5)),T(`Voice note failed to send. The recording is attached — press send to retry.`)}finally{m(!1)}},[W,e,n,p,i,s]),G=(0,D.useRef)(!1);(0,D.useEffect)(()=>(G.current=!1,()=>{G.current=!0}),[]);let we=(0,D.useRef)(!1),Te=(0,D.useCallback)(async()=>{if(we.current)return null;we.current=!0;try{if(i){let e=await fetch(`/api/public-reader/session`);if(!e.ok)return null;let t=await e.json();if(G.current)return null;c(t.sessionKey);let n={sessionId:t.sessionId??``,projectDir:t.projectDir};return o(n),n}let t=`session_key=${encodeURIComponent(e)}${n?`&session=${encodeURIComponent(n)}`:``}`,r=await fetch(`/api/webchat/session?${t}`);if(!r.ok)return null;let a=await r.json();return G.current||o(a),a}catch{return null}finally{we.current=!1}},[e,n,i]);(0,D.useEffect)(()=>{Te();let e=setInterval(()=>{Te()},_e);return()=>clearInterval(e)},[Te]);let Ee=(0,D.useCallback)(async()=>{let t=l.trim();if(!(!t&&S.length===0||p)){m(!0),x.current=!1;try{if(i){let e=s;if(!e){console.error(`[public-webchat] op=send-skip reason=no-key`);return}let n;if(S.length>0){let r=new FormData;r.append(`message`,t),r.append(`session_key`,e);for(let e of S)r.append(`attachments`,e);n=await fetch(`/api/chat`,{method:`POST`,body:r})}else n=await fetch(`/api/chat`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({message:t,session_key:e})});n.ok?(d(``),C([]),T(null)):console.error(`[public-webchat] op=send-failed status=${n.status}`);return}let r;if(S.length>0){let i=new FormData;i.append(`text`,t);for(let e of S)i.append(`attachments`,e);n&&i.append(`session`,n),r=await fetch(`/api/webchat/send?session_key=${encodeURIComponent(e)}`,{method:`POST`,body:i})}else r=await fetch(`/api/webchat/send?session_key=${encodeURIComponent(e)}`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(n?{text:t,session:n}:{text:t})});if(r.ok){T(null),b(null),x.current=!0,g({baselineSize:a?.sizeBytes??null});return}else r.status===409?console.error(`[admin-ui] webchat-send-refused reason=channel-conflict`):console.error(`[admin-ui] webchat-send-failed status=${r.status}`)}catch(e){console.error(`[admin-ui] webchat-send-failed error=${e instanceof Error?e.message:String(e)}`)}finally{x.current||m(!1)}}},[l,p,e,S,n,i,s,a?.sizeBytes]),De=(0,D.useCallback)(e=>{e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),Ee())},[Ee]);(0,D.useEffect)(()=>{if(!h)return;let e=a?.sizeBytes;e!=null&&(h.baselineSize==null||e>h.baselineSize)&&(d(``),C([]),b(null),g(null),x.current=!1,m(!1))},[a,h]),(0,D.useEffect)(()=>{if(!h)return;let e=setTimeout(()=>{g(null),x.current=!1,m(!1),b(`Couldn't be delivered — press send to retry.`)},ve);return()=>clearTimeout(e)},[h]);let K=n?a?.channelBinding??null:null,Oe=(0,D.useRef)(!1);(0,D.useEffect)(()=>{!n||Oe.current||!a||(Oe.current=!0,console.warn(`[admin-ui] chat-session-target sessionId=${n} jsonl=${a.projectDir?`found`:`missing`} known=${a.known===!0}`))},[a,n]);let ke=(0,D.useRef)(!1);(0,D.useEffect)(()=>{n||ke.current||!a?.sessionId||(ke.current=!0,console.info(`[admin-ui] chat-session-resolve sessionId=${a.sessionId.slice(0,8)} source=canonical`))},[a,n]);let Ae=a?a.effectivePermissionMode??a.permissionMode??null:null,q=a?.model??null,je=a?.activity===`busy`,[J,Me]=(0,D.useState)(null),[Y,Ne]=(0,D.useState)(null),[X,Pe]=(0,D.useState)(null),[Fe,Z]=(0,D.useState)(null),Ie=(0,D.useCallback)(async(t,n)=>{let r=t===`model`?Me:t===`effort`?Ne:Pe;r(n),Z(null);try{let i=await fetch(`/api/webchat/settings?session_key=${encodeURIComponent(e)}`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({op:t,value:n})});i.ok||(r(null),Z(`Could not save ${t} (status ${i.status})`),console.error(`[admin-ui] webchat-settings-failed op=${t} status=${i.status}`))}catch(e){r(null),Z(`Could not save ${t} (network error)`),console.error(`[admin-ui] webchat-settings-failed op=${t} error=${e instanceof Error?e.message:String(e)}`)}},[e]),Q=(0,D.useRef)(!1),Le=(0,D.useCallback)(async t=>{if(a?.sessionId&&!Q.current){Q.current=!0,Z(null);try{let n=await fetch(`/api/admin/session-reseat?session_key=${encodeURIComponent(e)}`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({fromSessionId:a.sessionId,model:t})});if(!n.ok){Z(`Could not move this chat (status ${n.status})`),console.error(`[admin-ui] reseat-failed status=${n.status}`),Q.current=!1;return}let r=await n.json();r.target?window.location.href=r.target:Q.current=!1}catch(e){Z(`Could not move this chat (network error)`),console.error(`[admin-ui] reseat-failed error=${e instanceof Error?e.message:String(e)}`),Q.current=!1}}},[e,a?.sessionId]);(0,D.useEffect)(()=>{J!==null&&a?.leverModel===J&&Me(null),Y!==null&&a?.leverEffort===Y&&Ne(null),X!==null&&a?.leverMode===X&&Pe(null)},[a,J,Y,X]);let $=J??a?.leverModel??q??``,Re=Y??a?.leverEffort??``,ze=X??a?.leverMode??Ae??null,Be=Math.max(0,I.indexOf(Re||`medium`)),Ve=$&&!F.includes($)?[...F,$]:F,He=(0,D.useRef)(!1);return(0,D.useEffect)(()=>{He.current||a?.projectDir&&a.activity==null&&Ae==null&&q==null&&(He.current=!0,console.warn(`[admin-ui] composer-indicators-unavailable sessionId=${a.sessionId} (manager meta unreadable or pre-activity)`))},[a,Ae,q]),(0,O.jsxs)(`div`,{className:`webchat-page`,children:[a?.projectDir?(0,O.jsx)(u,{sessionId:a.transcriptSessionId??a.sessionId,projectDir:a.projectDir,sessionKey:i?s??``:e,renderItems:i?(e,t,n)=>me(e,t,n,`public`):me,cleanViewToggle:r===`admin`,forceDeliveredOnly:r===`operator`||i,streamEndpoint:i?`/api/public-reader/stream`:`/api/whatsapp-reader/stream`,suppressDirectives:i,tail:!i&&je?(0,O.jsx)(pe,{}):null},a.sessionId):a&&!i?!n||a.known?(0,O.jsx)(ye,{cacheKey:e,userName:t}):(0,O.jsx)(`div`,{className:`webchat-greeting`,children:(0,O.jsx)(`p`,{className:`webchat-greeting-none`,children:`No transcript found for this session.`})}):null,(0,O.jsx)(`div`,{className:`webchat-composer`,children:(0,O.jsxs)(`div`,{className:`webchat-composer-box${E?` drag-over`:``}`,onDragOver:e=>{e.preventDefault(),k(!0)},onDragLeave:()=>k(!1),onDrop:e=>{e.preventDefault(),k(!1),H([...e.dataTransfer.files])},children:[(0,O.jsx)(`input`,{ref:A,type:`file`,multiple:!0,accept:te,style:{display:`none`},onChange:e=>{e.target.files&&H([...e.target.files]),e.target.value=``}}),!Se&&(0,O.jsx)(`div`,{className:`webchat-resize-handle`,role:`separator`,"aria-orientation":`horizontal`,"aria-label":`Resize input — drag up to enlarge`,tabIndex:0,onPointerDown:B,onKeyDown:V}),S.length>0&&(0,O.jsx)(`div`,{className:`attachment-strip`,children:S.map((e,t)=>(0,O.jsxs)(`div`,{className:`attachment-chip`,children:[U[t]?(0,O.jsx)(`img`,{src:U[t],alt:e.name,className:`attachment-chip-thumb`}):e.type.startsWith(`audio/`)?(0,O.jsx)(_,{size:14}):e.type===`application/pdf`?(0,O.jsx)(se,{size:14}):(0,O.jsx)(ie,{size:14}),(0,O.jsx)(`span`,{className:`attachment-chip-name`,children:e.name}),(0,O.jsx)(`button`,{type:`button`,className:`attachment-chip-remove`,onClick:()=>C(e=>e.filter((e,n)=>n!==t)),"aria-label":`Remove ${e.name}`,children:`×`})]},t))}),w&&(0,O.jsx)(`p`,{className:`attach-error`,children:w}),v&&(0,O.jsx)(`p`,{className:`webchat-send-error`,role:`alert`,children:v}),W.state===`error`&&W.errorMessage&&(0,O.jsxs)(`p`,{className:`voice-error`,role:`alert`,children:[(0,O.jsx)(_,{size:14}),W.errorMessage]}),Se?(0,O.jsx)(`div`,{className:`webchat-input-row voice-active`,children:(0,O.jsx)(ae,{state:W.state,elapsedSeconds:W.elapsedSeconds,waveform:W.waveform,onTogglePause:W.togglePause,onDiscard:W.discard,onSend:()=>void Ce()})}):(0,O.jsxs)(`div`,{className:`webchat-input-row`,children:[(0,O.jsx)(`textarea`,{ref:P,className:`webchat-input`,value:l,placeholder:`Message your agent…`,rows:2,style:M==null?void 0:{height:`${M}px`},disabled:K!==null,onChange:e=>d(e.target.value),onKeyDown:De,onPaste:e=>{let t=e.clipboardData?.items;if(!t)return;let n=[];for(let e of t){if(e.kind!==`file`)continue;let t=e.getAsFile();if(!t)continue;let r=t.type.split(`/`)[1]?.replace(`jpeg`,`jpg`)||`png`;n.push(new File([t],`pasted-image-${Date.now()}.${r}`,{type:t.type}))}n.length>0&&H(n)}}),(0,O.jsx)(`button`,{type:`button`,className:`webchat-send`,onClick:()=>void Ee(),disabled:p||l.trim().length===0&&S.length===0||K!==null,"aria-label":`Send`,title:`Send`,children:(0,O.jsx)(ce,{size:16})})]}),K!==null&&(0,O.jsxs)(`p`,{className:`webchat-conflict-hint`,children:[`This session is bound to the `,K,` channel — message it there. The transcript stays readable here.`]}),(0,O.jsxs)(`div`,{className:`webchat-controls`,children:[(0,O.jsxs)(`div`,{className:`webchat-controls-left`,children:[(0,O.jsx)(`button`,{type:`button`,className:`webchat-control`,onClick:()=>A.current?.click(),disabled:K!==null,title:`Attach files`,"aria-label":`Attach`,children:(0,O.jsx)(ne,{size:14})}),(0,O.jsx)(`button`,{type:`button`,className:`webchat-control`,onClick:W.start,disabled:Se||K!==null,title:`Record voice note`,"aria-label":`Voice input`,children:(0,O.jsx)(_,{size:14})})]}),!i&&(0,O.jsxs)(`div`,{className:`webchat-controls-right`,children:[a?.sessionId&&(0,O.jsx)(`code`,{className:`webchat-session-id`,title:`First 8 characters of this session's id — matches the Sessions list.`,children:a.sessionId.slice(0,8)}),Fe&&(0,O.jsx)(`span`,{className:`webchat-settings-error`,role:`alert`,children:Fe}),ze&&(0,O.jsx)(be,{kind:`mode`,label:`Permission mode`,icon:(0,O.jsx)(ue,{size:14}),options:he,selected:ge[ze]??ze,disabled:K!==null,onPick:e=>void Ie(`mode`,e)}),(0,O.jsx)(be,{kind:`model`,label:`Model`,icon:(0,O.jsx)(re,{size:14}),options:Ve.map(e=>({value:e,label:de(e)})),selected:$?de($):null,disabled:K!==null,onPick:e=>{a?.projectDir?(!q||fe(e)!==fe(q))&&Le(e):Ie(`model`,e)}}),(0,O.jsx)(xe,{icon:(0,O.jsx)(le,{size:14}),value:Re,index:Be,disabled:K!==null,onPick:e=>void Ie(`effort`,e)})]})]})]})})]})}function V({variant:e=`admin`}){let[t,n]=(0,D.useState)(null),[r]=(0,D.useState)(()=>{if(e===`operator`)return null;try{return new URLSearchParams(window.location.search).get(`session`)}catch{return null}}),[i,a]=(0,D.useState)(!1),[s,c]=(0,D.useState)(void 0),[l,u]=(0,D.useState)(null),[f,ee]=(0,D.useState)(void 0),[te,p]=(0,D.useState)(null),[ne,re]=(0,D.useState)(null);(0,D.useEffect)(()=>{let e=!1,t=null;try{t=sessionStorage.getItem(`maxy-admin-session-key`)}catch{}if(!t){n(null),a(!0);return}return fetch(`/api/admin/session?session_key=${encodeURIComponent(t)}`).then(async r=>{if(!e){if(r.status===401){try{sessionStorage.removeItem(`maxy-admin-session-key`)}catch{}window.location.href=`/`;return}if(r.ok)try{let e=await r.json();typeof e.businessName==`string`&&c(e.businessName),e.sessionId!==void 0&&u(e.sessionId??null),re(e.role??null),ee(e.userName===void 0?null:e.userName),p(e.avatar??null)}catch{}n(t),a(!0)}}).catch(()=>{e||(n(t),a(!0))}),()=>{e=!0}},[]);let m=(0,D.useRef)(!1);(0,D.useEffect)(()=>{e!==`operator`||!i||!t||m.current||(m.current=!0,console.info(`[operator-ui] op=mount surface=chat sessionId=${(l??``).slice(0,8)}`))},[e,i,t,l]);let _=(0,D.useCallback)(()=>{try{sessionStorage.removeItem(`maxy-admin-session-key`)}catch{}window.location.href=`/`},[]),[v,y]=(0,D.useState)(!1),ie=(0,D.useCallback)(async()=>{y(!0);try{let e=await h();if(e){try{sessionStorage.removeItem(`maxy-admin-session-key`)}catch{}window.location.href=`/`}return e}finally{y(!1)}},[]);return i?t?(0,O.jsx)(o,{cacheKey:t,surface:`chat`,onSessionExpired:({code:e,path:t})=>{console.warn(`[admin-auth] outcome=session-expired-redirect code=${e} path=${t} surface=chat`);try{sessionStorage.removeItem(`maxy-admin-session-key`)}catch{}window.location.href=`/`},children:(0,O.jsx)(g,{cacheKey:t,businessName:s,variant:e,sessionId:l,onLogout:_,onDisconnect:ie,disconnecting:v,userName:f,userAvatar:te,role:ne,children:(0,O.jsx)(B,{cacheKey:t,userName:f??null,targetSessionId:r,variant:e})})}):(0,O.jsx)(`div`,{className:`data-page`,children:(0,O.jsxs)(`div`,{className:`data-empty`,children:[(0,O.jsx)(`p`,{children:`You are not signed in.`}),(0,O.jsxs)(`p`,{children:[`Open the `,(0,O.jsx)(`a`,{href:`/`,className:`data-link`,children:`main admin page`}),` and log in, then return here.`]})]})}):(0,O.jsx)(`div`,{className:`data-page`,children:(0,O.jsxs)(`div`,{className:`data-loading`,children:[(0,O.jsx)(d,{size:18,className:`spin`}),` Loading…`]})})}function H(){return(0,O.jsx)(V,{})}export{H as n,B as r,V as t};