@rubytech/create-realagent-code 0.1.10 → 0.1.12

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 (79) hide show
  1. package/package.json +1 -1
  2. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
  3. package/payload/platform/services/claude-session-manager/dist/http-server.js +63 -2
  4. package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
  5. package/payload/platform/services/claude-session-manager/dist/jsonl-enumerator.d.ts +18 -0
  6. package/payload/platform/services/claude-session-manager/dist/jsonl-enumerator.d.ts.map +1 -0
  7. package/payload/platform/services/claude-session-manager/dist/jsonl-enumerator.js +54 -0
  8. package/payload/platform/services/claude-session-manager/dist/jsonl-enumerator.js.map +1 -0
  9. package/payload/platform/services/claude-session-manager/dist/jsonl-path.d.ts +1 -0
  10. package/payload/platform/services/claude-session-manager/dist/jsonl-path.d.ts.map +1 -1
  11. package/payload/platform/services/claude-session-manager/dist/jsonl-path.js +11 -2
  12. package/payload/platform/services/claude-session-manager/dist/jsonl-path.js.map +1 -1
  13. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts +4 -0
  14. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
  15. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +4 -1
  16. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
  17. package/payload/server/public/assets/admin-Jg-kYJ64.js +1 -0
  18. package/payload/server/public/assets/{architectureDiagram-Q4EWVU46-Bct4jG1j.js → architectureDiagram-Q4EWVU46-C1Y8LkQn.js} +1 -1
  19. package/payload/server/public/assets/{blockDiagram-DXYQGD6D-zn8ue3S2.js → blockDiagram-DXYQGD6D-DVWDZ5Od.js} +1 -1
  20. package/payload/server/public/assets/brand-29DyfElX.js +1 -0
  21. package/payload/server/public/assets/{c4Diagram-AHTNJAMY-C3MR7lY8.js → c4Diagram-AHTNJAMY-BABaPulo.js} +1 -1
  22. package/payload/server/public/assets/channel-ClhfXesY.js +1 -0
  23. package/payload/server/public/assets/{chunk-336JU56O-BviPC2ns.js → chunk-336JU56O-D8PM_LLD.js} +2 -2
  24. package/payload/server/public/assets/{chunk-426QAEUC-B5AP0lw3.js → chunk-426QAEUC-CPoMPNv-.js} +1 -1
  25. package/payload/server/public/assets/{chunk-4TB4RGXK-D_5yEpyI.js → chunk-4TB4RGXK-DP7aaNeo.js} +1 -1
  26. package/payload/server/public/assets/{chunk-5FUZZQ4R-DtQgWry8.js → chunk-5FUZZQ4R-BcEh8cqP.js} +1 -1
  27. package/payload/server/public/assets/{chunk-5PVQY5BW-0iB7BcQs.js → chunk-5PVQY5BW-hlKOVg7k.js} +1 -1
  28. package/payload/server/public/assets/{chunk-EDXVE4YY-By_SKftv.js → chunk-EDXVE4YY-Clrj1-TK.js} +1 -1
  29. package/payload/server/public/assets/{chunk-ENJZ2VHE-B6eXRLp_.js → chunk-ENJZ2VHE-DZ5oQwfW.js} +1 -1
  30. package/payload/server/public/assets/{chunk-ICPOFSXX-D3mu_QMP.js → chunk-ICPOFSXX-DcYVBL08.js} +1 -1
  31. package/payload/server/public/assets/{chunk-OYMX7WX6-BhEkA_9E.js → chunk-OYMX7WX6-DYCm2d-j.js} +1 -1
  32. package/payload/server/public/assets/{chunk-U2HBQHQK-hKMtiQdr.js → chunk-U2HBQHQK-DlMSsedr.js} +1 -1
  33. package/payload/server/public/assets/{chunk-X2U36JSP-D4tzeDCu.js → chunk-X2U36JSP-BFgTiODq.js} +1 -1
  34. package/payload/server/public/assets/{chunk-YZCP3GAM-u59SS2iO.js → chunk-YZCP3GAM-Dl7Za-fK.js} +1 -1
  35. package/payload/server/public/assets/{chunk-ZZ45TVLE-DzWH1kRx.js → chunk-ZZ45TVLE-DKJc-jnu.js} +1 -1
  36. package/payload/server/public/assets/classDiagram-6PBFFD2Q-CNuIn78n.js +1 -0
  37. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-Cxc_1DZI.js +1 -0
  38. package/payload/server/public/assets/clone-BnZ9qP0T.js +1 -0
  39. package/payload/server/public/assets/{dagre-Dnic0bkL.js → dagre-BxZW6uVc.js} +1 -1
  40. package/payload/server/public/assets/{dagre-KV5264BT-B4IIvQKL.js → dagre-KV5264BT-DN0hRCmB.js} +1 -1
  41. package/payload/server/public/assets/{diagram-5BDNPKRD-DV8xzt2c.js → diagram-5BDNPKRD-BlN4_Net.js} +1 -1
  42. package/payload/server/public/assets/{diagram-G4DWMVQ6-ol2ugyvp.js → diagram-G4DWMVQ6-Dl3YdJ94.js} +1 -1
  43. package/payload/server/public/assets/{diagram-MMDJMWI5-BGPFvycg.js → diagram-MMDJMWI5-BhoYZ30j.js} +1 -1
  44. package/payload/server/public/assets/{diagram-TYMM5635-UOVJvvup.js → diagram-TYMM5635-CgD2xqpO.js} +1 -1
  45. package/payload/server/public/assets/{erDiagram-SMLLAGMA-EpVFi5BM.js → erDiagram-SMLLAGMA-D_4k-P_W.js} +1 -1
  46. package/payload/server/public/assets/{flowDiagram-DWJPFMVM-Dc7biN5E.js → flowDiagram-DWJPFMVM-C44HDuS2.js} +1 -1
  47. package/payload/server/public/assets/{ganttDiagram-T4ZO3ILL-CQmqgZrP.js → ganttDiagram-T4ZO3ILL-Iprqq6jm.js} +1 -1
  48. package/payload/server/public/assets/{gitGraphDiagram-UUTBAWPF-CX4B3k7d.js → gitGraphDiagram-UUTBAWPF-BNsuI5pf.js} +1 -1
  49. package/payload/server/public/assets/{graphlib-BViaSCgs.js → graphlib-00nEx5zd.js} +1 -1
  50. package/payload/server/public/assets/{infoDiagram-42DDH7IO-Bye6A9W0.js → infoDiagram-42DDH7IO-B05WrcQr.js} +1 -1
  51. package/payload/server/public/assets/{ishikawaDiagram-UXIWVN3A-DUexMULN.js → ishikawaDiagram-UXIWVN3A-Cjj-8sq-.js} +1 -1
  52. package/payload/server/public/assets/{journeyDiagram-VCZTEJTY-B5gJvZif.js → journeyDiagram-VCZTEJTY-CE4zSJ_e.js} +1 -1
  53. package/payload/server/public/assets/{kanban-definition-6JOO6SKY-CRxTppRU.js → kanban-definition-6JOO6SKY-vp1k55Vn.js} +1 -1
  54. package/payload/server/public/assets/{line-DrHsVsTS.js → line-DtgVCBmE.js} +1 -1
  55. package/payload/server/public/assets/{mermaid-parser.core-BKA2PkI8.js → mermaid-parser.core-BLkF5CWy.js} +1 -1
  56. package/payload/server/public/assets/{mermaid.core-BweQYenk.js → mermaid.core-D8Ai1Ihc.js} +3 -3
  57. package/payload/server/public/assets/{mindmap-definition-QFDTVHPH-DnorSK3z.js → mindmap-definition-QFDTVHPH-BBS2-egG.js} +1 -1
  58. package/payload/server/public/assets/{pieDiagram-DEJITSTG-Cb0U7ZMW.js → pieDiagram-DEJITSTG-D-YJ1TY9.js} +1 -1
  59. package/payload/server/public/assets/{public-BcEj4U-E.js → public-Dlu50BWH.js} +5 -5
  60. package/payload/server/public/assets/{quadrantDiagram-34T5L4WZ-BCf2q9mu.js → quadrantDiagram-34T5L4WZ-CG-vUnZ2.js} +1 -1
  61. package/payload/server/public/assets/{requirementDiagram-MS252O5E-BIsATw3M.js → requirementDiagram-MS252O5E-BU8DU7cT.js} +1 -1
  62. package/payload/server/public/assets/{sankeyDiagram-XADWPNL6-DS8Zhosk.js → sankeyDiagram-XADWPNL6-BD2Pv-fW.js} +1 -1
  63. package/payload/server/public/assets/{sequenceDiagram-FGHM5R23-BQlmzAZo.js → sequenceDiagram-FGHM5R23-BNf_xS4I.js} +1 -1
  64. package/payload/server/public/assets/{stateDiagram-FHFEXIEX-BULCX0Yb.js → stateDiagram-FHFEXIEX-KWX_egpr.js} +1 -1
  65. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-661rM-JV.js +1 -0
  66. package/payload/server/public/assets/{timeline-definition-GMOUNBTQ-_1Lzf2Mm.js → timeline-definition-GMOUNBTQ-CZlun2e8.js} +1 -1
  67. package/payload/server/public/assets/{vennDiagram-DHZGUBPP-BWcKQUi7.js → vennDiagram-DHZGUBPP-ChgSQa6t.js} +1 -1
  68. package/payload/server/public/assets/{wardleyDiagram-NUSXRM2D-DTqDWD4P.js → wardleyDiagram-NUSXRM2D-kwRFhj3v.js} +1 -1
  69. package/payload/server/public/assets/{xychartDiagram-5P7HB3ND-B369c_63.js → xychartDiagram-5P7HB3ND-JaRJKECe.js} +1 -1
  70. package/payload/server/public/index.html +2 -2
  71. package/payload/server/public/public.html +2 -2
  72. package/payload/server/server.js +30 -0
  73. package/payload/server/public/assets/admin-BWOb7xGA.js +0 -1
  74. package/payload/server/public/assets/brand-eKOaukUx.js +0 -1
  75. package/payload/server/public/assets/channel-BfWGDvqg.js +0 -1
  76. package/payload/server/public/assets/classDiagram-6PBFFD2Q-DpaYsOs7.js +0 -1
  77. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-CSgnTKWr.js +0 -1
  78. package/payload/server/public/assets/clone-3gLZvp8K.js +0 -1
  79. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-Biwe3nrz.js +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rubytech/create-realagent-code",
