elanous 0.2.28 → 0.2.31
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/{y1ltt7oCZxVpC6zVPhZ2O → LSXfY0u9QtfDbejY0Ukf_}/_buildManifest.js +1 -1
- package/apps/pwa/out/_next/static/chunks/{ab4d57c2.e90bc2cb31949045.js → 0bb0ff36.b8d418980951e5ba.js} +7 -7
- package/apps/pwa/out/_next/static/chunks/1034-8b639cee57b8e4a8.js +1 -0
- package/apps/pwa/out/_next/static/chunks/1085-6c2d35526f11f840.js +1 -0
- package/apps/pwa/out/_next/static/chunks/1220.1ff7d5cdc34b1ae5.js +27 -0
- package/apps/pwa/out/_next/static/chunks/1247.5884ec81b39fe2e7.js +287 -0
- package/apps/pwa/out/_next/static/chunks/1302.87681521a7a4661e.js +62 -0
- package/apps/pwa/out/_next/static/chunks/1324-59dae3002413623b.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{5492-e05e26a033ba80d2.js → 1335-6731f392c35216eb.js} +3 -3
- package/apps/pwa/out/_next/static/chunks/1343-f40b5870ac1eda5a.js +1 -0
- package/apps/pwa/out/_next/static/chunks/146-b6cd56be11dda017.js +1 -0
- package/apps/pwa/out/_next/static/chunks/1654.32de4b324981a188.js +23 -0
- package/apps/pwa/out/_next/static/chunks/1834-50625904996a8fa8.js +1 -0
- package/apps/pwa/out/_next/static/chunks/1849.1ce38efa6c527d9a.js +149 -0
- package/apps/pwa/out/_next/static/chunks/1913.7cc6fb6055b1ed3f.js +41 -0
- package/apps/pwa/out/_next/static/chunks/2001.6c7e0fd02190886c.js +1 -0
- package/apps/pwa/out/_next/static/chunks/2030.41fae98c7e907304.js +1 -0
- package/apps/pwa/out/_next/static/chunks/2099-08b2f2dfba742c9b.js +1 -0
- package/apps/pwa/out/_next/static/chunks/2112-e4efc21a6505d5bc.js +1 -0
- package/apps/pwa/out/_next/static/chunks/2134.ecee03a550ee7250.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{8578.dff22d988cc2b106.js → 2213.2ccbada92c33ea0f.js} +3 -3
- package/apps/pwa/out/_next/static/chunks/2236.66061832181cb745.js +1 -0
- package/apps/pwa/out/_next/static/chunks/2422.b0bd272e7020d7e6.js +1 -0
- package/apps/pwa/out/_next/static/chunks/2534.e85ae21ad0dac829.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{5081.a240b63fad28663a.js → 2871.0bca6137343b3f76.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/2898.fd781bc7cf01a7b7.js +1 -0
- package/apps/pwa/out/_next/static/chunks/2940-619bfd8ef337c611.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{2846.d6a433b8663819a5.js → 2985.39ccdecd36848b12.js} +4 -4
- package/apps/pwa/out/_next/static/chunks/3040.92ff9ffc9f971cb9.js +115 -0
- package/apps/pwa/out/_next/static/chunks/3144.6861096c7b4edef7.js +64 -0
- package/apps/pwa/out/_next/static/chunks/{f4dfbfc0.a69fb12f854882aa.js → 3267c0e6.d34854e7b3984a6e.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/3278.2e5d15b53a4091c8.js +2 -0
- package/apps/pwa/out/_next/static/chunks/3541-ce3a5424ed5ad7f1.js +1 -0
- package/apps/pwa/out/_next/static/chunks/3583.a05e88cc8d594628.js +1 -0
- package/apps/pwa/out/_next/static/chunks/3771.e928edf2867d28c0.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{3143.257997a5f1ed79df.js → 3902.e1e71aaac850a045.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/4063-03284b5de59965f3.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{16e57f67.3ea19e893461e611.js → 409f1e57.d0649fc47691ebfe.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/{1146.80d15ea7c6e6ee95.js → 4111.2bfedbb233ad206b.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/{1516.83dd2c1b86b4e507.js → 4174.92ed04922709ac9e.js} +2 -2
- package/apps/pwa/out/_next/static/chunks/4300-c7ec4eeabbb5f3f7.js +1 -0
- package/apps/pwa/out/_next/static/chunks/4483.646d5065199e1b55.js +36 -0
- package/apps/pwa/out/_next/static/chunks/4519.28199ff26b2fd80d.js +1 -0
- package/apps/pwa/out/_next/static/chunks/4581.ef2443578054544f.js +1 -0
- package/apps/pwa/out/_next/static/chunks/4608-8d894e9cbe4f08bf.js +1 -0
- package/apps/pwa/out/_next/static/chunks/4639.ae48a01d1bb50a93.js +286 -0
- package/apps/pwa/out/_next/static/chunks/4739.08742ac668aada67.js +77 -0
- package/apps/pwa/out/_next/static/chunks/4745.67d6f99c245af3f7.js +226 -0
- package/apps/pwa/out/_next/static/chunks/4882-16cef71d6a1a32be.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{9938.b23e4d4dfa0114cd.js → 4999.c064a4000c2a9e94.js} +2 -2
- package/apps/pwa/out/_next/static/chunks/5173-233188df2f42c626.js +1 -0
- package/apps/pwa/out/_next/static/chunks/5260-69f35419bca263e7.js +1 -0
- package/apps/pwa/out/_next/static/chunks/5272.b92d1b72a15c25fe.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{1157.f08bf2b70915e176.js → 5304.04d24756f242a094.js} +2 -2
- package/apps/pwa/out/_next/static/chunks/{7752.5cbdd0b433c54af9.js → 5307.60f2209e809bd627.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/5415-997980f828667736.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{9917-9e26abc5f7772735.js → 5458-16cd7a2b51b74c8c.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/{6196.34d6b229079e9e28.js → 5525.86debf231e181813.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/{4593.10f5b9bd702d4a6c.js → 5543.a438b8ab5a13ea47.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/5572-42c9084f27ca761e.js +1 -0
- package/apps/pwa/out/_next/static/chunks/5661-80470aac963d9f36.js +1 -0
- package/apps/pwa/out/_next/static/chunks/5723.421338408b5c30c4.js +74 -0
- package/apps/pwa/out/_next/static/chunks/5809.64c3664267c50bce.js +1 -0
- package/apps/pwa/out/_next/static/chunks/6000.64bc21ac8627f2f5.js +94 -0
- package/apps/pwa/out/_next/static/chunks/6013.39459b9c68eabf5f.js +1 -0
- package/apps/pwa/out/_next/static/chunks/607-06466dff012b03ef.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{7483.ba01c6c209b81bba.js → 6092.a7f99e68b188ca66.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/60fb96c9.360b01d8d4927b7b.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{9974.e77b4ff4884557b3.js → 6157.0c9af021de4fb31b.js} +2 -2
- package/apps/pwa/out/_next/static/chunks/6192.a190b989b81e9743.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{3309.364573ceedbdfd5f.js → 6323.8672b4817a306928.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/{94.4cfed21c0b781a06.js → 6433.fc573af22bbc9ab7.js} +4 -4
- package/apps/pwa/out/_next/static/chunks/6444.7d1fdcb9b09ae71c.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{949.1e7d45ccb71580aa.js → 6517.4147878ac06d584d.js} +2 -2
- package/apps/pwa/out/_next/static/chunks/6532.e34302010b2f0b68.js +32 -0
- package/apps/pwa/out/_next/static/chunks/6544cb48.a87fe20ddf137be2.js +1 -0
- package/apps/pwa/out/_next/static/chunks/6546.74bc4ed82f19016d.js +104 -0
- package/apps/pwa/out/_next/static/chunks/6684-e7523ce7c2fad075.js +1 -0
- package/apps/pwa/out/_next/static/chunks/6726.ebdc82feb161431e.js +1 -0
- package/apps/pwa/out/_next/static/chunks/6739.00fb6f892e5e392b.js +1 -0
- package/apps/pwa/out/_next/static/chunks/6745.934c4921bf15513a.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{2528.3868070ef1be69f9.js → 6767.ea607cf0c20a25af.js} +2 -2
- package/apps/pwa/out/_next/static/chunks/6843.67bfd020da0926c5.js +93 -0
- package/apps/pwa/out/_next/static/chunks/6948.1062d4594652b5bf.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7138-eaf841fc1dc03463.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7174-cda29ee13d7790e7.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7304-3c07583f4e405f4f.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7371.80c05c653b08e907.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7391.ebae168025c91b6a.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{1743.563d3168e95825ef.js → 7502.ccd5b8065545edd0.js} +2 -2
- package/apps/pwa/out/_next/static/chunks/7557.e325503a090a4310.js +8 -0
- package/apps/pwa/out/_next/static/chunks/7569-9ce9432c7f10989f.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{5408.377c8c543635b81f.js → 7862.30a8d6482bb238eb.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/7886-55854585fadeded1.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7947-d0759430f8042240.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{65ebff95.081daeff622d238e.js → 7a1887c4.f36b88fba31da8fd.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/{2697.76ca2ac3efef6f3b.js → 8018.a32663f04a6fc5f9.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/8097-92f87bd108322f66.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8215-1661812b6e9ad71f.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8260-19c921a51ca8ec3e.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8440.3a5cf5c85aa76db8.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8519-4599be2249161e68.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8547.b028b90c5c01ace6.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8587-cbe02a953a7f4990.js +1 -0
- package/apps/pwa/out/_next/static/chunks/877-2b977259c4b15655.js +1 -0
- package/apps/pwa/out/_next/static/chunks/9002.e5658224e3dc1b6f.js +24 -0
- package/apps/pwa/out/_next/static/chunks/9019-0a4b40c50c7314fb.js +1 -0
- package/apps/pwa/out/_next/static/chunks/9138.b6e80031afb1d973.js +1 -0
- package/apps/pwa/out/_next/static/chunks/9188-d36e4fc869ddc166.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{4204.a409ab6250c0f6a8.js → 9221.7d22eaf353a2d4e7.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/9230.44f5039e796e4ab4.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{5785-ea8d2c633b6688e3.js → 9279-d28c5b7754d010ae.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/939.336acce73e98482c.js +1 -0
- package/apps/pwa/out/_next/static/chunks/9398-6aed28f0a96d0d6f.js +1 -0
- package/apps/pwa/out/_next/static/chunks/9407.e49124dedf0f5e72.js +1 -0
- package/apps/pwa/out/_next/static/chunks/9610.c07cce4bfcc14ed7.js +1 -0
- package/apps/pwa/out/_next/static/chunks/9667-ce78c2ce91050ff9.js +1 -0
- package/apps/pwa/out/_next/static/chunks/997ce8a5-2ad501927003b41b.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{9311.24c8f5ea793253dd.js → 9989.3694300e5f000b14.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/app/_not-found/page-339fabb3499da0e1.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/approvals/page-bf3634a117322df7.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/autopilot/page-3535a4a69f1fafaa.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/board/page-b9f51447f757fbf2.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/botlab/{page-fa46d4588e8442c2.js → page-2ebb8fd59b9461f9.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/app/bots/page-a2fc4e49a4fa4ba8.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/ceo/page-5a503541353e60a8.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/chat/page-6025101384e361a5.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/consult/page-f4b630cc8b5273cd.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/control/page-a645f00a06483e9a.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/decisions/page-61ac22cbab1ee4ec.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/design-check/page-e9bab7413b028b28.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/editor/page-c992eafe028b642e.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/exec/page-e547e6ce55f1fb33.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/field/page-d27e1b9850fd54bf.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/healthz/route-339fabb3499da0e1.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/inside/page-805ac2e137b7a121.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/intake/page-0fec29c7ba01894b.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/layout-339a07410cd6f36b.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/live/{page-ced0bcfc6542b3fc.js → page-349f2752d8cd37ad.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/app/live-run/page-d5c6dcf31c25cecc.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/loops/page-2fd93ed8c9f16580.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/market/page-9b564dbff0fefc35.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/missions/[id]/page-62f4475d3c38fb9b.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/morning/page-814ba51385225776.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/not-found-397d479626e5a459.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/observatory/page-af1bba4e3251b728.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/ops/checklist/page-3ad3be5e7d3fdce9.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/ops/release/page-f219ccdbc0bf27df.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/ops/seats/page-4da93ad35d4a8d28.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/outputs/page-456666766e5ce6fc.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/page-7404e377e8adb8c5.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/reflection/page-14456240ed2a36ad.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/scheduler/page-3a658d5fa6d16a25.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/sessions/page-0157de6e85f8bb6b.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/settings/devices/{page-cb249e81ed339318.js → page-0a07363b130182a1.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/app/settings/page-841d73d4ac44ed49.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/setup/done/page-6f43a3d1146e6377.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/setup/layout-339fabb3499da0e1.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/setup/page-521ee23ac8c0abfa.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/share/page-a9992ee285efaa83.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/showroom/page-3d48e85fa89ec04f.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/tasks/page-d2ced71132fac9b2.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/term/page-f08358bdf251adb9.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/today/page-233c71cd5f68f0d7.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/trace/page-70151d78de2f375e.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/vault/page-dcac33a3e2cb72c0.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-149dc1caba411bb9.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/workflows/page-0448145ccd5c45c1.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/workspace/page-9cb0c444903da65d.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/worktrees/page-17e504c396e0e389.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{6def8a8e.c81f9ca41028eccf.js → b313b242.cb1265eea908db61.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/{e87d89b9.2e71c0ae475d28a1.js → e5012ffe.f727e23c231f4342.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/ea695e3c-1f1d70d740cf3031.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{e117f801.e92bf10242653497.js → ebc7d829.264a0bcb6c750b50.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/framework-906af9bd029e166c.js +1 -0
- package/apps/pwa/out/_next/static/chunks/main-a24847f9f684d469.js +1 -0
- package/apps/pwa/out/_next/static/chunks/main-app-7bdcd8aa7c8397d3.js +1 -0
- package/apps/pwa/out/_next/static/chunks/pages/_app-6ba46a5066fc226d.js +1 -0
- package/apps/pwa/out/_next/static/chunks/pages/_error-a8dc6d07591f2a25.js +1 -0
- package/apps/pwa/out/_next/static/chunks/webpack-f13df28c15c55eee.js +1 -0
- package/apps/pwa/out/_next/static/css/{72becfd42807b50d.css → 3f5fc6f96e2cf7b2.css} +1 -1
- 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/ceo/index.html +1 -1
- package/apps/pwa/out/ceo/index.txt +23 -23
- 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/decisions/index.html +1 -1
- package/apps/pwa/out/decisions/index.txt +22 -22
- 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 -1
- package/apps/pwa/out/inside/index.txt +22 -22
- 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/live-run/index.html +1 -1
- package/apps/pwa/out/live-run/index.txt +23 -23
- package/apps/pwa/out/loops/index.html +1 -1
- package/apps/pwa/out/loops/index.txt +22 -22
- 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 -1
- package/apps/pwa/out/outputs/index.txt +22 -22
- 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 -23
- 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 -23
- package/apps/pwa/out/worktrees/index.html +1 -1
- package/apps/pwa/out/worktrees/index.txt +23 -23
- package/bin/elanous.mjs +7 -3
- package/graphs/context/nightly-condense.yaml +1 -0
- package/graphs/intake/intake-daily.yaml +8 -1
- package/graphs/intake/recipes.yaml +5 -0
- package/graphs/lecture/lecture-note.yaml +2 -2
- package/graphs/ops/harness-gc.yaml +1 -0
- package/graphs/release/recipes.yaml +3 -0
- package/graphs/release/release-loop.yaml +15 -7
- package/graphs/units/recipes.yaml +3 -0
- package/graphs/units/release-gate-recheck.yaml +15 -0
- package/package.json +2 -1
- package/plugins/agent-team/agents/research.md +1 -0
- package/scripts/check-native-tool-wiring.ts +3 -2
- package/scripts/ci-android-unit-tests.ts +16 -0
- package/scripts/ci-typecheck-changed.ts +40 -11
- package/scripts/coord-channel-watch.sh +45 -19
- package/scripts/coord-role-pack.ts +222 -0
- package/scripts/cron-run.ts +96 -3
- package/scripts/detect-test-interference.ts +38 -5
- package/scripts/gate-pr-cache.ts +65 -0
- package/scripts/gh-surface/capture.ts +126 -0
- package/scripts/gh-surface/gh +40 -0
- package/scripts/import-graph-scc.ts +38 -0
- package/scripts/install.ps1 +19 -0
- package/scripts/intake-social.ts +181 -0
- package/scripts/lecture-note/node.ts +71 -4
- package/scripts/lib/android-toolchain.ts +32 -0
- package/scripts/lib/deterministic-env.ts +62 -0
- package/scripts/lib/gate-test-env.ts +19 -0
- package/scripts/lib/morning-report-options.ts +41 -0
- package/scripts/measure-goal-grounding-corpus.ts +2 -1
- package/scripts/pr-land-extra-remote-gates.ts +49 -0
- package/scripts/ratchets/test-interference-patterns.allowlist.txt +257 -0
- package/scripts/ratchets/test-interference-patterns.ts +367 -0
- package/scripts/release-loop/cut-branch.ts +4 -3
- package/scripts/release-loop/export-check-node.ts +0 -1
- package/scripts/release-loop/fixtures/warm-failure-assertion/sample.junit.xml +8 -0
- package/scripts/release-loop/fixtures/warm-job-029/sample.json +1 -0
- package/scripts/release-loop/fixtures/warm-job-029/sample.junit.xml +10 -0
- package/scripts/release-loop/gate-batch-safe.ts +23 -0
- package/scripts/release-loop/gate-closure.ts +12 -8
- package/scripts/release-loop/gate-diff.ts +1 -1
- package/scripts/release-loop/gate-history.ts +422 -0
- package/scripts/release-loop/gate-host-mirror.ts +66 -0
- package/scripts/release-loop/gate-node.ts +806 -94
- package/scripts/release-loop/gate-partial.ts +106 -9
- package/scripts/release-loop/gate-pr-cache.ts +66 -0
- package/scripts/release-loop/gate-prewarm-plan.ts +66 -0
- package/scripts/release-loop/gate-r2-verdict.ts +189 -0
- package/scripts/release-loop/gate-recheck-plan-node.ts +52 -0
- package/scripts/release-loop/gate-triage-node.ts +190 -0
- package/scripts/release-loop/gate-warm-artifacts.ts +253 -0
- package/scripts/release-loop/import-graph-scc-run.ts +54 -0
- package/scripts/release-loop/import-graph-scc.ts +215 -0
- package/scripts/release-loop/node-verdict.ts +2 -0
- package/scripts/release-loop/probe-pod-host-dirs-live.ts +113 -0
- package/scripts/release-loop/resume-release.ts +33 -4
- package/scripts/release-loop/resume.ts +13 -5
- package/scripts/release-loop/spawn-lane.ts +51 -0
- package/scripts/release-loop/tui-node-checks.ts +23 -0
- package/scripts/release-loop/tui-sim-node.ts +3 -2
- package/scripts/release-loop/unattended-release.ts +16 -0
- package/scripts/release-loop/version-node.ts +62 -4
- package/scripts/test-deterministic.ts +46 -73
- package/scripts/train-reach-grouping.ts +48 -0
- package/scripts/tsc-incremental-cache.ts +86 -0
- package/scripts/tsc-incremental-diagnostics.ts +76 -0
- package/scripts/tsc-main-safety-net.ts +2 -2
- package/scripts/usage-rollup.ts +11 -3
- package/src/acp/client.ts +4 -1
- package/src/acp/core-turn-bridge.ts +145 -24
- package/src/acp/elanous-extensions.ts +2 -0
- package/src/acp/server.ts +2 -0
- package/src/ad-pipeline/run.ts +4 -2
- package/src/agent/ref-grounding.ts +18 -0
- package/src/agent/runner.ts +169 -3
- package/src/agent/subagent-callable.ts +3 -2
- package/src/agent-mission/review-loop.ts +6 -3
- package/src/agent-substrate/acp-implementer.ts +14 -2
- package/src/agent-substrate/pr-reviewer.ts +41 -21
- package/src/agent-substrate/self-review-cli.ts +30 -4
- package/src/autopilot/pr-manager.ts +62 -7
- package/src/briefing/brief-items.ts +24 -22
- package/src/budget/pty-usage-reemit.ts +7 -0
- package/src/budget/run-usage-rollup.ts +9 -0
- package/src/budget/usage-daily-store.ts +98 -0
- package/src/capture/tui-self-report.ts +37 -4
- package/src/chat/chat-cli.ts +10 -2
- package/src/chat/index.ts +107 -20
- package/src/chat/input-control-key.ts +5 -3
- package/src/chat/pickers/modal-runtime.ts +1 -0
- package/src/chat/pickers/modals.ts +3 -1
- package/src/chat/tool-interrupt-behavior.ts +38 -0
- package/src/chat/tool-render/dispatch.ts +5 -1
- package/src/chat/turn-typeahead.ts +191 -29
- package/src/cli/__fixtures__/agent-help-before/agent.txt +4 -2
- package/src/cli/agent-cli.ts +41 -13
- package/src/cli/config-audit.ts +123 -0
- package/src/cli/dashboard-name-flag.ts +48 -0
- package/src/cli/decisions-cli.ts +80 -6
- package/src/cli/doctor-cli.ts +80 -0
- package/src/cli/log-event-names.ts +19 -0
- package/src/cli/mcp-login.ts +21 -5
- package/src/cli/msg-cli.ts +133 -2
- package/src/cli/pr-cli.ts +546 -112
- package/src/cli/pr-land-heavy-remote.ts +233 -0
- package/src/cli/pr-land-overlap-evidence.ts +167 -14
- package/src/cli/pr-land-pod-shadow-job.ts +83 -0
- package/src/cli/pr-land-pod-shadow.ts +16 -3
- package/src/cli/pr-land-virtual-rebase.ts +108 -0
- package/src/cli/pty-takeover-cli.ts +125 -16
- package/src/cli/release-cli.ts +122 -14
- package/src/cli/remote-resolve.ts +2 -1
- package/src/cli/seat-cli.ts +164 -19
- package/src/cli/self-update.ts +5 -2
- package/src/cli/tasks-cli.ts +105 -21
- package/src/cli/usage-cli.ts +146 -12
- package/src/cli/usage-daily-cli.ts +84 -0
- package/src/context-bus/context-first.ts +13 -0
- package/src/context-bus/context-now.ts +95 -7
- package/src/context-bus/ops-events.ts +75 -0
- package/src/control-plane/lease-holder.ts +12 -8
- package/src/control-plane/ledger.ts +163 -4
- package/src/control-plane/server.ts +91 -11
- package/src/core-turn/auth-rejected-notice.ts +41 -0
- package/src/core-turn/run-core-turn.ts +14 -2
- package/src/core-turn/run-goal-loop.ts +239 -4
- package/src/core-turn/seat-turn-cap.ts +79 -0
- package/src/core-turn/short-question.ts +78 -13
- package/src/core-turn/types.ts +10 -0
- package/src/dashboard/acp-active-model.ts +40 -0
- package/src/dashboard/acp-boot.ts +3 -0
- package/src/dashboard/auto-compact-runtime.ts +2 -0
- package/src/dashboard/boot-banner.ts +80 -0
- package/src/dashboard/dashboard-status-lines.ts +11 -0
- package/src/dashboard/detail-viewer-runtime.ts +15 -2
- package/src/dashboard/event-loop-stall-monitor.ts +4 -0
- package/src/dashboard/goal-loop-thinking.ts +16 -0
- package/src/dashboard/hitl-boot.ts +9 -4
- package/src/dashboard/index.ts +448 -998
- package/src/dashboard/input/chat-main-entry-runtime.ts +2 -0
- package/src/dashboard/input/chat-main-log-actions.ts +4 -0
- package/src/dashboard/input/chat-main-log-command.ts +12 -1
- package/src/dashboard/input/chat-main-plain-turn-runtime.ts +176 -4
- package/src/dashboard/input/chat-main-session.ts +14 -3
- package/src/dashboard/input/chat-main-slash-command.ts +7 -0
- package/src/dashboard/input/chat-main-turn.ts +14 -4
- package/src/dashboard/input/compact-prepass-recovery.ts +130 -0
- package/src/dashboard/input/dashboard-chord-actions.ts +10 -1
- package/src/dashboard/input/dashboard-chord-runtime.ts +2 -0
- package/src/dashboard/input/external-input-host.ts +71 -0
- package/src/dashboard/input/internal-turn.ts +261 -0
- package/src/dashboard/input/log-fold-binding.ts +18 -0
- package/src/dashboard/input/mouse-wiring.ts +17 -4
- package/src/dashboard/input/seat-autowake.ts +318 -0
- package/src/dashboard/input/turn-steer-bridge.ts +164 -0
- package/src/dashboard/log-click-runtime.ts +5 -3
- package/src/dashboard/loop-scheduler.ts +72 -0
- package/src/dashboard/running-build-status.ts +74 -0
- package/src/dashboard/seat-boot-preamble.ts +131 -0
- package/src/dashboard/seat-local-instructions.ts +305 -0
- package/src/dashboard/skill-runtime.ts +2 -0
- package/src/dashboard/slash-runtime/dashboard-handlers.ts +220 -1203
- package/src/dashboard/slash-runtime/help-from-registry.ts +2 -1
- package/src/dashboard/slash-runtime/index.ts +13 -0
- package/src/dashboard/slash-runtime/model-choices.ts +35 -0
- package/src/dashboard/term-slash-runtime.ts +15 -0
- package/src/dashboard/turn-busy-teardown.ts +50 -0
- package/src/dashboard/turn-preamble.ts +30 -2
- package/src/dashboard/turn-session-layers.ts +176 -0
- package/src/dashboard/turn-stream-formatter.ts +14 -6
- package/src/dashboard/turn-stream-presentation-applier.ts +8 -0
- package/src/decisions/decision-ledger.ts +45 -4
- package/src/discord-self-message.ts +4 -4
- package/src/domains/release-tool.ts +26 -10
- package/src/domains/surface-events.ts +4 -1
- package/src/domains/watch-default-scheduler.ts +8 -9
- package/src/field-note/transcribe.ts +17 -0
- package/src/fold-stack.ts +24 -1
- package/src/git-fs/dirty.ts +32 -4
- package/src/git-fs/index.ts +43 -1
- package/src/github/remote-call.ts +81 -0
- package/src/goals/registry.ts +46 -6
- package/src/goals/types.ts +7 -1
- package/src/graph-runner/runner.ts +2 -0
- package/src/grok/credential.ts +26 -0
- package/src/harness/harness-clean.ts +2 -1
- package/src/harness/harness-cli-command.ts +52 -5
- package/src/harness/harness-gc.ts +34 -6
- package/src/harness/harness-incidents.ts +57 -20
- package/src/harness/harness-pod-dispatch.ts +87 -10
- package/src/harness/harness-queue.ts +53 -4
- package/src/harness/harness-stop.ts +4 -3
- package/src/harness/harness-substrate-default.ts +78 -7
- package/src/harness/harness-worktree-auto.ts +2 -1
- package/src/harness/harness-worktrees.ts +3 -2
- package/src/hooks/dispatch.ts +2 -1
- package/src/index.ts +166 -26
- package/src/input/external-input-queue.ts +251 -0
- package/src/intake-plane/slash.ts +14 -3
- package/src/interactive-terminal-modal.ts +13 -0
- package/src/keybindings.ts +4 -1
- package/src/llm/route-decision.ts +25 -0
- package/src/llm/tool-loop-steered-rejection.ts +33 -0
- package/src/llm-stream-retry-display.ts +59 -0
- package/src/llm.ts +391 -74
- package/src/log-entry.ts +3 -3
- package/src/log-pane/search.ts +29 -4
- package/src/loops/agent-reply.ts +256 -0
- package/src/loops/budget.ts +37 -7
- package/src/loops/consensus.ts +348 -0
- package/src/loops/loop-cli.ts +3 -2
- package/src/loops/msg-address.ts +57 -0
- package/src/loops/msg-wake.ts +484 -0
- package/src/loops/observe.ts +19 -3
- package/src/loops/orchestrator/inbox.ts +60 -3
- package/src/loops/orchestrator/tick.ts +80 -6
- package/src/loops/orchestrator/traffic.ts +64 -1
- package/src/loops/registry.ts +72 -4
- package/src/market/signed-index.ts +14 -0
- package/src/mcp/mcp-oauth.ts +54 -5
- package/src/memory.ts +20 -5
- package/src/models/prompts.ts +28 -0
- package/src/msg/msg-sse-client.ts +223 -0
- package/src/msg/msg-store.ts +86 -2
- package/src/mss/logging/log-store.ts +225 -1
- package/src/native-tool-catalog.ts +125 -0
- package/src/nexus/DAEMON-THIN-inventory-2026-10-15.md +122 -0
- package/src/nexus/api/http-server.ts +59 -15
- package/src/nexus/api/loop-resources.ts +19 -3
- package/src/nexus/api/ops-api.ts +13 -0
- package/src/nexus/api/project-autopsy.ts +127 -0
- package/src/nexus/api/terminals.ts +3 -0
- package/src/nexus/api/workflow-approvals.ts +2 -0
- package/src/nexus/daemon-thin-inventory.md +37 -0
- package/src/nexus/index.ts +70 -0
- package/src/nexus/onboarding/first-boot-wizard.ts +56 -2
- package/src/nexus/state/state.ts +1 -0
- package/src/oauth/codex-account-store.ts +15 -3
- package/src/oauth/codex-billing-route.ts +31 -0
- package/src/oauth/store.ts +32 -7
- package/src/onboarding/first-run.ts +28 -3
- package/src/ops/overview-cache.ts +16 -4
- package/src/ops/overview-collect.ts +19 -2
- package/src/ops/resources.ts +82 -0
- package/src/panes/log-pane.ts +67 -8
- package/src/persona/presets.ts +44 -0
- package/src/plugins/maker/connector-maker.ts +41 -0
- package/src/plugins/maker/skill-maker.ts +42 -0
- package/src/plugins/maker/wizard-generate.ts +6 -4
- package/src/pr-tool/census.ts +288 -0
- package/src/preview/terminal.ts +14 -1
- package/src/prompt-cache/types.ts +2 -0
- package/src/prompt-enhance/enhance.ts +24 -8
- package/src/prompt-library/chat-conciseness.ts +13 -0
- package/src/prompt-library/universal-preamble.ts +283 -61
- package/src/pty-shell/pty-control-ipc.ts +4 -1
- package/src/pty-shell/pty-manifest.ts +77 -5
- package/src/pty-shell/registry.ts +19 -2
- package/src/pty-shell/tui-run-state.ts +253 -0
- package/src/release-loop/gate-host-reservation.ts +97 -0
- package/src/release-loop/landing-freeze.ts +5 -0
- package/src/release-loop/light-rc.ts +32 -4
- package/src/release-loop/placement.ts +92 -1
- package/src/release-loop/rehearsal-shard-plan.ts +149 -0
- package/src/release-loop/rehearsal.ts +73 -17
- package/src/render.ts +5 -1
- package/src/repl/index.ts +20 -2
- package/src/seat-loop/seat-knowhow.ts +282 -0
- package/src/seat-loop/seat-loop.ts +41 -2
- package/src/seat-loop/seat-report.ts +42 -2
- package/src/seat-loop/traffic-signal.ts +3 -0
- package/src/self-dev/ask-launch-flow.ts +24 -3
- package/src/self-dev/decompose-compose-graph.ts +28 -27
- package/src/self-dev/decompose-proposal.ts +53 -38
- package/src/self-dev/decompose.ts +17 -0
- package/src/self-dev/dev-pipeline.ts +31 -2
- package/src/self-dev/draft-residue.ts +24 -9
- package/src/self-dev/draft-sweep.ts +59 -4
- package/src/self-dev/external-call-zero.ts +77 -0
- package/src/self-dev/launch-preflight-text.ts +6 -0
- package/src/self-dev/launch-preflight.ts +25 -3
- package/src/self-dev/local-supervisor-judge.ts +185 -0
- package/src/self-dev/run-supervisor.ts +300 -24
- package/src/self-dev/run-types.ts +20 -0
- package/src/self-dev/shard-aggregate.ts +15 -2
- package/src/self-dev/shard-plan.ts +47 -0
- package/src/self-dev/shard-run.ts +135 -12
- package/src/self-dev/spawn-lane-files.ts +19 -0
- package/src/self-health/signatures.ts +132 -0
- package/src/self-implement/app-api-budget.ts +51 -11
- package/src/self-implement/config-gate.ts +2 -1
- package/src/self-implement/doctor-visit.ts +118 -0
- package/src/self-implement/expose-gate.ts +2 -1
- package/src/self-implement/gate-artifacts.ts +405 -0
- package/src/self-implement/gate-cli.ts +212 -18
- package/src/self-implement/gate-remote.ts +110 -25
- package/src/self-implement/gate-scenario.ts +85 -0
- package/src/self-implement/goal-author-decompose.ts +80 -16
- package/src/self-implement/goal-author.ts +270 -76
- package/src/self-implement/goal-authoring-grounding.ts +1 -1
- package/src/self-implement/goal-file-name.ts +65 -0
- package/src/self-implement/graph-authority.ts +38 -6
- package/src/self-implement/graph-overlay-condition.ts +92 -1
- package/src/self-implement/ground-goal.ts +2 -1
- package/src/self-implement/heal-triage.ts +79 -0
- package/src/self-implement/host-regate.ts +74 -2
- package/src/self-implement/orchestrator.ts +14 -123
- package/src/self-implement/pr-title.ts +123 -0
- package/src/self-implement/review-mustfix-class.ts +115 -0
- package/src/self-implement/run-checkpoint.ts +235 -0
- package/src/self-implement/run-ledger.ts +266 -17
- package/src/self-implement/run-stop.ts +4 -3
- package/src/self-implement/run-ttl.ts +28 -4
- package/src/self-implement/running-runs.ts +10 -6
- package/src/self-implement/seams.ts +2 -0
- package/src/self-implement/self-implement-runtime.ts +32 -0
- package/src/self-implement/shadow-stage.ts +7 -6
- package/src/self-implement/stop-autoheal.ts +2 -1
- package/src/self-implement/train-gate-remote.ts +37 -8
- package/src/self-implement/train-reach-grouping.ts +157 -0
- package/src/self-implement/train-scenario-layers.ts +133 -0
- package/src/self-implement/uncommitted-work.ts +2 -0
- package/src/session/pending-input.ts +81 -11
- package/src/session/session-start.ts +224 -0
- package/src/session-runtime/index.ts +7 -1
- package/src/session-runtime/parallel-dispatch.ts +22 -5
- package/src/skills/tools/dev-harness.ts +6 -4
- package/src/skills/tools/ops-ledger.ts +707 -0
- package/src/skills/tools/persistent-grounding.ts +47 -7
- package/src/skills/tools/shell.ts +117 -1
- package/src/status/bar.ts +32 -2
- package/src/status/status-provider-info.ts +58 -0
- package/src/steward/resync-tick.ts +114 -23
- package/src/steward/ta-repair-event-collect.ts +158 -0
- package/src/task-agent/card-evidence.ts +25 -1
- package/src/task-agent/green-sweep.ts +8 -3
- package/src/task-agent/judge.ts +76 -0
- package/src/task-agent/land-queue.ts +79 -0
- package/src/task-agent/live-moves.ts +30 -9
- package/src/task-agent/postland-card.ts +5 -0
- package/src/task-agent/prelaunch-already-done.ts +98 -0
- package/src/task-agent/real-launch-guard.ts +37 -0
- package/src/task-agent/rejudge-on-head.ts +93 -13
- package/src/task-agent/remote-rejudge-bind.ts +62 -13
- package/src/task-agent/repair-cycle.ts +58 -7
- package/src/task-agent/repair-worker.ts +7 -0
- package/src/task-agent/run-identity.ts +200 -0
- package/src/task-agent/shadow.ts +50 -3
- package/src/task-agent/task-hand.ts +158 -5
- package/src/task-agent/train-landing.ts +77 -0
- package/src/task-agent/work-order.ts +104 -0
- package/src/task-orchestrator/surfaces/kubectl-transient-retry.ts +51 -0
- package/src/task-orchestrator/surfaces/pod-command-job.ts +138 -22
- package/src/task-orchestrator/surfaces/pod-failure-reason.ts +88 -19
- package/src/task-orchestrator/surfaces/pod-host-acp-review.ts +2 -1
- package/src/task-orchestrator/surfaces/pod-image-source.ts +2 -1
- package/src/task-orchestrator/surfaces/pod-install-slots.ts +122 -15
- package/src/task-orchestrator/surfaces/pod-lease.ts +20 -6
- package/src/task-orchestrator/surfaces/pod-lifecycle-stages.ts +169 -0
- package/src/task-orchestrator/surfaces/pod-mirror-seed.ts +103 -0
- package/src/task-orchestrator/surfaces/pod-result-marker-wait.ts +33 -0
- package/src/task-orchestrator/surfaces/pod-reuse-cleanup.ts +63 -0
- package/src/task-orchestrator/surfaces/pod-source-receive.ts +19 -3
- package/src/task-orchestrator/surfaces/pod-warm-switch.ts +141 -0
- package/src/task-orchestrator/surfaces/pod-warm-ta-shadow.ts +85 -0
- package/src/task-orchestrator/surfaces/pod-warm-worker-protocol.ts +153 -0
- package/src/task-orchestrator/surfaces/pod-warm-worker-runtime.ts +208 -0
- package/src/task-orchestrator/surfaces/self-implement-pod.ts +237 -46
- package/src/telegram.ts +2 -4
- package/src/terminal/session-registry.ts +6 -0
- package/src/thinking-line.ts +12 -3
- package/src/tool-runtime/index.ts +4 -0
- package/src/tool-runtime/ops-ledger-runtimes.ts +84 -0
- package/src/tool-runtime/ref-consult-runtime.ts +17 -2
- package/src/tool-runtime/run-shell-runtime.ts +4 -1
- package/src/tool-runtime/self-cognition-runtimes.ts +5 -1
- package/src/tui/input/pickers.ts +732 -0
- package/src/tui/slash/mission.ts +492 -0
- package/src/tui/slash/term.ts +877 -0
- package/src/tui-client/dashboard-session.ts +9 -0
- package/src/tui.ts +53 -0
- package/src/user-config/gemini-server-tools.ts +9 -0
- package/src/user-config.ts +106 -21
- package/src/util/spawn-sync-output.ts +7 -0
- package/src/ux-sim/fake-bin.ts +154 -0
- package/src/ux-sim/fake-clock.ts +36 -0
- package/src/ux-sim/fake-llm.ts +29 -0
- package/src/ux-sim/headless-tui.ts +72 -0
- package/src/ux-sim/in-process-cli.ts +176 -0
- package/src/ux-sim/temp-git-remote.ts +82 -0
- package/src/version/packed-revision.json +1 -1
- package/src/video-pipeline/recipes/vlog.ts +25 -7
- package/apps/pwa/out/_next/static/chunks/1027.a0f04663d24c2779.js +0 -1
- package/apps/pwa/out/_next/static/chunks/1038.676007ae505822e7.js +0 -1
- package/apps/pwa/out/_next/static/chunks/1113.a37eadf7f740d955.js +0 -1
- package/apps/pwa/out/_next/static/chunks/112-fa7c526c20ce1405.js +0 -1
- package/apps/pwa/out/_next/static/chunks/1144.5fa1fa1d48dbcd12.js +0 -36
- package/apps/pwa/out/_next/static/chunks/119b405e.8fdd0e44d1ff37aa.js +0 -1
- package/apps/pwa/out/_next/static/chunks/1296.04560d98e73fbf51.js +0 -1
- package/apps/pwa/out/_next/static/chunks/1314-f604ba013ec535b0.js +0 -1
- package/apps/pwa/out/_next/static/chunks/1454-29d1d773d5996a49.js +0 -1
- package/apps/pwa/out/_next/static/chunks/1464.f3209af0d8ae4ff2.js +0 -1
- package/apps/pwa/out/_next/static/chunks/1729-d73dd25e564679d4.js +0 -1
- package/apps/pwa/out/_next/static/chunks/1843.5924c24295243261.js +0 -27
- package/apps/pwa/out/_next/static/chunks/1987.e28149724b92918b.js +0 -1
- package/apps/pwa/out/_next/static/chunks/2066-5ca18ffa5a4be68b.js +0 -1
- package/apps/pwa/out/_next/static/chunks/2240.d10a66695155fd93.js +0 -1
- package/apps/pwa/out/_next/static/chunks/2391.e2cbc98d4abbb41a.js +0 -1
- package/apps/pwa/out/_next/static/chunks/2566-734cb83bbd405886.js +0 -1
- package/apps/pwa/out/_next/static/chunks/275.0e6bad414729bfa0.js +0 -32
- package/apps/pwa/out/_next/static/chunks/2803-33bdae771855a8d1.js +0 -1
- package/apps/pwa/out/_next/static/chunks/3259-86f3be56e43eaf6a.js +0 -1
- package/apps/pwa/out/_next/static/chunks/3280-e177c33bfbdcfb0a.js +0 -1
- package/apps/pwa/out/_next/static/chunks/3294-2b6a6d45a46a6c1c.js +0 -1
- package/apps/pwa/out/_next/static/chunks/3522.758840fc5e7fe630.js +0 -287
- package/apps/pwa/out/_next/static/chunks/3525-a7c989c1a661e880.js +0 -1
- package/apps/pwa/out/_next/static/chunks/3694.b1a66387756458c0.js +0 -1
- package/apps/pwa/out/_next/static/chunks/370.124f9e678a76fc01.js +0 -1
- package/apps/pwa/out/_next/static/chunks/3797-9643105335e660fe.js +0 -1
- package/apps/pwa/out/_next/static/chunks/4084.15ecaf4240bd9e77.js +0 -286
- package/apps/pwa/out/_next/static/chunks/4089-b3382b8843114eee.js +0 -1
- package/apps/pwa/out/_next/static/chunks/4293.928a8d573c16aab7.js +0 -1
- package/apps/pwa/out/_next/static/chunks/4402.f9238a3b18a7bd43.js +0 -1
- package/apps/pwa/out/_next/static/chunks/4490-9b090b0f9427f902.js +0 -1
- package/apps/pwa/out/_next/static/chunks/4548.13502d0ca3b4f862.js +0 -8
- package/apps/pwa/out/_next/static/chunks/4565-67e4c620597965c8.js +0 -1
- package/apps/pwa/out/_next/static/chunks/4599-548bc96cda44a5a7.js +0 -1
- package/apps/pwa/out/_next/static/chunks/4625.206574e33a9e7ae8.js +0 -104
- package/apps/pwa/out/_next/static/chunks/4862-392c9a71f0d8dfb4.js +0 -1
- package/apps/pwa/out/_next/static/chunks/5054.2906d1b02542edc5.js +0 -149
- package/apps/pwa/out/_next/static/chunks/5102-c822bbbee5a022a4.js +0 -1
- package/apps/pwa/out/_next/static/chunks/5194-8c93f2e7e4b6f717.js +0 -1
- package/apps/pwa/out/_next/static/chunks/5305-bacd7eca0b9a5848.js +0 -1
- package/apps/pwa/out/_next/static/chunks/5311.9071ee3f44fd7ff5.js +0 -1
- package/apps/pwa/out/_next/static/chunks/5369.9f34353442daa421.js +0 -1
- package/apps/pwa/out/_next/static/chunks/589-49d730cb8138b397.js +0 -1
- package/apps/pwa/out/_next/static/chunks/5904-264a6412ae3c9028.js +0 -1
- package/apps/pwa/out/_next/static/chunks/5980.728531d5c566535c.js +0 -1
- package/apps/pwa/out/_next/static/chunks/599-56f2c0a5cc4a7295.js +0 -1
- package/apps/pwa/out/_next/static/chunks/6011.f525002e21bef0ac.js +0 -23
- package/apps/pwa/out/_next/static/chunks/6132.4381ab93683f1acf.js +0 -1
- package/apps/pwa/out/_next/static/chunks/6149.2e698635e454d8f6.js +0 -1
- package/apps/pwa/out/_next/static/chunks/6356-0afafc4230cf9767.js +0 -1
- package/apps/pwa/out/_next/static/chunks/6406.64756073f7df35b8.js +0 -77
- package/apps/pwa/out/_next/static/chunks/6479-16e62aedafa0e310.js +0 -1
- package/apps/pwa/out/_next/static/chunks/6599.b5246b46a2453329.js +0 -64
- package/apps/pwa/out/_next/static/chunks/6610.5c26eec011565acb.js +0 -1
- package/apps/pwa/out/_next/static/chunks/666.37d18474edc1c552.js +0 -2
- package/apps/pwa/out/_next/static/chunks/6904.a0b5b1ed4f2d2c20.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7247-1f4aba94aba50d9f.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7274-e71a7c5b7760cd02.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7290.1fcaeef3adb5d0d4.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7477-2c64e42760f82f33.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7505-47002b76ff1aef6c.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7600-11884ca4da68e5d9.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7607.40d8bb3689697ccb.js +0 -62
- package/apps/pwa/out/_next/static/chunks/7763.f51fcc19ca1414ec.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7785.846140c859b1adf6.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7807-a0fdac6393e0bf36.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7837-20a63b4b7e9342b1.js +0 -1
- package/apps/pwa/out/_next/static/chunks/800.7815414cf280545d.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8085-1e5fce59500a2cc2.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8100.415f2105faa63e97.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8290.701aa42ed13aa767.js +0 -226
- package/apps/pwa/out/_next/static/chunks/83a80514-b897b64df43ce108.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8444.d9c74214a3145a43.js +0 -93
- package/apps/pwa/out/_next/static/chunks/8569.98c915534928c7f9.js +0 -24
- package/apps/pwa/out/_next/static/chunks/8591.b1c7f876e5ec7cfb.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8715-f63756021d3ab989.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8879.776c2ec7732aa114.js +0 -115
- package/apps/pwa/out/_next/static/chunks/8881.ddca15b3c82c490c.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8946.5da5c87f32a2e1a8.js +0 -41
- package/apps/pwa/out/_next/static/chunks/9117.080b9b75be90e14d.js +0 -74
- package/apps/pwa/out/_next/static/chunks/9167.f3ecb28f367d6e69.js +0 -94
- package/apps/pwa/out/_next/static/chunks/9224.66095370ee28c93b.js +0 -1
- package/apps/pwa/out/_next/static/chunks/9238-0682b013c83d6449.js +0 -1
- package/apps/pwa/out/_next/static/chunks/9449.d3ed795da4befb1c.js +0 -1
- package/apps/pwa/out/_next/static/chunks/9638-d268329f2c6f4f8d.js +0 -1
- package/apps/pwa/out/_next/static/chunks/973cbf1b.3bbcf2b41548eca7.js +0 -1
- package/apps/pwa/out/_next/static/chunks/9842-d6644eb53d3dc6bf.js +0 -1
- package/apps/pwa/out/_next/static/chunks/9863.94ca3263e760696e.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/_not-found/page-d9babd8795f396a5.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/approvals/page-5ab1e47978577c5e.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/autopilot/page-24453f6a302816b4.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/board/page-6c131d30bb1cf871.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/bots/page-dc0772b11861af51.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/ceo/page-66ad46ed0279feb9.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/chat/page-5159dc8752c6cd29.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/consult/page-c5a2478861c08b87.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/control/page-f722a9dec084e08b.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/decisions/page-256ffd365d32e100.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/design-check/page-e0de78ae7b99f01c.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/editor/page-cfbdc44b708d9801.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/exec/page-4c741eb760f2f77c.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/field/page-e9ba98f5f1440a21.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/healthz/route-d9babd8795f396a5.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/inside/page-dafc901bb1b72b5f.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/intake/page-2f6f303fa114ec24.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/layout-1634081c5272006c.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/live-run/page-bb1f05cd51c38944.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/loops/page-646b50f63b6fe732.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/market/page-db069b48a59c8c00.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/missions/[id]/page-f736324afa2117c1.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/morning/page-6f131b51193a36f9.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/not-found-435f5e2faf02bc01.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/observatory/page-497e0eedf20e7890.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/ops/checklist/page-a8d28fdf995e16ea.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/ops/release/page-8966452228753c5e.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/ops/seats/page-fd5d18656cb432b6.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/outputs/page-5663779cb1a37609.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/page-66a67eb19ebd976b.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/reflection/page-3b492aa78cf3c4a6.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/scheduler/page-c71267e7681da982.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/sessions/page-a21d1e1797172692.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/settings/page-781cfc5114e097da.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/setup/done/page-478157214db6a023.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/setup/layout-d9babd8795f396a5.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/setup/page-86141f12cf090b7f.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/share/page-7256c73bb1c36751.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/showroom/page-5c738ca7adef3de5.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/tasks/page-0138c8091ec17224.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/term/page-cc2f24f16d85e735.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/today/page-979d318a534e92da.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/trace/page-182d394f7e6e096b.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/vault/page-21050928a697ed7a.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-44b9d807005a9030.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/workflows/page-601fb77340e63c9a.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/workspace/page-75d3fb5d47af0edf.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/worktrees/page-11bf9e5725a72c22.js +0 -1
- package/apps/pwa/out/_next/static/chunks/dcf24383-2f82e35f2d827393.js +0 -1
- package/apps/pwa/out/_next/static/chunks/framework-bf135b997155e90e.js +0 -1
- package/apps/pwa/out/_next/static/chunks/main-5571537543bea91c.js +0 -1
- package/apps/pwa/out/_next/static/chunks/main-app-25c51c7df7f3a442.js +0 -1
- package/apps/pwa/out/_next/static/chunks/pages/_app-e3b2c1f5d82abd65.js +0 -1
- package/apps/pwa/out/_next/static/chunks/pages/_error-083f2e23e9bc3641.js +0 -1
- package/apps/pwa/out/_next/static/chunks/webpack-e94d22b7a028217b.js +0 -1
- package/src/dashboard/bench-slash-runtime.ts +0 -40
- package/src/dashboard/input/search-modal-router.ts +0 -9
- package/src/dashboard/modals/pane-key-router.ts +0 -27
- package/src/dashboard/view-slash-runtime.ts +0 -48
- /package/apps/pwa/out/_next/static/{y1ltt7oCZxVpC6zVPhZ2O → LSXfY0u9QtfDbejY0Ukf_}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9038],{9855:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>m});var a=r(65863),n=r(24815),s=r(76072),l=r(16263),o=r(45695);async function i(){if("undefined"==typeof caches)return null;let e=(await caches.keys()).filter(e=>e.startsWith("elanous-pwa-share-target-")).sort().reverse();return 0===e.length?null:caches.open(e[0])}async function u(e){if(!e)return null;let t=await i();if(!t)return(0,l.cY)("pwa.share.l2.cache-missing",{id:e}),null;let r="/__share/".concat(e,"/manifest.json"),a=await t.match(r);if(!a)return(0,l.cY)("pwa.share.l2.no-manifest",{id:e}),null;let n=await a.json(),s=[];for(let r of n.files){let a=await t.match(r.cacheUrl);if(!a){(0,l.cY)("pwa.share.l2.file-missing",{id:e,cacheUrl:r.cacheUrl});continue}let n=await a.blob();s.push(new File([n],r.filename,{type:r.type||n.type}))}for(let e of(await t.delete(r),n.files))await t.delete(e.cacheUrl);return(0,l.cY)("pwa.share.l2.delivered",{id:e,fileCount:s.length,titleLen:n.title.length,textLen:n.text.length}),{id:n.id,title:n.title,text:n.text,url:n.url,files:s,combinedText:function(e){let t=[];return e.title.trim()&&t.push(e.title.trim()),e.text.trim()&&t.push(e.text.trim()),e.url.trim()&&t.push(e.url.trim()),t.join("\n\n")}(n)}}var c=r(14714),d=r(98233);function h(){var e,t,r;let i=(0,s.useRouter)(),h=(0,s.useSearchParams)(),{config:m}=(0,o.Q)(),[f,p]=(0,n.useState)({phase:"idle"});return(0,n.useEffect)(()=>{var e,t,r;let a=null==h?void 0:h.get("shared");if(a){let e=!1;return(async()=>{p({phase:"level2-loading"});let t=await u(a);if(e)return;if(!t||0===t.files.length){t&&t.combinedText&&(0,c.vn)(t.combinedText),(0,l.cY)("pwa.share.l2.empty",{sharedId:a,hasPayload:!!t}),p({phase:"level2-empty"});let e=setTimeout(()=>i.replace("/chat"),600);return()=>clearTimeout(e)}if(!m.baseUrl)return p({phase:"level2-error",error:"daemon baseUrl not configured"});p({phase:"level2-uploading",total:t.files.length,done:0});let r=[];for(let a=0;a<t.files.length;a+=1){let n=t.files[a],s=await (0,d.v)({baseUrl:m.baseUrl,...m.token?{token:m.token}:{},file:n,filename:n.name});if(e)return;s.ok?r.push(s.meta):(0,l.cY)("pwa.share.l2.upload-failed",{i:a,reason:s.reason}),p(e=>({...e,done:a+1}))}if(0===r.length)return p({phase:"level2-error",error:"all uploads failed"});try{window.sessionStorage.setItem("elanous.pwa.shareAttachments",JSON.stringify(r))}catch(e){}t.combinedText&&(0,c.vn)(t.combinedText),p({phase:"level2-handing-off",total:t.files.length,done:t.files.length});let n=setTimeout(()=>i.replace("/chat?shared=1"),400);return()=>clearTimeout(n)})(),()=>{e=!0}}let n=null!=(e=null==h?void 0:h.get("title"))?e:null,s=null!=(t=null==h?void 0:h.get("text"))?t:null,o=null!=(r=null==h?void 0:h.get("url"))?r:null,f=function(e,t,r){let a=[];return e&&e.trim()&&a.push(e.trim()),t&&t.trim()&&a.push(t.trim()),r&&r.trim()&&a.push(r.trim()),a.join("\n\n")}(n,s,o);(0,l.cY)("pwa.share.l1.received",{hasTitle:!!n,hasText:!!s,hasUrl:!!o,len:f.length}),f.length>0&&(0,c.vn)(f),p({phase:"level1-handing-off",preview:f});let x=setTimeout(()=>i.replace("/chat"),400);return()=>clearTimeout(x)},[h,i,m.baseUrl,m.token]),(0,a.jsxs)("main",{className:"flex h-full flex-col items-center justify-center gap-3 px-6 py-10 text-center",children:[(0,a.jsx)("h1",{className:"text-base font-semibold",children:"\uD83D\uDCE5 공유 받음"}),"level1-handing-off"===f.phase&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("p",{className:"text-xs text-muted-foreground",children:"곧 /chat 으로 이동합니다…"}),f.preview&&(0,a.jsxs)("pre",{className:"max-h-[60vh] max-w-full overflow-auto rounded-md border border-border bg-card p-3 text-left text-[11px] whitespace-pre-wrap break-words",children:[f.preview.slice(0,800),f.preview.length>800?"…":""]})]}),"level2-loading"===f.phase&&(0,a.jsx)("p",{className:"text-xs text-muted-foreground",children:"파일 읽는 중…"}),"level2-uploading"===f.phase&&(0,a.jsxs)("p",{className:"text-xs text-muted-foreground",children:["업로드 중… ",null!=(e=f.done)?e:0," / ",null!=(t=f.total)?t:0]}),"level2-handing-off"===f.phase&&(0,a.jsxs)("p",{className:"text-xs text-muted-foreground",children:[null!=(r=f.done)?r:0," 개 첨부 완료 \xb7 /chat 이동…"]}),"level2-empty"===f.phase&&(0,a.jsx)("p",{className:"text-xs text-muted-foreground",children:"파일이 없어요. /chat 으로 이동합니다…"}),"level2-error"===f.phase&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("p",{className:"text-xs text-rose-500",children:["업로드 실패: ",f.error]}),(0,a.jsx)("a",{href:"/app/chat",className:"text-xs text-primary underline",children:"/chat 으로 이동"})]})]})}function m(){return(0,a.jsx)(n.Suspense,{fallback:(0,a.jsx)("div",{className:"p-6 text-sm text-muted-foreground",children:"loading…"}),children:(0,a.jsx)(h,{})})}},14714:(e,t,r)=>{"use strict";r.d(t,{ht:()=>s,vn:()=>n});let a="elanous.pwa.sharePrefill";function n(e){try{window.sessionStorage.setItem(a,e)}catch(e){}}function s(){try{var e;let t=null!=(e=window.sessionStorage.getItem(a))?e:"";return window.sessionStorage.removeItem(a),t}catch(e){return""}}},33164:(e,t,r)=>{Promise.resolve().then(r.bind(r,9855))},45695:(e,t,r)=>{"use strict";r.d(t,{C:()=>u,DaemonProvider:()=>c,Q:()=>d});var a=r(65863),n=r(24815),s=r(70086),l=r(89469),o=r(31324),i=r(16263);let u=(0,n.createContext)(null);function c(e){let{children:t}=e,r={baseUrl:"",token:"",provider:""},[c,d]=(0,n.useState)(r),[h,m]=(0,n.useState)(""),[f]=(0,n.useState)(()=>new o.ki(r));(0,n.useEffect)(()=>{let e=(0,s.Fp)();d(e),f.updateConfig(e),m((0,l.oD)()),(0,i.cY)("webterm.provider.daemon.init",{baseUrl:e.baseUrl,hasToken:!!e.token})},[f]),(0,n.useEffect)(()=>{let e=e=>{if("elanous.daemon.token"===e.key||"elanous.nexus.baseUrl"===e.key){let t=(0,s.Fp)();f.updateConfig(t),d(t),(0,i.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,i.cY)("webterm.provider.daemon.session-cross-tab",{previous:t||"(empty)",next:e.newValue}),e.newValue))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)},[f]);let p=e=>{d(t=>{let r={...t,...e};return(0,s.Qc)(e),f.updateConfig(r),(0,i.cY)("webterm.provider.daemon.config-update",{keys:Object.keys(e)}),r})},x=e=>{m(e),localStorage.setItem("elanous.daemon.sessionId",e),(0,i.cY)("webterm.provider.daemon.session-set",{sessionId:e})},w=(0,n.useMemo)(()=>({config:c,setConfig:p,client:f,sessionId:h,setSessionId:x}),[c,f,h]);return(0,a.jsx)(u.Provider,{value:w,children:t})}function d(){let e=(0,n.useContext)(u);if(!e)throw Error("useDaemon must be used inside <DaemonProvider>");return e}},76072:(e,t,r)=>{"use strict";var a=r(33912);r.o(a,"useParams")&&r.d(t,{useParams:function(){return a.useParams}}),r.o(a,"usePathname")&&r.d(t,{usePathname:function(){return a.usePathname}}),r.o(a,"useRouter")&&r.d(t,{useRouter:function(){return a.useRouter}}),r.o(a,"useSearchParams")&&r.d(t,{useSearchParams:function(){return a.useSearchParams}})},89469:(e,t,r)=>{"use strict";r.d(t,{Zr:()=>l,f6:()=>n,oD:()=>s});let a="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 s(){let e=function(){let e=new URLSearchParams(window.location.search).get("session");return e?(localStorage.setItem(a,e),e):localStorage.getItem(a)}();if(e)return e;let t=n();return localStorage.setItem(a,t),t}function l(){let e=n();return localStorage.setItem(a,e),e}},98233:(e,t,r)=>{"use strict";r.d(t,{K:()=>s,v:()=>n});var a=r(16263);async function n(e){var t;let r=e.baseUrl.replace(/\/$/,"");if(!r)return{ok:!1,status:0,reason:"baseUrl not configured"};let n=null!=(t=e.filename)?t:e.file instanceof File?e.file.name:"upload.bin";(0,a.cY)("webterm.attach.upload.begin",{filename:n,size:e.file.size,type:e.file.type});let s=new FormData;s.append("file",e.file,n),s.append("filename",n);try{let t=await fetch("".concat(r,"/v1/attachments"),{method:"POST",body:s,...e.token?{headers:{authorization:"Bearer ".concat(e.token)}}:{}});if(!t.ok){let e=await t.text().catch(()=>"");return(0,a.cY)("webterm.attach.upload.error",{status:t.status,detail:e.slice(0,200)}),{ok:!1,status:t.status,reason:e||"HTTP ".concat(t.status)}}let n=await t.json();return(0,a.cY)("webterm.attach.upload.ok",{id:n.id,size:n.size}),{ok:!0,meta:n}}catch(t){let e=String(t instanceof Error?t.message:t);return(0,a.cY)("webterm.attach.upload.exception",{reason:e}),{ok:!1,status:0,reason:e}}}async function s(e,t){return Promise.all(e.map(e=>n({baseUrl:t.baseUrl,...void 0!==t.token?{token:t.token}:{},file:e.file,...void 0!==e.filename?{filename:e.filename}:{}})))}}},e=>{e.O(0,[1324,5290,607,7358],()=>e(e.s=33164)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9549],{793:(e,t,a)=>{"use strict";a.d(t,{X:()=>i});var r=a(24815);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}}},1450:(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"}]},9944:(e,t,a)=>{"use strict";a.d(t,{v:()=>l});var r=a(24815),n=a(16263);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}}},17380:(e,t,a)=>{"use strict";a.d(t,{ShowroomLayout:()=>e$});var r=a(65863),n=a(24815),o=a(82911),l=a(95888),i=a(22910),s=a(13035),d=a(76625),c=a(44873),u=a(61279),m=a(36442),p=a(87313),h=a(21217),b=a(42323),x=a(45497),g=a(99247),f=a(76072),v=a(45695),w=a(86044),k=a(59729);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 P)if(M[a].some(a=>(function(e,t,a){if(D.test(a))return e.includes(a);let r=L.get(a);return r||(r=new RegExp("\\b".concat(a.toLowerCase(),"\\b")),L.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 P=["review","reflect","plan","exec"],M={plan:["계획","기획","설계","구상","아키텍처","디자인","plan","design","architect","spec","roadmap"],exec:["구현","코드","작성","만들어","수정","구축","코딩","implement","code","write","build","create","fix"],review:["리뷰","검토","평가","점검","검사","비판","review","critique","evaluate","check","audit"],reflect:["회고","반성","돌아보","성찰","교훈","되짚","reflect","retrospective","lesson","postmortem"]},D=/[ㄱ-ㆎ가-힣]/,L=new Map,Y="elanous.showroom.roleJudgeBackend";async function R(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 V(e,t){return e.length<=t?e:"".concat(e.slice(0,t-1),"…")}var J=a(16263),W=a(6812),Q=a(26200),Z=a(82963),$=a(83360),X=a(31179),G=a(11347),ee=a(793),et=a(9944);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,P]=(0,n.useState)(null),[M,D]=(0,n.useState)(!1),[L,Y]=(0,n.useState)(!1),R=(0,et.v)(m),_=R.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 P("route rejected \xb7 ".concat(t.reason));P(null),T(!1)},[w,c.id]),J=null!=(t=null==S?void 0:S.messages)?t:[],W=null!=(a=null==S?void 0:S.partial)?a:"",Q=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:()=>Y(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)(Z.A,{className:"size-3","aria-hidden":!0}),K?K.displayName.slice(0,12):"persona"]}),L&&(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:[R.loading&&(0,r.jsx)("p",{className:"px-1.5 py-1 text-[10px] text-zinc-500",children:"loading…"}),R.error&&(0,r.jsxs)("p",{className:"px-1.5 py-1 text-[10px] text-rose-600",children:["error: ",R.error]}),!R.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}),Y(!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),Y(!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:()=>D(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)($.A,{className:"size-3","aria-hidden":!0}),null!=(d=c.roleHint)?d:"role"]}),M&&(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),D(!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),D(!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"})]})]}),Q&&(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:Q||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),P(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=V(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=V(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===J.length&&!Q&&(0,r.jsx)("p",{className:"text-xs text-zinc-500",children:I?"대기 중 \xb7 broadcast 또는 mention 으로 시작":"DM session 준비 중…"}),J.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)),Q&&(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:W||"..."})]}),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(36908),el=a(44173),ei=a(37286),es=a(72130),ed=a(62504),ec=a(35099),eu=a(26039),em=a(5708),ep=a(86812),eh=a(90337),eb=a(36054),ex=a(86615),eg=a(72940),ef=a(22527),ev=a(98233);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,J.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,J.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,J.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,J.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(22169);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:P,onRemoveClipboardContext:M,videoContexts:D,onAddVideoContext:L,onRemoveVideoContext:Y,audioContexts:R,onAddAudioContext:U,onRemoveAudioContext:F,onUpdateAudioTranscript:K,listTerminals:O,fetchTerminalScrollback:B,disabled:q=!1}=e,[H,V]=(0,n.useState)(""),[J,W]=(0,n.useState)(!1),Q=(0,n.useRef)(null),[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);$(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=Q.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=Q.current;t&&ez&&(V(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=Z.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()}),$(""),ee(!1))},[Z,v]),eA=(0,n.useCallback)(async()=>{let e=H.trim();if(e&&!J&&!q){W(!0);try{await m(e),V("")}finally{W(!1)}}},[H,J,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=Q.current,n="@".concat(e," ");if(!r)return void V(e=>"".concat(e).concat(n));let o=null!=(t=r.selectionStart)?t:H.length,l=null!=(a=r.selectionEnd)?a:H.length;V(H.slice(0,o)+n+H.slice(l)),requestAnimationFrame(()=>{let e=o+n.length;r.setSelectionRange(e,e),r.focus()})},[H]),eP=(0,n.useMemo)(()=>T(H,p),[H,p]),eM=E(H,p),eD=0===h&&"broadcast"===eM.mode?"No live panel":"broadcast"===eM.mode?"Send \xb7 ".concat(eM.targets.length):1===eM.targets.length?"Send \xb7 @".concat(y(eM.targets[0],p)):"Send \xb7 @".concat(eM.targets.length),eL=!q&&!J&&H.trim().length>0&&eM.targets.length>0,eY=(null!=(t=null==b?void 0:b.length)?t:0)>0,eR=(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==D?void 0:D.length)?c:0)>0,eO=(null!=(u=null==R?void 0:R.length)?u:0)>0,eB=(0,n.useRef)(null),eq=(0,n.useRef)(null),[eH,eV]=(0,n.useState)(!1),[eJ,eW]=(0,n.useState)(null),[eQ,eZ]=(0,n.useState)(!1),[e$,eX]=(0,n.useState)(null),eG=(0,n.useCallback)(async e=>{if(L){eV(!0),eW(null);try{var t;let a=await L(e);a.ok||eW(null!=(t=a.reason)?t:"video extract failed")}finally{eV(!1)}}},[L]),e0=(0,n.useCallback)(async e=>{if(U){eZ(!0),eX(null);try{var t;let a=await U(e);a.ok||eX(null!=(t=a.reason)?t:"audio extract failed")}finally{eZ(!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),[e4,e9]=(0,n.useState)(null),[e6,e8]=(0,n.useState)(!1),te=(0,n.useCallback)(async()=>{if(!C)return;let e=e5.trim();if(!e)return void e9("url required");e7(!0),e9(null);try{let a=await C(e);if(a.ok)e3(""),e8(!1);else{var t;e9(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(P){ta(!0),tn(null);try{var e;let t=await P();t.ok||tn(null!=(e=t.reason)?e:"paste failed")}finally{ta(!1)}}},[P]);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||J,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==D?void 0:D.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}),Y&&(0,r.jsx)("button",{type:"button",onClick:()=>Y(e.id),disabled:q||J,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==R?void 0:R.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||J||!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||J,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))]}),eJ&&(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:eJ}),e$&&(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:e$}),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}),M&&(0,r.jsx)("button",{type:"button",onClick:()=>M(e.id),disabled:q||J,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))]}),e6&&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(""),e9(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})})]}),e4&&(0,r.jsx)("p",{className:"mt-1 text-[10px] text-rose-600","data-testid":"showroom-url-error",children:e4})]}),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||J,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||J,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)})]}),eR&&(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||J,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),$("")},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:Z,onChange:e=>$(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:!Z.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"]})})]}),eY&&(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||J,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||J,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||J,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"})]}),(eP.targets.length>0||eP.broadcastAll||eP.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:"}),eP.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"]}),eP.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)}),eP.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||J,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||J,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":e6,"data-testid":"showroom-url-pin-toggle",children:(0,r.jsx)(eu.A,{className:"size-3.5","aria-hidden":!0})}),P&&(0,r.jsx)("button",{type:"button",onClick:to,disabled:q||J||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})}),L&&(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||J||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||J||eQ,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:Q,id:"showroom-broadcast-input",value:H,onChange:e=>{V(e.target.value),requestAnimationFrame(eS)},onSelect:()=>eS(),onKeyDown:eT,onBlur:()=>{setTimeout(()=>eN(null),100)},rows:2,disabled:q||J,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:!eL,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"===eM.mode?"Broadcast to all live panels":"Targeted send to ".concat(eM.targets.length," panel(s)"),"data-testid":"showroom-send",children:[(0,r.jsx)(ep.A,{className:"size-3.5","aria-hidden":!0}),eD]})]})]})}var eN=a(27346);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,J.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 eP=a(24920);function eM(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 eD(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,J.cY)(e,t)}),[u,m]=(0,n.useState)(!1);(0,n.useEffect)(()=>(m((0,eP.GZ)()),(0,eP.gu)(m)),[]);let[p,h]=(0,n.useState)("fixed");(0,n.useEffect)(()=>(h((0,eP.sY)()),(0,eP.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)(eM,{ranking:i,submitting:s,error:d,collapsed:u,onToggleCollapsed:()=>{let e=!u;(0,eP.mB)(e),m(e),(0,J.cY)("intent.panel.toggle-collapsed",{collapsed:e})},onTap:e=>{"popup"===p&&x(!1),c(e),null==a||a(e)}}):null}let eL="showroom.hitl.disabled";function eY(){if(!window.localStorage)return!1;try{return"true"===window.localStorage.getItem(eL)}catch(e){return!1}}function eR(){let[e,t]=(0,n.useState)(!1),[a,o]=(0,n.useState)(!1);(0,n.useEffect)(()=>{o(!0),t(eY());let e=function(e){let t=t=>{t.key===eL&&e(eY())};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(eL,"true"):window.localStorage.removeItem(eL)}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(50293);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(1450);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(38614);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 eV=a(88026);function eJ(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)(eV.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 eW=a(55428);function eQ(e){return e?Math.ceil(e.length/4):0}let eZ={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 e$(){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,P]=(0,n.useState)(()=>[{id:S(),kind:"chat",provider:"",sessionId:null,state:"live"},{id:S(),kind:"chat",provider:"",sessionId:null,state:"live"}]),[M,D]=(0,n.useState)([]),[L,_]=(0,n.useState)([]),[V,Z]=(0,n.useState)([]),[$,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),[eP,eM]=(0,n.useState)(()=>(function(){if(!window.localStorage)return!0;try{return"false"!==window.localStorage.getItem(K)}catch(e){return!0}})()),[eL,eY]=(0,n.useState)(()=>(function(){try{let e=window.localStorage.getItem(Y);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)([]),[eV,e$]=(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=>{eY(e);try{window.localStorage.setItem(Y,e)}catch(e){}eX.announce(eZ.judgeToggled(e)),(0,J.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(eZ.modelChanged(e)),(0,J.cY)("showroom.role-judge.model",{model:e||"(default)"})},[eX]);(0,n.useEffect)(()=>{if("local-llm"!==eL||eB.length>0)return;let t=!1;return(async()=>{try{var a;let r=await e.listLlmModels();if(t)return;eq(r.models),e$(null!=(a=r.error)?a:null),(0,J.cY)("showroom.role-judge.models",{count:r.models.length,error:r.error})}catch(e){if(t)return;e$(e instanceof Error?e.message:String(e))}})(),()=>{t=!0}},[eL,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,e4]=(0,n.useState)({}),e9=(0,n.useRef)(null),e6=(0,n.useRef)(null),e8=(0,n.useCallback)(e=>{eM(e);if(window.localStorage)try{e?window.localStorage.removeItem(K):window.localStorage.setItem(K,"false")}catch(e){}(0,J.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,J.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||(e6.current=e,e2(e),(0,J.cY)("showroom.dm.session",{sessionId:e}))}})}catch(e){(0,J.cY)("showroom.dm.acp.connect.error",{error:String(e)});return}e9.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 e4(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;e4(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){}e9.current=null,e6.current=null}},[e,t.baseUrl]);let tt=(0,n.useCallback)(async()=>{let{layouts:t,source:a}=await (0,Q.i$)(e);ex(t),(0,J.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,Q.sF)(t,T,e);if((0,J.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(eZ.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,J.cY)("showroom.cost-gate.confirm",{totalTokens:G.estimate.totalTokens});try{await G.resume()}catch(e){(0,J.cY)("showroom.cost-gate.resume-error",{err:e instanceof Error?e.message:String(e)})}}},[G]),tl=(0,n.useCallback)(()=>{G&&((0,J.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,Q.nZ)(e);P(a),D([]),_([]),Z([]),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(eZ.layoutLoaded(e.name)),(0,J.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,J.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,Q.oM)(t.name,e);(0,J.cY)("showroom.layout.delete",{name:t.name,ok:a.ok,source:a.source}),z===t.name&&ts(),a.ok&&eX.announce(eZ.layoutDeleted(t.name)),await tt()},[tt,e,z,ts,eX]),tu=(0,n.useCallback)(e=>{D(t=>[...t,...e]),(0,J.cY)("showroom.attach.add",{added:e.length,filenames:e.map(e=>e.filename)})},[]),tm=(0,n.useCallback)(e=>{D(t=>t.filter(t=>t.id!==e)),(0,J.cY)("showroom.attach.remove",{id:e})},[]),tp=(0,n.useCallback)(e=>{_(t=>[...t,e]),(0,J.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,J.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,$),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};Z(e=>[...e,l]),(0,J.cY)("showroom.prior.promote",{panelId:e.id,messageId:a,provider:e.provider,bytes:n.length,turn:o})},[T,$]),tx=(0,n.useCallback)(e=>{Z(t=>t.filter(t=>t.id!==e)),(0,J.cY)("showroom.prior.remove",{id:e})},[]),tg=(0,n.useCallback)(e=>{Z(t=>t.map(t=>t.id===e?{...t,enabled:!t.enabled}:t)),(0,J.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,J.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,J.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,J.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,J.cY)("showroom.clipboard.add",{bytes:e.length}),{ok:!0}}catch(t){let e=t instanceof Error?t.message:String(t);return(0,J.cY)("showroom.clipboard.error",{error:e}),{ok:!1,reason:e}}},[]),tk=(0,n.useCallback)(e=>{eo(t=>t.filter(t=>t.id!==e)),(0,J.cY)("showroom.clipboard.remove",{id:e})},[]),ty=(0,n.useCallback)(async e=>{try{let{extractKeyFrame:t}=await a.e(2871).then(a.bind(a,82871)),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,J.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,J.cY)("showroom.video.error",{error:e}),{ok:!1,reason:e}}},[]),tj=(0,n.useCallback)(e=>{ei(t=>t.filter(t=>t.id!==e)),(0,J.cY)("showroom.video.remove",{id:e})},[]),tz=(0,n.useCallback)(async t=>{try{let{extractAudioMeta:r}=await a.e(7862).then(a.bind(a,97862)),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,J.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,J.cY)("showroom.audio.stt-ok",{id:o.id,chars:a.text.length,language:a.language,durationMs:a.durationMs}))}catch(e){(0,J.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,J.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,J.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,J.cY)("showroom.chain.add",{from:e,to:t,wrapMode:r.edge.wrapMode,edges:r.edges.length})):(0,J.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,J.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,J.cY)("showroom.chain.hitl.toggle",{edgeId:e,next:!t.hitl}),a}))},[]),tT=(0,n.useCallback)(async(e,t)=>{let a=e9.current,r=e6.current;if(!a||!r)return void(0,J.cY)("showroom.chain.forward.skip",{reason:"no-layout-session"});let n=O([e],{includeAgent:!0});if(!n)return void(0,J.cY)("showroom.chain.forward.skip",{reason:"empty-hint"});let o=(0,w.tw)(t);e4(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,J.cY)("showroom.chain.forward.error",{error:t}),e4(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,J.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,J.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,J.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,J.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]),tP=(0,n.useCallback)(()=>{eh(e=>{let t=e[0];return t?((0,J.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})},[]),tM=(0,n.useRef)(null),tD=(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")}(L),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")}(V),d="".concat(r).concat(n).concat(o).concat(l).concat(i).concat(s).concat(a),c="local-llm"===eL?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 R(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=eQ(e.dispatchText),r=e.dmTargets.map(t=>{var r,n;let o=eQ(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!==eW?null==(e=eW.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=tM.current)?void 0:e.call(tM))?t:0;if(a>0&&(0,J.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)})&&P(e)}(0,J.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:M.length,terminalContexts:L.length,estTokens:p.totalTokens}),await b()};if(p.exceedsWarnThreshold){(0,J.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=e9.current,t=e6.current;if(!e||!t)return void(0,J.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,J.cY)("showroom.dm.dispatch.skip",{reason:"empty-hint"});"mixed"===e1&&r&&(0,J.cY)("showroom.dm.dispatch.mixed",{siblingsWithPrior:Object.keys(r).length,totalTargets:a.length}),M.length>0&&(0,J.cY)("showroom.dm.dispatch.attachments-dropped",{count:M.length});let o=(0,w.tw)(d);e4(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,J.cY)("showroom.dm.dispatch.error",{error:String(t)});let e=String(t);e4(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})}D([]),_([]),Z([]),ea([]),eo([]),ei([]),ed([])}await h()},[T,j,M,L,V,et,er,eL,e_,el,es,e]),tL=(0,n.useCallback)(()=>{(0,J.cY)("showroom.stop-all",{showroomId:j,mode:"dm-noop"})},[j]),tY=(0,n.useCallback)(()=>{P(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"}}()])},[]),tR=(0,n.useCallback)(e=>{P(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=>{P(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,J.cY)("showroom.panel.remove",{panelId:e})},[]),tU=(0,n.useCallback)((e,t)=>{P(a=>a.map(a=>a.id===e?{...a,state:t}:a))},[]),tF=(0,n.useCallback)((e,t)=>{P(a=>a.map(a=>a.id===e?{...a,provider:t}:a))},[]),tK=(0,n.useCallback)((e,t)=>{P(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,J.cY)("showroom.panel.roleHint",{panelId:e,roleHint:t})},[]),tO=(0,n.useCallback)((e,t)=>{var a;P(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,J.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)(tD);tq.current=tD;let tH=(0,n.useCallback)(e=>{let t=e.trim();t&&((0,J.cY)("showroom.voice.auto-send",{len:t.length}),tq.current(t))},[]),tV=e.voiceWsUrl(),tJ=(0,n.useRef)(null),tW=(0,n.useCallback)(()=>{let e=tJ.current;if(!e||!e.speaking)return;let t=e.cancelInFlight();(0,J.cY)("showroom.voice.barge-in.fire",{cancelled:t})},[]),tQ=(0,k.sS)({wsUrl:tV,...t.token?{token:t.token}:{},onTranscript:tH,onSpeechActivity:tW}),[tZ,t$]=(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,J.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:tQ.active&&!tZ,language:"ko-KR"});tJ.current={cancelInFlight:tX.cancelInFlight,speaking:tX.speaking},tM.current=tX.cancelInFlight,(0,W.Si)({enabled:tX.speaking,onActivate:()=>{let e=tX.cancelInFlight();(0,J.cY)("showroom.voice.barge-in.spacebar",{cancelled:e}),tQ.forceListen()}});let tG=(0,n.useRef)(null);(0,n.useEffect)(()=>{let e=tQ.active?tQ.phase:"off";null!==tG.current&&tG.current!==e&&("off"===e?eX.announce(eZ.voiceToggled(!1)):eX.announce(eZ.voicePhase(e))),tG.current=e},[tQ.active,tQ.phase,eX]);let t0=(0,n.useRef)(null);(0,n.useEffect)(()=>{null!==t0.current&&t0.current!==tZ&&eX.announce(eZ.ttsMuted(tZ)),t0.current=tZ},[tZ,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,J.cY)("showroom.shortcut",{id:t,focused:!!a});break}case"toggle-role-judge":e.preventDefault(),eG("local-llm"===eL?"keyword":"local-llm"),(0,J.cY)("showroom.shortcut",{id:t});break;case"toggle-voice":if(e.preventDefault(),!tV)return void(0,J.cY)("showroom.shortcut.suppressed",{id:t,reason:"no-ws-url"});tQ.toggle(),(0,J.cY)("showroom.shortcut",{id:t});break;case"toggle-tts":if(e.preventDefault(),!tX.supported||!tQ.active)return void(0,J.cY)("showroom.shortcut.suppressed",{id:t,reason:"tts-unavailable"});t$(e=>!e),(0,J.cY)("showroom.shortcut",{id:t});break;case"open-help":e.preventDefault(),eE(!0),(0,J.cY)("showroom.shortcut",{id:t})}}return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[eL,eG,tQ,tV,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)(eR,{})]}),(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsxs)("button",{type:"button",onClick:tY,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:()=>tR(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(!eP),className:"inline-flex items-center gap-1 rounded-md border px-2 py-1 text-xs ".concat(eP?"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":eP,title:eP?"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",eP&&(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"===eL?"keyword":"local-llm"),className:"inline-flex items-center gap-1 rounded-md border px-2 py-1 text-xs ".concat("local-llm"===eL?"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"===eL,title:"local-llm"===eL?"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"===eL&&(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"===eL&&(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:eV?"Model list unavailable: ".concat(eV,". 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:()=>{tQ.toggle()},disabled:!tV,className:"inline-flex items-center gap-1 rounded-md border px-2 py-1 text-xs ".concat(tQ.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":tQ.active?"Stop voice mode":"Start voice mode","aria-pressed":tQ.active,title:tV?tQ.active?"Voice ".concat(tQ.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:[tQ.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}),tQ.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"===tQ.phase?"listen":tQ.phase})]}),(0,r.jsxs)("button",{type:"button",onClick:()=>t$(e=>!e),disabled:!tX.supported||!tQ.active,className:"inline-flex items-center gap-1 rounded-md border px-2 py-1 text-xs ".concat(tZ?"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":tZ?"Unmute panel TTS":"Mute panel TTS","aria-pressed":tZ,title:tX.supported?tQ.active?tZ?"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:[tZ?(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:tL,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)(eJ,{pending:ep[0]?{from:ep[0].from,to:ep[0].to,forwardText:ep[0].forwardText}:void 0,queueLength:ep.length,onConfirm:tE,onCancel:tP}),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)(eD,{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}}:{}}),tD(e)}}),(0,r.jsx)(ez,{onSend:tD,panels:T,liveCount:tB,attachments:M,onAttach:tu,onRemoveAttachment:tm,terminalContexts:L,onPinTerminalContext:tp,onRemoveTerminalContext:th,priorAnswers:V,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)})]})}},24920:(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)}}},26200:(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}))}},27346:(e,t,a)=>{"use strict";a.d(t,{M1:()=>d,Qj:()=>c,tI:()=>s});var r=a(65863),n=a(24815),o=a(77945),l=a(37388);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)}},45695:(e,t,a)=>{"use strict";a.d(t,{C:()=>d,DaemonProvider:()=>c,Q:()=>u});var r=a(65863),n=a(24815),o=a(70086),l=a(89469),i=a(31324),s=a(16263);let d=(0,n.createContext)(null);function c(e){let{children:t}=e,a={baseUrl:"",token:"",provider:""},[c,u]=(0,n.useState)(a),[m,p]=(0,n.useState)(""),[h]=(0,n.useState)(()=>new i.ki(a));(0,n.useEffect)(()=>{let e=(0,o.Fp)();u(e),h.updateConfig(e),p((0,l.oD)()),(0,s.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,o.Fp)();h.updateConfig(t),u(t),(0,s.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,s.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 b=e=>{u(t=>{let a={...t,...e};return(0,o.Qc)(e),h.updateConfig(a),(0,s.cY)("webterm.provider.daemon.config-update",{keys:Object.keys(e)}),a})},x=e=>{p(e),localStorage.setItem("elanous.daemon.sessionId",e),(0,s.cY)("webterm.provider.daemon.session-set",{sessionId:e})},g=(0,n.useMemo)(()=>({config:c,setConfig:b,client:h,sessionId:m,setSessionId:x}),[c,h,m]);return(0,r.jsx)(d.Provider,{value:g,children:t})}function u(){let e=(0,n.useContext)(d);if(!e)throw Error("useDaemon must be used inside <DaemonProvider>");return e}},76517:(e,t,a)=>{Promise.resolve().then(a.bind(a,17380))},89469:(e,t,a)=>{"use strict";a.d(t,{Zr:()=>l,f6:()=>n,oD:()=>o});let r="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 o(){let e=function(){let e=new URLSearchParams(window.location.search).get("session");return e?(localStorage.setItem(r,e),e):localStorage.getItem(r)}();if(e)return e;let t=n();return localStorage.setItem(r,t),t}function l(){let e=n();return localStorage.setItem(r,e),e}}},e=>{e.O(0,[3541,8260,9188,2940,5661,1324,877,7304,5290,607,7358],()=>e(e.s=76517)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8147],{14387:(e,r,t)=>{"use strict";t.r(r),t.d(r,{default:()=>o});var n=t(65863),a=t(24815),s=t(45695);function i(){let{config:e}=(0,s.Q)(),[r,t]=(0,a.useState)({kind:"loading"});return(0,a.useEffect)(()=>{let r=!1;return(t({kind:"loading"}),e.baseUrl)?((async()=>{try{let n=await fetch("".concat(e.baseUrl.replace(/\/$/,""),"/api/task-agent/board"),{headers:e.token?{Authorization:"Bearer ".concat(e.token)}:{}});if(!n.ok)throw Error("HTTP ".concat(n.status));let a=await n.json();if(!a||"object"!=typeof a||!("board"in a)||!Array.isArray(a.board))throw Error("잘못된 보드 응답");r||t({kind:"ready",tasks:function e(r){return r.flatMap(r=>{var t;return"task"===r.level?[{level:"task",id:r.id,title:r.title,ledger:r.ledger}]:e(null!=(t=r.children)?t:[])})}(a.board)})}catch(e){r||t({kind:"error",message:e instanceof Error?e.message:String(e)})}})(),()=>{r=!0}):void t({kind:"error",message:"NEXUS 연결이 설정되지 않았습니다."})},[e.baseUrl,e.token]),(0,n.jsxs)("section",{"aria-label":"Task agent ledger",className:"space-y-4 rounded-2xl border border-border bg-card p-4",children:[(0,n.jsxs)("header",{children:[(0,n.jsx)("h1",{className:"text-xl font-semibold tracking-tight",children:"과제 원장"}),(0,n.jsx)("p",{className:"text-sm text-muted-foreground",children:"Task agent의 읽기 전용 과제 카드"})]}),"loading"===r.kind&&(0,n.jsx)("p",{role:"status",className:"text-sm text-muted-foreground",children:"과제 원장 불러오는 중…"}),"error"===r.kind&&(0,n.jsxs)("p",{role:"alert",className:"text-sm text-destructive",children:["과제 원장 조회 실패: ",r.message]}),"ready"===r.kind&&(0===r.tasks.length?(0,n.jsx)("p",{role:"status",className:"text-sm text-muted-foreground",children:"과제 원장이 비어 있습니다."}):(0,n.jsx)("ul",{className:"grid gap-3 sm:grid-cols-2 xl:grid-cols-3",children:r.tasks.map(e=>{var r,t,a,s,i,d,o;return(0,n.jsxs)("li",{className:"min-w-0 space-y-2 rounded-xl border border-border bg-background p-4",children:[(0,n.jsx)("h2",{className:"break-words text-sm font-semibold",children:e.title}),(0,n.jsxs)("dl",{className:"space-y-1 break-all text-xs text-muted-foreground",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("dt",{className:"inline",children:"runId: "}),(0,n.jsx)("dd",{className:"inline",children:null!=(i=null==(r=e.ledger)?void 0:r.runId)?i:"—"})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("dt",{className:"inline",children:"PR: "}),(0,n.jsx)("dd",{className:"inline",children:(null==(t=e.ledger)?void 0:t.pr)!=null?"#".concat(e.ledger.pr):"—"})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("dt",{className:"inline",children:"마지막 상태: "}),(0,n.jsx)("dd",{className:"inline",children:null!=(d=null==(a=e.ledger)?void 0:a.lastStatus)?d:"—"})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("dt",{className:"inline",children:"종료 이유: "}),(0,n.jsx)("dd",{className:"inline",children:null!=(o=null==(s=e.ledger)?void 0:s.exitReason)?o:"—"})]})]})]},e.id)})}))]})}var d=t(1034);function o(){let[e,r]=(0,a.useState)(!1);return(0,n.jsxs)("main",{className:"mx-auto max-w-[1600px] space-y-6 p-4",children:[(0,n.jsx)(i,{}),(0,n.jsxs)("details",{className:"rounded-2xl border border-border bg-card",onToggle:e=>r(e.currentTarget.open),children:[(0,n.jsx)("summary",{className:"cursor-pointer px-4 py-3 text-sm font-semibold",children:"옛 작업(TOX)"}),e&&(0,n.jsx)(d.B,{})]})]})}},38614:(e,r,t)=>{"use strict";t.d(r,{$:()=>o});var n=t(65863),a=t(282),s=t(74537),i=t(41893);let d=(0,s.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 o(e){let{className:r,variant:t="default",size:s="default",...o}=e;return(0,n.jsx)(a.$,{"data-slot":"button",className:(0,i.cn)(d({variant:t,size:s,className:r})),...o})}},41893:(e,r,t)=>{"use strict";t.d(r,{cn:()=>s});var n=t(23169),a=t(49637);function s(){for(var e=arguments.length,r=Array(e),t=0;t<e;t++)r[t]=arguments[t];return(0,a.QP)((0,n.$)(r))}},45695:(e,r,t)=>{"use strict";t.d(r,{C:()=>l,DaemonProvider:()=>c,Q:()=>u});var n=t(65863),a=t(24815),s=t(70086),i=t(89469),d=t(31324),o=t(16263);let l=(0,a.createContext)(null);function c(e){let{children:r}=e,t={baseUrl:"",token:"",provider:""},[c,u]=(0,a.useState)(t),[g,m]=(0,a.useState)(""),[p]=(0,a.useState)(()=>new d.ki(t));(0,a.useEffect)(()=>{let e=(0,s.Fp)();u(e),p.updateConfig(e),m((0,i.oD)()),(0,o.cY)("webterm.provider.daemon.init",{baseUrl:e.baseUrl,hasToken:!!e.token})},[p]),(0,a.useEffect)(()=>{let e=e=>{if("elanous.daemon.token"===e.key||"elanous.nexus.baseUrl"===e.key){let r=(0,s.Fp)();p.updateConfig(r),u(r),(0,o.cY)("webterm.provider.daemon.config-cross-tab",{key:e.key,hasToken:!!r.token});return}"elanous.daemon.sessionId"===e.key&&e.newValue&&m(r=>r===e.newValue?r:((0,o.cY)("webterm.provider.daemon.session-cross-tab",{previous:r||"(empty)",next:e.newValue}),e.newValue))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)},[p]);let x=e=>{u(r=>{let t={...r,...e};return(0,s.Qc)(e),p.updateConfig(t),(0,o.cY)("webterm.provider.daemon.config-update",{keys:Object.keys(e)}),t})},v=e=>{m(e),localStorage.setItem("elanous.daemon.sessionId",e),(0,o.cY)("webterm.provider.daemon.session-set",{sessionId:e})},b=(0,a.useMemo)(()=>({config:c,setConfig:x,client:p,sessionId:g,setSessionId:v}),[c,p,g]);return(0,n.jsx)(l.Provider,{value:b,children:r})}function u(){let e=(0,a.useContext)(l);if(!e)throw Error("useDaemon must be used inside <DaemonProvider>");return e}},88175:(e,r,t)=>{Promise.resolve().then(t.bind(t,14387))},89469:(e,r,t)=>{"use strict";t.d(r,{Zr:()=>i,f6:()=>a,oD:()=>s});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 s(){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 r=a();return localStorage.setItem(n,r),r}function i(){let e=a();return localStorage.setItem(n,e),e}}},e=>{e.O(0,[3541,9188,8519,2940,1324,1034,5290,607,7358],()=>e(e.s=88175)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6125],{7949:(e,t,n)=>{Promise.resolve().then(n.bind(n,63403))},63403:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>u});var a=n(65863),s=n(24815),l=n(76072),r=n(34608);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,{})})}}},e=>{e.O(0,[3541,9188,2940,7174,146,1343,1324,7947,877,7304,7138,4608,5290,607,7358],()=>e(e.s=7949)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7556],{9656:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>f});var o=r(65863),n=r(24815),a=r(76072),s=r(45695),i=r(66860),c=r(31036),l=r(15991),u=r(43008),d=r(14588);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}},14588:(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),"일 전")}},15991:(e,t,r)=>{"use strict";r.d(t,{GC:()=>n,In:()=>l,OG:()=>i});var o=r(24815);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")}},31036:(e,t,r)=>{"use strict";r.d(t,{V5:()=>a,tV:()=>s});var o=r(91611);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})})}}},42886:(e,t,r)=>{Promise.resolve().then(r.bind(r,9656))},43008:(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"},"/live-run":{pwa:"beta"},"/market":{pwa:"stable"},"/sessions":{pwa:"stable"},"/settings":{pwa:"beta"},"/editor":{pwa:"stable"},"/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"},"/loops":{pwa:"beta"},"/ops/release":{pwa:"ops"},"/ops/seats":{pwa:"ops"},"/ops/checklist":{pwa:"ops"},"/ceo":{pwa:"ops"},"/decisions":{pwa:"ops"},"/dashboard":{pwa:"ops"},"/pitch":{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)))}},45695:(e,t,r)=>{"use strict";r.d(t,{C:()=>l,DaemonProvider:()=>u,Q:()=>d});var o=r(65863),n=r(24815),a=r(70086),s=r(89469),i=r(31324),c=r(16263);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}},66860:(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()}}}},76072:(e,t,r)=>{"use strict";var o=r(33912);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}})},89469:(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}},91611:(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,[1324,5290,607,7358],()=>e(e.s=42886)),_N_E=e.O()}]);
|