elanous 0.2.41 → 0.2.43
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/{GiOLWmt4MqDZePubBjA4Q → Om5xS9jpjSXJCeTNGYEi4}/_buildManifest.js +1 -1
- package/apps/pwa/out/_next/static/chunks/{2fe2c302.41b517f88d6fe502.js → 0966f8a1.745fcd44f64a87ea.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/{385e4574.e9886ab32759eda3.js → 0ad6802e.ae7afb63fdcb4491.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/114.2b90424d1a3ce84c.js +1 -0
- package/apps/pwa/out/_next/static/chunks/1151-5c2bb8f002ca2dd6.js +1 -0
- package/apps/pwa/out/_next/static/chunks/1200.6a37c202f9f17e9a.js +226 -0
- package/apps/pwa/out/_next/static/chunks/1261-a616d5728e02e624.js +1 -0
- package/apps/pwa/out/_next/static/chunks/1313-19f737e0222c4444.js +1 -0
- package/apps/pwa/out/_next/static/chunks/1357.3bbef3976c37f94a.js +1 -0
- package/apps/pwa/out/_next/static/chunks/1362-20adddfaf662b0fa.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{6874.d5cf7eb8edb2cabe.js → 1406.a1dc2ab6f8449374.js} +2 -2
- package/apps/pwa/out/_next/static/chunks/1737-9491fc6ab29b9ec6.js +1 -0
- package/apps/pwa/out/_next/static/chunks/1803-4f91a8e7dcaf042c.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{5744.b9415e18ad623100.js → 1961.a81b12872c3e93a9.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/1970cf59.2d4d8ce5d6c81853.js +1 -0
- package/apps/pwa/out/_next/static/chunks/1971-8890f3962ba7ee0a.js +1 -0
- package/apps/pwa/out/_next/static/chunks/2073-ba274e00e4f9efb4.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{5471.1e611302ed3a7c53.js → 2144.25b292396712196d.js} +2 -2
- package/apps/pwa/out/_next/static/chunks/{3230-49298c3b73ef2268.js → 2268-53861f339e0b65a2.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/{9834.63ab2bbc3153172e.js → 2312.0c8b61e22d3136d7.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/{1800.f7ff51dc4978a958.js → 2573.387a707f6f9d720c.js} +2 -2
- package/apps/pwa/out/_next/static/chunks/273.f156eee28f11af77.js +1 -0
- package/apps/pwa/out/_next/static/chunks/2873.d2140e5a82546401.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{9048.212083de42d25be3.js → 3072.01338851ca21a6f7.js} +2 -2
- package/apps/pwa/out/_next/static/chunks/3091.a5a4143dea33d197.js +90 -0
- package/apps/pwa/out/_next/static/chunks/3095.dc44586a5f83b86d.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{2263.e09b6edea33bad2d.js → 3113.d7472bbc27d580c7.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/3228-9650b6447b6fa288.js +1 -0
- package/apps/pwa/out/_next/static/chunks/3402.44b565b314f2263c.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{addc2b32.8c4ff8f0aefe987d.js → 3557ac4a.c8931684475018ad.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/360.ae9f9f4c33c395e8.js +79 -0
- package/apps/pwa/out/_next/static/chunks/3638.80412ea63aae8f3f.js +286 -0
- package/apps/pwa/out/_next/static/chunks/{a0a01613.6d1cca322238d7fe.js → 363bfab3.9623b9f89363541f.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/3694.e0099884345f0198.js +64 -0
- package/apps/pwa/out/_next/static/chunks/3744.54f87db52acfd1ab.js +1 -0
- package/apps/pwa/out/_next/static/chunks/3903.3ef4656c67572764.js +1 -0
- package/apps/pwa/out/_next/static/chunks/3935.16701e33f8982dc9.js +1 -0
- package/apps/pwa/out/_next/static/chunks/3955.6922286237f2ac2b.js +24 -0
- package/apps/pwa/out/_next/static/chunks/3969.272ee7f9fd6c62e5.js +34 -0
- package/apps/pwa/out/_next/static/chunks/4199.ce86b281fd0a60b7.js +1 -0
- package/apps/pwa/out/_next/static/chunks/4311-6dd3144002cc0c2d.js +1 -0
- package/apps/pwa/out/_next/static/chunks/4426-2b230fad00c88930.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{530.d26346e18089640a.js → 4445.7990c76b3751a918.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/4447-14c5161fa59166c7.js +1 -0
- package/apps/pwa/out/_next/static/chunks/4856-b0b8075bba8c53f4.js +1 -0
- package/apps/pwa/out/_next/static/chunks/4870-de370d65e73c0bb5.js +1 -0
- package/apps/pwa/out/_next/static/chunks/4885-2c989165c4b29fad.js +1 -0
- package/apps/pwa/out/_next/static/chunks/4894.fec2ca9e99caefa2.js +1 -0
- package/apps/pwa/out/_next/static/chunks/5093.8f04b7f8cb899a95.js +94 -0
- package/apps/pwa/out/_next/static/chunks/5122-2bb177cebf89e19a.js +1 -0
- package/apps/pwa/out/_next/static/chunks/5154.5f56dc3902e3d275.js +36 -0
- package/apps/pwa/out/_next/static/chunks/529.64ff7257180b2ac9.js +1 -0
- package/apps/pwa/out/_next/static/chunks/5394.5dabeb0c62293a28.js +93 -0
- package/apps/pwa/out/_next/static/chunks/5461.08bf2404ff38ec85.js +1 -0
- package/apps/pwa/out/_next/static/chunks/5474-22e08a85583209b2.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{1219.7e17964e0e7cd8e5.js → 5564.9e72532188f57586.js} +3 -3
- package/apps/pwa/out/_next/static/chunks/5567-265df39ed8fe9dcb.js +1 -0
- package/apps/pwa/out/_next/static/chunks/5570-a94ae19811cb2046.js +1 -0
- package/apps/pwa/out/_next/static/chunks/5574-b47c9ef2dceff1fd.js +1 -0
- package/apps/pwa/out/_next/static/chunks/5628.6ddb2d5ffba4ff4c.js +309 -0
- package/apps/pwa/out/_next/static/chunks/5730.43d7ccc09988e646.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{1178.1aa9cad0e7695427.js → 5789.2da35c258292e1e5.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/{4133.2056bb4d78f621af.js → 5824.da9527b15a3221e5.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/5866.366966af47fdde5d.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{4527.a69f2894d1bc9f4a.js → 5930.8b4df3b46c32b05a.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/5963-c4d8469c52a0828b.js +1 -0
- package/apps/pwa/out/_next/static/chunks/6001.ec4049ceb3c43418.js +27 -0
- package/apps/pwa/out/_next/static/chunks/6120-471f03db1e299c0c.js +1 -0
- package/apps/pwa/out/_next/static/chunks/6175-41479e643aca1878.js +1 -0
- package/apps/pwa/out/_next/static/chunks/6291.a2de4f9787637075.js +104 -0
- package/apps/pwa/out/_next/static/chunks/6400-6699907c3537436a.js +1 -0
- package/apps/pwa/out/_next/static/chunks/6428.1f4327d6ae5fdf9a.js +287 -0
- package/apps/pwa/out/_next/static/chunks/644.02cb026fa44bcd0a.js +1 -0
- package/apps/pwa/out/_next/static/chunks/6466-6c87d60d3dd174fb.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{9507.7026657a2f47eb64.js → 6540.c7bef57ad8f90a87.js} +16 -16
- package/apps/pwa/out/_next/static/chunks/6773.d4264665ab31bec0.js +1 -0
- package/apps/pwa/out/_next/static/chunks/6822.3c789f1a8443e774.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{5574.f35accf4f132b29d.js → 6944.309f4e3ea54d1537.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/7261-8ff69d3b2ee671fd.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7266.084c6bbc70035140.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7271.5c0100e7320aa856.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7429-bf5731358c8f2f68.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7464.01f7a0ae1215fbe7.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7479.0fcad5f37eb64f0c.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7483.427a2fe2049e388d.js +148 -0
- package/apps/pwa/out/_next/static/chunks/7502-be74718178e13e56.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7530.0889722b19572065.js +24 -0
- package/apps/pwa/out/_next/static/chunks/7645.5b2ee3ad45c55ea3.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7788.7d1c79f1a8e18946.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7900.096f455c7c1efc53.js +77 -0
- package/apps/pwa/out/_next/static/chunks/7910-6f139bcafd238b9f.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7966.f71c8958d1637548.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{5947-135e26537d80a6b9.js → 8062-7cd0bcc7f01455ba.js} +3 -3
- package/apps/pwa/out/_next/static/chunks/8073.f6cf2f2c71aafbd0.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8201.190b94088980f430.js +74 -0
- package/apps/pwa/out/_next/static/chunks/8205.282ca4bb62d54a0a.js +62 -0
- package/apps/pwa/out/_next/static/chunks/8313-dfa1021bb58a46d6.js +1 -0
- package/apps/pwa/out/_next/static/chunks/837-81336ebaca8198a8.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8447.7963352ef5f71b76.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8574-868e8129525ef6d9.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8588.d1c6a2903727ce87.js +149 -0
- package/apps/pwa/out/_next/static/chunks/8637.90f92d5c8db4732c.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{2743.5d3f76948be32b34.js → 868.6e953be05bcf6dca.js} +2 -2
- package/apps/pwa/out/_next/static/chunks/8706-e1fe0309343a2273.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8749-06384cdfc4520add.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{5964-7e21164a8f2cf0ce.js → 8861-cc1fa1c7b920fa8e.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/8967-7dfebf710c9dec9d.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{5159.115f1c2ca471386c.js → 8986.8e2e4efbfa655c59.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/8997-3c564dbb3b58b055.js +1 -0
- package/apps/pwa/out/_next/static/chunks/923.2034d10ae91e9c20.js +1 -0
- package/apps/pwa/out/_next/static/chunks/9312.bc1b89c5d4368033.js +1 -0
- package/apps/pwa/out/_next/static/chunks/943.39ae5e82f4f1893f.js +1 -0
- package/apps/pwa/out/_next/static/chunks/9469.0500480de55fb205.js +32 -0
- package/apps/pwa/out/_next/static/chunks/9770.5f75bc6088b16109.js +1 -0
- package/apps/pwa/out/_next/static/chunks/9810-2543267050e58b82.js +1 -0
- package/apps/pwa/out/_next/static/chunks/9870.8419702475254745.js +8 -0
- package/apps/pwa/out/_next/static/chunks/9941-376d1b74d51b01a4.js +1 -0
- package/apps/pwa/out/_next/static/chunks/9958.385434ab04241758.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{b2271e54.c1de3347976e90b0.js → aa57532f.510551854ff239b1.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/app/_not-found/page-deea1450b17cb8dc.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/approvals/page-70985b904f8650ef.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/autopilot/page-a2e15e33e56a4353.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/board/page-fc72ce2db12d6ca9.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/botlab/page-be03e41f9436ebd9.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/bots/page-35a35999382da3f2.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/ceo/page-3ff5b1e6ca88b848.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/chat/page-a65101300a0ee5c1.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/consult/page-3aca5b6d67dba511.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/control/page-45b8ab0a71e61314.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/decisions/page-53046e282d4cda8e.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/design-check/page-17809e60e8354c17.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/editor/page-fd2442d347bf5898.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/exec/page-e9d720d6fc082e21.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/field/page-6b8b4267bab0a677.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/healthz/route-deea1450b17cb8dc.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/inside/page-8bcf6233ac7c17af.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/intake/page-7cc25591cfc2126f.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/layout-053e871f35c9beba.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/live/page-eff819f0c2d5e084.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/live-run/page-4d7e9d8db5274a87.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/loops/page-2b2d8f5aa5f69ad4.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/market/page-0b8f92c5062e68b1.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/missions/[id]/page-1bd9d0fdac2ced3d.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/morning/page-9ee28f7df07428ea.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/not-found-44b7a1ff468c6648.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/observatory/page-cbc6523711dc1b65.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/ops/checklist/page-fdad47899c2695be.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/ops/release/{page-40f9e19149024298.js → page-79a8b5fee4c20871.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/app/ops/seats/page-03e8ac9606aeaffb.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/outputs/page-4cd55c55ec287e2f.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/page-db17b4305404161e.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/reflection/page-30041d848350fd02.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/scheduler/page-c540da022dbf86b0.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/sessions/page-9399efc538da057f.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/settings/devices/{page-a142dfb0331a05f5.js → page-ca2d09128c585ca4.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/app/settings/page-0e2635aecd343038.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/setup/done/page-ef7f4399b6b7726e.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/setup/layout-deea1450b17cb8dc.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/setup/page-caf530535b875468.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/share/page-eaa20c1543a5fd8e.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/showroom/page-c541eb1b75120f61.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/tasks/page-ab5e213eda9479f4.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/term/page-0a815f34367b6db6.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/today/page-e858ba0ed9393b68.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/trace/page-1638ee9dd6e0582f.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/vault/page-4cf5a399109391f2.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-b4396321238798ec.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/workflows/page-cb72bfd21006781a.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/workspace/page-6135d0242afbc434.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/worktrees/page-a1dccf907eddb856.js +1 -0
- package/apps/pwa/out/_next/static/chunks/{53aeb4ee-51c92f8d683f5220.js → c7945435-b44d4dbe90ba0dcb.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/{2fdf2931.b431eee4fb468bc3.js → cb0f8df8.09a4a6be97e3fc5f.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/{c0c1a699.0ba79f97005965d4.js → d96660fb.cbc21a2a88539dbb.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/ea514caa.05a24f78d9dffe5f.js +122 -0
- package/apps/pwa/out/_next/static/chunks/{83184dcd-0ee6247ff41eb3f2.js → fb7d20d5-6892502b6ee39ca6.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/framework-e8a911e19b1be41f.js +1 -0
- package/apps/pwa/out/_next/static/chunks/main-7022f418fabba021.js +1 -0
- package/apps/pwa/out/_next/static/chunks/main-app-e5f15df755756a1e.js +1 -0
- package/apps/pwa/out/_next/static/chunks/pages/_app-4525f91e36940c9b.js +1 -0
- package/apps/pwa/out/_next/static/chunks/pages/_error-140f0e519c085b0f.js +1 -0
- package/apps/pwa/out/_next/static/chunks/webpack-8f22ef63dcb865b1.js +1 -0
- package/apps/pwa/out/_next/static/css/{b9d8151e48998417.css → 62c858ad53854f47.css} +1 -1
- package/apps/pwa/out/_next/static/css/d1f8bb401740a549.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 +24 -25
- 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 +23 -23
- 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 +24 -25
- package/apps/pwa/out/live-run/index.html +1 -1
- package/apps/pwa/out/live-run/index.txt +24 -25
- 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/catalog/external-commands.yaml +5 -3
- package/catalog/meta/catalogVersion.yaml +2 -1
- package/catalog/signing/catalog-signing-public.pem +3 -0
- package/docs/goal-context/04-mock-scenarios.md +13 -0
- package/graphs/catalog/catalog.yaml +1 -1
- package/graphs/heal/heal-loop.yaml +1 -0
- package/graphs/intake/intake-daily.yaml +16 -0
- package/graphs/intake/news-sources.yaml +1 -0
- package/graphs/intake/recipes.yaml +7 -0
- package/graphs/overlays/examples/research-runtime-empty-terminal.yaml +28 -0
- package/graphs/overlays/stop-heal-ladder.yaml +113 -0
- package/graphs/profiles/local.yaml +5 -0
- package/graphs/profiles/pod.yaml +4 -0
- package/graphs/units/verbs/recipes.yaml +11 -11
- package/graphs/work/research-report.yaml +10 -2
- package/package.json +6 -2
- package/plugins/demo-absorption-briefing/plugin.json +18 -0
- package/plugins/demo-absorption-briefing/skills/demo-absorption-briefing/SKILL.md +8 -0
- package/plugins/demo-browser-hand/plugin.json +13 -0
- package/plugins/demo-browser-hand/skills/demo-browser-hand/SKILL.md +8 -0
- package/plugins/demo-linear-secretary/plugin.json +15 -0
- package/plugins/demo-linear-secretary/skills/demo-linear-secretary/SKILL.md +8 -0
- package/plugins/demo-plugin-wizard/plugin.json +11 -0
- package/plugins/demo-plugin-wizard/skills/demo-plugin-wizard/SKILL.md +8 -0
- package/plugins/demo-research/plugin.json +16 -0
- package/plugins/demo-research/skills/demo-research/SKILL.md +8 -0
- package/plugins/demo-video-briefing/plugin.json +15 -0
- package/plugins/demo-video-briefing/skills/demo-video-briefing/SKILL.md +8 -0
- package/scripts/build-signed-catalog.ts +48 -0
- package/scripts/ci-typecheck-main-delta.sh +88 -0
- package/scripts/codex-fallback-live-probe.ts +1 -1
- package/scripts/demo/demo1104-parallel-scenes.ts +301 -0
- package/scripts/demo/demo1104-stage.config.ts +21 -0
- package/scripts/demo/demo1104-stage.ts +316 -0
- package/scripts/goal-method-audit.ts +17 -1
- package/scripts/graph-units/land-enqueue.ts +90 -0
- package/scripts/heal/run-role.ts +99 -5
- package/scripts/hooks/codex-notify.sh +32 -0
- package/scripts/install.sh +10 -38
- package/scripts/land-global-checks.ts +6 -1
- package/scripts/landing-heal/land-plan.ts +57 -0
- package/scripts/lib/decompose-ab.ts +1 -0
- package/scripts/lib/fixtures/tui-regress/help-insufficient-commands.txt +15 -0
- package/scripts/lib/fixtures/tui-regress/help-live.txt +42 -0
- package/scripts/lib/fixtures/tui-regress/help-missing-keys.txt +21 -0
- package/scripts/lib/fixtures/tui-regress/help-original.txt +51 -0
- package/scripts/lib/fixtures/tui-regress/help-shifted-input.txt +26 -0
- package/scripts/lib/tui-regress-checks.ts +33 -13
- package/scripts/release-loop/auto-approve-node.ts +1 -1
- package/scripts/release-loop/gate-autoheal-sim-evidence.ts +60 -0
- package/scripts/release-loop/gate-baseline-receipt.ts +47 -9
- package/scripts/release-loop/gate-image-pin.ts +81 -0
- package/scripts/release-loop/gate-method.ts +139 -0
- package/scripts/release-loop/gate-node-sim.ts +207 -0
- package/scripts/release-loop/gate-node.ts +463 -64
- package/scripts/release-loop/gate-pod-image-sticky-plan.ts +99 -0
- package/scripts/release-loop/gate-radius-live.ts +97 -13
- package/scripts/release-loop/gate-shard-dispatch.ts +43 -0
- package/scripts/release-loop/gate-traffic-mode.ts +151 -3
- package/scripts/release-loop/gate-train-receipts.ts +122 -0
- package/scripts/release-loop/node-verdict.ts +38 -25
- package/scripts/release-loop/preflight.ts +362 -8
- package/scripts/release-loop/resume-release.ts +83 -8
- package/scripts/release-loop/unattended-release.ts +20 -9
- package/scripts/rhythm/daily.ts +36 -4
- package/scripts/rhythm/linear-progress-sync.ts +298 -0
- package/scripts/ux-sim.ts +18 -1
- package/scripts/video-pipeline.ts +9 -1
- package/scripts/warm-pool-provider-config.ts +286 -0
- package/skills/omni-crawl/SKILL.md +5 -2
- package/skills/omni-crawl/scripts/main.ts +84 -23
- package/src/acp/agent-manager.ts +1 -0
- package/src/acp/codex-app-server-agent.ts +33 -0
- package/src/acp/codex-app-server-client.ts +153 -16
- package/src/acp/core-turn-bridge.ts +27 -9
- package/src/acp/event-router.ts +20 -1
- package/src/acp/server.ts +6 -0
- package/src/agent/registry.ts +2 -0
- package/src/agent/task-notification.ts +25 -5
- package/src/agent/types.ts +6 -0
- package/src/agent-mission/browser-roundtrip-coordinator.ts +85 -0
- package/src/agent-mission/claude-headless.ts +4 -1
- package/src/agent-mission/codex-exec.ts +105 -0
- package/src/agent-mission/driver.ts +192 -11
- package/src/agent-mission/grok-auth-status.ts +47 -0
- package/src/agent-mission/hand-hooks.ts +101 -0
- package/src/agent-mission/mission-cli.ts +63 -4
- package/src/agent-mission/mission-hand-reply.ts +118 -0
- package/src/agent-mission/mission-line.ts +180 -0
- package/src/agent-mission/mission-out.ts +833 -0
- package/src/agent-mission/tool-install.ts +200 -3
- package/src/agent-substrate/context-strategy.ts +4 -4
- package/src/agent-substrate/self-review-cli.ts +178 -13
- package/src/agents/general-purpose.md +1 -1
- package/src/auto-research/research-turn.ts +211 -53
- package/src/autopilot/pr-manager.ts +69 -10
- package/src/autopilot/pty-control-loop.ts +2 -0
- package/src/boot/daemon-tools/self-implement.ts +3 -1
- package/src/boot/daemon-tools/web-search.ts +1 -2
- package/src/briefing/brief-items.ts +55 -11
- package/src/capture/tui-self-report.ts +22 -6
- package/src/chat/index.ts +1 -1
- package/src/cli/agent-cli.ts +2 -1
- package/src/cli/catalog-cli.ts +31 -0
- package/src/cli/connector-cli.ts +16 -0
- package/src/cli/doctor-fix.ts +2 -2
- package/src/cli/fixtures/review-loop-breaker/opwaiver-32646-1694ccc7a170.json +1 -0
- package/src/cli/fixtures/review-loop-breaker/opwaiver-32853-bd8f73595c83.json +1 -0
- package/src/cli/fixtures/review-loop-breaker/opwaiver-33097-1cc85900413c.json +1 -0
- package/src/cli/fixtures/review-loop-breaker/opwaiver-33106-972f31e4a3ca.json +1 -0
- package/src/cli/fixtures/review-loop-breaker/opwaiver-33113-3ab51f05968f.json +1 -0
- package/src/cli/fixtures/review-loop-breaker/pr-33097-1cc85900413c.json +1 -0
- package/src/cli/intake-source-cli.ts +44 -8
- package/src/cli/msg-cli.ts +32 -3
- package/src/cli/pr-cli.ts +21 -1
- package/src/cli/pr-land-heavy-remote.ts +75 -5
- package/src/cli/pr-land-overlap-evidence.ts +113 -2
- package/src/cli/pr-land-pod-shadow-job.ts +202 -4
- package/src/cli/pr-land-pod-shadow.ts +9 -2
- package/src/cli/release-checklist-read-cli.ts +57 -19
- package/src/cli/release-cli.ts +23 -3
- package/src/cli/research-cli.ts +13 -5
- package/src/cli/setup-cli.ts +166 -6
- package/src/cli/setup-keys.ts +187 -0
- package/src/cli/task-plugin-wizard-host.ts +114 -0
- package/src/cli/tasks-cli.ts +61 -9
- package/src/cli/tui-test-cli.ts +186 -0
- package/src/compact/auto.ts +8 -1
- package/src/config.ts +4 -2
- package/src/connectors/linear-daily-progress.ts +228 -0
- package/src/connectors/linear-projector.ts +34 -12
- package/src/connectors/linear.ts +151 -7
- package/src/control-plane/ledger.ts +52 -2
- package/src/control-plane/server.ts +16 -2
- package/src/core-turn/deep-turn-bloom.ts +67 -0
- package/src/core-turn/research-policy.ts +37 -0
- package/src/core-turn/run-core-turn.ts +606 -95
- package/src/core-turn/run-goal-loop.ts +18 -0
- package/src/core-turn/types.ts +4 -0
- package/src/dashboard/chat/acp-chat.ts +10 -0
- package/src/dashboard/classic-sidetab-mission-job.ts +161 -0
- package/src/dashboard/classic-sidetab-mission-pair.ts +81 -0
- package/src/dashboard/classic-sidetab-mission-trio.ts +219 -0
- package/src/dashboard/classic-sidetab-mission.ts +347 -0
- package/src/dashboard/index.ts +517 -18
- package/src/dashboard/input/agent-wake.ts +23 -1
- package/src/dashboard/input/chat-main-acp-dispatch.ts +23 -0
- package/src/dashboard/input/chat-main-plain-turn-runtime.ts +17 -0
- package/src/dashboard/mission-cli-consumer.ts +165 -0
- package/src/dashboard/plugin-wizard-runtime.ts +50 -0
- package/src/dashboard/plugin-wizard-tool.ts +55 -0
- package/src/dashboard/seat-boot-preamble.ts +171 -1
- package/src/dashboard/side-basic-runtime.ts +54 -1
- package/src/dashboard/sidetab-runtime.ts +90 -1
- package/src/dashboard/skill-catalog-preamble.ts +101 -0
- package/src/dashboard/skill-detection-runtime.ts +55 -15
- package/src/dashboard/slash-runtime/dashboard-handlers.ts +15 -0
- package/src/dashboard/terminal-popup-runtime.ts +6 -3
- package/src/dashboard/turn-preamble.ts +53 -15
- package/src/dashboard/turn-prompt-runtime.ts +4 -2
- package/src/decisions/linear-progress-summary.ts +78 -0
- package/src/decisions/linear-progress-sync.ts +152 -0
- package/src/domains/outbound-alert.ts +49 -11
- package/src/domains/telegram-kind-route.ts +16 -9
- package/src/graph-runner/arg-allowance.ts +13 -0
- package/src/graph-runner/graph-cli.ts +23 -7
- package/src/graph-runner/graph-run-api.ts +3 -1
- package/src/graph-runner/graph-tick.ts +10 -2
- package/src/graph-runner/runner.ts +86 -18
- package/src/graph-wizard/mission-compose.ts +407 -12
- package/src/grok/agent-search.ts +14 -4
- package/src/grok/credential.ts +28 -11
- package/src/harness/dispatch-backpressure.ts +54 -1
- package/src/harness/dispatch-shadow-compare.ts +74 -0
- package/src/harness/harness-cli-command.ts +11 -1
- package/src/harness/harness-pod-dispatch.ts +81 -15
- package/src/harness/harness-stop.ts +155 -11
- package/src/harness/skill-exec.ts +21 -9
- package/src/harness/skill-select.ts +1 -1
- package/src/hooks/error-report-cloud.ts +101 -0
- package/src/hooks/receiver.ts +29 -2
- package/src/index.ts +159 -13
- package/src/instance/spawn-elanous.ts +6 -4
- package/src/intake-plane/actions.ts +354 -0
- package/src/intake-plane/adapters/telegram-ambient.ts +34 -18
- package/src/intake-plane/intake-sources.ts +78 -8
- package/src/intake-plane/items.ts +14 -4
- package/src/intake-plane/linear-mission-sync.ts +80 -0
- package/src/intake-plane/linear-secretary-runtime.ts +178 -0
- package/src/intake-plane/linear-wish.ts +227 -1
- package/src/life/life-cli.ts +168 -0
- package/src/life/life-kinds.ts +160 -0
- package/src/live-supply/budget-consumer.ts +78 -0
- package/src/live-supply/read.ts +3 -0
- package/src/live-supply/snapshot.ts +45 -0
- package/src/llm/provider-credentials.ts +8 -2
- package/src/llm.ts +168 -9
- package/src/loops/orchestrator/coordinator-shadow.ts +226 -0
- package/src/loops/orchestrator/tick.ts +13 -0
- package/src/maturity/feature-maturity.ts +4 -4
- package/src/msg/msg-sse-server.ts +3 -3
- package/src/msg/msg-store.ts +177 -19
- package/src/native-tool-catalog.ts +38 -4
- package/src/nexus/api/harness-traversal.ts +11 -0
- package/src/nexus/api/http-server.ts +37 -1
- package/src/nexus/api/mcp-public-allowlist.ts +2 -0
- package/src/nexus/index.ts +7 -2
- package/src/nexus/outbound/format.ts +9 -0
- package/src/nexus/outbound/router.ts +98 -13
- package/src/nexus/setup-status.ts +9 -0
- package/src/nexus/state/state.ts +3 -0
- package/src/oauth/codex-account-store.ts +20 -7
- package/src/oauth/codex-owner-mirror.ts +44 -0
- package/src/oauth/codex.ts +17 -2
- package/src/oauth/fallback-chain.ts +47 -17
- package/src/onboarding/first-run-doctor.ts +8 -1
- package/src/onboarding/first-run.ts +85 -26
- package/src/onboarding/key-setup.ts +103 -0
- package/src/onboarding/menu-answer.ts +13 -0
- package/src/onboarding/secret-prompt.ts +37 -0
- package/src/plugins/install/plugin-install.ts +59 -0
- package/src/pr-tool/census.ts +133 -2
- package/src/pty-shell/pty-control-ipc.ts +4 -1
- package/src/pty-shell/tui-run-state.ts +188 -2
- package/src/registry/catalog-server.ts +232 -0
- package/src/registry/loader.ts +45 -1
- package/src/registry/types.ts +1 -2
- package/src/release-loop/checklist-target-path-hint.ts +13 -0
- package/src/release-loop/checklist.ts +9 -1
- package/src/repl/index.ts +43 -2
- package/src/research/axis-fanout.ts +136 -16
- package/src/research/bloom-exemplars.ts +3 -1
- package/src/research/gap-followup.ts +13 -1
- package/src/research/plugin-discovery.ts +36 -14
- package/src/research-bridge/invoke.ts +22 -5
- package/src/research-bridge/types.ts +2 -0
- package/src/self-dev/ask-launch-flow.ts +72 -1
- package/src/self-dev/decompose.ts +119 -5
- package/src/self-dev/dev-cli.ts +4 -1
- package/src/self-dev/dev-pipeline.ts +5 -0
- package/src/self-dev/draft-residue.ts +64 -5
- package/src/self-dev/graph-front-nodes.ts +2 -1
- package/src/self-dev/graph-journey-route.ts +76 -21
- package/src/self-dev/launch-preflight-text.ts +5 -6
- package/src/self-dev/launch-preflight.ts +58 -0
- package/src/self-dev/orchestrate.ts +13 -3
- package/src/self-dev/review-provider-fallback.ts +9 -2
- package/src/self-dev/run-supervisor.ts +42 -4
- package/src/self-dev/run-types.ts +4 -0
- package/src/self-dev/shard-aggregate.ts +4 -0
- package/src/self-dev/shard-run.ts +36 -15
- package/src/self-implement/abandoned-classification.ts +12 -3
- package/src/self-implement/budget-gate.ts +7 -0
- package/src/self-implement/child-llm-preference.ts +10 -1
- package/src/self-implement/doctor-visit.ts +118 -8
- package/src/self-implement/elanous-tui-spawn.ts +3 -0
- package/src/self-implement/fixtures/tdd-green-missing-passing-child-transcript.txt +2 -0
- package/src/self-implement/gate-artifacts.ts +2 -1
- package/src/self-implement/goal-author-cli.ts +4 -2
- package/src/self-implement/goal-author.ts +684 -7
- package/src/self-implement/graph-overlay-yaml.ts +37 -4
- package/src/self-implement/graph-overlay.ts +3 -1
- package/src/self-implement/graph-profile-yaml.ts +107 -0
- package/src/self-implement/graph-yaml.ts +26 -3
- package/src/self-implement/headless-elanous-driver.ts +31 -2
- package/src/self-implement/heal-intake.ts +112 -4
- package/src/self-implement/heal-triage.ts +20 -0
- package/src/self-implement/host-regate.ts +27 -4
- package/src/self-implement/merge-train.ts +5 -0
- package/src/self-implement/off-diff-evidence.ts +249 -5
- package/src/self-implement/orchestrator.ts +365 -25
- package/src/self-implement/regate-detail.ts +38 -1
- package/src/self-implement/rework-child-provider.ts +25 -0
- package/src/self-implement/run-chart.ts +122 -0
- package/src/self-implement/run-ledger.ts +162 -11
- package/src/self-implement/run-stop.ts +188 -4
- package/src/self-implement/runtime-overlay-run-steps.ts +95 -0
- package/src/self-implement/stop-autoheal.ts +13 -0
- package/src/self-implement/tdd-evidence-tags.ts +9 -0
- package/src/self-implement/train-gate-receipt.ts +166 -0
- package/src/self-implement/train-gate-remote.ts +62 -18
- package/src/session/chat.ts +40 -4
- package/src/session/session-fanout.ts +2 -0
- package/src/session/streaming/acp-stream-sink.ts +2 -1
- package/src/session/streaming/chunk-producer.ts +6 -0
- package/src/session/streaming/stream-compositor.ts +3 -2
- package/src/session-runtime/index.ts +135 -5
- package/src/session-runtime/retry-policy.ts +1 -1
- package/src/session-runtime/tier-flip.ts +3 -3
- package/src/setup/llm-env-detect.ts +3 -0
- package/src/setup/service-key-catalog.ts +46 -0
- package/src/setup/service-keys.ts +241 -0
- package/src/sidetab-core/model.ts +19 -5
- package/src/sidetab-core/visible-agent-mission.ts +262 -0
- package/src/skills/name-match.ts +20 -0
- package/src/skills/tools/agent.ts +53 -6
- package/src/skills/tools/omni-search.ts +173 -13
- package/src/task-agent/parent-host.ts +10 -0
- package/src/task-agent/pod-distributor-entry.ts +3 -0
- package/src/task-agent/repair-outcomes.ts +65 -0
- package/src/task-agent/task-hand.ts +47 -7
- package/src/task-orchestrator/dispatcher.ts +14 -1
- package/src/task-orchestrator/linear-capture-events.ts +55 -0
- package/src/task-orchestrator/store.ts +16 -5
- package/src/task-orchestrator/surfaces/pod-artifact-return.ts +4 -0
- package/src/task-orchestrator/surfaces/pod-distributor.ts +48 -0
- package/src/task-orchestrator/surfaces/pod-failure-reason.ts +92 -1
- package/src/task-orchestrator/surfaces/pod-ledger-collect.ts +38 -1
- package/src/task-orchestrator/surfaces/pod-ledger-events.ts +113 -14
- package/src/task-orchestrator/surfaces/pod-si-warm-entry.ts +33 -6
- package/src/task-orchestrator/surfaces/pod-source-bundle.ts +45 -9
- package/src/task-orchestrator/surfaces/pod-source-receive.ts +178 -16
- package/src/task-orchestrator/surfaces/pod-source-spec.ts +3 -3
- package/src/task-orchestrator/surfaces/pod-warm-switch.ts +2 -0
- package/src/task-orchestrator/surfaces/pod-warm-worker-provider.ts +237 -41
- package/src/task-orchestrator/surfaces/pod-warm-worker-runtime.ts +80 -3
- package/src/task-orchestrator/surfaces/self-implement-pod.ts +337 -51
- package/src/task-orchestrator/surfaces/self-implement.ts +27 -3
- package/src/task-orchestrator/surfaces/warm-reuse-evidence.ts +169 -0
- package/src/task-orchestrator/types.ts +14 -0
- package/src/telegram.ts +14 -16
- package/src/terminal/coding-agent.ts +14 -5
- package/src/terminal/session-registry.ts +1 -1
- package/src/tokens.ts +35 -2
- package/src/tool-hints/gate.ts +1 -0
- package/src/tool-runtime/agent-runtime.ts +2 -0
- package/src/tool-runtime/browser-hand-runtime.ts +381 -0
- package/src/tool-runtime/browser-runtime.ts +2 -1
- package/src/tool-runtime/elanous-linear-issue-runtime.ts +76 -0
- package/src/tool-runtime/elanous-linear-secretary-runtime.ts +57 -0
- package/src/tool-runtime/elanous-skills-list-runtime.ts +5 -1
- package/src/tool-runtime/graph-mcp-runtimes.ts +240 -0
- package/src/tool-runtime/index.ts +6 -0
- package/src/tool-runtime/skill-exec-runtime.ts +33 -13
- package/src/tool-runtime/types.ts +4 -0
- package/src/tui/entry.ts +38 -5
- package/src/tui/sidetab/attach.ts +177 -1
- package/src/tui/sidetab/herdr-portal.ts +225 -0
- package/src/tui-client/local-chat-turn.ts +26 -13
- package/src/tui.ts +22 -0
- package/src/user-config.ts +34 -9
- package/src/user-intent/types.ts +4 -3
- package/src/ux-sim/browser-hand.ts +165 -0
- package/src/ux-sim/draft-inventory-builder.ts +198 -0
- package/src/ux-sim/fake-browser-page.ts +81 -0
- package/src/ux-sim/fake-kubectl.ts +37 -3
- package/src/ux-sim/fake-linear-device.ts +31 -0
- package/src/ux-sim/fault-pool-cap.ts +11 -6
- package/src/ux-sim/graph-engine-sim.ts +47 -0
- package/src/ux-sim/linear-secretary.ts +216 -0
- package/src/ux-sim/mock-scenario-catalog.json +93 -0
- package/src/ux-sim/mock-scenario-catalog.ts +274 -0
- package/src/ux-sim/onboarding-first-run-device.ts +31 -21
- package/src/ux-sim/scenario.ts +185 -48
- package/src/ux-sim/service-key-setup.ts +50 -0
- package/src/ux-sim/term-slash-device.ts +74 -0
- package/src/ux-sim/turn-throw-sim.ts +31 -0
- package/src/version/packed-revision.json +1 -1
- package/src/voice/voice-tts-singleton.ts +18 -3
- package/src/web-search/exa.ts +77 -0
- package/src/web-search/grok.ts +5 -9
- package/src/web-search/index.ts +30 -9
- package/src/web-search/provider.ts +4 -1
- package/src/web-search/x-intent.ts +5 -0
- package/apps/pwa/out/_next/static/chunks/1115.434ae2ecb0ad986d.js +0 -149
- package/apps/pwa/out/_next/static/chunks/1121.667cec0bcdbb3fdb.js +0 -36
- package/apps/pwa/out/_next/static/chunks/1197-54da59d250a6e476.js +0 -1
- package/apps/pwa/out/_next/static/chunks/1245.1cfd13b26dbd71d6.js +0 -287
- package/apps/pwa/out/_next/static/chunks/1494-f93046ff5c5a124d.js +0 -1
- package/apps/pwa/out/_next/static/chunks/1609.2b312797599b8e45.js +0 -1
- package/apps/pwa/out/_next/static/chunks/1661.0dd330f3d89f73f3.js +0 -1
- package/apps/pwa/out/_next/static/chunks/167-0c121e4b47e0f9da.js +0 -1
- package/apps/pwa/out/_next/static/chunks/1700.cdc2bf8cc685e221.js +0 -90
- package/apps/pwa/out/_next/static/chunks/1703-78e46acad29f3cfc.js +0 -1
- package/apps/pwa/out/_next/static/chunks/1765.679b29625c8e88d4.js +0 -77
- package/apps/pwa/out/_next/static/chunks/1971-7efb628c471dc5a0.js +0 -1
- package/apps/pwa/out/_next/static/chunks/1999-8de7b7bb36801913.js +0 -1
- package/apps/pwa/out/_next/static/chunks/2073.689dcb2680113d76.js +0 -1
- package/apps/pwa/out/_next/static/chunks/2198-557d49184104d165.js +0 -1
- package/apps/pwa/out/_next/static/chunks/221-440ce67fa9f5c839.js +0 -1
- package/apps/pwa/out/_next/static/chunks/2427-8ed8e98624cbd664.js +0 -1
- package/apps/pwa/out/_next/static/chunks/2457-725c5827bc003795.js +0 -1
- package/apps/pwa/out/_next/static/chunks/2491-2718b15a5ccb75a5.js +0 -1
- package/apps/pwa/out/_next/static/chunks/2527-5c636a43c7cc5dde.js +0 -1
- package/apps/pwa/out/_next/static/chunks/2692-1027cb16fe4ccf49.js +0 -1
- package/apps/pwa/out/_next/static/chunks/2773.0e80b9d325fb5635.js +0 -32
- package/apps/pwa/out/_next/static/chunks/2873-0f3cb56c8e3528ea.js +0 -1
- package/apps/pwa/out/_next/static/chunks/3097.864e92bdaa2f4d15.js +0 -79
- package/apps/pwa/out/_next/static/chunks/3136-d6870ba63300a93e.js +0 -1
- package/apps/pwa/out/_next/static/chunks/3173-0289113d434e83b7.js +0 -1
- package/apps/pwa/out/_next/static/chunks/325-dd9208a1a0ab7ce4.js +0 -1
- package/apps/pwa/out/_next/static/chunks/3283.528f430dd043fb4e.js +0 -74
- package/apps/pwa/out/_next/static/chunks/3295.cc8cb13b8f0dae1a.js +0 -1
- package/apps/pwa/out/_next/static/chunks/3688-86e3b88abf18cb3b.js +0 -1
- package/apps/pwa/out/_next/static/chunks/3804-7220467a5473a8df.js +0 -1
- package/apps/pwa/out/_next/static/chunks/3808.3e1e247ce7bdf889.js +0 -1
- package/apps/pwa/out/_next/static/chunks/3927.b5473ad109da44c5.js +0 -1
- package/apps/pwa/out/_next/static/chunks/3934-98ea94832e194796.js +0 -1
- package/apps/pwa/out/_next/static/chunks/4156.ba4de4a3664f04b4.js +0 -1
- package/apps/pwa/out/_next/static/chunks/4297-239ca82f293faab0.js +0 -1
- package/apps/pwa/out/_next/static/chunks/4320-dcc5a7734126f4c9.js +0 -1
- package/apps/pwa/out/_next/static/chunks/4434.94b4c552a2d91e69.js +0 -148
- package/apps/pwa/out/_next/static/chunks/4579.03e4092f73950965.js +0 -226
- package/apps/pwa/out/_next/static/chunks/4667.97e31aa38c95c475.js +0 -309
- package/apps/pwa/out/_next/static/chunks/4702.4a4adc1f16d7c93b.js +0 -64
- package/apps/pwa/out/_next/static/chunks/4815.481501c57b3568d9.js +0 -1
- package/apps/pwa/out/_next/static/chunks/487-d16e698ef14662d9.js +0 -1
- package/apps/pwa/out/_next/static/chunks/4888-7a38bf522c9cc6fe.js +0 -1
- package/apps/pwa/out/_next/static/chunks/5034-30e429d6bb086881.js +0 -1
- package/apps/pwa/out/_next/static/chunks/5040-35c494e60dadd97d.js +0 -1
- package/apps/pwa/out/_next/static/chunks/50c6ab1e.81a96e419350909d.js +0 -1
- package/apps/pwa/out/_next/static/chunks/5154.4b6a836179356f30.js +0 -94
- package/apps/pwa/out/_next/static/chunks/5228-a8200df486278f2d.js +0 -1
- package/apps/pwa/out/_next/static/chunks/5379.97af106d09566f69.js +0 -8
- package/apps/pwa/out/_next/static/chunks/5479-b6372e762719f92f.js +0 -1
- package/apps/pwa/out/_next/static/chunks/5534-699c5cbcbc96c5d7.js +0 -1
- package/apps/pwa/out/_next/static/chunks/5701.9c4e8f250312eeee.js +0 -24
- package/apps/pwa/out/_next/static/chunks/5892.2526d962339662d8.js +0 -1
- package/apps/pwa/out/_next/static/chunks/5937.c2df9e3447e1f667.js +0 -1
- package/apps/pwa/out/_next/static/chunks/5941.8210cc93c9202c0a.js +0 -286
- package/apps/pwa/out/_next/static/chunks/5975.4004f820ae3cecd5.js +0 -1
- package/apps/pwa/out/_next/static/chunks/6142-7ccd48795d7abd55.js +0 -1
- package/apps/pwa/out/_next/static/chunks/6160.bf9177b8c1bfb243.js +0 -1
- package/apps/pwa/out/_next/static/chunks/6398.71ba0690c8027555.js +0 -27
- package/apps/pwa/out/_next/static/chunks/6492.2bd5c10edc1a064e.js +0 -1
- package/apps/pwa/out/_next/static/chunks/6552.a3840aa7da35ad68.js +0 -62
- package/apps/pwa/out/_next/static/chunks/6736.1e36d3ac5fa5e41d.js +0 -24
- package/apps/pwa/out/_next/static/chunks/6900.3ccbe069bdd4556a.js +0 -1
- package/apps/pwa/out/_next/static/chunks/71327eb4.add50b365f94bf3a.js +0 -122
- package/apps/pwa/out/_next/static/chunks/7136.deca3e3a2ddaa374.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7139-ee9f8ed2677a40b3.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7191.fdc955f7d96064a4.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7423-e0aa5d9e2962120e.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7453.afc1ea7e05d56a8c.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7503-5e6a3d7fe67e4a0c.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7761-476fd7bf768abd34.js +0 -1
- package/apps/pwa/out/_next/static/chunks/7975.eafb12097a0a9e62.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8050-9b364bdef8f71927.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8152.64e253c35cccfaae.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8190.620f0231b3924bcb.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8448.45b6b1f1a99eeb35.js +0 -104
- package/apps/pwa/out/_next/static/chunks/8464-e24f10451b658aac.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8477.e4c944bb3aa5d2f3.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8710.ca385257d5ca422e.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8830.627ccf294ec2465c.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8880.64c445592f04acaf.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8981.c706964c8ba27aff.js +0 -1
- package/apps/pwa/out/_next/static/chunks/9053.bd0fffaff8d3f836.js +0 -1
- package/apps/pwa/out/_next/static/chunks/9161-c66e723d7ec9d682.js +0 -1
- package/apps/pwa/out/_next/static/chunks/9185.1ecdf9b65c0bb684.js +0 -1
- package/apps/pwa/out/_next/static/chunks/9356.fccd5f58086b4ff5.js +0 -1
- package/apps/pwa/out/_next/static/chunks/9446.dc0406109371d329.js +0 -1
- package/apps/pwa/out/_next/static/chunks/9506.dcf25d467a42627e.js +0 -1
- package/apps/pwa/out/_next/static/chunks/9541.eb8e2f8480c7feca.js +0 -93
- package/apps/pwa/out/_next/static/chunks/9577.ed7582186efa5482.js +0 -1
- package/apps/pwa/out/_next/static/chunks/9579.4a8169600fff2058.js +0 -1
- package/apps/pwa/out/_next/static/chunks/9642-ff2e039eb62e3b92.js +0 -1
- package/apps/pwa/out/_next/static/chunks/9659-8f2323348113ad80.js +0 -1
- package/apps/pwa/out/_next/static/chunks/9724.4c5623af2db43153.js +0 -34
- package/apps/pwa/out/_next/static/chunks/9869.81a1e24ca682d5a0.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/_not-found/page-8d9d76ea322d855c.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/approvals/page-ed2c4e59f9f1fe21.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/autopilot/page-2dc99e03c5d76ca0.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/board/page-b5a3a788330e920f.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/botlab/page-14949db884bfa672.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/bots/page-ea76c85b36388a97.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/ceo/page-01716d20af62d325.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/chat/page-62baf6881a64b1e9.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/consult/page-f89ba590c2af8afa.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/control/page-22f8b0f78d9637e5.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/decisions/page-817f9d7e6820be80.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/design-check/page-ffb9bc0d2650249a.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/editor/page-f6d0e64873c0f629.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/exec/page-8bfa0d4ba23a209d.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/field/page-f5060462249e32c7.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/healthz/route-8d9d76ea322d855c.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/inside/page-b2049f8b1ef79117.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/intake/page-1446c5fa93907f11.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/layout-b48a7a07c5204156.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/live/page-e974b8c4ca47614c.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/live-run/page-8a919b869bd28594.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/loops/page-d31b8de6bfcd72ed.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/market/page-64765f817909db29.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/missions/[id]/page-d128c8569a36ee9b.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/morning/page-b2679d357e9b9270.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/not-found-6fabec98a9e7b269.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/observatory/page-048f30149dcf1349.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/ops/checklist/page-9113181d6b5a2725.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/ops/seats/page-1e7a755a13227611.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/outputs/page-3c8f8b67a203cf07.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/page-18032f5437215062.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/reflection/page-da3b739192fd0ee3.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/scheduler/page-d332545571bd6fd1.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/sessions/page-5237aa5b3f3b8ec5.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/settings/page-d16e56c3989c147e.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/setup/done/page-6b6593600869e2cd.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/setup/layout-8d9d76ea322d855c.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/setup/page-29e8b8a8396b55cb.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/share/page-b3414d856a1a7e2f.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/showroom/page-c3affa52b7ce961b.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/tasks/page-f21dddf9f95b6fab.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/term/page-f5a30a24745bf088.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/today/page-8c8569a09b4d4e34.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/trace/page-2ce32722c0243483.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/vault/page-4767b0d9c0a98c6c.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-116ee1339c387a75.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/workflows/page-35e8c50ca4ef7ffc.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/workspace/page-52e17113356bb891.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/worktrees/page-7458ae05ed2ac1a0.js +0 -1
- package/apps/pwa/out/_next/static/chunks/framework-ad6c9dd524ad6ef8.js +0 -1
- package/apps/pwa/out/_next/static/chunks/main-app-2ddd1f2b44d6aa59.js +0 -1
- package/apps/pwa/out/_next/static/chunks/main-e3d82bdc358d20c5.js +0 -1
- package/apps/pwa/out/_next/static/chunks/pages/_app-71d5aa3896e1655f.js +0 -1
- package/apps/pwa/out/_next/static/chunks/pages/_error-03ffc54e00438546.js +0 -1
- package/apps/pwa/out/_next/static/chunks/webpack-56bb89af5a611d0b.js +0 -1
- package/apps/pwa/out/_next/static/css/be9019f696217521.css +0 -1
- package/apps/pwa/out/_next/static/css/d0a48dc099ed86cf.css +0 -1
- /package/apps/pwa/out/_next/static/{GiOLWmt4MqDZePubBjA4Q → Om5xS9jpjSXJCeTNGYEi4}/_ssgManifest.js +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7503],{4351:(e,t,r)=>{r.d(t,{$E:()=>k,CF:()=>l,DN:()=>a,W3:()=>w,bC:()=>g,gc:()=>y,hC:()=>C,hq:()=>N,ji:()=>v,lu:()=>f,ns:()=>S,qd:()=>b,ys:()=>A});var n=r(38100);let a=["agent","gate","git","judge","observe","hitl","subgraph"],l=["prompt","bash","skill","cft","approval","if","switch","iteration","classify","extract","set","filter","template","http","showroom","task","scheduleTrigger","webhookTrigger","discordTrigger","telegramTrigger","manualTrigger","chatTrigger"];function s(e){return(0,n.jh)(e.contents)?e.contents:null}function o(e){return(0,n.jn)(e)?e:null}function i(e){let t=o(e);return t&&("string"==typeof t.value||"number"==typeof t.value)?String(t.value):void 0}function d(e,t){return e.items.find(e=>i(e.key)===t)}function c(e,t){var r;let a=null==(r=d(e,t))?void 0:r.value;return(0,n.oP)(a)?a:null}function u(e){return(0,n.jh)(e)?e:null}function p(e,t){var r;let n=o(null==(r=d(e,t))?void 0:r.value);return n&&("string"==typeof n.value||"number"==typeof n.value)?String(n.value):void 0}function x(e,t){return(function(e){let t=s(e);if(!t)return[];let r=c(t,"nodes");return r?r.items.flatMap(e=>{let t=u(e);return t?[t]:[]}):[]})(e).find(e=>p(e,"node_id")===t)}function m(e,t,r,n){var a;let l=o(null==(a=d(t,r))?void 0:a.value);if(l){l.value=n;return}t.set(e.createNode(r),e.createNode(n))}function f(e){let t=(0,n.Tp)(e,{keepSourceTokens:!0});return t.src=e,t.removed=[],t}function h(e){var t;return null!=(t=e.removed)?t:[]}function g(e,t){var r;let a=s(e);if(!a)throw Error("graph yaml root is not a map");let l=c(a,"nodes");if(l||(a.set(e.createNode("nodes"),e.createNode([])),e.structural=!0,l=c(a,"nodes")),!l)throw Error("nodes is not a sequence");if(x(e,t.nodeId))throw Error("node already exists: ".concat(t.nodeId));let o=new n.CA;o.set(e.createNode("node_id"),e.createNode(t.nodeId)),o.set(e.createNode("kind"),e.createNode(t.kind)),o.set(e.createNode("recipe"),e.createNode(t.recipe)),o.set(e.createNode("max_visits"),e.createNode(null!=(r=t.maxVisits)?r:1)),l.add(o)}function b(e,t){let r=s(e),n=r?c(r,"nodes"):null;if(!n)return;let a=n.items.findIndex(e=>{let r=u(e);return!!r&&p(r,"node_id")===t});a>=0&&(function(e,t){var r;let n=null==t?void 0:t.range;n&&h(e).push([n[0],null!=(r=n[2])?r:n[1]])}(e,n.items[a]),n.delete(a))}function y(e,t,r){let n=x(e,t);if(!n)throw Error("node not found: ".concat(t));m(e,n,"kind",r)}function v(e,t,r){let n=x(e,t);if(!n)throw Error("node not found: ".concat(t));m(e,n,"recipe",r)}function j(e){let t=s(e),r=t?c(t,"edges"):null;return r?r.items.flatMap(e=>{let t=u(e);return t?[t]:[]}):[]}function w(e,t){let r=s(e);if(!r)throw Error("graph yaml root is not a map");let a=c(r,"edges");if(a||(r.set(e.createNode("edges"),e.createNode([])),e.structural=!0,a=c(r,"edges")),!a)throw Error("edges is not a sequence");let l=j(e).find(e=>p(e,"from")===t.from&&d(e,"map"));l||((l=new n.CA).set(e.createNode("from"),e.createNode(t.from)),l.set(e.createNode("on"),e.createNode("outcome")),a.add(l),e.structural=!0),d(l,"map")||(e.structural=!0),m(e,function(e,t){var r;let a=null==(r=d(t,"map"))?void 0:r.value;if((0,n.jh)(a))return a;let l=new n.CA;return t.set(e.createNode("map"),l),l}(e,l),t.outcome,t.to)}function k(e,t){var r;let a=j(e).find(e=>p(e,"from")===t),l=a&&(null==(r=d(a,"map"))?void 0:r.value);return l&&(0,n.jh)(l)?p(l,"fail"):void 0}function N(e,t){let r=j(e).filter(e=>p(e,"from")===t).find(e=>void 0!==p(e,"on")&&"outcome"!==p(e,"on"));return r?"이 노드는 \xab".concat(p(r,"on"),"\xbb 간선으로 이어져 실패 경로를 따로 둘 수 없습니다"):null}function C(e,t,r){if(!x(e,t))throw Error("node not found: ".concat(t));if(null!==r&&(!x(e,r)||r===t))throw Error("invalid failure target: ".concat(r));if(N(e,t))throw Error("failure route requires an outcome edge: ".concat(t));if(null===r)return void S(e,t,"fail");if(!j(e).find(e=>p(e,"from")===t&&d(e,"map"))){let a=j(e).find(e=>p(e,"from")===t&&void 0!==p(e,"to"));if(a){let t=p(a,"to");a.delete("to"),a.set(e.createNode("on"),e.createNode("outcome"));let l=new n.CA;l.set(e.createNode("ok"),e.createNode(t)),l.set(e.createNode("fail"),e.createNode(r)),a.set(e.createNode("map"),l),e.structural=!0;return}}void 0===k(e,t)&&(e.structural=!0),w(e,{from:t,outcome:"fail",to:r})}function S(e,t,r){for(let g of j(e)){var a,l,s,o,c,u,x,m,f;if(p(g,"from")!==t)continue;let b=null==(a=d(g,"map"))?void 0:a.value;if(!(0,n.jh)(b))continue;let y=b.items.findIndex(e=>i(e.key)===r);if(y>=0){let t=b.items[y],r=null!=(u=null==(l=t.key.range)?void 0:l[0])?u:null==(s=t.value.range)?void 0:s[0],n=null!=(x=null==(o=t.value.range)?void 0:o[2])?x:null==(c=t.value.range)?void 0:c[1];if(b.flow&&void 0!==r&&void 0!==n){let a=e.src,l=a.slice(0,r).match(/,\s*$/);if(l)r-=l[0].length,n=null!=(f=null==(m=t.value.range)?void 0:m[1])?f:n;else{let e=a.slice(n).match(/^\s*,\s*/);e&&(n+=e[0].length)}}void 0!==r&&void 0!==n&&h(e).push([r,n]),b.items.splice(y,1)}}}function A(e){var t;let r,a=null!=(t=e.src)?t:"",l=t=>(console.debug("run-graph-yaml","fallback-to-string",{reason:t}),e.toString());if(!a)return l("missing-source");if(e.structural)return l("structural-edit");let s=[],d=0,c=0,u=t=>{if((0,n.oP)(t))return void t.items.forEach((l,d)=>{if((0,n.jh)(l)&&!l.range){var c,p,x;if(t.flow||!l.items.every(e=>void 0!==i(e.key)&&o(e.value))){r="new-sequence-map";return}let u=d>0?t.items[d-1]:null,m=(0,n.jh)(u)?null==(c=u.items[0])?void 0:c.key:void 0,f=(null==m?void 0:m.range)?a.lastIndexOf("\n",m.range[0]-1)+1:-1,h=f>=0?a.slice(f,m.range[0]):"";if(!(0,n.jh)(u)||!u.range||!/^ *- $/.test(h)){r="unknown-sequence-indent";return}let g=h.slice(0,-2),b=u.range[1],y=l.items.map(t=>{let a=i(t.key),l=o(t.value),s=e.createNode(a).toString(),d=l.toString(),c=(0,n.Tp)("".concat(s,": ").concat(d,"\n")),u=(0,n.jh)(c.contents)&&1===c.contents.items.length?c.contents.items[0]:void 0;return(c.errors.length||i(null==u?void 0:u.key)!==a||!(0,n.jn)(null==u?void 0:u.value)||u.value.value!==l.value)&&(r="unsafe-new-sequence-scalar")," ".concat(s,": ").concat(d)});if(r)return;let v=null!=(x=null==(p=y[0])?void 0:p.slice(2))?x:"";s.push({start:b,end:b,text:"\n".concat(g,"- ").concat(v).concat(y.length>1?"\n".concat(y.slice(1).map(e=>"".concat(g).concat(e)).join("\n")):"")})}else u(l)});if((0,n.jh)(t))for(let p of t.items){let x=i(p.key);if(!x&&!p.key.range){r="unreadable-key";continue}if((0,n.jh)(p.value)||(0,n.oP)(p.value)){if(!p.value.range&&t.range&&x){if(t.flow||!p.key.range){r="new-collection-pair";continue}let e=t.range[1],a=(0,n.jh)(p.value)?"".concat(x,":\n").concat(p.value.toString().replace(/\n$/,"").split("\n").map(e=>" ".concat(e)).join("\n")):"".concat(x,": ").concat(p.value.toString().trim());s.push({start:e,end:e,text:"\n".concat(a)})}else u(p.value);continue}let m=o(p.value);if(!x||!m){p.key.range&&(m||null===p.value)||(r="unreadable-pair");continue}if(!m.range){var l;d++;let o=t.range,u=null==(l=t.items.find(e=>e.key.range))?void 0:l.key;if(!o||!(null==u?void 0:u.range)){r="missing-map-range";continue}let p=e.createNode(x).toString(),f=m.toString(),h=(0,n.Tp)(t.flow?"{ ".concat(p,": ").concat(f," }"):"".concat(p,": ").concat(f,"\n")),g=(0,n.jh)(h.contents)&&1===h.contents.items.length?h.contents.items[0]:void 0;if(h.errors.length||i(null==g?void 0:g.key)!==x||!(0,n.jn)(null==g?void 0:g.value)||g.value.value!==m.value){r="unsafe-new-scalar";continue}if(t.flow){let e=o[1]-1;if("}"!==a[e]||a.slice(u.range[0],e).trimEnd().endsWith(",")){r="unknown-flow-map";continue}let n=a.slice(0,e).trimEnd().length;if(a.slice(a.lastIndexOf("\n",n-1)+1,n).includes("#")){r="flow-map-comment-before-close";continue}s.push({start:n,end:n,text:"".concat(t.items.some(e=>e.key.range)?", ":"").concat(p,": ").concat(f)})}else{let e=a.lastIndexOf("\n",u.range[0]-1)+1,t=a.slice(e,u.range[0]),n=/^ *(?:- )?$/.test(t)?t.replace(/- $/," "):null;if(null===n||o[1]<u.range[0]){r="unknown-block-indent";continue}let l=o[1];s.push({start:l,end:l,text:"".concat(l>0&&"\n"!==a[l-1]?"\n":"").concat(n).concat(p,": ").concat(f,"\n")})}c++;continue}let f=a.slice(m.range[0],m.range[1]),h=e.createNode(m.value).toString();f!==h&&s.push({start:m.range[0],end:m.range[1],text:h})}};if(u(e.contents),r||c!==d)return l(null!=r?r:"uninserted-new-pair");for(let[t,r]of h(e))s.push({start:t,end:r,text:""});h(e).length=0;let p=a;for(let e of s.sort((e,t)=>t.start-e.start||t.end-e.end))p="".concat(p.slice(0,e.start)).concat(e.text).concat(p.slice(e.end));return p}},23101:(e,t,r)=>{async function n(e){var t,r;let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=null!=(t=n.fetchImpl)?t:fetch,l="".concat(null!=(r=n.origin)?r:"","/v1/workflows/").concat(encodeURIComponent(e),"/chat-config"),s=await a(l);if(404===s.status)return null;if(!s.ok)throw Error("chat-config ".concat(s.status));return await s.json()}async function a(e){var t,r,n,a,s;let o=null!=(t=e.fetchImpl)?t:fetch,i="".concat(null!=(r=e.origin)?r:"","/v1/workflows/chat").concat(e.chatPath),d={"content-type":"application/json"};e.bearer&&e.bearer.length>0&&(d.authorization="Bearer ".concat(e.bearer));let c={message:e.message};e.sessionId&&(c.sessionId=e.sessionId);let u=await o(i,{method:"POST",headers:d,body:JSON.stringify(c),...e.signal?{signal:e.signal}:{}});if(!u.ok){let e=await u.text().catch(()=>"");throw Error("chat ".concat(u.status).concat(e?": "+e:""))}if((null!=(n=u.headers.get("content-type"))?n:"").includes("text/event-stream")&&u.body)return{kind:"streaming",frames:l(u.body)};let p=await u.json();return{kind:"buffered",response:null!=(a=p.response)?a:"",runId:null!=(s=p.runId)?s:""}}async function*l(e){let t=e.getReader(),r=new TextDecoder,n="";try{for(;;){let{value:e,done:a}=await t.read();if(a)break;let l=(n+=r.decode(e,{stream:!0})).indexOf("\n\n");for(;-1!==l;){let e=n.slice(0,l);n=n.slice(l+2);let t=s(e);t&&(yield t),l=n.indexOf("\n\n")}}if(n.trim().length>0){let e=s(n);e&&(yield e)}}finally{t.releaseLock()}}function s(e){let t="message",r=[];for(let n of e.split("\n")){let e=n.endsWith("\r")?n.slice(0,-1):n;if(e.startsWith(":"))continue;let a=e.indexOf(":");if(-1===a)continue;let l=e.slice(0,a),s=e.slice(a+1).replace(/^ /,"");"event"===l?t=s:"data"===l&&r.push(s)}return 0===r.length?null:{event:t,data:r.join("\n")}}r.d(t,{XQ:()=>n,gJ:()=>a})},25227:(e,t,r)=>{r.d(t,{T:()=>s});var n=r(59977),a=r(80585),l=r(67794);let s={tidy:function(e){let{id:t,data:r,selected:s,markerEnd:o,style:i,interactionWidth:d}=e,c=null==r?void 0:r.route;if(!c)return null;let u=l.Bu[c.family],p="back"===c.kind;return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(a.tE,{id:t,path:c.path,markerEnd:o,interactionWidth:null!=d?d:16,style:{stroke:u,strokeWidth:s?3:2,...p?{strokeDasharray:"6 4"}:{},...i}}),c.label&&(0,n.jsx)(a.rV,{children:(0,n.jsx)("div",{"data-testid":"edge-label-".concat(c.from,"-").concat(c.to),"data-edge-family":c.family,className:"nodrag nopan pointer-events-none absolute whitespace-nowrap rounded-full border px-1.5 font-mono text-[12px] leading-[18px]",style:{transform:"translate(-50%, -50%) translate(".concat(c.label.x,"px, ").concat(c.label.y,"px)"),width:c.label.width,textAlign:"center",borderColor:u,color:u,background:"var(--background, #fff)",fontWeight:"neutral"===c.family?500:600,...s?{boxShadow:"0 0 0 1px ".concat(u)}:{}},children:c.label.text})})]})}}},36358:(e,t,r)=>{r.d(t,{V:()=>n});function n(e){return e?"workflow-node-status workflow-node-status-".concat(e):"workflow-node-status"}},54415:(e,t,r)=>{r.d(t,{AC:()=>o,FI:()=>c,I_:()=>x,YR:()=>p,a4:()=>u,dM:()=>f,iu:()=>s,qk:()=>d,rN:()=>i,sE:()=>m,xX:()=>l});var n=r(38100),a=r(89477);function l(e,t){var r;let n=new Set((null!=(r=e.nodes)?r:[]).map(e=>e.id)),a="unknown"===t?"node":t;for(let e=1;e<1e4;e+=1){let t="".concat(a,"-").concat(e);if(!n.has(t))return t}return"".concat(a,"-").concat(Date.now())}function s(e,t,r){var n,a;let s=null!=(n=null==r?void 0:r.id)?n:l(e,t),o=function(e,t){switch(e){case"prompt":return{id:t,prompt:"Describe the desired behaviour…"};case"bash":return{id:t,bash:"echo todo"};case"skill":return{id:t,skill:"omni-digest",arguments:"$ARGUMENTS"};case"cft":return{id:t,cft:"pdca",config:{goal:"TBD",phase:"plan"}};case"approval":return{id:t,approval:{message:"Continue?"}};case"if":return{id:t,if:{condition:"$ARGUMENTS == 'yes'"}};case"switch":return{id:t,switch:{value:"$ARGUMENTS",cases:["a","b"]}};case"iteration":return{id:t,iteration:{items:'["a","b","c"]',body:"echo $index $item"}};case"classify":return{id:t,classify:{input:"$ARGUMENTS",classes:["question","command","other"]}};case"extract":return{id:t,extract:{input:"$ARGUMENTS",schema:{name:"person name",date:"ISO date if present"}}};case"set":return{id:t,set:{fields:{greeting:"Hello $ARGUMENTS"}}};case"filter":return{id:t,filter:{items:'["a","b","c"]',condition:"$item != 'b'"}};case"template":return{id:t,template:{template:"Hello {{ARGUMENTS}}!"}};case"http":return{id:t,http:{method:"GET",url:"https://api.example.com/items",headers:{Accept:"application/json"}}};case"scheduleTrigger":return{id:t,scheduleTrigger:{type:"interval",interval:36e5}};case"webhookTrigger":return{id:t,webhookTrigger:{method:"POST",path:"/hooks/example"}};case"discordTrigger":return{id:t,discordTrigger:{kind:"message"}};case"telegramTrigger":return{id:t,telegramTrigger:{kind:"message"}};case"manualTrigger":return{id:t,manualTrigger:{description:"Run manually"}};case"chatTrigger":return{id:t,chatTrigger:{path:"/chat",sessionMode:"stateless",streaming:!1}};default:return{id:t,bash:"echo placeholder"}}}(t,s);return{...e,nodes:[...null!=(a=e.nodes)?a:[],o]}}function o(e,t){var r;let n=(null!=(r=e.nodes)?r:[]).filter(e=>e.id!==t).map(e=>{let r=Array.isArray(e.depends_on)?e.depends_on.filter(e=>e!==t):void 0;if(void 0===r)return e;if(0===r.length){let{depends_on:t,...r}=e;return r}return{...e,depends_on:r}});return{...e,nodes:n}}function i(e,t,r){var n;if(t===r)return e;let a=(null!=(n=e.nodes)?n:[]).map(e=>{if(e.id!==r)return e;let n=Array.isArray(e.depends_on)?[...e.depends_on]:[];return n.includes(t)?e:(n.push(t),{...e,depends_on:n})});return{...e,nodes:a}}function d(e,t,r){var n;let a=(null!=(n=e.nodes)?n:[]).map(e=>{if(e.id!==r||!Array.isArray(e.depends_on))return e;let n=e.depends_on.filter(e=>e!==t);if(n.length===e.depends_on.length)return e;if(0===n.length){let{depends_on:t,...r}=e;return r}return{...e,depends_on:n}});return{...e,nodes:a}}function c(e,t,r){var n,l;if(!(null!=(n=e.nodes)?n:[]).find(e=>e.id===t))return e;let s=e,o=t;r.id&&r.id!==t&&(o=(s=function(e,t,r){var n,a;if(t===r||new Set((null!=(n=e.nodes)?n:[]).map(e=>e.id)).has(r))return e;let l=(null!=(a=e.nodes)?a:[]).map(e=>{let n=e;return e.id===t&&(n={...n,id:r}),Array.isArray(n.depends_on)&&(n={...n,depends_on:n.depends_on.map(e=>e===t?r:e)}),n});return{...e,nodes:l}}(e,t,r.id))===e?t:r.id);let i=(null!=(l=s.nodes)?l:[]).map(e=>{if(e.id!==o)return e;let t={...e},n=(0,a.OC)(e),l=["bash","prompt","skill","cft","approval"].find(e=>void 0!==r[e]);return l&&l!==n&&"unknown"!==n&&(delete t[n],"skill"===n&&delete t.arguments,"cft"===n&&delete t.config),void 0!==r.bash&&(t.bash=r.bash),void 0!==r.prompt&&(t.prompt=r.prompt),void 0!==r.skill&&(t.skill=r.skill),void 0!==r.arguments&&(t.arguments=r.arguments),void 0!==r.cft&&(t.cft=r.cft),void 0!==r.config&&(t.config=r.config),void 0!==r.approval&&(t.approval=r.approval),null===r.when?delete t.when:"string"==typeof r.when&&(t.when=r.when),void 0!==r.depends_on&&(0===r.depends_on.length?delete t.depends_on:t.depends_on=[...r.depends_on]),t});return{...s,nodes:i}}function u(e,t,r){var n,a;if(!(null!=(n=e.nodes)?n:[]).find(e=>e.id===t))return e;let l=e._meta&&"object"==typeof e._meta?{...e._meta}:{},s=l.layout&&"object"==typeof l.layout?{...l.layout}:{},o=new Set((null!=(a=e.nodes)?a:[]).map(e=>e.id));for(let e of Object.keys(s))o.has(e)||delete s[e];return s[t]={x:Math.round(r.x),y:Math.round(r.y)},l.layout=s,{...e,_meta:l}}function p(e){if(!e._meta||"object"!=typeof e._meta)return e;let t={...e._meta};if(!("layout"in t))return e;if(delete t.layout,0===Object.keys(t).length){let{_meta:t,...r}=e;return r}return{...e,_meta:t}}function x(e,t){var r,n;let s=(null!=(r=e.nodes)?r:[]).find(e=>e.id===t);if(!s)return e;let o=l(e,(0,a.OC)(s)),{id:i,depends_on:d,...c}=s,u={...c,id:o};return{...e,nodes:[...null!=(n=e.nodes)?n:[],u]}}function m(e){var t;let r={};for(let t of("string"==typeof e.name&&(r.name=e.name),"string"==typeof e.description&&(r.description=e.description),Object.keys(e)))"name"!==t&&"description"!==t&&"nodes"!==t&&(r[t]=e[t]);return r.nodes=null!=(t=e.nodes)?t:[],(0,n.As)(r,{lineWidth:0,defaultStringType:"PLAIN",singleQuote:!1})}function f(e){try{let t=(0,n.parse)(e);if(!t||"object"!=typeof t||!Array.isArray(t.nodes))return null;return t}catch(e){return null}}},61266:(e,t,r)=>{r.d(t,{U:()=>l});var n=r(95453);class a{get canUndo(){return this.past.length>0}get canRedo(){return this.future.length>0}record(e){this.past.at(-1)!==e&&(this.past.push(e),this.past.length>50&&this.past.shift(),this.future=[])}undo(e){let t=this.past.pop();return void 0===t?null:(this.future.push(e),t)}redo(e){let t=this.future.pop();return void 0===t?null:(this.past.push(e),this.past.length>50&&this.past.shift(),t)}constructor(){this.past=[],this.future=[]}}function l(){let e=(0,n.useRef)(new a),[,t]=(0,n.useReducer)(e=>e+1,0),r=(0,n.useCallback)(r=>{e.current.record(r),t()},[]),l=(0,n.useCallback)(r=>{let n=e.current.undo(r);return null!==n&&t(),n},[]);return{record:r,undo:l,redo:(0,n.useCallback)(r=>{let n=e.current.redo(r);return null!==n&&t(),n},[]),reset:(0,n.useCallback)(()=>{e.current=new a,t()},[]),canUndo:e.current.canUndo,canRedo:e.current.canRedo}}},73642:(e,t,r)=>{r.d(t,{AF:()=>n});let n={all:["nexus"],health:()=>[...n.all,"health"],snapshot:()=>[...n.all,"snapshot"],tabs:e=>e?[...n.all,"tabs",{kind:e}]:[...n.all,"tabs"],tab:e=>[...n.all,"tab",e],templates:()=>[...n.all,"templates"],template:e=>[...n.all,"template",e],config:()=>[...n.all,"config"],switches:()=>[...n.all,"switches"],switch:e=>[...n.all,"switch",e],secrets:()=>[...n.all,"secrets"],bindingChannels:()=>[...n.all,"bindings","channels"],bindings:e=>[...n.all,"bindings",e],binding:(e,t)=>[...n.all,"binding",e,t],logsTail:(e,t)=>t?[...n.all,"logs",e,{lines:t}]:[...n.all,"logs",e],workflows:()=>[...n.all,"workflows"],workflow:e=>[...n.all,"workflow",e],workflowRun:e=>[...n.all,"workflow-run",e],workflowRuns:()=>[...n.all,"workflow-runs"],pendingApprovals:()=>[...n.all,"workflow-pending-approvals"],platforms:()=>[...n.all,"platforms"],providers:()=>[...n.all,"providers"],worktrees:()=>[...n.all,"worktrees"],designCheck:()=>[...n.all,"design-check"],designPreviews:()=>[...n.all,"design-previews"],designPreview:e=>[...n.all,"design-preview",e],registryCatalog:()=>[...n.all,"registry-catalog"],resolvedView:()=>[...n.all,"resolved-view"]};n.snapshot(),n.tabs(),n.health(),n.snapshot(),n.config(),n.switches()},78090:(e,t,r)=>{r.d(t,{F:()=>v});var n=r(59977),a=r(95453),l=r(82502),s=r(8464),o=r(8067),i=r(80585),d=r(76827);r(11103);var c=r(99106),u=r(61266),p=r(52527),x=r(97567),m=r(25227),f=r(4351);let h={agent:"#3b82f6",gate:"#f59e0b",git:"#10b981",judge:"#a855f7",observe:"#06b6d4",hitl:"#f43f5e",subgraph:"#8b5cf6"},g={run:function(e){var t;let{data:r}=e;return(0,n.jsxs)("div",{className:"rounded-lg border border-border bg-surface px-3 py-2 shadow-sm",style:{width:x.E,borderLeft:"4px solid ".concat(null!=(t=h[r.kind])?t:"#64748b"),height:r.height},children:[r.inputHandles.map((e,t)=>(0,n.jsx)(i.h7,{id:e,type:"target",position:d.yX.Left,className:"!pointer-events-none !opacity-0",style:{top:"".concat((t+1)/(r.inputHandles.length+1)*100,"%")}},e)),(0,n.jsxs)("div",{className:"flex items-center gap-1 text-[10px] text-text-tertiary",children:[(0,n.jsx)("span",{children:r.kind}),r.entry&&(0,n.jsx)("span",{className:"rounded bg-success/15 px-1 text-success",children:"entry"}),r.terminal&&(0,n.jsx)("span",{className:"rounded bg-accent/15 px-1 text-accent",children:"terminal"})]}),(0,n.jsx)("div",{className:"font-mono text-xs font-semibold text-text-primary",children:r.label}),(0,n.jsxs)("div",{className:"max-w-[170px] truncate text-[10px] text-text-tertiary",title:r.recipe,children:[r.recipe," \xb7 max ",r.maxVisits]}),r.outcomes.length>0&&(0,n.jsx)("div",{className:"max-w-[170px] truncate text-[10px] text-text-tertiary",title:r.outcomes.join(" \xb7 "),children:r.outcomes.join(" \xb7 ")}),r.outputHandles.map((e,t)=>(0,n.jsx)(i.h7,{id:e,type:"source",position:d.yX.Right,className:"!pointer-events-none !opacity-0",style:{top:"".concat((t+1)/(r.outputHandles.length+1)*100,"%")}},e))]})}},b={labelStyle:{fill:"var(--text-primary, #334155)",fontSize:12},labelBgStyle:{fill:"var(--surface, #fff)"}};function y(e){if(e instanceof p.Iu){var t;let r=e.body;return(null==r||null==(t=r.errors)?void 0:t.map(e=>e.message).filter(Boolean).join(" \xb7 "))||(null==r?void 0:r.reason)||"저장 검증 실패 (".concat(e.status,")")}return e instanceof Error?e.message:"저장에 실패했습니다."}function v(){var e,t,r,d,p,h,v,j,w,k,N,C,S,A,T,E,M,R,I,_,O,P;let{palette:L,initialGraphId:D,onNewGraph:z,onOpenInCanvas:F}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},W=(0,c.M1)(),$=(0,l.jE)(),[q,U]=(0,a.useState)(null),[G,K]=(0,a.useState)(null),[H,Y]=(0,a.useState)(null),[J,B]=(0,a.useState)("note"),[X,V]=(0,a.useState)(f.DN[0]),[Q,Z]=(0,a.useState)("read-only"),[ee,et]=(0,a.useState)(""),[er,en]=(0,a.useState)("pass"),[ea,el]=(0,a.useState)(""),[es,eo]=(0,a.useState)(null),[ei,ed]=(0,a.useState)([]),[ec,eu]=(0,a.useState)(null),ep=(0,u.U)(),ex=(0,s.I)({queryKey:["run-graphs"],queryFn:()=>W.getRunGraphs()}),em=(0,s.I)({queryKey:["graph-kinds","harness"],queryFn:()=>W.getGraphKinds("harness"),enabled:!L,retry:!1}),ef=null!=(M=null!=L?L:(null==(e=em.data)?void 0:e.kinds.length)?em.data.kinds:null)?M:f.DN.map(e=>({graph:"harness",kind:e,plugin:null,description:"",schema:{},core:!0})),eh=ef.some(e=>e.kind===X)?X:null!=(R=null==(t=ef[0])?void 0:t.kind)?R:X,eg=null!=(_=null!=(I=null!=q?q:null==(d=ex.data)||null==(r=d.graphs.find(e=>e.id===D))?void 0:r.id)?I:null==(h=ex.data)||null==(p=h.graphs[0])?void 0:p.id)?_:null,eb=null==(v=ex.data)?void 0:v.graphs.find(e=>e.id===eg),ey=(0,s.I)({queryKey:["run-graph",eg],queryFn:()=>W.getRunGraph(eg),enabled:null!==eg}),ev=(null==eb?void 0:eb.editable)===!0&&"mine"===eb.source&&(null==(j=ey.data)?void 0:j.id)===eg&&"mine"===ey.data.source&&!0===ey.data.editable,ej=(0,s.I)({queryKey:["run-graph-flat",ev?null:eg],queryFn:()=>W.getRunGraphFlat(eg),enabled:!ev&&null!==eg&&"function"==typeof W.getRunGraphFlat}),ew="function"==typeof W.getRunGraphFlat,ek=(0,s.I)({queryKey:["run-graph-yaml",ev?eg:null],queryFn:()=>W.getRunGraphYaml(eg),enabled:ev&&null!==eg}),eN=ev?G===eg?H:(null==(w=ek.data)?void 0:w.id)===eg&&"mine"===ek.data.source&&ek.data.editable?ek.data.yaml:null:null,eC=ev?ey.data:ew&&(null==(k=ej.data)?void 0:k.id)===eg?ej.data:void 0,eS=(0,a.useMemo)(()=>eC&&eC.id===eg?(0,x.h)(eC):null,[eC,eg]),eA=(0,a.useMemo)(()=>{var e;return null!=(e=null==eS?void 0:eS.nodes.map(e=>({...e,type:"run"})))?e:[]},[eS]),eT=(0,a.useMemo)(()=>null===eN?null:(0,f.lu)(eN),[eN]),eE=(null==eT||null==(C=eT.toJS())||null==(N=C.nodes)?void 0:N.some(e=>e.node_id===J))?J:null,eM=eE&&eT&&null!=(O=(0,f.$E)(eT,eE))?O:"",eR=eE&&eT?(0,f.hq)(eT,eE):null,eI=null!=(P=null==eT||null==(A=eT.toJS())||null==(S=A.nodes)?void 0:S.map(e=>e.node_id).filter(e=>"string"==typeof e&&e!==eE))?P:[];function e_(e){if(ev&&eg&&null!==eN&&!eL.isPending)try{let t=e(eN);if(t===eN)return;ep.record(eN),K(eg),Y(t),eo(null),ed([]),eu(null)}catch(e){eo(y(e))}}function eO(e){if(!ev||!eg||null===eN||eL.isPending)return;let t=ep[e](eN);null!==t&&(K(eg),Y(t),eo(null),ed([]),eu(null))}let eP=(0,o.n)({mutationFn:()=>W.cloneRunGraph(eg,"".concat(eg,"-mine")),onSuccess:async e=>{ep.reset(),K(null),Y(null),eo(null),eu(null),ed([]),await $.invalidateQueries({queryKey:["run-graphs"]}),U(e.id)}}),eL=(0,o.n)({mutationFn:async e=>{let{savingId:t,savingYaml:r}=e,n=await W.validateGraph("harness",r);return(ed(n.ignoredKeys),!n.ok||n.errors.length>0)?void eu(n.errors.map(e=>e.message).join(" \xb7 ")||"그래프 검증에 실패했습니다."):(eu(null),W.putRunGraphYaml(t,r))},onSuccess:async e=>{e&&(eo(null),ep.reset(),K(null),Y(null),await $.invalidateQueries({queryKey:["run-graph",e.id]}),await $.invalidateQueries({queryKey:["run-graph-yaml",e.id]}))},onError:e=>eo(y(e))});return(0,n.jsxs)("div",{className:"flex min-h-0 flex-1 overflow-hidden",children:[(0,n.jsxs)("aside",{className:"w-56 shrink-0 overflow-y-auto border-r border-border","aria-label":"실행 그래프 목록",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between gap-2 px-3 py-3",children:[(0,n.jsx)("h2",{className:"text-xs font-semibold",children:"실행 그래프"}),z&&(0,n.jsx)("button",{type:"button",onClick:z,className:"rounded bg-primary px-2 py-1 text-xs text-primary-foreground",children:"새 그래프"})]}),ex.isLoading&&(0,n.jsx)("p",{className:"px-3 text-xs text-text-tertiary",children:"불러오는 중…"}),ex.isError&&(0,n.jsx)("p",{role:"alert",className:"px-3 text-xs text-error",children:"그래프 목록을 불러오지 못했습니다."}),(null==(T=ex.data)?void 0:T.graphs.length)===0&&(0,n.jsx)("p",{className:"px-3 text-xs text-text-tertiary",children:"그래프가 없습니다."}),(0,n.jsx)("ul",{children:null==(E=ex.data)?void 0:E.graphs.map(e=>(0,n.jsx)("li",{children:(0,n.jsxs)("button",{type:"button",onClick:()=>{e.id!==eg&&(ep.reset(),K(null),Y(null)),U(e.id),eo(null),eu(null),ed([])},disabled:eL.isPending||eP.isPending,"aria-current":eg===e.id?"true":void 0,className:"w-full px-3 py-2 text-left text-xs hover:bg-surface-elevated ".concat(eg===e.id?"bg-accent/15 text-text-primary":"text-text-secondary"),children:[(0,n.jsx)("span",{className:"block font-mono",children:e.id}),(0,n.jsxs)("span",{className:"text-[10px] text-text-tertiary",children:[e.nodeCount," nodes \xb7 ","mine"===e.source?"내 그래프":"core"," \xb7 ",e.editable?"편집":"읽기 전용"]})]})},e.id))})]}),(0,n.jsxs)("section",{className:"relative flex min-w-0 flex-1 flex-col bg-surface","aria-label":"실행 그래프 캔버스",children:[(0,n.jsxs)("div",{className:"flex flex-wrap items-center gap-2 border-b border-border px-3 py-2",children:[eb&&!eb.editable&&(0,n.jsx)("button",{type:"button",onClick:()=>eP.mutate(),disabled:eP.isPending,className:"rounded border border-border px-2 py-1 text-xs",children:"복제해서 고치기"}),ev&&F&&eg&&null!==eN&&(0,n.jsx)("button",{type:"button",onClick:()=>F(eg,eN),className:"rounded border border-primary px-2 py-1 text-xs text-primary",children:"캔버스에서 편집"}),ev&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("button",{type:"button",onClick:()=>eO("undo"),disabled:!ep.canUndo||null===eN||eL.isPending,className:"rounded border border-border px-2 py-1 text-xs",children:"되돌리기"}),(0,n.jsx)("button",{type:"button",onClick:()=>eO("redo"),disabled:!ep.canRedo||null===eN||eL.isPending,className:"rounded border border-border px-2 py-1 text-xs",children:"다시 실행"}),(0,n.jsxs)("label",{className:"text-[10px] text-text-tertiary",children:["kind",(0,n.jsx)("select",{"aria-label":"노드 kind",value:eh,onChange:e=>V(e.target.value),className:"ml-1 text-xs",children:ef.map(e=>{var t;return(0,n.jsxs)("option",{value:e.kind,children:[e.kind,e.plugin?" \xb7 ".concat(e.plugin):""]},"".concat(null!=(t=e.plugin)?t:"core",":").concat(e.kind))})})]}),(0,n.jsx)("input",{"aria-label":"노드 id",value:J,onChange:e=>B(e.target.value),className:"w-24 rounded border border-border px-1 text-xs"}),(0,n.jsx)("input",{"aria-label":"recipe",value:Q,onChange:e=>Z(e.target.value),className:"w-28 rounded border border-border px-1 text-xs"}),(0,n.jsx)("button",{type:"button",className:"rounded border border-border px-2 py-1 text-xs",onClick:()=>e_(e=>{let t=(0,f.lu)(e);return(0,f.bC)(t,{nodeId:J,kind:eh,recipe:Q}),(0,f.ys)(t)}),children:"노드 추가"}),(0,n.jsx)("button",{type:"button",className:"rounded border border-border px-2 py-1 text-xs",onClick:()=>e_(e=>{let t=(0,f.lu)(e);return(0,f.qd)(t,J),(0,f.ys)(t)}),children:"노드 삭제"}),(0,n.jsx)("button",{type:"button",className:"rounded border border-border px-2 py-1 text-xs",onClick:()=>e_(e=>{let t=(0,f.lu)(e);return(0,f.gc)(t,J,eh),(0,f.ji)(t,J,Q),(0,f.ys)(t)}),children:"kind/recipe"}),eE&&(0,n.jsxs)("label",{className:"text-[10px] text-text-tertiary",children:["실패 시 다음 노드",(0,n.jsxs)("select",{"aria-label":"실패 시 다음 노드",value:eM,disabled:null!==eR,title:null!=eR?eR:void 0,onChange:e=>e_(t=>{let r=(0,f.lu)(t);return(0,f.hC)(r,eE,e.target.value||null),(0,f.ys)(r)}),className:"ml-1 text-xs",children:[(0,n.jsx)("option",{value:"",children:"선택 안 함"}),eI.map(e=>(0,n.jsx)("option",{value:e,children:e},e))]}),eR&&(0,n.jsx)("span",{role:"note",className:"ml-1",children:eR})]}),(0,n.jsx)("input",{"aria-label":"간선 from",value:ee,onChange:e=>et(e.target.value),placeholder:"from",className:"w-20 rounded border border-border px-1 text-xs"}),(0,n.jsx)("input",{"aria-label":"간선 결과",value:er,onChange:e=>en(e.target.value),placeholder:"결과",className:"w-16 rounded border border-border px-1 text-xs"}),(0,n.jsx)("input",{"aria-label":"간선 to",value:ea,onChange:e=>el(e.target.value),placeholder:"to",className:"w-20 rounded border border-border px-1 text-xs"}),(0,n.jsx)("button",{type:"button",className:"rounded border border-border px-2 py-1 text-xs",onClick:()=>e_(e=>{let t=(0,f.lu)(e);return(0,f.W3)(t,{from:ee,outcome:er,to:ea}),(0,f.ys)(t)}),children:"간선 추가"}),(0,n.jsx)("button",{type:"button",className:"rounded border border-border px-2 py-1 text-xs",onClick:()=>e_(e=>{let t=(0,f.lu)(e);return(0,f.ns)(t,ee,er),(0,f.ys)(t)}),children:"간선 삭제"}),(0,n.jsx)("button",{type:"button",onClick:()=>{ev&&eg&&null!==eN&&eL.mutate({savingId:eg,savingYaml:eN})},disabled:null===eN||eL.isPending,className:"rounded bg-accent px-2 py-1 text-xs text-white",children:"저장"})]})]}),!L&&em.isError&&(0,n.jsx)("p",{role:"status",className:"px-3 py-1 text-xs text-warning",children:"어휘 목록을 불러오지 못해 코어 팔레트를 표시합니다."}),(ec||es)&&(0,n.jsx)("p",{role:"alert",className:"px-3 py-1 text-xs text-error",children:ec||es}),ei.length>0&&(0,n.jsxs)("p",{role:"status",className:"px-3 py-1 text-xs text-warning",children:["무시되는 키: ",ei.join(" \xb7 ")]}),eP.isError&&(0,n.jsx)("p",{role:"alert",className:"px-3 py-1 text-xs text-error",children:y(eP.error)}),ey.isError&&(0,n.jsx)("p",{role:"alert",className:"p-4 text-xs text-error",children:"그래프를 불러오지 못했습니다."}),ey.isLoading&&(0,n.jsx)("p",{className:"p-4 text-xs text-text-tertiary",children:"불러오는 중…"}),!ev&&null!==eg&&!ew&&(0,n.jsx)("p",{role:"alert",className:"p-4 text-xs text-error",children:"정적 그래프 화면을 사용할 수 없습니다."}),!ev&&ej.isLoading&&(0,n.jsx)("p",{role:"status",className:"p-4 text-xs text-text-tertiary",children:"정적 그래프를 불러오는 중…"}),!ev&&ej.isError&&(0,n.jsx)("p",{role:"alert",className:"p-4 text-xs text-error",children:"정적 그래프를 불러오지 못했습니다."}),eS&&(0,n.jsxs)(i.Gc,{nodes:eA,onNodeClick:ev?(e,t)=>B(t.id):void 0,edges:eS.edges,nodeTypes:g,edgeTypes:m.T,fitView:!0,nodesDraggable:!1,nodesConnectable:!1,elementsSelectable:ev,edgesReconnectable:!1,deleteKeyCode:null,nodesFocusable:ev,edgesFocusable:!1,defaultEdgeOptions:b,className:"!bg-surface",children:[(0,n.jsx)(i.VS,{}),(0,n.jsx)(i.H2,{showInteractive:!1})]},null!=eg?eg:"")]})]})}},78620:(e,t,r)=>{r.d(t,{N:()=>tR});var n=r(59977),a=r(38100);let l=/^[a-z0-9]+(-[a-z0-9]+)*$/;function s(e){return e.trim().replace(/[^a-zA-Z0-9-]+/g,"-").replace(/^-+|-+$/g,"")}function o(e){return"".concat(s(e)||"workflow",".yaml")}function i(e){return/\.ya?ml$/i.test(e.name)?e.size>262144?{ok:!1,reason:"파일 크기는 256KB 이하여야 합니다."}:e.text.trim()?{ok:!0,yaml:e.text,suggestedName:s(e.name.replace(/\.ya?ml$/i,"").toLowerCase())||"workflow"}:{ok:!1,reason:"내용이 비어 있는 파일은 가져올 수 없습니다."}:{ok:!1,reason:"YAML 파일(.yaml 또는 .yml)을 선택해 주세요."}}var d=r(95453),c=r(49181),u=r(47047),p=r(9523),x=r(14065),m=r(31255),f=r(91568),h=r(27498),g=r(5723),b=r(53742),y=r(24469),v=r(49549),j=r(6057),w=r(59296),k=r(88616),N=r(92235),C=r(39626),S=r(5942),A=r(36909),T=r(29695),E=r(31703),M=r(99106),R=r(80585),I=r(76827);r(11103),r(96468);var _=r(89477),O=r(54415),P=r(61266);let L={running:{dot:"#3b82f6",label:"Running"},done:{dot:"#22c55e",label:"Done"},failed:{dot:"#ef4444",label:"Failed"},skipped:{dot:"#9ca3af",label:"Skipped"},awaiting_approval:{dot:"#f59e0b",label:"Awaiting approval"}},D={all:"\uD83D\uDCE3",modal:"\uD83D\uDDA5",terminal:"⌨",telegram:"\uD83D\uDCF2",discord:"\uD83D\uDCAC",pushcut:"\uD83D\uDD14"};var z=r(36358);let F="application/x-elanous-node",W=new Set(["prompt","bash","skill","cft","approval","if","switch","iteration","classify","extract","set","filter","template","http","scheduleTrigger","webhookTrigger","discordTrigger","telegramTrigger","manualTrigger","chatTrigger"]);function $(e,t){let r=t.core&&W.has(t.kind),n=(0,O.iu)(e,r?t.kind:"unknown");if(r)return n;let a=n.nodes.at(-1).id;return{...n,nodes:[...n.nodes.slice(0,-1),t.core?{id:a,[t.kind]:{}}:{id:a,kind:t.kind,inputs:{}}]}}function q(e,t,r){let n=$(e,t),a=n.nodes.at(-1).id;return{def:(0,O.a4)(n,a,r),id:a}}let U=e=>"elanous.workflow.notes.".concat(e);function G(e){try{var t;let r=JSON.parse(null!=(t=localStorage.getItem(U(e)))?t:"[]");if(!Array.isArray(r))return[];return r.filter(e=>null!==e&&"object"==typeof e&&"string"==typeof e.id&&"number"==typeof e.x&&Number.isFinite(e.x)&&"number"==typeof e.y&&Number.isFinite(e.y)&&"string"==typeof e.text).map(e=>{let{id:t,x:r,y:n,text:a}=e;return{id:t,x:r,y:n,text:a}})}catch(e){return[]}}function K(e,t,r){return e.map(e=>e.id===t?{...e,...r}:e)}function H(e,t){return e.filter(e=>e.id!==t)}let Y=r(4351).CF.map(e=>({graph:"workflow",kind:e,core:!0,description:"",plugin:null}));async function J(e){try{let{parse:t}=await Promise.resolve().then(r.bind(r,38100)),n=t(e);if(!n||"object"!=typeof n||!Array.isArray(n.nodes))return null;return n}catch(e){return null}}let B={prompt:"#8b5cf6",bash:"#22c55e",skill:"#f59e0b",cft:"#06b6d4",approval:"#ef4444",if:"#ec4899",switch:"#d946ef",iteration:"#a855f7",classify:"#0ea5e9",extract:"#14b8a6",set:"#84cc16",filter:"#10b981",template:"#f97316",http:"#3b82f6",scheduleTrigger:"#6366f1",webhookTrigger:"#a78bfa",discordTrigger:"#5865f2",telegramTrigger:"#0088cc",manualTrigger:"#64748b",chatTrigger:"#9333ea",unknown:"#9ca3af"};function X(e,t){if(!Array.from(e.dataTransfer.types).includes(F))return null;let r=function(e){try{let t=JSON.parse(e);if(!t||"object"!=typeof t||Array.isArray(t)||"workflow"!==t.graph||"string"!=typeof t.kind||"boolean"!=typeof t.core||"string"!=typeof t.description||void 0!==t.plugin&&null!==t.plugin&&"string"!=typeof t.plugin||(t.core?!/^[a-z][a-zA-Z0-9]*$/.test(t.kind):!/^[a-z0-9-]+:[a-z0-9-]+$/.test(t.kind)))return null;return t}catch(e){return null}}(e.dataTransfer.getData(F));return r&&(null!=t?t:Y).some(e=>e.kind===r.kind&&e.core===r.core)?r:null}function V(e){let{palette:t,yaml:r,definition:a,editable:l,onChangeYaml:s,onNodeClick:o,nodeStatuses:i,nodeIssues:c,cycleNodeIds:u,focusNodeId:p,focusNonce:x,onRun:m}=e,[f,h]=(0,d.useState)(null!=a?a:null),[g,b]=(0,d.useState)(!1),y=(0,d.useRef)(null),v=(0,d.useRef)(null),[j,w]=(0,d.useState)(()=>{var e;return{name:null!=(e=null==a?void 0:a.name)?e:null,items:(null==a?void 0:a.name)?G(a.name):[]}}),k=(0,d.useRef)(j),N=null!=(eN=null==f?void 0:f.name)?eN:null,C=j.name===N?j.items:[];(0,d.useEffect)(()=>{if(!N||k.current.name===N)return;let e={name:N,items:G(N)};k.current=e,w(e)},[N]);let S=(0,d.useCallback)(e=>{if(!l||!N)return;let t=e(k.current.name===N?k.current.items:G(N));k.current={name:N,items:t};try{localStorage.setItem(U(N),JSON.stringify(t))}catch(e){}w(k.current)},[l,N]),A=(0,d.useCallback)(()=>{var e,t;if(!l||!N)return;let r=null==(e=v.current)?void 0:e.getBoundingClientRect(),n=y.current,a=r?{x:r.left+r.width/2,y:r.top+r.height/2}:{x:100,y:60},s=null!=(t=null==n?void 0:n.screenToFlowPosition(a))?t:r?{x:r.width/2,y:r.height/2}:a;S(e=>(function(e,t){let r=new Set(e.map(e=>e.id)),n=1;for(;r.has("note-".concat(n));)n++;return[...e,{id:"note-".concat(n),x:t.x,y:t.y,text:""}]})(e,{x:s.x-100,y:s.y-60}))},[S,l,N]),[T,E]=(0,d.useState)([]),{record:M,undo:I,redo:L,canUndo:D,canRedo:W}=(0,P.U)(),Y=(0,d.useRef)(null);(0,d.useEffect)(()=>{if(a){h(a),b(!1);return}let e=!1;return(async()=>{let t=await J(r);e||(h(t),b(null===t))})(),()=>{e=!0}},[r,a]);let V=(0,d.useCallback)(e=>{var t;if(!s)return;let n=null!=(t=(0,O.dM)(r))?t:f;if(!n)return;let a=e(n);try{let e=(0,O.sE)(a);if(e===r)return;M(r),h(a),s(e)}catch(e){}},[s,f,M,r]),ei=(0,d.useCallback)(e=>{null!==e&&s&&(h((0,O.dM)(e)),s(e))},[s]),ed=(0,d.useCallback)(()=>{s&&ei(I(r))},[s,ei,I,r]),ec=(0,d.useCallback)(()=>{s&&ei(L(r))},[s,ei,L,r]),eu=(0,d.useCallback)(()=>{var e;let t=null!=(e=(0,O.dM)(r))?e:f;if(!t)return;let n=function(e,t){var r;let n=new Set(t),a=(null!=(r=e.nodes)?r:[]).filter(e=>n.has(e.id));if(0===a.length)return null;let l=new Set(a.map(e=>e.id)),s=new Map((0,_.$k)(e).nodes.map(e=>[e.id,e.position])),o={};for(let e of a){let t=s.get(e.id);t&&(o[e.id]={...t})}return{nodes:a.map(e=>{let t=structuredClone(e);if(Array.isArray(t.depends_on)){let e=t.depends_on.filter(e=>l.has(e));e.length>0?t.depends_on=e:delete t.depends_on}return t}),layout:o}}(t,T);n&&(Y.current=n)},[r,f,T]),ep=(0,d.useCallback)(()=>{Y.current&&s&&V(e=>(function(e,t){var r,n;if(0===t.nodes.length)return e;let a=null!=(r=e.nodes)?r:[],l=[],s=new Map;for(let r of t.nodes){let t=(0,O.xX)({...e,nodes:[...a,...l]},(0,_.OC)(r));s.set(r.id,t),l.push({...structuredClone(r),id:t})}let o=e._meta&&"object"==typeof e._meta?{...e._meta}:{},i=o.layout&&"object"==typeof o.layout?{...o.layout}:{};for(let e=0;e<l.length;e+=1){let r=l[e],a=null==(n=r.depends_on)?void 0:n.map(e=>s.get(e)).filter(e=>void 0!==e);(null==a?void 0:a.length)?r.depends_on=a:delete r.depends_on;let o=t.layout[t.nodes[e].id];o&&(i[r.id]={x:o.x+40,y:o.y+40})}return Object.keys(i).length>0&&(o.layout=i),{...e,nodes:[...a,...l],...Object.keys(o).length>0?{_meta:o}:{}}})(e,Y.current))},[V,s]),ex=(0,d.useMemo)(()=>{if(!f)return null;try{return(0,_.$k)(f)}catch(e){return null}},[f]),em=(0,d.useMemo)(()=>{var e;return[...(null!=(e=null==ex?void 0:ex.nodes)?e:[]).map(e=>{var t;let r=null!=(t=null==u?void 0:u.has(e.id))&&t,n=null==c?void 0:c[e.id],a=null==i?void 0:i[e.id],l=(0,z.V)(null==a?void 0:a.status);return{id:e.id,type:"workflow",position:e.position,data:{raw:e,statusEntry:a,issues:n,inCycle:r},className:l,style:{background:"var(--surface, #0f1117)",color:"var(--text-primary, #e5e7eb)",border:r?"2px dashed #ef4444":"1.5px solid ".concat(B[e.variant]),borderRadius:8,padding:0,width:e.width,fontSize:11,textAlign:"left"}}}),...C.map(e=>({id:"annotation:".concat(e.id),type:"note",position:{x:e.x,y:e.y},data:{text:e.text,editable:!0===l,onTextChange:t=>S(r=>K(r,e.id,{text:t})),onRemove:()=>S(t=>H(t,e.id))},draggable:!0===l,selectable:!1,style:{padding:0,border:0,background:"transparent",width:200}}))]},[ex,i,c,u,C,l,S]),ef=(0,d.useMemo)(()=>({workflow:eo,note:Z}),[]),eh=(0,d.useMemo)(()=>ex?ex.edges.map(e=>{let t=(null==u?void 0:u.has(e.source))===!0&&u.has(e.target);return{id:e.id,source:e.source,target:e.target,animated:!1,style:t?{stroke:"#ef4444",strokeWidth:2,strokeDasharray:"6 4"}:{stroke:"var(--text-tertiary, #6b7280)",strokeWidth:1.5}}}):[],[ex,u]),eg=(0,d.useCallback)(e=>{l&&e.source&&e.target&&V(t=>(0,O.rN)(t,e.source,e.target))},[l,V]),eb=(0,d.useCallback)(e=>{if(!l)return;let t=new Map(C.map(e=>["annotation:".concat(e.id),e.id])),r=e.filter(e=>"remove"===e.type),n=r.map(e=>t.get(e.id)).filter(e=>void 0!==e);n.length>0&&S(e=>n.reduce((e,t)=>H(e,t),e));let a=r.filter(e=>!e.id.startsWith("annotation:"));a.length>0&&V(e=>a.reduce((e,t)=>(0,O.AC)(e,t.id),e));let s=e.filter(e=>"position"===e.type&&!1===e.dragging&&void 0!==e.position),o=s.filter(e=>t.has(e.id));o.length>0&&S(e=>o.reduce((e,r)=>K(e,t.get(r.id),{x:r.position.x,y:r.position.y}),e));let i=s.filter(e=>!e.id.startsWith("annotation:"));i.length>0&&V(e=>i.reduce((e,t)=>(0,O.a4)(e,t.id,t.position),e))},[l,V,C,S]),ey=(0,d.useCallback)(e=>{if(!l)return;let t=e.filter(e=>"remove"===e.type);0!==t.length&&V(e=>t.reduce((e,t)=>{let[r,n]=t.id.split("->");return r&&n?(0,O.qk)(e,r,n):e},e))},[l,V]),[ev,ej]=(0,d.useState)(!1),ew=(0,d.useCallback)(e=>{V(t=>$(t,e))},[V]),ek=(0,d.useCallback)(e=>{ew(e),ej(!1)},[ew]);var eN,eC,eS,eA,eT,eE=(0,d.useMemo)(()=>{if(!l)return[];let e=[];return e.push({key:"z",metaOrCtrl:!0,shift:!1,handler:ed},{key:"z",metaOrCtrl:!0,shift:!0,handler:ec},{key:"c",metaOrCtrl:!0,handler:eu},{key:"v",metaOrCtrl:!0,handler:ep}),e.push({key:"n",handler:()=>ej(e=>!e)}),e.push({key:"t",shift:!0,alt:!0,handler:()=>V(e=>(0,O.YR)(e))}),e.push({key:"Escape",handler:()=>ej(!1),preventDefault:!1}),e.push({key:"d",metaOrCtrl:!0,handler:()=>{let e=T[0];e&&V(t=>(0,O.I_)(t,e))}}),e.push({key:"F2",handler:()=>{let e=T[0];e&&o&&o(e)}}),m&&e.push({key:"Enter",metaOrCtrl:!0,handler:()=>m()}),e},[l,V,eu,o,ep,ec,m,ed,T]),eM={enabled:!0===l};let eR=null==(eS=null==eM?void 0:eM.enabled)||eS;return((0,d.useEffect)(()=>{if(!eR||0===eE.length)return;let e=e=>{if(!function(e){if(!e||!e.tagName)return!1;let t=e.tagName.toLowerCase();return"input"===t||"textarea"===t||e.isContentEditable}(e.target)){for(let t of eE)if(function(e,t){if(e.key.toLowerCase()!==t.key.toLowerCase())return!1;if(e.metaOrCtrl){if(!(t.metaKey||t.ctrlKey))return!1}else if(void 0!==e.meta&&e.meta!==t.metaKey||void 0!==e.ctrl&&e.ctrl!==t.ctrlKey)return!1;return(void 0===e.alt||e.alt===t.altKey)&&(void 0===e.shift||e.shift===t.shiftKey)}(t,e)){!1!==t.preventDefault&&e.preventDefault(),t.handler(e);return}}};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[eR,eE]),g)?(0,n.jsx)("div",{className:"flex h-full items-center justify-center text-[11px] text-text-tertiary",children:"YAML parse failed — switch to YAML view to fix."}):f?(eA=null!=(eC=null==ex?void 0:ex.nodes.length)?eC:0,eT=C.length,0===eA&&0===eT)?(0,n.jsxs)("div",{ref:v,className:"relative flex h-full items-center justify-center text-[11px] text-text-tertiary",onDragOver:e=>{l&&Array.from(e.dataTransfer.types).includes(F)&&(e.preventDefault(),e.dataTransfer.dropEffect="copy")},onDrop:e=>{if(!l)return;let r=X(e,t);r&&(e.preventDefault(),V(e=>q(e,r,{x:0,y:0}).def))},children:[l&&(0,n.jsx)(et,{palette:t,editable:!0===l,onAdd:ew}),l&&(0,n.jsx)(ee,{canUndo:D,canRedo:W,onUndo:ed,onRedo:ec}),l&&(0,n.jsx)(Q,{onAdd:A}),l&&ev&&(0,n.jsx)(es,{palette:t,onPick:ek,onClose:()=>ej(!1)}),l?"No nodes yet — pick a variant from the palette.":"No nodes yet — switch to YAML view to add one."]}):(0,n.jsxs)("div",{ref:v,className:"relative h-full w-full",children:[l&&(0,n.jsx)(et,{palette:t,editable:!0===l,onAdd:ew}),l&&(0,n.jsx)(ee,{canUndo:D,canRedo:W,onUndo:ed,onRedo:ec}),l&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(Q,{onAdd:A}),(0,n.jsx)(el,{onTidy:()=>V(e=>(0,O.YR)(e))})]}),l&&ev&&(0,n.jsx)(es,{palette:t,onPick:ek,onClose:()=>ej(!1)}),(0,n.jsxs)(R.Gc,{nodes:em,edges:eh,nodeTypes:ef,nodesDraggable:null!=l&&l,nodesConnectable:null!=l&&l,elementsSelectable:null!=l&&l,deleteKeyCode:l?["Backspace","Delete"]:null,onConnect:l?eg:void 0,onNodesChange:l?eb:void 0,onEdgesChange:l?ey:void 0,onInit:e=>{y.current=e},onDragOver:e=>{l&&Array.from(e.dataTransfer.types).includes(F)&&(e.preventDefault(),e.dataTransfer.dropEffect="copy")},onDrop:e=>{let r=y.current;if(!l||!r)return;let n=X(e,t);if(!n)return;e.preventDefault();let a=r.screenToFlowPosition({x:e.clientX,y:e.clientY});V(e=>q(e,n,a).def)},onNodeClick:o?(e,t)=>{"note"!==t.type&&o(t.id)}:void 0,onSelectionChange:e=>{let{nodes:t}=e;return E(t.filter(e=>"note"!==e.type).map(e=>e.id))},proOptions:{hideAttribution:!0},connectionLineComponent:l?er:void 0,fitView:!0,children:[(0,n.jsx)(R.VS,{variant:R._5.Dots,gap:16,size:1}),(0,n.jsx)(R.H2,{showInteractive:!1}),em.length>=10&&(0,n.jsx)(R.of,{position:"bottom-right",pannable:!0,zoomable:!0,bgColor:"#16171c",maskColor:"rgba(12, 12, 14, 0.6)",nodeColor:"#7188a5"}),void 0!==p&&(0,n.jsx)(en,{focusNodeId:null!=p?p:null,focusNonce:null!=x?x:0}),(0,n.jsx)(ea,{selectedIds:T})]})]}):(0,n.jsx)("div",{className:"flex h-full items-center justify-center text-[11px] text-text-tertiary",children:"Parsing…"})}function Q(e){let{onAdd:t}=e;return(0,n.jsx)("button",{type:"button",onClick:t,title:"메모 추가",className:"absolute right-20 top-3 z-10 rounded-md border border-amber-500 bg-amber-100 px-2 py-1 text-[10px] text-amber-950 shadow-md hover:bg-amber-200",children:"메모 추가"})}function Z(e){let{data:t}=e;return(0,n.jsxs)("div",{className:"rounded-md border border-amber-400 bg-amber-100 p-2 text-amber-950 shadow-md",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between pb-1 text-[10px] font-semibold",children:[(0,n.jsx)("span",{children:"메모"}),t.editable&&(0,n.jsx)("button",{type:"button",onClick:t.onRemove,title:"메모 지우기","aria-label":"메모 지우기",className:"nodrag text-amber-900",children:"\xd7"})]}),t.editable?(0,n.jsx)("textarea",{"aria-label":"메모 내용",value:t.text,onChange:e=>t.onTextChange(e.target.value),className:"nodrag nowheel block min-h-20 w-full resize-y rounded bg-amber-50 p-1 text-xs text-amber-950 outline-amber-600"}):(0,n.jsx)("div",{className:"min-h-20 whitespace-pre-wrap break-words text-xs",children:t.text})]})}function ee(e){let{canUndo:t,canRedo:r,onUndo:a,onRedo:l}=e;return(0,n.jsxs)("div",{className:"absolute right-3 top-12 z-10 flex gap-1",children:[(0,n.jsx)("button",{type:"button",onClick:a,disabled:!t,title:"Undo (Cmd/Ctrl+Z)",className:"rounded border border-border bg-surface-elevated px-2 py-1 text-[10px] text-text-tertiary disabled:opacity-50",children:"Undo"}),(0,n.jsx)("button",{type:"button",onClick:l,disabled:!r,title:"Redo (Cmd/Ctrl+Shift+Z)",className:"rounded border border-border bg-surface-elevated px-2 py-1 text-[10px] text-text-tertiary disabled:opacity-50",children:"Redo"})]})}function et(e){let{palette:t,editable:r,onAdd:a}=e;return(0,n.jsx)("div",{className:"absolute left-3 top-3 z-10 flex max-h-[calc(100%-1.5rem)] flex-col gap-1 overflow-y-auto rounded-md border border-border bg-surface-elevated p-1 shadow-md",children:(null!=t?t:Y).map(e=>(0,n.jsxs)("button",{type:"button",draggable:r,onDragStart:t=>{if(!r)return void t.preventDefault();t.dataTransfer.setData(F,JSON.stringify(e)),t.dataTransfer.effectAllowed="copy"},onClick:()=>a(e),className:"rounded px-2 py-0.5 text-left text-[10px] text-text-tertiary transition-colors hover:bg-surface hover:text-text-primary",style:{minWidth:80},children:["+ ".concat(e.kind),e.plugin&&(0,n.jsx)("span",{className:"ml-1 rounded bg-accent/15 px-1 text-accent",children:e.plugin})]},e.kind))})}function er(e){let{fromX:t,fromY:r,toX:a,toY:l}=e;return(0,n.jsxs)("g",{className:"workflow-edge-pending",children:[(0,n.jsx)("path",{d:"M ".concat(t,",").concat(r," C ").concat(t+60,",").concat(r," ").concat(a-60,",").concat(l," ").concat(a,",").concat(l),fill:"none",stroke:"var(--accent, #8b5cf6)",strokeWidth:1.8,strokeDasharray:"4 3"}),(0,n.jsx)("circle",{cx:a,cy:l,r:4,fill:"var(--accent, #8b5cf6)"})]})}function en(e){let{focusNodeId:t,focusNonce:r}=e,n=(0,R.VH)();return(0,d.useEffect)(()=>{if(!t)return;let e=setTimeout(()=>{n.fitView({nodes:[{id:t}],duration:300,padding:.3})},0);return()=>{clearTimeout(e)}},[t,r,n]),null}function ea(e){let{selectedIds:t}=e,r=(0,R.VH)(),n=t.join(",");return(0,d.useEffect)(()=>{if(t.length<=1)return;let e=setTimeout(()=>{r.fitView({nodes:t.map(e=>({id:e})),duration:300,padding:.25})},0);return()=>{clearTimeout(e)}},[n,r]),null}function el(e){let{onTidy:t}=e;return(0,n.jsx)("button",{type:"button",onClick:t,title:"Tidy-up auto-layout (Shift+Alt+T)",className:"absolute right-3 top-3 z-10 rounded-md border border-border bg-surface-elevated px-2 py-1 text-[10px] text-text-tertiary shadow-md hover:bg-surface hover:text-text-primary",children:"✨ Tidy"})}function es(e){let{palette:t,onPick:r,onClose:a}=e,[l,s]=(0,d.useState)(""),o=(null!=t?t:Y).filter(e=>e.kind.toLowerCase().includes(l.toLowerCase())||e.description.toLowerCase().includes(l.toLowerCase()));return(0,n.jsxs)("div",{className:"absolute right-0 top-0 z-20 flex h-full w-72 flex-col border-l border-border bg-surface-elevated shadow-xl",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between border-b border-border px-3 py-2",children:[(0,n.jsx)("span",{className:"text-xs font-semibold",children:"Add node"}),(0,n.jsx)("button",{type:"button",onClick:a,className:"text-[11px] text-text-tertiary hover:text-text-primary",title:"Close (Esc)",children:"✕"})]}),(0,n.jsx)("div",{className:"border-b border-border px-3 py-2",children:(0,n.jsx)("input",{type:"text",value:l,onChange:e=>s(e.target.value),placeholder:"Search variants…",autoFocus:!0,className:"w-full rounded-md border border-border bg-surface px-2 py-1 text-xs"})}),(0,n.jsxs)("ul",{className:"flex-1 overflow-y-auto px-2 py-2",children:[0===o.length&&(0,n.jsx)("li",{className:"px-2 py-1 text-[11px] text-text-tertiary",children:"No matches."}),o.map(e=>{var t;return(0,n.jsx)("li",{children:(0,n.jsxs)("button",{type:"button",onClick:()=>r(e),className:"flex w-full flex-col items-start gap-0.5 rounded px-2 py-1.5 text-left text-[11px] hover:bg-surface",children:[(0,n.jsx)("span",{className:"inline-block rounded px-1.5 py-0.5 text-[9px] font-semibold uppercase tracking-wider text-white",style:{background:null!=(t=B[e.kind])?t:B.unknown},children:e.kind}),e.plugin&&(0,n.jsx)("span",{className:"text-accent",children:e.plugin}),(0,n.jsx)("span",{className:"text-text-tertiary",children:e.description})]})},e.kind)})]})]})}function eo(e){let{data:t}=e,{raw:r,statusEntry:a,issues:l}=t,s=(0,R.Pj)(e=>e.transform[2]<.7),o=r.branches;return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(R.h7,{type:"target",position:I.yX.Left}),s?(0,n.jsx)(ei,{raw:r,statusEntry:a}):function(e,t,r){var a,l,s,o;let i=t?L[t.status]:null,d=(s=e.approvalDelivery)&&null!=(o=D[s])?o:null,c=t?"Last run: ".concat(null!=(a=null==i?void 0:i.label)?a:t.status)+(void 0!==t.durationMs?" \xb7 ".concat(t.durationMs,"ms"):"")+(t.error?" \xb7 ".concat(t.error):"")+(t.reason?" \xb7 ".concat(t.reason):""):void 0,u=null!=(l=null==r?void 0:r.length)?l:0,p=u>0?"".concat(u," validation issue").concat(1===u?"":"s",":\n")+r.map(e=>"\xb7 ".concat(e.message)).join("\n"):void 0;return(0,n.jsxs)("div",{style:{padding:"6px 8px"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,marginBottom:2},children:[(0,n.jsx)("span",{style:{display:"inline-block",padding:"0 5px",borderRadius:3,fontSize:9,fontWeight:600,textTransform:"uppercase",letterSpacing:.4,background:B[e.variant],color:"white"},children:e.badge}),(0,n.jsx)("span",{style:{fontWeight:500,fontSize:11},children:e.id}),i&&(0,n.jsx)("span",{"aria-label":c,title:c,style:{display:"inline-block",width:8,height:8,borderRadius:"50%",background:i.dot,flexShrink:0,boxShadow:(null==t?void 0:t.status)==="running"?"0 0 0 2px ".concat(i.dot,"33"):void 0}}),u>0&&(0,n.jsx)("span",{"aria-label":p,title:p,style:{fontSize:10,color:"#ef4444",fontWeight:700,flexShrink:0},children:"⚠"}),d&&(0,n.jsx)("span",{"aria-label":"delivery: ".concat(e.approvalDelivery),title:"Delivery: ".concat(e.approvalDelivery),style:{fontSize:10,marginLeft:"auto",flexShrink:0},children:d})]}),e.preview&&(0,n.jsx)("div",{style:{fontSize:10,opacity:.75,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:e.preview}),(e.hasWhen||e.triggerRule||e.hasToolPolicy)&&(0,n.jsxs)("div",{style:{display:"flex",gap:4,marginTop:3,fontSize:9,opacity:.7},children:[e.hasWhen&&(0,n.jsx)("span",{children:"when"}),e.triggerRule&&(0,n.jsx)("span",{children:e.triggerRule}),e.hasToolPolicy&&(0,n.jsx)("span",{children:"tools"})]})]})}(r,a,l),o&&o.length>0?o.map((e,t)=>{let r=(t+1)/(o.length+1)*100;return(0,n.jsx)(R.h7,{type:"source",position:I.yX.Right,id:e,style:{top:"".concat(r,"%")},children:(0,n.jsx)("span",{"aria-hidden":!0,style:{position:"absolute",right:14,top:-2,fontSize:8,color:"var(--text-tertiary, #6b7280)",pointerEvents:"none",whiteSpace:"nowrap"},children:e})},e)}):(0,n.jsx)(R.h7,{type:"source",position:I.yX.Right})]})}function ei(e){let{raw:t,statusEntry:r}=e,a=r?L[r.status]:null;return(0,n.jsxs)("div",{style:{padding:"4px 8px",display:"flex",alignItems:"center",gap:6},children:[(0,n.jsx)("span",{style:{display:"inline-block",padding:"0 5px",borderRadius:3,fontSize:9,fontWeight:600,textTransform:"uppercase",letterSpacing:.4,background:B[t.variant],color:"white"},children:t.badge}),(0,n.jsx)("span",{style:{fontSize:11,fontWeight:500},children:t.id}),a&&(0,n.jsx)("span",{style:{display:"inline-block",width:8,height:8,borderRadius:"50%",background:a.dot,marginLeft:"auto"}})]})}I.rN;var ed=r(8464),ec=r(10486),eu=r(75368),ep=r(97241);let ex='name: my-workflow\ndescription: |\n Manual-trigger smoke. Edit me \xb7 click ▶ Run now to fire.\n\nnodes:\n - id: start\n manualTrigger:\n description: Click ▶ Run now to fire this workflow\n\n - id: work\n bash: echo "hello"\n depends_on: [start]\n';function em(e){let{onApply:t,onOpenAI:r,onClose:a}=e,[l,s]=(0,d.useState)("template"),[o,c]=(0,d.useState)(null),u=(0,d.useRef)(0),p=(0,M.M1)();(0,d.useEffect)(()=>()=>{u.current++},[]);let x=async e=>{if(!e)return;let r=++u.current;c(null);try{let n=i({name:e.name,size:e.size,text:"pending"});if(!n.ok)return void c(n.reason);let a=await e.text();if(r!==u.current)return;let l=i({name:e.name,size:e.size,text:a});if(!l.ok)return void c(l.reason);t(l.yaml,l.suggestedName),m()}catch(e){r===u.current&&c("파일을 읽지 못했습니다. 다시 선택해 주세요.")}},m=()=>{u.current++,a()},f=(0,ed.I)({queryKey:["nexus","workflow-templates"],queryFn:()=>p.getWorkflowTemplates(),staleTime:6e4});return(0,n.jsx)("div",{role:"dialog","aria-modal":"true",className:"fixed inset-0 z-50 flex items-end justify-center bg-black/40 backdrop-blur-sm px-3 py-3 sm:items-center",onClick:m,children:(0,n.jsxs)("div",{className:"flex max-h-[85vh] w-full max-w-3xl flex-col gap-2 rounded-t-2xl border border-border bg-surface-elevated shadow-xl sm:rounded-lg",onClick:e=>e.stopPropagation(),children:[(0,n.jsxs)("header",{className:"flex items-center justify-between border-b border-border px-4 py-3",children:[(0,n.jsx)("h2",{className:"text-sm font-semibold",children:"New workflow"}),(0,n.jsx)("button",{type:"button",onClick:m,className:"rounded p-1 text-text-tertiary hover:bg-surface","aria-label":"Close",children:(0,n.jsx)(ec.A,{className:"h-4 w-4"})})]}),(0,n.jsxs)("nav",{className:"flex items-center gap-1 border-b border-border px-2",children:[(0,n.jsx)(ef,{active:"template"===l,onClick:()=>{u.current++,s("template")},icon:(0,n.jsx)(eu.A,{className:"h-3 w-3"}),children:"Template"}),(0,n.jsx)(ef,{active:"blank"===l,onClick:()=>{u.current++,s("blank")},icon:(0,n.jsx)(ep.A,{className:"h-3 w-3"}),children:"Blank"}),(0,n.jsx)(ef,{active:"file"===l,onClick:()=>s("file"),icon:(0,n.jsx)(eu.A,{className:"h-3 w-3"}),children:"파일"}),(0,n.jsx)(ef,{active:"ai"===l,onClick:()=>{u.current++,s("ai"),r()},icon:(0,n.jsx)(y.A,{className:"h-3 w-3"}),children:"AI generate"})]}),(0,n.jsxs)("div",{className:"flex-1 overflow-auto px-3 pb-3",children:["template"===l&&(0,n.jsx)(eh,{query:f,onPick:e=>{t(e.yaml,e.id),m()}}),"blank"===l&&(0,n.jsx)(eg,{onCreate:()=>{t(ex,"my-workflow"),m()}}),"file"===l&&(0,n.jsxs)("div",{className:"flex flex-col gap-2 px-3 py-4",children:[(0,n.jsx)("label",{htmlFor:"workflow-import-file",className:"text-[12px] text-text-secondary",children:"YAML 파일 가져오기 (최대 256KB)"}),(0,n.jsx)("input",{id:"workflow-import-file",type:"file",accept:".yaml,.yml",onChange:e=>{var t;x(null==(t=e.currentTarget.files)?void 0:t[0])},className:"max-w-full text-xs text-text-primary"}),o&&(0,n.jsx)("p",{role:"alert",className:"text-[11px] text-error",children:o})]}),"ai"===l&&(0,n.jsx)("div",{className:"px-3 py-4 text-[12px] text-text-tertiary",children:"The NL prompt panel is open. Describe your workflow there to let R3 synthesize trigger + nodes for you."})]})]})})}function ef(e){let{active:t,onClick:r,icon:a,children:l}=e;return(0,n.jsxs)("button",{type:"button",onClick:r,className:"flex items-center gap-1 rounded-t-md border-b-2 px-3 py-2 text-[11px] font-medium ".concat(t?"border-accent text-accent":"border-transparent text-text-tertiary hover:text-text-secondary"),children:[a,l]})}function eh(e){var t,r;let{query:a,onPick:l}=e;if(a.isLoading)return(0,n.jsxs)("div",{className:"flex items-center gap-2 px-2 py-4 text-[11px] text-text-tertiary",children:[(0,n.jsx)(k.A,{className:"h-3 w-3 animate-spin"}),"Loading templates…"]});if(a.isError)return(0,n.jsx)("div",{className:"px-2 py-4 text-[11px] text-error",children:"Failed to load templates."});let s=null!=(r=null==(t=a.data)?void 0:t.templates)?r:[];return 0===s.length?(0,n.jsx)("div",{className:"px-2 py-4 text-[11px] text-text-tertiary",children:"No templates available."}):(0,n.jsx)("div",{className:"grid grid-cols-1 gap-2 pt-2 sm:grid-cols-2 lg:grid-cols-3",children:s.map(e=>(0,n.jsxs)("button",{type:"button",onClick:()=>l(e),className:"flex flex-col gap-1 rounded-lg border border-border bg-surface px-3 py-2 text-left text-xs hover:border-accent/40 hover:bg-surface-elevated",children:[(0,n.jsx)("span",{className:"font-medium text-text-primary",children:e.title}),(0,n.jsx)("span",{className:"line-clamp-2 text-[11px] text-text-tertiary",children:e.description}),(0,n.jsx)("span",{className:"mt-1 flex flex-wrap gap-1",children:e.tags.map(e=>(0,n.jsx)("span",{className:"rounded-full border border-border bg-surface px-1.5 py-0.5 text-[9px] text-text-tertiary",children:e},e))})]},e.id))})}function eg(e){let{onCreate:t}=e;return(0,n.jsxs)("div",{className:"flex flex-col gap-3 px-3 py-4",children:[(0,n.jsx)("p",{className:"text-[12px] text-text-secondary",children:"Start with a 2-node manual-trigger scaffold. Edit names + bodies in the editor, then click ▶ Run now to fire."}),(0,n.jsx)("pre",{className:"rounded-md border border-border bg-surface p-3 font-mono text-[11px] leading-relaxed text-text-primary",children:ex}),(0,n.jsx)("div",{className:"flex justify-end",children:(0,n.jsx)("button",{type:"button",onClick:t,className:"rounded-md bg-accent px-4 py-1.5 text-[11px] font-medium text-primary-foreground hover:bg-accent-hover",children:"Create"})})]})}function eb(e){var t;let{name:r,onLoad:a,onClose:l}=e,s=(0,M.M1)(),o=(0,ed.I)({queryKey:["nexus","workflow-history",r],queryFn:()=>s.getWorkflowHistory(r)}),[i,c]=(0,d.useState)(null),[u,p]=(0,d.useState)(!1),[x,m]=(0,d.useState)(!1),f=(0,d.useRef)(0);(0,d.useLayoutEffect)(()=>(c(null),p(!1),m(!1),()=>{f.current++}),[r]);let h=async e=>{if(null!==i)return;let t=++f.current;c(e),p(!1),m(!1);try{let{yaml:n}=await s.getWorkflowHistoryVersion(r,e);if(t!==f.current)return;a(n),m(!0)}catch(e){t===f.current&&p(!0)}finally{t===f.current&&c(null)}};return(0,n.jsxs)("section",{"aria-label":"".concat(r," 이전 판"),className:"flex min-h-0 flex-1 flex-col bg-surface",children:[(0,n.jsxs)("header",{className:"flex items-center gap-2 border-b border-border px-3 py-2",children:[(0,n.jsx)(b.A,{className:"h-4 w-4 text-text-tertiary"}),(0,n.jsxs)("h2",{className:"min-w-0 flex-1 truncate text-sm font-medium",children:[r," \xb7 이전 판"]}),(0,n.jsx)("button",{type:"button",onClick:()=>{f.current++,l()},"aria-label":"이전 판 닫기",className:"rounded p-1 text-text-tertiary hover:bg-surface-elevated",children:(0,n.jsx)(ec.A,{className:"h-4 w-4"})})]}),x&&(0,n.jsx)("p",{role:"status",className:"border-b border-border px-3 py-2 text-xs text-success",children:"이전 판을 초안에 불러왔습니다. 저장하려면 Save를 누르세요."}),u&&(0,n.jsx)("p",{role:"alert",className:"border-b border-border px-3 py-2 text-xs text-error",children:"이전 판을 불러오지 못했습니다. 다시 시도해 주세요."}),o.isLoading?(0,n.jsxs)("p",{role:"status",className:"flex items-center gap-2 px-3 py-4 text-xs text-text-tertiary",children:[(0,n.jsx)(k.A,{className:"h-3 w-3 animate-spin"}),"이전 판을 읽는 중…"]}):o.isError?(0,n.jsxs)("p",{role:"alert",className:"flex items-center gap-2 px-3 py-4 text-xs text-error",children:[(0,n.jsx)(v.A,{className:"h-3 w-3"}),"이전 판 목록을 읽지 못했습니다."]}):(null==(t=o.data)?void 0:t.versions.length)?(0,n.jsx)("ul",{className:"min-h-0 flex-1 overflow-y-auto",children:o.data.versions.map(e=>(0,n.jsxs)("li",{className:"flex items-center gap-2 border-b border-border px-3 py-2 text-xs",children:[(0,n.jsx)("time",{dateTime:e.createdAt,className:"min-w-0 flex-1 text-text-primary",children:new Date(e.createdAt).toLocaleString()}),(0,n.jsxs)("span",{className:"shrink-0 text-text-tertiary",children:[e.size.toLocaleString()," B"]}),(0,n.jsx)("button",{type:"button",disabled:null!==i,onClick:()=>void h(e.id),className:"shrink-0 rounded-md border border-border px-2 py-1 text-text-primary hover:bg-surface-elevated disabled:opacity-50",children:i===e.id?"불러오는 중…":"불러오기"})]},e.id))}):(0,n.jsx)("p",{className:"px-3 py-4 text-xs text-text-tertiary",children:"아직 이전 판이 없습니다"})]})}function ey(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)}function ev(e){let{yaml:t,baseUrl:r,onClose:l}=e,s=function(e,t){try{let r=(0,a.parse)(e);if(!ey(r)||!Array.isArray(r.nodes))return[];let n=[],l=t.replace(/\/+$/,"");for(let e of r.nodes)if(ey(e)&&"string"==typeof e.id)for(let t of["webhook","chat"]){let r=e["webhook"===t?"webhookTrigger":"chatTrigger"];if(!ey(r)||"string"!=typeof r.path||!r.path.startsWith("/"))continue;let a="chat"===t?"POST":r.method;if("string"!=typeof a||!["GET","POST","PUT","PATCH","DELETE"].includes(a))continue;let s=ey(r.auth)&&"hmac"===r.auth.type?"hmac":ey(r.auth)&&"bearer"===r.auth.type?"bearer":"open",o="".concat(l,"/v1/workflows/").concat("chat"===t?"chat":"webhooks").concat(r.path),i="curl -X ".concat(a," ").concat("'".concat(o.replaceAll("'","'\\''"),"'"));("chat"===t||["POST","PUT","PATCH"].includes(a))&&(i+=" -H 'content-type: application/json'",i+="chat"===t?" -d '".concat(JSON.stringify({message:"안녕하세요"}),"'"):" -d '{}'"),"bearer"===s&&(i+=" -H 'authorization: Bearer <토큰>'"),"hmac"===s&&(i+=" # 서명 헤더 필요"),n.push({kind:t,nodeId:e.id,method:a,url:o,auth:s,curl:i})}return n}catch(e){return[]}}(t,r),[o,i]=(0,d.useState)(!1),c=async e=>{try{var t;if(!(null==(t=navigator.clipboard)?void 0:t.writeText))throw Error("Clipboard unavailable");await navigator.clipboard.writeText(e),i(!1)}catch(e){i(!0)}};return(0,n.jsxs)("section",{"aria-label":"워크플로 게시",className:"flex min-h-0 flex-1 flex-col bg-surface",children:[(0,n.jsxs)("header",{className:"flex items-center gap-2 border-b border-border px-3 py-2",children:[(0,n.jsx)("h2",{className:"min-w-0 flex-1 text-sm font-medium",children:"게시 \xb7 API\xb7채팅 앱"}),(0,n.jsx)("button",{type:"button",onClick:l,"aria-label":"게시 닫기",className:"rounded p-1 text-text-tertiary hover:bg-surface-elevated",children:(0,n.jsx)(ec.A,{className:"h-4 w-4"})})]}),o&&(0,n.jsx)("p",{role:"alert",className:"px-3 py-2 text-xs text-error",children:"복사하지 못했습니다"}),0===s.length?(0,n.jsx)("p",{className:"px-3 py-4 text-xs text-text-tertiary",children:"웹훅\xb7채팅 트리거를 넣으면 여기서 주소가 나옵니다"}):(0,n.jsx)("ul",{className:"min-h-0 flex-1 space-y-3 overflow-y-auto p-3",children:s.map(e=>(0,n.jsxs)("li",{className:"space-y-2 rounded-md border border-border p-3 text-xs",children:[(0,n.jsx)("h3",{className:"font-medium",children:"".concat("webhook"===e.kind?"웹훅":"채팅"," ").concat(e.method," \xb7 ").concat(e.nodeId)}),(0,n.jsxs)("div",{className:"flex min-w-0 items-center gap-2",children:[(0,n.jsx)("code",{className:"min-w-0 flex-1 break-all",children:e.url}),(0,n.jsx)("button",{type:"button",onClick:()=>void c(e.url),"aria-label":"".concat(e.nodeId," 주소 복사"),className:"shrink-0 rounded border border-border px-2 py-1 hover:bg-surface-elevated disabled:opacity-50",children:"복사"})]}),(0,n.jsxs)("div",{className:"flex min-w-0 items-start gap-2",children:[(0,n.jsx)("code",{className:"min-w-0 flex-1 whitespace-pre-wrap break-all",children:e.curl}),(0,n.jsx)("button",{type:"button",onClick:()=>void c(e.curl),"aria-label":"".concat(e.nodeId," curl 복사"),className:"shrink-0 rounded border border-border px-2 py-1 hover:bg-surface-elevated disabled:opacity-50",children:"복사"})]})]},"".concat(e.nodeId,":").concat(e.kind)))})]})}var ej=r(14699),ew=r(11905),ek=r(13276),eN=r(28406);function eC(e){var t;let{result:r,onApply:a,onRefine:l,onCancel:s}=e,o=null!=(t=r.yaml)?t:"";return(0,n.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/40 px-4 py-6",role:"dialog","aria-modal":"true",onClick:s,children:(0,n.jsxs)("div",{className:"flex max-h-[80vh] w-full max-w-3xl flex-col gap-3 rounded-lg border border-border bg-surface-elevated p-4 shadow-xl",onClick:e=>e.stopPropagation(),children:[(0,n.jsxs)("header",{className:"flex items-center justify-between",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)("span",{className:"rounded bg-surface px-1.5 py-0.5 text-[10px] uppercase tracking-wide text-text-tertiary",children:"Synth preview"}),r.workflowName&&(0,n.jsx)("span",{className:"font-mono text-sm font-medium text-text-primary",children:r.workflowName}),r.repaired&&(0,n.jsx)("span",{className:"rounded-full border border-warning/30 bg-warning/10 px-2 py-0.5 text-[10px] text-warning",children:"self-repaired"})]}),(0,n.jsx)("button",{type:"button",onClick:s,className:"rounded p-1 text-text-tertiary hover:bg-surface hover:text-text-primary","aria-label":"Cancel",children:(0,n.jsx)(ec.A,{className:"h-4 w-4"})})]}),r.triggerSummary&&(0,n.jsxs)("div",{className:"rounded-md border border-accent/30 bg-accent/10 px-3 py-2 text-xs text-accent",children:[(0,n.jsx)("span",{className:"font-medium",children:"Trigger: "}),r.triggerSummary]}),!r.ok&&r.error&&(0,n.jsxs)("div",{className:"flex items-start gap-2 rounded-md border border-error/40 bg-error/10 px-3 py-2 text-xs text-error",children:[(0,n.jsx)(ew.A,{className:"mt-0.5 h-4 w-4 shrink-0"}),(0,n.jsx)("span",{children:r.error})]}),(0,n.jsx)("div",{className:"flex-1 overflow-auto rounded-md border border-border bg-surface",children:(0,n.jsx)("pre",{className:"m-0 whitespace-pre p-3 font-mono text-[11px] leading-relaxed text-text-primary",children:o||"(no yaml — synth failed)"})}),(0,n.jsxs)("footer",{className:"flex items-center justify-between gap-2",children:[(0,n.jsx)("span",{className:"text-[11px] text-text-tertiary",children:"Apply writes the YAML into the editor draft. Save (panel footer) commits to disk."}),(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsxs)("button",{type:"button",onClick:l,className:"flex items-center gap-1 rounded-md border border-border px-3 py-1 text-[11px] text-text-secondary hover:bg-surface",children:[(0,n.jsx)(ek.A,{className:"h-3 w-3"}),"Refine"]}),(0,n.jsx)("button",{type:"button",onClick:s,className:"rounded-md border border-border px-3 py-1 text-[11px] text-text-secondary hover:bg-surface",children:"Cancel"}),(0,n.jsxs)("button",{type:"button",onClick:()=>{o&&a(o,r.workflowName)},disabled:!r.ok||!o,className:"flex items-center gap-1 rounded-md bg-accent px-3 py-1 text-[11px] font-medium text-primary-foreground hover:bg-accent-hover disabled:opacity-50",children:[(0,n.jsx)(eN.A,{className:"h-3 w-3"}),"Apply"]})]})]})]})})}function eS(e){let{currentYaml:t,skills:r,onGenerated:a,onClose:l}=e,[s,o]=(0,d.useState)(""),[i,c]=(0,d.useState)(""),[u,p]=(0,d.useState)(null),x=(0,E.up)(),m=(0,E.hM)(),f=!!(t&&t.trim().length>0),h=x.error instanceof Error?x.error.message:m.error instanceof Error?m.error.message:x.isError||m.isError?"generation failed":null;return(0,n.jsxs)("div",{className:"border-b border-border bg-surface-elevated",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between px-3 py-2",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)(y.A,{className:"h-4 w-4 text-accent"}),(0,n.jsx)("span",{className:"text-xs font-medium",children:f?"Refine workflow with AI":"Generate workflow from text"})]}),(0,n.jsx)("button",{type:"button",onClick:l,className:"rounded p-1 text-text-tertiary hover:bg-surface hover:text-text-primary","aria-label":"Close NL prompt",children:(0,n.jsx)(ec.A,{className:"h-3 w-3"})})]}),(0,n.jsxs)("div",{className:"px-3 pb-3",children:[(0,n.jsx)("textarea",{value:s,onChange:e=>o(e.target.value),placeholder:f?'How should this workflow change? e.g. "add a slack notification at the end"':'Describe the workflow. e.g. "Research the latest Apple Silicon benchmarks, summarize, and push to my iPhone."',rows:3,spellCheck:!1,className:"w-full resize-none rounded-md border border-border bg-surface px-2 py-1.5 text-xs leading-snug focus:border-accent focus:outline-none"}),(0,n.jsxs)("div",{className:"mt-2 flex items-center justify-between gap-2",children:[(0,n.jsxs)("select",{value:i,onChange:e=>c(e.target.value),className:"rounded-md border border-border bg-surface px-2 py-1 text-[11px] text-text-secondary focus:border-accent focus:outline-none",title:"LLM provider (default = your user-config)",children:[(0,n.jsx)("option",{value:"",children:"Default provider"}),(0,n.jsx)("option",{value:"anthropic",children:"anthropic"}),(0,n.jsx)("option",{value:"openai",children:"openai"}),(0,n.jsx)("option",{value:"grok",children:"grok"}),(0,n.jsx)("option",{value:"gemini",children:"gemini"}),(0,n.jsx)("option",{value:"local",children:"local"})]}),(0,n.jsxs)("div",{className:"flex items-center gap-1",children:[(0,n.jsx)("button",{type:"button",onClick:()=>{if(!s.trim()||m.isPending)return;let e={intent:s.trim(),preview:!0};f&&t&&(e.context="current yaml:\n".concat(t)),m.mutate(e,{onSuccess:e=>p(e)})},disabled:!s.trim()||m.isPending||x.isPending,className:"flex items-center gap-1 rounded-md border border-accent/40 bg-accent/10 px-3 py-1 text-[11px] font-medium text-accent hover:bg-accent/20 disabled:opacity-50",title:"Trigger-aware synth via R3 native skill (cron \xb7 webhook \xb7 discord \xb7 telegram \xb7 manual \xb7 chat all supported)",children:m.isPending?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(k.A,{className:"h-3 w-3 animate-spin"}),"Synthing…"]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(ej.A,{className:"h-3 w-3"}),"Synth (trigger-aware)"]})}),(0,n.jsx)("button",{type:"button",onClick:()=>{if(!s.trim()||x.isPending)return;let e={prompt:s.trim()};i&&(e.provider=i),r&&r.length>0&&(e.skills=r),f&&t&&(e.currentYaml=t),x.mutate(e,{onSuccess:e=>{a(e)}})},disabled:!s.trim()||x.isPending||m.isPending,className:"flex items-center gap-1 rounded-md bg-accent px-3 py-1 text-[11px] font-medium text-primary-foreground hover:bg-accent-hover disabled:opacity-50",children:x.isPending?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(k.A,{className:"h-3 w-3 animate-spin"}),"Generating…"]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(y.A,{className:"h-3 w-3"}),f?"Refine":"Generate"]})})]})]}),h&&(0,n.jsxs)("div",{className:"mt-2 flex items-start gap-1.5 rounded-md border border-error/40 bg-error/10 px-2 py-1 text-[11px] text-error",children:[(0,n.jsx)(ew.A,{className:"mt-0.5 h-3 w-3 shrink-0"}),(0,n.jsx)("span",{children:h})]}),u&&(0,n.jsx)(eC,{result:u,onApply:(e,t)=>{p(null),a({yaml:e,warnings:[],raw:e,definition:void 0})},onRefine:()=>p(null),onCancel:()=>p(null)}),x.data&&x.data.warnings.length>0&&(0,n.jsx)("ul",{className:"mt-2 max-h-24 overflow-y-auto rounded-md border border-warning/40 bg-warning/10 px-2 py-1 text-[11px] text-warning",children:x.data.warnings.slice(0,5).map((e,t)=>(0,n.jsxs)("li",{className:"flex items-start gap-1",children:[(0,n.jsx)(ew.A,{className:"mt-0.5 h-3 w-3 shrink-0"}),(0,n.jsx)("span",{children:e})]},t))})]})]})}let eA={valid:"bg-success/10 text-success border-success/30",warning:"bg-warning/10 text-warning border-warning/30",error:"bg-error/10 text-error border-error/30"};function eT(e){let{variantLabel:t,validationStatus:r=null,validationMessage:a,children:l}=e;return(0,n.jsxs)("div",{className:"rounded-md border border-border bg-surface-elevated",children:[(0,n.jsxs)("header",{className:"flex items-center justify-between border-b border-border px-3 py-2",children:[(0,n.jsx)("span",{className:"rounded bg-surface px-1.5 py-0.5 text-[10px] uppercase tracking-wide text-text-tertiary",children:t}),r&&(0,n.jsx)("span",{className:"rounded-full border px-2 py-0.5 text-[10px] ".concat(eA[r]),role:"status",children:null!=a?a:r})]}),(0,n.jsx)("div",{className:"grid grid-cols-1 gap-2 px-3 py-3 md:grid-cols-2",children:l})]})}function eE(e){let{label:t,full:r,hint:a,children:l}=e;return(0,n.jsxs)("label",{className:"flex flex-col gap-1 ".concat(r?"md:col-span-2":""),children:[(0,n.jsx)("span",{className:"text-[10px] uppercase tracking-wide text-text-tertiary",children:t}),l,a&&(0,n.jsx)("span",{className:"text-[10px] text-text-tertiary",children:a})]})}var eM=r(91861);function eR(e){let t=null==e?void 0:e.scheduleTrigger;return t&&"object"==typeof t?{type:"cron"===t.type?"cron":"interval",cron:"string"==typeof t.cron?t.cron:void 0,interval:"number"==typeof t.interval?t.interval:void 0,timezone:"string"==typeof t.timezone?t.timezone:void 0,jitter_seconds:"number"==typeof t.jitter_seconds?t.jitter_seconds:void 0,max_runs:"number"==typeof t.max_runs?t.max_runs:void 0,enabled:"boolean"==typeof t.enabled?t.enabled:void 0}:{type:"interval",interval:36e5}}function eI(e){var t,r,a,l,s,o;let{definition:i,nodeId:c,onChange:u}=e,p=(null!=(t=i.nodes)?t:[]).find(e=>e.id===c),x=eR(p),[m,f]=(0,d.useState)(x.type),[h,g]=(0,d.useState)(null!=(r=x.cron)?r:"0 9 * * *"),[b,y]=(0,d.useState)(String(null!=(a=x.interval)?a:36e5)),[v,j]=(0,d.useState)(null!=(l=x.timezone)?l:"Asia/Seoul"),[w,k]=(0,d.useState)(String(null!=(s=x.jitter_seconds)?s:"")),[N,C]=(0,d.useState)(String(null!=(o=x.max_runs)?o:"")),[S,A]=(0,d.useState)(!1!==x.enabled);(0,d.useEffect)(()=>{let e=eR(p);f(e.type),e.cron&&g(e.cron),"number"==typeof e.interval&&y(String(e.interval)),e.timezone&&j(e.timezone),k("number"==typeof e.jitter_seconds?String(e.jitter_seconds):""),C("number"==typeof e.max_runs?String(e.max_runs):""),A(!1!==e.enabled)},[c,p]);let T=(0,d.useCallback)(()=>{let e=Number(b),t=""===w?void 0:Number(w),r=""===N?void 0:Number(N);return{type:m,cron:"cron"===m?h.trim():void 0,interval:"interval"===m&&Number.isFinite(e)?e:void 0,timezone:v.trim()||void 0,jitter_seconds:Number.isFinite(t)?t:void 0,max_runs:Number.isFinite(r)?r:void 0,enabled:S}},[m,h,b,v,w,N,S]),E=(0,d.useRef)(null);(0,d.useEffect)(()=>{if(p)return E.current&&clearTimeout(E.current),E.current=setTimeout(()=>{u(function(e,t,r){var n;let a={type:r.type};"cron"===r.type&&r.cron&&(a.cron=r.cron),"interval"===r.type&&"number"==typeof r.interval&&(a.interval=r.interval),r.timezone&&(a.timezone=r.timezone),"number"==typeof r.jitter_seconds&&(a.jitter_seconds=r.jitter_seconds),"number"==typeof r.max_runs&&(a.max_runs=r.max_runs),"boolean"==typeof r.enabled&&(a.enabled=r.enabled);let l=(null!=(n=e.nodes)?n:[]).map(e=>e.id===t?{...e,scheduleTrigger:a}:e);return{...e,nodes:l}}(i,c,T()))},500),()=>{E.current&&clearTimeout(E.current)}},[p,c,i,T,u]);let M="cron"===m?(0,eM.h)(h):null,R=Number(b)/1e3,I=S&&("cron"!==m||(null==M?void 0:M.matched))?"valid":"warning",_=S?"cron"===m?(null==M?void 0:M.matched)?"cron ok":"custom cron":Number.isFinite(R)&&R>0?"every ".concat(R,"s"):"interval invalid":"disabled";return(0,n.jsxs)(eT,{variantLabel:"Schedule",validationStatus:I,validationMessage:_,children:[(0,n.jsx)(eE,{label:"type",children:(0,n.jsxs)("select",{value:m,onChange:e=>f(e.target.value),className:"w-full rounded-md border border-border bg-surface px-2 py-1 text-xs",children:[(0,n.jsx)("option",{value:"cron",children:"cron"}),(0,n.jsx)("option",{value:"interval",children:"interval"})]})}),(0,n.jsx)(eE,{label:"enabled",children:(0,n.jsxs)("label",{className:"flex items-center gap-2 text-xs",children:[(0,n.jsx)("input",{type:"checkbox",checked:S,onChange:e=>A(e.target.checked)}),(0,n.jsx)("span",{className:"text-text-tertiary",children:S?"on":"off"})]})}),"cron"===m&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(eE,{label:"presets",full:!0,children:(0,n.jsx)("div",{className:"flex flex-wrap gap-1",children:eM.Y.map(e=>(0,n.jsx)("button",{type:"button",onClick:()=>g(e.expression),"data-preset":e.id,className:"rounded-md border border-border px-2 py-0.5 font-mono text-[10px] text-text-tertiary hover:bg-surface",children:e.label},e.id))})}),(0,n.jsx)(eE,{label:"cron expression",full:!0,hint:null==M?void 0:M.text,children:(0,n.jsx)("input",{value:h,onChange:e=>g(e.target.value),spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})})]}),"interval"===m&&(0,n.jsx)(eE,{label:"interval (ms)",hint:"= ".concat(R||"?","s"),children:(0,n.jsx)("input",{type:"number",min:1e3,value:b,onChange:e=>y(e.target.value),className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})}),(0,n.jsx)(eE,{label:"timezone (IANA)",hint:"e.g. Asia/Seoul \xb7 UTC \xb7 America/Los_Angeles",children:(0,n.jsx)("input",{value:v,onChange:e=>j(e.target.value),spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})}),(0,n.jsx)(eE,{label:"jitter (seconds \xb7 optional)",children:(0,n.jsx)("input",{type:"number",min:0,value:w,onChange:e=>k(e.target.value),placeholder:"e.g. 30",className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})}),(0,n.jsx)(eE,{label:"max runs (optional)",children:(0,n.jsx)("input",{type:"number",min:1,step:1,value:N,onChange:e=>C(e.target.value),placeholder:"unlimited",className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})})]})}let e_=["GET","POST","PUT","PATCH","DELETE"];function eO(e){let t=null==e?void 0:e.webhookTrigger;if(!t||"object"!=typeof t)return{method:"POST",path:"/hooks/example",auth:"none"};let r=e_.includes(t.method)?t.method:"POST",n="string"==typeof t.path?t.path:"/hooks/example",a=t.auth&&"object"==typeof t.auth?t.auth:null;return a&&"bearer"===a.type?{method:r,path:n,auth:"bearer",token:"string"==typeof a.token?a.token:""}:a&&"basic"===a.type?{method:r,path:n,auth:"basic",username:"string"==typeof a.username?a.username:"",password:"string"==typeof a.password?a.password:""}:{method:r,path:n,auth:"none"}}function eP(e){var t,r,a,l;let{definition:s,nodeId:o,onChange:i}=e,c=(null!=(t=s.nodes)?t:[]).find(e=>e.id===o),u=eO(c),[p,x]=(0,d.useState)(u.method),[m,f]=(0,d.useState)(u.path),[h,g]=(0,d.useState)(u.auth),[b,y]=(0,d.useState)(null!=(r=u.token)?r:""),[v,j]=(0,d.useState)(null!=(a=u.username)?a:""),[w,k]=(0,d.useState)(null!=(l=u.password)?l:"");(0,d.useEffect)(()=>{var e,t,r;let n=eO(c);x(n.method),f(n.path),g(n.auth),y(null!=(e=n.token)?e:""),j(null!=(t=n.username)?t:""),k(null!=(r=n.password)?r:"")},[o,c]);let N=(0,d.useCallback)(()=>({method:p,path:m,auth:h,token:b,username:v,password:w}),[p,m,h,b,v,w]),C=(0,d.useRef)(null);(0,d.useEffect)(()=>{if(c)return C.current&&clearTimeout(C.current),C.current=setTimeout(()=>{i(function(e,t,r){var n,a,l;let s={method:r.method,path:r.path};"bearer"===r.auth&&r.token?s.auth={type:"bearer",token:r.token}:"basic"===r.auth&&(r.username||r.password)&&(s.auth={type:"basic",username:null!=(n=r.username)?n:"",password:null!=(a=r.password)?a:""});let o=(null!=(l=e.nodes)?l:[]).map(e=>e.id===t?{...e,webhookTrigger:s}:e);return{...e,nodes:o}}(s,o,N()))},500),()=>{C.current&&clearTimeout(C.current)}},[c,o,s,N,i]);let S=m.trim()?m.startsWith("/")?/\s/.test(m)?{ok:!1,message:"no whitespace in path"}:{ok:!0,message:"path ok"}:{ok:!1,message:"path must start with '/'"}:{ok:!1,message:"path required"},A=S.ok?"valid":"error",T="".concat(p," ").concat(m);return(0,n.jsxs)(eT,{variantLabel:"Webhook",validationStatus:A,validationMessage:S.message,children:[(0,n.jsx)(eE,{label:"method",children:(0,n.jsx)("select",{value:p,onChange:e=>x(e.target.value),className:"w-full rounded-md border border-border bg-surface px-2 py-1 text-xs",children:e_.map(e=>(0,n.jsx)("option",{value:e,children:e},e))})}),(0,n.jsx)(eE,{label:"path",hint:"URL: ".concat(T),children:(0,n.jsx)("input",{value:m,onChange:e=>f(e.target.value),placeholder:"/hooks/deploy",spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})}),(0,n.jsx)(eE,{label:"auth",full:!0,children:(0,n.jsx)("div",{className:"flex gap-2 text-xs",children:["none","bearer","basic"].map(e=>(0,n.jsxs)("label",{className:"flex items-center gap-1",children:[(0,n.jsx)("input",{type:"radio",name:"webhook-auth",checked:h===e,onChange:()=>g(e)}),(0,n.jsx)("span",{className:"text-text-tertiary",children:e})]},e))})}),"bearer"===h&&(0,n.jsx)(eE,{label:"token",full:!0,children:(0,n.jsx)("input",{type:"password",value:b,onChange:e=>y(e.target.value),placeholder:"bearer token",spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})}),"basic"===h&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(eE,{label:"username",children:(0,n.jsx)("input",{value:v,onChange:e=>j(e.target.value),spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})}),(0,n.jsx)(eE,{label:"password",children:(0,n.jsx)("input",{type:"password",value:w,onChange:e=>k(e.target.value),spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})})]})]})}let eL=["GET","POST","PUT","PATCH","DELETE","HEAD"];function eD(e){let t=null==e?void 0:e.http;if(!t||"object"!=typeof t)return{method:"GET",url:"https://api.example.com/items",headers:[],body:"",auth:"none",timeoutMs:3e4};let r=eL.includes(t.method)?t.method:"GET",n="string"==typeof t.url?t.url:"",a=Object.entries(t.headers&&"object"==typeof t.headers?t.headers:{}).filter(e=>{let[,t]=e;return"string"==typeof t}).map(e=>{let[t,r]=e;return{key:t,value:r}}),l="string"==typeof t.body?t.body:"",s="number"==typeof t.timeout?t.timeout:3e4,o=t.auth&&"object"==typeof t.auth?t.auth:null;return o&&"bearer"===o.type?{method:r,url:n,headers:a,body:l,auth:"bearer",token:"string"==typeof o.token?o.token:"",timeoutMs:s}:o&&"basic"===o.type?{method:r,url:n,headers:a,body:l,auth:"basic",username:"string"==typeof o.username?o.username:"",password:"string"==typeof o.password?o.password:"",timeoutMs:s}:{method:r,url:n,headers:a,body:l,auth:"none",timeoutMs:s}}function ez(e){var t,r,a,l;let{definition:s,nodeId:o,onChange:i}=e,c=(null!=(t=s.nodes)?t:[]).find(e=>e.id===o),u=eD(c),[p,x]=(0,d.useState)(u.method),[m,f]=(0,d.useState)(u.url),[h,g]=(0,d.useState)(u.headers),[b,y]=(0,d.useState)(u.body),[v,j]=(0,d.useState)(u.auth),[w,k]=(0,d.useState)(null!=(r=u.token)?r:""),[N,C]=(0,d.useState)(null!=(a=u.username)?a:""),[S,A]=(0,d.useState)(null!=(l=u.password)?l:""),[T,E]=(0,d.useState)(u.timeoutMs);(0,d.useEffect)(()=>{var e,t,r;let n=eD(c);x(n.method),f(n.url),g(n.headers),y(n.body),j(n.auth),k(null!=(e=n.token)?e:""),C(null!=(t=n.username)?t:""),A(null!=(r=n.password)?r:""),E(n.timeoutMs)},[o,c]);let M=(0,d.useCallback)(()=>({method:p,url:m,headers:h,body:b,auth:v,token:w,username:N,password:S,timeoutMs:T}),[p,m,h,b,v,w,N,S,T]),R=(0,d.useRef)(null);(0,d.useEffect)(()=>{if(c)return R.current&&clearTimeout(R.current),R.current=setTimeout(()=>{i(function(e,t,r){var n,a,l;let s={method:r.method,url:r.url};if(r.headers.length>0){let e={};for(let t of r.headers)t.key.trim()&&(e[t.key.trim()]=t.value);Object.keys(e).length>0&&(s.headers=e)}r.body.trim()&&(s.body=r.body),"bearer"===r.auth&&r.token?s.auth={type:"bearer",token:r.token}:"basic"===r.auth&&(r.username||r.password)&&(s.auth={type:"basic",username:null!=(n=r.username)?n:"",password:null!=(a=r.password)?a:""}),r.timeoutMs&&3e4!==r.timeoutMs&&(s.timeout=r.timeoutMs);let o=(null!=(l=e.nodes)?l:[]).map(e=>e.id===t?{...e,http:s}:e);return{...e,nodes:o}}(s,o,M()))},500),()=>{R.current&&clearTimeout(R.current)}},[c,o,s,M,i]);let I=function(e){if(!e.trim())return{ok:!1,message:"url required"};try{return new URL(e),{ok:!0,message:"url ok"}}catch(e){return{ok:!1,message:"invalid URL"}}}(m),_=I.ok?"valid":"error",O=(e,t,r)=>{g(n=>n.map((n,a)=>a===e?{key:t,value:r}:n))};return(0,n.jsxs)(eT,{variantLabel:"HTTP",validationStatus:_,validationMessage:I.message,children:[(0,n.jsx)(eE,{label:"method",children:(0,n.jsx)("select",{value:p,onChange:e=>x(e.target.value),className:"w-full rounded-md border border-border bg-surface px-2 py-1 text-xs",children:eL.map(e=>(0,n.jsx)("option",{value:e,children:e},e))})}),(0,n.jsx)(eE,{label:"timeout (ms)",hint:"= ".concat(Math.round(T/1e3),"s"),children:(0,n.jsx)("input",{type:"number",min:1e3,max:12e4,step:1e3,value:T,onChange:e=>E(Number(e.target.value)),className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})}),(0,n.jsx)(eE,{label:"url",full:!0,hint:"supports $ARGUMENTS variable",children:(0,n.jsx)("input",{value:m,onChange:e=>f(e.target.value),placeholder:"https://api.example.com/items",spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})}),(0,n.jsx)(eE,{label:"headers",full:!0,children:(0,n.jsxs)("div",{className:"flex flex-col gap-1",children:[h.map((e,t)=>(0,n.jsxs)("div",{className:"flex gap-1",children:[(0,n.jsx)("input",{value:e.key,onChange:r=>O(t,r.target.value,e.value),placeholder:"Accept",spellCheck:!1,className:"flex-1 rounded-md border border-border bg-surface px-2 py-0.5 font-mono text-[11px]"}),(0,n.jsx)("input",{value:e.value,onChange:r=>O(t,e.key,r.target.value),placeholder:"application/json",spellCheck:!1,className:"flex-1 rounded-md border border-border bg-surface px-2 py-0.5 font-mono text-[11px]"}),(0,n.jsx)("button",{type:"button",onClick:()=>g(e=>e.filter((e,r)=>r!==t)),className:"rounded px-1.5 text-[11px] text-text-tertiary hover:bg-error/10 hover:text-error","aria-label":"Remove header",children:"\xd7"})]},t)),(0,n.jsx)("button",{type:"button",onClick:()=>g(e=>[...e,{key:"",value:""}]),className:"self-start rounded-md border border-border px-2 py-0.5 text-[10px] text-text-tertiary hover:bg-surface",children:"+ header"})]})}),(0,n.jsx)(eE,{label:"body (string)",full:!0,hint:"GET"===p||"HEAD"===p?"usually empty for GET/HEAD":"JSON / raw text",children:(0,n.jsx)("textarea",{value:b,onChange:e=>y(e.target.value),rows:3,spellCheck:!1,className:"w-full resize-none rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})}),(0,n.jsx)(eE,{label:"auth",full:!0,children:(0,n.jsx)("div",{className:"flex gap-2 text-xs",children:["none","bearer","basic"].map(e=>(0,n.jsxs)("label",{className:"flex items-center gap-1",children:[(0,n.jsx)("input",{type:"radio",name:"http-auth",checked:v===e,onChange:()=>j(e)}),(0,n.jsx)("span",{className:"text-text-tertiary",children:e})]},e))})}),"bearer"===v&&(0,n.jsx)(eE,{label:"token",full:!0,children:(0,n.jsx)("input",{type:"password",value:w,onChange:e=>k(e.target.value),spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})}),"basic"===v&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(eE,{label:"username",children:(0,n.jsx)("input",{value:N,onChange:e=>C(e.target.value),spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})}),(0,n.jsx)(eE,{label:"password",children:(0,n.jsx)("input",{type:"password",value:S,onChange:e=>A(e.target.value),spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})})]})]})}let eF=["message","mention","reaction"];function eW(e){let t=null==e?void 0:e.discordTrigger;return t&&"object"==typeof t?{kind:eF.includes(t.kind)?t.kind:"message",channel:"string"==typeof t.channel?t.channel:void 0,user:"string"==typeof t.user?t.user:void 0,pattern:"string"==typeof t.pattern?t.pattern:void 0}:{kind:"message"}}function e$(e){if(!e)return{ok:!0,message:"no filter"};try{return new RegExp(e),{ok:!0,message:"pattern ok"}}catch(e){return{ok:!1,message:"invalid regex"}}}function eq(e){var t,r,a,l;let{definition:s,nodeId:o,onChange:i}=e,c=(null!=(t=s.nodes)?t:[]).find(e=>e.id===o),u=eW(c),[p,x]=(0,d.useState)(u.kind),[m,f]=(0,d.useState)(null!=(r=u.channel)?r:""),[h,g]=(0,d.useState)(null!=(a=u.user)?a:""),[b,y]=(0,d.useState)(null!=(l=u.pattern)?l:"");(0,d.useEffect)(()=>{var e,t,r;let n=eW(c);x(n.kind),f(null!=(e=n.channel)?e:""),g(null!=(t=n.user)?t:""),y(null!=(r=n.pattern)?r:"")},[o,c]);let v=(0,d.useCallback)(()=>({kind:p,channel:m,user:h,pattern:b}),[p,m,h,b]),j=(0,d.useRef)(null);(0,d.useEffect)(()=>{if(c)return j.current&&clearTimeout(j.current),j.current=setTimeout(()=>{i(function(e,t,r){var n,a,l,s;let o={kind:r.kind};(null==(n=r.channel)?void 0:n.trim())&&(o.channel=r.channel.trim()),(null==(a=r.user)?void 0:a.trim())&&(o.user=r.user.trim()),(null==(l=r.pattern)?void 0:l.trim())&&(o.pattern=r.pattern.trim());let i=(null!=(s=e.nodes)?s:[]).map(e=>e.id===t?{...e,discordTrigger:o}:e);return{...e,nodes:i}}(s,o,v()))},500),()=>{j.current&&clearTimeout(j.current)}},[c,o,s,v,i]);let w=e$(b),k=[m&&"#".concat(m),h&&"@".concat(h),b&&"/".concat(b,"/")].filter(Boolean).join(" \xb7 "),N=w.ok?"valid":"error",C=w.ok?k||"no filters":w.message;return(0,n.jsxs)(eT,{variantLabel:"Discord",validationStatus:N,validationMessage:C,children:[(0,n.jsx)(eE,{label:"kind",children:(0,n.jsx)("select",{value:p,onChange:e=>x(e.target.value),className:"w-full rounded-md border border-border bg-surface px-2 py-1 text-xs",children:eF.map(e=>(0,n.jsx)("option",{value:e,children:e},e))})}),(0,n.jsx)(eE,{label:"channel (name or id)",hint:"e.g. ops \xb7 1234567890",children:(0,n.jsx)("input",{value:m,onChange:e=>f(e.target.value),placeholder:"ops",spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})}),(0,n.jsx)(eE,{label:"user (regex \xb7 optional)",hint:"match by username — e.g. .* \xb7 admin",children:(0,n.jsx)("input",{value:h,onChange:e=>g(e.target.value),placeholder:".*",spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})}),(0,n.jsx)(eE,{label:"pattern (regex \xb7 optional)",full:!0,hint:"match message body — e.g. ^배포",children:(0,n.jsx)("input",{value:b,onChange:e=>y(e.target.value),placeholder:"^deploy",spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})})]})}let eU=["message","command","callback_query"];function eG(e){let t=null==e?void 0:e.telegramTrigger;return t&&"object"==typeof t?{kind:eU.includes(t.kind)?t.kind:"message",chat:"string"==typeof t.chat?t.chat:void 0,user:"string"==typeof t.user?t.user:void 0,command:"string"==typeof t.command?t.command:void 0,pattern:"string"==typeof t.pattern?t.pattern:void 0}:{kind:"message"}}function eK(e){var t,r,a,l,s;let{definition:o,nodeId:i,onChange:c}=e,u=(null!=(t=o.nodes)?t:[]).find(e=>e.id===i),p=eG(u),[x,m]=(0,d.useState)(p.kind),[f,h]=(0,d.useState)(null!=(r=p.chat)?r:""),[g,b]=(0,d.useState)(null!=(a=p.user)?a:""),[y,v]=(0,d.useState)(null!=(l=p.command)?l:""),[j,w]=(0,d.useState)(null!=(s=p.pattern)?s:"");(0,d.useEffect)(()=>{var e,t,r,n;let a=eG(u);m(a.kind),h(null!=(e=a.chat)?e:""),b(null!=(t=a.user)?t:""),v(null!=(r=a.command)?r:""),w(null!=(n=a.pattern)?n:"")},[i,u]);let k=(0,d.useCallback)(()=>({kind:x,chat:f,user:g,command:y,pattern:j}),[x,f,g,y,j]),N=(0,d.useRef)(null);(0,d.useEffect)(()=>{if(u)return N.current&&clearTimeout(N.current),N.current=setTimeout(()=>{c(function(e,t,r){var n,a,l,s,o;let i={kind:r.kind};(null==(n=r.chat)?void 0:n.trim())&&(i.chat=r.chat.trim()),(null==(a=r.user)?void 0:a.trim())&&(i.user=r.user.trim()),"command"===r.kind&&(null==(l=r.command)?void 0:l.trim())&&(i.command=r.command.trim()),(null==(s=r.pattern)?void 0:s.trim())&&(i.pattern=r.pattern.trim());let d=(null!=(o=e.nodes)?o:[]).map(e=>e.id===t?{...e,telegramTrigger:i}:e);return{...e,nodes:d}}(o,i,k()))},500),()=>{N.current&&clearTimeout(N.current)}},[u,i,o,k,c]);let C=e$(j),S=[f&&"@".concat(f),g&&"from:".concat(g),"command"===x&&y&&"/".concat(y),j&&"/".concat(j,"/")].filter(Boolean).join(" \xb7 "),A=C.ok?"valid":"error",T=C.ok?S||"no filters":C.message;return(0,n.jsxs)(eT,{variantLabel:"Telegram",validationStatus:A,validationMessage:T,children:[(0,n.jsx)(eE,{label:"kind",children:(0,n.jsx)("select",{value:x,onChange:e=>m(e.target.value),className:"w-full rounded-md border border-border bg-surface px-2 py-1 text-xs",children:eU.map(e=>(0,n.jsx)("option",{value:e,children:e},e))})}),(0,n.jsx)(eE,{label:"chat (id or @group)",hint:"e.g. @my_group \xb7 -1001234567890",children:(0,n.jsx)("input",{value:f,onChange:e=>h(e.target.value),placeholder:"@my_group",spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})}),"command"===x&&(0,n.jsx)(eE,{label:"command",hint:"match telegram /command (no slash)",full:!0,children:(0,n.jsx)("input",{value:y,onChange:e=>v(e.target.value),placeholder:"summary",spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})}),(0,n.jsx)(eE,{label:"user (regex \xb7 optional)",hint:"match by username or id",children:(0,n.jsx)("input",{value:g,onChange:e=>b(e.target.value),placeholder:".*",spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})}),(0,n.jsx)(eE,{label:"pattern (regex \xb7 optional)",full:!0,hint:"match message body — e.g. ^배포",children:(0,n.jsx)("input",{value:j,onChange:e=>w(e.target.value),placeholder:"^summarize",spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})})]})}function eH(e){let t=null==e?void 0:e.manualTrigger;return t&&"object"==typeof t?{description:"string"==typeof t.description?t.description:void 0}:{}}function eY(e){var t,r;let{definition:a,nodeId:l,onChange:s}=e,o=(null!=(t=a.nodes)?t:[]).find(e=>e.id===l),i=eH(o),[c,u]=(0,d.useState)(null!=(r=i.description)?r:"");(0,d.useEffect)(()=>{var e;u(null!=(e=eH(o).description)?e:"")},[l,o]);let p=(0,d.useCallback)(()=>({description:c}),[c]),x=(0,d.useRef)(null);return(0,d.useEffect)(()=>{if(o)return x.current&&clearTimeout(x.current),x.current=setTimeout(()=>{s(function(e,t,r){var n,a;let l={};(null==(n=r.description)?void 0:n.trim())&&(l.description=r.description.trim());let s=(null!=(a=e.nodes)?a:[]).map(e=>e.id===t?{...e,manualTrigger:l}:e);return{...e,nodes:s}}(a,l,p()))},500),()=>{x.current&&clearTimeout(x.current)}},[o,l,a,p,s]),(0,n.jsxs)(eT,{variantLabel:"Manual",validationStatus:"valid",validationMessage:"explicit run only",children:[(0,n.jsx)(eE,{label:"description (optional)",full:!0,hint:"rendered on the node card \xb7 helps remind future-you why this workflow runs manually",children:(0,n.jsx)("input",{value:c,onChange:e=>u(e.target.value),placeholder:"e.g. Build then deploy on demand",spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 text-xs"})}),(0,n.jsx)(eE,{label:"behaviour",full:!0,children:(0,n.jsxs)("p",{className:"rounded-md border border-border bg-surface px-2 py-1.5 text-[11px] leading-snug text-text-tertiary",children:["The daemon never auto-subscribes to a Manual trigger. Run it via",(0,n.jsx)("code",{className:"mx-1 rounded bg-surface-elevated px-1 font-mono",children:"elanous wf run <name>"}),"or the PWA ",(0,n.jsx)("span",{className:"font-semibold",children:"▶ Run now"})," button (Group D dry-run)."]})})]})}function eJ(e){let t=null==e?void 0:e.chatTrigger;if(!t||"object"!=typeof t)return{path:"/chat",auth:"none",sessionMode:"stateless",streaming:!1};let r="string"==typeof t.path?t.path:"/chat",n=t.auth&&"object"==typeof t.auth?t.auth:null,a=n&&"bearer"===n.type?"bearer":"none",l=n&&"bearer"===n.type&&"string"==typeof n.token?n.token:"";return{path:r,auth:a,token:l,sessionMode:"per-session"===t.sessionMode?"per-session":"stateless",streaming:!0===t.streaming}}function eB(e){var t,r;let{definition:a,nodeId:l,onChange:s}=e,o=(null!=(t=a.nodes)?t:[]).find(e=>e.id===l),i=eJ(o),[c,u]=(0,d.useState)(i.path),[p,x]=(0,d.useState)(i.auth),[m,f]=(0,d.useState)(null!=(r=i.token)?r:""),[h,g]=(0,d.useState)(i.sessionMode),[b,y]=(0,d.useState)(i.streaming);(0,d.useEffect)(()=>{var e;let t=eJ(o);u(t.path),x(t.auth),f(null!=(e=t.token)?e:""),g(t.sessionMode),y(t.streaming)},[l,o]);let v=(0,d.useCallback)(()=>({path:c,auth:p,token:m,sessionMode:h,streaming:b}),[c,p,m,h,b]),j=(0,d.useRef)(null);(0,d.useEffect)(()=>{if(o)return j.current&&clearTimeout(j.current),j.current=setTimeout(()=>{s(function(e,t,r){var n;let a={path:r.path};"bearer"===r.auth&&r.token&&(a.auth={type:"bearer",token:r.token}),"stateless"!==r.sessionMode&&(a.sessionMode=r.sessionMode),r.streaming&&(a.streaming=!0);let l=(null!=(n=e.nodes)?n:[]).map(e=>e.id===t?{...e,chatTrigger:a}:e);return{...e,nodes:l}}(a,l,v()))},500),()=>{j.current&&clearTimeout(j.current)}},[o,l,a,v,s]);let w=c.trim()?c.startsWith("/")?/\s/.test(c)?{ok:!1,message:"no whitespace in path"}:{ok:!0,message:"path ok"}:{ok:!1,message:"path must start with '/'"}:{ok:!1,message:"path required"},k=w.ok?"valid":"error";return(0,n.jsxs)(eT,{variantLabel:"Chat",validationStatus:k,validationMessage:w.message,children:[(0,n.jsx)(eE,{label:"path",hint:"POST /v1/workflows/<name>".concat(c),children:(0,n.jsx)("input",{value:c,onChange:e=>u(e.target.value),placeholder:"/chat",spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})}),(0,n.jsx)(eE,{label:"session mode",children:(0,n.jsxs)("select",{value:h,onChange:e=>g(e.target.value),className:"w-full rounded-md border border-border bg-surface px-2 py-1 text-xs",children:[(0,n.jsx)("option",{value:"stateless",children:"stateless"}),(0,n.jsx)("option",{value:"per-session",children:"per-session"})]})}),(0,n.jsx)(eE,{label:"auth",full:!0,children:(0,n.jsx)("div",{className:"flex gap-2 text-xs",children:["none","bearer"].map(e=>(0,n.jsxs)("label",{className:"flex items-center gap-1",children:[(0,n.jsx)("input",{type:"radio",name:"chat-auth",checked:p===e,onChange:()=>x(e)}),(0,n.jsx)("span",{className:"text-text-tertiary",children:e})]},e))})}),"bearer"===p&&(0,n.jsx)(eE,{label:"token",full:!0,children:(0,n.jsx)("input",{type:"password",value:m,onChange:e=>f(e.target.value),placeholder:"bearer token",spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})}),(0,n.jsx)(eE,{label:"streaming response",full:!0,children:(0,n.jsxs)("label",{className:"flex items-center gap-2 text-xs",children:[(0,n.jsx)("input",{type:"checkbox",checked:b,onChange:e=>y(e.target.checked)}),(0,n.jsx)("span",{className:"text-text-tertiary",children:"stream the last-node output as SSE (v2 daemon wire — flag persisted now)"})]})}),(0,n.jsx)(eE,{label:"v2 follow-ups",full:!0,children:(0,n.jsx)("p",{className:"rounded-md border border-border bg-surface px-2 py-1.5 text-[11px] leading-snug text-text-tertiary",children:"v1 = webhook mode minimal. Hosted chat page \xb7 AI memory \xb7 file upload \xb7 multi-response Chat nodes are deferred to v2 (BACKLOG follow-up \xb7 per n8n ChatTrigger 961 LOC reference)."})})]})}let eX=new Set(["type","title","description","default","enum","format","writeOnly","x-multiline","properties","required","items","minLength","maxLength","pattern","minimum","maximum","minItems","maxItems"]),eV=new Set(["string","number","integer","boolean","object","array"]);function eQ(e){return null===e||"object"!=typeof e||Array.isArray(e)?null:e}function eZ(e){let t=e.type;return"string"==typeof t&&eV.has(t)?t:null}function e0(e,t){return e?"".concat(e,".").concat(t):t}function e1(e,t,r){let[n,...a]=t.split("."),l={...e};if(0===a.length)return void 0===r?delete l[n]:l[n]=r,l;let s=l[n],o=null===s||"object"!=typeof s||Array.isArray(s)?{}:s;return l[n]=e1(o,a.join("."),r),l}function e2(e,t){if(""!==t){if("number"===e.type||"integer"===e.type){let e=Number(t);return Number.isFinite(e)?e:t}return t}}function e3(e){let{schema:t,value:r,onChange:a}=e,l=(0,d.useMemo)(()=>(function(e){let t=[],r=[],n=new Set;return!function e(a,l,s,o){let i=eQ(a);if(!i||n.has(i))return void r.push(l||"(root)");for(let e of(n.add(i),Object.keys(i)))eX.has(e)||r.push(e0(l,e));let d=eZ(i);void 0===i.type||d||r.push(e0(l,"type"));let c=null!=d?d:void 0===i.type?eQ(i.properties)||Array.isArray(i.required)?"object":void 0!==i.items?"array":null:null;if(l&&c&&t.push({path:l,type:c,label:"string"==typeof i.title?i.title:l.split(".").at(-1),..."string"==typeof i.description?{description:i.description}:{},required:o,...Object.hasOwn(i,"default")?{default:i.default}:{},...Array.isArray(i.enum)?{enum:[...i.enum]}:{},multiline:function(e,t,r){var n;if("textarea"===t.format||"multiline"===t.format||"markdown"===t.format||!0===t["x-multiline"])return!0;if("string"!==e||Array.isArray(t.enum)||"password"===t.format||"secret"===t.format||!0===t.writeOnly)return!1;let a=null!=(n=r.split(".").at(-1))?n:"",l="string"==typeof t.title?t.title:"";return/markdown|body|text/i.test(a)||/markdown|본문/i.test(l)}(c,i,l),secret:"password"===i.format||"secret"===i.format||!0===i.writeOnly}),s<6){if(("object"===d||void 0===i.type)&&eQ(i.properties)){let t=new Set(Array.isArray(i.required)?i.required:[]);for(let[r,n]of Object.entries(i.properties))e(n,e0(l,r),s+1,t.has(r))}("array"===d||void 0===i.type)&&void 0!==i.items&&e(i.items,"".concat(l,"[]"),s+1,!1)}n.delete(i)}(e,"",0,!1),{fields:t,unsupported:r}})(t),[t]),{leaves:s,arrays:o}=(0,d.useMemo)(()=>(function(e){let t=[],r=[];for(let n of e)n.path.includes("[]")||("array"===n.type?r.push(n):"object"!==n.type&&t.push(n));return{leaves:t,arrays:r}})(l.fields),[l]),i=(0,d.useMemo)(()=>(function(e,t){let r=[],n=new Set;return!function e(t,a,l,s){let o=eQ(t);if(!o||n.has(o))return;n.add(o);let i=eZ(o);if(i&&!("object"===i?null!==eQ(a):"array"===i?Array.isArray(a):"integer"===i?"number"==typeof a&&Number.isInteger(a):"number"===i?"number"==typeof a&&Number.isFinite(a):typeof a===i)){r.push({path:l,message:"Must be ".concat("integer"===i?"an integer":"a ".concat(i),".")}),n.delete(o);return}if(Array.isArray(o.enum)&&!o.enum.some(e=>(function e(t,r){if(t===r)return!0;if(Array.isArray(t)||Array.isArray(r))return Array.isArray(t)&&Array.isArray(r)&&t.length===r.length&&t.every((t,n)=>e(t,r[n]));let n=eQ(t),a=eQ(r);if(!n||!a)return!1;let l=Object.keys(n);return l.length===Object.keys(a).length&&l.every(t=>Object.hasOwn(a,t)&&e(n[t],a[t]))})(e,a))&&r.push({path:l,message:"Must be one of the allowed values."}),"string"==typeof a){let e=Array.from(a).length;if("number"==typeof o.minLength&&e<o.minLength&&r.push({path:l,message:"Must have at least ".concat(o.minLength," characters.")}),"number"==typeof o.maxLength&&e>o.maxLength&&r.push({path:l,message:"Must have at most ".concat(o.maxLength," characters.")}),"string"==typeof o.pattern)try{new RegExp(o.pattern).test(a)||r.push({path:l,message:"Does not match the required pattern."})}catch(e){}}"number"==typeof a&&("number"==typeof o.minimum&&a<o.minimum&&r.push({path:l,message:"Must be at least ".concat(o.minimum,".")}),"number"==typeof o.maximum&&a>o.maximum&&r.push({path:l,message:"Must be at most ".concat(o.maximum,".")})),Array.isArray(a)&&("number"==typeof o.minItems&&a.length<o.minItems&&r.push({path:l,message:"Must have at least ".concat(o.minItems," items.")}),"number"==typeof o.maxItems&&a.length>o.maxItems&&r.push({path:l,message:"Must have at most ".concat(o.maxItems," items.")}));let d=eQ(a);if(d&&("object"===i||void 0===o.type)){if(Array.isArray(o.required))for(let e of o.required)"string"!=typeof e||Object.hasOwn(d,e)&&void 0!==d[e]||r.push({path:e0(l,e),message:"Required."});if(s<6){let t=eQ(o.properties);if(t)for(let[r,n]of Object.entries(t))Object.hasOwn(d,r)&&void 0!==d[r]&&e(n,d[r],e0(l,r),s+1)}}s<6&&("array"===i||void 0===o.type)&&Array.isArray(a)&&void 0!==o.items&&a.forEach((t,r)=>e(o.items,t,"".concat(l,"[").concat(r,"]"),s+1)),n.delete(o)}(e,t,"",0),r})(t,r),[t,r]);return(0,n.jsxs)("div",{className:"col-span-full flex flex-col gap-2","data-schema-form":!0,children:[l.unsupported.length>0&&(0,n.jsxs)("p",{className:"text-[11px] text-warning","data-schema-unsupported":!0,children:["이 노드의 설정 일부는 폼이 다루지 않습니다(",l.unsupported.slice(0,3).join(", "),l.unsupported.length>3?" 외 ".concat(l.unsupported.length-3):"",") — YAML 에서 고치세요."]}),o.length>0&&(0,n.jsxs)("p",{className:"text-[11px] text-text-tertiary",children:["목록 칸(",o.map(e=>e.label).join(", "),")은 YAML 에서 고치세요."]}),s.map(e=>{var t,l;let s,o=function(e,t){let r=e;for(let e of t.split(".")){if(null===r||"object"!=typeof r||Array.isArray(r))return;r=r[e]}return r}(r,e.path),d="schema-".concat(e.path),c=(t=e.path,null==(l=i.find(e=>e.path===t))?void 0:l.message),u="".concat(e.label).concat(e.required?" *":""),p="w-full rounded-md border border-border bg-surface px-2 py-1 text-xs";return s="boolean"===e.type?(0,n.jsx)("input",{id:d,type:"checkbox",checked:!0===o,onChange:t=>a(e1(r,e.path,t.target.checked))}):e.enum&&e.enum.length>0?(0,n.jsxs)("select",{id:d,className:p,value:void 0===o?"":String(o),onChange:t=>{let n=e.enum.find(e=>String(e)===t.target.value);a(e1(r,e.path,""===t.target.value?void 0:n))},children:[(0,n.jsx)("option",{value:"",children:"(비움)"}),e.enum.map(e=>(0,n.jsx)("option",{value:String(e),children:String(e)},String(e)))]}):e.multiline?(0,n.jsx)("textarea",{id:d,rows:4,className:"".concat(p," font-mono"),value:"string"==typeof o?o:void 0===o?"":String(o),onChange:t=>a(e1(r,e.path,e2(e,t.target.value)))}):(0,n.jsx)("input",{id:d,type:e.secret?"password":"number"===e.type||"integer"===e.type?"number":"text",autoComplete:e.secret?"off":void 0,className:p,placeholder:void 0!==e.default?String(e.default):void 0,value:void 0===o?"":String(o),onChange:t=>a(e1(r,e.path,e2(e,t.target.value)))}),(0,n.jsxs)("div",{className:"flex flex-col gap-0.5","data-schema-field":e.path,children:[(0,n.jsx)("label",{htmlFor:d,className:"text-[11px] text-text-secondary",children:u}),s,e.description&&(0,n.jsx)("span",{className:"text-[10px] text-text-tertiary",children:e.description}),c&&(0,n.jsx)("span",{className:"text-[11px] text-error",role:"alert","data-schema-error":e.path,children:c})]},e.path)})]})}let e5=/^[a-z0-9]+(?:-[a-z0-9]+)*$/,e4=/^[A-Za-z_][A-Za-z0-9_]*$/;function e6(e,t,r){var n,a;if(!/^\$[A-Za-z0-9_.-]*$/.test(r))return[];let l=new Map((null!=(n=e.nodes)?n:[]).map(e=>[e.id,e])),s=l.get(t),o=new Set(["$ARGUMENTS","$ARTIFACTS_DIR"]),i=new Set([t]),d=[...null!=(a=null==s?void 0:s.depends_on)?a:[]];for(;d.length;){let e=d.pop();if(i.has(e))continue;i.add(e);let t=l.get(e);if(!t||(d.push(...Array.isArray(t.depends_on)?t.depends_on:[]),!e5.test(e)))continue;o.add("$".concat(e,".output"));let r=t.output_format;if(!r||"object"!=typeof r||Array.isArray(r))continue;let n=r.properties;if(!(!n||"object"!=typeof n||Array.isArray(n)))for(let t of Object.keys(n))e4.test(t)&&o.add("$".concat(e,".output.").concat(t))}return[...o].filter(e=>e.startsWith(r))}function e9(e,t){if(null===t)return null;let r=e.slice(0,t),n=/\$[A-Za-z0-9_.-]*$/.exec(r);if(!n)return null;let a=t-n[0].length;return a>0&&/[\\$]/.test(e[a-1])?null:{start:a,typed:n[0]}}function e8(e){let{definition:t,nodeId:r,value:a,onChange:l,className:s,spellCheck:o,placeholder:i,rows:c,multiline:u=!1}=e,p=(0,d.useRef)(null),x=(0,d.useRef)(null),m=(0,d.useRef)(null),f=(0,d.useRef)(null),[h,g]=(0,d.useState)(null),[b,y]=(0,d.useState)(!1),[v,j]=(0,d.useState)(0),[w,k]=(0,d.useState)(!1),N=b?null:e9(a,h),C=N&&!w?e6(t,r,N.typed):[],S=w?e6(t,r,"$"):[];(0,d.useEffect)(()=>{if(!w||"undefined"==typeof document)return;let e=e=>{x.current&&!x.current.contains(e.target)&&k(!1)},t=e=>{"Escape"===e.key&&(e.preventDefault(),k(!1))};return document.addEventListener("pointerdown",e),document.addEventListener("keydown",t),()=>{document.removeEventListener("pointerdown",e),document.removeEventListener("keydown",t)}},[w]);let A=e=>{var t,r;m.current={start:null!=(t=e.selectionStart)?t:a.length,end:null!=(r=e.selectionEnd)?r:a.length}};(0,d.useLayoutEffect)(()=>{null!==f.current&&p.current&&(p.current.focus(),p.current.setSelectionRange(f.current,f.current),f.current=null)},[a]);let T=e=>{A(e.target),g(e.target.selectionStart),y(!1),j(0),l(e)},E=e=>{var t;let r=p.current;if(!r)return;let{value:n,cursor:a}=e,s=null==(t=Object.getOwnPropertyDescriptor(u?HTMLTextAreaElement.prototype:HTMLInputElement.prototype,"value"))?void 0:t.set;s&&(f.current=a,s.call(r,n),l({target:r,currentTarget:r,type:"change",nativeEvent:new Event("input"),preventDefault:()=>{},stopPropagation:()=>{}}),g(a),m.current={start:a,end:a},y(!0))},M=e=>{var t,r;let n=p.current,l=null!=(t=null==n?void 0:n.selectionStart)?t:h;if(!n||null===l)return;let s=function(e,t,r,n){let a=e9(e,t);return a?{value:e.slice(0,a.start)+n+e.slice(r),cursor:a.start+n.length}:null}(a,l,null!=(r=n.selectionEnd)?r:l,e);s&&E(s)},R=e=>{"Escape"===e.key&&w?(e.preventDefault(),k(!1)):"Escape"===e.key&&C.length?(e.preventDefault(),y(!0)):C.length&&("ArrowDown"===e.key||"ArrowUp"===e.key)?(e.preventDefault(),j(t=>(t+("ArrowDown"===e.key?1:-1)+C.length)%C.length)):C.length&&("Enter"===e.key||"Tab"===e.key)&&(e.preventDefault(),M(C[Math.min(v,C.length-1)]))},I={ref:e=>{p.current=e},value:a,spellCheck:o,className:s,"aria-autocomplete":"list","aria-expanded":C.length>0};return(0,n.jsxs)("span",{ref:x,className:"relative grid w-full grid-cols-[minmax(0,1fr)_auto] items-start gap-1",children:[u?(0,n.jsx)("textarea",{...I,rows:c,placeholder:i,onChange:T,onKeyDown:R,onFocus:e=>{A(e.target),g(e.target.selectionStart)},onSelect:e=>{A(e.currentTarget),g(e.currentTarget.selectionStart)},onBlur:()=>g(null),onClick:()=>y(!1)}):(0,n.jsx)("input",{...I,type:"text",placeholder:i,onChange:T,onKeyDown:R,onFocus:e=>{A(e.target),g(e.target.selectionStart)},onSelect:e=>{A(e.currentTarget),g(e.currentTarget.selectionStart)},onBlur:()=>g(null),onClick:()=>y(!1)}),(0,n.jsx)("button",{type:"button","aria-label":"변수 넣기","aria-haspopup":"listbox","aria-expanded":w,className:"rounded px-1.5 py-0.5 text-xs whitespace-nowrap bg-surface-elevated text-foreground border border-border hover:bg-surface",onMouseDown:e=>{!w&&p.current&&A(p.current),e.preventDefault()},onClick:()=>{w||!p.current||m.current||A(p.current),k(e=>!e)},children:"변수 넣기"}),w&&(0,n.jsx)("span",{role:"listbox","aria-label":"사용 가능한 변수",className:"absolute left-0 top-full z-30 max-h-48 w-full overflow-y-auto rounded-md border border-border bg-surface-elevated shadow-lg",children:0===S.length?(0,n.jsx)("span",{className:"block px-2 py-1 text-xs",children:"쓸 수 있는 변수가 없습니다"}):S.map(e=>(0,n.jsxs)("button",{type:"button",role:"option","aria-selected":!1,className:"block w-full px-2 py-1 text-left text-xs hover:bg-surface",onMouseDown:e=>e.preventDefault(),onClick:()=>(e=>{var t,r,n;let l=null!=(t=m.current)?t:{start:a.length,end:a.length};E((r=l.start,n=l.end,{value:a.slice(0,r)+e+a.slice(n),cursor:r+e.length})),k(!1)})(e),children:[(0,n.jsx)("span",{className:"font-mono",children:e})," \xb7 ",function(e){if("$ARGUMENTS"===e)return"실행할 때 받은 인자";if("$ARTIFACTS_DIR"===e)return"산출물 폴더";let t=/^\$([a-z0-9]+(?:-[a-z0-9]+)*)\.output(?:\.([A-Za-z_][A-Za-z0-9_]*))?$/.exec(e);return t?t[2]?"".concat(t[1]," 노드 결과의 ").concat(t[2]):"".concat(t[1]," 노드 결과"):e}(e)]},e))}),C.length>0&&(0,n.jsx)("span",{role:"listbox","aria-label":"Expression suggestions",className:"absolute left-0 top-full z-20 max-h-48 w-full overflow-y-auto rounded-md border border-border bg-surface-elevated shadow-lg",children:C.map((e,t)=>(0,n.jsx)("button",{type:"button",role:"option","aria-selected":t===v,className:"block w-full px-2 py-1 text-left font-mono text-xs hover:bg-surface ".concat(t===v?"bg-surface":""),onMouseDown:e=>e.preventDefault(),onClick:()=>M(e),children:e},e))})]})}function e7(e){var t;let{plugin:r,client:a}=e,[l,s]=(0,d.useState)(null),[o,i]=(0,d.useState)({}),[c,u]=(0,d.useState)(0),[p,x]=(0,d.useState)(null),[m,f]=(0,d.useState)(!1),[h,g]=(0,d.useState)(null),[b,y]=(0,d.useState)(!0),[v,j]=(0,d.useState)(!1),w=(0,d.useRef)(null);((null==(t=w.current)?void 0:t.plugin)!==r||w.current.client!==a)&&(w.current={plugin:r,client:a});let k=w.current;async function N(e){f(!0),g(null);try{await a.putPluginCredentials(r,e)}catch(e){w.current===k&&(g("자격 정보를 저장하지 못했습니다. 다시 시도해 주세요."),f(!1));return}if(w.current===k){i({}),u(e=>e+1),x(null),j(!0);try{let e=await a.getPluginCredentials(r);w.current===k&&(s(e),j(!1))}catch(e){w.current===k&&g("자격 정보는 저장됐지만 상태를 확인하지 못했습니다. 다시 시도해 주세요.")}finally{w.current===k&&f(!1)}}}return(0,d.useEffect)(()=>{w.current=k;let e=!0;return s(null),j(!1),i({}),u(e=>e+1),x(null),g(null),f(!1),y(!0),a.getPluginCredentials(r).then(t=>{e&&w.current===k&&s(t)}).catch(()=>{e&&w.current===k&&g("자격 상태를 불러오지 못했습니다.")}).finally(()=>{e&&w.current===k&&y(!1)}),()=>{e=!1,w.current===k&&(w.current=null)}},[a,r,k]),(0,n.jsxs)("section",{className:"col-span-full space-y-2 rounded-md border border-border p-3","aria-label":"자격",children:[(0,n.jsx)("h3",{className:"text-xs font-medium",children:"자격"}),b&&(0,n.jsx)("p",{role:"status",children:"자격 상태를 불러오는 중…"}),h&&(0,n.jsx)("p",{role:"alert",children:h}),!b&&(null==l?void 0:l.fields.length)===0&&(0,n.jsx)("p",{children:"필요한 자격 항목이 없습니다."}),l&&l.fields.length>0&&(0,n.jsxs)("form",{onSubmit:function(e){if(e.preventDefault(),m||!l)return;let t={};for(let e of l.fields){let r=o[e.name];(null==r?void 0:r.trim())&&(t[e.name]=r)}Object.keys(t).length>0&&N(t)},className:"space-y-2",children:[l.fields.map(e=>(0,n.jsxs)("div",{className:"space-y-1",children:[(0,n.jsxs)("label",{htmlFor:"plugin-credential-".concat(r,"-").concat(e.name),className:"block text-xs",children:[e.name," ",(0,n.jsxs)("span",{className:"text-text-tertiary",children:["(",e.env,")"]})]}),(0,n.jsx)("p",{role:"status",className:"text-xs",children:v?"확인하지 못함":e.set?"저장됨":"비어 있음"}),(0,n.jsx)("input",{id:"plugin-credential-".concat(r,"-").concat(e.name),type:"password",autoComplete:"new-password",disabled:m,onChange:t=>i(r=>({...r,[e.name]:t.target.value})),className:"w-full rounded-md border border-border bg-surface px-2 py-1 text-xs"},"".concat(r,"-").concat(e.name,"-").concat(c)),e.set&&(p===e.name?(0,n.jsxs)("div",{className:"flex gap-2",children:[(0,n.jsx)("span",{children:"이 항목을 지울까요?"}),(0,n.jsx)("button",{type:"button",disabled:m,onClick:()=>void N({[e.name]:null}),children:"지우기 확인"}),(0,n.jsx)("button",{type:"button",disabled:m,onClick:()=>x(null),children:"취소"})]}):(0,n.jsx)("button",{type:"button",disabled:m,onClick:()=>x(e.name),children:"지우기"}))]},e.name)),(0,n.jsx)("button",{type:"submit",disabled:m||!Object.values(o).some(e=>e.trim()),children:m?"저장 중…":"저장"})]})]})}function te(e){return e?JSON.stringify(["id","bash","prompt","skill","arguments","cft","approval","when","depends_on"].map(t=>{var r;return null!=(r=e[t])?r:null})):""}function tt(e){var t,r,a,l;let{definition:s,nodeId:o,skills:i,onChange:c,onClose:u,onDelete:p,palette:x,credentialsClient:m}=e,f=(0,d.useMemo)(()=>{var e,t;return null!=(t=(null!=(e=s.nodes)?e:[]).find(e=>e.id===o))?t:null},[s,o]),h=(0,d.useMemo)(()=>f?(0,_.OC)(f):"unknown",[f]),[g,b]=(0,d.useState)(null!=(t=null==f?void 0:f.id)?t:""),[y,v]=(0,d.useState)("string"==typeof(null==f?void 0:f.bash)?f.bash:""),[w,k]=(0,d.useState)("string"==typeof(null==f?void 0:f.prompt)?f.prompt:""),[N,C]=(0,d.useState)("string"==typeof(null==f?void 0:f.skill)?f.skill:""),[S,A]=(0,d.useState)("string"==typeof(null==f?void 0:f.arguments)?f.arguments:""),[T,E]=(0,d.useState)("string"==typeof(null==f?void 0:f.cft)?f.cft:""),M=(null==f?void 0:f.approval)&&"object"==typeof f.approval?f.approval:null,[R,I]=(0,d.useState)(null!=(r=null==M?void 0:M.message)?r:""),[P,L]=(0,d.useState)(null!=(a=null==M?void 0:M.delivery)?a:"modal"),[D,z]=(0,d.useState)("string"==typeof(null==f?void 0:f.when)?f.when:""),[F,W]=(0,d.useState)(Array.isArray(null==f?void 0:f.depends_on)?[...f.depends_on]:[]),$=(0,d.useRef)(null),q=(0,d.useRef)(null);(0,d.useEffect)(()=>{var e,t;if(!f)return;let r=te(f),n=$.current;if(n&&n.id===o&&n.fields===r||($.current={id:o,fields:r},n&&n.id===o&&q.current===r))return;b(f.id),v("string"==typeof f.bash?f.bash:""),k("string"==typeof f.prompt?f.prompt:""),C("string"==typeof f.skill?f.skill:""),A("string"==typeof f.arguments?f.arguments:""),E("string"==typeof f.cft?f.cft:"");let a=f.approval&&"object"==typeof f.approval?f.approval:null;I(null!=(e=null==a?void 0:a.message)?e:""),L(null!=(t=null==a?void 0:a.delivery)?t:"modal"),z("string"==typeof f.when?f.when:""),W(Array.isArray(f.depends_on)?[...f.depends_on]:[])},[o,f]);let U=(0,d.useMemo)(()=>{var e,t;let r="string"==typeof(null==f?void 0:f.kind)?f.kind:null;return r&&null!=(t=null==x||null==(e=x.find(e=>e.kind===r))?void 0:e.plugin)?t:null},[f,x]),G=(0,d.useMemo)(()=>{var e,t;let r="string"==typeof(null==f?void 0:f.kind)?f.kind:null;return r&&null!=(t=null==x||null==(e=x.find(e=>e.kind===r&&e.schema))?void 0:e.schema)?t:null},[f,x]),K=(0,d.useMemo)(()=>{let e=null==f?void 0:f.inputs;return e&&"object"==typeof e&&!Array.isArray(e)?e:{}},[f]),[H,Y]=(0,d.useState)(K);(0,d.useEffect)(()=>{Y(K)},[o,K]),(0,d.useEffect)(()=>{if(!f||!G||JSON.stringify(H)===JSON.stringify(K))return;let e=setTimeout(()=>{var e;c({...s,nodes:(null!=(e=s.nodes)?e:[]).map(e=>e.id===o?{...e,inputs:H}:e)})},500);return()=>clearTimeout(e)},[H,K,G,f,o,s,c]);let J=(0,d.useCallback)(()=>{var e,t;if(!f)return{};let r={};if(g!==f.id&&/^[a-z0-9]+(-[a-z0-9]+)*$/.test(g)&&(r.id=g),"bash"===h&&y!==f.bash&&(r.bash=y),"prompt"===h&&w!==f.prompt&&(r.prompt=w),"skill"===h&&(N!==f.skill&&(r.skill=N),S!==(null!=(e=f.arguments)?e:"")&&(r.arguments=S)),"cft"===h&&T!==f.cft&&(r.cft=T),"approval"===h){let e=null!=M?M:{message:"",delivery:"modal"};(R!==e.message||P!==(null!=(t=e.delivery)?t:"modal"))&&(r.approval={message:R,delivery:P})}D!==("string"==typeof f.when?f.when:"")&&(r.when=D.trim()?D:null);let n=Array.isArray(f.depends_on)?f.depends_on:[];return(F.length!==n.length||F.some((e,t)=>n[t]!==e))&&(r.depends_on=F),r},[f,h,M,g,y,w,N,S,T,R,P,D,F]),B=(0,d.useRef)(null);if((0,d.useEffect)(()=>{if(f)return B.current&&clearTimeout(B.current),B.current=setTimeout(()=>{var e,t;let r=J();if(0===Object.keys(r).length)return;let n=(0,O.FI)(s,o,r);n!==s&&(q.current=te(null!=(t=(null!=(e=n.nodes)?e:[]).find(e=>e.id===("string"==typeof r.id?r.id:o)))?t:null),c(n))},500),()=>{B.current&&clearTimeout(B.current)}},[f,o,s,J,c]),!f)return(0,n.jsx)("div",{className:"border-t border-border bg-surface-elevated px-3 py-3 text-[11px] text-text-tertiary",children:"Node not found — it may have been deleted."});if("scheduleTrigger"===h||"webhookTrigger"===h||"http"===h||"discordTrigger"===h||"telegramTrigger"===h||"manualTrigger"===h||"chatTrigger"===h)return(0,n.jsxs)("div",{className:"border-t border-border bg-surface-elevated",children:[(0,n.jsxs)("header",{className:"flex items-center justify-between px-3 py-2",children:[(0,n.jsx)("span",{className:"font-mono text-xs text-text-primary",children:o}),(0,n.jsxs)("div",{className:"flex items-center gap-1",children:[(0,n.jsxs)("button",{type:"button",onClick:p,className:"flex items-center gap-1 rounded px-2 py-0.5 text-[11px] text-error hover:bg-error/10",title:"Delete this node",children:[(0,n.jsx)(j.A,{className:"h-3 w-3"}),"Delete"]}),(0,n.jsx)("button",{type:"button",onClick:u,className:"rounded p-1 text-text-tertiary hover:bg-surface","aria-label":"Close node editor",children:(0,n.jsx)(ec.A,{className:"h-3 w-3"})})]})]}),(0,n.jsxs)("div",{className:"px-3 pb-3",children:["scheduleTrigger"===h&&(0,n.jsx)(eI,{definition:s,nodeId:o,onChange:c}),"webhookTrigger"===h&&(0,n.jsx)(eP,{definition:s,nodeId:o,onChange:c}),"http"===h&&(0,n.jsx)(ez,{definition:s,nodeId:o,onChange:c}),"discordTrigger"===h&&(0,n.jsx)(eq,{definition:s,nodeId:o,onChange:c}),"telegramTrigger"===h&&(0,n.jsx)(eK,{definition:s,nodeId:o,onChange:c}),"manualTrigger"===h&&(0,n.jsx)(eY,{definition:s,nodeId:o,onChange:c}),"chatTrigger"===h&&(0,n.jsx)(eB,{definition:s,nodeId:o,onChange:c})]})]});let X=(null!=(l=s.nodes)?l:[]).filter(e=>e.id!==o);return(0,n.jsxs)("div",{className:"border-t border-border bg-surface-elevated",children:[(0,n.jsxs)("header",{className:"flex items-center justify-between px-3 py-2",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)("span",{className:"rounded bg-surface px-1.5 py-0.5 text-[10px] uppercase tracking-wide text-text-tertiary",children:f?(0,_.OR)(f,h):h}),(0,n.jsx)("span",{className:"font-mono text-xs text-text-primary",children:o})]}),(0,n.jsxs)("div",{className:"flex items-center gap-1",children:[(0,n.jsxs)("button",{type:"button",onClick:p,className:"flex items-center gap-1 rounded px-2 py-0.5 text-[11px] text-error hover:bg-error/10",title:"Delete this node",children:[(0,n.jsx)(j.A,{className:"h-3 w-3"}),"Delete"]}),(0,n.jsx)("button",{type:"button",onClick:u,className:"rounded p-1 text-text-tertiary hover:bg-surface","aria-label":"Close node editor",children:(0,n.jsx)(ec.A,{className:"h-3 w-3"})})]})]}),(0,n.jsxs)("div",{className:"grid grid-cols-1 gap-2 px-3 pb-3 md:grid-cols-2",children:[(0,n.jsx)(tr,{label:"id",children:(0,n.jsx)("input",{value:g,onChange:e=>b(e.target.value),spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})}),(0,n.jsx)(tr,{label:"when (gating expression)",children:(0,n.jsx)(e8,{definition:s,nodeId:o,value:D,onChange:e=>z(e.target.value),placeholder:"e.g. \"$prev.output == 'ok'\"",spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"},"".concat(o,":when"))}),G&&(0,n.jsx)(e3,{schema:G,value:H,onChange:Y}),U&&m&&(0,n.jsx)(tr,{label:"자격",full:!0,children:(0,n.jsx)(e7,{plugin:U,client:m})}),"bash"===h&&(0,n.jsx)(tr,{label:"bash",full:!0,children:(0,n.jsx)(e8,{definition:s,nodeId:o,multiline:!0,value:y,onChange:e=>v(e.target.value),rows:4,spellCheck:!1,className:"w-full resize-none rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"},"".concat(o,":bash"))}),"prompt"===h&&(0,n.jsx)(tr,{label:"prompt",full:!0,children:(0,n.jsx)(e8,{definition:s,nodeId:o,multiline:!0,value:w,onChange:e=>k(e.target.value),rows:4,spellCheck:!1,className:"w-full resize-none rounded-md border border-border bg-surface px-2 py-1 text-xs"},"".concat(o,":prompt"))}),"skill"===h&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(tr,{label:"skill",children:[(0,n.jsx)("input",{value:N,onChange:e=>C(e.target.value),list:"workflow-skill-options",spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"}),i&&i.length>0&&(0,n.jsx)("datalist",{id:"workflow-skill-options",children:i.map(e=>(0,n.jsx)("option",{value:e},e))})]}),(0,n.jsx)(tr,{label:"arguments",full:!0,children:(0,n.jsx)(e8,{definition:s,nodeId:o,multiline:!0,value:S,onChange:e=>A(e.target.value),rows:3,spellCheck:!1,className:"w-full resize-none rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"},"".concat(o,":arguments"))})]}),"cft"===h&&(0,n.jsx)(tr,{label:"cft",full:!0,children:(0,n.jsx)("input",{value:T,onChange:e=>E(e.target.value),spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})}),"approval"===h&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(tr,{label:"message",full:!0,children:(0,n.jsx)("textarea",{value:R,onChange:e=>I(e.target.value),rows:2,spellCheck:!1,className:"w-full resize-none rounded-md border border-border bg-surface px-2 py-1 text-xs"})}),(0,n.jsx)(tr,{label:"delivery channel",children:(0,n.jsxs)("select",{value:P,onChange:e=>L(e.target.value),className:"w-full rounded-md border border-border bg-surface px-2 py-1 text-xs",children:[(0,n.jsx)("option",{value:"all",children:"all (race)"}),(0,n.jsx)("option",{value:"modal",children:"modal (PWA)"}),(0,n.jsx)("option",{value:"terminal",children:"terminal"}),(0,n.jsx)("option",{value:"telegram",children:"telegram"}),(0,n.jsx)("option",{value:"discord",children:"discord"}),(0,n.jsx)("option",{value:"pushcut",children:"pushcut"})]})})]}),(0,n.jsx)(tr,{label:"depends_on",full:!0,children:(0,n.jsx)(tn,{value:F,options:X.map(e=>e.id),onChange:W})})]})]})}function tr(e){let{label:t,full:r,children:a}=e;return(0,n.jsxs)("label",{className:"flex flex-col gap-1 ".concat(r?"md:col-span-2":""),children:[(0,n.jsx)("span",{className:"text-[10px] uppercase tracking-wide text-text-tertiary",children:t}),a]})}function tn(e){let{value:t,options:r,onChange:a}=e;return 0===r.length?(0,n.jsx)("span",{className:"text-[11px] text-text-tertiary",children:"No other nodes to depend on."}):(0,n.jsx)("div",{className:"flex flex-wrap gap-1",children:r.map(e=>{let r=t.includes(e);return(0,n.jsx)("button",{type:"button",onClick:()=>{t.includes(e)?a(t.filter(t=>t!==e)):a([...t,e])},className:"rounded-md border px-2 py-0.5 font-mono text-[10px] transition-colors ".concat(r?"border-accent bg-accent/15 text-accent":"border-border text-text-tertiary hover:bg-surface"),children:e},e)})})}var ta=r(82502),tl=r(52527),ts=r(73642),to=r(8067);let ti=e=>["nexus","workflow-pins",e];function td(e,t){for(let r=e.length-1;r>=0;r--){let n=e[r];if("node_done"===n.type&&n.nodeId===t&&n.result)return n.result}return null}function tc(e){var t,r,a,l,s,o,i;let{workflowName:c,nodeId:u,events:p,readOnly:x}=e,m=td(p,u),f=function(e){let t=(0,M.M1)();return(0,ed.I)({queryKey:ti(e),queryFn:()=>t.getWorkflowPins(e),enabled:e.length>0})}(c),h=function(){let e=(0,M.M1)(),t=(0,ta.jE)();return(0,to.n)({mutationFn:t=>{let{name:r,nodeId:n,value:a,note:l}=t;return e.putWorkflowPin(r,n,a,l)},onSuccess:(e,r)=>{let{name:n}=r;return t.invalidateQueries({queryKey:ti(n)})}})}(),g=function(){let e=(0,M.M1)(),t=(0,ta.jE)();return(0,to.n)({mutationFn:t=>{let{name:r,nodeId:n}=t;return e.deleteWorkflowPin(r,n)},onSuccess:(e,r)=>{let{name:n}=r;return t.invalidateQueries({queryKey:ti(n)})}})}(),[b,y]=(0,d.useState)(!1),v=null==(t=f.data)?void 0:t.pins[u],j=null==m?void 0:m.output,w=void 0!==j?function(e){let t,r=!1;if("string"==typeof e)try{t=JSON.stringify(JSON.parse(e),null,2),r=!0}catch(r){t=e}else try{let n=JSON.stringify(e,null,2);t=null!=n?n:String(e),r=void 0!==n}catch(r){t=String(e)}return{text:t.slice(0,4e3),isJson:r,truncated:t.length>4e3}}(j):null,k=b&&(null==w?void 0:w.truncated)?function(e){if("string"==typeof e)try{return JSON.stringify(JSON.parse(e),null,2)}catch(t){return e}try{var t;return null!=(t=JSON.stringify(e,null,2))?t:String(e)}catch(t){return String(e)}}(j):null==w?void 0:w.text,N=h.isPending||g.isPending,C=null!=(o=h.error)?o:g.error,S=(0,M.M1)(),A=(0,ta.jE)(),T=function(){let e=(0,M.M1)();return!0===(0,ed.I)({queryKey:["nexus","workflow-run-modes"],queryFn:async()=>!0===(await e.getHealth()).workflowRunModes,staleTime:1/0,retry:!1}).data}(),R=(0,E.b_)({enabled:!x&&T}),I=(0,d.useMemo)(()=>{var e,t;return(null!=(t=null==(e=R.data)?void 0:e.runs)?t:[]).filter(e=>e.workflowName===c).sort((e,t)=>t.startedAt-e.startedAt).slice(0,5).map(e=>e.runId)},[null==(r=R.data)?void 0:r.runs,c]),[_,O]=(0,d.useState)(0);(0,d.useEffect)(()=>{O(0)},[I[0]]);let P=null!=(i=I[_])?i:null,L=(0,E.uz)(!x&&T?P:null);(0,d.useEffect)(()=>{var e;(null==(e=L.data)?void 0:e.mode)==="only"&&_+1<I.length&&O(_+1)},[null==(a=L.data)?void 0:a.mode,_,I.length]);let D=void 0!==L.data&&"only"!==L.data.mode&&(null==(l=L.data)?void 0:l.events)&&(null==(s=td(L.data.events,u))?void 0:s.ok)===!1,[z,F]=(0,d.useState)(!1),[W,$]=(0,d.useState)(null),q=async e=>{if(!x&&T&&!z&&("retry"!==e||P&&D)){F(!0),$(null);try{(await S.runWorkflow(c,"","test"===e?{onlyNode:u}:{fromNode:u,fromRunId:P})).mode!==("test"===e?"only":"from")&&$("서버가 전체 실행으로 처리했습니다"),await A.invalidateQueries({queryKey:ts.AF.workflowRuns()})}catch(e){e instanceof tl.I7?$("먼저 고정하거나 한 번 전체 실행이 필요한 노드: ".concat(e.nodes.join(", "))):$("실행 실패: ".concat(e instanceof Error?e.message:String(e)))}finally{F(!1)}}};return(0,n.jsxs)("section",{"aria-label":"".concat(u," 마지막 실행 결과"),className:"max-h-64 overflow-y-auto border-t border-border bg-surface px-3 py-2 text-xs",children:[(0,n.jsxs)("h3",{className:"font-semibold",children:["마지막 실행 결과 \xb7 ",u]}),m?(0,n.jsxs)("div",{className:"mt-2 space-y-2",children:[(0,n.jsxs)("p",{className:m.ok?"text-success":"text-error",children:[m.ok?"성공":"실패",void 0!==m.durationMs?" \xb7 ".concat((m.durationMs/1e3).toFixed(2),"초"):""]}),!m.ok&&m.error&&(0,n.jsx)("p",{role:"alert",className:"break-words text-error",children:m.error}),w&&(0,n.jsxs)("details",{className:"rounded border border-border bg-surface-elevated px-2 py-1",children:[(0,n.jsx)("summary",{className:"cursor-pointer",children:"출력"}),(0,n.jsx)("pre",{className:"mt-2 max-h-40 overflow-auto whitespace-pre-wrap break-all font-mono text-[11px]",children:k}),w.truncated&&(0,n.jsx)("button",{type:"button",onClick:()=>y(e=>!e),className:"mt-1 text-accent underline",children:b?"접기":"전체 보기"})]})]}):(0,n.jsx)("p",{className:"mt-2 text-text-tertiary",children:"아직 실행 기록이 없습니다"}),!x&&(0,n.jsxs)("div",{className:"mt-2 flex flex-wrap gap-2 border-t border-border pt-2",children:[(0,n.jsx)("button",{type:"button",disabled:!T||z,onClick:()=>void q("test"),className:"rounded border border-border px-2 py-1 disabled:opacity-50",children:"이 노드만 시험"}),(0,n.jsx)("button",{type:"button",disabled:!T||z||!P||!D,onClick:()=>void q("retry"),className:"rounded border border-border px-2 py-1 disabled:opacity-50",children:"실패 노드부터 다시"}),!T&&(0,n.jsx)("p",{className:"w-full text-text-tertiary",children:"서버가 아직 이 기능을 지원하지 않습니다"}),W&&(0,n.jsx)("p",{role:"alert",className:"w-full text-error",children:W})]}),(0,n.jsxs)("div",{className:"mt-2 border-t border-border pt-2",children:[f.isError&&(0,n.jsx)("p",{role:"alert",className:"text-error",children:"고정 상태를 읽지 못했습니다."}),v&&(0,n.jsx)("span",{className:"rounded bg-accent/15 px-1.5 py-0.5 text-accent",children:"고정됨"}),!x&&!f.isError&&!f.isPending&&(v?(0,n.jsx)("button",{type:"button",disabled:N,onClick:async()=>{h.reset();try{await g.mutateAsync({name:c,nodeId:u})}catch(e){}},className:"ml-2 rounded border border-border px-2 py-1 disabled:opacity-50",children:"고정 풀기"}):void 0!==j?(0,n.jsxs)("div",{children:[(0,n.jsx)("button",{type:"button",disabled:N,onClick:async()=>{g.reset();try{await h.mutateAsync({name:c,nodeId:u,value:j})}catch(e){}},className:"rounded border border-border px-2 py-1 disabled:opacity-50",children:"이 출력 고정"}),(0,n.jsx)("p",{className:"mt-1 text-text-tertiary",children:"다음 실행부터 이 노드는 실제로 돌지 않고 이 값을 씁니다."})]}):null),!x&&C&&(0,n.jsxs)("p",{role:"alert",className:"mt-1 text-error",children:["고정 변경 실패: ",C.message]})]})]})}var tu=r(3151),tp=r(13783),tx=r(23101);let tm="미리보기 권한이 없습니다 — 채팅 트리거의 hostedUi 설정을 확인하세요";function tf(e){let{workflow:t,onClose:r}=e,{config:a}=(0,tu.Q)(),[l]=(0,d.useState)(()=>crypto.randomUUID()),[s,o]=(0,d.useState)({kind:"loading"}),[i,c]=(0,d.useState)([]),[u,p]=(0,d.useState)(""),[x,m]=(0,d.useState)(!1),[f,h]=(0,d.useState)(null),g=(0,d.useRef)(!0),b=(0,d.useRef)(null),y=(0,d.useRef)(0),v=a.baseUrl.replace(/\/$/,"");(0,d.useEffect)(()=>{g.current=!0;let e=!1;return o({kind:"loading"}),(0,tx.XQ)(t,{origin:v}).then(r=>{if(!e){if(!(null==r?void 0:r.path)){o({kind:"unavailable"}),(0,tp.cY)("workflows.chat-preview",{workflow:t,outcome:"no-trigger",chars:0});return}o({kind:"ready",config:r}),(0,tp.cY)("workflows.chat-preview",{workflow:t,outcome:"ready",chars:0})}}).catch(r=>{if(e)return;let n=r instanceof Error&&/^chat-config (401|403)\b/.test(r.message);o({kind:n?"forbidden":"unavailable"}),(0,tp.cY)("workflows.chat-preview",{workflow:t,outcome:n?"forbidden":"config-error",chars:0})}),()=>{var t;e=!0,g.current=!1,null==(t=b.current)||t.abort()}},[t,v]);let j=async()=>{if("ready"!==s.kind||x||!u.trim())return;let e=u.trim(),r="u-".concat(y.current++),n="a-".concat(y.current++),o=new AbortController;b.current=o,c(t=>[...t,{id:r,role:"user",text:e},{id:n,role:"assistant",text:"",pending:!0}]),p(""),h(null),m(!0);let i="";try{let r=await (0,tx.gJ)({origin:v,chatPath:s.config.path,message:e,sessionId:l,bearer:a.token,streaming:s.config.streaming,signal:o.signal});if("buffered"===r.kind)i=r.response;else for await(let e of r.frames){if(!g.current)break;if("token"===e.event)i+=e.data,c(e=>e.map(e=>e.id===n?{...e,text:i}:e));else if("done"===e.event){try{let t=JSON.parse(e.data);"string"==typeof t.response&&(i=t.response)}catch(e){}break}else if("error"===e.event)throw Error("chat stream error")}g.current&&(c(e=>e.map(e=>e.id===n?{...e,text:i,pending:!1}:e)),(0,tp.cY)("workflows.chat-preview",{workflow:t,outcome:"sent",chars:i.length}))}catch(e){if(g.current){let r=e instanceof Error&&/^chat (401|403)\b/.test(e.message);c(e=>e.filter(e=>e.id!==n)),h(r?tm:"메시지를 보내지 못했습니다"),(0,tp.cY)("workflows.chat-preview",{workflow:t,outcome:r?"forbidden":"send-error",chars:0})}}finally{g.current&&m(!1),b.current===o&&(b.current=null)}};return(0,n.jsxs)("div",{className:"flex h-full min-h-0 flex-col",children:[(0,n.jsxs)("header",{className:"flex items-center justify-between border-b border-border px-3 py-2",children:[(0,n.jsx)("h2",{className:"text-sm font-medium",children:"대화 미리보기"}),(0,n.jsx)("button",{type:"button",onClick:r,"aria-label":"대화 미리보기 닫기",className:"text-xs text-text-tertiary hover:text-text-primary",children:"닫기"})]}),(0,n.jsxs)("div",{className:"min-h-0 flex-1 space-y-3 overflow-y-auto px-3 py-3 text-sm","aria-live":"polite",children:["loading"===s.kind&&(0,n.jsx)("p",{className:"text-text-tertiary",children:"채팅을 불러오는 중…"}),"unavailable"===s.kind&&(0,n.jsx)("p",{role:"status",children:"이 워크플로에는 채팅 트리거가 없습니다"}),"forbidden"===s.kind&&(0,n.jsx)("p",{role:"alert",className:"text-error",children:tm}),i.map(e=>(0,n.jsxs)("div",{className:"break-words",children:[(0,n.jsxs)("span",{className:"text-xs text-text-tertiary",children:["user"===e.role?"나":"답변",e.pending?" \xb7 입력 중…":""]}),(0,n.jsx)("p",{className:"whitespace-pre-wrap",children:e.text})]},e.id)),f&&(0,n.jsx)("p",{role:"alert",className:"text-error",children:f})]}),"ready"===s.kind&&(0,n.jsxs)("form",{className:"flex gap-2 border-t border-border p-3",onSubmit:e=>{e.preventDefault(),j()},children:[(0,n.jsx)("input",{type:"text","aria-label":"대화 메시지",value:u,onChange:e=>p(e.target.value),disabled:x,className:"min-w-0 flex-1 rounded-md border border-border bg-surface px-2 py-1 text-sm"}),(0,n.jsx)("button",{type:"submit",disabled:x||!u.trim(),className:"rounded-md bg-primary px-3 py-1 text-xs text-primary-foreground disabled:opacity-50",children:"보내기"})]})]})}var th=r(44083);let tg={running:"Running",orphaned:"Orphaned",done:"Done",failed:"Failed",unknown:"Unknown"},tb={running:"bg-info/10 text-info ring-info/30",orphaned:"bg-text-tertiary/10 text-text-tertiary ring-border",done:"bg-success/10 text-success ring-success/30",failed:"bg-error/10 text-error ring-error/30",unknown:"bg-surface-elevated text-text-tertiary ring-border"};function ty(e){let{onSelect:t,selectedRunId:r,enabled:a}=e,l=(0,E.b_)({enabled:null==a||a}),[s,o]=(0,d.useState)("all"),i=(0,d.useMemo)(()=>{var e,t;let r=null!=(t=null==(e=l.data)?void 0:e.runs)?t:[];return"all"===s?r:r.filter(e=>e.status===s)},[l.data,s]),c=(0,d.useMemo)(()=>{var e,t;let r={all:0,running:0,orphaned:0,done:0,failed:0};for(let n of null!=(t=null==(e=l.data)?void 0:e.runs)?t:[])r.all+=1,n.status in r&&(r[n.status]+=1);return r},[l.data]);return l.isLoading?(0,n.jsxs)("div",{className:"flex h-full items-center justify-center text-[11px] text-text-tertiary",children:[(0,n.jsx)(k.A,{className:"mr-1.5 h-3 w-3 animate-spin"}),"loading runs…"]}):l.error?(0,n.jsxs)("div",{className:"flex h-full items-center justify-center text-[11px] text-error",children:[(0,n.jsx)(v.A,{className:"mr-1.5 h-3 w-3"}),"failed to load runs: ",l.error.message]}):(0,n.jsxs)("div",{className:"flex h-full flex-col",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2 border-b border-border px-3 py-2",children:[(0,n.jsx)(b.A,{className:"h-3.5 w-3.5 text-text-tertiary"}),(0,n.jsx)("span",{className:"text-xs font-medium",children:"Recent runs"}),(0,n.jsxs)("span",{className:"text-[10px] text-text-tertiary",children:["(",c.all,")"]}),(0,n.jsx)("div",{className:"ml-auto flex items-center gap-1",children:["all","running","done","failed","orphaned"].map(e=>(0,n.jsx)(tv,{label:"all"===e?"all":tg[e],count:c[e],active:s===e,onClick:()=>o(e)},e))})]}),0===i.length?(0,n.jsx)("div",{className:"flex flex-1 items-center justify-center text-[11px] text-text-tertiary",children:"all"===s?"No runs yet — pick a workflow + click Run to start one.":"No ".concat(tg[s].toLowerCase()," runs.")}):(0,n.jsx)("ul",{className:"flex-1 overflow-y-auto",children:i.map(e=>(0,n.jsx)(tj,{run:e,selected:e.runId===r,onSelect:()=>t(e.runId,e.workflowName)},e.runId))})]})}function tv(e){let{label:t,count:r,active:a,onClick:l}=e;return(0,n.jsxs)("button",{type:"button",onClick:l,className:"rounded-md px-1.5 py-0.5 text-[10px] transition-colors ".concat(a?"bg-primary/15 text-primary ring-1 ring-primary/30":"text-text-tertiary hover:bg-surface-elevated"),children:[t,r>0&&(0,n.jsx)("span",{className:"ml-1 opacity-70",children:r})]})}function tj(e){let{run:t,selected:r,onSelect:a}=e;return(0,n.jsx)("li",{children:(0,n.jsxs)("button",{type:"button",onClick:a,className:"flex w-full items-center gap-2 border-b border-border px-3 py-2 text-left text-[11px] transition-colors hover:bg-surface-elevated ".concat(r?"bg-primary/10":""),children:[(0,n.jsx)(tw,{status:t.status}),(0,n.jsxs)("div",{className:"flex min-w-0 flex-1 flex-col",children:[(0,n.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,n.jsx)(c.A,{className:"h-3 w-3 shrink-0 text-text-tertiary"}),(0,n.jsx)("span",{className:"truncate font-medium",children:t.workflowName})]}),(0,n.jsxs)("div",{className:"flex items-center gap-2 text-[9px] text-text-tertiary",children:[(0,n.jsx)("span",{className:"font-mono",children:t.runId.slice(0,22)}),(0,n.jsx)("span",{children:"\xb7"}),(0,n.jsx)("span",{children:function(e){let t=Date.now()-e;return t<6e4?"".concat(Math.max(1,Math.floor(t/1e3)),"s ago"):t<36e5?"".concat(Math.floor(t/6e4),"m ago"):t<864e5?"".concat(Math.floor(t/36e5),"h ago"):"".concat(Math.floor(t/864e5),"d ago")}(t.startedAt)}),t.arguments&&t.arguments.length>0&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("span",{children:"\xb7"}),(0,n.jsx)("span",{className:"truncate italic",children:t.arguments.slice(0,30)})]})]})]}),(0,n.jsx)("span",{className:"shrink-0 rounded px-1.5 py-0.5 text-[9px] font-medium uppercase ring-1 ".concat(tb[t.status]),children:tg[t.status]})]})})}function tw(e){let{status:t}=e;return"running"===t?(0,n.jsx)(k.A,{className:"h-3.5 w-3.5 shrink-0 animate-spin text-info"}):"done"===t?(0,n.jsx)(T.A,{className:"h-3.5 w-3.5 shrink-0 text-success"}):"failed"===t?(0,n.jsx)(v.A,{className:"h-3.5 w-3.5 shrink-0 text-error"}):"orphaned"===t?(0,n.jsx)(th.A,{className:"h-3.5 w-3.5 shrink-0 text-text-tertiary"}):(0,n.jsx)("span",{className:"h-3.5 w-3.5 shrink-0 rounded-full bg-text-tertiary/30"})}function tk(e){var t,r;let{runId:a,message:l,onDismiss:s,onResolved:o}=e,[i,c]=(0,d.useState)(""),u=(0,E.Yk)(),p=(0,E.Ux)(),x=u.isPending||p.isPending;(0,d.useEffect)(()=>{let e=e=>{"Escape"!==e.key||x||s()};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[x,s]);let m=async()=>{try{await u.mutateAsync({runId:a,response:i.trim()?i:void 0}),null==o||o("approved")}catch(e){}},f=async()=>{try{await p.mutateAsync({runId:a,reason:i.trim()?i:void 0}),null==o||o("rejected")}catch(e){}};return(0,n.jsx)("div",{role:"dialog","aria-modal":"true","aria-labelledby":"approval-modal-title",className:"fixed inset-0 z-50 flex items-end justify-center bg-black/40 backdrop-blur-sm sm:items-center",children:(0,n.jsxs)("div",{className:"w-full max-w-md rounded-t-2xl border border-border bg-surface shadow-xl sm:rounded-lg",children:[(0,n.jsxs)("header",{className:"flex items-center justify-between border-b border-border px-4 py-3",children:[(0,n.jsxs)("h2",{id:"approval-modal-title",className:"flex items-center gap-2 text-sm font-semibold",children:[(0,n.jsx)(v.A,{className:"h-4 w-4 text-warning"}),"Approval needed"]}),(0,n.jsx)("button",{type:"button",onClick:s,disabled:x,"aria-label":"Close approval modal",className:"rounded-md p-1 text-text-tertiary hover:bg-surface-elevated disabled:opacity-50",children:(0,n.jsx)(ec.A,{className:"h-3.5 w-3.5"})})]}),(0,n.jsxs)("div",{className:"space-y-2 px-4 py-3",children:[(0,n.jsxs)("div",{className:"text-[10px] uppercase tracking-wide text-text-tertiary",children:["run \xb7 ",(0,n.jsx)("span",{className:"font-mono",children:a.slice(0,28)})]}),(0,n.jsx)("p",{className:"whitespace-pre-wrap text-[13px] leading-snug",children:l}),(0,n.jsxs)("label",{className:"block pt-2 text-[10px] uppercase tracking-wide text-text-tertiary",children:["Response (optional \xb7 captured into ",(0,n.jsx)("code",{className:"font-mono",children:"$node.output"})," when capture_response: true)"]}),(0,n.jsx)("textarea",{value:i,onChange:e=>c(e.target.value),placeholder:"LGTM / type a reason for rejection / leave empty for bare approval",rows:3,disabled:x,className:"w-full resize-none rounded-md border border-border bg-surface-elevated px-2 py-1.5 font-mono text-[11px] focus:outline-none focus:ring-1 focus:ring-primary disabled:opacity-50"}),(u.error||p.error)&&(0,n.jsx)("p",{className:"text-[11px] text-error",children:(null!=(t=u.error)?t:p.error)instanceof Error?(null!=(r=u.error)?r:p.error).message:"request failed"})]}),(0,n.jsxs)("footer",{className:"flex items-center justify-end gap-2 border-t border-border px-4 py-3",children:[(0,n.jsxs)("button",{type:"button",onClick:f,disabled:x,className:"flex items-center gap-1 rounded-md border border-error/40 px-3 py-1.5 text-[11px] text-error hover:bg-error/10 disabled:opacity-50",children:[p.isPending?(0,n.jsx)(k.A,{className:"h-3 w-3 animate-spin"}):(0,n.jsx)(v.A,{className:"h-3 w-3"}),"Reject"]}),(0,n.jsxs)("button",{type:"button",onClick:m,disabled:x,className:"flex items-center gap-1 rounded-md bg-primary px-3 py-1.5 text-[11px] font-medium text-primary-foreground hover:bg-accent-hover disabled:opacity-50",children:[u.isPending?(0,n.jsx)(k.A,{className:"h-3 w-3 animate-spin"}):(0,n.jsx)(T.A,{className:"h-3 w-3"}),"Approve"]})]})]})})}let tN="elanous.workflows.layout",tC={leftCollapsed:!1,rightCollapsed:!1,canvasOnly:!1,leftWidthPx:240,rightWidthPx:320};function tS(e,t){return Number.isFinite(e)?e<160?160:e>640?640:Math.round(e):t}let tA="(max-width: 639px)";function tT(e){if(!window.matchMedia)return()=>{};let t=window.matchMedia(tA);return t.addEventListener("change",e),()=>t.removeEventListener("change",e)}function tE(){var e,t;return!!(null==(e=(t=window).matchMedia)?void 0:e.call(t,tA).matches)}let tM={project:"Project",global:"Global",builtin:"Built-in"};function tR(){let{palette:e}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,M.Qj)()?(0,n.jsx)(t_,{palette:e}):(0,n.jsx)(tI,{})}function tI(){return(0,n.jsxs)("div",{className:"flex h-full flex-col items-center justify-center gap-3 px-6 py-10 text-center",children:[(0,n.jsx)(c.A,{className:"h-8 w-8 text-text-tertiary"}),(0,n.jsx)("h2",{className:"text-base font-semibold",children:"Workflows"}),(0,n.jsx)("p",{className:"max-w-md text-sm text-text-tertiary",children:"Daemon 연결이 설정되지 않았습니다. Settings 에서 Base URL 을 입력하면 워크플로우 목록이 표시됩니다."}),(0,n.jsx)("a",{href:"/app/settings/",className:"rounded-md border border-border px-3 py-1 text-sm text-text-primary hover:bg-surface-elevated",children:"Settings"})]})}function t_(e){var t,r,s,i,S,A,T,R,I,_,P,L,D,z,F,W,$,q,U,G,K;let{palette:H}=e,Y=(0,M.M1)(),J=(0,E.mP)(),[B,X]=(0,d.useState)(null),Q=(0,d.useSyncExternalStore)(tT,tE,()=>!1),[Z,ee]=(0,d.useState)(null),et=null!=Z?Z:B?"canvas":"list",[er,en]=(0,d.useState)(null),[ea,el]=(0,d.useState)(""),[es,eo]=(0,d.useState)(null),[ei,ed]=(0,d.useState)(""),[ec,eu]=(0,d.useState)(null),[ep,ex]=(0,d.useState)(!1),[ef,eh]=(0,d.useState)(!1),[eg,ey]=(0,d.useState)(""),[ej,ew]=(0,d.useState)(null),[ek,eN]=(0,d.useState)("graph"),[eC,eA]=(0,d.useState)(!1),[eT,eE]=(0,d.useState)(!1),[eM,eR]=(0,d.useState)(!1),[eI,e_]=(0,d.useState)(!1),[eO,eP]=(0,d.useState)(null),[eL,eD]=(0,d.useState)(null),ez=(0,E.j3)(null!=B?B:"",{enabled:!!B&&!ep}),eF=(0,E.yM)(),eW=(0,E.oE)(),e$=(0,E.xd)(),eq=(0,E.XL)(),eU=(0,E.b_)(),eG=(0,d.useMemo)(()=>{var e,t,r;return B&&(null==(e=eU.data)?void 0:e.runs)&&null!=(r=null==(t=function(e,t){let r=null;for(let n of e)n.workflowName===t&&(!r||n.startedAt>r.startedAt)&&(r=n);return r}(eU.data.runs,B))?void 0:t.runId)?r:null},[B,null==(t=eU.data)?void 0:t.runs]),eK=null!=ec?ec:eG,eH=(0,E.uz)(eK),eY=(0,d.useMemo)(()=>{var e;if(null==(e=eH.data)?void 0:e.events)return function(e){let t={};for(let n of e)if(n.nodeId)switch(n.type){case"node_start":t[n.nodeId]||(t[n.nodeId]={status:"running"});break;case"node_done":{let e=n.result;if(null==e?void 0:e.ok)t[n.nodeId]={status:"done",durationMs:e.durationMs};else{let r={status:"failed"};(null==e?void 0:e.durationMs)!==void 0&&(r.durationMs=e.durationMs),(null==e?void 0:e.error)&&(r.error=e.error),t[n.nodeId]=r}break}case"node_skipped":{let e={status:"skipped"};n.reason&&(e.reason=n.reason),t[n.nodeId]=e;break}case"approval_pending":t[n.nodeId]={status:"awaiting_approval"};break;case"approval_resolved":var r;(null==(r=t[n.nodeId])?void 0:r.status)==="awaiting_approval"&&delete t[n.nodeId]}return t}(eH.data.events)},[null==(r=eH.data)?void 0:r.events]),eJ=(0,E.zD)();(0,E.Ck)();let eB=(0,d.useMemo)(()=>{var e,t,r;return null!=(r=(null!=(t=null==(e=eJ.data)?void 0:e.pending)?t:[]).find(e=>e.runId===ec))?r:null},[eJ.data,ec]),eX=null!=(W=null==(s=eJ.data)?void 0:s.pending.length)?W:0,[eV,eQ]=(0,d.useState)(new Set);(0,d.useEffect)(()=>{eQ(new Set)},[ec]),(0,d.useEffect)(()=>{var e;ep||(null==(e=ez.data)?void 0:e.yaml)!==void 0&&ez.data.name===B&&(el(ez.data.yaml),eo(B))},[null==(i=ez.data)?void 0:i.yaml,null==(S=ez.data)?void 0:S.name,ep,B]);let eZ=(0,d.useRef)(null);(0,d.useEffect)(()=>{if(!ea.trim())return;let e=setTimeout(()=>{var e;null==(e=eZ.current)||e.abort();let t=new AbortController;eZ.current=t,e$.mutateAsync({yaml:ea,signal:t.signal}).catch(()=>void 0)},600);return()=>{var t;clearTimeout(e),null==(t=eZ.current)||t.abort()}},[ea]);let e0=(0,d.useMemo)(()=>{var e,t;let r={project:[],global:[],builtin:[]};for(let n of null!=(t=null==(e=J.data)?void 0:e.workflows)?t:[])r[n.source].push(n);return r},[null==(A=J.data)?void 0:A.workflows]),e1=null==(T=e$.data)?void 0:T.validation,e2=e1&&!e1.ok?e1.issues:[],e3=(0,d.useMemo)(()=>ea.trim()?(0,O.dM)(ea):null,[ea]),e5=!!(null==e3?void 0:e3.nodes.some(e=>null!==e.chatTrigger&&"object"==typeof e.chatTrigger&&!Array.isArray(e.chatTrigger))),e4=(0,d.useMemo)(()=>{if(e3&&0!==e2.length)return function(e,t){let r={},n=[];for(let a of e){let e=function(e,t){if("string"!=typeof e)return null;let r=/^nodes\[(\d+)\]/.exec(e);if(!r)return null;let n=Number.parseInt(r[1],10);if(!Number.isFinite(n)||n<0)return null;let a=Array.isArray(t.nodes)?t.nodes:[];if(n>=a.length)return null;let l=a[n];return l&&"string"==typeof l.id&&0!==l.id.length?l.id:null}(a.path,t);e?(r[e]||(r[e]=[]),r[e].push(a)):n.push(a)}return{byNodeId:r,rootIssues:n}}(e2,e3).byNodeId},[e3,e2]),e6=(0,d.useMemo)(()=>{if(!e3)return;let e=function(e){var t,r;let n=Array.isArray(e.nodes)?e.nodes:[],a=new Set,l=new Map;for(let e of n)e&&"string"==typeof e.id&&0!==e.id.length&&a.add(e.id);for(let e of n)if(e&&"string"==typeof e.id&&0!==e.id.length)for(let r of Array.isArray(e.depends_on)?e.depends_on:[]){if("string"!=typeof r||0===r.length||!a.has(r))continue;let n=null!=(t=l.get(r))?t:[];n.push(e.id),l.set(r,n)}let s=new Set,o=new Map,i=[];for(let e of a)(null!=(r=o.get(e))?r:0)===0&&function e(t){var r,n;for(let a of(o.set(t,1),i.push(t),null!=(r=l.get(t))?r:[])){let t=null!=(n=o.get(a))?n:0;if(1===t){let e=i.lastIndexOf(a);if(e>=0)for(let t=e;t<i.length;t++)s.add(i[t])}else 0===t&&e(a)}o.set(t,2),i.pop()}(e);return s}(e3);return e.size>0?e:void 0},[e3]),e9=e=>{eE(!1),eR(!1),en(null),eo(null),X(e),ee("canvas"),eA(!1),ex(!1),eu(null),eP(null)},e8=!ep&&((null==(R=ez.data)?void 0:R.source)==="builtin"||function(e){try{let t=(0,a.Tp)(e);return 0===t.errors.length&&!0===t.get("readonly")}catch(e){return!1}}(null!=($=null==(I=ez.data)?void 0:I.yaml)?$:"")),e7=async()=>{if(e8)return;if(ew(null),ep){let e=eg.trim()?l.test(eg.trim())?null:"이름은 소문자\xb7숫자와 하이픈(-)만 쓸 수 있습니다. 예: weekly-report":"워크플로 이름을 먼저 적어 주세요.";if(e)return void ew(e)}let e=ep?eg.trim():B;if(!e)return;let t=ep?function(e,t){let r=/^name:[^\n]*$/m;return r.test(e)?e.replace(r,"name: ".concat(t)):"name: ".concat(t,"\n").concat(e)}(ea,e):ea;t!==ea&&el(t);try{await eF.mutateAsync({name:e,body:{yaml:t,scope:"project"}}),ex(!1),X(e),eo(e)}catch(e){ew(function(e){var t,r,n,a;let l="object"==typeof e&&null!==e&&"status"in e?Number(e.status):NaN,s="object"==typeof e&&null!==e&&"body"in e?e.body:void 0,o=s&&"object"==typeof s&&"reason"in s&&"string"==typeof s.reason?s.reason:"",i=s&&"object"==typeof s&&"validation"in s&&null!=(n=null==(t=s.validation)?void 0:t.issues)?n:[];return 401===l||403===l?"저장 권한이 없습니다. 설정에서 연결 토큰을 확인해 주세요.":409===l&&s&&"object"==typeof s&&"error"in s&&"readonly_workflow"===s.error?"읽기 전용 워크플로는 덮어쓸 수 없습니다. 사본으로 열어 주세요.":/name mismatch/i.test(o)?"이름 칸과 워크플로 이름이 달라 저장하지 못했습니다. 다시 저장해 주세요.":i.length?"저장하지 못했습니다: ".concat(String(null!=(a=null==(r=i[0])?void 0:r.message)?a:"").slice(0,120)):409===l?"같은 이름의 워크플로가 이미 있습니다. 다른 이름을 적어 주세요.":"저장하지 못했습니다. 잠시 뒤 다시 시도해 주세요."}(e))}},te=async()=>{if(B)try{let e=await eq.mutateAsync({name:B,args:ei});eu(e.runId)}catch(e){}},tr=async()=>{var e,t;if(!B||e8||(null==(e=ez.data)?void 0:e.source)==="builtin")return;let r=(null==(t=ez.data)?void 0:t.source)==="global"?"global":"project";try{await eW.mutateAsync({name:B,scope:r}),X(null),ee("list"),en(null),eo(null),el("")}catch(e){}},tn=e$.isPending?"pending":e1?e1.ok?"ok":"error":"idle",ta=function(){let[e,t]=(0,d.useState)(()=>tC),r=(0,d.useRef)(!1);(0,d.useEffect)(()=>{t(function(){try{var e,t,r;let n=window.localStorage.getItem(tN);if(!n)return{...tC};return(e=JSON.parse(n))&&"object"==typeof e?{leftCollapsed:"boolean"==typeof e.leftCollapsed?e.leftCollapsed:tC.leftCollapsed,rightCollapsed:"boolean"==typeof e.rightCollapsed?e.rightCollapsed:tC.rightCollapsed,canvasOnly:"boolean"==typeof e.canvasOnly?e.canvasOnly:tC.canvasOnly,leftWidthPx:tS(null!=(t=e.leftWidthPx)?t:tC.leftWidthPx,tC.leftWidthPx),rightWidthPx:tS(null!=(r=e.rightWidthPx)?r:tC.rightWidthPx,tC.rightWidthPx)}:{...tC}}catch(e){return{...tC}}}()),r.current=!0},[]),(0,d.useEffect)(()=>{if(r.current)try{window.localStorage.setItem(tN,JSON.stringify(e))}catch(e){}},[e]);let n=(0,d.useCallback)(()=>{t(e=>({...e,leftCollapsed:!e.leftCollapsed}))},[]),a=(0,d.useCallback)(()=>{t(e=>({...e,rightCollapsed:!e.rightCollapsed}))},[]),l=(0,d.useCallback)(()=>{t(e=>({...e,canvasOnly:!e.canvasOnly}))},[]),s=(0,d.useCallback)(e=>{t(t=>({...t,leftWidthPx:tS(e,t.leftWidthPx)}))},[]),o=(0,d.useCallback)(e=>{t(t=>({...t,rightWidthPx:tS(e,t.rightWidthPx)}))},[]),i=(0,d.useCallback)(()=>{t({...tC})},[]);return(0,d.useMemo)(()=>({...e,toggleLeft:n,toggleRight:a,toggleCanvasOnly:l,setLeftWidth:s,setRightWidth:o,reset:i}),[e,n,a,l,s,o,i])}(),tl=Q?"list"===et:!ta.canvasOnly,ts=Q?"run"===et:!ta.canvasOnly,to=ta.leftCollapsed?40:ta.leftWidthPx,ti=ta.rightCollapsed?40:ta.rightWidthPx;(0,d.useEffect)(()=>{let e=e=>{var t;if("\\"!==e.key||!(e.metaKey||e.ctrlKey))return;let r=e.target,n=null==r||null==(t=r.tagName)?void 0:t.toLowerCase();"input"===n||"textarea"===n||null!=r&&r.isContentEditable||(e.preventDefault(),ta.toggleCanvasOnly())};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[ta]);let td=(0,d.useCallback)((e,t)=>{let r="left"===e?ta.leftWidthPx:ta.rightWidthPx,n="left"===e?ta.setLeftWidth:ta.setRightWidth,a="left"===e?1:-1;try{t.target.setPointerCapture(t.pointerId)}catch(e){}let l=e=>{n(r+a*(e.clientX-t.clientX))},s=()=>{window.removeEventListener("pointermove",l),window.removeEventListener("pointerup",s);try{t.target.releasePointerCapture(t.pointerId)}catch(e){}};window.addEventListener("pointermove",l),window.addEventListener("pointerup",s)},[ta]);return(0,n.jsxs)("div",{className:"flex h-full flex-col",children:[(0,n.jsxs)("header",{className:"flex items-center justify-between border-b border-border px-4 py-3",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)(c.A,{className:"h-4 w-4 text-text-tertiary"}),(0,n.jsx)("h1",{className:"text-sm font-semibold",children:"Workflows"}),(0,n.jsxs)("span",{className:"text-xs text-text-tertiary",children:[null!=(q=null==(_=J.data)?void 0:_.workflows.length)?q:0," declared"]})]}),(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[!Q&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("button",{type:"button",onClick:ta.toggleLeft,title:ta.leftCollapsed?"Show workflow list":"Collapse workflow list",className:"flex items-center gap-1 rounded-md border border-border px-2 py-1 text-[11px] text-text-tertiary hover:bg-surface-elevated",children:ta.leftCollapsed?(0,n.jsx)(u.A,{className:"h-3 w-3"}):(0,n.jsx)(p.A,{className:"h-3 w-3"})}),(0,n.jsx)("button",{type:"button",onClick:ta.toggleCanvasOnly,title:ta.canvasOnly?"Exit canvas-only (Cmd+\\)":"Canvas-only mode (Cmd+\\)",className:"flex items-center gap-1 rounded-md border px-2 py-1 text-[11px] transition-colors ".concat(ta.canvasOnly?"border-accent/50 bg-accent/15 text-accent":"border-border text-text-tertiary hover:bg-surface-elevated"),children:ta.canvasOnly?(0,n.jsx)(x.A,{className:"h-3 w-3"}):(0,n.jsx)(m.A,{className:"h-3 w-3"})}),(0,n.jsx)("button",{type:"button",onClick:ta.toggleRight,title:ta.rightCollapsed?"Show run panel":"Collapse run panel",className:"flex items-center gap-1 rounded-md border border-border px-2 py-1 text-[11px] text-text-tertiary hover:bg-surface-elevated",children:ta.rightCollapsed?(0,n.jsx)(f.A,{className:"h-3 w-3"}):(0,n.jsx)(h.A,{className:"h-3 w-3"})})]}),eX>0&&(0,n.jsxs)("button",{type:"button",onClick:()=>{var e;if(eB&&eV.has(eB.runId))return void(eB&&eQ(e=>{let t=new Set(e);return t.delete(eB.runId),t}));let t=null==(e=eJ.data)?void 0:e.pending[0];t&&t.runId!==ec&&eu(t.runId)},title:eB&&eV.has(eB.runId)?"Re-open approval modal for this run":"".concat(eX," run(s) waiting on approval — click to view"),className:"relative flex items-center gap-1 rounded-md border border-warning/40 bg-warning/10 px-2 py-1 text-[11px] text-warning hover:bg-warning/20",children:[(0,n.jsx)(g.A,{className:"h-3 w-3"}),(0,n.jsx)("span",{children:eX}),(0,n.jsx)("span",{className:"absolute -right-1 -top-1 h-2 w-2 animate-pulse rounded-full bg-warning ring-2 ring-surface"})]}),(0,n.jsxs)("button",{type:"button",onClick:()=>{eA(e=>!e),Q&&ee("canvas")},className:"flex items-center gap-1 rounded-md border px-2 py-1 text-[11px] transition-colors ".concat(eC?"border-primary/40 bg-primary/15 text-primary":"border-border text-text-tertiary hover:bg-surface-elevated"),children:[(0,n.jsx)(b.A,{className:"h-3 w-3"}),eC?"Editor":"All runs"]}),(0,n.jsxs)("button",{type:"button",onClick:()=>e_(e=>!e),title:eI?"Hide AI prompt":"Describe a workflow in plain text",className:"flex items-center gap-1 rounded-md border px-2 py-1 text-[11px] transition-colors ".concat(eI?"border-accent/50 bg-accent/15 text-accent":"border-border text-text-tertiary hover:bg-surface-elevated"),children:[(0,n.jsx)(y.A,{className:"h-3 w-3"}),"AI"]}),(0,n.jsx)("button",{type:"button",onClick:()=>eh(!0),className:"rounded-md bg-primary px-3 py-1 text-xs font-medium text-primary-foreground hover:bg-accent-hover transition-colors",children:"+ New"})]})]}),Q&&(0,n.jsx)("nav",{"aria-label":"편집기 칸",role:"tablist",className:"flex border-b border-border",children:[["list","목록"],["canvas","캔버스"],["run","실행"]].map(e=>{let[t,r]=e;return(0,n.jsx)("button",{type:"button",role:"tab","aria-selected":et===t,onClick:()=>{ee(t),"canvas"===t&&eA(!1)},className:"min-w-0 flex-1 px-2 py-2 text-xs font-medium ".concat(et===t?"border-b-2 border-accent text-text-primary":"text-text-tertiary"),children:r},t)})}),(0,n.jsxs)("div",{className:"flex flex-1 overflow-hidden",children:[tl&&(0,n.jsx)("aside",{style:Q?void 0:{width:to},className:"shrink-0 overflow-y-auto border-r border-border ".concat(Q?"w-full min-w-0":""),children:!Q&&ta.leftCollapsed?(0,n.jsx)("button",{type:"button",onClick:ta.toggleLeft,title:"Expand workflow list",className:"flex h-full w-full items-center justify-center text-text-tertiary hover:bg-surface-elevated",children:(0,n.jsx)(u.A,{className:"h-4 w-4"})}):["project","global","builtin"].map(e=>(0,n.jsx)(tO,{label:tM[e],entries:e0[e],selected:B,onSelect:e9},e))}),!Q&&tl&&!ta.leftCollapsed&&(0,n.jsx)("div",{role:"separator","aria-orientation":"vertical","aria-label":"Resize workflow list",onPointerDown:e=>td("left",{clientX:e.clientX,pointerId:e.pointerId,target:e.currentTarget}),className:"w-1 shrink-0 cursor-col-resize bg-transparent hover:bg-accent/30"}),(!Q||"canvas"===et)&&(0,n.jsx)("section",{className:"flex flex-1 flex-col overflow-hidden min-w-0",children:eC?(0,n.jsx)(ty,{selectedRunId:ec,onSelect:(e,t)=>{eu(e),en(null),eo(null),X(t),ex(!1),eA(!1),Q&&ee("run")}}):eT&&B&&!ep?(0,n.jsx)(eb,{name:B,onLoad:e=>{el(e),eN("yaml")},onClose:()=>eE(!1)},B):eM&&B&&!ep?(0,n.jsx)(ev,{yaml:(null==(P=ez.data)?void 0:P.name)===B?ez.data.yaml:"",baseUrl:Y.baseUrl,onClose:()=>eR(!1)}):(0,n.jsxs)(n.Fragment,{children:[eI&&(0,n.jsx)(eS,{currentYaml:ea,onClose:()=>e_(!1),onGenerated:e=>{var t;e.yaml&&(el(e.yaml),(null==(t=e.definition)?void 0:t.name)&&(ex(!0),en(null),eo(null),X(null),ey(e.definition.name),eu(null)))}}),ep&&(0,n.jsxs)("div",{className:"border-b border-border px-3 py-2",children:[(0,n.jsx)("label",{className:"block text-[10px] uppercase tracking-wide text-text-tertiary",children:"Workflow name (kebab-case)"}),(0,n.jsx)("input",{type:"text",value:eg,onChange:e=>ey(e.target.value),placeholder:"my-workflow",className:"w-full rounded-md border border-border bg-surface px-2 py-1 text-sm font-mono",autoFocus:!0})]}),!ep&&B&&(0,n.jsxs)("div",{className:"flex items-center justify-between border-b border-border px-3 py-2",children:[(0,n.jsxs)("div",{className:"flex items-center gap-3",children:[(0,n.jsx)("span",{className:"text-sm font-medium",children:B}),e8&&(0,n.jsx)("span",{className:"rounded bg-surface-elevated px-1.5 py-0.5 text-[10px] text-text-tertiary",children:(null==(L=ez.data)?void 0:L.source)==="builtin"?"read-only (built-in)":"읽기 전용"}),e8&&(0,n.jsx)("button",{type:"button",onClick:()=>{var e,t,r;if(B&&(null==(e=ez.data)?void 0:e.yaml)&&e8)try{let e=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],n=(0,a.Tp)(e);if(n.errors.length)throw Error("워크플로 YAML을 읽을 수 없습니다.");let l=new Set(r),s="".concat(t,"-copy");for(let e=2;l.has(s);e+=1)s="".concat(t,"-copy-").concat(e);return n.set("name",s),n.delete("readonly"),{name:s,yaml:n.toString()}}(ez.data.yaml,B,(null!=(r=null==(t=J.data)?void 0:t.workflows)?r:[]).map(e=>e.name));el(e.yaml),ey(e.name),ex(!0),X(null),eP(null),eu(null),ew(null)}catch(e){ew(e instanceof Error?e.message:String(e))}},className:"rounded-md border border-border px-2 py-1 text-[11px] text-text-primary hover:bg-surface-elevated",children:"읽기 전용 — 사본으로 열기"}),(0,n.jsx)(tP,{mode:ek,onChange:eN})]}),(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[es===B&&(null==(D=ez.data)?void 0:D.name)===B&&e5&&(0,n.jsx)("button",{type:"button",onClick:()=>{en(B),Q?ee("run"):ta.rightCollapsed&&ta.toggleRight()},className:"rounded-md border border-border px-2 py-1 text-xs text-text-primary hover:bg-surface-elevated",children:"대화 미리보기"}),(0,n.jsx)(tL,{status:tn})]})]}),"graph"===ek&&ea.trim()?(0,n.jsxs)("div",{className:"flex flex-1 flex-col overflow-hidden bg-surface",children:[(0,n.jsx)("div",{className:eO?"flex-1 min-h-[180px] overflow-hidden":"flex-1 overflow-hidden",children:(0,n.jsx)(V,{palette:H,yaml:ea,editable:!e8,onChangeYaml:el,onNodeClick:e=>eP(e),nodeStatuses:eY,nodeIssues:e4,cycleNodeIds:e6,focusNodeId:null!=(U=null==eL?void 0:eL.id)?U:null,focusNonce:null!=(G=null==eL?void 0:eL.nonce)?G:0,onRun:B&&!ep?te:void 0})}),eO&&(null==e3?void 0:e3.nodes.some(e=>e.id===eO))&&(0,n.jsxs)("div",{className:"max-h-[50%] shrink-0 overflow-y-auto border-t border-border",children:[!e8&&(0,n.jsx)(tt,{definition:e3,nodeId:eO,palette:H,credentialsClient:Y,onChange:e=>el((0,O.sE)(e)),onClose:()=>eP(null),onDelete:()=>{el((0,O.sE)((0,O.AC)(e3,eO))),eP(null)}}),B&&!ep&&(0,n.jsx)(tc,{workflowName:B,nodeId:eO,events:null!=(K=null==(z=eH.data)?void 0:z.events)?K:[],readOnly:e8},"".concat(B,":").concat(eO))]})]}):(0,n.jsx)("textarea",{value:ea,onChange:e=>el(e.target.value),readOnly:e8,placeholder:"Select a workflow on the left or click + New to start",spellCheck:!1,className:"flex-1 resize-none border-0 bg-surface px-3 py-2 font-mono text-xs leading-snug focus:outline-none"}),e2.length>0&&(0,n.jsx)("ul",{className:"max-h-32 overflow-y-auto border-t border-border bg-surface-elevated px-3 py-2 text-[11px]",children:e2.slice(0,8).map((e,t)=>{var r,a;let l=e3&&null!=(a=e4&&(null==(r=Object.entries(e4).find(t=>{let[,r]=t;return r.includes(e)}))?void 0:r[0]))?a:null,s=!!l;return(0,n.jsxs)("li",{className:"flex items-start gap-1.5 text-error ".concat(s?"cursor-pointer hover:bg-surface":""),...s?{onClick:()=>{eN("graph"),eD(e=>{var t;return{id:l,nonce:(null!=(t=null==e?void 0:e.nonce)?t:0)+1}})},role:"button",tabIndex:0}:{},title:s?'Jump to node "'.concat(l,'"'):void 0,children:[(0,n.jsx)(v.A,{className:"mt-0.5 h-3 w-3 shrink-0"}),(0,n.jsxs)("span",{children:[(0,n.jsx)("span",{className:"font-mono text-text-tertiary",children:e.path||"(root)"})," ",e.message]})]},t)})}),(0,n.jsxs)("footer",{className:"flex items-center justify-end gap-2 border-t border-border px-3 py-2",children:[e8&&(0,n.jsx)("span",{className:"mr-auto rounded bg-surface-elevated px-2 py-0.5 text-[11px] text-text-tertiary",children:"읽기 전용"}),ej&&(0,n.jsx)("p",{role:"alert",className:"mr-auto text-[11px] text-error",children:ej}),B&&!ep&&(0,n.jsxs)("button",{type:"button",onClick:()=>{eR(!1),eE(!0)},className:"flex items-center gap-1 rounded-md border border-border px-2 py-1 text-[11px] text-text-primary hover:bg-surface-elevated",children:[(0,n.jsx)(b.A,{className:"h-3 w-3"}),"이전 판"]}),B&&!ep&&(0,n.jsx)("button",{type:"button",onClick:()=>{eE(!1),eR(!0)},className:"flex items-center gap-1 rounded-md border border-border px-2 py-1 text-[11px] text-text-primary hover:bg-surface-elevated",children:"게시"}),B&&!e8&&!ep&&(0,n.jsxs)("button",{type:"button",onClick:tr,disabled:e8||eW.isPending,className:"flex items-center gap-1 rounded-md border border-error/40 px-2 py-1 text-[11px] text-error hover:bg-error/10 disabled:opacity-50",children:[(0,n.jsx)(j.A,{className:"h-3 w-3"}),"Delete"]}),(0,n.jsxs)("button",{type:"button",onClick:()=>{if(!ea.trim())return;let e=URL.createObjectURL(new Blob([ea],{type:"application/x-yaml"}));try{let t=document.createElement("a");t.href=e,t.download=o(ep?eg:null!=B?B:""),document.body.appendChild(t);try{t.click()}finally{t.remove()}}finally{URL.revokeObjectURL(e)}},disabled:!ea.trim(),className:"flex items-center gap-1 rounded-md border border-border px-2 py-1 text-[11px] text-text-primary hover:bg-surface-elevated disabled:opacity-50",children:[(0,n.jsx)(w.A,{className:"h-3 w-3"}),"내보내기"]}),(0,n.jsxs)("button",{type:"button",onClick:()=>{if(ea.trim()){ew(null);try{let t=function(e){let t=(0,a.Tp)(e);if(t.errors.length||!(0,a.jh)(t.contents))throw Error("워크플로 YAML을 읽을 수 없어 읽기 전용 사본을 내보내지 못했습니다.");return t.set("readonly",!0),t.toString()}(ea),r=URL.createObjectURL(new Blob([t],{type:"application/x-yaml"}));try{var e;let t=document.createElement("a");t.href=r,e=ep?eg:null!=B?B:"",t.download=o(e).replace(/\.yaml$/,"-readonly.yaml"),document.body.appendChild(t);try{t.click()}finally{t.remove()}}finally{URL.revokeObjectURL(r)}}catch(e){ew(e instanceof Error?e.message:String(e))}}},disabled:!ea.trim(),title:"현재 초안에 읽기 전용 표시를 붙인 사본을 파일로 내보냅니다",className:"flex items-center gap-1 rounded-md border border-border px-2 py-1 text-[11px] text-text-primary hover:bg-surface-elevated disabled:opacity-50",children:[(0,n.jsx)(w.A,{className:"h-3 w-3"}),"읽기 전용 사본 내보내기"]}),(0,n.jsxs)("button",{type:"button",onClick:e7,disabled:!B&&!ep||e8||eF.isPending,className:"flex items-center gap-1 rounded-md bg-primary px-3 py-1 text-[11px] font-medium text-primary-foreground hover:bg-accent-hover disabled:opacity-50",children:[eF.isPending?(0,n.jsx)(k.A,{className:"h-3 w-3 animate-spin"}):(0,n.jsx)(N.A,{className:"h-3 w-3"}),"Save"]})]})]})}),!Q&&ts&&!ta.rightCollapsed&&(0,n.jsx)("div",{role:"separator","aria-orientation":"vertical","aria-label":"Resize run panel",onPointerDown:e=>td("right",{clientX:e.clientX,pointerId:e.pointerId,target:e.currentTarget}),className:"w-1 shrink-0 cursor-col-resize bg-transparent hover:bg-accent/30"}),ts&&(0,n.jsx)("aside",{style:Q?void 0:{width:ti},className:"flex shrink-0 flex-col overflow-hidden border-l border-border ".concat(Q?"w-full min-w-0":""),children:!Q&&ta.rightCollapsed?(0,n.jsx)("button",{type:"button",onClick:ta.toggleRight,title:"Expand run panel",className:"flex h-full w-full items-center justify-center text-text-tertiary hover:bg-surface-elevated",children:(0,n.jsx)(f.A,{className:"h-4 w-4"})}):er&&er===B&&es===B&&(null==(F=ez.data)?void 0:F.name)===B&&e5&&!ep?(0,n.jsx)(tf,{workflow:er,onClose:()=>en(null)},er):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:"border-b border-border px-3 py-2",children:[(0,n.jsx)("label",{className:"block text-[10px] uppercase tracking-wide text-text-tertiary",children:"Arguments"}),(0,n.jsx)("input",{type:"text",value:ei,onChange:e=>ed(e.target.value),placeholder:"passed as $ARGUMENTS",className:"w-full rounded-md border border-border bg-surface px-2 py-1 text-xs"}),(0,n.jsxs)("button",{type:"button",onClick:te,disabled:!B||ep||eq.isPending,className:"mt-2 flex w-full items-center justify-center gap-1 rounded-md bg-accent px-2 py-1.5 text-[11px] font-medium text-primary-foreground hover:bg-accent-hover disabled:opacity-50",children:[eq.isPending?(0,n.jsx)(k.A,{className:"h-3 w-3 animate-spin"}):(0,n.jsx)(C.A,{className:"h-3 w-3"}),"Run"]})]}),(0,n.jsxs)("div",{className:"flex-1 overflow-y-auto px-3 py-2 text-[11px]",children:[!ec&&(0,n.jsx)("p",{className:"text-text-tertiary",children:"No active run. Press Run to start."}),ec&&eH.data&&(0,n.jsx)(tD,{runId:ec,events:eH.data.events,ok:eH.data.ok,outputs:eH.data.outputs})]})]})})]}),ef&&(0,n.jsx)(em,{onApply:(e,t)=>{eE(!1),eR(!1),en(null),eo(null),ex(!0),ee("canvas"),X(null),ey(null!=t?t:""),el(e),eu(null),eP(null),eA(!1),ew(null)},onOpenAI:()=>{eh(!1),eA(!1),e_(!0)},onClose:()=>eh(!1)}),eB&&!eV.has(eB.runId)&&(0,n.jsx)(tk,{runId:eB.runId,message:eB.message,onDismiss:()=>eQ(e=>{let t=new Set(e);return t.add(eB.runId),t})})]})}function tO(e){let{label:t,entries:r,selected:a,onSelect:l}=e;return 0===r.length?null:(0,n.jsxs)("div",{className:"border-b border-border",children:[(0,n.jsx)("h2",{className:"px-3 py-1.5 text-[10px] font-medium uppercase tracking-wide text-text-tertiary",children:t}),(0,n.jsx)("ul",{children:r.map(e=>(0,n.jsx)("li",{children:(0,n.jsxs)("button",{type:"button",onClick:()=>l(e.name),className:["block w-full px-3 py-1.5 text-left text-xs transition-colors",a===e.name?"bg-accent/15 text-text-primary":"text-text-secondary hover:bg-surface-elevated"].join(" "),title:e.path,children:[(0,n.jsx)("div",{className:"font-medium",children:e.name}),(0,n.jsxs)("div",{className:"truncate text-[10px] text-text-tertiary",children:[e.nodeCount," node",1===e.nodeCount?"":"s"]})]})},e.path))})]})}function tP(e){let{mode:t,onChange:r}=e;return(0,n.jsxs)("div",{className:"flex items-center rounded-md border border-border text-[10px]",children:[(0,n.jsxs)("button",{type:"button",onClick:()=>r("yaml"),className:"flex items-center gap-1 px-2 py-0.5 ".concat("yaml"===t?"bg-surface-elevated text-text-primary":"text-text-tertiary"),children:[(0,n.jsx)(S.A,{className:"h-3 w-3"}),"YAML"]}),(0,n.jsxs)("button",{type:"button",onClick:()=>r("graph"),className:"flex items-center gap-1 px-2 py-0.5 ".concat("graph"===t?"bg-surface-elevated text-text-primary":"text-text-tertiary"),children:[(0,n.jsx)(A.A,{className:"h-3 w-3"}),"Graph"]})]})}function tL(e){let{status:t}=e;return"pending"===t?(0,n.jsxs)("span",{className:"flex items-center gap-1 text-[10px] text-text-tertiary",children:[(0,n.jsx)(k.A,{className:"h-3 w-3 animate-spin"}),"validating"]}):"ok"===t?(0,n.jsxs)("span",{className:"flex items-center gap-1 text-[10px] text-success",children:[(0,n.jsx)(T.A,{className:"h-3 w-3"}),"valid"]}):"error"===t?(0,n.jsxs)("span",{className:"flex items-center gap-1 text-[10px] text-error",children:[(0,n.jsx)(v.A,{className:"h-3 w-3"}),"invalid"]}):null}function tD(e){let{runId:t,events:r,ok:a,outputs:l}=e;return(0,n.jsxs)("div",{className:"space-y-2 font-mono",children:[(0,n.jsxs)("div",{className:"text-[10px] text-text-tertiary",children:["runId: ",t]}),(0,n.jsx)("ul",{className:"space-y-1",children:r.map((e,t)=>{var r,a;return(0,n.jsxs)("li",{className:"flex items-start gap-1.5",children:[(0,n.jsx)("span",{className:"mt-0.5 h-1.5 w-1.5 rounded-full bg-text-tertiary"}),(0,n.jsxs)("span",{className:"break-all",children:[(0,n.jsx)("span",{className:"text-text-tertiary",children:e.type}),e.nodeId&&(0,n.jsx)("span",{className:"ml-1",children:e.nodeId}),e.reason&&(0,n.jsxs)("span",{className:"ml-1 text-text-tertiary",children:["— ",e.reason]}),e.error&&(0,n.jsxs)("span",{className:"ml-1 text-error",children:["— ",e.error]}),(null==(r=e.result)?void 0:r.ok)===!1&&(0,n.jsxs)("span",{className:"ml-1 text-error",children:["— ",null!=(a=e.result.error)?a:"failed"]})]})]},t)})}),!0===a&&(0,n.jsxs)("div",{className:"rounded-md bg-success/10 px-2 py-1 text-[10px] text-success",children:["completed \xb7 ",Object.keys(l).length," node output",1===Object.keys(l).length?"":"s"]}),!1===a&&(0,n.jsx)("div",{className:"rounded-md bg-error/10 px-2 py-1 text-[10px] text-error",children:"failed"}),Object.keys(l).length>0&&(0,n.jsx)(tz,{outputs:l})]})}function tz(e){let{outputs:t}=e;return(0,n.jsxs)("details",{className:"mt-2 rounded-md border border-border bg-surface-elevated",children:[(0,n.jsxs)("summary",{className:"cursor-pointer select-none px-2 py-1 text-[10px] font-semibold text-text-tertiary",children:["Outputs (",Object.keys(t).length,")"]}),(0,n.jsx)("ul",{className:"space-y-1 px-2 pb-2 pt-1 font-mono text-[10px]",children:Object.entries(t).map(e=>{let[t,r]=e;return(0,n.jsxs)("li",{className:"rounded bg-surface px-2 py-1",children:[(0,n.jsx)("div",{className:"text-[9px] uppercase tracking-wide text-text-tertiary",children:t}),(0,n.jsx)("pre",{className:"mt-0.5 max-h-40 overflow-auto whitespace-pre-wrap break-all",children:function(e){if(null==e)return"(no output)";if("string"==typeof e)return e.length>4096?"".concat(e.slice(0,4096),"\n…(truncated \xb7 ").concat(e.length," chars)"):e;try{let t=JSON.stringify(e,null,2);return t.length>4096?"".concat(t.slice(0,4096),"\n…(truncated \xb7 ").concat(t.length," chars)"):t}catch(t){return String(e)}}(r)})]},t)})})]})}},89477:(e,t,r)=>{r.d(t,{OC:()=>s,OR:()=>i,$k:()=>c});var n=r(33583),a=r(91861);function l(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return"string"==typeof e?e:t}function s(e){return"string"==typeof e.prompt?"prompt":"string"==typeof e.bash?"bash":"string"==typeof e.skill?"skill":"string"==typeof e.cft?"cft":void 0!==e.approval&&"object"==typeof e.approval&&null!==e.approval?"approval":void 0!==e.if&&"object"==typeof e.if&&null!==e.if&&"string"==typeof e.if.condition?"if":void 0!==e.switch&&"object"==typeof e.switch&&null!==e.switch&&"string"==typeof e.switch.value&&Array.isArray(e.switch.cases)?"switch":void 0!==e.iteration&&"object"==typeof e.iteration&&null!==e.iteration&&"string"==typeof e.iteration.items&&"string"==typeof e.iteration.body?"iteration":void 0!==e.classify&&"object"==typeof e.classify&&null!==e.classify&&"string"==typeof e.classify.input&&Array.isArray(e.classify.classes)?"classify":void 0!==e.extract&&"object"==typeof e.extract&&null!==e.extract&&"string"==typeof e.extract.input&&"object"==typeof e.extract.schema?"extract":void 0!==e.set&&"object"==typeof e.set&&null!==e.set&&"object"==typeof e.set.fields?"set":void 0!==e.filter&&"object"==typeof e.filter&&null!==e.filter&&"string"==typeof e.filter.items&&"string"==typeof e.filter.condition?"filter":void 0!==e.template&&"object"==typeof e.template&&null!==e.template&&"string"==typeof e.template.template?"template":void 0!==e.http&&"object"==typeof e.http&&null!==e.http&&"string"==typeof e.http.url?"http":void 0!==e.scheduleTrigger&&"object"==typeof e.scheduleTrigger&&null!==e.scheduleTrigger&&"string"==typeof e.scheduleTrigger.type?"scheduleTrigger":void 0!==e.webhookTrigger&&"object"==typeof e.webhookTrigger&&null!==e.webhookTrigger&&"string"==typeof e.webhookTrigger.path?"webhookTrigger":void 0!==e.discordTrigger&&"object"==typeof e.discordTrigger&&null!==e.discordTrigger&&"string"==typeof e.discordTrigger.kind?"discordTrigger":void 0!==e.telegramTrigger&&"object"==typeof e.telegramTrigger&&null!==e.telegramTrigger&&"string"==typeof e.telegramTrigger.kind?"telegramTrigger":void 0!==e.manualTrigger&&"object"==typeof e.manualTrigger&&null!==e.manualTrigger?"manualTrigger":void 0!==e.chatTrigger&&"object"==typeof e.chatTrigger&&null!==e.chatTrigger&&"string"==typeof e.chatTrigger.path?"chatTrigger":"unknown"}function o(e){let t=e.kind;return"string"==typeof t&&/^[a-z0-9-]+:[a-z0-9-]+$/.test(t)?t:null}function i(e,t){var r;return"unknown"===t&&null!=(r=o(e))?r:t}function d(e){var t;return e?(null!=(t=e.split("\n").find(e=>e.trim().length>0))?t:"").trim().slice(0,64):""}function c(e,t){let{nodes:r,edges:c}=function(e){var t,r,n,c,u,p,x,m,f,h,g,b;let y=[],v=[],j=new Set;for(let w of null!=(t=e.nodes)?t:[]){let e,t;if(!w||"string"!=typeof w.id||0===w.id.length||j.has(w.id))continue;j.add(w.id);let k=s(w),N="";switch(k){case"prompt":N=d(w.prompt);break;case"bash":N=d(w.bash);break;case"skill":N=String(null!=(r=w.skill)?r:"").slice(0,64);break;case"cft":N=String(null!=(n=w.cft)?n:"").slice(0,64);break;case"approval":{let t=w.approval;N=d(null==t?void 0:t.message),"string"==typeof(null==t?void 0:t.delivery)&&t.delivery.length>0&&(e=t.delivery);break}case"if":{let e=null==(c=w.if)?void 0:c.condition;N="string"==typeof e?e.slice(0,64):"";break}case"switch":{let e=w.switch,t=Array.isArray(null==e?void 0:e.cases)?" → ".concat(e.cases.length," case").concat(1===e.cases.length?"":"s"):"";N="".concat((null!=(u=null==e?void 0:e.value)?u:"").slice(0,40)).concat(t);break}case"iteration":{let e=w.iteration;N="over ".concat((null!=(p=null==e?void 0:e.items)?p:"").slice(0,32));break}case"classify":{let e=w.classify,t=Array.isArray(null==e?void 0:e.classes)?e.classes.length:0;N="".concat(t," class").concat(1===t?"":"es"," from ").concat((null!=(x=null==e?void 0:e.input)?x:"").slice(0,24));break}case"extract":{let e=w.extract,t=(null==e?void 0:e.schema)?Object.keys(e.schema).length:0;N="".concat(t," field").concat(1===t?"":"s"," from ").concat((null!=(m=null==e?void 0:e.input)?m:"").slice(0,24));break}case"set":{let e=w.set,t=(null==e?void 0:e.fields)?Object.keys(e.fields).length:0;N="set ".concat(t," field").concat(1===t?"":"s");break}case"filter":{let e=w.filter;N="filter ".concat((null!=(f=null==e?void 0:e.items)?f:"").slice(0,28)," on ").concat((null!=(h=null==e?void 0:e.condition)?h:"").slice(0,24));break}case"template":{let e=w.template,t=d(null==e?void 0:e.template);N="tpl: ".concat(t.slice(0,56));break}case"http":case"scheduleTrigger":case"webhookTrigger":case"discordTrigger":case"telegramTrigger":case"manualTrigger":case"chatTrigger":N=null!=(g=function(e,t){switch(e){case"scheduleTrigger":return function(e){if(!e)return"⏰ schedule";let t=e.type;if("cron"===t){let t=l(e.cron),r=l(e.timezone),n=(0,a.h)(t),s=!1===e.enabled?" \xb7 disabled":"",o="number"==typeof e.max_runs?" \xb7 max ".concat(e.max_runs," runs"):"";return"⏰ ".concat(n.text).concat(r?" ".concat(r):"").concat(o).concat(s)}if("interval"===t){let t="number"==typeof e.interval?e.interval:0,r=!1===e.enabled?" \xb7 disabled":"";if(t>=36e5&&t%36e5==0){let e=t/36e5;return"⏰ Every ".concat(e," hour").concat(1===e?"":"s").concat(r)}if(t>=6e4&&t%6e4==0){let e=t/6e4;return"⏰ Every ".concat(e," minute").concat(1===e?"":"s").concat(r)}let n=Math.max(1,Math.round(t/1e3));return"⏰ Every ".concat(n,"s").concat(r)}return"⏰ schedule"}(t.scheduleTrigger);case"webhookTrigger":return function(e){if(!e)return"\uD83D\uDD17 webhook";let t=l(e.method,"POST"),r=l(e.path),n=e.auth&&"object"==typeof e.auth?e.auth:null,a=n?" \xb7 ".concat(l(n.type)):"";return"\uD83D\uDD17 ".concat(t," ").concat(r).concat(a)}(t.webhookTrigger);case"http":return function(e){if(!e)return"\uD83C\uDF10 http";let t=l(e.method,"GET"),r=l(e.url),n="number"==typeof e.timeout?" \xb7 ".concat(Math.round(e.timeout/1e3),"s"):"";return"\uD83C\uDF10 ".concat(t," ").concat(r.slice(0,48)).concat(n)}(t.http);case"discordTrigger":return function(e){if(!e)return"\uD83D\uDCAC discord";let t=l(e.kind,"message"),r=[],n=l(e.channel);return n&&r.push("#".concat(n)),l(e.user)&&r.push("@".concat(l(e.user))),l(e.pattern)&&r.push("/".concat(l(e.pattern),"/")),r.push(t),"\uD83D\uDCAC ".concat(r.join(" \xb7 "))}(t.discordTrigger);case"telegramTrigger":var r=t.telegramTrigger;if(!r)return"✈️ telegram";let n=l(r.kind,"message"),s=[];return l(r.chat)&&s.push("@".concat(l(r.chat))),"command"===n&&l(r.command)&&s.push("/".concat(l(r.command))),l(r.user)&&s.push("from:".concat(l(r.user))),l(r.pattern)&&s.push("/".concat(l(r.pattern),"/")),s.push(n),"✈️ ".concat(s.join(" \xb7 "));case"manualTrigger":var o=t.manualTrigger;let i=l(null==o?void 0:o.description);return i?"▶ ".concat(i):"▶ Manual \xb7 explicit run";case"chatTrigger":return function(e){if(!e)return"\uD83D\uDCAD Chat";let t=l(e.path,"/chat"),r="per-session"===e.sessionMode?" \xb7 per-session":"",n=!0===e.streaming?" \xb7 streaming":"";return"\uD83D\uDCAD Chat: ".concat(t).concat(r).concat(n)}(t.chatTrigger);default:return null}}(k,w))?g:"";break;default:N=""}if("unknown"===k&&o(w)){let e=w.inputs,t=e&&"object"==typeof e?Object.values(e).find(e=>"string"==typeof e&&""!==e.trim()):void 0;N=t?d(t):""}if("if"===k)t=["then","else"];else if("switch"===k){let e=null==(b=w.switch)?void 0:b.cases;Array.isArray(e)&&(t=[...e.filter(e=>"string"==typeof e&&e.length>0),"default"])}for(let r of(y.push({id:w.id,variant:k,badge:i(w,k),label:w.id,preview:N,hasWhen:"string"==typeof w.when&&""!==w.when.trim(),..."string"==typeof w.trigger_rule?{triggerRule:w.trigger_rule}:{},hasToolPolicy:Array.isArray(w.allowed_tools)||Array.isArray(w.denied_tools),...void 0!==e?{approvalDelivery:e}:{},...t?{branches:t}:{}}),Array.isArray(w.depends_on)?w.depends_on:[]))"string"==typeof r&&0!==r.length&&v.push({id:"".concat(r,"->").concat(w.id),source:r,target:w.id})}return{nodes:y,edges:v}}(e),u=function(e){var t,r,a;let l=null!=(t=e.direction)?t:"LR",s=new n.Ay.graphlib.Graph;for(let t of(s.setDefaultEdgeLabel(()=>({})),s.setGraph({rankdir:l,ranksep:null!=(r=e.rankSep)?r:"LR"===l?100:80,nodesep:null!=(a=e.nodeSep)?a:"LR"===l?40:60,marginx:20,marginy:20}),e.nodes))s.setNode(t.id,{width:200,height:64});for(let t of e.edges)s.setEdge(t.source,t.target);n.Ay.layout(s);let o=e.nodes.map(e=>{var t,r,n,a;let l=s.node(e.id),o=(null!=(t=null==l?void 0:l.x)?t:0)-100,i=(null!=(r=null==l?void 0:l.y)?r:0)-32;return{...e,position:{x:o,y:i},width:null!=(n=null==l?void 0:l.width)?n:200,height:null!=(a=null==l?void 0:l.height)?a:64}}),i=0,d=0;for(let e of o)i=Math.max(i,e.position.x+e.width),d=Math.max(d,e.position.y+e.height);return{nodes:o,edges:e.edges,bounds:{width:i,height:d}}}({nodes:r,edges:c,...(null==t?void 0:t.direction)?{direction:t.direction}:{}}),p=function(e){let t=e._meta;if(!t||"object"!=typeof t)return{};let r=t.layout;if(!r||"object"!=typeof r)return{};let n={};for(let[e,t]of Object.entries(r))t&&"object"==typeof t&&"number"==typeof t.x&&"number"==typeof t.y&&(n[e]={x:t.x,y:t.y});return n}(e);if(0===Object.keys(p).length)return u;let x=0,m=0;return{nodes:u.nodes.map(e=>{let t=p[e.id],r=null!=t?t:e.position,n={...e,position:r};return x=Math.max(x,r.x+e.width),m=Math.max(m,r.y+e.height),n}),edges:u.edges,bounds:{width:x,height:m}}}},91861:(e,t,r)=>{r.d(t,{Y:()=>p,h:()=>u});let n=/^\*\/(\d+) \* \* \* \*$/,a=/^0 \*\/(\d+) \* \* \*$/,l=/^(\d+) (\d+) \* \* \*$/,s=/^(\d+) (\d+) \* \* 1-5$/,o=/^(\d+) (\d+) \* \* ([0-6])$/,i=/^(\d+) (\d+) (\d+) \* \*$/,d=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];function c(e){return e.toString().padStart(2,"0")}function u(e){let t=e.trim();if(!t)return{text:"(empty expression)",matched:!1};let r=n.exec(t);if(r){let e=Number(r[1]);return{text:"Every ".concat(e," minute").concat(1===e?"":"s"),matched:!0}}let u=a.exec(t);if(u){let e=Number(u[1]);return{text:"Every ".concat(e," hour").concat(1===e?"":"s"),matched:!0}}let p=s.exec(t);if(p)return{text:"Every weekday at ".concat(c(Number(p[2])),":").concat(c(Number(p[1]))),matched:!0};let x=o.exec(t);if(x){let e=d[Number(x[3])];return{text:"Every ".concat(e," at ").concat(c(Number(x[2])),":").concat(c(Number(x[1]))),matched:!0}}let m=l.exec(t);if(m)return{text:"Every day at ".concat(c(Number(m[2])),":").concat(c(Number(m[1]))),matched:!0};let f=i.exec(t);return f?{text:"Day ".concat(Number(f[3])," of every month at ").concat(c(Number(f[2])),":").concat(c(Number(f[1]))),matched:!0}:{text:"Custom: ".concat(t),matched:!1}}let p=[{id:"every-5-min",label:"Every 5 min",expression:"*/5 * * * *"},{id:"every-hour",label:"Hourly",expression:"0 */1 * * *"},{id:"daily-9am",label:"Daily 9am",expression:"0 9 * * *"},{id:"weekdays-9am",label:"Weekdays 9am",expression:"0 9 * * 1-5"},{id:"weekly-mon-9am",label:"Mon 9am",expression:"0 9 * * 1"},{id:"monthly-1st-9am",label:"1st 9am",expression:"0 9 1 * *"}]}}]);
|