elanous 0.2.10 → 0.2.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.
- package/apps/pwa/out/404/index.html +1 -1
- package/apps/pwa/out/404.html +1 -1
- package/apps/pwa/out/_next/static/-6XrAoD3eU7NyMHAE4xPS/_buildManifest.js +1 -0
- package/apps/pwa/out/_next/static/chunks/1147-466ec15afacc1a65.js +1 -0
- package/apps/pwa/out/_next/static/chunks/1159-0c5ef8bc21cb6afb.js +1 -0
- package/apps/pwa/out/_next/static/chunks/1394-ee3795b112907122.js +1 -0
- package/apps/pwa/out/_next/static/chunks/1452.93700483b9d4fc61.js +9 -0
- package/apps/pwa/out/_next/static/chunks/{6062-73e68343a9814f6a.js → 1829-b453a1b22d3999bb.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/2176-c379e3ebce874151.js +1 -0
- package/apps/pwa/out/_next/static/chunks/2426.8c6ee0c668d53def.js +1 -0
- package/apps/pwa/out/_next/static/chunks/3170-7ec60a56fa0e4728.js +1 -0
- package/apps/pwa/out/_next/static/chunks/3278-ae6ef084769f6195.js +1 -0
- package/apps/pwa/out/_next/static/chunks/3454-988a53dac60a1763.js +1 -0
- package/apps/pwa/out/_next/static/chunks/3638-aa80b4641ea439db.js +1 -0
- package/apps/pwa/out/_next/static/chunks/3735-fe3402553ac1c9c6.js +1 -0
- package/apps/pwa/out/_next/static/chunks/3869-3cd46526879f454c.js +1 -0
- package/apps/pwa/out/_next/static/chunks/390.c373e31b3b9d0c41.js +5 -0
- package/apps/pwa/out/_next/static/chunks/3992-2e522a8ac5f2afde.js +25 -0
- package/apps/pwa/out/_next/static/chunks/4215-c9d91dd644ec1719.js +1 -0
- package/apps/pwa/out/_next/static/chunks/4508-5d0161d1e724d735.js +1 -0
- package/apps/pwa/out/_next/static/chunks/4685-c3c1c625b71accd1.js +1 -0
- package/apps/pwa/out/_next/static/chunks/4733-623a79345b171e1c.js +1 -0
- package/apps/pwa/out/_next/static/chunks/4883.3bd969ea1d3aaaff.js +2 -0
- package/apps/pwa/out/_next/static/chunks/5532.6899a12958a89b72.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{8067-87ce253ec2f23697.js → 5845-e6c003ce8d5fd36a.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/5978-b27004c677119115.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{8046cadf-211ca3c0e00f2b72.js → 5cd7e3a9-404fd6b8d0ecd44c.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/6048-4c5c33579bc4ef78.js +1 -0
- package/apps/pwa/out/_next/static/chunks/6303-422dbf0f67c72aac.js +1 -0
- package/apps/pwa/out/_next/static/chunks/6751-bb3595948b2e311b.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7274-19b7279f18b47ab3.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7277-0b2fc7c16ba2d64b.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{4323.c5dfb6f503304775.js → 7334.a6679d9168f37aa8.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/7551-a0e0707b79164ddd.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7758-0b018a9e4fc56200.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7777-79f845045aa1ed86.js +1 -0
- package/apps/pwa/out/_next/static/chunks/79f8be9e-957d68913b590b08.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8025-cc24ee5d8f2fb6f8.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8039-df92e08fede5de8f.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8206-c6684dcde12be721.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8421-1c4acfb1395a0edf.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8605-0259994816604c49.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8725.bf46bb1395dd0fa2.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8734-252d511cd276c0dc.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8834-ca1cb09c1cb1a6bf.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{2415.ed6428ff334c7ce2.js → 9269.d2a4795bc6812717.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/9538-2816b90923606459.js +1 -0
- package/apps/pwa/out/_next/static/chunks/9656-c1540088f5859c80.js +1 -0
- package/apps/pwa/out/_next/static/chunks/9906-482c6619b3fdda20.js +1 -0
- package/apps/pwa/out/_next/static/chunks/9920-5cfdc5e8fd209825.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/_not-found/page-d16993889b125c42.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/approvals/page-cb169620945d1952.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/autopilot/page-cefe8169e36cf62a.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/board/page-d2e35228bc497119.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/botlab/{page-54b32bd27726588d.js → page-5c05b0da4bc1392c.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/app/bots/page-e0ccdb576812b523.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/chat/page-813c4a52c9d05ca8.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/consult/page-4731f2c215358937.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/control/page-a022b257950f39e6.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/design-check/page-a2ffc717e04b8b0a.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/editor/page-b59ee4e70fc18fcf.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/exec/page-a67e11ba962337b5.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/field/page-c172dabd796eb7a3.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/healthz/route-d16993889b125c42.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/inside/page-1efd0cb9e0ed9d13.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/intake/page-d5dc7ff69a37b4cf.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/layout-e71c84189e8c683e.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/live/page-1d6a533ce5a6efcb.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/market/page-dfca9b7d2de0b135.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/missions/[id]/page-793fa536b3a6ef37.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/morning/page-6dd3bfbbde2a5c2c.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/not-found-490653e8d4cc8852.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/observatory/page-77447356baad75d2.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/ops/checklist/page-29e961191f6057df.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/ops/release/page-c822f55b884d9104.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/ops/seats/page-fa4ccfc432424e52.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/outputs/page-6d604227e1664b71.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/page-9c7e8f744a765daf.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/reflection/page-4048543b4b7ad5e0.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/scheduler/page-4c3a3126abed551a.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/sessions/page-64b0aecb1ca75e75.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/settings/devices/page-4292d0149020e8a7.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/settings/page-db14d0be7f1c460c.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/setup/done/page-e5d8072cd7cfef73.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/setup/layout-d16993889b125c42.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/setup/page-9547b5cec7cf76bf.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/share/page-e6dcb83265530636.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/showroom/page-45248f08d6aecae5.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/tasks/page-2cddeb9e2aeedc55.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/term/page-e297866051595d81.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/today/page-baba2e047872fb0f.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/trace/page-e895da4ec9cac345.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/vault/page-4344faf20216233b.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-698bb29f11864b89.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/workflows/page-bd6a6dc1ddc273f2.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/workspace/page-2e9e2fb01c9da1c9.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/worktrees/page-d62ceb13411ebba4.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{2ea96958-e8c7e112de50b067.js → f48170cc-d05d28bf87a43bf4.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/framework-172630e6aa5e2d7f.js +1 -0
- package/apps/pwa/out/_next/static/chunks/main-app-f0fe2d7477845181.js +1 -0
- package/apps/pwa/out/_next/static/chunks/main-fc98ac70b44eccb0.js +1 -0
- package/apps/pwa/out/_next/static/chunks/pages/_app-5bd7f10271f72413.js +1 -0
- package/apps/pwa/out/_next/static/chunks/pages/_error-97d0d85ea05fef9b.js +1 -0
- package/apps/pwa/out/_next/static/chunks/webpack-9e4d02d567b98240.js +1 -0
- package/apps/pwa/out/_next/static/css/128fb7fb670b2fbf.css +1 -0
- package/apps/pwa/out/approvals/index.html +1 -1
- package/apps/pwa/out/approvals/index.txt +23 -23
- package/apps/pwa/out/autopilot/index.html +1 -1
- package/apps/pwa/out/autopilot/index.txt +23 -23
- package/apps/pwa/out/board/index.html +1 -1
- package/apps/pwa/out/board/index.txt +23 -23
- package/apps/pwa/out/botlab/index.html +1 -1
- package/apps/pwa/out/botlab/index.txt +22 -22
- package/apps/pwa/out/bots/index.html +1 -1
- package/apps/pwa/out/bots/index.txt +22 -22
- package/apps/pwa/out/chat/index.html +1 -1
- package/apps/pwa/out/chat/index.txt +22 -22
- package/apps/pwa/out/consult/index.html +1 -1
- package/apps/pwa/out/consult/index.txt +23 -23
- package/apps/pwa/out/control/index.html +1 -1
- package/apps/pwa/out/control/index.txt +23 -23
- package/apps/pwa/out/design-check/index.html +1 -1
- package/apps/pwa/out/design-check/index.txt +23 -23
- package/apps/pwa/out/editor/index.html +1 -1
- package/apps/pwa/out/editor/index.txt +23 -23
- package/apps/pwa/out/exec/index.html +1 -1
- package/apps/pwa/out/exec/index.txt +23 -23
- package/apps/pwa/out/field/index.html +1 -1
- package/apps/pwa/out/field/index.txt +23 -23
- package/apps/pwa/out/healthz +1 -1
- package/apps/pwa/out/index.html +1 -1
- package/apps/pwa/out/index.txt +22 -22
- package/apps/pwa/out/inside/index.html +1 -0
- package/apps/pwa/out/inside/index.txt +31 -0
- package/apps/pwa/out/intake/index.html +1 -1
- package/apps/pwa/out/intake/index.txt +23 -23
- package/apps/pwa/out/live/index.html +1 -1
- package/apps/pwa/out/live/index.txt +23 -23
- package/apps/pwa/out/market/index.html +1 -1
- package/apps/pwa/out/market/index.txt +22 -22
- package/apps/pwa/out/missions/placeholder/index.html +1 -1
- package/apps/pwa/out/missions/placeholder/index.txt +22 -22
- package/apps/pwa/out/morning/index.html +1 -1
- package/apps/pwa/out/morning/index.txt +23 -23
- package/apps/pwa/out/observatory/index.html +1 -1
- package/apps/pwa/out/observatory/index.txt +23 -23
- package/apps/pwa/out/ops/checklist/index.html +1 -1
- package/apps/pwa/out/ops/checklist/index.txt +22 -22
- package/apps/pwa/out/ops/release/index.html +1 -1
- package/apps/pwa/out/ops/release/index.txt +22 -22
- package/apps/pwa/out/ops/seats/index.html +1 -1
- package/apps/pwa/out/ops/seats/index.txt +22 -22
- package/apps/pwa/out/outputs/index.html +1 -0
- package/apps/pwa/out/outputs/index.txt +30 -0
- package/apps/pwa/out/reflection/index.html +1 -1
- package/apps/pwa/out/reflection/index.txt +23 -23
- package/apps/pwa/out/scheduler/index.html +1 -1
- package/apps/pwa/out/scheduler/index.txt +23 -23
- package/apps/pwa/out/sessions/index.html +1 -1
- package/apps/pwa/out/sessions/index.txt +22 -22
- package/apps/pwa/out/settings/devices/index.html +1 -1
- package/apps/pwa/out/settings/devices/index.txt +23 -23
- package/apps/pwa/out/settings/index.html +1 -1
- package/apps/pwa/out/settings/index.txt +23 -23
- package/apps/pwa/out/setup/done/index.html +1 -1
- package/apps/pwa/out/setup/done/index.txt +23 -23
- package/apps/pwa/out/setup/index.html +1 -1
- package/apps/pwa/out/setup/index.txt +23 -23
- package/apps/pwa/out/share/index.html +1 -1
- package/apps/pwa/out/share/index.txt +23 -23
- package/apps/pwa/out/showroom/index.html +1 -1
- package/apps/pwa/out/showroom/index.txt +22 -22
- package/apps/pwa/out/tasks/index.html +1 -1
- package/apps/pwa/out/tasks/index.txt +23 -23
- package/apps/pwa/out/term/index.html +1 -1
- package/apps/pwa/out/term/index.txt +23 -24
- package/apps/pwa/out/today/index.html +1 -1
- package/apps/pwa/out/today/index.txt +23 -23
- package/apps/pwa/out/trace/index.html +1 -1
- package/apps/pwa/out/trace/index.txt +23 -23
- package/apps/pwa/out/vault/index.html +1 -1
- package/apps/pwa/out/vault/index.txt +23 -23
- package/apps/pwa/out/workflows/chat-ui/index.html +1 -1
- package/apps/pwa/out/workflows/chat-ui/index.txt +23 -23
- package/apps/pwa/out/workflows/index.html +1 -1
- package/apps/pwa/out/workflows/index.txt +23 -23
- package/apps/pwa/out/workspace/index.html +1 -1
- package/apps/pwa/out/workspace/index.txt +23 -24
- package/apps/pwa/out/worktrees/index.html +1 -1
- package/apps/pwa/out/worktrees/index.txt +23 -23
- package/graphs/context/nightly-condense.yaml +21 -0
- package/graphs/context/recipes.yaml +12 -0
- package/graphs/demo/inside-seed.yaml +20 -0
- package/graphs/demo/recipes.yaml +12 -0
- package/graphs/drafts/draft-cleanup.yaml +19 -0
- package/graphs/drafts/recipes.yaml +23 -0
- package/graphs/intake/intake-daily.yaml +2 -1
- package/graphs/ops/recipes.yaml +3 -0
- package/graphs/ops/secret-exposure.yaml +24 -0
- package/graphs/release/recipes.yaml +3 -0
- package/graphs/release/release-loop.yaml +4 -1
- package/graphs/video/explainer-line.yaml +2 -2
- package/package.json +2 -1
- package/plugins/card-followup/examples/sample-card.png +0 -0
- package/plugins/elanous-hwp/README.md +25 -0
- package/plugins/elanous-hwp/cli.ts +22 -0
- package/plugins/elanous-hwp/converter.ts +237 -0
- package/plugins/elanous-hwp/fixtures/fixed-controls.hwpx +0 -0
- package/plugins/elanous-hwp/fixtures/fixed-table-controls.hwpx +0 -0
- package/plugins/elanous-hwp/fixtures/fixed.hwpx +0 -0
- package/plugins/elanous-hwp/plugin.json +16 -0
- package/plugins/elanous-hwp/plugin.ts +40 -0
- package/scripts/ci-public-export-leak-gate.ts +75 -14
- package/scripts/ci-public-leak-gate.ts +44 -9
- package/scripts/context-hooks/claude-stop.sh +4 -0
- package/scripts/context-hooks/emit.ts +24 -0
- package/scripts/context-hooks/post-tool-use.sh +4 -0
- package/scripts/coord-channel-watch.sh +12 -0
- package/scripts/coord-requests-bridge.ts +143 -0
- package/scripts/field-feed/lib.ts +4 -0
- package/scripts/fleet/node-setup.sh +20 -3
- package/scripts/homebrew-formula-bump.ts +69 -0
- package/scripts/lib/telegram-inject-args.ts +31 -0
- package/scripts/marketing/measure-site-numbers.ts +169 -0
- package/scripts/measure-gate-shards.ts +309 -0
- package/scripts/measure-pod-memory-by-goal.ts +130 -0
- package/scripts/mission-request-judge.ts +31 -1
- package/scripts/morning-report.ts +2 -2
- package/scripts/opportunity-scan.ts +1 -1
- package/scripts/release-loop/auto-approve-node.ts +21 -4
- package/scripts/release-loop/checklist-gate-node.ts +2 -1
- package/scripts/release-loop/cut-branch.ts +84 -0
- package/scripts/release-loop/gate-node.ts +22 -15
- package/scripts/release-loop/mac-smoke-node.ts +229 -0
- package/scripts/release-loop/node-verdict.ts +3 -3
- package/scripts/release-loop/ops-upgrade-node.ts +47 -6
- package/scripts/release-loop/publish-node.ts +4 -1
- package/scripts/release-loop/tui-node-checks.ts +42 -0
- package/scripts/release-loop/tui-sim-node.ts +32 -8
- package/scripts/release-loop/unattended-release.ts +5 -3
- package/scripts/release-loop/version-node.ts +74 -13
- package/scripts/signal-digest-cycle.ts +2 -7
- package/scripts/signal-digest-photo.ts +11 -0
- package/scripts/tech1-public-measure.ts +94 -0
- package/scripts/telegram-inject.ts +14 -6
- package/scripts/test-diet/node.ts +1 -1
- package/scripts/test-diet/remeasure-list.ts +112 -0
- package/scripts/tui-regress.ts +2 -2
- package/scripts/ux/demo-rehearsal.ts +247 -0
- package/scripts/ux/demo-seed.ts +108 -0
- package/scripts/ux/lib/rehearsal-verdict.ts +80 -0
- package/skills/diagram-master/SKILL.md +366 -0
- package/skills/diagram-master/references/engines/excalidraw/color-palette.md +67 -0
- package/skills/diagram-master/references/engines/excalidraw/element-templates.md +182 -0
- package/skills/diagram-master/references/engines/excalidraw/json-schema.md +71 -0
- package/skills/diagram-master/references/engines/excalidraw/render_excalidraw.py +189 -0
- package/skills/diagram-master/references/engines/excalidraw/render_template.html +57 -0
- package/skills/diagram-master/references/engines/matplotlib/matplotlib-patterns.md +235 -0
- package/skills/diagram-master/references/engines/matplotlib/render_matplotlib.py +184 -0
- package/skills/diagram-master/references/engines/mermaid/domain-templates.md +435 -0
- package/skills/diagram-master/references/engines/mermaid/render_mermaid.py +116 -0
- package/skills/diagram-master/references/engines/mermaid/syntax-reference.md +2247 -0
- package/skills/diagram-master/references/engines/nanobannana/render_nanobannana2.py +168 -0
- package/skills/diagram-master/references/engines/svg/color-palette.md +188 -0
- package/skills/diagram-master/references/engines/svg/html-base-template.html +332 -0
- package/skills/diagram-master/references/engines/svg/interactivity-patterns.md +435 -0
- package/skills/diagram-master/references/engines/svg/render_interactive_svg.py +212 -0
- package/skills/diagram-master/references/engines/svg/svg-element-templates.md +349 -0
- package/skills/diagram-master/references/examples/README.md +69 -0
- package/skills/diagram-master/references/examples/ref_grid_architecture.png +0 -0
- package/skills/diagram-master/references/examples/ref_layered_flow.png +0 -0
- package/skills/diagram-master/references/pyproject.toml +16 -0
- package/skills/diagram-master/references/quality-checklist.md +33 -0
- package/skills/diagram-master/references/routing-guide.md +164 -0
- package/skills/diagram-master/references/uv.lock +1356 -0
- package/skills/google-workspace/SKILL.md +33 -0
- package/skills/google-workspace/scripts/gws-safe.sh +177 -0
- package/skills/grill-me/SKILL.md +1 -1
- package/skills/lecture-note-digitizer/SKILL.md +926 -0
- package/skills/lecture-note-digitizer/references/convert_to_pdf.py +30 -0
- package/skills/lecture-note-digitizer/references/extract_slide_diagram.py +73 -0
- package/skills/lecture-note-digitizer/references/html-template.md +167 -0
- package/skills/lecture-note-digitizer/references/katex-style-guide.md +165 -0
- package/skills/omni-crawl/SKILL.md +21 -11
- package/skills/omni-crawl/scripts/main.ts +6 -6
- package/skills/omni-crawl/src/router.ts +3 -3
- package/skills/omni-digest/SKILL.md +17 -9
- package/skills/omni-digest/digest.md +2 -2
- package/skills/omni-digest/src/fetch.ts +30 -3
- package/skills/pitch-deck/SKILL.md +2 -2
- package/skills/pitch-deck/template.html +2 -2
- package/skills/youtube-master/SKILL.md +163 -0
- package/skills/youtube-master/package-lock.json +558 -0
- package/skills/youtube-master/package.json +13 -0
- package/skills/youtube-master/references/study-note-template.md +124 -0
- package/skills/youtube-master/scripts/main.ts +435 -0
- package/skills/youtube-master/scripts/transcribe-local.ts +24 -0
- package/skills/youtube-master/src/audio.ts +63 -0
- package/skills/youtube-master/src/domain-staging.ts +50 -0
- package/skills/youtube-master/src/env.ts +36 -0
- package/skills/youtube-master/src/obsidian.ts +155 -0
- package/skills/youtube-master/src/router.ts +110 -0
- package/skills/youtube-master/src/stt.ts +199 -0
- package/skills/youtube-master/src/study-note.ts +175 -0
- package/skills/youtube-master/src/summarize.ts +358 -0
- package/skills/youtube-master/src/transcript.ts +76 -0
- package/skills/youtube-master/src/types.ts +91 -0
- package/skills/youtube-master/src/util.ts +93 -0
- package/skills/youtube-master/src/youtube.ts +70 -0
- package/skills/youtube-master/tsconfig.json +13 -0
- package/src/acp/server.ts +5 -2
- package/src/agent-mission/driver.ts +215 -23
- package/src/agent-mission/pty-decision.ts +71 -0
- package/src/agent-mission/review-loop.ts +30 -0
- package/src/autopilot/build/llm-conflict-merge.ts +16 -3
- package/src/autopilot/pty-control-loop.ts +4 -1
- package/src/autopilot/tool-registry.ts +2 -0
- package/src/boot/daemon-prompt-turn.ts +5 -0
- package/src/boot/daemon-runtime.ts +9 -3
- package/src/boot/daemon-tools/web-search.ts +3 -0
- package/src/card-followup/core.ts +109 -0
- package/src/chat/index.ts +2 -0
- package/src/cli/drive-input-jail.ts +101 -0
- package/src/cli/hooks-cli.ts +17 -3
- package/src/cli/make-cli.ts +43 -0
- package/src/cli/persona-cli.ts +98 -9
- package/src/cli/plugin-cli.ts +31 -22
- package/src/cli/pod-cli.ts +36 -9
- package/src/cli/pod-memory-advice.ts +35 -0
- package/src/cli/pr-cli.ts +51 -15
- package/src/cli/pty-drive-cli.ts +41 -7
- package/src/cli/pty-drive-verdict.ts +40 -0
- package/src/cli/release-cli.ts +63 -10
- package/src/cli/setup-cli.ts +43 -1
- package/src/cli/skills-cli.ts +17 -1
- package/src/context-bus/claude-hooks-install.ts +10 -0
- package/src/context-bus/context-now-surfaces.ts +65 -0
- package/src/context-bus/context-now.ts +104 -0
- package/src/context-bus/coord-events.ts +2 -2
- package/src/context-bus/external-events.ts +52 -0
- package/src/context-bus/long-term-memory.ts +108 -0
- package/src/context-bus/nightly-condense.ts +153 -0
- package/src/context-bus/session-events.ts +35 -0
- package/src/dashboard/dashboard-status-lines.ts +2 -0
- package/src/dashboard/index.ts +17 -4
- package/src/dashboard/slash-runtime/dashboard-handlers.ts +31 -1
- package/src/decisions/decision-cards.ts +10 -3
- package/src/decisions/decision-ledger.ts +13 -5
- package/src/discord/sprint21-runtime.ts +5 -1
- package/src/discord-self-message.ts +32 -0
- package/src/discord-slash-wire.ts +5 -1
- package/src/discord.ts +17 -1
- package/src/domains/core-tools.ts +3 -2
- package/src/domains/outbound-alert.ts +105 -32
- package/src/domains/outbound-log-probe.ts +8 -0
- package/src/domains/telegram-kind-route.ts +51 -13
- package/src/exec-requests/default-outputs.ts +25 -0
- package/src/exec-requests/planner.ts +10 -2
- package/src/exec-requests/runner.ts +20 -6
- package/src/exec-requests/store.ts +3 -0
- package/src/execution-loop/launch-gate.ts +109 -0
- package/src/field/field-reel.ts +5 -1
- package/src/field-note/index.ts +201 -0
- package/src/field-note/telegram.ts +142 -0
- package/src/field-note/transcribe.ts +248 -0
- package/src/graph-kinds/registry.ts +3 -3
- package/src/graph-runner/graph-cli.ts +61 -1
- package/src/graph-runner/graph-grow-llm.ts +47 -0
- package/src/graph-runner/graph-grow.ts +50 -0
- package/src/graph-runner/runner.ts +329 -33
- package/src/grok/agent-search.ts +8 -2
- package/src/guardian/secret-exposure-scan.ts +101 -0
- package/src/harness/harness-cli-command.ts +375 -13
- package/src/harness/harness-pod-dispatch.ts +43 -23
- package/src/harness/harness-seams.ts +38 -4
- package/src/harness/harness-stop.ts +23 -4
- package/src/harness/launch-registry.ts +91 -0
- package/src/harness/process-garbage.ts +5 -3
- package/src/hooks/consult-intake.ts +153 -0
- package/src/hooks/dispatch.ts +82 -0
- package/src/hooks/expose.ts +254 -0
- package/src/hooks/github-shadow.ts +108 -0
- package/src/hooks/providers.ts +71 -5
- package/src/hooks/queue.ts +1 -1
- package/src/hooks/receiver.ts +94 -16
- package/src/index.ts +76 -14
- package/src/intake-plane/categorize.ts +18 -46
- package/src/intake-plane/discord-seat-work.ts +38 -2
- package/src/intake-plane/front-route-classifier.ts +33 -39
- package/src/intake-plane/persona-answer.ts +30 -0
- package/src/intake-plane/runtime-callables.ts +8 -1
- package/src/intake-plane/telegram-seat-work.ts +36 -2
- package/src/intake-plane/wish-card.ts +33 -0
- package/src/intake-plane/wish-folder.ts +67 -0
- package/src/intent-gate/gate.ts +30 -10
- package/src/live/detail-switch.ts +5 -0
- package/src/llm/difficulty.ts +57 -0
- package/src/llm/judge-layer.ts +101 -0
- package/src/llm/mission-router.ts +33 -19
- package/src/loops/contract/examples/cmo-seat.loop.yaml +51 -0
- package/src/loops/contract/examples/orchestrator.loop.yaml +57 -0
- package/src/loops/contract/examples/steward.loop.yaml +50 -0
- package/src/loops/contract/loop-agent.schema.json +138 -0
- package/src/loops/contract/validate.ts +64 -0
- package/src/loops/registry.ts +20 -6
- package/src/market/signed-index.ts +4 -0
- package/src/maturity/bot-command-maturity.ts +45 -0
- package/src/maturity/feature-maturity.ts +27 -4
- package/src/model-tier/index.ts +2 -2
- package/src/model-tier/tier-resolver.ts +20 -20
- package/src/model-tier/types.ts +6 -6
- package/src/mss/logging/log-store.ts +15 -0
- package/src/nexus/api/config-model-tier.ts +5 -4
- package/src/nexus/api/fabric-plans.ts +53 -0
- package/src/nexus/api/harness-api.ts +5 -1
- package/src/nexus/api/health.ts +2 -0
- package/src/nexus/api/http-server.ts +67 -8
- package/src/nexus/api/inside-events.ts +226 -0
- package/src/nexus/api/meta-api.ts +21 -8
- package/src/nexus/api/missions.ts +6 -1
- package/src/nexus/api/ops-seats.ts +33 -0
- package/src/nexus/api/outbound-report.ts +40 -7
- package/src/nexus/api/outputs-route.ts +44 -0
- package/src/nexus/api/personas.ts +95 -53
- package/src/nexus/api/seat-requests.ts +44 -2
- package/src/nexus/api/sessions-store.ts +17 -38
- package/src/nexus/api/sub-seat-charters.ts +34 -0
- package/src/nexus/api/tabs-mutations.ts +3 -1
- package/src/nexus/api/task-cards-api.ts +19 -0
- package/src/nexus/api/trace.ts +18 -6
- package/src/nexus/api/workflow-history.ts +88 -0
- package/src/nexus/api/workflow-run-event-bridge.ts +1 -0
- package/src/nexus/api/workflows.ts +132 -6
- package/src/nexus/index.ts +2 -0
- package/src/nexus/kinds/webterm.ts +2 -1
- package/src/nexus/outbound/delivery-ledger.ts +17 -8
- package/src/nexus/outbound/router.ts +8 -3
- package/src/nexus/webterm/pty.ts +6 -2
- package/src/onboarding/cli-auth-status.ts +80 -0
- package/src/onboarding/voice-ai.ts +3 -3
- package/src/org/seat-budget.ts +48 -0
- package/src/org/stall-escalation.ts +63 -0
- package/src/outputs/ledger.ts +120 -0
- package/src/persona/persona-todo.ts +79 -0
- package/src/persona/presets.ts +123 -2
- package/src/persona/team-set.ts +155 -0
- package/src/plugins/install/plugin-install.ts +14 -0
- package/src/plugins/maker/market-bundle.ts +110 -0
- package/src/plugins/maker/plugin-maker.ts +254 -11
- package/src/plugins/maker/wizard-generate.ts +103 -0
- package/src/pod-lease/admission.ts +150 -0
- package/src/pod-lease/dependency-state.ts +85 -0
- package/src/pod-lease/host-lease.ts +127 -0
- package/src/project/project-suggestion.ts +16 -0
- package/src/project/session-context.ts +24 -0
- package/src/release-loop/checklist.ts +17 -5
- package/src/release-loop/feature-store.ts +29 -13
- package/src/release-loop/landed-but-yellow.ts +48 -0
- package/src/release-loop/next-md-merge.ts +58 -0
- package/src/release-loop/release-note.ts +59 -4
- package/src/seat-dispatch/seat-ask.ts +130 -0
- package/src/seat-dispatch/seat-questions.ts +100 -0
- package/src/seat-loop/seat-loop.ts +709 -29
- package/src/seat-loop/seat-report.ts +37 -2
- package/src/self-dev/dev-cli.ts +4 -1
- package/src/self-dev/dev-pipeline.ts +37 -1
- package/src/self-dev/draft-sweep.ts +79 -40
- package/src/self-dev/draft-triage-rules.ts +62 -7
- package/src/self-dev/fabric-plan-core.ts +297 -0
- package/src/self-dev/orchestrate.ts +36 -4
- package/src/self-dev/release-path-guard.ts +62 -0
- package/src/self-dev/shard-aggregate.ts +230 -0
- package/src/self-dev/shard-placement.ts +60 -0
- package/src/self-dev/shard-plan.ts +48 -0
- package/src/self-dev/shard-pod-run.ts +77 -0
- package/src/self-dev/shard-run.ts +105 -0
- package/src/self-implement/budget-gate.ts +29 -12
- package/src/self-implement/gate-baseline.ts +1 -1
- package/src/self-implement/gate-candidate-ranking.ts +60 -0
- package/src/self-implement/gate-cli.ts +40 -1
- package/src/self-implement/gate-scope.ts +44 -13
- package/src/self-implement/graph-variant.ts +171 -0
- package/src/self-implement/harness-policy-gates.ts +1 -1
- package/src/self-implement/headless-elanous-driver.ts +27 -3
- package/src/self-implement/host-regate.ts +22 -1
- package/src/self-implement/importer-test-index.ts +2 -1
- package/src/self-implement/l8-merge-queue.ts +130 -0
- package/src/self-implement/orchestrator.ts +257 -9
- package/src/self-implement/route-consumer-test-index.ts +122 -0
- package/src/self-implement/seams.ts +72 -11
- package/src/self-implement/test-seams.ts +2 -0
- package/src/self-implement/uncommitted-work.ts +59 -0
- package/src/session/index.ts +36 -13
- package/src/skills/gift-install.ts +215 -0
- package/src/skills/tools/web-search.ts +4 -1
- package/src/steward/launch.ts +42 -26
- package/src/steward/steward-cards.ts +17 -9
- package/src/steward/triage.ts +46 -14
- package/src/task-cards/card-cli.ts +25 -1
- package/src/task-orchestrator/mission.ts +5 -0
- package/src/task-orchestrator/store.ts +12 -3
- package/src/task-orchestrator/surfaces/pod-command-job.ts +43 -17
- package/src/task-orchestrator/surfaces/pod-lease.ts +156 -19
- package/src/task-orchestrator/surfaces/pod-pool.ts +127 -26
- package/src/task-orchestrator/surfaces/self-implement-pod.ts +222 -40
- package/src/task-orchestrator/surfaces/self-implement.ts +15 -2
- package/src/task-orchestrator/types.ts +2 -0
- package/src/telegram-card-followup.ts +16 -96
- package/src/telegram-commands.ts +31 -1
- package/src/telegram-project-command.ts +145 -0
- package/src/telegram-report.ts +21 -17
- package/src/telegram.ts +61 -8
- package/src/tool-runtime/self-cognition-runtimes.ts +13 -3
- package/src/user-config.ts +110 -24
- package/src/version/packed-revision.json +1 -1
- package/src/web-search/grok.ts +7 -1
- package/src/web-search/index.ts +28 -1
- package/src/web-search/provider.ts +4 -0
- package/src/web-search/x-intent.ts +5 -0
- package/src/workflow-runtime/executor.ts +277 -47
- package/src/workflow-runtime/index.ts +1 -0
- package/src/workflow-runtime/nodes/subworkflow.ts +60 -0
- package/src/workflow-runtime/plugin-kind-node.ts +1 -1
- package/src/workflow-runtime/schema.ts +79 -4
- package/src/workflow-runtime/types.ts +35 -4
- package/apps/pwa/out/_next/static/2DsiDfDCks44g1cPUMhiW/_buildManifest.js +0 -1
- package/apps/pwa/out/_next/static/chunks/1105-c473ed46272fba79.js +0 -1
- package/apps/pwa/out/_next/static/chunks/1377-1efeffbbac0963ff.js +0 -1
- package/apps/pwa/out/_next/static/chunks/1470.98a6ab61ccb4131c.js +0 -1
- package/apps/pwa/out/_next/static/chunks/216-5acd01cbde4acda7.js +0 -1
- package/apps/pwa/out/_next/static/chunks/2330-c2f07246c8788af1.js +0 -1
- package/apps/pwa/out/_next/static/chunks/2375-cb6debea56cce4fb.js +0 -1
- package/apps/pwa/out/_next/static/chunks/24-e6d28380efab7faf.js +0 -1
- package/apps/pwa/out/_next/static/chunks/2977-e38442e86289f1d3.js +0 -1
- package/apps/pwa/out/_next/static/chunks/2982-2a2df543be3d2e5a.js +0 -25
- package/apps/pwa/out/_next/static/chunks/3403.4bc97b4066945a94.js +0 -5
- package/apps/pwa/out/_next/static/chunks/3615-740dd270764ffa24.js +0 -1
- package/apps/pwa/out/_next/static/chunks/371-4ad6af55dad02ced.js +0 -1
- package/apps/pwa/out/_next/static/chunks/3734-1015fe991eb9b7e7.js +0 -1
- package/apps/pwa/out/_next/static/chunks/4114-3e63117452378807.js +0 -1
- package/apps/pwa/out/_next/static/chunks/5012-a7fe6f3c8b6fe45a.js +0 -1
- package/apps/pwa/out/_next/static/chunks/5609-012bb3557211f07e.js +0 -1
- package/apps/pwa/out/_next/static/chunks/5783-ef40ebfc91d55230.js +0 -1
- package/apps/pwa/out/_next/static/chunks/5791-bb82743fa6299562.js +0 -1
- package/apps/pwa/out/_next/static/chunks/62-ff227c3edb8b248b.js +0 -1
- package/apps/pwa/out/_next/static/chunks/6320-baac91d68843a9a6.js +0 -1
- package/apps/pwa/out/_next/static/chunks/6725-68ab7cc0b1faf00d.js +0 -1
- package/apps/pwa/out/_next/static/chunks/6998-a654fe5c58271600.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7633-1b3709b0854c9412.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7647.2fcd30d894d5ee30.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7673-2eda1507d38dadb8.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7951-8b03dbb10b24cd06.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7990-e12efba616f46e03.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8142-744998d65d7bb17e.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8195-6fde3d7a39859206.js +0 -10
- package/apps/pwa/out/_next/static/chunks/8619-4365e03a2862830f.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8894-b5fb36bab837cd29.js +0 -1
- package/apps/pwa/out/_next/static/chunks/920-f7dceb78f1c585ef.js +0 -1
- package/apps/pwa/out/_next/static/chunks/9454-84d0d5d77446bd92.js +0 -1
- package/apps/pwa/out/_next/static/chunks/9651-3cd291a6fa1370d2.js +0 -1
- package/apps/pwa/out/_next/static/chunks/988-5f92e7ab7ccea3dd.js +0 -1
- package/apps/pwa/out/_next/static/chunks/9989-5582582f06429840.js +0 -1
- package/apps/pwa/out/_next/static/chunks/ae787e4c-f2998de7f1ba72a4.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/_not-found/page-859cea1570b6227a.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/approvals/page-d2253d7e58ef1890.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/autopilot/page-5441d4a9ab35e518.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/board/page-d9b12d680922d980.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/bots/page-e268d6d145827a22.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/chat/page-f8116559c7424da7.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/consult/page-1085399fd0f32112.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/control/page-1df686a14f65895a.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/design-check/page-54e1f966ab60a4dc.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/editor/page-7ed95f296f5ee8e9.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/exec/page-11edac668d77e5c3.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/field/page-59e2b9a22cd5a6d5.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/healthz/route-859cea1570b6227a.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/intake/page-2976df21ad74ab48.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/layout-34d211a67f16d510.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/live/page-8ff652d5d950639b.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/market/page-b31610deda76337b.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/missions/[id]/page-6cb0e1bbefe5fb3d.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/morning/page-a286a152cf584576.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/not-found-d9237581e7003bcb.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/observatory/page-83274e761643fdd2.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/ops/checklist/page-ceee6cfb1d4e6d68.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/ops/release/page-9c9f8bb3e4a64091.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/ops/seats/page-c17217603ea3426a.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/page-efb6177cbf1e8a51.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/reflection/page-d307523703bc4df3.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/scheduler/page-462f4e4bab45ce7d.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/sessions/page-8990e96f33af3837.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/settings/devices/page-e168fa1030af0548.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/settings/page-1233e05a4068bc9c.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/setup/done/page-13a1840b1fac337a.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/setup/layout-859cea1570b6227a.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/setup/page-64a29fc80b11ab55.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/share/page-68e787339a16b3dc.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/showroom/page-4fddc90b23feb215.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/tasks/page-886ba8260dc79c79.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/term/page-0f26507a1722e40b.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/today/page-109d4ccd42259c9d.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/trace/page-f5c2a4e510726774.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/vault/page-b2e0039416f42522.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-26102fd7350f171e.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/workflows/page-708948bc8a802794.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/workspace/page-5e5611620f78fb0b.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/worktrees/page-139ba5c367bbf60a.js +0 -1
- package/apps/pwa/out/_next/static/chunks/framework-ea806bb57f2b8923.js +0 -1
- package/apps/pwa/out/_next/static/chunks/main-8d2302399c2c8f87.js +0 -1
- package/apps/pwa/out/_next/static/chunks/main-app-202b4e81f33895ea.js +0 -1
- package/apps/pwa/out/_next/static/chunks/pages/_app-b10928c60f0b8488.js +0 -1
- package/apps/pwa/out/_next/static/chunks/pages/_error-689039227d443fab.js +0 -1
- package/apps/pwa/out/_next/static/chunks/webpack-e5bea36f183b25e6.js +0 -1
- package/apps/pwa/out/_next/static/css/43feca5fd387dcbd.css +0 -1
- /package/apps/pwa/out/_next/static/{2DsiDfDCks44g1cPUMhiW → -6XrAoD3eU7NyMHAE4xPS}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9549],{10455:(e,t,a)=>{Promise.resolve().then(a.bind(a,12854))},12854:(e,t,a)=>{"use strict";a.d(t,{ShowroomLayout:()=>eZ});var r=a(54456),n=a(60500),o=a(86766),l=a(75361),i=a(91321),s=a(57818),d=a(4198),c=a(60302),u=a(8286),m=a(37163),p=a(93684),h=a(67276),b=a(9064),x=a(19978),g=a(61856),f=a(80581),v=a(36581),w=a(53391),k=a(5883);function y(e,t){let a=j(e),r=t.filter(e=>j(e)===a);if(r.length<=1)return a;let n=r.findIndex(t=>t.id===e.id);return"".concat(a,"-").concat(n+1)}function j(e){return"agent"===e.kind&&e.agentBrand?"".concat(e.agentBrand,"-cli"):e.provider||"default"}let z=0;function N(){return(z=(z+1)%4096).toString(36).padStart(2,"0")}function S(){return"p-".concat(Date.now().toString(36),"-").concat(N())}let C=["","claude","gemini","grok","codex"],I=["codex","claude","gemini"],A=/@([a-zA-Z][a-zA-Z0-9-]{0,31})/g;function T(e,t){let a=[],r=new Set,n=[],o=[],l=!1;for(let i of e.matchAll(A)){let e=i[1];if(!e)continue;let s=e.toLowerCase();if("all"===s){l=!0,n.push("@all");continue}let d=t.find(e=>y(e,t).toLowerCase()===s);d?(r.has(d.id)||(r.add(d.id),a.push(d)),n.push("@".concat(e))):o.push(e)}return{targets:a,broadcastAll:l,mentions:n,unknown:o}}function E(e,t){var a;let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{targets:n,broadcastAll:o}=T(e,t);if(o)return{targets:t.filter(e=>"live"===e.state),mode:"broadcast"};if(n.length>0)return{targets:n,mode:"targeted",routedBy:"mention"};let l=null!=(a=r.roleHint)?a:function(e){let t=e.toLowerCase();for(let a of M)if(P[a].some(a=>(function(e,t,a){if(L.test(a))return e.includes(a);let r=D.get(a);return r||(r=new RegExp("\\b".concat(a.toLowerCase(),"\\b")),D.set(a,r)),r.test(t)})(e,t,a)))return a;return null}(e);if(l){let e=t.filter(e=>e.roleHint===l);if(1===e.length)return{targets:e,mode:"targeted",routedBy:"role-classify",classifiedRole:l}}return{targets:t.filter(e=>"live"===e.state),mode:"broadcast"}}let M=["review","reflect","plan","exec"],P={plan:["계획","기획","설계","구상","아키텍처","디자인","plan","design","architect","spec","roadmap"],exec:["구현","코드","작성","만들어","수정","구축","코딩","implement","code","write","build","create","fix"],review:["리뷰","검토","평가","점검","검사","비판","review","critique","evaluate","check","audit"],reflect:["회고","반성","돌아보","성찰","교훈","되짚","reflect","retrospective","lesson","postmortem"]},L=/[ㄱ-ㆎ가-힣]/,D=new Map,R="elanous.showroom.roleJudgeBackend";async function Y(e,t,a){let r=E(e,t);if("broadcast"!==r.mode||r.classifiedRole||!a)return r;try{let n=await a(e);if(null===n.role)return r;return E(e,t,{roleHint:n.role})}catch(e){return r}}let _=/(^|\s)@([a-zA-Z0-9-]*)$/;function U(e){let t=Number.isFinite(e)&&e>=0?Math.floor(e):0,a=Math.floor(t/60);return"".concat(a,":").concat(String(t%60).padStart(2,"0"))}function F(e,t){return e.filter(e=>e.fromPanelId===t)}let K="elanous.showroom.dmMode";function O(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=e.filter(e=>"live"===e.state&&("chat"===e.kind||t.includeAgent&&"agent"===e.kind)).map(e=>{let a={id:e.id,provider:e.provider};if("agent"===e.kind&&e.agentBrand&&(a.kind="agent",a.backend=function(e){switch(e){case"codex":return"codex-app-server";case"claude":return"claude";case"gemini":return"gemini"}}(e.agentBrand)),e.personaId&&(a.personaId=e.personaId),t.lastAssistantByPanelId){let r=t.lastAssistantByPanelId[e.id];"string"==typeof r&&r.length>0&&(a.lastAssistant=r)}return a});if(0===a.length)return null;let r={targets:a};return t.historyMode&&(r.historyMode=t.historyMode),r}function B(e){if(e)for(let t=e.length-1;t>=0;t--){let a=e[t];if((null==a?void 0:a.role)==="assistant"&&"string"==typeof a.text&&a.text.length>0)return a.text}}let q="elanous.showroom.historyMode";function H(e){return{elanous:{multiLlm:e}}}function J(e,t){return e.length<=t?e:"".concat(e.slice(0,t-1),"…")}var W=a(50733),V=a(12502),$=a(37998),Q=a(60796),Z=a(91285),X=a(22280),G=a(75702),ee=a(16307),et=a(16882);let ea=["plan","exec","review","reflect"],er={plan:"plan",exec:"exec",review:"review",reflect:"reflect"};function en(e){var t,a,o,i,d;let{panel:c,allPanels:u,client:m,onClose:p,onState:h,onProvider:g,onPromoteAssistant:f,outgoingEdges:v,onAddChainEdge:w,onRemoveChainEdge:k,onToggleChainEdgeHitl:j,onRoleHint:z,onPersona:N,dmState:S,dmSessionId:I}=e,[A,T]=(0,n.useState)(!1),[E,M]=(0,n.useState)(null),[P,L]=(0,n.useState)(!1),[D,R]=(0,n.useState)(!1),Y=(0,et.v)(m),_=Y.personas,U=(0,ee.X)(m),F=(0,n.useMemo)(()=>{if(0===U.providerIds.length)return C;let e=["",...U.providerIds];return c.provider&&!e.includes(c.provider)&&e.push(c.provider),e},[U.providerIds,c.provider]),K=(0,n.useMemo)(()=>{if(c.personaId)return _.find(e=>e.personaId===c.personaId)},[c.personaId,_]),O=!!(null==K?void 0:K.brand),B=null!=v?v:[],q=(0,n.useMemo)(()=>u.filter(e=>e.id!==c.id&&!B.some(t=>t.toPanelId===e.id)),[u,c.id,B]),H=(0,n.useCallback)(e=>{if(!w)return;let t=w(c.id,e);if(!t.ok)return void M("route rejected \xb7 ".concat(t.reason));M(null),T(!1)},[w,c.id]),W=null!=(t=null==S?void 0:S.messages)?t:[],V=null!=(a=null==S?void 0:S.partial)?a:"",$=null!=(o=null==S?void 0:S.streaming)&&o,en=null!=(i=null==S?void 0:S.error)?i:null,eo=(0,n.useMemo)(()=>{let e=null==S?void 0:S.toolCalls;return e?Object.values(e).sort((e,t)=>e.startedAt-t.startedAt):[]},[null==S?void 0:S.toolCalls]),el=(0,n.useMemo)(()=>eo.filter(e=>"pending"===e.status||"in_progress"===e.status).length,[eo]),[ei,es]=(0,n.useState)(!1),ed=(0,n.useCallback)(()=>{h("live"===c.state?"mute":"live")},[c.state,h]),ec=(0,n.useMemo)(()=>y(c,u),[c,u]),eu="live"===c.state?"bg-emerald-100 text-emerald-700 dark:bg-emerald-900/40 dark:text-emerald-300":"mute"===c.state?"bg-zinc-200 text-zinc-600 dark:bg-zinc-700 dark:text-zinc-300":"bg-amber-100 text-amber-700 dark:bg-amber-900/40 dark:text-amber-300";return(0,r.jsxs)("article",{className:"flex h-full min-h-0 min-w-0 flex-1 flex-col rounded-lg border border-zinc-200 bg-white shadow-sm dark:border-zinc-700 dark:bg-zinc-900 ".concat("mute"===c.state?"opacity-60":""),"data-testid":"showroom-panel-".concat(c.id),"aria-label":"Showroom panel ".concat(ec),children:[(0,r.jsxs)("header",{className:"flex flex-wrap items-center justify-between gap-2 border-b border-zinc-200/50 px-3 py-2 dark:border-zinc-700/50",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs",children:["agent"===c.kind&&(0,r.jsxs)("span",{className:"inline-flex items-center gap-0.5 rounded bg-amber-100 px-1.5 py-0.5 text-[10px] uppercase text-amber-700 dark:bg-amber-900/40 dark:text-amber-300","data-testid":"showroom-panel-agent-badge-".concat(c.id),title:"agent CLI \xb7 brand=".concat(c.agentBrand),children:[(0,r.jsx)(s.A,{className:"size-3","aria-hidden":!0}),"agent"]}),(0,r.jsxs)("span",{className:"font-medium text-zinc-900 dark:text-zinc-100",children:["@",ec]}),(0,r.jsx)("span",{className:"rounded px-1.5 py-0.5 text-[10px] uppercase ".concat(eu),children:c.state}),N&&(0,r.jsxs)("div",{className:"relative",children:[(0,r.jsxs)("button",{type:"button",onClick:()=>R(e=>!e),className:"inline-flex items-center gap-0.5 rounded px-1.5 py-0.5 text-[10px] uppercase ".concat(K?"bg-fuchsia-100 text-fuchsia-700 dark:bg-fuchsia-900/40 dark:text-fuchsia-300":"bg-zinc-100 text-zinc-500 hover:bg-zinc-200 dark:bg-zinc-800 dark:text-zinc-400 dark:hover:bg-zinc-700"),"aria-label":K?"Persona: ".concat(K.displayName):"Bind persona",title:K?"Persona: ".concat(K.displayName," — click to change"):"Bind a persona (system prompt + brand lock)","data-testid":"showroom-panel-persona-toggle-".concat(c.id),style:(null==K?void 0:K.brandColor)?{borderLeft:"3px solid ".concat(K.brandColor)}:void 0,children:[(0,r.jsx)(Q.A,{className:"size-3","aria-hidden":!0}),K?K.displayName.slice(0,12):"persona"]}),D&&(0,r.jsxs)("div",{className:"absolute left-0 top-full z-20 mt-1 w-64 max-h-72 overflow-y-auto rounded-md border border-zinc-200 bg-white p-1 shadow-lg dark:border-zinc-700 dark:bg-zinc-900","data-testid":"showroom-panel-persona-menu-".concat(c.id),children:[Y.loading&&(0,r.jsx)("p",{className:"px-1.5 py-1 text-[10px] text-zinc-500",children:"loading…"}),Y.error&&(0,r.jsxs)("p",{className:"px-1.5 py-1 text-[10px] text-rose-600",children:["error: ",Y.error]}),!Y.loading&&0===_.length&&(0,r.jsxs)("p",{className:"px-1.5 py-1 text-[10px] text-zinc-500",children:["no personas (yaml in ",(0,r.jsx)("code",{children:"~/.elanous/personas/"}),")"]}),_.map(e=>{let t=e.personaId===c.personaId;return(0,r.jsxs)("button",{type:"button",onClick:()=>{N(e.brand?{personaId:e.personaId,brand:e.brand}:{personaId:e.personaId}),R(!1)},className:"block w-full rounded px-1.5 py-1 text-left text-[11px] hover:bg-fuchsia-50 dark:hover:bg-fuchsia-900/20 ".concat(t?"font-bold text-fuchsia-700 dark:text-fuchsia-300":""),"data-testid":"showroom-panel-persona-set-".concat(c.id,"-").concat(e.personaId),children:[(0,r.jsx)("span",{className:"mr-1 inline-block size-2 rounded-full",style:e.brandColor?{backgroundColor:e.brandColor}:{backgroundColor:"#a1a1aa"},"aria-hidden":!0}),e.displayName,e.brand&&(0,r.jsx)("span",{className:"ml-1 text-[9px] uppercase text-zinc-500",children:e.brand})]},e.personaId)}),K&&(0,r.jsx)("button",{type:"button",onClick:()=>{N(null),R(!1)},className:"mt-1 block w-full rounded border-t border-zinc-100 px-1.5 py-1 text-left text-[11px] text-rose-600 hover:bg-rose-50 dark:border-zinc-800 dark:text-rose-400 dark:hover:bg-rose-900/20","data-testid":"showroom-panel-persona-clear-".concat(c.id),children:"clear"})]})]}),z&&(0,r.jsxs)("div",{className:"relative",children:[(0,r.jsxs)("button",{type:"button",onClick:()=>L(e=>!e),className:"inline-flex items-center gap-0.5 rounded px-1.5 py-0.5 text-[10px] uppercase ".concat(c.roleHint?"bg-violet-100 text-violet-700 dark:bg-violet-900/40 dark:text-violet-300":"bg-zinc-100 text-zinc-500 hover:bg-zinc-200 dark:bg-zinc-800 dark:text-zinc-400 dark:hover:bg-zinc-700"),"aria-label":c.roleHint?"Role: ".concat(c.roleHint):"Set role hint",title:c.roleHint?"Role: ".concat(c.roleHint," — click to change"):"Assign role hint (auto @target)","data-testid":"showroom-panel-role-toggle-".concat(c.id),children:[(0,r.jsx)(Z.A,{className:"size-3","aria-hidden":!0}),null!=(d=c.roleHint)?d:"role"]}),P&&(0,r.jsxs)("div",{className:"absolute left-0 top-full z-20 mt-1 w-32 rounded-md border border-zinc-200 bg-white p-1 shadow-lg dark:border-zinc-700 dark:bg-zinc-900","data-testid":"showroom-panel-role-menu-".concat(c.id),children:[ea.map(e=>(0,r.jsx)("button",{type:"button",onClick:()=>{z(e),L(!1)},className:"block w-full rounded px-1.5 py-1 text-left text-[11px] hover:bg-violet-50 dark:hover:bg-violet-900/20 ".concat(c.roleHint===e?"font-bold text-violet-700 dark:text-violet-300":""),"data-testid":"showroom-panel-role-set-".concat(c.id,"-").concat(e),children:er[e]},e)),c.roleHint&&(0,r.jsx)("button",{type:"button",onClick:()=>{z(null),L(!1)},className:"mt-1 block w-full rounded border-t border-zinc-100 px-1.5 py-1 text-left text-[11px] text-rose-600 hover:bg-rose-50 dark:border-zinc-800 dark:text-rose-400 dark:hover:bg-rose-900/20","data-testid":"showroom-panel-role-clear-".concat(c.id),children:"clear"})]})]}),$&&(0,r.jsx)("span",{className:"text-[10px] text-zinc-500","aria-live":"polite",children:"streaming…"}),eo.length>0&&(0,r.jsxs)("button",{type:"button",onClick:()=>es(e=>!e),"aria-expanded":ei,"aria-controls":"showroom-panel-tools-".concat(c.id),"data-testid":"showroom-panel-tools-pill-".concat(c.id),title:el>0?"".concat(eo.length," tool calls \xb7 ").concat(el," running"):"".concat(eo.length," tool calls"),className:"inline-flex items-center gap-1 rounded-full border px-1.5 py-0.5 text-[10px] font-medium ".concat(el>0?"border-amber-300 bg-amber-50 text-amber-700 dark:border-amber-700 dark:bg-amber-900/30 dark:text-amber-300":"border-zinc-300 bg-zinc-50 text-zinc-600 dark:border-zinc-700 dark:bg-zinc-800 dark:text-zinc-300"),children:[(0,r.jsx)("span",{"aria-hidden":!0,children:"⚙"}),(0,r.jsxs)("span",{children:[eo.length," tool",1===eo.length?"":"s",el>0?" \xb7 ".concat(el," running"):""]})]})]}),(0,r.jsxs)("div",{className:"flex items-center gap-1",children:["agent"===c.kind?(0,r.jsxs)("span",{className:"rounded-md border border-amber-300 bg-amber-50 px-1.5 py-0.5 text-[11px] font-medium text-amber-700 dark:border-amber-700 dark:bg-amber-900/30 dark:text-amber-300","data-testid":"showroom-panel-brand-".concat(c.id),title:"Agent CLI brand is locked at create time (P5 D6)",children:[c.agentBrand,"-cli"]}):(0,r.jsx)("select",{value:c.provider,onChange:e=>g(e.target.value),disabled:$||O,className:"rounded-md border border-zinc-300 bg-white px-1.5 py-0.5 text-xs disabled:cursor-not-allowed disabled:opacity-60 dark:border-zinc-700 dark:bg-zinc-800","aria-label":"Provider",title:O?'Provider locked by persona "'.concat(null==K?void 0:K.displayName,'" (brand=').concat(null==K?void 0:K.brand,")"):"Provider","data-testid":"showroom-panel-provider-".concat(c.id),children:F.map(e=>(0,r.jsx)("option",{value:e,children:e||"(default)"},e))}),!!w&&!!k&&!!v&&(0,r.jsxs)("div",{className:"relative",children:[(0,r.jsxs)("button",{type:"button",onClick:()=>{T(e=>!e),M(null)},className:"relative rounded p-1 hover:bg-zinc-100 dark:hover:bg-zinc-800","aria-label":"Forward chain \xb7 agent-to-agent direct routing",title:B.length>0?"Chain: forwards to ".concat(B.length," panel(s)"):"Set up auto-forward to another panel","data-testid":"showroom-panel-chain-toggle-".concat(c.id),children:[(0,r.jsx)(X.A,{className:"size-3.5","aria-hidden":!0}),B.length>0&&(0,r.jsx)("span",{className:"absolute -right-0.5 -top-0.5 flex size-3.5 items-center justify-center rounded-full bg-indigo-500 text-[8px] font-bold text-white","aria-hidden":!0,children:B.length})]}),A&&(0,r.jsxs)("div",{className:"absolute right-0 top-full z-20 mt-1 w-56 rounded-md border border-zinc-200 bg-white p-2 shadow-lg dark:border-zinc-700 dark:bg-zinc-900","data-testid":"showroom-panel-chain-menu-".concat(c.id),children:[(0,r.jsx)("p",{className:"mb-1 text-[10px] uppercase text-zinc-500",children:"Auto-forward to"}),B.length>0&&(0,r.jsx)("ul",{className:"mb-2 space-y-0.5 border-b border-zinc-100 pb-2 dark:border-zinc-800",children:B.map(e=>{let t=u.find(t=>t.id===e.toPanelId),a=t?y(t,u):e.toPanelId;return(0,r.jsxs)("li",{className:"flex items-center justify-between gap-1 rounded bg-indigo-50 px-1.5 py-1 text-[11px] dark:bg-indigo-900/30","data-testid":"showroom-panel-chain-edge-".concat(e.id),children:[(0,r.jsxs)("span",{className:"truncate text-indigo-700 dark:text-indigo-300",children:["→ @",a]}),(0,r.jsxs)("div",{className:"flex shrink-0 items-center gap-0.5",children:[j&&(0,r.jsx)("button",{type:"button",onClick:()=>j(e.id),className:"rounded p-0.5 text-[11px] leading-none ".concat(e.hitl?"bg-amber-100 text-amber-700 hover:bg-amber-200 dark:bg-amber-900/40 dark:text-amber-300 dark:hover:bg-amber-900/60":"text-indigo-500/60 hover:bg-indigo-100 dark:hover:bg-indigo-800/40"),"aria-pressed":!!e.hitl,"aria-label":e.hitl?"Disable confirm gate for forward to @".concat(a):"Enable confirm gate for forward to @".concat(a),title:e.hitl?"Confirm before forward (click to auto-forward)":"Auto-forward (click to require confirm)","data-testid":"showroom-panel-chain-hitl-".concat(e.id),children:e.hitl?"\uD83D\uDD12":"⚡"}),k&&(0,r.jsx)("button",{type:"button",onClick:()=>k(e.id),className:"rounded p-0.5 hover:bg-indigo-100 dark:hover:bg-indigo-800/40","aria-label":"Remove forward to @".concat(a),"data-testid":"showroom-panel-chain-remove-".concat(e.id),children:(0,r.jsx)(l.A,{className:"size-3","aria-hidden":!0})})]})]},e.id)})}),q.length>0?(0,r.jsx)("ul",{className:"space-y-0.5",children:q.map(e=>{let t=y(e,u);return(0,r.jsx)("li",{children:(0,r.jsxs)("button",{type:"button",onClick:()=>H(e.id),className:"block w-full rounded px-1.5 py-1 text-left text-[11px] hover:bg-indigo-50 dark:hover:bg-indigo-900/20","data-testid":"showroom-panel-chain-add-".concat(c.id,"-").concat(e.id),children:["+ @",t]})},e.id)})}):(0,r.jsx)("p",{className:"text-[11px] text-zinc-500",children:"no candidates"}),E&&(0,r.jsx)("p",{className:"mt-1 text-[10px] text-rose-600 dark:text-rose-400","data-testid":"showroom-panel-chain-error-".concat(c.id),children:E})]})]}),(0,r.jsx)("button",{type:"button",onClick:ed,className:"rounded p-1 hover:bg-zinc-100 dark:hover:bg-zinc-800","aria-label":"live"===c.state?"Mute panel":"Unmute panel",title:"live"===c.state?"Mute":"Unmute",children:"live"===c.state?(0,r.jsx)(x.A,{className:"size-3.5","aria-hidden":!0}):(0,r.jsx)(b.A,{className:"size-3.5","aria-hidden":!0})}),(0,r.jsx)("button",{type:"button",onClick:p,className:"rounded p-1 hover:bg-zinc-100 dark:hover:bg-zinc-800","aria-label":"Close panel",title:"Close",children:(0,r.jsx)(l.A,{className:"size-3.5","aria-hidden":!0})})]})]}),(0,r.jsxs)("div",{className:"flex-1 overflow-y-auto p-3 text-sm",children:[ei&&eo.length>0&&(0,r.jsx)("ul",{id:"showroom-panel-tools-".concat(c.id),"data-testid":"showroom-panel-tools-list-".concat(c.id),className:"mb-3 rounded-md border border-zinc-200 bg-zinc-50/60 p-2 text-[11px] dark:border-zinc-700 dark:bg-zinc-800/40",children:eo.map(e=>{let t="completed"===e.status?"✅":"failed"===e.status?"❌":"⏳",a=function(e){let t=e.name&&e.name.length>0?e.name:"(unnamed)",a=J(t,56),r=null;if(e.input){let t=Object.entries(e.input);if(t.length>0){let[e,a]=t[0],n="string"==typeof a?a:null===a?"null":void 0===a?"undefined":JSON.stringify(a);r="".concat(e,"=").concat(n)}}else e.output&&e.output.length>0&&(r=e.output);if(null===r)return{name:a,meta:null};let n=J(r,96);return!function(e,t){let a=e=>e.replace(/…$/,"").replace(/^command=/,"").trim().toLowerCase(),r=a(e),n=a(t);if(!r||!n)return!1;if(r===n)return!0;let o=n.indexOf("="),l=o>=0?n.slice(o+1).trim():n;return!!(l&&(r.startsWith(l)||l.startsWith(r)))}(t,r)?{name:a,meta:n}:{name:a,meta:null}}(e);return(0,r.jsxs)("li",{"data-testid":"showroom-panel-tool-".concat(c.id,"-").concat(e.id),className:"flex items-baseline gap-2 py-0.5",children:[(0,r.jsx)("span",{"aria-hidden":!0,children:t}),(0,r.jsx)("span",{className:"truncate font-medium text-zinc-800 dark:text-zinc-200",title:e.name||"(unnamed)",children:a.name}),a.meta&&(0,r.jsxs)("span",{className:"truncate text-zinc-500 dark:text-zinc-400",title:a.meta,children:["\xb7 ",a.meta]}),("pending"===e.status||"in_progress"===e.status)&&(0,r.jsx)("span",{className:"text-[10px] text-amber-600 dark:text-amber-300",children:"pending"===e.status?"pending":"running"})]},e.id)})}),0===W.length&&!$&&(0,r.jsx)("p",{className:"text-xs text-zinc-500",children:I?"대기 중 \xb7 broadcast 또는 mention 으로 시작":"DM session 준비 중…"}),W.map(e=>(0,r.jsxs)("div",{className:"mb-3 ".concat("user"===e.role?"text-zinc-900 dark:text-zinc-100":"text-zinc-700 dark:text-zinc-300"),children:[(0,r.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,r.jsx)("span",{className:"text-[10px] uppercase text-zinc-500",children:e.role}),"assistant"===e.role&&f&&e.text.length>0&&(0,r.jsxs)("button",{type:"button",onClick:()=>f({messageId:e.id,text:e.text}),className:"inline-flex items-center gap-0.5 rounded px-1 py-0.5 text-[10px] text-indigo-600 hover:bg-indigo-50 dark:text-indigo-300 dark:hover:bg-indigo-900/30","aria-label":"Promote answer to prior context",title:"Promote → next broadcast 에 context 로 첨부","data-testid":"showroom-panel-promote-".concat(c.id,"-").concat(e.id),children:[(0,r.jsx)(G.A,{className:"size-3","aria-hidden":!0}),"promote"]})]}),(0,r.jsx)("p",{className:"whitespace-pre-wrap",children:e.text})]},e.id)),$&&(0,r.jsxs)("div",{className:"mb-3 text-zinc-700 dark:text-zinc-300",children:[(0,r.jsx)("span",{className:"text-[10px] uppercase text-zinc-500",children:"assistant…"}),(0,r.jsx)("p",{className:"whitespace-pre-wrap",children:V||"..."})]}),en&&(0,r.jsx)("div",{className:"mt-2 rounded bg-rose-50 p-2 text-xs text-rose-700 dark:bg-rose-900/30 dark:text-rose-300",children:en})]}),(0,r.jsx)("footer",{className:"border-t border-zinc-200/50 px-3 py-1.5 text-[10px] text-zinc-500 dark:border-zinc-700/50","data-testid":"showroom-panel-footer-".concat(c.id),children:(0,r.jsxs)("span",{"data-testid":"showroom-panel-dm-footer-".concat(c.id),children:["DM \xb7"," ",I?"layout sess: ".concat(I.slice(0,8),"…"):"no layout session"]})})]})}var eo=a(39999),el=a(96810),ei=a(2263),es=a(39681),ed=a(60685),ec=a(64234),eu=a(16460),em=a(65489),ep=a(56747),eh=a(21259),eb=a(75591),ex=a(22720),eg=a(71829),ef=a(21569),ev=a(55499);async function ew(e){var t,a,r,n;let o=null!=(a=null!=(t=e.filename)?t:e.file instanceof File?e.file.name:void 0)?a:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new Date,t=e.toISOString().replace(/[:.]/g,"-").toLowerCase();return"camera-".concat(t,".jpg")}(),l=await (0,ev.v)({baseUrl:e.baseUrl,...void 0!==e.token?{token:e.token}:{},file:e.file,filename:o});if(!l.ok)return{ok:!1,stage:"upload",status:l.status,reason:l.reason};if("session"===e.route.kind)return{ok:!0,route:"session",meta:l.meta};let i=e.baseUrl.replace(/\/$/,""),s=null!=(r=e.fetchImpl)?r:"undefined"!=typeof fetch?fetch:null;if(!s)return{ok:!1,stage:"intake",status:0,reason:"fetch unavailable"};try{let t=function(e){var t,a;let r=e.meta,n=null!=(a=null==(t=e.caption)?void 0:t.trim())?a:"",o="[image: ".concat(r.filename).concat(r.path?" \xb7 ".concat(r.path):"","]"),l={text:n?"".concat(o," ").concat(n):o,actor:"pwa-camera",channelContext:{kind:"pwa-camera",attachmentId:r.id,attachmentFilename:r.filename,attachmentMediaType:r.mediaType,...r.path?{attachmentPath:r.path}:{},...r.downloadUrl?{attachmentUrl:r.downloadUrl}:{}}};return e.receivedAt&&(l.receivedAt=e.receivedAt),e.intakeId&&(l.intakeId=e.intakeId),l}({meta:l.meta,...void 0!==e.caption?{caption:e.caption}:{}}),a=await s("".concat(i,"/v1/intake"),{method:"POST",headers:{"content-type":"application/json",...e.token?{authorization:"Bearer ".concat(e.token)}:{}},body:JSON.stringify(t)});if(!a.ok){let e=await a.text().catch(()=>"");return{ok:!1,stage:"intake",status:a.status,reason:e||"HTTP ".concat(a.status)}}let r=await a.json().catch(()=>({}));return{ok:!0,route:"intake",meta:l.meta,intakeId:null!=(n=r.intakeId)?n:""}}catch(e){return{ok:!1,stage:"intake",status:0,reason:String(e instanceof Error?e.message:e)}}}function ek(e){let{pendingFile:t,pendingPreviewUrl:a,caption:n,busy:o,error:l,onPickFile:i,onCaptionChange:s,onRouteSession:d,onRouteIntake:c,onCancel:u}=e;return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("button",{type:"button",onClick:i,disabled:o,"aria-label":"attach photo",title:"attach photo (camera or file)","data-testid":"showroom-camera-button",className:"rounded p-1.5 text-muted-foreground hover:bg-accent hover:text-foreground disabled:opacity-50",children:o?(0,r.jsx)(eb.A,{className:"h-3.5 w-3.5 animate-spin"}):(0,r.jsx)(ex.A,{className:"h-3.5 w-3.5"})}),t&&(0,r.jsx)("div",{role:"dialog","aria-modal":"true","aria-label":"Camera intake","data-testid":"showroom-camera-modal",className:"fixed inset-0 z-40 flex items-center justify-center bg-black/40 p-4 backdrop-blur-sm",children:(0,r.jsxs)("div",{className:"flex w-[min(calc(100vw-2rem),28rem)] flex-col gap-3 rounded-2xl border border-zinc-200 bg-white p-4 shadow-2xl dark:border-zinc-800 dark:bg-zinc-900",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsx)("span",{className:"text-sm font-medium text-zinc-900 dark:text-zinc-100",children:"사진 첨부"}),(0,r.jsx)("button",{type:"button",onClick:u,disabled:o,"aria-label":"cancel","data-testid":"showroom-camera-cancel",className:"rounded p-1 text-zinc-500 hover:bg-zinc-100 disabled:opacity-50 dark:text-zinc-400 dark:hover:bg-zinc-800",children:"✕"})]}),a&&(0,r.jsx)("img",{src:a,alt:"camera capture preview","data-testid":"showroom-camera-preview",className:"max-h-72 w-full rounded-md border border-zinc-200 object-contain dark:border-zinc-800"}),(0,r.jsx)("textarea",{value:n,onChange:e=>s(e.target.value),disabled:o,placeholder:"사진 설명 (선택 \xb7 intake 저장 시 KGS 검색 키워드)",rows:2,"data-testid":"showroom-camera-caption",className:"rounded border border-zinc-300 bg-white px-2 py-1.5 text-sm text-zinc-900 disabled:opacity-50 dark:border-zinc-700 dark:bg-zinc-800 dark:text-zinc-100"}),(0,r.jsxs)("div",{className:"flex gap-2",children:[(0,r.jsx)("button",{type:"button",onClick:d,disabled:o,"data-testid":"showroom-camera-route-session",className:"flex-1 rounded-lg border border-zinc-300 bg-white px-3 py-1.5 text-sm font-medium text-zinc-800 transition hover:bg-zinc-100 disabled:cursor-not-allowed disabled:opacity-50 dark:border-zinc-700 dark:bg-zinc-800 dark:text-zinc-100 dark:hover:bg-zinc-700",children:o?"...":"Session 첨부"}),(0,r.jsx)("button",{type:"button",onClick:c,disabled:o,"data-testid":"showroom-camera-route-intake",className:"flex-1 rounded-lg border border-emerald-500 bg-emerald-500 px-3 py-1.5 text-sm font-semibold text-white transition hover:bg-emerald-600 disabled:cursor-not-allowed disabled:opacity-50",children:o?"...":"Intake 저장"})]}),l&&(0,r.jsx)("div",{role:"alert","data-testid":"showroom-camera-error",className:"text-xs text-red-600 dark:text-red-400",children:l})]})})]})}function ey(e){let{onAttachToSession:t}=e,{config:a}=(0,v.Q)(),o=(0,n.useRef)(null),[l,i]=(0,n.useState)(null),[s,d]=(0,n.useState)(null),[c,u]=(0,n.useState)(""),[m,p]=(0,n.useState)(!1),[h,b]=(0,n.useState)(null),x=()=>{if(s)try{URL.revokeObjectURL(s)}catch(e){}i(null),d(null),u(""),p(!1),b(null)},g=async e=>{if(!l)return;if(!a.baseUrl)return void b("Daemon URL 미설정 — Settings 에서 입력");p(!0),b(null),(0,W.cY)("showroom.camera.submit",{route:e,hasCaption:c.trim().length>0});let r=await ew({baseUrl:a.baseUrl,...a.token?{token:a.token}:{},file:l,...c.trim()?{caption:c}:{},route:{kind:e}});if(!r.ok){b("".concat(r.stage," 실패: ").concat(r.reason)),p(!1),(0,W.cY)("showroom.camera.error",{stage:r.stage,status:r.status});return}"session"===r.route?(null==t||t(r.meta),eg.oR.success("\uD83D\uDCCE ".concat(r.meta.filename," (").concat((r.meta.size/1024).toFixed(1)," kB) \xb7 session 첨부됨"))):eg.oR.success("\uD83D\uDCE5 사진 저장됨 \xb7 intake ".concat(r.intakeId||"(id 없음)")),(0,W.cY)("showroom.camera.ok",{route:r.route,id:r.meta.id}),ef.K.emit({surface:"pwa",intent:{layer:"gesture",kind:"session"===r.route?"pwa.gesture.camera_attach_session":"pwa.gesture.camera_intake_save",target:{kind:"attachment",id:r.meta.id,label:r.meta.filename},value:{route:r.route,hasCaption:c.trim().length>0,sizeKb:Math.round(r.meta.size/1024)}},..."intake"===r.route&&r.intakeId?{context:{active_workflow_run_id:r.intakeId}}:{}}),x()};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(ek,{pendingFile:l,pendingPreviewUrl:s,caption:c,busy:m,error:h,onPickFile:()=>{var e;null==(e=o.current)||e.click()},onCaptionChange:u,onRouteSession:()=>{g("session")},onRouteIntake:()=>{g("intake")},onCancel:x}),(0,r.jsx)("input",{ref:o,type:"file",accept:"image/*",capture:"environment",className:"hidden",onChange:e=>{var t;let a=null==(t=e.target.files)?void 0:t[0];if(e.target.value="",!a)return;(0,W.cY)("showroom.camera.pick",{filename:a.name,size:a.size,type:a.type});let r=null;try{r=URL.createObjectURL(a)}catch(e){}i(a),d(r),u(""),b(null)},"data-testid":"showroom-camera-input"})]})}var ej=a(12127);function ez(e){var t,a,o,i,d,c,u;let{onSend:m,panels:p,liveCount:h,attachments:b,onAttach:x,onRemoveAttachment:g,terminalContexts:f,onPinTerminalContext:v,onRemoveTerminalContext:w,priorAnswers:k,onRemovePriorAnswer:j,onTogglePriorAnswer:z,urlContexts:S,onAddUrlContext:C,onRemoveUrlContext:I,clipboardContexts:A,onAddClipboardContext:M,onRemoveClipboardContext:P,videoContexts:L,onAddVideoContext:D,onRemoveVideoContext:R,audioContexts:Y,onAddAudioContext:U,onRemoveAudioContext:F,onUpdateAudioTranscript:K,listTerminals:O,fetchTerminalScrollback:B,disabled:q=!1}=e,[H,J]=(0,n.useState)(""),[W,V]=(0,n.useState)(!1),$=(0,n.useRef)(null),[Q,Z]=(0,n.useState)(""),[X,ee]=(0,n.useState)(!1),[et,ea]=(0,n.useState)([]),[er,en]=(0,n.useState)(!1),[eb,ex]=(0,n.useState)(null),[eg,ef]=(0,n.useState)(null),ev=!!O&&!!B,ew=(0,n.useCallback)(async()=>{if(O){en(!0),ex(null);try{let{terminals:e}=await O();ea(e)}catch(e){ex(String(e))}finally{en(!1)}}},[O]);(0,n.useEffect)(()=>{X&&ev&&ew()},[X,ev,ew]);let ek=(0,n.useCallback)(async e=>{if(B){ef(e);try{let{scrollback:t}=await B(e,50);Z(t)}catch(e){ex("scrollback: ".concat(String(e)))}finally{ef(null)}}},[B]),[ez,eN]=(0,n.useState)(null),eS=(0,n.useCallback)(()=>{var e;let t=$.current;if(!t)return void eN(null);let a=null!=(e=t.selectionStart)?e:H.length;eN(function(e,t,a){var r;let n=e.slice(0,t),o=_.exec(n);if(!o)return null;let l=null!=(r=o[2])?r:"",i=n.length-l.length-1,s=l.toLowerCase();return{tokenStart:i,tokenEnd:t,partial:l,matches:a.filter(e=>y(e,a).toLowerCase().startsWith(s)),allMatches:"all".startsWith(s)}}(H,a,p))},[H,p]),eC=(0,n.useCallback)(e=>{let t=$.current;t&&ez&&(J(H.slice(0,ez.tokenStart)+"@".concat(e," ")+H.slice(ez.tokenEnd)),eN(null),requestAnimationFrame(()=>{let a=ez.tokenStart+e.length+2;t.setSelectionRange(a,a),t.focus()}))},[H,ez]),eI=(0,n.useCallback)(()=>{let e=Q.trim();e&&v&&(v({id:"tc-".concat(Date.now().toString(36),"-").concat(N()),label:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Date.now(),a=e.split("\n").length,r=new Date(t),n=String(r.getHours()).padStart(2,"0"),o=String(r.getMinutes()).padStart(2,"0");return"terminal \xb7 ".concat(a," lines \xb7 ").concat(n,":").concat(o)}(e),text:e,pinnedAt:Date.now()}),Z(""),ee(!1))},[Q,v]),eA=(0,n.useCallback)(async()=>{let e=H.trim();if(e&&!W&&!q){V(!0);try{await m(e),J("")}finally{V(!1)}}},[H,W,q,m]),eT=(0,n.useCallback)(e=>{if(ez&&"Enter"===e.key&&!e.shiftKey&&!e.metaKey&&!e.ctrlKey){let t=ez.matches[0];if(t){e.preventDefault(),eC(y(t,p));return}if(ez.allMatches){e.preventDefault(),eC("all");return}}if(ez&&"Escape"===e.key){e.preventDefault(),eN(null);return}"Enter"!==e.key||e.shiftKey||e.metaKey||e.ctrlKey||(e.preventDefault(),eA())},[eA,ez,eC,p]),eE=(0,n.useCallback)(e=>{var t,a;let r=$.current,n="@".concat(e," ");if(!r)return void J(e=>"".concat(e).concat(n));let o=null!=(t=r.selectionStart)?t:H.length,l=null!=(a=r.selectionEnd)?a:H.length;J(H.slice(0,o)+n+H.slice(l)),requestAnimationFrame(()=>{let e=o+n.length;r.setSelectionRange(e,e),r.focus()})},[H]),eM=(0,n.useMemo)(()=>T(H,p),[H,p]),eP=E(H,p),eL=0===h&&"broadcast"===eP.mode?"No live panel":"broadcast"===eP.mode?"Send \xb7 ".concat(eP.targets.length):1===eP.targets.length?"Send \xb7 @".concat(y(eP.targets[0],p)):"Send \xb7 @".concat(eP.targets.length),eD=!q&&!W&&H.trim().length>0&&eP.targets.length>0,eR=(null!=(t=null==b?void 0:b.length)?t:0)>0,eY=(null!=(a=null==f?void 0:f.length)?a:0)>0,e_=(null!=(o=null==k?void 0:k.length)?o:0)>0,eU=(null!=(i=null==S?void 0:S.length)?i:0)>0,eF=(null!=(d=null==A?void 0:A.length)?d:0)>0,eK=(null!=(c=null==L?void 0:L.length)?c:0)>0,eO=(null!=(u=null==Y?void 0:Y.length)?u:0)>0,eB=(0,n.useRef)(null),eq=(0,n.useRef)(null),[eH,eJ]=(0,n.useState)(!1),[eW,eV]=(0,n.useState)(null),[e$,eQ]=(0,n.useState)(!1),[eZ,eX]=(0,n.useState)(null),eG=(0,n.useCallback)(async e=>{if(D){eJ(!0),eV(null);try{var t;let a=await D(e);a.ok||eV(null!=(t=a.reason)?t:"video extract failed")}finally{eJ(!1)}}},[D]),e0=(0,n.useCallback)(async e=>{if(U){eQ(!0),eX(null);try{var t;let a=await U(e);a.ok||eX(null!=(t=a.reason)?t:"audio extract failed")}finally{eQ(!1)}}},[U]),e1=(0,n.useCallback)((e,t)=>{if(!K)return;let a=window.prompt("Audio transcript:",t);null!==a&&K(e,a)},[K]),[e5,e3]=(0,n.useState)(""),[e2,e7]=(0,n.useState)(!1),[e9,e6]=(0,n.useState)(null),[e4,e8]=(0,n.useState)(!1),te=(0,n.useCallback)(async()=>{if(!C)return;let e=e5.trim();if(!e)return void e6("url required");e7(!0),e6(null);try{let a=await C(e);if(a.ok)e3(""),e8(!1);else{var t;e6(null!=(t=a.reason)?t:"fetch failed")}}finally{e7(!1)}},[e5,C]),[tt,ta]=(0,n.useState)(!1),[tr,tn]=(0,n.useState)(null),to=(0,n.useCallback)(async()=>{if(M){ta(!0),tn(null);try{var e;let t=await M();t.ok||tn(null!=(e=t.reason)?e:"paste failed")}finally{ta(!1)}}},[M]);return(0,r.jsxs)("div",{className:"border-t border-zinc-200/50 bg-zinc-50 px-3 py-2 dark:border-zinc-700/50 dark:bg-zinc-900/40",children:[eU&&(0,r.jsxs)("div",{className:"mb-2 flex flex-wrap items-center gap-1.5 text-[10px] text-zinc-500","data-testid":"showroom-url-context-list",children:[(0,r.jsx)("span",{children:"url:"}),null==S?void 0:S.map(e=>(0,r.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-full border border-sky-300 bg-white px-2 py-0.5 text-[11px] font-medium text-sky-700 dark:border-sky-700 dark:bg-zinc-800 dark:text-sky-300","data-testid":"showroom-url-chip-".concat(e.id),title:"".concat(e.url,"\n\n").concat(e.text.slice(0,200)).concat(e.text.length>200?"…":""),children:[(0,r.jsx)("span",{className:"max-w-[220px] truncate",children:e.label}),I&&(0,r.jsx)("button",{type:"button",onClick:()=>I(e.id),disabled:q||W,className:"rounded-full p-0.5 hover:bg-sky-100 disabled:cursor-not-allowed disabled:opacity-50 dark:hover:bg-sky-900/50","aria-label":"Remove url context ".concat(e.label),"data-testid":"showroom-url-remove-".concat(e.id),children:(0,r.jsx)(l.A,{className:"size-2.5","aria-hidden":!0})})]},e.id))]}),eK&&(0,r.jsxs)("div",{className:"mb-2 flex flex-wrap items-center gap-1.5 text-[10px] text-zinc-500","data-testid":"showroom-video-context-list",children:[(0,r.jsx)("span",{children:"video:"}),null==L?void 0:L.map(e=>(0,r.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-full border border-purple-300 bg-white px-2 py-0.5 text-[11px] font-medium text-purple-700 dark:border-purple-700 dark:bg-zinc-800 dark:text-purple-300","data-testid":"showroom-video-chip-".concat(e.id),title:"".concat(e.filename," \xb7 ").concat(e.widthPx,"x").concat(e.heightPx," \xb7 ").concat(e.durationSec,"s"),children:[(0,r.jsx)(eo.A,{className:"size-3","aria-hidden":!0}),(0,r.jsx)("span",{className:"max-w-[220px] truncate",children:e.label}),R&&(0,r.jsx)("button",{type:"button",onClick:()=>R(e.id),disabled:q||W,className:"rounded-full p-0.5 hover:bg-purple-100 disabled:cursor-not-allowed disabled:opacity-50 dark:hover:bg-purple-900/50","aria-label":"Remove video context ".concat(e.label),"data-testid":"showroom-video-remove-".concat(e.id),children:(0,r.jsx)(l.A,{className:"size-2.5","aria-hidden":!0})})]},e.id))]}),eO&&(0,r.jsxs)("div",{className:"mb-2 flex flex-wrap items-center gap-1.5 text-[10px] text-zinc-500","data-testid":"showroom-audio-context-list",children:[(0,r.jsx)("span",{children:"audio:"}),null==Y?void 0:Y.map(e=>(0,r.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-full border border-cyan-300 bg-white px-2 py-0.5 text-[11px] font-medium text-cyan-700 dark:border-cyan-700 dark:bg-zinc-800 dark:text-cyan-300","data-testid":"showroom-audio-chip-".concat(e.id),title:"".concat(e.filename," \xb7 ").concat(e.durationSec,"s \xb7 ").concat(e.transcript?"transcript present":"click to add transcript"),children:[(0,r.jsx)(el.A,{className:"size-3","aria-hidden":!0}),(0,r.jsxs)("button",{type:"button",onClick:()=>e1(e.id,e.transcript),disabled:q||W||!K,className:"max-w-[220px] truncate hover:underline disabled:cursor-default disabled:no-underline","data-testid":"showroom-audio-edit-".concat(e.id),children:[e.label,e.transcript?" \xb7 \uD83D\uDCDD":""]}),F&&(0,r.jsx)("button",{type:"button",onClick:()=>F(e.id),disabled:q||W,className:"rounded-full p-0.5 hover:bg-cyan-100 disabled:cursor-not-allowed disabled:opacity-50 dark:hover:bg-cyan-900/50","aria-label":"Remove audio context ".concat(e.label),"data-testid":"showroom-audio-remove-".concat(e.id),children:(0,r.jsx)(l.A,{className:"size-2.5","aria-hidden":!0})})]},e.id))]}),eW&&(0,r.jsx)("div",{className:"mb-2 px-2 py-1 text-[11px] text-purple-700 dark:text-purple-300","data-testid":"showroom-video-error",children:eW}),eZ&&(0,r.jsx)("div",{className:"mb-2 px-2 py-1 text-[11px] text-cyan-700 dark:text-cyan-300","data-testid":"showroom-audio-error",children:eZ}),eF&&(0,r.jsxs)("div",{className:"mb-2 flex flex-wrap items-center gap-1.5 text-[10px] text-zinc-500","data-testid":"showroom-clipboard-context-list",children:[(0,r.jsx)("span",{children:"clip:"}),null==A?void 0:A.map(e=>(0,r.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-full border border-emerald-300 bg-white px-2 py-0.5 text-[11px] font-medium text-emerald-700 dark:border-emerald-700 dark:bg-zinc-800 dark:text-emerald-300","data-testid":"showroom-clipboard-chip-".concat(e.id),title:e.text.slice(0,200),children:[(0,r.jsx)("span",{className:"max-w-[220px] truncate",children:e.label}),P&&(0,r.jsx)("button",{type:"button",onClick:()=>P(e.id),disabled:q||W,className:"rounded-full p-0.5 hover:bg-emerald-100 disabled:cursor-not-allowed disabled:opacity-50 dark:hover:bg-emerald-900/50","aria-label":"Remove clipboard context ".concat(e.label),"data-testid":"showroom-clipboard-remove-".concat(e.id),children:(0,r.jsx)(l.A,{className:"size-2.5","aria-hidden":!0})})]},e.id))]}),e4&&C&&(0,r.jsxs)("div",{className:"mb-2 rounded border border-sky-200 bg-sky-50 p-2 dark:border-sky-800 dark:bg-sky-900/20",children:[(0,r.jsxs)("div",{className:"flex items-center gap-1",children:[(0,r.jsx)("input",{type:"url",value:e5,onChange:e=>e3(e.target.value),placeholder:"https://...",disabled:e2,className:"flex-1 rounded border border-sky-300 bg-white px-2 py-1 text-xs disabled:opacity-60 dark:border-sky-700 dark:bg-zinc-900","data-testid":"showroom-url-input"}),(0,r.jsx)("button",{type:"button",onClick:te,disabled:e2||!e5.trim(),className:"rounded bg-sky-600 px-2 py-1 text-xs text-white hover:bg-sky-700 disabled:cursor-not-allowed disabled:opacity-50","data-testid":"showroom-url-fetch",children:e2?"…":"fetch"}),(0,r.jsx)("button",{type:"button",onClick:()=>{e8(!1),e3(""),e6(null)},className:"rounded p-1 text-zinc-500 hover:bg-zinc-100 dark:hover:bg-zinc-800","aria-label":"Close url input",children:(0,r.jsx)(l.A,{className:"size-3","aria-hidden":!0})})]}),e9&&(0,r.jsx)("p",{className:"mt-1 text-[10px] text-rose-600","data-testid":"showroom-url-error",children:e9})]}),tr&&(0,r.jsxs)("p",{className:"mb-2 text-[10px] text-rose-600","data-testid":"showroom-clipboard-error",children:["clipboard: ",tr]}),e_&&(0,r.jsxs)("div",{className:"mb-2 flex flex-wrap items-center gap-1.5 text-[10px] text-zinc-500","data-testid":"showroom-prior-answer-list",children:[(0,r.jsx)(G.A,{className:"size-3","aria-hidden":!0}),(0,r.jsx)("span",{children:"prior:"}),null==k?void 0:k.map(e=>{let t=!1!==e.enabled;return(0,r.jsxs)("span",{className:"".concat("inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-[11px] font-medium transition-opacity"," ").concat(t?"border border-indigo-300 bg-white text-indigo-700 dark:border-indigo-700 dark:bg-zinc-800 dark:text-indigo-300":"border border-dashed border-zinc-300 bg-zinc-50 text-zinc-400 line-through opacity-60 dark:border-zinc-600 dark:bg-zinc-900 dark:text-zinc-500"),"data-testid":"showroom-prior-chip-".concat(e.id),"data-enabled":t?"true":"false",title:e.text.slice(0,200),children:[z?(0,r.jsx)("button",{type:"button",onClick:()=>z(e.id),disabled:q||W,className:"max-w-[200px] truncate text-left hover:underline disabled:cursor-not-allowed disabled:opacity-50","aria-label":"".concat(t?"Disable":"Enable"," prior answer ").concat(e.label),"aria-pressed":t,"data-testid":"showroom-prior-toggle-".concat(e.id),children:e.label}):(0,r.jsx)("span",{className:"max-w-[200px] truncate",children:e.label}),j&&(0,r.jsx)("button",{type:"button",onClick:()=>j(e.id),disabled:q||W,className:"rounded-full p-0.5 hover:bg-indigo-100 disabled:cursor-not-allowed disabled:opacity-50 dark:hover:bg-indigo-900/50","aria-label":"Remove prior answer ".concat(e.label),"data-testid":"showroom-prior-remove-".concat(e.id),children:(0,r.jsx)(l.A,{className:"size-2.5","aria-hidden":!0})})]},e.id)})]}),eY&&(0,r.jsxs)("div",{className:"mb-2 flex flex-wrap items-center gap-1.5 text-[10px] text-zinc-500","data-testid":"showroom-terminal-context-list",children:[(0,r.jsx)(ei.A,{className:"size-3","aria-hidden":!0}),(0,r.jsx)("span",{children:"terminal:"}),null==f?void 0:f.map(e=>(0,r.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-full border border-violet-300 bg-white px-2 py-0.5 text-[11px] font-medium text-violet-700 dark:border-violet-700 dark:bg-zinc-800 dark:text-violet-300","data-testid":"showroom-terminal-chip-".concat(e.id),title:e.text.slice(0,200),children:[(0,r.jsx)("span",{className:"max-w-[200px] truncate",children:e.label}),w&&(0,r.jsx)("button",{type:"button",onClick:()=>w(e.id),disabled:q||W,className:"rounded-full p-0.5 hover:bg-violet-100 disabled:cursor-not-allowed disabled:opacity-50 dark:hover:bg-violet-900/50","aria-label":"Remove terminal context ".concat(e.label),"data-testid":"showroom-terminal-remove-".concat(e.id),children:(0,r.jsx)(l.A,{className:"size-2.5","aria-hidden":!0})})]},e.id))]}),X&&v&&(0,r.jsxs)("div",{className:"mb-2 rounded-md border border-violet-300 bg-violet-50/40 p-2 dark:border-violet-700 dark:bg-violet-900/20","data-testid":"showroom-terminal-pin-draft",children:[(0,r.jsxs)("div",{className:"mb-1 flex items-center justify-between text-[10px] text-violet-700 dark:text-violet-300",children:[(0,r.jsx)("span",{children:ev?"active terminal 선택 또는 paste \xb7 Pin 으로 broadcast prefix 추가":"terminal output 을 paste \xb7 Pin 으로 broadcast prefix 추가"}),(0,r.jsx)("button",{type:"button",onClick:()=>{ee(!1),Z("")},className:"rounded p-0.5 hover:bg-violet-100 dark:hover:bg-violet-900/40","aria-label":"Cancel pin",children:(0,r.jsx)(l.A,{className:"size-3","aria-hidden":!0})})]}),ev&&(0,r.jsxs)("div",{className:"mb-2 rounded border border-violet-200 bg-white/80 p-1.5 dark:border-violet-700 dark:bg-zinc-900/60","data-testid":"showroom-terminal-picker",children:[(0,r.jsxs)("div",{className:"mb-1 flex items-center justify-between text-[10px] text-violet-600 dark:text-violet-300",children:[(0,r.jsxs)("span",{children:["active terminals",er&&" \xb7 loading…",!er&&0===et.length&&" \xb7 없음"]}),(0,r.jsx)("button",{type:"button",onClick:()=>void ew(),disabled:er,className:"inline-flex items-center gap-0.5 rounded p-0.5 hover:bg-violet-100 disabled:opacity-50 dark:hover:bg-violet-900/40","aria-label":"Refresh terminals list","data-testid":"showroom-terminal-picker-refresh",children:(0,r.jsx)(es.A,{className:"size-3 ".concat(er?"animate-spin":""),"aria-hidden":!0})})]}),eb&&(0,r.jsx)("div",{className:"mb-1 text-[10px] text-rose-600 dark:text-rose-300",children:eb}),et.length>0&&(0,r.jsx)("div",{className:"flex flex-wrap gap-1",children:et.map(e=>(0,r.jsxs)("button",{type:"button",onClick:()=>void ek(e.id),disabled:eg===e.id,className:"inline-flex max-w-[220px] items-center gap-1 truncate rounded-full border border-violet-300 bg-white px-2 py-0.5 text-[10px] text-violet-700 hover:bg-violet-100 disabled:cursor-not-allowed disabled:opacity-50 dark:border-violet-700 dark:bg-zinc-800 dark:text-violet-300 dark:hover:bg-violet-900/40",title:"".concat(e.name||e.id).concat(e.status?" \xb7 ".concat(e.status):""),"data-testid":"showroom-terminal-picker-".concat(e.id),children:[(0,r.jsx)(ei.A,{className:"size-3","aria-hidden":!0}),(0,r.jsxs)("span",{className:"truncate",children:[e.name||e.id,!e.alive&&" (exited)"]})]},e.id))})]}),(0,r.jsx)("textarea",{value:Q,onChange:e=>Z(e.target.value),rows:4,placeholder:"paste terminal output here…",className:"w-full resize-y rounded-md border border-violet-200 bg-white px-2 py-1.5 font-mono text-[11px] focus:outline-none focus:ring-2 focus:ring-violet-400 dark:border-violet-700 dark:bg-zinc-900","data-testid":"showroom-terminal-draft-textarea"}),(0,r.jsx)("div",{className:"mt-1 flex justify-end",children:(0,r.jsxs)("button",{type:"button",onClick:eI,disabled:!Q.trim(),className:"inline-flex items-center gap-1 rounded-md bg-violet-700 px-2 py-1 text-[11px] font-medium text-white hover:bg-violet-600 disabled:cursor-not-allowed disabled:opacity-50","data-testid":"showroom-terminal-pin-confirm",children:[(0,r.jsx)(ei.A,{className:"size-3","aria-hidden":!0}),"Pin"]})})]}),eR&&(0,r.jsxs)("div",{className:"mb-2 flex flex-wrap items-center gap-1.5 text-[10px] text-zinc-500","data-testid":"showroom-attachment-list",children:[(0,r.jsx)(ed.A,{className:"size-3","aria-hidden":!0}),(0,r.jsx)("span",{children:"attached:"}),null==b?void 0:b.map(e=>(0,r.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-full border border-sky-300 bg-white px-2 py-0.5 text-[11px] font-medium text-sky-700 dark:border-sky-700 dark:bg-zinc-800 dark:text-sky-300","data-testid":"showroom-attachment-chip-".concat(e.id),children:[(0,r.jsx)("span",{className:"max-w-[160px] truncate",children:e.filename}),g&&(0,r.jsx)("button",{type:"button",onClick:()=>g(e.id),disabled:q||W,className:"rounded-full p-0.5 hover:bg-sky-100 disabled:cursor-not-allowed disabled:opacity-50 dark:hover:bg-sky-900/50","aria-label":"Remove attachment ".concat(e.filename),"data-testid":"showroom-attachment-remove-".concat(e.id),children:(0,r.jsx)(l.A,{className:"size-2.5","aria-hidden":!0})})]},e.id))]}),p.length>0&&(0,r.jsxs)("div",{className:"mb-2 flex flex-wrap items-center gap-1.5 text-[10px] text-zinc-500","data-testid":"showroom-mention-picker",children:[(0,r.jsx)(ec.A,{className:"size-3","aria-hidden":!0}),(0,r.jsx)("span",{children:"mention:"}),p.map(e=>{let t=y(e,p);return(0,r.jsxs)("button",{type:"button",onClick:()=>eE(t),disabled:q||W,className:"inline-flex items-center rounded-full border border-zinc-300 bg-white px-2 py-0.5 text-[11px] font-medium text-zinc-700 hover:bg-zinc-100 disabled:cursor-not-allowed disabled:opacity-50 dark:border-zinc-700 dark:bg-zinc-800 dark:text-zinc-200 dark:hover:bg-zinc-700","data-testid":"showroom-mention-chip-".concat(t),"aria-label":"Mention ".concat(t," in input"),children:["@",t]},e.id)}),(0,r.jsx)("button",{type:"button",onClick:()=>eE("all"),disabled:q||W,className:"inline-flex items-center rounded-full border border-emerald-300 bg-white px-2 py-0.5 text-[11px] font-medium text-emerald-700 hover:bg-emerald-50 disabled:cursor-not-allowed disabled:opacity-50 dark:border-emerald-700 dark:bg-zinc-800 dark:text-emerald-300 dark:hover:bg-emerald-900/30","data-testid":"showroom-mention-chip-all","aria-label":"Mention all (explicit broadcast)",children:"@all"})]}),(eM.targets.length>0||eM.broadcastAll||eM.unknown.length>0)&&(0,r.jsxs)("div",{className:"mb-1 flex flex-wrap items-center gap-1 text-[10px]","data-testid":"showroom-mention-detected-strip","aria-label":"Detected mentions in input",children:[(0,r.jsx)("span",{className:"text-zinc-500",children:"detected:"}),eM.broadcastAll&&(0,r.jsxs)("span",{className:"inline-flex items-center gap-0.5 rounded-full border border-emerald-400 bg-emerald-50 px-1.5 py-0.5 text-emerald-700 dark:border-emerald-700 dark:bg-emerald-900/40 dark:text-emerald-300","data-testid":"showroom-mention-detected-all",title:"explicit broadcast (mute/freeze 무시)",children:[(0,r.jsx)(ec.A,{className:"size-2.5","aria-hidden":!0}),"all"]}),eM.targets.map(e=>{let t=y(e,p),a="agent"===e.kind;return(0,r.jsxs)("span",{className:"inline-flex items-center gap-0.5 rounded-full px-1.5 py-0.5 ".concat(a?"border border-amber-400 bg-amber-50 text-amber-700 dark:border-amber-700 dark:bg-amber-900/40 dark:text-amber-300":"border border-indigo-400 bg-indigo-50 text-indigo-700 dark:border-indigo-700 dark:bg-indigo-900/40 dark:text-indigo-300"),"data-testid":"showroom-mention-detected-".concat(t),title:"".concat(a?"agent CLI":"chat"," panel \xb7 ").concat(e.state),children:[a?(0,r.jsx)(s.A,{className:"size-2.5","aria-hidden":!0}):(0,r.jsx)(ec.A,{className:"size-2.5","aria-hidden":!0}),t]},e.id)}),eM.unknown.map(e=>(0,r.jsxs)("span",{className:"inline-flex items-center gap-0.5 rounded-full border border-rose-300 bg-rose-50 px-1.5 py-0.5 text-rose-700 line-through dark:border-rose-700 dark:bg-rose-900/40 dark:text-rose-300","data-testid":"showroom-mention-detected-unknown-".concat(e),title:"Unknown mention — panel 없음",children:[(0,r.jsx)(ec.A,{className:"size-2.5","aria-hidden":!0}),e]},"unknown-".concat(e)))]}),ez&&(ez.matches.length>0||ez.allMatches)&&(0,r.jsxs)("div",{className:"mb-1 max-h-32 overflow-y-auto rounded-md border border-zinc-300 bg-white text-xs shadow-sm dark:border-zinc-700 dark:bg-zinc-800","data-testid":"showroom-mention-typeahead",children:[ez.allMatches&&(0,r.jsxs)("button",{type:"button",onClick:()=>eC("all"),className:"block w-full px-3 py-1.5 text-left text-emerald-700 hover:bg-emerald-50 dark:text-emerald-300 dark:hover:bg-emerald-900/30","data-testid":"showroom-mention-typeahead-all",children:[(0,r.jsx)("span",{className:"font-medium",children:"@all"}),(0,r.jsx)("span",{className:"ml-2 text-[10px] text-zinc-500",children:"explicit broadcast"})]}),ez.matches.map((e,t)=>{let a=y(e,p);return(0,r.jsxs)("button",{type:"button",onClick:()=>eC(a),className:"block w-full px-3 py-1.5 text-left hover:bg-zinc-100 dark:hover:bg-zinc-700 ".concat(0!==t||ez.allMatches?"":"bg-zinc-50 font-medium dark:bg-zinc-700/40"),"data-testid":"showroom-mention-typeahead-".concat(a),children:["@",a,(0,r.jsx)("span",{className:"ml-2 text-[10px] text-zinc-500",children:e.state})]},e.id)})]}),(0,r.jsxs)("div",{className:"flex items-end gap-2",children:[v&&(0,r.jsx)("button",{type:"button",onClick:()=>ee(e=>!e),disabled:q||W,className:"rounded p-1.5 text-violet-600 hover:bg-violet-100 disabled:cursor-not-allowed disabled:opacity-50 dark:text-violet-300 dark:hover:bg-violet-900/40","aria-label":"Pin terminal context",title:"Pin terminal output as context","aria-pressed":X,"data-testid":"showroom-terminal-pin-toggle",children:(0,r.jsx)(ei.A,{className:"size-3.5","aria-hidden":!0})}),C&&(0,r.jsx)("button",{type:"button",onClick:()=>e8(e=>!e),disabled:q||W,className:"rounded p-1.5 text-sky-600 hover:bg-sky-100 disabled:cursor-not-allowed disabled:opacity-50 dark:text-sky-300 dark:hover:bg-sky-900/40","aria-label":"Add URL context",title:"Fetch URL as context","aria-pressed":e4,"data-testid":"showroom-url-pin-toggle",children:(0,r.jsx)(eu.A,{className:"size-3.5","aria-hidden":!0})}),M&&(0,r.jsx)("button",{type:"button",onClick:to,disabled:q||W||tt,className:"rounded p-1.5 text-emerald-600 hover:bg-emerald-100 disabled:cursor-not-allowed disabled:opacity-50 dark:text-emerald-300 dark:hover:bg-emerald-900/40","aria-label":"Pin clipboard text",title:"Read clipboard text as context","data-testid":"showroom-clipboard-pin",children:(0,r.jsx)(em.A,{className:"size-3.5","aria-hidden":!0})}),D&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("input",{ref:eB,type:"file",accept:"video/*",className:"hidden","data-testid":"showroom-video-input",onChange:e=>{var t;let a=null==(t=e.target.files)?void 0:t[0];a&&eG(a),e.target.value=""}}),(0,r.jsx)("button",{type:"button",onClick:()=>{var e;return null==(e=eB.current)?void 0:e.click()},disabled:q||W||eH,className:"rounded p-1.5 text-purple-600 hover:bg-purple-100 disabled:cursor-not-allowed disabled:opacity-50 dark:text-purple-300 dark:hover:bg-purple-900/40","aria-label":"Pin video file as context",title:"Pick video file (keyframe extracted via canvas)","data-testid":"showroom-video-pin",children:(0,r.jsx)(eo.A,{className:"size-3.5","aria-hidden":!0})})]}),U&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("input",{ref:eq,type:"file",accept:"audio/*",className:"hidden","data-testid":"showroom-audio-input",onChange:e=>{var t;let a=null==(t=e.target.files)?void 0:t[0];a&&e0(a),e.target.value=""}}),(0,r.jsx)("button",{type:"button",onClick:()=>{var e;return null==(e=eq.current)?void 0:e.click()},disabled:q||W||e$,className:"rounded p-1.5 text-cyan-600 hover:bg-cyan-100 disabled:cursor-not-allowed disabled:opacity-50 dark:text-cyan-300 dark:hover:bg-cyan-900/40","aria-label":"Pin audio file as context",title:"Pick audio file (metadata + optional transcript)","data-testid":"showroom-audio-pin",children:(0,r.jsx)(el.A,{className:"size-3.5","aria-hidden":!0})})]}),x&&(0,r.jsx)(eh.u,{onAttached:x}),x&&(0,r.jsx)(ey,{onAttachToSession:e=>x([e])}),x&&(0,r.jsx)(ej.z,{}),(0,r.jsx)("textarea",{ref:$,id:"showroom-broadcast-input",value:H,onChange:e=>{J(e.target.value),requestAnimationFrame(eS)},onSelect:()=>eS(),onKeyDown:eT,onBlur:()=>{setTimeout(()=>eN(null),100)},rows:2,disabled:q||W,placeholder:h>0?"".concat(h," live panel 에 broadcast — 또는 @name 으로 targeted (Enter)…"):"모든 panel 이 mute \xb7 live 로 전환하거나 panel 추가",className:"flex-1 resize-none rounded-md border border-zinc-300 bg-white px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-zinc-400 disabled:cursor-not-allowed disabled:opacity-60 dark:border-zinc-700 dark:bg-zinc-800","aria-label":"Showroom broadcast input","data-testid":"showroom-input"}),(0,r.jsxs)("button",{type:"button",onClick:()=>void eA(),disabled:!eD,className:"inline-flex h-9 items-center gap-1.5 rounded-md bg-zinc-900 px-3 text-xs font-medium text-white hover:bg-zinc-700 disabled:cursor-not-allowed disabled:opacity-50 dark:bg-zinc-100 dark:text-zinc-900 dark:hover:bg-zinc-300","aria-label":"broadcast"===eP.mode?"Broadcast to all live panels":"Targeted send to ".concat(eP.targets.length," panel(s)"),"data-testid":"showroom-send",children:[(0,r.jsx)(ep.A,{className:"size-3.5","aria-hidden":!0}),eL]})]})]})}var eN=a(43468);function eS(e){return e&&"object"==typeof e?"string"!=typeof e.requestId||"string"!=typeof e.prompt?null:{requestId:e.requestId,prompt:e.prompt,..."string"==typeof e.detail?{detail:e.detail}:{},yesLabel:"string"==typeof e.yesLabel?e.yesLabel:"Yes",noLabel:"string"==typeof e.noLabel?e.noLabel:"No"}:null}function eC(e){return e&&"object"==typeof e&&"string"==typeof e.requestId?e.requestId:null}function eI(e){let{pending:t,submitting:a,error:n,onAnswer:o}=e;return t?(0,r.jsxs)("div",{role:"alertdialog","aria-label":"Approval request","data-testid":"hitl-banner","data-request-id":t.requestId,className:"fixed left-1/2 top-4 z-50 flex w-[min(calc(100vw-2rem),36rem)] -translate-x-1/2 flex-col gap-3 rounded-2xl border border-amber-300/70 bg-amber-50/95 p-4 shadow-2xl ring-1 ring-amber-400/30 backdrop-blur-sm dark:border-amber-700/60 dark:bg-amber-950/90 dark:ring-amber-700/50",children:[(0,r.jsxs)("div",{className:"flex items-start gap-3",children:[(0,r.jsx)("div",{className:"flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-amber-200 text-amber-900 dark:bg-amber-800/80 dark:text-amber-100",children:(0,r.jsx)("span",{"aria-hidden":!0,className:"text-base",children:"⚠"})}),(0,r.jsxs)("div",{className:"flex-1",children:[(0,r.jsx)("div",{className:"text-sm font-semibold text-amber-900 dark:text-amber-100",children:t.prompt}),t.detail&&(0,r.jsx)("div",{className:"mt-1 break-words text-xs text-amber-800/80 dark:text-amber-200/80",children:t.detail})]})]}),(0,r.jsxs)("div",{className:"flex gap-2",children:[(0,r.jsx)("button",{type:"button",onClick:()=>o(!1),disabled:a,"data-testid":"hitl-banner-deny",className:"flex-1 rounded-lg border border-amber-300 bg-white px-3 py-1.5 text-sm font-medium text-amber-900 transition hover:bg-amber-100 disabled:cursor-not-allowed disabled:opacity-50 dark:border-amber-700 dark:bg-amber-900/40 dark:text-amber-100 dark:hover:bg-amber-800/60",children:t.noLabel}),(0,r.jsx)("button",{type:"button",onClick:()=>o(!0),disabled:a,"data-testid":"hitl-banner-approve",className:"flex-1 rounded-lg border border-amber-500 bg-amber-500 px-3 py-1.5 text-sm font-semibold text-white transition hover:bg-amber-600 disabled:cursor-not-allowed disabled:opacity-50",children:t.yesLabel})]}),n&&(0,r.jsx)("div",{role:"alert","data-testid":"hitl-banner-error",className:"text-xs text-red-700 dark:text-red-300",children:n})]}):null}function eA(){let e=(0,eN.Qj)(),{config:t}=(0,v.Q)(),{pending:a,submitting:o,error:l,submit:i}=function(e){let{client:t,baseUrl:a,fetchImpl:r,onDebug:o}=e,[l,i]=(0,n.useState)(null),[s,d]=(0,n.useState)(!1),[c,u]=(0,n.useState)(null),m=(0,n.useRef)(null!=r?r:"undefined"!=typeof fetch?fetch:null);(0,n.useEffect)(()=>{m.current=null!=r?r:"undefined"!=typeof fetch?fetch:null},[r]),(0,n.useEffect)(()=>{if(t)return t.subscribeEvents({topics:["hitl.banner."],onEvent:e=>{if("hitl.banner.show"===e.kind||"hitl.banner.cancel"===e.kind){if("hitl.banner.show"===e.kind){let t=eS(e.detail);t&&(null==o||o("hitl.banner.show",{requestId:t.requestId}))}else{let t=eC(e.detail);null==o||o("hitl.banner.cancel",{requestId:null!=t?t:"(missing)"})}i(t=>(function(e,t,a){if("hitl.banner.show"===t){var r;return null!=(r=eS(a))?r:e}if("hitl.banner.cancel"===t){if(!e)return e;let t=eC(a);return null!==t&&t!==e.requestId?e:null}return e})(t,e.kind,e.detail)),"hitl.banner.show"===e.kind&&u(null)}},onError:e=>null==o?void 0:o("hitl.banner.sse-error",{msg:e.message})})},[t,o]);let p=(0,n.useCallback)(async e=>{var t,r,n;if(!l||s)return;if(!a)return void u("daemon baseUrl not configured");if(!m.current)return void u("fetch unavailable");d(!0),u(null);let c=(t=l.requestId,"".concat(a.replace(/\/$/,""),"/v1/hitl/callback/").concat(encodeURIComponent(t)));null==o||o("hitl.banner.submit",{requestId:l.requestId,answer:e});try{let t=(r=(await m.current(c,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({answer:e})})).status)>=200&&r<300||404===r?{kind:"cleared"}:{kind:"error",message:"HTTP ".concat(r)};"cleared"===t.kind?i(null):u(t.message)}catch(e){u(null!=(n=e.message)?n:"submit failed")}finally{d(!1)}},[a,o,l,s]);return{pending:l,submitting:s,error:c,submit:p}}({client:e,baseUrl:t.baseUrl,onDebug:(e,t)=>(0,W.cY)(e,t)});return(0,r.jsx)(eI,{pending:a,submitting:o,error:l,onAnswer:e=>{i(e)}})}function eT(e){if(!e||"object"!=typeof e||"string"!=typeof e.sessionId||!Array.isArray(e.candidates)||6!==e.candidates.length||"number"!=typeof e.version||"number"!=typeof e.generatedAt)return null;for(let t of e.candidates)if(!t||"object"!=typeof t||"string"!=typeof t.label||"number"!=typeof t.confidence)return null;return e}function eE(e){let{label:t,confidence:a,reason:n,disabled:o,onTap:l}=e,i=Number.isNaN(a)||!Number.isFinite(a)||a<=0?100:a>=.9?600:a>=.7?500:a>=.5?400:a>=.3?300:a>=.15?200:100,s=function(e){switch(e){case 600:return"bg-emerald-600 hover:bg-emerald-700 text-white border-emerald-600";case 500:return"bg-emerald-500 hover:bg-emerald-600 text-white border-emerald-500";case 400:return"bg-emerald-400 hover:bg-emerald-500 text-emerald-950 border-emerald-400";case 300:return"bg-emerald-300 hover:bg-emerald-400 text-emerald-950 border-emerald-300";case 200:return"bg-emerald-200 hover:bg-emerald-300 text-emerald-950 border-emerald-200";default:return"bg-zinc-100 hover:bg-zinc-200 text-zinc-700 border-zinc-200 dark:bg-zinc-800 dark:hover:bg-zinc-700 dark:text-zinc-300 dark:border-zinc-700"}}(i),d="".concat(Math.round(100*a),"%");return(0,r.jsxs)("button",{type:"button",onClick:l,disabled:o,"data-testid":"intent-button-".concat(t),"data-confidence":a.toFixed(3),"data-intensity":i,title:n?"".concat(t," \xb7 ").concat(d," \xb7 ").concat(n):"".concat(t," \xb7 ").concat(d),"aria-label":"".concat(t," \xb7 신뢰도 ").concat(d).concat(n?" \xb7 ".concat(n):""),className:"flex flex-col items-center justify-center rounded-lg border px-3 py-2 text-xs font-medium shadow-sm transition disabled:cursor-not-allowed disabled:opacity-50 ".concat(s),children:[(0,r.jsx)("span",{className:"leading-tight",children:t}),(0,r.jsx)("span",{className:"mt-0.5 text-[10px] opacity-70",children:d})]})}var eM=a(20866);function eP(e){var t;let{ranking:a,submitting:n,error:o,onTap:l,collapsed:i=!1,onToggleCollapsed:s}=e,d=a?[...a.candidates].sort((e,t)=>t.confidence-e.confidence):[{label:"계속 진행",confidence:0,reason:"pending"},{label:"오토파일럿",confidence:0,reason:"pending"},{label:"추가 보완",confidence:0,reason:"pending"},{label:"diff 보여줘",confidence:0,reason:"pending"},{label:"승인",confidence:0,reason:"pending"},{label:"잠시 멈춤",confidence:0,reason:"pending"}];return(0,r.jsxs)("div",{"data-testid":"intent-panel","data-version":null!=(t=null==a?void 0:a.version)?t:0,"data-collapsed":i?"true":"false",className:"flex flex-col gap-2 border-y border-zinc-200 bg-white/70 px-3 py-2 backdrop-blur-sm dark:border-zinc-800 dark:bg-zinc-900/70",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsx)("span",{className:"text-[11px] font-medium text-zinc-500 dark:text-zinc-400",children:"intent \xb7 다음 행동"}),(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[a&&(0,r.jsxs)("span",{className:"text-[10px] text-zinc-400 dark:text-zinc-500","data-testid":"intent-panel-version",children:["v",a.version]}),s&&(0,r.jsx)("button",{type:"button",onClick:s,"aria-label":i?"Expand intent panel":"Collapse intent panel","data-testid":"intent-panel-toggle",className:"rounded p-0.5 text-[11px] text-zinc-400 hover:bg-zinc-100 hover:text-zinc-700 dark:text-zinc-500 dark:hover:bg-zinc-800 dark:hover:text-zinc-200",children:i?"▼":"▲"})]})]}),!i&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{role:"group","aria-label":"Intent suggestions",className:"grid grid-cols-3 gap-1.5 sm:grid-cols-6",children:d.map(e=>(0,r.jsx)(eE,{label:e.label,confidence:e.confidence,reason:e.reason,disabled:n||!a,onTap:()=>l(e.label)},e.label))}),o&&(0,r.jsx)("div",{role:"alert","data-testid":"intent-panel-error",className:"text-[11px] text-red-600 dark:text-red-400",children:o})]})]})}function eL(e){let{sessionId:t,onTap:a}=e,o=(0,eN.Qj)(),{config:l}=(0,v.Q)(),{ranking:i,submitting:s,error:d,submitTap:c}=function(e){let{client:t,sessionId:a,baseUrl:r,buildContext:o,fetchImpl:l,onDebug:i}=e,[s,d]=(0,n.useState)(null),[c,u]=(0,n.useState)(!1),[m,p]=(0,n.useState)(null),h=(0,n.useRef)(null!=l?l:"undefined"!=typeof fetch?fetch:null);(0,n.useEffect)(()=>{h.current=null!=l?l:"undefined"!=typeof fetch?fetch:null},[l]),(0,n.useEffect)(()=>{a||d(null)},[a]),(0,n.useEffect)(()=>{var e,n;if(!t||!a)return;let o="".concat(r.replace(/\/$/,""),"/v1/intent-prediction/").concat(encodeURIComponent(a));return null==i||i("intent.snapshot.attempt",{url:o}),null==(n=h.current)||null==(e=n.call(h,o,{method:"GET"}))||e.then(async e=>{if(e.ok)try{let t=await e.json(),r=eT(t);r&&r.sessionId===a&&(null==i||i("intent.sse.ranking",{version:r.version}),d(r))}catch(e){}}).catch(()=>{}),t.subscribeEvents({topics:["intent-prediction."],kinds:["intent-prediction.ranking"],onEvent:e=>{if("intent-prediction.ranking"===e.kind){let t=eT(e.detail);t&&t.sessionId===a&&(null==i||i("intent.sse.ranking",{version:t.version}),d(t))}else{let t=eT(e);t&&t.sessionId===a&&(null==i||i("intent.sse.ranking",{version:t.version}),d(t))}},onError:e=>null==i?void 0:i("intent.sse.error",{msg:e.message})})},[t,a,r,i]);let b=(0,n.useCallback)(async e=>{var t,n;if(!a||c)return;if(!r)return void p("daemon baseUrl not configured");if(!h.current)return void p("fetch unavailable");let l=null!=(t=null==o?void 0:o())?t:{sessionId:a,lastTurnSummary:"",lastErr:null,progressPct:0,fileEditCount:0,idleMs:0};l.sessionId!==a&&(l.sessionId=a),u(!0),p(null),null==i||i("intent.feedback.submit",{label:e,sessionId:a});try{let t=await h.current("".concat(r.replace(/\/$/,""),"/v1/intent-prediction/").concat(encodeURIComponent(a),"/feedback"),{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({chosen:e,context:l})});t.ok||(p("HTTP ".concat(t.status)),null==i||i("intent.feedback.error",{status:t.status}))}catch(t){let e=null!=(n=t.message)?n:"submit failed";p(e),null==i||i("intent.feedback.error",{msg:e})}finally{u(!1)}},[r,o,i,a,c]);return{ranking:s,submitting:c,error:m,submitTap:b}}({client:o,sessionId:t,baseUrl:l.baseUrl,onDebug:(e,t)=>(0,W.cY)(e,t)}),[u,m]=(0,n.useState)(!1);(0,n.useEffect)(()=>(m((0,eM.GZ)()),(0,eM.gu)(m)),[]);let[p,h]=(0,n.useState)("fixed");(0,n.useEffect)(()=>(h((0,eM.sY)()),(0,eM.u9)(h)),[]);let[b,x]=(0,n.useState)(!1),g=(0,n.useRef)(-1);return((0,n.useEffect)(()=>{var e;if("popup"!==p)return;let t=null!=(e=null==i?void 0:i.version)?e:-1;if(t<0||t===g.current)return;g.current=t,x(!0);let a=setTimeout(()=>x(!1),6e3);return()=>clearTimeout(a)},[null==i?void 0:i.version,p]),"off"!==p&&("popup"!==p||b))?(0,r.jsx)(eP,{ranking:i,submitting:s,error:d,collapsed:u,onToggleCollapsed:()=>{let e=!u;(0,eM.mB)(e),m(e),(0,W.cY)("intent.panel.toggle-collapsed",{collapsed:e})},onTap:e=>{"popup"===p&&x(!1),c(e),null==a||a(e)}}):null}let eD="showroom.hitl.disabled";function eR(){if(!window.localStorage)return!1;try{return"true"===window.localStorage.getItem(eD)}catch(e){return!1}}function eY(){let[e,t]=(0,n.useState)(!1),[a,o]=(0,n.useState)(!1);(0,n.useEffect)(()=>{o(!0),t(eR());let e=function(e){let t=t=>{t.key===eD&&e(eR())};return window.addEventListener("storage",t),()=>window.removeEventListener("storage",t)}(t);return()=>{e()}},[]);let l=(0,n.useCallback)(()=>{t(e=>{let t=!e;return!function(e){if(window.localStorage)try{e?window.localStorage.setItem(eD,"true"):window.localStorage.removeItem(eD)}catch(e){return!1}}(t),t})},[]);return a?(0,r.jsxs)("button",{type:"button",onClick:l,"data-testid":"showroom-hitl-toggle","data-state":e?"off":"on",title:e?"HITL prompts disabled for new agent sessions — click to re-enable":"HITL prompts active — click to disable for demo","aria-pressed":!e,className:"inline-flex items-center gap-1 rounded-md border px-2 py-1 text-xs font-mono "+(e?"border-zinc-300 bg-zinc-100 text-zinc-500 hover:bg-zinc-200 dark:border-zinc-700 dark:bg-zinc-800 dark:text-zinc-400 dark:hover:bg-zinc-700":"border-emerald-300 bg-emerald-50 text-emerald-700 hover:bg-emerald-100 dark:border-emerald-700 dark:bg-emerald-900/30 dark:text-emerald-300 dark:hover:bg-emerald-900/50"),children:[(0,r.jsx)("span",{"aria-hidden":!0,children:e?"○":"●"}),(0,r.jsxs)("span",{children:["HITL ",e?"OFF":"ON"]})]}):null}var e_=a(48030);function eU(e){return Array.from(e.querySelectorAll('a[href], button:not([disabled]), input:not([disabled]):not([type="hidden"]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])')).filter(e=>{var t;if(e.hasAttribute("disabled")||"true"===e.getAttribute("aria-hidden"))return!1;let a=null==(t=e.ownerDocument.defaultView)?void 0:t.getComputedStyle(e);return!a||"none"!==a.display&&"hidden"!==a.visibility})}function eF(e){let t=(0,n.useRef)(null);return(0,n.useEffect)(()=>{if(!e.active)return;let a=t.current;if(!a)return;let r=document.activeElement;if(!e.skipInitialFocus){let e=eU(a);if(e.length>0){var n;null==(n=e[0])||n.focus()}else a.tabIndex=-1,a.focus()}function o(e){if("Tab"!==e.key)return;let t=eU(a);if(0===t.length)return void e.preventDefault();let r=t[0],n=t[t.length-1],o=document.activeElement;if(e.shiftKey&&o===r){e.preventDefault(),n.focus();return}e.shiftKey||o!==n||(e.preventDefault(),r.focus())}return a.addEventListener("keydown",o),()=>{if(a.removeEventListener("keydown",o),r&&document.body.contains(r))try{r.focus()}catch(e){}}},[e.active,e.skipInitialFocus]),t}var eK=a(89604);function eO(e){let{open:t,onClose:a}=e,n=eF({active:t,skipInitialFocus:!1});return t?(0,r.jsx)("div",{ref:n,className:"fixed inset-0 z-50 flex items-center justify-center bg-black/40 p-4",role:"dialog","aria-modal":"true","aria-labelledby":"showroom-shortcut-help-title","data-testid":"showroom-shortcut-help",onKeyDown:e=>{"Escape"===e.key&&(e.stopPropagation(),a())},onClick:e=>{e.target===e.currentTarget&&a()},children:(0,r.jsxs)("div",{className:"w-full max-w-md rounded-lg border border-zinc-300 bg-white p-4 shadow-xl dark:border-zinc-700 dark:bg-zinc-900",onClick:e=>e.stopPropagation(),children:[(0,r.jsxs)("div",{className:"mb-3 flex items-center justify-between",children:[(0,r.jsxs)("h2",{id:"showroom-shortcut-help-title",className:"flex items-center gap-2 text-sm font-medium text-zinc-900 dark:text-zinc-100",children:[(0,r.jsx)(e_.A,{className:"size-4","aria-hidden":!0}),"Keyboard shortcuts"]}),(0,r.jsx)("button",{type:"button",onClick:a,className:"rounded p-1 text-zinc-500 hover:bg-zinc-100 dark:hover:bg-zinc-800","aria-label":"Close shortcut help","data-testid":"showroom-shortcut-help-close",children:(0,r.jsx)(l.A,{className:"size-4","aria-hidden":!0})})]}),(0,r.jsx)("ul",{className:"space-y-1.5","data-testid":"showroom-shortcut-help-list",children:eK.nm.map(e=>(0,r.jsxs)("li",{className:"flex items-center justify-between gap-3 rounded px-2 py-1 text-xs text-zinc-700 dark:text-zinc-300","data-testid":"showroom-shortcut-help-row-".concat(e.id),children:[(0,r.jsx)("span",{children:e.effect}),(0,r.jsx)("kbd",{className:"rounded border border-zinc-300 bg-zinc-50 px-1.5 py-0.5 font-mono text-[10px] text-zinc-600 dark:border-zinc-600 dark:bg-zinc-800 dark:text-zinc-300",children:e.combo})]},e.id))}),(0,r.jsxs)("p",{className:"mt-3 text-[10px] text-zinc-500",children:["Editable surfaces (input \xb7 textarea \xb7 contenteditable) suppress ⌘⇧{J,M,Y} and ",(0,r.jsx)("kbd",{className:"font-mono",children:"?"})," so typing isn't intercepted. ",(0,r.jsx)("kbd",{className:"font-mono",children:"⌘K"})," is the intentional exception."]})]})}):null}var eB=a(10080);function eq(e){return e>=1e3?"".concat((e/1e3).toFixed(1),"k"):String(e)}function eH(e){let{estimate:t,onConfirm:a,onCancel:o}=e,l=(0,n.useRef)(null),i=(0,n.useRef)(null);(0,n.useEffect)(()=>{var e;null==(e=i.current)||e.focus()},[]);let s=eq(t.totalTokens),d=eq(t.warnThreshold),c=Math.round((t.totalTokens-t.warnThreshold)/t.warnThreshold*100);return(0,r.jsx)("div",{ref:l,className:"fixed inset-0 z-50 flex items-center justify-center bg-black/40 p-4",role:"dialog","aria-modal":"true","aria-labelledby":"showroom-cost-gate-title","aria-describedby":"showroom-cost-gate-summary","data-testid":"showroom-cost-gate-modal",onKeyDown:e=>{"Escape"===e.key&&(e.stopPropagation(),o())},children:(0,r.jsxs)("div",{className:"w-full max-w-lg rounded-lg border border-amber-300 bg-white p-4 shadow-xl dark:border-amber-700 dark:bg-zinc-900",children:[(0,r.jsx)("h2",{id:"showroom-cost-gate-title",className:"mb-2 text-sm font-medium text-amber-700 dark:text-amber-300",children:"⚠️ Broadcast cost warning"}),(0,r.jsxs)("p",{id:"showroom-cost-gate-summary",className:"mb-3 text-xs text-zinc-700 dark:text-zinc-300",children:["예상 token ",(0,r.jsx)("strong",{"data-testid":"showroom-cost-gate-total",children:s})," \xb7 임계값 ",(0,r.jsx)("strong",{children:d})," 을 ",(0,r.jsxs)("strong",{children:[c,"%"]})," 초과합니다. multi-LLM broadcast 는 모든 panel 의 input 을 합산."]}),(0,r.jsxs)("div",{className:"mb-3 max-h-56 overflow-y-auto rounded-md border border-zinc-200 bg-zinc-50 p-2 text-[11px] dark:border-zinc-700 dark:bg-zinc-800","data-testid":"showroom-cost-gate-breakdown",children:[(0,r.jsxs)("div",{className:"grid grid-cols-[1fr_auto_auto_auto] gap-x-2 font-medium text-zinc-600 dark:text-zinc-400",children:[(0,r.jsx)("span",{children:"panel"}),(0,r.jsx)("span",{className:"text-right",children:"input"}),(0,r.jsx)("span",{className:"text-right",children:"prior"}),(0,r.jsx)("span",{className:"text-right",children:"total"})]}),t.perPanel.map(e=>(0,r.jsxs)("div",{className:"grid grid-cols-[1fr_auto_auto_auto] gap-x-2 py-0.5 font-mono text-zinc-700 dark:text-zinc-300","data-testid":"showroom-cost-gate-row-".concat(e.panelId),children:[(0,r.jsx)("span",{className:"truncate",children:e.displayName}),(0,r.jsx)("span",{className:"text-right",children:eq(e.inputTokens)}),(0,r.jsx)("span",{className:"text-right",children:e.priorTokens>0?eq(e.priorTokens):"—"}),(0,r.jsx)("span",{className:"text-right font-semibold",children:eq(e.totalTokens)})]},e.panelId))]}),(0,r.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,r.jsx)(eB.$,{type:"button",variant:"ghost",size:"sm",onClick:o,"data-testid":"showroom-cost-gate-cancel",children:"Cancel"}),(0,r.jsx)(eB.$,{ref:i,type:"button",size:"sm",onClick:a,"data-testid":"showroom-cost-gate-confirm",className:"bg-amber-600 text-white hover:bg-amber-700",children:"Send anyway"})]}),(0,r.jsxs)("span",{className:"sr-only","aria-live":"assertive","data-testid":"showroom-cost-gate-announcer",children:["Broadcast cost ",t.totalTokens," tokens, confirming"]})]})})}var eJ=a(87263);function eW(e){let{pending:t,queueLength:a,onConfirm:o,onCancel:i}=e;if(!t)return null;let s=t.forwardText.length>600,d=s?"".concat(t.forwardText.slice(0,600),"…"):t.forwardText,c=Math.max(0,a-1);return(0,r.jsxs)(n.Fragment,{children:[(0,r.jsx)("div",{className:"fixed inset-0 z-50 bg-black/40 backdrop-blur-sm","aria-hidden":!0}),(0,r.jsx)("div",{role:"dialog","aria-modal":"true","aria-label":"Chain forward confirmation",className:"fixed inset-0 z-50 flex items-center justify-center p-4",children:(0,r.jsxs)("div",{className:"w-full max-w-lg rounded-lg border border-zinc-300 bg-white p-5 shadow-2xl dark:border-zinc-700 dark:bg-zinc-900",children:[(0,r.jsx)("p",{className:"sr-only","aria-live":"polite",children:function(e){let t=e.forwardText.length;return"Chain forward gate: ".concat(e.from.label," to ").concat(e.to.label,", ").concat(t," characters pending confirm")}(t)}),(0,r.jsxs)("header",{className:"mb-3 flex items-center gap-2",children:[(0,r.jsx)("h2",{className:"text-base font-semibold text-zinc-900 dark:text-zinc-50",children:"Confirm chain forward"}),(0,r.jsx)("span",{className:"ml-auto text-[10px] text-zinc-500",children:"\xa76.7 HITL gate"})]}),(0,r.jsxs)("div",{className:"mb-3 flex items-center gap-2 rounded border border-zinc-200 bg-zinc-50 px-3 py-2 text-sm dark:border-zinc-700 dark:bg-zinc-800",children:[(0,r.jsx)("span",{className:"truncate font-medium text-zinc-900 dark:text-zinc-100","data-testid":"chain-forward-gate-from",children:t.from.label}),(0,r.jsx)(eJ.A,{className:"size-3.5 shrink-0 text-zinc-500","aria-hidden":!0}),(0,r.jsx)("span",{className:"truncate font-medium text-zinc-900 dark:text-zinc-100","data-testid":"chain-forward-gate-to",children:t.to.label}),(0,r.jsxs)("span",{className:"ml-auto text-[10px] text-zinc-500",children:[t.forwardText.length," chars"]})]}),(0,r.jsxs)("div",{className:"mb-4",children:[(0,r.jsx)("p",{className:"mb-1 text-[11px] uppercase tracking-wide text-zinc-500",children:"Forward text"}),(0,r.jsx)("pre",{className:"max-h-48 overflow-y-auto whitespace-pre-wrap break-words rounded border border-zinc-200 bg-zinc-50 p-3 text-xs text-zinc-700 dark:border-zinc-700 dark:bg-zinc-800 dark:text-zinc-300","data-testid":"chain-forward-gate-preview",children:d}),s&&(0,r.jsx)("p",{className:"mt-1 text-[10px] text-zinc-500",children:"Truncated for preview \xb7 the full text will be forwarded."})]}),(0,r.jsxs)("footer",{className:"flex items-center gap-2",children:[(0,r.jsxs)("button",{type:"button",onClick:i,"data-testid":"chain-forward-gate-cancel",className:"inline-flex items-center gap-1 rounded border border-zinc-300 bg-white px-3 py-1.5 text-sm text-zinc-700 hover:bg-zinc-50 dark:border-zinc-600 dark:bg-zinc-800 dark:text-zinc-300 dark:hover:bg-zinc-700",children:[(0,r.jsx)(l.A,{className:"size-3.5","aria-hidden":!0}),"Cancel"]}),(0,r.jsxs)("button",{type:"button",onClick:o,"data-testid":"chain-forward-gate-confirm",className:"ml-auto inline-flex items-center gap-1 rounded bg-indigo-600 px-3 py-1.5 text-sm font-medium text-white hover:bg-indigo-500",autoFocus:!0,children:[(0,r.jsx)(ep.A,{className:"size-3.5","aria-hidden":!0}),"Forward"]}),c>0&&(0,r.jsxs)("span",{className:"text-[10px] text-zinc-500","data-testid":"chain-forward-gate-queue-hint",children:["+",c," queued"]})]})]})})]})}var eV=a(41347);function e$(e){return e?Math.ceil(e.length/4):0}let eQ={layoutSaved:e=>e?'Layout "'.concat(e,'" saved'):"Layout saved",layoutLoaded:e=>e?'Layout "'.concat(e,'" loaded'):"Layout loaded",layoutDeleted:e=>e?'Layout "'.concat(e,'" deleted'):"Layout deleted",judgeToggled:e=>"local-llm"===e?"Role judge: LLM":"Role judge: keyword",voiceToggled:e=>e?"Voice mode on \xb7 listening":"Voice mode off",voicePhase:e=>"Voice ".concat(e),ttsMuted:e=>e?"TTS muted":"TTS unmuted",modelChanged:e=>e?"Model: ".concat(e):"Model: daemon default"};function eZ(){let{client:e,config:t}=(0,v.Q)(),[j]=(0,n.useState)(()=>"sr-".concat(Date.now().toString(36),"-").concat(N())),[z,C]=(0,n.useState)(null),A=(0,f.useSearchParams)(),[T,M]=(0,n.useState)(()=>[{id:S(),kind:"chat",provider:"",sessionId:null,state:"live"},{id:S(),kind:"chat",provider:"",sessionId:null,state:"live"}]),[P,L]=(0,n.useState)([]),[D,_]=(0,n.useState)([]),[J,Q]=(0,n.useState)([]),[Z,X]=(0,n.useState)(0),[G,ee]=(0,n.useState)(null),[et,ea]=(0,n.useState)([]),[er,eo]=(0,n.useState)([]),[el,ei]=(0,n.useState)([]),[es,ed]=(0,n.useState)([]),[ec,eu]=(0,n.useState)([]),em=(0,n.useRef)(new Set),[ep,eh]=(0,n.useState)([]),[eb,ex]=(0,n.useState)([]),[eg,ev]=(0,n.useState)(!1),[ew,ek]=(0,n.useState)(!1),[ey,ej]=(0,n.useState)(!1),[eN,eS]=(0,n.useState)(""),[eC,eI]=(0,n.useState)(null),[eT,eE]=(0,n.useState)(!1),[eM,eP]=(0,n.useState)(()=>(function(){if(!window.localStorage)return!0;try{return"false"!==window.localStorage.getItem(K)}catch(e){return!0}})()),[eD,eR]=(0,n.useState)(()=>(function(){try{let e=window.localStorage.getItem(R);return"local-llm"===e?"local-llm":"keyword"}catch(e){return"keyword"}})()),[e_,eU]=(0,n.useState)(()=>(function(){try{var e;return null!=(e=window.localStorage.getItem("elanous.showroom.roleJudgeModel"))?e:""}catch(e){return""}})()),[eB,eq]=(0,n.useState)([]),[eJ,eZ]=(0,n.useState)(null),eX=function(){let[e,t]=(0,n.useState)(""),a=(0,n.useRef)("");return{message:e,announce:(0,n.useCallback)(e=>{let r=e.trim();if(!r)return;let n=r===a.current?r+"":r;a.current=n,t(n)},[])}}(),eG=(0,n.useCallback)(e=>{eR(e);try{window.localStorage.setItem(R,e)}catch(e){}eX.announce(eQ.judgeToggled(e)),(0,W.cY)("showroom.role-judge.toggle",{backend:e})},[eX]),e0=(0,n.useCallback)(e=>{eU(e);try{e.length>0?window.localStorage.setItem("elanous.showroom.roleJudgeModel",e):window.localStorage.removeItem("elanous.showroom.roleJudgeModel")}catch(e){}eX.announce(eQ.modelChanged(e)),(0,W.cY)("showroom.role-judge.model",{model:e||"(default)"})},[eX]);(0,n.useEffect)(()=>{if("local-llm"!==eD||eB.length>0)return;let t=!1;return(async()=>{try{var a;let r=await e.listLlmModels();if(t)return;eq(r.models),eZ(null!=(a=r.error)?a:null),(0,W.cY)("showroom.role-judge.models",{count:r.models.length,error:r.error})}catch(e){if(t)return;eZ(e instanceof Error?e.message:String(e))}})(),()=>{t=!0}},[eD,eB.length,e]);let[e1,e5]=(0,n.useState)(()=>(function(){try{let e=window.localStorage.getItem(q);return"isolated"===e?"isolated":"mixed"}catch(e){return"mixed"}})()),[e3,e2]=(0,n.useState)(null),[e7,e9]=(0,n.useState)({}),e6=(0,n.useRef)(null),e4=(0,n.useRef)(null),e8=(0,n.useCallback)(e=>{eP(e);if(window.localStorage)try{e?window.localStorage.removeItem(K):window.localStorage.setItem(K,"false")}catch(e){}(0,W.cY)("showroom.dm.toggle",{next:e})},[]),te=(0,n.useCallback)(e=>{e5(e);try{"isolated"===e?window.localStorage.setItem(q,"isolated"):window.localStorage.removeItem(q)}catch(e){}eX.announce("mixed"===e?"Mixed history on \xb7 siblings’ last replies forwarded":"Mixed history off \xb7 per-panel isolated"),(0,W.cY)("showroom.dm.history-mode.toggle",{next:e})},[eX]);(0,n.useEffect)(()=>{if(!t.baseUrl)return;let a=!1,r=null;try{r=e.connectAcp({onSession:e=>{a||(e4.current=e,e2(e),(0,W.cY)("showroom.dm.session",{sessionId:e}))}})}catch(e){(0,W.cY)("showroom.dm.acp.connect.error",{error:String(e)});return}e6.current=r;let n=r.on("sessionUpdate",e=>{var t,a,r;let n=null==(t=e.params)?void 0:t.update,o=function(e){if(!e||"object"!=typeof e)return null;let t=e._meta;if(!t||"object"!=typeof t)return null;let a=t.elanous;if(!a||"object"!=typeof a||"string"!=typeof a.modelId||0===a.modelId.length)return null;let r={modelId:a.modelId};return"string"==typeof a.provider&&(r.provider=a.provider),("end_turn"===a.stopReason||"cancelled"===a.stopReason||"error"===a.stopReason)&&(r.stopReason=a.stopReason),"string"==typeof a.error&&(r.error=a.error),r}(n);if(!o)return;let l=function(e){var t;if(!e||"object"!=typeof e)return null;let a="tool_call"===e.sessionUpdate,r="tool_call_update"===e.sessionUpdate;if(!a&&!r||"string"!=typeof e.toolCallId||0===e.toolCallId.length)return null;let n=a?"call":"update",o={kind:n,id:e.toolCallId,name:"string"==typeof e.title?e.title:"",status:(t=e.status,"pending"===t||"in_progress"===t||"completed"===t||"failed"===t?t:"call"===n?"pending":"failed")};e.rawInput&&"object"==typeof e.rawInput&&(o.input=e.rawInput);let l=function(e){if(null!=e){if("string"==typeof e)return e.length>240?"".concat(e.slice(0,240),"…"):e;try{let t=JSON.stringify(e);if(!t)return;return t.length>240?"".concat(t.slice(0,240),"…"):t}catch(e){return}}}(e.rawOutput);return void 0!==l&&(o.output=l),o}(n);if(l)return void e9(e=>{var t;let a=null!=(t=e[o.modelId])?t:{messages:[],partial:"",streaming:!0,error:null,toolCalls:{}};return{...e,[o.modelId]:{...a,toolCalls:function(e,t,a){let r={...e},n=r[t.id];if("call"===t.kind||!n){var o;let e={id:t.id,name:t.name||(null==n?void 0:n.name)||"",status:t.status,startedAt:null!=(o=null==n?void 0:n.startedAt)?o:a,updatedAt:a};return t.input?e.input=t.input:(null==n?void 0:n.input)&&(e.input=n.input),void 0!==t.output?e.output=t.output:(null==n?void 0:n.output)!==void 0&&(e.output=n.output),r[t.id]=e,r}let l={...n,status:t.status,updatedAt:a};return t.name&&(l.name=t.name),t.input&&(l.input=t.input),void 0!==t.output&&(l.output=t.output),r[t.id]=l,r}(a.toolCalls,l,Date.now())}}});let i=(null==n||null==(a=n.content)?void 0:a.type)==="text"&&null!=(r=n.content.text)?r:"",s=o.stopReason;e9(e=>{var t,a,r;let n=null!=(t=e[o.modelId])?t:{messages:[],partial:"",streaming:!0,error:null,toolCalls:{}};if(s){let t=(n.partial+i).trim(),l={...e};return t.length>0||o.error?l[o.modelId]={messages:[...n.messages,{id:"a-".concat(Date.now(),"-").concat(Math.random().toString(36).slice(2,6)),role:"assistant",text:o.error?"(error) ".concat(o.error):t,timestamp:Date.now(),meta:{provider:null!=(a=o.provider)?a:"",stopReason:s,...o.error?{systemLevel:"error"}:{}}}],partial:"",streaming:!1,error:null!=(r=o.error)?r:null,toolCalls:n.toolCalls}:l[o.modelId]={...n,partial:"",streaming:!1},l}return{...e,[o.modelId]:{...n,partial:n.partial+i,streaming:!0,error:null}}})});return()=>{a=!0;try{n()}catch(e){}try{null==r||r.close()}catch(e){}e6.current=null,e4.current=null}},[e,t.baseUrl]);let tt=(0,n.useCallback)(async()=>{let{layouts:t,source:a}=await (0,$.i$)(e);ex(t),(0,W.cY)("showroom.layouts.refresh",{count:t.length,source:a})},[e]);(0,n.useEffect)(()=>{tt()},[tt]);let ta=(0,n.useCallback)(()=>{eS(""),eI(null),ej(!0)},[]),tr=(0,n.useCallback)(async()=>{let t=eN.trim();if(!t)return void eI("name required");let a=eb.some(e=>e.name===t),r=await (0,$.sF)(t,T,e);if((0,W.cY)("showroom.save",{name:t,ok:r.ok,panels:T.length,overwrites:a,source:r.ok?r.source:void 0,migrated:r.ok?r.migrated:0}),!r.ok)return void eI(r.reason);ej(!1),eS(""),eI(null),C(t);{let e=new URL(window.location.href);e.searchParams.set("show",t),window.history.replaceState({},"",e.toString())}eX.announce(eQ.layoutSaved(t)),await tt()},[eN,T,tt,eb,e,eX]),tn=(0,n.useCallback)(()=>{ej(!1),eS(""),eI(null)},[]),to=(0,n.useCallback)(async()=>{if(G){ee(null),(0,W.cY)("showroom.cost-gate.confirm",{totalTokens:G.estimate.totalTokens});try{await G.resume()}catch(e){(0,W.cY)("showroom.cost-gate.resume-error",{err:e instanceof Error?e.message:String(e)})}}},[G]),tl=(0,n.useCallback)(()=>{G&&((0,W.cY)("showroom.cost-gate.cancel",{totalTokens:G.estimate.totalTokens}),ee(null))},[G]),ti=(0,n.useCallback)(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(ev(!1),!t.skipConfirm&&T.length>0&&!window.confirm('Load "'.concat(e.name,'"? 현재 ').concat(T.length," panel state 가 교체됩니다 (저장은 별개).")))return;let a=(0,$.nZ)(e);M(a),L([]),_([]),Q([]),ea([]),eo([]),ei([]),ed([]),eu([]),em.current.clear(),C(e.name);{let t=new URL(window.location.href);t.searchParams.set("show",e.name),window.history.replaceState({},"",t.toString())}eX.announce(eQ.layoutLoaded(e.name)),(0,W.cY)("showroom.load",{name:e.name,panels:a.length})},[T,eX]),ts=(0,n.useCallback)(()=>{C(null);{let e=new URL(window.location.href);e.searchParams.delete("show"),window.history.replaceState({},"",e.toString())}(0,W.cY)("showroom.clear-active",{})},[]),td=(0,n.useRef)(!1);(0,n.useEffect)(()=>{if(td.current||0===eb.length&&null===z)return;let e=null==A?void 0:A.get("show");if(!e){td.current=!0;return}let t=eb.find(t=>t.name===e);t&&(td.current=!0,ti(t,{skipConfirm:!0}))},[eb,A,z,ti]),(0,n.useEffect)(()=>{let e=setTimeout(()=>{td.current=!0},1500);return()=>clearTimeout(e)},[]);let tc=(0,n.useCallback)(async t=>{if(!window.confirm('Delete saved layout "'.concat(t.name,'"?')))return;let a=await (0,$.oM)(t.name,e);(0,W.cY)("showroom.layout.delete",{name:t.name,ok:a.ok,source:a.source}),z===t.name&&ts(),a.ok&&eX.announce(eQ.layoutDeleted(t.name)),await tt()},[tt,e,z,ts,eX]),tu=(0,n.useCallback)(e=>{L(t=>[...t,...e]),(0,W.cY)("showroom.attach.add",{added:e.length,filenames:e.map(e=>e.filename)})},[]),tm=(0,n.useCallback)(e=>{L(t=>t.filter(t=>t.id!==e)),(0,W.cY)("showroom.attach.remove",{id:e})},[]),tp=(0,n.useCallback)(e=>{_(t=>[...t,e]),(0,W.cY)("showroom.terminal.pin",{id:e.id,label:e.label,bytes:e.text.length})},[]),th=(0,n.useCallback)(e=>{_(t=>t.filter(t=>t.id!==e)),(0,W.cY)("showroom.terminal.remove",{id:e})},[]),tb=(0,n.useCallback)(e=>t=>{let{messageId:a,text:r}=t,n=r.trim();if(!n)return;let o=Math.max(1,Z),l={id:"pa-".concat(Date.now().toString(36),"-").concat(N()),label:function(e,t){let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Date.now(),r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,n=y(e,t),o=new Date(a),l=String(o.getHours()).padStart(2,"0"),i=String(o.getMinutes()).padStart(2,"0");return"".concat(r>0?"T".concat(r," "):"","@").concat(n," \xb7 ").concat(l,":").concat(i)}(e,T,Date.now(),o),text:n,sourcePanelId:e.id,sourceProvider:e.provider||"default",promotedAt:Date.now(),turnNumber:o,enabled:!0};Q(e=>[...e,l]),(0,W.cY)("showroom.prior.promote",{panelId:e.id,messageId:a,provider:e.provider,bytes:n.length,turn:o})},[T,Z]),tx=(0,n.useCallback)(e=>{Q(t=>t.filter(t=>t.id!==e)),(0,W.cY)("showroom.prior.remove",{id:e})},[]),tg=(0,n.useCallback)(e=>{Q(t=>t.map(t=>t.id===e?{...t,enabled:!t.enabled}:t)),(0,W.cY)("showroom.prior.toggle",{id:e})},[]),tf=(0,n.useCallback)(async t=>{let a=t.trim();if(!a)return{ok:!1,reason:"url required"};try{let t=await e.fetchUrlContext(a),r={id:"uc-".concat(Date.now().toString(36),"-").concat(N()),label:function(e,t){if(t&&t.trim().length>0)return t.trim();try{return new URL(e).hostname||e}catch(t){return e}}(t.url,t.title),url:t.url,text:t.text,fetchedAt:Date.now()};return ea(e=>[...e,r]),(0,W.cY)("showroom.url.add",{url:t.url,bytes:t.text.length,hasTitle:!!t.title}),{ok:!0}}catch(t){let e=t instanceof Error?t.message:String(t);return(0,W.cY)("showroom.url.error",{error:e}),{ok:!1,reason:e}}},[e]),tv=(0,n.useCallback)(e=>{ea(t=>t.filter(t=>t.id!==e)),(0,W.cY)("showroom.url.remove",{id:e})},[]),tw=(0,n.useCallback)(async()=>{if("undefined"==typeof navigator||!navigator.clipboard)return{ok:!1,reason:"clipboard API unavailable"};try{let e=await navigator.clipboard.readText();if(!e||0===e.trim().length)return{ok:!1,reason:"clipboard is empty"};let t={id:"cc-".concat(Date.now().toString(36),"-").concat(N()),label:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Date.now(),a=new Date(t),r=String(a.getHours()).padStart(2,"0"),n=String(a.getMinutes()).padStart(2,"0");return"clipboard \xb7 ".concat(e.length," chars \xb7 ").concat(r,":").concat(n)}(e),text:e,pastedAt:Date.now()};return eo(e=>[...e,t]),(0,W.cY)("showroom.clipboard.add",{bytes:e.length}),{ok:!0}}catch(t){let e=t instanceof Error?t.message:String(t);return(0,W.cY)("showroom.clipboard.error",{error:e}),{ok:!1,reason:e}}},[]),tk=(0,n.useCallback)(e=>{eo(t=>t.filter(t=>t.id!==e)),(0,W.cY)("showroom.clipboard.remove",{id:e})},[]),ty=(0,n.useCallback)(async e=>{try{let{extractKeyFrame:t}=await a.e(8725).then(a.bind(a,88725)),r=await t(e),n={id:"vc-".concat(Date.now().toString(36),"-").concat(N()),label:function(e,t,a){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:Date.now(),n=U(e),o="".concat(t,"x").concat(a),l=new Date(r),i=l.getFullYear(),s=String(l.getMonth()+1).padStart(2,"0"),d=String(l.getDate()).padStart(2,"0");return"video \xb7 ".concat(n," \xb7 ").concat(o," \xb7 ").concat(i,"-").concat(s,"-").concat(d)}(r.durationSec,r.widthPx,r.heightPx),filename:e.name,mimeType:r.mimeType,durationSec:Math.round(r.durationSec),widthPx:r.widthPx,heightPx:r.heightPx,frameDataUrl:r.frameDataUrl,capturedAt:Date.now()};return ei(e=>[...e,n]),(0,W.cY)("showroom.video.add",{duration:n.durationSec,dimensions:"".concat(n.widthPx,"x").concat(n.heightPx)}),{ok:!0}}catch(t){let e=t instanceof Error?t.message:String(t);return(0,W.cY)("showroom.video.error",{error:e}),{ok:!1,reason:e}}},[]),tj=(0,n.useCallback)(e=>{ei(t=>t.filter(t=>t.id!==e)),(0,W.cY)("showroom.video.remove",{id:e})},[]),tz=(0,n.useCallback)(async t=>{try{let{extractAudioMeta:r}=await a.e(5532).then(a.bind(a,55532)),n=await r(t),o={id:"ac-".concat(Date.now().toString(36),"-").concat(N()),label:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Date.now(),a=U(e),r=new Date(t),n=r.getFullYear(),o=String(r.getMonth()+1).padStart(2,"0"),l=String(r.getDate()).padStart(2,"0");return"audio \xb7 ".concat(a," \xb7 ").concat(n,"-").concat(o,"-").concat(l)}(n.durationSec),filename:t.name,mimeType:n.mimeType,durationSec:Math.round(n.durationSec),sizeBytes:n.sizeBytes,transcript:"",loadedAt:Date.now()};return ed(e=>[...e,o]),(0,W.cY)("showroom.audio.add",{duration:o.durationSec,size:o.sizeBytes}),(async()=>{try{let a=await e.transcribeAudio(t);"string"==typeof a.text&&a.text.trim().length>0&&(ed(e=>e.map(e=>e.id===o.id?{...e,transcript:a.text}:e)),(0,W.cY)("showroom.audio.stt-ok",{id:o.id,chars:a.text.length,language:a.language,durationMs:a.durationMs}))}catch(e){(0,W.cY)("showroom.audio.stt-fail",{id:o.id,error:e instanceof Error?e.message:String(e)})}})(),{ok:!0}}catch(t){let e=t instanceof Error?t.message:String(t);return(0,W.cY)("showroom.audio.error",{error:e}),{ok:!1,reason:e}}},[e]),tN=(0,n.useCallback)(e=>{ed(t=>t.filter(t=>t.id!==e)),(0,W.cY)("showroom.audio.remove",{id:e})},[]),tS=(0,n.useCallback)((e,t)=>{ed(a=>a.map(a=>a.id===e?{...a,transcript:t}:a))},[]),tC=(0,n.useCallback)((e,t,a)=>{let r=function(e,t,a){var r,n,o;let l=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(t===a)return{ok:!1,reason:"self-route"};if(e.some(e=>e.fromPanelId===t&&e.toPanelId===a))return{ok:!1,reason:"duplicate"};if(function(e,t,a){if(t===a)return!0;let r=new Map;for(let t of e){var n;let e=null!=(n=r.get(t.fromPanelId))?n:[];e.push(t.toPanelId),r.set(t.fromPanelId,e)}let o=new Set,l=[a];for(;l.length>0;){let e=l.shift();if(e===t)return!0;if(o.has(e))continue;o.add(e);let a=r.get(e);a&&l.push(...a)}return!1}(e,t,a))return{ok:!1,reason:"cycle"};let i=null==(r=l.routePrompt)?void 0:r.trim(),s={id:"ce-".concat(Date.now().toString(36),"-").concat(N()),fromPanelId:t,toPanelId:a,wrapMode:null!=(n=l.wrapMode)?n:"prior",...i?{routePrompt:i}:{},enabled:null==(o=l.enabled)||o,...l.hitl?{hitl:!0}:{},createdAt:Date.now()};return{ok:!0,edge:s,edges:[...e,s]}}(ec,e,t,a);return r.ok?(eu(r.edges),(0,W.cY)("showroom.chain.add",{from:e,to:t,wrapMode:r.edge.wrapMode,edges:r.edges.length})):(0,W.cY)("showroom.chain.add.reject",{from:e,to:t,reason:r.reason}),r},[ec]),tI=(0,n.useCallback)(e=>{eu(t=>t.filter(t=>t.id!==e)),(0,W.cY)("showroom.chain.remove",{edgeId:e})},[]),tA=(0,n.useCallback)(e=>{eu(t=>t.map(t=>{if(t.id!==e)return t;let a={...t};return t.hitl?delete a.hitl:a.hitl=!0,(0,W.cY)("showroom.chain.hitl.toggle",{edgeId:e,next:!t.hitl}),a}))},[]),tT=(0,n.useCallback)(async(e,t)=>{let a=e6.current,r=e4.current;if(!a||!r)return void(0,W.cY)("showroom.chain.forward.skip",{reason:"no-layout-session"});let n=O([e],{includeAgent:!0});if(!n)return void(0,W.cY)("showroom.chain.forward.skip",{reason:"empty-hint"});let o=(0,w.tw)(t);e9(t=>{var a;let r=null!=(a=t[e.id])?a:{messages:[],partial:"",streaming:!1,error:null,toolCalls:{}};return{...t,[e.id]:{messages:[...r.messages,o],partial:"",streaming:!0,error:null,toolCalls:{}}}});try{await a.send("session/prompt",{sessionId:r,prompt:[{type:"text",text:t}],_meta:H(n)})}catch(a){let t=String(a);(0,W.cY)("showroom.chain.forward.error",{error:t}),e9(a=>{let r=a[e.id];return r?{...a,[e.id]:{...r,streaming:!1,error:t}}:a})}},[]);(0,n.useEffect)(()=>{if(0!==ec.length)for(let[t,a]of Object.entries(e7)){if(a.streaming)continue;let r=a.messages[a.messages.length-1];if(!r||"assistant"!==r.role||!r.text||0===r.text.length)continue;let n="".concat(t,":").concat(r.id);if(em.current.has(n))continue;em.current.add(n);let o=T.find(e=>e.id===t);if(!o)continue;let l=y(o,T),i=o.provider||"default";for(let a of F(ec,t).filter(e=>e.enabled)){var e;let o=T.find(e=>e.id===a.toPanelId);if(!o)continue;if(null==(e=e7[a.toPanelId])?void 0:e.streaming){(0,W.cY)("showroom.chain.forward.skip",{from:t,to:a.toPanelId,reason:"target-streaming"});continue}let s=function(e,t,a,r){var n;if("plain"===e.wrapMode)return t;let o=r.replace(/[<>"]/g,"_"),l=a.replace(/[<>"]/g,"_"),i='<prior_answer source="'.concat(o,'" provider="').concat(l,'">\n').concat(t,"\n</prior_answer>"),s=(null==(n=e.routePrompt)?void 0:n.trim())||"위의 답변을 검토해주세요.";return"".concat(i,"\n\n").concat(s)}(a,r.text,i,"@".concat(l));if(a.hitl){let e=y(o,T);(0,W.cY)("showroom.chain.forward.hitl.enqueue",{edgeId:a.id,from:t,to:a.toPanelId,bytes:s.length}),eh(r=>r.some(e=>e.key===n)?r:[...r,{key:n,edgeId:a.id,from:{id:t,label:l},to:{id:a.toPanelId,label:e},forwardText:s,targetPanel:o,enqueuedAt:Date.now()}]);continue}(0,W.cY)("showroom.chain.forward",{edgeId:a.id,from:t,to:a.toPanelId,wrapMode:a.wrapMode,bytes:s.length}),tT(o,s)}}},[e7,ec,T,tT]);let tE=(0,n.useCallback)(()=>{eh(e=>{let t=e[0];return t?((0,W.cY)("showroom.chain.forward.hitl.confirm",{edgeId:t.edgeId,from:t.from.id,to:t.to.id,bytes:t.forwardText.length,latencyMs:Date.now()-t.enqueuedAt}),tT(t.targetPanel,t.forwardText),e.slice(1)):e})},[tT]),tM=(0,n.useCallback)(()=>{eh(e=>{let t=e[0];return t?((0,W.cY)("showroom.chain.forward.hitl.cancel",{edgeId:t.edgeId,from:t.from.id,to:t.to.id,bytes:t.forwardText.length,latencyMs:Date.now()-t.enqueuedAt}),e.slice(1)):e})},[]),tP=(0,n.useRef)(null),tL=(0,n.useCallback)(async t=>{let a=t.trim();if(!a)return;let r=function(e){if(0===e.length)return"";let t=e.map(e=>{let t=e.label.replace(/[<>"]/g,"_");return'<terminal_context label="'.concat(t,'">\n').concat(e.text,"\n</terminal_context>")});return"".concat(t.join("\n\n"),"\n\n")}(D),n=function(e){if(0===e.length)return"";let t=e.map(e=>{let t=e.url.replace(/[<>"]/g,"_"),a=e.label.replace(/[<>"]/g,"_");return'<url_context url="'.concat(t,'" title="').concat(a,'">\n').concat(e.text,"\n</url_context>")});return"".concat(t.join("\n\n"),"\n\n")}(et),o=function(e){if(0===e.length)return"";let t=e.map(e=>{let t=e.label.replace(/[<>"]/g,"_");return'<clipboard_context label="'.concat(t,'">\n').concat(e.text,"\n</clipboard_context>")});return"".concat(t.join("\n\n"),"\n\n")}(er),l=function(e){if(0===e.length)return"";let t=e.map(e=>{let t=e.label.replace(/[<>"]/g,"_"),a=e.filename.replace(/[<>"]/g,"_"),r=e.mimeType.replace(/[<>"]/g,"_"),n=U(e.durationSec),o="".concat(e.widthPx,"x").concat(e.heightPx);return'<video_context label="'.concat(t,'" filename="').concat(a,'" mime="').concat(r,'" duration="').concat(n,'" dimensions="').concat(o,'">\n<frame data="').concat(e.frameDataUrl,'" />\n</video_context>')});return"".concat(t.join("\n\n"),"\n\n")}(el),i=function(e){if(0===e.length)return"";let t=e.map(e=>{let t=e.label.replace(/[<>"]/g,"_"),a=e.filename.replace(/[<>"]/g,"_"),r=e.mimeType.replace(/[<>"]/g,"_"),n=U(e.durationSec),o='<audio_context label="'.concat(t,'" filename="').concat(a,'" mime="').concat(r,'" duration="').concat(n,'" size="').concat(e.sizeBytes,' bytes">'),l=e.transcript.trim().length>0?"\n<transcript>".concat(e.transcript,"</transcript>\n"):"\n";return"".concat(o).concat(l,"</audio_context>")});return"".concat(t.join("\n\n"),"\n\n")}(es),s=function(e){let t=e.filter(e=>!1!==e.enabled);if(0===t.length)return"";let a=t.map(e=>{let t=e.label.replace(/[<>"]/g,"_"),a=e.sourceProvider.replace(/[<>"]/g,"_");return'<prior_answer source="'.concat(t,'" provider="').concat(a,'">\n').concat(e.text,"\n</prior_answer>")});return"".concat(a.join("\n\n"),"\n\n")}(J),d="".concat(r).concat(n).concat(o).concat(l).concat(i).concat(s).concat(a),c="local-llm"===eD?async t=>{let a={backend:"local-llm"};e_.length>0&&(a.model=e_);let r=await e.judgeRole(t,a);return{role:r.role,source:r.source}}:null,u=c?await Y(a,T,c):E(a,T);if(0===u.targets.length)return;let m="mixed"===e1?Object.fromEntries(u.targets.map(e=>{var t;return[e.id,B(null==(t=e7[e.id])?void 0:t.messages)]}).filter(e=>{let[,t]=e;return"string"==typeof t&&t.length>0})):void 0,p=function(e){var t;let a=e$(e.dispatchText),r=e.dmTargets.map(t=>{var r,n;let o=e$(null!=(n=null==(r=e.lastAssistantByPanelId)?void 0:r[t.id])?n:"");return{panelId:t.id,displayName:y(t,e.allPanels),provider:t.provider||"default",inputTokens:a,priorTokens:o,totalTokens:a+o}}),n=r.reduce((e,t)=>e+t.totalTokens,0),o=null!=(t=e.warnThreshold)?t:function(){var e;let t=void 0!==eV?null==(e=eV.env)?void 0:e.NEXT_PUBLIC_ELANOUS_SHOWROOM_BROADCAST_COST_WARN_TOKENS:void 0,a=t?Number(t):NaN;return Number.isFinite(a)&&a>0?a:5e4}();return{totalTokens:n,perPanel:r,warnThreshold:o,exceedsWarnThreshold:n>o}}({dispatchText:d,dmTargets:u.targets,allPanels:T,...m?{lastAssistantByPanelId:m}:{}}),h=async()=>{var e,t;X(e=>e+1);let a=null!=(t=null==(e=tP.current)?void 0:e.call(tP))?t:0;if(a>0&&(0,W.cY)("showroom.voice.barge-in.dispatch",{cancelled:a}),"targeted"===u.mode){let e=function(e,t){if(0===t.length)return e.slice();let a=new Set(t),r=!1,n=e.map(e=>a.has(e.id)&&"mute"===e.state?(r=!0,{...e,state:"live"}):e);return r?n:e.slice()}(T,u.targets.map(e=>e.id));e.some((e,t)=>{var a;return e.state!==(null==(a=T[t])?void 0:a.state)})&&M(e)}(0,W.cY)("showroom.dispatch",{showroomId:j,mode:u.mode,routedBy:u.routedBy,classifiedRole:u.classifiedRole,panels:T.length,targets:u.targets.length,len:d.length,attachments:P.length,terminalContexts:D.length,estTokens:p.totalTokens}),await b()};if(p.exceedsWarnThreshold){(0,W.cY)("showroom.cost-gate.fire",{totalTokens:p.totalTokens,warnThreshold:p.warnThreshold,targets:u.targets.length,mixed:!!m}),ee({estimate:p,resume:h});return}async function b(){let e=e6.current,t=e4.current;if(!e||!t)return void(0,W.cY)("showroom.dm.dispatch.skip",{reason:"no-layout-session"});let a=u.targets,r="mixed"===e1?Object.fromEntries(a.map(e=>{var t;return[e.id,B(null==(t=e7[e.id])?void 0:t.messages)]}).filter(e=>{let[,t]=e;return"string"==typeof t&&t.length>0})):void 0,n=O(a,{includeAgent:!0,..."mixed"===e1?{historyMode:"mixed"}:{},...r?{lastAssistantByPanelId:r}:{}});if(!n)return void(0,W.cY)("showroom.dm.dispatch.skip",{reason:"empty-hint"});"mixed"===e1&&r&&(0,W.cY)("showroom.dm.dispatch.mixed",{siblingsWithPrior:Object.keys(r).length,totalTargets:a.length}),P.length>0&&(0,W.cY)("showroom.dm.dispatch.attachments-dropped",{count:P.length});let o=(0,w.tw)(d);e9(e=>{let t={...e};for(let e of a){var r;let a=null!=(r=t[e.id])?r:{messages:[],partial:"",streaming:!1,error:null,toolCalls:{}};t[e.id]={messages:[...a.messages,o],partial:"",streaming:!0,error:null,toolCalls:{}}}return t});try{await e.send("session/prompt",{sessionId:t,prompt:[{type:"text",text:d}],_meta:H(n)})}catch(t){(0,W.cY)("showroom.dm.dispatch.error",{error:String(t)});let e=String(t);e9(t=>{let r={...t};for(let t of a){let a=r[t.id];a&&(r[t.id]={...a,streaming:!1,error:e})}return r})}L([]),_([]),Q([]),ea([]),eo([]),ei([]),ed([])}await h()},[T,j,P,D,J,et,er,eD,e_,el,es,e]),tD=(0,n.useCallback)(()=>{(0,W.cY)("showroom.stop-all",{showroomId:j,mode:"dm-noop"})},[j]),tR=(0,n.useCallback)(()=>{M(e=>[...e,function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return{id:S(),kind:"chat",provider:e,sessionId:null,state:"live"}}()])},[]),tY=(0,n.useCallback)(e=>{M(t=>{var a;return[...t,(a=e,{id:S(),kind:"agent",provider:a,agentBrand:a,sessionId:null,state:"live"})]}),ek(!1)},[]),t_=(0,n.useCallback)(e=>{M(t=>t.filter(t=>t.id!==e)),eu(t=>(function(e,t){let a=e.filter(e=>e.fromPanelId!==t&&e.toPanelId!==t);return a.length===e.length?e.slice():a})(t,e)),(0,W.cY)("showroom.panel.remove",{panelId:e})},[]),tU=(0,n.useCallback)((e,t)=>{M(a=>a.map(a=>a.id===e?{...a,state:t}:a))},[]),tF=(0,n.useCallback)((e,t)=>{M(a=>a.map(a=>a.id===e?{...a,provider:t}:a))},[]),tK=(0,n.useCallback)((e,t)=>{M(a=>a.map(a=>{if(a.id!==e)return a;if(null===t){let{roleHint:e,...t}=a;return t}return{...a,roleHint:t}})),(0,W.cY)("showroom.panel.roleHint",{panelId:e,roleHint:t})},[]),tO=(0,n.useCallback)((e,t)=>{var a;M(a=>a.map(a=>{if(a.id!==e)return a;if(null===t){let{personaId:e,...t}=a;return t}let r={...a,personaId:t.personaId};return t.brand&&t.brand.length>0&&(r.provider=t.brand),r})),(0,W.cY)("showroom.panel.persona",{panelId:e,personaId:null!=(a=null==t?void 0:t.personaId)?a:null,brand:null==t?void 0:t.brand})},[]),tB=(0,n.useMemo)(()=>T.filter(e=>"live"===e.state).length,[T]),tq=(0,n.useRef)(tL);tq.current=tL;let tH=(0,n.useCallback)(e=>{let t=e.trim();t&&((0,W.cY)("showroom.voice.auto-send",{len:t.length}),tq.current(t))},[]),tJ=e.voiceWsUrl(),tW=(0,n.useRef)(null),tV=(0,n.useCallback)(()=>{let e=tW.current;if(!e||!e.speaking)return;let t=e.cancelInFlight();(0,W.cY)("showroom.voice.barge-in.fire",{cancelled:t})},[]),t$=(0,k.sS)({wsUrl:tJ,...t.token?{token:t.token}:{},onTranscript:tH,onSpeechActivity:tV}),[tQ,tZ]=(0,n.useState)(!1),tX=function(e){var t;let a=void 0!==window.speechSynthesis,r=null!=(t=e.language)?t:"ko-KR",o=(0,n.useRef)(e.enabled);o.current=e.enabled;let l=(0,n.useRef)(0),[i,s]=(0,n.useState)(!1),d=(0,n.useCallback)(()=>{s(l.current>0)},[]),c=(0,n.useCallback)(()=>{if(!a)return 0;let e=l.current;if(0===e)return 0;(0,W.cY)("voice.tts.cancel-in-flight",{cancelled:e});try{window.speechSynthesis.cancel()}catch(e){}return l.current=0,d(),e},[a,d]);(0,n.useEffect)(()=>{a&&(e.enabled||c())},[e.enabled,a,c]);let u=(0,n.useRef)({}),m=(0,n.useRef)([]);return(0,n.useEffect)(()=>{var e,t;if(!a)return;let r=()=>{m.current=window.speechSynthesis.getVoices()};return r(),null==(e=(t=window.speechSynthesis).addEventListener)||e.call(t,"voiceschanged",r),()=>{var e,t;null==(e=(t=window.speechSynthesis).removeEventListener)||e.call(t,"voiceschanged",r)}},[a]),(0,n.useEffect)(()=>{if(!a||!o.current){u.current=e.panelStates;return}let t=function(e,t){let a=[];for(let[l,i]of Object.entries(t)){var r,n,o;let t=e[l],s=null!=(r=null==t?void 0:t.streaming)&&r&&!i.streaming,d=(null!=(n=i.messages.length)?n:0)>(null!=(o=null==t?void 0:t.messages.length)?o:0);if(!s||!d)continue;let c=i.messages[i.messages.length-1];if(!c||"assistant"!==c.role)continue;let u=c.text.trim();u&&a.push({panelId:l,text:u})}return a}(u.current,e.panelStates);if(u.current=e.panelStates,0===t.length)return;let n=m.current;for(let{panelId:a,text:o}of t){var i;let t=e.panels.find(e=>e.id===a);if(!t)continue;let s=new SpeechSynthesisUtterance((i=y(t,e.panels),"@".concat(i," \xb7 ")+o)),c=function(e){var t;let a=function(e,t){if(0===e.length)return[];let a=t.toLowerCase(),r=e.filter(e=>e.lang.toLowerCase()===a);if(r.length>0)return r;let n=a.split("-")[0];return e.filter(e=>e.lang.toLowerCase().startsWith(n))}(e.voices,e.language);if(0===a.length)return null;let r=function(e){let t=5381;for(let a=0;a<e.length;a+=1)t=(t<<5)+t+e.charCodeAt(a)|0;return t>>>0}(e.panelId)%a.length;return null!=(t=a[r])?t:null}({panelId:a,language:r,voices:n});c&&(s.voice=c),s.lang=r;let u=()=>{l.current>0&&(l.current-=1),d()};s.onend=u,s.onerror=u;try{window.speechSynthesis.speak(s),l.current+=1,d()}catch(e){}}},[e.panelStates,e.panels,a,r,d]),{supported:a,speaking:i,cancelInFlight:c}}({panelStates:e7,panels:T,enabled:t$.active&&!tQ,language:"ko-KR"});tW.current={cancelInFlight:tX.cancelInFlight,speaking:tX.speaking},tP.current=tX.cancelInFlight,(0,V.Si)({enabled:tX.speaking,onActivate:()=>{let e=tX.cancelInFlight();(0,W.cY)("showroom.voice.barge-in.spacebar",{cancelled:e}),t$.forceListen()}});let tG=(0,n.useRef)(null);(0,n.useEffect)(()=>{let e=t$.active?t$.phase:"off";null!==tG.current&&tG.current!==e&&("off"===e?eX.announce(eQ.voiceToggled(!1)):eX.announce(eQ.voicePhase(e))),tG.current=e},[t$.active,t$.phase,eX]);let t0=(0,n.useRef)(null);(0,n.useEffect)(()=>{null!==t0.current&&t0.current!==tQ&&eX.announce(eQ.ttsMuted(tQ)),t0.current=tQ},[tQ,eX]),(0,n.useEffect)(()=>{function e(e){let t=(0,eK.ZQ)({key:e.key,metaKey:e.metaKey,ctrlKey:e.ctrlKey,shiftKey:e.shiftKey,altKey:e.altKey,fromEditable:(0,eK._i)(e.target)});if(t)switch(t){case"focus-broadcast-input":{e.preventDefault();let a=document.getElementById("showroom-broadcast-input");a&&(a.focus(),a.setSelectionRange(a.value.length,a.value.length)),(0,W.cY)("showroom.shortcut",{id:t,focused:!!a});break}case"toggle-role-judge":e.preventDefault(),eG("local-llm"===eD?"keyword":"local-llm"),(0,W.cY)("showroom.shortcut",{id:t});break;case"toggle-voice":if(e.preventDefault(),!tJ)return void(0,W.cY)("showroom.shortcut.suppressed",{id:t,reason:"no-ws-url"});t$.toggle(),(0,W.cY)("showroom.shortcut",{id:t});break;case"toggle-tts":if(e.preventDefault(),!tX.supported||!t$.active)return void(0,W.cY)("showroom.shortcut.suppressed",{id:t,reason:"tts-unavailable"});tZ(e=>!e),(0,W.cY)("showroom.shortcut",{id:t});break;case"open-help":e.preventDefault(),eE(!0),(0,W.cY)("showroom.shortcut",{id:t})}}return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[eD,eG,t$,tJ,tX.supported]);let t1=eF({active:ey,skipInitialFocus:!0});return(0,r.jsxs)("div",{className:"flex h-full flex-col bg-zinc-50 dark:bg-zinc-950","data-testid":"showroom-layout",children:[(0,r.jsx)("div",{"aria-live":"polite","aria-atomic":"true",className:"sr-only","data-testid":"showroom-live-announcer",children:eX.message}),(0,r.jsx)(eA,{}),(0,r.jsxs)("header",{className:"flex flex-wrap items-center justify-between gap-1 border-b border-zinc-200 bg-white px-2 py-2 dark:border-zinc-800 dark:bg-zinc-900 sm:gap-2 sm:px-4",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)(o.A,{className:"size-5 text-zinc-600 dark:text-zinc-300","aria-hidden":!0}),(0,r.jsx)("span",{className:"text-sm font-medium text-zinc-900 dark:text-zinc-100",children:"Showroom"}),z&&(0,r.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-full border border-amber-300 bg-amber-50 px-2 py-0.5 text-[11px] font-medium text-amber-700 dark:border-amber-700 dark:bg-amber-900/30 dark:text-amber-300","data-testid":"showroom-active-name",title:"Active showroom: ".concat(z),children:[(0,r.jsx)(o.A,{className:"size-3","aria-hidden":!0}),z,(0,r.jsx)("button",{type:"button",onClick:ts,className:"rounded-full p-0.5 hover:bg-amber-100 dark:hover:bg-amber-900/50","aria-label":"Clear active showroom (return to ephemeral)","data-testid":"showroom-active-clear",children:(0,r.jsx)(l.A,{className:"size-2.5","aria-hidden":!0})})]}),(0,r.jsxs)("span",{className:"text-xs text-zinc-500","data-testid":"showroom-counts",children:[T.length," panel \xb7 ",tB," live"]}),(0,r.jsx)(eY,{})]}),(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsxs)("button",{type:"button",onClick:tR,className:"inline-flex items-center gap-1 rounded-md border border-zinc-300 bg-white px-2 py-1 text-xs hover:bg-zinc-50 dark:border-zinc-700 dark:bg-zinc-800 dark:hover:bg-zinc-700","aria-label":"Add chat panel",title:"Add chat panel","data-testid":"showroom-add-panel",children:[(0,r.jsx)(i.A,{className:"size-3.5","aria-hidden":!0}),"Chat"]}),(0,r.jsxs)("div",{className:"relative",children:[(0,r.jsxs)("button",{type:"button",onClick:()=>ek(e=>!e),className:"inline-flex items-center gap-1 rounded-md border border-amber-300 bg-white px-2 py-1 text-xs text-amber-700 hover:bg-amber-50 dark:border-amber-700 dark:bg-zinc-800 dark:text-amber-300 dark:hover:bg-amber-900/30","aria-label":"Add agent CLI panel","aria-expanded":ew,title:"Add agent CLI panel (codex \xb7 claude \xb7 gemini)","data-testid":"showroom-add-agent-toggle",children:[(0,r.jsx)(s.A,{className:"size-3.5","aria-hidden":!0}),"Agent"]}),ew&&(0,r.jsx)("div",{className:"absolute right-0 top-full z-10 mt-1 w-44 rounded-md border border-zinc-300 bg-white text-xs shadow-lg dark:border-zinc-700 dark:bg-zinc-800","data-testid":"showroom-agent-menu",children:I.map(e=>(0,r.jsxs)("button",{type:"button",onClick:()=>tY(e),className:"block w-full border-b border-zinc-200/50 px-2 py-1.5 text-left hover:bg-zinc-50 last:border-b-0 dark:border-zinc-700/50 dark:hover:bg-zinc-700","data-testid":"showroom-add-agent-".concat(e),children:[(0,r.jsxs)("span",{className:"font-medium",children:[e,"-cli"]}),(0,r.jsx)("span",{className:"ml-1 text-[10px] text-zinc-500",children:"CLI agent"})]},e))})]}),(0,r.jsxs)("button",{type:"button",onClick:ta,disabled:0===T.length,className:"inline-flex items-center gap-1 rounded-md border border-zinc-300 bg-white px-2 py-1 text-xs hover:bg-zinc-50 disabled:cursor-not-allowed disabled:opacity-50 dark:border-zinc-700 dark:bg-zinc-800 dark:hover:bg-zinc-700","aria-label":"Save layout",title:"Save current panel layout","data-testid":"showroom-save-layout",children:[(0,r.jsx)(d.A,{className:"size-3.5","aria-hidden":!0}),"Save"]}),(0,r.jsxs)("div",{className:"relative",children:[(0,r.jsxs)("button",{type:"button",onClick:()=>ev(e=>!e),disabled:0===eb.length,className:"inline-flex items-center gap-1 rounded-md border border-zinc-300 bg-white px-2 py-1 text-xs hover:bg-zinc-50 disabled:cursor-not-allowed disabled:opacity-50 dark:border-zinc-700 dark:bg-zinc-800 dark:hover:bg-zinc-700","aria-label":"Load saved layout",title:0===eb.length?"저장된 layout 없음":"".concat(eb.length," saved layout"),"aria-expanded":eg,"data-testid":"showroom-load-toggle",children:[(0,r.jsx)(c.A,{className:"size-3.5","aria-hidden":!0}),"Load",eb.length>0&&(0,r.jsx)("span",{className:"ml-1 text-[10px] text-zinc-500",children:eb.length})]}),eg&&eb.length>0&&(0,r.jsx)("div",{className:"absolute right-0 top-full z-10 mt-1 max-h-64 w-64 overflow-y-auto rounded-md border border-zinc-300 bg-white text-xs shadow-lg dark:border-zinc-700 dark:bg-zinc-800","data-testid":"showroom-load-menu",children:eb.map(e=>(0,r.jsxs)("div",{className:"flex items-center justify-between gap-2 border-b border-zinc-200/50 px-2 py-1 last:border-b-0 dark:border-zinc-700/50",children:[(0,r.jsxs)("button",{type:"button",onClick:()=>ti(e),className:"flex flex-1 flex-col text-left hover:text-zinc-900 dark:hover:text-zinc-100","data-testid":"showroom-load-".concat(e.name),children:[(0,r.jsx)("span",{className:"font-medium",children:e.name}),(0,r.jsxs)("span",{className:"text-[10px] text-zinc-500",children:[e.panels.length," panel \xb7 ",new Date(e.savedAt).toLocaleString()]})]}),(0,r.jsx)("button",{type:"button",onClick:()=>tc(e),className:"rounded p-1 text-rose-600 hover:bg-rose-50 dark:hover:bg-rose-900/30","aria-label":"Delete layout ".concat(e.name),"data-testid":"showroom-delete-".concat(e.name),children:(0,r.jsx)(u.A,{className:"size-3","aria-hidden":!0})})]},e.name))})]}),(0,r.jsxs)("button",{type:"button",onClick:()=>e8(!eM),className:"inline-flex items-center gap-1 rounded-md border px-2 py-1 text-xs ".concat(eM?"border-indigo-400 bg-indigo-50 text-indigo-700 dark:border-indigo-600 dark:bg-indigo-900/30 dark:text-indigo-300":"border-amber-300 bg-amber-50 text-amber-700 dark:border-amber-700 dark:bg-amber-900/30 dark:text-amber-300"),"aria-label":"Toggle daemon multi-LLM dispatch preference (DM stage 3 \xb7 always engaged)","aria-pressed":eM,title:eM?"DM stage 3 \xb7 always engaged \xb7 single ACP \xb7 multiLlm hint \xb7 namespaced sub-stream":"DM preference OFF \xb7 panel-local fallback was removed in DM stage 3 \xb7 DM dispatch still active","data-testid":"showroom-dm-toggle",children:[(0,r.jsx)(m.A,{className:"size-3.5","aria-hidden":!0}),"DM",eM&&(0,r.jsx)("span",{className:"ml-0.5 rounded bg-indigo-600 px-1 text-[9px] uppercase text-white","data-testid":"showroom-dm-toggle-on",children:"on"})]}),(0,r.jsxs)("button",{type:"button",onClick:()=>te("mixed"===e1?"isolated":"mixed"),className:"inline-flex items-center gap-1 rounded-md border px-2 py-1 text-xs ".concat("mixed"===e1?"border-fuchsia-400 bg-fuchsia-50 text-fuchsia-700 dark:border-fuchsia-600 dark:bg-fuchsia-900/30 dark:text-fuchsia-300":"border-zinc-300 bg-white text-zinc-700 hover:bg-zinc-50 dark:border-zinc-700 dark:bg-zinc-800 dark:text-zinc-300 dark:hover:bg-zinc-700"),"aria-label":"Toggle DM stage 4 mixed history mode","aria-pressed":"mixed"===e1,title:"mixed"===e1?"Mixed history ON \xb7 siblings’ last replies auto-prepended as <prior_answer> blocks (cross-model deliberation automation \xb7 token cost increases)":"Mixed history OFF \xb7 each panel sees only its own thread (default \xb7 token-frugal)","data-testid":"showroom-history-mode-toggle",children:[(0,r.jsx)(m.A,{className:"size-3.5","aria-hidden":!0}),"mix","mixed"===e1&&(0,r.jsx)("span",{className:"ml-0.5 rounded bg-fuchsia-600 px-1 text-[9px] uppercase text-white","data-testid":"showroom-history-mode-toggle-on",children:"on"})]}),(0,r.jsxs)("button",{type:"button",onClick:()=>eG("local-llm"===eD?"keyword":"local-llm"),className:"inline-flex items-center gap-1 rounded-md border px-2 py-1 text-xs ".concat("local-llm"===eD?"border-violet-400 bg-violet-50 text-violet-700 dark:border-violet-600 dark:bg-violet-900/30 dark:text-violet-300":"border-zinc-300 bg-white text-zinc-600 dark:border-zinc-700 dark:bg-zinc-800 dark:text-zinc-400"),"aria-label":"Toggle role-judge backend (keyword vs local-llm)","aria-pressed":"local-llm"===eD,title:"local-llm"===eD?"Local LLM judge \xb7 ambiguous prompts call daemon → LM Studio (model: ".concat(e_||"default","). Click to switch to keyword-only."):"Keyword-only \xb7 ambiguous prompts broadcast (default). Click to engage local LLM.","data-testid":"showroom-role-judge-toggle",children:[(0,r.jsx)(s.A,{className:"size-3.5","aria-hidden":!0}),"judge","local-llm"===eD&&(0,r.jsx)("span",{className:"ml-0.5 rounded bg-violet-600 px-1 text-[9px] uppercase text-white","data-testid":"showroom-role-judge-toggle-on",children:"LLM"})]}),"local-llm"===eD&&(0,r.jsxs)("select",{value:e_,onChange:e=>e0(e.target.value),className:"rounded-md border border-violet-300 bg-white px-2 py-1 text-xs text-violet-700 dark:border-violet-700 dark:bg-zinc-800 dark:text-violet-300","aria-label":"Select LLM judge model",title:eJ?"Model list unavailable: ".concat(eJ,". Type the model id directly via DevTools localStorage."):"Pick a deployed model \xb7 ".concat(eB.length," loaded \xb7 empty = daemon default (mlx-community/gemma-4-26b-a4b-it)"),"data-testid":"showroom-role-judge-model-select",children:[(0,r.jsx)("option",{value:"",children:"(daemon default)"}),(()=>{let e=eB.filter(e=>!/embed/i.test(e.id)),t=new Map;for(let r of e){var a,n;let e=null!=(a=r.host)?a:"",o=null!=(n=t.get(e))?n:[];o.push(r),t.set(e,o)}return t.size<=1?e.map(e=>{var t;return(0,r.jsx)("option",{value:e.id,children:e.id},"".concat(null!=(t=e.host)?t:"h","::").concat(e.id))}):Array.from(t.entries()).map(e=>{let[t,a]=e;return(0,r.jsx)("optgroup",{label:t||"(unknown host)",children:a.map(e=>(0,r.jsx)("option",{value:e.id,children:e.id},"".concat(t,"::").concat(e.id)))},t||"unknown")})})()]}),(0,r.jsxs)("button",{type:"button",onClick:()=>{t$.toggle()},disabled:!tJ,className:"inline-flex items-center gap-1 rounded-md border px-2 py-1 text-xs ".concat(t$.active?"border-emerald-400 bg-emerald-50 text-emerald-700 dark:border-emerald-600 dark:bg-emerald-900/30 dark:text-emerald-300":"border-zinc-300 bg-white text-zinc-700 hover:bg-zinc-50 dark:border-zinc-700 dark:bg-zinc-800 dark:text-zinc-300 dark:hover:bg-zinc-700"," disabled:cursor-not-allowed disabled:opacity-50"),"aria-label":t$.active?"Stop voice mode":"Start voice mode","aria-pressed":t$.active,title:tJ?t$.active?"Voice ".concat(t$.phase," \xb7 click to stop"):"Voice mode OFF \xb7 click to start mic + STT":"Voice WebSocket URL is unavailable — daemon `/voice/ws` not configured","data-testid":"showroom-voice-toggle",children:[t$.active?(0,r.jsx)(p.A,{className:"size-3.5","aria-hidden":!0}):(0,r.jsx)(h.A,{className:"size-3.5","aria-hidden":!0}),t$.active&&(0,r.jsx)("span",{className:"ml-0.5 rounded bg-emerald-600 px-1 text-[9px] uppercase text-white","data-testid":"showroom-voice-toggle-on",children:"listening"===t$.phase?"listen":t$.phase})]}),(0,r.jsxs)("button",{type:"button",onClick:()=>tZ(e=>!e),disabled:!tX.supported||!t$.active,className:"inline-flex items-center gap-1 rounded-md border px-2 py-1 text-xs ".concat(tQ?"border-zinc-300 bg-zinc-50 text-zinc-500 dark:border-zinc-700 dark:bg-zinc-800 dark:text-zinc-400":"border-sky-300 bg-sky-50 text-sky-700 dark:border-sky-700 dark:bg-sky-900/30 dark:text-sky-300"," disabled:cursor-not-allowed disabled:opacity-50"),"aria-label":tQ?"Unmute panel TTS":"Mute panel TTS","aria-pressed":tQ,title:tX.supported?t$.active?tQ?"Panel TTS muted \xb7 click to unmute":"Panel TTS active \xb7 click to mute":"Start voice mode to enable per-panel TTS":"Web Speech API is unavailable in this browser","data-testid":"showroom-tts-toggle",children:[tQ?(0,r.jsx)(b.A,{className:"size-3.5","aria-hidden":!0}):(0,r.jsx)(x.A,{className:"size-3.5","aria-hidden":!0}),"TTS"]}),(0,r.jsxs)("button",{type:"button",onClick:tD,className:"inline-flex items-center gap-1 rounded-md border border-rose-300 bg-white px-2 py-1 text-xs text-rose-700 hover:bg-rose-50 dark:border-rose-700 dark:bg-zinc-800 dark:text-rose-300 dark:hover:bg-rose-900/30","aria-label":"Stop all panels",title:"Stop all (placeholder \xb7 P2 wire)",children:[(0,r.jsx)(g.A,{className:"size-3.5","aria-hidden":!0}),"Stop all"]})]})]}),(0,r.jsxs)("div",{className:"flex flex-1 flex-col gap-2 overflow-hidden p-2 ".concat((null==A?void 0:A.get("layout"))==="horizontal"?"flex-row":"xl:flex-row"),"data-testid":"showroom-grid",children:[0===T.length&&(0,r.jsx)("div",{className:"flex flex-1 items-center justify-center text-sm text-zinc-500",children:"모든 panel 이 닫혔습니다 \xb7 위의 + Panel 으로 추가"}),T.map(t=>(0,r.jsx)(en,{panel:t,allPanels:T,client:e,onClose:()=>t_(t.id),onState:e=>tU(t.id,e),onProvider:e=>tF(t.id,e),onPromoteAssistant:tb(t),outgoingEdges:F(ec,t.id),onAddChainEdge:tC,onRemoveChainEdge:tI,onToggleChainEdgeHitl:tA,onRoleHint:e=>tK(t.id,e),onPersona:e=>tO(t.id,e),dmState:e7[t.id],dmSessionId:e3},t.id))]}),(0,r.jsx)(eO,{open:eT,onClose:()=>eE(!1)}),G&&(0,r.jsx)(eH,{estimate:G.estimate,onConfirm:to,onCancel:tl}),(0,r.jsx)(eW,{pending:ep[0]?{from:ep[0].from,to:ep[0].to,forwardText:ep[0].forwardText}:void 0,queueLength:ep.length,onConfirm:tE,onCancel:tM}),ey&&(0,r.jsx)("div",{ref:t1,className:"fixed inset-0 z-50 flex items-center justify-center bg-black/40 p-4",role:"dialog","aria-modal":"true","aria-labelledby":"showroom-save-modal-title","data-testid":"showroom-save-modal",onKeyDown:e=>{"Escape"===e.key&&(e.stopPropagation(),tn())},children:(0,r.jsxs)("div",{className:"w-full max-w-md rounded-lg border border-zinc-300 bg-white p-4 shadow-xl dark:border-zinc-700 dark:bg-zinc-900",children:[(0,r.jsx)("h2",{id:"showroom-save-modal-title",className:"mb-2 text-sm font-medium text-zinc-900 dark:text-zinc-100",children:"Save Showroom layout"}),(0,r.jsxs)("p",{className:"mb-3 text-xs text-zinc-500",children:[T.length," panel \xb7 sessionId 는 fresh handshake 으로 load 시 재발급"]}),(0,r.jsx)("input",{type:"text",value:eN,onChange:e=>{eS(e.target.value),eI(null)},onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),tr())},placeholder:"layout name (e.g., morning \xb7 debug-X \xb7 pair-A)",className:"mb-2 w-full rounded-md border border-zinc-300 bg-white px-2 py-1.5 text-sm focus:outline-none focus:ring-2 focus:ring-indigo-400 dark:border-zinc-700 dark:bg-zinc-800","data-testid":"showroom-save-modal-input",autoFocus:!0}),eN.trim()&&eb.some(e=>e.name===eN.trim())&&(0,r.jsx)("p",{className:"mb-2 text-[11px] text-amber-700 dark:text-amber-300","data-testid":"showroom-save-modal-overwrite-warn",children:"같은 이름의 layout 이 이미 있어요 \xb7 save 시 overwrite"}),eC&&(0,r.jsx)("p",{className:"mb-2 text-[11px] text-rose-700 dark:text-rose-300","data-testid":"showroom-save-modal-error",children:eC}),(0,r.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,r.jsx)("button",{type:"button",onClick:tn,className:"rounded-md border border-zinc-300 bg-white px-3 py-1 text-xs hover:bg-zinc-50 dark:border-zinc-700 dark:bg-zinc-800 dark:hover:bg-zinc-700","data-testid":"showroom-save-modal-cancel",children:"Cancel"}),(0,r.jsxs)("button",{type:"button",onClick:tr,disabled:!eN.trim(),className:"inline-flex items-center gap-1 rounded-md bg-indigo-600 px-3 py-1 text-xs font-medium text-white hover:bg-indigo-500 disabled:cursor-not-allowed disabled:opacity-50","data-testid":"showroom-save-modal-confirm",children:[(0,r.jsx)(d.A,{className:"size-3","aria-hidden":!0}),"Save"]})]})]})}),(0,r.jsx)(eL,{sessionId:e3,onTap:e=>{ef.K.emit({surface:"pwa",intent:{layer:"selection",kind:"pwa.selection.intent_button_tap",target:{kind:"intent_button",id:e,label:e}},...e3?{context:{active_showroom_session_id:e3}}:{}}),tL(e)}}),(0,r.jsx)(ez,{onSend:tL,panels:T,liveCount:tB,attachments:P,onAttach:tu,onRemoveAttachment:tm,terminalContexts:D,onPinTerminalContext:tp,onRemoveTerminalContext:th,priorAnswers:J,onRemovePriorAnswer:tx,onTogglePriorAnswer:tg,urlContexts:et,onAddUrlContext:tf,onRemoveUrlContext:tv,clipboardContexts:er,onAddClipboardContext:tw,onRemoveClipboardContext:tk,videoContexts:el,onAddVideoContext:ty,onRemoveVideoContext:tj,audioContexts:es,onAddAudioContext:tz,onRemoveAudioContext:tN,onUpdateAudioTranscript:tS,listTerminals:()=>e.listTerminals(),fetchTerminalScrollback:(t,a)=>e.fetchTerminalScrollback(t,a)})]})}},16307:(e,t,a)=>{"use strict";a.d(t,{X:()=>i});var r=a(60500);let n=null,o=[],l=[];function i(e){let[t,a]=(0,r.useState)(()=>n&&Date.now()-n.at<3e5?n.providers:o),[i,s]=(0,r.useState)(()=>n&&Date.now()-n.at<3e5?n.models:l),[d,c]=(0,r.useState)(!1),[u,m]=(0,r.useState)(null),p=(0,r.useCallback)(async()=>{c(!0),m(null);try{let t=await e.getRegistryCatalog(),r=t.providers.map(e=>({id:e.id,displayName:e.displayName,aliases:e.aliases,modelPrefixes:e.modelPrefixes,apiKeyEnv:e.apiKeyEnv,endpointPattern:e.endpointPattern,capabilities:e.capabilities,builtIn:e.builtIn})),o=t.models.map(e=>({id:e.id,provider:e.provider,displayName:e.displayName,...void 0!==e.family?{family:e.family}:{},...void 0!==e.familyShortcut?{familyShortcut:e.familyShortcut}:{},...void 0!==e.contextSize?{contextSize:e.contextSize}:{},...void 0!==e.outputMaxTokens?{outputMaxTokens:e.outputMaxTokens}:{},...void 0!==e.vision?{vision:e.vision}:{},...void 0!==e.reasoning?{reasoning:e.reasoning}:{},...void 0!==e.toolCalling?{toolCalling:e.toolCalling}:{},...void 0!==e.pricing?{pricing:e.pricing}:{},...void 0!==e.deprecated?{deprecated:e.deprecated}:{},...void 0!==e.releaseDate?{releaseDate:e.releaseDate}:{},...void 0!==e.kind?{kind:e.kind}:{}}));n={at:Date.now(),providers:r,models:o},a(r),s(o)}catch(e){m(e instanceof Error?e.message:String(e))}finally{c(!1)}},[e]);(0,r.useEffect)(()=>{if(n&&Date.now()-n.at<3e5){a(n.providers),s(n.models);return}p()},[p]);let h=(0,r.useCallback)(async()=>{n=null,await p()},[p]),b=(0,r.useMemo)(()=>t.map(e=>e.id),[t]),x=(0,r.useMemo)(()=>{let e=new Map;for(let t of i){let a=e.get(t.provider);a?a.push(t):e.set(t.provider,[t])}return t=>{var a;return t?null!=(a=e.get(t))?a:[]:i}},[i]);return{providers:t,providerIds:b,models:i,modelsByProvider:x,loading:d,error:u,reload:h}}},16882:(e,t,a)=>{"use strict";a.d(t,{v:()=>l});var r=a(60500),n=a(50733);let o=null;function l(e){let[t,a]=(0,r.useState)(()=>o&&Date.now()-o.at<6e4?o.data:[]),[l,i]=(0,r.useState)(!1),[s,d]=(0,r.useState)(null),c=(0,r.useCallback)(async()=>{i(!0),d(null);try{let t=await e.listPersonas();o={at:Date.now(),data:t.personas},a(t.personas)}catch(e){d(e instanceof Error?e.message:String(e))}finally{i(!1)}},[e]);(0,r.useEffect)(()=>{if(o&&Date.now()-o.at<6e4)return void a(o.data);c()},[c]);let u=(0,r.useCallback)(async()=>{o=null,await c()},[c]);return(0,r.useEffect)(()=>{let t=e.personasEventsUrl();if(!t)return;let a=null;try{a=new EventSource(t)}catch(e){(0,n.cY)("showroom.personas.sse.construct-error",{error:String(e)});return}let r=e=>()=>{"hello"!==e&&((0,n.cY)("showroom.personas.sse.event",{kind:e}),o=null,c())};return a.addEventListener("hello",r("hello")),a.addEventListener("load-dir",r("load-dir")),a.addEventListener("reload-all",r("reload-all")),a.addEventListener("upsert",r("upsert")),a.addEventListener("remove",r("remove")),a.onerror=e=>{(0,n.cY)("showroom.personas.sse.error",{type:e.type})},()=>{try{null==a||a.close()}catch(e){}}},[e,c]),{personas:t,loading:l,error:s,reload:u}}},20866:(e,t,a)=>{"use strict";a.d(t,{GZ:()=>i,_n:()=>u,gu:()=>d,mB:()=>s,sY:()=>c,u9:()=>m});let r="elanous.showroom.intentPanel.collapsed",n="elanous.showroom.intentPanel.displayMode",o="fixed",l=new Set(["fixed","popup","off"]);function i(){try{return"true"===window.localStorage.getItem(r)}catch(e){return!1}}function s(e){try{e?window.localStorage.setItem(r,"true"):window.localStorage.removeItem(r),window.dispatchEvent(new StorageEvent("storage",{key:r,newValue:e?"true":null}))}catch(e){}}function d(e){let t=t=>{(t.key===r||null===t.key)&&e(i())};return window.addEventListener("storage",t),()=>{window.removeEventListener("storage",t)}}function c(){try{let e=window.localStorage.getItem(n);if(e&&l.has(e))return e;return o}catch(e){return o}}function u(e){try{e===o?window.localStorage.removeItem(n):window.localStorage.setItem(n,e),window.dispatchEvent(new StorageEvent("storage",{key:n,newValue:e===o?null:e}))}catch(e){}}function m(e){let t=t=>{(t.key===n||null===t.key)&&e(c())};return window.addEventListener("storage",t),()=>{window.removeEventListener("storage",t)}}},37998:(e,t,a)=>{"use strict";a.d(t,{i$:()=>i,nZ:()=>c,oM:()=>d,sF:()=>s});let r="elanous.showroom.layouts";function n(){return window.localStorage?window.localStorage:{getItem:()=>null,setItem:()=>{},removeItem:()=>{}}}function o(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:n(),t=e.getItem(r);if(!t)return{};try{let e=JSON.parse(t);if(!e||"object"!=typeof e)return{};return e}catch(e){return{}}}function l(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n(),a=JSON.stringify(e);if(a.length>102400)return{ok:!1,reason:"storage quota exceeded (".concat(a.length," > ").concat(102400,")")};try{return t.setItem(r,a),{ok:!0}}catch(e){return{ok:!1,reason:String(e)}}}async function i(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n();try{let{layouts:a}=await e.listShowroomLayouts(),r={};for(let e of a)r[e.name]=e;return l(r,t),{layouts:a.slice().sort((e,t)=>t.savedAt-e.savedAt),source:"daemon"}}catch(e){return{layouts:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:n();return Object.values(o(e)).sort((e,t)=>t.savedAt-e.savedAt)}(t),source:"local"}}}async function s(e,t,a){var r;let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},s=e.trim();if(!s)return{ok:!1,reason:"name required"};let d=null!=(r=i.backend)?r:n(),c=function(e,t){var a;let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=e.trim();if(!i)return{ok:!1,reason:"name required"};let s=null!=(a=r.backend)?a:n(),d=o(s),c={name:i,savedAt:Date.now(),panels:t.map(e=>({id:e.id,kind:e.kind,provider:e.provider,...e.agentBrand?{agentBrand:e.agentBrand}:{},...e.roleHint?{roleHint:e.roleHint}:{},...e.personaId?{personaId:e.personaId}:{},state:e.state})),...r.layoutMode?{layoutMode:r.layoutMode}:{}};d[i]=c;let u=l(d,s);return u.ok?{ok:!0,saved:c}:u}(s,t,i);if(!c.ok)return c;let u=0;try{let e=await a.listShowroomLayouts();if(0===e.layouts.length){let e=o(d);for(let t of Object.values(e))try{await a.saveShowroomLayout(t.name,{savedAt:t.savedAt,panels:t.panels,...t.layoutMode?{layoutMode:t.layoutMode}:{}}),u+=1}catch(e){}return{ok:!0,saved:c.saved,source:"daemon",migrated:u}}return await a.saveShowroomLayout(s,{savedAt:c.saved.savedAt,panels:c.saved.panels,...c.saved.layoutMode?{layoutMode:c.saved.layoutMode}:{}}),{ok:!0,saved:c.saved,source:"daemon",migrated:0}}catch(e){return{ok:!0,saved:c.saved,source:"local",migrated:0}}}async function d(e,t){let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:n(),r=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n(),a=o(t);return e.trim()in a&&(delete a[e.trim()],l(a,t),!0)}(e,a);try{return await t.deleteShowroomLayout(e),{ok:!0,source:"daemon"}}catch(e){return{ok:r,source:"local"}}}function c(e){return e.panels.map(e=>({id:e.id,kind:e.kind,provider:e.provider,...e.agentBrand?{agentBrand:e.agentBrand}:{},...e.roleHint?{roleHint:e.roleHint}:{},...e.personaId?{personaId:e.personaId}:{},sessionId:null,state:e.state}))}},43468:(e,t,a)=>{"use strict";a.d(t,{M1:()=>d,Qj:()=>c,tI:()=>s});var r=a(54456),n=a(60500),o=a(40324),l=a(59405);let i=(0,n.createContext)(null);function s(e){let{client:t,queryClient:a,defaultStaleTimeMs:s,children:d}=e,c=(0,n.useMemo)(()=>null!=a?a:new o.E({defaultOptions:{queries:{staleTime:null!=s?s:2e3,refetchOnWindowFocus:!1}}}),[a,s]);return(0,r.jsx)(i.Provider,{value:t,children:(0,r.jsx)(l.Ht,{client:c,children:d})})}function d(){let e=(0,n.useContext)(i);if(!e)throw Error("useNexusClient must be used within <NexusProvider>");return e}function c(){return(0,n.useContext)(i)}},89604:(e,t,a)=>{"use strict";function r(e){return e.metaKey||e.ctrlKey}function n(e){let t=e.key.toLowerCase();return!r(e)||e.shiftKey||e.altKey||"k"!==t?r(e)&&e.shiftKey&&!e.altKey&&"j"===t?e.fromEditable?null:"toggle-role-judge":r(e)&&e.shiftKey&&!e.altKey&&"m"===t?e.fromEditable?null:"toggle-voice":r(e)&&e.shiftKey&&!e.altKey&&"y"===t?e.fromEditable?null:"toggle-tts":"?"!==e.key||r(e)||e.altKey?null:e.fromEditable?null:"open-help":"focus-broadcast-input"}function o(e){var t;if(!e)return!1;let a=e.tagName;if(!a)return!1;if("INPUT"===a||"TEXTAREA"===a||"SELECT"===a)return!0;let r=null==(t=e.getAttribute)?void 0:t.call(e,"contenteditable");return""===r||"true"===r}a.d(t,{ZQ:()=>n,_i:()=>o,nm:()=>l});let l=[{id:"focus-broadcast-input",combo:"⌘K / Ctrl+K",effect:"Focus broadcast input"},{id:"toggle-role-judge",combo:"⌘⇧J / Ctrl+⇧J",effect:"Toggle role-judge backend"},{id:"toggle-voice",combo:"⌘⇧M / Ctrl+⇧M",effect:"Toggle voice mode (mic)"},{id:"toggle-tts",combo:"⌘⇧Y / Ctrl+⇧Y",effect:"Toggle TTS mute"},{id:"open-help",combo:"?",effect:"Open this help overlay"}]}},e=>{e.O(0,[7777,9538,3278,1829,8206,9906,4215,7277,6390,3170,7358],()=>e(e.s=10455)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8147],{1355:(e,t,r)=>{"use strict";r.d(t,{Zr:()=>o,f6:()=>a,oD:()=>i});let n="elanous.daemon.sessionId";function a(){return"undefined"!=typeof crypto&&"function"==typeof crypto.randomUUID?crypto.randomUUID():"s-".concat(Date.now().toString(36),"-").concat(Math.random().toString(36).slice(2,10))}function i(){let e=function(){let e=new URLSearchParams(window.location.search).get("session");return e?(localStorage.setItem(n,e),e):localStorage.getItem(n)}();if(e)return e;let t=a();return localStorage.setItem(n,t),t}function o(){let e=a();return localStorage.setItem(n,e),e}},10080:(e,t,r)=>{"use strict";r.d(t,{$:()=>d});var n=r(54456),a=r(80247),i=r(13680),o=r(74591);let s=(0,i.F)("group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",outline:"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",ghost:"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",destructive:"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",icon:"size-8","icon-xs":"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg","icon-lg":"size-9"}},defaultVariants:{variant:"default",size:"default"}});function d(e){let{className:t,variant:r="default",size:i="default",...d}=e;return(0,n.jsx)(a.$,{"data-slot":"button",className:(0,o.cn)(s({variant:r,size:i,className:t})),...d})}},11905:(e,t,r)=>{Promise.resolve().then(r.bind(r,78640))},36581:(e,t,r)=>{"use strict";r.d(t,{C:()=>u,DaemonProvider:()=>l,Q:()=>c});var n=r(54456),a=r(60500),i=r(86704),o=r(1355),s=r(39906),d=r(50733);let u=(0,a.createContext)(null);function l(e){let{children:t}=e,r={baseUrl:"",token:"",provider:""},[l,c]=(0,a.useState)(r),[g,p]=(0,a.useState)(""),[v]=(0,a.useState)(()=>new s.ki(r));(0,a.useEffect)(()=>{let e=(0,i.Fp)();c(e),v.updateConfig(e),p((0,o.oD)()),(0,d.cY)("webterm.provider.daemon.init",{baseUrl:e.baseUrl,hasToken:!!e.token})},[v]),(0,a.useEffect)(()=>{let e=e=>{if("elanous.daemon.token"===e.key||"elanous.nexus.baseUrl"===e.key){let t=(0,i.Fp)();v.updateConfig(t),c(t),(0,d.cY)("webterm.provider.daemon.config-cross-tab",{key:e.key,hasToken:!!t.token});return}"elanous.daemon.sessionId"===e.key&&e.newValue&&p(t=>t===e.newValue?t:((0,d.cY)("webterm.provider.daemon.session-cross-tab",{previous:t||"(empty)",next:e.newValue}),e.newValue))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)},[v]);let b=e=>{c(t=>{let r={...t,...e};return(0,i.Qc)(e),v.updateConfig(r),(0,d.cY)("webterm.provider.daemon.config-update",{keys:Object.keys(e)}),r})},m=e=>{p(e),localStorage.setItem("elanous.daemon.sessionId",e),(0,d.cY)("webterm.provider.daemon.session-set",{sessionId:e})},f=(0,a.useMemo)(()=>({config:l,setConfig:b,client:v,sessionId:g,setSessionId:m}),[l,v,g]);return(0,n.jsx)(u.Provider,{value:f,children:t})}function c(){let e=(0,a.useContext)(u);if(!e)throw Error("useDaemon must be used inside <DaemonProvider>");return e}},74591:(e,t,r)=>{"use strict";r.d(t,{cn:()=>i});var n=r(49454),a=r(79946);function i(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return(0,a.QP)((0,n.$)(t))}},78640:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>i});var n=r(54456),a=r(84508);function i(){return(0,n.jsx)(a.B,{})}}},e=>{e.O(0,[7777,3278,1829,6048,9906,4508,6390,3170,7358],()=>e(e.s=11905)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6125],{30176:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>u});var a=n(54456),s=n(60500),l=n(80581),r=n(48605);function c(){let e=(0,l.useRouter)(),t=(0,l.useSearchParams)(),n=(null==t?void 0:t.get("pty"))||null,c=(0,s.useCallback)(t=>{let n=function(e,t){let n=new URL(e);return n.searchParams.get("pty")===t?null:(n.searchParams.set("pty",t),"".concat(n.pathname).concat(n.search).concat(n.hash))}(window.location.href,t.id);null!==n&&e.replace(n)},[e]);return(0,a.jsx)(r.zV,{initialPtyId:n,onPtySelection:c})}function u(){return(0,a.jsx)(s.Suspense,{fallback:(0,a.jsx)("div",{className:"p-6 text-sm text-muted-foreground",children:"loading…"}),children:(0,a.jsx)(c,{})})}},84427:(e,t,n)=>{Promise.resolve().then(n.bind(n,30176))}},e=>{e.O(0,[7777,3278,1829,5978,1159,4733,9906,4215,7277,5845,1394,8605,6390,3170,7358],()=>e(e.s=84427)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7556],{1355:(e,t,r)=>{"use strict";r.d(t,{Zr:()=>s,f6:()=>n,oD:()=>a});let o="elanous.daemon.sessionId";function n(){return"undefined"!=typeof crypto&&"function"==typeof crypto.randomUUID?crypto.randomUUID():"s-".concat(Date.now().toString(36),"-").concat(Math.random().toString(36).slice(2,10))}function a(){let e=function(){let e=new URLSearchParams(window.location.search).get("session");return e?(localStorage.setItem(o,e),e):localStorage.getItem(o)}();if(e)return e;let t=n();return localStorage.setItem(o,t),t}function s(){let e=n();return localStorage.setItem(o,e),e}},16434:(e,t,r)=>{"use strict";r.d(t,{V5:()=>a,tV:()=>s});var o=r(98025);class n extends Error{constructor(e,t,r){super(r||t),this.status=e,this.error=t,this.reason=r,this.name="MergeApprovalsApiError"}}function a(e,t){return e instanceof n?401===e.status||"unauthorized"===e.error?{text:"이 기기에 소유자 토큰이 없어 승인 목록을 못 읽었습니다 — 이미 연결된 기기의 설정 › 연결 토큰 만들기 에서 토큰을 만들어, 이 기기의 설정 › 데몬 연결 › 연결 토큰 칸에 붙이면 바로 보입니다.",href:"/app/settings/#bearer-token"}:"gh-failed"===e.error?{text:"데몬이 GitHub 를 읽지 못했습니다(데몬 기계의 gh 로그인\xb7네트워크) — 잠시 뒤 다시 열어 보세요.".concat(e.reason?" 사유: ".concat(e.reason.split("\n")[0].slice(0,160)):"")}:"gh-invalid-response"===e.error?{text:"GitHub 응답을 해석하지 못했습니다 — 잠시 뒤 다시 열어 보세요."}:"approvals-repo-unknown"===e.error?{text:"승인할 저장소를 모릅니다 — 데몬 설정 intake.approvals.repo(예: owner/repo)를 채워 주세요.",href:"/app/settings/"}:e.reason?{text:e.reason}:{text:"".concat(t," (").concat(e.status," ").concat(e.error,")")}:e instanceof TypeError?{text:"데몬에 닿지 못했습니다 — 데몬이 켜져 있는지, 이 기기가 같은 네트워크(tailnet)에 있는지 확인하세요."}:{text:e instanceof Error&&e.message?e.message:t}}function s(e){var t,r;let a=null!=(t=e.fetchImpl)?t:fetch,s=(null!=(r=e.baseUrl)?r:"").replace(/\/+$/,"");async function i(t,r){let o={...r,headers:{"content-type":"application/json",...e.authHeader?{authorization:e.authHeader}:{}}},i=e.client?await e.client.fetchResponse(t,o):await a("".concat(s).concat(t),o),c=await i.json().catch(()=>null);if(!i.ok){var l;let e=c&&"object"==typeof c?c:{};throw new n(i.status,null!=(l=e.error)?l:"request-failed",e.reason)}return c}return{list:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"open";return i("merged"===e?"".concat(o.r5,"?state=merged"):o.r5)},get:e=>i("".concat(o.r5,"/").concat(e)),check:(e,t)=>i("".concat(o.r5,"/").concat(e,"/check"),{method:"POST",body:JSON.stringify({headSha:t})}),merge:(e,t)=>i("".concat(o.r5,"/").concat(e,"/merge"),{method:"POST",body:JSON.stringify({headSha:t})})}}},31594:(e,t,r)=>{"use strict";function o(e){return{slides:e.slides.map(e=>{let{image:t,caption:r,include:o}=e;return{image:t,caption:r,include:o}}),caption:{hook:e.caption.hook,body:e.caption.body},hashtags:[...e.hashtags],cover:{text:e.cover.text,sub:e.cover.sub},location:e.location}}r.d(t,{$Y:()=>s,LP:()=>c,Mz:()=>o,ll:()=>u,rH:()=>i});class n extends Error{constructor(e,t){super(t),this.status=e,this.name="GraphApprovalsApiError"}}let a={list:"목록을 보려면",decide:"승인하려면",save:"초안을 저장하려면"},s="/app/settings/#bearer-token";function i(e){return e instanceof n&&(401===e.status||403===e.status)}function c(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"decide";return e instanceof n?401===e.status||403===e.status?"".concat(a[t]," 이 기기를 데몬에 연결해야 합니다 — 설정 › 데몬 연결 › 연결 토큰 칸에 토큰을 넣어 주세요."):404===e.status?"이 실행을 찾지 못했습니다. 목록을 다시 확인해 주세요.":409===e.status?"이미 결정된 실행입니다. 목록을 다시 확인해 주세요.":400===e.status?"결정 내용을 확인한 뒤 다시 시도해 주세요.":"승인 요청을 처리하지 못했습니다. 잠시 뒤 다시 시도해 주세요.":e instanceof TypeError?"서버에 연결하지 못했습니다. 연결 상태를 확인해 주세요.":"승인 요청을 처리하지 못했습니다. 잠시 뒤 다시 시도해 주세요."}let l="/v1/graph-approvals";function u(e){var t,r;let o=(null!=(t=e.baseUrl)?t:"").replace(/\/+$/,""),a=null!=(r=e.fetchImpl)?r:fetch;async function s(t,r){let s={...r,headers:{"content-type":"application/json",...e.authHeader?{authorization:e.authHeader}:{}}},i=e.client?await e.client.fetchResponse(t,s):await a("".concat(o).concat(t),s),c=await i.json().catch(()=>null);if(!i.ok){let e=c&&"object"==typeof c&&"error"in c&&"string"==typeof c.error?c.error:"request-failed";throw new n(i.status,e)}return c}return{list:()=>s(l),decide:(e,t,r)=>s("".concat(l,"/").concat(encodeURIComponent(e),"/").concat(encodeURIComponent(t)),{method:"POST",body:JSON.stringify({decision:r})}),saveFeedDraft:(e,t,r)=>s("".concat(l,"/").concat(encodeURIComponent(e),"/").concat(encodeURIComponent(t),"/feed-draft"),{method:"PUT",body:JSON.stringify(r)}),feedMedia:async(t,r,s)=>{let i="".concat(l,"/").concat(encodeURIComponent(t),"/").concat(encodeURIComponent(r),"/media?path=").concat(encodeURIComponent(s)),c={headers:e.authHeader?{authorization:e.authHeader}:{}},u=e.client?await e.client.fetchResponse(i,c):await a("".concat(o).concat(i),c);if(!u.ok)throw new n(u.status,"media-failed");return u.blob()}}}},36581:(e,t,r)=>{"use strict";r.d(t,{C:()=>l,DaemonProvider:()=>u,Q:()=>d});var o=r(54456),n=r(60500),a=r(86704),s=r(1355),i=r(39906),c=r(50733);let l=(0,n.createContext)(null);function u(e){let{children:t}=e,r={baseUrl:"",token:"",provider:""},[u,d]=(0,n.useState)(r),[p,m]=(0,n.useState)(""),[h]=(0,n.useState)(()=>new i.ki(r));(0,n.useEffect)(()=>{let e=(0,a.Fp)();d(e),h.updateConfig(e),m((0,s.oD)()),(0,c.cY)("webterm.provider.daemon.init",{baseUrl:e.baseUrl,hasToken:!!e.token})},[h]),(0,n.useEffect)(()=>{let e=e=>{if("elanous.daemon.token"===e.key||"elanous.nexus.baseUrl"===e.key){let t=(0,a.Fp)();h.updateConfig(t),d(t),(0,c.cY)("webterm.provider.daemon.config-cross-tab",{key:e.key,hasToken:!!t.token});return}"elanous.daemon.sessionId"===e.key&&e.newValue&&m(t=>t===e.newValue?t:((0,c.cY)("webterm.provider.daemon.session-cross-tab",{previous:t||"(empty)",next:e.newValue}),e.newValue))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)},[h]);let f=e=>{d(t=>{let r={...t,...e};return(0,a.Qc)(e),h.updateConfig(r),(0,c.cY)("webterm.provider.daemon.config-update",{keys:Object.keys(e)}),r})},w=e=>{m(e),localStorage.setItem("elanous.daemon.sessionId",e),(0,c.cY)("webterm.provider.daemon.session-set",{sessionId:e})},b=(0,n.useMemo)(()=>({config:u,setConfig:f,client:h,sessionId:p,setSessionId:w}),[u,h,p]);return(0,o.jsx)(l.Provider,{value:b,children:t})}function d(){let e=(0,n.useContext)(l);if(!e)throw Error("useDaemon must be used inside <DaemonProvider>");return e}},64586:(e,t,r)=>{"use strict";r.d(t,{dY:()=>s,EX:()=>i});let o={pwaRoute:{"/":{pwa:"stable"},"/404":{pwa:"stable"},"/setup":{pwa:"stable"},"/setup/done":{pwa:"stable"},"/consult":{pwa:"stable"},"/chat":{pwa:"stable"},"/today":{pwa:"stable"},"/term":{pwa:"stable"},"/live":{pwa:"stable"},"/market":{pwa:"stable"},"/sessions":{pwa:"stable"},"/settings":{pwa:"beta"},"/editor":{pwa:"beta"},"/intake":{pwa:"beta"},"/trace":{pwa:"beta"},"/inside":{pwa:"beta"},"/board":{pwa:"beta"},"/autopilot":{pwa:"beta"},"/missions/[id]":{pwa:"beta"},"/tasks":{pwa:"beta"},"/workspace":{pwa:"beta"},"/reflection":{pwa:"beta"},"/vault":{pwa:"beta"},"/observatory":{pwa:"beta"},"/exec":{pwa:"beta"},"/outputs":{pwa:"beta"},"/field":{pwa:"beta"},"/showroom":{pwa:"beta"},"/workflows":{pwa:"beta"},"/approvals":{pwa:"tool"},"/worktrees":{pwa:"tool"},"/design-check":{pwa:"tool"},"/control":{pwa:"tool"},"/scheduler":{pwa:"ops"},"/ops/release":{pwa:"ops"},"/ops/seats":{pwa:"ops"},"/ops/checklist":{pwa:"ops"},"/dashboard":{pwa:"ops"},"/bots":{pwa:"ops"},"/botlab":{pwa:"ops"},"/morning":{pwa:"broken"},"/settings/devices":{pwa:"broken"},"/workflows/chat-ui":{pwa:"broken"},"/share":{pwa:"system"}}},n=Object.fromEntries(Object.entries(o.pwaRoute).map(e=>{let[t,r]=e;return[t,r.pwa]}));function a(e){var t;let r=(null==(t=e.split(/[?#]/,1)[0])?void 0:t.replace(/\/+$/,""))||"/";return Object.prototype.hasOwnProperty.call(n,r)?r:r.startsWith("/missions/")&&-1===r.slice(10).indexOf("/")?"/missions/[id]":r}function s(e){let t=a(e);return Object.prototype.hasOwnProperty.call(n,t)?n[t]:void 0}function i(e,t,r){let n=a(t);if("general"===e&&(null==r?void 0:r.showBeta)&&"beta"===s(n))return!0;let i=function(e,t){var r;if(!Object.prototype.hasOwnProperty.call(o.pwaRoute,e))return;let n=o.pwaRoute[e];return null!=(r=n.pwa)?r:"desktop"===t?n.pwa:void 0}(n,"pwa");return!!i&&("owner"===e||"system"!==i&&("/settings"===n||"stable"===i||"contributor"===e&&("beta"===i||"tool"===i)))}},78920:(e,t,r)=>{Promise.resolve().then(r.bind(r,90256))},79450:(e,t,r)=>{"use strict";r.d(t,{KW:()=>a,jU:()=>o,nj:()=>n});class o{async list(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.client.fetchJson("/v1/sessions/store".concat(e?"?includeEmpty=1":""))}async transcript(e){return this.client.fetchJson("/v1/sessions/store/".concat(encodeURIComponent(e)))}async fork(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.client.fetchJson("/v1/sessions/store/".concat(encodeURIComponent(e),"/fork"),{method:"POST",...void 0!==t.beforeUser?{headers:{"content-type":"application/json"},body:JSON.stringify({beforeUser:t.beforeUser})}:{}})}async delete(e){return this.client.fetchJson("/v1/sessions/store/".concat(encodeURIComponent(e)),{method:"DELETE"})}constructor(e){this.client=e}}function n(e,t){let r=t.trim().toLowerCase();if(!r)return{kind:"none"};let o=e.filter(e=>e.id.toLowerCase().startsWith(r));return 1===o.length?{kind:"one",id:o[0].id}:0===o.length?{kind:"none"}:{kind:"ambiguous",count:o.length}}function a(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Date.now(),r=Date.parse(e);if(!Number.isFinite(r))return"";let o=Math.max(0,Math.floor((t-r)/1e3));return o<30?"방금":o<3600?"".concat(Math.floor(o/60),"분 전"):o<86400?"".concat(Math.floor(o/3600),"시간 전"):"".concat(Math.floor(o/86400),"일 전")}},80581:(e,t,r)=>{"use strict";var o=r(35793);r.o(o,"useParams")&&r.d(t,{useParams:function(){return o.useParams}}),r.o(o,"usePathname")&&r.d(t,{usePathname:function(){return o.usePathname}}),r.o(o,"useRouter")&&r.d(t,{useRouter:function(){return o.useRouter}}),r.o(o,"useSearchParams")&&r.d(t,{useSearchParams:function(){return o.useSearchParams}})},90256:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>f});var o=r(54456),n=r(60500),a=r(80581),s=r(36581),i=r(31594),c=r(16434),l=r(96053),u=r(64586),d=r(79450);let p=()=>({items:[],loading:!0,error:!1});function m(e){let{title:t,href:r,loading:n,error:a,empty:s,retry:i,children:c}=e;return(0,o.jsxs)("section",{"aria-label":t,className:"rounded-xl border border-border bg-card p-5 shadow-sm",children:[(0,o.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,o.jsx)("h2",{className:"text-lg font-semibold",children:t}),r&&(0,o.jsx)("a",{href:r,className:"text-sm font-medium text-primary underline underline-offset-4",children:"모두 보기"})]}),n?(0,o.jsx)("p",{role:"status",className:"mt-4 text-sm text-muted-foreground",children:"불러오는 중…"}):a?(0,o.jsxs)("div",{className:"mt-4 text-sm",role:"alert",children:["목록을 읽지 못했습니다. ",(0,o.jsx)("button",{type:"button",onClick:i,className:"font-medium text-primary underline underline-offset-4",children:"다시 시도"})]}):c||(0,o.jsx)("p",{className:"mt-4 text-sm text-muted-foreground",children:s})]})}function h(){let{client:e,setSessionId:t}=(0,s.Q)(),r=(0,l.In)(),h=(0,u.EX)(r,"/approvals"),f=(0,a.useRouter)(),w=(0,n.useMemo)(()=>(0,i.ll)({client:e}),[e]),b=(0,n.useMemo)(()=>(0,c.tV)({client:e}),[e]),g=(0,n.useMemo)(()=>new d.jU(e),[e]),[v,y]=(0,n.useState)(()=>({items:[],loading:!0,error:!1})),[x,k]=(0,n.useState)(p),[j,E]=(0,n.useState)(p),I=(0,n.useCallback)(async()=>{y(e=>({...e,loading:!0,error:!1}));try{let[e,t]=await Promise.all([w.list(),b.list()]);y({items:[{graph:e.items,merge:t.items}],loading:!1,error:!1})}catch(e){y({items:[],loading:!1,error:!0})}},[w,b]),S=(0,n.useCallback)(async()=>{k(e=>({...e,loading:!0,error:!1}));try{let t=await e.listExecRequests();k({items:[...t.items].sort((e,t)=>t.createdAt.localeCompare(e.createdAt)).slice(0,5),loading:!1,error:!1})}catch(e){k({items:[],loading:!1,error:!0})}},[e]),C=(0,n.useCallback)(async()=>{E(e=>({...e,loading:!0,error:!1}));try{let e=await g.list();E({items:[...e.sessions].sort((e,t)=>t.updatedAt.localeCompare(e.updatedAt)).slice(0,5),loading:!1,error:!1})}catch(e){E({items:[],loading:!1,error:!0})}},[g]);(0,n.useEffect)(()=>{h&&I()},[h,I]),(0,n.useEffect)(()=>{S()},[S]),(0,n.useEffect)(()=>{C()},[C]);let U=v.items[0];return(0,o.jsxs)("main",{className:"mx-auto w-full max-w-3xl space-y-6 px-4 py-8 text-foreground sm:px-8",children:[(0,o.jsxs)("header",{children:[(0,o.jsx)("h1",{className:"text-2xl font-semibold tracking-tight",children:"오늘"}),(0,o.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:"기다리는 결정과 최근 활동을 한눈에 확인하세요."})]}),(0,o.jsx)(m,{title:"승인 대기",href:h?"/approvals":void 0,loading:h&&v.loading,error:h&&v.error,empty:"지금 결정 대기 중인 일이 없습니다.",retry:()=>void I(),children:h&&U&&(U.graph.length>0||U.merge.length>0)?(0,o.jsxs)("ul",{className:"mt-4 space-y-2 text-sm",children:[U.graph.map(e=>(0,o.jsx)("li",{className:"rounded-lg border border-border p-3",children:e.message||e.graphId},"".concat(e.graphId,"/").concat(e.runId))),U.merge.map(e=>(0,o.jsx)("li",{className:"rounded-lg border border-border p-3",children:e.title},e.number))]}):null}),(0,o.jsx)(m,{title:"최근 맡긴 일",href:"/exec",loading:x.loading,error:x.error,empty:"아직 맡긴 일이 없습니다.",retry:()=>void S(),children:x.items.length>0?(0,o.jsx)("ul",{className:"mt-4 space-y-2",children:x.items.map(e=>(0,o.jsx)("li",{children:(0,o.jsx)("a",{className:"block rounded-lg border border-border p-3 text-sm hover:border-primary focus-visible:outline focus-visible:outline-2 focus-visible:outline-primary",href:"/exec?request=".concat(encodeURIComponent(e.id)),children:e.text.trim().split(/\r?\n/,1)[0]||"제목 없는 일"})},e.id))}):null}),(0,o.jsx)(m,{title:"최근 대화",href:"/chat",loading:j.loading,error:j.error,empty:"아직 대화가 없습니다.",retry:()=>void C(),children:j.items.length>0?(0,o.jsx)("ul",{className:"mt-4 space-y-2",children:j.items.map(e=>(0,o.jsx)("li",{children:(0,o.jsx)("button",{type:"button",onClick:()=>{t(e.id),f.push("/chat")},className:"w-full rounded-lg border border-border p-3 text-left text-sm hover:border-primary focus-visible:outline focus-visible:outline-2 focus-visible:outline-primary",children:e.title||e.preview||"대화"})},e.id))}):null})]})}function f(){let[e,t]=(0,n.useState)(!1);return(0,n.useEffect)(()=>{t(!0)},[]),e?(0,o.jsx)(h,{}):null}},96053:(e,t,r)=>{"use strict";r.d(t,{GC:()=>n,In:()=>l,OG:()=>i});var o=r(60500);let n="elanous.pwa.role",a="elanous:pwa-role";function s(){try{let e=window.localStorage.getItem(n);if("owner"===e||"contributor"===e||"general"===e)return e}catch(e){}return"general"}function i(e){try{window.localStorage.setItem(n,e)}catch(e){}"function"==typeof window.dispatchEvent&&window.dispatchEvent(new Event(a))}function c(e){if("function"!=typeof window.addEventListener)return()=>{};window.addEventListener(a,e);let t=t=>{(t.key===n||null===t.key)&&e()};return window.addEventListener("storage",t),()=>{window.removeEventListener(a,e),window.removeEventListener("storage",t)}}function l(){return(0,o.useSyncExternalStore)(c,s,()=>"general")}},98025:(e,t,r)=>{"use strict";r.d(t,{GM:()=>i,J3:()=>s,WF:()=>o,bR:()=>a,m:()=>c,r5:()=>n});let o="/v1/devices",n="/v1/approvals/merges",a="/v1/templates/capability-preview",s="/v1/idle-nudge/preview",i="/v1/morning-digest/showroom",c="/v1/next-fluent/dispatch"}},e=>{e.O(0,[9906,6390,3170,7358],()=>e(e.s=78920)),_N_E=e.O()}]);
|