@rubytech/create-maxy-code 0.1.24 → 0.1.26

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 (136) hide show
  1. package/dist/index.js +63 -16
  2. package/package.json +1 -1
  3. package/payload/platform/plugins/admin/PLUGIN.md +46 -23
  4. package/payload/platform/plugins/admin/skills/onboarding/SKILL.md +111 -126
  5. package/payload/platform/plugins/cloudflare/references/dashboard-guide.md +37 -0
  6. package/payload/platform/plugins/cloudflare/references/manual-setup.md +81 -1
  7. package/payload/platform/plugins/cloudflare/scripts/__tests__/tunnel-ingress.test.ts +241 -0
  8. package/payload/platform/plugins/cloudflare/scripts/setup-tunnel.sh +267 -28
  9. package/payload/platform/plugins/cloudflare/scripts/tunnel-ingress.ts +291 -0
  10. package/payload/platform/plugins/cloudflare/skills/setup-tunnel/SKILL.md +42 -0
  11. package/payload/platform/plugins/contacts/PLUGIN.md +18 -9
  12. package/payload/platform/plugins/docs/references/platform.md +2 -0
  13. package/payload/platform/plugins/docs/references/troubleshooting.md +12 -0
  14. package/payload/platform/plugins/email/PLUGIN.md +18 -9
  15. package/payload/platform/plugins/email/mcp/dist/lib/claude-bridge.d.ts +17 -0
  16. package/payload/platform/plugins/email/mcp/dist/lib/claude-bridge.d.ts.map +1 -0
  17. package/payload/platform/plugins/email/mcp/dist/lib/claude-bridge.js +185 -0
  18. package/payload/platform/plugins/email/mcp/dist/lib/claude-bridge.js.map +1 -0
  19. package/payload/platform/plugins/email/mcp/dist/scripts/email-auto-respond.js +34 -111
  20. package/payload/platform/plugins/email/mcp/dist/scripts/email-auto-respond.js.map +1 -1
  21. package/payload/platform/plugins/memory/PLUGIN.md +58 -29
  22. package/payload/platform/plugins/memory/mcp/dist/tools/profile-read.d.ts +3 -1
  23. package/payload/platform/plugins/memory/mcp/dist/tools/profile-read.d.ts.map +1 -1
  24. package/payload/platform/plugins/memory/mcp/dist/tools/profile-read.js +105 -4
  25. package/payload/platform/plugins/memory/mcp/dist/tools/profile-read.js.map +1 -1
  26. package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.d.ts.map +1 -1
  27. package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.js +16 -3
  28. package/payload/platform/plugins/memory/mcp/dist/tools/profile-update.js.map +1 -1
  29. package/payload/platform/plugins/outlook/PLUGIN.md +14 -7
  30. package/payload/platform/plugins/replicate/PLUGIN.md +6 -3
  31. package/payload/platform/plugins/scheduling/PLUGIN.md +16 -8
  32. package/payload/platform/plugins/tasks/PLUGIN.md +28 -14
  33. package/payload/platform/plugins/telegram/PLUGIN.md +6 -3
  34. package/payload/platform/plugins/waitlist/PLUGIN.md +12 -6
  35. package/payload/platform/plugins/whatsapp/PLUGIN.md +25 -13
  36. package/payload/platform/plugins/workflows/PLUGIN.md +16 -8
  37. package/payload/platform/scripts/conversation-id-allowlist.txt +0 -1
  38. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
  39. package/payload/platform/services/claude-session-manager/dist/http-server.js +14 -2
  40. package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
  41. package/payload/platform/services/claude-session-manager/dist/index.js +27 -0
  42. package/payload/platform/services/claude-session-manager/dist/index.js.map +1 -1
  43. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts +22 -0
  44. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
  45. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +32 -1
  46. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
  47. package/payload/platform/services/claude-session-manager/dist/tool-surface.d.ts +25 -0
  48. package/payload/platform/services/claude-session-manager/dist/tool-surface.d.ts.map +1 -0
  49. package/payload/platform/services/claude-session-manager/dist/tool-surface.js +149 -0
  50. package/payload/platform/services/claude-session-manager/dist/tool-surface.js.map +1 -0
  51. package/payload/premium-plugins/real-agency/plugins/estate-business/PLUGIN.md +15 -0
  52. package/payload/premium-plugins/real-agency/plugins/estate-sales/PLUGIN.md +5 -0
  53. package/payload/premium-plugins/real-agency/plugins/leads/PLUGIN.md +16 -0
  54. package/payload/premium-plugins/real-agency/plugins/listings/PLUGIN.md +39 -0
  55. package/payload/premium-plugins/real-agency/plugins/loop/PLUGIN.md +15 -0
  56. package/payload/server/{chunk-2ZNKHCQB.js → chunk-2MRZBQMH.js} +1 -1
  57. package/payload/server/{chunk-GPUCA2RQ.js → chunk-NL7QLVAD.js} +0 -192
  58. package/payload/server/{chunk-IDKWGLM5.js → chunk-YPZFYTYP.js} +1 -247
  59. package/payload/server/{cloudflare-task-tracker-LYI5BTYI.js → cloudflare-task-tracker-QVOGHKWV.js} +2 -2
  60. package/payload/server/maxy-edge.js +2 -2
  61. package/payload/server/package.json +0 -2
  62. package/payload/server/public/assets/{Checkbox-D1OQD43b.js → Checkbox-YIF0payo.js} +1 -1
  63. package/payload/server/public/assets/{admin-czNBxWor.js → admin-DW8IJcLc.js} +1 -1
  64. package/payload/server/public/assets/{architectureDiagram-Q4EWVU46-BcwgT80u.js → architectureDiagram-Q4EWVU46-Bz8mlxZZ.js} +1 -1
  65. package/payload/server/public/assets/{blockDiagram-DXYQGD6D-BMSyZUQA.js → blockDiagram-DXYQGD6D-DwV8Z8-i.js} +1 -1
  66. package/payload/server/public/assets/{brand-2cku8WFs.css → brand-DqiRNMlu.css} +1 -1
  67. package/payload/server/public/assets/{c4Diagram-AHTNJAMY-DPRGY1jJ.js → c4Diagram-AHTNJAMY-DiUTejMp.js} +1 -1
  68. package/payload/server/public/assets/channel-PtVtoBEL.js +1 -0
  69. package/payload/server/public/assets/{chunk-336JU56O-B7oQ3g1c.js → chunk-336JU56O-4mHZpBXe.js} +2 -2
  70. package/payload/server/public/assets/{chunk-426QAEUC-C1P0yFXw.js → chunk-426QAEUC-Cbv0vrN9.js} +1 -1
  71. package/payload/server/public/assets/{chunk-4TB4RGXK-LI7kOJd0.js → chunk-4TB4RGXK-BvLhId_2.js} +1 -1
  72. package/payload/server/public/assets/{chunk-5FUZZQ4R-CXQRGTQE.js → chunk-5FUZZQ4R-bBafOTkw.js} +1 -1
  73. package/payload/server/public/assets/{chunk-5PVQY5BW-NSyzpXRy.js → chunk-5PVQY5BW-B0NqBKVy.js} +1 -1
  74. package/payload/server/public/assets/{chunk-EDXVE4YY-voNwxbDs.js → chunk-EDXVE4YY-CFd4SqI6.js} +1 -1
  75. package/payload/server/public/assets/{chunk-ENJZ2VHE-CMEMPzYY.js → chunk-ENJZ2VHE-ajf2sb6c.js} +1 -1
  76. package/payload/server/public/assets/{chunk-ICPOFSXX-hEbwu-pe.js → chunk-ICPOFSXX-pWg6bug7.js} +1 -1
  77. package/payload/server/public/assets/{chunk-OYMX7WX6-DxskDrLs.js → chunk-OYMX7WX6-OjEd-17c.js} +1 -1
  78. package/payload/server/public/assets/{chunk-U2HBQHQK-D7TKgUo0.js → chunk-U2HBQHQK-DbEFSPoh.js} +1 -1
  79. package/payload/server/public/assets/{chunk-X2U36JSP-BvPUQEPm.js → chunk-X2U36JSP-COdNwrBb.js} +1 -1
  80. package/payload/server/public/assets/{chunk-YZCP3GAM-BY-RWQUW.js → chunk-YZCP3GAM-CHMWuY9B.js} +1 -1
  81. package/payload/server/public/assets/{chunk-ZZ45TVLE-DZvOYDY6.js → chunk-ZZ45TVLE-B-uDLQOB.js} +1 -1
  82. package/payload/server/public/assets/classDiagram-6PBFFD2Q-RVH_SEhY.js +1 -0
  83. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-Cm3rAb93.js +1 -0
  84. package/payload/server/public/assets/clone-BjY0Wzht.js +1 -0
  85. package/payload/server/public/assets/{dagre-KV5264BT-Cnj0mUZl.js → dagre-KV5264BT-CMEzmhIL.js} +1 -1
  86. package/payload/server/public/assets/{dagre-Bt-fpckL.js → dagre-bhIG_KnW.js} +1 -1
  87. package/payload/server/public/assets/data-K_kS__sL.js +1 -0
  88. package/payload/server/public/assets/{device-url-actions-Bjz3Xzbm.js → device-url-actions-AcOyLSeF.js} +1 -1
  89. package/payload/server/public/assets/{diagram-5BDNPKRD-DjLzvOlx.js → diagram-5BDNPKRD-6RIoQhIL.js} +1 -1
  90. package/payload/server/public/assets/{diagram-G4DWMVQ6-DTfuRd-T.js → diagram-G4DWMVQ6-BSp36TVv.js} +1 -1
  91. package/payload/server/public/assets/{diagram-MMDJMWI5-BaL2mCnx.js → diagram-MMDJMWI5-D54fo52D.js} +1 -1
  92. package/payload/server/public/assets/{diagram-TYMM5635-C5InWY5R.js → diagram-TYMM5635-CWL8z-Pq.js} +1 -1
  93. package/payload/server/public/assets/{erDiagram-SMLLAGMA-DO7BXTpn.js → erDiagram-SMLLAGMA-AnnHBo3z.js} +1 -1
  94. package/payload/server/public/assets/{flowDiagram-DWJPFMVM-DDdAKfLf.js → flowDiagram-DWJPFMVM-laWmBl5o.js} +1 -1
  95. package/payload/server/public/assets/{ganttDiagram-T4ZO3ILL-arJD8Utm.js → ganttDiagram-T4ZO3ILL-B94ko8ie.js} +1 -1
  96. package/payload/server/public/assets/{gitGraphDiagram-UUTBAWPF-C55GH-OS.js → gitGraphDiagram-UUTBAWPF-DxzL1fxZ.js} +1 -1
  97. package/payload/server/public/assets/graph-DeEigyO_.js +1 -0
  98. package/payload/server/public/assets/graph-labels-C7I5QvNv.js +1 -0
  99. package/payload/server/public/assets/{graphlib-DL9PM7Ex.js → graphlib-CY-zIElM.js} +1 -1
  100. package/payload/server/public/assets/{infoDiagram-42DDH7IO-BMSGqUbG.js → infoDiagram-42DDH7IO-BMTajIIr.js} +1 -1
  101. package/payload/server/public/assets/{ishikawaDiagram-UXIWVN3A-Dw6BZ6BG.js → ishikawaDiagram-UXIWVN3A-B_QauE5O.js} +1 -1
  102. package/payload/server/public/assets/{journeyDiagram-VCZTEJTY-DrywUGXw.js → journeyDiagram-VCZTEJTY-DmlqSIih.js} +1 -1
  103. package/payload/server/public/assets/{kanban-definition-6JOO6SKY-DuwtVBBc.js → kanban-definition-6JOO6SKY-ZGDQT7xB.js} +1 -1
  104. package/payload/server/public/assets/{line-JAksyKHj.js → line-D13opgep.js} +1 -1
  105. package/payload/server/public/assets/{mermaid-parser.core-BMq-ApBW.js → mermaid-parser.core-C650Sual.js} +1 -1
  106. package/payload/server/public/assets/{mermaid.core-tH4oX0Kh.js → mermaid.core-BqnQoXTp.js} +3 -3
  107. package/payload/server/public/assets/{mindmap-definition-QFDTVHPH-D1OiiJga.js → mindmap-definition-QFDTVHPH-BS_8y-tY.js} +1 -1
  108. package/payload/server/public/assets/{page-BZpoS7iR.js → page-B_rpjIRr.js} +1 -1
  109. package/payload/server/public/assets/{page-CkvBvezS.js → page-qSH972X0.js} +1 -1
  110. package/payload/server/public/assets/{pieDiagram-DEJITSTG-Ckwm69PW.js → pieDiagram-DEJITSTG-B5OmNvBO.js} +1 -1
  111. package/payload/server/public/assets/{public-C-dTMgXu.js → public-DDsYgotk.js} +3 -3
  112. package/payload/server/public/assets/{quadrantDiagram-34T5L4WZ-COw3yZ1j.js → quadrantDiagram-34T5L4WZ-DTYITdNo.js} +1 -1
  113. package/payload/server/public/assets/{requirementDiagram-MS252O5E-DqGzM4K-.js → requirementDiagram-MS252O5E-CRZWxH06.js} +1 -1
  114. package/payload/server/public/assets/{sankeyDiagram-XADWPNL6-D-l1c_Pl.js → sankeyDiagram-XADWPNL6-DazRENhe.js} +1 -1
  115. package/payload/server/public/assets/{sequenceDiagram-FGHM5R23-BeIi0DtJ.js → sequenceDiagram-FGHM5R23-BcHTxmPy.js} +1 -1
  116. package/payload/server/public/assets/{stateDiagram-FHFEXIEX-C-jgegLk.js → stateDiagram-FHFEXIEX-DYU7nbqg.js} +1 -1
  117. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-BgljVtlp.js +1 -0
  118. package/payload/server/public/assets/{timeline-definition-GMOUNBTQ-BGFKkYmi.js → timeline-definition-GMOUNBTQ-BKGmqkST.js} +1 -1
  119. package/payload/server/public/assets/{vennDiagram-DHZGUBPP-5NuIhJLS.js → vennDiagram-DHZGUBPP-BXvLPmX7.js} +1 -1
  120. package/payload/server/public/assets/{wardleyDiagram-NUSXRM2D-Be9ytVut.js → wardleyDiagram-NUSXRM2D-BCclUa3Z.js} +1 -1
  121. package/payload/server/public/assets/{xychartDiagram-5P7HB3ND-DCyHg41R.js → xychartDiagram-5P7HB3ND-C-Xp-Eoc.js} +1 -1
  122. package/payload/server/public/data.html +5 -5
  123. package/payload/server/public/graph.html +6 -6
  124. package/payload/server/public/index.html +8 -8
  125. package/payload/server/public/public.html +5 -5
  126. package/payload/server/server.js +1024 -2347
  127. package/payload/platform/scripts/check-sdk-oauth.mjs +0 -185
  128. package/payload/server/public/assets/channel-fxEghWew.js +0 -1
  129. package/payload/server/public/assets/classDiagram-6PBFFD2Q-BsWzGW0N.js +0 -1
  130. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-BGVa3h90.js +0 -1
  131. package/payload/server/public/assets/clone-Khvocke2.js +0 -1
  132. package/payload/server/public/assets/data-DBd-Buhp.js +0 -1
  133. package/payload/server/public/assets/graph-DUtVdnZ6.js +0 -1
  134. package/payload/server/public/assets/graph-labels-Dxfue-fP.js +0 -1
  135. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-BaMs8Znv.js +0 -1
  136. /package/payload/server/public/assets/{brand-CSQuxS9w.js → brand-Bm671owU.js} +0 -0