3
- "version": "0.1.10",
3
+ "version": "0.1.12",
4
4
  "description": "Install Real Agent — Built for agents. By agents.",
5
5
  "bin": {
6
6
  "create-realagent-code": "./dist/index.js"
@@ -1 +1 @@
1
- {"version":3,"file":"http-server.d.ts","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAI3B,OAAO,KAAK,EAAE,YAAY,EAAiB,MAAM,oBAAoB,CAAA;AACrE,OAAO,EAAqC,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAKpF,MAAM,WAAW,QAAS,SAAQ,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC;IACxD,KAAK,EAAE,YAAY,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,iBAAiB,EAAE,MAAM,CAAA;CAC1B;AAmBD,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CA0JjD"}
1
+ {"version":3,"file":"http-server.d.ts","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAI3B,OAAO,KAAK,EAAE,YAAY,EAAiB,MAAM,oBAAoB,CAAA;AACrE,OAAO,EAAqC,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAOpF,MAAM,WAAW,QAAS,SAAQ,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC;IACxD,KAAK,EAAE,YAAY,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,iBAAiB,EAAE,MAAM,CAAA;CAC1B;AAgCD,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAqNjD"}
@@ -19,6 +19,8 @@ import { Hono } from 'hono';
19
19
  import { stream } from 'hono/streaming';
20
20
  import { existsSync, statSync, createReadStream, watchFile, unwatchFile } from 'node:fs';
21
21
  import { spawnClaudeSession, deleteSession } from './pty-spawner.js';
22
+ import { listJsonlSessions } from './jsonl-enumerator.js';
23
+ import { claudeSessionIdFromUrl } from './jsonl-path.js';
22
24
  const ROLES = ['admin', 'public'];
23
25
  const CHANNELS = ['browser', 'whatsapp', 'telegram', 'webchat', 'email'];
24
26
  function toSessionPayload(s) {
@@ -31,6 +33,7 @@ function toSessionPayload(s) {
31
33
  role: s.role,
32
34
  channel: s.channel,
33
35
  jsonlPath: s.jsonlPath,
36
+ status: 'alive',
34
37
  };
35
38
  }
36
39
  function timed(logger, method, path, status, ms) {
@@ -70,9 +73,67 @@ export function buildHttpApp(deps) {
70
73
  timed(deps.logger, 'GET', '/list', 400, Date.now() - start);
71
74
  return c.json({ error: 'senderId-required' }, 400);
72
75
  }
73
- const out = deps.store.listBySender(senderId).map(toSessionPayload);
76
+ // Task 018 — merge in-memory live sessions with JSONL transcripts on
77
+ // disk so the list survives a manager restart. Live entries take
78
+ // precedence on duplicate claudeSessionId.
79
+ const live = deps.store.listBySender(senderId).map(toSessionPayload);
80
+ const liveClaudeIds = new Set();
81
+ for (const s of live) {
82
+ if (s.url) {
83
+ const cid = claudeSessionIdFromUrl(s.url);
84
+ if (cid)
85
+ liveClaudeIds.add(cid);
86
+ }
87
+ }
88
+ const dehydrated = [];
89
+ for (const j of listJsonlSessions(deps.spawnCwd)) {
90
+ if (liveClaudeIds.has(j.claudeSessionId))
91
+ continue;
92
+ dehydrated.push({
93
+ sessionId: j.claudeSessionId,
94
+ pid: null,
95
+ url: null,
96
+ startedAt: j.startedAt,
97
+ senderId,
98
+ role: null,
99
+ channel: null,
100
+ jsonlPath: j.jsonlPath,
101
+ status: 'ended',
102
+ });
103
+ }
104
+ deps.logger(`list-source live=${live.length} jsonl=${dehydrated.length}`);
105
+ const merged = [...live, ...dehydrated];
106
+ merged.sort((a, b) => (a.startedAt < b.startedAt ? 1 : -1));
74
107
  timed(deps.logger, 'GET', '/list', 200, Date.now() - start);
75
- return c.json(out, 200);
108
+ return c.json(merged, 200);
109
+ });
110
+ app.post('/resume', async (c) => {
111
+ const start = Date.now();
112
+ let body;
113
+ try {
114
+ body = await c.req.json();
115
+ }
116
+ catch {
117
+ timed(deps.logger, 'POST', '/resume', 400, Date.now() - start);
118
+ return c.json({ error: 'body-not-json' }, 400);
119
+ }
120
+ const senderId = typeof body.senderId === 'string' ? body.senderId : '';
121
+ const role = typeof body.role === 'string' ? body.role : '';
122
+ const channel = typeof body.channel === 'string' ? body.channel : '';
123
+ const claudeSessionId = typeof body.claudeSessionId === 'string' ? body.claudeSessionId : '';
124
+ if (!senderId || !ROLES.includes(role) || !CHANNELS.includes(channel) || !claudeSessionId) {
125
+ timed(deps.logger, 'POST', '/resume', 400, Date.now() - start);
126
+ return c.json({ error: 'invalid-arguments' }, 400);
127
+ }
128
+ const result = await spawnClaudeSession({ ...deps, store: deps.store }, { senderId, role: role, channel: channel, resumeClaudeSessionId: claudeSessionId });
129
+ if (!result.ok) {
130
+ deps.logger(`resume-failed reason=${result.reason} resumeFrom=${claudeSessionId}`);
131
+ timed(deps.logger, 'POST', '/resume', 500, Date.now() - start);
132
+ return c.json({ error: 'resume-failed', reason: result.reason }, 500);
133
+ }
134
+ deps.logger(`resume pid=${result.session.pid} sessionUrl=${result.session.url} resumeFrom=${claudeSessionId} latency-ms=${Date.now() - start}`);
135
+ timed(deps.logger, 'POST', '/resume', 200, Date.now() - start);
136
+ return c.json(toSessionPayload(result.session), 200);
76
137
  });
