elanous 0.2.31 → 0.2.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/apps/pwa/out/404/index.html +1 -1
- package/apps/pwa/out/404.html +1 -1
- package/apps/pwa/out/_next/static/{LSXfY0u9QtfDbejY0Ukf_ → L04y73dlwKeTW-GetaTF3}/_buildManifest.js +1 -1
- package/apps/pwa/out/_next/static/chunks/1162.c69abda138c7ce43.js +79 -0
- package/apps/pwa/out/_next/static/chunks/1449-1fede62af84c3e43.js +1 -0
- package/apps/pwa/out/_next/static/chunks/1598-13fc845935e816df.js +1 -0
- package/apps/pwa/out/_next/static/chunks/1639.62c5e16fa20d242f.js +94 -0
- package/apps/pwa/out/_next/static/chunks/{4174.92ed04922709ac9e.js → 1644.35dd25240ae24e4b.js} +2 -2
- package/apps/pwa/out/_next/static/chunks/1661-adb8b2babc9aaf8c.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{2940-619bfd8ef337c611.js → 1895-60ed0e341c658bd4.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/{5525.86debf231e181813.js → 2124.ed5bf480cea7f85b.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/2147.107c0fc6146fb15a.js +23 -0
- package/apps/pwa/out/_next/static/chunks/2202-ef1c9b000c3074fc.js +1 -0
- package/apps/pwa/out/_next/static/chunks/2247.1e326638ee43e672.js +115 -0
- package/apps/pwa/out/_next/static/chunks/2268.56e1e3d58180abae.js +8 -0
- package/apps/pwa/out/_next/static/chunks/2469-606819c812414021.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{6092.a7f99e68b188ca66.js → 2547.dd27303624cb4da8.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/{2213.2ccbada92c33ea0f.js → 2554.3b5e200f5f5cfcd6.js} +16 -16
- package/apps/pwa/out/_next/static/chunks/2593.e53c1620c0bb3599.js +1 -0
- package/apps/pwa/out/_next/static/chunks/2690.e96671114222676a.js +1 -0
- package/apps/pwa/out/_next/static/chunks/2898-79ee1a5cc0cd9d13.js +1 -0
- package/apps/pwa/out/_next/static/chunks/298.26099a9f65e5c8ff.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{5173-233188df2f42c626.js → 2987-30cf9c2eb7b8bdd5.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/2992.51fc2a7295bd8139.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{3541-ce3a5424ed5ad7f1.js → 3001-5a52788c813b6113.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/3014-291245fba9df7b5b.js +1 -0
- package/apps/pwa/out/_next/static/chunks/3068.ee78201f0251a18d.js +1 -0
- package/apps/pwa/out/_next/static/chunks/3083.cd399a17e9365f78.js +1 -0
- package/apps/pwa/out/_next/static/chunks/3103.84470c8445962f04.js +34 -0
- package/apps/pwa/out/_next/static/chunks/{6433.fc573af22bbc9ab7.js → 3110.0a7065f25c841818.js} +17 -17
- package/apps/pwa/out/_next/static/chunks/3117-e1c474683fd1f824.js +1 -0
- package/apps/pwa/out/_next/static/chunks/3121.779fafe3e44612c5.js +1 -0
- package/apps/pwa/out/_next/static/chunks/3251-2c17bd5a91f8de2e.js +1 -0
- package/apps/pwa/out/_next/static/chunks/326.3fb32322bb2ddf6d.js +1 -0
- package/apps/pwa/out/_next/static/chunks/3411-f87314c6c66ebc73.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{6157.0c9af021de4fb31b.js → 3414.172ad4ca2d9b08e8.js} +2 -2
- package/apps/pwa/out/_next/static/chunks/3421-7ff7fbaa156985a7.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{4745.67d6f99c245af3f7.js → 3498.cf2a15a8a9e5b926.js} +3 -3
- package/apps/pwa/out/_next/static/chunks/381.f55dc63ea87735e6.js +1 -0
- package/apps/pwa/out/_next/static/chunks/3819.163d4777f0a597f6.js +32 -0
- package/apps/pwa/out/_next/static/chunks/{5543.a438b8ab5a13ea47.js → 3837.722e053fb9f321ad.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/4129-ab0a6189f1778633.js +1 -0
- package/apps/pwa/out/_next/static/chunks/4361.93d14ba594b3a035.js +104 -0
- package/apps/pwa/out/_next/static/chunks/4364.7a7eb19cceb67d2f.js +286 -0
- package/apps/pwa/out/_next/static/chunks/4406.d71f506f7c3ee9d3.js +149 -0
- package/apps/pwa/out/_next/static/chunks/4461.2ad1514180ae7e29.js +148 -0
- package/apps/pwa/out/_next/static/chunks/4479.bd309cbe0e3842ee.js +64 -0
- package/apps/pwa/out/_next/static/chunks/4522-05966f777d66d13b.js +1 -0
- package/apps/pwa/out/_next/static/chunks/4543-9a3e9812e845de65.js +1 -0
- package/apps/pwa/out/_next/static/chunks/4557.f8f1d84a0d90d590.js +74 -0
- package/apps/pwa/out/_next/static/chunks/4589-79b11542179ef58c.js +1 -0
- package/apps/pwa/out/_next/static/chunks/4633-9f8f9f88ffbb8f5c.js +1 -0
- package/apps/pwa/out/_next/static/chunks/4831.23af4d10c0697b5e.js +1 -0
- package/apps/pwa/out/_next/static/chunks/4983.5951b85724f61f2a.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{b313b242.cb1265eea908db61.js → 4fa33ebd.21c1bd5b294496e6.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/{997ce8a5-2ad501927003b41b.js → 5014f970-22bef0b5210f7d60.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/{2112-e4efc21a6505d5bc.js → 5028-f0722e6114c313e7.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/{2898.fd781bc7cf01a7b7.js → 5249.96a848656b582a93.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/5311.16e0ffbfa5468b80.js +62 -0
- package/apps/pwa/out/_next/static/chunks/{9407.e49124dedf0f5e72.js → 5446.edf141cff9ef647d.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/{9002.e5658224e3dc1b6f.js → 5489.ec2dd1b5272a19dc.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/{1335-6731f392c35216eb.js → 5576-82d3703636d5c4b9.js} +3 -3
- package/apps/pwa/out/_next/static/chunks/559.df87695df637920c.js +1 -0
- package/apps/pwa/out/_next/static/chunks/5618-5c88f2f70178c4ad.js +1 -0
- package/apps/pwa/out/_next/static/chunks/5764.05487bf0b73ddb6b.js +1 -0
- package/apps/pwa/out/_next/static/chunks/5930.e678826c3f831aab.js +1 -0
- package/apps/pwa/out/_next/static/chunks/5dfb57f7.f2e3305326202474.js +1 -0
- package/apps/pwa/out/_next/static/chunks/6053-d893974de92e6198.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{2985.39ccdecd36848b12.js → 6086.913a69e6fa3e4a8b.js} +4 -4
- package/apps/pwa/out/_next/static/chunks/6200-cefd6f33f59d765e.js +1 -0
- package/apps/pwa/out/_next/static/chunks/6314-edeba650ae686ac9.js +1 -0
- package/apps/pwa/out/_next/static/chunks/6316-bc9a9b74d7842d79.js +1 -0
- package/apps/pwa/out/_next/static/chunks/6476-13b9779b73528008.js +1 -0
- package/apps/pwa/out/_next/static/chunks/666-04db3ac4c8e3c66f.js +1 -0
- package/apps/pwa/out/_next/static/chunks/670.682e55106ef915a6.js +77 -0
- package/apps/pwa/out/_next/static/chunks/{7862.30a8d6482bb238eb.js → 6740.43de73fc427c9fe2.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/6816.b7ba9d0a1a4a46a7.js +1 -0
- package/apps/pwa/out/_next/static/chunks/690-fbbcc777f189af37.js +1 -0
- package/apps/pwa/out/_next/static/chunks/6989.0d3d4020e5cb3df6.js +90 -0
- package/apps/pwa/out/_next/static/chunks/{2871.0bca6137343b3f76.js → 7005.1623d2aea78eb85f.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/7193-cf355cca5ba6c5d5.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7217-d17393fe7af78fa6.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7232.24edbd938a69c8d0.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7295cd1e.b4b557908888eeee.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7323.adb02de21991883c.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7386.5d8e7e42e818dfb6.js +287 -0
- package/apps/pwa/out/_next/static/chunks/{7502.ccd5b8065545edd0.js → 7431.3051e9b8a4372d2d.js} +2 -2
- package/apps/pwa/out/_next/static/chunks/{3583.a05e88cc8d594628.js → 7448.478958ffbbba0ac0.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/7537.ba2208c5c656b8a3.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7562.948255cbc3e79d33.js +41 -0
- package/apps/pwa/out/_next/static/chunks/7596-962ae6db6cfc9c83.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7671.cff51beac212a2ba.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7883.3916734ee16d3e58.js +27 -0
- package/apps/pwa/out/_next/static/chunks/{9989.3694300e5f000b14.js → 7952.b192c31b6a0e00cc.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/801.5b24e81eded22d1b.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8176.8c9a8613f5a01ac1.js +36 -0
- package/apps/pwa/out/_next/static/chunks/819e78a6.fa3dd7f7da19bf61.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8220-78978450c3183d8d.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8221-eb60b5bc692a3361.js +1 -0
- package/apps/pwa/out/_next/static/chunks/826.e9a26064f474949e.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{5307.60f2209e809bd627.js → 8368.014caa8de2f5af34.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/8459-a351487a4480f584.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8482-75823d513a4ce151.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8488.8da515248cda3f3a.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{9221.7d22eaf353a2d4e7.js → 8548.036c344973968847.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/8584.388a1779d9b203af.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8637.a55e098e61ffefb8.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8817.61bb7ffbba502ecb.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{9398-6aed28f0a96d0d6f.js → 9131-fce7256c4180c4a5.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/9207-8e6a12db30373f32.js +1 -0
- package/apps/pwa/out/_next/static/chunks/9263-00ae932c62696a86.js +1 -0
- package/apps/pwa/out/_next/static/chunks/9318.caafc3a130e8769c.js +1 -0
- package/apps/pwa/out/_next/static/chunks/932.da3fb55951882562.js +93 -0
- package/apps/pwa/out/_next/static/chunks/9433.002f8426ac75b6b7.js +1 -0
- package/apps/pwa/out/_next/static/chunks/9464.dd631a5a14b1d660.js +24 -0
- package/apps/pwa/out/_next/static/chunks/{3278.2e5d15b53a4091c8.js → 9550.d5f76828f972058c.js} +2 -2
- package/apps/pwa/out/_next/static/chunks/{2534.e85ae21ad0dac829.js → 9739.8d5f36ac67a3b236.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/9743.beeabb9d5f86abe4.js +1 -0
- package/apps/pwa/out/_next/static/chunks/9843-a23d3f32dc43f715.js +1 -0
- package/apps/pwa/out/_next/static/chunks/994-28211077c7c587d5.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{7a1887c4.f36b88fba31da8fd.js → 9a8cb466.cc9fc9e6e46038aa.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/{0bb0ff36.b8d418980951e5ba.js → 9b48c871.204d5d13e7809bd0.js} +7 -7
- package/apps/pwa/out/_next/static/chunks/{409f1e57.d0649fc47691ebfe.js → abb4b98b.163e0f56e84ae35d.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/app/_not-found/page-3b4c947f174e33d8.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/approvals/page-369d5ce99483f859.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/autopilot/page-63c0ed0eb26e5fce.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/board/page-62802c6003bc85cc.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/botlab/page-ecb41560d4e77be9.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/bots/page-7b65ad8130c93e95.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/ceo/page-8755477c15a9060c.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/chat/page-5725447dd972c471.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/consult/page-b979de0591a69375.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/control/page-6d0796bf4633751a.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/decisions/page-59c31dc0394e67b4.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/design-check/page-12dfc95f6cc5c718.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/editor/page-25788244e66aa4dd.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/exec/page-a2555dc705466322.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/field/page-4fb31eb476dcbad3.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/healthz/route-3b4c947f174e33d8.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/inside/page-578729adbeaa40cb.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/intake/page-a1d20fffbec35205.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/layout-4a558f94516b8004.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/live/page-9e3834705b86145e.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/live-run/page-d7bff0f0905a662c.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/loops/page-cb1c5fe746ea4014.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/market/page-9ee320507356582a.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/missions/[id]/page-66fd183b74835886.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/morning/page-3272a064a01a9927.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/not-found-f281b7a7f6ef2529.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/observatory/page-d45a65f8b7124fcd.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/ops/checklist/page-e9c1fe684dd19a66.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/ops/release/page-b8322932fc6e34de.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/ops/seats/page-82c66d9af2290575.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/outputs/page-63c6752009c97b05.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/page-bb33d42ebc358aec.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/reflection/page-7e4c9379197d7214.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/scheduler/page-38bf1e9a7001732b.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/sessions/page-2e5b752012389d56.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/settings/devices/{page-0a07363b130182a1.js → page-398c0faa173203f7.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/app/settings/page-002f53a965b6445c.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/setup/done/page-7f75997f61a26269.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/setup/layout-3b4c947f174e33d8.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/setup/page-05631753294f23fb.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/share/page-edd700fd2cc3d7f8.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/showroom/page-105f83ecb4594365.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/tasks/page-5823e87d2017f19c.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/term/page-df3445b207ceceab.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/today/page-b51ca09566c03de7.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/trace/page-8aacd5ded5dbac60.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/vault/page-bae3365a0b3c6a8e.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-9ed52b48ff1aa7fd.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/workflows/page-b6f8cad35fe00946.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/workspace/page-6d25ceda500d2457.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/worktrees/page-b6401a5f2c962fe8.js +1 -0
- package/apps/pwa/out/_next/static/chunks/ebf6cf5e.0d2f887b040e80fb.js +122 -0
- package/apps/pwa/out/_next/static/chunks/f09ec7d7-d29abe23edcbb193.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{ebc7d829.264a0bcb6c750b50.js → ffdc3a04.b9c23c1b28dd4a96.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/framework-9322cb8a56ac081c.js +1 -0
- package/apps/pwa/out/_next/static/chunks/main-2fbab294e49a1561.js +1 -0
- package/apps/pwa/out/_next/static/chunks/main-app-f36729f56621a8f3.js +1 -0
- package/apps/pwa/out/_next/static/chunks/pages/_app-2a62e450b47c6114.js +1 -0
- package/apps/pwa/out/_next/static/chunks/pages/_error-5e17f7b445f34d43.js +1 -0
- package/apps/pwa/out/_next/static/chunks/webpack-b4263e2190ea7adf.js +1 -0
- package/apps/pwa/out/_next/static/css/b5d88eba78a3d7bf.css +1 -0
- package/apps/pwa/out/approvals/index.html +1 -1
- package/apps/pwa/out/approvals/index.txt +23 -23
- package/apps/pwa/out/autopilot/index.html +1 -1
- package/apps/pwa/out/autopilot/index.txt +23 -23
- package/apps/pwa/out/board/index.html +1 -1
- package/apps/pwa/out/board/index.txt +23 -23
- package/apps/pwa/out/botlab/index.html +1 -1
- package/apps/pwa/out/botlab/index.txt +22 -22
- package/apps/pwa/out/bots/index.html +1 -1
- package/apps/pwa/out/bots/index.txt +22 -22
- package/apps/pwa/out/ceo/index.html +1 -1
- package/apps/pwa/out/ceo/index.txt +23 -23
- package/apps/pwa/out/chat/index.html +1 -1
- package/apps/pwa/out/chat/index.txt +22 -22
- package/apps/pwa/out/consult/index.html +1 -1
- package/apps/pwa/out/consult/index.txt +23 -23
- package/apps/pwa/out/control/index.html +1 -1
- package/apps/pwa/out/control/index.txt +23 -23
- package/apps/pwa/out/decisions/index.html +1 -1
- package/apps/pwa/out/decisions/index.txt +22 -22
- package/apps/pwa/out/design-check/index.html +1 -1
- package/apps/pwa/out/design-check/index.txt +23 -23
- package/apps/pwa/out/editor/index.html +1 -1
- package/apps/pwa/out/editor/index.txt +23 -23
- package/apps/pwa/out/exec/index.html +1 -1
- package/apps/pwa/out/exec/index.txt +23 -23
- package/apps/pwa/out/field/index.html +1 -1
- package/apps/pwa/out/field/index.txt +23 -23
- package/apps/pwa/out/healthz +1 -1
- package/apps/pwa/out/index.html +1 -1
- package/apps/pwa/out/index.txt +22 -22
- package/apps/pwa/out/inside/index.html +1 -1
- package/apps/pwa/out/inside/index.txt +22 -22
- package/apps/pwa/out/intake/index.html +1 -1
- package/apps/pwa/out/intake/index.txt +23 -23
- package/apps/pwa/out/live/index.html +1 -1
- package/apps/pwa/out/live/index.txt +26 -23
- package/apps/pwa/out/live-run/index.html +1 -1
- package/apps/pwa/out/live-run/index.txt +23 -23
- package/apps/pwa/out/loops/index.html +1 -1
- package/apps/pwa/out/loops/index.txt +22 -22
- package/apps/pwa/out/market/index.html +1 -1
- package/apps/pwa/out/market/index.txt +22 -22
- package/apps/pwa/out/missions/placeholder/index.html +1 -1
- package/apps/pwa/out/missions/placeholder/index.txt +22 -22
- package/apps/pwa/out/morning/index.html +1 -1
- package/apps/pwa/out/morning/index.txt +23 -23
- package/apps/pwa/out/observatory/index.html +1 -1
- package/apps/pwa/out/observatory/index.txt +23 -23
- package/apps/pwa/out/ops/checklist/index.html +1 -1
- package/apps/pwa/out/ops/checklist/index.txt +22 -22
- package/apps/pwa/out/ops/release/index.html +1 -1
- package/apps/pwa/out/ops/release/index.txt +22 -22
- package/apps/pwa/out/ops/seats/index.html +1 -1
- package/apps/pwa/out/ops/seats/index.txt +22 -22
- package/apps/pwa/out/outputs/index.html +1 -1
- package/apps/pwa/out/outputs/index.txt +22 -22
- package/apps/pwa/out/reflection/index.html +1 -1
- package/apps/pwa/out/reflection/index.txt +23 -23
- package/apps/pwa/out/scheduler/index.html +1 -1
- package/apps/pwa/out/scheduler/index.txt +23 -23
- package/apps/pwa/out/sessions/index.html +1 -1
- package/apps/pwa/out/sessions/index.txt +22 -22
- package/apps/pwa/out/settings/devices/index.html +1 -1
- package/apps/pwa/out/settings/devices/index.txt +23 -23
- package/apps/pwa/out/settings/index.html +1 -1
- package/apps/pwa/out/settings/index.txt +23 -23
- package/apps/pwa/out/setup/done/index.html +1 -1
- package/apps/pwa/out/setup/done/index.txt +23 -23
- package/apps/pwa/out/setup/index.html +1 -1
- package/apps/pwa/out/setup/index.txt +23 -23
- package/apps/pwa/out/share/index.html +1 -1
- package/apps/pwa/out/share/index.txt +23 -23
- package/apps/pwa/out/showroom/index.html +1 -1
- package/apps/pwa/out/showroom/index.txt +22 -22
- package/apps/pwa/out/tasks/index.html +1 -1
- package/apps/pwa/out/tasks/index.txt +23 -23
- package/apps/pwa/out/term/index.html +1 -1
- package/apps/pwa/out/term/index.txt +23 -23
- package/apps/pwa/out/today/index.html +1 -1
- package/apps/pwa/out/today/index.txt +23 -23
- package/apps/pwa/out/trace/index.html +1 -1
- package/apps/pwa/out/trace/index.txt +23 -23
- package/apps/pwa/out/vault/index.html +1 -1
- package/apps/pwa/out/vault/index.txt +23 -23
- package/apps/pwa/out/workflows/chat-ui/index.html +1 -1
- package/apps/pwa/out/workflows/chat-ui/index.txt +23 -23
- package/apps/pwa/out/workflows/index.html +1 -1
- package/apps/pwa/out/workflows/index.txt +23 -23
- package/apps/pwa/out/workspace/index.html +1 -1
- package/apps/pwa/out/workspace/index.txt +23 -23
- package/apps/pwa/out/worktrees/index.html +1 -1
- package/apps/pwa/out/worktrees/index.txt +23 -23
- package/bin/elanous.mjs +9 -2
- package/docs/goal-context/README.md +1 -0
- package/graphs/default-loop.yaml +20 -3
- package/graphs/document-loop.yaml +21 -2
- package/graphs/implement-loop.yaml +11 -0
- package/graphs/journey/SCENARIOS.md +33 -0
- package/graphs/journey/recipes.yaml +1 -0
- package/graphs/journey/ta-journey.yaml +84 -0
- package/graphs/journey/units/author/author.yaml +20 -0
- package/graphs/journey/units/author/recipes.yaml +2 -0
- package/graphs/journey/units/green/green.yaml +20 -0
- package/graphs/journey/units/green/recipes.yaml +2 -0
- package/graphs/journey/units/pr/pr.yaml +20 -0
- package/graphs/journey/units/pr/recipes.yaml +2 -0
- package/graphs/journey/units/remember/recipes.yaml +2 -0
- package/graphs/journey/units/remember/remember.yaml +20 -0
- package/graphs/operate-loop.yaml +21 -2
- package/graphs/overlays/stop-heal-ladder.yaml +1 -1
- package/graphs/release-rehearsal/recipes.yaml +1 -1
- package/graphs/release-rehearsal/release-rehearsal.yaml +2 -2
- package/graphs/research-loop.yaml +23 -2
- package/graphs/units/dispatch-pod/dispatch-pod.yaml +50 -0
- package/graphs/units/dispatch-pod/recipes.yaml +14 -0
- package/graphs/units/entry/entry.yaml +50 -0
- package/graphs/units/entry/recipes.yaml +14 -0
- package/graphs/units/harvest/harvest.yaml +25 -0
- package/graphs/units/harvest/recipes.yaml +4 -0
- package/graphs/units/land/land.yaml +45 -0
- package/graphs/units/land/recipes.yaml +3 -0
- package/graphs/units/recipes.yaml +7 -0
- package/graphs/units/recover.yaml +39 -0
- package/graphs/units/reflect/recipes.yaml +3 -0
- package/graphs/units/reflect/reflect.yaml +15 -0
- package/graphs/units/task-agent-recover-review.yaml +17 -0
- package/graphs/units/task-agent-recover-wait.yaml +17 -0
- package/graphs/units/verbs/make-doc.yaml +34 -0
- package/graphs/units/verbs/recipes.yaml +33 -0
- package/graphs/units/verbs/verify.yaml +55 -0
- package/graphs/work/recipes.yaml +2 -0
- package/graphs/work/research-report.yaml +28 -0
- package/package.json +1 -1
- package/scripts/ci-typecheck-changed.ts +95 -17
- package/scripts/docs/generate-graph-anatomy.ts +19 -2
- package/scripts/graph-harvest-unit.ts +22 -0
- package/scripts/graph-units/journey-stub.ts +6 -0
- package/scripts/graph-units/land-enqueue.ts +78 -0
- package/scripts/graph-units/recover-plan.ts +15 -0
- package/scripts/graph-units/reflect-node.ts +88 -0
- package/scripts/graph-units/ta-journey-observe.ts +109 -0
- package/scripts/graph-units/verbs/headless-goal-loop.ts +152 -0
- package/scripts/graph-units/verbs/verify-stage.ts +75 -0
- package/scripts/graph-units/verbs-envelope.ts +139 -0
- package/scripts/hq/standby-snapshot.ts +25 -0
- package/scripts/measure-si-task-cpu.ts +143 -0
- package/scripts/public-export.ts +43 -1
- package/scripts/ratchets/test-interference-patterns.allowlist.txt +0 -2
- package/scripts/ratchets/train-side-invariants.sh +45 -0
- package/scripts/release-loop/auto-approve-node.ts +30 -16
- package/scripts/release-loop/gate-closure.ts +5 -1
- package/scripts/release-loop/gate-diff.ts +1 -1
- package/scripts/release-loop/gate-node.ts +498 -31
- package/scripts/release-loop/gate-partial.ts +3 -3
- package/scripts/release-loop/gate-radius-shadow.ts +138 -0
- package/scripts/release-loop/gate-traffic-mode.ts +128 -0
- package/scripts/release-loop/gate-triage-node.ts +5 -2
- package/scripts/release-loop/known-issues-0.2.33-approved.json +194 -0
- package/scripts/release-loop/known-issues-node.ts +77 -8
- package/scripts/release-loop/preflight.ts +93 -7
- package/scripts/release-loop/prepare-node.ts +102 -4
- package/scripts/release-loop/publish-node.ts +60 -9
- package/scripts/release-loop/resume-cap.ts +56 -0
- package/scripts/release-loop/resume-release.ts +114 -15
- package/scripts/release-loop/resume.ts +24 -1
- package/scripts/release-loop/tui-sim-node.ts +8 -2
- package/scripts/release-loop/unattended-release.ts +8 -2
- package/src/acp/core-turn-bridge.ts +36 -9
- package/src/acp/elanous-extensions.ts +3 -0
- package/src/acp/reasoning-thought-buffer.ts +45 -0
- package/src/acp/server.ts +3 -0
- package/src/acp/tool-trace.ts +186 -11
- package/src/agent/self-ambient-cache.ts +156 -0
- package/src/agent/self-ambient.ts +8 -1
- package/src/agent/task-notification.ts +5 -0
- package/src/agent-substrate/acp-reviewer.ts +52 -12
- package/src/agent-substrate/pr-reviewer.ts +3 -1
- package/src/agent-substrate/review-finding-key.ts +53 -0
- package/src/agent-substrate/self-review-cli.ts +126 -5
- package/src/ask-user-question/pending-questions.ts +1 -1
- package/src/ask-user-question/tool.ts +22 -0
- package/src/autopilot/build/llm-conflict-merge.ts +56 -10
- package/src/autopilot/pr-manager.ts +213 -46
- package/src/capture/frame-state-detect.ts +39 -0
- package/src/capture/tui-self-report.ts +134 -6
- package/src/chat/index.ts +61 -15
- package/src/chat/pickers/modal-runtime.ts +6 -0
- package/src/chat/pickers/modals.ts +8 -2
- package/src/chat/tool-render/dispatch.ts +62 -10
- package/src/cli/ask-bare.ts +1 -0
- package/src/cli/control-cli.ts +24 -7
- package/src/cli/guardian-cli.ts +10 -0
- package/src/cli/import-cli.ts +12 -0
- package/src/cli/light-entry-route.ts +35 -0
- package/src/cli/llm-detect-cli.ts +23 -1
- package/src/cli/log-event-names.ts +10 -0
- package/src/cli/msg-cli.ts +1 -0
- package/src/cli/pod-cli.ts +14 -3
- package/src/cli/pr-cli.ts +140 -41
- package/src/cli/pr-land-base-read.ts +36 -0
- package/src/cli/pr-land-heavy-remote.ts +81 -25
- package/src/cli/pr-land-overlap-evidence.ts +200 -18
- package/src/cli/pr-land-pod-shadow-job.ts +26 -3
- package/src/cli/pr-land-recovery.ts +64 -0
- package/src/cli/pr-land-refusal.ts +20 -5
- package/src/cli/pty-takeover-cli.ts +94 -19
- package/src/cli/release-cli.ts +120 -33
- package/src/cli/release-run-if-ready.ts +29 -28
- package/src/cli/release-single-flight.ts +178 -0
- package/src/cli/seat-cli.ts +37 -0
- package/src/cli/setup-cli.ts +40 -1
- package/src/cli/sim-cli.ts +18 -0
- package/src/cli/tasks-cli.ts +149 -5
- package/src/context-bus/ops-events.ts +6 -2
- package/src/control/control-status.ts +8 -3
- package/src/control-plane/ledger.ts +5 -3
- package/src/control-plane/server.ts +5 -3
- package/src/core-turn/run-core-turn.ts +1 -0
- package/src/core-turn/run-goal-loop.ts +21 -0
- package/src/core-turn/short-question.ts +5 -1
- package/src/core-turn/types.ts +3 -0
- package/src/dashboard/acp-active-model.ts +42 -1
- package/src/dashboard/background-jobs-status.ts +66 -0
- package/src/dashboard/index.ts +153 -111
- package/src/dashboard/input/agent-wake.ts +242 -0
- package/src/dashboard/input/chat-main-entry-runtime.ts +5 -0
- package/src/dashboard/input/chat-main-plain-turn-runtime.ts +3 -0
- package/src/dashboard/input/dashboard-plain-turn-stream.ts +4 -0
- package/src/dashboard/input/external-input-host.ts +23 -9
- package/src/dashboard/input/mouse-wiring.ts +108 -11
- package/src/dashboard/input/seat-autowake.ts +56 -3
- package/src/dashboard/log-click-runtime.ts +118 -2
- package/src/dashboard/seat-boot-preamble.ts +1 -1
- package/src/dashboard/slash-runtime/ask-clarification.ts +48 -0
- package/src/dashboard/slash-runtime/dashboard-delegated-slashes.ts +68 -0
- package/src/dashboard/slash-runtime/dashboard-handlers.ts +62 -322
- package/src/dashboard/slash-runtime/dashboard-log-slash.ts +208 -0
- package/src/dashboard/turn-preamble.ts +163 -41
- package/src/dashboard/turn-session-layers.ts +4 -2
- package/src/dashboard/turn-start-segments.ts +222 -0
- package/src/dashboard/turn-stream-formatter.ts +34 -1
- package/src/dashboard/turn-stream-runtime.ts +2 -0
- package/src/dashboard/turn-typeahead-prompt-zone.ts +67 -0
- package/src/display/prompt-row-owner.ts +146 -0
- package/src/display/resize-listener.ts +33 -2
- package/src/domains/guardian-tick.ts +54 -2
- package/src/domains/outbound-alert.ts +3 -2
- package/src/extractors.ts +3 -1
- package/src/fold-stack.ts +4 -2
- package/src/git-fs/index.ts +263 -36
- package/src/git-fs/retry.ts +4 -0
- package/src/git-fs/runner.ts +2 -0
- package/src/graph-runner/runner.ts +114 -44
- package/src/grok/credential.ts +5 -0
- package/src/harness/gate-reserve.ts +87 -0
- package/src/harness/harness-cli-command.ts +39 -10
- package/src/harness/harness-incidents.ts +17 -0
- package/src/harness/harness-pod-dispatch.ts +38 -1
- package/src/harness/harness-queue.ts +15 -0
- package/src/harness/harness-salvage-cli.ts +14 -2
- package/src/index.ts +198 -12
- package/src/input/external-input-queue.ts +34 -9
- package/src/intake-plane/already-built-hint.ts +89 -0
- package/src/knowhow/pack.ts +199 -0
- package/src/light-cli.ts +95 -0
- package/src/llm/route-decision.ts +36 -0
- package/src/llm/tool-loop-steered-rejection.ts +8 -0
- package/src/llm-request-shape.ts +209 -0
- package/src/llm.ts +221 -276
- package/src/loops/budget.ts +95 -0
- package/src/loops/msg-wake.ts +8 -2
- package/src/loops/orchestrator/tick.ts +24 -2
- package/src/loops/orchestrator/traffic.ts +132 -1
- package/src/maturity/feature-maturity.ts +1 -1
- package/src/mss/logging/log-store.ts +4 -5
- package/src/mss/logging/render-categories.ts +5 -0
- package/src/nexus/api/graphs-api.ts +22 -3
- package/src/nexus/api/http-server.ts +1 -1
- package/src/nexus/api/ops-api.ts +12 -0
- package/src/oauth/claude-pty-maturity.ts +66 -0
- package/src/oauth/codex-access-mirror.ts +55 -0
- package/src/oauth/fallback-chain.ts +1 -1
- package/src/onboarding/first-run.ts +5 -3
- package/src/onboarding/non-interactive.ts +64 -13
- package/src/onboarding.ts +10 -2
- package/src/ops/overview-collect.ts +36 -1
- package/src/ops/overview.ts +70 -2
- package/src/pr-tool/census.ts +41 -8
- package/src/pr-tool/inflight-registry.ts +296 -0
- package/src/prompt-library/gpt6-family-addendum.ts +14 -1
- package/src/pty-shell/herdr-agent-report.ts +442 -0
- package/src/pty-shell/pty-control-ipc.ts +5 -5
- package/src/pty-shell/pty-manifest.ts +12 -3
- package/src/pty-shell/pty-write-outcome.ts +24 -6
- package/src/pty-shell/tui-run-state.ts +151 -6
- package/src/release-loop/checklist.ts +79 -5
- package/src/release-loop/feature-store.ts +19 -2
- package/src/release-loop/placement.ts +10 -3
- package/src/release-loop/rehearsal.ts +205 -25
- package/src/release-loop/rubric.ts +16 -2
- package/src/seat-loop/traffic-signal.ts +2 -1
- package/src/self-dev/ask-launch-flow.ts +13 -0
- package/src/self-dev/draft-residue.ts +243 -24
- package/src/self-dev/draft-sweep.ts +52 -3
- package/src/self-dev/graph-journey-nodes.ts +10 -6
- package/src/self-dev/graph-journey-route.ts +60 -6
- package/src/self-dev/orchestrate.ts +79 -3
- package/src/self-dev/run-supervisor.ts +107 -12
- package/src/self-dev/run-types.ts +5 -1
- package/src/self-dev/shard-plan.ts +11 -3
- package/src/self-dev/shard-run.ts +103 -10
- package/src/self-implement/elanous-tui-spawn.ts +14 -0
- package/src/self-implement/follow-up-placement.ts +79 -0
- package/src/self-implement/gate-artifacts.ts +15 -4
- package/src/self-implement/gate-baseline.ts +145 -10
- package/src/self-implement/gate-cli.ts +7 -2
- package/src/self-implement/gate-remote.ts +35 -6
- package/src/self-implement/goal-author-identity.ts +66 -0
- package/src/self-implement/goal-author-preservation-obligation.ts +35 -0
- package/src/self-implement/goal-author.ts +4 -120
- package/src/self-implement/graph-overlay-yaml.ts +17 -2
- package/src/self-implement/graph-unit-flatten.ts +103 -0
- package/src/self-implement/graph-unit-resolver.ts +107 -0
- package/src/self-implement/graph-yaml.ts +151 -1
- package/src/self-implement/headless-elanous-driver.ts +1 -0
- package/src/self-implement/host-regate.ts +36 -4
- package/src/self-implement/knowhow-pack.ts +103 -0
- package/src/self-implement/orchestrator.ts +109 -11
- package/src/self-implement/pod-warm-pool-profile.ts +45 -0
- package/src/self-implement/review-mustfix-class.ts +203 -0
- package/src/self-implement/run-ledger.ts +16 -14
- package/src/self-implement/run-stop.ts +8 -2
- package/src/self-implement/seams.ts +32 -1
- package/src/self-implement/stop-autoheal.ts +25 -1
- package/src/session/chat.ts +27 -0
- package/src/session-runtime/index.ts +22 -267
- package/src/session-runtime/retry-policy.ts +2 -1
- package/src/shell-runner/background-surface.ts +15 -5
- package/src/skills/tools/agent.ts +39 -6
- package/src/skills/tools/list-dir.ts +11 -0
- package/src/skills/tools/schedule-wakeup.ts +457 -0
- package/src/skills/tools/shell.ts +245 -3
- package/src/status/bar.ts +26 -0
- package/src/steward/digest-delivery.ts +118 -0
- package/src/steward/hold-hygiene.ts +120 -0
- package/src/steward/release-day.ts +7 -3
- package/src/steward/triage.ts +47 -4
- package/src/surface/shell-runner-boot.ts +5 -2
- package/src/task-agent/harvest-unit.ts +141 -0
- package/src/task-agent/live-moves.ts +98 -12
- package/src/task-agent/parent-host.ts +93 -3
- package/src/task-agent/postland-card.ts +80 -1
- package/src/task-agent/rejudge-on-head.ts +112 -26
- package/src/task-agent/repair-branch-cas.ts +4 -1
- package/src/task-agent/repair-cycle.ts +16 -3
- package/src/task-agent/run-identity.ts +4 -3
- package/src/task-agent/shadow.ts +12 -2
- package/src/task-agent/task-hand.ts +76 -5
- package/src/task-agent/work-order-build.ts +22 -0
- package/src/task-orchestrator/surfaces/pod-account-broker.ts +39 -3
- package/src/task-orchestrator/surfaces/pod-command-job.ts +67 -12
- package/src/task-orchestrator/surfaces/pod-lease.ts +98 -0
- package/src/task-orchestrator/surfaces/pod-ledger-events.ts +1 -1
- package/src/task-orchestrator/surfaces/pod-lifecycle-stages.ts +86 -8
- package/src/task-orchestrator/surfaces/pod-pool.ts +76 -18
- package/src/task-orchestrator/surfaces/pod-reuse-cleanup.ts +10 -6
- package/src/task-orchestrator/surfaces/pod-source-receive.ts +54 -4
- package/src/task-orchestrator/surfaces/pod-warm-worker-pod.ts +548 -0
- package/src/task-orchestrator/surfaces/pod-warm-worker-provider.ts +389 -0
- package/src/task-orchestrator/surfaces/pod-warm-worker-runner.ts +90 -0
- package/src/task-orchestrator/surfaces/pod-warm-worker-runtime.ts +158 -3
- package/src/task-orchestrator/surfaces/self-implement-pod.ts +230 -43
- package/src/task-orchestrator/surfaces/self-implement.ts +83 -2
- package/src/tool-runtime/truncation-store.ts +4 -0
- package/src/tui/chat/execution-badge.ts +5 -1
- package/src/tui/input-lag-probe.ts +230 -0
- package/src/tui-client/dashboard-session.ts +10 -1
- package/src/tui.ts +4 -0
- package/src/user-config/coercion.ts +36 -0
- package/src/user-config.ts +18 -41
- package/src/ux-sim/scenario.ts +314 -0
- package/src/version/packed-revision.json +1 -1
- package/apps/pwa/out/_next/static/chunks/1034-8b639cee57b8e4a8.js +0 -1
- package/apps/pwa/out/_next/static/chunks/1085-6c2d35526f11f840.js +0 -1
- package/apps/pwa/out/_next/static/chunks/1220.1ff7d5cdc34b1ae5.js +0 -27
- package/apps/pwa/out/_next/static/chunks/1247.5884ec81b39fe2e7.js +0 -287
- package/apps/pwa/out/_next/static/chunks/1302.87681521a7a4661e.js +0 -62
- package/apps/pwa/out/_next/static/chunks/1324-59dae3002413623b.js +0 -1
- package/apps/pwa/out/_next/static/chunks/1343-f40b5870ac1eda5a.js +0 -1
- package/apps/pwa/out/_next/static/chunks/146-b6cd56be11dda017.js +0 -1
- package/apps/pwa/out/_next/static/chunks/1654.32de4b324981a188.js +0 -23
- package/apps/pwa/out/_next/static/chunks/1834-50625904996a8fa8.js +0 -1
- package/apps/pwa/out/_next/static/chunks/1849.1ce38efa6c527d9a.js +0 -149
- package/apps/pwa/out/_next/static/chunks/1913.7cc6fb6055b1ed3f.js +0 -41
- package/apps/pwa/out/_next/static/chunks/2001.6c7e0fd02190886c.js +0 -1
- package/apps/pwa/out/_next/static/chunks/2030.41fae98c7e907304.js +0 -1
- package/apps/pwa/out/_next/static/chunks/2099-08b2f2dfba742c9b.js +0 -1
- package/apps/pwa/out/_next/static/chunks/2134.ecee03a550ee7250.js +0 -1
- package/apps/pwa/out/_next/static/chunks/2236.66061832181cb745.js +0 -1
- package/apps/pwa/out/_next/static/chunks/2422.b0bd272e7020d7e6.js +0 -1
- package/apps/pwa/out/_next/static/chunks/3040.92ff9ffc9f971cb9.js +0 -115
- package/apps/pwa/out/_next/static/chunks/3144.6861096c7b4edef7.js +0 -64
- package/apps/pwa/out/_next/static/chunks/3267c0e6.d34854e7b3984a6e.js +0 -1
- package/apps/pwa/out/_next/static/chunks/3771.e928edf2867d28c0.js +0 -1
- package/apps/pwa/out/_next/static/chunks/3902.e1e71aaac850a045.js +0 -34
- package/apps/pwa/out/_next/static/chunks/4063-03284b5de59965f3.js +0 -1
- package/apps/pwa/out/_next/static/chunks/4111.2bfedbb233ad206b.js +0 -1
- package/apps/pwa/out/_next/static/chunks/4300-c7ec4eeabbb5f3f7.js +0 -1
- package/apps/pwa/out/_next/static/chunks/4483.646d5065199e1b55.js +0 -36
- package/apps/pwa/out/_next/static/chunks/4519.28199ff26b2fd80d.js +0 -1
- package/apps/pwa/out/_next/static/chunks/4581.ef2443578054544f.js +0 -1
- package/apps/pwa/out/_next/static/chunks/4608-8d894e9cbe4f08bf.js +0 -1
- package/apps/pwa/out/_next/static/chunks/4639.ae48a01d1bb50a93.js +0 -286
- package/apps/pwa/out/_next/static/chunks/4739.08742ac668aada67.js +0 -77
- package/apps/pwa/out/_next/static/chunks/4882-16cef71d6a1a32be.js +0 -1
- package/apps/pwa/out/_next/static/chunks/4999.c064a4000c2a9e94.js +0 -79
- package/apps/pwa/out/_next/static/chunks/5260-69f35419bca263e7.js +0 -1
- package/apps/pwa/out/_next/static/chunks/5272.b92d1b72a15c25fe.js +0 -1
- package/apps/pwa/out/_next/static/chunks/5304.04d24756f242a094.js +0 -148
- package/apps/pwa/out/_next/static/chunks/5415-997980f828667736.js +0 -1
- package/apps/pwa/out/_next/static/chunks/5458-16cd7a2b51b74c8c.js +0 -1
- package/apps/pwa/out/_next/static/chunks/5572-42c9084f27ca761e.js +0 -1
- package/apps/pwa/out/_next/static/chunks/5661-80470aac963d9f36.js +0 -1
- package/apps/pwa/out/_next/static/chunks/5723.421338408b5c30c4.js +0 -74
- package/apps/pwa/out/_next/static/chunks/5809.64c3664267c50bce.js +0 -1
- package/apps/pwa/out/_next/static/chunks/6000.64bc21ac8627f2f5.js +0 -94
- package/apps/pwa/out/_next/static/chunks/6013.39459b9c68eabf5f.js +0 -1
- package/apps/pwa/out/_next/static/chunks/607-06466dff012b03ef.js +0 -1
- package/apps/pwa/out/_next/static/chunks/60fb96c9.360b01d8d4927b7b.js +0 -1
- package/apps/pwa/out/_next/static/chunks/6192.a190b989b81e9743.js +0 -1
- package/apps/pwa/out/_next/static/chunks/6323.8672b4817a306928.js +0 -1
- package/apps/pwa/out/_next/static/chunks/6444.7d1fdcb9b09ae71c.js +0 -1
- package/apps/pwa/out/_next/static/chunks/6517.4147878ac06d584d.js +0 -90
- package/apps/pwa/out/_next/static/chunks/6532.e34302010b2f0b68.js +0 -32
- package/apps/pwa/out/_next/static/chunks/6544cb48.a87fe20ddf137be2.js +0 -1
- package/apps/pwa/out/_next/static/chunks/6546.74bc4ed82f19016d.js +0 -104
- package/apps/pwa/out/_next/static/chunks/6684-e7523ce7c2fad075.js +0 -1
- package/apps/pwa/out/_next/static/chunks/6726.ebdc82feb161431e.js +0 -1
- package/apps/pwa/out/_next/static/chunks/6739.00fb6f892e5e392b.js +0 -1
- package/apps/pwa/out/_next/static/chunks/6745.934c4921bf15513a.js +0 -1
- package/apps/pwa/out/_next/static/chunks/6767.ea607cf0c20a25af.js +0 -24
- package/apps/pwa/out/_next/static/chunks/6843.67bfd020da0926c5.js +0 -93
- package/apps/pwa/out/_next/static/chunks/6948.1062d4594652b5bf.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7138-eaf841fc1dc03463.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7174-cda29ee13d7790e7.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7304-3c07583f4e405f4f.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7371.80c05c653b08e907.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7391.ebae168025c91b6a.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7557.e325503a090a4310.js +0 -8
- package/apps/pwa/out/_next/static/chunks/7569-9ce9432c7f10989f.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7886-55854585fadeded1.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7947-d0759430f8042240.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8018.a32663f04a6fc5f9.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8097-92f87bd108322f66.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8215-1661812b6e9ad71f.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8260-19c921a51ca8ec3e.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8440.3a5cf5c85aa76db8.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8519-4599be2249161e68.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8547.b028b90c5c01ace6.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8587-cbe02a953a7f4990.js +0 -1
- package/apps/pwa/out/_next/static/chunks/877-2b977259c4b15655.js +0 -1
- package/apps/pwa/out/_next/static/chunks/9019-0a4b40c50c7314fb.js +0 -1
- package/apps/pwa/out/_next/static/chunks/9138.b6e80031afb1d973.js +0 -1
- package/apps/pwa/out/_next/static/chunks/9188-d36e4fc869ddc166.js +0 -1
- package/apps/pwa/out/_next/static/chunks/9230.44f5039e796e4ab4.js +0 -1
- package/apps/pwa/out/_next/static/chunks/9279-d28c5b7754d010ae.js +0 -1
- package/apps/pwa/out/_next/static/chunks/939.336acce73e98482c.js +0 -1
- package/apps/pwa/out/_next/static/chunks/9610.c07cce4bfcc14ed7.js +0 -1
- package/apps/pwa/out/_next/static/chunks/9667-ce78c2ce91050ff9.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/_not-found/page-339fabb3499da0e1.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/approvals/page-bf3634a117322df7.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/autopilot/page-3535a4a69f1fafaa.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/board/page-b9f51447f757fbf2.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/botlab/page-2ebb8fd59b9461f9.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/bots/page-a2fc4e49a4fa4ba8.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/ceo/page-5a503541353e60a8.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/chat/page-6025101384e361a5.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/consult/page-f4b630cc8b5273cd.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/control/page-a645f00a06483e9a.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/decisions/page-61ac22cbab1ee4ec.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/design-check/page-e9bab7413b028b28.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/editor/page-c992eafe028b642e.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/exec/page-e547e6ce55f1fb33.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/field/page-d27e1b9850fd54bf.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/healthz/route-339fabb3499da0e1.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/inside/page-805ac2e137b7a121.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/intake/page-0fec29c7ba01894b.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/layout-339a07410cd6f36b.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/live/page-349f2752d8cd37ad.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/live-run/page-d5c6dcf31c25cecc.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/loops/page-2fd93ed8c9f16580.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/market/page-9b564dbff0fefc35.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/missions/[id]/page-62f4475d3c38fb9b.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/morning/page-814ba51385225776.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/not-found-397d479626e5a459.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/observatory/page-af1bba4e3251b728.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/ops/checklist/page-3ad3be5e7d3fdce9.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/ops/release/page-f219ccdbc0bf27df.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/ops/seats/page-4da93ad35d4a8d28.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/outputs/page-456666766e5ce6fc.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/page-7404e377e8adb8c5.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/reflection/page-14456240ed2a36ad.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/scheduler/page-3a658d5fa6d16a25.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/sessions/page-0157de6e85f8bb6b.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/settings/page-841d73d4ac44ed49.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/setup/done/page-6f43a3d1146e6377.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/setup/layout-339fabb3499da0e1.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/setup/page-521ee23ac8c0abfa.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/share/page-a9992ee285efaa83.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/showroom/page-3d48e85fa89ec04f.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/tasks/page-d2ced71132fac9b2.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/term/page-f08358bdf251adb9.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/today/page-233c71cd5f68f0d7.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/trace/page-70151d78de2f375e.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/vault/page-dcac33a3e2cb72c0.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-149dc1caba411bb9.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/workflows/page-0448145ccd5c45c1.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/workspace/page-9cb0c444903da65d.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/worktrees/page-17e504c396e0e389.js +0 -1
- package/apps/pwa/out/_next/static/chunks/e5012ffe.f727e23c231f4342.js +0 -122
- package/apps/pwa/out/_next/static/chunks/ea695e3c-1f1d70d740cf3031.js +0 -1
- package/apps/pwa/out/_next/static/chunks/framework-906af9bd029e166c.js +0 -1
- package/apps/pwa/out/_next/static/chunks/main-a24847f9f684d469.js +0 -1
- package/apps/pwa/out/_next/static/chunks/main-app-7bdcd8aa7c8397d3.js +0 -1
- package/apps/pwa/out/_next/static/chunks/pages/_app-6ba46a5066fc226d.js +0 -1
- package/apps/pwa/out/_next/static/chunks/pages/_error-a8dc6d07591f2a25.js +0 -1
- package/apps/pwa/out/_next/static/chunks/webpack-f13df28c15c55eee.js +0 -1
- package/apps/pwa/out/_next/static/css/3f5fc6f96e2cf7b2.css +0 -1
- package/src/cli/g6a-registration-probe.ts +0 -16
- /package/apps/pwa/out/_next/static/{LSXfY0u9QtfDbejY0Ukf_ → L04y73dlwKeTW-GetaTF3}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
import { closeSync, constants, lstatSync, mkdirSync, mkdtempSync, openSync, readFileSync, realpathSync, renameSync, rmSync, unlinkSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { tmpdir } from 'node:os';
|
|
3
|
+
import { extname, join, relative, resolve, sep } from 'node:path';
|
|
4
|
+
import { fileURLToPath } from 'node:url';
|
|
5
|
+
import { createHash, randomUUID } from 'node:crypto';
|
|
6
|
+
import { parse as parseYaml } from 'yaml';
|
|
7
|
+
import { debug } from '../debug/log.js';
|
|
8
|
+
import { streamCodexResponsesEvents } from '../llm.js';
|
|
9
|
+
import { LogStore, StoreSink, type LogStoreRow } from '../mss/logging/log-store.js';
|
|
10
|
+
import { getTestStateRoot } from '../nexus/paths.js';
|
|
11
|
+
import { simRenderLogFrame } from './render-frame.js';
|
|
12
|
+
|
|
13
|
+
export interface ScenarioV0 {
|
|
14
|
+
version: 0;
|
|
15
|
+
id: string;
|
|
16
|
+
isolation: 'test';
|
|
17
|
+
seed: number;
|
|
18
|
+
triggers: [{ id: string; type: 'codex.responses.fetch' | 'codex.responses.fetch-network-error'; status?: number; count?: number }];
|
|
19
|
+
expect: {
|
|
20
|
+
screen: { mode: 'widget'; snapshot: { contains: string[]; excludes?: string[] } };
|
|
21
|
+
logs: [{ category: string; event: string; level: string; count?: number; data?: Record<string, unknown> }];
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export interface ScenarioResult {
|
|
26
|
+
id: string;
|
|
27
|
+
seed: number;
|
|
28
|
+
evidenceArtifact: string;
|
|
29
|
+
pass: boolean;
|
|
30
|
+
trigger: { id: string; type: string; status: number | null; expectedCount: number; fetchCount: number; error: string | null };
|
|
31
|
+
screen: { pass: boolean; containsMissing: string[]; excludesFound: string[]; snapshot: string };
|
|
32
|
+
logs: { pass: boolean; category: string; event: string; level: string | null; expectedLevel: string; levelMismatch: boolean; expectedCount: number; observedCount: number; matchedData: Record<string, unknown>; evidenceLine: string; dataMismatch: string[] };
|
|
33
|
+
failureReasons: string[];
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
let previousScenarioTurn: Promise<void> = Promise.resolve();
|
|
37
|
+
const REPOSITORY_ROOT = fileURLToPath(new URL('../..', import.meta.url));
|
|
38
|
+
|
|
39
|
+
function record(value: unknown, where: string): Record<string, unknown> {
|
|
40
|
+
if (!value || typeof value !== 'object' || Array.isArray(value)) throw new Error(`${where} must be an object`);
|
|
41
|
+
return value as Record<string, unknown>;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function exactKeys(value: Record<string, unknown>, allowed: readonly string[], where: string): void {
|
|
45
|
+
const extra = Object.keys(value).filter((key) => !allowed.includes(key));
|
|
46
|
+
if (extra.length) throw new Error(`${where} has unsupported key(s): ${extra.join(', ')}`);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function requiredString(value: unknown, where: string): string {
|
|
50
|
+
if (typeof value !== 'string' || value.trim() === '') throw new Error(`${where} must be a non-empty string`);
|
|
51
|
+
return value;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export function parseScenarioV0(source: string): ScenarioV0 {
|
|
55
|
+
const value = record(parseYaml(source), 'scenario');
|
|
56
|
+
exactKeys(value, ['version', 'id', 'isolation', 'seed', 'triggers', 'expect'], 'scenario');
|
|
57
|
+
if (value.version !== 0) throw new Error('scenario.version must be 0');
|
|
58
|
+
const id = requiredString(value.id, 'scenario.id');
|
|
59
|
+
if (!/^[a-z0-9][a-z0-9-]{0,63}$/.test(id)) throw new Error('scenario.id must be lowercase letters, digits, and hyphens');
|
|
60
|
+
if (value.isolation !== 'test') throw new Error('scenario.isolation must be test');
|
|
61
|
+
if (!Number.isInteger(value.seed) || (value.seed as number) < 0 || (value.seed as number) > 0xffffffff) throw new Error('scenario.seed must be an unsigned 32-bit integer');
|
|
62
|
+
|
|
63
|
+
if (!Array.isArray(value.triggers) || value.triggers.length !== 1) throw new Error('scenario.triggers must contain exactly one registered trigger');
|
|
64
|
+
const trigger = record(value.triggers[0], 'scenario.triggers[0]');
|
|
65
|
+
exactKeys(trigger, ['id', 'type', 'status', 'count'], 'scenario.triggers[0]');
|
|
66
|
+
const triggerId = requiredString(trigger.id, 'scenario.triggers[0].id');
|
|
67
|
+
if (trigger.type !== 'codex.responses.fetch' && trigger.type !== 'codex.responses.fetch-network-error') throw new Error(`unregistered scenario trigger: ${String(trigger.type)}`);
|
|
68
|
+
if (trigger.type === 'codex.responses.fetch' && (!Number.isInteger(trigger.status) || (trigger.status as number) < 400 || (trigger.status as number) > 499)) throw new Error('codex.responses.fetch.status must be an HTTP 4xx status');
|
|
69
|
+
if (trigger.type === 'codex.responses.fetch-network-error' && trigger.status !== undefined) throw new Error('codex.responses.fetch-network-error does not accept status');
|
|
70
|
+
if (trigger.count !== undefined && (!Number.isInteger(trigger.count) || (trigger.count as number) < 1)) throw new Error('codex.responses.fetch.count must be a positive integer');
|
|
71
|
+
|
|
72
|
+
const expect = record(value.expect, 'scenario.expect');
|
|
73
|
+
exactKeys(expect, ['screen', 'logs'], 'scenario.expect');
|
|
74
|
+
const screen = record(expect.screen, 'scenario.expect.screen');
|
|
75
|
+
exactKeys(screen, ['mode', 'snapshot'], 'scenario.expect.screen');
|
|
76
|
+
if (screen.mode !== 'widget') throw new Error('scenario.expect.screen.mode must be widget');
|
|
77
|
+
const snapshot = record(screen.snapshot, 'scenario.expect.screen.snapshot');
|
|
78
|
+
exactKeys(snapshot, ['contains', 'excludes'], 'scenario.expect.screen.snapshot');
|
|
79
|
+
if (!Array.isArray(snapshot.contains) || snapshot.contains.length === 0 || snapshot.contains.some((s) => typeof s !== 'string' || s.length === 0)) {
|
|
80
|
+
throw new Error('scenario.expect.screen.snapshot.contains must contain at least one non-empty string');
|
|
81
|
+
}
|
|
82
|
+
if (snapshot.excludes !== undefined && (!Array.isArray(snapshot.excludes) || snapshot.excludes.some((s) => typeof s !== 'string'))) {
|
|
83
|
+
throw new Error('scenario.expect.screen.snapshot.excludes must be an array of strings');
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
if (!Array.isArray(expect.logs) || expect.logs.length !== 1) throw new Error('scenario.expect.logs must contain exactly one expected event');
|
|
87
|
+
const expectedLog = record(expect.logs[0], 'scenario.expect.logs[0]');
|
|
88
|
+
exactKeys(expectedLog, ['category', 'event', 'level', 'count', 'data'], 'scenario.expect.logs[0]');
|
|
89
|
+
const category = requiredString(expectedLog.category, 'scenario.expect.logs[0].category');
|
|
90
|
+
const event = requiredString(expectedLog.event, 'scenario.expect.logs[0].event');
|
|
91
|
+
const level = requiredString(expectedLog.level, 'scenario.expect.logs[0].level');
|
|
92
|
+
if (expectedLog.count !== undefined && (!Number.isInteger(expectedLog.count) || (expectedLog.count as number) < 0)) throw new Error('scenario.expect.logs[0].count must be a non-negative integer');
|
|
93
|
+
if (expectedLog.count === 0 && trigger.type !== 'codex.responses.fetch-network-error') throw new Error('zero expected log events are allowed only for codex.responses.fetch-network-error');
|
|
94
|
+
if (expectedLog.data !== undefined) record(expectedLog.data, 'scenario.expect.logs[0].data');
|
|
95
|
+
|
|
96
|
+
return {
|
|
97
|
+
version: 0,
|
|
98
|
+
id,
|
|
99
|
+
isolation: 'test',
|
|
100
|
+
seed: value.seed as number,
|
|
101
|
+
triggers: [{ id: triggerId, type: trigger.type, ...(trigger.status !== undefined ? { status: trigger.status as number } : {}), ...(trigger.count !== undefined ? { count: trigger.count as number } : {}) }],
|
|
102
|
+
expect: {
|
|
103
|
+
screen: {
|
|
104
|
+
mode: 'widget',
|
|
105
|
+
snapshot: { contains: snapshot.contains as string[], ...(snapshot.excludes ? { excludes: snapshot.excludes as string[] } : {}) },
|
|
106
|
+
},
|
|
107
|
+
logs: [{ category, event, level, ...(expectedLog.count !== undefined ? { count: expectedLog.count as number } : {}), ...(expectedLog.data ? { data: expectedLog.data as Record<string, unknown> } : {}) }],
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
function matchesSubset(actual: unknown, expected: Record<string, unknown>, path = 'data'): string[] {
|
|
113
|
+
let parsed = actual;
|
|
114
|
+
if (typeof parsed === 'string') {
|
|
115
|
+
try { parsed = JSON.parse(parsed); } catch { return [`${path}: stored data is not JSON`]; }
|
|
116
|
+
}
|
|
117
|
+
if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) return [`${path}: expected object data`];
|
|
118
|
+
const actualRecord = parsed as Record<string, unknown>;
|
|
119
|
+
return Object.entries(expected).flatMap(([key, value]) => {
|
|
120
|
+
if (!(key in actualRecord)) return [`${path}.${key}: missing`];
|
|
121
|
+
if (value && typeof value === 'object' && !Array.isArray(value)) return matchesSubset(actualRecord[key], value as Record<string, unknown>, `${path}.${key}`);
|
|
122
|
+
return JSON.stringify(actualRecord[key]) === JSON.stringify(value) ? [] : [`${path}.${key}: expected ${JSON.stringify(value)}, observed ${JSON.stringify(actualRecord[key])}`];
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
function projectSubset(actual: unknown, expected: Record<string, unknown>): Record<string, unknown> {
|
|
127
|
+
let parsed = actual;
|
|
128
|
+
if (typeof parsed === 'string') {
|
|
129
|
+
try { parsed = JSON.parse(parsed); } catch { return {}; }
|
|
130
|
+
}
|
|
131
|
+
if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) return {};
|
|
132
|
+
const actualRecord = parsed as Record<string, unknown>;
|
|
133
|
+
const selected: Record<string, unknown> = {};
|
|
134
|
+
for (const [key, expectedValue] of Object.entries(expected)) {
|
|
135
|
+
if (!(key in actualRecord)) continue;
|
|
136
|
+
const actualValue = actualRecord[key];
|
|
137
|
+
selected[key] = expectedValue && typeof expectedValue === 'object' && !Array.isArray(expectedValue)
|
|
138
|
+
? projectSubset(actualValue, expectedValue as Record<string, unknown>)
|
|
139
|
+
: actualValue;
|
|
140
|
+
}
|
|
141
|
+
return selected;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
function rowData(row: LogStoreRow): unknown {
|
|
145
|
+
return row.data;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
function assertNoSymlinkComponents(path: string): void {
|
|
149
|
+
const absolute = resolve(path);
|
|
150
|
+
let cursor: string = sep;
|
|
151
|
+
for (const component of absolute.split(sep).filter(Boolean)) {
|
|
152
|
+
cursor = join(cursor, component);
|
|
153
|
+
try {
|
|
154
|
+
if (lstatSync(cursor).isSymbolicLink()) throw new Error('scenario evidence path cannot contain symlinks');
|
|
155
|
+
} catch (error) {
|
|
156
|
+
if (error instanceof Error && error.message === 'scenario evidence path cannot contain symlinks') throw error;
|
|
157
|
+
if ((error as NodeJS.ErrnoException).code !== 'ENOENT') throw error;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
export function resolveScenarioFilePath(filePath: string, repositoryRoot = REPOSITORY_ROOT): string {
|
|
163
|
+
const realRepositoryRoot = realpathSync(repositoryRoot);
|
|
164
|
+
const scenarioRoot = resolve(realRepositoryRoot, 'scenarios');
|
|
165
|
+
const fullPath = resolve(realRepositoryRoot, filePath);
|
|
166
|
+
const rel = relative(scenarioRoot, fullPath);
|
|
167
|
+
if (!rel || rel === '..' || rel.startsWith(`..${sep}`) || resolve(scenarioRoot, rel) !== fullPath) throw new Error('scenario file must be inside the repository scenarios/ directory');
|
|
168
|
+
if (!['.yaml', '.yml', '.json'].includes(extname(fullPath).toLowerCase())) throw new Error('scenario file must use .yaml, .yml, or .json');
|
|
169
|
+
const realScenarioRoot = realpathSync(scenarioRoot);
|
|
170
|
+
if (realScenarioRoot !== scenarioRoot) throw new Error('scenario file must be inside the repository scenarios/ directory');
|
|
171
|
+
const realScenarioPath = realpathSync(fullPath);
|
|
172
|
+
const realRel = relative(realScenarioRoot, realScenarioPath);
|
|
173
|
+
if (!realRel || realRel === '..' || realRel.startsWith(`..${sep}`)) throw new Error('scenario file must be inside the repository scenarios/ directory');
|
|
174
|
+
if (realRel.split(sep).some((part) => part.startsWith('.'))) throw new Error('hidden scenario files cannot be run');
|
|
175
|
+
return realScenarioPath;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/** Execute the one registered scenario trigger. Only the provider network boundary is faked. */
|
|
179
|
+
export async function runScenarioV0(scenario: ScenarioV0): Promise<ScenarioResult> {
|
|
180
|
+
if (!getTestStateRoot()) throw new Error('scenario runner requires --test isolated mode');
|
|
181
|
+
scenario = parseScenarioV0(JSON.stringify(scenario));
|
|
182
|
+
const turn = previousScenarioTurn;
|
|
183
|
+
let release!: () => void;
|
|
184
|
+
previousScenarioTurn = new Promise<void>((resolveTurn) => { release = resolveTurn; });
|
|
185
|
+
await turn;
|
|
186
|
+
try {
|
|
187
|
+
return await runScenarioV0Exclusive(scenario);
|
|
188
|
+
} finally {
|
|
189
|
+
release();
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
async function runScenarioV0Exclusive(scenario: ScenarioV0): Promise<ScenarioResult> {
|
|
194
|
+
const root = mkdtempSync(join(tmpdir(), `ux-sim-${scenario.id}-`));
|
|
195
|
+
const store = new LogStore(join(root, 'logs.db'), { instance: `ux-sim:${scenario.id}` });
|
|
196
|
+
const sink = new StoreSink(store, `ux-sim:${scenario.id}`, { installExitHandlers: false });
|
|
197
|
+
const off = debug.registerSink(sink);
|
|
198
|
+
const originalFetch = globalThis.fetch;
|
|
199
|
+
const trigger = scenario.triggers[0];
|
|
200
|
+
let errorMessage: string | null = null;
|
|
201
|
+
let fetchCount = 0;
|
|
202
|
+
globalThis.fetch = (async (input: RequestInfo | URL) => {
|
|
203
|
+
fetchCount++;
|
|
204
|
+
if (String(input) !== 'https://chatgpt.com/backend-api/codex/responses') throw new Error('scenario fake fetch received an unregistered URL');
|
|
205
|
+
if (trigger.type === 'codex.responses.fetch-network-error') throw new Error(`scenario network error seed=${scenario.seed}`);
|
|
206
|
+
return new Response('{"detail":"Bad Request"}', { status: trigger.status!, headers: { 'content-type': 'application/json' } });
|
|
207
|
+
}) as unknown as typeof fetch;
|
|
208
|
+
|
|
209
|
+
try {
|
|
210
|
+
try {
|
|
211
|
+
for await (const _event of streamCodexResponsesEvents('https://chatgpt.com/backend-api/codex/responses', 'scenario-fake-token', {
|
|
212
|
+
model: 'gpt-6-sol',
|
|
213
|
+
instructions: 'scenario test request',
|
|
214
|
+
input: [{ role: 'user', content: [{ type: 'input_text', text: `scenario test input seed=${scenario.seed}` }] }],
|
|
215
|
+
tools: [{ type: 'function', name: 'RunShell', description: 'test tool', parameters: {} }],
|
|
216
|
+
}, undefined, { promptCache: false })) { /* consume the deterministic fake response */ }
|
|
217
|
+
} catch (error) {
|
|
218
|
+
errorMessage = error instanceof Error ? error.message : String(error);
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
const screenText = simRenderLogFrame({ phase: 'idle', lines: errorMessage ? [errorMessage] : [] }, { width: 100, height: 12 }).text;
|
|
222
|
+
const containsMissing = scenario.expect.screen.snapshot.contains.filter((fragment) => !screenText.includes(fragment));
|
|
223
|
+
const excludesFound = (scenario.expect.screen.snapshot.excludes ?? []).filter((fragment) => screenText.includes(fragment));
|
|
224
|
+
|
|
225
|
+
sink.flush();
|
|
226
|
+
const expected = scenario.expect.logs[0];
|
|
227
|
+
const rows = store.query({ exactCategories: [expected.category], events: [expected.event], limit: 1000 });
|
|
228
|
+
const expectedCount = expected.count ?? 1;
|
|
229
|
+
const levelMismatch = rows.some((row) => row.level !== expected.level);
|
|
230
|
+
const dataMismatch = expected.data ? rows.flatMap((row) => matchesSubset(rowData(row), expected.data!)) : [];
|
|
231
|
+
const logPass = rows.length === expectedCount && !levelMismatch && dataMismatch.length === 0;
|
|
232
|
+
const screenPass = containsMissing.length === 0 && excludesFound.length === 0;
|
|
233
|
+
const failureReasons: string[] = [];
|
|
234
|
+
const expectedTriggerCount = trigger.count ?? 1;
|
|
235
|
+
if (fetchCount !== expectedTriggerCount) failureReasons.push(`trigger-count-mismatch:expected-${expectedTriggerCount}-observed-${fetchCount}`);
|
|
236
|
+
if (errorMessage === null) failureReasons.push('provider-error-not-observed');
|
|
237
|
+
if (!screenPass) failureReasons.push('screen-snapshot-mismatch');
|
|
238
|
+
if (rows.length === 0 && expectedCount > 0) failureReasons.push('expected-log-event-absent');
|
|
239
|
+
else if (rows.length !== expectedCount) failureReasons.push(`log-event-count-mismatch:expected-${expectedCount}-observed-${rows.length}`);
|
|
240
|
+
if (levelMismatch) failureReasons.push(`log-level-mismatch:expected-${expected.level}-observed-${rows[0]?.level ?? 'none'}`);
|
|
241
|
+
if (dataMismatch.length) failureReasons.push('log-data-mismatch');
|
|
242
|
+
|
|
243
|
+
const result: ScenarioResult = {
|
|
244
|
+
id: scenario.id,
|
|
245
|
+
seed: scenario.seed,
|
|
246
|
+
evidenceArtifact: '',
|
|
247
|
+
pass: failureReasons.length === 0,
|
|
248
|
+
trigger: { id: trigger.id, type: trigger.type, status: trigger.status ?? null, expectedCount: expectedTriggerCount, fetchCount, error: errorMessage },
|
|
249
|
+
screen: { pass: screenPass, containsMissing, excludesFound, snapshot: screenText },
|
|
250
|
+
logs: {
|
|
251
|
+
pass: logPass,
|
|
252
|
+
category: expected.category,
|
|
253
|
+
event: expected.event,
|
|
254
|
+
level: rows[0]?.level ?? null,
|
|
255
|
+
expectedLevel: expected.level,
|
|
256
|
+
levelMismatch,
|
|
257
|
+
expectedCount,
|
|
258
|
+
observedCount: rows.length,
|
|
259
|
+
matchedData: rows[0] && expected.data ? projectSubset(rowData(rows[0]), expected.data) : {},
|
|
260
|
+
evidenceLine: JSON.stringify({ category: expected.category, event: expected.event, level: rows[0]?.level ?? null, count: rows.length, data: rows[0] && expected.data ? projectSubset(rowData(rows[0]), expected.data) : {} }),
|
|
261
|
+
dataMismatch,
|
|
262
|
+
},
|
|
263
|
+
failureReasons,
|
|
264
|
+
};
|
|
265
|
+
const stateRoot = getTestStateRoot()!;
|
|
266
|
+
const uxSimDir = join(stateRoot, 'ux-sim');
|
|
267
|
+
const evidenceDir = join(uxSimDir, 'evidence');
|
|
268
|
+
assertNoSymlinkComponents(evidenceDir);
|
|
269
|
+
mkdirSync(uxSimDir, { recursive: true });
|
|
270
|
+
if (!lstatSync(uxSimDir).isDirectory()) throw new Error('scenario evidence directory must stay inside test state');
|
|
271
|
+
mkdirSync(evidenceDir, { recursive: true });
|
|
272
|
+
assertNoSymlinkComponents(evidenceDir);
|
|
273
|
+
if (!lstatSync(evidenceDir).isDirectory()) throw new Error('scenario evidence directory must stay inside test state');
|
|
274
|
+
const evidenceArtifact = join(evidenceDir, `${scenario.id}-seed-${scenario.seed}.json`);
|
|
275
|
+
result.evidenceArtifact = evidenceArtifact;
|
|
276
|
+
const artifact = {
|
|
277
|
+
version: 0,
|
|
278
|
+
id: scenario.id,
|
|
279
|
+
seed: scenario.seed,
|
|
280
|
+
pass: result.pass,
|
|
281
|
+
trigger: { type: result.trigger.type, ...(result.trigger.status !== null ? { status: result.trigger.status } : {}), expectedCount: result.trigger.expectedCount, fetchCount: result.trigger.fetchCount, errorObserved: result.trigger.error !== null },
|
|
282
|
+
screen: { pass: result.screen.pass, snapshotSha256: createHash('sha256').update(result.screen.snapshot).digest('hex'), containsMissingCount: result.screen.containsMissing.length, excludesFoundCount: result.screen.excludesFound.length },
|
|
283
|
+
logs: { pass: result.logs.pass, expectedCount: result.logs.expectedCount, observedCount: result.logs.observedCount, levelMismatch: result.logs.levelMismatch, dataMismatchCount: result.logs.dataMismatch.length },
|
|
284
|
+
failureReasonCount: result.failureReasons.length,
|
|
285
|
+
};
|
|
286
|
+
const tempArtifact = join(evidenceDir, `.${scenario.id}-${randomUUID()}.tmp`);
|
|
287
|
+
const fd = openSync(tempArtifact, constants.O_CREAT | constants.O_EXCL | constants.O_WRONLY | constants.O_NOFOLLOW, 0o600);
|
|
288
|
+
try {
|
|
289
|
+
writeFileSync(fd, `${JSON.stringify(artifact, null, 2)}\n`);
|
|
290
|
+
closeSync(fd);
|
|
291
|
+
assertNoSymlinkComponents(evidenceDir);
|
|
292
|
+
renameSync(tempArtifact, evidenceArtifact);
|
|
293
|
+
} catch (error) {
|
|
294
|
+
try { closeSync(fd); } catch { /* already closed */ }
|
|
295
|
+
try { unlinkSync(tempArtifact); } catch { /* absent after successful rename */ }
|
|
296
|
+
throw error;
|
|
297
|
+
}
|
|
298
|
+
return result;
|
|
299
|
+
} finally {
|
|
300
|
+
globalThis.fetch = originalFetch;
|
|
301
|
+
off();
|
|
302
|
+
sink.close();
|
|
303
|
+
store.close();
|
|
304
|
+
rmSync(root, { recursive: true, force: true });
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
export async function runScenarioFile(filePath: string): Promise<ScenarioResult> {
|
|
309
|
+
if (!getTestStateRoot()) throw new Error('scenario runner requires --test isolated mode');
|
|
310
|
+
const realScenarioPath = resolveScenarioFilePath(filePath);
|
|
311
|
+
const source = readFileSync(realScenarioPath, 'utf8');
|
|
312
|
+
const scenario = parseScenarioV0(source);
|
|
313
|
+
return runScenarioV0(scenario);
|
|
314
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"commit":"
|
|
1
|
+
{"commit":"85a9c654bee71beba68872b073070caaf08e8b99"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1034],{1034:(e,t,s)=>{s.d(t,{B:()=>T});var n=s(65863),a=s(24815),r=s(45695),l=s(38614);class i{buildSnapshot(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:80;return this.client.fetchJson("/v1/builds/".concat(encodeURIComponent(e),"?tail=").concat(t))}list(){return this.client.fetchJson("/v1/tasks")}detail(e){return this.client.fetchJson("/v1/tasks/".concat(encodeURIComponent(e)))}constructor(e){this.client=e}}var d=s(27078),o=s(16263),c=s(72940),u=s(91611);class m extends Error{constructor(e,t,s){super("fluent-chain ".concat(e," on ").concat(t)),this.status=e,this.path=t,this.body=s,this.name="FluentChainApiError"}}function x(e){var t;let s=e.baseUrl.replace(/\/+$/,""),n=null!=(t=e.fetchImpl)?t:fetch,a="/v1/next-fluent/preview";return{async preview(t){let r={"content-type":"application/json"};e.authHeader&&(r.authorization=e.authHeader);let l=await n("".concat(s).concat(a),{method:"POST",headers:r,body:JSON.stringify(t)});if(204===l.status)return{kind:"no-suggestions",enabled:!0};let i=await l.json().catch(()=>null);if(409===l.status){let e=!!i&&"object"==typeof i&&"enabled"in i&&!!i.enabled;return e?{kind:"no-suggestions",enabled:e}:{kind:"disabled"}}if(503===l.status&&i&&"object"==typeof i&&"next-fluent-not-wired"===i.error)return{kind:"disabled"};if(!l.ok||!(null==i?void 0:i.card))throw new m(l.status,a,i);return{kind:"card",card:i.card}},async dispatch(t,a){let r={"content-type":"application/json"};e.authHeader&&(r.authorization=e.authHeader);let l=u.m,i=await n("".concat(s).concat(l),{method:"POST",headers:r,body:JSON.stringify({refId:t,action:a})}),d=await i.json().catch(()=>null);return d&&"object"==typeof d&&"ok"in d?d:{ok:!1,error:"dispatch ".concat(i.status)}}}}function p(e){var t;let[s,r]=(0,a.useState)({kind:"loading"});if((0,a.useEffect)(()=>{var t;let s=!1;return(null!=(t=e.api)?t:x({baseUrl:window.location.origin})).preview(e.trigger).then(e=>{s||("card"===e.kind?r({kind:"card",card:e.card}):"no-suggestions"===e.kind?r({kind:"empty"}):r({kind:"disabled"}))}).catch(e=>{s||r({kind:"error",message:e instanceof Error?e.message:String(e)})}),()=>{s=!0}},[e.api,e.trigger.refId,e.trigger.refKind,e.trigger.outcome,e.trigger.completedAt]),"loading"===s.kind)return(0,n.jsx)("span",{className:"text-xs opacity-60",children:"checking next-action…"});if("disabled"===s.kind||"empty"===s.kind)return null;if("error"===s.kind)return(0,n.jsxs)("span",{className:"text-xs text-rose-700",children:["next-action: ",s.message]});let l=null!=(t=e.limit)?t:3,i=s.card.suggestions.slice(0,l);return 0===i.length?null:(0,n.jsxs)("div",{className:"flex flex-wrap items-center gap-1 text-xs","data-fluent-ref":e.trigger.refId,children:[(0,n.jsx)("span",{className:"opacity-60",children:"next:"}),i.map(t=>(0,n.jsxs)("button",{type:"button",className:"rounded-full border border-zinc-300 bg-white px-2 py-0.5 hover:bg-zinc-50",onClick:()=>{var s;return null==(s=e.onChoose)?void 0:s.call(e,t.kind,t)},title:t.reason||t.kind,children:[t.kind,"none"!==t.endorsedBy&&(0,n.jsxs)("span",{className:"ml-1 text-[10px] opacity-60",children:["\xb7 ",t.endorsedBy]})]},t.kind))]})}class h extends Error{constructor(e,t,s){super("idle-nudge ".concat(e," on ").concat(t)),this.status=e,this.path=t,this.body=s,this.name="IdleNudgeApiError"}}function g(e){let[t,s]=(0,a.useState)({kind:"loading"});if((0,a.useEffect)(()=>{var t;let n=!1;return(null!=(t=e.api)?t:function(e){var t;let s=e.baseUrl.replace(/\/+$/,""),n=null!=(t=e.fetchImpl)?t:fetch,a=u.J3;return{async preview(t){let r={"content-type":"application/json"};e.authHeader&&(r.authorization=e.authHeader);let l=await n("".concat(s).concat(a),{method:"POST",headers:r,body:JSON.stringify(t)}),i=await l.json().catch(()=>null);if(!l.ok)throw new h(l.status,a,i);return i}}}({baseUrl:window.location.origin})).preview(e.request).then(e=>{n||("nudge"===e.decision.kind&&e.record?s({kind:"nudge",decision:e.decision,record:e.record}):"defer"===e.decision.kind?s({kind:"defer",nextAt:e.decision.nextEligibleAt}):s({kind:"idle"}))}).catch(e=>{n||s({kind:"error",message:e instanceof h?"Idle-nudge error (".concat(e.status,")"):e instanceof Error?e.message:String(e)})}),()=>{n=!0}},[e.api,e.request.taskId,e.request.observedAt,e.request.status,e.request.enteredStatusAt]),"loading"===t.kind||"idle"===t.kind)return null;if("defer"===t.kind)return(0,n.jsxs)("span",{className:"text-[10px] opacity-60",children:["nudge deferred until ",new Date(t.nextAt).toLocaleTimeString()]});if("error"===t.kind)return(0,n.jsx)("span",{className:"text-[10px] text-rose-700",children:t.message});let r=Math.round(t.decision.idleMs/36e5);return(0,n.jsxs)("button",{type:"button",className:"inline-flex items-center gap-1 rounded-full border border-amber-300 bg-amber-50 px-2 py-0.5 text-[11px] text-amber-900 hover:bg-amber-100",onClick:()=>{var s;return null==(s=e.onOpenShowroom)?void 0:s.call(e,t.record.showroomSessionId)},title:"Idle ".concat(r,"h \xb7 click to open nudge room"),"data-task-id":t.record.taskId,children:[(0,n.jsx)("span",{"aria-hidden":!0,children:"⏳"}),"idle ",r,"h \xb7 ",t.record.lanes.length," lanes"]})}var f=s(31256);let b=(0,a.createContext)(null),v=new Set(["ready","running","review","blocked"]),y=new Set(["done","failed"]),k=[{id:"backlog",label:"Backlog",statuses:["backlog","blocked"]},{id:"scheduled",label:"Scheduled",statuses:["scheduled"]},{id:"ready",label:"Ready",statuses:["ready"]},{id:"running",label:"Running",statuses:["running"]},{id:"review",label:"Review",statuses:["review"]},{id:"closed",label:"Closed",statuses:["done","failed","cancelled","superseded"]}],j={urgent:"bg-red-500/15 text-red-300 ring-red-500/30",high:"bg-amber-500/15 text-amber-200 ring-amber-500/30",medium:"bg-sky-500/15 text-sky-200 ring-sky-500/30",low:"bg-muted text-muted-foreground ring-border"},N={pending:"bg-slate-500/15 text-slate-300 ring-slate-500/30",active:"bg-sky-500/15 text-sky-200 ring-sky-500/30",verifying:"bg-amber-500/15 text-amber-200 ring-amber-500/30",done:"bg-emerald-500/15 text-emerald-300 ring-emerald-500/30",failed:"bg-red-500/15 text-red-300 ring-red-500/30"};function w(e){let t=Math.max(0,Math.floor((Date.now()-e)/1e3));if(t<60)return"".concat(t,"s ago");let s=Math.floor(t/60);if(s<60)return"".concat(s,"m ago");let n=Math.floor(s/60);return n<24?"".concat(n,"h ago"):"".concat(Math.floor(n/24),"d ago")}let S={running:0,review:1,ready:2,blocked:3,backlog:4,done:5,failed:5,cancelled:6,superseded:6,scheduled:3};function C(e){var t;let{group:s,selectedId:r,onSelect:l,arcDetail:i}=e,d=s.total>0?Math.round(s.doneCount/s.total*100):0,[o,c]=(0,a.useState)(!1),u=(null!=(t=null==i?void 0:i.length)?t:0)>0;return(0,n.jsxs)("section",{className:"rounded-2xl border border-border bg-muted/20 p-3",children:[(0,n.jsxs)("div",{className:"mb-2 flex flex-wrap items-center gap-2",children:[!s.isStandalone&&(0,n.jsx)("span",{className:"text-xs",children:"\uD83C\uDFAF"}),u&&(0,n.jsx)("button",{type:"button",onClick:()=>c(e=>!e),className:"text-xs text-muted-foreground hover:text-foreground",title:"아크 상세",children:o?"▾":"▸"}),(0,n.jsx)("h2",{className:"text-sm font-semibold",title:s.missionTitle,children:s.missionTitle}),(0,n.jsxs)("span",{className:"rounded-full bg-background px-2 py-0.5 text-[11px] text-muted-foreground",children:[s.doneCount,"/",s.total," \xb7 ",d,"%"]}),s.runningCount>0&&(0,n.jsxs)("span",{className:"animate-pulse rounded-full bg-sky-500/15 px-2 py-0.5 text-[10px] text-sky-200 ring-1 ring-sky-500/30",children:["● ",s.runningCount," 빌드중"]}),s.failedCount>0&&(0,n.jsxs)("span",{className:"rounded-full bg-red-500/15 px-2 py-0.5 text-[10px] text-red-300 ring-1 ring-red-500/30",children:["✗ ",s.failedCount," 실패"]})]}),s.arcs.length>0&&(0,n.jsx)("div",{className:"mb-2 flex flex-wrap gap-1.5",children:s.arcs.map((e,t)=>{var s;return(0,n.jsxs)("span",{className:"flex items-center gap-1 text-[10px]",children:[t>0&&(0,n.jsx)("span",{className:"text-muted-foreground",children:"→"}),(0,n.jsxs)("span",{className:"rounded-full px-2 py-0.5 ring-1 ".concat(null!=(s=N[e.status])?s:N.pending),children:["⬡ ",e.name," ",e.done,"/",e.total]})]},e.name)})}),o&&u&&(0,n.jsx)("div",{className:"mb-3 space-y-1.5 rounded-xl border border-border bg-background/40 p-2",children:i.map((e,t)=>{var s,a,r,l;let i="failed"===e.status||(null==(s=e.verifyResult)?void 0:s.ok)===!1;return(0,n.jsxs)("div",{className:"text-[11px]",children:[(0,n.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5",children:[(0,n.jsxs)("span",{className:"text-muted-foreground",children:["아크 ",t+1]}),(0,n.jsxs)("span",{className:"rounded-full px-2 py-0.5 ring-1 ".concat(null!=(l=N[e.status])?l:N.pending),children:["⬡ ",e.name," \xb7 ",e.status]}),e.dependsOnArcs.length>0&&(0,n.jsxs)("span",{className:"text-muted-foreground",children:["← 선행 ",e.dependsOnArcs.length]})]}),(0,n.jsx)("div",{className:"mt-0.5 pl-1 text-muted-foreground",children:e.intent}),i&&(null==(a=e.verifyResult)?void 0:a.missing)&&(0,n.jsxs)("div",{className:"mt-0.5 rounded-md bg-red-500/10 px-2 py-1 text-red-300",children:["\uD83D\uDD12 아크 통합검증 실패: ",e.verifyResult.missing,(0,n.jsx)("div",{className:"text-red-400/70",children:"→ arc-revise 초안 카드가 발송됩니다(페이즈는 완료돼도 아크로는 미충족)."})]}),(null==(r=e.verifyResult)?void 0:r.ok)&&(0,n.jsxs)("div",{className:"mt-0.5 pl-1 text-emerald-400/70",children:["✓ 통합검증 통과: ",e.verifyResult.evidence.slice(0,80)]}),e.preflightVerdict&&"founded"!==e.preflightVerdict.verdict&&(0,n.jsxs)("div",{className:"mt-0.5 rounded-md bg-amber-500/10 px-2 py-1 text-amber-300",children:["⚠️ pre-flight: ","mirage"===e.preflightVerdict.verdict?"허상 의심":"과대 범위"," → ",e.preflightVerdict.action,(0,n.jsx)("div",{className:"text-amber-400/70",children:e.preflightVerdict.reason.slice(0,120)})]})]},e.arcId)})}),(0,n.jsx)("div",{className:"grid grid-cols-1 gap-2 sm:grid-cols-2 xl:grid-cols-3",children:s.tasks.map(e=>(0,n.jsx)(I,{task:e,selected:e.id===r,onClick:()=>l(e.id)},e.id))})]})}function A(e){var t;let{api:s,buildId:r}=e,[l,i]=(0,a.useState)(null),[d,o]=(0,a.useState)(null),c=(0,a.useRef)(null);return(0,a.useEffect)(()=>{let e,t=!1,n=async()=>{try{let a=await s.buildSnapshot(r,120);if(t)return;i(a),o(null),"running"===a.build.status&&(e=window.setTimeout(()=>void n(),2e3))}catch(e){t||o(e instanceof Error?e.message:String(e))}};return n(),()=>{t=!0,e&&window.clearTimeout(e)}},[s,r]),(0,a.useEffect)(()=>{c.current&&(c.current.scrollTop=c.current.scrollHeight)},[l]),(0,n.jsxs)("div",{className:"space-y-1.5",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2 text-[11px]",children:[(0,n.jsx)("span",{className:"font-medium",children:"빌드 로그"}),(0,n.jsx)("span",{className:"rounded-full bg-muted px-2 py-0.5 text-muted-foreground",children:r}),l&&(0,n.jsx)("span",{className:"rounded-full px-2 py-0.5 ring-1 ".concat("running"===l.build.status?"bg-sky-500/15 text-sky-200 ring-sky-500/30":"bg-muted text-muted-foreground ring-border"),children:"running"===l.build.status?"● 라이브":l.build.status}),(null==l?void 0:l.diffStat)&&(0,n.jsxs)("span",{className:"text-muted-foreground",children:["+",l.diffStat.insertions,"/-",l.diffStat.deletions," \xb7 ",l.diffStat.files,"파일"]})]}),d&&(0,n.jsxs)("div",{className:"text-[11px] text-red-300",children:["로그 조회 실패: ",d]}),(0,n.jsx)("div",{ref:c,className:"max-h-64 overflow-auto rounded-lg border border-border bg-background/60 p-2 font-mono text-[10px] leading-relaxed text-muted-foreground",children:(null==l||null==(t=l.logTail)?void 0:t.length)?l.logTail.map((e,t)=>(0,n.jsx)("div",{className:"whitespace-pre-wrap break-all",children:e},t)):(0,n.jsx)("div",{className:"opacity-60",children:"로그 대기 중…"})})]})}function I(e){var t,s,a;let{task:r,selected:l,onClick:i}=e;return(0,n.jsxs)("button",{type:"button",onClick:i,className:["w-full rounded-xl border p-3 text-left transition-colors",l?"border-primary bg-primary/10 ring-1 ring-primary/40":"border-border bg-card hover:bg-accent/40"].join(" "),children:[(0,n.jsxs)("div",{className:"flex items-start justify-between gap-2",children:[(0,n.jsxs)("div",{className:"min-w-0",children:[r.missionTitle&&(0,n.jsxs)("div",{className:"mb-1 flex items-center gap-1 truncate text-[10px] text-indigo-300",title:r.missionTitle,children:[(0,n.jsx)("span",{className:"shrink-0",children:"\uD83C\uDFAF 미션"}),(0,n.jsx)("span",{className:"truncate opacity-80",children:r.missionTitle})]}),(0,n.jsx)("div",{className:"text-sm font-medium leading-5",children:r.title}),(0,n.jsx)("div",{className:"mt-1 text-[11px] text-muted-foreground",children:r.id})]}),(0,n.jsxs)("div",{className:"flex items-center gap-1.5",children:[r.dryRun&&(0,n.jsx)("span",{className:"rounded-full bg-emerald-500/15 px-2 py-0.5 text-[10px] text-emerald-300",children:"dry run"}),(0,n.jsx)("span",{className:"rounded-full px-2 py-0.5 text-[10px] ring-1 ".concat(null!=(t=j[r.priority])?t:j.low),children:r.priority})]})]}),(0,n.jsxs)("div",{className:"mt-3 flex flex-wrap gap-1.5 text-[11px] text-muted-foreground",children:[(0,n.jsx)("span",{className:"rounded-full bg-muted px-2 py-0.5",children:r.surfaceKind}),"running"===r.status&&r.build&&(0,n.jsxs)("span",{className:"flex items-center gap-1 rounded-full bg-sky-500/15 px-2 py-0.5 text-sky-200 ring-1 ring-sky-500/30",title:"빌드 ".concat(r.build.buildId," \xb7 ").concat(r.build.backend).concat(r.build.maxTurns?" \xb7 ".concat(r.build.maxTurns,"턴"):""),children:[(0,n.jsx)("span",{className:"animate-pulse",children:"●"})," 빌드중 ",r.build.backend.replace(/^elanous-self:/,"")," 시도",r.build.attemptSeq]}),r.arcName&&(0,n.jsxs)("span",{className:"rounded-full px-2 py-0.5 ring-1 ".concat(null!=(a=N[null!=(s=r.arcStatus)?s:"pending"])?a:N.pending),title:"아크: ".concat(r.arcName).concat(r.arcStatus?" \xb7 ".concat(r.arcStatus):""),children:["⬡ ",r.arcName,r.phaseIndexInArc&&r.arcTotalPhases?" \xb7 ".concat(r.phaseIndexInArc,"/").concat(r.arcTotalPhases):""]}),r.featureName&&(0,n.jsx)("span",{className:"rounded-full bg-muted px-2 py-0.5",children:r.featureName}),r.scheduleText&&(0,n.jsx)("span",{className:"rounded-full bg-muted px-2 py-0.5",children:r.scheduleText}),r.showroomSessionId&&(0,n.jsx)("a",{href:"/showroom?session=".concat(encodeURIComponent(r.showroomSessionId)),onClick:e=>e.stopPropagation(),className:"rounded-full bg-sky-500/15 px-2 py-0.5 text-sky-200 ring-1 ring-sky-500/30 hover:bg-sky-500/25",title:"Open showroom session ".concat(r.showroomSessionId),children:"↗ showroom"})]}),(0,n.jsxs)("div",{className:"mt-3 flex items-center justify-between text-[11px] text-muted-foreground",children:[(0,n.jsxs)("span",{children:["attempt ",r.attempt,"/",r.maxRetries]}),(0,n.jsx)("span",{children:w(r.updatedAt)})]}),(0,n.jsx)(M,{task:r})]})}function M(e){let{task:t}=e,s=y.has(t.status),r=v.has(t.status),l=(0,a.useContext)(b);return s||r?(0,n.jsxs)("div",{className:"mt-2 flex flex-wrap items-center gap-2",onClick:e=>e.stopPropagation(),children:[s&&(0,n.jsx)(p,{trigger:{refId:t.id,refKind:"task",finishedSurface:function(e){switch(e){case"terminal-pane":case"vw-slot":case"subagent":case"skill":case"chat-prompt":case"cron":case"llm-direct":case"acx-session":case"showroom":return e;default:return null}}(t.surfaceKind),outcome:"done"===t.status?"ok":"failed",completedAt:t.updatedAt,...t.featureName?{tags:[t.featureName]}:{}},...l?{onChoose:e=>{l(t.id,e)}}:{}}),r&&(0,n.jsx)(g,{request:{taskId:t.id,status:t.status,enteredStatusAt:t.updatedAt,observedAt:Date.now(),taskTitle:t.title}})]}):null}function R(e){let{label:t,value:s}=e;return(0,n.jsxs)("div",{className:"space-y-1",children:[(0,n.jsx)("div",{className:"text-[11px] uppercase tracking-wide text-muted-foreground",children:t}),(0,n.jsx)("div",{className:"text-sm",children:s})]})}function T(){var e,t,s,u,m,p;let{client:h}=(0,r.Q)(),g=(0,a.useMemo)(()=>new i(h),[h]),v=(0,a.useMemo)(()=>new d.Yt(h),[h]),[y,j]=(0,a.useState)(""),[N,M]=(0,a.useState)(!1),[T,J]=(0,a.useState)(new Map),[E,O]=(0,a.useState)([]),[D,P]=(0,a.useState)(null),[U,_]=(0,a.useState)(null),[F,H]=(0,a.useState)(null),[q,z]=(0,a.useState)(!1),[K,L]=(0,a.useState)(!1),[V,B]=(0,a.useState)("mission"),$=(0,a.useCallback)(async()=>{(0,o.cY)("webterm.tasks.list.refresh",{}),z(!0);try{let e=await g.list();O(e.tasks),P(e.summary),v.missionArcMap().then(J).catch(()=>{}),_(t=>t&&e.tasks.some(e=>e.id===t)?t:null)}catch(e){c.oR.error("task board failed: ".concat(e instanceof Error?e.message:e))}finally{z(!1)}},[g,v]),Y=(0,a.useCallback)(async(e,t)=>{try{var s;let n=await x({baseUrl:window.location.origin}).dispatch(e,t);n.ok?c.oR.success("".concat(t," 실행됨")):c.oR.error("".concat(t," 실패: ").concat(null!=(s=n.error)?s:""))}catch(e){c.oR.error("".concat(t," 실패: ").concat(e instanceof Error?e.message:e))}await $()},[$]),G=(0,a.useCallback)(async()=>{let e=y.trim();if(e&&!N){M(!0);try{let t=await v.commitMission(e,"intake");t.ok?(c.oR.success("태스크 생성 → 미션 fabric 이 플랜화 중".concat(t.missionId?" (".concat(t.missionId,")"):"")),j(""),setTimeout(()=>void $(),1200)):c.oR.error("태스크 생성 실패")}catch(e){c.oR.error("태스크 생성 실패: ".concat(e instanceof Error?e.message:e))}finally{M(!1)}}},[y,N,v,$]);(0,a.useEffect)(()=>{$();let e=window.setInterval(()=>void $(),15e3);return()=>window.clearInterval(e)},[$]),(0,a.useEffect)(()=>{if(!U)return void H(null);let e=!1;return L(!0),(async()=>{try{var t;let s=await g.detail(U);if(e)return;H({task:s.task,executions:s.executions.map(e=>({id:e.id,status:e.status,startedAt:e.startedAt,durationMs:e.durationMs,output:e.output})),events:s.events,linkedSchedulerJob:null!=(t=s.linkedSchedulerJob)?t:null})}catch(t){e||c.oR.error("task detail failed: ".concat(t instanceof Error?t.message:t))}finally{e||L(!1)}})(),()=>{e=!0}},[g,U]);let Q=(0,a.useMemo)(()=>k.map(e=>({...e,tasks:E.filter(t=>e.statuses.some(e=>e===t.status))})),[E]),W=(0,a.useMemo)(()=>(function(e){var t,s,n,a,r,l,i;let d=new Map;for(let n of e){let e=n.missionTitle?null!=(t=n.goalSlug)?t:n.missionTitle:"__standalone__";(null!=(s=d.get(e))?s:d.set(e,[]).get(e)).push(n)}let o=[];for(let[e,t]of Array.from(d.entries())){let s="__standalone__"===e,d=new Map;for(let e of t)if(e.arcName){let t=null!=(l=d.get(e.arcName))?l:{name:e.arcName,total:0,done:0,status:null!=(a=e.arcStatus)?a:"pending",index:null!=(r=e.arcIndex)?r:0};t.total+=1,"done"===e.status&&(t.done+=1),e.arcStatus&&(t.status=e.arcStatus),d.set(e.arcName,t)}let c=[...t].sort((e,t)=>{var s,n;return(null!=(s=S[e.status])?s:9)-(null!=(n=S[t.status])?n:9)||t.createdAt-e.createdAt});o.push({key:e,missionTitle:s?"독립 태스크 (미션 외)":null!=(i=null==(n=t[0])?void 0:n.missionTitle)?i:e,tasks:c,total:t.length,doneCount:t.filter(e=>"done"===e.status).length,runningCount:t.filter(e=>"running"===e.status).length,failedCount:t.filter(e=>"failed"===e.status).length,arcs:Array.from(d.values()).sort((e,t)=>e.index-t.index),isStandalone:s})}return o.sort((e,t)=>{if(e.isStandalone!==t.isStandalone)return e.isStandalone?1:-1;let s=e.runningCount>0||e.doneCount<e.total;return s!==(t.runningCount>0||t.doneCount<t.total)?s?-1:1:t.total-e.total})})(E),[E]);return(0,n.jsx)(b.Provider,{value:Y,children:(0,n.jsxs)("div",{className:"mx-auto max-w-[1600px] space-y-4 p-4",children:[(0,n.jsx)(f.r,{active:"tasks"}),(0,n.jsxs)("header",{className:"flex flex-col gap-3 lg:flex-row lg:items-end lg:justify-between",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("h1",{className:"text-xl font-semibold tracking-tight",children:"Task Manager"}),(0,n.jsx)("p",{className:"text-sm text-muted-foreground",children:"TOX board snapshot for backlog, running work, and closed items."})]}),(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[D&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:"rounded-lg border border-border bg-card px-3 py-2 text-xs",children:[(0,n.jsx)("div",{className:"text-muted-foreground",children:"open"}),(0,n.jsx)("div",{className:"text-sm font-semibold",children:D.open})]}),(0,n.jsxs)("div",{className:"rounded-lg border border-border bg-card px-3 py-2 text-xs",children:[(0,n.jsx)("div",{className:"text-muted-foreground",children:"closed"}),(0,n.jsx)("div",{className:"text-sm font-semibold",children:D.terminal})]}),(0,n.jsxs)("div",{className:"rounded-lg border border-border bg-card px-3 py-2 text-xs",children:[(0,n.jsx)("div",{className:"text-muted-foreground",children:"linked schedules"}),(0,n.jsx)("div",{className:"text-sm font-semibold",children:D.linkedScheduler})]})]}),(0,n.jsxs)("div",{className:"flex rounded-lg border border-border bg-card p-0.5 text-xs",children:[(0,n.jsx)("button",{type:"button",onClick:()=>B("mission"),className:"rounded-md px-2.5 py-1 ".concat("mission"===V?"bg-primary/20 text-primary":"text-muted-foreground hover:text-foreground"),children:"\uD83C\uDFAF 미션별"}),(0,n.jsx)("button",{type:"button",onClick:()=>B("kanban"),className:"rounded-md px-2.5 py-1 ".concat("kanban"===V?"bg-primary/20 text-primary":"text-muted-foreground hover:text-foreground"),children:"칸반"})]}),(0,n.jsx)(l.$,{size:"sm",variant:"outline",onClick:()=>void $(),disabled:q,children:"Refresh"})]})]}),(0,n.jsxs)("div",{className:"flex items-center gap-2 rounded-xl border border-border bg-card p-2",children:[(0,n.jsx)("span",{className:"pl-1 text-sm text-muted-foreground",children:"+"}),(0,n.jsx)("input",{type:"text",value:y,onChange:e=>j(e.target.value),onKeyDown:e=>{"Enter"===e.key&&G()},placeholder:"새 태스크(골)를 입력하면 미션 fabric 이 플랜화→구현→DONE… 예: 'README 중복 정리 리포트 만들어줘'",className:"min-w-0 flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground/60",disabled:N}),(0,n.jsx)(l.$,{size:"sm",onClick:()=>void G(),disabled:N||!y.trim(),children:N?"생성 중…":"Create Task"})]}),(0,n.jsxs)("div",{className:"flex flex-col gap-4 xl:flex-row xl:items-start",children:[(0,n.jsx)("section",{className:"min-w-0 flex-1 space-y-3",children:"mission"===V?(0,n.jsx)("div",{className:"space-y-3",children:W.length>0?W.map(e=>{var t;return(0,n.jsx)(C,{group:e,selectedId:U,onSelect:_,arcDetail:null==(t=T.get(e.key))?void 0:t.arcs},e.key)}):(0,n.jsx)("div",{className:"rounded-xl border border-dashed border-border px-3 py-12 text-center text-sm text-muted-foreground",children:"미션/태스크 없음"})}):(0,n.jsx)("div",{className:"pb-2",children:(0,n.jsx)("div",{className:"flex flex-wrap gap-3",children:Q.map(e=>(0,n.jsxs)("div",{className:"min-w-[170px] flex-1 rounded-2xl border border-border bg-muted/30 p-3",children:[(0,n.jsxs)("div",{className:"mb-3 flex items-center justify-between",children:[(0,n.jsx)("h2",{className:"text-sm font-semibold",children:e.label}),(0,n.jsx)("span",{className:"rounded-full bg-background px-2 py-0.5 text-[11px] text-muted-foreground",children:e.tasks.length})]}),(0,n.jsx)("div",{className:"space-y-2",children:e.tasks.length>0?e.tasks.map(e=>(0,n.jsx)(I,{task:e,selected:e.id===U,onClick:()=>_(e.id)},e.id)):(0,n.jsx)("div",{className:"rounded-xl border border-dashed border-border px-3 py-8 text-center text-xs text-muted-foreground",children:"no tasks"})})]},e.id))})})}),U&&(0,n.jsxs)("aside",{className:"w-full shrink-0 space-y-3 rounded-2xl border border-border bg-card p-4 xl:w-[360px]",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("h2",{className:"text-base font-semibold",children:"Detail"}),(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(null==F?void 0:F.task)&&(0,n.jsx)("span",{className:"rounded-full bg-muted px-2 py-0.5 text-[11px] text-muted-foreground",children:F.task.status}),(0,n.jsx)("button",{type:"button",onClick:()=>_(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 detail",children:"✕"})]})]}),K||!F?(0,n.jsx)("div",{className:"text-sm text-muted-foreground",children:"Loading task detail…"}):(0,n.jsxs)("div",{className:"space-y-4",children:[(()=>{let e=E.find(e=>e.id===U);return(null==e?void 0:e.status)==="running"&&e.build?(0,n.jsx)(A,{api:g,buildId:e.build.buildId}):null})(),(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{className:"text-lg font-semibold leading-6",children:F.task.title}),(0,n.jsx)("div",{className:"mt-1 text-xs text-muted-foreground",children:F.task.id}),F.task.description&&(0,n.jsx)("p",{className:"mt-3 whitespace-pre-wrap text-sm text-muted-foreground",children:F.task.description})]}),(0,n.jsxs)("div",{className:"grid gap-3 sm:grid-cols-2",children:[(0,n.jsx)(R,{label:"Surface",value:F.task.surface.kind}),(0,n.jsx)(R,{label:"Priority",value:F.task.priority}),(0,n.jsx)(R,{label:"Goal",value:null!=(u=F.task.goalSlug)?u:"—"}),(0,n.jsx)(R,{label:"Feature",value:null!=(m=F.task.featureName)?m:"—"}),(0,n.jsx)(R,{label:"Depends On",value:F.task.dependsOn.length>0?F.task.dependsOn.join(", "):"—"}),(0,n.jsx)(R,{label:"Schedule",value:null!=(p=F.task.schedulerJobId)?p:"—"})]}),F.linkedSchedulerJob&&(0,n.jsxs)("div",{className:"rounded-xl border border-border bg-muted/40 px-3 py-2 text-sm",children:["linked schedule: ",F.linkedSchedulerJob.title,(0,n.jsx)("span",{className:"ml-2 text-xs text-muted-foreground",children:F.linkedSchedulerJob.taskId}),(null==(e=F.linkedSchedulerJob.taskMeta)?void 0:e.dryRun)&&(0,n.jsxs)("span",{className:"ml-2 rounded-full bg-emerald-500/15 px-2 py-0.5 text-[10px] text-emerald-300",children:["dry run",F.linkedSchedulerJob.taskMeta.dryRunOutcome?" \xb7 ".concat(F.linkedSchedulerJob.taskMeta.dryRunOutcome):""]})]}),(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsx)("div",{className:"text-sm font-semibold",children:"Acceptance"}),(null==(s=F.task.acceptance)||null==(t=s.criteria)?void 0:t.length)?(0,n.jsx)("ul",{className:"space-y-1 text-sm text-muted-foreground",children:F.task.acceptance.criteria.map(e=>(0,n.jsx)("li",{className:"rounded-lg bg-muted/50 px-3 py-2",children:e},e))}):(0,n.jsx)("div",{className:"text-sm text-muted-foreground",children:"No acceptance criteria."})]}),(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsx)("div",{className:"text-sm font-semibold",children:"Recent Executions"}),F.executions.length>0?(0,n.jsx)("div",{className:"space-y-2",children:F.executions.map(e=>(0,n.jsxs)("div",{className:"rounded-xl border border-border bg-background p-3",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,n.jsx)("span",{className:"font-medium",children:e.status}),(0,n.jsx)("span",{className:"text-xs text-muted-foreground",children:w(e.startedAt)})]}),void 0!==e.durationMs&&(0,n.jsxs)("div",{className:"mt-1 text-xs text-muted-foreground",children:["duration ",Math.round(e.durationMs/1e3),"s"]}),e.output&&(0,n.jsx)("pre",{className:"mt-2 max-h-28 overflow-auto whitespace-pre-wrap rounded-lg bg-muted p-2 text-xs text-muted-foreground",children:e.output.slice(0,600)})]},e.id))}):(0,n.jsx)("div",{className:"text-sm text-muted-foreground",children:"No executions recorded yet."})]}),(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsx)("div",{className:"text-sm font-semibold",children:"Recent Events"}),F.events.length>0?(0,n.jsx)("div",{className:"space-y-1",children:F.events.slice(-8).reverse().map((e,t)=>(0,n.jsxs)("div",{className:"flex items-center justify-between rounded-lg bg-muted/50 px-3 py-2 text-xs",children:[(0,n.jsx)("span",{children:e.kind}),(0,n.jsx)("span",{className:"text-muted-foreground",children:w(e.timestamp)})]},"".concat(e.kind,"-").concat(e.timestamp,"-").concat(t)))}):(0,n.jsx)("div",{className:"text-sm text-muted-foreground",children:"No events recorded yet."})]})]})]})]})]})})}},27078:(e,t,s)=>{function n(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:()=>d,Yt:()=>i,on:()=>n});let a=["task","goal-loop","single-shot"],r=["scheduler","monitor-trigger"];function l(e){var t,s,n,l,i,d,o;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!=(n=null==c?void 0:c.apmStatus)?n: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:(o=null!=(d=null==c?void 0:c.executionModel)?d:null)&&a.includes(o)?"finite":o&&r.includes(o)?"continuous":"other",reviewDue:!1,createdAt:new Date(e.createdAt).toISOString(),updatedAt:e.updatedAt,derived:e.derived,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 missionsUnified(e){var t,s;let n=new URLSearchParams({...e?{status:e}:{}}).toString(),a=await this.client.fetchJson("/v1/missions".concat(n?"?".concat(n):"")),r=null!=(t=a.missions)?t:[];return{ok:!0,total:null!=(s=a.total)?s:r.length,missions:r.map(l)}}async trace(e){return this.client.fetchJson("/v1/autopilot/trace?id=".concat(encodeURIComponent(e)))}async missionArcMap(){var e,t,s;let n=await this.client.fetchJson("/v1/missions"),a=new Map;for(let r of null!=(e=n.missions)?e:[]){let e=null==(t=r.autopilot)?void 0:t.arcs;e&&e.length>0&&a.set(r.id,{apmStatus:null==(s=r.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 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 d={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"}}},31256:(e,t,s)=>{s.d(t,{r:()=>i});var n=s(65863),a=s(38519),r=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,n.jsxs)("nav",{"aria-label":"Mission Fabric 파이프라인","data-testid":"fabric-stage-header",className:"flex flex-wrap items-center gap-1 text-xs",children:[(0,n.jsx)("span",{className:"mr-1 text-muted-foreground",children:"Missions"}),l.map((e,s)=>(0,n.jsxs)("span",{className:"flex items-center gap-1",children:[(0,n.jsxs)(r(),{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,n.jsx)("span",{className:"mr-1",children:e.num}),e.label,(0,n.jsx)("span",{className:"ml-1 text-[10px] opacity-70",children:e.sub})]}),s<l.length-1&&(0,n.jsx)("span",{className:"text-muted-foreground/50","aria-hidden":!0,children:"→"})]},e.key))]})}},91611:(e,t,s)=>{s.d(t,{GM:()=>i,J3:()=>l,WF:()=>n,bR:()=>r,m:()=>d,r5:()=>a});let n="/v1/devices",a="/v1/approvals/merges",r="/v1/templates/capability-preview",l="/v1/idle-nudge/preview",i="/v1/morning-digest/showroom",d="/v1/next-fluent/dispatch"}}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1085],{86:(t,n,e)=>{function r(t){return((t=Math.exp(t))+1/t)/2}e.d(n,{A:()=>i});let i=function t(n,e,i){function o(t,o){var a,u,s=t[0],l=t[1],c=t[2],f=o[0],h=o[1],p=o[2],d=f-s,v=h-l,y=d*d+v*v;if(y<1e-12)u=Math.log(p/c)/n,a=function(t){return[s+t*d,l+t*v,c*Math.exp(n*t*u)]};else{var m=Math.sqrt(y),g=(p*p-c*c+i*y)/(2*c*e*m),_=(p*p-c*c-i*y)/(2*p*e*m),w=Math.log(Math.sqrt(g*g+1)-g);u=(Math.log(Math.sqrt(_*_+1)-_)-w)/n,a=function(t){var i,o,a=t*u,f=r(w),h=c/(e*m)*(f*(((i=Math.exp(2*(i=n*a+w)))-1)/(i+1))-((o=Math.exp(o=w))-1/o)/2);return[s+h*d,l+h*v,c*f/r(n*a+w)]}}return a.duration=1e3*u*n/Math.SQRT2,a}return o.rho=function(n){var e=Math.max(.001,+n),r=e*e;return t(e,r,r*r)},o}(Math.SQRT2,2,4)},133:(t,n,e)=>{e.d(n,{A:()=>function t(n,e){var s,l,c=typeof e;return null==e||"boolean"===c?(0,u.A)(e):("number"===c?o.A:"string"===c?(l=(0,r.Ay)(e))?(e=l,i.Ay):a.A:e instanceof r.Ay?i.Ay:e instanceof Date?function(t,n){var e=new Date;return t*=1,n*=1,function(r){return e.setTime(t*(1-r)+n*r),e}}:!ArrayBuffer.isView(s=e)||s instanceof DataView?Array.isArray(e)?function(n,e){var r,i=e?e.length:0,o=n?Math.min(i,n.length):0,a=Array(o),u=Array(i);for(r=0;r<o;++r)a[r]=t(n[r],e[r]);for(;r<i;++r)u[r]=e[r];return function(t){for(r=0;r<o;++r)u[r]=a[r](t);return u}}:"function"!=typeof e.valueOf&&"function"!=typeof e.toString||isNaN(e)?function(n,e){var r,i={},o={};for(r in(null===n||"object"!=typeof n)&&(n={}),(null===e||"object"!=typeof e)&&(e={}),e)r in n?i[r]=t(n[r],e[r]):o[r]=e[r];return function(t){for(r in i)o[r]=i[r](t);return o}}:o.A:function(t,n){n||(n=[]);var e,r=t?Math.min(n.length,t.length):0,i=n.slice();return function(o){for(e=0;e<r;++e)i[e]=t[e]*(1-o)+n[e]*o;return i}})(n,e)}});var r=e(47416),i=e(52052),o=e(51472),a=e(15764),u=e(88313)},3586:(t,n,e)=>{function r(t,n,e){t.prototype=n.prototype=e,e.constructor=t}function i(t,n){var e=Object.create(t.prototype);for(var r in n)e[r]=n[r];return e}e.d(n,{A:()=>r,X:()=>i})},15764:(t,n,e)=>{e.d(n,{A:()=>a});var r=e(51472),i=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,o=RegExp(i.source,"g");function a(t,n){var e,a,u,s,l,c=i.lastIndex=o.lastIndex=0,f=-1,h=[],p=[];for(t+="",n+="";(u=i.exec(t))&&(s=o.exec(n));)(l=s.index)>c&&(l=n.slice(c,l),h[f]?h[f]+=l:h[++f]=l),(u=u[0])===(s=s[0])?h[f]?h[f]+=s:h[++f]=s:(h[++f]=null,p.push({i:f,x:(0,r.A)(u,s)})),c=o.lastIndex;return c<n.length&&(l=n.slice(c),h[f]?h[f]+=l:h[++f]=l),h.length<2?p[0]?(e=p[0].x,function(t){return e(t)+""}):(a=n,function(){return a}):(n=p.length,function(t){for(var e,r=0;r<n;++r)h[(e=p[r]).i]=e.x(t);return h.join("")})}},27390:(t,n,e)=>{e.d(n,{A:()=>i,j:()=>o});var r=e(37494);function i(t,n,e){return arguments.length>1?this.each((null==n?function(t){return function(){this.style.removeProperty(t)}}:"function"==typeof n?function(t,n,e){return function(){var r=n.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,e)}}:function(t,n,e){return function(){this.style.setProperty(t,n,e)}})(t,n,null==e?"":e)):o(this.node(),t)}function o(t,n){return t.style.getPropertyValue(n)||(0,r.A)(t).getComputedStyle(t,null).getPropertyValue(n)}},33448:(t,n,e)=>{function r(t){return function(){return this.matches(t)}}function i(t){return function(n){return n.matches(t)}}e.d(n,{A:()=>r,j:()=>i})},33846:(t,n,e)=>{function r(){return[]}function i(t){return null==t?r:function(){return this.querySelectorAll(t)}}e.d(n,{A:()=>i})},37494:(t,n,e)=>{e.d(n,{A:()=>r});function r(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}},42489:(t,n,e)=>{e.d(n,{LN:()=>O,Ay:()=>D,zr:()=>R});var r=e(50731),i=e(33846),o=e(33448),a=Array.prototype.find;function u(){return this.firstElementChild}var s=Array.prototype.filter;function l(){return Array.from(this.children)}function c(t){return Array(t.length)}function f(t,n){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=n}function h(t,n,e,r,i,o){for(var a,u=0,s=n.length,l=o.length;u<l;++u)(a=n[u])?(a.__data__=o[u],r[u]=a):e[u]=new f(t,o[u]);for(;u<s;++u)(a=n[u])&&(i[u]=a)}function p(t,n,e,r,i,o,a){var u,s,l,c=new Map,h=n.length,p=o.length,d=Array(h);for(u=0;u<h;++u)(s=n[u])&&(d[u]=l=a.call(s,s.__data__,u,n)+"",c.has(l)?i[u]=s:c.set(l,s));for(u=0;u<p;++u)l=a.call(t,o[u],u,o)+"",(s=c.get(l))?(r[u]=s,s.__data__=o[u],c.delete(l)):e[u]=new f(t,o[u]);for(u=0;u<h;++u)(s=n[u])&&c.get(d[u])===s&&(i[u]=s)}function d(t){return t.__data__}function v(t,n){return t<n?-1:t>n?1:t>=n?0:NaN}f.prototype={constructor:f,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,n){return this._parent.insertBefore(t,n)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var y=e(52849),m=e(27390);function g(t){return t.trim().split(/^|\s+/)}function _(t){return t.classList||new w(t)}function w(t){this._node=t,this._names=g(t.getAttribute("class")||"")}function x(t,n){for(var e=_(t),r=-1,i=n.length;++r<i;)e.add(n[r])}function b(t,n){for(var e=_(t),r=-1,i=n.length;++r<i;)e.remove(n[r])}function A(){this.textContent=""}function k(){this.innerHTML=""}function M(){this.nextSibling&&this.parentNode.appendChild(this)}function N(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}w.prototype={add:function(t){0>this._names.indexOf(t)&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var n=this._names.indexOf(t);n>=0&&(this._names.splice(n,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var E=e(75782);function z(t){var n=(0,y.A)(t);return(n.local?function(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}:function(t){return function(){var n=this.ownerDocument,e=this.namespaceURI;return e===E.g&&n.documentElement.namespaceURI===E.g?n.createElement(t):n.createElementNS(e,t)}})(n)}function $(){return null}function S(){var t=this.parentNode;t&&t.removeChild(this)}function T(){var t=this.cloneNode(!1),n=this.parentNode;return n?n.insertBefore(t,this.nextSibling):t}function C(){var t=this.cloneNode(!0),n=this.parentNode;return n?n.insertBefore(t,this.nextSibling):t}function X(t){return function(){var n=this.__on;if(n){for(var e,r=0,i=-1,o=n.length;r<o;++r)(e=n[r],t.type&&e.type!==t.type||e.name!==t.name)?n[++i]=e:this.removeEventListener(e.type,e.listener,e.options);++i?n.length=i:delete this.__on}}}function P(t,n,e){return function(){var r,i=this.__on,o=function(t){n.call(this,t,this.__data__)};if(i){for(var a=0,u=i.length;a<u;++a)if((r=i[a]).type===t.type&&r.name===t.name){this.removeEventListener(r.type,r.listener,r.options),this.addEventListener(r.type,r.listener=o,r.options=e),r.value=n;return}}this.addEventListener(t.type,o,e),r={type:t.type,name:t.name,value:n,listener:o,options:e},i?i.push(r):this.__on=[r]}}var q=e(37494);function j(t,n,e){var r=(0,q.A)(t),i=r.CustomEvent;"function"==typeof i?i=new i(n,e):(i=r.document.createEvent("Event"),e?(i.initEvent(n,e.bubbles,e.cancelable),i.detail=e.detail):i.initEvent(n,!1,!1)),t.dispatchEvent(i)}var R=[null];function O(t,n){this._groups=t,this._parents=n}function Y(){return new O([[document.documentElement]],R)}O.prototype=Y.prototype={constructor:O,select:function(t){"function"!=typeof t&&(t=(0,r.A)(t));for(var n=this._groups,e=n.length,i=Array(e),o=0;o<e;++o)for(var a,u,s=n[o],l=s.length,c=i[o]=Array(l),f=0;f<l;++f)(a=s[f])&&(u=t.call(a,a.__data__,f,s))&&("__data__"in a&&(u.__data__=a.__data__),c[f]=u);return new O(i,this._parents)},selectAll:function(t){if("function"==typeof t){var n;n=t,t=function(){var t;return t=n.apply(this,arguments),null==t?[]:Array.isArray(t)?t:Array.from(t)}}else t=(0,i.A)(t);for(var e=this._groups,r=e.length,o=[],a=[],u=0;u<r;++u)for(var s,l=e[u],c=l.length,f=0;f<c;++f)(s=l[f])&&(o.push(t.call(s,s.__data__,f,l)),a.push(s));return new O(o,a)},selectChild:function(t){var n;return this.select(null==t?u:(n="function"==typeof t?t:(0,o.j)(t),function(){return a.call(this.children,n)}))},selectChildren:function(t){var n;return this.selectAll(null==t?l:(n="function"==typeof t?t:(0,o.j)(t),function(){return s.call(this.children,n)}))},filter:function(t){"function"!=typeof t&&(t=(0,o.A)(t));for(var n=this._groups,e=n.length,r=Array(e),i=0;i<e;++i)for(var a,u=n[i],s=u.length,l=r[i]=[],c=0;c<s;++c)(a=u[c])&&t.call(a,a.__data__,c,u)&&l.push(a);return new O(r,this._parents)},data:function(t,n){if(!arguments.length)return Array.from(this,d);var e=n?p:h,r=this._parents,i=this._groups;"function"!=typeof t&&(x=t,t=function(){return x});for(var o=i.length,a=Array(o),u=Array(o),s=Array(o),l=0;l<o;++l){var c=r[l],f=i[l],v=f.length,y="object"==typeof(w=t.call(c,c&&c.__data__,l,r))&&"length"in w?w:Array.from(w),m=y.length,g=u[l]=Array(m),_=a[l]=Array(m);e(c,f,g,_,s[l]=Array(v),y,n);for(var w,x,b,A,k=0,M=0;k<m;++k)if(b=g[k]){for(k>=M&&(M=k+1);!(A=_[M])&&++M<m;);b._next=A||null}}return(a=new O(a,r))._enter=u,a._exit=s,a},enter:function(){return new O(this._enter||this._groups.map(c),this._parents)},exit:function(){return new O(this._exit||this._groups.map(c),this._parents)},join:function(t,n,e){var r=this.enter(),i=this,o=this.exit();return"function"==typeof t?(r=t(r))&&(r=r.selection()):r=r.append(t+""),null!=n&&(i=n(i))&&(i=i.selection()),null==e?o.remove():e(o),r&&i?r.merge(i).order():i},merge:function(t){for(var n=t.selection?t.selection():t,e=this._groups,r=n._groups,i=e.length,o=r.length,a=Math.min(i,o),u=Array(i),s=0;s<a;++s)for(var l,c=e[s],f=r[s],h=c.length,p=u[s]=Array(h),d=0;d<h;++d)(l=c[d]||f[d])&&(p[d]=l);for(;s<i;++s)u[s]=e[s];return new O(u,this._parents)},selection:function(){return this},order:function(){for(var t=this._groups,n=-1,e=t.length;++n<e;)for(var r,i=t[n],o=i.length-1,a=i[o];--o>=0;)(r=i[o])&&(a&&4^r.compareDocumentPosition(a)&&a.parentNode.insertBefore(r,a),a=r);return this},sort:function(t){function n(n,e){return n&&e?t(n.__data__,e.__data__):!n-!e}t||(t=v);for(var e=this._groups,r=e.length,i=Array(r),o=0;o<r;++o){for(var a,u=e[o],s=u.length,l=i[o]=Array(s),c=0;c<s;++c)(a=u[c])&&(l[c]=a);l.sort(n)}return new O(i,this._parents).order()},call:function(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this},nodes:function(){return Array.from(this)},node:function(){for(var t=this._groups,n=0,e=t.length;n<e;++n)for(var r=t[n],i=0,o=r.length;i<o;++i){var a=r[i];if(a)return a}return null},size:function(){let t=0;for(let n of this)++t;return t},empty:function(){return!this.node()},each:function(t){for(var n=this._groups,e=0,r=n.length;e<r;++e)for(var i,o=n[e],a=0,u=o.length;a<u;++a)(i=o[a])&&t.call(i,i.__data__,a,o);return this},attr:function(t,n){var e=(0,y.A)(t);if(arguments.length<2){var r=this.node();return e.local?r.getAttributeNS(e.space,e.local):r.getAttribute(e)}return this.each((null==n?e.local?function(t){return function(){this.removeAttributeNS(t.space,t.local)}}:function(t){return function(){this.removeAttribute(t)}}:"function"==typeof n?e.local?function(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,e)}}:function(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttribute(t):this.setAttribute(t,e)}}:e.local?function(t,n){return function(){this.setAttributeNS(t.space,t.local,n)}}:function(t,n){return function(){this.setAttribute(t,n)}})(e,n))},style:m.A,property:function(t,n){return arguments.length>1?this.each((null==n?function(t){return function(){delete this[t]}}:"function"==typeof n?function(t,n){return function(){var e=n.apply(this,arguments);null==e?delete this[t]:this[t]=e}}:function(t,n){return function(){this[t]=n}})(t,n)):this.node()[t]},classed:function(t,n){var e=g(t+"");if(arguments.length<2){for(var r=_(this.node()),i=-1,o=e.length;++i<o;)if(!r.contains(e[i]))return!1;return!0}return this.each(("function"==typeof n?function(t,n){return function(){(n.apply(this,arguments)?x:b)(this,t)}}:n?function(t){return function(){x(this,t)}}:function(t){return function(){b(this,t)}})(e,n))},text:function(t){return arguments.length?this.each(null==t?A:("function"==typeof t?function(t){return function(){var n=t.apply(this,arguments);this.textContent=null==n?"":n}}:function(t){return function(){this.textContent=t}})(t)):this.node().textContent},html:function(t){return arguments.length?this.each(null==t?k:("function"==typeof t?function(t){return function(){var n=t.apply(this,arguments);this.innerHTML=null==n?"":n}}:function(t){return function(){this.innerHTML=t}})(t)):this.node().innerHTML},raise:function(){return this.each(M)},lower:function(){return this.each(N)},append:function(t){var n="function"==typeof t?t:z(t);return this.select(function(){return this.appendChild(n.apply(this,arguments))})},insert:function(t,n){var e="function"==typeof t?t:z(t),i=null==n?$:"function"==typeof n?n:(0,r.A)(n);return this.select(function(){return this.insertBefore(e.apply(this,arguments),i.apply(this,arguments)||null)})},remove:function(){return this.each(S)},clone:function(t){return this.select(t?C:T)},datum:function(t){return arguments.length?this.property("__data__",t):this.node().__data__},on:function(t,n,e){var r,i,o=(t+"").trim().split(/^|\s+/).map(function(t){var n="",e=t.indexOf(".");return e>=0&&(n=t.slice(e+1),t=t.slice(0,e)),{type:t,name:n}}),a=o.length;if(arguments.length<2){var u=this.node().__on;if(u){for(var s,l=0,c=u.length;l<c;++l)for(r=0,s=u[l];r<a;++r)if((i=o[r]).type===s.type&&i.name===s.name)return s.value}return}for(r=0,u=n?P:X;r<a;++r)this.each(u(o[r],n,e));return this},dispatch:function(t,n){return this.each(("function"==typeof n?function(t,n){return function(){return j(this,t,n.apply(this,arguments))}}:function(t,n){return function(){return j(this,t,n)}})(t,n))},[Symbol.iterator]:function*(){for(var t=this._groups,n=0,e=t.length;n<e;++n)for(var r,i=t[n],o=0,a=i.length;o<a;++o)(r=i[o])&&(yield r)}};let D=Y},43399:(t,n,e)=>{e.d(n,{A:()=>o,y:()=>a});var r=e(87426),i=e(55511);function o(t){var n=t.document.documentElement,e=(0,r.A)(t).on("dragstart.drag",i.Ay,i.Rw);"onselectstart"in n?e.on("selectstart.drag",i.Ay,i.Rw):(n.__noselect=n.style.MozUserSelect,n.style.MozUserSelect="none")}function a(t,n){var e=t.document.documentElement,o=(0,r.A)(t).on("dragstart.drag",null);n&&(o.on("click.drag",i.Ay,i.Rw),setTimeout(function(){o.on("click.drag",null)},0)),"onselectstart"in e?o.on("selectstart.drag",null):(e.style.MozUserSelect=e.__noselect,delete e.__noselect)}},47416:(t,n,e)=>{e.d(n,{Ay:()=>g,Gw:()=>A,Q1:()=>i,Qh:()=>b,b:()=>x});var r=e(3586);function i(){}var o="\\s*([+-]?\\d+)\\s*",a="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",u="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",s=/^#([0-9a-f]{3,8})$/,l=RegExp(`^rgb\\(${o},${o},${o}\\)$`),c=RegExp(`^rgb\\(${u},${u},${u}\\)$`),f=RegExp(`^rgba\\(${o},${o},${o},${a}\\)$`),h=RegExp(`^rgba\\(${u},${u},${u},${a}\\)$`),p=RegExp(`^hsl\\(${a},${u},${u}\\)$`),d=RegExp(`^hsla\\(${a},${u},${u},${a}\\)$`),v={aliceblue:0xf0f8ff,antiquewhite:0xfaebd7,aqua:65535,aquamarine:8388564,azure:0xf0ffff,beige:0xf5f5dc,bisque:0xffe4c4,black:0,blanchedalmond:0xffebcd,blue:255,blueviolet:9055202,brown:0xa52a2a,burlywood:0xdeb887,cadetblue:6266528,chartreuse:8388352,chocolate:0xd2691e,coral:0xff7f50,cornflowerblue:6591981,cornsilk:0xfff8dc,crimson:0xdc143c,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:0xb8860b,darkgray:0xa9a9a9,darkgreen:25600,darkgrey:0xa9a9a9,darkkhaki:0xbdb76b,darkmagenta:9109643,darkolivegreen:5597999,darkorange:0xff8c00,darkorchid:0x9932cc,darkred:9109504,darksalmon:0xe9967a,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:0xff1493,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:0xb22222,floralwhite:0xfffaf0,forestgreen:2263842,fuchsia:0xff00ff,gainsboro:0xdcdcdc,ghostwhite:0xf8f8ff,gold:0xffd700,goldenrod:0xdaa520,gray:8421504,green:32768,greenyellow:0xadff2f,grey:8421504,honeydew:0xf0fff0,hotpink:0xff69b4,indianred:0xcd5c5c,indigo:4915330,ivory:0xfffff0,khaki:0xf0e68c,lavender:0xe6e6fa,lavenderblush:0xfff0f5,lawngreen:8190976,lemonchiffon:0xfffacd,lightblue:0xadd8e6,lightcoral:0xf08080,lightcyan:0xe0ffff,lightgoldenrodyellow:0xfafad2,lightgray:0xd3d3d3,lightgreen:9498256,lightgrey:0xd3d3d3,lightpink:0xffb6c1,lightsalmon:0xffa07a,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:0xb0c4de,lightyellow:0xffffe0,lime:65280,limegreen:3329330,linen:0xfaf0e6,magenta:0xff00ff,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:0xba55d3,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:0xc71585,midnightblue:1644912,mintcream:0xf5fffa,mistyrose:0xffe4e1,moccasin:0xffe4b5,navajowhite:0xffdead,navy:128,oldlace:0xfdf5e6,olive:8421376,olivedrab:7048739,orange:0xffa500,orangered:0xff4500,orchid:0xda70d6,palegoldenrod:0xeee8aa,palegreen:0x98fb98,paleturquoise:0xafeeee,palevioletred:0xdb7093,papayawhip:0xffefd5,peachpuff:0xffdab9,peru:0xcd853f,pink:0xffc0cb,plum:0xdda0dd,powderblue:0xb0e0e6,purple:8388736,rebeccapurple:6697881,red:0xff0000,rosybrown:0xbc8f8f,royalblue:4286945,saddlebrown:9127187,salmon:0xfa8072,sandybrown:0xf4a460,seagreen:3050327,seashell:0xfff5ee,sienna:0xa0522d,silver:0xc0c0c0,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:0xfffafa,springgreen:65407,steelblue:4620980,tan:0xd2b48c,teal:32896,thistle:0xd8bfd8,tomato:0xff6347,turquoise:4251856,violet:0xee82ee,wheat:0xf5deb3,white:0xffffff,whitesmoke:0xf5f5f5,yellow:0xffff00,yellowgreen:0x9acd32};function y(){return this.rgb().formatHex()}function m(){return this.rgb().formatRgb()}function g(t){var n,e;return t=(t+"").trim().toLowerCase(),(n=s.exec(t))?(e=n[1].length,n=parseInt(n[1],16),6===e?_(n):3===e?new A(n>>8&15|n>>4&240,n>>4&15|240&n,(15&n)<<4|15&n,1):8===e?w(n>>24&255,n>>16&255,n>>8&255,(255&n)/255):4===e?w(n>>12&15|n>>8&240,n>>8&15|n>>4&240,n>>4&15|240&n,((15&n)<<4|15&n)/255):null):(n=l.exec(t))?new A(n[1],n[2],n[3],1):(n=c.exec(t))?new A(255*n[1]/100,255*n[2]/100,255*n[3]/100,1):(n=f.exec(t))?w(n[1],n[2],n[3],n[4]):(n=h.exec(t))?w(255*n[1]/100,255*n[2]/100,255*n[3]/100,n[4]):(n=p.exec(t))?$(n[1],n[2]/100,n[3]/100,1):(n=d.exec(t))?$(n[1],n[2]/100,n[3]/100,n[4]):v.hasOwnProperty(t)?_(v[t]):"transparent"===t?new A(NaN,NaN,NaN,0):null}function _(t){return new A(t>>16&255,t>>8&255,255&t,1)}function w(t,n,e,r){return r<=0&&(t=n=e=NaN),new A(t,n,e,r)}function x(t){return(t instanceof i||(t=g(t)),t)?new A((t=t.rgb()).r,t.g,t.b,t.opacity):new A}function b(t,n,e,r){return 1==arguments.length?x(t):new A(t,n,e,null==r?1:r)}function A(t,n,e,r){this.r=+t,this.g=+n,this.b=+e,this.opacity=+r}function k(){return`#${z(this.r)}${z(this.g)}${z(this.b)}`}function M(){let t=N(this.opacity);return`${1===t?"rgb(":"rgba("}${E(this.r)}, ${E(this.g)}, ${E(this.b)}${1===t?")":`, ${t})`}`}function N(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function E(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function z(t){return((t=E(t))<16?"0":"")+t.toString(16)}function $(t,n,e,r){return r<=0?t=n=e=NaN:e<=0||e>=1?t=n=NaN:n<=0&&(t=NaN),new T(t,n,e,r)}function S(t){if(t instanceof T)return new T(t.h,t.s,t.l,t.opacity);if(t instanceof i||(t=g(t)),!t)return new T;if(t instanceof T)return t;var n=(t=t.rgb()).r/255,e=t.g/255,r=t.b/255,o=Math.min(n,e,r),a=Math.max(n,e,r),u=NaN,s=a-o,l=(a+o)/2;return s?(u=n===a?(e-r)/s+(e<r)*6:e===a?(r-n)/s+2:(n-e)/s+4,s/=l<.5?a+o:2-a-o,u*=60):s=l>0&&l<1?0:u,new T(u,s,l,t.opacity)}function T(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function C(t){return(t=(t||0)%360)<0?t+360:t}function X(t){return Math.max(0,Math.min(1,t||0))}function P(t,n,e){return(t<60?n+(e-n)*t/60:t<180?e:t<240?n+(e-n)*(240-t)/60:n)*255}(0,r.A)(i,g,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:y,formatHex:y,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return S(this).formatHsl()},formatRgb:m,toString:m}),(0,r.A)(A,b,(0,r.X)(i,{brighter(t){return t=null==t?1.4285714285714286:Math.pow(1.4285714285714286,t),new A(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=null==t?.7:Math.pow(.7,t),new A(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new A(E(this.r),E(this.g),E(this.b),N(this.opacity))},displayable(){return -.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:k,formatHex:k,formatHex8:function(){return`#${z(this.r)}${z(this.g)}${z(this.b)}${z((isNaN(this.opacity)?1:this.opacity)*255)}`},formatRgb:M,toString:M})),(0,r.A)(T,function(t,n,e,r){return 1==arguments.length?S(t):new T(t,n,e,null==r?1:r)},(0,r.X)(i,{brighter(t){return t=null==t?1.4285714285714286:Math.pow(1.4285714285714286,t),new T(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=null==t?.7:Math.pow(.7,t),new T(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,n=isNaN(t)||isNaN(this.s)?0:this.s,e=this.l,r=e+(e<.5?e:1-e)*n,i=2*e-r;return new A(P(t>=240?t-240:t+120,i,r),P(t,i,r),P(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new T(C(this.h),X(this.s),X(this.l),N(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let t=N(this.opacity);return`${1===t?"hsl(":"hsla("}${C(this.h)}, ${100*X(this.s)}%, ${100*X(this.l)}%${1===t?")":`, ${t})`}`}}))},50731:(t,n,e)=>{function r(){}function i(t){return null==t?r:function(){return this.querySelector(t)}}e.d(n,{A:()=>i})},51472:(t,n,e)=>{e.d(n,{A:()=>r});function r(t,n){return t*=1,n*=1,function(e){return t*(1-e)+n*e}}},52052:(t,n,e)=>{e.d(n,{Ay:()=>a});var r=e(47416);function i(t,n,e,r,i){var o=t*t,a=o*t;return((1-3*t+3*o-a)*n+(4-6*o+3*a)*e+(1+3*t+3*o-3*a)*r+a*i)/6}var o=e(73088);let a=function t(n){var e=(0,o.uN)(n);function i(t,n){var i=e((t=(0,r.Qh)(t)).r,(n=(0,r.Qh)(n)).r),a=e(t.g,n.g),u=e(t.b,n.b),s=(0,o.Ay)(t.opacity,n.opacity);return function(n){return t.r=i(n),t.g=a(n),t.b=u(n),t.opacity=s(n),t+""}}return i.gamma=t,i}(1);function u(t){return function(n){var e,i,o=n.length,a=Array(o),u=Array(o),s=Array(o);for(e=0;e<o;++e)i=(0,r.Qh)(n[e]),a[e]=i.r||0,u[e]=i.g||0,s[e]=i.b||0;return a=t(a),u=t(u),s=t(s),i.opacity=1,function(t){return i.r=a(t),i.g=u(t),i.b=s(t),i+""}}}u(function(t){var n=t.length-1;return function(e){var r=e<=0?e=0:e>=1?(e=1,n-1):Math.floor(e*n),o=t[r],a=t[r+1],u=r>0?t[r-1]:2*o-a,s=r<n-1?t[r+2]:2*a-o;return i((e-r/n)*n,u,o,a,s)}}),u(function(t){var n=t.length;return function(e){var r=Math.floor(((e%=1)<0?++e:e)*n),o=t[(r+n-1)%n],a=t[r%n],u=t[(r+1)%n],s=t[(r+2)%n];return i((e-r/n)*n,o,a,u,s)}})},52504:(t,n,e)=>{e.d(n,{M4:()=>v,O1:()=>y,tB:()=>p});var r,i,o=0,a=0,u=0,s=0,l=0,c=0,f="object"==typeof performance&&performance.now?performance:Date,h="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function p(){return l||(h(d),l=f.now()+c)}function d(){l=0}function v(){this._call=this._time=this._next=null}function y(t,n,e){var r=new v;return r.restart(t,n,e),r}function m(){l=(s=f.now())+c,o=a=0;try{p(),++o;for(var t,n=r;n;)(t=l-n._time)>=0&&n._call.call(void 0,t),n=n._next;--o}finally{o=0,function(){for(var t,n,e=r,o=1/0;e;)e._call?(o>e._time&&(o=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:r=n);i=t,_(o)}(),l=0}}function g(){var t=f.now(),n=t-s;n>1e3&&(c-=n,s=t)}function _(t){!o&&(a&&(a=clearTimeout(a)),t-l>24?(t<1/0&&(a=setTimeout(m,t-f.now()-c)),u&&(u=clearInterval(u))):(u||(s=f.now(),u=setInterval(g,1e3)),o=1,h(m)))}v.prototype=y.prototype={constructor:v,restart:function(t,n,e){if("function"!=typeof t)throw TypeError("callback is not a function");e=(null==e?p():+e)+(null==n?0:+n),this._next||i===this||(i?i._next=this:r=this,i=this),this._call=t,this._time=e,_()},stop:function(){this._call&&(this._call=null,this._time=1/0,_())}}},52849:(t,n,e)=>{e.d(n,{A:()=>i});var r=e(75782);function i(t){var n=t+="",e=n.indexOf(":");return e>=0&&"xmlns"!==(n=t.slice(0,e))&&(t=t.slice(e+1)),r.A.hasOwnProperty(n)?{space:r.A[n],local:t}:t}},54540:(t,n,e)=>{e.d(n,{A:()=>u});var r={value:()=>{}};function i(){for(var t,n=0,e=arguments.length,r={};n<e;++n){if(!(t=arguments[n]+"")||t in r||/[\s.]/.test(t))throw Error("illegal type: "+t);r[t]=[]}return new o(r)}function o(t){this._=t}function a(t,n,e){for(var i=0,o=t.length;i<o;++i)if(t[i].name===n){t[i]=r,t=t.slice(0,i).concat(t.slice(i+1));break}return null!=e&&t.push({name:n,value:e}),t}o.prototype=i.prototype={constructor:o,on:function(t,n){var e,r=this._,i=(t+"").trim().split(/^|\s+/).map(function(t){var n="",e=t.indexOf(".");if(e>=0&&(n=t.slice(e+1),t=t.slice(0,e)),t&&!r.hasOwnProperty(t))throw Error("unknown type: "+t);return{type:t,name:n}}),o=-1,u=i.length;if(arguments.length<2){for(;++o<u;)if((e=(t=i[o]).type)&&(e=function(t,n){for(var e,r=0,i=t.length;r<i;++r)if((e=t[r]).name===n)return e.value}(r[e],t.name)))return e;return}if(null!=n&&"function"!=typeof n)throw Error("invalid callback: "+n);for(;++o<u;)if(e=(t=i[o]).type)r[e]=a(r[e],t.name,n);else if(null==n)for(e in r)r[e]=a(r[e],t.name,null);return this},copy:function(){var t={},n=this._;for(var e in n)t[e]=n[e].slice();return new o(t)},call:function(t,n){if((e=arguments.length-2)>0)for(var e,r,i=Array(e),o=0;o<e;++o)i[o]=arguments[o+2];if(!this._.hasOwnProperty(t))throw Error("unknown type: "+t);for(r=this._[t],o=0,e=r.length;o<e;++o)r[o].value.apply(n,i)},apply:function(t,n,e){if(!this._.hasOwnProperty(t))throw Error("unknown type: "+t);for(var r=this._[t],i=0,o=r.length;i<o;++i)r[i].value.apply(n,e)}};let u=i},55511:(t,n,e)=>{e.d(n,{Ay:()=>a,GK:()=>o,Rw:()=>i,vr:()=>r});let r={passive:!1},i={capture:!0,passive:!1};function o(t){t.stopImmediatePropagation()}function a(t){t.preventDefault(),t.stopImmediatePropagation()}},65095:(t,n,e)=>{e.d(n,{A:()=>r});function r(t,n){if(t=function(t){let n;for(;n=t.sourceEvent;)t=n;return t}(t),void 0===n&&(n=t.currentTarget),n){var e=n.ownerSVGElement||n;if(e.createSVGPoint){var r=e.createSVGPoint();return r.x=t.clientX,r.y=t.clientY,[(r=r.matrixTransform(n.getScreenCTM().inverse())).x,r.y]}if(n.getBoundingClientRect){var i=n.getBoundingClientRect();return[t.clientX-i.left-n.clientLeft,t.clientY-i.top-n.clientTop]}}return[t.pageX,t.pageY]}},73088:(t,n,e)=>{e.d(n,{Ay:()=>u,lG:()=>o,uN:()=>a});var r=e(88313);function i(t,n){return function(e){return t+e*n}}function o(t,n){var e=n-t;return e?i(t,e>180||e<-180?e-360*Math.round(e/360):e):(0,r.A)(isNaN(t)?n:t)}function a(t){return 1==(t*=1)?u:function(n,e){var i,o,a;return e-n?(i=n,o=e,i=Math.pow(i,a=t),o=Math.pow(o,a)-i,a=1/a,function(t){return Math.pow(i+t*o,a)}):(0,r.A)(isNaN(n)?e:n)}}function u(t,n){var e=n-t;return e?i(t,e):(0,r.A)(isNaN(t)?n:t)}},75782:(t,n,e)=>{e.d(n,{A:()=>i,g:()=>r});var r="http://www.w3.org/1999/xhtml";let i={svg:"http://www.w3.org/2000/svg",xhtml:r,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"}},77633:(t,n,e)=>{e.d(n,{s_:()=>b,GS:()=>h,_V:()=>p});var r=e(54540),i=e(43399),o=e(86),a=e(87426),u=e(65095),s=e(85189);let l=t=>()=>t;function c(t,{sourceEvent:n,target:e,transform:r,dispatch:i}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},target:{value:e,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:i}})}function f(t,n,e){this.k=t,this.x=n,this.y=e}f.prototype={constructor:f,scale:function(t){return 1===t?this:new f(this.k*t,this.x,this.y)},translate:function(t,n){return 0===t&0===n?this:new f(this.k,this.x+this.k*t,this.y+this.k*n)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var h=new f(1,0,0);function p(t){for(;!t.__zoom;)if(!(t=t.parentNode))return h;return t.__zoom}function d(t){t.stopImmediatePropagation()}function v(t){t.preventDefault(),t.stopImmediatePropagation()}function y(t){return(!t.ctrlKey||"wheel"===t.type)&&!t.button}function m(){var t=this;return t instanceof SVGElement?(t=t.ownerSVGElement||t).hasAttribute("viewBox")?[[(t=t.viewBox.baseVal).x,t.y],[t.x+t.width,t.y+t.height]]:[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]:[[0,0],[t.clientWidth,t.clientHeight]]}function g(){return this.__zoom||h}function _(t){return-t.deltaY*(1===t.deltaMode?.05:t.deltaMode?1:.002)*(t.ctrlKey?10:1)}function w(){return navigator.maxTouchPoints||"ontouchstart"in this}function x(t,n,e){var r=t.invertX(n[0][0])-e[0][0],i=t.invertX(n[1][0])-e[1][0],o=t.invertY(n[0][1])-e[0][1],a=t.invertY(n[1][1])-e[1][1];return t.translate(i>r?(r+i)/2:Math.min(0,r)||Math.max(0,i),a>o?(o+a)/2:Math.min(0,o)||Math.max(0,a))}function b(){var t,n,e,p=y,b=m,A=x,k=_,M=w,N=[0,1/0],E=[[-1/0,-1/0],[1/0,1/0]],z=250,$=o.A,S=(0,r.A)("start","zoom","end"),T=0,C=10;function X(t){t.property("__zoom",g).on("wheel.zoom",D,{passive:!1}).on("mousedown.zoom",B).on("dblclick.zoom",V).filter(M).on("touchstart.zoom",I).on("touchmove.zoom",L).on("touchend.zoom touchcancel.zoom",H).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function P(t,n){return(n=Math.max(N[0],Math.min(N[1],n)))===t.k?t:new f(n,t.x,t.y)}function q(t,n,e){var r=n[0]-e[0]*t.k,i=n[1]-e[1]*t.k;return r===t.x&&i===t.y?t:new f(t.k,r,i)}function j(t){return[(+t[0][0]+ +t[1][0])/2,(+t[0][1]+ +t[1][1])/2]}function R(t,n,e,r){t.on("start.zoom",function(){O(this,arguments).event(r).start()}).on("interrupt.zoom end.zoom",function(){O(this,arguments).event(r).end()}).tween("zoom",function(){var t=arguments,i=O(this,t).event(r),o=b.apply(this,t),a=null==e?j(o):"function"==typeof e?e.apply(this,t):e,u=Math.max(o[1][0]-o[0][0],o[1][1]-o[0][1]),s=this.__zoom,l="function"==typeof n?n.apply(this,t):n,c=$(s.invert(a).concat(u/s.k),l.invert(a).concat(u/l.k));return function(t){if(1===t)t=l;else{var n=c(t),e=u/n[2];t=new f(e,a[0]-n[0]*e,a[1]-n[1]*e)}i.zoom(null,t)}})}function O(t,n,e){return!e&&t.__zooming||new Y(t,n)}function Y(t,n){this.that=t,this.args=n,this.active=0,this.sourceEvent=null,this.extent=b.apply(t,n),this.taps=0}function D(t,...n){if(p.apply(this,arguments)){var e=O(this,n).event(t),r=this.__zoom,i=Math.max(N[0],Math.min(N[1],r.k*Math.pow(2,k.apply(this,arguments)))),o=(0,u.A)(t);if(e.wheel)(e.mouse[0][0]!==o[0]||e.mouse[0][1]!==o[1])&&(e.mouse[1]=r.invert(e.mouse[0]=o)),clearTimeout(e.wheel);else{if(r.k===i)return;e.mouse=[o,r.invert(o)],(0,s.G)(this),e.start()}v(t),e.wheel=setTimeout(function(){e.wheel=null,e.end()},150),e.zoom("mouse",A(q(P(r,i),e.mouse[0],e.mouse[1]),e.extent,E))}}function B(t,...n){if(!e&&p.apply(this,arguments)){var r=t.currentTarget,o=O(this,n,!0).event(t),l=(0,a.A)(t.view).on("mousemove.zoom",function(t){if(v(t),!o.moved){var n=t.clientX-f,e=t.clientY-h;o.moved=n*n+e*e>T}o.event(t).zoom("mouse",A(q(o.that.__zoom,o.mouse[0]=(0,u.A)(t,r),o.mouse[1]),o.extent,E))},!0).on("mouseup.zoom",function(t){l.on("mousemove.zoom mouseup.zoom",null),(0,i.y)(t.view,o.moved),v(t),o.event(t).end()},!0),c=(0,u.A)(t,r),f=t.clientX,h=t.clientY;(0,i.A)(t.view),d(t),o.mouse=[c,this.__zoom.invert(c)],(0,s.G)(this),o.start()}}function V(t,...n){if(p.apply(this,arguments)){var e=this.__zoom,r=(0,u.A)(t.changedTouches?t.changedTouches[0]:t,this),i=e.invert(r),o=e.k*(t.shiftKey?.5:2),s=A(q(P(e,o),r,i),b.apply(this,n),E);v(t),z>0?(0,a.A)(this).transition().duration(z).call(R,s,r,t):(0,a.A)(this).call(X.transform,s,r,t)}}function I(e,...r){if(p.apply(this,arguments)){var i,o,a,l,c=e.touches,f=c.length,h=O(this,r,e.changedTouches.length===f).event(e);for(d(e),o=0;o<f;++o)a=c[o],l=[l=(0,u.A)(a,this),this.__zoom.invert(l),a.identifier],h.touch0?h.touch1||h.touch0[2]===l[2]||(h.touch1=l,h.taps=0):(h.touch0=l,i=!0,h.taps=1+!!t);t&&(t=clearTimeout(t)),i&&(h.taps<2&&(n=l[0],t=setTimeout(function(){t=null},500)),(0,s.G)(this),h.start())}}function L(t,...n){if(this.__zooming){var e,r,i,o,a=O(this,n).event(t),s=t.changedTouches,l=s.length;for(v(t),e=0;e<l;++e)r=s[e],i=(0,u.A)(r,this),a.touch0&&a.touch0[2]===r.identifier?a.touch0[0]=i:a.touch1&&a.touch1[2]===r.identifier&&(a.touch1[0]=i);if(r=a.that.__zoom,a.touch1){var c=a.touch0[0],f=a.touch0[1],h=a.touch1[0],p=a.touch1[1],d=(d=h[0]-c[0])*d+(d=h[1]-c[1])*d,y=(y=p[0]-f[0])*y+(y=p[1]-f[1])*y;r=P(r,Math.sqrt(d/y)),i=[(c[0]+h[0])/2,(c[1]+h[1])/2],o=[(f[0]+p[0])/2,(f[1]+p[1])/2]}else{if(!a.touch0)return;i=a.touch0[0],o=a.touch0[1]}a.zoom("touch",A(q(r,i,o),a.extent,E))}}function H(t,...r){if(this.__zooming){var i,o,s=O(this,r).event(t),l=t.changedTouches,c=l.length;for(d(t),e&&clearTimeout(e),e=setTimeout(function(){e=null},500),i=0;i<c;++i)o=l[i],s.touch0&&s.touch0[2]===o.identifier?delete s.touch0:s.touch1&&s.touch1[2]===o.identifier&&delete s.touch1;if(s.touch1&&!s.touch0&&(s.touch0=s.touch1,delete s.touch1),s.touch0)s.touch0[1]=this.__zoom.invert(s.touch0[0]);else if(s.end(),2===s.taps&&(o=(0,u.A)(o,this),Math.hypot(n[0]-o[0],n[1]-o[1])<C)){var f=(0,a.A)(this).on("dblclick.zoom");f&&f.apply(this,arguments)}}}return X.transform=function(t,n,e,r){var i=t.selection?t.selection():t;i.property("__zoom",g),t!==i?R(t,n,e,r):i.interrupt().each(function(){O(this,arguments).event(r).start().zoom(null,"function"==typeof n?n.apply(this,arguments):n).end()})},X.scaleBy=function(t,n,e,r){X.scaleTo(t,function(){var t=this.__zoom.k,e="function"==typeof n?n.apply(this,arguments):n;return t*e},e,r)},X.scaleTo=function(t,n,e,r){X.transform(t,function(){var t=b.apply(this,arguments),r=this.__zoom,i=null==e?j(t):"function"==typeof e?e.apply(this,arguments):e,o=r.invert(i),a="function"==typeof n?n.apply(this,arguments):n;return A(q(P(r,a),i,o),t,E)},e,r)},X.translateBy=function(t,n,e,r){X.transform(t,function(){return A(this.__zoom.translate("function"==typeof n?n.apply(this,arguments):n,"function"==typeof e?e.apply(this,arguments):e),b.apply(this,arguments),E)},null,r)},X.translateTo=function(t,n,e,r,i){X.transform(t,function(){var t=b.apply(this,arguments),i=this.__zoom,o=null==r?j(t):"function"==typeof r?r.apply(this,arguments):r;return A(h.translate(o[0],o[1]).scale(i.k).translate("function"==typeof n?-n.apply(this,arguments):-n,"function"==typeof e?-e.apply(this,arguments):-e),t,E)},r,i)},Y.prototype={event:function(t){return t&&(this.sourceEvent=t),this},start:function(){return 1==++this.active&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(t,n){return this.mouse&&"mouse"!==t&&(this.mouse[1]=n.invert(this.mouse[0])),this.touch0&&"touch"!==t&&(this.touch0[1]=n.invert(this.touch0[0])),this.touch1&&"touch"!==t&&(this.touch1[1]=n.invert(this.touch1[0])),this.that.__zoom=n,this.emit("zoom"),this},end:function(){return 0==--this.active&&(delete this.that.__zooming,this.emit("end")),this},emit:function(t){var n=(0,a.A)(this.that).datum();S.call(t,this.that,new c(t,{sourceEvent:this.sourceEvent,target:X,type:t,transform:this.that.__zoom,dispatch:S}),n)}},X.wheelDelta=function(t){return arguments.length?(k="function"==typeof t?t:l(+t),X):k},X.filter=function(t){return arguments.length?(p="function"==typeof t?t:l(!!t),X):p},X.touchable=function(t){return arguments.length?(M="function"==typeof t?t:l(!!t),X):M},X.extent=function(t){return arguments.length?(b="function"==typeof t?t:l([[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]]),X):b},X.scaleExtent=function(t){return arguments.length?(N[0]=+t[0],N[1]=+t[1],X):[N[0],N[1]]},X.translateExtent=function(t){return arguments.length?(E[0][0]=+t[0][0],E[1][0]=+t[1][0],E[0][1]=+t[0][1],E[1][1]=+t[1][1],X):[[E[0][0],E[0][1]],[E[1][0],E[1][1]]]},X.constrain=function(t){return arguments.length?(A=t,X):A},X.duration=function(t){return arguments.length?(z=+t,X):z},X.interpolate=function(t){return arguments.length?($=t,X):$},X.on=function(){var t=S.on.apply(S,arguments);return t===S?X:t},X.clickDistance=function(t){return arguments.length?(T=(t*=1)*t,X):Math.sqrt(T)},X.tapDistance=function(t){return arguments.length?(C=+t,X):C},X}p.prototype=f.prototype},85189:(t,n,e)=>{e.d(n,{G:()=>d});var r,i=e(42489),o=e(54540),a=e(52504);function u(t,n,e){var r=new a.M4;return n=null==n?0:+n,r.restart(e=>{r.stop(),t(e+n)},n,e),r}var s=(0,o.A)("start","end","cancel","interrupt"),l=[];function c(t,n,e,r,i,o){var c=t.__transition;if(c){if(e in c)return}else t.__transition={};!function(t,n,e){var r,i=t.__transition;function o(a){var c,f,h,p;if(1!==e.state)return l();for(c in i)if((p=i[c]).name===e.name){if(3===p.state)return u(o);4===p.state?(p.state=6,p.timer.stop(),p.on.call("interrupt",t,t.__data__,p.index,p.group),delete i[c]):+c<n&&(p.state=6,p.timer.stop(),p.on.call("cancel",t,t.__data__,p.index,p.group),delete i[c])}if(u(function(){3===e.state&&(e.state=4,e.timer.restart(s,e.delay,e.time),s(a))}),e.state=2,e.on.call("start",t,t.__data__,e.index,e.group),2===e.state){for(c=0,e.state=3,r=Array(h=e.tween.length),f=-1;c<h;++c)(p=e.tween[c].value.call(t,t.__data__,e.index,e.group))&&(r[++f]=p);r.length=f+1}}function s(n){for(var i=n<e.duration?e.ease.call(null,n/e.duration):(e.timer.restart(l),e.state=5,1),o=-1,a=r.length;++o<a;)r[o].call(t,i);5===e.state&&(e.on.call("end",t,t.__data__,e.index,e.group),l())}function l(){for(var r in e.state=6,e.timer.stop(),delete i[n],i)return;delete t.__transition}i[n]=e,e.timer=(0,a.O1)(function(t){e.state=1,e.timer.restart(o,e.delay,e.time),e.delay<=t&&o(t-e.delay)},0,e.time)}(t,e,{name:n,index:r,group:i,on:s,tween:l,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:0})}function f(t,n){var e=p(t,n);if(e.state>0)throw Error("too late; already scheduled");return e}function h(t,n){var e=p(t,n);if(e.state>3)throw Error("too late; already running");return e}function p(t,n){var e=t.__transition;if(!e||!(e=e[n]))throw Error("transition not found");return e}function d(t,n){var e,r,i,o=t.__transition,a=!0;if(o){for(i in n=null==n?null:n+"",o){if((e=o[i]).name!==n){a=!1;continue}r=e.state>2&&e.state<5,e.state=6,e.timer.stop(),e.on.call(r?"interrupt":"cancel",t,t.__data__,e.index,e.group),delete o[i]}a&&delete t.__transition}}var v=e(51472),y=180/Math.PI,m={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function g(t,n,e,r,i,o){var a,u,s;return(a=Math.sqrt(t*t+n*n))&&(t/=a,n/=a),(s=t*e+n*r)&&(e-=t*s,r-=n*s),(u=Math.sqrt(e*e+r*r))&&(e/=u,r/=u,s/=u),t*r<n*e&&(t=-t,n=-n,s=-s,a=-a),{translateX:i,translateY:o,rotate:Math.atan2(n,t)*y,skewX:Math.atan(s)*y,scaleX:a,scaleY:u}}function _(t,n,e,r){function i(t){return t.length?t.pop()+" ":""}return function(o,a){var u,s,l,c,f=[],h=[];return o=t(o),a=t(a),!function(t,r,i,o,a,u){if(t!==i||r!==o){var s=a.push("translate(",null,n,null,e);u.push({i:s-4,x:(0,v.A)(t,i)},{i:s-2,x:(0,v.A)(r,o)})}else(i||o)&&a.push("translate("+i+n+o+e)}(o.translateX,o.translateY,a.translateX,a.translateY,f,h),u=o.rotate,s=a.rotate,u!==s?(u-s>180?s+=360:s-u>180&&(u+=360),h.push({i:f.push(i(f)+"rotate(",null,r)-2,x:(0,v.A)(u,s)})):s&&f.push(i(f)+"rotate("+s+r),l=o.skewX,c=a.skewX,l!==c?h.push({i:f.push(i(f)+"skewX(",null,r)-2,x:(0,v.A)(l,c)}):c&&f.push(i(f)+"skewX("+c+r),!function(t,n,e,r,o,a){if(t!==e||n!==r){var u=o.push(i(o)+"scale(",null,",",null,")");a.push({i:u-4,x:(0,v.A)(t,e)},{i:u-2,x:(0,v.A)(n,r)})}else(1!==e||1!==r)&&o.push(i(o)+"scale("+e+","+r+")")}(o.scaleX,o.scaleY,a.scaleX,a.scaleY,f,h),o=a=null,function(t){for(var n,e=-1,r=h.length;++e<r;)f[(n=h[e]).i]=n.x(t);return f.join("")}}}var w=_(function(t){let n=new("function"==typeof DOMMatrix?DOMMatrix:WebKitCSSMatrix)(t+"");return n.isIdentity?m:g(n.a,n.b,n.c,n.d,n.e,n.f)},"px, ","px)","deg)"),x=_(function(t){return null==t?m:(r||(r=document.createElementNS("http://www.w3.org/2000/svg","g")),r.setAttribute("transform",t),t=r.transform.baseVal.consolidate())?g((t=t.matrix).a,t.b,t.c,t.d,t.e,t.f):m},", ",")",")"),b=e(52849);function A(t,n,e){var r=t._id;return t.each(function(){var t=h(this,r);(t.value||(t.value={}))[n]=e.apply(this,arguments)}),function(t){return p(t,r).value[n]}}var k=e(47416),M=e(52052),N=e(15764);function E(t,n){var e;return("number"==typeof n?v.A:n instanceof k.Ay?M.Ay:(e=(0,k.Ay)(n))?(n=e,M.Ay):N.A)(t,n)}var z=e(33448),$=e(50731),S=e(33846),T=i.Ay.prototype.constructor,C=e(27390);function X(t){return function(){this.style.removeProperty(t)}}var P=0;function q(t,n,e,r){this._groups=t,this._parents=n,this._name=e,this._id=r}var j=i.Ay.prototype;q.prototype=(function(t){return(0,i.Ay)().transition(t)}).prototype={constructor:q,select:function(t){var n=this._name,e=this._id;"function"!=typeof t&&(t=(0,$.A)(t));for(var r=this._groups,i=r.length,o=Array(i),a=0;a<i;++a)for(var u,s,l=r[a],f=l.length,h=o[a]=Array(f),d=0;d<f;++d)(u=l[d])&&(s=t.call(u,u.__data__,d,l))&&("__data__"in u&&(s.__data__=u.__data__),h[d]=s,c(h[d],n,e,d,h,p(u,e)));return new q(o,this._parents,n,e)},selectAll:function(t){var n=this._name,e=this._id;"function"!=typeof t&&(t=(0,S.A)(t));for(var r=this._groups,i=r.length,o=[],a=[],u=0;u<i;++u)for(var s,l=r[u],f=l.length,h=0;h<f;++h)if(s=l[h]){for(var d,v=t.call(s,s.__data__,h,l),y=p(s,e),m=0,g=v.length;m<g;++m)(d=v[m])&&c(d,n,e,m,v,y);o.push(v),a.push(s)}return new q(o,a,n,e)},selectChild:j.selectChild,selectChildren:j.selectChildren,filter:function(t){"function"!=typeof t&&(t=(0,z.A)(t));for(var n=this._groups,e=n.length,r=Array(e),i=0;i<e;++i)for(var o,a=n[i],u=a.length,s=r[i]=[],l=0;l<u;++l)(o=a[l])&&t.call(o,o.__data__,l,a)&&s.push(o);return new q(r,this._parents,this._name,this._id)},merge:function(t){if(t._id!==this._id)throw Error();for(var n=this._groups,e=t._groups,r=n.length,i=e.length,o=Math.min(r,i),a=Array(r),u=0;u<o;++u)for(var s,l=n[u],c=e[u],f=l.length,h=a[u]=Array(f),p=0;p<f;++p)(s=l[p]||c[p])&&(h[p]=s);for(;u<r;++u)a[u]=n[u];return new q(a,this._parents,this._name,this._id)},selection:function(){return new T(this._groups,this._parents)},transition:function(){for(var t=this._name,n=this._id,e=++P,r=this._groups,i=r.length,o=0;o<i;++o)for(var a,u=r[o],s=u.length,l=0;l<s;++l)if(a=u[l]){var f=p(a,n);c(a,t,e,l,u,{time:f.time+f.delay+f.duration,delay:0,duration:f.duration,ease:f.ease})}return new q(r,this._parents,t,e)},call:j.call,nodes:j.nodes,node:j.node,size:j.size,empty:j.empty,each:j.each,on:function(t,n){var e,r,i,o,a,u,s=this._id;return arguments.length<2?p(this.node(),s).on.on(t):this.each((e=s,r=t,i=n,u=(r+"").trim().split(/^|\s+/).every(function(t){var n=t.indexOf(".");return n>=0&&(t=t.slice(0,n)),!t||"start"===t})?f:h,function(){var t=u(this,e),n=t.on;n!==o&&(a=(o=n).copy()).on(r,i),t.on=a}))},attr:function(t,n){var e=(0,b.A)(t),r="transform"===e?x:E;return this.attrTween(t,"function"==typeof n?(e.local?function(t,n,e){var r,i,o;return function(){var a,u,s=e(this);return null==s?void this.removeAttributeNS(t.space,t.local):(a=this.getAttributeNS(t.space,t.local))===(u=s+"")?null:a===r&&u===i?o:(i=u,o=n(r=a,s))}}:function(t,n,e){var r,i,o;return function(){var a,u,s=e(this);return null==s?void this.removeAttribute(t):(a=this.getAttribute(t))===(u=s+"")?null:a===r&&u===i?o:(i=u,o=n(r=a,s))}})(e,r,A(this,"attr."+t,n)):null==n?(e.local?function(t){return function(){this.removeAttributeNS(t.space,t.local)}}:function(t){return function(){this.removeAttribute(t)}})(e):(e.local?function(t,n,e){var r,i,o=e+"";return function(){var a=this.getAttributeNS(t.space,t.local);return a===o?null:a===r?i:i=n(r=a,e)}}:function(t,n,e){var r,i,o=e+"";return function(){var a=this.getAttribute(t);return a===o?null:a===r?i:i=n(r=a,e)}})(e,r,n))},attrTween:function(t,n){var e="attr."+t;if(arguments.length<2)return(e=this.tween(e))&&e._value;if(null==n)return this.tween(e,null);if("function"!=typeof n)throw Error();var r=(0,b.A)(t);return this.tween(e,(r.local?function(t,n){var e,r;function i(){var i=n.apply(this,arguments);return i!==r&&(e=(r=i)&&function(n){this.setAttributeNS(t.space,t.local,i.call(this,n))}),e}return i._value=n,i}:function(t,n){var e,r;function i(){var i=n.apply(this,arguments);return i!==r&&(e=(r=i)&&function(n){this.setAttribute(t,i.call(this,n))}),e}return i._value=n,i})(r,n))},style:function(t,n,e){var r,i,o,a,u,s,l,c,f,p,d,v,y,m,g,_,x,b,k,M,N,z="transform"==(t+="")?w:E;return null==n?this.styleTween(t,(r=t,function(){var t=(0,C.j)(this,r),n=(this.style.removeProperty(r),(0,C.j)(this,r));return t===n?null:t===i&&n===o?a:a=z(i=t,o=n)})).on("end.style."+t,X(t)):"function"==typeof n?this.styleTween(t,(u=t,s=A(this,"style."+t,n),function(){var t=(0,C.j)(this,u),n=s(this),e=n+"";return null==n&&(this.style.removeProperty(u),e=n=(0,C.j)(this,u)),t===e?null:t===l&&e===c?f:(c=e,f=z(l=t,n))})).each((p=this._id,x="end."+(_="style."+(d=t)),function(){var t=h(this,p),n=t.on,e=null==t.value[_]?g||(g=X(d)):void 0;(n!==v||m!==e)&&(y=(v=n).copy()).on(x,m=e),t.on=y})):this.styleTween(t,(b=t,N=n+"",function(){var t=(0,C.j)(this,b);return t===N?null:t===k?M:M=z(k=t,n)}),e).on("end.style."+t,null)},styleTween:function(t,n,e){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==n)return this.tween(r,null);if("function"!=typeof n)throw Error();return this.tween(r,function(t,n,e){var r,i;function o(){var o=n.apply(this,arguments);return o!==i&&(r=(i=o)&&function(n){this.style.setProperty(t,o.call(this,n),e)}),r}return o._value=n,o}(t,n,null==e?"":e))},text:function(t){var n,e;return this.tween("text","function"==typeof t?(n=A(this,"text",t),function(){var t=n(this);this.textContent=null==t?"":t}):(e=null==t?"":t+"",function(){this.textContent=e}))},textTween:function(t){var n="text";if(arguments.length<1)return(n=this.tween(n))&&n._value;if(null==t)return this.tween(n,null);if("function"!=typeof t)throw Error();return this.tween(n,function(t){var n,e;function r(){var r=t.apply(this,arguments);return r!==e&&(n=(e=r)&&function(t){this.textContent=r.call(this,t)}),n}return r._value=t,r}(t))},remove:function(){var t;return this.on("end.remove",(t=this._id,function(){var n=this.parentNode;for(var e in this.__transition)if(+e!==t)return;n&&n.removeChild(this)}))},tween:function(t,n){var e=this._id;if(t+="",arguments.length<2){for(var r,i=p(this.node(),e).tween,o=0,a=i.length;o<a;++o)if((r=i[o]).name===t)return r.value;return null}return this.each((null==n?function(t,n){var e,r;return function(){var i=h(this,t),o=i.tween;if(o!==e){r=e=o;for(var a=0,u=r.length;a<u;++a)if(r[a].name===n){(r=r.slice()).splice(a,1);break}}i.tween=r}}:function(t,n,e){var r,i;if("function"!=typeof e)throw Error();return function(){var o=h(this,t),a=o.tween;if(a!==r){i=(r=a).slice();for(var u={name:n,value:e},s=0,l=i.length;s<l;++s)if(i[s].name===n){i[s]=u;break}s===l&&i.push(u)}o.tween=i}})(e,t,n))},delay:function(t){var n=this._id;return arguments.length?this.each(("function"==typeof t?function(t,n){return function(){f(this,t).delay=+n.apply(this,arguments)}}:function(t,n){return n*=1,function(){f(this,t).delay=n}})(n,t)):p(this.node(),n).delay},duration:function(t){var n=this._id;return arguments.length?this.each(("function"==typeof t?function(t,n){return function(){h(this,t).duration=+n.apply(this,arguments)}}:function(t,n){return n*=1,function(){h(this,t).duration=n}})(n,t)):p(this.node(),n).duration},ease:function(t){var n=this._id;return arguments.length?this.each(function(t,n){if("function"!=typeof n)throw Error();return function(){h(this,t).ease=n}}(n,t)):p(this.node(),n).ease},easeVarying:function(t){var n;if("function"!=typeof t)throw Error();return this.each((n=this._id,function(){var e=t.apply(this,arguments);if("function"!=typeof e)throw Error();h(this,n).ease=e}))},end:function(){var t,n,e=this,r=e._id,i=e.size();return new Promise(function(o,a){var u={value:a},s={value:function(){0==--i&&o()}};e.each(function(){var e=h(this,r),i=e.on;i!==t&&((n=(t=i).copy())._.cancel.push(u),n._.interrupt.push(u),n._.end.push(s)),e.on=n}),0===i&&o()})},[Symbol.iterator]:j[Symbol.iterator]};var R={time:null,delay:0,duration:250,ease:function(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}};i.Ay.prototype.interrupt=function(t){return this.each(function(){d(this,t)})},i.Ay.prototype.transition=function(t){var n,e;t instanceof q?(n=t._id,t=t._name):(n=++P,(e=R).time=(0,a.tB)(),t=null==t?null:t+"");for(var r=this._groups,i=r.length,o=0;o<i;++o)for(var u,s=r[o],l=s.length,f=0;f<l;++f)(u=s[f])&&c(u,t,n,f,s,e||function(t,n){for(var e;!(e=t.__transition)||!(e=e[n]);)if(!(t=t.parentNode))throw Error(`transition ${n} not found`);return e}(u,n));return new q(r,this._parents,t,n)}},87426:(t,n,e)=>{e.d(n,{A:()=>i});var r=e(42489);function i(t){return"string"==typeof t?new r.LN([[document.querySelector(t)]],[document.documentElement]):new r.LN([[t]],r.zr)}},88313:(t,n,e)=>{e.d(n,{A:()=>r});let r=t=>()=>t}}]);
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1220],{31220:(e,t,i)=>{i.d(t,{diagram:()=>j});var r=i(71363),n=i(56619),o=i(7650),s=i(73283),a=i(72902),l=i(23530),d=i(18776),c=i(95174),h=i(32422),p=/[─━│┃└┗├┣]/,f=/[└┗├┣]/,g=/[─━]/,u=/^[\s│┃]+$/,w=/^\s*(title[\t ]|accTitle[\t ]*:|accDescr[\t ]*[:{])/,x=/^\s*%%/;function m(e){return e.some(e=>p.test(e))}function b(e){for(let t of e){let e=f.exec(t);if(e?.index&&e.index>0)return e.index}return 4}function y(e,t){return e.replace(/\bline\s+(\d+)\b/gi,(e,i)=>{let r=parseInt(i,10),n=t.get(r);return n?`line ${n}`:e})}function $(e){let t=e.split("\n"),i=new Map,r=-1;for(let[e,i]of t.entries())if("treeView-beta"===i.trim()){r=e;break}if(-1===r)return{text:e,lineMap:i};let n=[];for(let e=r+1;e<t.length;e++){let i=t[e];!(""===i.trim()||x.test(i)||w.test(i))&&(u.test(i)||n.push(i.replace(/\t/g," ")))}if(!m(n))return{text:e,lineMap:i};let o=b(n),s=[],a=0;for(let e=0;e<=r;e++)s.push(t[e]),a++,i.set(a,e+1);for(let e=r+1;e<t.length;e++){let r=t[e],n=r.trim(),l=e+1;if(""===n||x.test(r)||w.test(r)){s.push(r),a++,i.set(a,l);continue}if(u.test(r))continue;let d=r.replace(/\t/g," "),c=f.exec(d);if(c?.index!==void 0){let e=c.index,t=Math.round(e/o)+1,r=e+1;for(;r<d.length&&g.test(d[r]);)r++;for(;r<d.length&&" "===d[r];)r++;let n=d.slice(r).trimEnd();if(!n)throw Error(`Line ${l}: Empty node \u2014 expected a filename or directory name after the box-drawing prefix`);let h=" ".repeat(t);s.push(h+n),a++,i.set(a,l)}else if(/^[\s─━│┃└┗├┣]+$/.test(d))continue;else if(p.test(d))s.push(r),a++,i.set(a,l);else if(/^\s+/.test(d))throw Error(`Line ${l}: Unexpected indentation without box-drawing characters. In box-drawing format, use \u251C\u2500\u2500 or \u2514\u2500\u2500 prefixes for indented nodes.`);else s.push(r),a++,i.set(a,l)}return{text:s.join("\n"),lineMap:i}}(0,c.K)(m,"isBoxDrawingFormat"),(0,c.K)(b,"inferSegmentWidth"),(0,c.K)(y,"remapErrorLines"),(0,c.K)($,"preprocessBoxDrawing");var k=new r.m(()=>({cnt:1,stack:[{id:0,level:-1,name:"/",nodeType:"directory",children:[]}]})),K=(0,c.K)(()=>{k.reset(),(0,l.IU)()},"clear"),v=(0,c.K)(()=>k.records.stack[0],"getRoot"),V=(0,c.K)(()=>k.records.cnt,"getCount"),B=l.UI.treeView,C=(0,c.K)(()=>(0,a.$t)(B,(0,l.zj)().treeView),"getConfig"),I={clear:K,addNode:(0,c.K)((e,t,i,r,n,o)=>{for(;e<=k.records.stack[k.records.stack.length-1].level;)k.records.stack.pop();let s={id:k.records.cnt++,level:e,name:t,nodeType:i,icon:n,cssClass:r,description:o,children:[]};k.records.stack[k.records.stack.length-1].children.push(s),k.records.stack.push(s)},"addNode"),getRoot:v,getCount:V,getConfig:C,getAccTitle:l.iN,getAccDescription:l.m7,getDiagramTitle:l.ab,setAccDescription:l.EI,setAccTitle:l.SV,setDiagramTitle:l.ke},T=(0,c.K)(e=>{for(let t of((0,n.S)(e,I),e.nodes)){let e="number"==typeof t.indent?t.indent:0,i=t.name,r=i.endsWith("/");r&&(i=i.slice(0,-1));let n=r?"directory":"file",o=t.classAnnotation||void 0,s=t.iconAnnotation,a=void 0!==s?s||"none":void 0,d=t.descAnnotation||void 0,c=d?(0,l.jZ)(d,(0,l.zj)()):void 0;I.addNode(e,i,n,o,a,c)}},"populate"),D={parse:(0,c.K)(async e=>{let{text:t,lineMap:i}=$(e);try{let e=await (0,h.qg)("treeView",t);d.R.debug(e),T(e)}catch(e){throw i.size>0&&e instanceof Error&&(e.message=y(e.message,i)),e}},"parse")},E={prefix:"mermaid-treeview",height:24,width:24,icons:{folder:{body:'<path fill="currentColor" d="M10.59 4.59A2 2 0 0 0 9.17 4H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.17z"/>'},file:{body:'<path fill="currentColor" fill-rule="evenodd" d="M6 2a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8.83a2 2 0 0 0-.59-1.42l-4.82-4.82A2 2 0 0 0 13.17 2H6Zm7.5 1.9l4.6 4.6h-3.6a1 1 0 0 1-1-1V3.9Z" clip-rule="evenodd"/>'}}};function A(e,t){let i=t?.filenameIcons?.[e];if(i)return i;let r=e.lastIndexOf(".");if(r>0){let i=e.substring(r).toLowerCase(),n=t?.extensionIcons;return n?.[i]??n?.[i.slice(1)]}}function M(e,t){return e.includes(":")?e:e in E.icons||!t?`${E.prefix}:${e}`:`${t}:${e}`}function N(e,t){if("none"!==e.icon){if(e.icon)return M(e.icon,t.defaultIconPack);if(t.showIcons){if("file"===e.nodeType){let i=A(e.name,t);if("none"===i)return;if(i)return M(i,t.defaultIconPack)}return`${E.prefix}:${"directory"===e.nodeType?"folder":"file"}`}}}(0,c.K)(A,"detectIcon"),(0,c.K)(M,"qualifyIcon"),(0,c.K)(N,"getNodeIcon"),(0,s.pC)([{name:E.prefix,icons:E}]);var z=(0,c.K)(async(e,t)=>{let i=[],r=(0,c.K)(e=>{let n=N(e,t);n&&i.push({icon:n,node:e}),e.children.forEach(r)},"collect");return r(e),new Map((await Promise.all(i.map(async({icon:e,node:t})=>({id:t.id,svg:await (0,s.WY)(e,{height:14,width:14})})))).map(({id:e,svg:t})=>[e,t]))},"resolveNodeIcons"),S=(0,c.K)((e,t,i,r,n,o)=>{let s=r.append("g"),a="treeView-node-label";"directory"===i.nodeType&&(a+=" treeView-node-dir"),i.cssClass&&(a+=` ${i.cssClass}`);let l=N(i,n),d=void 0!==l;l&&s.append("g").attr("class","treeView-node-icon").attr("transform",`translate(${e+n.paddingX}, ${t+n.paddingY})`).html(o.get(i.id)??"");let c=s.append("text").text(i.name).attr("dominant-baseline","middle").attr("class",a),{height:h,width:p}=c.node().getBBox(),f=h+2*n.paddingY,g=e+n.paddingX+18*!!d;c.attr("x",g),c.attr("y",t+f/2);let u=g+p;return i.BBox={x:e,y:t,width:p+2*n.paddingX+18*!!d,height:f},i.cssClass?.split(/\s+/).includes("highlight")&&s.insert("rect",":first-child").attr("x",e).attr("y",t+1).attr("width",0).attr("height",f-2).attr("rx",3).attr("class","treeView-highlight-bg"),{node:i,nodeGroup:s,labelRightEdge:u,centerY:t+f/2}},"positionLabel"),X=(0,c.K)((e,t,i,r,n,o)=>e.append("line").attr("x1",t).attr("y1",i).attr("x2",r).attr("y2",n).attr("stroke-width",o).attr("class","treeView-node-line"),"positionLine"),L=(0,c.K)((e,t,i,r)=>{let n=0,o=0,s=[],a=(0,c.K)((e,t,i,a)=>{let l=a*(i.rowIndent+i.paddingX),d=S(l,n,t,e,i,r);s.push(d);let{height:c,width:h}=t.BBox;X(e,l-i.rowIndent,n+c/2,l,n+c/2,i.lineThickness),o=Math.max(o,l+h),n+=c},"drawNode"),l=(0,c.K)((t,r=0)=>{a(e,t,i,r),t.children.forEach(e=>{l(e,r+1)});let{x:n,y:o,height:s}=t.BBox;if(t.children.length){let{y:r,height:a}=t.children[t.children.length-1].BBox;X(e,n+i.paddingX,o+s,n+i.paddingX,r+a/2+i.lineThickness/2,i.lineThickness)}},"processNode");l(t);let d=s.filter(e=>e.node.description);if(d.length>0){let e=Math.max(...s.map(e=>e.labelRightEdge))+16;for(let t of d){let r=t.nodeGroup.append("text").text(t.node.description).attr("dominant-baseline","middle").attr("class","treeView-node-description").attr("x",e).attr("y",t.centerY).node().getBBox();o=Math.max(o,e+r.width+i.paddingX)}}for(let e of s)if(e.node.cssClass?.split(/\s+/).includes("highlight")){let t=e.nodeGroup.select(".treeView-highlight-bg");if(!t.empty()){let i=o-e.node.BBox.x+8;t.attr("width",i),o=Math.max(o,e.node.BBox.x+i+2)}}return{totalHeight:n,totalWidth:o}},"drawTree"),R=(0,c.K)(async(e,t,i,r)=>{d.R.debug("Rendering treeView diagram\n"+e);let n=r.db,s=n.getRoot(),a=n.getConfig(),c=(0,o.D)(t),h=c.append("g");h.attr("class","tree-view");let p=await z(s,a),{totalHeight:f,totalWidth:g}=L(h,s,a,p);c.attr("viewBox",`-${a.lineThickness/2} 0 ${g} ${f}`),(0,l.a$)(c,f,g,a.useMaxWidth)},"draw"),Y={labelFontSize:"16px",labelColor:"black",lineColor:"black",iconColor:"#546e7a",descriptionColor:"#6a9955",highlightBg:"rgba(255, 193, 7, 0.15)",highlightStroke:"#ffc107"},j={db:I,renderer:{draw:R},parser:D,styles:(0,c.K)(({treeView:e})=>{let{labelFontSize:t,labelColor:i,lineColor:r,iconColor:n,descriptionColor:o,highlightBg:s,highlightStroke:l}=(0,a.$t)(Y,e);return`
|
|
2
|
-
.treeView-node-label {
|
|
3
|
-
font-size: ${t};
|
|
4
|
-
fill: ${i};
|
|
5
|
-
white-space: pre;
|
|
6
|
-
}
|
|
7
|
-
.treeView-node-dir {
|
|
8
|
-
font-weight: bold;
|
|
9
|
-
}
|
|
10
|
-
.treeView-node-line {
|
|
11
|
-
stroke: ${r};
|
|
12
|
-
}
|
|
13
|
-
.treeView-node-icon {
|
|
14
|
-
color: ${n};
|
|
15
|
-
}
|
|
16
|
-
.treeView-node-description {
|
|
17
|
-
font-size: ${t};
|
|
18
|
-
fill: ${o};
|
|
19
|
-
font-style: italic;
|
|
20
|
-
white-space: pre;
|
|
21
|
-
}
|
|
22
|
-
.treeView-highlight-bg {
|
|
23
|
-
fill: ${s};
|
|
24
|
-
stroke: ${l};
|
|
25
|
-
stroke-width: 1;
|
|
26
|
-
}
|
|
27
|
-
`},"styles")}},56619:(e,t,i)=>{function r(e,t){e.accDescr&&t.setAccDescription?.(e.accDescr),e.accTitle&&t.setAccTitle?.(e.accTitle),e.title&&t.setDiagramTitle?.(e.title)}i.d(t,{S:()=>r}),(0,i(95174).K)(r,"populateCommonDb")},71363:(e,t,i)=>{i.d(t,{m:()=>n});var r=i(95174),n=class{constructor(e){this.init=e,this.records=this.init()}static{(0,r.K)(this,"ImperativeState")}reset(){this.records=this.init()}}}}]);
|