@@ -1,185 +0,0 @@
1
- #!/usr/bin/env node
2
- // Task 746 — OAuth + wire-identity check for @anthropic-ai/claude-agent-sdk.
3
- //
4
- // One-shot spike. Pi-runnable. Intentionally orphan/standalone — not imported
5
- // by any production module, not wired into any cron, hook, or route. Task 606
6
- // owns SDK adoption in production; this script gates that adoption.
7
- //
8
- // Precondition (exact):
9
- // ssh <pi> # see memory/reference_device_ssh.md for hosts
10
- // cd /tmp && mkdir -p sdk-spike && cd sdk-spike
11
- // npm install @anthropic-ai/claude-agent-sdk@0.2.119 # pin matches static evidence
12
- // cp <repo>/platform/scripts/check-sdk-oauth.mjs .
13
- // unset ANTHROPIC_API_KEY
14
- // node check-sdk-oauth.mjs 2>&1 | tee spike.log
15
- //
16
- // PASS condition: apiKeySource ∈ {'oauth', 'none'}. Both indicate OAuth-only mode:
17
- // 'oauth' = SDK supplied an OAuth-issued API key; 'none' = SDK supplied no key
18
- // at all and the claude binary's own credentials file is in use. Production
19
- // brand installs (Task 923) read this file from CLAUDE_CONFIG_DIR — which
20
- // the brand main service sets to `${persistDir}/.claude` — so the
21
- // per-brand path is `~/${BRAND.configDir}/.claude/.credentials.json`. This
22
- // orphan/standalone Pi spike runs without that env var and falls back to
23
- // `~/.claude/.credentials.json`; that's by design (the spike is not in the
24
- // production execution path; see Task 746 brief). Cross-check with
25
- // `claude --print --output-format json "Reply…"` to confirm parity.
26
- //
27
- // Verdict reasons (exit 1 unless PASS):
28
- // env-set ANTHROPIC_API_KEY present (operator must `unset`)
29
- // no-oauth-credentials credentials file unreadable, empty, or
30
- // contains no OAuth-shaped fields (run `claude login`)
31
- // exception:<msg> SDK import or runtime error
32
- // no-system-init SDK never emitted system.init message
33
- // wrong-api-key-source:<value> apiKeySource ∉ {oauth, none} — value verbatim;
34
- // MISSING-FIELD if SDK message shape drifted
35
- // (raw msg dumped on next line)
36
- // assistant-error:<value> SDK reported assistant error: authentication_failed |
37
- // billing_error | rate_limit | invalid_request |
38
- // server_error | unknown | max_output_tokens
39
- // no-response no assistant message arrived
40
- // empty-response assistant arrived, no text content
41
- // timeout 60s elapsed waiting for response
42
- //
43
- // Wire-identity (mitmproxy header diff vs `claude -p`) and subscription-billing
44
- // (VNC dashboard) are operator-manual per Task 746 brief — not script-side.
45
- // .docs/platform.md captures the consolidated verdict (script + mitm + VNC).
46
-
47
- import { accessSync, readFileSync, constants as FS } from 'node:fs'
48
- import { homedir } from 'node:os'
49
- import { join } from 'node:path'
50
-
51
- const TIMEOUT_MS = 60_000
52
- const PROMPT = 'Reply with the literal string OK and nothing else.'
53
- // Claude Code emits apiKeySource='none' when the SDK supplies no API key and
54
- // the claude binary uses its own OAuth credentials at the path resolved from
55
- // CLAUDE_CONFIG_DIR (Task 923) — falling back to `~/.claude/.credentials.json`
56
- // when CLAUDE_CONFIG_DIR is unset, as in this orphan Pi spike's runtime.
57
- // Brief assumed 'oauth' based on stale type-defs; runtime-correct OAuth-only
58
- // indicator on Claude Code 2.1.x is 'none'. Both accepted; cross-check with
59
- // `claude --print --output-format json` to confirm parity.
60
- const OAUTH_API_KEY_SOURCES = new Set(['oauth', 'none'])
61
-
62
- const log = (line) => process.stdout.write(line + '\n')
63
- const safeStringify = (v) => { try { return JSON.stringify(v) } catch { return '<unstringifiable>' } }
64
-
65
- let verdictEmitted = false
66
- const fail = (reason) => {
67
- if (verdictEmitted) return
68
- verdictEmitted = true
69
- log(`[sdk-spike] verdict: FAIL reason=${reason}`)
70
- process.exit(1)
71
- }
72
- const pass = (note) => {
73
- if (verdictEmitted) return
74
- verdictEmitted = true
75
- log(`[sdk-spike] verdict: PASS${note ? ` ${note}` : ''}`)
76
- process.exit(0)
77
- }
78
-
79
- async function main() {
80
- const envState = process.env.ANTHROPIC_API_KEY ? 'set' : 'unset'
81
- log(`[sdk-spike] env: ANTHROPIC_API_KEY=${envState}`)
82
- if (envState === 'set') fail('env-set')
83
-
84
- const credsPath = join(homedir(), '.claude', '.credentials.json')
85
- try { accessSync(credsPath, FS.R_OK) }
86
- catch { fail('no-oauth-credentials') }
87
-
88
- let credsSize = 0
89
- let credsHasOauthFields = false
90
- let credsTopKeys = []
91
- try {
92
- const credsRaw = readFileSync(credsPath, 'utf8')
93
- credsSize = credsRaw.length
94
- const credsObj = JSON.parse(credsRaw)
95
- credsTopKeys = Object.keys(credsObj).sort()
96
- credsHasOauthFields = credsTopKeys.some((k) => /oauth|access|refresh|bearer/i.test(k)) ||
97
- Object.values(credsObj).some((v) => v && typeof v === 'object' &&
98
- Object.keys(v).some((k) => /oauth|access|refresh|bearer/i.test(k)))
99
- } catch { /* malformed creds file — surface in log, fail with no-oauth-credentials below */ }
100
- log(`[sdk-spike] creds: size=${credsSize} topKeys=${credsTopKeys.join(',')} hasOauthFields=${credsHasOauthFields}`)
101
- if (credsSize === 0 || !credsHasOauthFields) fail('no-oauth-credentials')
102
-
103
- let query
104
- try {
105
- ({ query } = await import('@anthropic-ai/claude-agent-sdk'))
106
- } catch (err) {
107
- fail(`exception:${String(err?.message ?? err).slice(0, 200)}`)
108
- }
109
-
110
- let sdkVersion = '<unknown>'
111
- try {
112
- const pkgPath = join(process.cwd(), 'node_modules', '@anthropic-ai', 'claude-agent-sdk', 'package.json')
113
- sdkVersion = JSON.parse(readFileSync(pkgPath, 'utf8')).version
114
- } catch { /* leave as <unknown> — diagnostic, not load-bearing */ }
115
- log(`[sdk-spike] sdk-version: ${sdkVersion}`)
116
-
117
- let gotInit = false
118
- let apiKeySource = ''
119
- let apiProvider = ''
120
- let model = ''
121
- let sessionId = ''
122
- let claudeCodeVersion = ''
123
- let gotAssistant = false
124
- let assistantError = ''
125
- let responseText = ''
126
-
127
- const result = query({ prompt: PROMPT })
128
-
129
- let timeoutId
130
- const timer = new Promise((_, reject) => {
131
- timeoutId = setTimeout(() => reject(new Error(`timeout after ${TIMEOUT_MS}ms`)), TIMEOUT_MS)
132
- })
133
-
134
- const consume = (async () => {
135
- for await (const msg of result) {
136
- if (msg?.type === 'system' && msg?.subtype === 'init') {
137
- gotInit = true
138
- // apiKeySource is required (sdk.d.ts:3286 — non-optional). MISSING-FIELD here = SDK shape drift, dump raw.
139
- apiKeySource = msg.apiKeySource ?? msg.api_key_source ?? 'MISSING-FIELD'
140
- // apiProvider is optional (sdk.d.ts:32 declares `?:`); absent on Claude Code 2.1.119. <absent> ≠ defect.
141
- apiProvider = msg.apiProvider ?? msg.api_provider ?? '<absent>'
142
- model = msg.model ?? '<unknown>'
143
- sessionId = msg.session_id ?? msg.sessionId ?? '<unknown>'
144
- claudeCodeVersion = msg.claude_code_version ?? '<unknown>'
145
- log(`[sdk-spike] system-init: apiKeySource=${apiKeySource} apiProvider=${apiProvider} model=${model} sessionId=${sessionId} claudeCodeVersion=${claudeCodeVersion}`)
146
- if (apiKeySource === 'MISSING-FIELD') {
147
- log(`[sdk-spike] system-init-raw: ${safeStringify(msg)}`)
148
- }
149
- } else if (msg?.type === 'assistant') {
150
- gotAssistant = true
151
- if (msg.error && !assistantError) assistantError = msg.error
152
- const blocks = msg.message?.content ?? []
153
- for (const block of blocks) {
154
- if (block?.type === 'text' && typeof block.text === 'string') {
155
- responseText += block.text
156
- }
157
- }
158
- }
159
- }
160
- })()
161
-
162
- try {
163
- await Promise.race([consume, timer])
164
- } catch (err) {
165
- try { Promise.resolve(result.return?.()).catch(() => {}) } catch { /* best-effort cleanup */ }
166
- if (String(err?.message ?? '').startsWith('timeout after')) fail('timeout')
167
- fail(`exception:${String(err?.message ?? err).slice(0, 200)}`)
168
- } finally {
169
- clearTimeout(timeoutId)
170
- try { Promise.resolve(result.return?.()).catch(() => {}) } catch { /* best-effort cleanup */ }
171
- }
172
-
173
- log(`[sdk-spike] response: ${responseText}`)
174
-
175
- if (!gotInit) fail('no-system-init')
176
- if (!OAUTH_API_KEY_SOURCES.has(apiKeySource)) fail(`wrong-api-key-source:${apiKeySource}`)
177
- if (assistantError) fail(`assistant-error:${assistantError}`)
178
- if (!gotAssistant) fail('no-response')
179
- if (responseText.trim() === '') fail('empty-response')
180
- pass(`apiKeySource=${apiKeySource} apiProvider=${apiProvider} sdk=${sdkVersion} cli=${claudeCodeVersion}`)
181
- }
182
-
183
- main().catch((err) => {
184
- fail(`exception:${String(err?.message ?? err).slice(0, 200)}`)
185
- })
@@ -1 +0,0 @@
1
- import{it as e,rt as t}from"./chunk-ICPOFSXX-hEbwu-pe.js";var n=(n,r)=>e.lang.round(t.parse(n)[r]);export{n as t};
@@ -1 +0,0 @@
1
- import{h as e}from"./src-B6XdH6xq.js";import"./chunk-ICPOFSXX-hEbwu-pe.js";import"./dist-Bd4S37oi.js";import"./chunk-5PVQY5BW-NSyzpXRy.js";import"./chunk-U2HBQHQK-D7TKgUo0.js";import"./chunk-FMBD7UC4-w-yBZsN2.js";import"./chunk-BSJP7CBP-DP7LTBll.js";import"./chunk-ZZ45TVLE-DZvOYDY6.js";import"./chunk-YZCP3GAM-BY-RWQUW.js";import"./chunk-55IACEB6-BRJOZLpU.js";import"./chunk-EDXVE4YY-voNwxbDs.js";import"./chunk-X2U36JSP-BvPUQEPm.js";import"./chunk-5FUZZQ4R-CXQRGTQE.js";import"./chunk-ENJZ2VHE-CMEMPzYY.js";import"./chunk-336JU56O-B7oQ3g1c.js";import{i as t,n,r,t as i}from"./chunk-4TB4RGXK-LI7kOJd0.js";var a={parser:n,get db(){return new i},renderer:r,styles:t,init:e(e=>{e.class||={},e.class.arrowMarkerAbsolute=e.arrowMarkerAbsolute},`init`)};export{a as diagram};
@@ -1 +0,0 @@
1
- import{h as e}from"./src-B6XdH6xq.js";import"./chunk-ICPOFSXX-hEbwu-pe.js";import"./dist-Bd4S37oi.js";import"./chunk-5PVQY5BW-NSyzpXRy.js";import"./chunk-U2HBQHQK-D7TKgUo0.js";import"./chunk-FMBD7UC4-w-yBZsN2.js";import"./chunk-BSJP7CBP-DP7LTBll.js";import"./chunk-ZZ45TVLE-DZvOYDY6.js";import"./chunk-YZCP3GAM-BY-RWQUW.js";import"./chunk-55IACEB6-BRJOZLpU.js";import"./chunk-EDXVE4YY-voNwxbDs.js";import"./chunk-X2U36JSP-BvPUQEPm.js";import"./chunk-5FUZZQ4R-CXQRGTQE.js";import"./chunk-ENJZ2VHE-CMEMPzYY.js";import"./chunk-336JU56O-B7oQ3g1c.js";import{i as t,n,r,t as i}from"./chunk-4TB4RGXK-LI7kOJd0.js";var a={parser:n,get db(){return new i},renderer:r,styles:t,init:e(e=>{e.class||={},e.class.arrowMarkerAbsolute=e.arrowMarkerAbsolute},`init`)};export{a as diagram};
@@ -1 +0,0 @@
1
- import{i as e}from"./graphlib-DL9PM7Ex.js";var t=4;function n(n){return e(n,t)}export{n as t};
@@ -1 +0,0 @@
1
- import{a as e,p as t}from"./brand-CSQuxS9w.js";import"./graph-labels-Dxfue-fP.js";import{t as n}from"./page-BZpoS7iR.js";var r=t(),i=e();(0,r.createRoot)(document.getElementById(`root`)).render((0,i.jsx)(n,{}));
@@ -1 +0,0 @@
1
- import{a as e,p as t}from"./brand-CSQuxS9w.js";import"./graph-labels-Dxfue-fP.js";import{n}from"./page-CkvBvezS.js";import"./Checkbox-D1OQD43b.js";var r=t(),i=e();(0,r.createRoot)(document.getElementById(`root`)).render((0,i.jsx)(n,{}));
@@ -1 +0,0 @@
1
- import{o as e}from"./chunk-DD-I1_y5.js";import{a as t,c as n,d as r,f as i,h as a,l as o,o as s,r as c,s as l,t as u,u as d}from"./brand-CSQuxS9w.js";var f=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`}]]),p=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`}]]),m=i(`circle-stop`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`rect`,{x:`9`,y:`9`,width:`6`,height:`6`,rx:`1`,key:`1ssd4o`}]]),h=i(`database`,[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`,key:`1wlel7`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`,key:`mv7ke4`}]]),g=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`}]]),_=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`}]]),v=i(`info`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]),y=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`}]]),b=i(`loader-circle`,[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]]),x=i(`log-out`,[[`path`,{d:`m16 17 5-5-5-5`,key:`1bji2h`}],[`path`,{d:`M21 12H9`,key:`dn1m92`}],[`path`,{d:`M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4`,key:`1uf3rs`}]]),ee=i(`menu`,[[`path`,{d:`M4 5h16`,key:`1tepv9`}],[`path`,{d:`M4 12h16`,key:`1lakjw`}],[`path`,{d:`M4 19h16`,key:`1djgab`}]]),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`}]]),te=i(`panel-right-open`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M15 3v18`,key:`14nvp0`}],[`path`,{d:`m10 15-3-3 3-3`,key:`1pgupc`}]]),ne=i(`panel-right`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M15 3v18`,key:`14nvp0`}]]),w=i(`plus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]),T=i(`refresh-cw`,[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`,key:`v9h5vc`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`,key:`3uifl3`}],[`path`,{d:`M8 16H3v5`,key:`1cv678`}]]),E=i(`search`,[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]),D=i(`share-2`,[[`circle`,{cx:`18`,cy:`5`,r:`3`,key:`gq8acd`}],[`circle`,{cx:`6`,cy:`12`,r:`3`,key:`w7nqdw`}],[`circle`,{cx:`18`,cy:`19`,r:`3`,key:`1xt0gg`}],[`line`,{x1:`8.59`,x2:`15.42`,y1:`13.51`,y2:`17.49`,key:`47mynk`}],[`line`,{x1:`15.41`,x2:`8.59`,y1:`6.51`,y2:`10.49`,key:`1n3mei`}]]),O=i(`terminal`,[[`path`,{d:`M12 19h8`,key:`baeox8`}],[`path`,{d:`m4 17 6-6-6-6`,key:`1yngyt`}]]),k=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`}]]),A=i(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]),j=e(a(),1);function M(e,t,n,r){let i=e===`pane`?`pane-action`:`sidebar-${t}`;console.info(`[admin-ui] ${i} sessionId=${n.slice(0,8)} action=${t} outcome=${r}`)}var re=/session_([A-Za-z0-9_-]+)/;function N(e){if(!e)return null;let t=e.match(re);return t?t[1]:null}async function P(e,t,n,r,i){let a=N(r)??`unknown`,o=e=>e.slice(0,8),s=t===`pane`?`pane-action action=resume-archive`:`sidebar-resume-archive`,c;try{let t=await fetch(`/api/admin/claude-sessions/${encodeURIComponent(n)}/archive?session_key=${encodeURIComponent(e)}`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({mode:`archive`})});c=t.ok?`ok`:t.status===409?`409`:`error`;let r=`[admin-ui] ${s} sourceSessionId=${o(n)} newSessionId=${o(a)} result=${c}`;c===`error`?console.error(r):console.info(r)}catch(e){let t=e instanceof Error?e.message:String(e);console.error(`[admin-ui] ${s} sourceSessionId=${o(n)} newSessionId=${o(a)} result=error detail=${t}`)}finally{i.refetch()}}function ie(e,t,n=`pane`){let[r,i]=(0,j.useState)(null),a=(0,j.useCallback)(async r=>{if(!e)return{ok:!1,error:`no-cache-key`};i(`resume`);try{let i=await fetch(`/api/admin/claude-sessions/resume?session_key=${encodeURIComponent(e)}`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({claudeSessionId:r,channel:`browser`})}),a=await i.json();if(!i.ok||!(`sessionId`in a)){let e=a.error??`POST returned ${i.status}`;return M(n,`resume`,r,String(i.status)),{ok:!1,error:e}}return t.setSessions(e=>[a,...e.filter(e=>e.sessionId!==r)]),M(n,`resume`,r,`200`),P(e,n,r,a.url,t),{ok:!0}}catch(e){let i=e instanceof Error?e.message:String(e);return M(n,`resume`,r,`threw`),t.refetch(),{ok:!1,error:i}}finally{i(null)}},[e,t,n]),o=(0,j.useCallback)(async r=>{if(!e)return{ok:!1,error:`no-cache-key`};i(`end`),t.setSessions(e=>e.filter(e=>e.sessionId!==r));try{let i=await fetch(`/api/admin/claude-sessions/${encodeURIComponent(r)}?session_key=${encodeURIComponent(e)}`,{method:`DELETE`});if(!i.ok){let e=await i.text().catch(()=>``);return M(n,`end`,r,String(i.status)),t.refetch(),{ok:!1,error:`DELETE ${i.status} ${e.slice(0,200)}`}}return M(n,`end`,r,`200`),{ok:!0}}catch(e){let i=e instanceof Error?e.message:String(e);return M(n,`end`,r,`threw`),t.refetch(),{ok:!1,error:i}}finally{i(null)}},[e,t,n]),s=(0,j.useCallback)(async r=>{if(!e)return{ok:!1,error:`no-cache-key`};i(`purge`);try{let i=await fetch(`/api/admin/claude-sessions/${encodeURIComponent(r)}?purge=1&session_key=${encodeURIComponent(e)}`,{method:`DELETE`});if(!i.ok){let e=await i.json().catch(()=>({})),t=e.detail||e.error||`DELETE ?purge=1 ${i.status}`;return M(n,`purge`,r,String(i.status)),{ok:!1,error:t}}return t.setSessions(e=>e.filter(e=>e.sessionId!==r)),M(n,`purge`,r,`200`),{ok:!0}}catch(e){let t=e instanceof Error?e.message:String(e);return M(n,`purge`,r,`threw`),{ok:!1,error:t}}finally{i(null)}},[e,t,n]),c=(0,j.useCallback)(async(r,a)=>{if(!e)return{ok:!1,error:`no-cache-key`};i(a);try{let i=await fetch(`/api/admin/claude-sessions/${encodeURIComponent(r)}/archive?session_key=${encodeURIComponent(e)}`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({mode:a})});if(!i.ok){let e=await i.json().catch(()=>({})),t=e.detail||e.error||`POST /archive ${i.status}`;return M(n,a,r,String(i.status)),{ok:!1,error:t}}return a===`archive`?t.setSessions(e=>e.filter(e=>e.sessionId!==r)):t.refetch(),M(n,a,r,`200`),{ok:!0}}catch(e){let t=e instanceof Error?e.message:String(e);return M(n,a,r,`threw`),{ok:!1,error:t}}finally{i(null)}},[e,t,n]);return{inFlight:r,resume:a,end:o,purge:s,archive:(0,j.useCallback)(e=>c(e,`archive`),[c]),unarchive:(0,j.useCallback)(e=>c(e,`unarchive`),[c])}}function F(e){return`code.session.pinned.${e}`}function I(e){if(typeof window>`u`)return new Set;try{let t=window.localStorage.getItem(F(e));if(!t)return new Set;let n=JSON.parse(t);return Array.isArray(n)?new Set(n.filter(e=>typeof e==`string`)):new Set}catch{return new Set}}function ae(e,t){if(!(typeof window>`u`))try{window.localStorage.setItem(F(e),JSON.stringify([...t]))}catch{}}function oe(e){let[t,n]=(0,j.useState)(()=>I(e));(0,j.useEffect)(()=>{n(I(e))},[e]);let r=(0,j.useCallback)(t=>{n(n=>{let r=new Set(n);return r.has(t)?r.delete(t):r.add(t),ae(e,r),r})},[e]);return{pinned:t,isPinned:(0,j.useCallback)(e=>t.has(e),[t]),togglePin:r}}var L=t();function R(e){let{businessName:t,cacheKey:n,conversationId:i,onLaunchBrowser:a,onNavigate:s,onToggleSidebar:d,sidebarOpen:f,onLogout:p,browserLaunching:m}=e,[g,y]=(0,j.useState)(!1),S=(0,j.useRef)(null),C=(0,j.useRef)(null),[w,T]=(0,j.useState)(null),[E,O]=(0,j.useState)(!1),[k,M]=(0,j.useState)(null),[re,N]=(0,j.useState)(null),[P,ie]=(0,j.useState)(null),[F,I]=(0,j.useState)(``);(0,j.useEffect)(()=>{I(window.location.hostname.startsWith(`admin.`)?window.location.origin.replace(`admin.`,`public.`):window.location.origin)},[]),(0,j.useEffect)(()=>{if(!g)return;let e=e=>{S.current&&!S.current.contains(e.target)&&y(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[g]),(0,j.useEffect)(()=>{if(!g)return;let e=e=>{e.key===`Escape`&&y(!1)};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[g]),(0,j.useEffect)(()=>{g&&C.current?.focus()},[g]),(0,j.useEffect)(()=>{if(!g)return;let e=!1;return fetch(`/api/admin/version`).then(e=>e.json()).then(t=>{e||ie(t)}).catch(e=>{console.error(`[admin/version] menu-open client fetch failed:`,e)}),()=>{e=!0}},[g]);let ae=(0,j.useCallback)(()=>{y(e=>{let t=!e;return t&&console.info(`[admin-ui] header-menu-open`),t})},[]),oe=(0,j.useCallback)(()=>{y(!1),a()},[a]),R=(0,j.useCallback)(e=>{y(!1),s(e)},[s]),z=(0,j.useCallback)(async()=>{if(w!==null){T(null),N(null);return}O(!0),M(null);try{let e=await fetch(`/api/admin/agents`);if(!e.ok)throw Error(`Failed to load agents`);T((await e.json()).agents??[])}catch(e){console.error(`[admin/agents] list failed:`,e),M(e instanceof Error?e.message:String(e)),T([])}finally{O(!1)}},[w]),B=(0,j.useCallback)(e=>{N(null),T(t=>t?.filter(t=>t.slug!==e)??null),fetch(`/api/admin/agents/${encodeURIComponent(e)}`,{method:`DELETE`}).catch(e=>console.error(`[admin/agents] delete failed:`,e))},[]),V=(0,j.useCallback)(async()=>{if(y(!1),!n){console.warn(`[admin-ui] header-menu-report-turn cacheKey=null — skipping POST`);return}try{let e=await fetch(`/api/admin/failure-report`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({sessionKey:n,conversationId:i??``,lastUserMessageId:``,lastAssistantMessageId:``,clickTs:new Date().toISOString(),clientSnapshot:{sseReadyState:``,lastEventType:``,lastAppliedMessageId:``}})});console.info(`[admin-ui] header-menu-report-turn ok=${e.ok} status=${e.status}`)}catch(e){console.error(`[admin-ui] header-menu-report-turn failed:`,e)}},[n,i]),se=(0,j.useCallback)(()=>{y(!1),p()},[p]),H=t||u.productName;return(0,L.jsxs)(`header`,{className:`admin-header`,children:[(0,L.jsx)(`button`,{type:`button`,className:`admin-sidebar-toggle`,"aria-label":f?`Hide sidebar`:`Show sidebar`,title:f?`Hide sidebar`:`Show sidebar`,"aria-expanded":f,onClick:d,children:f?(0,L.jsx)(te,{size:20}):(0,L.jsx)(ne,{size:20})}),(0,L.jsxs)(`div`,{className:`chat-header-label`,children:[(0,L.jsx)(`span`,{className:`chat-logo-btn`,"aria-hidden":`true`,children:(0,L.jsx)(`img`,{src:c,alt:``,className:`chat-logo`})}),(0,L.jsx)(`h1`,{className:`chat-tagline`,children:H})]}),(0,L.jsxs)(`div`,{className:`chat-burger-wrap`,ref:S,children:[(0,L.jsx)(`button`,{type:`button`,className:`admin-burger`,onClick:ae,"aria-label":`Menu`,"aria-haspopup":`true`,"aria-expanded":g,children:(0,L.jsx)(ee,{size:20})}),g&&(0,L.jsxs)(`div`,{className:`admin-menu`,role:`menu`,children:[(0,L.jsxs)(`button`,{ref:C,type:`button`,className:`chat-menu-item`,role:`menuitem`,onClick:oe,disabled:m,children:[(0,L.jsx)(o,{size:14}),` Browser`,m&&(0,L.jsx)(b,{size:12,className:`spin`})]}),(0,L.jsxs)(`button`,{type:`button`,className:`chat-menu-item`,role:`menuitem`,onClick:()=>R(`data`),children:[(0,L.jsx)(h,{size:14}),` Data`]}),(0,L.jsxs)(`button`,{type:`button`,className:`chat-menu-item`,role:`menuitem`,onClick:()=>R(`graph`),children:[(0,L.jsx)(D,{size:14}),` Graph`]}),(0,L.jsx)(`div`,{className:`chat-menu-divider`}),(0,L.jsxs)(`button`,{type:`button`,className:`chat-menu-item`,role:`menuitem`,onClick:z,children:[(0,L.jsx)(_,{size:14}),` Public`,E&&(0,L.jsx)(b,{size:12,className:`spin`})]}),w!==null&&(0,L.jsxs)(`div`,{className:`chat-menu-agents`,children:[k&&(0,L.jsx)(`span`,{className:`chat-menu-agent-error`,children:k}),w.length===0&&!k&&(0,L.jsx)(`span`,{className:`chat-menu-agent-empty`,children:`No public agents configured`}),w.map(e=>(0,L.jsxs)(`div`,{className:`chat-menu-item chat-menu-agent-item`,children:[(0,L.jsx)(`span`,{className:`agent-status-dot ${e.status}`}),(0,L.jsxs)(`span`,{className:`agent-text`,children:[(0,L.jsx)(`span`,{className:`agent-display-name`,children:e.displayName}),(0,L.jsxs)(`span`,{className:`agent-slug`,children:[`/`,e.slug]})]}),re===e.slug?(0,L.jsxs)(`span`,{className:`agent-actions agent-confirm`,children:[(0,L.jsx)(`button`,{type:`button`,className:`agent-action-btn agent-confirm-yes`,title:`Confirm delete`,onClick:()=>B(e.slug),children:(0,L.jsx)(r,{size:12})}),(0,L.jsx)(`button`,{type:`button`,className:`agent-action-btn agent-confirm-no`,title:`Cancel`,onClick:()=>N(null),children:(0,L.jsx)(A,{size:12})})]}):(0,L.jsxs)(`span`,{className:`agent-actions`,children:[(0,L.jsx)(`a`,{href:`${F}/${e.slug}`,target:`_blank`,rel:`noopener noreferrer`,className:`agent-action-btn`,title:`Open agent`,onClick:()=>y(!1),children:(0,L.jsx)(_,{size:12})}),(0,L.jsx)(`button`,{type:`button`,className:`agent-action-btn agent-delete-btn`,title:`Delete agent`,onClick:()=>N(e.slug),children:(0,L.jsx)(l,{size:12})})]})]},e.slug))]}),(0,L.jsx)(`div`,{className:`chat-menu-divider`}),(0,L.jsxs)(`div`,{className:`chat-menu-version chat-menu-version-passive`,children:[(0,L.jsx)(v,{size:14}),(0,L.jsxs)(`span`,{className:`version-installed`,children:[P?`v${P.installed}`:`…`,P&&!P.updateAvailable&&(0,L.jsx)(`span`,{className:`version-uptodate-dot`}),P?.updateAvailable&&(0,L.jsx)(`span`,{className:`version-update-dot`})]})]}),(0,L.jsxs)(`button`,{type:`button`,className:`chat-menu-item`,role:`menuitem`,"data-testid":`report-turn`,onClick:V,children:[(0,L.jsx)(v,{size:14}),` Report this turn`]}),(0,L.jsxs)(`button`,{type:`button`,className:`chat-menu-item`,role:`menuitem`,onClick:se,children:[(0,L.jsx)(x,{size:14}),` Log out`]})]})]})]})}var z=`complete onboarding`,B=`maxy-admin-session-key`;function V(){let[e,t]=(0,j.useState)(!1),n=(0,j.useCallback)(async()=>{if(e)return;t(!0);let n=null;try{n=sessionStorage.getItem(B)}catch{}if(!n){console.error(`[admin-ui] onboarding-banner-spawn-failed reason=no-session-key`),window.location.assign(`/`);return}console.info(`[admin-ui] onboarding-banner-click sessionId=pending`);try{let e=await fetch(`/api/admin/claude-sessions?session_key=${encodeURIComponent(n)}`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({initialMessage:z})});if(!e.ok){console.error(`[admin-ui] onboarding-banner-spawn-failed status=${e.status}`),t(!1);return}let r=await e.json();if(!r.sessionId){console.error(`[admin-ui] onboarding-banner-spawn-failed reason=missing-sessionId`),t(!1);return}console.info(`[admin-ui] onboarding-banner-click sessionId=${r.sessionId.slice(0,8)}`),window.location.assign(`/?sessionId=${encodeURIComponent(r.sessionId)}`)}catch(e){console.error(`[admin-ui] onboarding-banner-spawn-error: ${e instanceof Error?e.message:String(e)}`),t(!1)}},[e]);return console.info(`[admin-ui] onboarding-banner-mount onboardingComplete=false`),(0,L.jsx)(`div`,{className:`admin-shell-banner`,role:`status`,"aria-live":`polite`,children:(0,L.jsxs)(`button`,{type:`button`,className:`admin-shell-banner-button`,onClick:n,disabled:e,"data-testid":`onboarding-incomplete-banner`,children:[(0,L.jsx)(s,{size:16,"aria-hidden":`true`}),(0,L.jsx)(`span`,{children:`Onboarding is not complete. Continue with your agent.`})]})})}var se=(()=>null),H=(0,j.forwardRef)(function(e,t){let{businessName:r,cacheKey:i,role:a,userName:o,userAvatar:s,sessions:c,sessionsLoading:h,sessionsError:v,ensureSessionsLoaded:x,refetchSessions:ee,onSelectArtefact:te,onSelectProjects:ne,onSelectPeople:E,onSelectTasks:D,onSelectAgents:A,onCloseMobileDrawer:M,onSelectSession:re,selectedSessionId:N,collapsed:P,onToggleCollapsed:F,mobileDrawerOpen:I,actions:ae,recentsActions:R}=e,[z,B]=(0,j.useState)(null),[V,H]=(0,j.useState)(null),[U,W]=(0,j.useState)(!1);(0,j.useEffect)(()=>{x()},[x]);let G=(0,j.useRef)(null),[K,ce]=(0,j.useState)(!1),[le,q]=(0,j.useState)(null),ue=u.productName,de=typeof o==`string`?o:o===null?`name unavailable`:r||ue,fe=(de.trim().charAt(0)||`?`).toUpperCase(),pe=oe(u.hostname),me=(0,j.useMemo)(()=>{let e=c;if(pe.pinned.size===0)return e;let t=[],n=[];for(let r of e)(pe.pinned.has(r.sessionId)?t:n).push(r);return[...t,...n]},[c,pe.pinned]),he=me.length,[J,ge]=(0,j.useState)(`chat`),[Y,_e]=(0,j.useState)([]),[ve,X]=(0,j.useState)(!1),[ye,be]=(0,j.useState)(null),[xe,Se]=(0,j.useState)(!1);(0,j.useImperativeHandle)(t,()=>({patchArtefact(e,t){_e(n=>n.map(n=>n.id===e?{...n,...t}:n))}}),[]);let[Z,Ce]=(0,j.useState)(!1),we=(0,j.useRef)(null);(0,j.useEffect)(()=>{if(!Z)return;function e(e){we.current&&!we.current.contains(e.target)&&Ce(!1)}return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[Z]);let Te=(0,j.useCallback)(async()=>{if(i){Se(!0),be(null);try{let e=await fetch(`/api/admin/sidebar-artefacts?session_key=${encodeURIComponent(i)}`);if(!e.ok)throw Error(`status ${e.status}`);_e((await e.json()).artefacts??[]),X(!0)}catch(e){let t=e instanceof Error?e.message:String(e);be(`Failed to load artefacts: ${t}`),console.error(`[admin-ui] sidebar-artefacts fetch failed: ${t}`)}finally{Se(!1)}}},[i]),Ee=()=>{ge(`chat`),console.info(`[admin-ui] sidebar-nav surface=sessions count=${he}`)},De=()=>{ge(`artefacts`),console.info(`[admin-ui] sidebar-nav surface=artefacts count=${ve?Y.length:0} collapsed=${P}`),P&&F(),ve||Te()},Q=P?24:16,Oe=J===`chat`?`Sessions`:`Artefacts`,ke=J===`chat`?h?`…`:String(he):xe?`…`:String(Y.length),Ae=J===`chat`?h:xe,je=()=>{J===`chat`?ee():Te(),console.info(`[admin-ui] sidebar-refresh surface=${J}`)},Me=(0,j.useCallback)(async()=>{if(!(K||!i)){ce(!0),q(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)){q(t.error??`POST returned ${e.status}`);return}console.info(`[admin-ui] sidebar-new-session pid=${t.pid} sessionId=${t.sessionId}`),R.setSessions(e=>[t,...e])}catch(e){let t=e instanceof Error?e.message:String(e);q(t),console.error(`[admin-ui] sidebar-new-session failed:`,t)}finally{ce(!1)}}},[i,K,R]),$=ie(i,R,`sidebar`),Ne=(0,j.useCallback)(async e=>{let t=await $.resume(e);t.ok||console.error(`[admin-ui] sidebar-resume failed: ${t.error}`)},[$]),Pe=(0,j.useCallback)(async e=>{W(!0),H(null);let t=await $.purge(e);t.ok?B(null):H(t.error??`purge failed`),W(!1)},[$]),Fe=(0,j.useCallback)(async e=>{let t=await $.end(e);t.ok||console.error(`[admin-ui] sidebar-end-session failed: ${t.error}`)},[$]);return(0,L.jsxs)(`aside`,{className:`side`,children:[(0,L.jsx)(`div`,{className:`side-head`,children:(0,L.jsx)(`button`,{className:`icon-btn side-head-toggle`,title:I?`Close sidebar`:P?`Expand sidebar`:`Collapse sidebar`,type:`button`,"aria-label":I?`Close sidebar`:P?`Expand sidebar`:`Collapse sidebar`,onClick:()=>{I?(console.info(`[admin-ui] sidebar-head-toggle action=close-drawer state=closed`),M()):(console.info(`[admin-ui] sidebar-head-toggle action=toggle-collapsed state=${P?`expanded`:`collapsed`}`),F())},children:P?(0,L.jsx)(C,{size:28}):(0,L.jsx)(S,{size:28})})}),(0,L.jsxs)(`nav`,{className:`side-nav`,children:[(0,L.jsxs)(`button`,{type:`button`,className:`nav-row${J===`chat`?` active`:``}`,onClick:Ee,children:[(0,L.jsx)(O,{size:Q}),(0,L.jsx)(`span`,{className:`label`,children:`Sessions`}),(0,L.jsx)(`span`,{className:`kbd`})]}),(0,L.jsxs)(`button`,{type:`button`,className:`nav-row`,onClick:()=>{console.info(`[admin-ui] sidebar-nav surface=people`),E(),M()},children:[(0,L.jsx)(k,{size:Q}),(0,L.jsx)(`span`,{className:`label`,children:`People`}),(0,L.jsx)(`span`,{className:`kbd`})]}),(0,L.jsxs)(`button`,{type:`button`,className:`nav-row`,onClick:()=>{console.info(`[admin-ui] sidebar-nav surface=agents`),A(),M()},children:[(0,L.jsx)(f,{size:Q}),(0,L.jsx)(`span`,{className:`label`,children:`Agents`}),(0,L.jsx)(`span`,{className:`kbd`})]}),(0,L.jsxs)(`button`,{type:`button`,className:`nav-row`,onClick:()=>{console.info(`[admin-ui] sidebar-nav surface=projects`),ne(),M()},children:[(0,L.jsx)(p,{size:Q}),(0,L.jsx)(`span`,{className:`label`,children:`Projects`}),(0,L.jsx)(`span`,{className:`kbd`})]}),(0,L.jsxs)(`button`,{type:`button`,className:`nav-row`,onClick:()=>{console.info(`[admin-ui] sidebar-nav surface=tasks`),D(),M()},children:[(0,L.jsx)(y,{size:Q}),(0,L.jsx)(`span`,{className:`label`,children:`Tasks`}),(0,L.jsx)(`span`,{className:`kbd`})]}),(0,L.jsxs)(`button`,{type:`button`,className:`nav-row${J===`artefacts`?` active`:``}`,onClick:De,children:[(0,L.jsx)(d,{size:Q}),(0,L.jsx)(`span`,{className:`label`,children:`Artefacts`}),(0,L.jsx)(`span`,{className:`kbd`})]})]}),(0,L.jsxs)(`div`,{className:`side-list`,ref:G,children:[(0,L.jsxs)(`div`,{className:`group-head`,children:[(0,L.jsx)(`span`,{children:Oe}),(0,L.jsxs)(`span`,{className:`group-head-meta`,children:[J===`chat`&&(0,L.jsx)(`button`,{type:`button`,className:`group-head-refresh`,title:`New session`,"aria-label":`New session`,onClick:()=>void Me(),disabled:K||!i,children:K?(0,L.jsx)(b,{size:12,className:`spinning`}):(0,L.jsx)(w,{size:12})}),(0,L.jsx)(`button`,{type:`button`,className:`group-head-refresh`,title:`Refresh ${Oe.toLowerCase()}`,"aria-label":`Refresh ${Oe.toLowerCase()}`,onClick:je,disabled:Ae,children:(0,L.jsx)(T,{size:12,className:Ae?`spinning`:void 0})}),(0,L.jsx)(`span`,{children:ke})]})]}),le&&J===`chat`&&(0,L.jsx)(`div`,{className:`conv`,style:{color:`var(--text-tertiary)`,cursor:`default`},children:le}),J===`chat`&&(0,L.jsxs)(L.Fragment,{children:[v&&(0,L.jsx)(`div`,{className:`conv`,style:{color:`var(--text-tertiary)`,cursor:`default`},children:v}),me.map(e=>{let t=e.status===`ended`,r=t?`${e.turnCount}${e.capped?`+`:``} turns · ended`:`pid ${e.pid??`?`}`;return(0,L.jsxs)(`div`,{className:`conv${N===e.sessionId?` active`:``}`,children:[(0,L.jsxs)(`button`,{type:`button`,className:`conv-name-button`,onClick:()=>{re(e.sessionId),M()},title:`Show metadata`,children:[(0,L.jsx)(O,{size:12,className:`conv-channel-icon`,"aria-label":`claude session`}),(0,L.jsxs)(`span`,{className:`conv-name`,children:[e.displayName,` · `,r]})]}),t?(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`button`,{type:`button`,className:`conversations-action`,title:`Resume session`,"aria-label":`Resume session`,onClick:()=>void Ne(e.sessionId),children:(0,L.jsx)(n,{size:13})}),(0,L.jsx)(`button`,{type:`button`,className:`conversations-action`,title:`Purge JSONL`,"aria-label":`Purge JSONL`,onClick:()=>{H(null),B({sessionId:e.sessionId,displayName:e.displayName})},children:(0,L.jsx)(l,{size:13})})]}):(0,L.jsxs)(L.Fragment,{children:[(0,L.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,L.jsx)(_,{size:13})}),(0,L.jsx)(`button`,{type:`button`,className:`conversations-action`,title:`End session`,"aria-label":`End session`,onClick:()=>void Fe(e.sessionId),children:(0,L.jsx)(m,{size:13})})]})]},e.sessionId)})]}),J===`artefacts`&&(0,L.jsxs)(L.Fragment,{children:[ye&&(0,L.jsx)(`div`,{className:`conv`,style:{color:`var(--text-tertiary)`,cursor:`default`},children:ye}),ve&&!ye&&Y.length===0&&(0,L.jsx)(`div`,{className:`conv`,style:{color:`var(--text-tertiary)`,cursor:`default`},children:`No artefacts yet`}),Y.map(e=>(0,L.jsxs)(`button`,{type:`button`,className:`conv`,onClick:()=>{te({docId:e.id,name:e.name,content:e.content,editable:e.editable,mimeType:e.mimeType,skipReason:e.skipReason},`sidebar-artefacts`),M()},children:[(0,L.jsx)(`span`,{className:`conv-name`,children:e.name}),(0,L.jsx)(`span`,{className:`conv-kind`,"data-kind":e.kind===`agent-template`?`agent`:`doc`,children:e.kind===`agent-template`?`agent`:`doc`})]},e.id))]})]}),(0,L.jsxs)(`div`,{className:`side-foot`,ref:we,children:[(0,L.jsx)(`div`,{className:`avatar`,children:s?(0,L.jsx)(`img`,{src:s,alt:de}):fe}),(0,L.jsxs)(`div`,{className:`who`,children:[(0,L.jsx)(`span`,{className:`name`,children:de}),(0,L.jsx)(`span`,{className:`role`,children:a??`operator`})]}),(0,L.jsx)(`button`,{className:`icon-btn side-foot-actions-trigger`,title:`Conversation actions`,type:`button`,"aria-label":`Conversation actions`,"aria-haspopup":`true`,"aria-expanded":Z,onClick:()=>Ce(e=>!e),children:(0,L.jsx)(g,{size:Q})}),Z&&(0,L.jsx)(`div`,{className:`side-foot-actions-popover`,children:(0,L.jsx)(se,{...ae,onAfterAction:()=>Ce(!1)})})]}),z&&(0,L.jsx)(`div`,{role:`dialog`,"aria-modal":`true`,"aria-labelledby":`purge-confirm-title`,className:`modal-overlay`,onClick:e=>{e.target===e.currentTarget&&!U&&B(null)},children:(0,L.jsxs)(`div`,{className:`modal-card`,children:[(0,L.jsx)(`h3`,{id:`purge-confirm-title`,style:{margin:0,marginBottom:8,fontSize:16,fontWeight:600},children:`Purge session JSONL?`}),(0,L.jsxs)(`p`,{style:{margin:0,marginBottom:8,fontSize:13},children:[`This hard-deletes the transcript and sidecar for `,(0,L.jsx)(`strong`,{children:z.displayName}),`. The action cannot be undone.`]}),V&&(0,L.jsx)(`p`,{style:{margin:0,marginBottom:8,fontSize:12,color:`var(--text-tertiary)`},children:V}),(0,L.jsxs)(`div`,{className:`modal-action-row`,children:[(0,L.jsx)(`button`,{type:`button`,className:`modal-action-btn`,disabled:U,onClick:()=>B(null),children:`Cancel`}),(0,L.jsx)(`button`,{type:`button`,className:`modal-action-btn`,"data-variant":`danger`,disabled:U,onClick:()=>void Pe(z.sessionId),children:U?(0,L.jsx)(b,{size:13,className:`spinning`}):`Purge`})]})]})})]})});function U(e){let[t,n]=(0,j.useState)([]),[r,i]=(0,j.useState)(!1),[a,o]=(0,j.useState)(null),[s,c]=(0,j.useState)(null),l=(0,j.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,j.useEffect)(()=>{e||(c(null),n([]),o(null))},[e]);let u=(0,j.useCallback)(()=>l(!1),[l]),d=(0,j.useCallback)(()=>l(!0),[l]),f=(0,j.useRef)(d);return(0,j.useEffect)(()=>{f.current=d},[d]),(0,j.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 W=`admin-sidebar-collapsed`,G=`admin-sidebar-drawer-open`;function K(){if(typeof window>`u`)return!1;try{return window.sessionStorage.getItem(W)===`1`}catch{return!1}}function ce(e){if(!(typeof window>`u`))try{e?window.sessionStorage.setItem(W,`1`):window.sessionStorage.removeItem(W)}catch{}}function le(){if(typeof window>`u`)return!1;try{return window.sessionStorage.getItem(G)===`1`}catch{return!1}}function q(e){if(!(typeof window>`u`))try{e?window.sessionStorage.setItem(G,`1`):window.sessionStorage.removeItem(G)}catch{}}var ue=720;function de(e){let{cacheKey:t,businessName:n,conversationId:r,onLaunchBrowser:i,onLogout:a,browserLaunching:o=!1,onboardingComplete:s,userName:c,userAvatar:l,role:u,selectedSessionId:d,onSelectSession:f,onSelectArtefact:p,dataArtefact:m=`closed`,children:h,footer:g}=e,[_,v]=(0,j.useState)(()=>K()),[y,b]=(0,j.useState)(()=>le()),[x,ee]=(0,j.useState)(()=>typeof window<`u`&&window.matchMedia(`(max-width: ${ue}px)`).matches);(0,j.useEffect)(()=>{if(typeof window>`u`)return;let e=window.matchMedia(`(max-width: ${ue}px)`),t=e=>ee(e.matches);return e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[]);let S=(0,j.useCallback)(e=>{ce(e),v(e)},[]),C=(0,j.useCallback)(e=>{q(e),b(e)},[]);(0,j.useEffect)(()=>{if(typeof window>`u`)return;let e=window.location?.pathname??``;console.info(`[admin-ui] shell-mount route=${e} collapsed=${_} drawer=${y}`)},[]);let te=x?y:!_,ne=(0,j.useCallback)(()=>{if(!(typeof window>`u`))if(window.matchMedia(`(max-width: ${ue}px)`).matches){let e=y;console.info(`[admin-ui] header-sidebar-toggle from=${e?`open`:`closed`} mode=drawer`),C(!e)}else{let e=_;console.info(`[admin-ui] header-sidebar-toggle from=${e?`closed`:`open`} mode=collapse`),S(!e)}},[_,y,S,C]),w=(0,j.useCallback)(e=>{console.info(`[admin-ui] header-menu-nav target=${e}`),window.location.href=e===`data`?`/data`:`/graph`},[]),T=(0,j.useCallback)(()=>{},[]),E=s===!1,D=U(t),O=(0,j.useCallback)(e=>{if(f){f(e);return}window.location.assign(`/?sessionId=${encodeURIComponent(e)}`)},[f]),k=(0,j.useCallback)(e=>{p&&p(e)},[p]),A={collapsed:_,mobileDrawerOpen:y,sidebarOpen:te,onToggleSidebar:ne,setMobileDrawerOpen:C,sessionsState:D};return(0,L.jsxs)(`div`,{className:`admin-shell admin-page admin-shell-root`,children:[(0,L.jsx)(R,{businessName:n,cacheKey:t,conversationId:r,onLaunchBrowser:i??T,onNavigate:w,onToggleSidebar:ne,sidebarOpen:te,onLogout:a,browserLaunching:o}),E&&(0,L.jsx)(V,{}),(0,L.jsxs)(`div`,{className:`platform${y?` menu-open`:``}${_?` sidebar-collapsed`:``}`,"data-artefact":m,children:[(0,L.jsx)(H,{businessName:n,cacheKey:t,role:u??null,userName:c,userAvatar:l??null,sessions:D.sessions,sessionsLoading:D.loading,sessionsError:D.error,ensureSessionsLoaded:D.ensureLoaded,refetchSessions:D.refetch,onSelectArtefact:k,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:()=>C(!1),onSelectSession:O,selectedSessionId:d??null,collapsed:_,onToggleCollapsed:()=>{},mobileDrawerOpen:y,actions:{},recentsActions:{setSessions:D.setSessions,refetch:D.refetch}}),typeof h==`function`?h(A):h]}),y&&(0,L.jsx)(`div`,{className:`sidebar-backdrop menu-open`,"aria-hidden":`true`,onClick:()=>C(!1)}),g]})}var fe=`maxy-admin-session`,pe=typeof BroadcastChannel<`u`;function me(e){if(typeof e!=`object`||!e)return!1;let t=e;return t.type===`rotation`&&typeof t.newKey==`string`&&t.newKey.length>0&&(t.surface===`chat`||t.surface===`graph`||t.surface===`data`||t.surface===`sessions`)&&typeof t.ts==`number`}function he(e){if(!pe)return()=>{};let t=new BroadcastChannel(fe),n=t=>{if(!me(t.data)){console.warn(`[admin-session-broadcast] outcome=received-malformed payload=${JSON.stringify(t.data)}`);return}e(t.data)};return t.addEventListener(`message`,n),()=>{t.removeEventListener(`message`,n),t.close()}}var J=`maxy-admin-session-key`;function ge(e,t){return`${e}${e.includes(`?`)?`&`:`?`}session_key=${encodeURIComponent(t)}`}async function Y(e){let t;try{t=await e.clone().json()}catch{return`parse-failed`}if(typeof t!=`object`||!t)return`unknown-401`;let n=t.code;return n===`session-missing`||n===`session-not-registered`||n===`session-expired-age`||n===`grant-expired`?n:`unknown-401`}function _e(){try{return sessionStorage.getItem(J)}catch{return null}}function ve(e){let{initialCacheKey:t,surface:n}=e,[r,i]=(0,j.useState)(t),a=(0,j.useRef)(t);(0,j.useEffect)(()=>{a.current=r},[r]),(0,j.useEffect)(()=>{t!==a.current&&(i(t),a.current=t,s(e=>e+1))},[t]);let[o,s]=(0,j.useState)(0),[c,l]=(0,j.useState)(null);(0,j.useEffect)(()=>he(e=>{let t=a.current.slice(0,8),r=e.newKey.slice(0,8);e.newKey!==a.current&&(console.log(`[admin-session-broadcast] outcome=received oldKey=${t} newKey=${r} surface=${n} senderSurface=${e.surface}`),i(e.newKey),s(e=>e+1),l(null))}),[n]);let u=(0,j.useCallback)(()=>{try{sessionStorage.removeItem(J)}catch{}window.location.href=`/`},[]);return{adminFetch:(0,j.useCallback)(async(e,t)=>{let r=a.current,o=ge(e,r),c=await fetch(o,t);if(c.status!==401)return c;let d=await Y(c);if(d===`session-missing`)return console.warn(`[useAdminFetch] outcome=redirect-to-login reason=${d} surface=${n} path=${e}`),u(),c;if(d!==`session-not-registered`)return console.warn(`[useAdminFetch] outcome=redirect-to-login reason=${d} surface=${n} path=${e}`),l({message:`Your admin session has expired. Click to reload and sign in.`,reason:d}),c;let f=_e();if(!f||f===r)return console.warn(`[useAdminFetch] outcome=redirect-to-login reason=session-not-registered-no-fresh-key surface=${n} path=${e}`),l({message:`Your admin session was renewed in another tab. Click to reload.`,reason:`session-not-registered`}),c;i(f),a.current=f,s(e=>e+1),console.log(`[useAdminFetch] outcome=retry-after-rotation oldKey=${r.slice(0,8)} newKey=${f.slice(0,8)} surface=${n} path=${e}`);let p=ge(e,f),m=await fetch(p,t);return m.status===401&&(console.warn(`[useAdminFetch] outcome=redirect-to-login reason=second-401-after-retry surface=${n} path=${e}`),l({message:`Your admin session has expired. Click to reload and sign in.`,reason:`session-not-registered`})),m},[u,n]),cacheKey:r,sessionRefetchNonce:o,banner:c,reloadToLogin:u}}var X={LocalBusiness:`#4F6B8A`,Service:`#6B85A0`,PriceSpecification:`#8AA0B8`,OpeningHoursSpecification:`#A8BACE`,Organization:`#8A6B47`,Person:`#B86E4A`,UserProfile:`#D08960`,Preference:`#DFA67A`,AdminUser:`#8C5230`,AccessGrant:`#66381F`,KnowledgeDocument:`#6E8A5A`,ConversationArchive:`#82A06A`,Section:`#8AA876`,Chunk:`#A6C194`,DigitalDocument:`#5A7548`,CreativeWork:`#B5C9A2`,Question:`#C7D6B5`,FAQPage:`#95B385`,DefinedTerm:`#76906A`,Review:`#3F5A2E`,ImageObject:`#A0BB8C`,Conversation:`#6B5A85`,AdminConversation:`#4F4070`,PublicConversation:`#8A75A8`,Message:`#6B7280`,UserMessage:`#DFA67A`,AssistantMessage:`#C9A876`,ToolCall:`#B5ABCB`,Task:`#B0617A`,Project:`#8E4A60`,Event:`#C68095`,Workflow:`#3A6F77`,WorkflowStep:`#5A8E96`,WorkflowRun:`#7AAAB2`,StepResult:`#9CC4CB`,OnboardingState:`#7A5A8A`,Email:`#6F7F4A`,EmailAccount:`#91A063`,Agent:`#B8893D`},ye=`#94A3B8`;Object.freeze(Object.keys(X)),Object.freeze(new Set([`Chunk`,`GraphPreference`]));var be=Object.freeze(new Set(`LocalBusiness.Service.PriceSpecification.OpeningHoursSpecification.Organization.Person.UserProfile.Preference.AdminUser.AccessGrant.KnowledgeDocument.DigitalDocument.CreativeWork.Question.FAQPage.DefinedTerm.Review.ImageObject.AdminConversation.PublicConversation.Task.Project.Event.Workflow.OnboardingState.Email.EmailAccount.Agent`.split(`.`)));Object.freeze(new Set([`ToolCall`,`StepResult`,`WorkflowStep`,`WorkflowRun`])),Object.freeze(new Set([`HAS_TOOL_CALL`,`RUN_OF`,`HAS_STEP`,`HAS_RESULT`]));function xe(e){for(let t=1;t<e.length;t++)if(Object.prototype.hasOwnProperty.call(X,e[t]))return e[t];return e[0]??null}function Se(e){return X[e]??`#94A3B8`}function Z(e){let t=xe(e),n=t?Se(t):ye,r=0;for(let t=1;t<e.length;t++)Object.prototype.hasOwnProperty.call(X,e[t])&&r++;return{displayLabel:t,colour:n,driftCandidates:r}}export{h as _,ve as a,ie as c,E as d,T as f,g,_ as h,Z as i,A as l,b as m,Se as n,de as o,w as p,xe as r,oe as s,be as t,D as u,m as v};
@@ -1 +0,0 @@
1
- import{h as e}from"./src-B6XdH6xq.js";import"./chunk-ICPOFSXX-hEbwu-pe.js";import"./dist-Bd4S37oi.js";import"./chunk-5PVQY5BW-NSyzpXRy.js";import"./chunk-U2HBQHQK-D7TKgUo0.js";import"./chunk-BSJP7CBP-DP7LTBll.js";import"./chunk-ZZ45TVLE-DZvOYDY6.js";import"./chunk-55IACEB6-BRJOZLpU.js";import"./chunk-EDXVE4YY-voNwxbDs.js";import"./chunk-X2U36JSP-BvPUQEPm.js";import"./chunk-5FUZZQ4R-CXQRGTQE.js";import"./chunk-ENJZ2VHE-CMEMPzYY.js";import"./chunk-336JU56O-B7oQ3g1c.js";import{i as t,n,r,t as i}from"./chunk-OYMX7WX6-DxskDrLs.js";var a={parser:n,get db(){return new i(2)},renderer:r,styles:t,init:e(e=>{e.state||={},e.state.arrowMarkerAbsolute=e.arrowMarkerAbsolute},`init`)};export{a as diagram};