@rubytech/create-realagent-code 0.1.12 → 0.1.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/http-server.js +228 -10
- package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/jsonl-enumerator.d.ts +23 -1
- package/payload/platform/services/claude-session-manager/dist/jsonl-enumerator.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/jsonl-enumerator.js +131 -6
- package/payload/platform/services/claude-session-manager/dist/jsonl-enumerator.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/url-capture.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/url-capture.js +27 -15
- package/payload/platform/services/claude-session-manager/dist/url-capture.js.map +1 -1
- package/payload/server/public/assets/{Checkbox-D5bsL5IO.js → Checkbox-B1pi98Yw.js} +1 -1
- package/payload/server/public/assets/admin-ssJWtqVX.js +1 -0
- package/payload/server/public/assets/{architectureDiagram-Q4EWVU46-C1Y8LkQn.js → architectureDiagram-Q4EWVU46-CYRT-hpJ.js} +1 -1
- package/payload/server/public/assets/{blockDiagram-DXYQGD6D-DVWDZ5Od.js → blockDiagram-DXYQGD6D-Cn4D-jj8.js} +1 -1
- package/payload/server/public/assets/brand-D5k27KTB.js +1 -0
- package/payload/server/public/assets/{c4Diagram-AHTNJAMY-BABaPulo.js → c4Diagram-AHTNJAMY-B9mQuKey.js} +1 -1
- package/payload/server/public/assets/channel-UyGQO49u.js +1 -0
- package/payload/server/public/assets/{chunk-336JU56O-D8PM_LLD.js → chunk-336JU56O-_pHU1qs5.js} +2 -2
- package/payload/server/public/assets/{chunk-426QAEUC-CPoMPNv-.js → chunk-426QAEUC-CJZBrpsW.js} +1 -1
- package/payload/server/public/assets/{chunk-4TB4RGXK-DP7aaNeo.js → chunk-4TB4RGXK-CbdaQqED.js} +1 -1
- package/payload/server/public/assets/{chunk-5FUZZQ4R-BcEh8cqP.js → chunk-5FUZZQ4R-BHysGjPk.js} +1 -1
- package/payload/server/public/assets/{chunk-5PVQY5BW-hlKOVg7k.js → chunk-5PVQY5BW-DwaJjlmQ.js} +1 -1
- package/payload/server/public/assets/{chunk-EDXVE4YY-Clrj1-TK.js → chunk-EDXVE4YY-B5BtxUCu.js} +1 -1
- package/payload/server/public/assets/{chunk-ENJZ2VHE-DZ5oQwfW.js → chunk-ENJZ2VHE-Ehw_u_kr.js} +1 -1
- package/payload/server/public/assets/{chunk-ICPOFSXX-DcYVBL08.js → chunk-ICPOFSXX-9pglSmm0.js} +1 -1
- package/payload/server/public/assets/{chunk-OYMX7WX6-DYCm2d-j.js → chunk-OYMX7WX6-BYoXj_GS.js} +1 -1
- package/payload/server/public/assets/{chunk-U2HBQHQK-DlMSsedr.js → chunk-U2HBQHQK-DY4UKSFX.js} +1 -1
- package/payload/server/public/assets/{chunk-X2U36JSP-BFgTiODq.js → chunk-X2U36JSP-nyvIphWC.js} +1 -1
- package/payload/server/public/assets/{chunk-YZCP3GAM-Dl7Za-fK.js → chunk-YZCP3GAM-CwzhK7B_.js} +1 -1
- package/payload/server/public/assets/{chunk-ZZ45TVLE-DKJc-jnu.js → chunk-ZZ45TVLE-B3MIjbjy.js} +1 -1
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-CnuEj2MV.js +1 -0
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-C4euVG7i.js +1 -0
- package/payload/server/public/assets/clone-B6jQ4sQM.js +1 -0
- package/payload/server/public/assets/{dagre-BxZW6uVc.js → dagre-DmBM0gAU.js} +1 -1
- package/payload/server/public/assets/{dagre-KV5264BT-DN0hRCmB.js → dagre-KV5264BT-BMF41iDw.js} +1 -1
- package/payload/server/public/assets/{data-DDIV_NMI.js → data-iCamt21J.js} +1 -1
- package/payload/server/public/assets/{diagram-5BDNPKRD-BlN4_Net.js → diagram-5BDNPKRD-BlZco72d.js} +1 -1
- package/payload/server/public/assets/{diagram-G4DWMVQ6-Dl3YdJ94.js → diagram-G4DWMVQ6-DXhz1tn9.js} +1 -1
- package/payload/server/public/assets/{diagram-MMDJMWI5-BhoYZ30j.js → diagram-MMDJMWI5-CjOK1TqX.js} +1 -1
- package/payload/server/public/assets/{diagram-TYMM5635-CgD2xqpO.js → diagram-TYMM5635-BLIfhJl_.js} +1 -1
- package/payload/server/public/assets/{erDiagram-SMLLAGMA-D_4k-P_W.js → erDiagram-SMLLAGMA-BNvNebXl.js} +1 -1
- package/payload/server/public/assets/{flowDiagram-DWJPFMVM-C44HDuS2.js → flowDiagram-DWJPFMVM-CiiSkoYl.js} +1 -1
- package/payload/server/public/assets/{ganttDiagram-T4ZO3ILL-Iprqq6jm.js → ganttDiagram-T4ZO3ILL-ojBwmxzi.js} +1 -1
- package/payload/server/public/assets/{gitGraphDiagram-UUTBAWPF-BNsuI5pf.js → gitGraphDiagram-UUTBAWPF-8r-vQIcq.js} +1 -1
- package/payload/server/public/assets/{graph-BhRpEpY1.js → graph-BsnHbm-w.js} +2 -2
- package/payload/server/public/assets/{graph-labels-CRmMK2-3.js → graph-labels-SjQPr62q.js} +1 -1
- package/payload/server/public/assets/{graphlib-00nEx5zd.js → graphlib-3qtLnRUJ.js} +1 -1
- package/payload/server/public/assets/{infoDiagram-42DDH7IO-B05WrcQr.js → infoDiagram-42DDH7IO-DizGoC2U.js} +1 -1
- package/payload/server/public/assets/{ishikawaDiagram-UXIWVN3A-Cjj-8sq-.js → ishikawaDiagram-UXIWVN3A-CoW4eBMG.js} +1 -1
- package/payload/server/public/assets/{journeyDiagram-VCZTEJTY-CE4zSJ_e.js → journeyDiagram-VCZTEJTY-D8ZCMlkd.js} +1 -1
- package/payload/server/public/assets/{jsx-runtime-orvUHz-c.css → jsx-runtime-CApIe6zc.css} +1 -1
- package/payload/server/public/assets/{kanban-definition-6JOO6SKY-vp1k55Vn.js → kanban-definition-6JOO6SKY-B7nGgL6n.js} +1 -1
- package/payload/server/public/assets/{line-DtgVCBmE.js → line-Df-cEDRK.js} +1 -1
- package/payload/server/public/assets/loader-circle-BXQvNcaV.js +1 -0
- package/payload/server/public/assets/{mermaid-parser.core-BLkF5CWy.js → mermaid-parser.core-BdS1yEBX.js} +1 -1
- package/payload/server/public/assets/{mermaid.core-D8Ai1Ihc.js → mermaid.core-OrDOOKvo.js} +3 -3
- package/payload/server/public/assets/{mindmap-definition-QFDTVHPH-BBS2-egG.js → mindmap-definition-QFDTVHPH-DkGEftRu.js} +1 -1
- package/payload/server/public/assets/{pieDiagram-DEJITSTG-D-YJ1TY9.js → pieDiagram-DEJITSTG-DjprDutI.js} +1 -1
- package/payload/server/public/assets/{public-Dlu50BWH.js → public-pA0tltHd.js} +5 -5
- package/payload/server/public/assets/{quadrantDiagram-34T5L4WZ-CG-vUnZ2.js → quadrantDiagram-34T5L4WZ-DWaFd6rk.js} +1 -1
- package/payload/server/public/assets/{requirementDiagram-MS252O5E-BU8DU7cT.js → requirementDiagram-MS252O5E-ZRZYYyme.js} +1 -1
- package/payload/server/public/assets/{sankeyDiagram-XADWPNL6-BD2Pv-fW.js → sankeyDiagram-XADWPNL6-C0BciP0t.js} +1 -1
- package/payload/server/public/assets/{sequenceDiagram-FGHM5R23-BNf_xS4I.js → sequenceDiagram-FGHM5R23-AjMIXRyo.js} +1 -1
- package/payload/server/public/assets/{stateDiagram-FHFEXIEX-KWX_egpr.js → stateDiagram-FHFEXIEX-Cdc5UYUG.js} +1 -1
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-DKxHNlxN.js +1 -0
- package/payload/server/public/assets/{timeline-definition-GMOUNBTQ-CZlun2e8.js → timeline-definition-GMOUNBTQ-CG7brXpR.js} +1 -1
- package/payload/server/public/assets/{vennDiagram-DHZGUBPP-ChgSQa6t.js → vennDiagram-DHZGUBPP-BdptqViO.js} +1 -1
- package/payload/server/public/assets/{wardleyDiagram-NUSXRM2D-kwRFhj3v.js → wardleyDiagram-NUSXRM2D-iDZMov2l.js} +1 -1
- package/payload/server/public/assets/{refresh-cw-Ho-xY4LQ.js → x-CFSf6g--.js} +1 -1
- package/payload/server/public/assets/{xychartDiagram-5P7HB3ND-JaRJKECe.js → xychartDiagram-5P7HB3ND-dwPbxhbs.js} +1 -1
- package/payload/server/public/data.html +5 -5
- package/payload/server/public/graph.html +7 -7
- package/payload/server/public/index.html +7 -7
- package/payload/server/public/public.html +5 -5
- package/payload/server/server.js +30 -1
- package/payload/server/public/assets/admin-Jg-kYJ64.js +0 -1
- package/payload/server/public/assets/brand-29DyfElX.js +0 -1
- package/payload/server/public/assets/channel-ClhfXesY.js +0 -1
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-CNuIn78n.js +0 -1
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-Cxc_1DZI.js +0 -1
- package/payload/server/public/assets/clone-BnZ9qP0T.js +0 -1
- package/payload/server/public/assets/loader-circle-DwwVih2K.js +0 -1
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-661rM-JV.js +0 -1
- /package/payload/server/public/assets/{jsx-runtime-LncohCxF.js → jsx-runtime-DS_YWdGF.js} +0 -0
|
@@ -1,24 +1,36 @@
|
|
|
1
1
|
// URL capture for `claude --verbose --remote-control`.
|
|
2
2
|
//
|
|
3
|
-
// Claude Code
|
|
3
|
+
// Claude Code prints the line:
|
|
4
4
|
//
|
|
5
|
-
// /remote-control is active
|
|
6
|
-
// <url>
|
|
5
|
+
// /remote-control is active · <url>
|
|
7
6
|
//
|
|
8
|
-
//
|
|
9
|
-
//
|
|
10
|
-
//
|
|
11
|
-
//
|
|
7
|
+
// On 2.1.142 the inter-word separators were literal U+0020 spaces. On
|
|
8
|
+
// 2.1.143 they switched to `\x1b[1C` (CSI Cursor Forward 1) — same visual
|
|
9
|
+
// layout, different bytes. The 2.1.142-only regex required literal spaces
|
|
10
|
+
// between `is`/`active` and silently timed out on 2.1.143 (Task 023).
|
|
11
|
+
//
|
|
12
|
+
// Strategy:
|
|
13
|
+
// 1. Strip every CSI sequence (`ESC [ ... letter`) from a buffer copy.
|
|
14
|
+
// `\x1b[1C` becomes empty; `\x1b[38;5;246m` colour prefixes drop too.
|
|
15
|
+
// 2. Match on the stripped buffer with a pattern that anchors only on
|
|
16
|
+
// `/remote-control` (the slash-prefixed keyword claude always prints
|
|
17
|
+
// verbatim). Whatever sits between the anchor and the URL is
|
|
18
|
+
// `[\s\S]*?` so a future release reverting to literal spaces, or
|
|
19
|
+
// changing the middle-dot, still matches.
|
|
20
|
+
// 3. Capture stops at whitespace or ESC so the URL is clean.
|
|
12
21
|
//
|
|
13
22
|
// We accumulate onData chunks into a buffer so a multi-byte split across
|
|
14
23
|
// two callbacks still matches. After the first URL is captured, the handler
|
|
15
24
|
// unregisters itself so subsequent PTY bytes flow through unchanged.
|
|
16
|
-
//
|
|
17
|
-
//
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
25
|
+
// Bounded, non-backtracking: a CSI sequence is ESC `[`, then zero-or-more
|
|
26
|
+
// digits/semicolons/question-marks, terminated by a single letter.
|
|
27
|
+
const CSI = /\x1b\[[0-9;?]*[A-Za-z]/g;
|
|
28
|
+
function stripCsi(s) {
|
|
29
|
+
return s.replace(CSI, '');
|
|
30
|
+
}
|
|
31
|
+
// `[^\s\x1b]+` terminates the URL at the first whitespace or ESC, so even
|
|
32
|
+
// if a colour-code prefix snuck through stripCsi the URL stays clean.
|
|
33
|
+
const URL_PATTERN = /\/remote-control[\s\S]*?(https?:\/\/[^\s\x1b]+)/;
|
|
22
34
|
export function startUrlCapture(opts) {
|
|
23
35
|
const start = Date.now();
|
|
24
36
|
let buffer = '';
|
|
@@ -36,9 +48,9 @@ export function startUrlCapture(opts) {
|
|
|
36
48
|
if (settled)
|
|
37
49
|
return;
|
|
38
50
|
buffer += data;
|
|
39
|
-
const match = buffer.match(URL_PATTERN);
|
|
51
|
+
const match = stripCsi(buffer).match(URL_PATTERN);
|
|
40
52
|
if (!match) {
|
|
41
|
-
// Cap the buffer so PTY scroll output does not grow unbounded.
|
|
53
|
+
// Cap the raw buffer so PTY scroll output does not grow unbounded.
|
|
42
54
|
const keep = 16 * 1024;
|
|
43
55
|
if (buffer.length > keep)
|
|
44
56
|
buffer = buffer.slice(buffer.length - keep);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url-capture.js","sourceRoot":"","sources":["../src/url-capture.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,EAAE;AACF,wCAAwC;AACxC,EAAE;AACF,
|
|
1
|
+
{"version":3,"file":"url-capture.js","sourceRoot":"","sources":["../src/url-capture.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,EAAE;AACF,+BAA+B;AAC/B,EAAE;AACF,wCAAwC;AACxC,EAAE;AACF,sEAAsE;AACtE,0EAA0E;AAC1E,0EAA0E;AAC1E,sEAAsE;AACtE,EAAE;AACF,YAAY;AACZ,yEAAyE;AACzE,2EAA2E;AAC3E,wEAAwE;AACxE,0EAA0E;AAC1E,kEAAkE;AAClE,sEAAsE;AACtE,+CAA+C;AAC/C,+DAA+D;AAC/D,EAAE;AACF,yEAAyE;AACzE,4EAA4E;AAC5E,qEAAqE;AAIrE,0EAA0E;AAC1E,mEAAmE;AACnE,MAAM,GAAG,GAAG,yBAAyB,CAAA;AAErC,SAAS,QAAQ,CAAC,CAAS;IACzB,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;AAC3B,CAAC;AAED,0EAA0E;AAC1E,sEAAsE;AACtE,MAAM,WAAW,GAAG,iDAAiD,CAAA;AAUrE,MAAM,UAAU,eAAe,CAAC,IAAuB;IACrD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IACxB,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,IAAI,OAAO,GAA+B,IAAI,CAAA;IAE9C,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;QAC9B,IAAI,OAAO;YAAE,OAAM;QACnB,OAAO,GAAG,IAAI,CAAA;QACd,IAAI,OAAO;YAAE,OAAO,CAAC,OAAO,EAAE,CAAA;QAC9B,IAAI,CAAC,SAAS,EAAE,CAAA;IAClB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;IAElB,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACjC,IAAI,OAAO;YAAE,OAAM;QACnB,MAAM,IAAI,IAAI,CAAA;QACd,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;QACjD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,mEAAmE;YACnE,MAAM,IAAI,GAAG,EAAE,GAAG,IAAI,CAAA;YACtB,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI;gBAAE,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;YACrE,OAAM;QACR,CAAC;QACD,OAAO,GAAG,IAAI,CAAA;QACd,YAAY,CAAC,OAAO,CAAC,CAAA;QACrB,IAAI,OAAO;YAAE,OAAO,CAAC,OAAO,EAAE,CAAA;QAC9B,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACpB,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAA;QAC7B,IAAI,CAAC,MAAM,CAAC,oBAAoB,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,GAAG,OAAO,EAAE,EAAE,CAAC,CAAA;QACnE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;IACrB,CAAC,CAAC,CAAA;IAEF,OAAO;QACL,MAAM,EAAE,GAAG,EAAE;YACX,IAAI,OAAO;gBAAE,OAAM;YACnB,OAAO,GAAG,IAAI,CAAA;YACd,YAAY,CAAC,OAAO,CAAC,CAAA;YACrB,IAAI,OAAO;gBAAE,OAAO,CAAC,OAAO,EAAE,CAAA;QAChC,CAAC;KACF,CAAA;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./jsx-runtime-
|
|
1
|
+
import{t as e}from"./jsx-runtime-DS_YWdGF.js";var t=e();function n({checked:e,onChange:n,label:r,disabled:i}){return(0,t.jsxs)(`label`,{className:`maxy-checkbox${i?` maxy-checkbox--disabled`:``}`,children:[(0,t.jsx)(`input`,{type:`checkbox`,checked:e,onChange:e=>n(e.target.checked),disabled:i}),(0,t.jsx)(`span`,{className:`maxy-checkbox__box`,children:`✱`}),r&&(0,t.jsx)(`span`,{className:`maxy-checkbox__label`,children:r})]})}export{n as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{o as e}from"./chunk-DD-I1_y5.js";import{a as t,i as n,n as r,r as i,t as a}from"./jsx-runtime-DS_YWdGF.js";import{a as o,c as s,i as c,l,o as u,s as d,t as f}from"./brand-D5k27KTB.js";import{t as p}from"./loader-circle-BXQvNcaV.js";import{n as m,r as h,t as g}from"./x-CFSf6g--.js";import{t as _}from"./Checkbox-B1pi98Yw.js";var v=n(),y=e(t(),1);new Set(`image/jpeg,image/png,image/gif,image/webp,application/pdf,text/plain,text/markdown,text/csv,text/html,text/calendar,application/zip,application/x-zip-compressed,audio/ogg,audio/opus,audio/mp4,audio/mpeg,audio/webm,audio/wav,.opus,.ogg,.m4a,.mp3,.wav,.webm`.split(`,`).filter(e=>!e.startsWith(`.`)));function b(e){switch(e){case`expanded`:return!0;case`collapsed`:return!1;default:return}}function x(){let[e,t]=(0,y.useState)(`loading`),[n,r]=(0,y.useState)(``),[i,a]=(0,y.useState)(``),[o,s]=(0,y.useState)(``),[c,l]=(0,y.useState)(``),[u,d]=(0,y.useState)(!1),[f,p]=(0,y.useState)(!1),[m,h]=(0,y.useState)(!1),[g,_]=(0,y.useState)(!1),[v,x]=(0,y.useState)(!1),[S,C]=(0,y.useState)(null),[ee,w]=(0,y.useState)(null),[T,E]=(0,y.useState)(void 0),[D,O]=(0,y.useState)(void 0),[k,A]=(0,y.useState)(null),[j,M]=(0,y.useState)(void 0),[te,N]=(0,y.useState)(null),[P,F]=(0,y.useState)(null),[I,L]=(0,y.useState)([]),[R,z]=(0,y.useState)(!1),[ne,B]=(0,y.useState)(void 0),V=(0,y.useRef)(void 0),[H,U]=(0,y.useState)(!1);(0,y.useEffect)(()=>{typeof window>`u`||window.location.hostname.startsWith(`admin.`)&&fetch(`/api/remote-auth/status`).then(e=>e.ok?e.json():null).then(e=>{e?.configured&&U(!0)}).catch(()=>{})},[]);let W=(0,y.useRef)(null),G=(0,y.useRef)(null),K=(0,y.useRef)(null);(0,y.useEffect)(()=>{async function e(){let e=null;try{e=sessionStorage.getItem(`maxy-admin-session-key`)}catch{}if(!e)return!1;try{let n=await fetch(`/api/admin/session?session_key=${encodeURIComponent(e)}`);if(n.status===401){try{sessionStorage.removeItem(`maxy-admin-session-key`)}catch{}return!1}if(!n.ok)return!1;let r=await n.json();C(r.session_key),F(r.conversationId??null),E(r.onboardingComplete),O(r.businessName),A(r.role??null),M(r.userName===void 0?null:r.userName),N(r.avatar??null);let i=b(r.thinkingView);return V.current=i,B(i),t(`chat`),!0}catch(e){return console.error(`[admin] session restore failed:`,e),!1}}async function n(r=2){try{let i=await fetch(`/api/health`);if(!i.ok){if(r>0)return await new Promise(e=>setTimeout(e,1500)),n(r-1);console.error(`[admin] health check returned ${i.status} after retries`),t(`set-pin`);return}let a=await i.json();if(!a.pin_configured){t(`set-pin`);return}if(a.onboarding_complete===!1){t(`onboarding-choice`);return}if(!a.claude_authenticated){t(`connect-claude`);return}if(await e())return;t(`enter-pin`)}catch(e){if(r>0)return await new Promise(e=>setTimeout(e,1500)),n(r-1);console.error(`[admin] health check failed:`,e),t(`set-pin`)}}n()},[]),(0,y.useEffect)(()=>{e===`chat`&&fetch(`/api/admin/claude-info`).then(e=>{if(e.ok)return e.json()}).then(e=>{e&&w(e)}).catch(()=>{})},[e]),(0,y.useEffect)(()=>{if(e!==`chat`)return;let n=setInterval(async()=>{try{let e=await fetch(`/api/health`);if(!e.ok)return;let n=await e.json();(n.auth_status===`dead`||n.auth_status===`missing`)&&t(`connect-claude`)}catch{}},300*1e3);return()=>clearInterval(n)},[e]),(0,y.useEffect)(()=>{e===`connect-claude`&&fetch(`/api/health`).then(e=>e.ok?e.json():null).then(e=>{e?.claude_authenticated&&t(`enter-pin`)}).catch(()=>{})},[e]);async function q(e,n){p(!0);try{let i=await fetch(`/api/admin/session`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({pin:e,...n?{accountId:n}:{}})});if(!i.ok){l((await i.json().catch(()=>({}))).error||`Invalid PIN`);return}let o=await i.json();if(o.accounts&&!o.session_key){console.log(`[admin] account picker shown: userId=${o.userId} accountCount=${o.accounts.length}`),L(o.accounts),t(`account-picker`);return}C(o.session_key),F(o.conversationId??null),E(o.onboardingComplete??!0),O(o.businessName),A(o.role??null),M(o.userName===void 0?null:o.userName),N(o.avatar??null);let s=b(o.thinkingView);if(V.current=s,B(s),n)try{sessionStorage.setItem(`maxy-account-id`,n)}catch{}try{sessionStorage.setItem(`maxy-admin-session-key`,o.session_key)}catch{}r(``),a(``),t(`chat`)}catch(e){console.error(`[admin] connection error:`,e),l(`Could not connect.`)}finally{p(!1),z(!1)}}let J=(0,y.useCallback)(async e=>{if(e.preventDefault(),f)return;l(``);let s=o.trim();if(!s){l(`Please enter your name.`);return}if(n.length<4){l(`PIN must be at least 4 characters.`);return}if(n!==i){l(`PINs do not match.`);return}let c=n;p(!0);try{let e=await fetch(`/api/onboarding/set-pin`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({pin:c,name:s})});if(!e.ok){let n=await e.json().catch(()=>({}));if(e.status===409){console.log(`[admin] PIN already configured — re-checking health`);try{let e=await fetch(`/api/health`);if(e.ok){let r=await e.json();r.pin_configured&&r.claude_authenticated?t(`enter-pin`):r.pin_configured?t(`connect-claude`):l(n.error||`Failed to set PIN.`)}else t(`enter-pin`)}catch{t(`enter-pin`)}return}l(n.error||`Failed to set PIN.`);return}let n=await fetch(`/api/health`),i=n.ok?await n.json():null;if(i?.onboarding_complete===!1){r(``),a(``),t(`onboarding-choice`);return}if(i?.claude_authenticated){await q(c);return}r(``),a(``),t(`onboarding-choice`)}catch(e){console.error(`[admin] connection error:`,e),l(`Could not connect.`)}finally{p(!1)}},[n,i,f,o]),Y=(0,y.useCallback)(async e=>{e.preventDefault(),l(``),await q(n)},[n]),X=(0,y.useCallback)(async()=>{x(!0);try{await fetch(`/api/onboarding/claude-auth`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({action:`logout`})}),C(null),A(null),M(void 0),N(null);try{sessionStorage.removeItem(`maxy-admin-session-key`)}catch{}t(`connect-claude`)}finally{x(!1)}},[]),Z=(0,y.useCallback)(()=>{C(null),A(null),M(void 0),N(null);try{sessionStorage.removeItem(`maxy-admin-session-key`)}catch{}r(``),a(``),l(``),t(`enter-pin`)},[]);return{appState:e,setAppState:t,pin:n,setPin:r,confirmPin:i,setConfirmPin:a,operatorName:o,setOperatorName:s,pinError:c,setPinError:l,showPin:u,setShowPin:d,pinLoading:f,authPolling:m,setAuthPolling:h,authLoading:g,setAuthLoading:_,disconnecting:v,cacheKey:S,setCacheKey:C,claudeInfo:ee,setClaudeInfo:w,onboardingComplete:T,setOnboardingComplete:E,businessName:D,role:k,userName:j,userAvatar:te,conversationId:P,setConversationId:F,accounts:I,accountPickerLoading:R,expandAll:ne,setExpandAll:B,expandAllDefaultRef:V,remoteAuthEnabled:H,pinInputRef:W,confirmPinInputRef:G,setPinFormRef:K,handleSetPin:J,handleLogin:Y,handleAccountSelect:(0,y.useCallback)(async e=>{z(!0),l(``),await q(n,e)},[n]),handleDisconnect:X,handleLogout:Z,handleChangePin:(0,y.useCallback)(async()=>{if(!n){l(`Enter your current PIN first.`);return}p(!0),l(``);try{let e=await fetch(`/api/onboarding/set-pin`,{method:`DELETE`,headers:{"Content-Type":`application/json`},body:JSON.stringify({currentPin:n})});if(!e.ok){l((await e.json().catch(()=>({error:`Incorrect PIN.`}))).error||`Incorrect PIN.`);return}r(``),a(``),l(``),t(`set-pin`)}catch(e){console.error(`[admin-auth] change pin failed:`,e),l(e instanceof Error?e.message:String(e))}finally{p(!1)}},[n])}}function S(e){let[t,n]=(0,y.useState)([]),[r,i]=(0,y.useState)(!1),[a,o]=(0,y.useState)(null),[s,c]=(0,y.useState)(null),l=(0,y.useCallback)(async t=>{if(e&&!(!t&&s===e)){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();n(Array.isArray(r)?r:r.sessions??[]),c(e)}catch(e){console.error(`[admin/claude-sessions] fetch failed:`,e),o(e instanceof Error?e.message:String(e))}finally{i(!1)}}},[e,s]);(0,y.useEffect)(()=>{e||(c(null),n([]),o(null))},[e]);let u=(0,y.useCallback)(()=>l(!1),[l]),d=(0,y.useCallback)(()=>l(!0),[l]),f=(0,y.useRef)(d);return(0,y.useEffect)(()=>{f.current=d},[d]),(0,y.useEffect)(()=>{if(!e)return;let t=setInterval(()=>{f.current()},3e3);return()=>clearInterval(t)},[e]),{sessions:t,setSessions:n,loading:r,loaded:s!==null&&s===e,error:a,ensureLoaded:u,refetch:d}}var C=i(`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`}]]),ee=i(`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`}]]),w=i(`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`}]]),T=i(`ellipsis-vertical`,[[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}],[`circle`,{cx:`12`,cy:`5`,r:`1`,key:`gxeob9`}],[`circle`,{cx:`12`,cy:`19`,r:`1`,key:`lyex9k`}]]),E=i(`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`}]]),D=i(`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`}]]),O=i(`panel-left-close`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`path`,{d:`m16 15-3-3 3-3`,key:`14y99z`}]]),k=i(`panel-left-open`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`path`,{d:`m14 9 3 3-3 3`,key:`8010ee`}]]),A=i(`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`}]]),j=i(`pin`,[[`path`,{d:`M12 17v5`,key:`bb1du9`}],[`path`,{d:`M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z`,key:`1nkz8b`}]]),M=i(`terminal`,[[`path`,{d:`M12 19h8`,key:`baeox8`}],[`path`,{d:`m4 17 6-6-6-6`,key:`1yngyt`}]]),te=i(`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`}]]),N=a();function P({inputRef:e,value:t,onChange:n,onComplete:r,showPin:i,autoFocus:a}){let o=(0,y.useRef)([]);function s(e,r){r.key===`Backspace`?(r.preventDefault(),t[e]?n(t.slice(0,e)+t.slice(e+1)):e>0&&(n(t.slice(0,e-1)+t.slice(e)),o.current[e-1]?.focus())):r.key===`ArrowLeft`&&e>0?o.current[e-1]?.focus():r.key===`ArrowRight`&&e<5?o.current[e+1]?.focus():r.key===`Enter`&&(r.preventDefault(),r.currentTarget.form?.requestSubmit())}function c(e,i){let a=i.nativeEvent.data;if(!a||!/^\d$/.test(a))return;let s=t.split(``);for(s[e]=a;s.length<e;)s.push(``);let c=s.join(``).replace(/\D/g,``).slice(0,6);n(c),c.length===6?r?.(c):e<5&&o.current[e+1]?.focus()}function l(e){e.preventDefault();let t=e.clipboardData.getData(`text`).replace(/\D/g,``).slice(0,6);t&&(n(t),t.length===6?r?.(t):o.current[t.length]?.focus())}return(0,N.jsx)(`div`,{className:`pin-field`,children:Array.from({length:6}).map((n,r)=>(0,N.jsx)(`input`,{ref:t=>{o.current[r]=t,r===0&&e&&(e.current=t)},type:`text`,inputMode:`numeric`,className:`pin-box${t[r]?` pin-box-filled`:``}`,value:t[r]?i?t[r]:`•`:``,onKeyDown:e=>s(r,e),onInput:e=>c(r,e),onPaste:l,onFocus:e=>e.target.select(),autoFocus:a&&r===0,autoComplete:`off`,maxLength:1,"aria-label":`PIN digit ${r+1}`},r))})}function F(e){let{pin:t,setPin:n,confirmPin:r,setConfirmPin:i,showPin:a,setShowPin:s,pinLoading:l,pinError:u,pinInputRef:d,confirmPinInputRef:p,setPinFormRef:m,onSubmit:h,operatorName:g,setOperatorName:v}=e;return(0,N.jsx)(`div`,{className:`connect-page`,children:(0,N.jsxs)(`div`,{className:`connect-content`,children:[(0,N.jsx)(`img`,{src:c,alt:f.productName,className:`connect-logo connect-logo--maxy`}),!f.logoContainsName&&(0,N.jsxs)(`h1`,{className:`connect-title`,children:[`Welcome to `,f.productName]}),(0,N.jsxs)(`p`,{className:`connect-subtitle`,children:[`Tell `,f.productName,` who you are, then choose a PIN.`]}),(0,N.jsxs)(`form`,{ref:m,onSubmit:h,className:`connect-pin-form`,children:[(0,N.jsxs)(`div`,{className:`pin-input-row`,children:[(0,N.jsx)(`input`,{type:`text`,className:`connect-name-input`,placeholder:`Your full name`,value:g,onChange:e=>v(e.target.value),autoComplete:`name`,autoFocus:!0,required:!0,"aria-label":`Your full name`}),(0,N.jsx)(`div`,{style:{width:38,flexShrink:0},"aria-hidden":`true`})]}),(0,N.jsxs)(`div`,{className:`pin-input-row`,children:[(0,N.jsx)(P,{inputRef:d,value:t,onChange:n,onComplete:()=>p.current?.focus(),showPin:a}),(0,N.jsx)(`div`,{style:{width:38,flexShrink:0},"aria-hidden":`true`})]}),(0,N.jsxs)(`div`,{className:`pin-input-row`,children:[(0,N.jsx)(P,{inputRef:p,value:r,onChange:i,onComplete:()=>{},showPin:a}),(0,N.jsx)(o,{variant:`send`,type:`submit`,disabled:!t||!r||!g.trim(),loading:l,"aria-label":`Set PIN`,children:(0,N.jsxs)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,N.jsx)(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`}),(0,N.jsx)(`polyline`,{points:`12 5 19 12 12 19`})]})})]}),(0,N.jsx)(_,{checked:a,onChange:()=>s(e=>!e),label:`Show PIN`})]}),u&&(0,N.jsx)(`p`,{className:`admin-pin-error`,children:u})]})})}function I(e){let{pin:t,setPin:n,showPin:r,setShowPin:i,pinLoading:a,pinError:s,pinInputRef:l,onSubmit:u,onChangePin:d,remoteAuthEnabled:p,onSignOutRemote:m}=e;return(0,N.jsxs)(`div`,{className:`connect-page`,children:[p&&m&&(0,N.jsx)(`button`,{type:`button`,className:`connect-signout`,onClick:m,children:`Sign out`}),(0,N.jsxs)(`div`,{className:`connect-content`,children:[(0,N.jsx)(`img`,{src:c,alt:f.productName,className:`connect-logo connect-logo--maxy`}),!f.logoContainsName&&(0,N.jsx)(`h1`,{className:`connect-title`,children:f.productName}),(0,N.jsxs)(`form`,{onSubmit:u,className:`connect-pin-form`,children:[(0,N.jsxs)(`div`,{className:`pin-input-row`,children:[(0,N.jsx)(P,{inputRef:l,value:t,onChange:n,onComplete:()=>{},showPin:r,autoFocus:!0}),(0,N.jsx)(o,{variant:`send`,type:`submit`,disabled:!t,loading:a,children:(0,N.jsxs)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,N.jsx)(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`}),(0,N.jsx)(`polyline`,{points:`12 5 19 12 12 19`})]})})]}),(0,N.jsxs)(`div`,{className:`pin-options`,children:[(0,N.jsx)(_,{checked:r,onChange:()=>i(e=>!e),label:`Show PIN`}),(0,N.jsx)(o,{type:`button`,variant:`ghost`,onClick:d,children:`Change PIN`})]})]}),s&&(0,N.jsx)(`p`,{className:`admin-pin-error`,children:s})]})]})}function L(e){let{accounts:t,loading:n,error:r,onSelect:i}=e;return(0,N.jsx)(`div`,{className:`connect-page`,children:(0,N.jsxs)(`div`,{className:`connect-content`,children:[(0,N.jsx)(`img`,{src:c,alt:f.productName,className:`connect-logo connect-logo--maxy`}),!f.logoContainsName&&(0,N.jsx)(`h1`,{className:`connect-title`,children:f.productName}),(0,N.jsx)(`p`,{className:`connect-subtitle`,children:`Select an account`}),(0,N.jsx)(`div`,{className:`account-picker-list`,children:t.map(e=>(0,N.jsxs)(`button`,{className:`account-picker-card`,onClick:()=>i(e.accountId),disabled:n,type:`button`,children:[(0,N.jsx)(`span`,{className:`account-picker-name`,children:e.businessName||e.accountId}),(0,N.jsx)(`span`,{className:`account-picker-role`,children:e.role}),n&&(0,N.jsx)(p,{className:`account-picker-spinner`,size:16})]},e.accountId))}),r&&(0,N.jsx)(`p`,{className:`admin-pin-error`,children:r})]})})}function R(e){let{authPolling:t,setAuthPolling:n,authLoading:r,setAuthLoading:i,pinError:a,setPinError:s,setAppState:l}=e,[u,d]=(0,y.useState)(!1),[p,m]=(0,y.useState)(!1);async function h(){m(!0),s(``);try{let e=await(await fetch(`/api/onboarding/claude-auth`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({action:`launch-browser`})})).json();e.launched?d(!0):e.error&&s(e.error)}catch(e){console.error(`[admin] browser launch error:`,e),s(`Could not launch browser.`)}m(!1)}async function g(){i(!0),s(``);try{let e=await(await fetch(`/api/onboarding/claude-auth`,{method:`POST`})).json();if(e.started){n(!0),d(!0),i(!1);for(let e=0;e<120;e++)if(await new Promise(e=>setTimeout(e,2e3)),(await(await fetch(`/api/onboarding/claude-auth`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({action:`wait`})})).json()).authenticated){await fetch(`/api/onboarding/claude-auth`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({action:`stop`})}),l(`enter-pin`);return}s(`Timed out waiting for sign-in. Try again.`),n(!1)}else e.error&&s(e.error)}catch(e){console.error(`[admin] auth flow error:`,e),s(`Could not start auth flow.`)}i(!1)}async function _(){await fetch(`/api/onboarding/claude-auth`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({action:`stop`})}),n(!1),s(``)}return t||u?(0,N.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,height:`100dvh`,overflow:`auto`},children:[(0,N.jsxs)(`header`,{className:`chat-header`,style:{paddingBottom:`12px`,flexShrink:0,position:`relative`,maxWidth:`680px`,width:`100%`,margin:`0 auto`,padding:`24px 20px 12px`},children:[t?(0,N.jsx)(`button`,{onClick:_,style:{position:`absolute`,top:`12px`,right:`12px`,background:`none`,border:`none`,color:`#999`,fontSize:`13px`,cursor:`pointer`,padding:`4px 8px`},"aria-label":`Cancel`,children:`✕`}):(0,N.jsx)(`button`,{onClick:()=>d(!1),style:{position:`absolute`,top:`12px`,right:`12px`,background:`none`,border:`none`,color:`#999`,fontSize:`13px`,cursor:`pointer`,padding:`4px 8px`},"aria-label":`Close browser`,children:`✕`}),(0,N.jsx)(`img`,{src:`/brand/claude.png`,alt:`Claude`,className:`chat-logo`}),(0,N.jsx)(`h1`,{className:`chat-tagline`,children:`Connect Claude`}),(0,N.jsx)(`p`,{className:`chat-intro`,children:t?`Sign in and authorize in the browser below.`:`Open your email or prepare your accounts, then sign in.`}),!t&&(0,N.jsx)(`div`,{style:{marginTop:`12px`},children:(0,N.jsx)(o,{variant:`primary`,onClick:g,disabled:r,children:r?(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(`span`,{className:`spin`,style:{display:`inline-block`},children:`✱`}),` Connecting…`]}):`Sign in to Claude`})})]}),(0,N.jsx)(`div`,{style:{flex:1,display:`flex`,flexDirection:`column`,minHeight:0,gap:`10px`,padding:`0 0 16px`},children:(0,N.jsx)(`iframe`,{src:`/vnc-viewer.html`,style:{flex:1,width:`100%`,minHeight:0,border:`none`,background:`#111`,display:`block`},title:`Claude Sign-in`})}),a&&(0,N.jsx)(`p`,{className:`admin-pin-error`,style:{textAlign:`center`,padding:`0 20px 16px`},children:a})]}):(0,N.jsxs)(`div`,{className:`connect-page`,children:[(0,N.jsx)(`button`,{onClick:()=>l(`onboarding-choice`),style:{position:`fixed`,top:`16px`,left:`16px`,background:`none`,border:`none`,color:`#999`,fontSize:`13px`,cursor:`pointer`,padding:`4px 8px`},"aria-label":`Back to setup choice`,children:`← Back`}),(0,N.jsxs)(`div`,{className:`connect-content`,children:[(0,N.jsxs)(`div`,{className:`connect-logos`,children:[(0,N.jsx)(`div`,{className:`connect-logo-wrap`,children:(0,N.jsx)(`img`,{src:`/brand/claude.png`,alt:`Claude`,className:`connect-logo`})}),(0,N.jsx)(`svg`,{className:`connect-arrow`,viewBox:`0 0 48 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,children:(0,N.jsx)(`path`,{d:`M0 12h44m0 0l-8-8m8 8l-8 8`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`})}),(0,N.jsxs)(`div`,{className:`connect-logo-wrap`,children:[(0,N.jsx)(`img`,{src:c,alt:f.productName,className:`connect-logo connect-logo--maxy`}),!f.logoContainsName&&(0,N.jsx)(`span`,{className:`connect-logo-label`,children:f.productName})]})]}),(0,N.jsxs)(`h1`,{className:`connect-title`,children:[`Connect Claude to power `,f.productName]}),(0,N.jsx)(`p`,{className:`connect-subtitle`,children:`Sign in with your Anthropic account to get started.`}),(0,N.jsx)(o,{variant:`primary`,onClick:g,disabled:r,children:r?(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(`span`,{className:`spin`,style:{display:`inline-block`},children:`✱`}),` Connecting…`]}):`Sign in to Claude`}),(0,N.jsx)(`p`,{style:{marginTop:`6px`,fontSize:`11px`,color:`#999`,maxWidth:`300px`,textAlign:`center`,lineHeight:`1.4`},children:`First time? You may need to sign into your email and Anthropic account in the browser before connecting.`}),(0,N.jsx)(`button`,{onClick:h,disabled:p,style:{marginTop:`12px`,background:`none`,border:`none`,color:`var(--color-primary, #666)`,fontSize:`13px`,cursor:`pointer`,textDecoration:`underline`,textUnderlineOffset:`3px`},children:p?`Launching…`:`Open browser first`}),a&&(0,N.jsx)(`p`,{className:`admin-pin-error`,children:a})]})]})}function z({setAppState:e,setOnboardingComplete:t}){let[n,r]=(0,y.useState)(!1),[i,a]=(0,y.useState)(``);async function s(n){r(!0),a(``);try{let r=await fetch(`/api/onboarding/skip`,{method:`POST`,headers:n===`minimal`?{"Content-Type":`application/json`}:{},body:n===`minimal`?JSON.stringify({minimal:!0}):void 0});if(!r.ok){a((await r.json().catch(()=>({}))).error||`Failed to apply defaults.`);return}t(!0),e(`connect-claude`)}catch(e){console.error(`[admin] skip onboarding error:`,e),a(`Could not apply defaults.`)}finally{r(!1)}}function l(){e(`connect-claude`)}return(0,N.jsx)(`div`,{className:`connect-page`,children:(0,N.jsxs)(`div`,{className:`connect-content`,children:[(0,N.jsxs)(`div`,{className:`connect-logo-wrap`,children:[(0,N.jsx)(`img`,{src:c,alt:f.productName,className:`connect-logo connect-logo--maxy`}),!f.logoContainsName&&(0,N.jsx)(`span`,{className:`connect-logo-label`,children:f.productName})]}),(0,N.jsx)(`h1`,{className:`connect-title`,children:`How would you like to get started?`}),(0,N.jsx)(`p`,{className:`connect-subtitle`,style:{fontSize:`0.8rem`,maxWidth:`320px`},children:`Defaults: core plugins only, auto-detected timezone, concise output style, and a minimal personality. No WiFi or optional plugins. Minimal also skips remote access, public-agent API key, and business profile.`}),(0,N.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`10px`,width:`100%`,maxWidth:`320px`,alignItems:`center`},children:[(0,N.jsx)(o,{variant:`primary`,onClick:()=>s(`default`),disabled:n,children:n?`Applying defaults…`:`Use defaults`}),(0,N.jsx)(`button`,{onClick:l,disabled:n,style:{background:`none`,border:`none`,padding:`8px`,cursor:`pointer`,fontSize:`0.95rem`,color:`var(--text-secondary, #666)`,textDecoration:`none`},children:`Guided setup`}),(0,N.jsx)(`button`,{onClick:()=>s(`minimal`),disabled:n,style:{background:`none`,border:`none`,padding:`8px`,cursor:`pointer`,fontSize:`0.95rem`,color:`var(--text-secondary, #666)`,textDecoration:`none`},children:`Minimal`})]}),(0,N.jsx)(`p`,{className:`connect-subtitle`,style:{marginTop:`12px`},children:`You can change any setting later through conversation.`}),i&&(0,N.jsx)(`p`,{className:`admin-pin-error`,children:i})]})})}var ne=(()=>null),B=(0,y.forwardRef)(function(e,t){let{businessName:n,cacheKey:i,role:a,userName:o,userAvatar:s,sessions:c,sessionsLoading:l,sessionsError:g,ensureSessionsLoaded:_,refetchSessions:v,onSelectArtefact:b,onSelectProjects:x,onSelectPeople:S,onSelectTasks:C,onSelectAgents:A,onCloseMobileDrawer:j,onSelectSession:P,selectedSessionId:F,collapsed:I,onToggleCollapsed:L,mobileDrawerOpen:R,actions:z,recentsActions:B}=e,[V,H]=(0,y.useState)(null),[U,W]=(0,y.useState)(null),[G,K]=(0,y.useState)(!1);(0,y.useEffect)(()=>{_()},[_]);let q=(0,y.useRef)(null),[J,Y]=(0,y.useState)(!1),[X,Z]=(0,y.useState)(null),re=f.productName,ie=typeof o==`string`?o:o===null?`name unavailable`:n||re,ae=(ie.trim().charAt(0)||`?`).toUpperCase(),oe=c,se=oe.length,[Q,ce]=(0,y.useState)(`chat`),[le,ue]=(0,y.useState)([]),[de,fe]=(0,y.useState)(!1),[pe,me]=(0,y.useState)(null),[he,ge]=(0,y.useState)(!1);(0,y.useImperativeHandle)(t,()=>({patchArtefact(e,t){ue(n=>n.map(n=>n.id===e?{...n,...t}:n))}}),[]);let[_e,ve]=(0,y.useState)(!1),ye=(0,y.useRef)(null);(0,y.useEffect)(()=>{if(!_e)return;function e(e){ye.current&&!ye.current.contains(e.target)&&ve(!1)}return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[_e]);let be=(0,y.useCallback)(async()=>{if(i){ge(!0),me(null);try{let e=await fetch(`/api/admin/sidebar-artefacts?session_key=${encodeURIComponent(i)}`);if(!e.ok)throw Error(`status ${e.status}`);ue((await e.json()).artefacts??[]),fe(!0)}catch(e){let t=e instanceof Error?e.message:String(e);me(`Failed to load artefacts: ${t}`),console.error(`[admin-ui] sidebar-artefacts fetch failed: ${t}`)}finally{ge(!1)}}},[i]),xe=()=>{ce(`chat`),console.info(`[admin-ui] sidebar-nav surface=sessions count=${se}`)},Se=()=>{ce(`artefacts`),console.info(`[admin-ui] sidebar-nav surface=artefacts count=${de?le.length:0} collapsed=${I}`),I&&L(),de||be()},$=I?24:16,Ce=Q===`chat`?`Sessions`:`Artefacts`,we=Q===`chat`?l?`…`:String(se):he?`…`:String(le.length),Te=Q===`chat`?l:he,Ee=()=>{Q===`chat`?v():be(),console.info(`[admin-ui] sidebar-refresh surface=${Q}`)},De=(0,y.useCallback)(async()=>{if(!(J||!i)){Y(!0),Z(null);try{let e=await fetch(`/api/admin/claude-sessions?session_key=${encodeURIComponent(i)}`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({channel:`browser`})}),t=await e.json();if(!e.ok||!(`sessionId`in t)){Z(t.error??`POST returned ${e.status}`);return}console.info(`[admin-ui] sidebar-new-session pid=${t.pid} sessionId=${t.sessionId}`),B.setSessions(e=>[t,...e])}catch(e){let t=e instanceof Error?e.message:String(e);Z(t),console.error(`[admin-ui] sidebar-new-session failed:`,t)}finally{Y(!1)}}},[i,J,B]),Oe=(0,y.useCallback)(async e=>{if(i)try{let t=await fetch(`/api/admin/claude-sessions/resume?session_key=${encodeURIComponent(i)}`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({claudeSessionId:e,channel:`browser`})}),n=await t.json();if(!t.ok||!(`sessionId`in n)){let e=n.error??`POST returned ${t.status}`;console.error(`[admin-ui] sidebar-resume failed: ${e}`);return}console.info(`[admin-ui] sidebar-resume claudeSessionId=${e} pid=${n.pid} sessionId=${n.sessionId}`),B.setSessions(t=>[n,...t.filter(t=>t.sessionId!==e)])}catch(e){console.error(`[admin-ui] sidebar-resume threw:`,e),B.refetch()}},[i,B]),ke=(0,y.useCallback)(async e=>{if(i){K(!0),W(null);try{let t=await fetch(`/api/admin/claude-sessions/${encodeURIComponent(e)}?purge=1&session_key=${encodeURIComponent(i)}`,{method:`DELETE`});if(!t.ok){let e=await t.json().catch(()=>({}));W(e.detail||e.error||`DELETE ?purge=1 ${t.status}`);return}B.setSessions(t=>t.filter(t=>t.sessionId!==e)),console.info(`[admin-ui] sidebar-purge sessionId=${e}`),H(null)}catch(e){let t=e instanceof Error?e.message:String(e);W(t),console.error(`[admin-ui] sidebar-purge threw:`,t)}finally{K(!1)}}},[i,B]),Ae=(0,y.useCallback)(async e=>{B.setSessions(t=>t.filter(t=>t.sessionId!==e));try{let t=await fetch(`/api/admin/claude-sessions/${encodeURIComponent(e)}?session_key=${encodeURIComponent(i)}`,{method:`DELETE`});if(!t.ok){let e=await t.text().catch(()=>``);throw Error(`DELETE ${t.status} ${e.slice(0,200)}`)}console.info(`[admin-ui] sidebar-end-session sessionId=${e}`)}catch(e){console.error(`[admin-ui] sidebar-end-session failed:`,e),B.refetch()}},[i,B]);return(0,N.jsxs)(`aside`,{className:`side`,children:[(0,N.jsx)(`div`,{className:`side-head`,children:(0,N.jsx)(`button`,{className:`icon-btn side-head-toggle`,title:R?`Close sidebar`:I?`Expand sidebar`:`Collapse sidebar`,type:`button`,"aria-label":R?`Close sidebar`:I?`Expand sidebar`:`Collapse sidebar`,onClick:()=>{R?(console.info(`[admin-ui] sidebar-head-toggle action=close-drawer state=closed`),j()):(console.info(`[admin-ui] sidebar-head-toggle action=toggle-collapsed state=${I?`expanded`:`collapsed`}`),L())},children:I?(0,N.jsx)(k,{size:28}):(0,N.jsx)(O,{size:28})})}),(0,N.jsxs)(`nav`,{className:`side-nav`,children:[(0,N.jsxs)(`button`,{type:`button`,className:`nav-row${Q===`chat`?` active`:``}`,onClick:xe,children:[(0,N.jsx)(M,{size:$}),(0,N.jsx)(`span`,{className:`label`,children:`Sessions`}),(0,N.jsx)(`span`,{className:`kbd`})]}),(0,N.jsxs)(`button`,{type:`button`,className:`nav-row`,onClick:()=>{console.info(`[admin-ui] sidebar-nav surface=people`),S(),j()},children:[(0,N.jsx)(te,{size:$}),(0,N.jsx)(`span`,{className:`label`,children:`People`}),(0,N.jsx)(`span`,{className:`kbd`})]}),(0,N.jsxs)(`button`,{type:`button`,className:`nav-row`,onClick:()=>{console.info(`[admin-ui] sidebar-nav surface=agents`),A(),j()},children:[(0,N.jsx)(ee,{size:$}),(0,N.jsx)(`span`,{className:`label`,children:`Agents`}),(0,N.jsx)(`span`,{className:`kbd`})]}),(0,N.jsxs)(`button`,{type:`button`,className:`nav-row`,onClick:()=>{console.info(`[admin-ui] sidebar-nav surface=projects`),x(),j()},children:[(0,N.jsx)(w,{size:$}),(0,N.jsx)(`span`,{className:`label`,children:`Projects`}),(0,N.jsx)(`span`,{className:`kbd`})]}),(0,N.jsxs)(`button`,{type:`button`,className:`nav-row`,onClick:()=>{console.info(`[admin-ui] sidebar-nav surface=tasks`),C(),j()},children:[(0,N.jsx)(D,{size:$}),(0,N.jsx)(`span`,{className:`label`,children:`Tasks`}),(0,N.jsx)(`span`,{className:`kbd`})]}),(0,N.jsxs)(`button`,{type:`button`,className:`nav-row${Q===`artefacts`?` active`:``}`,onClick:Se,children:[(0,N.jsx)(d,{size:$}),(0,N.jsx)(`span`,{className:`label`,children:`Artefacts`}),(0,N.jsx)(`span`,{className:`kbd`})]})]}),(0,N.jsxs)(`div`,{className:`side-list`,ref:q,children:[(0,N.jsxs)(`div`,{className:`group-head`,children:[(0,N.jsx)(`span`,{children:Ce}),(0,N.jsxs)(`span`,{className:`group-head-meta`,children:[Q===`chat`&&(0,N.jsx)(`button`,{type:`button`,className:`group-head-refresh`,title:`New session`,"aria-label":`New session`,onClick:()=>void De(),disabled:J||!i,children:J?(0,N.jsx)(p,{size:12,className:`spinning`}):(0,N.jsx)(h,{size:12})}),(0,N.jsx)(`button`,{type:`button`,className:`group-head-refresh`,title:`Refresh ${Ce.toLowerCase()}`,"aria-label":`Refresh ${Ce.toLowerCase()}`,onClick:Ee,disabled:Te,children:(0,N.jsx)(m,{size:12,className:Te?`spinning`:void 0})}),(0,N.jsx)(`span`,{children:we})]})]}),X&&Q===`chat`&&(0,N.jsx)(`div`,{className:`conv`,style:{color:`var(--text-tertiary)`,cursor:`default`},children:X}),Q===`chat`&&(0,N.jsxs)(N.Fragment,{children:[g&&(0,N.jsx)(`div`,{className:`conv`,style:{color:`var(--text-tertiary)`,cursor:`default`},children:g}),oe.map(e=>{let t=e.status===`ended`,n=t?`${e.turnCount}${e.capped?`+`:``} turns · ended`:`pid ${e.pid??`?`}`;return(0,N.jsxs)(`div`,{className:`conv${F===e.sessionId?` active`:``}`,children:[(0,N.jsxs)(`button`,{type:`button`,className:`conv-name-button`,onClick:()=>{P(e.sessionId),j()},title:`Show metadata`,children:[(0,N.jsx)(M,{size:12,className:`conv-channel-icon`,"aria-label":`claude session`}),(0,N.jsxs)(`span`,{className:`conv-name`,children:[e.displayName,` · `,n]})]}),t?(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(`button`,{type:`button`,className:`conversations-action`,title:`Resume session`,"aria-label":`Resume session`,onClick:()=>void Oe(e.sessionId),children:(0,N.jsx)(u,{size:13})}),(0,N.jsx)(`button`,{type:`button`,className:`conversations-action`,title:`Purge JSONL`,"aria-label":`Purge JSONL`,onClick:()=>{W(null),H({sessionId:e.sessionId,displayName:e.displayName})},children:(0,N.jsx)(r,{size:13})})]}):(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(`button`,{type:`button`,className:`conversations-action`,title:`Open in new tab`,"aria-label":`Open in new tab`,onClick:()=>{console.info(`[admin-ui] sidebar-open-session sessionId=${e.sessionId}`),e.url&&window.open(e.url,`_blank`,`noopener,noreferrer`)},children:(0,N.jsx)(E,{size:13})}),(0,N.jsx)(`button`,{type:`button`,className:`conversations-action`,title:`End session`,"aria-label":`End session`,onClick:()=>void Ae(e.sessionId),children:(0,N.jsx)(r,{size:13})})]})]},e.sessionId)})]}),Q===`artefacts`&&(0,N.jsxs)(N.Fragment,{children:[pe&&(0,N.jsx)(`div`,{className:`conv`,style:{color:`var(--text-tertiary)`,cursor:`default`},children:pe}),de&&!pe&&le.length===0&&(0,N.jsx)(`div`,{className:`conv`,style:{color:`var(--text-tertiary)`,cursor:`default`},children:`No artefacts yet`}),le.map(e=>(0,N.jsxs)(`button`,{type:`button`,className:`conv`,onClick:()=>{b({docId:e.id,name:e.name,content:e.content,editable:e.editable,mimeType:e.mimeType,skipReason:e.skipReason},`sidebar-artefacts`),j()},children:[(0,N.jsx)(`span`,{className:`conv-name`,children:e.name}),(0,N.jsx)(`span`,{className:`conv-kind`,"data-kind":e.kind===`agent-template`?`agent`:`doc`,children:e.kind===`agent-template`?`agent`:`doc`})]},e.id))]})]}),(0,N.jsxs)(`div`,{className:`side-foot`,ref:ye,children:[(0,N.jsx)(`div`,{className:`avatar`,children:s?(0,N.jsx)(`img`,{src:s,alt:ie}):ae}),(0,N.jsxs)(`div`,{className:`who`,children:[(0,N.jsx)(`span`,{className:`name`,children:ie}),(0,N.jsx)(`span`,{className:`role`,children:a??`operator`})]}),(0,N.jsx)(`button`,{className:`icon-btn side-foot-actions-trigger`,title:`Conversation actions`,type:`button`,"aria-label":`Conversation actions`,"aria-haspopup":`true`,"aria-expanded":_e,onClick:()=>ve(e=>!e),children:(0,N.jsx)(T,{size:$})}),_e&&(0,N.jsx)(`div`,{className:`side-foot-actions-popover`,children:(0,N.jsx)(ne,{...z,onAfterAction:()=>ve(!1)})})]}),V&&(0,N.jsx)(`div`,{role:`dialog`,"aria-modal":`true`,"aria-labelledby":`purge-confirm-title`,style:{position:`fixed`,inset:0,background:`rgba(0,0,0,0.45)`,display:`flex`,alignItems:`center`,justifyContent:`center`,zIndex:1e3},onClick:e=>{e.target===e.currentTarget&&!G&&H(null)},children:(0,N.jsxs)(`div`,{style:{background:`var(--bg-elevated, #fff)`,color:`var(--text-primary, #000)`,padding:20,borderRadius:8,maxWidth:420,boxShadow:`0 12px 32px rgba(0,0,0,0.3)`},children:[(0,N.jsx)(`h3`,{id:`purge-confirm-title`,style:{margin:0,marginBottom:8,fontSize:16,fontWeight:600},children:`Purge session JSONL?`}),(0,N.jsxs)(`p`,{style:{margin:0,marginBottom:8,fontSize:13},children:[`This hard-deletes the transcript and sidecar for `,(0,N.jsx)(`strong`,{children:V.displayName}),`. The action cannot be undone.`]}),U&&(0,N.jsx)(`p`,{style:{margin:0,marginBottom:8,fontSize:12,color:`var(--text-tertiary)`},children:U}),(0,N.jsxs)(`div`,{style:{display:`flex`,gap:8,justifyContent:`flex-end`},children:[(0,N.jsx)(`button`,{type:`button`,className:`icon-btn`,disabled:G,style:{padding:`6px 12px`},onClick:()=>H(null),children:`Cancel`}),(0,N.jsx)(`button`,{type:`button`,className:`icon-btn`,disabled:G,style:{padding:`6px 12px`,background:`var(--danger, #c0392b)`,color:`#fff`},onClick:()=>void ke(V.sessionId),children:G?(0,N.jsx)(p,{size:13,className:`spinning`}):`Purge`})]})]})})]})}),V=`maxy-shell-side-px`;function H(){if(typeof window>`u`)return 0;let e=document.querySelector(`.platform > .artefact`)?.getBoundingClientRect();return e&&e.width>0?Math.round(e.width):0}function U(e){if(typeof window>`u`)return e;let t=window.innerWidth,n=Math.max(248,t-480-H());return Math.min(Math.max(e,248),n)}function W(){if(typeof window>`u`)return 264;try{let e=window.localStorage.getItem(V);if(!e)return 264;let t=parseInt(e,10);if(Number.isFinite(t)&&t>=248)return U(t)}catch{}return 264}function G({targetSelector:e=`.platform`}){let t=(0,y.useRef)(null),[n,r]=(0,y.useState)(()=>W()),i=(0,y.useRef)(n);(0,y.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,y.useCallback)(()=>{r(e=>{let t=U(e);return t===e?e:t})},[]);(0,y.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(U(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(V,String(t))}catch{}console.info(`[admin-ui] sidebar-resize px=${t}`)};window.addEventListener(`pointermove`,o),window.addEventListener(`pointerup`,s)},s=()=>{let e=U(264);r(e);try{window.localStorage.removeItem(V)}catch{}console.info(`[admin-ui] sidebar-resize px=${e}`)};return(0,N.jsx)(`div`,{ref:t,className:`side-resize-handle`,role:`separator`,"aria-orientation":`vertical`,"aria-label":`Resize sidebar`,onPointerDown:o,onDoubleClick:s})}function K(e){if(!e)return`—`;let t=Date.parse(e);if(Number.isNaN(t))return e;let n=Date.now()-t,r=Math.round(n/1e3);if(r<60)return`${r}s ago`;let i=Math.round(r/60);if(i<60)return`${i}m ago`;let a=Math.round(i/60);return a<24?`${a}h ago`:`${Math.round(a/24)}d ago`}function q(e){return e==null?`—`:e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}async function J(e){try{return await navigator.clipboard.writeText(e),!0}catch{return!1}}function Y({sessionId:e,cacheKey:t,onRenamed:n,onClose:r}){let[i,a]=(0,y.useState)(null),[o,c]=(0,y.useState)(!0),[u,f]=(0,y.useState)(null),[m,h]=(0,y.useState)(!1),[_,v]=(0,y.useState)(``),[b,x]=(0,y.useState)(!1),[S,ee]=(0,y.useState)(null),w=(0,y.useCallback)(async()=>{c(!0),f(null);try{let n=await fetch(`/api/admin/claude-sessions/${encodeURIComponent(e)}/meta?session_key=${encodeURIComponent(t)}`);if(!n.ok){let e=await n.text().catch(()=>``);throw Error(`meta returned ${n.status} ${e.slice(0,200)}`)}let r=await n.json();a(r),v(r.displayName)}catch(e){f(e instanceof Error?e.message:String(e)),console.error(`[admin-ui] sidebar-meta-pane fetch failed:`,e)}finally{c(!1)}},[e,t]);(0,y.useEffect)(()=>{console.info(`[admin-ui] sidebar-meta-pane sessionId=${e.slice(0,8)}`),w()},[w,e]);let T=(0,y.useCallback)(async()=>{if(!i)return;let r=_.trim();if(!r||r===i.displayName){h(!1);return}x(!0);try{let o=await fetch(`/api/admin/claude-sessions/${encodeURIComponent(e)}?session_key=${encodeURIComponent(t)}`,{method:`PATCH`,headers:{"content-type":`application/json`},body:JSON.stringify({displayName:r})});if(!o.ok){let e=await o.text().catch(()=>``);throw Error(`PATCH ${o.status} ${e.slice(0,200)}`)}a({...i,displayName:r}),h(!1),n()}catch(e){console.error(`[admin-ui] sidebar-meta-pane rename failed:`,e),f(e instanceof Error?e.message:String(e))}finally{x(!1)}},[i,_,e,t,n]),D=(0,y.useCallback)(async(e,t)=>{ee(await J(t)?`Copied ${e}`:`Copy failed`),window.setTimeout(()=>ee(null),1500)},[]);if(o&&!i)return(0,N.jsx)(`main`,{className:`session-meta-pane`,style:{padding:24},children:(0,N.jsx)(p,{size:16,className:`spinning`})});if(u&&!i)return(0,N.jsxs)(`main`,{className:`session-meta-pane`,style:{padding:24},children:[(0,N.jsx)(`p`,{style:{color:`var(--text-tertiary)`},children:u}),(0,N.jsx)(`button`,{type:`button`,className:`icon-btn`,onClick:()=>void w(),children:`Retry`})]});if(!i)return null;let O=i.claudeSessionId??i.sessionId,k=i.status===`alive`;return(0,N.jsxs)(`main`,{className:`session-meta-pane`,style:{padding:24,display:`flex`,flexDirection:`column`,gap:20,overflowY:`auto`},children:[(0,N.jsxs)(`header`,{style:{display:`flex`,alignItems:`center`,gap:12},children:[m?(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(`input`,{type:`text`,value:_,onChange:e=>v(e.target.value),maxLength:256,autoFocus:!0,style:{fontSize:22,fontWeight:600,flex:1,padding:`4px 8px`},onKeyDown:e=>{e.key===`Enter`&&T(),e.key===`Escape`&&(v(i.displayName),h(!1))}}),(0,N.jsx)(`button`,{type:`button`,className:`icon-btn`,"aria-label":`Confirm rename`,disabled:b,onClick:()=>void T(),children:b?(0,N.jsx)(p,{size:16,className:`spinning`}):(0,N.jsx)(l,{size:16})}),(0,N.jsx)(`button`,{type:`button`,className:`icon-btn`,"aria-label":`Cancel rename`,onClick:()=>{v(i.displayName),h(!1)},children:(0,N.jsx)(g,{size:16})})]}):(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(`h2`,{style:{fontSize:22,fontWeight:600,margin:0,flex:1},children:i.displayName}),(0,N.jsx)(`button`,{type:`button`,className:`icon-btn`,"aria-label":`Rename`,onClick:()=>h(!0),children:(0,N.jsx)(A,{size:16})})]}),(0,N.jsx)(`button`,{type:`button`,className:`icon-btn`,"aria-label":`Close pane`,onClick:r,children:(0,N.jsx)(g,{size:18})})]}),(0,N.jsx)(`section`,{children:(0,N.jsxs)(`dl`,{style:{display:`grid`,gridTemplateColumns:`140px 1fr`,rowGap:8,columnGap:16,margin:0,fontSize:13},children:[(0,N.jsx)(`dt`,{style:{color:`var(--text-tertiary)`},children:`Status`}),(0,N.jsx)(`dd`,{style:{margin:0},children:k?`alive · pid ${i.pid??`?`}`:`ended`}),(0,N.jsx)(`dt`,{style:{color:`var(--text-tertiary)`},children:`claudeSessionId`}),(0,N.jsxs)(`dd`,{style:{margin:0,fontFamily:`monospace`,display:`flex`,alignItems:`center`,gap:8},children:[(0,N.jsx)(`span`,{children:O}),(0,N.jsx)(`button`,{type:`button`,className:`icon-btn`,"aria-label":`Copy claudeSessionId`,onClick:()=>void D(`id`,O),children:(0,N.jsx)(s,{size:12})})]}),(0,N.jsx)(`dt`,{style:{color:`var(--text-tertiary)`},children:`Started at`}),(0,N.jsxs)(`dd`,{style:{margin:0},children:[i.startedAt,` `,(0,N.jsxs)(`span`,{style:{color:`var(--text-tertiary)`},children:[`(`,K(i.startedAt),`)`]})]}),(0,N.jsx)(`dt`,{style:{color:`var(--text-tertiary)`},children:`Last message`}),(0,N.jsx)(`dd`,{style:{margin:0},children:i.lastMessageAt?(0,N.jsxs)(N.Fragment,{children:[i.lastMessageAt,` `,(0,N.jsxs)(`span`,{style:{color:`var(--text-tertiary)`},children:[`(`,K(i.lastMessageAt),`)`]})]}):`—`}),(0,N.jsx)(`dt`,{style:{color:`var(--text-tertiary)`},children:`Turns`}),(0,N.jsxs)(`dd`,{style:{margin:0},children:[i.turnCount,i.capped?(0,N.jsx)(`span`,{style:{color:`var(--text-tertiary)`},children:` (≥, JSONL exceeds tail-read cap)`}):null]}),(0,N.jsx)(`dt`,{style:{color:`var(--text-tertiary)`},children:`JSONL size`}),(0,N.jsx)(`dd`,{style:{margin:0},children:q(i.sizeBytes)}),(0,N.jsx)(`dt`,{style:{color:`var(--text-tertiary)`},children:`JSONL path`}),(0,N.jsxs)(`dd`,{style:{margin:0,fontFamily:`monospace`,display:`flex`,alignItems:`center`,gap:8},children:[(0,N.jsx)(`span`,{style:{wordBreak:`break-all`},children:i.jsonlPath??`—`}),i.jsonlPath&&(0,N.jsx)(`button`,{type:`button`,className:`icon-btn`,"aria-label":`Copy JSONL path`,onClick:()=>void D(`path`,i.jsonlPath),children:(0,N.jsx)(s,{size:12})})]}),k&&(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(`dt`,{style:{color:`var(--text-tertiary)`},children:`Session URL`}),(0,N.jsxs)(`dd`,{style:{margin:0,fontFamily:`monospace`,display:`flex`,alignItems:`center`,gap:8},children:[(0,N.jsx)(`span`,{style:{wordBreak:`break-all`},children:i.url??`—`}),i.url&&(0,N.jsx)(`button`,{type:`button`,className:`icon-btn`,"aria-label":`Copy URL`,onClick:()=>void D(`URL`,i.url),children:(0,N.jsx)(s,{size:12})})]}),(0,N.jsx)(`dt`,{style:{color:`var(--text-tertiary)`},children:`Channel`}),(0,N.jsx)(`dd`,{style:{margin:0},children:i.channel??`—`}),(0,N.jsx)(`dt`,{style:{color:`var(--text-tertiary)`},children:`Role`}),(0,N.jsx)(`dd`,{style:{margin:0},children:i.role??`—`}),(0,N.jsx)(`dt`,{style:{color:`var(--text-tertiary)`},children:`senderId`}),(0,N.jsx)(`dd`,{style:{margin:0,fontFamily:`monospace`},children:i.senderId||`—`})]})]})}),(0,N.jsxs)(`section`,{style:{display:`flex`,flexWrap:`wrap`,gap:8},children:[i.jsonlPath&&(0,N.jsxs)(`a`,{className:`icon-btn`,href:`vscode://file/${i.jsonlPath}`,title:`Open JSONL in VS Code`,style:{display:`inline-flex`,gap:6,padding:`6px 10px`,textDecoration:`none`},children:[(0,N.jsx)(d,{size:14}),` Open JSONL in editor`]}),k&&i.url&&(0,N.jsxs)(`button`,{type:`button`,className:`icon-btn`,style:{display:`inline-flex`,gap:6,padding:`6px 10px`},onClick:()=>window.open(i.url,`_blank`,`noopener,noreferrer`),children:[(0,N.jsx)(E,{size:14}),` Open in new tab`]}),(0,N.jsxs)(`button`,{type:`button`,className:`icon-btn`,disabled:!0,title:`Archive (deferred — Task 023 follow-up)`,style:{display:`inline-flex`,gap:6,padding:`6px 10px`,opacity:.5},children:[(0,N.jsx)(C,{size:14}),` Archive`]}),(0,N.jsxs)(`button`,{type:`button`,className:`icon-btn`,disabled:!0,title:`Pin (deferred — Task 023 follow-up)`,style:{display:`inline-flex`,gap:6,padding:`6px 10px`,opacity:.5},children:[(0,N.jsx)(j,{size:14}),` Pin`]})]}),S&&(0,N.jsx)(`div`,{style:{color:`var(--text-tertiary)`,fontSize:12},children:S}),u&&(0,N.jsx)(`div`,{style:{color:`var(--text-tertiary)`,fontSize:12},children:u})]})}function X(){let e=x(),t=S(e.cacheKey),[n,r]=(0,y.useState)(!1),[i,a]=(0,y.useState)(!1),[o,s]=(0,y.useState)(null);return e.appState===`loading`?(0,N.jsx)(`div`,{className:`connect-page`}):e.appState===`set-pin`?(0,N.jsx)(F,{pin:e.pin,setPin:e.setPin,confirmPin:e.confirmPin,setConfirmPin:e.setConfirmPin,showPin:e.showPin,setShowPin:e.setShowPin,pinLoading:e.pinLoading,pinError:e.pinError,pinInputRef:e.pinInputRef,confirmPinInputRef:e.confirmPinInputRef,setPinFormRef:e.setPinFormRef,onSubmit:e.handleSetPin,operatorName:e.operatorName,setOperatorName:e.setOperatorName}):e.appState===`onboarding-choice`?(0,N.jsx)(z,{setAppState:e.setAppState,setOnboardingComplete:e.setOnboardingComplete}):e.appState===`connect-claude`?(0,N.jsx)(R,{authPolling:e.authPolling,setAuthPolling:e.setAuthPolling,authLoading:e.authLoading,setAuthLoading:e.setAuthLoading,pinError:e.pinError,setPinError:e.setPinError,setAppState:e.setAppState}):e.appState===`enter-pin`?(0,N.jsx)(I,{pin:e.pin,setPin:e.setPin,showPin:e.showPin,setShowPin:e.setShowPin,pinLoading:e.pinLoading,pinError:e.pinError,pinInputRef:e.pinInputRef,onSubmit:e.handleLogin,onChangePin:e.handleChangePin,remoteAuthEnabled:e.remoteAuthEnabled,onSignOutRemote:e.handleLogout}):e.appState===`account-picker`?(0,N.jsx)(L,{accounts:e.accounts,loading:e.accountPickerLoading,error:e.pinError,onSelect:e.handleAccountSelect}):(0,N.jsxs)(`div`,{className:`platform${i?` menu-open`:``}${n?` sidebar-collapsed`:``}`,"data-artefact":`closed`,children:[(0,N.jsx)(B,{businessName:e.businessName,cacheKey:e.cacheKey,role:e.role,userName:e.userName,userAvatar:e.userAvatar,sessions:t.sessions,sessionsLoading:t.loading,sessionsError:t.error,ensureSessionsLoaded:t.ensureLoaded,refetchSessions:t.refetch,onSelectArtefact:e=>{},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:()=>a(!1),onSelectSession:s,selectedSessionId:o,collapsed:n,onToggleCollapsed:()=>r(e=>!e),mobileDrawerOpen:i,actions:{},recentsActions:{setSessions:t.setSessions,refetch:t.refetch}}),(0,N.jsx)(G,{}),o&&e.cacheKey?(0,N.jsx)(Y,{sessionId:o,cacheKey:e.cacheKey,onRenamed:()=>t.refetch(),onClose:()=>s(null)},o):(0,N.jsx)(`main`,{style:{display:`flex`,alignItems:`center`,justifyContent:`center`,color:`var(--text-tertiary)`,padding:24},children:`Select a session to see metadata.`})]})}(0,v.createRoot)(document.getElementById(`root`)).render((0,N.jsx)(X,{}));
|