@rubytech/create-maxy-code 0.1.313 → 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 (103) 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/admin/skills/file-presentation/SKILL.md +1 -1
  8. package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +4 -4
  9. package/payload/platform/plugins/admin/skills/professional-document/SKILL.md +1 -1
  10. package/payload/platform/plugins/docs/references/admin-session.md +2 -0
  11. package/payload/platform/plugins/docs/references/admin-ui.md +2 -2
  12. package/payload/platform/plugins/docs/references/memory-guide.md +1 -1
  13. package/payload/platform/plugins/graph-viewer/mcp/dist/index.js +1 -1
  14. package/payload/platform/plugins/graph-viewer/mcp/dist/index.js.map +1 -1
  15. package/payload/platform/plugins/graph-viewer/mcp/dist/tools/graph-render.d.ts.map +1 -1
  16. package/payload/platform/plugins/graph-viewer/mcp/dist/tools/graph-render.js +8 -7
  17. package/payload/platform/plugins/graph-viewer/mcp/dist/tools/graph-render.js.map +1 -1
  18. package/payload/platform/plugins/graph-viewer/skills/render-graph/SKILL.md +8 -5
  19. package/payload/platform/plugins/memory/mcp/dist/index.js +2 -0
  20. package/payload/platform/plugins/memory/mcp/dist/index.js.map +1 -1
  21. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/relationship-patterns.test.d.ts +2 -0
  22. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/relationship-patterns.test.d.ts.map +1 -0
  23. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/relationship-patterns.test.js +146 -0
  24. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/relationship-patterns.test.js.map +1 -0
  25. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-cypher-drift.test.js +4 -0
  26. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-cypher-drift.test.js.map +1 -1
  27. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-validator.test.js +1 -0
  28. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/schema-validator.test.js.map +1 -1
  29. package/payload/platform/plugins/memory/mcp/dist/lib/relationship-patterns.d.ts +66 -0
  30. package/payload/platform/plugins/memory/mcp/dist/lib/relationship-patterns.d.ts.map +1 -0
  31. package/payload/platform/plugins/memory/mcp/dist/lib/relationship-patterns.js +102 -0
  32. package/payload/platform/plugins/memory/mcp/dist/lib/relationship-patterns.js.map +1 -0
  33. package/payload/platform/plugins/memory/mcp/dist/lib/schema-loader.d.ts +9 -0
  34. package/payload/platform/plugins/memory/mcp/dist/lib/schema-loader.d.ts.map +1 -1
  35. package/payload/platform/plugins/memory/mcp/dist/lib/schema-loader.js +6 -1
  36. package/payload/platform/plugins/memory/mcp/dist/lib/schema-loader.js.map +1 -1
  37. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-personfields-open.test.js +1 -0
  38. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/profile-update-personfields-open.test.js.map +1 -1
  39. package/payload/platform/plugins/memory/mcp/dist/tools/memory-edge.d.ts +9 -0
  40. package/payload/platform/plugins/memory/mcp/dist/tools/memory-edge.d.ts.map +1 -1
  41. package/payload/platform/plugins/memory/mcp/dist/tools/memory-edge.js +25 -1
  42. package/payload/platform/plugins/memory/mcp/dist/tools/memory-edge.js.map +1 -1
  43. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.d.ts.map +1 -1
  44. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js +21 -0
  45. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js.map +1 -1
  46. package/payload/platform/plugins/memory/mcp/vitest.config.ts +2 -0
  47. package/payload/platform/plugins/memory/references/schema-construction.md +37 -15
  48. package/payload/platform/scripts/check-no-esm-require.mjs +4 -0
  49. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
  50. package/payload/platform/services/claude-session-manager/dist/http-server.js +53 -3
  51. package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
  52. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts +4 -0
  53. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
  54. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +6 -0
  55. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
  56. package/payload/platform/services/claude-session-manager/dist/session-sidecar.d.ts +10 -0
  57. package/payload/platform/services/claude-session-manager/dist/session-sidecar.d.ts.map +1 -1
  58. package/payload/platform/services/claude-session-manager/dist/session-sidecar.js +15 -0
  59. package/payload/platform/services/claude-session-manager/dist/session-sidecar.js.map +1 -1
  60. package/payload/platform/services/webchat-channel/dist/instructions.d.ts.map +1 -1
  61. package/payload/platform/services/webchat-channel/dist/instructions.js +8 -1
  62. package/payload/platform/services/webchat-channel/dist/instructions.js.map +1 -1
  63. package/payload/platform/services/whatsapp-channel/dist/notification.d.ts.map +1 -1
  64. package/payload/platform/services/whatsapp-channel/dist/notification.js +8 -1
  65. package/payload/platform/services/whatsapp-channel/dist/notification.js.map +1 -1
  66. package/payload/platform/templates/specialists/agents/content-producer.md +1 -1
  67. package/payload/server/public/assets/AccessGate-B_sL5-0I.js +1 -0
  68. package/payload/server/public/assets/{AdminLoginScreens-DgwQi3HN.js → AdminLoginScreens-BgicJfUu.js} +1 -1
  69. package/payload/server/public/assets/AdminShell-C0gZ5JKc.js +1 -0
  70. package/payload/server/public/assets/{Checkbox-C54JSreC.js → Checkbox-BJdwS4v2.js} +1 -1
  71. package/payload/server/public/assets/OperatorConversations-DPlZIELy.js +1 -0
  72. package/payload/server/public/assets/{admin-B25rkI9Q.js → admin-DAFDivnO.js} +1 -1
  73. package/payload/server/public/assets/audio-attachment-mime-h53tpH_4.js +30 -0
  74. package/payload/server/public/assets/{brand-TWflEl22.css → brand-bye0l_rp.css} +1 -1
  75. package/payload/server/public/assets/{browser-C9Z5dLlN.js → browser-CmFjVZYo.js} +1 -1
  76. package/payload/server/public/assets/chat-CSw2u48Q.js +1 -0
  77. package/payload/server/public/assets/{data-DCQDh0-Y.js → data-C4v6AdQ-.js} +1 -1
  78. package/payload/server/public/assets/graph-BJyMQdRx.js +51 -0
  79. package/payload/server/public/assets/graph-labels-BTpv_U3g.js +1 -0
  80. package/payload/server/public/assets/operator-Bj88rdnI.js +1 -0
  81. package/payload/server/public/assets/page-hmlVCBRQ.js +1 -0
  82. package/payload/server/public/assets/{public-Cs5N4-Az.js → public-IRKxc9hu.js} +3 -3
  83. package/payload/server/public/assets/{public-next-DoGPYX6T.js → public-next-DqQ4PZLk.js} +1 -1
  84. package/payload/server/public/assets/{useSelectionMode-Cs-vtuKI.js → useSelectionMode-CTJhWnNp.js} +1 -1
  85. package/payload/server/public/browser.html +6 -6
  86. package/payload/server/public/chat.html +8 -8
  87. package/payload/server/public/data.html +5 -5
  88. package/payload/server/public/graph.html +8 -8
  89. package/payload/server/public/index.html +9 -9
  90. package/payload/server/public/operator.html +10 -10
  91. package/payload/server/public/public-next.html +9 -9
  92. package/payload/server/public/public.html +7 -7
  93. package/payload/server/server.js +967 -513
  94. package/payload/server/public/assets/AccessGate-Byskkf47.js +0 -1
  95. package/payload/server/public/assets/AdminShell-DQfL2c_L.js +0 -1
  96. package/payload/server/public/assets/OperatorConversations-DulQyF8c.js +0 -1
  97. package/payload/server/public/assets/audio-attachment-mime-BlwrgPQa.js +0 -30
  98. package/payload/server/public/assets/chat-CGNWDmid.js +0 -1
  99. package/payload/server/public/assets/graph-labels-BBtL--_M.js +0 -1
  100. package/payload/server/public/assets/graph-sMzOI71g.js +0 -51
  101. package/payload/server/public/assets/operator-hI6kJi0I.js +0 -1
  102. package/payload/server/public/assets/page-DbsqlpuX.js +0 -1
  103. /package/payload/server/public/assets/{brand-CYjs10m-.js → brand-DqQPSWa7.js} +0 -0