77
138
  app.delete('/:sessionId', async (c) => {
78
139
  const start = Date.now();
@@ -1 +1 @@
1
- {"version":3,"file":"http-server.js","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http-server.js","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export interface DehydratedSession {
2
+ /** Claude session id (basename of the JSONL file, no extension). */
3
+ claudeSessionId: string;
4
+ /** Absolute path of the JSONL on disk. */
5
+ jsonlPath: string;
6
+ /** mtime of the JSONL, ISO-8601. Newest write wins as the row's startedAt. */
7
+ startedAt: string;
8
+ /** Byte size of the JSONL, for ordering tiebreaker and operator surfaces. */
9
+ sizeBytes: number;
10
+ }
11
+ /**
12
+ * List every JSONL file under `~/.claude/projects/<slug>/` where `<slug>`
13
+ * is derived from the manager's spawnCwd. Returns newest-first by mtime.
14
+ * Returns an empty array when the projects directory does not yet exist
15
+ * (no sessions have ever been spawned).
16
+ */
17
+ export declare function listJsonlSessions(spawnCwd: string): DehydratedSession[];
18
+ //# sourceMappingURL=jsonl-enumerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonl-enumerator.d.ts","sourceRoot":"","sources":["../src/jsonl-enumerator.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,iBAAiB;IAChC,oEAAoE;IACpE,eAAe,EAAE,MAAM,CAAA;IACvB,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAA;IACjB,8EAA8E;IAC9E,SAAS,EAAE,MAAM,CAAA;IACjB,6EAA6E;IAC7E,SAAS,EAAE,MAAM,CAAA;CAClB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,EAAE,CA0BvE"}
@@ -0,0 +1,54 @@
1
+ // Enumerate ended sessions from claude's per-session JSONL transcripts on
2
+ // disk. Claude writes `${CLAUDE_CONFIG_DIR or ~/.claude}/projects/<slug>/<id>.jsonl`
3
+ // for every session it spawns (see `jsonl-path.ts` for the path derivation,
4
+ // which now honours CLAUDE_CONFIG_DIR for brand isolation per Task 019).
5
+ // After the manager restarts, every prior session lives in this directory
6
+ // even though the in-memory SessionStore is empty. This enumerator surfaces
7
+ // those files so the sidebar list survives restarts and the Resume action
8
+ // has something to bind to.
9
+ //
10
+ // The enumerator does NOT parse JSONL content — only basename, mtime, and
11
+ // size. Parsing is the UI's job via GET /:sessionId/log when the operator
12
+ // opens a row.
13
+ import { existsSync, readdirSync, statSync } from 'node:fs';
14
+ import { join } from 'node:path';
15
+ import { claudeStateRoot, projectSlugForCwd } from './jsonl-path.js';
16
+ /**
17
+ * List every JSONL file under `~/.claude/projects/<slug>/` where `<slug>`
18
+ * is derived from the manager's spawnCwd. Returns newest-first by mtime.
19
+ * Returns an empty array when the projects directory does not yet exist
20
+ * (no sessions have ever been spawned).
21
+ */
22
+ export function listJsonlSessions(spawnCwd) {
23
+ const slug = projectSlugForCwd(spawnCwd);
24
+ const projectsDir = join(claudeStateRoot(), 'projects', slug);
25
+ if (!existsSync(projectsDir))
26
+ return [];
27
+ const out = [];
28
+ for (const entry of readdirSync(projectsDir, { withFileTypes: true })) {
29
+ if (!entry.isFile())
30
+ continue;
31
+ if (!entry.name.endsWith('.jsonl'))
32
+ continue;
33
+ const claudeSessionId = entry.name.slice(0, -'.jsonl'.length);
34
+ if (!claudeSessionId)
35
+ continue;
36
+ const jsonlPath = join(projectsDir, entry.name);
37
+ let stat;
38
+ try {
39
+ stat = statSync(jsonlPath);
40
+ }
41
+ catch {
42
+ continue;
43
+ }
44
+ out.push({
45
+ claudeSessionId,
46
+ jsonlPath,
47
+ startedAt: stat.mtime.toISOString(),
48
+ sizeBytes: stat.size,
49
+ });
50
+ }
51
+ out.sort((a, b) => (a.startedAt < b.startedAt ? 1 : -1));
52
+ return out;
53
+ }
54
+ //# sourceMappingURL=jsonl-enumerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonl-enumerator.js","sourceRoot":"","sources":["../src/jsonl-enumerator.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,qFAAqF;AACrF,4EAA4E;AAC5E,yEAAyE;AACzE,0EAA0E;AAC1E,4EAA4E;AAC5E,0EAA0E;AAC1E,4BAA4B;AAC5B,EAAE;AACF,0EAA0E;AAC1E,0EAA0E;AAC1E,eAAe;AAEf,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAapE;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,MAAM,IAAI,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAA;IACxC,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,CAAA;IAC7D,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,EAAE,CAAA;IACvC,MAAM,GAAG,GAAwB,EAAE,CAAA;IACnC,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACtE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YAAE,SAAQ;QAC7B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,SAAQ;QAC5C,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QAC7D,IAAI,CAAC,eAAe;YAAE,SAAQ;QAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;QAC/C,IAAI,IAAI,CAAA;QACR,IAAI,CAAC;YACH,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAA;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,SAAQ;QACV,CAAC;QACD,GAAG,CAAC,IAAI,CAAC;YACP,eAAe;YACf,SAAS;YACT,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;YACnC,SAAS,EAAE,IAAI,CAAC,IAAI;SACrB,CAAC,CAAA;IACJ,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACxD,OAAO,GAAG,CAAA;AACZ,CAAC"}
@@ -1,3 +1,4 @@
1
+ export declare function claudeStateRoot(env?: NodeJS.ProcessEnv): string;
1
2
  export declare function projectSlugForCwd(cwd: string): string;
2
3
  export declare function claudeSessionIdFromUrl(url: string): string | null;
3
4
  export declare function deriveJsonlPath(cwd: string, url: string): string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"jsonl-path.d.ts","sourceRoot":"","sources":["../src/jsonl-path.ts"],"names":[],"mappings":"AAkBA,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGjE;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKvE"}
1
+ {"version":3,"file":"jsonl-path.d.ts","sourceRoot":"","sources":["../src/jsonl-path.ts"],"names":[],"mappings":"AAwBA,wBAAgB,eAAe,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAE5E;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGjE;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKvE"}
@@ -2,18 +2,27 @@
2
2
  //
3
3
  // Claude Code writes one JSONL file per session at
4
4
  //
5
- // ~/.claude/projects/<project-slug>/<claude-session-id>.jsonl
5
+ // ${CLAUDE_CONFIG_DIR or ~/.claude}/projects/<project-slug>/<claude-session-id>.jsonl
6
6
  //
7
7
  // where <project-slug> is the cwd at spawn time with every '/' replaced
8
8
  // by '-' (leading slash included, so /home/foo becomes -home-foo), and
9
9
  // <claude-session-id> is the UUID encoded into the /remote-control URL
10
10
  // after the `session_` prefix.
11
11
  //
12
+ // Task 019 set CLAUDE_CONFIG_DIR on the manager unit so brand isolation
13
+ // holds for credentials and onboarding state. claude honours that env var
14
+ // for ALL of its on-disk state, including the projects/ directory, so the
15
+ // JSONL path must read CLAUDE_CONFIG_DIR too. Hardcoding `~/.claude/`
16
+ // missed every JSONL written after Task 019 deployed.
17
+ //
12
18
  // The PRD names this file as the canonical per-session forensic surface;
13
19
  // the manager records the path on every spawn so the operator can
14
20
  // `tail -f` it directly.
15
21
  import { homedir } from 'node:os';
16
22
  import { join } from 'node:path';
23
+ export function claudeStateRoot(env = process.env) {
24
+ return env.CLAUDE_CONFIG_DIR ?? join(homedir(), '.claude');
25
+ }
17
26
  export function projectSlugForCwd(cwd) {
18
27
  return cwd.replace(/\//g, '-');
19
28
  }
@@ -26,6 +35,6 @@ export function deriveJsonlPath(cwd, url) {
26
35
  if (!claudeId)
27
36
  return null;
28
37
  const slug = projectSlugForCwd(cwd);
29
- return join(homedir(), '.claude', 'projects', slug, `${claudeId}.jsonl`);
38
+ return join(claudeStateRoot(), 'projects', slug, `${claudeId}.jsonl`);
30
39
  }
31
40
  //# sourceMappingURL=jsonl-path.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"jsonl-path.js","sourceRoot":"","sources":["../src/jsonl-path.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,EAAE;AACF,mDAAmD;AACnD,EAAE;AACF,kEAAkE;AAClE,EAAE;AACF,wEAAwE;AACxE,uEAAuE;AACvE,uEAAuE;AACvE,+BAA+B;AAC/B,EAAE;AACF,yEAAyE;AACzE,kEAAkE;AAClE,yBAAyB;AAEzB,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;AAChC,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,GAAW;IAChD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAA;IACnD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AAChC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAAW,EAAE,GAAW;IACtD,MAAM,QAAQ,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAA;IAC5C,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAA;IAC1B,MAAM,IAAI,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAA;IACnC,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,QAAQ,QAAQ,CAAC,CAAA;AAC1E,CAAC"}
1
+ {"version":3,"file":"jsonl-path.js","sourceRoot":"","sources":["../src/jsonl-path.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,EAAE;AACF,mDAAmD;AACnD,EAAE;AACF,0FAA0F;AAC1F,EAAE;AACF,wEAAwE;AACxE,uEAAuE;AACvE,uEAAuE;AACvE,+BAA+B;AAC/B,EAAE;AACF,wEAAwE;AACxE,0EAA0E;AAC1E,0EAA0E;AAC1E,sEAAsE;AACtE,sDAAsD;AACtD,EAAE;AACF,yEAAyE;AACzE,kEAAkE;AAClE,yBAAyB;AAEzB,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,MAAM,UAAU,eAAe,CAAC,MAAyB,OAAO,CAAC,GAAG;IAClE,OAAO,GAAG,CAAC,iBAAiB,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAA;AAC5D,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;AAChC,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,GAAW;IAChD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAA;IACnD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AAChC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAAW,EAAE,GAAW;IACtD,MAAM,QAAQ,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAA;IAC5C,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAA;IAC1B,MAAM,IAAI,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAA;IACnC,OAAO,IAAI,CAAC,eAAe,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,QAAQ,QAAQ,CAAC,CAAA;AACvE,CAAC"}
@@ -20,6 +20,10 @@ export interface SpawnArgs {
20
20
  senderId: string;
21
21
  role: Role;
22
22
  channel: Channel;
23
+ /** Optional claude session id to resume. When set, the manager appends
24
+ * `--resume <id>` to the argv so claude rehydrates the prior JSONL into
25
+ * the new PTY. Task 018. */
26
+ resumeClaudeSessionId?: string;
23
27
  }
24
28
  export declare function spawnClaudeSession(deps: SpawnDeps, args: SpawnArgs): Promise<SpawnResult>;
25
29
  export interface DeleteDeps {
@@ -1 +1 @@
1
- {"version":3,"file":"pty-spawner.d.ts","sourceRoot":"","sources":["../src/pty-spawner.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAElE,OAAO,EAAE,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAGrE,MAAM,MAAM,WAAW,GACnB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,aAAa,CAAA;CAAE,GACpC;IACE,EAAE,EAAE,KAAK,CAAA;IACT,MAAM,EAAE,wBAAwB,GAAG,kBAAkB,GAAG,qBAAqB,CAAA;IAC7E,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAEL,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,KAAK,SAAS,CAAA;IAC5E,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,YAAY,CAAA;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,IAAI,CAAA;IACV,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAuD/F;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,YAAY,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;CACf;AAED,wBAAsB,aAAa,CACjC,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAqBzC"}
1
+ {"version":3,"file":"pty-spawner.d.ts","sourceRoot":"","sources":["../src/pty-spawner.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAElE,OAAO,EAAE,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAGrE,MAAM,MAAM,WAAW,GACnB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,aAAa,CAAA;CAAE,GACpC;IACE,EAAE,EAAE,KAAK,CAAA;IACT,MAAM,EAAE,wBAAwB,GAAG,kBAAkB,GAAG,qBAAqB,CAAA;IAC7E,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAEL,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,KAAK,SAAS,CAAA;IAC5E,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,YAAY,CAAA;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,IAAI,CAAA;IACV,OAAO,EAAE,OAAO,CAAA;IAChB;;gCAE4B;IAC5B,qBAAqB,CAAC,EAAE,MAAM,CAAA;CAC/B;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CA0D/F;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,YAAY,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;CACf;AAED,wBAAsB,aAAa,CACjC,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAqBzC"}
@@ -15,9 +15,12 @@ export async function spawnClaudeSession(deps, args) {
15
15
  const sessionId = randomUUID();
16
16
  const startedAt = new Date().toISOString();
17
17
  const start = Date.now();
18
+ const argv = args.resumeClaudeSessionId
19
+ ? ['--verbose', '--remote-control', '--resume', args.resumeClaudeSessionId]
20
+ : ['--verbose', '--remote-control'];
18
21
  let pty;
19
22
  try {
20
- pty = deps.spawnPty(deps.claudeBin, ['--verbose', '--remote-control'], {
23
+ pty = deps.spawnPty(deps.claudeBin, argv, {
21
24
  ...process.env,
22
25
  TERM: 'xterm-256color',
23
26
  });
@@ -1 +1 @@
1
- {"version":3,"file":"pty-spawner.js","sourceRoot":"","sources":["../src/pty-spawner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pty-spawner.js","sourceRoot":"","sources":["../src/pty-spawner.ts"],"names":[],"mappings":"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"}
@@ -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-LncohCxF.js";import{a as o,i as s,o as c,s as l,t as u}from"./brand-29DyfElX.js";import{t as d}from"./loader-circle-DwwVih2K.js";import{n as f,t as p}from"./refresh-cw-Ho-xY4LQ.js";import{t as m}from"./Checkbox-D5bsL5IO.js";var h=n(),g=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 _(e){switch(e){case`expanded`:return!0;case`collapsed`:return!1;default:return}}function v(){let[e,t]=(0,g.useState)(`loading`),[n,r]=(0,g.useState)(``),[i,a]=(0,g.useState)(``),[o,s]=(0,g.useState)(``),[c,l]=(0,g.useState)(``),[u,d]=(0,g.useState)(!1),[f,p]=(0,g.useState)(!1),[m,h]=(0,g.useState)(!1),[v,y]=(0,g.useState)(!1),[ee,b]=(0,g.useState)(!1),[te,x]=(0,g.useState)(null),[ne,S]=(0,g.useState)(null),[C,w]=(0,g.useState)(void 0),[re,T]=(0,g.useState)(void 0),[E,D]=(0,g.useState)(null),[O,k]=(0,g.useState)(void 0),[A,j]=(0,g.useState)(null),[ie,M]=(0,g.useState)(null),[N,P]=(0,g.useState)([]),[F,I]=(0,g.useState)(!1),[ae,L]=(0,g.useState)(void 0),R=(0,g.useRef)(void 0),[z,B]=(0,g.useState)(!1);(0,g.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&&B(!0)}).catch(()=>{})},[]);let oe=(0,g.useRef)(null),V=(0,g.useRef)(null),se=(0,g.useRef)(null);(0,g.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();x(r.session_key),M(r.conversationId??null),w(r.onboardingComplete),T(r.businessName),D(r.role??null),k(r.userName===void 0?null:r.userName),j(r.avatar??null);let i=_(r.thinkingView);return R.current=i,L(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,g.useEffect)(()=>{e===`chat`&&fetch(`/api/admin/claude-info`).then(e=>{if(e.ok)return e.json()}).then(e=>{e&&S(e)}).catch(()=>{})},[e]),(0,g.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,g.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 H(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}`),P(o.accounts),t(`account-picker`);return}x(o.session_key),M(o.conversationId??null),w(o.onboardingComplete??!0),T(o.businessName),D(o.role??null),k(o.userName===void 0?null:o.userName),j(o.avatar??null);let s=_(o.thinkingView);if(R.current=s,L(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),I(!1)}}let U=(0,g.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 H(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]),W=(0,g.useCallback)(async e=>{e.preventDefault(),l(``),await H(n)},[n]),G=(0,g.useCallback)(async()=>{b(!0);try{await fetch(`/api/onboarding/claude-auth`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({action:`logout`})}),x(null),D(null),k(void 0),j(null);try{sessionStorage.removeItem(`maxy-admin-session-key`)}catch{}t(`connect-claude`)}finally{b(!1)}},[]),K=(0,g.useCallback)(()=>{x(null),D(null),k(void 0),j(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:v,setAuthLoading:y,disconnecting:ee,cacheKey:te,setCacheKey:x,claudeInfo:ne,setClaudeInfo:S,onboardingComplete:C,setOnboardingComplete:w,businessName:re,role:E,userName:O,userAvatar:A,conversationId:ie,setConversationId:M,accounts:N,accountPickerLoading:F,expandAll:ae,setExpandAll:L,expandAllDefaultRef:R,remoteAuthEnabled:z,pinInputRef:oe,confirmPinInputRef:V,setPinFormRef:se,handleSetPin:U,handleLogin:W,handleAccountSelect:(0,g.useCallback)(async e=>{I(!0),l(``),await H(n,e)},[n]),handleDisconnect:G,handleLogout:K,handleChangePin:(0,g.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 y(e){let[t,n]=(0,g.useState)([]),[r,i]=(0,g.useState)(!1),[a,o]=(0,g.useState)(null),[s,c]=(0,g.useState)(null),l=(0,g.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,g.useEffect)(()=>{e||(c(null),n([]),o(null))},[e]);let u=(0,g.useCallback)(()=>l(!1),[l]),d=(0,g.useCallback)(()=>l(!0),[l]),f=(0,g.useRef)(d);return(0,g.useEffect)(()=>{f.current=d},[d]),(0,g.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 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`}]]),b=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`}]]),te=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`}]]),x=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`}]]),ne=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`}]]),S=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`}]]),C=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`}]]),w=i(`terminal`,[[`path`,{d:`M12 19h8`,key:`baeox8`}],[`path`,{d:`m4 17 6-6-6-6`,key:`1yngyt`}]]),re=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`}]]),T=a();function E({inputRef:e,value:t,onChange:n,onComplete:r,showPin:i,autoFocus:a}){let o=(0,g.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,T.jsx)(`div`,{className:`pin-field`,children:Array.from({length:6}).map((n,r)=>(0,T.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 D(e){let{pin:t,setPin:n,confirmPin:r,setConfirmPin:i,showPin:a,setShowPin:c,pinLoading:l,pinError:d,pinInputRef:f,confirmPinInputRef:p,setPinFormRef:h,onSubmit:g,operatorName:_,setOperatorName:v}=e;return(0,T.jsx)(`div`,{className:`connect-page`,children:(0,T.jsxs)(`div`,{className:`connect-content`,children:[(0,T.jsx)(`img`,{src:s,alt:u.productName,className:`connect-logo connect-logo--maxy`}),!u.logoContainsName&&(0,T.jsxs)(`h1`,{className:`connect-title`,children:[`Welcome to `,u.productName]}),(0,T.jsxs)(`p`,{className:`connect-subtitle`,children:[`Tell `,u.productName,` who you are, then choose a PIN.`]}),(0,T.jsxs)(`form`,{ref:h,onSubmit:g,className:`connect-pin-form`,children:[(0,T.jsxs)(`div`,{className:`pin-input-row`,children:[(0,T.jsx)(`input`,{type:`text`,className:`connect-name-input`,placeholder:`Your full name`,value:_,onChange:e=>v(e.target.value),autoComplete:`name`,autoFocus:!0,required:!0,"aria-label":`Your full name`}),(0,T.jsx)(`div`,{style:{width:38,flexShrink:0},"aria-hidden":`true`})]}),(0,T.jsxs)(`div`,{className:`pin-input-row`,children:[(0,T.jsx)(E,{inputRef:f,value:t,onChange:n,onComplete:()=>p.current?.focus(),showPin:a}),(0,T.jsx)(`div`,{style:{width:38,flexShrink:0},"aria-hidden":`true`})]}),(0,T.jsxs)(`div`,{className:`pin-input-row`,children:[(0,T.jsx)(E,{inputRef:p,value:r,onChange:i,onComplete:()=>{},showPin:a}),(0,T.jsx)(o,{variant:`send`,type:`submit`,disabled:!t||!r||!_.trim(),loading:l,"aria-label":`Set PIN`,children:(0,T.jsxs)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,T.jsx)(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`}),(0,T.jsx)(`polyline`,{points:`12 5 19 12 12 19`})]})})]}),(0,T.jsx)(m,{checked:a,onChange:()=>c(e=>!e),label:`Show PIN`})]}),d&&(0,T.jsx)(`p`,{className:`admin-pin-error`,children:d})]})})}function O(e){let{pin:t,setPin:n,showPin:r,setShowPin:i,pinLoading:a,pinError:c,pinInputRef:l,onSubmit:d,onChangePin:f,remoteAuthEnabled:p,onSignOutRemote:h}=e;return(0,T.jsxs)(`div`,{className:`connect-page`,children:[p&&h&&(0,T.jsx)(`button`,{type:`button`,className:`connect-signout`,onClick:h,children:`Sign out`}),(0,T.jsxs)(`div`,{className:`connect-content`,children:[(0,T.jsx)(`img`,{src:s,alt:u.productName,className:`connect-logo connect-logo--maxy`}),!u.logoContainsName&&(0,T.jsx)(`h1`,{className:`connect-title`,children:u.productName}),(0,T.jsxs)(`form`,{onSubmit:d,className:`connect-pin-form`,children:[(0,T.jsxs)(`div`,{className:`pin-input-row`,children:[(0,T.jsx)(E,{inputRef:l,value:t,onChange:n,onComplete:()=>{},showPin:r,autoFocus:!0}),(0,T.jsx)(o,{variant:`send`,type:`submit`,disabled:!t,loading:a,children:(0,T.jsxs)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,T.jsx)(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`}),(0,T.jsx)(`polyline`,{points:`12 5 19 12 12 19`})]})})]}),(0,T.jsxs)(`div`,{className:`pin-options`,children:[(0,T.jsx)(m,{checked:r,onChange:()=>i(e=>!e),label:`Show PIN`}),(0,T.jsx)(o,{type:`button`,variant:`ghost`,onClick:f,children:`Change PIN`})]})]}),c&&(0,T.jsx)(`p`,{className:`admin-pin-error`,children:c})]})]})}function k(e){let{accounts:t,loading:n,error:r,onSelect:i}=e;return(0,T.jsx)(`div`,{className:`connect-page`,children:(0,T.jsxs)(`div`,{className:`connect-content`,children:[(0,T.jsx)(`img`,{src:s,alt:u.productName,className:`connect-logo connect-logo--maxy`}),!u.logoContainsName&&(0,T.jsx)(`h1`,{className:`connect-title`,children:u.productName}),(0,T.jsx)(`p`,{className:`connect-subtitle`,children:`Select an account`}),(0,T.jsx)(`div`,{className:`account-picker-list`,children:t.map(e=>(0,T.jsxs)(`button`,{className:`account-picker-card`,onClick:()=>i(e.accountId),disabled:n,type:`button`,children:[(0,T.jsx)(`span`,{className:`account-picker-name`,children:e.businessName||e.accountId}),(0,T.jsx)(`span`,{className:`account-picker-role`,children:e.role}),n&&(0,T.jsx)(d,{className:`account-picker-spinner`,size:16})]},e.accountId))}),r&&(0,T.jsx)(`p`,{className:`admin-pin-error`,children:r})]})})}function A(e){let{authPolling:t,setAuthPolling:n,authLoading:r,setAuthLoading:i,pinError:a,setPinError:c,setAppState:l}=e,[d,f]=(0,g.useState)(!1),[p,m]=(0,g.useState)(!1);async function h(){m(!0),c(``);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?f(!0):e.error&&c(e.error)}catch(e){console.error(`[admin] browser launch error:`,e),c(`Could not launch browser.`)}m(!1)}async function _(){i(!0),c(``);try{let e=await(await fetch(`/api/onboarding/claude-auth`,{method:`POST`})).json();if(e.started){n(!0),f(!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}c(`Timed out waiting for sign-in. Try again.`),n(!1)}else e.error&&c(e.error)}catch(e){console.error(`[admin] auth flow error:`,e),c(`Could not start auth flow.`)}i(!1)}async function v(){await fetch(`/api/onboarding/claude-auth`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({action:`stop`})}),n(!1),c(``)}return t||d?(0,T.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,height:`100dvh`,overflow:`auto`},children:[(0,T.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,T.jsx)(`button`,{onClick:v,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,T.jsx)(`button`,{onClick:()=>f(!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,T.jsx)(`img`,{src:`/brand/claude.png`,alt:`Claude`,className:`chat-logo`}),(0,T.jsx)(`h1`,{className:`chat-tagline`,children:`Connect Claude`}),(0,T.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,T.jsx)(`div`,{style:{marginTop:`12px`},children:(0,T.jsx)(o,{variant:`primary`,onClick:_,disabled:r,children:r?(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(`span`,{className:`spin`,style:{display:`inline-block`},children:`✱`}),` Connecting…`]}):`Sign in to Claude`})})]}),(0,T.jsx)(`div`,{style:{flex:1,display:`flex`,flexDirection:`column`,minHeight:0,gap:`10px`,padding:`0 0 16px`},children:(0,T.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,T.jsx)(`p`,{className:`admin-pin-error`,style:{textAlign:`center`,padding:`0 20px 16px`},children:a})]}):(0,T.jsxs)(`div`,{className:`connect-page`,children:[(0,T.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,T.jsxs)(`div`,{className:`connect-content`,children:[(0,T.jsxs)(`div`,{className:`connect-logos`,children:[(0,T.jsx)(`div`,{className:`connect-logo-wrap`,children:(0,T.jsx)(`img`,{src:`/brand/claude.png`,alt:`Claude`,className:`connect-logo`})}),(0,T.jsx)(`svg`,{className:`connect-arrow`,viewBox:`0 0 48 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,children:(0,T.jsx)(`path`,{d:`M0 12h44m0 0l-8-8m8 8l-8 8`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`})}),(0,T.jsxs)(`div`,{className:`connect-logo-wrap`,children:[(0,T.jsx)(`img`,{src:s,alt:u.productName,className:`connect-logo connect-logo--maxy`}),!u.logoContainsName&&(0,T.jsx)(`span`,{className:`connect-logo-label`,children:u.productName})]})]}),(0,T.jsxs)(`h1`,{className:`connect-title`,children:[`Connect Claude to power `,u.productName]}),(0,T.jsx)(`p`,{className:`connect-subtitle`,children:`Sign in with your Anthropic account to get started.`}),(0,T.jsx)(o,{variant:`primary`,onClick:_,disabled:r,children:r?(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(`span`,{className:`spin`,style:{display:`inline-block`},children:`✱`}),` Connecting…`]}):`Sign in to Claude`}),(0,T.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,T.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,T.jsx)(`p`,{className:`admin-pin-error`,children:a})]})]})}function j({setAppState:e,setOnboardingComplete:t}){let[n,r]=(0,g.useState)(!1),[i,a]=(0,g.useState)(``);async function c(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,T.jsx)(`div`,{className:`connect-page`,children:(0,T.jsxs)(`div`,{className:`connect-content`,children:[(0,T.jsxs)(`div`,{className:`connect-logo-wrap`,children:[(0,T.jsx)(`img`,{src:s,alt:u.productName,className:`connect-logo connect-logo--maxy`}),!u.logoContainsName&&(0,T.jsx)(`span`,{className:`connect-logo-label`,children:u.productName})]}),(0,T.jsx)(`h1`,{className:`connect-title`,children:`How would you like to get started?`}),(0,T.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,T.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`10px`,width:`100%`,maxWidth:`320px`,alignItems:`center`},children:[(0,T.jsx)(o,{variant:`primary`,onClick:()=>c(`default`),disabled:n,children:n?`Applying defaults…`:`Use defaults`}),(0,T.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,T.jsx)(`button`,{onClick:()=>c(`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,T.jsx)(`p`,{className:`connect-subtitle`,style:{marginTop:`12px`},children:`You can change any setting later through conversation.`}),i&&(0,T.jsx)(`p`,{className:`admin-pin-error`,children:i})]})})}var ie=(()=>null),M=(0,g.forwardRef)(function(e,t){let{businessName:n,cacheKey:i,role:a,userName:o,userAvatar:s,sessions:m,sessionsLoading:h,sessionsError:_,ensureSessionsLoaded:v,refetchSessions:y,onSelectArtefact:E,onSelectProjects:D,onSelectPeople:O,onSelectTasks:k,onSelectAgents:A,onCloseMobileDrawer:j,collapsed:M,onToggleCollapsed:N,mobileDrawerOpen:P,actions:F,recentsActions:I}=e;(0,g.useEffect)(()=>{v()},[v]);let ae=(0,g.useRef)(null),[L,R]=(0,g.useState)(!1),[z,B]=(0,g.useState)(null),oe=u.productName,V=typeof o==`string`?o:o===null?`name unavailable`:n||oe,se=(V.trim().charAt(0)||`?`).toUpperCase(),H=m,U=H.length,[W,G]=(0,g.useState)(`chat`),[K,ce]=(0,g.useState)([]),[q,le]=(0,g.useState)(!1),[J,ue]=(0,g.useState)(null),[de,fe]=(0,g.useState)(!1);(0,g.useImperativeHandle)(t,()=>({patchArtefact(e,t){ce(n=>n.map(n=>n.id===e?{...n,...t}:n))}}),[]);let[Y,X]=(0,g.useState)(!1),Z=(0,g.useRef)(null);(0,g.useEffect)(()=>{if(!Y)return;function e(e){Z.current&&!Z.current.contains(e.target)&&X(!1)}return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[Y]);let pe=(0,g.useCallback)(async()=>{if(i){fe(!0),ue(null);try{let e=await fetch(`/api/admin/sidebar-artefacts?session_key=${encodeURIComponent(i)}`);if(!e.ok)throw Error(`status ${e.status}`);ce((await e.json()).artefacts??[]),le(!0)}catch(e){let t=e instanceof Error?e.message:String(e);ue(`Failed to load artefacts: ${t}`),console.error(`[admin-ui] sidebar-artefacts fetch failed: ${t}`)}finally{fe(!1)}}},[i]),me=()=>{G(`chat`),console.info(`[admin-ui] sidebar-nav surface=sessions count=${U}`)},he=()=>{G(`artefacts`),console.info(`[admin-ui] sidebar-nav surface=artefacts count=${q?K.length:0} collapsed=${M}`),M&&N(),q||pe()},Q=M?24:16,$=W===`chat`?`Sessions`:`Artefacts`,ge=W===`chat`?h?`…`:String(U):de?`…`:String(K.length),_e=W===`chat`?h:de,ve=()=>{W===`chat`?y():pe(),console.info(`[admin-ui] sidebar-refresh surface=${W}`)},ye=(0,g.useCallback)(async()=>{if(!(L||!i)){R(!0),B(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)){B(t.error??`POST returned ${e.status}`);return}console.info(`[admin-ui] sidebar-new-session pid=${t.pid} sessionId=${t.sessionId}`),I.setSessions(e=>[t,...e])}catch(e){let t=e instanceof Error?e.message:String(e);B(t),console.error(`[admin-ui] sidebar-new-session failed:`,t)}finally{R(!1)}}},[i,L,I]),be=(0,g.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}`),I.setSessions(t=>[n,...t.filter(t=>t.sessionId!==e)])}catch(e){console.error(`[admin-ui] sidebar-resume threw:`,e),I.refetch()}},[i,I]),xe=(0,g.useCallback)(async e=>{I.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),I.refetch()}},[i,I]);return(0,T.jsxs)(`aside`,{className:`side`,children:[(0,T.jsx)(`div`,{className:`side-head`,children:(0,T.jsx)(`button`,{className:`icon-btn side-head-toggle`,title:P?`Close sidebar`:M?`Expand sidebar`:`Collapse sidebar`,type:`button`,"aria-label":P?`Close sidebar`:M?`Expand sidebar`:`Collapse sidebar`,onClick:()=>{P?(console.info(`[admin-ui] sidebar-head-toggle action=close-drawer state=closed`),j()):(console.info(`[admin-ui] sidebar-head-toggle action=toggle-collapsed state=${M?`expanded`:`collapsed`}`),N())},children:M?(0,T.jsx)(C,{size:28}):(0,T.jsx)(S,{size:28})})}),(0,T.jsxs)(`nav`,{className:`side-nav`,children:[(0,T.jsxs)(`button`,{type:`button`,className:`nav-row${W===`chat`?` active`:``}`,onClick:me,children:[(0,T.jsx)(w,{size:Q}),(0,T.jsx)(`span`,{className:`label`,children:`Sessions`}),(0,T.jsx)(`span`,{className:`kbd`})]}),(0,T.jsxs)(`button`,{type:`button`,className:`nav-row`,onClick:()=>{console.info(`[admin-ui] sidebar-nav surface=people`),O(),j()},children:[(0,T.jsx)(re,{size:Q}),(0,T.jsx)(`span`,{className:`label`,children:`People`}),(0,T.jsx)(`span`,{className:`kbd`})]}),(0,T.jsxs)(`button`,{type:`button`,className:`nav-row`,onClick:()=>{console.info(`[admin-ui] sidebar-nav surface=agents`),A(),j()},children:[(0,T.jsx)(ee,{size:Q}),(0,T.jsx)(`span`,{className:`label`,children:`Agents`}),(0,T.jsx)(`span`,{className:`kbd`})]}),(0,T.jsxs)(`button`,{type:`button`,className:`nav-row`,onClick:()=>{console.info(`[admin-ui] sidebar-nav surface=projects`),D(),j()},children:[(0,T.jsx)(b,{size:Q}),(0,T.jsx)(`span`,{className:`label`,children:`Projects`}),(0,T.jsx)(`span`,{className:`kbd`})]}),(0,T.jsxs)(`button`,{type:`button`,className:`nav-row`,onClick:()=>{console.info(`[admin-ui] sidebar-nav surface=tasks`),k(),j()},children:[(0,T.jsx)(ne,{size:Q}),(0,T.jsx)(`span`,{className:`label`,children:`Tasks`}),(0,T.jsx)(`span`,{className:`kbd`})]}),(0,T.jsxs)(`button`,{type:`button`,className:`nav-row${W===`artefacts`?` active`:``}`,onClick:he,children:[(0,T.jsx)(l,{size:Q}),(0,T.jsx)(`span`,{className:`label`,children:`Artefacts`}),(0,T.jsx)(`span`,{className:`kbd`})]})]}),(0,T.jsxs)(`div`,{className:`side-list`,ref:ae,children:[(0,T.jsxs)(`div`,{className:`group-head`,children:[(0,T.jsx)(`span`,{children:$}),(0,T.jsxs)(`span`,{className:`group-head-meta`,children:[W===`chat`&&(0,T.jsx)(`button`,{type:`button`,className:`group-head-refresh`,title:`New session`,"aria-label":`New session`,onClick:()=>void ye(),disabled:L||!i,children:L?(0,T.jsx)(d,{size:12,className:`spinning`}):(0,T.jsx)(f,{size:12})}),(0,T.jsx)(`button`,{type:`button`,className:`group-head-refresh`,title:`Refresh ${$.toLowerCase()}`,"aria-label":`Refresh ${$.toLowerCase()}`,onClick:ve,disabled:_e,children:(0,T.jsx)(p,{size:12,className:_e?`spinning`:void 0})}),(0,T.jsx)(`span`,{children:ge})]})]}),z&&W===`chat`&&(0,T.jsx)(`div`,{className:`conv`,style:{color:`var(--text-tertiary)`,cursor:`default`},children:z}),W===`chat`&&(0,T.jsxs)(T.Fragment,{children:[_&&(0,T.jsx)(`div`,{className:`conv`,style:{color:`var(--text-tertiary)`,cursor:`default`},children:_}),H.map(e=>{let t=e.sessionId.slice(0,8),n=e.status===`ended`,i=n?`ended`:`pid ${e.pid??`?`}`;return(0,T.jsxs)(`div`,{className:`conv`,children:[(0,T.jsxs)(`button`,{type:`button`,className:`conv-name-button`,onClick:()=>{if(n){be(e.sessionId),j();return}console.info(`[admin-ui] sidebar-open-session sessionId=${e.sessionId}`),e.url&&window.open(e.url,`_blank`,`noopener,noreferrer`),j()},title:n?`Resume this session`:`Open session in a new tab`,children:[(0,T.jsx)(w,{size:12,className:`conv-channel-icon`,"aria-label":`claude session`}),(0,T.jsxs)(`span`,{className:`conv-name`,children:[t,` · `,i]})]}),n?(0,T.jsx)(`button`,{type:`button`,className:`conversations-action`,title:`Resume session`,"aria-label":`Resume session`,onClick:()=>void be(e.sessionId),children:(0,T.jsx)(c,{size:13})}):(0,T.jsxs)(T.Fragment,{children:[(0,T.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,T.jsx)(x,{size:13})}),(0,T.jsx)(`button`,{type:`button`,className:`conversations-action`,title:`End session`,"aria-label":`End session`,onClick:()=>void xe(e.sessionId),children:(0,T.jsx)(r,{size:13})})]})]},e.sessionId)})]}),W===`artefacts`&&(0,T.jsxs)(T.Fragment,{children:[J&&(0,T.jsx)(`div`,{className:`conv`,style:{color:`var(--text-tertiary)`,cursor:`default`},children:J}),q&&!J&&K.length===0&&(0,T.jsx)(`div`,{className:`conv`,style:{color:`var(--text-tertiary)`,cursor:`default`},children:`No artefacts yet`}),K.map(e=>(0,T.jsxs)(`button`,{type:`button`,className:`conv`,onClick:()=>{E({docId:e.id,name:e.name,content:e.content,editable:e.editable,mimeType:e.mimeType,skipReason:e.skipReason},`sidebar-artefacts`),j()},children:[(0,T.jsx)(`span`,{className:`conv-name`,children:e.name}),(0,T.jsx)(`span`,{className:`conv-kind`,"data-kind":e.kind===`agent-template`?`agent`:`doc`,children:e.kind===`agent-template`?`agent`:`doc`})]},e.id))]})]}),(0,T.jsxs)(`div`,{className:`side-foot`,ref:Z,children:[(0,T.jsx)(`div`,{className:`avatar`,children:s?(0,T.jsx)(`img`,{src:s,alt:V}):se}),(0,T.jsxs)(`div`,{className:`who`,children:[(0,T.jsx)(`span`,{className:`name`,children:V}),(0,T.jsx)(`span`,{className:`role`,children:a??`operator`})]}),(0,T.jsx)(`button`,{className:`icon-btn side-foot-actions-trigger`,title:`Conversation actions`,type:`button`,"aria-label":`Conversation actions`,"aria-haspopup":`true`,"aria-expanded":Y,onClick:()=>X(e=>!e),children:(0,T.jsx)(te,{size:Q})}),Y&&(0,T.jsx)(`div`,{className:`side-foot-actions-popover`,children:(0,T.jsx)(ie,{...F,onAfterAction:()=>X(!1)})})]})]})});function N(){let e=v(),t=y(e.cacheKey),[n,r]=(0,g.useState)(!1),[i,a]=(0,g.useState)(!1);return e.appState===`loading`?(0,T.jsx)(`div`,{className:`connect-page`}):e.appState===`set-pin`?(0,T.jsx)(D,{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,T.jsx)(j,{setAppState:e.setAppState,setOnboardingComplete:e.setOnboardingComplete}):e.appState===`connect-claude`?(0,T.jsx)(A,{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,T.jsx)(O,{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,T.jsx)(k,{accounts:e.accounts,loading:e.accountPickerLoading,error:e.pinError,onSelect:e.handleAccountSelect}):(0,T.jsx)(`div`,{className:`platform${i?` menu-open`:``}${n?` sidebar-collapsed`:``}`,children:(0,T.jsx)(M,{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),collapsed:n,onToggleCollapsed:()=>r(e=>!e),mobileDrawerOpen:i,actions:{},recentsActions:{setSessions:t.setSessions,refetch:t.refetch}})})}(0,h.createRoot)(document.getElementById(`root`)).render((0,T.jsx)(N,{}));