elanous 0.2.0 → 0.2.4
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/.env.example +6 -0
- package/README.md +16 -14
- package/apps/pwa/out/404/index.html +1 -1
- package/apps/pwa/out/404.html +1 -1
- package/apps/pwa/out/_next/static/chunks/1105-c473ed46272fba79.js +1 -0
- package/apps/pwa/out/_next/static/chunks/1191-7b13a24117a689fa.js +1 -0
- package/apps/pwa/out/_next/static/chunks/1201-09613bce624467c0.js +1 -0
- package/apps/pwa/out/_next/static/chunks/1377-1efeffbbac0963ff.js +1 -0
- package/apps/pwa/out/_next/static/chunks/1470.98a6ab61ccb4131c.js +1 -0
- package/apps/pwa/out/_next/static/chunks/216-5acd01cbde4acda7.js +1 -0
- package/apps/pwa/out/_next/static/chunks/2330-c2f07246c8788af1.js +1 -0
- package/apps/pwa/out/_next/static/chunks/2375-3fcae5186c64fe6b.js +1 -0
- package/apps/pwa/out/_next/static/chunks/2415.ed6428ff334c7ce2.js +1 -0
- package/apps/pwa/out/_next/static/chunks/2929-617f1e66a55be184.js +1 -0
- package/apps/pwa/out/_next/static/chunks/2977-e38442e86289f1d3.js +1 -0
- package/apps/pwa/out/_next/static/chunks/2982-2a2df543be3d2e5a.js +25 -0
- package/apps/pwa/out/_next/static/chunks/{2a79f15a-2013e4d421d6df88.js → 2ea96958-e8c7e112de50b067.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/319-d37df1b6e0cbeff4.js +1 -0
- package/apps/pwa/out/_next/static/chunks/3403.4bc97b4066945a94.js +5 -0
- package/apps/pwa/out/_next/static/chunks/3441-a1dd4acfeda14488.js +1 -0
- package/apps/pwa/out/_next/static/chunks/371-4ad6af55dad02ced.js +1 -0
- package/apps/pwa/out/_next/static/chunks/4114-3e63117452378807.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{6804.8ed6ab492bc5fc0a.js → 4323.c5dfb6f503304775.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/4836-3c93795ab834381e.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{320-d7013ec072863e5e.js → 5080-1613752891fcadb4.js} +4 -4
- package/apps/pwa/out/_next/static/chunks/5609-012bb3557211f07e.js +1 -0
- package/apps/pwa/out/_next/static/chunks/5791-bb82743fa6299562.js +1 -0
- package/apps/pwa/out/_next/static/chunks/6062-73e68343a9814f6a.js +1 -0
- package/apps/pwa/out/_next/static/chunks/6090-1bd6077591603947.js +1 -0
- package/apps/pwa/out/_next/static/chunks/6320-baac91d68843a9a6.js +1 -0
- package/apps/pwa/out/_next/static/chunks/6416-505ba707cacafbba.js +1 -0
- package/apps/pwa/out/_next/static/chunks/6725-68ab7cc0b1faf00d.js +1 -0
- package/apps/pwa/out/_next/static/chunks/6998-a654fe5c58271600.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7457-f5cb1cc8db9f7453.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7647.2fcd30d894d5ee30.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7673-2eda1507d38dadb8.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7990-e12efba616f46e03.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8046cadf-211ca3c0e00f2b72.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8067-f74bf14d67ad98f1.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8142-011e1f474efb8b33.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8519-0059d82bdb4812bf.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8619-4365e03a2862830f.js +1 -0
- package/apps/pwa/out/_next/static/chunks/920-f7dceb78f1c585ef.js +1 -0
- package/apps/pwa/out/_next/static/chunks/9651-3cd291a6fa1370d2.js +1 -0
- package/apps/pwa/out/_next/static/chunks/9740-52467f244755917f.js +1 -0
- package/apps/pwa/out/_next/static/chunks/9804-64c02c3c127d5014.js +1 -0
- package/apps/pwa/out/_next/static/chunks/ae787e4c-f2998de7f1ba72a4.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/_not-found/page-859cea1570b6227a.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/approvals/page-21c3261af6ab377c.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/autopilot/page-1991445b8ea86274.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/board/page-4ebfaee2369fe248.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/botlab/page-9fa879ebf5959096.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/bots/page-ca7c3cc305c3285a.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/chat/page-9951930add3d2051.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/control/page-4472ddf1e2458e69.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/design-check/page-4de08d4b766f134b.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/editor/page-7a975e2b9db1dfb7.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/healthz/route-859cea1570b6227a.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/intake/page-49270714ef35bb96.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/layout-33fbdf353e2a5982.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/live/page-259f122e2dd64317.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/market/page-65b82726753658e1.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/missions/[id]/page-4b8df3748dc06285.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/morning/page-112f7e477bda77fd.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/not-found-542a5c0006da637c.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/observatory/page-63ffb347831262ea.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/page-98e4e359d97263b4.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/reflection/page-97e24ac675ce576e.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/scheduler/page-ac6391f26391d89d.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/sessions/page-9f45c9d45ffc43bd.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/settings/devices/page-36995b9cb5d98218.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/settings/page-0c795b577988d63f.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/setup/done/page-b4311e2f71c6735a.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/setup/layout-859cea1570b6227a.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/setup/page-eb2381074df20dba.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/share/page-b01336e64eba01ae.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/showroom/page-7af7f21c1f2858ef.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/tasks/page-a98ecd364586c89b.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/term/page-57f0502dfbfa089b.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/trace/page-3467d2e1abd8a14a.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/vault/page-7842ca23d53ba682.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-ae9ac882912b0198.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/workflows/page-3a0d72e3f783bcef.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/workspace/page-f3b39fe8358c2a97.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/worktrees/page-5a22af3181ac2afb.js +1 -0
- package/apps/pwa/out/_next/static/chunks/framework-ea806bb57f2b8923.js +1 -0
- package/apps/pwa/out/_next/static/chunks/main-8d2302399c2c8f87.js +1 -0
- package/apps/pwa/out/_next/static/chunks/main-app-1457627bb302a22c.js +1 -0
- package/apps/pwa/out/_next/static/chunks/pages/_app-b10928c60f0b8488.js +1 -0
- package/apps/pwa/out/_next/static/chunks/pages/_error-689039227d443fab.js +1 -0
- package/apps/pwa/out/_next/static/chunks/webpack-e5bea36f183b25e6.js +1 -0
- package/apps/pwa/out/_next/static/css/e66b7f5efc8df3f3.css +1 -0
- package/apps/pwa/out/_next/static/zoQX5iTvXOsIvCjxCe1Ji/_buildManifest.js +1 -0
- package/apps/pwa/out/approvals/index.html +1 -0
- package/apps/pwa/out/approvals/index.txt +30 -0
- package/apps/pwa/out/autopilot/index.html +1 -1
- package/apps/pwa/out/autopilot/index.txt +27 -26
- package/apps/pwa/out/board/index.html +1 -0
- package/apps/pwa/out/board/index.txt +30 -0
- package/apps/pwa/out/botlab/index.html +1 -1
- package/apps/pwa/out/botlab/index.txt +24 -23
- package/apps/pwa/out/bots/index.html +1 -1
- package/apps/pwa/out/bots/index.txt +24 -23
- package/apps/pwa/out/chat/index.html +1 -2
- package/apps/pwa/out/chat/index.txt +24 -23
- package/apps/pwa/out/control/index.html +1 -1
- package/apps/pwa/out/control/index.txt +27 -26
- package/apps/pwa/out/design-check/index.html +1 -1
- package/apps/pwa/out/design-check/index.txt +27 -26
- package/apps/pwa/out/editor/index.html +1 -0
- package/apps/pwa/out/editor/index.txt +31 -0
- package/apps/pwa/out/healthz +1 -1
- package/apps/pwa/out/index.html +1 -1
- package/apps/pwa/out/index.txt +24 -23
- package/apps/pwa/out/intake/index.html +1 -1
- package/apps/pwa/out/intake/index.txt +27 -26
- package/apps/pwa/out/live/index.html +1 -0
- package/apps/pwa/out/live/index.txt +30 -0
- package/apps/pwa/out/market/index.html +1 -0
- package/apps/pwa/out/market/index.txt +27 -0
- package/apps/pwa/out/missions/placeholder/index.html +1 -1
- package/apps/pwa/out/missions/placeholder/index.txt +24 -23
- package/apps/pwa/out/morning/index.html +1 -1
- package/apps/pwa/out/morning/index.txt +27 -26
- package/apps/pwa/out/observatory/index.html +1 -1
- package/apps/pwa/out/observatory/index.txt +27 -26
- package/apps/pwa/out/reflection/index.html +1 -1
- package/apps/pwa/out/reflection/index.txt +25 -24
- package/apps/pwa/out/scheduler/index.html +1 -1
- package/apps/pwa/out/scheduler/index.txt +27 -26
- package/apps/pwa/out/sessions/index.html +1 -1
- package/apps/pwa/out/sessions/index.txt +24 -23
- package/apps/pwa/out/settings/devices/index.html +1 -1
- package/apps/pwa/out/settings/devices/index.txt +27 -26
- package/apps/pwa/out/settings/index.html +1 -1
- package/apps/pwa/out/settings/index.txt +27 -26
- package/apps/pwa/out/setup/done/index.html +1 -1
- package/apps/pwa/out/setup/done/index.txt +27 -26
- package/apps/pwa/out/setup/index.html +1 -1
- package/apps/pwa/out/setup/index.txt +27 -26
- package/apps/pwa/out/share/index.html +1 -1
- package/apps/pwa/out/share/index.txt +27 -26
- package/apps/pwa/out/showroom/index.html +1 -1
- package/apps/pwa/out/showroom/index.txt +24 -23
- package/apps/pwa/out/tasks/index.html +1 -1
- package/apps/pwa/out/tasks/index.txt +27 -26
- package/apps/pwa/out/term/index.html +1 -1
- package/apps/pwa/out/term/index.txt +27 -26
- package/apps/pwa/out/trace/index.html +1 -0
- package/apps/pwa/out/trace/index.txt +30 -0
- package/apps/pwa/out/vault/index.html +1 -1
- package/apps/pwa/out/vault/index.txt +27 -26
- package/apps/pwa/out/workflows/chat-ui/index.html +1 -1
- package/apps/pwa/out/workflows/chat-ui/index.txt +27 -26
- package/apps/pwa/out/workflows/index.html +1 -1
- package/apps/pwa/out/workflows/index.txt +27 -27
- package/apps/pwa/out/workspace/index.html +1 -1
- package/apps/pwa/out/workspace/index.txt +27 -26
- package/apps/pwa/out/worktrees/index.html +1 -1
- package/apps/pwa/out/worktrees/index.txt +27 -26
- package/catalog/resources.yaml +8 -11
- package/docs/design/systems/LICENSE +201 -0
- package/docs/design/systems/NOTICE.md +29 -0
- package/docs/design/systems/SOURCE.json +291 -0
- package/docs/design/systems/application/DESIGN.md +71 -0
- package/docs/design/systems/application/manifest.json +54 -0
- package/docs/design/systems/application/tokens.css +63 -0
- package/docs/design/systems/artistic/DESIGN.md +71 -0
- package/docs/design/systems/artistic/manifest.json +54 -0
- package/docs/design/systems/artistic/tokens.css +63 -0
- package/docs/design/systems/bento/DESIGN.md +71 -0
- package/docs/design/systems/bento/manifest.json +54 -0
- package/docs/design/systems/bento/tokens.css +63 -0
- package/docs/design/systems/bold/DESIGN.md +71 -0
- package/docs/design/systems/bold/manifest.json +54 -0
- package/docs/design/systems/bold/tokens.css +63 -0
- package/docs/design/systems/brutalism/DESIGN.md +71 -0
- package/docs/design/systems/brutalism/manifest.json +54 -0
- package/docs/design/systems/brutalism/tokens.css +63 -0
- package/docs/design/systems/cafe/DESIGN.md +71 -0
- package/docs/design/systems/cafe/manifest.json +54 -0
- package/docs/design/systems/cafe/tokens.css +63 -0
- package/docs/design/systems/claymorphism/DESIGN.md +71 -0
- package/docs/design/systems/claymorphism/manifest.json +54 -0
- package/docs/design/systems/claymorphism/tokens.css +63 -0
- package/docs/design/systems/clean/DESIGN.md +71 -0
- package/docs/design/systems/clean/manifest.json +54 -0
- package/docs/design/systems/clean/tokens.css +63 -0
- package/docs/design/systems/colorful/DESIGN.md +71 -0
- package/docs/design/systems/colorful/manifest.json +54 -0
- package/docs/design/systems/colorful/tokens.css +63 -0
- package/docs/design/systems/contemporary/DESIGN.md +71 -0
- package/docs/design/systems/contemporary/manifest.json +54 -0
- package/docs/design/systems/contemporary/tokens.css +63 -0
- package/docs/design/systems/corporate/DESIGN.md +71 -0
- package/docs/design/systems/corporate/manifest.json +54 -0
- package/docs/design/systems/corporate/tokens.css +63 -0
- package/docs/design/systems/cosmic/DESIGN.md +71 -0
- package/docs/design/systems/cosmic/manifest.json +54 -0
- package/docs/design/systems/cosmic/tokens.css +63 -0
- package/docs/design/systems/creative/DESIGN.md +71 -0
- package/docs/design/systems/creative/manifest.json +54 -0
- package/docs/design/systems/creative/tokens.css +63 -0
- package/docs/design/systems/dashboard/DESIGN.md +71 -0
- package/docs/design/systems/dashboard/manifest.json +54 -0
- package/docs/design/systems/dashboard/tokens.css +63 -0
- package/docs/design/systems/default/DESIGN.md +62 -0
- package/docs/design/systems/default/manifest.json +69 -0
- package/docs/design/systems/default/tokens.css +200 -0
- package/docs/design/systems/dithered/DESIGN.md +71 -0
- package/docs/design/systems/dithered/manifest.json +54 -0
- package/docs/design/systems/dithered/tokens.css +63 -0
- package/docs/design/systems/doodle/DESIGN.md +71 -0
- package/docs/design/systems/doodle/manifest.json +54 -0
- package/docs/design/systems/doodle/tokens.css +63 -0
- package/docs/design/systems/dramatic/DESIGN.md +71 -0
- package/docs/design/systems/dramatic/manifest.json +54 -0
- package/docs/design/systems/dramatic/tokens.css +63 -0
- package/docs/design/systems/editorial/DESIGN.md +71 -0
- package/docs/design/systems/editorial/manifest.json +54 -0
- package/docs/design/systems/editorial/tokens.css +63 -0
- package/docs/design/systems/elegant/DESIGN.md +71 -0
- package/docs/design/systems/elegant/manifest.json +54 -0
- package/docs/design/systems/elegant/tokens.css +63 -0
- package/docs/design/systems/energetic/DESIGN.md +72 -0
- package/docs/design/systems/energetic/manifest.json +54 -0
- package/docs/design/systems/energetic/tokens.css +63 -0
- package/docs/design/systems/enterprise/DESIGN.md +71 -0
- package/docs/design/systems/enterprise/manifest.json +54 -0
- package/docs/design/systems/enterprise/tokens.css +63 -0
- package/docs/design/systems/expressive/DESIGN.md +71 -0
- package/docs/design/systems/expressive/manifest.json +54 -0
- package/docs/design/systems/expressive/tokens.css +63 -0
- package/docs/design/systems/fantasy/DESIGN.md +71 -0
- package/docs/design/systems/fantasy/manifest.json +54 -0
- package/docs/design/systems/fantasy/tokens.css +63 -0
- package/docs/design/systems/flat/DESIGN.md +71 -0
- package/docs/design/systems/flat/manifest.json +54 -0
- package/docs/design/systems/flat/tokens.css +63 -0
- package/docs/design/systems/friendly/DESIGN.md +71 -0
- package/docs/design/systems/friendly/manifest.json +54 -0
- package/docs/design/systems/friendly/tokens.css +63 -0
- package/docs/design/systems/glassmorphism/DESIGN.md +71 -0
- package/docs/design/systems/glassmorphism/manifest.json +54 -0
- package/docs/design/systems/glassmorphism/tokens.css +63 -0
- package/docs/design/systems/gradient/DESIGN.md +71 -0
- package/docs/design/systems/gradient/manifest.json +54 -0
- package/docs/design/systems/gradient/tokens.css +63 -0
- package/docs/design/systems/luxury/DESIGN.md +71 -0
- package/docs/design/systems/luxury/manifest.json +54 -0
- package/docs/design/systems/luxury/tokens.css +63 -0
- package/docs/design/systems/minimal/DESIGN.md +71 -0
- package/docs/design/systems/minimal/manifest.json +54 -0
- package/docs/design/systems/minimal/tokens.css +63 -0
- package/docs/design/systems/modern/DESIGN.md +71 -0
- package/docs/design/systems/modern/manifest.json +54 -0
- package/docs/design/systems/modern/tokens.css +63 -0
- package/docs/design/systems/mono/DESIGN.md +71 -0
- package/docs/design/systems/mono/manifest.json +54 -0
- package/docs/design/systems/mono/tokens.css +63 -0
- package/docs/design/systems/neobrutalism/DESIGN.md +71 -0
- package/docs/design/systems/neobrutalism/manifest.json +54 -0
- package/docs/design/systems/neobrutalism/tokens.css +63 -0
- package/docs/design/systems/neon/DESIGN.md +71 -0
- package/docs/design/systems/neon/manifest.json +54 -0
- package/docs/design/systems/neon/tokens.css +63 -0
- package/docs/design/systems/neumorphism/DESIGN.md +71 -0
- package/docs/design/systems/neumorphism/manifest.json +54 -0
- package/docs/design/systems/neumorphism/tokens.css +63 -0
- package/docs/design/systems/paper/DESIGN.md +71 -0
- package/docs/design/systems/paper/manifest.json +54 -0
- package/docs/design/systems/paper/tokens.css +63 -0
- package/docs/design/systems/perspective/DESIGN.md +71 -0
- package/docs/design/systems/perspective/manifest.json +54 -0
- package/docs/design/systems/perspective/tokens.css +63 -0
- package/docs/design/systems/premium/DESIGN.md +71 -0
- package/docs/design/systems/premium/manifest.json +54 -0
- package/docs/design/systems/premium/tokens.css +63 -0
- package/docs/design/systems/professional/DESIGN.md +71 -0
- package/docs/design/systems/professional/manifest.json +54 -0
- package/docs/design/systems/professional/tokens.css +63 -0
- package/docs/design/systems/publication/DESIGN.md +71 -0
- package/docs/design/systems/publication/manifest.json +54 -0
- package/docs/design/systems/publication/tokens.css +63 -0
- package/docs/design/systems/refined/DESIGN.md +71 -0
- package/docs/design/systems/refined/manifest.json +54 -0
- package/docs/design/systems/refined/tokens.css +63 -0
- package/docs/design/systems/retro/DESIGN.md +71 -0
- package/docs/design/systems/retro/manifest.json +54 -0
- package/docs/design/systems/retro/tokens.css +63 -0
- package/docs/design/systems/shadcn/DESIGN.md +71 -0
- package/docs/design/systems/shadcn/manifest.json +54 -0
- package/docs/design/systems/shadcn/tokens.css +255 -0
- package/docs/design/systems/simple/DESIGN.md +71 -0
- package/docs/design/systems/simple/manifest.json +54 -0
- package/docs/design/systems/simple/tokens.css +63 -0
- package/docs/design/systems/skeumorphism/DESIGN.md +71 -0
- package/docs/design/systems/skeumorphism/manifest.json +54 -0
- package/docs/design/systems/skeumorphism/tokens.css +63 -0
- package/docs/design/systems/sleek/DESIGN.md +71 -0
- package/docs/design/systems/sleek/manifest.json +54 -0
- package/docs/design/systems/sleek/tokens.css +63 -0
- package/docs/design/systems/spacious/DESIGN.md +71 -0
- package/docs/design/systems/spacious/manifest.json +54 -0
- package/docs/design/systems/spacious/tokens.css +63 -0
- package/docs/design/systems/storytelling/DESIGN.md +71 -0
- package/docs/design/systems/storytelling/manifest.json +54 -0
- package/docs/design/systems/storytelling/tokens.css +63 -0
- package/docs/design/systems/tom-modern/DESIGN.md +361 -0
- package/docs/design/systems/tom-modern/manifest.json +16 -0
- package/docs/design/systems/tom-modern/tokens.css +99 -0
- package/docs/design/systems/vibrant/DESIGN.md +71 -0
- package/docs/design/systems/vibrant/manifest.json +54 -0
- package/docs/design/systems/vibrant/tokens.css +63 -0
- package/docs/design/systems/vintage/DESIGN.md +71 -0
- package/docs/design/systems/vintage/manifest.json +54 -0
- package/docs/design/systems/vintage/tokens.css +63 -0
- package/docs/design/systems/warm-editorial/DESIGN.md +65 -0
- package/docs/design/systems/warm-editorial/manifest.json +54 -0
- package/docs/design/systems/warm-editorial/tokens.css +63 -0
- package/docs/goal-context/01-goal-authoring-checks.md +18 -0
- package/docs/goal-context/steward-directives-2026-09-28.md +44 -0
- package/graphs/catalog/catalog.yaml +615 -0
- package/graphs/default-loop.yaml +1 -1
- package/graphs/document-loop.yaml +1 -1
- package/graphs/examples/stale-draft-digest/digest.ts +26 -0
- package/graphs/examples/stale-draft-digest/recipes.yaml +8 -0
- package/graphs/examples/stale-draft-digest/stale-draft-digest.yaml +22 -0
- package/graphs/heal/heal-loop.yaml +155 -0
- package/graphs/heal/recipes.yaml +19 -0
- package/graphs/implement-loop.yaml +2 -2
- package/graphs/intake/intake-daily.yaml +55 -0
- package/graphs/intake/recipes.yaml +16 -0
- package/graphs/landing/landing-heal.yaml +22 -0
- package/graphs/landing/recipes.yaml +8 -0
- package/graphs/launch/launch-head.yaml +66 -0
- package/graphs/launch/recipes.yaml +8 -0
- package/graphs/operate-loop.yaml +1 -1
- package/graphs/ops/docs-publish.yaml +31 -0
- package/graphs/ops/recipes.yaml +8 -0
- package/graphs/release/recipes.yaml +38 -0
- package/graphs/release/release-loop.yaml +40 -0
- package/graphs/research-loop.yaml +1 -1
- package/graphs/steward/recipes.yaml +12 -0
- package/graphs/steward/steward.yaml +45 -0
- package/graphs/video/broll-line.yaml +54 -0
- package/package.json +7 -5
- package/plugins/job-coach/.agents/plugins/marketplace.json +12 -0
- package/plugins/job-coach/.codex-plugin/plugin.json +6 -0
- package/plugins/job-coach/.mcp.json +9 -0
- package/plugins/job-coach/README.md +20 -0
- package/plugins/job-coach/connectors/ncs/server.ts +89 -0
- package/plugins/job-coach/examples/interview-sample.md +11 -0
- package/plugins/job-coach/graphs/course-links.ts +46 -0
- package/plugins/job-coach/graphs/recipes.yaml +18 -0
- package/plugins/job-coach/graphs/report.yaml +20 -0
- package/plugins/job-coach/graphs/run-step.ts +108 -0
- package/plugins/job-coach/plugin.json +13 -0
- package/plugins/job-coach/plugin.ts +6 -0
- package/plugins/job-coach/skills/career-report/SKILL.md +6 -0
- package/plugins/job-coach/skills/interview-to-profile/SKILL.md +6 -0
- package/plugins/job-coach/skills/run-report/SKILL.md +15 -0
- package/scripts/backup/elanous-backup.sh +139 -13
- package/scripts/backup/elanous-restore.sh +122 -0
- package/scripts/ci-daemon-port-gate.ts +164 -0
- package/scripts/ci-typecheck-changed.ts +15 -1
- package/scripts/cli-json-exit-scan.ts +126 -0
- package/scripts/codex-quota-alert-format.ts +52 -0
- package/scripts/codex-quota-alert.ts +63 -13
- package/scripts/continuation-dogfood.ts +2 -1
- package/scripts/coord-channel-watch.sh +5 -5
- package/scripts/coord-tracks.json +5 -4
- package/scripts/cron-run.ts +37 -16
- package/scripts/daemon-port-baseline.txt +9 -0
- package/scripts/design/extract-corpus-bench.ts +469 -0
- package/scripts/design/extract-corpus-score.ts +510 -0
- package/scripts/design/vendor-open-design-systems.ts +100 -0
- package/scripts/docs-lint.ts +1 -1
- package/scripts/fleet/node-setup.sh +38 -4
- package/scripts/heal/run-role.ts +328 -0
- package/scripts/install-role-watch.sh +95 -0
- package/scripts/install.ps1 +11 -1
- package/scripts/install.sh +81 -9
- package/scripts/isolation-hardcode-baseline.txt +1 -1
- package/scripts/landing-heal/must-fix-match.ts +37 -0
- package/scripts/landing-heal/run-mission.ts +101 -0
- package/scripts/lib/pwa-scenarios/acp-replay.ts +79 -0
- package/scripts/lib/pwa-scenarios/cdp-driver.ts +67 -0
- package/scripts/lib/pwa-scenarios/runner.ts +200 -0
- package/scripts/lib/pwa-scenarios/scenarios.ts +202 -0
- package/scripts/market/db-check.ts +212 -0
- package/scripts/market-posture-cycle.ts +63 -4
- package/scripts/nightly-docops.ts +1 -1
- package/scripts/ops/channel-bot-token-migrate.ts +146 -0
- package/scripts/ops-health-check.ts +15 -3
- package/scripts/pty-scenarios/run.ts +272 -0
- package/scripts/public-leak-baseline.txt +0 -7
- package/scripts/publish-internal-dist.ts +119 -0
- package/scripts/pwa-scenarios.ts +106 -0
- package/scripts/rebrand-elanous.ts +1 -1
- package/scripts/release-loop/cutoff.ts +139 -0
- package/scripts/release-loop/docs-land-node.ts +65 -0
- package/scripts/release-loop/docs-node.ts +172 -0
- package/scripts/release-loop/gate-diff.ts +29 -0
- package/scripts/release-loop/gate-node.ts +353 -0
- package/scripts/release-loop/node-verdict.ts +85 -0
- package/scripts/release-loop/prepare-node.ts +31 -0
- package/scripts/release-loop/publish-node.ts +57 -0
- package/scripts/release-loop/pwa-node-verdict.ts +45 -0
- package/scripts/release-loop/pwa-scenarios-node.ts +140 -0
- package/scripts/release-loop/release-docs.ts +102 -0
- package/scripts/release-loop/tui-node-checks.ts +29 -0
- package/scripts/release-loop/tui-sim-node.ts +113 -0
- package/scripts/release-loop/upgrade-node.ts +25 -0
- package/scripts/release-loop/verify-node.ts +21 -0
- package/scripts/release-loop/version-node.ts +147 -0
- package/scripts/release-upgrade-check.sh +53 -0
- package/scripts/se-mission-prepare.ts +9 -15
- package/scripts/test-deterministic.ts +2 -1
- package/scripts/uninstall.sh +10 -3
- package/scripts/video-broll-line.ts +89 -0
- package/scripts/waitlist-daily-digest.ts +108 -0
- package/scripts/window-landings.sh +1 -1
- package/skills/motion-broll/LICENSE +25 -0
- package/skills/motion-broll/SKILL.md +150 -0
- package/skills/motion-broll/SOURCE.md +6 -0
- package/skills/motion-broll/engine/base.css +19 -0
- package/skills/motion-broll/engine/beats.js +11 -0
- package/skills/motion-broll/engine/build.py +21 -0
- package/skills/motion-broll/engine/fonts/Geist-Variable.woff2 +0 -0
- package/skills/motion-broll/engine/fonts/GeistMono-Medium.woff2 +0 -0
- package/skills/motion-broll/engine/fonts/OFL-Geist.txt +92 -0
- package/skills/motion-broll/engine/motion.js +146 -0
- package/skills/motion-broll/engine/render.js +22 -0
- package/skills/motion-broll/examples/opus-aoe2/01-opus-drop.html +41 -0
- package/skills/motion-broll/examples/opus-aoe2/02-pip-builds.html +110 -0
- package/skills/motion-broll/examples/opus-aoe2/03-effort-slider.html +38 -0
- package/skills/motion-broll/examples/opus-aoe2/04-master-prompt.html +56 -0
- package/skills/motion-broll/examples/opus-aoe2/05-low-vs-max.html +49 -0
- package/skills/motion-broll/examples/opus-aoe2/06-chapter.html +18 -0
- package/skills/motion-broll/examples/opus-aoe2/plan.json +14 -0
- package/skills/motion-broll/reference/engine-api.md +106 -0
- package/skills/motion-broll/scripts/composite.py +14 -0
- package/skills/motion-broll/scripts/inspect_video.py +34 -0
- package/skills/motion-broll/scripts/make_pages.py +34 -0
- package/skills/motion-broll/scripts/setup.sh +16 -0
- package/skills/motion-broll/scripts/words.py +13 -0
- package/skills/motion-broll/templates/compare.html +135 -0
- package/skills/motion-broll/templates/viewer.html +97 -0
- package/skills/omni-digest/SKILL.md +260 -0
- package/skills/omni-digest/digest.md +197 -0
- package/skills/omni-digest/docs/diagrams/noncode-terminal-promotion-path-2026-08-13.mmd +32 -0
- package/skills/omni-digest/package-lock.json +558 -0
- package/skills/omni-digest/package.json +13 -0
- package/skills/omni-digest/scripts/main.ts +404 -0
- package/skills/omni-digest/src/delegate.ts +34 -0
- package/skills/omni-digest/src/detect.ts +46 -0
- package/skills/omni-digest/src/diagram.ts +72 -0
- package/skills/omni-digest/src/domain-staging.ts +50 -0
- package/skills/omni-digest/src/env.ts +38 -0
- package/skills/omni-digest/src/fetch.ts +237 -0
- package/skills/omni-digest/src/media.ts +180 -0
- package/skills/omni-digest/src/obsidian.ts +69 -0
- package/skills/omni-digest/src/ocr.ts +149 -0
- package/skills/omni-digest/src/router.ts +60 -0
- package/skills/omni-digest/src/summarize.ts +87 -0
- package/skills/omni-digest/src/types.ts +124 -0
- package/skills/omni-digest/src/util.ts +34 -0
- package/skills/omni-digest/src/visual.ts +129 -0
- package/skills/omni-digest/src/x-api.ts +151 -0
- package/skills/omni-digest/tsconfig.json +13 -0
- package/src/a2a/agent-card.ts +29 -0
- package/src/a2a/server.ts +173 -0
- package/src/acp/auto-persist.ts +3 -6
- package/src/acp/backend-registry.ts +6 -10
- package/src/acp/channel-browser-shell.ts +1 -535
- package/src/acp/client.ts +106 -36
- package/src/acp/fs-roots.ts +20 -4
- package/src/acp/obsidian-tags.ts +6 -3
- package/src/acp/server.ts +189 -32
- package/src/agent/pty-binding.ts +1 -1
- package/src/agent/spawn-embodied-agent-in-vw.ts +5 -336
- package/src/agent/subagent-callable.ts +39 -1
- package/src/agent-mission/browser-login.ts +241 -0
- package/src/agent-mission/capabilities-cli.ts +33 -0
- package/src/agent-mission/capability-matrix.ts +31 -0
- package/src/agent-mission/capability-readers.ts +79 -0
- package/src/agent-mission/capability-types.ts +15 -0
- package/src/agent-mission/claude-headless.ts +131 -0
- package/src/agent-mission/claude-subscription.ts +57 -0
- package/src/agent-mission/doc-guided-install.ts +185 -0
- package/src/agent-mission/driver.ts +821 -69
- package/src/agent-mission/env-profile.ts +68 -0
- package/src/agent-mission/handoff.ts +128 -0
- package/src/agent-mission/in-agent-plugin.ts +311 -0
- package/src/agent-mission/mission-cli.ts +19 -1
- package/src/agent-mission/parse.ts +9 -4
- package/src/agent-mission/pr-review-watch.ts +62 -13
- package/src/agent-mission/resource-ladder.ts +187 -0
- package/src/agent-mission/tool-install.ts +249 -0
- package/src/agent-mission/tool-ladder.ts +37 -0
- package/src/agent-room/room-builder.ts +6 -600
- package/src/agent-substrate/review-intent.ts +43 -1
- package/src/auth/scope.ts +8 -4
- package/src/auth/temp-tokens.ts +131 -0
- package/src/auto-research/obsidian-bridge.ts +2 -0
- package/src/autopilot/build/integrity-gate.ts +27 -4
- package/src/autopilot/build/isolated-instance.ts +2 -1
- package/src/autopilot/build/llm-conflict-merge.ts +27 -0
- package/src/autopilot/llm-control-brain.ts +54 -12
- package/src/autopilot/mission-engine.ts +15 -1
- package/src/autopilot/mission-notify.ts +4 -2
- package/src/autopilot/mission-origin.ts +5 -5
- package/src/autopilot/mission-phase-track.ts +52 -0
- package/src/autopilot/mission-tool.ts +1 -1
- package/src/autopilot/pty-control-loop.ts +94 -2
- package/src/autopilot/track-agent.ts +138 -0
- package/src/autopilot/track-courier.ts +153 -0
- package/src/boot/acp-server.ts +16 -2
- package/src/boot/check-same-origin.ts +19 -5
- package/src/boot/daemon-multi-llm-runtime.ts +14 -8
- package/src/boot/daemon-prompt-turn.ts +2 -0
- package/src/boot/daemon-runtime.ts +36 -14
- package/src/boot/daemon-tools/index.ts +16 -0
- package/src/boot/daemon-tools/self-implement.ts +4 -0
- package/src/boot/daemon-tools/types.ts +3 -0
- package/src/browser-cdp/chrome-flags.ts +7 -0
- package/src/browser-cdp/client.ts +2 -0
- package/src/browser-pane/mount.ts +1 -246
- package/src/budget/codex-reset-credit-state.ts +15 -0
- package/src/budget/fetchers/codex.ts +2 -1
- package/src/budget/run-usage-rollup.ts +11 -4
- package/src/budget/unified-usage.ts +2 -1
- package/src/capture/tui-self-report.ts +10 -0
- package/src/channel-bot-token.ts +126 -0
- package/src/chat/index.ts +21 -45
- package/src/chat/input-text-key.ts +2 -2
- package/src/chat/mode/manual.ts +2 -4
- package/src/chat/pickers/state.ts +10 -27
- package/src/chat/search/modal.ts +14 -2
- package/src/chat/tool-render/types.ts +1 -1
- package/src/chat/turn-typeahead.ts +2 -1
- package/src/chat/wrap.ts +6 -8
- package/src/cli/__fixtures__/agent-help-before/agent.txt +18 -0
- package/src/cli/__fixtures__/agent-help-before/registry.txt +13 -0
- package/src/cli/__fixtures__/agent-help-before/root.txt +100 -0
- package/src/cli/__fixtures__/agent-help-before/tier.txt +15 -0
- package/src/cli/a2a-cli.ts +52 -0
- package/src/cli/agent-cli.ts +721 -0
- package/src/cli/autopilot-cli.ts +739 -0
- package/src/cli/bg-launch.ts +20 -4
- package/src/cli/claude-plugin-setup.ts +199 -0
- package/src/cli/config-test-sync.ts +94 -10
- package/src/cli/connector-cli.ts +204 -0
- package/src/cli/control-cli.ts +220 -0
- package/src/cli/control-join-cli.ts +142 -0
- package/src/cli/docs-cli.ts +38 -0
- package/src/cli/doctor-cli.ts +225 -26
- package/src/cli/doctor-distro.ts +17 -1
- package/src/cli/doctor-fix.ts +145 -17
- package/src/cli/doctor-llm-assist.ts +71 -0
- package/src/cli/doctor-private-files.ts +66 -0
- package/src/cli/doctor-readiness.ts +8 -5
- package/src/cli/fleet-cli.ts +63 -0
- package/src/cli/g6a-registration-probe.ts +16 -0
- package/src/cli/git-install-plan.ts +51 -0
- package/src/cli/hooks-cli.ts +44 -0
- package/src/cli/ingest-token-cli.ts +21 -0
- package/src/cli/intake-cli.ts +416 -0
- package/src/cli/labels-cli.ts +74 -0
- package/src/cli/leader-cli.ts +10 -159
- package/src/cli/live-cli.ts +48 -0
- package/src/cli/llm-detect-cli.ts +130 -0
- package/src/cli/logs-cli.ts +231 -7
- package/src/cli/machine-cli.ts +38 -0
- package/src/cli/mcp-call.ts +43 -13
- package/src/cli/mcp-gateway-cli.ts +90 -0
- package/src/cli/mcp-login.ts +116 -8
- package/src/cli/mcp-reload.ts +20 -3
- package/src/cli/nexus-dist.ts +18 -13
- package/src/cli/nexus-ios-bind.ts +20 -7
- package/src/cli/ops-cli.ts +225 -0
- package/src/cli/plugin-cli.ts +103 -0
- package/src/cli/pod-cli.ts +83 -0
- package/src/cli/port-lease-local.ts +124 -0
- package/src/cli/pr-cli.ts +12 -1
- package/src/cli/provider-cli.ts +720 -0
- package/src/cli/pty-record-cli.ts +63 -0
- package/src/cli/pty-takeover-cli.ts +57 -40
- package/src/cli/pty-web-address.ts +52 -0
- package/src/cli/publish-cli.ts +44 -0
- package/src/cli/pwa-build.ts +18 -12
- package/src/cli/pwa-dev.ts +13 -8
- package/src/cli/pwa-registry.ts +6 -0
- package/src/cli/pwa-share.ts +65 -22
- package/src/cli/pwa-show.ts +20 -4
- package/src/cli/pwa-start.ts +99 -27
- package/src/cli/pwa-test.ts +201 -96
- package/src/cli/release-cli.ts +90 -7
- package/src/cli/remotes-cli.ts +20 -1
- package/src/cli/remotes.ts +2 -1
- package/src/cli/repo-cli.ts +315 -36
- package/src/cli/research-cli.ts +66 -0
- package/src/cli/role-cli.ts +320 -0
- package/src/cli/schedule-cli.ts +246 -0
- package/src/cli/self-update.ts +98 -10
- package/src/cli/setup-cli.ts +64 -2
- package/src/cli/shadow-cli.ts +188 -0
- package/src/cli/share-auto-mount.ts +12 -8
- package/src/cli/start-cli.ts +221 -0
- package/src/cli/stdout-flush.ts +8 -0
- package/src/cli/storage-cli.ts +334 -0
- package/src/cli/tailscale-serve.ts +34 -19
- package/src/cli/tasks-cli.ts +176 -0
- package/src/cli/test-state-dir-flag.ts +1 -1
- package/src/cli/usage-cli.ts +15 -4
- package/src/cli/where-cli.ts +22 -55
- package/src/code-edit/diff-render.ts +6 -32
- package/src/code-edit/source-delta-browser.ts +0 -1
- package/src/codex/models.ts +1 -1
- package/src/config.ts +8 -13
- package/src/connectors/event-ledger.ts +41 -0
- package/src/connectors/linear-projector.ts +88 -0
- package/src/connectors/linear.ts +143 -0
- package/src/connectors/types.ts +19 -0
- package/src/control-plane/lease-holder.ts +41 -0
- package/src/control-plane/ledger.ts +146 -0
- package/src/control-plane/light-member.ts +164 -0
- package/src/control-plane/member-tokens.ts +88 -0
- package/src/control-plane/member.ts +159 -0
- package/src/control-plane/port-lease-heartbeat.ts +101 -0
- package/src/control-plane/ports.ts +40 -0
- package/src/control-plane/primary.ts +169 -0
- package/src/control-plane/server.ts +216 -0
- package/src/dashboard/acp-boot.ts +11 -38
- package/src/dashboard/assistant-render-state-runtime.ts +2 -2
- package/src/dashboard/assistant-sample-runtime.ts +2 -2
- package/src/dashboard/auto-compact-runtime.ts +11 -16
- package/src/dashboard/browser-help-runtime.ts +2 -3
- package/src/dashboard/chat/acp-chat.ts +2 -5
- package/src/dashboard/code-edit-post-turn-runtime.ts +1 -2
- package/src/dashboard/compact-surface-assembly.ts +0 -14
- package/src/dashboard/compact-surface-dispatch.ts +1 -38
- package/src/dashboard/compact-surface-inventory.ts +0 -8
- package/src/dashboard/compact-surface-runtime.ts +0 -14
- package/src/dashboard/context-menu-provider-boot.ts +0 -9
- package/src/dashboard/context-window-runtime-boot.ts +0 -37
- package/src/dashboard/index.ts +278 -2558
- package/src/dashboard/input/chat-main-plain-turn-runtime.ts +0 -6
- package/src/dashboard/input/chat-main-slash-command.ts +2 -2
- package/src/dashboard/input/dashboard-priority-key-route.ts +1 -43
- package/src/dashboard/input/mouse-modal-surface-runtime.ts +1 -5
- package/src/dashboard/input/mouse-wiring.ts +2 -3
- package/src/dashboard/layout-display-runtime-registration.ts +0 -10
- package/src/dashboard/modals/pane-multi.ts +1 -1
- package/src/dashboard/replay-preview.ts +1 -1
- package/src/dashboard/runtime/approvers.ts +0 -1
- package/src/dashboard/runtime/state-snapshot.ts +0 -90
- package/src/dashboard/scenario-runtime-boot.ts +16 -16
- package/src/dashboard/slash-runtime/dashboard-handlers.ts +134 -1456
- package/src/dashboard/slash-runtime/design-pick.ts +96 -0
- package/src/dashboard/slash-runtime/help-from-registry.ts +77 -0
- package/src/dashboard/surface-registry-wiring.ts +2 -15
- package/src/dashboard/turn-message-runtime.ts +0 -4
- package/src/dashboard/turn-preamble.ts +1 -1
- package/src/dashboard/turn-stream-formatter.ts +2 -2
- package/src/dashboard/turn-stream-runtime.ts +2 -2
- package/src/dashboard-pane-context-menu.ts +0 -14
- package/src/debug/log.ts +7 -0
- package/src/decide/boundary-shadow.ts +131 -0
- package/src/design/apply-direction.ts +209 -0
- package/src/design/css-root-tokens.ts +89 -0
- package/src/design/custom-system-create.ts +230 -0
- package/src/design/design-directions.ts +61 -41
- package/src/design/design-gate.ts +241 -0
- package/src/design/design-library.ts +57 -0
- package/src/design/design-previews.ts +138 -0
- package/src/design/design-systems.ts +61 -0
- package/src/design/lint-artifact-run.ts +46 -6
- package/src/design/lint-artifact.ts +5 -1
- package/src/design/open-design-client.ts +247 -0
- package/src/design/system-from-extract.ts +767 -0
- package/src/design/system-schema.ts +123 -0
- package/src/discord-slash-wire.ts +2 -1
- package/src/discord-test-runner.ts +2 -1
- package/src/discord-voice-wire.ts +2 -1
- package/src/discord.ts +1 -1
- package/src/dispatch/opportunistic-launcher.ts +24 -1
- package/src/domains/ops-status.ts +35 -2
- package/src/domains/outbound-alert.ts +16 -4
- package/src/domains/repeated-failure.ts +89 -0
- package/src/domains/schedule-manage-tool.ts +28 -8
- package/src/domains/schedule-migrate.ts +22 -4
- package/src/domains/schedule-registry.ts +88 -33
- package/src/domains/schedule-runs.ts +132 -0
- package/src/domains/schedule-state.ts +152 -0
- package/src/element-registry/address.ts +1 -3
- package/src/git-fs/gh-cli.ts +47 -17
- package/src/git-fs/retry.ts +1 -0
- package/src/git-fs/runner.ts +1 -0
- package/src/git-fs/worktree.ts +6 -5
- package/src/github/pr-labels.ts +68 -0
- package/src/graph-kinds/plugin-nodes.ts +60 -0
- package/src/graph-kinds/registry.ts +118 -0
- package/src/graph-runner/graph-cli.ts +103 -0
- package/src/graph-runner/graph-notify.ts +220 -0
- package/src/graph-runner/graph-tick.ts +119 -0
- package/src/graph-runner/release-manifest.ts +93 -0
- package/src/graph-runner/runner.ts +457 -0
- package/src/grok/credential.ts +158 -5
- package/src/grounding/ensure-grounding.ts +131 -0
- package/src/grounding/mirror-export.ts +89 -0
- package/src/grounding/mirror-manifest.ts +252 -0
- package/src/grounding/sources-cli.ts +209 -0
- package/src/grounding/sources.ts +333 -0
- package/src/grounding/token.ts +115 -0
- package/src/harness/harness-cli-command.ts +352 -19
- package/src/harness/harness-pod-dispatch.ts +110 -0
- package/src/harness/harness-stop.ts +131 -0
- package/src/harness/harness-substrate-default.ts +40 -0
- package/src/harness/harness-worktrees.ts +1 -1
- package/src/harness/harness-write-boundary.ts +2 -0
- package/src/harness/llm-decompose.ts +2 -1
- package/src/harness/self-send-decide.ts +224 -0
- package/src/harness/shell-relay.ts +5 -0
- package/src/hooks/providers.ts +77 -0
- package/src/hooks/queue.ts +73 -0
- package/src/hooks/receiver.ts +133 -0
- package/src/index.ts +666 -3406
- package/src/input-core/dispatcher.ts +1 -1
- package/src/input-core/drag-esc-interceptor.ts +1 -1
- package/src/instance/current.ts +5 -5
- package/src/instance/leader.ts +10 -326
- package/src/instance/nexus-run-refusal.ts +27 -92
- package/src/instance/project-local-exclude.ts +27 -0
- package/src/instance/resolve.ts +40 -175
- package/src/intake-plane/capture.ts +14 -1
- package/src/intake-plane/check.ts +34 -14
- package/src/intake-plane/collect-github.ts +258 -0
- package/src/intake-plane/collect-pod.ts +100 -0
- package/src/intake-plane/collect-telegram-saved.ts +86 -0
- package/src/intake-plane/digest.ts +102 -0
- package/src/intake-plane/enrich-plugins.ts +1 -1
- package/src/intake-plane/front-classifier.ts +56 -0
- package/src/intake-plane/front-route-classifier.ts +80 -0
- package/src/intake-plane/front-route-rules.ts +152 -0
- package/src/intake-plane/grounding-docs.ts +185 -0
- package/src/intake-plane/harness-target.ts +20 -0
- package/src/intake-plane/intake-to-tasks.ts +303 -0
- package/src/intake-plane/items.ts +247 -0
- package/src/intake-plane/link-ledger.ts +27 -0
- package/src/intake-plane/route.ts +104 -0
- package/src/intake-plane/runtime-callables.ts +3 -1
- package/src/intake-plane/sketch-ledger.ts +34 -0
- package/src/intake-plane/slash.ts +30 -2
- package/src/intake-plane/submit-intake-work.ts +160 -0
- package/src/intake-plane/telegram-work.ts +56 -0
- package/src/iul/sidebar-shell.ts +0 -165
- package/src/launch-head/capability-check.ts +162 -0
- package/src/launch-head/launch-head-cli.ts +242 -0
- package/src/launch-head/load-balance.ts +81 -0
- package/src/live/detail-switch.ts +175 -0
- package/src/llm/provider-detect.ts +247 -0
- package/src/llm/provider-probe.ts +57 -0
- package/src/llm.ts +55 -23
- package/src/log-entry.ts +1 -1
- package/src/log-pane/attachment-popup.ts +1 -2
- package/src/loops/loop-cli.ts +37 -0
- package/src/loops/registry.ts +174 -0
- package/src/market/official-keys.ts +5 -0
- package/src/market/publish.ts +273 -0
- package/src/market/signed-index.ts +156 -0
- package/src/market/tgz.ts +121 -0
- package/src/mcp/client.ts +1 -1
- package/src/mcp/mcp-oauth.ts +40 -5
- package/src/mcp/server.ts +75 -7
- package/src/mcp-gateway/gateway.ts +128 -0
- package/src/mcp-gateway/pat-store.ts +124 -0
- package/src/mss/logging/log-store.ts +91 -2
- package/src/mss/logging/scoped-level.ts +5 -9
- package/src/native-tool-catalog.ts +64 -343
- package/src/nexus/api/connect-info.ts +23 -25
- package/src/nexus/api/context-url.ts +1 -1
- package/src/nexus/api/design-check.ts +90 -59
- package/src/nexus/api/design-previews-route.ts +182 -0
- package/src/nexus/api/design-system-create-route.ts +123 -0
- package/src/nexus/api/graph-kinds.ts +69 -0
- package/src/nexus/api/graphs-api.ts +221 -0
- package/src/nexus/api/harness-api.ts +31 -2
- package/src/nexus/api/health.ts +15 -0
- package/src/nexus/api/http-server.ts +274 -43
- package/src/nexus/api/image-generate.ts +3 -0
- package/src/nexus/api/ingest-token.ts +175 -0
- package/src/nexus/api/intake-ledger-api.ts +54 -0
- package/src/nexus/api/intake-route.ts +111 -0
- package/src/nexus/api/json-response.ts +33 -0
- package/src/nexus/api/live-detail.ts +47 -0
- package/src/nexus/api/live-shipped.ts +78 -0
- package/src/nexus/api/log-fabric.ts +33 -2
- package/src/nexus/api/markdown-publish.ts +3 -2
- package/src/nexus/api/mcp-http.ts +14 -9
- package/src/nexus/api/mcp-oauth-hint.ts +30 -0
- package/src/nexus/api/mcp-public-allowlist.ts +33 -0
- package/src/nexus/api/merge-approvals-gate.ts +79 -0
- package/src/nexus/api/merge-approvals.ts +306 -0
- package/src/nexus/api/meta-api.ts +4 -0
- package/src/nexus/api/next-fluent-wiring.ts +7 -9
- package/src/nexus/api/plugins-market.ts +125 -0
- package/src/nexus/api/pod-credential-api.ts +133 -0
- package/src/nexus/api/public-routes.ts +80 -0
- package/src/nexus/api/rest-route-paths.ts +15 -0
- package/src/nexus/api/schedules-action.ts +12 -3
- package/src/nexus/api/schedules-read.ts +228 -0
- package/src/nexus/api/sessions-store.ts +8 -2
- package/src/nexus/api/setup-answer-priority.ts +130 -0
- package/src/nexus/api/setup-channel-bot.ts +56 -0
- package/src/nexus/api/setup-child-llm.ts +228 -0
- package/src/nexus/api/setup-obsidian-skills.ts +93 -0
- package/src/nexus/api/task-cards-api.ts +34 -0
- package/src/nexus/api/tasks-create.ts +136 -0
- package/src/nexus/api/telegram-trigger-bot.ts +3 -3
- package/src/nexus/api/terminals.ts +204 -18
- package/src/nexus/api/trace.ts +354 -0
- package/src/nexus/api/vault-api.ts +140 -7
- package/src/nexus/api/worktrees.ts +18 -2
- package/src/nexus/boot/register-mcp-clients.ts +38 -4
- package/src/nexus/daemon-endpoint.ts +85 -0
- package/src/nexus/default-port.ts +1 -0
- package/src/nexus/index.ts +329 -111
- package/src/nexus/onboarding/pwa-share-prompt.ts +31 -8
- package/src/nexus/onboarding/tailscale-probe.ts +9 -1
- package/src/nexus/setup-status.ts +58 -0
- package/src/nexus/supervisor/lock.ts +8 -0
- package/src/nexus/webterm/pty.ts +15 -0
- package/src/oauth/codex-account-rotation.ts +122 -16
- package/src/oauth/codex-account-store.ts +88 -19
- package/src/oauth/codex-quota-policy.ts +55 -0
- package/src/oauth/store.ts +28 -25
- package/src/obsidian/default-vault.ts +17 -0
- package/src/obsidian/vault-write-guard.ts +46 -0
- package/src/onboarding/help/llm.md +2 -2
- package/src/onboarding.ts +2 -2
- package/src/panes/alt-skip-predicate.ts +4 -3
- package/src/panes/external-terminal-pane.ts +3 -4
- package/src/panes/factory.ts +1 -18
- package/src/panes/index.ts +1 -5
- package/src/panes/pane-cycle.ts +1 -1
- package/src/panes/types.ts +1 -1
- package/src/platform/env-literal.ts +4 -0
- package/src/plugin-hooks/dispatcher.ts +10 -4
- package/src/plugins/core/host.ts +94 -4
- package/src/plugins/core/manifest.ts +104 -7
- package/src/plugins/install/market-fetch.ts +249 -0
- package/src/plugins/install/plugin-install.ts +387 -0
- package/src/policy/claude-subscription-guard.ts +25 -0
- package/src/preview/terminal.ts +24 -1
- package/src/preview-pane/mount.ts +1 -142
- package/src/prompt/references.ts +4 -51
- package/src/pty-shell/pty-control-ipc.ts +57 -3
- package/src/pty-shell/pty-mouse.ts +75 -0
- package/src/pty-shell/pty-recording.ts +108 -0
- package/src/pty-shell/registry.ts +53 -3
- package/src/python/resolve-python.ts +1 -1
- package/src/release-loop/manifest.ts +65 -0
- package/src/release-loop/release-note.ts +174 -0
- package/src/roles/lease-cas.ts +52 -0
- package/src/roles/machine-name.ts +48 -0
- package/src/roles/machine-profile.ts +65 -0
- package/src/roles/role-lease-read.ts +81 -0
- package/src/roles/role-lease.ts +63 -0
- package/src/roles/role-watch.ts +69 -0
- package/src/self-dev/ask-launch-flow.ts +39 -22
- package/src/self-dev/ask-launch-io.ts +1 -1
- package/src/self-dev/dev-cli.ts +250 -139
- package/src/self-dev/dev-pipeline.ts +80 -8
- package/src/self-dev/draft-sweep.ts +231 -0
- package/src/self-dev/draft-triage-rules.ts +42 -0
- package/src/self-dev/entrance-baseline.ts +156 -4
- package/src/self-dev/fabric-decompose-adapter.ts +10 -0
- package/src/self-dev/launch-preflight.ts +1 -1
- package/src/self-dev/orchestrate.ts +297 -20
- package/src/self-dev/repair-signals.ts +6 -0
- package/src/self-dev/run-store.ts +20 -5
- package/src/self-dev/run-supervisor.ts +43 -3
- package/src/self-implement/abandoned-classification.ts +15 -1
- package/src/self-implement/blocked-draft-policy.ts +6 -0
- package/src/self-implement/budget-gate.ts +236 -0
- package/src/self-implement/child-llm-preference.ts +84 -0
- package/src/self-implement/decision-events.ts +57 -0
- package/src/self-implement/decision-signal-press.ts +5 -2
- package/src/self-implement/dependency-change-gate.ts +90 -0
- package/src/self-implement/gate-baseline.ts +32 -1
- package/src/self-implement/gate-cli.ts +29 -7
- package/src/self-implement/gate-scope.ts +7 -1
- package/src/self-implement/goal-author-decompose.ts +22 -4
- package/src/self-implement/goal-author.ts +23 -2
- package/src/self-implement/goal-boundary.ts +65 -0
- package/src/self-implement/goal-clarification-escalation.ts +1 -0
- package/src/self-implement/goal-documents-dir.ts +6 -1
- package/src/self-implement/goal-execution-records.ts +58 -0
- package/src/self-implement/goal-run-store.ts +42 -24
- package/src/self-implement/graph-authority.ts +13 -28
- package/src/self-implement/graph-catalog.ts +48 -0
- package/src/self-implement/graph-run-contract.ts +127 -0
- package/src/self-implement/graph-templates.ts +14 -7
- package/src/self-implement/graph-yaml.ts +35 -6
- package/src/self-implement/harness-policy-gates.ts +42 -0
- package/src/self-implement/headless-elanous-driver.ts +30 -6
- package/src/self-implement/heal-triage.ts +229 -0
- package/src/self-implement/host-regate.ts +240 -0
- package/src/self-implement/non-git-consent.ts +23 -0
- package/src/self-implement/orchestrator.ts +481 -132
- package/src/self-implement/pipeline-shape.ts +1 -1
- package/src/self-implement/pr-evidence-artifact.ts +6 -19
- package/src/self-implement/prior-draft-findings.ts +128 -0
- package/src/self-implement/pwa-import-graph.ts +65 -0
- package/src/self-implement/repo-provision.ts +18 -21
- package/src/self-implement/report-origin.ts +39 -0
- package/src/self-implement/rework-policy.ts +21 -0
- package/src/self-implement/run-ledger-compact.ts +438 -0
- package/src/self-implement/run-ledger.ts +212 -29
- package/src/self-implement/run-report.ts +24 -0
- package/src/self-implement/run-status-mapping.ts +2 -0
- package/src/self-implement/running-runs.ts +112 -14
- package/src/self-implement/scoped-typecheck-config.ts +49 -0
- package/src/self-implement/seams.ts +203 -38
- package/src/self-implement/self-implement-cli.ts +17 -2
- package/src/self-implement/shadow-repo.ts +350 -0
- package/src/self-implement/supervision-vocabulary.ts +7 -0
- package/src/shell-runner/dispatch.ts +3 -0
- package/src/shell-runner/index.ts +0 -7
- package/src/skills/runner.ts +0 -69
- package/src/skills/tools/agent-room-slash.ts +2 -1
- package/src/skills/tools/agent-room.ts +8 -140
- package/src/skills/tools/agent.ts +5 -3
- package/src/skills/tools/context.ts +5 -140
- package/src/skills/tools/control.ts +4 -188
- package/src/skills/tools/dashboard-slash.ts +3 -11
- package/src/skills/tools/dashboard-state.ts +3 -5
- package/src/skills/tools/dev-harness.ts +3 -2
- package/src/skills/tools/omni-search.ts +29 -1
- package/src/skills/tools/shell.ts +11 -29
- package/src/skills/tools/spawn-coding-agent-headless.ts +6 -9
- package/src/ssh/ssh-picker-modal.ts +1 -1
- package/src/steward/directive.ts +99 -0
- package/src/steward/triage.ts +203 -0
- package/src/storage/cli-bin.ts +67 -0
- package/src/storage/object-store-visibility.ts +169 -0
- package/src/storage/object-store.ts +452 -0
- package/src/storage/s3.ts +53 -10
- package/src/storage/storage-detect.ts +337 -0
- package/src/surface/address.ts +3 -5
- package/src/surface/index.ts +0 -6
- package/src/surface/llm-tools.ts +1 -2
- package/src/surface/shell-runner-boot.ts +4 -89
- package/src/task-cards/card-cli.ts +64 -0
- package/src/task-cards/card-store.ts +241 -0
- package/src/task-orchestrator/boot.ts +27 -1
- package/src/task-orchestrator/dispatcher.ts +49 -7
- package/src/task-orchestrator/external-fingerprint.ts +10 -0
- package/src/task-orchestrator/external-policy.ts +86 -0
- package/src/task-orchestrator/feedback-loop.ts +4 -2
- package/src/task-orchestrator/graph.ts +18 -1
- package/src/task-orchestrator/runtimes/create.ts +128 -0
- package/src/task-orchestrator/store.ts +78 -18
- package/src/task-orchestrator/surface-registry.ts +5 -2
- package/src/task-orchestrator/surfaces/external-exec.ts +180 -0
- package/src/task-orchestrator/surfaces/idea-approval-pr.ts +118 -0
- package/src/task-orchestrator/surfaces/index.ts +4 -3
- package/src/task-orchestrator/surfaces/pod-account-broker.ts +60 -5
- package/src/task-orchestrator/surfaces/pod-artifact-return.ts +136 -0
- package/src/task-orchestrator/surfaces/pod-command-job.ts +348 -0
- package/src/task-orchestrator/surfaces/pod-ledger-collect.ts +177 -0
- package/src/task-orchestrator/surfaces/pod-pool.ts +128 -12
- package/src/task-orchestrator/surfaces/pod-skills.ts +11 -3
- package/src/task-orchestrator/surfaces/pod-source-bundle.ts +132 -0
- package/src/task-orchestrator/surfaces/pod-source-receive.ts +91 -0
- package/src/task-orchestrator/surfaces/pod-source-spec.ts +77 -0
- package/src/task-orchestrator/surfaces/self-implement-pod.ts +782 -41
- package/src/task-orchestrator/surfaces/self-implement.ts +8 -1
- package/src/task-orchestrator/tox-loop.ts +204 -0
- package/src/task-orchestrator/types.ts +21 -1
- package/src/telegram-commands.ts +8 -0
- package/src/telegram-report.ts +2 -1
- package/src/telegram-run.ts +18 -5
- package/src/telegram.ts +92 -22
- package/src/tool-runtime/acp-session-runtime.ts +28 -7
- package/src/tool-runtime/agent-runtime.ts +1 -0
- package/src/tool-runtime/context-runtime.ts +18 -35
- package/src/tool-runtime/control-runtime.ts +8 -21
- package/src/tool-runtime/dashboard-state-runtime.ts +1 -5
- package/src/tool-runtime/elanous-asana-runtimes.ts +205 -0
- package/src/tool-runtime/elanous-control-runtimes.ts +16 -2
- package/src/tool-runtime/elanous-task-submit-runtime.ts +124 -0
- package/src/tool-runtime/index.ts +4 -1
- package/src/tool-runtime/scenario-runtimes.ts +22 -21
- package/src/tool-runtime/scenario-target-mount.ts +6 -32
- package/src/tool-runtime/types.ts +8 -0
- package/src/tui/chat/attachment-summary.ts +4 -4
- package/src/tui-client/headless-core-guard.ts +0 -1
- package/src/tui.ts +8 -5
- package/src/typecheck-ratchet.ts +15 -0
- package/src/ui/hover-presenter.ts +3 -7
- package/src/user-config.ts +427 -190
- package/src/version/code-revision.ts +33 -8
- package/src/version/packed-revision.json +1 -1
- package/src/video-pipeline/broll-agent.ts +102 -0
- package/src/video-pipeline/recipes/broll.ts +263 -0
- package/src/video-pipeline/walk-line.ts +2 -1
- package/src/views/scratch-image-size.ts +10 -0
- package/src/voice/channel-adapters/pwa-voice-adapter.ts +2 -18
- package/src/voice/channel-adapters/telegram-voice-adapter.ts +1 -6
- package/src/voice/voice-tts-singleton.ts +46 -8
- package/src/web-push/vapid-keys.ts +1 -1
- package/src/web-search/index.ts +5 -5
- package/src/web-terminal/preview-tap-registry.ts +152 -43
- package/src/workflow-runtime/executor.ts +18 -22
- package/src/workflow-runtime/node-catalog.ts +20 -1
- package/src/workflow-runtime/nodes/bash.ts +1 -0
- package/src/workflow-runtime/nodes/task.ts +74 -0
- package/src/workflow-runtime/nodes/triggers.ts +24 -1
- package/src/workflow-runtime/plugin-kind-node.ts +138 -0
- package/src/workflow-runtime/schema.ts +98 -2
- package/src/workflow-runtime/triggers/webhook-router.ts +43 -3
- package/src/workflow-runtime/triggers/webhook-source.ts +19 -1
- package/src/workflow-runtime/types.ts +74 -4
- package/apps/pwa/out/_next/static/Ksn99fVf2HUWhSyV1-FC8/_buildManifest.js +0 -1
- package/apps/pwa/out/_next/static/chunks/1176-4943bd83b00e53a2.js +0 -25
- package/apps/pwa/out/_next/static/chunks/1380-9c652e1002032c86.js +0 -1
- package/apps/pwa/out/_next/static/chunks/1863-2ea170dfec26b88b.js +0 -1
- package/apps/pwa/out/_next/static/chunks/2091-2d6b7f4f16300f83.js +0 -1
- package/apps/pwa/out/_next/static/chunks/2347-366617ec73babe3b.js +0 -1
- package/apps/pwa/out/_next/static/chunks/2598.814f64e3268634e7.js +0 -1
- package/apps/pwa/out/_next/static/chunks/3089-e60cc8f5d35ee239.js +0 -1
- package/apps/pwa/out/_next/static/chunks/3158-c77ed9ea34f9cc9f.js +0 -1
- package/apps/pwa/out/_next/static/chunks/3607-f0b5c5ee18fcf56a.js +0 -1
- package/apps/pwa/out/_next/static/chunks/3659-05b2d5d971b42dbc.js +0 -1
- package/apps/pwa/out/_next/static/chunks/3736-b6a7bfdcb8f56ec6.js +0 -1
- package/apps/pwa/out/_next/static/chunks/3839-eebf298e89a7bb77.js +0 -1
- package/apps/pwa/out/_next/static/chunks/4012.832a2824b978e7ee.js +0 -5
- package/apps/pwa/out/_next/static/chunks/4706-d85d7f3345f3ff91.js +0 -1
- package/apps/pwa/out/_next/static/chunks/526-17a6a2e0e6dc4498.js +0 -1
- package/apps/pwa/out/_next/static/chunks/5508-676ac75f2757ad40.js +0 -1
- package/apps/pwa/out/_next/static/chunks/5583-8a0317f4b8e68db9.js +0 -1
- package/apps/pwa/out/_next/static/chunks/5927.8378481a12cc8044.js +0 -1
- package/apps/pwa/out/_next/static/chunks/6258-b58f722b10e8d31d.js +0 -1
- package/apps/pwa/out/_next/static/chunks/6820-32fd097e6186fdc9.js +0 -1
- package/apps/pwa/out/_next/static/chunks/6852-983db7ca958634b7.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7235-e583e4a015e159b9.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7482-7b417330b24a996a.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7701-99b7d4dedb955bf8.js +0 -1
- package/apps/pwa/out/_next/static/chunks/77f1928d-bd3777589042d3ea.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8366-36956cafc5e33614.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8370-23d0de995be666f8.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8617-307421f3b0e8b2a2.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8837-e45de46a9fedf1f5.js +0 -1
- package/apps/pwa/out/_next/static/chunks/9058-0e8055a5ea3ebdd6.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/_not-found/page-84b84eca12acada4.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/autopilot/page-1f23568c29e88f7a.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/botlab/page-bf6fc9aafd6135a7.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/bots/page-3f8539ae4b719d2e.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/chat/page-d2900febb74ecf32.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/control/page-e82dec647dd79c36.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/dashboard/page-096ec743a8ee955a.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/design-check/page-255c2ceded4b3493.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/healthz/route-84b84eca12acada4.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/intake/page-2db61b2f9efba61f.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/layout-e11ee17f221aaa9b.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/missions/[id]/page-e075974e029ce4c4.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/morning/page-ec5b68a9af3366a0.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/not-found-986c177afb4adae6.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/observatory/page-a72781461af2f2a3.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/page-92781cbaafc487ad.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/reflection/page-2c14d2a1f2930f33.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/scheduler/page-22ee4bf8070b2b4d.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/sessions/page-9c06e4a8297942a8.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/settings/devices/page-d0cd32f6d373798f.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/settings/page-0c1642018d87ebb8.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/setup/done/page-93e5e97d614df487.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/setup/layout-84b84eca12acada4.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/setup/page-b1ce871940d7393e.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/share/page-ae154addf345febe.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/showroom/page-90af3aa813d2053c.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/tasks/page-f3f962fda428a738.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/term/page-1c1f7cc1d5def06d.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/vault/page-09d4cbdaaacf06c1.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-e877b8e8ca90b27f.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/workflows/page-71d902f463dea526.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/workspace/page-40ea576cefa25fe6.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/worktrees/page-a56a3f178c3831f6.js +0 -1
- package/apps/pwa/out/_next/static/chunks/bcc499d1-804a270d878e0842.js +0 -1
- package/apps/pwa/out/_next/static/chunks/framework-b25b7c5501c59b6d.js +0 -1
- package/apps/pwa/out/_next/static/chunks/main-a9ec9da43387afff.js +0 -1
- package/apps/pwa/out/_next/static/chunks/main-app-aa2c05954aaa6754.js +0 -1
- package/apps/pwa/out/_next/static/chunks/pages/_app-bb3768fb4b84aebb.js +0 -1
- package/apps/pwa/out/_next/static/chunks/pages/_error-2820ba75b87b2f5e.js +0 -1
- package/apps/pwa/out/_next/static/chunks/webpack-58c73b145f189b1c.js +0 -1
- package/apps/pwa/out/_next/static/css/effec8adf767aa75.css +0 -1
- package/apps/pwa/out/dashboard/index.html +0 -1
- package/apps/pwa/out/dashboard/index.txt +0 -26
- package/src/acp/resident-shell.ts +0 -244
- package/src/agent/spawn-local-llm-in-vw.ts +0 -240
- package/src/dashboard/agent-spawn-tools-boot.ts +0 -14
- package/src/dashboard/dock-picker-inventory.ts +0 -41
- package/src/dashboard/goal-plan-hud-bridge.ts +0 -112
- package/src/dashboard/hud-mirror.ts +0 -207
- package/src/dashboard/input/mouse-dock-runtime.ts +0 -156
- package/src/dashboard/input/mouse-hover-runtime.ts +0 -46
- package/src/dashboard/input/mouse-pill-context-runtime.ts +0 -74
- package/src/dashboard/input/mouse-workspace-restore-runtime.ts +0 -64
- package/src/dashboard/input/scratch-actions.ts +0 -36
- package/src/dashboard/input/virtual-window-key-router.ts +0 -24
- package/src/dashboard/rich-scratch-viewers.ts +0 -77
- package/src/dashboard/scratch-slash-runtime.ts +0 -36
- package/src/dashboard/scratch-state-runtime.ts +0 -42
- package/src/dashboard/scratch-widget-runtime.ts +0 -37
- package/src/dashboard/sim-shell.ts +0 -313
- package/src/dashboard/virtual-window-control-runtime.ts +0 -57
- package/src/dashboard/virtual-window-help-runtime.ts +0 -113
- package/src/dashboard/virtual-window-input-runtime.ts +0 -99
- package/src/dashboard/virtual-window-mutation-runtime.ts +0 -102
- package/src/dashboard/virtual-window-split-runtime.ts +0 -70
- package/src/dashboard/vw-popup-openers.ts +0 -126
- package/src/dashboard/window-picker-popup.ts +0 -74
- package/src/dashboard/window-slash-runtime.ts +0 -108
- package/src/dashboard/windowing/companion-slash.ts +0 -78
- package/src/dashboard/windowing/fast-switch.ts +0 -138
- package/src/dashboard/windowing/lifecycle.ts +0 -185
- package/src/dashboard/windowing/virtual-windows.ts +0 -259
- package/src/dashboard/windowing/visibility-chord.ts +0 -77
- package/src/iul/resident-vw.ts +0 -55
- package/src/panes/content-adapter.ts +0 -162
- package/src/prompt/vw-reference.ts +0 -153
- package/src/shell-runner/external-terminal-pane.ts +0 -157
- package/src/sim/resident-vw.ts +0 -48
- package/src/skills/tools/spawn-coding-agent-vw.ts +0 -181
- package/src/skills/tools/virtual-windows.ts +0 -632
- package/src/surface/adapters/window-surface-adapter.ts +0 -141
- package/src/tool-runtime/layout-runtimes.ts +0 -81
- package/src/tool-runtime/scenario-window-mount.ts +0 -207
- package/src/views/ui-mode.ts +0 -100
- package/src/virtual-window-context-menu.ts +0 -97
- package/src/virtual-windows/addressing.ts +0 -195
- package/src/virtual-windows/benchmark-preset.ts +0 -119
- package/src/virtual-windows/event-bus.ts +0 -202
- package/src/virtual-windows/layout/apply-planner.ts +0 -189
- package/src/virtual-windows/layout/index.ts +0 -68
- package/src/virtual-windows/layout/layout-commands.ts +0 -186
- package/src/virtual-windows/layout/layout-tools.ts +0 -262
- package/src/virtual-windows/layout/persistence.ts +0 -219
- package/src/virtual-windows/layout/presets.ts +0 -114
- package/src/virtual-windows/layout/restore-planner.ts +0 -223
- package/src/virtual-windows/layout/serializer.ts +0 -197
- package/src/virtual-windows/layout/tree.ts +0 -147
- package/src/virtual-windows/layout/types.ts +0 -63
- package/src/virtual-windows/layout-tree.ts +0 -389
- package/src/virtual-windows/navigation.ts +0 -251
- package/src/virtual-windows/pane-capture.ts +0 -142
- package/src/virtual-windows/pane-content.ts +0 -611
- package/src/virtual-windows/pane-spawner.ts +0 -278
- package/src/virtual-windows/pty-tail-content.ts +0 -291
- package/src/virtual-windows/resident-window.ts +0 -59
- package/src/virtual-windows/secondary-action.ts +0 -25
- package/src/virtual-windows/terminal-slot-content.ts +0 -165
- package/src/virtual-windows/virtual-window.ts +0 -1301
- package/src/virtual-windows/vw-local-input-target-popup.ts +0 -110
- package/src/virtual-windows/vw-rename-modal.ts +0 -77
- package/src/virtual-windows/vw-selector-popup.ts +0 -177
- package/src/virtual-windows/window-registry.ts +0 -519
- package/src/voice/channel-adapters/discord-voice-adapter.ts +0 -202
- package/src/voice/voice-pwa-dispatch.ts +0 -245
- package/src/window-picker-modal.ts +0 -135
- /package/apps/pwa/out/_next/static/{Ksn99fVf2HUWhSyV1-FC8 → zoQX5iTvXOsIvCjxCe1Ji}/_ssgManifest.js +0 -0
- /package/src/dashboard/{companion-slash-runtime.ts → companion-messages-runtime.ts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6987],{58505:(e,t,n)=>{n.d(t,{Gc:()=>th,H2:()=>tj,Pj:()=>f,VH:()=>ee,VS:()=>tS,_5:()=>o,h7:()=>ev});var o,l=n(41121),r=n(91269),a=n(23271),i=n(44251),s=n(94100),d=n(93345);n(65032);let c=(0,r.createContext)(null),u=c.Provider,g=i.xc.error001();function f(e,t){let n=(0,r.useContext)(c);if(null===n)throw Error(g);return(0,s.n)(n,e,t)}function p(){let e=(0,r.useContext)(c);if(null===e)throw Error(g);return(0,r.useMemo)(()=>({getState:e.getState,setState:e.setState,subscribe:e.subscribe}),[e])}let h={display:"none"},m={position:"absolute",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",clipPath:"inset(100%)"},v="react-flow__node-desc",y="react-flow__edge-desc",b=e=>e.ariaLiveMessage,x=e=>e.ariaLabelConfig;function S(e){let{rfId:t}=e,n=f(b);return(0,l.jsx)("div",{id:"".concat("react-flow__aria-live","-").concat(t),"aria-live":"assertive","aria-atomic":"true",style:m,children:n})}function w(e){let{rfId:t,disableKeyboardA11y:n}=e,o=f(x);return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("div",{id:"".concat(v,"-").concat(t),style:h,children:n?o["node.a11yDescription.default"]:o["node.a11yDescription.keyboardDisabled"]}),(0,l.jsx)("div",{id:"".concat(y,"-").concat(t),style:h,children:o["edge.a11yDescription.default"]}),!n&&(0,l.jsx)(S,{rfId:t})]})}let C=(0,r.forwardRef)((e,t)=>{let{position:n="top-left",children:o,className:r,style:i,...s}=e,d="".concat(n).split("-");return(0,l.jsx)("div",{className:(0,a.A)(["react-flow__panel",r,...d]),style:i,ref:t,...s,children:o})});function E(e){let{proOptions:t,position:n="bottom-right"}=e;return(null==t?void 0:t.hideAttribution)?null:(0,l.jsx)(C,{position:n,className:"react-flow__attribution","data-message":"Please only hide this attribution when you are subscribed to React Flow Pro: https://pro.reactflow.dev",children:(0,l.jsx)("a",{href:"https://reactflow.dev",target:"_blank",rel:"noopener noreferrer","aria-label":"React Flow attribution",children:"React Flow"})})}C.displayName="Panel";let N=e=>{let t=[],n=[];for(let[,n]of e.nodeLookup)n.selected&&t.push(n.internals.userNode);for(let[,t]of e.edgeLookup)t.selected&&n.push(t);return{selectedNodes:t,selectedEdges:n}},k=e=>e.id;function M(e,t){return(0,d.x)(e.selectedNodes.map(k),t.selectedNodes.map(k))&&(0,d.x)(e.selectedEdges.map(k),t.selectedEdges.map(k))}function P(e){let{onSelectionChange:t}=e,n=p(),{selectedNodes:o,selectedEdges:l}=f(N,M);return(0,r.useEffect)(()=>{let e={nodes:o,edges:l};null==t||t(e),n.getState().onSelectionChangeHandlers.forEach(t=>t(e))},[o,l,t]),null}let D=e=>!!e.onSelectionChangeHandlers;function j(e){let{onSelectionChange:t}=e,n=f(D);return t||n?(0,l.jsx)(P,{onSelectionChange:t}):null}let A="undefined"!=typeof window?r.useLayoutEffect:r.useEffect,_=[0,0],I={x:0,y:0,zoom:1},O=["nodes","edges","defaultNodes","defaultEdges","onConnect","onConnectStart","onConnectEnd","onClickConnectStart","onClickConnectEnd","nodesDraggable","autoPanOnNodeFocus","nodesConnectable","nodesFocusable","edgesFocusable","edgesReconnectable","elevateNodesOnSelect","elevateEdgesOnSelect","minZoom","maxZoom","nodeExtent","onNodesChange","onEdgesChange","elementsSelectable","connectionMode","snapGrid","snapToGrid","translateExtent","connectOnClick","defaultEdgeOptions","fitView","fitViewOptions","onNodesDelete","onEdgesDelete","onDelete","onNodeDrag","onNodeDragStart","onNodeDragStop","onSelectionDrag","onSelectionDragStart","onSelectionDragStop","onMoveStart","onMove","onMoveEnd","noPanClassName","nodeOrigin","autoPanOnConnect","autoPanOnNodeDrag","onError","connectionRadius","isValidConnection","selectNodesOnDrag","nodeDragThreshold","connectionDragThreshold","onBeforeDelete","debug","autoPanSpeed","ariaLabelConfig","zIndexMode","rfId"],R=e=>({setNodes:e.setNodes,setEdges:e.setEdges,setMinZoom:e.setMinZoom,setMaxZoom:e.setMaxZoom,setTranslateExtent:e.setTranslateExtent,setNodeExtent:e.setNodeExtent,reset:e.reset,setDefaultNodesAndEdges:e.setDefaultNodesAndEdges}),L={translateExtent:i.ZO,nodeOrigin:_,minZoom:.5,maxZoom:2,elementsSelectable:!0,noPanClassName:"nopan",rfId:"1"};function z(e){let{setNodes:t,setEdges:n,setMinZoom:o,setMaxZoom:l,setTranslateExtent:a,setNodeExtent:s,reset:c,setDefaultNodesAndEdges:u}=f(R,d.x),g=p();A(()=>(u(e.defaultNodes,e.defaultEdges),()=>{h.current=L,c()}),[]);let h=(0,r.useRef)(L);return A(()=>{for(let r of O){let d=e[r];d!==h.current[r]&&void 0!==e[r]&&("nodes"===r?t(d):"edges"===r?n(d):"minZoom"===r?o(d):"maxZoom"===r?l(d):"translateExtent"===r?a(d):"nodeExtent"===r?s(d):"ariaLabelConfig"===r?g.setState({ariaLabelConfig:(0,i.Q6)(d)}):"fitView"===r?g.setState({fitViewQueued:d}):"fitViewOptions"===r?g.setState({fitViewOptions:d}):g.setState({[r]:d}))}h.current=e},O.map(t=>e[t])),null}function B(){return"undefined"!=typeof window&&window.matchMedia?window.matchMedia("(prefers-color-scheme: dark)"):null}let V="undefined"!=typeof document?document:null;function H(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{target:V,actInsideInputWithModifier:!0},[n,o]=(0,r.useState)(!1),l=(0,r.useRef)(!1),a=(0,r.useRef)(new Set([])),[s,d]=(0,r.useMemo)(()=>{if(null!==e){let t=(Array.isArray(e)?e:[e]).filter(e=>"string"==typeof e).map(e=>e.replace("+","\n").replace("\n\n","\n+").split("\n")),n=t.reduce((e,t)=>e.concat(...t),[]);return[t,n]}return[[],[]]},[e]);return(0,r.useEffect)(()=>{var n,r;let c=null!=(n=null==t?void 0:t.target)?n:V,u=null==(r=null==t?void 0:t.actInsideInputWithModifier)||r;if(null!==e){let e=e=>{if(l.current=e.ctrlKey||e.metaKey||e.shiftKey||e.altKey,(!l.current||l.current&&!u)&&(0,i.v5)(e))return!1;let n=F(e.code,d);if(a.current.add(e[n]),T(s,a.current,!1)){var r,c;let n=(null==(c=e.composedPath)||null==(r=c.call(e))?void 0:r[0])||e.target,a=(null==n?void 0:n.nodeName)==="BUTTON"||(null==n?void 0:n.nodeName)==="A";!1!==t.preventDefault&&(l.current||!a)&&e.preventDefault(),o(!0)}},n=e=>{let t=F(e.code,d);T(s,a.current,!0)?(o(!1),a.current.clear()):a.current.delete(e[t]),"Meta"===e.key&&a.current.clear(),l.current=!1},r=()=>{a.current.clear(),o(!1)};return null==c||c.addEventListener("keydown",e),null==c||c.addEventListener("keyup",n),window.addEventListener("blur",r),window.addEventListener("contextmenu",r),()=>{null==c||c.removeEventListener("keydown",e),null==c||c.removeEventListener("keyup",n),window.removeEventListener("blur",r),window.removeEventListener("contextmenu",r)}}},[e,o]),n}function T(e,t,n){return e.filter(e=>n||e.length===t.size).some(e=>e.every(e=>t.has(e)))}function F(e,t){return t.includes(e)?"code":"key"}function Z(e,t){let n=[],o=new Map,l=[];for(let t of e)if("add"===t.type){l.push(t);continue}else if("remove"===t.type||"replace"===t.type)o.set(t.id,[t]);else{let e=o.get(t.id);e?e.push(t):o.set(t.id,[t])}for(let e of t){let t=o.get(e.id);if(!t){n.push(e);continue}if("remove"===t[0].type)continue;if("replace"===t[0].type){n.push({...t[0].item});continue}let l={...e};for(let e of t){var r=e,a=l;switch(r.type){case"select":a.selected=r.selected;break;case"position":void 0!==r.position&&(a.position=r.position),void 0!==r.dragging&&(a.dragging=r.dragging);break;case"dimensions":void 0!==r.dimensions&&(a.measured={...r.dimensions},r.setAttributes&&((!0===r.setAttributes||"width"===r.setAttributes)&&(a.width=r.dimensions.width),(!0===r.setAttributes||"height"===r.setAttributes)&&(a.height=r.dimensions.height))),"boolean"==typeof r.resizing&&(a.resizing=r.resizing)}}n.push(l)}return l.length&&l.forEach(e=>{void 0!==e.index?n.splice(e.index,0,{...e.item}):n.push({...e.item})}),n}function X(e,t){return{id:e,type:"select",selected:t}}function K(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new Set,n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=[];for(let[l,r]of e){let e=t.has(l);(void 0!==r.selected||e)&&r.selected!==e&&(n&&(r.selected=e),o.push(X(r.id,e)))}return o}function W(e){let{items:t=[],lookup:n}=e,o=[],l=new Map(t.map(e=>[e.id,e]));for(let[e,l]of t.entries()){var r,a;let t=n.get(l.id),i=null!=(a=null==t||null==(r=t.internals)?void 0:r.userNode)?a:t;void 0!==i&&i!==l&&o.push({id:l.id,item:l,type:"replace"}),void 0===i&&o.push({item:l,type:"add",index:e})}for(let[e]of n)void 0===l.get(e)&&o.push({id:e,type:"remove"});return o}function Y(e){return{id:e.id,type:"remove"}}let Q=e=>(0,i.oB)(e);function U(e){return(0,r.forwardRef)(e)}function G(e){let[t,n]=(0,r.useState)(BigInt(0)),[o]=(0,r.useState)(()=>{var e;let t;return e=()=>n(e=>e+BigInt(1)),t=[],{get:()=>t,reset:()=>{t=[]},push:n=>{t.push(n),e()}}});return A(()=>{let t=o.get();t.length&&(e(t),o.reset())},[t]),o}let q=(0,r.createContext)(null);function $(e){let{children:t}=e,n=p(),o=G((0,r.useCallback)(e=>{let{nodes:t=[],setNodes:o,hasDefaultNodes:l,onNodesChange:r,nodeLookup:a,fitViewQueued:i,onNodesChangeMiddlewareMap:s}=n.getState(),d=t;for(let t of e)d="function"==typeof t?t(d):t;let c=W({items:d,lookup:a});for(let e of s.values())c=e(c);l&&o(d),c.length>0?null==r||r(c):i&&window.requestAnimationFrame(()=>{let{fitViewQueued:e,nodes:t,setNodes:o}=n.getState();e&&o(t)})},[])),a=G((0,r.useCallback)(e=>{let{edges:t=[],setEdges:o,hasDefaultEdges:l,onEdgesChange:r,edgeLookup:a}=n.getState(),i=t;for(let t of e)i="function"==typeof t?t(i):t;l?o(i):r&&r(W({items:i,lookup:a}))},[])),i=(0,r.useMemo)(()=>({nodeQueue:o,edgeQueue:a}),[]);return(0,l.jsx)(q.Provider,{value:i,children:t})}let J=e=>!!e.panZoom;function ee(){let e=(()=>{let e=p();return(0,r.useMemo)(()=>({zoomIn:t=>{let{panZoom:n}=e.getState();return n?n.scaleBy(1.2,t):Promise.resolve(!1)},zoomOut:t=>{let{panZoom:n}=e.getState();return n?n.scaleBy(1/1.2,t):Promise.resolve(!1)},zoomTo:(t,n)=>{let{panZoom:o}=e.getState();return o?o.scaleTo(t,n):Promise.resolve(!1)},getZoom:()=>e.getState().transform[2],setViewport:async(t,n)=>{var o,l,r;let{transform:[a,i,s],panZoom:d}=e.getState();return d?(await d.setViewport({x:null!=(o=t.x)?o:a,y:null!=(l=t.y)?l:i,zoom:null!=(r=t.zoom)?r:s},n),Promise.resolve(!0)):Promise.resolve(!1)},getViewport:()=>{let[t,n,o]=e.getState().transform;return{x:t,y:n,zoom:o}},setCenter:async(t,n,o)=>e.getState().setCenter(t,n,o),fitBounds:async(t,n)=>{var o;let{width:l,height:r,minZoom:a,maxZoom:s,panZoom:d}=e.getState(),c=(0,i.R4)(t,l,r,a,s,null!=(o=null==n?void 0:n.padding)?o:.1);return d?(await d.setViewport(c,{duration:null==n?void 0:n.duration,ease:null==n?void 0:n.ease,interpolate:null==n?void 0:n.interpolate}),Promise.resolve(!0)):Promise.resolve(!1)},screenToFlowPosition:function(t){var n,o;let l=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{transform:r,snapGrid:a,snapToGrid:s,domNode:d}=e.getState();if(!d)return t;let{x:c,y:u}=d.getBoundingClientRect(),g={x:t.x-c,y:t.y-u},f=null!=(n=l.snapGrid)?n:a,p=null!=(o=l.snapToGrid)?o:s;return(0,i.Ff)(g,r,p,f)},flowToScreenPosition:t=>{let{transform:n,domNode:o}=e.getState();if(!o)return t;let{x:l,y:r}=o.getBoundingClientRect(),a=(0,i.zj)(t,n);return{x:a.x+l,y:a.y+r}}}),[])})(),t=p(),n=function(){let e=(0,r.useContext)(q);if(!e)throw Error("useBatchContext must be used within a BatchProvider");return e}(),o=f(J),l=(0,r.useMemo)(()=>{let e=e=>t.getState().nodeLookup.get(e),o=e=>{n.nodeQueue.push(e)},l=e=>{n.edgeQueue.push(e)},r=e=>{var n,o,l,r;let{nodeLookup:a,nodeOrigin:s}=t.getState(),d=Q(e)?e:a.get(e.id),c=d.parentId?(0,i.us)(d.position,d.measured,d.parentId,a,s):d.position,u={...d,position:c,width:null!=(l=null==(n=d.measured)?void 0:n.width)?l:d.width,height:null!=(r=null==(o=d.measured)?void 0:o.height)?r:d.height};return(0,i.kM)(u)},a=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{replace:!1};o(o=>o.map(o=>{if(o.id===e){let e="function"==typeof t?t(o):t;return n.replace&&Q(e)?e:{...o,...e}}return o}))},s=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{replace:!1};l(o=>o.map(o=>{if(o.id===e){let e="function"==typeof t?t(o):t;return n.replace&&(0,i.b$)(e)?e:{...o,...e}}return o}))};return{getNodes:()=>t.getState().nodes.map(e=>({...e})),getNode:t=>{var n;return null==(n=e(t))?void 0:n.internals.userNode},getInternalNode:e,getEdges:()=>{let{edges:e=[]}=t.getState();return e.map(e=>({...e}))},getEdge:e=>t.getState().edgeLookup.get(e),setNodes:o,setEdges:l,addNodes:e=>{let t=Array.isArray(e)?e:[e];n.nodeQueue.push(e=>[...e,...t])},addEdges:e=>{let t=Array.isArray(e)?e:[e];n.edgeQueue.push(e=>[...e,...t])},toObject:()=>{let{nodes:e=[],edges:n=[],transform:o}=t.getState(),[l,r,a]=o;return{nodes:e.map(e=>({...e})),edges:n.map(e=>({...e})),viewport:{x:l,y:r,zoom:a}}},deleteElements:async e=>{let{nodes:n=[],edges:o=[]}=e,{nodes:l,edges:r,onNodesDelete:a,onEdgesDelete:s,triggerNodeChanges:d,triggerEdgeChanges:c,onDelete:u,onBeforeDelete:g}=t.getState(),{nodes:f,edges:p}=await (0,i.Tq)({nodesToRemove:n,edgesToRemove:o,nodes:l,edges:r,onBeforeDelete:g}),h=p.length>0,m=f.length>0;if(h){let e=p.map(Y);null==s||s(p),c(e)}if(m){let e=f.map(Y);null==a||a(f),d(e)}return(m||h)&&(null==u||u({nodes:f,edges:p})),{deletedNodes:f,deletedEdges:p}},getIntersectingNodes:function(e){let n=!(arguments.length>1)||void 0===arguments[1]||arguments[1],o=arguments.length>2?arguments[2]:void 0,l=(0,i.mW)(e),a=l?e:r(e),s=void 0!==o;return a?(o||t.getState().nodes).filter(o=>{let r=t.getState().nodeLookup.get(o.id);if(r&&!l&&(o.id===e.id||!r.internals.positionAbsolute))return!1;let d=(0,i.kM)(s?o:r),c=(0,i.X6)(d,a);return n&&c>0||c>=d.width*d.height||c>=a.width*a.height}):[]},isNodeIntersecting:function(e,t){let n=!(arguments.length>2)||void 0===arguments[2]||arguments[2],o=(0,i.mW)(e)?e:r(e);if(!o)return!1;let l=(0,i.X6)(o,t);return n&&l>0||l>=t.width*t.height||l>=o.width*o.height},updateNode:a,updateNodeData:function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{replace:!1};a(e,e=>{let o="function"==typeof t?t(e):t;return n.replace?{...e,data:o}:{...e,data:{...e.data,...o}}},n)},updateEdge:s,updateEdgeData:function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{replace:!1};s(e,e=>{let o="function"==typeof t?t(e):t;return n.replace?{...e,data:o}:{...e,data:{...e.data,...o}}},n)},getNodesBounds:e=>{let{nodeLookup:n,nodeOrigin:o}=t.getState();return(0,i.Jo)(e,{nodeLookup:n,nodeOrigin:o})},getHandleConnections:e=>{var n,o;let{type:l,id:r,nodeId:a}=e;return Array.from(null!=(o=null==(n=t.getState().connectionLookup.get("".concat(a,"-").concat(l).concat(r?"-".concat(r):"")))?void 0:n.values())?o:[])},getNodeConnections:e=>{var n,o;let{type:l,handleId:r,nodeId:a}=e;return Array.from(null!=(o=null==(n=t.getState().connectionLookup.get("".concat(a).concat(l?r?"-".concat(l,"-").concat(r):"-".concat(l):"")))?void 0:n.values())?o:[])},fitView:async e=>{var o;let l=null!=(o=t.getState().fitViewResolver)?o:(0,i.YN)();return t.setState({fitViewQueued:!0,fitViewOptions:e,fitViewResolver:l}),n.nodeQueue.push(e=>[...e]),l.promise}}},[]);return(0,r.useMemo)(()=>({...l,...e,viewportInitialized:o}),[o])}let et=e=>e.selected,en="undefined"!=typeof window?window:void 0,eo={position:"absolute",width:"100%",height:"100%",top:0,left:0},el=e=>({userSelectionActive:e.userSelectionActive,lib:e.lib,connectionInProgress:e.connection.inProgress});function er(e){let{onPaneContextMenu:t,zoomOnScroll:n=!0,zoomOnPinch:o=!0,panOnScroll:a=!1,panOnScrollSpeed:s=.5,panOnScrollMode:c=i.ny.Free,zoomOnDoubleClick:u=!0,panOnDrag:g=!0,defaultViewport:h,translateExtent:m,minZoom:v,maxZoom:y,zoomActivationKeyCode:b,preventScrolling:x=!0,children:S,noWheelClassName:w,noPanClassName:C,onViewportChange:E,isControlledViewport:N,paneClickDistance:k,selectionOnDrag:M}=e,P=p(),D=(0,r.useRef)(null),{userSelectionActive:j,lib:A,connectionInProgress:_}=f(el,d.x),I=H(b),O=(0,r.useRef)(),R=p();(0,r.useEffect)(()=>{let e=()=>{var e,t,n,o,l;if(!D.current||!(null==(n=null==(e=(t=D.current).checkVisibility)?void 0:e.call(t))||n))return!1;let r=(0,i.Eo)(D.current);(0===r.height||0===r.width)&&(null==(o=(l=R.getState()).onError)||o.call(l,"004",i.xc.error004())),R.setState({width:r.width||500,height:r.height||500})};if(D.current){e(),window.addEventListener("resize",e);let t=new ResizeObserver(()=>e());return t.observe(D.current),()=>{window.removeEventListener("resize",e),t&&D.current&&t.unobserve(D.current)}}},[]);let L=(0,r.useCallback)(e=>{null==E||E({x:e[0],y:e[1],zoom:e[2]}),N||P.setState({transform:e})},[E,N]);return(0,r.useEffect)(()=>{if(D.current){O.current=(0,i.kO)({domNode:D.current,minZoom:v,maxZoom:y,translateExtent:m,viewport:h,onDraggingChange:e=>P.setState(t=>t.paneDragging===e?t:{paneDragging:e}),onPanZoomStart:(e,t)=>{let{onViewportChangeStart:n,onMoveStart:o}=P.getState();null==o||o(e,t),null==n||n(t)},onPanZoom:(e,t)=>{let{onViewportChange:n,onMove:o}=P.getState();null==o||o(e,t),null==n||n(t)},onPanZoomEnd:(e,t)=>{let{onViewportChangeEnd:n,onMoveEnd:o}=P.getState();null==o||o(e,t),null==n||n(t)}});let{x:e,y:t,zoom:n}=O.current.getViewport();return P.setState({panZoom:O.current,transform:[e,t,n],domNode:D.current.closest(".react-flow")}),()=>{var e;null==(e=O.current)||e.destroy()}}},[]),(0,r.useEffect)(()=>{var e;null==(e=O.current)||e.update({onPaneContextMenu:t,zoomOnScroll:n,zoomOnPinch:o,panOnScroll:a,panOnScrollSpeed:s,panOnScrollMode:c,zoomOnDoubleClick:u,panOnDrag:g,zoomActivationKeyPressed:I,preventScrolling:x,noPanClassName:C,userSelectionActive:j,noWheelClassName:w,lib:A,onTransformChange:L,connectionInProgress:_,selectionOnDrag:M,paneClickDistance:k})},[t,n,o,a,s,c,u,g,I,x,C,j,w,A,L,_,M,k]),(0,l.jsx)("div",{className:"react-flow__renderer",ref:D,style:eo,children:S})}let ea=e=>({userSelectionActive:e.userSelectionActive,userSelectionRect:e.userSelectionRect});function ei(){let{userSelectionActive:e,userSelectionRect:t}=f(ea,d.x);return e&&t?(0,l.jsx)("div",{className:"react-flow__selection react-flow__container",style:{width:t.width,height:t.height,transform:"translate(".concat(t.x,"px, ").concat(t.y,"px)")}}):null}let es=(e,t)=>n=>{n.target===t.current&&(null==e||e(n))},ed=e=>({userSelectionActive:e.userSelectionActive,elementsSelectable:e.elementsSelectable,connectionInProgress:e.connection.inProgress,dragging:e.paneDragging});function ec(e){let{isSelecting:t,selectionKeyPressed:n,selectionMode:o=i.Qc.Full,panOnDrag:s,paneClickDistance:c,selectionOnDrag:u,onSelectionStart:g,onSelectionEnd:h,onPaneClick:m,onPaneContextMenu:v,onPaneScroll:y,onPaneMouseEnter:b,onPaneMouseMove:x,onPaneMouseLeave:S,children:w}=e,C=p(),{userSelectionActive:E,elementsSelectable:N,dragging:k,connectionInProgress:M}=f(ed,d.x),P=N&&(t||E),D=(0,r.useRef)(null),j=(0,r.useRef)(),A=(0,r.useRef)(new Set),_=(0,r.useRef)(new Set),I=(0,r.useRef)(!1),O=e=>{if(I.current||M){I.current=!1;return}null==m||m(e),C.getState().resetSelectedElements(),C.setState({nodesSelectionActive:!1})},R=!0===s||Array.isArray(s)&&s.includes(0);return(0,l.jsxs)("div",{className:(0,a.A)(["react-flow__pane",{draggable:R,dragging:k,selection:t}]),onClick:P?void 0:es(O,D),onContextMenu:es(e=>{if(Array.isArray(s)&&(null==s?void 0:s.includes(2)))return void e.preventDefault();null==v||v(e)},D),onWheel:es(y?e=>y(e):void 0,D),onPointerEnter:P?void 0:b,onPointerMove:P?e=>{var t,l;let{userSelectionRect:r,transform:a,nodeLookup:s,edgeLookup:d,connectionLookup:u,triggerNodeChanges:f,triggerEdgeChanges:p,defaultEdgeOptions:h,resetSelectedElements:m}=C.getState();if(!j.current||!r)return;let{x:v,y:y}=(0,i.q1)(e.nativeEvent,j.current),{startX:b,startY:x}=r;if(!I.current){if(Math.hypot(v-b,y-x)<=(n?0:c))return;m(),null==g||g(e)}I.current=!0;let S={startX:b,startY:x,x:v<b?v:b,y:y<x?y:x,width:Math.abs(v-b),height:Math.abs(y-x)},w=A.current,E=_.current;A.current=new Set((0,i.U$)(s,S,a,o===i.Qc.Partial,!0).map(e=>e.id)),_.current=new Set;let N=null==(t=null==h?void 0:h.selectable)||t;for(let e of A.current){let t=u.get(e);if(t)for(let{edgeId:e}of t.values()){let t=d.get(e);t&&(null!=(l=t.selectable)?l:N)&&_.current.add(e)}}(0,i._s)(w,A.current)||f(K(s,A.current,!0)),(0,i._s)(E,_.current)||p(K(d,_.current)),C.setState({userSelectionRect:S,userSelectionActive:!0,nodesSelectionActive:!1})}:x,onPointerUp:P?e=>{var t,n;0===e.button&&(null==(n=e.target)||null==(t=n.releasePointerCapture)||t.call(n,e.pointerId),!E&&e.target===D.current&&C.getState().userSelectionRect&&(null==O||O(e)),C.setState({userSelectionActive:!1,userSelectionRect:null}),I.current&&(null==h||h(e),C.setState({nodesSelectionActive:A.current.size>0})))}:void 0,onPointerDownCapture:P?e=>{var o,l;let{domNode:r}=C.getState();if(j.current=null==r?void 0:r.getBoundingClientRect(),!j.current)return;let a=e.target===D.current;if(!a&&e.target.closest(".nokey")||!t||!(u&&a||n)||0!==e.button||!e.isPrimary)return;null==(l=e.target)||null==(o=l.setPointerCapture)||o.call(l,e.pointerId),I.current=!1;let{x:s,y:d}=(0,i.q1)(e.nativeEvent,j.current);C.setState({userSelectionRect:{width:0,height:0,startX:s,startY:d,x:s,y:d}}),a||(e.stopPropagation(),e.preventDefault())}:void 0,onClickCapture:P?e=>{I.current&&(e.stopPropagation(),I.current=!1)}:void 0,onPointerLeave:S,ref:D,style:eo,children:[w,(0,l.jsx)(ei,{})]})}function eu(e){let{id:t,store:n,unselect:o=!1,nodeRef:l}=e,{addSelectedNodes:r,unselectNodesAndEdges:a,multiSelectionActive:s,nodeLookup:d,onError:c}=n.getState(),u=d.get(t);if(!u){null==c||c("012",i.xc.error012(t));return}n.setState({nodesSelectionActive:!1}),u.selected?(o||u.selected&&s)&&(a({nodes:[u],edges:[]}),requestAnimationFrame(()=>{var e;return null==l||null==(e=l.current)?void 0:e.blur()})):r([t])}function eg(e){let{nodeRef:t,disabled:n=!1,noDragClassName:o,handleSelector:l,nodeId:a,isSelectable:s,nodeClickDistance:d}=e,c=p(),[u,g]=(0,r.useState)(!1),f=(0,r.useRef)();return(0,r.useEffect)(()=>{f.current=(0,i.I$)({getStoreItems:()=>c.getState(),onNodeMouseDown:e=>{eu({id:e,store:c,nodeRef:t})},onDragStart:()=>{g(!0)},onDragStop:()=>{g(!1)}})},[]),(0,r.useEffect)(()=>{if(!n&&t.current&&f.current)return f.current.update({noDragClassName:o,handleSelector:l,domNode:t.current,isSelectable:s,nodeId:a,nodeClickDistance:d}),()=>{var e;null==(e=f.current)||e.destroy()}},[o,l,n,s,t,a,d]),u}function ef(){let e=p();return(0,r.useCallback)(t=>{let{nodeExtent:n,snapToGrid:o,snapGrid:l,nodesDraggable:r,onError:a,updateNodePositions:s,nodeLookup:d,nodeOrigin:c}=e.getState(),u=new Map,g=e=>e.selected&&(e.draggable||r&&void 0===e.draggable),f=o?l[0]:5,p=o?l[1]:5,h=t.direction.x*f*t.factor,m=t.direction.y*p*t.factor;for(let[,e]of d){if(!g(e))continue;let t={x:e.internals.positionAbsolute.x+h,y:e.internals.positionAbsolute.y+m};o&&(t=(0,i.s_)(t,l));let{position:r,positionAbsolute:s}=(0,i.aE)({nodeId:e.id,nextPosition:t,nodeLookup:d,nodeExtent:n,nodeOrigin:c,onError:a});e.position=r,e.internals.positionAbsolute=s,u.set(e.id,e)}s(u)},[])}let ep=(0,r.createContext)(null),eh=ep.Provider;ep.Consumer;let em=e=>({connectOnClick:e.connectOnClick,noPanClassName:e.noPanClassName,rfId:e.rfId}),ev=(0,r.memo)(U(function(e,t){let{type:n="source",position:o=i.yX.Top,isValidConnection:s,isConnectable:c=!0,isConnectableStart:u=!0,isConnectableEnd:g=!0,id:h,onConnect:m,children:v,className:y,onMouseDown:b,onTouchStart:x,...S}=e,w=h||null,C="target"===n,E=p(),N=(0,r.useContext)(ep),{connectOnClick:k,noPanClassName:M,rfId:P}=f(em,d.x),{connectingFrom:D,connectingTo:j,clickConnecting:A,isPossibleEndHandle:_,connectionInProcess:I,clickConnectionInProcess:O,valid:R}=f(e=>{let{connectionClickStartHandle:t,connectionMode:o,connection:l}=e,{fromHandle:r,toHandle:a,isValid:s}=l,d=(null==a?void 0:a.nodeId)===N&&(null==a?void 0:a.id)===w&&(null==a?void 0:a.type)===n;return{connectingFrom:(null==r?void 0:r.nodeId)===N&&(null==r?void 0:r.id)===w&&(null==r?void 0:r.type)===n,connectingTo:d,clickConnecting:(null==t?void 0:t.nodeId)===N&&(null==t?void 0:t.id)===w&&(null==t?void 0:t.type)===n,isPossibleEndHandle:o===i.WZ.Strict?(null==r?void 0:r.type)!==n:N!==(null==r?void 0:r.nodeId)||w!==(null==r?void 0:r.id),connectionInProcess:!!r,clickConnectionInProcess:!!t,valid:d&&s}},d.x);if(!N){var L,z;null==(L=(z=E.getState()).onError)||L.call(z,"010",i.xc.error010())}let B=e=>{let{defaultEdgeOptions:t,onConnect:n,hasDefaultEdges:o}=E.getState(),l={...t,...e};if(o){let{edges:e,setEdges:t}=E.getState();t((0,i.rN)(l,e))}null==n||n(l),null==m||m(l)},V=e=>{if(!N)return;let t=(0,i.Er)(e.nativeEvent);if(u&&(t&&0===e.button||!t)){let t=E.getState();i.aQ.onPointerDown(e.nativeEvent,{handleDomNode:e.currentTarget,autoPanOnConnect:t.autoPanOnConnect,connectionMode:t.connectionMode,connectionRadius:t.connectionRadius,domNode:t.domNode,nodeLookup:t.nodeLookup,lib:t.lib,isTarget:C,handleId:w,nodeId:N,flowId:t.rfId,panBy:t.panBy,cancelConnection:t.cancelConnection,onConnectStart:t.onConnectStart,onConnectEnd:function(){for(var e,t,n=arguments.length,o=Array(n),l=0;l<n;l++)o[l]=arguments[l];return null==(e=(t=E.getState()).onConnectEnd)?void 0:e.call(t,...o)},updateConnection:t.updateConnection,onConnect:B,isValidConnection:s||function(){for(var e,t,n,o=arguments.length,l=Array(o),r=0;r<o;r++)l[r]=arguments[r];return null==(n=null==(e=(t=E.getState()).isValidConnection)?void 0:e.call(t,...l))||n},getTransform:()=>E.getState().transform,getFromHandle:()=>E.getState().connection.fromHandle,autoPanSpeed:t.autoPanSpeed,dragThreshold:t.connectionDragThreshold})}t?null==b||b(e):null==x||x(e)};return(0,l.jsx)("div",{"data-handleid":w,"data-nodeid":N,"data-handlepos":o,"data-id":"".concat(P,"-").concat(N,"-").concat(w,"-").concat(n),className:(0,a.A)(["react-flow__handle","react-flow__handle-".concat(o),"nodrag",M,y,{source:!C,target:C,connectable:c,connectablestart:u,connectableend:g,clickconnecting:A,connectingfrom:D,connectingto:j,valid:R,connectionindicator:c&&(!I||_)&&(I||O?g:u)}]),onMouseDown:V,onTouchStart:V,onClick:k?e=>{let{onClickConnectStart:t,onClickConnectEnd:o,connectionClickStartHandle:l,connectionMode:r,isValidConnection:a,lib:d,rfId:c,nodeLookup:g,connection:f}=E.getState();if(!N||!l&&!u)return;if(!l){null==t||t(e.nativeEvent,{nodeId:N,handleId:w,handleType:n}),E.setState({connectionClickStartHandle:{nodeId:N,type:n,id:w}});return}let p=(0,i.oj)(e.target),h=s||a,{connection:m,isValid:v}=i.aQ.isValid(e.nativeEvent,{handle:{nodeId:N,id:w,type:n},connectionMode:r,fromNodeId:l.nodeId,fromHandleId:l.id||null,fromType:l.type,isValidConnection:h,flowId:c,doc:p,lib:d,nodeLookup:g});v&&m&&B(m);let y=structuredClone(f);delete y.inProgress,y.toPosition=y.toHandle?y.toHandle.position:null,null==o||o(e,y),E.setState({connectionClickStartHandle:null})}:void 0,ref:t,...S,children:v})})),ey={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}},eb={input:function(e){let{data:t,isConnectable:n,sourcePosition:o=i.yX.Bottom}=e;return(0,l.jsxs)(l.Fragment,{children:[null==t?void 0:t.label,(0,l.jsx)(ev,{type:"source",position:o,isConnectable:n})]})},default:function(e){let{data:t,isConnectable:n,targetPosition:o=i.yX.Top,sourcePosition:r=i.yX.Bottom}=e;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(ev,{type:"target",position:o,isConnectable:n}),null==t?void 0:t.label,(0,l.jsx)(ev,{type:"source",position:r,isConnectable:n})]})},output:function(e){let{data:t,isConnectable:n,targetPosition:o=i.yX.Top}=e;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(ev,{type:"target",position:o,isConnectable:n}),null==t?void 0:t.label]})},group:function(){return null}},ex=e=>{let{width:t,height:n,x:o,y:l}=(0,i.aZ)(e.nodeLookup,{filter:e=>!!e.selected});return{width:(0,i.kf)(t)?t:null,height:(0,i.kf)(n)?n:null,userSelectionActive:e.userSelectionActive,transformString:"translate(".concat(e.transform[0],"px,").concat(e.transform[1],"px) scale(").concat(e.transform[2],") translate(").concat(o,"px,").concat(l,"px)")}};function eS(e){let{onSelectionContextMenu:t,noPanClassName:n,disableKeyboardA11y:o}=e,i=p(),{width:s,height:c,transformString:u,userSelectionActive:g}=f(ex,d.x),h=ef(),m=(0,r.useRef)(null);(0,r.useEffect)(()=>{if(!o){var e;null==(e=m.current)||e.focus({preventScroll:!0})}},[o]);let v=!g&&null!==s&&null!==c;if(eg({nodeRef:m,disabled:!v}),!v)return null;let y=t?e=>{t(e,i.getState().nodes.filter(e=>e.selected))}:void 0;return(0,l.jsx)("div",{className:(0,a.A)(["react-flow__nodesselection","react-flow__container",n]),style:{transform:u},children:(0,l.jsx)("div",{ref:m,className:"react-flow__nodesselection-rect",onContextMenu:y,tabIndex:o?void 0:-1,onKeyDown:o?void 0:e=>{Object.prototype.hasOwnProperty.call(ey,e.key)&&(e.preventDefault(),h({direction:ey[e.key],factor:e.shiftKey?4:1}))},style:{width:s,height:c}})})}let ew="undefined"!=typeof window?window:void 0,eC=e=>({nodesSelectionActive:e.nodesSelectionActive,userSelectionActive:e.userSelectionActive});function eE(e){let{children:t,onPaneClick:n,onPaneMouseEnter:o,onPaneMouseMove:a,onPaneMouseLeave:i,onPaneContextMenu:s,onPaneScroll:c,paneClickDistance:u,deleteKeyCode:g,selectionKeyCode:h,selectionOnDrag:m,selectionMode:v,onSelectionStart:y,onSelectionEnd:b,multiSelectionKeyCode:x,panActivationKeyCode:S,zoomActivationKeyCode:w,elementsSelectable:C,zoomOnScroll:E,zoomOnPinch:N,panOnScroll:k,panOnScrollSpeed:M,panOnScrollMode:P,zoomOnDoubleClick:D,panOnDrag:j,defaultViewport:A,translateExtent:_,minZoom:I,maxZoom:O,preventScrolling:R,onSelectionContextMenu:L,noWheelClassName:z,noPanClassName:B,disableKeyboardA11y:V,onViewportChange:T,isControlledViewport:F}=e,{nodesSelectionActive:Z,userSelectionActive:X}=f(eC,d.x),K=H(h,{target:ew}),W=H(S,{target:ew}),Y=W||j,Q=W||k,U=m&&!0!==Y,G=K||X||U;return!function(e){let{deleteKeyCode:t,multiSelectionKeyCode:n}=e,o=p(),{deleteElements:l}=ee(),a=H(t,{actInsideInputWithModifier:!1}),i=H(n,{target:en});(0,r.useEffect)(()=>{if(a){let{edges:e,nodes:t}=o.getState();l({nodes:t.filter(et),edges:e.filter(et)}),o.setState({nodesSelectionActive:!1})}},[a]),(0,r.useEffect)(()=>{o.setState({multiSelectionActive:i})},[i])}({deleteKeyCode:g,multiSelectionKeyCode:x}),(0,l.jsx)(er,{onPaneContextMenu:s,elementsSelectable:C,zoomOnScroll:E,zoomOnPinch:N,panOnScroll:Q,panOnScrollSpeed:M,panOnScrollMode:P,zoomOnDoubleClick:D,panOnDrag:!K&&Y,defaultViewport:A,translateExtent:_,minZoom:I,maxZoom:O,zoomActivationKeyCode:w,preventScrolling:R,noWheelClassName:z,noPanClassName:B,onViewportChange:T,isControlledViewport:F,paneClickDistance:u,selectionOnDrag:U,children:(0,l.jsxs)(ec,{onSelectionStart:y,onSelectionEnd:b,onPaneClick:n,onPaneMouseEnter:o,onPaneMouseMove:a,onPaneMouseLeave:i,onPaneContextMenu:s,onPaneScroll:c,panOnDrag:Y,isSelecting:!!G,selectionMode:v,selectionKeyPressed:K,paneClickDistance:u,selectionOnDrag:U,children:[t,Z&&(0,l.jsx)(eS,{onSelectionContextMenu:L,noPanClassName:B,disableKeyboardA11y:V})]})})}eE.displayName="FlowRenderer";let eN=(0,r.memo)(eE),ek=e=>e.updateNodeInternals;var eM=(0,r.memo)(function(e){var t,n,o,s,c,u,g,h,m,y,b,x,S;let{id:w,onClick:C,onMouseEnter:E,onMouseMove:N,onMouseLeave:k,onContextMenu:M,onDoubleClick:P,nodesDraggable:D,elementsSelectable:j,nodesConnectable:A,nodesFocusable:_,resizeObserver:I,noDragClassName:O,noPanClassName:R,disableKeyboardA11y:L,rfId:z,nodeTypes:B,nodeClickDistance:V,onError:H}=e,{node:T,internals:F,isParent:Z}=f(e=>{let t=e.nodeLookup.get(w),n=e.parentLookup.has(w);return{node:t,internals:t.internals,isParent:n}},d.x),X=T.type||"default",K=(null==B?void 0:B[X])||eb[X];void 0===K&&(null==H||H("003",i.xc.error003(X)),X="default",K=(null==B?void 0:B.default)||eb.default);let W=!!(T.draggable||D&&void 0===T.draggable),Y=!!(T.selectable||j&&void 0===T.selectable),Q=!!(T.connectable||A&&void 0===T.connectable),U=!!(T.focusable||_&&void 0===T.focusable),G=p(),q=(0,i.QE)(T),$=function(e){let{node:t,nodeType:n,hasDimensions:o,resizeObserver:l}=e,a=p(),i=(0,r.useRef)(null),s=(0,r.useRef)(null),d=(0,r.useRef)(t.sourcePosition),c=(0,r.useRef)(t.targetPosition),u=(0,r.useRef)(n),g=o&&!!t.internals.handleBounds;return(0,r.useEffect)(()=>{!i.current||t.hidden||g&&s.current===i.current||(s.current&&(null==l||l.unobserve(s.current)),null==l||l.observe(i.current),s.current=i.current)},[g,t.hidden]),(0,r.useEffect)(()=>()=>{s.current&&(null==l||l.unobserve(s.current),s.current=null)},[]),(0,r.useEffect)(()=>{if(i.current){let e=u.current!==n,o=d.current!==t.sourcePosition,l=c.current!==t.targetPosition;(e||o||l)&&(u.current=n,d.current=t.sourcePosition,c.current=t.targetPosition,a.getState().updateNodeInternals(new Map([[t.id,{id:t.id,nodeElement:i.current,force:!0}]])))}},[t.id,n,t.sourcePosition,t.targetPosition]),i}({node:T,nodeType:X,hasDimensions:q,resizeObserver:I}),J=eg({nodeRef:$,disabled:T.hidden||!W,noDragClassName:O,handleSelector:T.dragHandle,nodeId:w,isSelectable:Y,nodeClickDistance:V}),ee=ef();if(T.hidden)return null;let et=(0,i.uD)(T),en=void 0===T.internals.handleBounds?{width:null!=(m=null!=(h=T.width)?h:T.initialWidth)?m:null==(u=T.style)?void 0:u.width,height:null!=(b=null!=(y=T.height)?y:T.initialHeight)?b:null==(g=T.style)?void 0:g.height}:{width:null!=(x=T.width)?x:null==(s=T.style)?void 0:s.width,height:null!=(S=T.height)?S:null==(c=T.style)?void 0:c.height},eo=Y||W||C||E||N||k,el=E?e=>E(e,{...F.userNode}):void 0,er=N?e=>N(e,{...F.userNode}):void 0,ea=k?e=>k(e,{...F.userNode}):void 0,ei=M?e=>M(e,{...F.userNode}):void 0,es=P?e=>P(e,{...F.userNode}):void 0;return(0,l.jsx)("div",{className:(0,a.A)(["react-flow__node","react-flow__node-".concat(X),{[R]:W},T.className,{selected:T.selected,selectable:Y,parent:Z,draggable:W,dragging:J}]),ref:$,style:{zIndex:F.z,transform:"translate(".concat(F.positionAbsolute.x,"px,").concat(F.positionAbsolute.y,"px)"),pointerEvents:eo?"all":"none",visibility:q?"visible":"hidden",...T.style,...en},"data-id":w,"data-testid":"rf__node-".concat(w),onMouseEnter:el,onMouseMove:er,onMouseLeave:ea,onContextMenu:ei,onClick:e=>{let{selectNodesOnDrag:t,nodeDragThreshold:n}=G.getState();Y&&(!t||!W||n>0)&&eu({id:w,store:G,nodeRef:$}),C&&C(e,{...F.userNode})},onDoubleClick:es,onKeyDown:U?e=>{if(!(0,i.v5)(e.nativeEvent)&&!L){if(i.tn.includes(e.key)&&Y)eu({id:w,store:G,unselect:"Escape"===e.key,nodeRef:$});else if(W&&T.selected&&Object.prototype.hasOwnProperty.call(ey,e.key)){e.preventDefault();let{ariaLabelConfig:t}=G.getState();G.setState({ariaLiveMessage:t["node.a11yDescription.ariaLiveMessage"]({direction:e.key.replace("Arrow","").toLowerCase(),x:~~F.positionAbsolute.x,y:~~F.positionAbsolute.y})}),ee({direction:ey[e.key],factor:e.shiftKey?4:1})}}}:void 0,tabIndex:U?0:void 0,onFocus:U?()=>{var e;if(L||!(null==(e=$.current)?void 0:e.matches(":focus-visible")))return;let{transform:t,width:n,height:o,autoPanOnNodeFocus:l,setCenter:r}=G.getState();l&&((0,i.U$)(new Map([[w,T]]),{x:0,y:0,width:n,height:o},t,!0).length>0||r(T.position.x+et.width/2,T.position.y+et.height/2,{zoom:t[2]}))}:void 0,role:null!=(t=T.ariaRole)?t:U?"group":void 0,"aria-roledescription":"node","aria-describedby":L?void 0:"".concat(v,"-").concat(z),"aria-label":T.ariaLabel,...T.domAttributes,children:(0,l.jsx)(eh,{value:w,children:(0,l.jsx)(K,{id:w,data:T.data,type:X,positionAbsoluteX:F.positionAbsolute.x,positionAbsoluteY:F.positionAbsolute.y,selected:null!=(n=T.selected)&&n,selectable:Y,draggable:W,deletable:null==(o=T.deletable)||o,isConnectable:Q,sourcePosition:T.sourcePosition,targetPosition:T.targetPosition,dragging:J,dragHandle:T.dragHandle,zIndex:F.z,parentId:T.parentId,...et})})})});let eP=e=>({nodesDraggable:e.nodesDraggable,nodesConnectable:e.nodesConnectable,nodesFocusable:e.nodesFocusable,elementsSelectable:e.elementsSelectable,onError:e.onError});function eD(e){var t;let{nodesDraggable:n,nodesConnectable:o,nodesFocusable:a,elementsSelectable:s,onError:c}=f(eP,d.x),u=(t=e.onlyRenderVisibleElements,f((0,r.useCallback)(e=>t?(0,i.U$)(e.nodeLookup,{x:0,y:0,width:e.width,height:e.height},e.transform,!0).map(e=>e.id):Array.from(e.nodeLookup.keys()),[t]),d.x)),g=function(){let e=f(ek),[t]=(0,r.useState)(()=>"undefined"==typeof ResizeObserver?null:new ResizeObserver(t=>{let n=new Map;t.forEach(e=>{let t=e.target.getAttribute("data-id");n.set(t,{id:t,nodeElement:e.target,force:!0})}),e(n)}));return(0,r.useEffect)(()=>()=>{null==t||t.disconnect()},[t]),t}();return(0,l.jsx)("div",{className:"react-flow__nodes",style:eo,children:u.map(t=>(0,l.jsx)(eM,{id:t,nodeTypes:e.nodeTypes,nodeExtent:e.nodeExtent,onClick:e.onNodeClick,onMouseEnter:e.onNodeMouseEnter,onMouseMove:e.onNodeMouseMove,onMouseLeave:e.onNodeMouseLeave,onContextMenu:e.onNodeContextMenu,onDoubleClick:e.onNodeDoubleClick,noDragClassName:e.noDragClassName,noPanClassName:e.noPanClassName,rfId:e.rfId,disableKeyboardA11y:e.disableKeyboardA11y,resizeObserver:g,nodesDraggable:n,nodesConnectable:o,nodesFocusable:a,elementsSelectable:s,nodeClickDistance:e.nodeClickDistance,onError:c},t))})}eD.displayName="NodeRenderer";let ej=(0,r.memo)(eD),eA={[i.TG.Arrow]:e=>{let{color:t="none",strokeWidth:n=1}=e,o={strokeWidth:n,...t&&{stroke:t}};return(0,l.jsx)("polyline",{className:"arrow",style:o,strokeLinecap:"round",fill:"none",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4"})},[i.TG.ArrowClosed]:e=>{let{color:t="none",strokeWidth:n=1}=e,o={strokeWidth:n,...t&&{stroke:t,fill:t}};return(0,l.jsx)("polyline",{className:"arrowclosed",style:o,strokeLinecap:"round",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4 -5,-4"})}},e_=e=>{let{id:t,type:n,color:o,width:a=12.5,height:s=12.5,markerUnits:d="strokeWidth",strokeWidth:c,orient:u="auto-start-reverse"}=e,g=function(e){let t=p();return(0,r.useMemo)(()=>{if(!Object.prototype.hasOwnProperty.call(eA,e)){var n,o;return null==(n=(o=t.getState()).onError)||n.call(o,"009",i.xc.error009(e)),null}return eA[e]},[e])}(n);return g?(0,l.jsx)("marker",{className:"react-flow__arrowhead",id:t,markerWidth:"".concat(a),markerHeight:"".concat(s),viewBox:"-10 -10 20 20",markerUnits:d,orient:u,refX:"0",refY:"0",children:(0,l.jsx)(g,{color:o,strokeWidth:c})}):null},eI=e=>{let{defaultColor:t,rfId:n}=e,o=f(e=>e.edges),a=f(e=>e.defaultEdgeOptions),s=(0,r.useMemo)(()=>(0,i.Hm)(o,{id:n,defaultColor:t,defaultMarkerStart:null==a?void 0:a.markerStart,defaultMarkerEnd:null==a?void 0:a.markerEnd}),[o,a,n,t]);return s.length?(0,l.jsx)("svg",{className:"react-flow__marker","aria-hidden":"true",children:(0,l.jsx)("defs",{children:s.map(e=>(0,l.jsx)(e_,{id:e.id,type:e.type,color:e.color,width:e.width,height:e.height,markerUnits:e.markerUnits,strokeWidth:e.strokeWidth,orient:e.orient},e.id))})}):null};eI.displayName="MarkerDefinitions";var eO=(0,r.memo)(eI);function eR(e){let{x:t,y:n,label:o,labelStyle:i,labelShowBg:s=!0,labelBgStyle:d,labelBgPadding:c=[2,4],labelBgBorderRadius:u=2,children:g,className:f,...p}=e,[h,m]=(0,r.useState)({x:1,y:0,width:0,height:0}),v=(0,a.A)(["react-flow__edge-textwrapper",f]),y=(0,r.useRef)(null);return((0,r.useEffect)(()=>{if(y.current){let e=y.current.getBBox();m({x:e.x,y:e.y,width:e.width,height:e.height})}},[o]),o)?(0,l.jsxs)("g",{transform:"translate(".concat(t-h.width/2," ").concat(n-h.height/2,")"),className:v,visibility:h.width?"visible":"hidden",...p,children:[s&&(0,l.jsx)("rect",{width:h.width+2*c[0],x:-c[0],y:-c[1],height:h.height+2*c[1],className:"react-flow__edge-textbg",style:d,rx:u,ry:u}),(0,l.jsx)("text",{className:"react-flow__edge-text",y:h.height/2,dy:"0.3em",ref:y,style:i,children:o}),g]}):null}eR.displayName="EdgeText";let eL=(0,r.memo)(eR);function ez(e){let{path:t,labelX:n,labelY:o,label:r,labelStyle:s,labelShowBg:d,labelBgStyle:c,labelBgPadding:u,labelBgBorderRadius:g,interactionWidth:f=20,...p}=e;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("path",{...p,d:t,fill:"none",className:(0,a.A)(["react-flow__edge-path",p.className])}),f?(0,l.jsx)("path",{d:t,fill:"none",strokeOpacity:0,strokeWidth:f,className:"react-flow__edge-interaction"}):null,r&&(0,i.kf)(n)&&(0,i.kf)(o)?(0,l.jsx)(eL,{x:n,y:o,label:r,labelStyle:s,labelShowBg:d,labelBgStyle:c,labelBgPadding:u,labelBgBorderRadius:g}):null]})}function eB(e){let{pos:t,x1:n,y1:o,x2:l,y2:r}=e;return t===i.yX.Left||t===i.yX.Right?[.5*(n+l),o]:[n,.5*(o+r)]}function eV(e){let{sourceX:t,sourceY:n,sourcePosition:o=i.yX.Bottom,targetX:l,targetY:r,targetPosition:a=i.yX.Top}=e,[s,d]=eB({pos:o,x1:t,y1:n,x2:l,y2:r}),[c,u]=eB({pos:a,x1:l,y1:r,x2:t,y2:n}),[g,f,p,h]=(0,i.e_)({sourceX:t,sourceY:n,targetX:l,targetY:r,sourceControlX:s,sourceControlY:d,targetControlX:c,targetControlY:u});return["M".concat(t,",").concat(n," C").concat(s,",").concat(d," ").concat(c,",").concat(u," ").concat(l,",").concat(r),g,f,p,h]}function eH(e){return(0,r.memo)(t=>{let{id:n,sourceX:o,sourceY:r,targetX:a,targetY:i,sourcePosition:s,targetPosition:d,label:c,labelStyle:u,labelShowBg:g,labelBgStyle:f,labelBgPadding:p,labelBgBorderRadius:h,style:m,markerEnd:v,markerStart:y,interactionWidth:b}=t,[x,S,w]=eV({sourceX:o,sourceY:r,sourcePosition:s,targetX:a,targetY:i,targetPosition:d}),C=e.isInternal?void 0:n;return(0,l.jsx)(ez,{id:C,path:x,labelX:S,labelY:w,label:c,labelStyle:u,labelShowBg:g,labelBgStyle:f,labelBgPadding:p,labelBgBorderRadius:h,style:m,markerEnd:v,markerStart:y,interactionWidth:b})})}let eT=eH({isInternal:!1}),eF=eH({isInternal:!0});function eZ(e){return(0,r.memo)(t=>{let{id:n,sourceX:o,sourceY:r,targetX:a,targetY:s,label:d,labelStyle:c,labelShowBg:u,labelBgStyle:g,labelBgPadding:f,labelBgBorderRadius:p,style:h,sourcePosition:m=i.yX.Bottom,targetPosition:v=i.yX.Top,markerEnd:y,markerStart:b,pathOptions:x,interactionWidth:S}=t,[w,C,E]=(0,i.oN)({sourceX:o,sourceY:r,sourcePosition:m,targetX:a,targetY:s,targetPosition:v,borderRadius:null==x?void 0:x.borderRadius,offset:null==x?void 0:x.offset,stepPosition:null==x?void 0:x.stepPosition}),N=e.isInternal?void 0:n;return(0,l.jsx)(ez,{id:N,path:w,labelX:C,labelY:E,label:d,labelStyle:c,labelShowBg:u,labelBgStyle:g,labelBgPadding:f,labelBgBorderRadius:p,style:h,markerEnd:y,markerStart:b,interactionWidth:S})})}eT.displayName="SimpleBezierEdge",eF.displayName="SimpleBezierEdgeInternal";let eX=eZ({isInternal:!1}),eK=eZ({isInternal:!0});function eW(e){return(0,r.memo)(t=>{var n;let{id:o,...a}=t,i=e.isInternal?void 0:o;return(0,l.jsx)(eX,{...a,id:i,pathOptions:(0,r.useMemo)(()=>{var e;return{borderRadius:0,offset:null==(e=a.pathOptions)?void 0:e.offset}},[null==(n=a.pathOptions)?void 0:n.offset])})})}eX.displayName="SmoothStepEdge",eK.displayName="SmoothStepEdgeInternal";let eY=eW({isInternal:!1}),eQ=eW({isInternal:!0});function eU(e){return(0,r.memo)(t=>{let{id:n,sourceX:o,sourceY:r,targetX:a,targetY:s,label:d,labelStyle:c,labelShowBg:u,labelBgStyle:g,labelBgPadding:f,labelBgBorderRadius:p,style:h,markerEnd:m,markerStart:v,interactionWidth:y}=t,[b,x,S]=(0,i.ah)({sourceX:o,sourceY:r,targetX:a,targetY:s}),w=e.isInternal?void 0:n;return(0,l.jsx)(ez,{id:w,path:b,labelX:x,labelY:S,label:d,labelStyle:c,labelShowBg:u,labelBgStyle:g,labelBgPadding:f,labelBgBorderRadius:p,style:h,markerEnd:m,markerStart:v,interactionWidth:y})})}eY.displayName="StepEdge",eQ.displayName="StepEdgeInternal";let eG=eU({isInternal:!1}),eq=eU({isInternal:!0});function e$(e){return(0,r.memo)(t=>{let{id:n,sourceX:o,sourceY:r,targetX:a,targetY:s,sourcePosition:d=i.yX.Bottom,targetPosition:c=i.yX.Top,label:u,labelStyle:g,labelShowBg:f,labelBgStyle:p,labelBgPadding:h,labelBgBorderRadius:m,style:v,markerEnd:y,markerStart:b,pathOptions:x,interactionWidth:S}=t,[w,C,E]=(0,i.Fp)({sourceX:o,sourceY:r,sourcePosition:d,targetX:a,targetY:s,targetPosition:c,curvature:null==x?void 0:x.curvature}),N=e.isInternal?void 0:n;return(0,l.jsx)(ez,{id:N,path:w,labelX:C,labelY:E,label:u,labelStyle:g,labelShowBg:f,labelBgStyle:p,labelBgPadding:h,labelBgBorderRadius:m,style:v,markerEnd:y,markerStart:b,interactionWidth:S})})}eG.displayName="StraightEdge",eq.displayName="StraightEdgeInternal";let eJ=e$({isInternal:!1}),e0=e$({isInternal:!0});eJ.displayName="BezierEdge",e0.displayName="BezierEdgeInternal";let e1={default:e0,straight:eq,step:eQ,smoothstep:eK,simplebezier:eF},e3={sourceX:null,sourceY:null,targetX:null,targetY:null,sourcePosition:null,targetPosition:null},e2="react-flow__edgeupdater";function e4(e){let{position:t,centerX:n,centerY:o,radius:r=10,onMouseDown:s,onMouseEnter:d,onMouseOut:c,type:u}=e;return(0,l.jsx)("circle",{onMouseDown:s,onMouseEnter:d,onMouseOut:c,className:(0,a.A)([e2,"".concat(e2,"-").concat(u)]),cx:t===i.yX.Left?n-r:t===i.yX.Right?n+r:n,cy:t===i.yX.Top?o-r:t===i.yX.Bottom?o+r:o,r:r,stroke:"transparent",fill:"transparent"})}function e5(e){let{isReconnectable:t,reconnectRadius:n,edge:o,sourceX:r,sourceY:a,targetX:s,targetY:d,sourcePosition:c,targetPosition:u,onReconnect:g,onReconnectStart:f,onReconnectEnd:h,setReconnecting:m,setUpdateHover:v}=e,y=p(),b=(e,t)=>{if(0!==e.button)return;let{autoPanOnConnect:n,domNode:l,connectionMode:r,connectionRadius:a,lib:s,onConnectStart:d,cancelConnection:c,nodeLookup:u,rfId:p,panBy:v,updateConnection:b}=y.getState(),x="target"===t.type;i.aQ.onPointerDown(e.nativeEvent,{autoPanOnConnect:n,connectionMode:r,connectionRadius:a,domNode:l,handleId:t.id,nodeId:t.nodeId,nodeLookup:u,isTarget:x,edgeUpdaterType:t.type,lib:s,flowId:p,cancelConnection:c,panBy:v,isValidConnection:function(){for(var e,t,n,o=arguments.length,l=Array(o),r=0;r<o;r++)l[r]=arguments[r];return null==(n=null==(e=(t=y.getState()).isValidConnection)?void 0:e.call(t,...l))||n},onConnect:e=>null==g?void 0:g(o,e),onConnectStart:(n,l)=>{m(!0),null==f||f(e,o,t.type),null==d||d(n,l)},onConnectEnd:function(){for(var e,t,n=arguments.length,o=Array(n),l=0;l<n;l++)o[l]=arguments[l];return null==(e=(t=y.getState()).onConnectEnd)?void 0:e.call(t,...o)},onReconnectEnd:(e,n)=>{m(!1),null==h||h(e,o,t.type,n)},updateConnection:b,getTransform:()=>y.getState().transform,getFromHandle:()=>y.getState().connection.fromHandle,dragThreshold:y.getState().connectionDragThreshold,handleDomNode:e.currentTarget})},x=()=>v(!0),S=()=>v(!1);return(0,l.jsxs)(l.Fragment,{children:[(!0===t||"source"===t)&&(0,l.jsx)(e4,{position:c,centerX:r,centerY:a,radius:n,onMouseDown:e=>{var t;return b(e,{nodeId:o.target,id:null!=(t=o.targetHandle)?t:null,type:"target"})},onMouseEnter:x,onMouseOut:S,type:"source"}),(!0===t||"target"===t)&&(0,l.jsx)(e4,{position:u,centerX:s,centerY:d,radius:n,onMouseDown:e=>{var t;return b(e,{nodeId:o.source,id:null!=(t=o.sourceHandle)?t:null,type:"source"})},onMouseEnter:x,onMouseOut:S,type:"target"})]})}var e6=(0,r.memo)(function(e){var t,n;let{id:o,edgesFocusable:s,edgesReconnectable:c,elementsSelectable:u,onClick:g,onDoubleClick:h,onContextMenu:m,onMouseEnter:v,onMouseMove:b,onMouseLeave:x,reconnectRadius:S,onReconnect:w,onReconnectStart:C,onReconnectEnd:E,rfId:N,edgeTypes:k,noPanClassName:M,onError:P,disableKeyboardA11y:D}=e,j=f(e=>e.edgeLookup.get(o)),A=f(e=>e.defaultEdgeOptions),_=(j=A?{...A,...j}:j).type||"default",I=(null==k?void 0:k[_])||e1[_];void 0===I&&(null==P||P("011",i.xc.error011(_)),_="default",I=(null==k?void 0:k.default)||e1.default);let O=!!(j.focusable||s&&void 0===j.focusable),R=void 0!==w&&(j.reconnectable||c&&void 0===j.reconnectable),L=!!(j.selectable||u&&void 0===j.selectable),z=(0,r.useRef)(null),[B,V]=(0,r.useState)(!1),[H,T]=(0,r.useState)(!1),F=p(),{zIndex:Z,sourceX:X,sourceY:K,targetX:W,targetY:Y,sourcePosition:Q,targetPosition:U}=f((0,r.useCallback)(e=>{let t=e.nodeLookup.get(j.source),n=e.nodeLookup.get(j.target);if(!t||!n)return{zIndex:j.zIndex,...e3};let l=(0,i.b5)({id:o,sourceNode:t,targetNode:n,sourceHandle:j.sourceHandle||null,targetHandle:j.targetHandle||null,connectionMode:e.connectionMode,onError:P});return{zIndex:(0,i.qX)({selected:j.selected,zIndex:j.zIndex,sourceNode:t,targetNode:n,elevateOnSelect:e.elevateEdgesOnSelect,zIndexMode:e.zIndexMode}),...l||e3}},[j.source,j.target,j.sourceHandle,j.targetHandle,j.selected,j.zIndex]),d.x),G=(0,r.useMemo)(()=>j.markerStart?"url('#".concat((0,i.aW)(j.markerStart,N),"')"):void 0,[j.markerStart,N]),q=(0,r.useMemo)(()=>j.markerEnd?"url('#".concat((0,i.aW)(j.markerEnd,N),"')"):void 0,[j.markerEnd,N]);if(j.hidden||null===X||null===K||null===W||null===Y)return null;let $=h?e=>{h(e,{...j})}:void 0,J=m?e=>{m(e,{...j})}:void 0,ee=v?e=>{v(e,{...j})}:void 0,et=b?e=>{b(e,{...j})}:void 0,en=x?e=>{x(e,{...j})}:void 0;return(0,l.jsx)("svg",{style:{zIndex:Z},children:(0,l.jsxs)("g",{className:(0,a.A)(["react-flow__edge","react-flow__edge-".concat(_),j.className,M,{selected:j.selected,animated:j.animated,inactive:!L&&!g,updating:B,selectable:L}]),onClick:e=>{let{addSelectedEdges:t,unselectNodesAndEdges:n,multiSelectionActive:l}=F.getState();if(L)if(F.setState({nodesSelectionActive:!1}),j.selected&&l){var r;n({nodes:[],edges:[j]}),null==(r=z.current)||r.blur()}else t([o]);g&&g(e,j)},onDoubleClick:$,onContextMenu:J,onMouseEnter:ee,onMouseMove:et,onMouseLeave:en,onKeyDown:O?e=>{if(!D&&i.tn.includes(e.key)&&L){let{unselectNodesAndEdges:n,addSelectedEdges:l}=F.getState();if("Escape"===e.key){var t;null==(t=z.current)||t.blur(),n({edges:[j]})}else l([o])}}:void 0,tabIndex:O?0:void 0,role:null!=(t=j.ariaRole)?t:O?"group":"img","aria-roledescription":"edge","data-id":o,"data-testid":"rf__edge-".concat(o),"aria-label":null===j.ariaLabel?void 0:j.ariaLabel||"Edge from ".concat(j.source," to ").concat(j.target),"aria-describedby":O?"".concat(y,"-").concat(N):void 0,ref:z,...j.domAttributes,children:[!H&&(0,l.jsx)(I,{id:o,source:j.source,target:j.target,type:j.type,selected:j.selected,animated:j.animated,selectable:L,deletable:null==(n=j.deletable)||n,label:j.label,labelStyle:j.labelStyle,labelShowBg:j.labelShowBg,labelBgStyle:j.labelBgStyle,labelBgPadding:j.labelBgPadding,labelBgBorderRadius:j.labelBgBorderRadius,sourceX:X,sourceY:K,targetX:W,targetY:Y,sourcePosition:Q,targetPosition:U,data:j.data,style:j.style,sourceHandleId:j.sourceHandle,targetHandleId:j.targetHandle,markerStart:G,markerEnd:q,pathOptions:"pathOptions"in j?j.pathOptions:void 0,interactionWidth:j.interactionWidth}),R&&(0,l.jsx)(e5,{edge:j,isReconnectable:R,reconnectRadius:S,onReconnect:w,onReconnectStart:C,onReconnectEnd:E,sourceX:X,sourceY:K,targetX:W,targetY:Y,sourcePosition:Q,targetPosition:U,setUpdateHover:V,setReconnecting:T})]})})});let e7=e=>({edgesFocusable:e.edgesFocusable,edgesReconnectable:e.edgesReconnectable,elementsSelectable:e.elementsSelectable,connectionMode:e.connectionMode,onError:e.onError});function e8(e){let{defaultMarkerColor:t,onlyRenderVisibleElements:n,rfId:o,edgeTypes:a,noPanClassName:s,onReconnect:c,onEdgeContextMenu:u,onEdgeMouseEnter:g,onEdgeMouseMove:p,onEdgeMouseLeave:h,onEdgeClick:m,reconnectRadius:v,onEdgeDoubleClick:y,onReconnectStart:b,onReconnectEnd:x,disableKeyboardA11y:S}=e,{edgesFocusable:w,edgesReconnectable:C,elementsSelectable:E,onError:N}=f(e7,d.x),k=f((0,r.useCallback)(e=>{if(!n)return e.edges.map(e=>e.id);let t=[];if(e.width&&e.height)for(let n of e.edges){let o=e.nodeLookup.get(n.source),l=e.nodeLookup.get(n.target);o&&l&&(0,i.uj)({sourceNode:o,targetNode:l,width:e.width,height:e.height,transform:e.transform})&&t.push(n.id)}return t},[n]),d.x);return(0,l.jsxs)("div",{className:"react-flow__edges",children:[(0,l.jsx)(eO,{defaultColor:t,rfId:o}),k.map(e=>(0,l.jsx)(e6,{id:e,edgesFocusable:w,edgesReconnectable:C,elementsSelectable:E,noPanClassName:s,onReconnect:c,onContextMenu:u,onMouseEnter:g,onMouseMove:p,onMouseLeave:h,onClick:m,reconnectRadius:v,onDoubleClick:y,onReconnectStart:b,onReconnectEnd:x,rfId:o,onError:N,edgeTypes:a,disableKeyboardA11y:S},e))]})}e8.displayName="EdgeRenderer";let e9=(0,r.memo)(e8),te=e=>"translate(".concat(e.transform[0],"px,").concat(e.transform[1],"px) scale(").concat(e.transform[2],")");function tt(e){let{children:t}=e,n=f(te);return(0,l.jsx)("div",{className:"react-flow__viewport xyflow__viewport react-flow__container",style:{transform:n},children:t})}let tn=e=>{var t;return null==(t=e.panZoom)?void 0:t.syncViewport};function to(e){return e.connection.inProgress?{...e.connection,to:(0,i.Ff)(e.connection.to,e.transform)}:{...e.connection}}let tl=e=>({nodesConnectable:e.nodesConnectable,isValid:e.connection.isValid,inProgress:e.connection.inProgress,width:e.width,height:e.height});function tr(e){let{containerStyle:t,style:n,type:o,component:r}=e,{nodesConnectable:s,width:c,height:u,isValid:g,inProgress:p}=f(tl,d.x);return c&&s&&p?(0,l.jsx)("svg",{style:t,width:c,height:u,className:"react-flow__connectionline react-flow__container",children:(0,l.jsx)("g",{className:(0,a.A)(["react-flow__connection",(0,i.HF)(g)]),children:(0,l.jsx)(ta,{style:n,type:o,CustomComponent:r,isValid:g})})}):null}let ta=e=>{let{style:t,type:n=i.Do.Bezier,CustomComponent:o,isValid:r}=e,{inProgress:a,from:s,fromNode:c,fromHandle:u,fromPosition:g,to:p,toNode:h,toHandle:m,toPosition:v,pointer:y}=function(e){return f(to,d.x)}();if(!a)return;if(o)return(0,l.jsx)(o,{connectionLineType:n,connectionLineStyle:t,fromNode:c,fromHandle:u,fromX:s.x,fromY:s.y,toX:p.x,toY:p.y,fromPosition:g,toPosition:v,connectionStatus:(0,i.HF)(r),toNode:h,toHandle:m,pointer:y});let b="",x={sourceX:s.x,sourceY:s.y,sourcePosition:g,targetX:p.x,targetY:p.y,targetPosition:v};switch(n){case i.Do.Bezier:[b]=(0,i.Fp)(x);break;case i.Do.SimpleBezier:[b]=eV(x);break;case i.Do.Step:[b]=(0,i.oN)({...x,borderRadius:0});break;case i.Do.SmoothStep:[b]=(0,i.oN)(x);break;default:[b]=(0,i.ah)(x)}return(0,l.jsx)("path",{d:b,fill:"none",className:"react-flow__connection-path",style:t})};ta.displayName="ConnectionLine";let ti={};function ts(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:ti;(0,r.useRef)(e),p(),(0,r.useEffect)(()=>{},[e])}function td(e){let{nodeTypes:t,edgeTypes:n,onInit:o,onNodeClick:a,onEdgeClick:i,onNodeDoubleClick:s,onEdgeDoubleClick:d,onNodeMouseEnter:c,onNodeMouseMove:u,onNodeMouseLeave:g,onNodeContextMenu:h,onSelectionContextMenu:m,onSelectionStart:v,onSelectionEnd:y,connectionLineType:b,connectionLineStyle:x,connectionLineComponent:S,connectionLineContainerStyle:w,selectionKeyCode:C,selectionOnDrag:E,selectionMode:N,multiSelectionKeyCode:k,panActivationKeyCode:M,zoomActivationKeyCode:P,deleteKeyCode:D,onlyRenderVisibleElements:j,elementsSelectable:A,defaultViewport:_,translateExtent:I,minZoom:O,maxZoom:R,preventScrolling:L,defaultMarkerColor:z,zoomOnScroll:B,zoomOnPinch:V,panOnScroll:H,panOnScrollSpeed:T,panOnScrollMode:F,zoomOnDoubleClick:Z,panOnDrag:X,onPaneClick:K,onPaneMouseEnter:W,onPaneMouseMove:Y,onPaneMouseLeave:Q,onPaneScroll:U,onPaneContextMenu:G,paneClickDistance:q,nodeClickDistance:$,onEdgeContextMenu:J,onEdgeMouseEnter:et,onEdgeMouseMove:en,onEdgeMouseLeave:eo,reconnectRadius:el,onReconnect:er,onReconnectStart:ea,onReconnectEnd:ei,noDragClassName:es,noWheelClassName:ed,noPanClassName:ec,disableKeyboardA11y:eu,nodeExtent:eg,rfId:ef,viewport:ep,onViewportChange:eh}=e;ts(t),ts(n),p(),(0,r.useRef)(!1),(0,r.useEffect)(()=>{},[]);let em=ee(),ev=(0,r.useRef)(!1);return(0,r.useEffect)(()=>{!ev.current&&em.viewportInitialized&&o&&(setTimeout(()=>o(em),1),ev.current=!0)},[o,em.viewportInitialized]),!function(e){let t=f(tn),n=p();(0,r.useEffect)(()=>{e&&(null==t||t(e),n.setState({transform:[e.x,e.y,e.zoom]}))},[e,t])}(ep),(0,l.jsx)(eN,{onPaneClick:K,onPaneMouseEnter:W,onPaneMouseMove:Y,onPaneMouseLeave:Q,onPaneContextMenu:G,onPaneScroll:U,paneClickDistance:q,deleteKeyCode:D,selectionKeyCode:C,selectionOnDrag:E,selectionMode:N,onSelectionStart:v,onSelectionEnd:y,multiSelectionKeyCode:k,panActivationKeyCode:M,zoomActivationKeyCode:P,elementsSelectable:A,zoomOnScroll:B,zoomOnPinch:V,zoomOnDoubleClick:Z,panOnScroll:H,panOnScrollSpeed:T,panOnScrollMode:F,panOnDrag:X,defaultViewport:_,translateExtent:I,minZoom:O,maxZoom:R,onSelectionContextMenu:m,preventScrolling:L,noDragClassName:es,noWheelClassName:ed,noPanClassName:ec,disableKeyboardA11y:eu,onViewportChange:eh,isControlledViewport:!!ep,children:(0,l.jsxs)(tt,{children:[(0,l.jsx)(e9,{edgeTypes:n,onEdgeClick:i,onEdgeDoubleClick:d,onReconnect:er,onReconnectStart:ea,onReconnectEnd:ei,onlyRenderVisibleElements:j,onEdgeContextMenu:J,onEdgeMouseEnter:et,onEdgeMouseMove:en,onEdgeMouseLeave:eo,reconnectRadius:el,defaultMarkerColor:z,noPanClassName:ec,disableKeyboardA11y:eu,rfId:ef}),(0,l.jsx)(tr,{style:x,type:b,component:S,containerStyle:w}),(0,l.jsx)("div",{className:"react-flow__edgelabel-renderer"}),(0,l.jsx)(ej,{nodeTypes:t,onNodeClick:a,onNodeDoubleClick:s,onNodeMouseEnter:c,onNodeMouseMove:u,onNodeMouseLeave:g,onNodeContextMenu:h,nodeClickDistance:$,onlyRenderVisibleElements:j,noPanClassName:ec,noDragClassName:es,disableKeyboardA11y:eu,nodeExtent:eg,rfId:ef}),(0,l.jsx)("div",{className:"react-flow__viewport-portal"})]})})}td.displayName="GraphView";let tc=(0,r.memo)(td),tu=function(){var e,t,n;let{nodes:o,edges:l,defaultNodes:r,defaultEdges:a,width:s,height:d,fitView:c,fitViewOptions:u,minZoom:g=.5,maxZoom:f=2,nodeOrigin:p,nodeExtent:h,zIndexMode:m="basic"}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},v=new Map,y=new Map,b=new Map,x=new Map,S=null!=(e=null!=a?a:l)?e:[],w=null!=(t=null!=r?r:o)?t:[],C=null!=p?p:[0,0],E=null!=h?h:i.ZO;(0,i.qn)(b,x,S);let{nodesInitialized:N}=(0,i.bi)(w,v,y,{nodeOrigin:C,nodeExtent:E,zIndexMode:m}),k=[0,0,1];if(c&&s&&d){let e=(0,i.aZ)(v,{filter:e=>!!((e.width||e.initialWidth)&&(e.height||e.initialHeight))}),{x:t,y:o,zoom:l}=(0,i.R4)(e,s,d,g,f,null!=(n=null==u?void 0:u.padding)?n:.1);k=[t,o,l]}return{rfId:"1",width:null!=s?s:0,height:null!=d?d:0,transform:k,nodes:w,nodesInitialized:N,nodeLookup:v,parentLookup:y,edges:S,edgeLookup:x,connectionLookup:b,onNodesChange:null,onEdgesChange:null,hasDefaultNodes:void 0!==r,hasDefaultEdges:void 0!==a,panZoom:null,minZoom:g,maxZoom:f,translateExtent:i.ZO,nodeExtent:E,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionMode:i.WZ.Strict,domNode:null,paneDragging:!1,noPanClassName:"nopan",nodeOrigin:C,nodeDragThreshold:1,connectionDragThreshold:1,snapGrid:[15,15],snapToGrid:!1,nodesDraggable:!0,nodesConnectable:!0,nodesFocusable:!0,edgesFocusable:!0,edgesReconnectable:!0,elementsSelectable:!0,elevateNodesOnSelect:!0,elevateEdgesOnSelect:!0,selectNodesOnDrag:!0,multiSelectionActive:!1,fitViewQueued:null!=c&&c,fitViewOptions:u,fitViewResolver:null,connection:{...i.bK},connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:"",autoPanOnConnect:!0,autoPanOnNodeDrag:!0,autoPanOnNodeFocus:!0,autoPanSpeed:15,connectionRadius:20,onError:i.KE,isValidConnection:void 0,onSelectionChangeHandlers:[],lib:"react",debug:!1,ariaLabelConfig:i.tM,zIndexMode:m,onNodesChangeMiddlewareMap:new Map,onEdgesChangeMiddlewareMap:new Map}};function tg(e){let{initialNodes:t,initialEdges:n,defaultNodes:o,defaultEdges:a,initialWidth:d,initialHeight:c,initialMinZoom:g,initialMaxZoom:f,initialFitViewOptions:p,fitView:h,nodeOrigin:m,nodeExtent:v,zIndexMode:y,children:b}=e,[x]=(0,r.useState)(()=>(e=>{let{nodes:t,edges:n,defaultNodes:o,defaultEdges:l,width:r,height:a,fitView:d,fitViewOptions:c,minZoom:u,maxZoom:g,nodeOrigin:f,nodeExtent:p,zIndexMode:h}=e;return(0,s.h)((e,s)=>{async function m(){let{nodeLookup:t,panZoom:n,fitViewOptions:o,fitViewResolver:l,width:r,height:a,minZoom:d,maxZoom:c}=s();n&&(await (0,i.IO)({nodes:t,width:r,height:a,panZoom:n,minZoom:d,maxZoom:c},o),null==l||l.resolve(!0),e({fitViewResolver:null}))}return{...tu({nodes:t,edges:n,width:r,height:a,fitView:d,fitViewOptions:c,minZoom:u,maxZoom:g,nodeOrigin:f,nodeExtent:p,defaultNodes:o,defaultEdges:l,zIndexMode:h}),setNodes:t=>{let{nodeLookup:n,parentLookup:o,nodeOrigin:l,elevateNodesOnSelect:r,fitViewQueued:a,zIndexMode:d,nodesSelectionActive:c}=s(),{nodesInitialized:u,hasSelectedNodes:g}=(0,i.bi)(t,n,o,{nodeOrigin:l,nodeExtent:p,elevateNodesOnSelect:r,checkEquality:!0,zIndexMode:d}),f=c&&g;a&&u?(m(),e({nodes:t,nodesInitialized:u,fitViewQueued:!1,fitViewOptions:void 0,nodesSelectionActive:f})):e({nodes:t,nodesInitialized:u,nodesSelectionActive:f})},setEdges:t=>{let{connectionLookup:n,edgeLookup:o}=s();(0,i.qn)(n,o,t),e({edges:t})},setDefaultNodesAndEdges:(t,n)=>{if(t){let{setNodes:n}=s();n(t),e({hasDefaultNodes:!0})}if(n){let{setEdges:t}=s();t(n),e({hasDefaultEdges:!0})}},updateNodeInternals:t=>{let{triggerNodeChanges:n,nodeLookup:o,parentLookup:l,domNode:r,nodeOrigin:a,nodeExtent:d,debug:c,fitViewQueued:u,zIndexMode:g}=s(),{changes:f,updatedInternals:p}=(0,i.uL)(t,o,l,r,a,d,g);p&&((0,i.vS)(o,l,{nodeOrigin:a,nodeExtent:d,zIndexMode:g}),u?(m(),e({fitViewQueued:!1,fitViewOptions:void 0})):e({}),(null==f?void 0:f.length)>0&&(c&&console.log("React Flow: trigger node changes",f),null==n||n(f)))},updateNodePositions:function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=[],o=[],{nodeLookup:l,triggerNodeChanges:r,connection:a,updateConnection:d,onNodesChangeMiddlewareMap:c}=s();for(let[r,s]of e){let e=l.get(r),c=!!((null==e?void 0:e.expandParent)&&(null==e?void 0:e.parentId)&&(null==s?void 0:s.position)),f={id:r,type:"position",position:c?{x:Math.max(0,s.position.x),y:Math.max(0,s.position.y)}:s.position,dragging:t};if(e&&a.inProgress&&a.fromNode.id===e.id){let t=(0,i.M_)(e,a.fromHandle,i.yX.Left,!0);d({...a,from:t})}if(c&&e.parentId){var u,g;n.push({id:r,parentId:e.parentId,rect:{...s.internals.positionAbsolute,width:null!=(u=s.measured.width)?u:0,height:null!=(g=s.measured.height)?g:0}})}o.push(f)}if(n.length>0){let{parentLookup:e,nodeOrigin:t}=s(),r=(0,i.r8)(n,l,e,t);o.push(...r)}for(let e of c.values())o=e(o);r(o)},triggerNodeChanges:e=>{let{onNodesChange:t,setNodes:n,nodes:o,hasDefaultNodes:l,debug:r}=s();(null==e?void 0:e.length)&&(l&&n(Z(e,o)),r&&console.log("React Flow: trigger node changes",e),null==t||t(e))},triggerEdgeChanges:e=>{let{onEdgesChange:t,setEdges:n,edges:o,hasDefaultEdges:l,debug:r}=s();(null==e?void 0:e.length)&&(l&&n(Z(e,o)),r&&console.log("React Flow: trigger edge changes",e),null==t||t(e))},addSelectedNodes:e=>{let{multiSelectionActive:t,edgeLookup:n,nodeLookup:o,triggerNodeChanges:l,triggerEdgeChanges:r}=s();if(t)return void l(e.map(e=>X(e,!0)));l(K(o,new Set([...e]),!0)),r(K(n))},addSelectedEdges:e=>{let{multiSelectionActive:t,edgeLookup:n,nodeLookup:o,triggerNodeChanges:l,triggerEdgeChanges:r}=s();if(t)return void r(e.map(e=>X(e,!0)));r(K(n,new Set([...e]))),l(K(o,new Set,!0))},unselectNodesAndEdges:function(){let{nodes:e,edges:t}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{edges:n,nodes:o,nodeLookup:l,triggerNodeChanges:r,triggerEdgeChanges:a}=s(),i=[];for(let t of e||o){if(!t.selected)continue;let e=l.get(t.id);e&&(e.selected=!1),i.push(X(t.id,!1))}let d=[];for(let e of t||n)e.selected&&d.push(X(e.id,!1));r(i),a(d)},setMinZoom:t=>{let{panZoom:n,maxZoom:o}=s();null==n||n.setScaleExtent([t,o]),e({minZoom:t})},setMaxZoom:t=>{let{panZoom:n,minZoom:o}=s();null==n||n.setScaleExtent([o,t]),e({maxZoom:t})},setTranslateExtent:t=>{var n;null==(n=s().panZoom)||n.setTranslateExtent(t),e({translateExtent:t})},resetSelectedElements:()=>{let{edges:e,nodes:t,triggerNodeChanges:n,triggerEdgeChanges:o,elementsSelectable:l}=s();if(!l)return;let r=t.reduce((e,t)=>t.selected?[...e,X(t.id,!1)]:e,[]),a=e.reduce((e,t)=>t.selected?[...e,X(t.id,!1)]:e,[]);n(r),o(a)},setNodeExtent:t=>{let{nodes:n,nodeLookup:o,parentLookup:l,nodeOrigin:r,elevateNodesOnSelect:a,nodeExtent:d,zIndexMode:c}=s();(t[0][0]!==d[0][0]||t[0][1]!==d[0][1]||t[1][0]!==d[1][0]||t[1][1]!==d[1][1])&&((0,i.bi)(n,o,l,{nodeOrigin:r,nodeExtent:t,elevateNodesOnSelect:a,checkEquality:!1,zIndexMode:c}),e({nodeExtent:t}))},panBy:e=>{let{transform:t,width:n,height:o,panZoom:l,translateExtent:r}=s();return(0,i.No)({delta:e,panZoom:l,transform:t,translateExtent:r,width:n,height:o})},setCenter:async(e,t,n)=>{let{width:o,height:l,maxZoom:r,panZoom:a}=s();if(!a)return Promise.resolve(!1);let i=void 0!==(null==n?void 0:n.zoom)?n.zoom:r;return await a.setViewport({x:o/2-e*i,y:l/2-t*i,zoom:i},{duration:null==n?void 0:n.duration,ease:null==n?void 0:n.ease,interpolate:null==n?void 0:n.interpolate}),Promise.resolve(!0)},cancelConnection:()=>{e({connection:{...i.bK}})},updateConnection:t=>{e({connection:t})},reset:()=>e({...tu()})}},Object.is)})({nodes:t,edges:n,defaultNodes:o,defaultEdges:a,width:d,height:c,fitView:h,minZoom:g,maxZoom:f,fitViewOptions:p,nodeOrigin:m,nodeExtent:v,zIndexMode:y}));return(0,l.jsx)(u,{value:x,children:(0,l.jsx)($,{children:b})})}function tf(e){let{children:t,nodes:n,edges:o,defaultNodes:a,defaultEdges:i,width:s,height:d,fitView:u,fitViewOptions:g,minZoom:f,maxZoom:p,nodeOrigin:h,nodeExtent:m,zIndexMode:v}=e;return(0,r.useContext)(c)?(0,l.jsx)(l.Fragment,{children:t}):(0,l.jsx)(tg,{initialNodes:n,initialEdges:o,defaultNodes:a,defaultEdges:i,initialWidth:s,initialHeight:d,fitView:u,initialFitViewOptions:g,initialMinZoom:f,initialMaxZoom:p,nodeOrigin:h,nodeExtent:m,zIndexMode:v,children:t})}let tp={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0};var th=U(function(e,t){let{nodes:n,edges:o,defaultNodes:s,defaultEdges:d,className:c,nodeTypes:u,edgeTypes:g,onNodeClick:f,onEdgeClick:p,onInit:h,onMove:m,onMoveStart:v,onMoveEnd:y,onConnect:b,onConnectStart:x,onConnectEnd:S,onClickConnectStart:C,onClickConnectEnd:N,onNodeMouseEnter:k,onNodeMouseMove:M,onNodeMouseLeave:P,onNodeContextMenu:D,onNodeDoubleClick:A,onNodeDragStart:O,onNodeDrag:R,onNodeDragStop:L,onNodesDelete:V,onEdgesDelete:H,onDelete:T,onSelectionChange:F,onSelectionDragStart:Z,onSelectionDrag:X,onSelectionDragStop:K,onSelectionContextMenu:W,onSelectionStart:Y,onSelectionEnd:Q,onBeforeDelete:U,connectionMode:G,connectionLineType:q=i.Do.Bezier,connectionLineStyle:$,connectionLineComponent:J,connectionLineContainerStyle:ee,deleteKeyCode:et="Backspace",selectionKeyCode:en="Shift",selectionOnDrag:eo=!1,selectionMode:el=i.Qc.Full,panActivationKeyCode:er="Space",multiSelectionKeyCode:ea=(0,i.Ue)()?"Meta":"Control",zoomActivationKeyCode:ei=(0,i.Ue)()?"Meta":"Control",snapToGrid:es,snapGrid:ed,onlyRenderVisibleElements:ec=!1,selectNodesOnDrag:eu,nodesDraggable:eg,autoPanOnNodeFocus:ef,nodesConnectable:ep,nodesFocusable:eh,nodeOrigin:em=_,edgesFocusable:ev,edgesReconnectable:ey,elementsSelectable:eb=!0,defaultViewport:ex=I,minZoom:eS=.5,maxZoom:ew=2,translateExtent:eC=i.ZO,preventScrolling:eE=!0,nodeExtent:eN,defaultMarkerColor:ek="#b1b1b7",zoomOnScroll:eM=!0,zoomOnPinch:eP=!0,panOnScroll:eD=!1,panOnScrollSpeed:ej=.5,panOnScrollMode:eA=i.ny.Free,zoomOnDoubleClick:e_=!0,panOnDrag:eI=!0,onPaneClick:eO,onPaneMouseEnter:eR,onPaneMouseMove:eL,onPaneMouseLeave:ez,onPaneScroll:eB,onPaneContextMenu:eV,paneClickDistance:eH=1,nodeClickDistance:eT=0,children:eF,onReconnect:eZ,onReconnectStart:eX,onReconnectEnd:eK,onEdgeContextMenu:eW,onEdgeDoubleClick:eY,onEdgeMouseEnter:eQ,onEdgeMouseMove:eU,onEdgeMouseLeave:eG,reconnectRadius:eq=10,onNodesChange:e$,onEdgesChange:eJ,noDragClassName:e0="nodrag",noWheelClassName:e1="nowheel",noPanClassName:e3="nopan",fitView:e2,fitViewOptions:e4,connectOnClick:e5,attributionPosition:e6,proOptions:e7,defaultEdgeOptions:e8,elevateNodesOnSelect:e9=!0,elevateEdgesOnSelect:te=!1,disableKeyboardA11y:tt=!1,autoPanOnConnect:tn,autoPanOnNodeDrag:to,autoPanSpeed:tl,connectionRadius:tr,isValidConnection:ta,onError:ti,style:ts,id:td,nodeDragThreshold:tu,connectionDragThreshold:tg,viewport:th,onViewportChange:tm,width:tv,height:ty,colorMode:tb="light",debug:tx,onScroll:tS,ariaLabelConfig:tw,zIndexMode:tC="basic",...tE}=e,tN=td||"1",tk=function(e){var t;let[n,o]=(0,r.useState)("system"===e?null:e);return(0,r.useEffect)(()=>{if("system"!==e)return void o(e);let t=B(),n=()=>o((null==t?void 0:t.matches)?"dark":"light");return n(),null==t||t.addEventListener("change",n),()=>{null==t||t.removeEventListener("change",n)}},[e]),null!==n?n:(null==(t=B())?void 0:t.matches)?"dark":"light"}(tb),tM=(0,r.useCallback)(e=>{e.currentTarget.scrollTo({top:0,left:0,behavior:"instant"}),null==tS||tS(e)},[tS]);return(0,l.jsx)("div",{"data-testid":"rf__wrapper",...tE,onScroll:tM,style:{...ts,...tp},ref:t,className:(0,a.A)(["react-flow",c,tk]),id:td,role:"application",children:(0,l.jsxs)(tf,{nodes:n,edges:o,width:tv,height:ty,fitView:e2,fitViewOptions:e4,minZoom:eS,maxZoom:ew,nodeOrigin:em,nodeExtent:eN,zIndexMode:tC,children:[(0,l.jsx)(z,{nodes:n,edges:o,defaultNodes:s,defaultEdges:d,onConnect:b,onConnectStart:x,onConnectEnd:S,onClickConnectStart:C,onClickConnectEnd:N,nodesDraggable:eg,autoPanOnNodeFocus:ef,nodesConnectable:ep,nodesFocusable:eh,edgesFocusable:ev,edgesReconnectable:ey,elementsSelectable:eb,elevateNodesOnSelect:e9,elevateEdgesOnSelect:te,minZoom:eS,maxZoom:ew,nodeExtent:eN,onNodesChange:e$,onEdgesChange:eJ,snapToGrid:es,snapGrid:ed,connectionMode:G,translateExtent:eC,connectOnClick:e5,defaultEdgeOptions:e8,fitView:e2,fitViewOptions:e4,onNodesDelete:V,onEdgesDelete:H,onDelete:T,onNodeDragStart:O,onNodeDrag:R,onNodeDragStop:L,onSelectionDrag:X,onSelectionDragStart:Z,onSelectionDragStop:K,onMove:m,onMoveStart:v,onMoveEnd:y,noPanClassName:e3,nodeOrigin:em,rfId:tN,autoPanOnConnect:tn,autoPanOnNodeDrag:to,autoPanSpeed:tl,onError:ti,connectionRadius:tr,isValidConnection:ta,selectNodesOnDrag:eu,nodeDragThreshold:tu,connectionDragThreshold:tg,onBeforeDelete:U,debug:tx,ariaLabelConfig:tw,zIndexMode:tC}),(0,l.jsx)(tc,{onInit:h,onNodeClick:f,onEdgeClick:p,onNodeMouseEnter:k,onNodeMouseMove:M,onNodeMouseLeave:P,onNodeContextMenu:D,onNodeDoubleClick:A,nodeTypes:u,edgeTypes:g,connectionLineType:q,connectionLineStyle:$,connectionLineComponent:J,connectionLineContainerStyle:ee,selectionKeyCode:en,selectionOnDrag:eo,selectionMode:el,deleteKeyCode:et,multiSelectionKeyCode:ea,panActivationKeyCode:er,zoomActivationKeyCode:ei,onlyRenderVisibleElements:ec,defaultViewport:ex,translateExtent:eC,minZoom:eS,maxZoom:ew,preventScrolling:eE,zoomOnScroll:eM,zoomOnPinch:eP,zoomOnDoubleClick:e_,panOnScroll:eD,panOnScrollSpeed:ej,panOnScrollMode:eA,panOnDrag:eI,onPaneClick:eO,onPaneMouseEnter:eR,onPaneMouseMove:eL,onPaneMouseLeave:ez,onPaneScroll:eB,onPaneContextMenu:eV,paneClickDistance:eH,nodeClickDistance:eT,onSelectionContextMenu:W,onSelectionStart:Y,onSelectionEnd:Q,onReconnect:eZ,onReconnectStart:eX,onReconnectEnd:eK,onEdgeContextMenu:eW,onEdgeDoubleClick:eY,onEdgeMouseEnter:eQ,onEdgeMouseMove:eU,onEdgeMouseLeave:eG,reconnectRadius:eq,defaultMarkerColor:ek,noDragClassName:e0,noWheelClassName:e1,noPanClassName:e3,rfId:tN,disableKeyboardA11y:tt,nodeExtent:eN,viewport:th,onViewportChange:tm}),(0,l.jsx)(j,{onSelectionChange:F}),eF,(0,l.jsx)(E,{proOptions:e7,position:e6}),(0,l.jsx)(w,{rfId:tN,disableKeyboardA11y:tt})]})})});function tm(e){let{dimensions:t,lineWidth:n,variant:o,className:r}=e;return(0,l.jsx)("path",{strokeWidth:n,d:"M".concat(t[0]/2," 0 V").concat(t[1]," M0 ").concat(t[1]/2," H").concat(t[0]),className:(0,a.A)(["react-flow__background-pattern",o,r])})}function tv(e){let{radius:t,className:n}=e;return(0,l.jsx)("circle",{cx:t,cy:t,r:t,className:(0,a.A)(["react-flow__background-pattern","dots",n])})}i.xc.error014(),function(e){e.Lines="lines",e.Dots="dots",e.Cross="cross"}(o||(o={}));let ty={[o.Dots]:1,[o.Lines]:1,[o.Cross]:6},tb=e=>({transform:e.transform,patternId:"pattern-".concat(e.rfId)});function tx(e){let{id:t,variant:n=o.Dots,gap:i=20,size:s,lineWidth:c=1,offset:u=0,color:g,bgColor:p,style:h,className:m,patternClassName:v}=e,y=(0,r.useRef)(null),{transform:b,patternId:x}=f(tb,d.x),S=s||ty[n],w=n===o.Dots,C=n===o.Cross,E=Array.isArray(i)?i:[i,i],N=[E[0]*b[2]||1,E[1]*b[2]||1],k=S*b[2],M=Array.isArray(u)?u:[u,u],P=C?[k,k]:N,D=[M[0]*b[2]||1+P[0]/2,M[1]*b[2]||1+P[1]/2],j="".concat(x).concat(t||"");return(0,l.jsxs)("svg",{className:(0,a.A)(["react-flow__background",m]),style:{...h,...eo,"--xy-background-color-props":p,"--xy-background-pattern-color-props":g},ref:y,"data-testid":"rf__background",children:[(0,l.jsx)("pattern",{id:j,x:b[0]%N[0],y:b[1]%N[1],width:N[0],height:N[1],patternUnits:"userSpaceOnUse",patternTransform:"translate(-".concat(D[0],",-").concat(D[1],")"),children:w?(0,l.jsx)(tv,{radius:k/2,className:v}):(0,l.jsx)(tm,{dimensions:P,lineWidth:c,variant:n,className:v})}),(0,l.jsx)("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:"url(#".concat(j,")")})]})}tx.displayName="Background";let tS=(0,r.memo)(tx);function tw(){return(0,l.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",children:(0,l.jsx)("path",{d:"M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z"})})}function tC(){return(0,l.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 5",children:(0,l.jsx)("path",{d:"M0 0h32v4.2H0z"})})}function tE(){return(0,l.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 30",children:(0,l.jsx)("path",{d:"M3.692 4.63c0-.53.4-.938.939-.938h5.215V0H4.708C2.13 0 0 2.054 0 4.63v5.216h3.692V4.631zM27.354 0h-5.2v3.692h5.17c.53 0 .984.4.984.939v5.215H32V4.631A4.624 4.624 0 0027.354 0zm.954 24.83c0 .532-.4.94-.939.94h-5.215v3.768h5.215c2.577 0 4.631-2.13 4.631-4.707v-5.139h-3.692v5.139zm-23.677.94c-.531 0-.939-.4-.939-.94v-5.138H0v5.139c0 2.577 2.13 4.707 4.708 4.707h5.138V25.77H4.631z"})})}function tN(){return(0,l.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children:(0,l.jsx)("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z"})})}function tk(){return(0,l.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children:(0,l.jsx)("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047z"})})}function tM(e){let{children:t,className:n,...o}=e;return(0,l.jsx)("button",{type:"button",className:(0,a.A)(["react-flow__controls-button",n]),...o,children:t})}let tP=e=>({isInteractive:e.nodesDraggable||e.nodesConnectable||e.elementsSelectable,minZoomReached:e.transform[2]<=e.minZoom,maxZoomReached:e.transform[2]>=e.maxZoom,ariaLabelConfig:e.ariaLabelConfig});function tD(e){let{style:t,showZoom:n=!0,showFitView:o=!0,showInteractive:r=!0,fitViewOptions:i,onZoomIn:s,onZoomOut:c,onFitView:u,onInteractiveChange:g,className:h,children:m,position:v="bottom-left",orientation:y="vertical","aria-label":b}=e,x=p(),{isInteractive:S,minZoomReached:w,maxZoomReached:E,ariaLabelConfig:N}=f(tP,d.x),{zoomIn:k,zoomOut:M,fitView:P}=ee();return(0,l.jsxs)(C,{className:(0,a.A)(["react-flow__controls","horizontal"===y?"horizontal":"vertical",h]),position:v,style:t,"data-testid":"rf__controls","aria-label":null!=b?b:N["controls.ariaLabel"],children:[n&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(tM,{onClick:()=>{k(),null==s||s()},className:"react-flow__controls-zoomin",title:N["controls.zoomIn.ariaLabel"],"aria-label":N["controls.zoomIn.ariaLabel"],disabled:E,children:(0,l.jsx)(tw,{})}),(0,l.jsx)(tM,{onClick:()=>{M(),null==c||c()},className:"react-flow__controls-zoomout",title:N["controls.zoomOut.ariaLabel"],"aria-label":N["controls.zoomOut.ariaLabel"],disabled:w,children:(0,l.jsx)(tC,{})})]}),o&&(0,l.jsx)(tM,{className:"react-flow__controls-fitview",onClick:()=>{P(i),null==u||u()},title:N["controls.fitView.ariaLabel"],"aria-label":N["controls.fitView.ariaLabel"],children:(0,l.jsx)(tE,{})}),r&&(0,l.jsx)(tM,{className:"react-flow__controls-interactive",onClick:()=>{x.setState({nodesDraggable:!S,nodesConnectable:!S,elementsSelectable:!S}),null==g||g(!S)},title:N["controls.interactive.ariaLabel"],"aria-label":N["controls.interactive.ariaLabel"],children:S?(0,l.jsx)(tk,{}):(0,l.jsx)(tN,{})}),m]})}tD.displayName="Controls";let tj=(0,r.memo)(tD),tA=(0,r.memo)(function(e){let{id:t,x:n,y:o,width:r,height:i,style:s,color:d,strokeColor:c,strokeWidth:u,className:g,borderRadius:f,shapeRendering:p,selected:h,onClick:m}=e,{background:v,backgroundColor:y}=s||{};return(0,l.jsx)("rect",{className:(0,a.A)(["react-flow__minimap-node",{selected:h},g]),x:n,y:o,rx:f,ry:f,width:r,height:i,style:{fill:d||v||y,stroke:c,strokeWidth:u},shapeRendering:p,onClick:m?e=>m(e,t):void 0})}),t_=e=>e.nodes.map(e=>e.id),tI=e=>e instanceof Function?e:()=>e,tO=(0,r.memo)(function(e){let{id:t,nodeColorFunc:n,nodeStrokeColorFunc:o,nodeClassNameFunc:r,nodeBorderRadius:a,nodeStrokeWidth:s,shapeRendering:c,NodeComponent:u,onClick:g}=e,{node:p,x:h,y:m,width:v,height:y}=f(e=>{let n=e.nodeLookup.get(t);if(!n)return{node:void 0,x:0,y:0,width:0,height:0};let o=n.internals.userNode,{x:l,y:r}=n.internals.positionAbsolute,{width:a,height:s}=(0,i.uD)(o);return{node:o,x:l,y:r,width:a,height:s}},d.x);return p&&!p.hidden&&(0,i.QE)(p)?(0,l.jsx)(u,{x:h,y:m,width:v,height:y,style:p.style,selected:!!p.selected,className:r(p),color:n(p),borderRadius:a,strokeColor:o(p),strokeWidth:s,shapeRendering:c,onClick:g,id:p.id}):null});i.xN.Line,i.xN.Handle}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3787,6815,9492],{27559:()=>{}},_=>{_.O(0,[2367,6725,7358],()=>_(_.s=27559)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6605],{50940:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});let a=(0,r(89117).A)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]])},53220:(e,t,r)=>{"use strict";r.d(t,{V5:()=>n,tV:()=>l});var a=r(94387);class s extends Error{constructor(e,t,r){super(r||t),this.status=e,this.error=t,this.reason=r,this.name="MergeApprovalsApiError"}}function n(e,t){return e instanceof s?401===e.status||"unauthorized"===e.error?{text:"이 기기에 소유자 토큰이 없어 승인 목록을 못 읽었습니다 — 이미 연결된 기기의 설정 › Connect token 에서 토큰을 만들어, 이 기기의 설정 › Daemon › Bearer token 칸에 붙이면 바로 보입니다.",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 l(e){var t,r;let n=null!=(t=e.fetchImpl)?t:fetch,l=(null!=(r=e.baseUrl)?r:"").replace(/\/+$/,"");async function i(t,r){let a={...r,headers:{"content-type":"application/json",...e.authHeader?{authorization:e.authHeader}:{}}},i=e.client?await e.client.fetchResponse(t,a):await n("".concat(l).concat(t),a),c=await i.json().catch(()=>null);if(!i.ok){var o;let e=c&&"object"==typeof c?c:{};throw new s(i.status,null!=(o=e.error)?o:"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(a.r5,"?state=merged"):a.r5)},get:e=>i("".concat(a.r5,"/").concat(e)),check:(e,t)=>i("".concat(a.r5,"/").concat(e,"/check"),{method:"POST",body:JSON.stringify({headSha:t})}),merge:(e,t)=>i("".concat(a.r5,"/").concat(e,"/merge"),{method:"POST",body:JSON.stringify({headSha:t})})}}},63868:(e,t,r)=>{Promise.resolve().then(r.bind(r,71339))},71339:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>g});var a=r(41121),s=r(91269),n=r(71946),l=r(38317),i=r(38519),c=r(53220);function o(e,t){return"UNKNOWN"===t&&e<3?3e3:null}async function u(e,t){let r,a=0,s=o(0,"UNKNOWN");for(;null!==s;){var n,l,i;if(await t.sleep(s),t.isActive&&!t.isActive())break;a++;try{r=await e(),null==(l=t.onDetail)||l.call(t,r)}catch(e){}null==(n=t.onAttempt)||n.call(t),s=o(a,null!=(i=null==r?void 0:r.mergeable)?i:"UNKNOWN")}return{attempts:a,...r?{last:r}:{}}}var d=r(50940);function m(e){let{view:t,target:r}=e,[n]=(0,s.useState)(()=>Date.now()),[l,i]=(0,s.useState)(n);(0,s.useEffect)(()=>{let e=window.setInterval(()=>i(Date.now()),100);return()=>window.clearInterval(e)},[]);let c=function(e,t,r){let a="".concat((Math.max(0,e)/1e3).toFixed(1),"초");return{title:"merged"===t?"GitHub 에서 승인해 머지된 PR 을 읽고 있습니다":r?"GitHub 에서 승인 대기 PR 과 #".concat(r," 카드를 읽고 있습니다"):"GitHub 에서 승인 대기 PR 을 읽고 있습니다",clock:a,hint:e>=8e3?"평소(2~5초)보다 오래 걸립니다 — GitHub 응답을 기다리는 중이며 멈추지 않았습니다.":null}}(l-n,t,r);return(0,a.jsxs)("section",{role:"status","aria-live":"polite","aria-busy":"true",className:"space-y-3","data-approvals-loading":!0,children:[(0,a.jsxs)("div",{className:"flex items-center gap-3 rounded-xl border border-blue-500/40 bg-blue-500/5 p-4",children:[(0,a.jsx)(d.A,{className:"h-6 w-6 shrink-0 text-blue-500 motion-safe:animate-spin","aria-hidden":!0}),(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsx)("p",{className:"font-medium",children:c.title}),c.hint&&(0,a.jsx)("p",{className:"mt-1 text-sm text-amber-600 dark:text-amber-400",children:c.hint})]}),(0,a.jsx)("span",{className:"font-mono text-lg tabular-nums text-blue-600 dark:text-blue-300","aria-label":"경과 시간",children:c.clock})]}),(0,a.jsx)("div",{className:"h-1 overflow-hidden rounded-full bg-muted","aria-hidden":!0,children:(0,a.jsx)("div",{className:"h-full w-1/3 rounded-full bg-blue-500 motion-safe:animate-[approvals-slide_1.2s_ease-in-out_infinite]"})}),(0,a.jsx)("style",{children:"@keyframes approvals-slide{0%{transform:translateX(-100%)}100%{transform:translateX(300%)}}"}),[0,1].map(e=>(0,a.jsxs)("div",{className:"space-y-3 rounded-xl border border-border bg-card p-5 motion-safe:animate-pulse","aria-hidden":!0,children:[(0,a.jsx)("div",{className:"h-4 w-2/3 rounded bg-muted"}),(0,a.jsx)("div",{className:"h-3 w-full rounded bg-muted"}),(0,a.jsx)("div",{className:"h-3 w-5/6 rounded bg-muted"})]},e))]})}function h(e){let{view:t,onChange:r}=e,s=(e,s)=>(0,a.jsx)("button",{type:"button",role:"tab","aria-selected":t===e,onClick:()=>r(e),className:"rounded-md px-3 py-1 text-sm ".concat(t===e?"bg-foreground text-background":"bg-muted text-foreground"),children:s});return(0,a.jsxs)("div",{role:"tablist","aria-label":"승인 목록 보기",className:"flex gap-2",children:[s("open","승인 대기"),s("merged","완료")]})}function b(e){let{brief:t,lineage:r,summary:s}=e;return(0,a.jsxs)(a.Fragment,{children:[null!==t?(0,a.jsx)("section",{"aria-label":"승인 요약",className:"mt-3 break-words text-sm leading-relaxed [&_a]:text-blue-600 [&_a]:underline [&_blockquote]:border-l-2 [&_blockquote]:pl-3 [&_h3]:mt-3 [&_h3]:font-semibold [&_li]:ml-5 [&_li]:list-disc [&_p]:my-2 [&_table]:block [&_table]:overflow-x-auto",children:(0,a.jsx)(n.oz,{remarkPlugins:[l.A],components:{a:e=>{let{href:t,children:r}=e;return(0,a.jsx)("a",{href:t,target:"_blank",rel:"noreferrer",children:r})}},children:t})}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("p",{className:"mt-3 rounded border border-amber-500/40 bg-amber-500/15 p-3 text-sm text-amber-800 dark:text-amber-300",children:"승인 요약 내용이 없습니다 — GitHub 본문을 보거나 발사자에게 요청하세요"}),(0,a.jsx)("p",{className:"mt-3 whitespace-pre-wrap text-sm",children:s})]}),r&&(0,a.jsxs)("p",{className:"mt-3 text-sm text-muted-foreground",children:["아이디어 원장: ",r]})]})}function p(e){var t;let{gate:r,busy:s,blocked:n,mergeLabel:l,onCheck:i,onMerge:c}=e;return(0,a.jsxs)("div",{className:"mt-3 space-y-2","aria-label":"머지 전 검사",children:["none"===r.status&&(0,a.jsx)("button",{type:"button",onClick:i,disabled:s,className:"rounded-lg border px-3 py-2 text-sm disabled:opacity-50",children:"머지 전 검사 시작"}),"running"===r.status&&(0,a.jsx)("p",{role:"status",className:"text-sm",children:"검사 중…"}),"passed"===r.status&&(0,a.jsxs)("p",{className:"text-sm text-green-700 dark:text-green-400",children:["검사 통과 (",null!=(t=r.os)?t:"unknown",")",r.baseDrifted?" \xb7 검사 뒤 main 이 움직였다 — 머지 때 겹치는 파일이 있으면 다시 검사를 요구한다":""]}),("failed"===r.status||"unmeasured"===r.status)&&(0,a.jsxs)("div",{role:"alert",className:"text-sm text-red-600",children:[(0,a.jsx)("p",{children:"failed"===r.status?"검사 실패":"검사 측정 불가"}),(0,a.jsx)("ul",{className:"list-inside list-disc",children:r.failures.map((e,t)=>(0,a.jsx)("li",{children:e},t))}),(0,a.jsx)("button",{type:"button",onClick:i,disabled:s,className:"mt-2 rounded-lg border px-3 py-2 disabled:opacity-50",children:"머지 전 검사 다시 시작"})]}),(0,a.jsx)("button",{type:"button",onClick:c,disabled:s||n||"passed"!==r.status,className:"rounded-lg bg-blue-600 px-4 py-2 text-sm font-medium text-white disabled:cursor-not-allowed disabled:opacity-50",children:null!=l?l:"승인하고 머지"})]})}function x(e){let{card:t,api:r,attempt:a,onAttempt:n,onUpdate:l}=e,i="UNKNOWN"===t.mergeable&&!t.merged&&"OPEN"===t.state;return(0,s.useEffect)(()=>{if(!i||a>0)return;let e=!0,s=[];return u(()=>r.get(t.number),{sleep:e=>new Promise(t=>{s.push(window.setTimeout(t,e))}),isActive:()=>e,onDetail:r=>{e&&l(r,t.headSha)},onAttempt:()=>{e&&n(t.number)}}),()=>{for(let t of(e=!1,s))window.clearTimeout(t)}},[r,t.number,i,a,n,l]),null}function f(){let{client:e}=(0,i.Q)(),t=(0,s.useMemo)(()=>(0,c.tV)({client:e}),[e]),[r,n]=(0,s.useState)([]),[l,u]=(0,s.useState)(!0),[d,f]=(0,s.useState)(null),[g,N]=(0,s.useState)(null),[w,j]=(0,s.useState)({}),[v,k]=(0,s.useState)({}),[y,S]=(0,s.useState)(null),[E,_]=(0,s.useState)("open"),A=(0,s.useCallback)(e=>{k(t=>{var r;return{...t,[e]:(null!=(r=t[e])?r:0)+1}})},[]),C=(0,s.useCallback)((e,t)=>{n(r=>r.map(r=>r.number!==e.number||r.headSha!==t?r:{...e,gate:e.headSha===t?e.gate:{status:"none",failures:[]},merged:r.merged}))},[]);async function O(e){N(e.number),j(t=>({...t,[e.number]:""}));try{let{gate:r}=await t.check(e.number,e.headSha);n(t=>t.map(t=>t.number===e.number&&t.headSha===e.headSha?{...t,gate:r}:t))}catch(t){j(r=>({...r,[e.number]:(0,c.V5)(t,"검사를 시작하지 못했습니다.").text}))}finally{N(null)}}async function P(e){if(window.confirm("#".concat(e.number," ").concat(e.title,"\n현재 확인한 변경을 승인하고 머지할까요?"))){N(e.number),j(t=>({...t,[e.number]:""}));try{await t.merge(e.number,e.headSha),n(t=>t.map(t=>t.number===e.number?{...t,merged:!0,state:"MERGED"}:t))}catch(t){j(r=>({...r,[e.number]:(0,c.V5)(t,"머지하지 못했습니다.").text}))}finally{N(null)}}}return(0,s.useEffect)(()=>{let e=r.filter(e=>"OPEN"===e.state&&("running"===e.gate.status||"passed"===e.gate.status));if("open"!==E||!e.length)return;let a=!0,s=window.setInterval(()=>{for(let r of e)t.get(r.number).then(e=>{a&&C(e,r.headSha)}).catch(e=>{a&&j(t=>({...t,[r.number]:(0,c.V5)(e,"검사 상태를 불러오지 못했습니다.").text}))})},1e4);return()=>{a=!1,window.clearInterval(s)}},[t,r,C,E]),(0,s.useEffect)(()=>{let e=!0,r=Number(new URLSearchParams(window.location.search).get("pr")),a=Number.isSafeInteger(r)&&r>0?r:null;return(u(!0),f(null),S(a),"merged"===E)?(t.list("merged").then(t=>{let{items:r}=t;e&&n(r)}).catch(t=>{e&&f((0,c.V5)(t,"목록을 불러오지 못했습니다."))}).finally(()=>{e&&u(!1)}),()=>{e=!1}):(t.list().then(async r=>{let{items:s}=r;if(!e)return;let l=s.find(e=>e.number===a);if(a&&!l)try{let r=await t.get(a);e&&n([r,...s])}catch(t){e&&f((0,c.V5)(t,"PR 을 불러오지 못했습니다.")),e&&n(s)}else n(a?[...s].sort((e,t)=>Number(t.number===a)-Number(e.number===a)):s)}).catch(t=>{e&&f((0,c.V5)(t,"목록을 불러오지 못했습니다."))}).finally(()=>{e&&u(!1)}),()=>{e=!1})},[t,E]),(0,a.jsxs)("main",{className:"mx-auto max-w-3xl space-y-5 p-4 pb-20 text-foreground sm:p-8",children:[(0,a.jsxs)("header",{children:[(0,a.jsx)("h1",{className:"text-2xl font-semibold",children:"Approvals"}),(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:"아이디어 PR 변경 사항을 확인하고 승인합니다."})]}),(0,a.jsx)(h,{view:E,onChange:e=>{n([]),_(e)}}),l&&(0,a.jsx)(m,{view:E,target:y}),d&&(0,a.jsxs)("p",{role:"alert",className:"text-red-600","data-approvals-error":!0,children:[d.text,d.href&&(0,a.jsxs)(a.Fragment,{children:[" ",(0,a.jsx)("a",{href:d.href,className:"font-semibold underline underline-offset-2","data-approvals-settings":!0,children:"설정 열기 →"})]})]}),!l&&!r.length&&!d&&(0,a.jsx)("p",{children:"merged"===E?"승인해 머지된 아이디어 PR 이 아직 없습니다.":"승인을 기다리는 PR 이 없습니다."}),r.map(e=>{var r,s;let n=e.merged||"MERGED"===e.state,l="OPEN"!==e.state&&!n,i=e.draft?"초안 PR 은 머지할 수 없습니다. GitHub에서 초안을 해제한 뒤 다시 확인하세요.":e.checks.failure>0?"실패한 검사가 있습니다.":e.checks.pending>0?"검사가 아직 끝나지 않았습니다.":"CONFLICTING"===e.mergeable?"머지 충돌이 있습니다.":"MERGEABLE"!==e.mergeable?"머지 가능 여부가 아직 확인되지 않았습니다.":"main"!==e.base?"대상 브랜치가 main 이 아닙니다.":"",c=y===e.number,u=null!=(r=v[e.number])?r:0;return(0,a.jsxs)("article",{className:"rounded-xl border bg-card p-5 shadow-sm ".concat(c?"border-blue-500 ring-2 ring-blue-500/30":"border-border"),children:[(0,a.jsx)(x,{card:e,api:t,attempt:u,onAttempt:A,onUpdate:C}),(0,a.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-2",children:[(0,a.jsxs)("h2",{className:"font-semibold",children:["#",e.number," \xb7 ",e.title]}),(0,a.jsx)("span",{className:"rounded bg-muted px-2 py-1 text-xs",children:n?function(e){if(!e)return"머지됨";let t=new Date(e);if(Number.isNaN(t.getTime()))return"머지됨";let r=new Date(t.getTime()+324e5).toISOString();return"머지됨 ".concat(r.slice(5,10)," ").concat(r.slice(11,16)," KST")}(e.mergedAt):l?"닫힘":e.draft?"초안":"열림"})]}),(0,a.jsx)(b,{brief:e.brief,lineage:e.lineage,summary:e.summary}),(0,a.jsxs)("p",{className:"mt-3 text-sm text-muted-foreground",children:["+",e.additions," 추가 / −",e.deletions," 삭제 \xb7 파일 ",e.changedFiles]}),(0,a.jsxs)("div",{className:"mt-2 flex flex-wrap gap-2 text-xs","aria-label":"검사 상태",children:[(0,a.jsxs)("span",{className:"rounded bg-green-500/15 px-2 py-1",children:["성공 ",e.checks.success]}),(0,a.jsxs)("span",{className:"rounded bg-red-500/15 px-2 py-1",children:["실패 ",e.checks.failure]}),(0,a.jsxs)("span",{className:"rounded bg-yellow-500/15 px-2 py-1",children:["대기 ",e.checks.pending]}),e.checks.success+e.checks.failure+e.checks.pending===0&&(0,a.jsx)("span",{className:"rounded bg-slate-500/15 px-2 py-1",children:"GitHub 검사 없음 — 머지 전 검사는 아래에서 별도로 실행"})]}),(0,a.jsxs)("details",{open:c,className:"mt-3 text-sm",children:[(0,a.jsx)("summary",{className:"cursor-pointer",children:"바뀐 파일 보기"}),(0,a.jsx)("ul",{className:"mt-2 list-inside list-disc break-all",children:e.files.map(e=>(0,a.jsx)("li",{children:e},e))})]}),(0,a.jsxs)("div",{className:"mt-4 flex flex-wrap items-center gap-4",children:[(0,a.jsx)("a",{className:"text-sm text-blue-600 underline",href:e.url,target:"_blank",rel:"noopener noreferrer",children:"GitHub 에서 보기"}),!n&&!l&&(0,a.jsx)(p,{gate:e.gate,busy:null!==g,blocked:!!i,mergeLabel:g===e.number?"머지 중…":"UNKNOWN"!==(s=e.mergeable)?"승인하고 머지":null===o(u,s)?"확인 종료":"확인 중…",onCheck:()=>O(e),onMerge:()=>P(e)})]}),i&&!n&&!l&&(0,a.jsxs)("p",{className:"mt-2 text-sm text-amber-600",children:[i,"UNKNOWN"===e.mergeable&&u>=3?" 자동 확인이 끝났습니다. 최신 상태는 페이지를 새로고침하세요.":""]}),w[e.number]&&(0,a.jsx)("p",{role:"alert",className:"mt-2 text-sm text-red-600",children:w[e.number]})]},e.number)})]})}function g(){return(0,a.jsx)(f,{})}},89117:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var a=r(91269);let s=function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return t.filter((e,t,r)=>!!e&&""!==e.trim()&&r.indexOf(e)===t).join(" ").trim()},n=e=>{let t=e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,r)=>r?r.toUpperCase():t.toLowerCase());return t.charAt(0).toUpperCase()+t.slice(1)};var l={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let i=(0,a.createContext)({}),c=(0,a.forwardRef)((e,t)=>{var r,n,c;let{color:o,size:u,strokeWidth:d,absoluteStrokeWidth:m,className:h="",children:b,iconNode:p,...x}=e,{size:f=24,strokeWidth:g=2,absoluteStrokeWidth:N=!1,color:w="currentColor",className:j=""}=null!=(r=(0,a.useContext)(i))?r:{},v=(null!=m?m:N)?24*Number(null!=d?d:g)/Number(null!=u?u:f):null!=d?d:g;return(0,a.createElement)("svg",{ref:t,...l,width:null!=(n=null!=u?u:f)?n:l.width,height:null!=(c=null!=u?u:f)?c:l.height,stroke:null!=o?o:w,strokeWidth:v,className:s("lucide",j,h),...!b&&!(e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0;return!1})(x)&&{"aria-hidden":"true"},...x},[...p.map(e=>{let[t,r]=e;return(0,a.createElement)(t,r)}),...Array.isArray(b)?b:[b]])}),o=(e,t)=>{let r=(0,a.forwardRef)((r,l)=>{let{className:i,...o}=r;return(0,a.createElement)(c,{ref:l,iconNode:t,className:s("lucide-".concat(n(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()),"lucide-".concat(e),i),...o})});return r.displayName=n(e),r}},94387:(e,t,r)=>{"use strict";r.d(t,{GM:()=>i,J3:()=>l,WF:()=>a,bR:()=>n,m:()=>c,r5:()=>s});let a="/v1/devices",s="/v1/approvals/merges",n="/v1/templates/capability-preview",l="/v1/idle-nudge/preview",i="/v1/morning-digest/showroom",c="/v1/next-fluent/dispatch"}},e=>{e.O(0,[2330,8519,2367,6725,7358],()=>e(e.s=63868)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2922],{5344:(e,t,s)=>{"use strict";s.d(t,{r:()=>i});var r=s(41121),a=s(45609),n=s.n(a);let l=[{key:"autopilot",href:"/autopilot",num:"①",label:"미션",sub:"Autopilot"},{key:"tasks",href:"/tasks",num:"②",label:"작업",sub:"Tasks"},{key:"scheduler",href:"/scheduler",num:"③",label:"스케줄",sub:"Schedules"}];function i(e){let{active:t}=e;return(0,r.jsxs)("nav",{"aria-label":"Mission Fabric 파이프라인","data-testid":"fabric-stage-header",className:"flex flex-wrap items-center gap-1 text-xs",children:[(0,r.jsx)("span",{className:"mr-1 text-muted-foreground",children:"Missions"}),l.map((e,s)=>(0,r.jsxs)("span",{className:"flex items-center gap-1",children:[(0,r.jsxs)(n(),{href:e.href,"aria-current":e.key===t?"page":void 0,className:["rounded px-2 py-1 ring-1 transition-colors",e.key===t?"bg-primary/15 font-medium text-foreground ring-primary/40":"text-muted-foreground ring-border hover:bg-muted hover:text-foreground"].join(" "),children:[(0,r.jsx)("span",{className:"mr-1",children:e.num}),e.label,(0,r.jsx)("span",{className:"ml-1 text-[10px] opacity-70",children:e.sub})]}),s<l.length-1&&(0,r.jsx)("span",{className:"text-muted-foreground/50","aria-hidden":!0,children:"→"})]},e.key))]})}},30968:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>O});var r=s(41121),a=s(91269),n=s(38519),l=s(72030),i=s(66062);let o=["dig","backtest","trade","retro","replay"],d=[["replay","dig"],["dig","backtest"],["backtest","trade"],["trade","retro"],["retro","replay"]];function c(e){if(!e)return"never";let t=Date.parse(e);if(Number.isNaN(t))return e;let s=Math.max(0,Math.floor((Date.now()-t)/1e3));if(s<60)return"".concat(s,"s ago");let r=Math.floor(s/60);if(r<60)return"".concat(r,"m ago");let a=Math.floor(r/60);return a<24?"".concat(a,"h ago"):"".concat(Math.floor(a/24),"d ago")}function u(e){var t;let s=(null==(t=e.last)?void 0:t.at)?Date.parse(e.last.at):NaN;return!Number.isNaN(s)&&Date.now()-s<36e5}function x(){var e;let{client:t}=(0,n.Q)(),[s,x]=(0,a.useState)([]),[m,p]=(0,a.useState)(!1),[g,h]=(0,a.useState)(null),f=(0,a.useCallback)(async()=>{p(!0);try{var e,s;let r=await t.fetchJson("/v1/dashboard/loops");x(null!=(s=null==(e=r.loops)?void 0:e.loops)?s:[])}catch(e){i.oR.error("loops load failed: ".concat(e instanceof Error?e.message:e))}finally{p(!1)}},[t]);(0,a.useEffect)(()=>{f();let e=window.setInterval(()=>void f(),3e4);return()=>window.clearInterval(e)},[f]);let b=(0,a.useMemo)(()=>{let e=new Map;for(let t of s)e.set(t.name,t);return e},[s]),v=(0,a.useMemo)(()=>{let e=new Map;return o.forEach((t,s)=>e.set(t,function(e){let t=Math.PI/180*(-90+72*e);return{x:200+128*Math.cos(t),y:190+128*Math.sin(t)}}(s))),e},[]),j=g&&null!=(e=b.get(g))?e:null;return(0,r.jsxs)("div",{className:"mx-auto max-w-[1100px] space-y-4 p-4",children:[(0,r.jsxs)("header",{className:"flex flex-col gap-3 lg:flex-row lg:items-end lg:justify-between",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("h1",{className:"text-xl font-semibold tracking-tight",children:"투자 루프 오케스트라"}),(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:"5개 자율 루프의 순환(분석→백테→매매→회고→재생). 원 클릭 = 활동 기록 \xb7 펄스 = 최근 활동 \xb7 채움 = armed."})]}),(0,r.jsx)(l.$,{size:"sm",variant:"outline",onClick:()=>void f(),disabled:m,children:"Refresh"})]}),(0,r.jsxs)("div",{className:"flex flex-col gap-4 lg:flex-row lg:items-start",children:[(0,r.jsxs)("section",{className:"min-w-0 flex-1",children:[(0,r.jsxs)("svg",{viewBox:"0 0 400 380",className:"w-full",role:"img","aria-label":"loop orchestra graph",children:[(0,r.jsx)("defs",{children:(0,r.jsx)("marker",{id:"loop-arrow",viewBox:"0 0 10 10",refX:"8",refY:"5",markerWidth:"6",markerHeight:"6",orient:"auto-start-reverse",children:(0,r.jsx)("path",{d:"M 0 0 L 10 5 L 0 10 z",className:"fill-muted-foreground/50"})})}),d.map(e=>{let[t,s]=e,a=v.get(t),n=v.get(s);if(!a||!n)return null;let l=n.x-a.x,i=n.y-a.y,o=Math.hypot(l,i)||1,d=l/o,c=i/o,u=a.x+42*d,x=a.y+42*c,m=n.x-48*d,p=n.y-48*c;return(0,r.jsx)("line",{x1:u,y1:x,x2:m,y2:p,className:"stroke-muted-foreground/30",strokeWidth:1.5,markerEnd:"url(#loop-arrow)"},"".concat(t,"-").concat(s))}),o.map(e=>{var t,s,a,n;let l=b.get(e),i=v.get(e),o=!!l&&u(l),d=(null==l?void 0:l.armed)===!0,x=(null==l?void 0:l.category)!=="reflect",m=g===e;return(0,r.jsxs)("g",{className:"cursor-pointer",onClick:()=>h(t=>t===e?null:e),children:[o&&(0,r.jsxs)("circle",{cx:i.x,cy:i.y,r:40,className:x?"fill-sky-400/20":"fill-violet-400/20",children:[(0,r.jsx)("animate",{attributeName:"r",values:"".concat(40,";").concat(52),dur:"1.6s",repeatCount:"indefinite"}),(0,r.jsx)("animate",{attributeName:"opacity",values:"0.5;0",dur:"1.6s",repeatCount:"indefinite"})]}),(0,r.jsx)("circle",{cx:i.x,cy:i.y,r:40,className:"".concat(d?x?"fill-sky-500/25":"fill-violet-500/25":"fill-card"," ").concat(x?"stroke-sky-400":"stroke-violet-400"),strokeWidth:m?3.5:1.8}),(0,r.jsx)("text",{x:i.x,y:i.y-4,textAnchor:"middle",className:"fill-foreground text-[11px] font-medium",children:null!=(n=null==l||null==(s=l.label)||null==(t=s.split("(")[0])?void 0:t.trim())?n:e}),(0,r.jsx)("text",{x:i.x,y:i.y+10,textAnchor:"middle",className:"fill-muted-foreground text-[9px]",children:l?"".concat(c(null==(a=l.last)?void 0:a.at)):"—"}),(0,r.jsx)("text",{x:i.x,y:i.y+21,textAnchor:"middle",className:"fill-muted-foreground/70 text-[8px]",children:l?"today ".concat(l.today).concat(o?" \xb7 active":""):""})]},e)})]}),(0,r.jsxs)("div",{className:"flex flex-wrap justify-center gap-3 text-[11px] text-muted-foreground",children:[(0,r.jsxs)("span",{className:"flex items-center gap-1",children:[(0,r.jsx)("span",{className:"inline-block h-2 w-2 rounded-full bg-sky-400"})," 실행축"]}),(0,r.jsxs)("span",{className:"flex items-center gap-1",children:[(0,r.jsx)("span",{className:"inline-block h-2 w-2 rounded-full bg-violet-400"})," 사색축"]}),(0,r.jsx)("span",{children:"채움=armed \xb7 펄스=최근 활동"})]})]}),j&&(0,r.jsxs)("aside",{className:"w-full shrink-0 space-y-3 rounded-2xl border border-border bg-card p-4 lg:w-[360px]",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsx)("h2",{className:"text-base font-semibold",children:j.label}),(0,r.jsx)("button",{type:"button",onClick:()=>h(null),className:"rounded-md px-1.5 py-0.5 text-xs text-muted-foreground hover:bg-accent/40 hover:text-foreground","aria-label":"close",children:"✕"})]}),(0,r.jsxs)("div",{className:"flex flex-wrap gap-1.5 text-[11px]",children:[(0,r.jsx)("span",{className:"rounded-full px-2 py-0.5 ring-1 ".concat("reflect"===j.category?"text-violet-300 ring-violet-500/30":"text-sky-300 ring-sky-500/30"),children:"reflect"===j.category?"사색축":"실행축"}),(0,r.jsxs)("span",{className:"rounded-full bg-muted px-2 py-0.5 text-muted-foreground",children:["armed ",null===j.armed?"—":j.armed?"ON":"off"]}),(0,r.jsxs)("span",{className:"rounded-full bg-muted px-2 py-0.5 text-muted-foreground",children:["today ",j.today]}),u(j)&&(0,r.jsx)("span",{className:"rounded-full bg-emerald-500/15 px-2 py-0.5 text-emerald-300 ring-1 ring-emerald-500/30",children:"active"})]}),(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)("div",{className:"text-sm font-semibold",children:"활동 기록"}),j.recent&&j.recent.length>0?(0,r.jsx)("div",{className:"space-y-1.5",children:j.recent.map((e,t)=>(0,r.jsxs)("div",{className:"rounded-lg bg-muted/40 px-3 py-2 text-[11px]",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsx)("span",{className:"font-medium text-foreground",children:e.status}),(0,r.jsx)("span",{className:"text-muted-foreground",title:e.at,children:c(e.at)})]}),e.detail&&(0,r.jsx)("div",{className:"mt-0.5 truncate text-muted-foreground",title:e.detail,children:e.detail})]},"".concat(e.at,"-").concat(t)))}):(0,r.jsx)("div",{className:"text-sm text-muted-foreground",children:"활동 기록 없음."})]})]})]})]})}function m(e){let{api:t}=e,[s,n]=(0,a.useState)([]),[i,o]=(0,a.useState)(!0),d=(0,a.useCallback)(async()=>{try{var e;let s=await t.repoWatch();n(null!=(e=s.repos)?e:[])}catch(e){}finally{o(!1)}},[t]);return((0,a.useEffect)(()=>{d()},[d]),i)?(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:"불러오는 중…"}):(0,r.jsxs)("div",{className:"space-y-3",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:"참조 에이전트 repo 감시 — 새 커밋을 흡수 후보로 분석(제안은 텔레그램 report\xb7크론 08:40\xb720:40)."}),(0,r.jsx)(l.$,{size:"sm",variant:"outline",onClick:()=>void d(),children:"새로고침"})]}),(0,r.jsx)("div",{className:"grid gap-3 sm:grid-cols-3",children:s.map(e=>(0,r.jsxs)("div",{className:"rounded-lg border border-border bg-card/50 p-3",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsx)("span",{className:"font-medium",children:e.key}),e.lastNew>0&&(0,r.jsxs)("span",{className:"rounded bg-amber-500/15 px-2 py-0.5 text-xs text-amber-300 ring-1 ring-amber-500/30",children:["새 ",e.lastNew]})]}),(0,r.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:e.repo}),(0,r.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:e.note}),(0,r.jsxs)("div",{className:"mt-2 flex items-center justify-between text-xs",children:[(0,r.jsx)("span",{className:"font-mono text-muted-foreground",children:e.lastSha?e.lastSha.slice(0,7):"—"}),(0,r.jsx)("span",{className:"text-muted-foreground",children:function(e){if(!e)return"미감지";let t=Date.now()-Date.parse(e);if(Number.isNaN(t))return"—";let s=Math.round(t/6e4);if(s<60)return"".concat(s,"분 전");let r=Math.round(s/60);return r<24?"".concat(r,"시간 전"):"".concat(Math.round(r/24),"일 전")}(e.lastSeen)})]})]},e.repo))}),(0,r.jsx)("p",{className:"text-[11px] text-muted-foreground",children:"흡수 채택 → PR 초안 + 빌드/테스트 증거는 P2(disarmed) \xb7 merge/재부팅은 대표 HITL."})]})}let p=["dig","backtest","trade","retro","replay","delegate","autopilot"],g={trade:"bg-rose-500/15 text-rose-300 ring-rose-500/30",dig:"bg-sky-500/15 text-sky-200 ring-sky-500/30",backtest:"bg-violet-500/15 text-violet-200 ring-violet-500/30",retro:"bg-amber-500/15 text-amber-200 ring-amber-500/30",replay:"bg-indigo-500/15 text-indigo-200 ring-indigo-500/30",delegate:"bg-emerald-500/15 text-emerald-200 ring-emerald-500/30",autopilot:"bg-fuchsia-500/15 text-fuchsia-200 ring-fuchsia-500/30"};function h(e){let{api:t}=e,[s,n]=(0,a.useState)([]),[i,o]=(0,a.useState)(null),[d,c]=(0,a.useState)(!0),u=(0,a.useCallback)(async()=>{c(!0);try{var e;let s=await t.autonomy(80,null!=i?i:void 0);n(null!=(e=s.actions)?e:[])}catch(e){}finally{c(!1)}},[t,i]);return(0,a.useEffect)(()=>{u()},[u]),(0,r.jsxs)("div",{className:"space-y-3",children:[(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,r.jsx)("button",{type:"button",onClick:()=>o(null),className:["rounded px-2 py-0.5 text-xs ring-1",null===i?"bg-primary/20 text-foreground ring-primary/40":"bg-muted text-muted-foreground ring-border"].join(" "),children:"전체"}),p.map(e=>{var t;return(0,r.jsx)("button",{type:"button",onClick:()=>o(e),className:["rounded px-2 py-0.5 text-xs ring-1",i===e?null!=(t=g[e])?t:"bg-primary/20 ring-primary/40":"bg-muted text-muted-foreground ring-border"].join(" "),children:e},e)}),(0,r.jsx)(l.$,{size:"sm",variant:"outline",className:"ml-auto",onClick:()=>void u(),children:"새로고침"})]}),d?(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:"불러오는 중…"}):0===s.length?(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:"아직 기록된 자율행동이 없습니다. 자율루프가 돌면 여기에 “무엇을 왜 했나”가 쌓입니다."}):(0,r.jsx)("ul",{className:"space-y-2",children:s.map((e,t)=>{var s;return(0,r.jsxs)("li",{className:"rounded-lg border border-border bg-card/50 p-3",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("span",{className:["rounded px-2 py-0.5 text-xs ring-1",null!=(s=g[e.loop])?s:"bg-muted text-muted-foreground ring-border"].join(" "),children:e.loop}),(0,r.jsx)("span",{className:"text-xs text-muted-foreground",children:function(e){try{return new Intl.DateTimeFormat("ko-KR",{timeZone:"Asia/Seoul",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}).format(new Date(e))}catch(t){return e.slice(5,16)}}(e.ts)}),e.importance>=8&&(0,r.jsx)("span",{className:"rounded bg-rose-500/15 px-1.5 text-[10px] text-rose-300 ring-1 ring-rose-500/30",children:"중요"})]}),(0,r.jsx)("pre",{className:"mt-1.5 whitespace-pre-wrap font-sans text-sm text-foreground/90",children:e.text})]},"".concat(e.ts,"-").concat(t))})})]})}var f=s(45609),b=s.n(f),v=s(86542);let j={ok:{icon:"✅",tone:"text-emerald-300",label:"정상"},done:{icon:"✅",tone:"text-emerald-300",label:"완료"},stale:{icon:"⏰",tone:"text-amber-300",label:"밀림"},error:{icon:"❌",tone:"text-rose-400",label:"실패"},active:{icon:"\uD83D\uDD35",tone:"text-sky-300",label:"실행중"},pending:{icon:"⏳",tone:"text-muted-foreground",label:"대기"}},y={cron:"크론",task:"태스크",action:"자율행동"};function N(e){var t;let{counts:s,total:a}=e,n=Object.entries(null!=s?s:{}).filter(e=>{let[,t]=e;return t>0});if(!a||0===a)return(0,r.jsx)("span",{className:"text-xs text-muted-foreground",children:"태스크 0"});let l=null!=(t=null==s?void 0:s.done)?t:0;return(0,r.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,r.jsxs)("span",{className:"text-xs text-muted-foreground",children:["태스크 ",l,"/",a]}),n.map(e=>{let[t,s]=e;return(0,r.jsxs)("span",{className:"text-[11px] text-muted-foreground",children:[t,":",s]},t)})]})}function k(e){let{r:t}=e;if(!t||0===t.total)return(0,r.jsx)("span",{className:"text-xs text-muted-foreground",children:"파생 0"});let s=(e,t)=>e>0?(0,r.jsxs)("span",{className:["text-xs",j[t].tone].join(" "),children:[j[t].icon,e]},t):null;return(0,r.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,r.jsxs)("span",{className:"text-xs text-muted-foreground",children:["파생 ",t.total]}),s(t.ok,"ok"),s(t.stale,"stale"),s(t.error,"error"),s(t.active,"active"),s(t.pending,"pending")]})}function w(e){let{api:t,m:s,onDone:n}=e,i="scheduler"===s.model,o="task"===s.model,[d,c]=(0,a.useState)(""),[u,x]=(0,a.useState)(""),[m,p]=(0,a.useState)(""),[g,h]=(0,a.useState)(null),[f,b]=(0,a.useState)(null);if(!i&&!o)return(0,r.jsxs)("p",{className:"text-xs text-muted-foreground",children:["이 실행모델(",s.model,")은 지속 잡을 만들지 않아 구체화 대상이 아닙니다."]});let v=async e=>{h(e),b(null);let r=i?{command:d.trim(),...u.trim()?{cron:u.trim()}:{}}:{...m.trim()?{prompt:m.trim()}:{}};try{let l=await t.missionAction(s.id,e,r);if(l.error)b("오류: ".concat(l.error));else{var a;b("arm"===e?"승인\xb7arming ON 시 자동 실행":"구체화 완료(".concat(null!=(a=l.engine)?a:"",")")),n()}}catch(e){b(e instanceof Error?e.message:String(e))}finally{h(null)}};return(0,r.jsxs)("div",{className:"mt-3 space-y-2 rounded-md border border-border bg-background/50 p-2.5",children:[i&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("input",{value:d,onChange:e=>c(e.target.value),placeholder:"실행할 명령 (예: scripts/foo.ts) — 필수",className:"w-full rounded border border-border bg-background px-2 py-1 text-xs"}),(0,r.jsx)("input",{value:u,onChange:e=>x(e.target.value),placeholder:"cron (선택 \xb7 비우면 골에서 추론)",className:"w-full rounded border border-border bg-background px-2 py-1 font-mono text-xs"})]}),o&&(0,r.jsx)("input",{value:m,onChange:e=>p(e.target.value),placeholder:"태스크 내용 (선택 \xb7 비우면 골 사용)",className:"w-full rounded border border-border bg-background px-2 py-1 text-xs"}),(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)(l.$,{size:"sm",disabled:!!g||i&&!d.trim(),onClick:()=>void v("materialize"),children:"materialize"===g?"…":"지금 구체화"}),(0,r.jsx)(l.$,{size:"sm",variant:"outline",disabled:!!g||i&&!d.trim(),onClick:()=>void v("arm"),children:"arm"===g?"…":"승인(arm)"}),f&&(0,r.jsx)("span",{className:"text-xs text-muted-foreground",children:f})]})]})}function S(e){let{api:t,m:s}=e,n=!1===s.isAutopilot,[i,o]=(0,a.useState)(!1),[d,c]=(0,a.useState)(null),[u,x]=(0,a.useState)(!1),m=s.model?v.NE[s.model]:null,p=(0,a.useCallback)(async()=>{x(!0);try{c(await t.trace(s.id))}catch(e){}finally{x(!1)}},[t,s.id]),[g,h]=(0,a.useState)(!1),[f,S]=(0,a.useState)(!1),[C,z]=(0,a.useState)(null),M=!n&&"proposed"===s.status,E=(0,a.useCallback)(async()=>{let e=!i;o(e),!e||d||n||await p()},[i,d,p,n]),A=(0,a.useCallback)(async()=>{h(!0),z(null);try{await t.missionAction(s.id,"cancel"),await p()}catch(e){}finally{h(!1)}},[t,s.id,p]),J=(0,a.useCallback)(async()=>{S(!0),z(null);try{var e;let r=await t.missionAction(s.id,"approve");r.error?z("오류: ".concat(r.error)):z("✅ 승인 — 태스크 ".concat(null!=(e=r.activated)?e:0,"건 실행 시작(ready). 미션 running.")),await p()}catch(e){z(e instanceof Error?e.message:String(e))}finally{S(!1)}},[t,s.id,p]);return(0,r.jsxs)("div",{className:"rounded-lg border border-border bg-card/50",children:[(0,r.jsxs)("button",{type:"button",onClick:()=>void E(),className:"flex w-full items-start gap-3 p-3 text-left",children:[(0,r.jsx)("span",{className:"mt-0.5 text-muted-foreground",children:i?"▾":"▸"}),(0,r.jsxs)("div",{className:"min-w-0 flex-1 space-y-1.5",children:[(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[n?(0,r.jsx)("span",{className:"rounded bg-slate-500/15 px-2 py-0.5 text-xs font-medium text-slate-300 ring-1 ring-slate-500/30",children:"사람 \xb7 intake"}):m&&(0,r.jsx)("span",{className:["rounded px-2 py-0.5 text-xs font-medium ring-1",m.tone].join(" "),children:m.label}),!n&&"continuous"===s.kind&&(0,r.jsx)("span",{className:"rounded bg-sky-500/15 px-1.5 py-0.5 text-[11px] text-sky-300 ring-1 ring-sky-500/30",children:"상시"}),!n&&"finite"===s.kind&&(0,r.jsx)("span",{className:"rounded bg-violet-500/15 px-1.5 py-0.5 text-[11px] text-violet-300 ring-1 ring-violet-500/30",children:"유한"}),(0,r.jsx)("span",{className:"rounded bg-muted px-1.5 py-0.5 text-[11px] text-muted-foreground ring-1 ring-border",children:s.source}),M?(0,r.jsx)("span",{className:"rounded bg-amber-500/15 px-1.5 py-0.5 text-[11px] font-medium text-amber-300 ring-1 ring-amber-500/40",children:"승인 대기"}):(0,r.jsx)("span",{className:"rounded bg-muted px-1.5 py-0.5 text-[11px] text-muted-foreground ring-1 ring-border",children:s.status}),s.reviewDue&&(0,r.jsx)("span",{className:"rounded bg-amber-500/15 px-1.5 py-0.5 text-[11px] text-amber-300 ring-1 ring-amber-500/30",children:"⚠ 30일+ 리뷰"}),n?(0,r.jsx)(N,{counts:s.taskCounts,total:s.taskCount}):(0,r.jsx)(k,{r:s.derived})]}),(0,r.jsx)("p",{className:"truncate text-sm text-foreground/90",children:s.goal}),(0,r.jsx)("p",{className:"font-mono text-[10px] text-muted-foreground",children:s.id})]})]}),i&&n&&(0,r.jsxs)("div",{className:"border-t border-border px-4 py-3 space-y-2",children:[(0,r.jsx)("p",{className:"text-xs text-muted-foreground",children:"사람이 Intake 로 만든 미션입니다. 실행은 Task 보드에서 진행됩니다."}),(0,r.jsx)(N,{counts:s.taskCounts,total:s.taskCount}),(0,r.jsx)(b(),{href:"/tasks",className:"inline-block text-xs text-primary hover:underline",children:"② 작업 보드에서 보기 →"})]}),i&&!n&&(0,r.jsxs)("div",{className:"border-t border-border px-4 py-3",children:[M&&(0,r.jsxs)("div",{className:"mb-3 space-y-2 rounded-md border border-amber-500/30 bg-amber-500/5 p-3",children:[(0,r.jsx)("p",{className:"text-sm font-medium text-amber-200",children:"자동 분해 완료 \xb7 승인 대기"}),(0,r.jsxs)("p",{className:"text-xs text-muted-foreground",children:["골을 태스크로 자동 구체화했습니다(아직 ",(0,r.jsx)("b",{children:"실행 안 함"}),"). 승인하면 실행이 시작됩니다.","scheduler"===s.model&&" 반복 스케줄은 승인 후 배선됩니다."]}),(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)(l.$,{size:"sm",disabled:f||g,onClick:()=>void J(),children:f?"승인 중…":"✅ 승인(실행 시작)"}),(0,r.jsx)(l.$,{size:"sm",variant:"ghost",disabled:f||g,onClick:()=>void A(),className:"text-rose-400 hover:text-rose-300",children:g?"거절 중…":"거절"}),C&&(0,r.jsx)("span",{className:"text-xs text-muted-foreground",children:C})]})]}),u&&(0,r.jsx)("p",{className:"text-xs text-muted-foreground",children:"계보 조회 중…"}),d&&0===d.derived.length&&(0,r.jsx)("p",{className:"text-xs text-muted-foreground",children:d.note}),d&&(0,v.on)(d.derived)&&(0,r.jsxs)(b(),{href:(0,v.on)(d.derived),className:"mb-2 inline-block text-xs text-primary hover:underline","data-mission-schedules":!0,children:["이 미션을 부르는 스케줄 ",d.derived.filter(e=>"cron"===e.kind&&e.id).length," →"]}),d&&d.derived.length>0&&(0,r.jsx)("ul",{className:"space-y-1.5",children:d.derived.map((e,t)=>{let s=j[e.status];return(0,r.jsxs)("li",{className:"flex items-start gap-2 text-sm",children:[(0,r.jsx)("span",{className:s.tone,children:s.icon}),(0,r.jsx)("span",{className:"rounded bg-muted px-1.5 py-0.5 text-[10px] text-muted-foreground ring-1 ring-border",children:y[e.kind]}),(0,r.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,r.jsx)("span",{className:"text-foreground/90",children:e.name}),e.detail&&(0,r.jsx)("span",{className:"ml-2 text-xs text-muted-foreground",children:e.detail})]})]},t)})}),d&&"done"!==s.status&&"proposed"!==s.status&&(0,r.jsxs)("div",{className:"mt-2 flex items-center gap-2",children:[(0,r.jsx)(l.$,{size:"sm",variant:"ghost",disabled:g,onClick:()=>void A(),className:"text-rose-400 hover:text-rose-300",children:g?"종료 중…":"미션 종료(파생 잡 release)"}),"continuous"===s.kind&&(0,r.jsx)("span",{className:"text-[11px] text-muted-foreground",children:"상시 미션 — 종료 전까지 계속 실행"})]}),d&&!M&&(0,r.jsx)(w,{api:t,m:s,onDone:()=>void p()})]})]})}function C(e){let{api:t,onCommitted:s}=e,[n,i]=(0,a.useState)(""),[o,d]=(0,a.useState)(null),[c,u]=(0,a.useState)(!1),[x,m]=(0,a.useState)(!1),[p,g]=(0,a.useState)(null),h=(0,a.useCallback)(async()=>{let e=n.trim();if(e){u(!0),g(null);try{d((await t.triagePreview(e)).triage)}catch(e){g(e instanceof Error?e.message:String(e))}finally{u(!1)}}},[t,n]),f=(0,a.useCallback)(async()=>{let e=n.trim();if(e){m(!0),g(null);try{(await t.commitMission(e,"intake")).missionId?(i(""),d(null),s()):g("미션 생성 실패")}catch(e){g(e instanceof Error?e.message:String(e))}finally{m(!1)}}},[t,n,s]),b=o?v.NE[o.executionModel]:null;return(0,r.jsxs)("div",{className:"space-y-2 rounded-lg border border-border bg-card/40 p-3",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsxs)("span",{className:"text-sm font-medium",children:["골 던지기 ",(0,r.jsx)("span",{className:"text-xs font-normal text-muted-foreground",children:"— 소망을 말하면 미션이 됩니다"})]}),(0,r.jsx)("span",{className:"text-[11px] text-muted-foreground",children:"텔레그램에선 “미션:” 마커로"})]}),(0,r.jsx)("textarea",{value:n,onChange:e=>i(e.target.value),onKeyDown:e=>{"Enter"===e.key&&(e.metaKey||e.ctrlKey)&&h()},placeholder:"예: 삼성전자 급락하면 매매 검토 / 이 주제 끝까지 파봐 / 매일 아침 반도체 뉴스 정리",className:"min-h-[60px] w-full resize-y rounded-md border border-border bg-background px-3 py-2 text-sm"}),(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,r.jsx)(l.$,{onClick:()=>void h(),disabled:c||!n.trim(),size:"sm",variant:"outline",children:c?"분류 중…":"Triage (⌘↵)"}),(0,r.jsx)(l.$,{onClick:()=>void f(),disabled:x||!n.trim(),size:"sm",children:x?"커밋 중…":"미션 커밋 →"}),o&&b&&(0,r.jsxs)("span",{className:"flex flex-wrap items-center gap-1.5 text-xs",children:[(0,r.jsx)("span",{className:["rounded px-2 py-0.5 ring-1",b.tone].join(" "),children:b.label}),(0,r.jsx)("span",{className:"rounded bg-muted px-1.5 py-0.5 text-muted-foreground ring-1 ring-border",children:"heavy"===o.tier?"무거움":"가벼움"}),(0,r.jsx)("span",{className:"text-muted-foreground",children:o.rationale})]}),p&&(0,r.jsx)("span",{className:"text-xs text-rose-400",children:p})]})]})}function z(e){var t,s;let{api:n}=e,[i,o]=(0,a.useState)(null),[d,c]=(0,a.useState)(null),[u,x]=(0,a.useState)(!1),m=(0,a.useCallback)(async()=>{x(!0),c(null);try{let e=[...(await n.missionsUnified()).missions].sort((e,t)=>e.createdAt<t.createdAt?1:-1);o(e)}catch(e){c(e instanceof Error?e.message:String(e))}finally{x(!1)}},[n]);(0,a.useEffect)(()=>{m()},[m]);let p=null!=(t=null==i?void 0:i.filter(e=>e.isAutopilot).length)?t:0,g=(null!=(s=null==i?void 0:i.length)?s:0)-p;return(0,r.jsxs)("div",{className:"space-y-3",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsxs)("p",{className:"text-sm text-muted-foreground",children:["모든 미션(사람 intake + 자율)의 계보\xb7실행 상태.",i&&(0,r.jsxs)("span",{className:"ml-1 text-[11px]",children:["자율 ",p," \xb7 사람 ",g]})]}),(0,r.jsx)(l.$,{onClick:()=>void m(),disabled:u,size:"sm",variant:"outline",children:u?"…":"새로고침"})]}),(0,r.jsx)(C,{api:n,onCommitted:()=>void m()}),d&&(0,r.jsx)("p",{className:"text-xs text-rose-400",children:d}),i&&0===i.length&&(0,r.jsx)("p",{className:"rounded-lg border border-dashed border-border p-6 text-center text-sm text-muted-foreground",children:"아직 미션이 없습니다. 아래 “골 던지기”로 자율 미션을 만들거나, Intake 에서 메모를 포착하세요."}),i&&i.length>0&&(0,r.jsx)("div",{className:"space-y-2",children:i.map(e=>(0,r.jsx)(S,{api:n,m:e},e.id))})]})}var M=s(5344);let E=[{id:"missions",label:"Missions"},{id:"repo",label:"Repo Watch"},{id:"autonomy",label:"자율행동"},{id:"loops",label:"루프 오케스트라"}];function A(e){var t;let{arming:s}=e;if(!s)return null;let a=(e,t)=>(0,r.jsxs)("span",{className:["rounded px-2 py-0.5 text-xs ring-1",e?"bg-emerald-500/15 text-emerald-300 ring-emerald-500/30":"bg-muted text-muted-foreground ring-border"].join(" "),children:[t," ",e?"ON":"OFF"]});return(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-2 text-xs text-muted-foreground",children:[(0,r.jsx)("span",{children:"자율 경계:"}),a(s.absorb,"흡수 PR초안(".concat(s.absorbBackend,")")),a(s.merge,"mandate merge"),a(s.reboot,"재부팅"),a(null!=(t=s.materialize)&&t,"자율 구체화"),(0,r.jsx)("span",{className:"text-[11px]",children:"\xb7 재부팅은 항상 HITL \xb7 기본 disarmed(fail-closed)"})]})}function J(){let{client:e}=(0,n.Q)(),t=(0,a.useMemo)(()=>new v.Yt(e),[e]),[s,l]=(0,a.useState)("missions"),[i,o]=(0,a.useState)(null);return(0,a.useEffect)(()=>{let e=!0;return t.arming().then(t=>{e&&o(t.arming)}).catch(()=>{}),()=>{e=!1}},[t]),(0,r.jsxs)("div",{className:"mx-auto max-w-[1400px] px-4 pt-4",children:[(0,r.jsx)("div",{className:"mb-3",children:(0,r.jsx)(M.r,{active:"autopilot"})}),(0,r.jsxs)("div",{className:"mb-3 space-y-2",children:[(0,r.jsxs)("h1",{className:"text-lg font-semibold",children:["Missions ",(0,r.jsx)("span",{className:"text-sm font-normal text-muted-foreground",children:"미션 지휘 센터 \xb7 Autopilot"})]}),(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:"미션(사람 + 자율)의 계보\xb7상태\xb7자율행동. 아래 “골 던지기” 또는 텔레그램 “미션:” 마커로 소망을 던지면 미션이 됩니다."}),(0,r.jsx)(A,{arming:i})]}),(0,r.jsx)("div",{className:"flex gap-1 border-b border-border",children:E.map(e=>(0,r.jsx)("button",{type:"button",onClick:()=>l(e.id),className:["-mb-px border-b-2 px-4 py-2 text-sm font-medium transition-colors",s===e.id?"border-primary text-foreground":"border-transparent text-muted-foreground hover:text-foreground"].join(" "),children:e.label},e.id))}),(0,r.jsxs)("div",{className:"py-4",children:["missions"===s&&(0,r.jsx)(z,{api:t}),"repo"===s&&(0,r.jsx)(m,{api:t}),"autonomy"===s&&(0,r.jsx)(h,{api:t}),"loops"===s&&(0,r.jsx)(x,{})]})]})}function O(){return(0,r.jsx)(J,{})}},53113:(e,t,s)=>{Promise.resolve().then(s.bind(s,30968))},72030:(e,t,s)=>{"use strict";s.d(t,{$:()=>o});var r=s(41121),a=s(72524),n=s(49155),l=s(82157);let i=(0,n.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:t,variant:s="default",size:n="default",...o}=e;return(0,r.jsx)(a.$,{"data-slot":"button",className:(0,l.cn)(i({variant:s,size:n,className:t})),...o})}},82157:(e,t,s)=>{"use strict";s.d(t,{cn:()=>n});var r=s(3511),a=s(97043);function n(){for(var e=arguments.length,t=Array(e),s=0;s<e;s++)t[s]=arguments[s];return(0,a.QP)((0,r.$)(t))}},86542:(e,t,s)=>{"use strict";function r(e){let t=e.filter(e=>"cron"===e.kind&&e.id).map(e=>e.id);return t.length?"/scheduler?ids=".concat(t.map(encodeURIComponent).join(",")):null}s.d(t,{NE:()=>o,Yt:()=>i,on:()=>r});let a=["task","goal-loop","single-shot"],n=["scheduler","monitor-trigger"];function l(e){var t,s,r,l,i,o,d;let c=e.autopilot,u=null!=(t=null==c?void 0:c.executionModel)?t:null;return{id:e.id,goal:e.title||e.description||e.id,source:null!=(s=null==c?void 0:c.origin)?s:"human",status:null!=(r=null==c?void 0:c.apmStatus)?r:e.status,model:u,tier:null!=(l=null==c?void 0:c.tier)?l:null,engine:null!=(i=null==c?void 0:c.engine)?i:null,kind:(d=null!=(o=null==c?void 0:c.executionModel)?o:null)&&a.includes(d)?"finite":d&&n.includes(d)?"continuous":"other",reviewDue:!1,createdAt:new Date(e.createdAt).toISOString(),isAutopilot:null!=c,toxStatus:e.status,taskCount:e.taskCount,taskCounts:e.taskStatusCounts}}class i{async triagePreview(e,t){return this.client.fetchJson("/v1/autopilot/triage-preview",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({goal:e,...t?{category:t}:{}})})}async commitMission(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"intake",s=arguments.length>2?arguments[2]:void 0;return this.client.fetchJson("/v1/autopilot/triage-preview",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({goal:e,commit:!0,source:t,...s?{category:s}:{}})})}async missions(e,t){let s=new URLSearchParams({...e?{status:e}:{},...t?{source:t}:{}}).toString();return this.client.fetchJson("/v1/autopilot/missions".concat(s?"?".concat(s):""))}async missionsUnified(e){var t,s;let r=new URLSearchParams({...e?{status:e}:{}}).toString(),a=await this.client.fetchJson("/v1/missions".concat(r?"?".concat(r):"")),n=null!=(t=a.missions)?t:[];return{ok:!0,total:null!=(s=a.total)?s:n.length,missions:n.map(l)}}async trace(e){return this.client.fetchJson("/v1/autopilot/trace?id=".concat(encodeURIComponent(e)))}async missionArcMap(){var e,t,s;let r=await this.client.fetchJson("/v1/missions"),a=new Map;for(let n of null!=(e=r.missions)?e:[]){let e=null==(t=n.autopilot)?void 0:t.arcs;e&&e.length>0&&a.set(n.id,{apmStatus:null==(s=n.autopilot)?void 0:s.apmStatus,arcs:e})}return a}async missionAction(e,t){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this.client.fetchJson("/v1/autopilot/mission-action",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({id:e,action:t,...s})})}async repoWatch(){return this.client.fetchJson("/v1/autopilot/repo-watch")}async autonomy(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:50,t=arguments.length>1?arguments[1]:void 0,s=new URLSearchParams({limit:String(e),...t?{loop:t}:{}});return this.client.fetchJson("/v1/autopilot/autonomy?".concat(s.toString()))}async arming(){return this.client.fetchJson("/v1/autopilot/arming")}constructor(e){this.client=e}}let o={task:{label:"작업 분해",tone:"bg-sky-500/15 text-sky-200 ring-sky-500/30"},"goal-loop":{label:"목표 루프",tone:"bg-violet-500/15 text-violet-200 ring-violet-500/30"},scheduler:{label:"스케줄러",tone:"bg-emerald-500/15 text-emerald-200 ring-emerald-500/30"},"monitor-trigger":{label:"감시 트리거",tone:"bg-amber-500/15 text-amber-200 ring-amber-500/30"},hybrid:{label:"하이브리드",tone:"bg-fuchsia-500/15 text-fuchsia-200 ring-fuchsia-500/30"},fanout:{label:"병렬 팬아웃",tone:"bg-cyan-500/15 text-cyan-200 ring-cyan-500/30"},"single-shot":{label:"즉답",tone:"bg-muted text-muted-foreground ring-border"},"hitl-delegate":{label:"HITL 위임",tone:"bg-rose-500/15 text-rose-200 ring-rose-500/30"}}}},e=>{e.O(0,[2977,216,6062,7990,8519,2367,6725,7358],()=>e(e.s=53113)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7081],{9292:(e,t,s)=>{Promise.resolve().then(s.bind(s,96506))},96506:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>b});var n=s(41121),a=s(91269),r=s(38519);function l(e){var t;for(let t of[e.sections.triage,e.sections.intake]){let e=null==t?void 0:t.data.title;if("string"==typeof e&&e.trim())return e.trim()}return(null==(t=e.apiTitle)?void 0:t.trim())||e.taskId}var i=s(42375);let d=["intake","triage","gates","relations","memory","workspace","run","landing","release"];function o(e){return null==e?"—":"string"==typeof e?e:JSON.stringify(e)}function c(e){let{entry:t}=e;return(0,n.jsxs)("details",{className:"mt-2 text-xs",children:[(0,n.jsx)("summary",{className:"cursor-pointer text-muted-foreground",children:"JSON"}),(0,n.jsx)("pre",{className:"mt-2 max-h-64 overflow-auto rounded-lg bg-muted p-2 text-xs whitespace-pre-wrap break-all",children:JSON.stringify(t.data,null,2)})]})}function u(e){let{entry:t}=e,s=new Date(t.ts).toISOString();return(0,n.jsxs)("div",{className:"flex flex-wrap gap-x-3 gap-y-1 text-xs text-muted-foreground",children:[(0,n.jsxs)("span",{children:["Owner: ",t.owner]}),(0,n.jsx)("time",{dateTime:s,children:s})]})}function m(e){var t;let{card:s}=e,a=null==(t=s.sections.gates)?void 0:t.data;return(0,n.jsxs)("section",{"aria-label":"Task card detail",className:"min-w-0 space-y-4 rounded-2xl border border-border bg-card p-4",children:[(0,n.jsxs)("header",{children:[(0,n.jsx)("h2",{className:"text-lg font-semibold",children:l(s)}),(0,n.jsx)("p",{className:"break-all text-xs text-muted-foreground",children:s.taskId})]}),a&&(0,n.jsxs)("p",{className:"overflow-x-auto whitespace-nowrap text-sm","aria-label":"Gate decisions",children:["Gate \xb7 budget: ",o(a.budget)," \xb7 location: ",o(a.location)]}),d.map(e=>{let t=s.sections[e];return t?(0,n.jsxs)("section",{"aria-label":"".concat(e," section"),className:"rounded-xl border border-border p-3",children:[(0,n.jsx)("h3",{className:"mb-1 text-sm font-semibold capitalize",children:e}),(0,n.jsx)(u,{entry:t}),(0,n.jsx)(c,{entry:t})]},e):null}),(0,n.jsxs)("section",{"aria-label":"Incidents",className:"space-y-2",children:[(0,n.jsxs)("h3",{className:"text-sm font-semibold",children:["Incidents (",s.incidents.length,")"]}),s.incidents.length?(0,n.jsx)("ol",{className:"space-y-2",children:s.incidents.map(e=>(0,n.jsxs)("li",{className:"rounded-xl border border-border p-3",children:[(0,n.jsx)(u,{entry:e}),(0,n.jsx)(c,{entry:e})]},e.key))}):(0,n.jsx)("p",{className:"text-xs text-muted-foreground",children:"No incidents."})]})]})}let x=["steward","execution","landing","release","done"],p=new Set(["intake","triage","gates","relations","memory","workspace","run","landing","release","incidents"]);function f(e){let t=[],s=Date.parse(e.createdAt);for(let n of e.sections){let a;if(!p.has(n.key))continue;try{let e=JSON.parse(n.content);a=e&&"object"==typeof e&&!Array.isArray(e)?e:{content:n.content}}catch(e){a={content:n.content}}let r=Date.parse(n.createdAt);t.push({taskId:e.id,section:n.key,key:"".concat(n.key,":").concat(n.createdAt,":").concat(t.length),owner:n.owner,ts:Number.isFinite(r)?r:s,data:a,..."string"==typeof a.runId?{runId:a.runId}:{}})}if(0===t.length&&t.push({taskId:e.id,section:"triage",key:"api:title",owner:"task-card API",ts:s,data:{title:e.title}}),"closed"===e.status){let n=t.filter(e=>"release"===e.section).sort((e,t)=>t.ts-e.ts)[0];t.push({taskId:e.id,section:"release",key:"api:closed",owner:"task-card API",ts:Math.max(s,...t.map(e=>e.ts)),data:{...null==n?void 0:n.data,status:"done"}})}return{...function(e){let t,s=e[0];if(!s)return null;let n={},a=[],r=new Set,l=s.ts,i=-1/0;for(let d of e)if(!(d.taskId!==s.taskId||r.has(d.key)))if(r.add(d.key),l=Math.max(l,d.ts),d.runId&&d.ts>=i&&(t=d.runId,i=d.ts),"incidents"===d.section)a.push(d);else{let e=n[d.section];(!e||d.ts>=e.ts)&&(n[d.section]=d)}return{taskId:s.taskId,sections:n,incidents:a,updatedAt:l,...t?{runId:t}:{}}}(t),apiTitle:e.title}}function h(e){let{cards:t,selectedId:s,onSelect:a,selectedCard:r,detailError:i}=e,d=(null==r?void 0:r.taskId)===s?r:null;return(0,n.jsxs)("div",{className:"space-y-4 p-4",children:[(0,n.jsx)("h1",{className:"text-xl font-semibold",children:"보드"}),(0,n.jsx)("div",{className:"grid gap-3 md:grid-cols-2 xl:grid-cols-5",children:x.map(e=>(0,n.jsxs)("section",{"aria-label":"".concat(e," column"),className:"min-w-0 space-y-2 rounded-xl border border-border p-3",children:[(0,n.jsx)("h2",{className:"text-sm font-semibold capitalize",children:e}),t.filter(t=>(function(e){var t;let s=null==(t=e.sections.release)?void 0:t.data;return(null==s?void 0:s.status)==="done"||(null==s?void 0:s.status)==="completed"?"done":s?"release":e.sections.landing?"landing":e.sections.run||e.sections.workspace||e.sections.gates||e.sections.relations||e.sections.memory?"execution":"steward"})(t)===e).map(e=>{var t,r;return(0,n.jsxs)("button",{type:"button",onClick:()=>a(e.taskId),"aria-pressed":s===e.taskId,className:"w-full rounded-lg border border-border bg-card p-3 text-left text-sm hover:bg-accent/40",children:[(0,n.jsx)("span",{className:"block font-medium",children:l(e)}),(0,n.jsxs)("span",{className:"block text-xs text-muted-foreground",children:["Incidents ",function(e){let t=new Map;for(let n of e.incidents){var s;let e=null!=(s=n.data.incidentId)?s:n.data.id,a="string"==typeof e&&e.trim()?e:n.key,r=t.get(a);(!r||n.ts>=r.ts)&&t.set(a,n)}return Array.from(t.values()).filter(e=>"closed"!==e.data.status&&"resolved"!==e.data.status).length}(e)," \xb7 ",null!=(r=null==(t=e.runId)?void 0:t.slice(0,8))?r:"—"," \xb7 ",(0,n.jsx)("time",{dateTime:new Date(e.updatedAt).toISOString(),children:new Date(e.updatedAt).toISOString()})]})]},e.taskId)})]},e))}),s&&(0,n.jsxs)("aside",{className:"max-w-3xl space-y-2","aria-label":"Selected card",children:[(0,n.jsx)("button",{type:"button",onClick:()=>a(null),"aria-label":"Close card detail",className:"text-sm text-muted-foreground",children:"Close"}),d?(0,n.jsx)(m,{card:d}):(0,n.jsx)("p",{role:"status",children:null!=i?i:"Loading card detail…"})]})]})}function g(){let{config:e}=(0,r.Q)(),t=(0,a.useMemo)(()=>e.baseUrl?(0,i.xX)({baseUrl:e.baseUrl,...e.token?{token:e.token}:{}}):null,[e.baseUrl,e.token]),[s,l]=(0,a.useState)([]),[d,o]=(0,a.useState)(null),[c,u]=(0,a.useState)(null),[m,x]=(0,a.useState)(null),[p,g]=(0,a.useState)(null);return(0,a.useEffect)(()=>{let e=!1;return(l([]),o(null),u(null),x(null),t)?(g(null),t.getTaskCards().then(t=>{let{cards:s}=t;e||l(s.map(f))}).catch(t=>{e||g(t instanceof i.Iu&&404===t.status?"Task cards are not available yet (pre-E1).":t instanceof Error?t.message:String(t))}),()=>{e=!0}):void g("Connect to NEXUS to load task cards.")},[t]),(0,a.useEffect)(()=>{if(!t||!d)return;let e=!1;return u(null),x(null),t.getTaskCard(d).then(t=>{let{card:s}=t;e||u(f(s))}).catch(t=>{e||x(t instanceof Error?t.message:String(t))}),()=>{e=!0}},[t,d]),(0,n.jsxs)(n.Fragment,{children:[p&&(0,n.jsx)("p",{role:"status",className:"p-4 text-sm text-muted-foreground",children:p}),(0,n.jsx)(h,{cards:s,selectedId:d,selectedCard:c,detailError:m,onSelect:e=>{(null===e||d!==e)&&(u(null),x(null),o(e))}})]})}function b(){return(0,n.jsx)(g,{})}}},e=>{e.O(0,[8519,2375,2367,6725,7358],()=>e(e.s=9292)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7955],{51912:(e,t,s)=>{Promise.resolve().then(s.bind(s,74715))},74715:(e,t,s)=>{"use strict";s.d(t,{BotlabPageContent:()=>h});var r,l=s(41121),a=s(91269);let o=(null!=(r=s(11518).env.NEXT_PUBLIC_ELANOUS_BOTLAB_HOST)?r:"").trim(),n="elanous.botlab.wallHost",d=/^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i;function i(e){return e.length>0&&e.length<=253&&d.test(e)}function c(e){var t;let{search:s,remembered:r=null}=e,d=(0,a.useMemo)(()=>(function(e){var t,s;let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,l=null;try{l=new URLSearchParams(e).get("host")}catch(e){l=null}let a=null!=(t=null==l?void 0:l.trim())?t:"";if(""!==a&&i(a))return{host:a,source:"query",rejected:null};let n=""===a?null:a,d=null!=(s=null==r?void 0:r.trim())?s:"";return""!==d&&i(d)?{host:d,source:"remembered",rejected:n}:""!==o&&i(o)?{host:o,source:"default",rejected:n}:{host:"",source:"unset",rejected:n}})(s,r),[s,r]),c="unset"===d.source?null:(t=d.host,"https://".concat(t).concat("/bot3/bot-wall.html"));return(0,a.useEffect)(()=>{if("query"===d.source)try{window.localStorage.setItem(n,d.host)}catch(e){}},[d.source,d.host]),(0,l.jsxs)("main",{className:"mx-auto flex w-full max-w-6xl flex-col gap-6 px-6 py-10 sm:px-10","data-testid":"botlab-panel",children:[(0,l.jsxs)("header",{children:[(0,l.jsx)("p",{className:"text-xs font-semibold uppercase tracking-[0.18em] text-muted-foreground",children:"Bot screens"}),(0,l.jsx)("h1",{className:"mt-2 text-3xl font-bold",children:"Botlab"}),(0,l.jsxs)("p",{className:"mt-2 max-w-3xl text-sm text-muted-foreground",children:["Live noVNC screens for the bots, served through Tailscale. One document holds all four sessions, so the VNC password is asked ",(0,l.jsx)("strong",{children:"once"}),", not four times."]}),(0,l.jsx)("p",{className:"mt-2 max-w-3xl text-sm text-muted-foreground",children:"View-only by default. This surface cannot send commands or control the bots."})]}),(0,l.jsxs)("section",{className:"rounded-xl border border-border bg-card p-4","aria-label":"Wall address",children:[(0,l.jsx)("h2",{className:"text-sm font-semibold",children:"Wall address"}),(0,l.jsx)("p",{className:"mt-1 break-all font-mono text-xs text-muted-foreground","data-testid":"botlab-wall-url",children:null!=c?c:"(no host configured)"}),(0,l.jsx)("p",{className:"mt-2 text-xs text-muted-foreground","data-testid":"botlab-host-source",children:"query"===d.source?"Host came from the ?host= query parameter (remembered on this device).":"remembered"===d.source?"Host is the one remembered on this device; override it with ?host=<tailnet-name>.":"default"===d.source?"Host is the build default (NEXT_PUBLIC_ELANOUS_BOTLAB_HOST); override it with ?host=<tailnet-name>.":"No wall host is configured. Open this page once with ?host=<the VM tailnet name> — it is remembered on this device."}),null!==d.rejected&&(0,l.jsxs)("p",{role:"alert",className:"mt-2 text-xs text-destructive","data-testid":"botlab-host-rejected",children:["Ignored ?host=",d.rejected," — not a valid hostname."]}),null!==c&&(0,l.jsxs)("p",{className:"mt-3 text-xs text-muted-foreground",children:[(0,l.jsx)("a",{className:"underline",href:c,target:"_blank",rel:"noreferrer","data-testid":"botlab-open-tab",children:"Open the wall in a new tab"})," — ","use this if the embedded frame stays blank."]})]}),null!==c&&(0,l.jsx)("section",{"aria-label":"Bot screen wall",children:(0,l.jsx)("iframe",{src:c,title:"Bot screen wall","data-testid":"botlab-wall-frame",className:"h-[70vh] w-full rounded-xl border border-border bg-background"})}),(0,l.jsxs)("section",{className:"rounded-xl border border-border bg-card p-5","aria-label":"If the wall is blank",children:[(0,l.jsx)("h2",{className:"text-sm font-semibold",children:"If the wall stays blank"}),(0,l.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:"A blank frame is not necessarily a broken bot. There are three separate reasons, with different fixes:"}),(0,l.jsxs)("ol",{className:"mt-3 list-decimal space-y-2 pl-5 text-sm text-muted-foreground",children:[(0,l.jsxs)("li",{children:[(0,l.jsx)("strong",{children:"This device is outside the tailnet."})," The address simply does not exist here. Join the tailnet, or view the screens from a device that is on it."]}),(0,l.jsxs)("li",{children:[(0,l.jsx)("strong",{children:"Tailscale serve is not published."})," Re-run"," ",(0,l.jsx)("code",{className:"font-mono text-xs",children:"bash scripts/botlab/deploy-bot-wall.sh"}),", which re-publishes the paths and then verifies each one returns 200."]}),(0,l.jsxs)("li",{children:[(0,l.jsx)("strong",{children:"The wall loaded but did not connect."})," That is a VNC-level failure, not a page failure — the wall itself reports connected/failed counts once you enter the password."]})]}),(0,l.jsx)("p",{className:"mt-3 text-xs text-muted-foreground",children:"The VNC password is deliberately not carried in this page or in the URL: any page a bot browser opens could otherwise reach the local websocket, and websockets have no CORS."})]}),(0,l.jsxs)("section",{className:"rounded-xl border border-dashed border-border p-5","aria-label":"Not wired yet",children:[(0,l.jsx)("h2",{className:"text-sm font-semibold",children:"Not wired yet"}),(0,l.jsxs)("ul",{className:"mt-2 list-disc space-y-1 pl-5 text-sm text-muted-foreground",children:[(0,l.jsxs)("li",{children:["Per-bot cell headers (name \xb7 last round verdict \xb7 whether CDP is alive) need"," ",(0,l.jsx)("code",{className:"font-mono text-xs",children:"browserPort"})," and round results on the daemon's persona route. That route is owned by another track and is not published today."]}),(0,l.jsx)("li",{children:"Running a command from this surface needs a POST route that does not exist yet."})]})]})]})}function h(){let e=window.location.search,t=null;try{t=window.localStorage.getItem(n)}catch(e){t=null}return(0,l.jsx)(c,{search:e,remembered:t})}}},e=>{e.O(0,[2367,6725,7358],()=>e(e.s=51912)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2885],{2964:(e,t,n)=>{"use strict";n.d(t,{BotsPageContent:()=>S});var l=n(41121),r=n(91269),s=n(38519),a=n(16208);function o(e){if(null==e)return null;let t=e.replace(/[,%\s]/g,"").replace(/\*/g,"").trim();if(""===t||"-"===t||"N/A"===t)return null;let n=Number(t);return Number.isFinite(n)?n:null}let i=e=>"string"==typeof e&&""!==e?e:null,d=e=>"number"==typeof e&&Number.isFinite(e)?e:null,u=e=>"boolean"==typeof e?e:null;function c(e){var t,n,l,r,s;let a=[],c=[];for(let t of null!=(n=e.artifacts)?n:[]){let e=null!=(l=i(null==t?void 0:t.name))?l:"(이름 없음)",n=i(null==t?void 0:t.text);if(null===n){c.push(e);continue}a.push(function(e,t){var n;let l=function(e){let t=e.split("\n").filter(e=>""!==e.trim()&&!e.includes("━")),n=t.slice(0,3).join(" / ").slice(0,160),l=t.slice(0,3).join("\n");return/^Traceback \(most recent call last\):/m.test(l)?{kindOf:"파이썬 예외(Traceback)",head:n}:/^⛔\s*.*(실패|failed|error)/mi.test(l)?{kindOf:"스킬이 \xab실패\xbb라고 말했다",head:n}:/^(Error|error):/m.test(l)?{kindOf:"오류",head:n}:/^\s*command not found|No such file or directory/m.test(l)?{kindOf:"명령\xb7파일이 \xab없다\xbb",head:n}:null}(t);if(null!==l)return{kind:"failure",name:e,kindOf:l.kindOf,head:l.head};let r=function(e){var t,n,l,r;let s=null!=(r=null!=(l=null==(t=/^대상:\s*(\S+)/m.exec(e))?void 0:t[1])?l:null==(n=/^##\s+(\S+)\s+Real-Time Quote/m.exec(e))?void 0:n[1])?r:null;if(null===s)return null;let a=t=>{var n,l;return null!=(l=null==(n=RegExp("\\*\\*".concat(t,":\\*\\*\\s*([-+0-9.,]+)"),"i").exec(e))?void 0:n[1])?l:null},i=/\*\*Change:\*\*\s*([-+0-9.,]+)\s*\(([-+0-9.]+)%\)/i.exec(e),d={symbol:s,close:o(a("Close")),change:i?o(i[1]):o(a("Change")),changePct:i?o(i[2]):null,open:o(a("Open")),high:o(a("High")),low:o(a("Low")),volume:o(a("Volume")),prevClose:o(a("Prev Close"))};return[d.close,d.change,d.open,d.high,d.low,d.volume,d.prevClose].some(e=>null!==e)?d:null}(t);if(null!==r)return{kind:"quote",name:e,quote:r};let s=null!=(n=function(e){var t,n,l,r,s,a,i,d;let u=e.split("\n"),c=u.findIndex(e=>e.includes("|")&&e.includes("외국인")&&e.includes("기관")&&e.includes("개인"));if(c<0)return null;let m=e=>e.split("|").map(e=>e.trim()).filter((e,t,n)=>""!==e||0!==t&&t!==n.length-1),x=m(u[c]),f=e=>x.findIndex(t=>t.includes(e)),[h,g,p,b]=[0,f("외국인"),f("기관"),f("개인")];if(g<0||p<0||b<0)return null;let j=[];for(let e=c+1;e<u.length;e+=1){let t=u[e];if(!t.includes("|")){if(j.length>0)break;continue}if(/^\s*\|?[\s:|-]+\|?\s*$/.test(t))continue;let n=m(t);if(n.length<=Math.max(g,p,b))continue;let l=(null!=(r=n[h])?r:"").trim();""!==l&&j.push({key:l,foreign:o(n[g]),institution:o(n[p]),individual:o(n[b])})}if(0===j.length)return null;let N="";for(let e=c;e>=0;e-=1){let t=/^#{2,3}\s+(.+)$/.exec((null!=(s=u[e])?s:"").trim());if(t){N=t[1];break}}return""===N&&(N=null!=(a=null==(t=u.find(e=>""!==e.trim()&&!e.includes("━")))?void 0:t.trim())?a:"(제목 없음)"),{title:N,unit:null!=(d=null==(n=/\((백만|천|억)\)/.exec(x.join(" ")))?void 0:n[1])?d:null!=(i=null==(l=/\(([^)]*원[^)]*)\)/.exec(x.join(" ")))?void 0:l[1])?i:null,rows:j}}(t))?n:function(e){let t,n=e.trimStart();if(!n.startsWith("{"))return null;try{t=JSON.parse(n)}catch(e){return null}let l=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),l=1;l<t;l++)n[l-1]=arguments[l];for(let t of n){let n=e[t];if("number"==typeof n&&Number.isFinite(n))return n}return null},r=[],s=t.periods;if("object"==typeof s&&null!==s&&!Array.isArray(s))for(let[e,t]of Object.entries(s))"object"==typeof t&&null!==t&&r.push({key:e,foreign:l(t,"frgn_net_shares","frgn_net_amount_million"),institution:l(t,"inst_net_shares","inst_net_amount_million"),individual:l(t,"prsn_net_shares","prsn_net_amount_million")});if(0===r.length&&Array.isArray(t.rows))for(let e of t.rows){if("object"!=typeof e||null===e)continue;let t="string"==typeof e.date?e.date:null;null!==t&&r.push({key:t,foreign:l(e,"frgn_net_shares","frgn_net_amount_million"),institution:l(e,"inst_net_shares","inst_net_amount_million"),individual:l(e,"prsn_net_shares","prsn_net_amount_million")})}if(0===r.length)return null;let a="string"==typeof t.ticker?t.ticker:null,o="string"==typeof t.name&&t.name!==a?t.name:null;return{title:null!==o&&null!==a?"".concat(o,"(").concat(a,") 투자자 수급"):null!==a?"".concat(a," 투자자 수급"):"투자자 수급",unit:"주",rows:r}}(t);if(null!==s)return{kind:"flow",name:e,flow:s};let a=function(e){let t,n=e.split("\n"),l=n.findIndex(e=>"---BEGIN_OMNI_CRAWL_JSON---"===e);if(l<0)return{news:null,why:null,fenced:!1};let r=n.findIndex((e,t)=>t>l&&"---END_OMNI_CRAWL_JSON---"===e);if(r<0)return{news:null,why:"Omni crawl JSON 끝 울타리를 \xab못 찾았다\xbb",fenced:!0};try{t=JSON.parse(n.slice(l+1,r).join("\n"))}catch(e){return{news:null,why:"Omni crawl 울타리 안 JSON을 \xab못 읽었다\xbb",fenced:!0}}if("object"!=typeof t||null===t||Array.isArray(t))return{news:null,why:"Omni crawl JSON 최상위가 객체가 아니다",fenced:!0};let s=t;if(!Array.isArray(s.results))return{news:null,why:"Omni crawl JSON에 results 배열이 없다",fenced:!0};let a=[];for(let e of s.results){if("object"!=typeof e||null===e||Array.isArray(e))continue;let t=e.items;if(Array.isArray(t))for(let e of t)"object"!=typeof e||null===e||Array.isArray(e)||a.push({title:"string"==typeof e.title?e.title:null,url:"string"==typeof e.url?e.url:null,date:"string"==typeof e.date?e.date:null})}return{news:{query:"string"==typeof s.query?s.query:null,items:a},why:null,fenced:!0}}(t);if(null!==a.news)return{kind:"news",name:e,news:a.news};let i=t.split("\n").filter(e=>""!==e.trim()&&!e.includes("━")).slice(0,2).join(" / ").slice(0,120);if(a.fenced)return{kind:"unparsed",name:e,why:a.why,head:i};let d=function(e){let t=e.split("\n").filter(e=>""!==e.trim()&&!e.includes("━"));if(t.length<2)return null;let n=[];for(let e of t.slice(1)){let t=/^\s{1,}(\S[^:]*?)\s+:\s+(.+?)\s*$/.exec(e);if(null===t)continue;let l=t[1].trim(),r=t[2].trim();""===l||""===r||l.includes("//")||n.push({label:l,value:r,num:o(r)})}return 0===n.length?null:{title:t[0].trim(),entries:n}}(t);return null!==d?{kind:"keyed",name:e,keyed:d}:{kind:"unparsed",name:e,why:"아는 꼴이 \xab아니다\xbb(시세\xb7수급표\xb7뉴스\xb7라벨:값 넷 다 아님)",head:i}}(e,n))}return{personaId:null!=(r=i(e.personaId))?r:"unknown",runId:i(e.runId),atUtc:i(e.atUtc),ok:u(e.ok),steps:d(e.steps),failed:d(e.failed),source:null!=(s=i(e.source))?s:"unknown",delivered:u(null==(t=e.delivery)?void 0:t.sent),artifacts:a,textless:c}}function m(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(null===e)return"—";let n=Math.abs(e)>=1e3?e.toLocaleString("en-US"):String(e);return!0===t.sign&&e>0?"+".concat(n):n}async function x(e,t,n){try{var l,r,s=await e.fetchJson("/v1/bots/rounds?persona=".concat(encodeURIComponent(t),"&limit=").concat(n));if("object"!=typeof s||null===s)return{kind:"error",reason:"라우트 응답을 \xab못 읽었다\xbb(객체가 아니다)"};if(!Array.isArray(s.rounds))return{kind:"error",reason:"`rounds` 가 \xab배열이 아니다\xbb — 「0건」과 \xab다른 값\xbb이다"};let a=s.unreadableBy,o=void 0===a?null:Object.entries(a).filter(e=>{let[t]=e;return"result-missing"!==t}).reduce((e,t)=>{var n;let[,l]=t;return e+(null!=(n=d(l))?n:0)},0);return{kind:"ready",rounds:s.rounds.map(c),unreadable:null!=(l=d(s.unreadable))?l:0,unreadableNow:null!=o?o:null!=(r=d(s.unreadable))?r:0}}catch(e){return{kind:"error",reason:e instanceof Error&&e.message?e.message:String(e)}}}function f(e){let{a:t}=e,n=t.quote,r=null!==n.changePct&&n.changePct>0,s=null!==n.changePct&&n.changePct<0;return(0,l.jsxs)("div",{className:"rounded-lg border border-border bg-background/60 p-3","data-testid":"quote-".concat(n.symbol),children:[(0,l.jsxs)("div",{className:"flex flex-wrap items-baseline gap-x-3",children:[(0,l.jsx)("h4",{className:"font-mono text-sm font-semibold",children:n.symbol}),(0,l.jsx)("span",{className:"text-lg font-bold tabular-nums",children:m(n.close)}),(0,l.jsxs)("span",{className:"text-sm font-semibold tabular-nums ".concat(r?"text-emerald-600":s?"text-rose-600":"text-muted-foreground"),children:[m(n.change,{sign:!0}),null!==n.changePct&&" (".concat(m(n.changePct,{sign:!0}),"%)")]})]}),(0,l.jsx)("dl",{className:"mt-2 grid grid-cols-2 gap-x-4 gap-y-1 text-xs text-muted-foreground sm:grid-cols-4",children:[["시가",n.open],["고가",n.high],["저가",n.low],["전일",n.prevClose]].map(e=>{let[t,n]=e;return(0,l.jsxs)("div",{className:"flex justify-between gap-2",children:[(0,l.jsx)("dt",{children:t}),(0,l.jsx)("dd",{className:"tabular-nums text-foreground",children:m(n)})]},t)})})]})}function h(e){let{a:t}=e,n=t.flow;return(0,l.jsxs)("div",{className:"rounded-lg border border-border bg-background/60 p-3","data-testid":"flow-block",children:[(0,l.jsx)("h4",{className:"text-sm font-semibold",children:n.title}),null!==n.unit&&(0,l.jsxs)("p",{className:"mt-0.5 text-xs text-muted-foreground",children:["단위: ",n.unit]}),(0,l.jsx)("div",{className:"mt-2 overflow-x-auto",children:(0,l.jsxs)("table",{className:"w-full min-w-[22rem] text-xs",children:[(0,l.jsx)("thead",{children:(0,l.jsxs)("tr",{className:"text-muted-foreground",children:[(0,l.jsx)("th",{className:"py-1 text-left font-medium",children:"기간"}),["외국인","기관","개인"].map(e=>(0,l.jsx)("th",{className:"py-1 text-right font-medium",children:e},e))]})}),(0,l.jsx)("tbody",{children:n.rows.slice(0,6).map(e=>(0,l.jsxs)("tr",{className:"border-t border-border/60",children:[(0,l.jsx)("td",{className:"py-1 font-mono",children:e.key}),[e.foreign,e.institution,e.individual].map((e,t)=>(0,l.jsx)("td",{className:"py-1 text-right tabular-nums ".concat(null===e?"text-muted-foreground":e>0?"text-emerald-600":e<0?"text-rose-600":""),children:m(e,{sign:!0})},t))]},e.key))})]})}),n.rows.length>6&&(0,l.jsxs)("p",{className:"mt-1 text-xs text-muted-foreground",children:["…",n.rows.length-6,"줄 더 (전체는 회차 원본에)"]})]})}function g(e){let{a:t}=e,n=t.keyed;return(0,l.jsxs)("div",{className:"rounded-lg border border-border bg-background/60 p-3","data-testid":"keyed-block",children:[(0,l.jsx)("h4",{className:"text-sm font-semibold",children:n.title}),(0,l.jsx)("dl",{className:"mt-2 grid gap-1 sm:grid-cols-2",children:n.entries.map(e=>(0,l.jsxs)("div",{className:"flex items-baseline justify-between gap-3 text-sm",children:[(0,l.jsx)("dt",{className:"text-muted-foreground",children:e.label}),(0,l.jsx)("dd",{className:"font-semibold tabular-nums",children:e.value})]},e.label))})]})}function p(e){let{a:t}=e;return(0,l.jsxs)("div",{className:"rounded-lg border border-border bg-background/60 p-3","data-testid":"news-block",children:[(0,l.jsx)("h4",{className:"text-sm font-semibold",children:null===t.news.query?"뉴스":"뉴스: ".concat(t.news.query)}),0===t.news.items.length?(0,l.jsx)("p",{className:"mt-2 text-sm text-muted-foreground",children:"수집된 기사가 0건이다."}):(0,l.jsx)("ul",{className:"mt-2 space-y-2",children:t.news.items.map((e,t)=>{var n,r,s,a;return(0,l.jsxs)("li",{className:"text-sm",children:[null===e.url?null!=(n=e.title)?n:"(제목 없음)":(0,l.jsx)("a",{className:"font-medium underline underline-offset-2",href:e.url,children:null!=(r=e.title)?r:e.url}),null!==e.date&&(0,l.jsx)("span",{className:"ml-2 text-xs text-muted-foreground",children:e.date})]},"".concat(null!=(a=null!=(s=e.url)?s:e.title)?a:"article","-").concat(t))})})]})}function b(e){let{a:t}=e;return(0,l.jsxs)("div",{className:"rounded-lg border border-rose-500/40 bg-rose-500/5 p-3","data-testid":"failure-block",children:[(0,l.jsxs)("div",{className:"flex flex-wrap items-baseline gap-2",children:[(0,l.jsx)("h4",{className:"font-mono text-sm font-semibold",children:t.name}),(0,l.jsx)("span",{className:"rounded bg-rose-500/15 px-2 py-0.5 text-xs font-medium text-rose-700",children:"이 단계가 \xab실패\xbb했다"})]}),(0,l.jsx)("p",{className:"mt-1 text-xs text-rose-700",children:t.kindOf}),(0,l.jsx)("p",{className:"mt-1 break-words font-mono text-xs text-muted-foreground",children:t.head})]})}function j(e){let{a:t}=e;return(0,l.jsxs)("div",{className:"rounded-lg border border-dashed border-border bg-background/40 p-3","data-testid":"unparsed-block",children:[(0,l.jsx)("h4",{className:"font-mono text-sm",children:t.name}),(0,l.jsxs)("p",{className:"mt-1 text-xs text-amber-600",children:["⚠️ 이 산출을 \xab못 읽었다\xbb — ",t.why]}),(0,l.jsx)("p",{className:"mt-1 truncate text-xs text-muted-foreground",children:t.head})]})}function N(e){var t;let{round:n}=e,r=null!==n.failed&&n.failed>0;return(0,l.jsxs)("article",{className:"rounded-xl border border-border bg-card p-5","data-testid":"round-".concat(null!=(t=n.runId)?t:"unknown"),children:[(0,l.jsxs)("header",{className:"flex flex-wrap items-baseline justify-between gap-2",children:[(0,l.jsx)("h3",{className:"text-lg font-semibold",children:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"Asia/Seoul";if(null===e)return"시각 \xab모름\xbb";let n=new Date(e);if(Number.isNaN(n.getTime()))return"시각을 \xab못 읽었다\xbb(".concat(e.slice(0,24),")");let l=new Intl.DateTimeFormat("ko-KR",{timeZone:t,month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",hour12:!1});return"".concat(l.format(n)," KST")}(n.atUtc)}),(0,l.jsxs)("div",{className:"flex flex-wrap items-center gap-2 text-xs",children:[(0,l.jsx)("span",{className:"rounded px-2 py-0.5 font-medium ".concat("cron"===n.source?"bg-emerald-500/15 text-emerald-700":"bg-muted text-muted-foreground"),children:"cron"===n.source?"무인(cron)":"manual"===n.source?"손":"출처 \xab모름\xbb"}),(0,l.jsxs)("span",{className:"rounded px-2 py-0.5 font-medium ".concat(r?"bg-rose-500/15 text-rose-700":"bg-muted text-muted-foreground"),children:[null===n.steps?"단계 \xab모름\xbb":"".concat(n.steps,"단계"),r&&" \xb7 실패 ".concat(n.failed)]}),(0,l.jsx)("span",{className:"rounded px-2 py-0.5 font-medium ".concat(!0===n.delivered?"bg-sky-500/15 text-sky-700":"bg-muted text-muted-foreground"),children:null===n.delivered?"배달 \xab모름\xbb":n.delivered?"폰에 갔다":"안 갔다"})]})]}),(0,l.jsxs)("div",{className:"mt-4 space-y-3",children:[n.artifacts.map((e,t)=>"quote"===e.kind?(0,l.jsx)(f,{a:e},t):"flow"===e.kind?(0,l.jsx)(h,{a:e},t):"news"===e.kind?(0,l.jsx)(p,{a:e},t):"keyed"===e.kind?(0,l.jsx)(g,{a:e},t):"failure"===e.kind?(0,l.jsx)(b,{a:e},t):(0,l.jsx)(j,{a:e},t)),0===n.artifacts.length&&0===n.textless.length&&(0,l.jsx)("p",{className:"text-sm text-muted-foreground",children:"이 회차에 산출이 \xab없다\xbb."}),n.textless.length>0&&(0,l.jsxs)("p",{className:"text-xs text-muted-foreground",children:["본문을 \xab안 받은\xbb 산출 ",n.textless.length,"건: ",n.textless.join(" \xb7 ")]})]})]})}function y(e){let{client:t,persona:n,title:s,subtitle:a,limit:o=3}=e,[i,d]=(0,r.useState)({kind:"loading"});return(0,r.useEffect)(()=>{let e=!0;return d({kind:"loading"}),x(t,n,o).then(t=>{e&&d(t)}),()=>{e=!1}},[t,n,o]),(0,l.jsxs)("section",{className:"flex flex-col gap-4","aria-label":"".concat(n," rounds"),"data-testid":"rounds-".concat(n),children:[(0,l.jsxs)("header",{children:[(0,l.jsx)("h2",{className:"text-xl font-bold",children:s}),(0,l.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:a})]}),"loading"===i.kind&&(0,l.jsx)("p",{role:"status",className:"text-sm text-muted-foreground",children:"투자 회차를 불러오는 중…"}),"error"===i.kind&&(0,l.jsxs)("div",{role:"alert",className:"rounded-lg border border-destructive/40 bg-destructive/5 p-3 text-sm",children:[(0,l.jsx)("p",{className:"font-medium text-destructive",children:"회차를 \xab못 받았다\xbb."}),(0,l.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:i.reason}),(0,l.jsxs)("p",{className:"mt-2 text-xs text-muted-foreground",children:["⚠️ 라우트 ",(0,l.jsx)("code",{className:"font-mono",children:"/v1/bots/rounds"})," 가 아직 \xab없을 수\xbb 있다(\uD83C\uDD63 축). 그때는 이 자리가 비는 것이 \xab맞다\xbb — 화면이 그것을 말하고 있다."]})]}),"ready"===i.kind&&0===i.rounds.length&&(0,l.jsxs)("p",{className:"text-sm text-muted-foreground",children:["회차가 \xab0건\xbb이다.",i.unreadable>0&&" (못 읽은 자리 ".concat(i.unreadable,"곳 — 「없다」가 아니다)")]}),"ready"===i.kind&&i.rounds.length>0&&(0,l.jsxs)(l.Fragment,{children:[i.unreadableNow>0?(0,l.jsxs)("p",{role:"alert",className:"text-xs text-amber-600",children:["⚠️ ***지금 못 읽는 자리 ",i.unreadableNow,"곳*** — 아래 수는 \xab과소\xbb다."]}):i.unreadable>0?(0,l.jsxs)("p",{className:"text-xs text-muted-foreground",children:["못 읽은 자리 ",i.unreadable,"곳(옛 회차) — 「지금 깨진 것」은 \xab없다\xbb."]}):null,(0,l.jsx)("div",{className:"flex flex-col gap-4",children:i.rounds.map(e=>{var t,n;return(0,l.jsx)(N,{round:e},null!=(n=null!=(t=e.runId)?t:e.atUtc)?n:Math.random())})})]})]})}function v(e){let{client:t,limit:n=3}=e;return(0,l.jsx)(y,{client:t,persona:"investor",limit:n,title:"\uD83D\uDCC8 투자 회차",subtitle:"봇이 \xab실제로 낸\xbb 산출이다. ⛔ 차트는 \xab일부러\xbb 안 그린다 — 글만 낸다."})}function w(e){let{client:t,limit:n=2}=e;return(0,l.jsx)(y,{client:t,persona:"assistant",limit:n,title:"\uD83D\uDDD3️ 비서 회차",subtitle:"안 읽은 메일\xb7앞으로의 일정. ⛔ 「0」도 \xab잰 값\xbb이라 그대로 보여 준다."})}function k(e){let{client:t,limit:n=2}=e;return(0,l.jsx)(y,{client:t,persona:"newsbot",limit:n,title:"\uD83D\uDCF0 뉴스 회차",subtitle:"⚠️ 이 봇의 산출은 꼴이 여럿이다 — 못 읽은 것은 \xab이름을 대고\xbb 남는다."})}async function _(e){try{let t=await e.fetchJson("/v1/bots/commands");return{kind:"ready",commands:t}}catch(e){return{kind:"error",reason:e instanceof Error&&e.message?e.message:"string"==typeof e&&e?e:"Unknown error"}}}function O(e){let{client:t}=e,n=(0,a.v)(t),[s,o]=(0,r.useState)({kind:"loading"});(0,r.useEffect)(()=>{let e=!0;return o({kind:"loading"}),_(t).then(t=>{e&&o(t)}),()=>{e=!1}},[t]);let i=n.error,d="error"===s.kind?s.reason:null,u=null!==i||null!==d,c=!u&&(n.loading||"loading"===s.kind),m="ready"===s.kind?s.commands:[],x=!c&&!u;return(0,l.jsxs)("main",{className:"mx-auto flex w-full max-w-5xl flex-col gap-6 px-6 py-10 sm:px-10","data-testid":"bots-panel",children:[(0,l.jsxs)("header",{children:[(0,l.jsx)("p",{className:"text-xs font-semibold uppercase tracking-[0.18em] text-muted-foreground",children:"Bot directory"}),(0,l.jsx)("h1",{className:"mt-2 text-3xl font-bold",children:"Bots"}),(0,l.jsx)("p",{className:"mt-2 max-w-3xl text-sm text-muted-foreground",children:"Commands are global: every bot exposes the same catalog."}),(0,l.jsx)("p",{className:"mt-2 max-w-3xl text-sm text-muted-foreground",children:"This surface cannot send commands yet; it only shows what you can ask bots to do."})]}),c&&(0,l.jsx)("p",{role:"status",className:"text-sm text-muted-foreground",children:"Loading bot identities and command catalog…"}),i&&(0,l.jsxs)("p",{role:"alert",className:"text-sm text-destructive",children:["Unable to load bot identities: ",i]}),d&&(0,l.jsxs)("p",{role:"alert",className:"text-sm text-destructive",children:["Unable to load bot catalog: ",d]}),x&&0===n.personas.length&&(0,l.jsx)("p",{className:"text-sm text-muted-foreground",children:"No bots are configured."}),x&&n.personas.length>0&&0===m.length&&(0,l.jsx)("p",{className:"text-sm text-muted-foreground",children:"No bot commands are available."}),(0,l.jsx)(v,{client:t}),(0,l.jsx)(w,{client:t}),(0,l.jsx)(k,{client:t}),x&&n.personas.length>0&&m.length>0&&(0,l.jsx)("section",{className:"grid gap-4 md:grid-cols-2","aria-label":"Bot identities",children:n.personas.map(e=>{var t;return(0,l.jsxs)("article",{className:"rounded-xl border border-border bg-card p-5","data-testid":"bot-card-".concat(e.personaId),children:[(0,l.jsx)("h2",{className:"text-lg font-semibold",children:e.displayName}),(0,l.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:null!=(t=e.description)?t:"No description provided."}),(0,l.jsx)("h3",{className:"mt-5 text-sm font-semibold",children:"Available commands"}),(0,l.jsx)("ul",{className:"mt-3 space-y-3","aria-label":"Available bot commands",children:m.map(e=>(0,l.jsxs)("li",{className:"rounded-lg border border-border bg-background/60 p-3",children:[(0,l.jsx)("h4",{className:"font-mono text-sm font-semibold",children:e.name}),(0,l.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:e.description}),e.arguments.length>0?(0,l.jsx)("ul",{className:"mt-2 space-y-1","aria-label":"".concat(e.name," arguments"),children:e.arguments.map(e=>(0,l.jsxs)("li",{className:"text-xs text-muted-foreground",children:[(0,l.jsx)("code",{className:"font-semibold text-foreground",children:e.name}),e.required?" (required)":" (optional)"," — ",e.description]},e.name))}):(0,l.jsx)("p",{className:"mt-2 text-xs text-muted-foreground",children:"No arguments."})]},e.name))})]},e.personaId)})})]})}function S(){let{client:e}=(0,s.Q)();return(0,l.jsx)(O,{client:e})}},16208:(e,t,n)=>{"use strict";n.d(t,{v:()=>a});var l=n(91269),r=n(51215);let s=null;function a(e){let[t,n]=(0,l.useState)(()=>s&&Date.now()-s.at<6e4?s.data:[]),[a,o]=(0,l.useState)(!1),[i,d]=(0,l.useState)(null),u=(0,l.useCallback)(async()=>{o(!0),d(null);try{let t=await e.listPersonas();s={at:Date.now(),data:t.personas},n(t.personas)}catch(e){d(e instanceof Error?e.message:String(e))}finally{o(!1)}},[e]);(0,l.useEffect)(()=>{if(s&&Date.now()-s.at<6e4)return void n(s.data);u()},[u]);let c=(0,l.useCallback)(async()=>{s=null,await u()},[u]);return(0,l.useEffect)(()=>{let t=e.personasEventsUrl();if(!t)return;let n=null;try{n=new EventSource(t)}catch(e){(0,r.cY)("showroom.personas.sse.construct-error",{error:String(e)});return}let l=e=>()=>{"hello"!==e&&((0,r.cY)("showroom.personas.sse.event",{kind:e}),s=null,u())};return n.addEventListener("hello",l("hello")),n.addEventListener("load-dir",l("load-dir")),n.addEventListener("reload-all",l("reload-all")),n.addEventListener("upsert",l("upsert")),n.addEventListener("remove",l("remove")),n.onerror=e=>{(0,r.cY)("showroom.personas.sse.error",{type:e.type})},()=>{try{null==n||n.close()}catch(e){}}},[e,u]),{personas:t,loading:a,error:i,reload:c}}},87734:(e,t,n)=>{Promise.resolve().then(n.bind(n,2964))}},e=>{e.O(0,[8519,2367,6725,7358],()=>e(e.s=87734)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8457],{42524:(e,r,t)=>{Promise.resolve().then(t.bind(t,6090))},59062:(e,r,t)=>{"use strict";t.d(r,{p:()=>a});var i=t(41121);t(91269);var l=t(94114),n=t(82157);function a(e){let{className:r,type:t,...a}=e;return(0,i.jsx)(l.p,{type:t,"data-slot":"input",className:(0,n.cn)("h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",r),...a})}},67089:(e,r,t)=>{"use strict";t.d(r,{A:()=>i});let i=(0,t(89117).A)("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]])},89117:(e,r,t)=>{"use strict";t.d(r,{A:()=>d});var i=t(91269);let l=function(){for(var e=arguments.length,r=Array(e),t=0;t<e;t++)r[t]=arguments[t];return r.filter((e,r,t)=>!!e&&""!==e.trim()&&t.indexOf(e)===r).join(" ").trim()},n=e=>{let r=e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,r,t)=>t?t.toUpperCase():r.toLowerCase());return r.charAt(0).toUpperCase()+r.slice(1)};var a={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let o=(0,i.createContext)({}),s=(0,i.forwardRef)((e,r)=>{var t,n,s;let{color:d,size:u,strokeWidth:c,absoluteStrokeWidth:f,className:p="",children:b,iconNode:h,...g}=e,{size:m=24,strokeWidth:v=2,absoluteStrokeWidth:k=!1,color:w="currentColor",className:x=""}=null!=(t=(0,i.useContext)(o))?t:{},y=(null!=f?f:k)?24*Number(null!=c?c:v)/Number(null!=u?u:m):null!=c?c:v;return(0,i.createElement)("svg",{ref:r,...a,width:null!=(n=null!=u?u:m)?n:a.width,height:null!=(s=null!=u?u:m)?s:a.height,stroke:null!=d?d:w,strokeWidth:y,className:l("lucide",x,p),...!b&&!(e=>{for(let r in e)if(r.startsWith("aria-")||"role"===r||"title"===r)return!0;return!1})(g)&&{"aria-hidden":"true"},...g},[...h.map(e=>{let[r,t]=e;return(0,i.createElement)(r,t)}),...Array.isArray(b)?b:[b]])}),d=(e,r)=>{let t=(0,i.forwardRef)((t,a)=>{let{className:o,...d}=t;return(0,i.createElement)(s,{ref:a,iconNode:r,className:l("lucide-".concat(n(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()),"lucide-".concat(e),o),...d})});return t.displayName=n(e),t}}},e=>{e.O(0,[2977,216,6062,4114,2330,1377,8519,3441,2929,7457,8619,6090,2367,6725,7358],()=>e(e.s=42524)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2580],{7509:(e,r,a)=>{"use strict";a.d(r,{U:()=>g});var t=a(41121),n=a(91269),s=a(38519),i=a(72030),o=a(59062);function l(e){let{items:r}=e;return 0===r.length?(0,t.jsx)("div",{className:"rounded-lg border border-dashed border-border p-6 text-center text-sm text-muted-foreground",children:"No control signals matched the current filter."}):(0,t.jsx)("ul",{className:"space-y-2",children:r.map((e,r)=>{var a,n,s,i,o;let l=[(null==(a=e.scope)?void 0:a.surface)&&"surface=".concat(e.scope.surface),(null==(n=e.scope)?void 0:n.channel)&&"channel=".concat(e.scope.channel),(null==(s=e.scope)?void 0:s.sessionId)&&"session=".concat(e.scope.sessionId)].filter(Boolean).join(" \xb7 ")||"unscoped";return(0,t.jsxs)("li",{className:"rounded-lg border border-border bg-card p-3 shadow-sm",children:[(0,t.jsxs)("div",{className:"text-sm font-medium",children:[e.kind," \xb7 ",e.urgency]}),(0,t.jsxs)("div",{className:"mt-0.5 font-mono text-[10px] text-muted-foreground",children:[function(e){let r=Date.now()-new Date(e).getTime();return r<6e4?"just now":r<36e5?"".concat(Math.floor(r/6e4),"m ago"):r<864e5?"".concat(Math.floor(r/36e5),"h ago"):"".concat(Math.floor(r/864e5),"d ago")}(e.createdAt)," \xb7 ",null!=(i=e.source)?i:"unknown"," \xb7 ",l]}),(0,t.jsx)("pre",{className:"mt-2 overflow-x-auto rounded-md bg-muted p-2 text-[11px]",children:JSON.stringify(null!=(o=e.payload)?o:{},null,2)})]},r)})})}let d=["background","quick-pass","normal","priority","critical"];class c{async list(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=new URLSearchParams;Object.entries(e).forEach(e=>{let[a,t]=e;t&&r.set(a,t)});let a=r.toString();return this.client.fetchJson("/v1/control-signals".concat(a?"?".concat(a):""))}emit(e){return this.client.fetchJson("/v1/control-signals",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(e)})}constructor(e){this.client=e}}var u=a(66062),p=a(51215);function g(){var e,r,a,g;let{client:m}=(0,s.Q)(),x=(0,n.useMemo)(()=>new c(m),[m]),[v,h]=(0,n.useState)({items:[]}),[b,f]=(0,n.useState)(!1),[y,j]=(0,n.useState)(""),[N,k]=(0,n.useState)(""),[w,S]=(0,n.useState)(""),[z,C]=(0,n.useState)(""),[_,O]=(0,n.useState)(""),[E,J]=(0,n.useState)(""),[P,R]=(0,n.useState)("normal"),[$,D]=(0,n.useState)("operator"),[I,M]=(0,n.useState)(""),[U,q]=(0,n.useState)(""),[A,B]=(0,n.useState)(""),[F,Q]=(0,n.useState)(""),[T,Y]=(0,n.useState)(!1),K=(0,n.useCallback)(async()=>{(0,p.cY)("webterm.control.list.refresh",{kind:y,surface:N,minUrgency:w,sessionId:z,limit:_}),f(!0);try{let e=await x.list({kind:y||void 0,surface:N||void 0,minUrgency:w||void 0,sessionId:z||void 0,limit:_||void 0});h(e)}catch(e){u.oR.error("signals list failed: ".concat(e instanceof Error?e.message:e))}finally{f(!1)}},[x,y,N,w,z,_]);(0,n.useEffect)(()=>{K()},[K]);let L=async e=>{if(e.preventDefault(),!E.trim())return void u.oR.error("kind required");let r={};if(F.trim())try{r=JSON.parse(F)}catch(e){u.oR.error("payload must be valid JSON");return}let a={kind:E.trim(),urgency:P,source:$.trim()||"operator",mayPreempt:T,payload:r,scope:{...I?{surface:I}:{},...U?{channel:U}:{},...A?{sessionId:A}:{}}};(0,p.cY)("webterm.control.emit",{kind:a.kind,urgency:a.urgency});try{f(!0),await x.emit(a),u.oR.success("signal emitted"),Q(""),await K()}catch(e){u.oR.error("emit failed: ".concat(e instanceof Error?e.message:e))}finally{f(!1)}},V=null!=(e=v.countsByKind)?e:{};return(0,t.jsxs)("div",{className:"mx-auto max-w-5xl space-y-4 p-4",children:[(0,t.jsxs)("header",{className:"space-y-2",children:[(0,t.jsx)("h1",{className:"text-xl font-semibold tracking-tight",children:"Control signals"}),(0,t.jsxs)("div",{className:"flex flex-wrap gap-2 text-[11px] text-muted-foreground",children:[(0,t.jsxs)("span",{className:"rounded-full border border-border px-2 py-0.5",children:["total ",null!=(r=v.total)?r:0]}),(0,t.jsxs)("span",{className:"rounded-full border border-border px-2 py-0.5",children:["latest ",null!=(a=v.latest)?a:"-"]}),Object.entries(V).map(e=>{let[r,a]=e;return(0,t.jsxs)("span",{className:"rounded-full border border-border px-2 py-0.5",children:[r," ",a]},r)})]})]}),(0,t.jsxs)("form",{onSubmit:e=>{e.preventDefault(),K()},className:"flex flex-wrap items-center gap-2 rounded-lg border border-border bg-card p-3 shadow-sm",children:[(0,t.jsx)(o.p,{value:y,onChange:e=>j(e.target.value),placeholder:"kind",className:"flex-1 min-w-[140px]"}),(0,t.jsx)(o.p,{value:N,onChange:e=>k(e.target.value),placeholder:"surface",className:"flex-1 min-w-[140px]"}),(0,t.jsxs)("select",{value:w,onChange:e=>S(e.target.value),className:"h-9 flex-1 min-w-[170px] rounded-md border border-input bg-background px-2 text-sm",children:[(0,t.jsx)("option",{value:"",children:"min urgency (any)"}),d.map(e=>(0,t.jsx)("option",{value:e,children:e},e))]}),(0,t.jsx)(o.p,{value:z,onChange:e=>C(e.target.value),placeholder:"session id",className:"flex-1 min-w-[140px]"}),(0,t.jsx)(o.p,{value:_,onChange:e=>O(e.target.value),placeholder:"limit",type:"number",className:"w-[100px]"}),(0,t.jsx)(i.$,{type:"submit",size:"sm",disabled:b,children:"Filter"})]}),(0,t.jsxs)("form",{onSubmit:L,className:"space-y-2 rounded-lg border border-border bg-card p-3 shadow-sm",children:[(0,t.jsx)("h2",{className:"text-sm font-semibold",children:"Emit a signal"}),(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,t.jsx)(o.p,{value:E,onChange:e=>J(e.target.value),placeholder:"kind (required)",className:"flex-1 min-w-[140px]"}),(0,t.jsx)("select",{value:P,onChange:e=>{let r=e.target.value;"string"==typeof r&&d.includes(r)&&R(r)},className:"h-9 rounded-md border border-input bg-background px-2 text-sm",children:d.map(e=>(0,t.jsx)("option",{value:e,children:e},e))}),(0,t.jsx)(o.p,{value:$,onChange:e=>D(e.target.value),placeholder:"source",className:"flex-1 min-w-[120px]"}),(0,t.jsx)(o.p,{value:I,onChange:e=>M(e.target.value),placeholder:"scope.surface",className:"flex-1 min-w-[120px]"}),(0,t.jsx)(o.p,{value:U,onChange:e=>q(e.target.value),placeholder:"scope.channel",className:"flex-1 min-w-[120px]"}),(0,t.jsx)(o.p,{value:A,onChange:e=>B(e.target.value),placeholder:"scope.session",className:"flex-1 min-w-[120px]"}),(0,t.jsxs)("label",{className:"flex items-center gap-1.5 text-xs",children:[(0,t.jsx)("input",{type:"checkbox",checked:T,onChange:e=>Y(e.target.checked)}),"mayPreempt"]})]}),(0,t.jsx)("textarea",{value:F,onChange:e=>Q(e.target.value),placeholder:'payload JSON (optional, e.g. {"reason":"manual"})',rows:3,className:"w-full resize-y rounded-md border border-input bg-background px-3 py-2 font-mono text-xs"}),(0,t.jsx)(i.$,{type:"submit",size:"sm",disabled:b,children:"Emit"})]}),(0,t.jsx)(l,{items:null!=(g=v.items)?g:[]})]})}},42703:(e,r,a)=>{Promise.resolve().then(a.bind(a,72361))},59062:(e,r,a)=>{"use strict";a.d(r,{p:()=>i});var t=a(41121);a(91269);var n=a(94114),s=a(82157);function i(e){let{className:r,type:a,...i}=e;return(0,t.jsx)(n.p,{type:a,"data-slot":"input",className:(0,s.cn)("h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",r),...i})}},72030:(e,r,a)=>{"use strict";a.d(r,{$:()=>l});var t=a(41121),n=a(72524),s=a(49155),i=a(82157);let o=(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 l(e){let{className:r,variant:a="default",size:s="default",...l}=e;return(0,t.jsx)(n.$,{"data-slot":"button",className:(0,i.cn)(o({variant:a,size:s,className:r})),...l})}},72361:(e,r,a)=>{"use strict";a.r(r),a.d(r,{default:()=>s});var t=a(41121),n=a(7509);function s(){return(0,t.jsx)(n.U,{})}},82157:(e,r,a)=>{"use strict";a.d(r,{cn:()=>s});var t=a(3511),n=a(97043);function s(){for(var e=arguments.length,r=Array(e),a=0;a<e;a++)r[a]=arguments[a];return(0,n.QP)((0,t.$)(r))}}},e=>{e.O(0,[2977,216,6062,4114,8519,2367,6725,7358],()=>e(e.s=42703)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6348],{6015:(e,t,s)=>{"use strict";s.d(t,{n:()=>d});var n=s(91269),r=s(95817),a=s(83026),i=s(37963),l=s(98883),o=class extends i.Q{#e;#t=void 0;#s;#n;constructor(e,t){super(),this.#e=e,this.setOptions(t),this.bindMethods(),this.#r()}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(e){let t=this.options;this.options=this.#e.defaultMutationOptions(e),(0,l.f8)(this.options,t)||this.#e.getMutationCache().notify({type:"observerOptionsUpdated",mutation:this.#s,observer:this}),t?.mutationKey&&this.options.mutationKey&&(0,l.EN)(t.mutationKey)!==(0,l.EN)(this.options.mutationKey)?this.reset():this.#s?.state.status==="pending"&&this.#s.setOptions(this.options)}onUnsubscribe(){this.hasListeners()||this.#s?.removeObserver(this)}onMutationUpdate(e){this.#r(),this.#a(e)}getCurrentResult(){return this.#t}reset(){this.#s?.removeObserver(this),this.#s=void 0,this.#r(),this.#a()}mutate(e,t){return this.#n=t,this.#s?.removeObserver(this),this.#s=this.#e.getMutationCache().build(this.#e,this.options),this.#s.addObserver(this),this.#s.execute(e)}#r(){let e=this.#s?.state??(0,r.$)();this.#t={...e,isPending:"pending"===e.status,isSuccess:"success"===e.status,isError:"error"===e.status,isIdle:"idle"===e.status,mutate:this.mutate,reset:this.reset}}#a(e){a.jG.batch(()=>{if(this.#n&&this.hasListeners()){let t=this.#t.variables,s=this.#t.context,n={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey};if(e?.type==="success"){try{this.#n.onSuccess?.(e.data,t,s,n)}catch(e){Promise.reject(e)}try{this.#n.onSettled?.(e.data,null,t,s,n)}catch(e){Promise.reject(e)}}else if(e?.type==="error"){try{this.#n.onError?.(e.error,t,s,n)}catch(e){Promise.reject(e)}try{this.#n.onSettled?.(void 0,e.error,t,s,n)}catch(e){Promise.reject(e)}}}this.listeners.forEach(e=>{e(this.#t)})})}},c=s(24818);function d(e,t){let s=(0,c.jE)(t),[r]=n.useState(()=>new o(s,e));n.useEffect(()=>{r.setOptions(e)},[r,e]);let i=n.useSyncExternalStore(n.useCallback(e=>r.subscribe(a.jG.batchCalls(e)),[r]),()=>r.getCurrentResult(),()=>r.getCurrentResult()),d=n.useCallback((e,t)=>{r.mutate(e,t).catch(l.lQ)},[r]);if(i.error&&(0,l.GU)(r.options.throwOnError,[i.error]))throw i.error;return{...i,mutate:d,mutateAsync:i.mutate}}},11635:(e,t,s)=>{"use strict";s.d(t,{A:()=>n});let n=(0,s(89117).A)("circle-check",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]])},24505:(e,t,s)=>{Promise.resolve().then(s.bind(s,82301))},42310:(e,t,s)=>{"use strict";s.d(t,{A:()=>n});let n=(0,s(89117).A)("book-open",[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]])},51215:(e,t,s)=>{"use strict";let n;s.d(t,{cY:()=>d,x8:()=>l});let r={debug:0,info:1,warn:2,error:3},a="/v1/debug-logs/batch",i=null;function l(e){i=e}class o{health(){return{pending:this.queue.length,consecutiveFailures:this.consecutiveFailures,lastOkAt:this.lastOkAt,droppedByCap:this.droppedByCap,fallbackBatches:this.fallbackBatches}}push(e){if(!(r[function(e){let t=e.slice(e.lastIndexOf(".")+1).toLowerCase();return/^(error|exception|crash|fail|failed)$/.test(t)?"error":/^(warn|degraded|timeout)$/.test(t)?"warn":/^(boot|ready|start|begin|open|ok|done|resolve|end|stop|close)$/.test(t)?"info":"debug"}(e.category)]<r[this.minLevel])){if(this.queue.push(e),this.queue.length>500){let e=this.queue.length-500;this.droppedByCap+=e,this.queue.splice(0,e)}null===this.timer&&(this.timer=setTimeout(()=>{this.flush()},100))}}async flush(){if(this.timer&&(clearTimeout(this.timer),this.timer=null),this.inFlight||0===this.queue.length)return;let e=this.queue.slice(0,100);this.inFlight=!0;let t=!1,s=JSON.stringify({records:e});try{var n,r;t=await (n=this.fetchFn(s),r=this.postTimeoutMs,new Promise((e,t)=>{let s=setTimeout(()=>t(Error("debug-forward timeout after ".concat(r,"ms"))),r);n.then(t=>{clearTimeout(s),e(t)},e=>{clearTimeout(s),t(e)})}))}catch(e){t=!1}finally{this.inFlight=!1}if(!t){if(this.consecutiveFailures+=1,this.consecutiveFailures>=2&&i)try{await i(JSON.stringify({records:[...e,this.blockedNotice()]}))&&(this.fallbackBatches+=1)}catch(e){}this.wasFailing=!0,this.scheduleRetry();return}let a=this.lastOkAt;this.lastOkAt=Date.now();let l=this.consecutiveFailures;this.consecutiveFailures=0,this.queue.splice(0,e.length),this.wasFailing&&(this.wasFailing=!1,this.queue.push({ts:new Date().toISOString(),category:"pwa.debug-forwarder.recovered",event:"recovered",data:{consecutiveFailures:l,droppedByCap:this.droppedByCap,fallbackBatches:this.fallbackBatches,pending:this.queue.length,previousOkAt:a},source:{platform:"pwa"}})),this.queue.length>0&&null===this.timer&&(this.timer=setTimeout(()=>{this.flush()},100))}scheduleRetry(){if(null!==this.timer||0===this.queue.length)return;let e=Math.min(100*2**this.consecutiveFailures,3e4);this.timer=setTimeout(()=>{this.flush()},e)}blockedNotice(){return{ts:new Date().toISOString(),category:"pwa.debug-forwarder.http-blocked",event:"http-blocked",data:{consecutiveFailures:this.consecutiveFailures,pending:this.queue.length,droppedByCap:this.droppedByCap,lastOkAt:this.lastOkAt,via:"acp-fallback"},source:{platform:"pwa"}}}beaconFlush(){if(0!==this.queue.length)try{if("undefined"!=typeof navigator&&"function"==typeof navigator.sendBeacon){let e=this.queue.slice(0,100),t=new Blob([JSON.stringify({records:e})],{type:"application/json"});navigator.sendBeacon(a,t)&&this.queue.splice(0,e.length)}}catch(e){}}get pending(){return this.queue.length}constructor(e=c,t="debug",s=1e4){this.fetchFn=e,this.minLevel=t,this.postTimeoutMs=s,this.queue=[],this.timer=null,this.inFlight=!1,this.consecutiveFailures=0,this.lastOkAt=null,this.droppedByCap=0,this.fallbackBatches=0,this.wasFailing=!1}}async function c(e){return(await fetch(a,{method:"POST",headers:{"content-type":"application/json"},body:e,keepalive:!0,..."undefined"!=typeof AbortSignal&&"function"==typeof AbortSignal.timeout?{signal:AbortSignal.timeout(1e4)}:{}})).ok}function d(e,t){if("undefined"==typeof console)return;let s=new Date().toISOString();if(void 0!==t){let n="";try{let e=new WeakSet;n=JSON.stringify(t,(t,s)=>{if("bigint"==typeof s)return"".concat(s.toString(),"n");if("function"==typeof s)return"[fn ".concat(s.name||"anon","]");if(s&&"object"==typeof s){if(e.has(s))return"[circular]";e.add(s)}return s})}catch(e){n="[unserializable: ".concat(String(e),"]")}n&&n.length>800&&(n=n.slice(0,797)+"..."),console.debug("[".concat(s,"] ").concat(e," ").concat(n),t),u(s,e,n)}else console.debug("[".concat(s,"] ").concat(e)),u(s,e,void 0)}function u(e,t,s){let r,a=function(){if(void 0!==n)return n;let e=function(){try{let e="off"!==window.localStorage.getItem("elanous.pwa.debug.forward"),t=window.localStorage.getItem("elanous.pwa.debug.forwardLevel");return{forward:e,level:"info"===t||"warn"===t||"error"===t?t:"debug"}}catch(e){return{forward:!0,level:"debug"}}}();if(!e.forward)return n=null,null;let t=new o(c,e.level);try{window.addEventListener("visibilitychange",()=>{"hidden"===document.visibilityState&&t.beaconFlush()})}catch(e){}return n=t,t}();if(!a)return;let i=t.slice(t.lastIndexOf(".")+1)||t;if(void 0!==s&&""!==s)try{r=JSON.parse(s)}catch(e){r=s}a.push({ts:e,category:t,event:i,...void 0!==r?{data:r}:{},source:{platform:"pwa"}})}},67842:(e,t,s)=>{"use strict";s.d(t,{AF:()=>n});let n={all:["nexus"],health:()=>[...n.all,"health"],snapshot:()=>[...n.all,"snapshot"],tabs:e=>e?[...n.all,"tabs",{kind:e}]:[...n.all,"tabs"],tab:e=>[...n.all,"tab",e],templates:()=>[...n.all,"templates"],template:e=>[...n.all,"template",e],config:()=>[...n.all,"config"],switches:()=>[...n.all,"switches"],switch:e=>[...n.all,"switch",e],secrets:()=>[...n.all,"secrets"],bindingChannels:()=>[...n.all,"bindings","channels"],bindings:e=>[...n.all,"bindings",e],binding:(e,t)=>[...n.all,"binding",e,t],logsTail:(e,t)=>t?[...n.all,"logs",e,{lines:t}]:[...n.all,"logs",e],workflows:()=>[...n.all,"workflows"],workflow:e=>[...n.all,"workflow",e],workflowRun:e=>[...n.all,"workflow-run",e],workflowRuns:()=>[...n.all,"workflow-runs"],pendingApprovals:()=>[...n.all,"workflow-pending-approvals"],platforms:()=>[...n.all,"platforms"],providers:()=>[...n.all,"providers"],worktrees:()=>[...n.all,"worktrees"],designCheck:()=>[...n.all,"design-check"],designPreviews:()=>[...n.all,"design-previews"],designPreview:e=>[...n.all,"design-preview",e],registryCatalog:()=>[...n.all,"registry-catalog"],resolvedView:()=>[...n.all,"resolved-view"]};n.snapshot(),n.tabs(),n.health(),n.snapshot(),n.config(),n.switches()},82301:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>E});var n=s(41121),r=s(93981),a=s(11635);let i=(0,s(89117).A)("circle-dashed",[["path",{d:"M10.1 2.182a10 10 0 0 1 3.8 0",key:"5ilxe3"}],["path",{d:"M13.9 21.818a10 10 0 0 1-3.8 0",key:"11zvb9"}],["path",{d:"M17.609 3.721a10 10 0 0 1 2.69 2.7",key:"1iw5b2"}],["path",{d:"M2.182 13.9a10 10 0 0 1 0-3.8",key:"c0bmvh"}],["path",{d:"M20.279 17.609a10 10 0 0 1-2.7 2.69",key:"1ruxm7"}],["path",{d:"M21.818 10.1a10 10 0 0 1 0 3.8",key:"qkgqxc"}],["path",{d:"M3.721 6.391a10 10 0 0 1 2.7-2.69",key:"1mcia2"}],["path",{d:"M6.391 20.279a10 10 0 0 1-2.69-2.7",key:"1fvljs"}]]);var l=s(42310),o=s(99608),c=s(91269),d=s(91514),u=s(42012),h=s(24818),m=s(6015),p=s(67842),g=s(42375);function f(e){let{available:t,declared:s,onPick:r,pendingId:a,previews:i,onPreview:l}=e,{systems:o,themes:c}=function(e){let t=[],s=[];for(let n of e)("design-system"===n.source?t:s).push(n);return{systems:t,themes:s}}(t);return(0,n.jsxs)("div",{className:"space-y-4",children:[o.length>0&&(0,n.jsx)(x,{title:"Design systems",hint:"Web \xb7 copies tokens.css and DESIGN.md into design/system/",items:o,declared:s,onPick:r,pendingId:a,previews:i,onPreview:l}),c.length>0&&(0,n.jsx)(x,{title:"Terminal themes",hint:"One line in DESIGN.md",items:c,declared:s,onPick:r,pendingId:a,previews:i,onPreview:l})]})}function x(e){let{title:t,hint:s,items:r,declared:a,onPick:i,pendingId:l,previews:o,onPreview:c}=e;return(0,n.jsxs)("section",{className:"space-y-2","aria-label":t,children:[(0,n.jsxs)("h3",{className:"flex items-baseline gap-2 text-xs font-medium uppercase tracking-wide text-muted-foreground",children:[t,(0,n.jsxs)("span",{className:"normal-case tracking-normal",children:[r.length," \xb7 ",s]})]}),(0,n.jsx)("ul",{className:"grid grid-cols-1 gap-2 sm:grid-cols-2 lg:grid-cols-3",children:r.map(e=>(0,n.jsx)(b,{direction:e,chosen:e.id===a,onPick:i,pending:l===e.id,busy:null!==l,hasPreview:(null==o?void 0:o.has(e.id))===!0&&void 0!==c,onPreview:c},e.id))})]})}function b(e){var t,s,r,i,l,o,c,d,u;let{direction:h,chosen:m,onPick:p,pending:g,busy:f,hasPreview:x,onPreview:b}=e,y=null!=(r=h.swatch.bg)?r:h.isDark?"#111111":"#ffffff",v=null!=(i=h.swatch.fg)?i:h.swatch.text,w=null!=(o=null!=(l=null==(t=h.typography)?void 0:t.display)?l:null==(s=h.typography)?void 0:s.body)?o:null;return(0,n.jsxs)("li",{"data-direction":h.id,"data-direction-id":h.id,className:"flex flex-col gap-2 rounded-md border p-3 text-sm ".concat(m?"border-primary ring-1 ring-primary":""),children:[(0,n.jsxs)("div",{className:"flex items-center gap-1.5","aria-hidden":!0,children:[[y,v,h.swatch.accent].map((e,t)=>(0,n.jsx)("span",{className:"h-5 w-5 rounded-full border",style:{backgroundColor:e,borderColor:h.swatch.muted}},t)),h.category&&(0,n.jsx)("span",{className:"ml-auto truncate text-[11px] text-muted-foreground",children:h.category})]}),(0,n.jsxs)("div",{className:"min-w-0",children:[(0,n.jsx)("p",{className:"truncate font-medium",children:null!=(c=h.label)?c:h.id}),(0,n.jsxs)("p",{className:"truncate text-xs text-muted-foreground",children:[(0,n.jsx)("code",{children:h.id}),w?" \xb7 ".concat(w):""]}),(0,n.jsx)("p",{className:"mt-1 line-clamp-2 text-xs text-muted-foreground",children:h.mood})]}),(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[x&&(0,n.jsx)("button",{type:"button",onClick:()=>null==b?void 0:b(h.id),className:"self-start rounded-md border px-2.5 py-1 text-xs hover:bg-muted","aria-label":"Preview ".concat(null!=(d=h.label)?d:h.id),children:"Preview"}),m?(0,n.jsxs)("span",{className:"inline-flex items-center gap-1 text-xs text-primary",children:[(0,n.jsx)(a.A,{className:"h-3.5 w-3.5","aria-hidden":!0}),"Selected"]}):(0,n.jsx)("button",{type:"button",disabled:f,onClick:()=>p(h.id),className:"self-start rounded-md border px-2.5 py-1 text-xs hover:bg-muted disabled:opacity-50","aria-label":"Select ".concat(null!=(u=h.label)?u:h.id),children:g?"Selecting…":"Select"})]})]})}let y=/^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/;function v(e){return e.split(/[\s,]+/).map(e=>e.trim()).filter(Boolean)}function w(e,t){if("undefined"==typeof document)return t;let s=document.getElementById(e);return s&&"value"in s&&"string"==typeof s.value?s.value:t}function k(e){let{onCreate:t,onSelect:s,pending:r,result:a,error:i}=e,[l,o]=(0,c.useState)("url"),[d,u]=(0,c.useState)(""),[h,m]=(0,c.useState)(""),[p,g]=(0,c.useState)(""),f=v(h).filter(e=>y.test(e)),x=v(h).length,b=x>=2&&x<=6&&p.trim().length>0&&f.length===x;return(0,n.jsxs)("section",{className:"rounded-md border p-3","aria-label":"Make my system","data-make-my-system":"",children:[(0,n.jsxs)("div",{className:"flex items-baseline justify-between gap-2",children:[(0,n.jsx)("h3",{className:"text-sm font-medium",children:"Make my system"}),(0,n.jsxs)("div",{className:"flex gap-1",role:"tablist",children:[(0,n.jsx)("button",{type:"button",role:"tab","aria-selected":"url"===l,className:"rounded-md px-2 py-1 text-xs ".concat("url"===l?"bg-muted":""),onClick:()=>o("url"),children:"From a website"}),(0,n.jsx)("button",{type:"button",role:"tab","aria-selected":"colors"===l,className:"rounded-md px-2 py-1 text-xs ".concat("colors"===l?"bg-muted":""),onClick:()=>o("colors"),children:"From colors"})]})]}),(0,n.jsx)("p",{className:"mt-2 text-xs text-muted-foreground",children:"Reference, not a copy — logos, names, images and text are not taken."}),"url"===l?(0,n.jsxs)("form",{className:"mt-2 flex flex-col gap-2 sm:flex-row",onSubmit:e=>{e.preventDefault();let s=d.trim();s&&!r&&t({kind:"url",url:s})},children:[(0,n.jsx)("label",{className:"sr-only",htmlFor:"make-system-url",children:"Website URL"}),(0,n.jsx)("input",{id:"make-system-url",type:"url",value:d,disabled:r,placeholder:"https://example.com",onChange:e=>u(e.target.value),className:"min-w-0 flex-1 rounded-md border bg-transparent px-2 py-1.5 text-sm"}),(0,n.jsx)("button",{type:"button",disabled:r,onClick:()=>{let e=w("make-system-url",d).trim();e&&!r&&t({kind:"url",url:e})},className:"rounded-md border px-3 py-1.5 text-sm hover:bg-muted disabled:opacity-50",children:r?"Measuring…":"Make it"})]}):(0,n.jsxs)("form",{className:"mt-2 space-y-2",onSubmit:e=>{e.preventDefault(),b&&!r&&t({kind:"palette",colors:f,id:p.trim()})},children:[(0,n.jsx)("label",{className:"block text-xs text-muted-foreground",htmlFor:"make-system-colors",children:"2–6 colors"}),(0,n.jsx)("input",{id:"make-system-colors",value:h,disabled:r,placeholder:"#f4efe6, #1f3a2e, #c8553d",onChange:e=>m(e.target.value),className:"w-full rounded-md border bg-transparent px-2 py-1.5 text-sm"}),f.length>0&&(0,n.jsx)("ul",{className:"flex gap-1","aria-label":"Color preview",children:f.map(e=>(0,n.jsx)("li",{className:"h-6 w-6 rounded-sm border",style:{backgroundColor:e},title:e},e))}),(0,n.jsx)("label",{className:"block text-xs text-muted-foreground",htmlFor:"make-system-id",children:"id"}),(0,n.jsx)("input",{id:"make-system-id",value:p,disabled:r,placeholder:"stumptowncoffee",onChange:e=>g(e.target.value),className:"w-full rounded-md border bg-transparent px-2 py-1.5 text-sm"}),(0,n.jsx)("button",{type:"button",disabled:r,onClick:()=>{let e=v(w("make-system-colors",h)).filter(e=>y.test(e)),s=w("make-system-id",p).trim();r||e.length<2||e.length>6||0===s.length||t({kind:"palette",colors:e,id:s})},className:"rounded-md border px-3 py-1.5 text-sm hover:bg-muted disabled:opacity-50",children:r?"Measuring…":"Make it"})]}),r&&(0,n.jsx)("p",{className:"mt-2 text-sm text-muted-foreground",children:"Measuring…"}),i&&(0,n.jsx)("p",{className:"mt-2 text-sm text-error",role:"alert",children:i}),a&&(0,n.jsxs)("div",{className:"mt-2 space-y-1 text-sm",children:[(0,n.jsxs)("p",{children:["Made ",a.id," — ",a.tokens.length," tokens \xb7 ",a.unread," unread"]}),a.warnings.map(e=>(0,n.jsx)("p",{className:"text-xs text-muted-foreground",children:e},e)),(0,n.jsx)("button",{type:"button",onClick:()=>s(a.id),className:"rounded-md border px-2.5 py-1 text-xs hover:bg-muted",children:"Select it"})]})]})}let j={missing:"Missing",declared:"Declared",available:"Not declared"},N={missing:"bg-error/10 text-error",declared:"bg-green-600/10 text-green-700",available:"bg-muted text-muted-foreground"},S={missing:r.A,declared:a.A,available:i};function C(){return(0,d.Qj)()?(0,n.jsx)(M,{}):(0,n.jsxs)("div",{className:"mx-auto max-w-2xl space-y-2 p-6",children:[(0,n.jsx)("h1",{className:"text-xl font-semibold tracking-tight",children:"Design check"}),(0,n.jsx)("p",{className:"text-sm text-muted-foreground",children:"Connect to a NEXUS daemon to see this repository's craft rulebooks."})]})}function M(){let{data:e,isLoading:t,error:s,refetch:a,isFetching:i}=function(){var e;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},s=(0,d.M1)();return(0,u.I)({queryKey:p.AF.designCheck(),queryFn:()=>s.getDesignCheck(),enabled:null==(e=t.enabled)||e,refetchInterval:3e4})}();return(0,n.jsxs)("div",{className:"mx-auto max-w-3xl space-y-4 p-6",children:[(0,n.jsxs)("header",{className:"flex items-start justify-between gap-4",children:[(0,n.jsxs)("div",{className:"space-y-1",children:[(0,n.jsxs)("h1",{className:"flex items-center gap-2 text-xl font-semibold tracking-tight",children:[(0,n.jsx)(l.A,{className:"h-5 w-5","aria-hidden":!0}),"Design check"]}),(0,n.jsxs)("p",{className:"text-sm text-muted-foreground",children:["Craft rulebooks declared by this repository's ",(0,n.jsx)("code",{children:"DESIGN.md"}),"."]})]}),(0,n.jsxs)("button",{type:"button",onClick:()=>void a(),className:"inline-flex items-center gap-1.5 rounded-md border px-2.5 py-1.5 text-sm hover:bg-muted","aria-label":"Refresh design check",children:[(0,n.jsx)(o.A,{className:"h-4 w-4 ".concat(i?"animate-spin":""),"aria-hidden":!0}),"Refresh"]})]}),t&&(0,n.jsx)("p",{className:"text-sm text-muted-foreground",children:"Loading…"}),s&&(0,n.jsxs)("p",{className:"rounded-md bg-error/10 p-3 text-sm text-error",children:["Could not reach the daemon: ",s instanceof Error?s.message:String(s)]}),e&&!1===e.ok&&(0,n.jsxs)("div",{className:"space-y-2 rounded-md border border-warning/40 bg-warning/5 p-4",children:[(0,n.jsxs)("p",{className:"flex items-center gap-2 text-sm font-medium",children:[(0,n.jsx)(r.A,{className:"h-4 w-4 text-warning","aria-hidden":!0}),"Design check blocked"]}),(0,n.jsx)("p",{className:"text-sm text-muted-foreground",children:function(e,t){switch(e){case"no-repository":return"The daemon is not running inside a git checkout, so there is no DESIGN.md to check.";case"craft-directory":return"elanous's craft rulebook directory could not be read: ".concat(null!=t?t:"(unknown path)");case"design-document":return"This repository has no readable DESIGN.md: ".concat(null!=t?t:"(unknown path)");default:return"The design check is blocked (".concat(e,").")}}(e.blockedOn,e.path)})]}),e&&!0===e.ok&&(0,n.jsx)(O,{data:e})]})}function O(e){let{data:t}=e,s=function(e){let t=new Set(e.unavailableRulebooks),s=new Map;for(let t of e.availableRulebooks)s.set(t,"available");for(let n of e.declaredRulebooks)s.set(n,t.has(n)?"missing":"declared");let n={missing:0,declared:1,available:2};return[...s.entries()].map(e=>{let[t,s]=e;return{name:t,status:s}}).sort((e,t)=>n[e.status]-n[t.status]||e.name.localeCompare(t.name))}(t),r=t.unavailableRulebooks.length;return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{className:"rounded-md p-3 text-sm ".concat(r?"bg-error/10 text-error":"bg-green-600/10 text-green-700"),children:r?"".concat(r," declared rulebook").concat(1===r?"":"s"," could not be found."):"All ".concat(t.declaredRulebooks.length," declared rulebook").concat(1===t.declaredRulebooks.length?"":"s"," resolve.")}),(0,n.jsxs)("dl",{className:"grid grid-cols-1 gap-1 text-xs text-muted-foreground sm:grid-cols-2",children:[(0,n.jsxs)("div",{className:"truncate sm:col-span-2",children:[(0,n.jsx)("dt",{className:"inline font-medium",children:"Repository: "}),(0,n.jsxs)("dd",{className:"inline",children:[(0,n.jsx)("code",{children:t.repoRoot}),t.repoSource&&(0,n.jsxs)("span",{className:"ml-1",children:["(","config"===t.repoSource?"harness.defaultRepo":"daemon folder",")"]})]})]}),(0,n.jsxs)("div",{className:"truncate",children:[(0,n.jsx)("dt",{className:"inline font-medium",children:"Document: "}),(0,n.jsx)("dd",{className:"inline",children:(0,n.jsx)("code",{children:t.documentPath})})]}),(0,n.jsxs)("div",{className:"truncate",children:[(0,n.jsx)("dt",{className:"inline font-medium",children:"Rulebooks: "}),(0,n.jsx)("dd",{className:"inline",children:(0,n.jsx)("code",{children:t.craftDirectory})})]})]}),(0,n.jsx)(F,{data:t}),0===s.length?(0,n.jsx)("p",{className:"text-sm text-muted-foreground",children:"elanous ships no craft rulebooks and this document declares none."}):(0,n.jsx)("ul",{className:"divide-y rounded-md border",children:s.map(e=>{let t=S[e.status];return(0,n.jsxs)("li",{className:"flex items-center justify-between gap-3 px-3 py-2",children:[(0,n.jsxs)("span",{className:"flex items-center gap-2 text-sm",children:[(0,n.jsx)(t,{className:"h-4 w-4 shrink-0","aria-hidden":!0}),(0,n.jsx)("code",{children:e.name})]}),(0,n.jsx)("span",{className:"shrink-0 rounded-full px-2 py-0.5 text-xs ".concat(N[e.status]),children:j[e.status]})]},e.name)})})]})}function F(e){var t,s,r,a;let{data:i}=e,l=function(){let e=(0,d.M1)(),t=(0,h.jE)();return(0,m.n)({mutationFn:t=>e.setDesignDirection(t),onSuccess:()=>t.invalidateQueries({queryKey:p.AF.designCheck()})})}(),o=function(){let e=(0,d.M1)(),t=(0,h.jE)();return(0,m.n)({mutationFn:t=>e.createDesignSystem(t),onSuccess:()=>t.invalidateQueries({queryKey:p.AF.designCheck()})})}(),x=function(){var e;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},s=(0,d.M1)();return(0,u.I)({queryKey:p.AF.designPreviews(),queryFn:()=>s.listDesignPreviews(),enabled:null==(e=t.enabled)||e,refetchInterval:3e4})}(),[b,y]=(0,c.useState)(null),[v,w]=(0,c.useState)(null),j=i.directions;if((0,c.useEffect)(()=>{if(!v||!j)return;let e=document.querySelector('[data-direction-id="'.concat(v.replace(/"/g,""),'"]'));null==e||e.scrollIntoView({block:"nearest"})},[v,j]),!j)return null;let N=l.isPending&&null!=(s=l.variables)?s:null;return(0,n.jsxs)("section",{className:"space-y-2",children:[(0,n.jsx)("h2",{className:"text-sm font-medium",children:"Design direction"}),(0,n.jsx)(k,{pending:o.isPending,result:null!=(r=o.data)?r:null,error:o.isError?function(e){switch(e instanceof g.Iu&&e.body&&"object"==typeof e.body?e.body.reason:void 0){case"bad-url":return"That address is not an http or https URL.";case"bad-id":return"The id may only use lowercase letters, digits, and hyphens.";case"id-taken":return"That id is already taken.";case"extract-failed":return"The page could not be measured.";case"no-colors":return"Give between 2 and 6 colors.";case"busy":return"Another system is being made — wait for it to finish.";default:if(e instanceof g.Iu&&401===e.status)return"Only the owner can make a system — sign in first.";return"Could not make the system: ".concat(e instanceof Error?e.message:String(e))}}(o.error):null,onCreate:e=>{o.mutate(e,{onSuccess:e=>w(e.id)})},onSelect:e=>{w(e),l.mutate(e)}}),j.unavailable&&(0,n.jsxs)("p",{className:"rounded-md bg-error/10 p-2 text-sm text-error",children:["Declared direction ",(0,n.jsx)("code",{children:j.unavailable})," is not registered."]}),null===j.declared&&!j.unavailable&&(0,n.jsx)("p",{className:"text-sm text-muted-foreground",children:"None declared — pick one below."}),l.isError&&(0,n.jsx)("p",{className:"rounded-md bg-error/10 p-2 text-sm text-error",children:function(e){switch(e instanceof g.Iu&&e.body&&"object"==typeof e.body?e.body.reason:void 0){case"unknown-direction":return"The daemon does not know this direction.";case"no-repository":return"The daemon has no repository to write to (set harness.defaultRepo).";case"conflicting-system-file":return"design/system/ already holds a file the daemon will not overwrite.";case"cannot-read":return"The DESIGN.md could not be read.";case"cannot-write":return"The DESIGN.md could not be written.";default:if(e instanceof g.Iu&&401===e.status)return"Only the owner can pick a direction — sign in first.";return"Could not set the direction: ".concat(e instanceof Error?e.message:String(e))}}(l.error)}),b&&(0,n.jsx)(A,{system:b,onClose:()=>y(null),onSelect:()=>l.mutate(b),selecting:N===b,busy:null!==N,alreadySelected:j.declared===b}),(0,n.jsx)(f,{available:j.available,declared:j.declared,pendingId:N,previews:new Set((null!=(a=null==(t=x.data)?void 0:t.previews)?a:[]).map(e=>e.system)),onPreview:e=>y(e),onPick:e=>l.mutate(e)})]})}function A(e){let{system:t,onClose:s,onSelect:r,selecting:a,busy:i,alreadySelected:l}=e,o=function(e){let t=(0,d.M1)();return(0,u.I)({queryKey:p.AF.designPreview(null!=e?e:""),queryFn:()=>t.getDesignPreview(e),enabled:null!==e&&""!==e})}(t);return(0,n.jsxs)("div",{className:"space-y-2 rounded-md border p-3",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,n.jsxs)("p",{className:"text-sm font-medium",children:["Preview \xb7 ",(0,n.jsx)("code",{children:t})]}),(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[l?(0,n.jsx)("span",{className:"text-xs text-primary",children:"Selected"}):(0,n.jsx)("button",{type:"button",disabled:i,onClick:r,className:"rounded-md border px-2.5 py-1 text-xs hover:bg-muted disabled:opacity-50","aria-label":"Select ".concat(t),children:a?"Selecting…":"Select"}),(0,n.jsx)("button",{type:"button",onClick:s,className:"rounded-md border px-2.5 py-1 text-xs hover:bg-muted","aria-label":"Close preview",children:"Close"})]})]}),o.isLoading&&(0,n.jsx)("p",{className:"text-sm text-muted-foreground",children:"Loading preview…"}),o.isError&&(0,n.jsxs)("p",{className:"text-sm text-error",children:["Could not load the preview: ",o.error instanceof Error?o.error.message:String(o.error)]}),o.data&&(0,n.jsx)("iframe",{sandbox:"",srcDoc:o.data.html,title:"Preview \xb7 ".concat(t),className:"h-80 w-full rounded-md border bg-white"})]})}function E(){return(0,n.jsx)(C,{})}},91514:(e,t,s)=>{"use strict";s.d(t,{M1:()=>c,Qj:()=>d,tI:()=>o});var n=s(41121),r=s(91269),a=s(19855),i=s(24818);let l=(0,r.createContext)(null);function o(e){let{client:t,queryClient:s,defaultStaleTimeMs:o,children:c}=e,d=(0,r.useMemo)(()=>null!=s?s:new a.E({defaultOptions:{queries:{staleTime:null!=o?o:2e3,refetchOnWindowFocus:!1}}}),[s,o]);return(0,n.jsx)(l.Provider,{value:t,children:(0,n.jsx)(i.Ht,{client:d,children:c})})}function c(){let e=(0,r.useContext)(l);if(!e)throw Error("useNexusClient must be used within <NexusProvider>");return e}function d(){return(0,r.useContext)(l)}},91644:(e,t,s)=>{"use strict";s.d(t,{Qb:()=>i,SI:()=>o,dJ:()=>l});let n="elanous:auth-required",r=null,a=!1;function i(e){null===r&&(r=e,window.dispatchEvent(new CustomEvent(n,{detail:{path:e}})))}function l(e){let t=window,s=t=>e(t.detail);return t.addEventListener(n,s),null===r||a||e({path:r}),()=>t.removeEventListener(n,s)}function o(){a=!0}},93981:(e,t,s)=>{"use strict";s.d(t,{A:()=>n});let n=(0,s(89117).A)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]])},99608:(e,t,s)=>{"use strict";s.d(t,{A:()=>n});let n=(0,s(89117).A)("refresh-cw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]])}},e=>{e.O(0,[920,6998,2375,2367,6725,7358],()=>e(e.s=24505)),_N_E=e.O()}]);
|