@@ -1 +0,0 @@
1
- import{o as e}from"./chunk-CAM3fms7.js";import{l as t,o as n,u as r}from"./brand-CYjs10m-.js";import"./OperatorConversations-DulQyF8c.js";import{n as i,t as a}from"./AdminLoginScreens-DgwQi3HN.js";import"./admin-types-D2qTXuCg.js";import"./AdminShell-DQfL2c_L.js";import{t as o}from"./page-DbsqlpuX.js";import"./audio-attachment-mime-BlwrgPQa.js";import"./useSelectionMode-Cs-vtuKI.js";import"./Checkbox-C54JSreC.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-CYjs10m-.js";import{a as i,i as a,n as o,o as s,p as c,r as l,s as u,w as d,y as f}from"./OperatorConversations-DulQyF8c.js";import{n as ee,r as te,t as ne}from"./admin-types-D2qTXuCg.js";import{a as p,i as re,o as ie,r as m,s as h,t as g}from"./AdminShell-DQfL2c_L.js";import{a as _,i as v,n as ae,o as oe,r as se,t as ce}from"./audio-attachment-mime-BlwrgPQa.js";import{i as le}from"./useSelectionMode-Cs-vtuKI.js";var y=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`}]]),b=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`}]]),ue=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`}]]),de=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`}]]),fe=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`}]]),x=`claude-opus-4-8[1m]`,S=`claude-sonnet-4-6`,C=`claude-haiku-4-5`,pe={[x]:`Opus 4.8 (1M context)`,[S]:`Sonnet 4.6`,[C]:`Haiku 4.5`};function me(e){return pe[e]??e}function he(e){return e.replace(/\[1m\]$/,``)}var w=`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(`.`),T=e(r(),1),E=n(),D=1800;function ge(){let[e,t]=(0,T.useState)(()=>Math.floor(Math.random()*w.length));return(0,T.useEffect)(()=>{let e=setInterval(()=>t(e=>(e+1)%w.length),D);return()=>clearInterval(e)},[]),(0,E.jsxs)(`div`,{className:`chat-activity`,"aria-live":`polite`,"aria-label":`Agent is working`,children:[(0,E.jsx)(`img`,{src:`/brand/claude.png`,alt:``,className:`chat-activity-icon`}),(0,E.jsxs)(`span`,{className:`chat-activity-word`,children:[w[e],`…`]})]})}function O({variant:e,label:t,children:n}){let[r,i]=(0,T.useState)(!1);return(0,E.jsxs)(`div`,{className:`chat-${e}`,children:[(0,E.jsxs)(`button`,{type:`button`,className:`chat-${e}-toggle`,"aria-expanded":r,onClick:()=>i(e=>!e),children:[(0,E.jsx)(`span`,{className:`wa-chevron`,children:r?`▾`:`▸`}),(0,E.jsx)(`span`,{className:`chat-${e}-label`,children:t})]}),r&&n]})}function k({turns:e}){let t=e.filter(e=>e.kind===`tool-call`).length;return(0,E.jsx)(O,{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,E.jsxs)(`div`,{className:`chat-toolrun-item`,children:[(0,E.jsx)(`span`,{className:`chat-toolrun-name`,children:e.kind===`tool-call`?`↳ ${e.name}`:e.isError?`result (error)`:`result`}),(0,E.jsx)(`pre`,{className:`wa-code`,children:e.kind===`tool-call`?JSON.stringify(e.input,null,2):e.text})]},t))})}function A({turns:e}){return(0,E.jsx)(O,{variant:`thinking`,label:`Thinking`,children:e.map((e,t)=>(0,E.jsx)(`div`,{className:`chat-thinking-item`,children:(0,E.jsx)(v,{content:e.text})},t))})}function j({composed:e}){return(0,E.jsx)(O,{variant:`composed`,label:`What the agent received`,children:(0,E.jsx)(`pre`,{className:`wa-code chat-composed-body`,children:e})})}function M({ts:e}){let t=i(e);return t?(0,E.jsx)(`time`,{className:`chat-time`,children:t}):null}function N(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,E.jsxs)(`div`,{className:`chat-turn-op`,children:[e.kind===`operator-inbound`&&e.source&&(0,E.jsx)(`span`,{className:`chat-via`,children:s(e.source).replace(` · `,``)}),(0,E.jsx)(`p`,{className:`chat-op-body`,children:i}),r!==void 0&&n===`admin`&&(0,E.jsx)(j,{composed:e.text}),(0,E.jsx)(M,{ts:e.ts})]},t)}case`agent-reply`:return(0,E.jsxs)(`div`,{className:`chat-prose`,children:[(0,E.jsx)(v,{content:e.text}),(0,E.jsx)(M,{ts:e.ts})]},t);case`agent-reply-document`:return(0,E.jsxs)(`div`,{className:`chat-prose`,children:[(0,E.jsxs)(`p`,{className:`chat-doc`,children:[`📎 sent document(s): `,e.files.map(a).join(`, `)]}),e.caption&&(0,E.jsx)(v,{content:e.caption}),(0,E.jsx)(M,{ts:e.ts})]},t);case`agent-error`:return(0,E.jsxs)(`div`,{className:`chat-agent-error`,role:`alert`,children:[(0,E.jsx)(`span`,{className:`chat-agent-error-msg`,children:u(e.code,n)}),n===`admin`&&e.code===`agent_error`&&e.raw&&(0,E.jsx)(`pre`,{className:`chat-agent-error-raw`,children:e.raw})]},t)}}function _e(e,t,n,r=`admin`){let i=[],a=[],s=[],c=()=>{a.length!==0&&(i.push((0,E.jsx)(k,{turns:a},`tools-${i.length}`)),a=[])},l=()=>{s.length!==0&&(i.push((0,E.jsx)(A,{turns:s},`think-${i.length}`)),s=[])};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`){c(),s.push(e.turn);return}c(),l(),e.kind===`directive`?i.push((0,E.jsx)(o,{entry:e.entry,sessionId:t,sessionKey:n},u)):i.push(N(e.turn,u,r))}),c(),l(),i}var P=[x,S,C],F=[`low`,`medium`,`high`,`xhigh`],I={low:`Low`,medium:`Medium`,high:`High`,xhigh:`Highest`},ve=[{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`}],ye=Object.fromEntries(ve.map(e=>[e.value,e.label])),be=2500,xe=15e3;function Se(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 Ce({cacheKey:e,userName:t}){let[n,r]=(0,T.useState)(null);(0,T.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,E.jsxs)(`div`,{className:`webchat-greeting`,children:[(0,E.jsx)(`h2`,{className:`webchat-greeting-head`,children:i?`What's up next, ${i}?`:`What's up next?`}),n&&(0,E.jsxs)(E.Fragment,{children:[(0,E.jsxs)(`section`,{className:`webchat-greeting-section`,"data-kind":`events`,children:[(0,E.jsxs)(`h3`,{className:`webchat-greeting-label`,children:[(0,E.jsx)(y,{size:14}),` Upcoming schedule`]}),n.events.length===0?(0,E.jsx)(`p`,{className:`webchat-greeting-none`,children:`Nothing scheduled`}):n.events.map(e=>(0,E.jsxs)(`div`,{className:`webchat-greeting-row`,children:[(0,E.jsx)(`span`,{className:`webchat-greeting-name`,children:e.name}),(0,E.jsx)(`span`,{className:`webchat-greeting-when`,children:Se(e.at)})]},e.eventId))]}),(0,E.jsxs)(`section`,{className:`webchat-greeting-section`,"data-kind":`tasks`,children:[(0,E.jsxs)(`h3`,{className:`webchat-greeting-label`,children:[(0,E.jsx)(p,{size:14}),` Outstanding tasks`]}),n.tasks.items.length===0?(0,E.jsx)(`p`,{className:`webchat-greeting-none`,children:`No open tasks`}):(0,E.jsxs)(E.Fragment,{children:[n.tasks.items.map(e=>(0,E.jsxs)(`div`,{className:`webchat-greeting-row`,children:[(0,E.jsx)(`span`,{className:`webchat-greeting-name`,children:e.name}),(0,E.jsx)(`span`,{className:`webchat-greeting-status`,children:e.status})]},e.taskId)),a>0&&(0,E.jsxs)(`p`,{className:`webchat-greeting-more`,children:[`+`,a,` more`]})]})]}),(0,E.jsxs)(`section`,{className:`webchat-greeting-section`,"data-kind":`specialists`,children:[(0,E.jsxs)(`h3`,{className:`webchat-greeting-label`,children:[(0,E.jsx)(m,{size:14}),` Your specialists`]}),n.specialists.length===0?(0,E.jsx)(`p`,{className:`webchat-greeting-none`,children:`No specialists installed`}):n.specialists.map((e,t)=>(0,E.jsxs)(`div`,{className:`webchat-greeting-row webchat-greeting-row-stacked`,children:[(0,E.jsx)(`span`,{className:`webchat-greeting-name`,children:e.name}),e.summary&&(0,E.jsx)(`span`,{className:`webchat-greeting-summary`,children:e.summary})]},`${t}-${e.name}`))]})]})]})}function L(e,t){let n=(0,T.useRef)(null);return(0,T.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 we({kind:e,label:t,icon:n,options:r,selected:i,disabled:a,onPick:o}){let[s,c]=(0,T.useState)(!1);return(0,E.jsxs)(`div`,{className:`webchat-picker`,ref:L(s,c),children:[(0,E.jsx)(`button`,{type:`button`,className:`webchat-control webchat-picker-trigger`,"data-kind":e,disabled:a,"aria-haspopup":`listbox`,"aria-expanded":s,"aria-label":i?`${t}: ${i}`:t,title:`${t} — ${i??t} (applies to new sessions)`,onClick:()=>c(e=>!e),children:n}),s&&(0,E.jsx)(`div`,{className:`webchat-picker-panel`,role:`listbox`,children:r.map(t=>(0,E.jsxs)(`button`,{type:`button`,className:`webchat-picker-option`,"data-kind":e,"data-value":t.value,role:`option`,"aria-checked":t.value===i||t.label===i,onClick:()=>{o(t.value),c(!1)},children:[(0,E.jsx)(d,{size:12,className:`webchat-picker-check`}),t.label]},t.value))})]})}function Te({icon:e,value:t,index:n,disabled:r,onPick:i}){let[a,o]=(0,T.useState)(!1),s=L(a,o),c=I[t]??`Medium`;return(0,E.jsxs)(`div`,{className:`webchat-picker`,ref:s,children:[(0,E.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,E.jsxs)(`div`,{className:`webchat-picker-panel webchat-effort-panel`,role:`dialog`,"aria-label":`Effort for new sessions`,children:[(0,E.jsxs)(`div`,{className:`webchat-effort-head`,children:[(0,E.jsxs)(`span`,{className:`webchat-effort-title`,children:[`Effort `,(0,E.jsx)(`strong`,{children:c})]}),(0,E.jsx)(`span`,{className:`webchat-effort-help`,title:`Higher effort spends more time reasoning before each reply.`,children:(0,E.jsx)(b,{size:13})})]}),(0,E.jsxs)(`div`,{className:`webchat-effort-ends`,children:[(0,E.jsx)(`span`,{children:`Faster`}),(0,E.jsx)(`span`,{children:`Smarter`})]}),(0,E.jsxs)(`div`,{className:`webchat-effort-track`,children:[(0,E.jsx)(`span`,{className:`webchat-effort-dots`,"aria-hidden":`true`,children:F.map((e,t)=>(0,E.jsx)(`span`,{className:`webchat-effort-dot`,"data-max":t===F.length-1},e))}),(0,E.jsx)(`input`,{type:`range`,className:`webchat-effort-slider`,"data-kind":`effort`,min:0,max:F.length-1,step:1,value:n,disabled:r,"aria-label":`Effort for new sessions`,onChange:e=>i(F[Number(e.target.value)])})]})]})]})}function R({cacheKey:e,userName:t,targetSessionId:n,variant:r=`admin`}){let i=r===`public`,[a,o]=(0,T.useState)(null),[s,c]=(0,T.useState)(null),[u,d]=(0,T.useState)(``),[f,p]=(0,T.useState)(!1),[m,h]=(0,T.useState)(null),[g,v]=(0,T.useState)(null),y=(0,T.useRef)(!1),[b,x]=(0,T.useState)([]),[S,C]=(0,T.useState)(null),[pe,w]=(0,T.useState)(!1),D=(0,T.useRef)(null),O=()=>Math.round((typeof window>`u`?900:window.innerHeight)/3),[k,A]=(0,T.useState)(null),j=(0,T.useRef)(null),M=(0,T.useRef)(null),N=(0,T.useCallback)(e=>{let t=M.current;t&&A(Math.min(O(),Math.max(44,t.startH+(t.startY-e.clientY))))},[]),I=(0,T.useCallback)(()=>{M.current=null,window.removeEventListener(`pointermove`,N),window.removeEventListener(`pointerup`,I)},[N]),Se=(0,T.useCallback)(e=>{M.current={startY:e.clientY,startH:j.current?.offsetHeight??44},window.addEventListener(`pointermove`,N),window.addEventListener(`pointerup`,I),e.preventDefault()},[N,I]),L=(0,T.useCallback)(e=>{let t=k??j.current?.offsetHeight??44;e.key===`ArrowUp`?(e.preventDefault(),A(Math.min(O(),t+24))):e.key===`ArrowDown`&&(e.preventDefault(),A(Math.max(44,t-24)))},[k]),R=(0,T.useCallback)(e=>{C(null);let t=e.find(e=>!ce(e.type,te));if(t){C(`Unsupported file type: "${t.type}". Supported: images, PDF, plain text, markdown, CSV, calendar, zip, voice notes.`);return}let n=e.find(e=>e.size>ee);if(n){C(`"${n.name}" exceeds the 50 MB limit.`);return}x(t=>[...t,...e].slice(0,5))},[]),z=(0,T.useMemo)(()=>b.map(e=>e.type.startsWith(`image/`)?URL.createObjectURL(e):null),[b]);(0,T.useEffect)(()=>()=>{for(let e of z)e&&URL.revokeObjectURL(e)},[z]);let B=ae(),V=B.state===`recording`||B.state===`paused`||B.state===`sending`,Ee=(0,T.useCallback)(async()=>{let t=await B.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(f){x(e=>[...e,a].slice(0,5));return}p(!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}`),x(e=>[...e,a].slice(0,5)),C(`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)}`),x(e=>[...e,a].slice(0,5)),C(`Voice note failed to send. The recording is attached — press send to retry.`)}finally{p(!1)}},[B,e,n,f,i,s]),H=(0,T.useRef)(!1);(0,T.useEffect)(()=>(H.current=!1,()=>{H.current=!0}),[]);let U=(0,T.useRef)(!1),W=(0,T.useCallback)(async()=>{if(U.current)return null;U.current=!0;try{if(i){let e=await fetch(`/api/public-reader/session`);if(!e.ok)return null;let t=await e.json();if(H.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 H.current||o(a),a}catch{return null}finally{U.current=!1}},[e,n,i]);(0,T.useEffect)(()=>{W();let e=setInterval(()=>{W()},be);return()=>clearInterval(e)},[W]);let De=(0,T.useCallback)(async()=>{let t=u.trim();if(!(!t&&b.length===0||f)){p(!0),y.current=!1;try{if(i){let e=s;if(!e){console.error(`[public-webchat] op=send-skip reason=no-key`);return}let n;if(b.length>0){let r=new FormData;r.append(`message`,t),r.append(`session_key`,e);for(let e of b)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(``),x([]),C(null)):console.error(`[public-webchat] op=send-failed status=${n.status}`);return}let r;if(b.length>0){let i=new FormData;i.append(`text`,t);for(let e of b)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){C(null),v(null),y.current=!0,h({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{y.current||p(!1)}}},[u,f,e,b,n,i,s,a?.sizeBytes]),Oe=(0,T.useCallback)(e=>{e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),De())},[De]);(0,T.useEffect)(()=>{if(!m)return;let e=a?.sizeBytes;e!=null&&(m.baselineSize==null||e>m.baselineSize)&&(d(``),x([]),v(null),h(null),y.current=!1,p(!1))},[a,m]),(0,T.useEffect)(()=>{if(!m)return;let e=setTimeout(()=>{h(null),y.current=!1,p(!1),v(`Couldn't be delivered — press send to retry.`)},xe);return()=>clearTimeout(e)},[m]);let G=n?a?.channelBinding??null:null,ke=(0,T.useRef)(!1);(0,T.useEffect)(()=>{!n||ke.current||!a||(ke.current=!0,console.warn(`[admin-ui] chat-session-target sessionId=${n} jsonl=${a.projectDir?`found`:`missing`} known=${a.known===!0}`))},[a,n]);let Ae=(0,T.useRef)(!1);(0,T.useEffect)(()=>{n||Ae.current||!a?.sessionId||(Ae.current=!0,console.info(`[admin-ui] chat-session-resolve sessionId=${a.sessionId.slice(0,8)} source=canonical`))},[a,n]);let je=a?a.effectivePermissionMode??a.permissionMode??null:null,K=a?.model??null,Me=a?.activity===`busy`,[q,Ne]=(0,T.useState)(null),[J,Pe]=(0,T.useState)(null),[Y,Fe]=(0,T.useState)(null),[Ie,X]=(0,T.useState)(null),Le=(0,T.useCallback)(async(t,n)=>{let r=t===`model`?Ne:t===`effort`?Pe:Fe;r(n),X(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),X(`Could not save ${t} (status ${i.status})`),console.error(`[admin-ui] webchat-settings-failed op=${t} status=${i.status}`))}catch(e){r(null),X(`Could not save ${t} (network error)`),console.error(`[admin-ui] webchat-settings-failed op=${t} error=${e instanceof Error?e.message:String(e)}`)}},[e]),Z=(0,T.useRef)(!1),Re=(0,T.useCallback)(async t=>{if(a?.sessionId&&!Z.current){Z.current=!0,X(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){X(`Could not move this chat (status ${n.status})`),console.error(`[admin-ui] reseat-failed status=${n.status}`),Z.current=!1;return}let r=await n.json();r.target?window.location.href=r.target:Z.current=!1}catch(e){X(`Could not move this chat (network error)`),console.error(`[admin-ui] reseat-failed error=${e instanceof Error?e.message:String(e)}`),Z.current=!1}}},[e,a?.sessionId]);(0,T.useEffect)(()=>{q!==null&&a?.leverModel===q&&Ne(null),J!==null&&a?.leverEffort===J&&Pe(null),Y!==null&&a?.leverMode===Y&&Fe(null)},[a,q,J,Y]);let Q=q??a?.leverModel??K??``,ze=J??a?.leverEffort??``,$=Y??a?.leverMode??je??null,Be=Math.max(0,F.indexOf(ze||`medium`)),Ve=Q&&!P.includes(Q)?[...P,Q]:P,He=(0,T.useRef)(!1);return(0,T.useEffect)(()=>{He.current||a?.projectDir&&a.activity==null&&je==null&&K==null&&(He.current=!0,console.warn(`[admin-ui] composer-indicators-unavailable sessionId=${a.sessionId} (manager meta unreadable or pre-activity)`))},[a,je,K]),(0,E.jsxs)(`div`,{className:`webchat-page`,children:[a?.projectDir?(0,E.jsx)(l,{resetKey:a.sessionId,sessionId:a.transcriptSessionId??a.sessionId,projectDir:a.projectDir,sessionKey:i?s??``:e,renderItems:i?(e,t,n)=>_e(e,t,n,`public`):_e,cleanViewToggle:r===`admin`,forceDeliveredOnly:r===`operator`||i,streamEndpoint:i?`/api/public-reader/stream`:`/api/whatsapp-reader/stream`,suppressDirectives:i,tail:!i&&Me?(0,E.jsx)(ge,{}):null},a.sessionId):a&&!i?!n||a.known?(0,E.jsx)(Ce,{cacheKey:e,userName:t}):(0,E.jsx)(`div`,{className:`webchat-greeting`,children:(0,E.jsx)(`p`,{className:`webchat-greeting-none`,children:`No transcript found for this session.`})}):null,(0,E.jsxs)(`div`,{className:`webchat-composer`,children:[(0,E.jsxs)(`div`,{className:`webchat-composer-box${pe?` drag-over`:``}`,onDragOver:e=>{e.preventDefault(),w(!0)},onDragLeave:()=>w(!1),onDrop:e=>{e.preventDefault(),w(!1),R([...e.dataTransfer.files])},children:[(0,E.jsx)(`input`,{ref:D,type:`file`,multiple:!0,accept:ne,style:{display:`none`},onChange:e=>{e.target.files&&R([...e.target.files]),e.target.value=``}}),!V&&(0,E.jsx)(`div`,{className:`webchat-resize-handle`,role:`separator`,"aria-orientation":`horizontal`,"aria-label":`Resize input — drag up to enlarge`,tabIndex:0,onPointerDown:Se,onKeyDown:L}),b.length>0&&(0,E.jsx)(`div`,{className:`attachment-strip`,children:b.map((e,t)=>(0,E.jsxs)(`div`,{className:`attachment-chip`,children:[z[t]?(0,E.jsx)(`img`,{src:z[t],alt:e.name,className:`attachment-chip-thumb`}):e.type.startsWith(`audio/`)?(0,E.jsx)(_,{size:14}):e.type===`application/pdf`?(0,E.jsx)(le,{size:14}):(0,E.jsx)(oe,{size:14}),(0,E.jsx)(`span`,{className:`attachment-chip-name`,children:e.name}),(0,E.jsx)(`button`,{type:`button`,className:`attachment-chip-remove`,onClick:()=>x(e=>e.filter((e,n)=>n!==t)),"aria-label":`Remove ${e.name}`,children:`×`})]},t))}),S&&(0,E.jsx)(`p`,{className:`attach-error`,children:S}),g&&(0,E.jsx)(`p`,{className:`webchat-send-error`,role:`alert`,children:g}),B.state===`error`&&B.errorMessage&&(0,E.jsxs)(`p`,{className:`voice-error`,role:`alert`,children:[(0,E.jsx)(_,{size:14}),B.errorMessage]}),V?(0,E.jsx)(`div`,{className:`webchat-input-row voice-active`,children:(0,E.jsx)(se,{state:B.state,elapsedSeconds:B.elapsedSeconds,waveform:B.waveform,onTogglePause:B.togglePause,onDiscard:B.discard,onSend:()=>void Ee()})}):(0,E.jsxs)(`div`,{className:`webchat-input-row`,children:[(0,E.jsx)(`textarea`,{ref:j,className:`webchat-input`,value:u,placeholder:`Message your agent…`,rows:2,style:k==null?void 0:{height:`${k}px`},disabled:G!==null,onChange:e=>d(e.target.value),onKeyDown:Oe,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&&R(n)}}),(0,E.jsx)(`button`,{type:`button`,className:`webchat-send`,onClick:()=>void De(),disabled:f||u.trim().length===0&&b.length===0||G!==null,"aria-label":`Send`,title:`Send`,children:(0,E.jsx)(ue,{size:16})})]}),G!==null&&(0,E.jsxs)(`p`,{className:`webchat-conflict-hint`,children:[`This session is bound to the `,G,` channel — message it there. The transcript stays readable here.`]})]}),(0,E.jsxs)(`div`,{className:`webchat-controls`,children:[(0,E.jsxs)(`div`,{className:`webchat-controls-left`,children:[(0,E.jsx)(`button`,{type:`button`,className:`webchat-control`,onClick:()=>D.current?.click(),disabled:G!==null,title:`Attach files`,"aria-label":`Attach`,children:(0,E.jsx)(re,{size:14})}),(0,E.jsx)(`button`,{type:`button`,className:`webchat-control`,onClick:B.start,disabled:V||G!==null,title:`Record voice note`,"aria-label":`Voice input`,children:(0,E.jsx)(_,{size:14})})]}),!i&&(0,E.jsxs)(`div`,{className:`webchat-controls-right`,children:[a?.sessionId&&(0,E.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)}),Ie&&(0,E.jsx)(`span`,{className:`webchat-settings-error`,role:`alert`,children:Ie}),$&&(0,E.jsx)(we,{kind:`mode`,label:`Permission mode`,icon:(0,E.jsx)(fe,{size:14}),options:ve,selected:ye[$]??$,disabled:G!==null,onPick:e=>void Le(`mode`,e)}),(0,E.jsx)(we,{kind:`model`,label:`Model`,icon:(0,E.jsx)(ie,{size:14}),options:Ve.map(e=>({value:e,label:me(e)})),selected:Q?me(Q):null,disabled:G!==null,onPick:e=>{a?.projectDir?(!K||he(e)!==he(K))&&Re(e):Le(`model`,e)}}),(0,E.jsx)(Te,{icon:(0,E.jsx)(de,{size:14}),value:ze,index:Be,disabled:G!==null,onPick:e=>void Le(`effort`,e)})]})]})]})]})}function z({variant:e=`admin`}){let[t,n]=(0,T.useState)(null),[r]=(0,T.useState)(()=>{if(e===`operator`)return null;try{return new URLSearchParams(window.location.search).get(`session`)}catch{return null}}),[i,a]=(0,T.useState)(!1),[o,s]=(0,T.useState)(void 0),[l,u]=(0,T.useState)(null),[d,ee]=(0,T.useState)(void 0),[te,ne]=(0,T.useState)(null),[p,re]=(0,T.useState)(null);(0,T.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`&&s(e.businessName),e.sessionId!==void 0&&u(e.sessionId??null),re(e.role??null),ee(e.userName===void 0?null:e.userName),ne(e.avatar??null)}catch{}n(t),a(!0)}}).catch(()=>{e||(n(t),a(!0))}),()=>{e=!0}},[]);let ie=(0,T.useRef)(!1);(0,T.useEffect)(()=>{e!==`operator`||!i||!t||ie.current||(ie.current=!0,console.info(`[operator-ui] op=mount surface=chat sessionId=${(l??``).slice(0,8)}`))},[e,i,t,l]);let m=(0,T.useCallback)(()=>{try{sessionStorage.removeItem(`maxy-admin-session-key`)}catch{}window.location.href=`/`},[]),[_,v]=(0,T.useState)(!1),ae=(0,T.useCallback)(async()=>{v(!0);try{let e=await h();if(e){try{sessionStorage.removeItem(`maxy-admin-session-key`)}catch{}window.location.href=`/`}return e}finally{v(!1)}},[]);return i?t?(0,E.jsx)(c,{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,E.jsx)(g,{cacheKey:t,businessName:o,variant:e,sessionId:l,onLogout:m,onDisconnect:ae,disconnecting:_,userName:d,userAvatar:te,role:p,children:(0,E.jsx)(R,{cacheKey:t,userName:d??null,targetSessionId:r,variant:e})})}):(0,E.jsx)(`div`,{className:`data-page`,children:(0,E.jsxs)(`div`,{className:`data-empty`,children:[(0,E.jsx)(`p`,{children:`You are not signed in.`}),(0,E.jsxs)(`p`,{children:[`Open the `,(0,E.jsx)(`a`,{href:`/`,className:`data-link`,children:`main admin page`}),` and log in, then return here.`]})]})}):(0,E.jsx)(`div`,{className:`data-page`,children:(0,E.jsxs)(`div`,{className:`data-loading`,children:[(0,E.jsx)(f,{size:18,className:`spin`}),` Loading…`]})})}function B(){return(0,E.jsx)(z,{})}export{B as n,R as r,z as t};