elanous 0.2.6 → 0.2.7

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.
Files changed (450) hide show
  1. package/.env.example +10 -7
  2. package/README.md +4 -0
  3. package/apps/pwa/out/404/index.html +1 -1
  4. package/apps/pwa/out/404.html +1 -1
  5. package/apps/pwa/out/_next/static/chunks/1105-c473ed46272fba79.js +1 -0
  6. package/apps/pwa/out/_next/static/chunks/1201-09613bce624467c0.js +1 -0
  7. package/apps/pwa/out/_next/static/chunks/1377-1efeffbbac0963ff.js +1 -0
  8. package/apps/pwa/out/_next/static/chunks/1470.98a6ab61ccb4131c.js +1 -0
  9. package/apps/pwa/out/_next/static/chunks/216-5acd01cbde4acda7.js +1 -0
  10. package/apps/pwa/out/_next/static/chunks/2330-c2f07246c8788af1.js +1 -0
  11. package/apps/pwa/out/_next/static/chunks/{3995-bee512a7063036ce.js → 2375-cb6debea56cce4fb.js} +1 -1
  12. package/apps/pwa/out/_next/static/chunks/2415.ed6428ff334c7ce2.js +1 -0
  13. package/apps/pwa/out/_next/static/chunks/2929-617f1e66a55be184.js +1 -0
  14. package/apps/pwa/out/_next/static/chunks/2977-e38442e86289f1d3.js +1 -0
  15. package/apps/pwa/out/_next/static/chunks/2982-2a2df543be3d2e5a.js +25 -0
  16. package/apps/pwa/out/_next/static/chunks/{8d0d9faf-97887ff99713b84e.js → 2ea96958-e8c7e112de50b067.js} +1 -1
  17. package/apps/pwa/out/_next/static/chunks/{5329.8b7e4bca684b6eec.js → 3403.4bc97b4066945a94.js} +2 -2
  18. package/apps/pwa/out/_next/static/chunks/3441-a1dd4acfeda14488.js +1 -0
  19. package/apps/pwa/out/_next/static/chunks/371-4ad6af55dad02ced.js +1 -0
  20. package/apps/pwa/out/_next/static/chunks/4114-3e63117452378807.js +1 -0
  21. package/apps/pwa/out/_next/static/chunks/{7633.0654fe6ea259c1ee.js → 4323.c5dfb6f503304775.js} +1 -1
  22. package/apps/pwa/out/_next/static/chunks/4836-2eba6079f31b88d4.js +1 -0
  23. package/apps/pwa/out/_next/static/chunks/{2984-977cfa339fcd65a5.js → 5080-1613752891fcadb4.js} +3 -3
  24. package/apps/pwa/out/_next/static/chunks/5609-012bb3557211f07e.js +1 -0
  25. package/apps/pwa/out/_next/static/chunks/{763-7d0e1913b5074e98.js → 5791-bb82743fa6299562.js} +1 -1
  26. package/apps/pwa/out/_next/static/chunks/{4240-7153881b0b377306.js → 6062-73e68343a9814f6a.js} +1 -1
  27. package/apps/pwa/out/_next/static/chunks/6090-85a3f05f954e5697.js +1 -0
  28. package/apps/pwa/out/_next/static/chunks/6284-69db415193d5f8bd.js +1 -0
  29. package/apps/pwa/out/_next/static/chunks/6320-baac91d68843a9a6.js +1 -0
  30. package/apps/pwa/out/_next/static/chunks/6416-505ba707cacafbba.js +1 -0
  31. package/apps/pwa/out/_next/static/chunks/6725-68ab7cc0b1faf00d.js +1 -0
  32. package/apps/pwa/out/_next/static/chunks/6998-a654fe5c58271600.js +1 -0
  33. package/apps/pwa/out/_next/static/chunks/7647.2fcd30d894d5ee30.js +1 -0
  34. package/apps/pwa/out/_next/static/chunks/7673-2eda1507d38dadb8.js +1 -0
  35. package/apps/pwa/out/_next/static/chunks/7990-e12efba616f46e03.js +1 -0
  36. package/apps/pwa/out/_next/static/chunks/{91ff6dda-3b33d42d20657429.js → 8046cadf-211ca3c0e00f2b72.js} +1 -1
  37. package/apps/pwa/out/_next/static/chunks/8067-f74bf14d67ad98f1.js +1 -0
  38. package/apps/pwa/out/_next/static/chunks/8142-744998d65d7bb17e.js +1 -0
  39. package/apps/pwa/out/_next/static/chunks/8519-f6b5d8a5833a7603.js +1 -0
  40. package/apps/pwa/out/_next/static/chunks/8619-4365e03a2862830f.js +1 -0
  41. package/apps/pwa/out/_next/static/chunks/8894-e92491a164192cc1.js +1 -0
  42. package/apps/pwa/out/_next/static/chunks/920-f7dceb78f1c585ef.js +1 -0
  43. package/apps/pwa/out/_next/static/chunks/9454-a3e0953307216c58.js +1 -0
  44. package/apps/pwa/out/_next/static/chunks/9651-3cd291a6fa1370d2.js +1 -0
  45. package/apps/pwa/out/_next/static/chunks/9740-67051141115ce775.js +1 -0
  46. package/apps/pwa/out/_next/static/chunks/9804-64c02c3c127d5014.js +1 -0
  47. package/apps/pwa/out/_next/static/chunks/ae787e4c-f2998de7f1ba72a4.js +1 -0
  48. package/apps/pwa/out/_next/static/chunks/app/_not-found/page-859cea1570b6227a.js +1 -0
  49. package/apps/pwa/out/_next/static/chunks/app/approvals/page-d5ebde04844689e6.js +1 -0
  50. package/apps/pwa/out/_next/static/chunks/app/autopilot/page-10ed24f413ed66e9.js +1 -0
  51. package/apps/pwa/out/_next/static/chunks/app/board/page-211810b6c93ab66a.js +1 -0
  52. package/apps/pwa/out/_next/static/chunks/app/botlab/page-624f7a2f89b60c8f.js +1 -0
  53. package/apps/pwa/out/_next/static/chunks/app/bots/page-5a5fb385a4df0ffe.js +1 -0
  54. package/apps/pwa/out/_next/static/chunks/app/chat/page-80497e93a878ddc5.js +1 -0
  55. package/apps/pwa/out/_next/static/chunks/app/consult/page-7457f52683562161.js +1 -0
  56. package/apps/pwa/out/_next/static/chunks/app/control/page-cee86394de407aa6.js +1 -0
  57. package/apps/pwa/out/_next/static/chunks/app/design-check/page-4ff8edab44196b8c.js +1 -0
  58. package/apps/pwa/out/_next/static/chunks/app/editor/page-92e4f44428d5e290.js +1 -0
  59. package/apps/pwa/out/_next/static/chunks/app/exec/page-b7dcf5d48a854b76.js +1 -0
  60. package/apps/pwa/out/_next/static/chunks/app/field/page-51480757e7d68b92.js +1 -0
  61. package/apps/pwa/out/_next/static/chunks/app/healthz/route-859cea1570b6227a.js +1 -0
  62. package/apps/pwa/out/_next/static/chunks/app/intake/page-2a05dfe80c8bdf16.js +1 -0
  63. package/apps/pwa/out/_next/static/chunks/app/layout-d9979633aa82f8e6.js +1 -0
  64. package/apps/pwa/out/_next/static/chunks/app/live/page-30533117beb53625.js +1 -0
  65. package/apps/pwa/out/_next/static/chunks/app/market/page-f7857826c2f97ad7.js +1 -0
  66. package/apps/pwa/out/_next/static/chunks/app/missions/[id]/page-07267f1391b96aba.js +1 -0
  67. package/apps/pwa/out/_next/static/chunks/app/morning/page-55d50e9b0006a91d.js +1 -0
  68. package/apps/pwa/out/_next/static/chunks/app/not-found-9699b1786be6171d.js +1 -0
  69. package/apps/pwa/out/_next/static/chunks/app/observatory/page-43dd772aee8af75f.js +1 -0
  70. package/apps/pwa/out/_next/static/chunks/app/page-a7e37af7d0399cb8.js +1 -0
  71. package/apps/pwa/out/_next/static/chunks/app/reflection/page-973ab7af59c718b7.js +1 -0
  72. package/apps/pwa/out/_next/static/chunks/app/scheduler/page-a9f8d3865b91e436.js +1 -0
  73. package/apps/pwa/out/_next/static/chunks/app/sessions/page-15e5a15db84c56aa.js +1 -0
  74. package/apps/pwa/out/_next/static/chunks/app/settings/devices/page-a2e572e4511f2a16.js +1 -0
  75. package/apps/pwa/out/_next/static/chunks/app/settings/page-dd107bf1c7d52a90.js +1 -0
  76. package/apps/pwa/out/_next/static/chunks/app/setup/done/page-d42b99cdfb9f27c6.js +1 -0
  77. package/apps/pwa/out/_next/static/chunks/app/setup/layout-859cea1570b6227a.js +1 -0
  78. package/apps/pwa/out/_next/static/chunks/app/setup/page-2764ff40dad5a995.js +1 -0
  79. package/apps/pwa/out/_next/static/chunks/app/share/page-c5f1152db116ff96.js +1 -0
  80. package/apps/pwa/out/_next/static/chunks/app/showroom/page-f933bca81ea38a6f.js +1 -0
  81. package/apps/pwa/out/_next/static/chunks/app/tasks/page-c1c95739c0bff3b8.js +1 -0
  82. package/apps/pwa/out/_next/static/chunks/app/term/page-a7aaffcf771662d8.js +1 -0
  83. package/apps/pwa/out/_next/static/chunks/app/trace/page-71d18eec33b9c667.js +1 -0
  84. package/apps/pwa/out/_next/static/chunks/app/vault/page-56adbe1a1f1379bd.js +1 -0
  85. package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-2c4e59079ee357ac.js +1 -0
  86. package/apps/pwa/out/_next/static/chunks/app/workflows/page-a81f113f3ef89d72.js +1 -0
  87. package/apps/pwa/out/_next/static/chunks/app/workspace/page-5d422f38c052967e.js +1 -0
  88. package/apps/pwa/out/_next/static/chunks/app/worktrees/page-fc27b00e20733146.js +1 -0
  89. package/apps/pwa/out/_next/static/chunks/framework-ea806bb57f2b8923.js +1 -0
  90. package/apps/pwa/out/_next/static/chunks/main-8d2302399c2c8f87.js +1 -0
  91. package/apps/pwa/out/_next/static/chunks/main-app-6870f30ea99f8346.js +1 -0
  92. package/apps/pwa/out/_next/static/chunks/pages/_app-b10928c60f0b8488.js +1 -0
  93. package/apps/pwa/out/_next/static/chunks/pages/_error-689039227d443fab.js +1 -0
  94. package/apps/pwa/out/_next/static/chunks/{webpack-37b8bf78a3c6eec5.js → webpack-e5bea36f183b25e6.js} +1 -1
  95. package/apps/pwa/out/_next/static/css/f537bdb19c69306a.css +1 -0
  96. package/apps/pwa/out/_next/static/keajW7DDyghEs1y8oJe6T/_buildManifest.js +1 -0
  97. package/apps/pwa/out/approvals/index.html +1 -1
  98. package/apps/pwa/out/approvals/index.txt +22 -22
  99. package/apps/pwa/out/autopilot/index.html +1 -1
  100. package/apps/pwa/out/autopilot/index.txt +22 -22
  101. package/apps/pwa/out/board/index.html +1 -1
  102. package/apps/pwa/out/board/index.txt +22 -22
  103. package/apps/pwa/out/botlab/index.html +1 -1
  104. package/apps/pwa/out/botlab/index.txt +21 -21
  105. package/apps/pwa/out/bots/index.html +1 -1
  106. package/apps/pwa/out/bots/index.txt +21 -21
  107. package/apps/pwa/out/chat/index.html +1 -1
  108. package/apps/pwa/out/chat/index.txt +21 -21
  109. package/apps/pwa/out/consult/index.html +1 -0
  110. package/apps/pwa/out/consult/index.txt +32 -0
  111. package/apps/pwa/out/control/index.html +1 -1
  112. package/apps/pwa/out/control/index.txt +22 -22
  113. package/apps/pwa/out/design-check/index.html +1 -1
  114. package/apps/pwa/out/design-check/index.txt +22 -22
  115. package/apps/pwa/out/editor/index.html +1 -1
  116. package/apps/pwa/out/editor/index.txt +22 -22
  117. package/apps/pwa/out/exec/index.html +1 -0
  118. package/apps/pwa/out/exec/index.txt +32 -0
  119. package/apps/pwa/out/field/index.html +1 -0
  120. package/apps/pwa/out/field/index.txt +32 -0
  121. package/apps/pwa/out/healthz +1 -1
  122. package/apps/pwa/out/index.html +1 -1
  123. package/apps/pwa/out/index.txt +21 -21
  124. package/apps/pwa/out/intake/index.html +1 -1
  125. package/apps/pwa/out/intake/index.txt +22 -22
  126. package/apps/pwa/out/live/index.html +1 -1
  127. package/apps/pwa/out/live/index.txt +22 -22
  128. package/apps/pwa/out/market/index.html +1 -1
  129. package/apps/pwa/out/market/index.txt +21 -21
  130. package/apps/pwa/out/missions/placeholder/index.html +1 -1
  131. package/apps/pwa/out/missions/placeholder/index.txt +21 -21
  132. package/apps/pwa/out/morning/index.html +1 -1
  133. package/apps/pwa/out/morning/index.txt +22 -22
  134. package/apps/pwa/out/observatory/index.html +1 -1
  135. package/apps/pwa/out/observatory/index.txt +22 -22
  136. package/apps/pwa/out/reflection/index.html +1 -1
  137. package/apps/pwa/out/reflection/index.txt +22 -22
  138. package/apps/pwa/out/scheduler/index.html +1 -1
  139. package/apps/pwa/out/scheduler/index.txt +22 -22
  140. package/apps/pwa/out/sessions/index.html +1 -1
  141. package/apps/pwa/out/sessions/index.txt +21 -21
  142. package/apps/pwa/out/settings/devices/index.html +1 -1
  143. package/apps/pwa/out/settings/devices/index.txt +22 -22
  144. package/apps/pwa/out/settings/index.html +1 -1
  145. package/apps/pwa/out/settings/index.txt +22 -22
  146. package/apps/pwa/out/setup/done/index.html +1 -1
  147. package/apps/pwa/out/setup/done/index.txt +22 -22
  148. package/apps/pwa/out/setup/index.html +1 -1
  149. package/apps/pwa/out/setup/index.txt +22 -22
  150. package/apps/pwa/out/share/index.html +1 -1
  151. package/apps/pwa/out/share/index.txt +22 -22
  152. package/apps/pwa/out/showroom/index.html +1 -1
  153. package/apps/pwa/out/showroom/index.txt +21 -21
  154. package/apps/pwa/out/tasks/index.html +1 -1
  155. package/apps/pwa/out/tasks/index.txt +22 -22
  156. package/apps/pwa/out/term/index.html +1 -1
  157. package/apps/pwa/out/term/index.txt +22 -22
  158. package/apps/pwa/out/trace/index.html +1 -1
  159. package/apps/pwa/out/trace/index.txt +22 -22
  160. package/apps/pwa/out/vault/index.html +1 -1
  161. package/apps/pwa/out/vault/index.txt +22 -22
  162. package/apps/pwa/out/workflows/chat-ui/index.html +1 -1
  163. package/apps/pwa/out/workflows/chat-ui/index.txt +22 -22
  164. package/apps/pwa/out/workflows/index.html +1 -1
  165. package/apps/pwa/out/workflows/index.txt +22 -22
  166. package/apps/pwa/out/workspace/index.html +1 -1
  167. package/apps/pwa/out/workspace/index.txt +22 -22
  168. package/apps/pwa/out/worktrees/index.html +1 -1
  169. package/apps/pwa/out/worktrees/index.txt +22 -22
  170. package/bin/elanous.cjs +107 -0
  171. package/graphs/field/field-feed.yaml +24 -0
  172. package/graphs/field/recipes.yaml +12 -0
  173. package/graphs/landing/landing-heal.yaml +3 -1
  174. package/graphs/landing/recipes.yaml +3 -0
  175. package/graphs/release/recipes.yaml +10 -0
  176. package/graphs/release/release-loop.yaml +10 -3
  177. package/package.json +5 -5
  178. package/plugins/card-followup/README.md +13 -4
  179. package/plugins/card-followup/graphs/card-followup.yaml +3 -1
  180. package/plugins/card-followup/graphs/recipes.yaml +5 -1
  181. package/plugins/card-followup/graphs/run-step.ts +122 -18
  182. package/plugins/card-followup/graphs/sales-strategy.ts +173 -0
  183. package/plugins/card-followup/plugin.json +1 -1
  184. package/plugins/doc-draft/README.md +13 -0
  185. package/plugins/doc-draft/examples/brief-sample.json +8 -0
  186. package/plugins/doc-draft/graphs/doc-draft.yaml +14 -0
  187. package/plugins/doc-draft/graphs/recipes.yaml +9 -0
  188. package/plugins/doc-draft/graphs/run-step.ts +113 -0
  189. package/plugins/doc-draft/plugin.json +24 -0
  190. package/plugins/geo-check/README.md +3 -1
  191. package/plugins/geo-check/graphs/run-step.ts +24 -3
  192. package/plugins/geo-check/plugin.json +1 -1
  193. package/plugins/job-coach/.codex-plugin/plugin.json +1 -1
  194. package/plugins/job-coach/README.md +1 -1
  195. package/plugins/job-coach/graphs/run-step.ts +2 -2
  196. package/plugins/job-coach/plugin.json +1 -1
  197. package/plugins/job-coach/plugin.ts +1 -1
  198. package/scripts/affinity/endcard.sh +3 -2
  199. package/scripts/affinity/reframe.sh +3 -1
  200. package/scripts/ci-public-export-leak-gate.ts +48 -0
  201. package/scripts/codex-quota-alert.ts +122 -258
  202. package/scripts/coord-tracks.json +4 -4
  203. package/scripts/field-feed/deliver-node.ts +52 -0
  204. package/scripts/field-feed/feed-node.ts +67 -0
  205. package/scripts/field-feed/lib.ts +162 -0
  206. package/scripts/field-feed/reel-node.ts +24 -0
  207. package/scripts/field-feed/start.ts +62 -0
  208. package/scripts/fixtures/vflow-sample.ndjson +6 -0
  209. package/scripts/install.sh +92 -13
  210. package/scripts/landing-heal/clean-checkout.ts +114 -0
  211. package/scripts/landing-heal/run-mission.ts +38 -3
  212. package/scripts/lib/pwa-scenarios/scenarios.ts +2 -1
  213. package/scripts/public-export.ts +8 -4
  214. package/scripts/release-loop/baseline-from-logs.ts +92 -0
  215. package/scripts/release-loop/env-known-failures.ts +31 -0
  216. package/scripts/release-loop/gate-node.ts +81 -19
  217. package/scripts/release-loop/known-issues-node.ts +159 -0
  218. package/scripts/release-loop/npm-publish-node.ts +118 -0
  219. package/scripts/release-loop/ops-upgrade-node.ts +87 -0
  220. package/scripts/release-loop/release-readiness.ts +58 -0
  221. package/scripts/release-loop/unattended-release.ts +93 -0
  222. package/scripts/ux/measure-first-text.ts +102 -0
  223. package/scripts/vflow-collect.ts +20 -7
  224. package/scripts/vflow-search.ts +73 -0
  225. package/scripts/video-free-line-test-walker.ts +36 -0
  226. package/scripts/video-pipeline.ts +2 -2
  227. package/skills/explainer-video/SKILL.md +12 -9
  228. package/skills/explainer-video/engine/build.mjs +1 -1
  229. package/skills/explainer-video/engine/reel.mjs +138 -31
  230. package/skills/explainer-video/engine/reel.sh +2 -1
  231. package/skills/explainer-video/examples/elanous-0.2.5/script.json +1 -1
  232. package/skills/grill-me/SKILL.md +1 -1
  233. package/skills/omni-digest/docs/diagrams/noncode-terminal-promotion-path-2026-08-13.mmd +1 -1
  234. package/src/a2a/server.ts +2 -0
  235. package/src/acp/elanous-aware-peers.ts +30 -0
  236. package/src/acp/server.ts +91 -15
  237. package/src/agent/monad-agent-turn.ts +25 -6
  238. package/src/agent/shared-app-tools.ts +5 -3
  239. package/src/agent-substrate/review-intent.ts +6 -2
  240. package/src/agent-substrate/shard-boundary-intent.ts +70 -0
  241. package/src/auth/github-app-token.ts +4 -1
  242. package/src/autopilot/track-agent-shadow.ts +151 -0
  243. package/src/autopilot/track-agent.ts +23 -3
  244. package/src/boot/acp-server-help.ts +16 -0
  245. package/src/boot/daemon-prompt-turn.ts +31 -10
  246. package/src/boot/daemon-tools/index.ts +7 -1
  247. package/src/budget/codex-credit-pace.ts +84 -0
  248. package/src/budget/codex-credit-plan.ts +154 -0
  249. package/src/budget/codex-reset-credit-state.ts +2 -0
  250. package/src/chat/chat-cli.ts +4 -1
  251. package/src/chat/short-question.ts +40 -0
  252. package/src/cli/agent-cli.ts +24 -15
  253. package/src/cli/ask-bare.ts +42 -0
  254. package/src/cli/cli-user-error.ts +25 -0
  255. package/src/cli/codex-credit-plan-view.ts +25 -0
  256. package/src/cli/dependence-gauge.ts +237 -0
  257. package/src/cli/doctor-cli.ts +5 -0
  258. package/src/cli/doctor-modes.ts +48 -0
  259. package/src/cli/intake-cli.ts +12 -2
  260. package/src/cli/intake-source-cli.ts +58 -0
  261. package/src/cli/machine-cli.ts +23 -0
  262. package/src/cli/msg-cli.ts +137 -0
  263. package/src/cli/plugin-cli.ts +25 -0
  264. package/src/cli/pr-cli.ts +36 -0
  265. package/src/cli/provider-cli.ts +5 -0
  266. package/src/cli/release-cli.ts +42 -1
  267. package/src/cli/release-run-if-ready.ts +48 -0
  268. package/src/cli/setup-cli.ts +27 -6
  269. package/src/cli/setup-recommend.ts +8 -0
  270. package/src/cli/usage-cli.ts +11 -1
  271. package/src/codex/setup.ts +27 -8
  272. package/src/dashboard/index.ts +1 -1
  273. package/src/discord.ts +56 -6
  274. package/src/domains/core-tools.ts +37 -14
  275. package/src/domains/outbound-alert.ts +50 -11
  276. package/src/exec-requests/planner.ts +140 -0
  277. package/src/exec-requests/runner.ts +338 -0
  278. package/src/exec-requests/store.ts +76 -0
  279. package/src/field/field-media.ts +8 -3
  280. package/src/field/field-reel.ts +196 -0
  281. package/src/grok/credential.ts +7 -5
  282. package/src/harness/aside-run-status.ts +33 -0
  283. package/src/harness/browser-verify.ts +48 -17
  284. package/src/harness/harness-cli-command.ts +25 -3
  285. package/src/harness/image-load-state.ts +21 -0
  286. package/src/harness/process-garbage.ts +45 -0
  287. package/src/index.ts +86 -14
  288. package/src/instance/leader.ts +13 -1
  289. package/src/intake-plane/collect-github.ts +5 -3
  290. package/src/intake-plane/collect-telegram-saved.ts +15 -3
  291. package/src/intake-plane/discord-seat-work.ts +56 -0
  292. package/src/intake-plane/intake-sources.ts +202 -0
  293. package/src/intake-plane/items.ts +28 -12
  294. package/src/intake-plane/seat-doc-route.ts +207 -0
  295. package/src/intake-plane/submit-intake-work.ts +9 -1
  296. package/src/intake-plane/telegram-seat-work.ts +72 -0
  297. package/src/llm/model-defaults.ts +24 -1
  298. package/src/llm.ts +5 -4
  299. package/src/machines/machine-ledger.ts +127 -0
  300. package/src/market/pack-internal-refs.ts +28 -0
  301. package/src/market/publish.ts +31 -4
  302. package/src/maturity/feature-maturity.ts +65 -0
  303. package/src/model-tier/turn-tier.ts +24 -0
  304. package/src/msg/msg-store.ts +149 -0
  305. package/src/native-tool-catalog.ts +2 -1
  306. package/src/nexus/api/chat-fast-path-config.ts +28 -0
  307. package/src/nexus/api/consult-requests.ts +117 -0
  308. package/src/nexus/api/discord-trigger-bot.ts +3 -0
  309. package/src/nexus/api/exec-requests.ts +51 -0
  310. package/src/nexus/api/field-uploads.ts +40 -3
  311. package/src/nexus/api/graph-approvals-feed.ts +140 -0
  312. package/src/nexus/api/graph-approvals.ts +71 -4
  313. package/src/nexus/api/http-server.ts +61 -7
  314. package/src/nexus/api/seat-requests.ts +254 -0
  315. package/src/nexus/api/trace-run-scan.ts +37 -0
  316. package/src/nexus/api/trace.ts +19 -3
  317. package/src/nexus/index.ts +3 -0
  318. package/src/nexus/setup-status.ts +4 -5
  319. package/src/notify/llm-budget-alert.ts +16 -10
  320. package/src/oauth/codex-account-rotation.ts +26 -4
  321. package/src/oauth/codex-account-store.ts +20 -2
  322. package/src/oauth/codex-browser-login.ts +173 -0
  323. package/src/oauth/codex.ts +4 -1
  324. package/src/oauth/fallback-chain.ts +5 -5
  325. package/src/oauth/store.ts +42 -5
  326. package/src/onboarding/continue-here.ts +29 -0
  327. package/src/onboarding/entry-hints.ts +8 -0
  328. package/src/onboarding/full-screen-io.ts +35 -3
  329. package/src/onboarding/help/skills.md +1 -1
  330. package/src/onboarding/non-interactive.ts +1 -0
  331. package/src/onboarding/subscription-hint.ts +27 -0
  332. package/src/onboarding/web-first.ts +83 -0
  333. package/src/onboarding.ts +230 -23
  334. package/src/plugins/maker/node-install.ts +92 -0
  335. package/src/plugins/maker/node-maker.ts +139 -0
  336. package/src/plugins/maker/plugin-maker.ts +19 -7
  337. package/src/policy/llm-policy.ts +268 -0
  338. package/src/prompt-library/session-guidance.ts +7 -1
  339. package/src/prompt-library/universal-preamble.ts +2 -2
  340. package/src/relay/relay-cli.ts +20 -0
  341. package/src/relay/relay-server.ts +220 -0
  342. package/src/release-loop/checklist.ts +9 -8
  343. package/src/self-dev/decompose.ts +1 -0
  344. package/src/self-dev/dev-pipeline.ts +6 -3
  345. package/src/self-dev/run-record-mirror.ts +44 -0
  346. package/src/self-dev/run-store.ts +12 -3
  347. package/src/self-implement/harness-policy-gates.ts +4 -1
  348. package/src/self-implement/report-origin.ts +12 -1
  349. package/src/session/chat.ts +17 -5
  350. package/src/skills/shared-agent-skill-roots.ts +25 -0
  351. package/src/steward/failure-streak.ts +78 -0
  352. package/src/steward/steward-cards.ts +24 -0
  353. package/src/steward/triage-budget.ts +127 -0
  354. package/src/steward/triage-plan.ts +75 -0
  355. package/src/steward/triage.ts +244 -42
  356. package/src/task-cards/card-store.ts +1 -1
  357. package/src/task-orchestrator/surfaces/pod-ledger-collect.ts +11 -5
  358. package/src/task-orchestrator/surfaces/pod-ledger-events.ts +68 -0
  359. package/src/task-orchestrator/surfaces/self-implement-pod.ts +78 -4
  360. package/src/telegram.ts +38 -2
  361. package/src/tool-runtime/elanous-skills-list-runtime.ts +3 -3
  362. package/src/tool-runtime/self-cognition-runtimes.ts +160 -2
  363. package/src/user-config.ts +80 -4
  364. package/src/version/packed-revision.json +1 -1
  365. package/src/video-pipeline/recipes/character.ts +42 -5
  366. package/src/video-pipeline/recipes/ffmpeg.ts +1 -1
  367. package/src/video-pipeline/recipes/free-line.ts +16 -3
  368. package/src/video-pipeline/recipes/remote.ts +7 -1
  369. package/src/video-pipeline/vflow-reference.ts +109 -0
  370. package/apps/pwa/out/_next/static/chunks/1169-696263ac7af8c4d4.js +0 -1
  371. package/apps/pwa/out/_next/static/chunks/1883.c91a2648af4842fd.js +0 -1
  372. package/apps/pwa/out/_next/static/chunks/1947-9d64872eeb9cfdec.js +0 -1
  373. package/apps/pwa/out/_next/static/chunks/2808-dc06482994b40f70.js +0 -1
  374. package/apps/pwa/out/_next/static/chunks/3165-95515ca5f299a120.js +0 -1
  375. package/apps/pwa/out/_next/static/chunks/3190-e9282753e7ebde85.js +0 -1
  376. package/apps/pwa/out/_next/static/chunks/4259-99614149577e77cb.js +0 -1
  377. package/apps/pwa/out/_next/static/chunks/4283-329eabeaf233e6cd.js +0 -1
  378. package/apps/pwa/out/_next/static/chunks/4328-cb5058b1acc2de5e.js +0 -25
  379. package/apps/pwa/out/_next/static/chunks/4801-ecee6ef62b349b18.js +0 -1
  380. package/apps/pwa/out/_next/static/chunks/5110-8058791dd25a2e14.js +0 -1
  381. package/apps/pwa/out/_next/static/chunks/5330-c41e9670f594c38f.js +0 -1
  382. package/apps/pwa/out/_next/static/chunks/5423-e95fd125d1794349.js +0 -1
  383. package/apps/pwa/out/_next/static/chunks/5478-b5eae07dc79ea619.js +0 -1
  384. package/apps/pwa/out/_next/static/chunks/5787-96ee6642b9a661e5.js +0 -1
  385. package/apps/pwa/out/_next/static/chunks/6448-79d72368589f98bc.js +0 -1
  386. package/apps/pwa/out/_next/static/chunks/6522-9866c002b5531836.js +0 -1
  387. package/apps/pwa/out/_next/static/chunks/6729-b4a558b7aa891e0c.js +0 -1
  388. package/apps/pwa/out/_next/static/chunks/6969-cb03f9410b7d2e03.js +0 -1
  389. package/apps/pwa/out/_next/static/chunks/7007-3b9861091bb8dd21.js +0 -1
  390. package/apps/pwa/out/_next/static/chunks/7930-8dc7e20fc6fc19ca.js +0 -1
  391. package/apps/pwa/out/_next/static/chunks/8071-187edbc22a86741f.js +0 -1
  392. package/apps/pwa/out/_next/static/chunks/8198-d4101ad70cb9a579.js +0 -1
  393. package/apps/pwa/out/_next/static/chunks/8250.4a2c5553a07cdf47.js +0 -1
  394. package/apps/pwa/out/_next/static/chunks/8293-123b91e7b0330dc0.js +0 -1
  395. package/apps/pwa/out/_next/static/chunks/8296-d6d5d87dfa911d41.js +0 -1
  396. package/apps/pwa/out/_next/static/chunks/8305-603963c33ee8eec3.js +0 -1
  397. package/apps/pwa/out/_next/static/chunks/8612-4a0066f20951b8fd.js +0 -1
  398. package/apps/pwa/out/_next/static/chunks/9181-cf4e1b61c4783f92.js +0 -1
  399. package/apps/pwa/out/_next/static/chunks/9262-26c2ecbd5a67e4a2.js +0 -1
  400. package/apps/pwa/out/_next/static/chunks/9328-45abdebce4fbecb7.js +0 -1
  401. package/apps/pwa/out/_next/static/chunks/9355-dbc67205adf8745f.js +0 -1
  402. package/apps/pwa/out/_next/static/chunks/9763.255b90dd69875689.js +0 -1
  403. package/apps/pwa/out/_next/static/chunks/9933-66d31ec25c0231af.js +0 -1
  404. package/apps/pwa/out/_next/static/chunks/app/_not-found/page-bd06fb55f4da0381.js +0 -1
  405. package/apps/pwa/out/_next/static/chunks/app/approvals/page-4e586142da455a25.js +0 -1
  406. package/apps/pwa/out/_next/static/chunks/app/autopilot/page-889ad5cddcf45b0d.js +0 -1
  407. package/apps/pwa/out/_next/static/chunks/app/board/page-47ba401d56572c27.js +0 -1
  408. package/apps/pwa/out/_next/static/chunks/app/botlab/page-0b54f9c83458e038.js +0 -1
  409. package/apps/pwa/out/_next/static/chunks/app/bots/page-4fcc296ef6c8ed90.js +0 -1
  410. package/apps/pwa/out/_next/static/chunks/app/chat/page-fe9fda494a87f4e5.js +0 -1
  411. package/apps/pwa/out/_next/static/chunks/app/control/page-f9642e25ce129590.js +0 -1
  412. package/apps/pwa/out/_next/static/chunks/app/design-check/page-e1063e8ba5f3e2e7.js +0 -1
  413. package/apps/pwa/out/_next/static/chunks/app/editor/page-9d0df30027d8aa9d.js +0 -1
  414. package/apps/pwa/out/_next/static/chunks/app/healthz/route-bd06fb55f4da0381.js +0 -1
  415. package/apps/pwa/out/_next/static/chunks/app/intake/page-d97adf2c9455b8d0.js +0 -1
  416. package/apps/pwa/out/_next/static/chunks/app/layout-236b80d202110362.js +0 -1
  417. package/apps/pwa/out/_next/static/chunks/app/live/page-21a30f35f1a276ad.js +0 -1
  418. package/apps/pwa/out/_next/static/chunks/app/market/page-b1a5be357c4fa25d.js +0 -1
  419. package/apps/pwa/out/_next/static/chunks/app/missions/[id]/page-1705a60303f7f573.js +0 -1
  420. package/apps/pwa/out/_next/static/chunks/app/morning/page-76b337c11ad0e237.js +0 -1
  421. package/apps/pwa/out/_next/static/chunks/app/not-found-7c0f85fbb56f64c6.js +0 -1
  422. package/apps/pwa/out/_next/static/chunks/app/observatory/page-65ca16b20617b44d.js +0 -1
  423. package/apps/pwa/out/_next/static/chunks/app/page-e7f9b8fc29411c1d.js +0 -1
  424. package/apps/pwa/out/_next/static/chunks/app/reflection/page-92ea6213d1aeec04.js +0 -1
  425. package/apps/pwa/out/_next/static/chunks/app/scheduler/page-a913a005aacb5476.js +0 -1
  426. package/apps/pwa/out/_next/static/chunks/app/sessions/page-2d78804a40dfdef6.js +0 -1
  427. package/apps/pwa/out/_next/static/chunks/app/settings/devices/page-08a99148e780ac00.js +0 -1
  428. package/apps/pwa/out/_next/static/chunks/app/settings/page-deb674e7ed36f815.js +0 -1
  429. package/apps/pwa/out/_next/static/chunks/app/setup/done/page-49f8de0534d192d7.js +0 -1
  430. package/apps/pwa/out/_next/static/chunks/app/setup/layout-bd06fb55f4da0381.js +0 -1
  431. package/apps/pwa/out/_next/static/chunks/app/setup/page-ba162a28d2176e18.js +0 -1
  432. package/apps/pwa/out/_next/static/chunks/app/share/page-1ff1a37b550ab41a.js +0 -1
  433. package/apps/pwa/out/_next/static/chunks/app/showroom/page-ccaa698f56c0fbdb.js +0 -1
  434. package/apps/pwa/out/_next/static/chunks/app/tasks/page-53b944082de1d7db.js +0 -1
  435. package/apps/pwa/out/_next/static/chunks/app/term/page-9b70adf1552789bf.js +0 -1
  436. package/apps/pwa/out/_next/static/chunks/app/trace/page-30d482aa63241fe8.js +0 -1
  437. package/apps/pwa/out/_next/static/chunks/app/vault/page-aecf786f54651d8a.js +0 -1
  438. package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-6ab9b62c7b6e08f2.js +0 -1
  439. package/apps/pwa/out/_next/static/chunks/app/workflows/page-08949735455e0c9a.js +0 -1
  440. package/apps/pwa/out/_next/static/chunks/app/workspace/page-a1479005234a46c2.js +0 -1
  441. package/apps/pwa/out/_next/static/chunks/app/worktrees/page-c3890e90bd232732.js +0 -1
  442. package/apps/pwa/out/_next/static/chunks/beb5cf10-9adcc10b83930090.js +0 -1
  443. package/apps/pwa/out/_next/static/chunks/framework-d68d41c88e05c801.js +0 -1
  444. package/apps/pwa/out/_next/static/chunks/main-app-11c63971b7a9593b.js +0 -1
  445. package/apps/pwa/out/_next/static/chunks/main-d09452353bd0d9cc.js +0 -1
  446. package/apps/pwa/out/_next/static/chunks/pages/_app-184d727cebeca767.js +0 -1
  447. package/apps/pwa/out/_next/static/chunks/pages/_error-21bbbbac99b720b1.js +0 -1
  448. package/apps/pwa/out/_next/static/css/eaa74e8bb2f62269.css +0 -1
  449. package/apps/pwa/out/_next/static/qMI0jnlZaBjjm4aIDYNGM/_buildManifest.js +0 -1
  450. /package/apps/pwa/out/_next/static/{qMI0jnlZaBjjm4aIDYNGM → keajW7DDyghEs1y8oJe6T}/_ssgManifest.js +0 -0
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6348],{7225:(e,t,s)=>{"use strict";s.d(t,{A:()=>n});let n=(0,s(42735).A)("circle-check",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]])},27334:(e,t,s)=>{"use strict";s.d(t,{A:()=>n});let n=(0,s(42735).A)("refresh-cw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]])},33648:(e,t,s)=>{"use strict";s.d(t,{Qb:()=>i,SI:()=>o,dJ:()=>l});let n="elanous:auth-required",r=null,a=!1;function i(e){null===r&&(r=e,window.dispatchEvent(new CustomEvent(n,{detail:{path:e}})))}function l(e){let t=window,s=t=>e(t.detail);return t.addEventListener(n,s),null===r||a||e({path:r}),()=>t.removeEventListener(n,s)}function o(){a=!0}},53403:(e,t,s)=>{"use strict";let n;s.d(t,{cY:()=>d,x8:()=>l});let r={debug:0,info:1,warn:2,error:3},a="/v1/debug-logs/batch",i=null;function l(e){i=e}class o{health(){return{pending:this.queue.length,consecutiveFailures:this.consecutiveFailures,lastOkAt:this.lastOkAt,droppedByCap:this.droppedByCap,fallbackBatches:this.fallbackBatches}}push(e){if(!(r[function(e){let t=e.slice(e.lastIndexOf(".")+1).toLowerCase();return/^(error|exception|crash|fail|failed)$/.test(t)?"error":/^(warn|degraded|timeout)$/.test(t)?"warn":/^(boot|ready|start|begin|open|ok|done|resolve|end|stop|close)$/.test(t)?"info":"debug"}(e.category)]<r[this.minLevel])){if(this.queue.push(e),this.queue.length>500){let e=this.queue.length-500;this.droppedByCap+=e,this.queue.splice(0,e)}null===this.timer&&(this.timer=setTimeout(()=>{this.flush()},100))}}async flush(){if(this.timer&&(clearTimeout(this.timer),this.timer=null),this.inFlight||0===this.queue.length)return;let e=this.queue.slice(0,100);this.inFlight=!0;let t=!1,s=JSON.stringify({records:e});try{var n,r;t=await (n=this.fetchFn(s),r=this.postTimeoutMs,new Promise((e,t)=>{let s=setTimeout(()=>t(Error("debug-forward timeout after ".concat(r,"ms"))),r);n.then(t=>{clearTimeout(s),e(t)},e=>{clearTimeout(s),t(e)})}))}catch(e){t=!1}finally{this.inFlight=!1}if(!t){if(this.consecutiveFailures+=1,this.consecutiveFailures>=2&&i)try{await i(JSON.stringify({records:[...e,this.blockedNotice()]}))&&(this.fallbackBatches+=1)}catch(e){}this.wasFailing=!0,this.scheduleRetry();return}let a=this.lastOkAt;this.lastOkAt=Date.now();let l=this.consecutiveFailures;this.consecutiveFailures=0,this.queue.splice(0,e.length),this.wasFailing&&(this.wasFailing=!1,this.queue.push({ts:new Date().toISOString(),category:"pwa.debug-forwarder.recovered",event:"recovered",data:{consecutiveFailures:l,droppedByCap:this.droppedByCap,fallbackBatches:this.fallbackBatches,pending:this.queue.length,previousOkAt:a},source:{platform:"pwa"}})),this.queue.length>0&&null===this.timer&&(this.timer=setTimeout(()=>{this.flush()},100))}scheduleRetry(){if(null!==this.timer||0===this.queue.length)return;let e=Math.min(100*2**this.consecutiveFailures,3e4);this.timer=setTimeout(()=>{this.flush()},e)}blockedNotice(){return{ts:new Date().toISOString(),category:"pwa.debug-forwarder.http-blocked",event:"http-blocked",data:{consecutiveFailures:this.consecutiveFailures,pending:this.queue.length,droppedByCap:this.droppedByCap,lastOkAt:this.lastOkAt,via:"acp-fallback"},source:{platform:"pwa"}}}beaconFlush(){if(0!==this.queue.length)try{if("undefined"!=typeof navigator&&"function"==typeof navigator.sendBeacon){let e=this.queue.slice(0,100),t=new Blob([JSON.stringify({records:e})],{type:"application/json"});navigator.sendBeacon(a,t)&&this.queue.splice(0,e.length)}}catch(e){}}get pending(){return this.queue.length}constructor(e=c,t="debug",s=1e4){this.fetchFn=e,this.minLevel=t,this.postTimeoutMs=s,this.queue=[],this.timer=null,this.inFlight=!1,this.consecutiveFailures=0,this.lastOkAt=null,this.droppedByCap=0,this.fallbackBatches=0,this.wasFailing=!1}}async function c(e){return(await fetch(a,{method:"POST",headers:{"content-type":"application/json"},body:e,keepalive:!0,..."undefined"!=typeof AbortSignal&&"function"==typeof AbortSignal.timeout?{signal:AbortSignal.timeout(1e4)}:{}})).ok}function d(e,t){if("undefined"==typeof console)return;let s=new Date().toISOString();if(void 0!==t){let n="";try{let e=new WeakSet;n=JSON.stringify(t,(t,s)=>{if("bigint"==typeof s)return"".concat(s.toString(),"n");if("function"==typeof s)return"[fn ".concat(s.name||"anon","]");if(s&&"object"==typeof s){if(e.has(s))return"[circular]";e.add(s)}return s})}catch(e){n="[unserializable: ".concat(String(e),"]")}n&&n.length>800&&(n=n.slice(0,797)+"..."),console.debug("[".concat(s,"] ").concat(e," ").concat(n),t),u(s,e,n)}else console.debug("[".concat(s,"] ").concat(e)),u(s,e,void 0)}function u(e,t,s){let r,a=function(){if(void 0!==n)return n;let e=function(){try{let e="off"!==window.localStorage.getItem("elanous.pwa.debug.forward"),t=window.localStorage.getItem("elanous.pwa.debug.forwardLevel");return{forward:e,level:"info"===t||"warn"===t||"error"===t?t:"debug"}}catch(e){return{forward:!0,level:"debug"}}}();if(!e.forward)return n=null,null;let t=new o(c,e.level);try{window.addEventListener("visibilitychange",()=>{"hidden"===document.visibilityState&&t.beaconFlush()})}catch(e){}return n=t,t}();if(!a)return;let i=t.slice(t.lastIndexOf(".")+1)||t;if(void 0!==s&&""!==s)try{r=JSON.parse(s)}catch(e){r=s}a.push({ts:e,category:t,event:i,...void 0!==r?{data:r}:{},source:{platform:"pwa"}})}},61622:(e,t,s)=>{"use strict";s.d(t,{M1:()=>c,Qj:()=>d,tI:()=>o});var n=s(35563),r=s(19707),a=s(55893),i=s(39120);let l=(0,r.createContext)(null);function o(e){let{client:t,queryClient:s,defaultStaleTimeMs:o,children:c}=e,d=(0,r.useMemo)(()=>null!=s?s:new a.E({defaultOptions:{queries:{staleTime:null!=o?o:2e3,refetchOnWindowFocus:!1}}}),[s,o]);return(0,n.jsx)(l.Provider,{value:t,children:(0,n.jsx)(i.Ht,{client:d,children:c})})}function c(){let e=(0,r.useContext)(l);if(!e)throw Error("useNexusClient must be used within <NexusProvider>");return e}function d(){return(0,r.useContext)(l)}},73280:(e,t,s)=>{"use strict";s.d(t,{A:()=>n});let n=(0,s(42735).A)("book-open",[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]])},79822:(e,t,s)=>{"use strict";s.d(t,{AF:()=>n});let n={all:["nexus"],health:()=>[...n.all,"health"],snapshot:()=>[...n.all,"snapshot"],tabs:e=>e?[...n.all,"tabs",{kind:e}]:[...n.all,"tabs"],tab:e=>[...n.all,"tab",e],templates:()=>[...n.all,"templates"],template:e=>[...n.all,"template",e],config:()=>[...n.all,"config"],switches:()=>[...n.all,"switches"],switch:e=>[...n.all,"switch",e],secrets:()=>[...n.all,"secrets"],bindingChannels:()=>[...n.all,"bindings","channels"],bindings:e=>[...n.all,"bindings",e],binding:(e,t)=>[...n.all,"binding",e,t],logsTail:(e,t)=>t?[...n.all,"logs",e,{lines:t}]:[...n.all,"logs",e],workflows:()=>[...n.all,"workflows"],workflow:e=>[...n.all,"workflow",e],workflowRun:e=>[...n.all,"workflow-run",e],workflowRuns:()=>[...n.all,"workflow-runs"],pendingApprovals:()=>[...n.all,"workflow-pending-approvals"],platforms:()=>[...n.all,"platforms"],providers:()=>[...n.all,"providers"],worktrees:()=>[...n.all,"worktrees"],designCheck:()=>[...n.all,"design-check"],designPreviews:()=>[...n.all,"design-previews"],designPreview:e=>[...n.all,"design-preview",e],registryCatalog:()=>[...n.all,"registry-catalog"],resolvedView:()=>[...n.all,"resolved-view"]};n.snapshot(),n.tabs(),n.health(),n.snapshot(),n.config(),n.switches()},80571:(e,t,s)=>{"use strict";s.d(t,{A:()=>n});let n=(0,s(42735).A)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]])},82229:(e,t,s)=>{"use strict";s.d(t,{n:()=>d});var n=s(19707),r=s(18607),a=s(83916),i=s(59037),l=s(65425),o=class extends i.Q{#e;#t=void 0;#s;#n;constructor(e,t){super(),this.#e=e,this.setOptions(t),this.bindMethods(),this.#r()}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(e){let t=this.options;this.options=this.#e.defaultMutationOptions(e),(0,l.f8)(this.options,t)||this.#e.getMutationCache().notify({type:"observerOptionsUpdated",mutation:this.#s,observer:this}),t?.mutationKey&&this.options.mutationKey&&(0,l.EN)(t.mutationKey)!==(0,l.EN)(this.options.mutationKey)?this.reset():this.#s?.state.status==="pending"&&this.#s.setOptions(this.options)}onUnsubscribe(){this.hasListeners()||this.#s?.removeObserver(this)}onMutationUpdate(e){this.#r(),this.#a(e)}getCurrentResult(){return this.#t}reset(){this.#s?.removeObserver(this),this.#s=void 0,this.#r(),this.#a()}mutate(e,t){return this.#n=t,this.#s?.removeObserver(this),this.#s=this.#e.getMutationCache().build(this.#e,this.options),this.#s.addObserver(this),this.#s.execute(e)}#r(){let e=this.#s?.state??(0,r.$)();this.#t={...e,isPending:"pending"===e.status,isSuccess:"success"===e.status,isError:"error"===e.status,isIdle:"idle"===e.status,mutate:this.mutate,reset:this.reset}}#a(e){a.jG.batch(()=>{if(this.#n&&this.hasListeners()){let t=this.#t.variables,s=this.#t.context,n={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey};if(e?.type==="success"){try{this.#n.onSuccess?.(e.data,t,s,n)}catch(e){Promise.reject(e)}try{this.#n.onSettled?.(e.data,null,t,s,n)}catch(e){Promise.reject(e)}}else if(e?.type==="error"){try{this.#n.onError?.(e.error,t,s,n)}catch(e){Promise.reject(e)}try{this.#n.onSettled?.(void 0,e.error,t,s,n)}catch(e){Promise.reject(e)}}}this.listeners.forEach(e=>{e(this.#t)})})}},c=s(39120);function d(e,t){let s=(0,c.jE)(t),[r]=n.useState(()=>new o(s,e));n.useEffect(()=>{r.setOptions(e)},[r,e]);let i=n.useSyncExternalStore(n.useCallback(e=>r.subscribe(a.jG.batchCalls(e)),[r]),()=>r.getCurrentResult(),()=>r.getCurrentResult()),d=n.useCallback((e,t)=>{r.mutate(e,t).catch(l.lQ)},[r]);if(i.error&&(0,l.GU)(r.options.throwOnError,[i.error]))throw i.error;return{...i,mutate:d,mutateAsync:i.mutate}}},86815:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>E});var n=s(35563),r=s(80571),a=s(7225);let i=(0,s(42735).A)("circle-dashed",[["path",{d:"M10.1 2.182a10 10 0 0 1 3.8 0",key:"5ilxe3"}],["path",{d:"M13.9 21.818a10 10 0 0 1-3.8 0",key:"11zvb9"}],["path",{d:"M17.609 3.721a10 10 0 0 1 2.69 2.7",key:"1iw5b2"}],["path",{d:"M2.182 13.9a10 10 0 0 1 0-3.8",key:"c0bmvh"}],["path",{d:"M20.279 17.609a10 10 0 0 1-2.7 2.69",key:"1ruxm7"}],["path",{d:"M21.818 10.1a10 10 0 0 1 0 3.8",key:"qkgqxc"}],["path",{d:"M3.721 6.391a10 10 0 0 1 2.7-2.69",key:"1mcia2"}],["path",{d:"M6.391 20.279a10 10 0 0 1-2.69-2.7",key:"1fvljs"}]]);var l=s(73280),o=s(27334),c=s(19707),d=s(61622),u=s(71718),h=s(39120),m=s(82229),p=s(79822),g=s(23995);function f(e){let{available:t,declared:s,onPick:r,pendingId:a,previews:i,onPreview:l}=e,{systems:o,themes:c}=function(e){let t=[],s=[];for(let n of e)("design-system"===n.source?t:s).push(n);return{systems:t,themes:s}}(t);return(0,n.jsxs)("div",{className:"space-y-4",children:[o.length>0&&(0,n.jsx)(x,{title:"Design systems",hint:"Web \xb7 copies tokens.css and DESIGN.md into design/system/",items:o,declared:s,onPick:r,pendingId:a,previews:i,onPreview:l}),c.length>0&&(0,n.jsx)(x,{title:"Terminal themes",hint:"One line in DESIGN.md",items:c,declared:s,onPick:r,pendingId:a,previews:i,onPreview:l})]})}function x(e){let{title:t,hint:s,items:r,declared:a,onPick:i,pendingId:l,previews:o,onPreview:c}=e;return(0,n.jsxs)("section",{className:"space-y-2","aria-label":t,children:[(0,n.jsxs)("h3",{className:"flex items-baseline gap-2 text-xs font-medium uppercase tracking-wide text-muted-foreground",children:[t,(0,n.jsxs)("span",{className:"normal-case tracking-normal",children:[r.length," \xb7 ",s]})]}),(0,n.jsx)("ul",{className:"grid grid-cols-1 gap-2 sm:grid-cols-2 lg:grid-cols-3",children:r.map(e=>(0,n.jsx)(b,{direction:e,chosen:e.id===a,onPick:i,pending:l===e.id,busy:null!==l,hasPreview:(null==o?void 0:o.has(e.id))===!0&&void 0!==c,onPreview:c},e.id))})]})}function b(e){var t,s,r,i,l,o,c,d,u;let{direction:h,chosen:m,onPick:p,pending:g,busy:f,hasPreview:x,onPreview:b}=e,y=null!=(r=h.swatch.bg)?r:h.isDark?"#111111":"#ffffff",v=null!=(i=h.swatch.fg)?i:h.swatch.text,w=null!=(o=null!=(l=null==(t=h.typography)?void 0:t.display)?l:null==(s=h.typography)?void 0:s.body)?o:null;return(0,n.jsxs)("li",{"data-direction":h.id,"data-direction-id":h.id,className:"flex flex-col gap-2 rounded-md border p-3 text-sm ".concat(m?"border-primary ring-1 ring-primary":""),children:[(0,n.jsxs)("div",{className:"flex items-center gap-1.5","aria-hidden":!0,children:[[y,v,h.swatch.accent].map((e,t)=>(0,n.jsx)("span",{className:"h-5 w-5 rounded-full border",style:{backgroundColor:e,borderColor:h.swatch.muted}},t)),h.category&&(0,n.jsx)("span",{className:"ml-auto truncate text-[11px] text-muted-foreground",children:h.category})]}),(0,n.jsxs)("div",{className:"min-w-0",children:[(0,n.jsx)("p",{className:"truncate font-medium",children:null!=(c=h.label)?c:h.id}),(0,n.jsxs)("p",{className:"truncate text-xs text-muted-foreground",children:[(0,n.jsx)("code",{children:h.id}),w?" \xb7 ".concat(w):""]}),(0,n.jsx)("p",{className:"mt-1 line-clamp-2 text-xs text-muted-foreground",children:h.mood})]}),(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[x&&(0,n.jsx)("button",{type:"button",onClick:()=>null==b?void 0:b(h.id),className:"self-start rounded-md border px-2.5 py-1 text-xs hover:bg-muted","aria-label":"Preview ".concat(null!=(d=h.label)?d:h.id),children:"Preview"}),m?(0,n.jsxs)("span",{className:"inline-flex items-center gap-1 text-xs text-primary",children:[(0,n.jsx)(a.A,{className:"h-3.5 w-3.5","aria-hidden":!0}),"Selected"]}):(0,n.jsx)("button",{type:"button",disabled:f,onClick:()=>p(h.id),className:"self-start rounded-md border px-2.5 py-1 text-xs hover:bg-muted disabled:opacity-50","aria-label":"Select ".concat(null!=(u=h.label)?u:h.id),children:g?"Selecting…":"Select"})]})]})}let y=/^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/;function v(e){return e.split(/[\s,]+/).map(e=>e.trim()).filter(Boolean)}function w(e,t){if("undefined"==typeof document)return t;let s=document.getElementById(e);return s&&"value"in s&&"string"==typeof s.value?s.value:t}function k(e){let{onCreate:t,onSelect:s,pending:r,result:a,error:i}=e,[l,o]=(0,c.useState)("url"),[d,u]=(0,c.useState)(""),[h,m]=(0,c.useState)(""),[p,g]=(0,c.useState)(""),f=v(h).filter(e=>y.test(e)),x=v(h).length,b=x>=2&&x<=6&&p.trim().length>0&&f.length===x;return(0,n.jsxs)("section",{className:"rounded-md border p-3","aria-label":"Make my system","data-make-my-system":"",children:[(0,n.jsxs)("div",{className:"flex items-baseline justify-between gap-2",children:[(0,n.jsx)("h3",{className:"text-sm font-medium",children:"Make my system"}),(0,n.jsxs)("div",{className:"flex gap-1",role:"tablist",children:[(0,n.jsx)("button",{type:"button",role:"tab","aria-selected":"url"===l,className:"rounded-md px-2 py-1 text-xs ".concat("url"===l?"bg-muted":""),onClick:()=>o("url"),children:"From a website"}),(0,n.jsx)("button",{type:"button",role:"tab","aria-selected":"colors"===l,className:"rounded-md px-2 py-1 text-xs ".concat("colors"===l?"bg-muted":""),onClick:()=>o("colors"),children:"From colors"})]})]}),(0,n.jsx)("p",{className:"mt-2 text-xs text-muted-foreground",children:"Reference, not a copy — logos, names, images and text are not taken."}),"url"===l?(0,n.jsxs)("form",{className:"mt-2 flex flex-col gap-2 sm:flex-row",onSubmit:e=>{e.preventDefault();let s=d.trim();s&&!r&&t({kind:"url",url:s})},children:[(0,n.jsx)("label",{className:"sr-only",htmlFor:"make-system-url",children:"Website URL"}),(0,n.jsx)("input",{id:"make-system-url",type:"url",value:d,disabled:r,placeholder:"https://example.com",onChange:e=>u(e.target.value),className:"min-w-0 flex-1 rounded-md border bg-transparent px-2 py-1.5 text-sm"}),(0,n.jsx)("button",{type:"button",disabled:r,onClick:()=>{let e=w("make-system-url",d).trim();e&&!r&&t({kind:"url",url:e})},className:"rounded-md border px-3 py-1.5 text-sm hover:bg-muted disabled:opacity-50",children:r?"Measuring…":"Make it"})]}):(0,n.jsxs)("form",{className:"mt-2 space-y-2",onSubmit:e=>{e.preventDefault(),b&&!r&&t({kind:"palette",colors:f,id:p.trim()})},children:[(0,n.jsx)("label",{className:"block text-xs text-muted-foreground",htmlFor:"make-system-colors",children:"2–6 colors"}),(0,n.jsx)("input",{id:"make-system-colors",value:h,disabled:r,placeholder:"#f4efe6, #1f3a2e, #c8553d",onChange:e=>m(e.target.value),className:"w-full rounded-md border bg-transparent px-2 py-1.5 text-sm"}),f.length>0&&(0,n.jsx)("ul",{className:"flex gap-1","aria-label":"Color preview",children:f.map(e=>(0,n.jsx)("li",{className:"h-6 w-6 rounded-sm border",style:{backgroundColor:e},title:e},e))}),(0,n.jsx)("label",{className:"block text-xs text-muted-foreground",htmlFor:"make-system-id",children:"id"}),(0,n.jsx)("input",{id:"make-system-id",value:p,disabled:r,placeholder:"stumptowncoffee",onChange:e=>g(e.target.value),className:"w-full rounded-md border bg-transparent px-2 py-1.5 text-sm"}),(0,n.jsx)("button",{type:"button",disabled:r,onClick:()=>{let e=v(w("make-system-colors",h)).filter(e=>y.test(e)),s=w("make-system-id",p).trim();r||e.length<2||e.length>6||0===s.length||t({kind:"palette",colors:e,id:s})},className:"rounded-md border px-3 py-1.5 text-sm hover:bg-muted disabled:opacity-50",children:r?"Measuring…":"Make it"})]}),r&&(0,n.jsx)("p",{className:"mt-2 text-sm text-muted-foreground",children:"Measuring…"}),i&&(0,n.jsx)("p",{className:"mt-2 text-sm text-error",role:"alert",children:i}),a&&(0,n.jsxs)("div",{className:"mt-2 space-y-1 text-sm",children:[(0,n.jsxs)("p",{children:["Made ",a.id," — ",a.tokens.length," tokens \xb7 ",a.unread," unread"]}),a.warnings.map(e=>(0,n.jsx)("p",{className:"text-xs text-muted-foreground",children:e},e)),(0,n.jsx)("button",{type:"button",onClick:()=>s(a.id),className:"rounded-md border px-2.5 py-1 text-xs hover:bg-muted",children:"Select it"})]})]})}let j={missing:"Missing",declared:"Declared",available:"Not declared"},N={missing:"bg-error/10 text-error",declared:"bg-green-600/10 text-green-700",available:"bg-muted text-muted-foreground"},S={missing:r.A,declared:a.A,available:i};function C(){return(0,d.Qj)()?(0,n.jsx)(M,{}):(0,n.jsxs)("div",{className:"mx-auto max-w-2xl space-y-2 p-6",children:[(0,n.jsx)("h1",{className:"text-xl font-semibold tracking-tight",children:"Design check"}),(0,n.jsx)("p",{className:"text-sm text-muted-foreground",children:"Connect to a NEXUS daemon to see this repository's craft rulebooks."})]})}function M(){let{data:e,isLoading:t,error:s,refetch:a,isFetching:i}=function(){var e;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},s=(0,d.M1)();return(0,u.I)({queryKey:p.AF.designCheck(),queryFn:()=>s.getDesignCheck(),enabled:null==(e=t.enabled)||e,refetchInterval:3e4})}();return(0,n.jsxs)("div",{className:"mx-auto max-w-3xl space-y-4 p-6",children:[(0,n.jsxs)("header",{className:"flex items-start justify-between gap-4",children:[(0,n.jsxs)("div",{className:"space-y-1",children:[(0,n.jsxs)("h1",{className:"flex items-center gap-2 text-xl font-semibold tracking-tight",children:[(0,n.jsx)(l.A,{className:"h-5 w-5","aria-hidden":!0}),"Design check"]}),(0,n.jsxs)("p",{className:"text-sm text-muted-foreground",children:["Craft rulebooks declared by this repository's ",(0,n.jsx)("code",{children:"DESIGN.md"}),"."]})]}),(0,n.jsxs)("button",{type:"button",onClick:()=>void a(),className:"inline-flex items-center gap-1.5 rounded-md border px-2.5 py-1.5 text-sm hover:bg-muted","aria-label":"Refresh design check",children:[(0,n.jsx)(o.A,{className:"h-4 w-4 ".concat(i?"animate-spin":""),"aria-hidden":!0}),"Refresh"]})]}),t&&(0,n.jsx)("p",{className:"text-sm text-muted-foreground",children:"Loading…"}),s&&(0,n.jsxs)("p",{className:"rounded-md bg-error/10 p-3 text-sm text-error",children:["Could not reach the daemon: ",s instanceof Error?s.message:String(s)]}),e&&!1===e.ok&&(0,n.jsxs)("div",{className:"space-y-2 rounded-md border border-warning/40 bg-warning/5 p-4",children:[(0,n.jsxs)("p",{className:"flex items-center gap-2 text-sm font-medium",children:[(0,n.jsx)(r.A,{className:"h-4 w-4 text-warning","aria-hidden":!0}),"Design check blocked"]}),(0,n.jsx)("p",{className:"text-sm text-muted-foreground",children:function(e,t){switch(e){case"no-repository":return"The daemon is not running inside a git checkout, so there is no DESIGN.md to check.";case"craft-directory":return"elanous's craft rulebook directory could not be read: ".concat(null!=t?t:"(unknown path)");case"design-document":return"This repository has no readable DESIGN.md: ".concat(null!=t?t:"(unknown path)");default:return"The design check is blocked (".concat(e,").")}}(e.blockedOn,e.path)})]}),e&&!0===e.ok&&(0,n.jsx)(O,{data:e})]})}function O(e){let{data:t}=e,s=function(e){let t=new Set(e.unavailableRulebooks),s=new Map;for(let t of e.availableRulebooks)s.set(t,"available");for(let n of e.declaredRulebooks)s.set(n,t.has(n)?"missing":"declared");let n={missing:0,declared:1,available:2};return[...s.entries()].map(e=>{let[t,s]=e;return{name:t,status:s}}).sort((e,t)=>n[e.status]-n[t.status]||e.name.localeCompare(t.name))}(t),r=t.unavailableRulebooks.length;return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{className:"rounded-md p-3 text-sm ".concat(r?"bg-error/10 text-error":"bg-green-600/10 text-green-700"),children:r?"".concat(r," declared rulebook").concat(1===r?"":"s"," could not be found."):"All ".concat(t.declaredRulebooks.length," declared rulebook").concat(1===t.declaredRulebooks.length?"":"s"," resolve.")}),(0,n.jsxs)("dl",{className:"grid grid-cols-1 gap-1 text-xs text-muted-foreground sm:grid-cols-2",children:[(0,n.jsxs)("div",{className:"truncate sm:col-span-2",children:[(0,n.jsx)("dt",{className:"inline font-medium",children:"Repository: "}),(0,n.jsxs)("dd",{className:"inline",children:[(0,n.jsx)("code",{children:t.repoRoot}),t.repoSource&&(0,n.jsxs)("span",{className:"ml-1",children:["(","config"===t.repoSource?"harness.defaultRepo":"daemon folder",")"]})]})]}),(0,n.jsxs)("div",{className:"truncate",children:[(0,n.jsx)("dt",{className:"inline font-medium",children:"Document: "}),(0,n.jsx)("dd",{className:"inline",children:(0,n.jsx)("code",{children:t.documentPath})})]}),(0,n.jsxs)("div",{className:"truncate",children:[(0,n.jsx)("dt",{className:"inline font-medium",children:"Rulebooks: "}),(0,n.jsx)("dd",{className:"inline",children:(0,n.jsx)("code",{children:t.craftDirectory})})]})]}),(0,n.jsx)(F,{data:t}),0===s.length?(0,n.jsx)("p",{className:"text-sm text-muted-foreground",children:"elanous ships no craft rulebooks and this document declares none."}):(0,n.jsx)("ul",{className:"divide-y rounded-md border",children:s.map(e=>{let t=S[e.status];return(0,n.jsxs)("li",{className:"flex items-center justify-between gap-3 px-3 py-2",children:[(0,n.jsxs)("span",{className:"flex items-center gap-2 text-sm",children:[(0,n.jsx)(t,{className:"h-4 w-4 shrink-0","aria-hidden":!0}),(0,n.jsx)("code",{children:e.name})]}),(0,n.jsx)("span",{className:"shrink-0 rounded-full px-2 py-0.5 text-xs ".concat(N[e.status]),children:j[e.status]})]},e.name)})})]})}function F(e){var t,s,r,a;let{data:i}=e,l=function(){let e=(0,d.M1)(),t=(0,h.jE)();return(0,m.n)({mutationFn:t=>e.setDesignDirection(t),onSuccess:()=>t.invalidateQueries({queryKey:p.AF.designCheck()})})}(),o=function(){let e=(0,d.M1)(),t=(0,h.jE)();return(0,m.n)({mutationFn:t=>e.createDesignSystem(t),onSuccess:()=>t.invalidateQueries({queryKey:p.AF.designCheck()})})}(),x=function(){var e;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},s=(0,d.M1)();return(0,u.I)({queryKey:p.AF.designPreviews(),queryFn:()=>s.listDesignPreviews(),enabled:null==(e=t.enabled)||e,refetchInterval:3e4})}(),[b,y]=(0,c.useState)(null),[v,w]=(0,c.useState)(null),j=i.directions;if((0,c.useEffect)(()=>{if(!v||!j)return;let e=document.querySelector('[data-direction-id="'.concat(v.replace(/"/g,""),'"]'));null==e||e.scrollIntoView({block:"nearest"})},[v,j]),!j)return null;let N=l.isPending&&null!=(s=l.variables)?s:null;return(0,n.jsxs)("section",{className:"space-y-2",children:[(0,n.jsx)("h2",{className:"text-sm font-medium",children:"Design direction"}),(0,n.jsx)(k,{pending:o.isPending,result:null!=(r=o.data)?r:null,error:o.isError?function(e){switch(e instanceof g.Iu&&e.body&&"object"==typeof e.body?e.body.reason:void 0){case"bad-url":return"That address is not an http or https URL.";case"bad-id":return"The id may only use lowercase letters, digits, and hyphens.";case"id-taken":return"That id is already taken.";case"extract-failed":return"The page could not be measured.";case"no-colors":return"Give between 2 and 6 colors.";case"busy":return"Another system is being made — wait for it to finish.";default:if(e instanceof g.Iu&&401===e.status)return"Only the owner can make a system — sign in first.";return"Could not make the system: ".concat(e instanceof Error?e.message:String(e))}}(o.error):null,onCreate:e=>{o.mutate(e,{onSuccess:e=>w(e.id)})},onSelect:e=>{w(e),l.mutate(e)}}),j.unavailable&&(0,n.jsxs)("p",{className:"rounded-md bg-error/10 p-2 text-sm text-error",children:["Declared direction ",(0,n.jsx)("code",{children:j.unavailable})," is not registered."]}),null===j.declared&&!j.unavailable&&(0,n.jsx)("p",{className:"text-sm text-muted-foreground",children:"None declared — pick one below."}),l.isError&&(0,n.jsx)("p",{className:"rounded-md bg-error/10 p-2 text-sm text-error",children:function(e){switch(e instanceof g.Iu&&e.body&&"object"==typeof e.body?e.body.reason:void 0){case"unknown-direction":return"The daemon does not know this direction.";case"no-repository":return"The daemon has no repository to write to (set harness.defaultRepo).";case"conflicting-system-file":return"design/system/ already holds a file the daemon will not overwrite.";case"cannot-read":return"The DESIGN.md could not be read.";case"cannot-write":return"The DESIGN.md could not be written.";default:if(e instanceof g.Iu&&401===e.status)return"Only the owner can pick a direction — sign in first.";return"Could not set the direction: ".concat(e instanceof Error?e.message:String(e))}}(l.error)}),b&&(0,n.jsx)(A,{system:b,onClose:()=>y(null),onSelect:()=>l.mutate(b),selecting:N===b,busy:null!==N,alreadySelected:j.declared===b}),(0,n.jsx)(f,{available:j.available,declared:j.declared,pendingId:N,previews:new Set((null!=(a=null==(t=x.data)?void 0:t.previews)?a:[]).map(e=>e.system)),onPreview:e=>y(e),onPick:e=>l.mutate(e)})]})}function A(e){let{system:t,onClose:s,onSelect:r,selecting:a,busy:i,alreadySelected:l}=e,o=function(e){let t=(0,d.M1)();return(0,u.I)({queryKey:p.AF.designPreview(null!=e?e:""),queryFn:()=>t.getDesignPreview(e),enabled:null!==e&&""!==e})}(t);return(0,n.jsxs)("div",{className:"space-y-2 rounded-md border p-3",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,n.jsxs)("p",{className:"text-sm font-medium",children:["Preview \xb7 ",(0,n.jsx)("code",{children:t})]}),(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[l?(0,n.jsx)("span",{className:"text-xs text-primary",children:"Selected"}):(0,n.jsx)("button",{type:"button",disabled:i,onClick:r,className:"rounded-md border px-2.5 py-1 text-xs hover:bg-muted disabled:opacity-50","aria-label":"Select ".concat(t),children:a?"Selecting…":"Select"}),(0,n.jsx)("button",{type:"button",onClick:s,className:"rounded-md border px-2.5 py-1 text-xs hover:bg-muted","aria-label":"Close preview",children:"Close"})]})]}),o.isLoading&&(0,n.jsx)("p",{className:"text-sm text-muted-foreground",children:"Loading preview…"}),o.isError&&(0,n.jsxs)("p",{className:"text-sm text-error",children:["Could not load the preview: ",o.error instanceof Error?o.error.message:String(o.error)]}),o.data&&(0,n.jsx)("iframe",{sandbox:"",srcDoc:o.data.html,title:"Preview \xb7 ".concat(t),className:"h-80 w-full rounded-md border bg-white"})]})}function E(){return(0,n.jsx)(C,{})}},97510:(e,t,s)=>{Promise.resolve().then(s.bind(s,86815))}},e=>{e.O(0,[8612,5110,3995,3042,4259,7358],()=>e(e.s=97510)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6766],{1686:()=>{},31988:(e,t,r)=>{Promise.resolve().then(r.bind(r,44590))},33648:(e,t,r)=>{"use strict";r.d(t,{Qb:()=>s,SI:()=>i,dJ:()=>o});let n="elanous:auth-required",a=null,l=!1;function s(e){null===a&&(a=e,window.dispatchEvent(new CustomEvent(n,{detail:{path:e}})))}function o(e){let t=window,r=t=>e(t.detail);return t.addEventListener(n,r),null===a||l||e({path:a}),()=>t.removeEventListener(n,r)}function i(){l=!0}},44590:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>tI});var n=r(35563),a=r(19707),l=r(71718),s=r(65696),o=r(61622);let i=/^[a-z0-9]+(-[a-z0-9]+)*$/;var d=r(6955),c=r(95677),u=r(39097),p=r(96183),h=r(48497),m=r(76950),x=r(88616),f=r(3969),g=r(24520),b=r(97663),y=r(56519),v=r(39619),j=r(31778),w=r(14861),k=r(83580),N=r(49488),C=r(34743),S=r(7225),A=r(50763),T=r(75719),E=r(3381);r(29381),r(1686);var M=r(9006);let _=/^\*\/(\d+) \* \* \* \*$/,O=/^0 \*\/(\d+) \* \* \*$/,I=/^(\d+) (\d+) \* \* \*$/,L=/^(\d+) (\d+) \* \* 1-5$/,P=/^(\d+) (\d+) \* \* ([0-6])$/,R=/^(\d+) (\d+) (\d+) \* \*$/,D=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];function F(e){return e.toString().padStart(2,"0")}function z(e){let t=e.trim();if(!t)return{text:"(empty expression)",matched:!1};let r=_.exec(t);if(r){let e=Number(r[1]);return{text:"Every ".concat(e," minute").concat(1===e?"":"s"),matched:!0}}let n=O.exec(t);if(n){let e=Number(n[1]);return{text:"Every ".concat(e," hour").concat(1===e?"":"s"),matched:!0}}let a=L.exec(t);if(a)return{text:"Every weekday at ".concat(F(Number(a[2])),":").concat(F(Number(a[1]))),matched:!0};let l=P.exec(t);if(l){let e=D[Number(l[3])];return{text:"Every ".concat(e," at ").concat(F(Number(l[2])),":").concat(F(Number(l[1]))),matched:!0}}let s=I.exec(t);if(s)return{text:"Every day at ".concat(F(Number(s[2])),":").concat(F(Number(s[1]))),matched:!0};let o=R.exec(t);return o?{text:"Day ".concat(Number(o[3])," of every month at ").concat(F(Number(o[2])),":").concat(F(Number(o[1]))),matched:!0}:{text:"Custom: ".concat(t),matched:!1}}let q=[{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 * *"}];function W(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return"string"==typeof e?e:t}function G(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 B(e){let t=e.kind;return"string"==typeof t&&/^[a-z0-9-]+:[a-z0-9-]+$/.test(t)?t:null}function H(e,t){var r;return"unknown"===t&&null!=(r=B(e))?r:t}function $(e){var t;return e?(null!=(t=e.split("\n").find(e=>e.trim().length>0))?t:"").trim().slice(0,64):""}var K=r(17478);function U(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 J(e,t,r){var n,a;let l=null!=(n=null==r?void 0:r.id)?n:U(e,t),s=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,l);return{...e,nodes:[...null!=(a=e.nodes)?a:[],s]}}function Y(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 V(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){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,K.As)(r,{lineWidth:0,defaultStringType:"PLAIN",singleQuote:!1})}function Q(e){try{let t=(0,K.parse)(e);if(!t||"object"!=typeof t||!Array.isArray(t.nodes))return null;return t}catch(e){return null}}let Z={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"}},ee={all:"\uD83D\uDCE3",modal:"\uD83D\uDDA5",terminal:"⌨",telegram:"\uD83D\uDCF2",discord:"\uD83D\uDCAC",pushcut:"\uD83D\uDD14"};async function et(e){try{let{parse:t}=await Promise.resolve().then(r.bind(r,17478)),n=t(e);if(!n||"object"!=typeof n||!Array.isArray(n.nodes))return null;return n}catch(e){return null}}let er={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 en(e){let{palette:t,yaml:r,definition:l,editable:s,onChangeYaml:o,onNodeClick:i,nodeStatuses:d,nodeIssues:c,cycleNodeIds:u,focusNodeId:p,focusNonce:h,onRun:m}=e,[x,f]=(0,a.useState)(null!=l?l:null),[g,b]=(0,a.useState)(!1),[y,v]=(0,a.useState)([]);(0,a.useEffect)(()=>{if(l){f(l),b(!1);return}let e=!1;return(async()=>{let t=await et(r);e||(f(t),b(null===t))})(),()=>{e=!0}},[r,l]);let j=(0,a.useCallback)(e=>{var t;if(!o)return;let n=null!=(t=Q(r))?t:x;if(!n)return;let a=e(n);f(a);try{let e=X(a);o(e)}catch(e){}},[o,x,r]),w=(0,a.useMemo)(()=>{if(!x)return null;try{return function(e,t){let{nodes:r,edges:n}=function(e){var t,r,n,a,l,s,o,i,d,c,u,p;let h=[],m=[],x=new Set;for(let f of null!=(t=e.nodes)?t:[]){let e,t;if(!f||"string"!=typeof f.id||0===f.id.length||x.has(f.id))continue;x.add(f.id);let g=G(f),b="";switch(g){case"prompt":b=$(f.prompt);break;case"bash":b=$(f.bash);break;case"skill":b=String(null!=(r=f.skill)?r:"").slice(0,64);break;case"cft":b=String(null!=(n=f.cft)?n:"").slice(0,64);break;case"approval":{let t=f.approval;b=$(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==(a=f.if)?void 0:a.condition;b="string"==typeof e?e.slice(0,64):"";break}case"switch":{let e=f.switch,t=Array.isArray(null==e?void 0:e.cases)?" → ".concat(e.cases.length," case").concat(1===e.cases.length?"":"s"):"";b="".concat((null!=(l=null==e?void 0:e.value)?l:"").slice(0,40)).concat(t);break}case"iteration":{let e=f.iteration;b="over ".concat((null!=(s=null==e?void 0:e.items)?s:"").slice(0,32));break}case"classify":{let e=f.classify,t=Array.isArray(null==e?void 0:e.classes)?e.classes.length:0;b="".concat(t," class").concat(1===t?"":"es"," from ").concat((null!=(o=null==e?void 0:e.input)?o:"").slice(0,24));break}case"extract":{let e=f.extract,t=(null==e?void 0:e.schema)?Object.keys(e.schema).length:0;b="".concat(t," field").concat(1===t?"":"s"," from ").concat((null!=(i=null==e?void 0:e.input)?i:"").slice(0,24));break}case"set":{let e=f.set,t=(null==e?void 0:e.fields)?Object.keys(e.fields).length:0;b="set ".concat(t," field").concat(1===t?"":"s");break}case"filter":{let e=f.filter;b="filter ".concat((null!=(d=null==e?void 0:e.items)?d:"").slice(0,28)," on ").concat((null!=(c=null==e?void 0:e.condition)?c:"").slice(0,24));break}case"template":{let e=f.template,t=$(null==e?void 0:e.template);b="tpl: ".concat(t.slice(0,56));break}case"http":case"scheduleTrigger":case"webhookTrigger":case"discordTrigger":case"telegramTrigger":case"manualTrigger":case"chatTrigger":b=null!=(u=function(e,t){switch(e){case"scheduleTrigger":return function(e){if(!e)return"⏰ schedule";let t=e.type;if("cron"===t){let t=W(e.cron),r=W(e.timezone),n=z(t),a=!1===e.enabled?" \xb7 disabled":"",l="number"==typeof e.max_runs?" \xb7 max ".concat(e.max_runs," runs"):"";return"⏰ ".concat(n.text).concat(r?" ".concat(r):"").concat(l).concat(a)}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=W(e.method,"POST"),r=W(e.path),n=e.auth&&"object"==typeof e.auth?e.auth:null,a=n?" \xb7 ".concat(W(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=W(e.method,"GET"),r=W(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=W(e.kind,"message"),r=[],n=W(e.channel);return n&&r.push("#".concat(n)),W(e.user)&&r.push("@".concat(W(e.user))),W(e.pattern)&&r.push("/".concat(W(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=W(r.kind,"message"),a=[];return W(r.chat)&&a.push("@".concat(W(r.chat))),"command"===n&&W(r.command)&&a.push("/".concat(W(r.command))),W(r.user)&&a.push("from:".concat(W(r.user))),W(r.pattern)&&a.push("/".concat(W(r.pattern),"/")),a.push(n),"✈️ ".concat(a.join(" \xb7 "));case"manualTrigger":var l=t.manualTrigger;let s=W(null==l?void 0:l.description);return s?"▶ ".concat(s):"▶ Manual \xb7 explicit run";case"chatTrigger":return function(e){if(!e)return"\uD83D\uDCAD Chat";let t=W(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}}(g,f))?u:"";break;default:b=""}if("unknown"===g&&B(f)){let e=f.inputs,t=e&&"object"==typeof e?Object.values(e).find(e=>"string"==typeof e&&""!==e.trim()):void 0;b=t?$(t):""}if("if"===g)t=["then","else"];else if("switch"===g){let e=null==(p=f.switch)?void 0:p.cases;Array.isArray(e)&&(t=[...e.filter(e=>"string"==typeof e&&e.length>0),"default"])}for(let r of(h.push({id:f.id,variant:g,badge:H(f,g),label:f.id,preview:b,hasWhen:"string"==typeof f.when&&""!==f.when.trim(),..."string"==typeof f.trigger_rule?{triggerRule:f.trigger_rule}:{},hasToolPolicy:Array.isArray(f.allowed_tools)||Array.isArray(f.denied_tools),...void 0!==e?{approvalDelivery:e}:{},...t?{branches:t}:{}}),Array.isArray(f.depends_on)?f.depends_on:[]))"string"==typeof r&&0!==r.length&&m.push({id:"".concat(r,"->").concat(f.id),source:r,target:f.id})}return{nodes:h,edges:m}}(e),a=function(e){var t,r,n;let a=null!=(t=e.direction)?t:"LR",l=new M.Ay.graphlib.Graph;for(let t of(l.setDefaultEdgeLabel(()=>({})),l.setGraph({rankdir:a,ranksep:null!=(r=e.rankSep)?r:"LR"===a?100:80,nodesep:null!=(n=e.nodeSep)?n:"LR"===a?40:60,marginx:20,marginy:20}),e.nodes))l.setNode(t.id,{width:200,height:64});for(let t of e.edges)l.setEdge(t.source,t.target);M.Ay.layout(l);let s=e.nodes.map(e=>{var t,r,n,a;let s=l.node(e.id),o=(null!=(t=null==s?void 0:s.x)?t:0)-100,i=(null!=(r=null==s?void 0:s.y)?r:0)-32;return{...e,position:{x:o,y:i},width:null!=(n=null==s?void 0:s.width)?n:200,height:null!=(a=null==s?void 0:s.height)?a:64}}),o=0,i=0;for(let e of s)o=Math.max(o,e.position.x+e.width),i=Math.max(i,e.position.y+e.height);return{nodes:s,edges:e.edges,bounds:{width:o,height:i}}}({nodes:r,edges:n}),l=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(l).length)return a;let s=0,o=0;return{nodes:a.nodes.map(e=>{let t=l[e.id],r=null!=t?t:e.position,n={...e,position:r};return s=Math.max(s,r.x+e.width),o=Math.max(o,r.y+e.height),n}),edges:a.edges,bounds:{width:s,height:o}}}(x)}catch(e){return null}},[x]),k=(0,a.useMemo)(()=>w?w.nodes.map(e=>{var t,r;let n=null!=(t=null==u?void 0:u.has(e.id))&&t,a=null==c?void 0:c[e.id],l=null==d?void 0:d[e.id],s=(r=null==l?void 0:l.status)?"workflow-node-status workflow-node-status-".concat(r):"workflow-node-status";return{id:e.id,type:"workflow",position:e.position,data:{raw:e,statusEntry:l,issues:a,inCycle:n},className:s,style:{background:"var(--surface, #0f1117)",color:"var(--text-primary, #e5e7eb)",border:n?"2px dashed #ef4444":"1.5px solid ".concat(er[e.variant]),borderRadius:8,padding:0,width:e.width,fontSize:11,textAlign:"left"}}}):[],[w,d,c,u]),N=(0,a.useMemo)(()=>({workflow:ec}),[]),C=(0,a.useMemo)(()=>w?w.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}}}):[],[w,u]),S=(0,a.useCallback)(e=>{s&&e.source&&e.target&&j(t=>(function(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}})(t,e.source,e.target))},[s,j]),A=(0,a.useCallback)(e=>{if(!s)return;let t=e.filter(e=>"remove"===e.type);if(t.length>0)return void j(e=>t.reduce((e,t)=>Y(e,t.id),e));let r=e.filter(e=>"position"===e.type&&!1===e.dragging&&void 0!==e.position);0!==r.length&&j(e=>r.reduce((e,t)=>(function(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}})(e,t.id,t.position),e))},[s,j]),E=(0,a.useCallback)(e=>{if(!s)return;let t=e.filter(e=>"remove"===e.type);0!==t.length&&j(e=>t.reduce((e,t)=>{var r;let[n,a]=t.id.split("->");if(!n||!a)return e;let l=(null!=(r=e.nodes)?r:[]).map(e=>{if(e.id!==a||!Array.isArray(e.depends_on))return e;let t=e.depends_on.filter(e=>e!==n);if(t.length===e.depends_on.length)return e;if(0===t.length){let{depends_on:t,...r}=e;return r}return{...e,depends_on:t}});return{...e,nodes:l}},e))},[s,j]),[_,O]=(0,a.useState)(!1),I=(0,a.useCallback)(e=>{j(t=>J(t,e)),O(!1)},[j]),L=(0,a.useCallback)(e=>{j(t=>e.core?J(t,e.kind):{...t,nodes:[...t.nodes,{id:U(t,"unknown"),kind:e.kind,inputs:{}}]})},[j]);var P,R=(0,a.useMemo)(()=>{if(!s)return[];let e=[];return e.push({key:"n",handler:()=>O(e=>!e)}),e.push({key:"t",shift:!0,alt:!0,handler:()=>j(e=>V(e))}),e.push({key:"Escape",handler:()=>O(!1),preventDefault:!1}),e.push({key:"d",metaOrCtrl:!0,handler:()=>{let e=y[0];e&&j(t=>(function(e,t){var r,n;let a=(null!=(r=e.nodes)?r:[]).find(e=>e.id===t);if(!a)return e;let l=U(e,G(a)),{id:s,depends_on:o,...i}=a,d={...i,id:l};return{...e,nodes:[...null!=(n=e.nodes)?n:[],d]}})(t,e))}}),e.push({key:"F2",handler:()=>{let e=y[0];e&&i&&i(e)}}),m&&e.push({key:"Enter",metaOrCtrl:!0,handler:()=>m()}),e},[s,j,o,i,m,y]),D={enabled:!0===s};let F=null==(P=null==D?void 0:D.enabled)||P;return((0,a.useEffect)(()=>{if(!F||0===R.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 R)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)},[F,R]),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."}):x?0===k.length?(0,n.jsxs)("div",{className:"relative flex h-full items-center justify-center text-[11px] text-text-tertiary",children:[s&&(0,n.jsx)(ea,{palette:t,onAdd:L}),s?"No nodes yet — pick a variant from the palette.":"No nodes yet — switch to YAML view to add one."]}):(0,n.jsxs)("div",{className:"relative h-full w-full",children:[s&&(0,n.jsx)(ea,{palette:t,onAdd:L}),s&&(0,n.jsx)(ei,{onTidy:()=>j(e=>V(e))}),s&&_&&(0,n.jsx)(ed,{onPick:I,onClose:()=>O(!1)}),(0,n.jsxs)(T.Gc,{nodes:k,edges:C,nodeTypes:N,nodesDraggable:null!=s&&s,nodesConnectable:null!=s&&s,elementsSelectable:null!=s&&s,deleteKeyCode:s?["Backspace","Delete"]:null,onConnect:s?S:void 0,onNodesChange:s?A:void 0,onEdgesChange:s?E:void 0,onNodeClick:i?(e,t)=>i(t.id):void 0,onSelectionChange:e=>{let{nodes:t}=e;return v(t.map(e=>e.id))},proOptions:{hideAttribution:!0},connectionLineComponent:s?el:void 0,fitView:!0,children:[(0,n.jsx)(T.VS,{variant:T._5.Dots,gap:16,size:1}),(0,n.jsx)(T.H2,{showInteractive:!1}),void 0!==p&&(0,n.jsx)(es,{focusNodeId:null!=p?p:null,focusNonce:null!=h?h:0}),(0,n.jsx)(eo,{selectedIds:y})]})]}):(0,n.jsx)("div",{className:"flex h-full items-center justify-center text-[11px] text-text-tertiary",children:"Parsing…"})}function ea(e){let{palette:t,onAdd:r}=e,a=[{v:"prompt",label:"+ prompt"},{v:"bash",label:"+ bash"},{v:"skill",label:"+ skill"},{v:"cft",label:"+ cft"},{v:"approval",label:"+ approval"},{v:"if",label:"+ if"},{v:"switch",label:"+ switch"},{v:"iteration",label:"+ loop"},{v:"classify",label:"+ classify"},{v:"extract",label:"+ extract"},{v:"set",label:"+ set"},{v:"filter",label:"+ filter"},{v:"template",label:"+ template"},{v:"http",label:"+ http"},{v:"scheduleTrigger",label:"+ schedule"},{v:"webhookTrigger",label:"+ webhook"}];return(0,n.jsx)("div",{className:"absolute left-3 top-3 z-10 flex flex-col gap-1 rounded-md border border-border bg-surface-elevated p-1 shadow-md",children:(null!=t?t:a.map(e=>{let{v:t}=e;return{graph:"workflow",kind:t,core:!0,plugin:null,description:""}})).map(e=>{var t,l;return(0,n.jsxs)("button",{type:"button",onClick:()=>r(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:[null!=(l=null==(t=a.find(t=>{let{v:r}=t;return r===e.kind}))?void 0:t.label)?l:"+ ".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 el(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 es(e){let{focusNodeId:t,focusNonce:r}=e,n=(0,T.VH)();return(0,a.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 eo(e){let{selectedIds:t}=e,r=(0,T.VH)(),n=t.join(",");return(0,a.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 ei(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 ed(e){let{onPick:t,onClose:r}=e,[l,s]=(0,a.useState)(""),o=[{v:"prompt",label:"prompt",help:"Run an LLM prompt with the run context."},{v:"bash",label:"bash",help:"Run a shell snippet."},{v:"skill",label:"skill",help:"Invoke a registered skill (e.g. omni-digest)."},{v:"cft",label:"cft",help:"Run a CFT (e.g. pdca, swot)."},{v:"approval",label:"approval",help:"Pause for human approval."},{v:"if",label:"if",help:"Branch on a boolean condition (then / else)."},{v:"switch",label:"switch",help:"N-way branch on an expression value."},{v:"iteration",label:"iteration",help:"Run a bash body for each element of an array."},{v:"classify",label:"classify",help:"LLM picks one class label from a list."},{v:"extract",label:"extract",help:"LLM fills a JSON schema from free text."},{v:"set",label:"set",help:"Build a record of derived values."},{v:"filter",label:"filter",help:"Keep array elements where a condition holds."},{v:"template",label:"template",help:"{{var}} substitution into a string template."},{v:"http",label:"http",help:"HTTP request (GET/POST/...). Parsed JSON output."},{v:"scheduleTrigger",label:"schedule",help:"Cron / interval trigger (daemon-side dispatch v2)."},{v:"webhookTrigger",label:"webhook",help:"HTTP entry point (daemon-side dispatch v2)."}].filter(e=>e.label.includes(l.toLowerCase())||e.help.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:r,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=>(0,n.jsx)("li",{children:(0,n.jsxs)("button",{type:"button",onClick:()=>t(e.v),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:er[e.v]},children:e.label}),(0,n.jsx)("span",{className:"text-text-tertiary",children:e.help})]})},e.v))]})]})}function ec(e){let{data:t}=e,{raw:r,statusEntry:a,issues:l}=t,s=(0,T.Pj)(e=>e.transform[2]<.7),o=r.branches;return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(T.h7,{type:"target",position:E.yX.Left}),s?(0,n.jsx)(eu,{raw:r,statusEntry:a}):function(e,t,r){var a,l,s,o;let i=t?Z[t.status]:null,d=(s=e.approvalDelivery)&&null!=(o=ee[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:er[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)(T.h7,{type:"source",position:E.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)(T.h7,{type:"source",position:E.yX.Right})]})}function eu(e){let{raw:t,statusEntry:r}=e,a=r?Z[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:er[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"}})]})}E.rN;var ep=r(10708),eh=r(94481),em=r(80571),ex=r(27334),ef=r(4856);function eg(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)(ep.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)(em.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)(ex.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)(ef.A,{className:"h-3 w-3"}),"Apply"]})]})]})]})})}function eb(e){let{currentYaml:t,skills:r,onGenerated:l,onClose:s}=e,[o,i]=(0,a.useState)(""),[d,c]=(0,a.useState)(""),[u,p]=(0,a.useState)(null),h=(0,A.up)(),m=(0,A.hM)(),x=!!(t&&t.trim().length>0),f=h.error instanceof Error?h.error.message:m.error instanceof Error?m.error.message:h.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)(b.A,{className:"h-4 w-4 text-accent"}),(0,n.jsx)("span",{className:"text-xs font-medium",children:x?"Refine workflow with AI":"Generate workflow from text"})]}),(0,n.jsx)("button",{type:"button",onClick:s,className:"rounded p-1 text-text-tertiary hover:bg-surface hover:text-text-primary","aria-label":"Close NL prompt",children:(0,n.jsx)(ep.A,{className:"h-3 w-3"})})]}),(0,n.jsxs)("div",{className:"px-3 pb-3",children:[(0,n.jsx)("textarea",{value:o,onChange:e=>i(e.target.value),placeholder:x?'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:d,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(!o.trim()||m.isPending)return;let e={intent:o.trim(),preview:!0};x&&t&&(e.context="current yaml:\n".concat(t)),m.mutate(e,{onSuccess:e=>p(e)})},disabled:!o.trim()||m.isPending||h.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)(j.A,{className:"h-3 w-3 animate-spin"}),"Synthing…"]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(eh.A,{className:"h-3 w-3"}),"Synth (trigger-aware)"]})}),(0,n.jsx)("button",{type:"button",onClick:()=>{if(!o.trim()||h.isPending)return;let e={prompt:o.trim()};d&&(e.provider=d),r&&r.length>0&&(e.skills=r),x&&t&&(e.currentYaml=t),h.mutate(e,{onSuccess:e=>{l(e)}})},disabled:!o.trim()||h.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:h.isPending?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(j.A,{className:"h-3 w-3 animate-spin"}),"Generating…"]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(b.A,{className:"h-3 w-3"}),x?"Refine":"Generate"]})})]})]}),f&&(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)(em.A,{className:"mt-0.5 h-3 w-3 shrink-0"}),(0,n.jsx)("span",{children:f})]}),u&&(0,n.jsx)(eg,{result:u,onApply:(e,t)=>{p(null),l({yaml:e,warnings:[],raw:e,definition:void 0})},onRefine:()=>p(null),onCancel:()=>p(null)}),h.data&&h.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:h.data.warnings.slice(0,5).map((e,t)=>(0,n.jsxs)("li",{className:"flex items-start gap-1",children:[(0,n.jsx)(em.A,{className:"mt-0.5 h-3 w-3 shrink-0"}),(0,n.jsx)("span",{children:e})]},t))})]})]})}let ey={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 ev(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(ey[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 ej(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})]})}function ew(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 ek(e){var t,r,l,s,o,i;let{definition:d,nodeId:c,onChange:u}=e,p=(null!=(t=d.nodes)?t:[]).find(e=>e.id===c),h=ew(p),[m,x]=(0,a.useState)(h.type),[f,g]=(0,a.useState)(null!=(r=h.cron)?r:"0 9 * * *"),[b,y]=(0,a.useState)(String(null!=(l=h.interval)?l:36e5)),[v,j]=(0,a.useState)(null!=(s=h.timezone)?s:"Asia/Seoul"),[w,k]=(0,a.useState)(String(null!=(o=h.jitter_seconds)?o:"")),[N,C]=(0,a.useState)(String(null!=(i=h.max_runs)?i:"")),[S,A]=(0,a.useState)(!1!==h.enabled);(0,a.useEffect)(()=>{let e=ew(p);x(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,a.useCallback)(()=>{let e=Number(b),t=""===w?void 0:Number(w),r=""===N?void 0:Number(N);return{type:m,cron:"cron"===m?f.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,f,b,v,w,N,S]),E=(0,a.useRef)(null);(0,a.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}}(d,c,T()))},500),()=>{E.current&&clearTimeout(E.current)}},[p,c,d,T,u]);let M="cron"===m?z(f):null,_=Number(b)/1e3,O=S&&("cron"!==m||(null==M?void 0:M.matched))?"valid":"warning",I=S?"cron"===m?(null==M?void 0:M.matched)?"cron ok":"custom cron":Number.isFinite(_)&&_>0?"every ".concat(_,"s"):"interval invalid":"disabled";return(0,n.jsxs)(ev,{variantLabel:"Schedule",validationStatus:O,validationMessage:I,children:[(0,n.jsx)(ej,{label:"type",children:(0,n.jsxs)("select",{value:m,onChange:e=>x(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)(ej,{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)(ej,{label:"presets",full:!0,children:(0,n.jsx)("div",{className:"flex flex-wrap gap-1",children:q.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)(ej,{label:"cron expression",full:!0,hint:null==M?void 0:M.text,children:(0,n.jsx)("input",{value:f,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)(ej,{label:"interval (ms)",hint:"= ".concat(_||"?","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)(ej,{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)(ej,{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)(ej,{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 eN=["GET","POST","PUT","PATCH","DELETE"];function eC(e){let t=null==e?void 0:e.webhookTrigger;if(!t||"object"!=typeof t)return{method:"POST",path:"/hooks/example",auth:"none"};let r=eN.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 eS(e){var t,r,l,s;let{definition:o,nodeId:i,onChange:d}=e,c=(null!=(t=o.nodes)?t:[]).find(e=>e.id===i),u=eC(c),[p,h]=(0,a.useState)(u.method),[m,x]=(0,a.useState)(u.path),[f,g]=(0,a.useState)(u.auth),[b,y]=(0,a.useState)(null!=(r=u.token)?r:""),[v,j]=(0,a.useState)(null!=(l=u.username)?l:""),[w,k]=(0,a.useState)(null!=(s=u.password)?s:"");(0,a.useEffect)(()=>{var e,t,r;let n=eC(c);h(n.method),x(n.path),g(n.auth),y(null!=(e=n.token)?e:""),j(null!=(t=n.username)?t:""),k(null!=(r=n.password)?r:"")},[i,c]);let N=(0,a.useCallback)(()=>({method:p,path:m,auth:f,token:b,username:v,password:w}),[p,m,f,b,v,w]),C=(0,a.useRef)(null);(0,a.useEffect)(()=>{if(c)return C.current&&clearTimeout(C.current),C.current=setTimeout(()=>{d(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}}(o,i,N()))},500),()=>{C.current&&clearTimeout(C.current)}},[c,i,o,N,d]);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)(ev,{variantLabel:"Webhook",validationStatus:A,validationMessage:S.message,children:[(0,n.jsx)(ej,{label:"method",children:(0,n.jsx)("select",{value:p,onChange:e=>h(e.target.value),className:"w-full rounded-md border border-border bg-surface px-2 py-1 text-xs",children:eN.map(e=>(0,n.jsx)("option",{value:e,children:e},e))})}),(0,n.jsx)(ej,{label:"path",hint:"URL: ".concat(T),children:(0,n.jsx)("input",{value:m,onChange:e=>x(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)(ej,{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:f===e,onChange:()=>g(e)}),(0,n.jsx)("span",{className:"text-text-tertiary",children:e})]},e))})}),"bearer"===f&&(0,n.jsx)(ej,{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"===f&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(ej,{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)(ej,{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 eA=["GET","POST","PUT","PATCH","DELETE","HEAD"];function eT(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=eA.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 eE(e){var t,r,l,s;let{definition:o,nodeId:i,onChange:d}=e,c=(null!=(t=o.nodes)?t:[]).find(e=>e.id===i),u=eT(c),[p,h]=(0,a.useState)(u.method),[m,x]=(0,a.useState)(u.url),[f,g]=(0,a.useState)(u.headers),[b,y]=(0,a.useState)(u.body),[v,j]=(0,a.useState)(u.auth),[w,k]=(0,a.useState)(null!=(r=u.token)?r:""),[N,C]=(0,a.useState)(null!=(l=u.username)?l:""),[S,A]=(0,a.useState)(null!=(s=u.password)?s:""),[T,E]=(0,a.useState)(u.timeoutMs);(0,a.useEffect)(()=>{var e,t,r;let n=eT(c);h(n.method),x(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)},[i,c]);let M=(0,a.useCallback)(()=>({method:p,url:m,headers:f,body:b,auth:v,token:w,username:N,password:S,timeoutMs:T}),[p,m,f,b,v,w,N,S,T]),_=(0,a.useRef)(null);(0,a.useEffect)(()=>{if(c)return _.current&&clearTimeout(_.current),_.current=setTimeout(()=>{d(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}}(o,i,M()))},500),()=>{_.current&&clearTimeout(_.current)}},[c,i,o,M,d]);let O=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=O.ok?"valid":"error",L=(e,t,r)=>{g(n=>n.map((n,a)=>a===e?{key:t,value:r}:n))};return(0,n.jsxs)(ev,{variantLabel:"HTTP",validationStatus:I,validationMessage:O.message,children:[(0,n.jsx)(ej,{label:"method",children:(0,n.jsx)("select",{value:p,onChange:e=>h(e.target.value),className:"w-full rounded-md border border-border bg-surface px-2 py-1 text-xs",children:eA.map(e=>(0,n.jsx)("option",{value:e,children:e},e))})}),(0,n.jsx)(ej,{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)(ej,{label:"url",full:!0,hint:"supports $ARGUMENTS variable",children:(0,n.jsx)("input",{value:m,onChange:e=>x(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)(ej,{label:"headers",full:!0,children:(0,n.jsxs)("div",{className:"flex flex-col gap-1",children:[f.map((e,t)=>(0,n.jsxs)("div",{className:"flex gap-1",children:[(0,n.jsx)("input",{value:e.key,onChange:r=>L(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=>L(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)(ej,{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)(ej,{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)(ej,{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)(ej,{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)(ej,{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 eM=["message","mention","reaction"];function e_(e){let t=null==e?void 0:e.discordTrigger;return t&&"object"==typeof t?{kind:eM.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 eO(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 eI(e){var t,r,l,s;let{definition:o,nodeId:i,onChange:d}=e,c=(null!=(t=o.nodes)?t:[]).find(e=>e.id===i),u=e_(c),[p,h]=(0,a.useState)(u.kind),[m,x]=(0,a.useState)(null!=(r=u.channel)?r:""),[f,g]=(0,a.useState)(null!=(l=u.user)?l:""),[b,y]=(0,a.useState)(null!=(s=u.pattern)?s:"");(0,a.useEffect)(()=>{var e,t,r;let n=e_(c);h(n.kind),x(null!=(e=n.channel)?e:""),g(null!=(t=n.user)?t:""),y(null!=(r=n.pattern)?r:"")},[i,c]);let v=(0,a.useCallback)(()=>({kind:p,channel:m,user:f,pattern:b}),[p,m,f,b]),j=(0,a.useRef)(null);(0,a.useEffect)(()=>{if(c)return j.current&&clearTimeout(j.current),j.current=setTimeout(()=>{d(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}}(o,i,v()))},500),()=>{j.current&&clearTimeout(j.current)}},[c,i,o,v,d]);let w=eO(b),k=[m&&"#".concat(m),f&&"@".concat(f),b&&"/".concat(b,"/")].filter(Boolean).join(" \xb7 "),N=w.ok?"valid":"error",C=w.ok?k||"no filters":w.message;return(0,n.jsxs)(ev,{variantLabel:"Discord",validationStatus:N,validationMessage:C,children:[(0,n.jsx)(ej,{label:"kind",children:(0,n.jsx)("select",{value:p,onChange:e=>h(e.target.value),className:"w-full rounded-md border border-border bg-surface px-2 py-1 text-xs",children:eM.map(e=>(0,n.jsx)("option",{value:e,children:e},e))})}),(0,n.jsx)(ej,{label:"channel (name or id)",hint:"e.g. ops \xb7 1234567890",children:(0,n.jsx)("input",{value:m,onChange:e=>x(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)(ej,{label:"user (regex \xb7 optional)",hint:"match by username — e.g. .* \xb7 admin",children:(0,n.jsx)("input",{value:f,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)(ej,{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 eL=["message","command","callback_query"];function eP(e){let t=null==e?void 0:e.telegramTrigger;return t&&"object"==typeof t?{kind:eL.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 eR(e){var t,r,l,s,o;let{definition:i,nodeId:d,onChange:c}=e,u=(null!=(t=i.nodes)?t:[]).find(e=>e.id===d),p=eP(u),[h,m]=(0,a.useState)(p.kind),[x,f]=(0,a.useState)(null!=(r=p.chat)?r:""),[g,b]=(0,a.useState)(null!=(l=p.user)?l:""),[y,v]=(0,a.useState)(null!=(s=p.command)?s:""),[j,w]=(0,a.useState)(null!=(o=p.pattern)?o:"");(0,a.useEffect)(()=>{var e,t,r,n;let a=eP(u);m(a.kind),f(null!=(e=a.chat)?e:""),b(null!=(t=a.user)?t:""),v(null!=(r=a.command)?r:""),w(null!=(n=a.pattern)?n:"")},[d,u]);let k=(0,a.useCallback)(()=>({kind:h,chat:x,user:g,command:y,pattern:j}),[h,x,g,y,j]),N=(0,a.useRef)(null);(0,a.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}}(i,d,k()))},500),()=>{N.current&&clearTimeout(N.current)}},[u,d,i,k,c]);let C=eO(j),S=[x&&"@".concat(x),g&&"from:".concat(g),"command"===h&&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)(ev,{variantLabel:"Telegram",validationStatus:A,validationMessage:T,children:[(0,n.jsx)(ej,{label:"kind",children:(0,n.jsx)("select",{value:h,onChange:e=>m(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)(ej,{label:"chat (id or @group)",hint:"e.g. @my_group \xb7 -1001234567890",children:(0,n.jsx)("input",{value:x,onChange:e=>f(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"===h&&(0,n.jsx)(ej,{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)(ej,{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)(ej,{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 eD(e){let t=null==e?void 0:e.manualTrigger;return t&&"object"==typeof t?{description:"string"==typeof t.description?t.description:void 0}:{}}function eF(e){var t,r;let{definition:l,nodeId:s,onChange:o}=e,i=(null!=(t=l.nodes)?t:[]).find(e=>e.id===s),d=eD(i),[c,u]=(0,a.useState)(null!=(r=d.description)?r:"");(0,a.useEffect)(()=>{var e;u(null!=(e=eD(i).description)?e:"")},[s,i]);let p=(0,a.useCallback)(()=>({description:c}),[c]),h=(0,a.useRef)(null);return(0,a.useEffect)(()=>{if(i)return h.current&&clearTimeout(h.current),h.current=setTimeout(()=>{o(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}}(l,s,p()))},500),()=>{h.current&&clearTimeout(h.current)}},[i,s,l,p,o]),(0,n.jsxs)(ev,{variantLabel:"Manual",validationStatus:"valid",validationMessage:"explicit run only",children:[(0,n.jsx)(ej,{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)(ej,{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 ez(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 eq(e){var t,r;let{definition:l,nodeId:s,onChange:o}=e,i=(null!=(t=l.nodes)?t:[]).find(e=>e.id===s),d=ez(i),[c,u]=(0,a.useState)(d.path),[p,h]=(0,a.useState)(d.auth),[m,x]=(0,a.useState)(null!=(r=d.token)?r:""),[f,g]=(0,a.useState)(d.sessionMode),[b,y]=(0,a.useState)(d.streaming);(0,a.useEffect)(()=>{var e;let t=ez(i);u(t.path),h(t.auth),x(null!=(e=t.token)?e:""),g(t.sessionMode),y(t.streaming)},[s,i]);let v=(0,a.useCallback)(()=>({path:c,auth:p,token:m,sessionMode:f,streaming:b}),[c,p,m,f,b]),j=(0,a.useRef)(null);(0,a.useEffect)(()=>{if(i)return j.current&&clearTimeout(j.current),j.current=setTimeout(()=>{o(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}}(l,s,v()))},500),()=>{j.current&&clearTimeout(j.current)}},[i,s,l,v,o]);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)(ev,{variantLabel:"Chat",validationStatus:k,validationMessage:w.message,children:[(0,n.jsx)(ej,{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)(ej,{label:"session mode",children:(0,n.jsxs)("select",{value:f,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)(ej,{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:()=>h(e)}),(0,n.jsx)("span",{className:"text-text-tertiary",children:e})]},e))})}),"bearer"===p&&(0,n.jsx)(ej,{label:"token",full:!0,children:(0,n.jsx)("input",{type:"password",value:m,onChange:e=>x(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)(ej,{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)(ej,{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 eW=new Set(["type","title","description","default","enum","format","writeOnly","x-multiline","properties","required","items","minLength","maxLength","pattern","minimum","maximum","minItems","maxItems"]),eG=new Set(["string","number","integer","boolean","object","array"]);function eB(e){return null===e||"object"!=typeof e||Array.isArray(e)?null:e}function eH(e){let t=e.type;return"string"==typeof t&&eG.has(t)?t:null}function e$(e,t){return e?"".concat(e,".").concat(t):t}function eK(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]=eK(o,a.join("."),r),l}function eU(e,t){if(""!==t){if("number"===e.type||"integer"===e.type){let e=Number(t);return Number.isFinite(e)?e:t}return t}}function eJ(e){let{schema:t,value:r,onChange:l}=e,s=(0,a.useMemo)(()=>(function(e){let t=[],r=[],n=new Set;return!function e(a,l,s,o){let i=eB(a);if(!i||n.has(i))return void r.push(l||"(root)");for(let e of(n.add(i),Object.keys(i)))eW.has(e)||r.push(e$(l,e));let d=eH(i);void 0===i.type||d||r.push(e$(l,"type"));let c=null!=d?d:void 0===i.type?eB(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)&&eB(i.properties)){let t=new Set(Array.isArray(i.required)?i.required:[]);for(let[r,n]of Object.entries(i.properties))e(n,e$(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:o,arrays:i}=(0,a.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}})(s.fields),[s]),d=(0,a.useMemo)(()=>(function(e,t){let r=[],n=new Set;return!function e(t,a,l,s){let o=eB(t);if(!o||n.has(o))return;n.add(o);let i=eH(o);if(i&&!("object"===i?null!==eB(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=eB(t),a=eB(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=eB(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:e$(l,e),message:"Required."});if(s<6){let t=eB(o.properties);if(t)for(let[r,n]of Object.entries(t))Object.hasOwn(d,r)&&void 0!==d[r]&&e(n,d[r],e$(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:[s.unsupported.length>0&&(0,n.jsxs)("p",{className:"text-[11px] text-warning","data-schema-unsupported":!0,children:["이 노드의 설정 일부는 폼이 다루지 않습니다(",s.unsupported.slice(0,3).join(", "),s.unsupported.length>3?" 외 ".concat(s.unsupported.length-3):"",") — YAML 에서 고치세요."]}),i.length>0&&(0,n.jsxs)("p",{className:"text-[11px] text-text-tertiary",children:["목록 칸(",i.map(e=>e.label).join(", "),")은 YAML 에서 고치세요."]}),o.map(e=>{var t,a;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),i="schema-".concat(e.path),c=(t=e.path,null==(a=d.find(e=>e.path===t))?void 0:a.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:i,type:"checkbox",checked:!0===o,onChange:t=>l(eK(r,e.path,t.target.checked))}):e.enum&&e.enum.length>0?(0,n.jsxs)("select",{id:i,className:p,value:void 0===o?"":String(o),onChange:t=>{let n=e.enum.find(e=>String(e)===t.target.value);l(eK(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:i,rows:4,className:"".concat(p," font-mono"),value:"string"==typeof o?o:void 0===o?"":String(o),onChange:t=>l(eK(r,e.path,eU(e,t.target.value)))}):(0,n.jsx)("input",{id:i,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=>l(eK(r,e.path,eU(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:i,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)})]})}function eY(e){var t,r,l,s;let{definition:o,nodeId:i,skills:d,onChange:c,onClose:u,onDelete:p,palette:h}=e,m=(0,a.useMemo)(()=>{var e,t;return null!=(t=(null!=(e=o.nodes)?e:[]).find(e=>e.id===i))?t:null},[o,i]),x=(0,a.useMemo)(()=>m?G(m):"unknown",[m]),[f,g]=(0,a.useState)(null!=(t=null==m?void 0:m.id)?t:""),[b,y]=(0,a.useState)("string"==typeof(null==m?void 0:m.bash)?m.bash:""),[j,w]=(0,a.useState)("string"==typeof(null==m?void 0:m.prompt)?m.prompt:""),[k,N]=(0,a.useState)("string"==typeof(null==m?void 0:m.skill)?m.skill:""),[C,S]=(0,a.useState)("string"==typeof(null==m?void 0:m.arguments)?m.arguments:""),[A,T]=(0,a.useState)("string"==typeof(null==m?void 0:m.cft)?m.cft:""),E=(null==m?void 0:m.approval)&&"object"==typeof m.approval?m.approval:null,[M,_]=(0,a.useState)(null!=(r=null==E?void 0:E.message)?r:""),[O,I]=(0,a.useState)(null!=(l=null==E?void 0:E.delivery)?l:"modal"),[L,P]=(0,a.useState)("string"==typeof(null==m?void 0:m.when)?m.when:""),[R,D]=(0,a.useState)(Array.isArray(null==m?void 0:m.depends_on)?[...m.depends_on]:[]);(0,a.useEffect)(()=>{var e,t;if(!m)return;g(m.id),y("string"==typeof m.bash?m.bash:""),w("string"==typeof m.prompt?m.prompt:""),N("string"==typeof m.skill?m.skill:""),S("string"==typeof m.arguments?m.arguments:""),T("string"==typeof m.cft?m.cft:"");let r=m.approval&&"object"==typeof m.approval?m.approval:null;_(null!=(e=null==r?void 0:r.message)?e:""),I(null!=(t=null==r?void 0:r.delivery)?t:"modal"),P("string"==typeof m.when?m.when:""),D(Array.isArray(m.depends_on)?[...m.depends_on]:[])},[i,m]);let F=(0,a.useMemo)(()=>{var e,t;let r="string"==typeof(null==m?void 0:m.kind)?m.kind:null;return r&&null!=(t=null==h||null==(e=h.find(e=>e.kind===r&&e.schema))?void 0:e.schema)?t:null},[m,h]),z=(0,a.useMemo)(()=>{let e=null==m?void 0:m.inputs;return e&&"object"==typeof e&&!Array.isArray(e)?e:{}},[m]),[q,W]=(0,a.useState)(z);(0,a.useEffect)(()=>{W(z)},[i,z]),(0,a.useEffect)(()=>{if(!m||!F||JSON.stringify(q)===JSON.stringify(z))return;let e=setTimeout(()=>{var e;c({...o,nodes:(null!=(e=o.nodes)?e:[]).map(e=>e.id===i?{...e,inputs:q}:e)})},500);return()=>clearTimeout(e)},[q,z,F,m,i,o,c]);let B=(0,a.useCallback)(()=>{var e,t;if(!m)return{};let r={};if(f!==m.id&&/^[a-z0-9]+(-[a-z0-9]+)*$/.test(f)&&(r.id=f),"bash"===x&&b!==m.bash&&(r.bash=b),"prompt"===x&&j!==m.prompt&&(r.prompt=j),"skill"===x&&(k!==m.skill&&(r.skill=k),C!==(null!=(e=m.arguments)?e:"")&&(r.arguments=C)),"cft"===x&&A!==m.cft&&(r.cft=A),"approval"===x){let e=null!=E?E:{message:"",delivery:"modal"};(M!==e.message||O!==(null!=(t=e.delivery)?t:"modal"))&&(r.approval={message:M,delivery:O})}L!==("string"==typeof m.when?m.when:"")&&(r.when=L.trim()?L:null);let n=Array.isArray(m.depends_on)?m.depends_on:[];return(R.length!==n.length||R.some((e,t)=>n[t]!==e))&&(r.depends_on=R),r},[m,x,E,f,b,j,k,C,A,M,O,L,R]),$=(0,a.useRef)(null);if((0,a.useEffect)(()=>{if(m)return $.current&&clearTimeout($.current),$.current=setTimeout(()=>{let e=B();if(0===Object.keys(e).length)return;let t=function(e,t,r){var n,a;if(!(null!=(n=e.nodes)?n:[]).find(e=>e.id===t))return e;let l=e,s=t;r.id&&r.id!==t&&(s=(l=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 o=(null!=(a=l.nodes)?a:[]).map(e=>{if(e.id!==s)return e;let t={...e},n=G(e),a=["bash","prompt","skill","cft","approval"].find(e=>void 0!==r[e]);return a&&a!==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{...l,nodes:o}}(o,i,e);t!==o&&c(t)},500),()=>{$.current&&clearTimeout($.current)}},[m,i,o,B,c]),!m)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"===x||"webhookTrigger"===x||"http"===x||"discordTrigger"===x||"telegramTrigger"===x||"manualTrigger"===x||"chatTrigger"===x)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:i}),(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)(v.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)(ep.A,{className:"h-3 w-3"})})]})]}),(0,n.jsxs)("div",{className:"px-3 pb-3",children:["scheduleTrigger"===x&&(0,n.jsx)(ek,{definition:o,nodeId:i,onChange:c}),"webhookTrigger"===x&&(0,n.jsx)(eS,{definition:o,nodeId:i,onChange:c}),"http"===x&&(0,n.jsx)(eE,{definition:o,nodeId:i,onChange:c}),"discordTrigger"===x&&(0,n.jsx)(eI,{definition:o,nodeId:i,onChange:c}),"telegramTrigger"===x&&(0,n.jsx)(eR,{definition:o,nodeId:i,onChange:c}),"manualTrigger"===x&&(0,n.jsx)(eF,{definition:o,nodeId:i,onChange:c}),"chatTrigger"===x&&(0,n.jsx)(eq,{definition:o,nodeId:i,onChange:c})]})]});let K=(null!=(s=o.nodes)?s:[]).filter(e=>e.id!==i);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:m?H(m,x):x}),(0,n.jsx)("span",{className:"font-mono text-xs text-text-primary",children:i})]}),(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)(v.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)(ep.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)(eV,{label:"id",children:(0,n.jsx)("input",{value:f,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"})}),(0,n.jsx)(eV,{label:"when (gating expression)",children:(0,n.jsx)("input",{value:L,onChange:e=>P(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"})}),F&&(0,n.jsx)(eJ,{schema:F,value:q,onChange:W}),"bash"===x&&(0,n.jsx)(eV,{label:"bash",full:!0,children:(0,n.jsx)("textarea",{value:b,onChange:e=>y(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"})}),"prompt"===x&&(0,n.jsx)(eV,{label:"prompt",full:!0,children:(0,n.jsx)("textarea",{value:j,onChange:e=>w(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"})}),"skill"===x&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(eV,{label:"skill",children:[(0,n.jsx)("input",{value:k,onChange:e=>N(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"}),d&&d.length>0&&(0,n.jsx)("datalist",{id:"workflow-skill-options",children:d.map(e=>(0,n.jsx)("option",{value:e},e))})]}),(0,n.jsx)(eV,{label:"arguments",full:!0,children:(0,n.jsx)("textarea",{value:C,onChange:e=>S(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"})})]}),"cft"===x&&(0,n.jsx)(eV,{label:"cft",full:!0,children:(0,n.jsx)("input",{value:A,onChange:e=>T(e.target.value),spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})}),"approval"===x&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(eV,{label:"message",full:!0,children:(0,n.jsx)("textarea",{value:M,onChange:e=>_(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)(eV,{label:"delivery channel",children:(0,n.jsxs)("select",{value:O,onChange:e=>I(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)(eV,{label:"depends_on",full:!0,children:(0,n.jsx)(eX,{value:R,options:K.map(e=>e.id),onChange:D})})]})]})}function eV(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 eX(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 eQ=r(83933);let eZ={running:"Running",orphaned:"Orphaned",done:"Done",failed:"Failed",unknown:"Unknown"},e0={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 e1(e){let{onSelect:t,selectedRunId:r,enabled:l}=e,s=(0,A.b_)({enabled:null==l||l}),[o,i]=(0,a.useState)("all"),d=(0,a.useMemo)(()=>{var e,t;let r=null!=(t=null==(e=s.data)?void 0:e.runs)?t:[];return"all"===o?r:r.filter(e=>e.status===o)},[s.data,o]),c=(0,a.useMemo)(()=>{var e,t;let r={all:0,running:0,orphaned:0,done:0,failed:0};for(let n of null!=(t=null==(e=s.data)?void 0:e.runs)?t:[])r.all+=1,n.status in r&&(r[n.status]+=1);return r},[s.data]);return s.isLoading?(0,n.jsxs)("div",{className:"flex h-full items-center justify-center text-[11px] text-text-tertiary",children:[(0,n.jsx)(j.A,{className:"mr-1.5 h-3 w-3 animate-spin"}),"loading runs…"]}):s.error?(0,n.jsxs)("div",{className:"flex h-full items-center justify-center text-[11px] text-error",children:[(0,n.jsx)(y.A,{className:"mr-1.5 h-3 w-3"}),"failed to load runs: ",s.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)(g.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)(e3,{label:"all"===e?"all":eZ[e],count:c[e],active:o===e,onClick:()=>i(e)},e))})]}),0===d.length?(0,n.jsx)("div",{className:"flex flex-1 items-center justify-center text-[11px] text-text-tertiary",children:"all"===o?"No runs yet — pick a workflow + click Run to start one.":"No ".concat(eZ[o].toLowerCase()," runs.")}):(0,n.jsx)("ul",{className:"flex-1 overflow-y-auto",children:d.map(e=>(0,n.jsx)(e2,{run:e,selected:e.runId===r,onSelect:()=>t(e.runId,e.workflowName)},e.runId))})]})}function e3(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 e2(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)(e5,{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)(d.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(e0[t.status]),children:eZ[t.status]})]})})}function e5(e){let{status:t}=e;return"running"===t?(0,n.jsx)(j.A,{className:"h-3.5 w-3.5 shrink-0 animate-spin text-info"}):"done"===t?(0,n.jsx)(S.A,{className:"h-3.5 w-3.5 shrink-0 text-success"}):"failed"===t?(0,n.jsx)(y.A,{className:"h-3.5 w-3.5 shrink-0 text-error"}):"orphaned"===t?(0,n.jsx)(eQ.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 e4(e){var t,r;let{runId:l,message:s,onDismiss:o,onResolved:i}=e,[d,c]=(0,a.useState)(""),u=(0,A.Yk)(),p=(0,A.Ux)(),h=u.isPending||p.isPending;(0,a.useEffect)(()=>{let e=e=>{"Escape"!==e.key||h||o()};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[h,o]);let m=async()=>{try{await u.mutateAsync({runId:l,response:d.trim()?d:void 0}),null==i||i("approved")}catch(e){}},x=async()=>{try{await p.mutateAsync({runId:l,reason:d.trim()?d:void 0}),null==i||i("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)(y.A,{className:"h-4 w-4 text-warning"}),"Approval needed"]}),(0,n.jsx)("button",{type:"button",onClick:o,disabled:h,"aria-label":"Close approval modal",className:"rounded-md p-1 text-text-tertiary hover:bg-surface-elevated disabled:opacity-50",children:(0,n.jsx)(ep.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:l.slice(0,28)})]}),(0,n.jsx)("p",{className:"whitespace-pre-wrap text-[13px] leading-snug",children:s}),(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:d,onChange:e=>c(e.target.value),placeholder:"LGTM / type a reason for rejection / leave empty for bare approval",rows:3,disabled:h,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:x,disabled:h,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)(j.A,{className:"h-3 w-3 animate-spin"}):(0,n.jsx)(y.A,{className:"h-3 w-3"}),"Reject"]}),(0,n.jsxs)("button",{type:"button",onClick:m,disabled:h,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)(j.A,{className:"h-3 w-3 animate-spin"}):(0,n.jsx)(S.A,{className:"h-3 w-3"}),"Approve"]})]})]})})}let e6="elanous.workflows.layout",e9={leftCollapsed:!1,rightCollapsed:!1,canvasOnly:!1,leftWidthPx:240,rightWidthPx:320};function e8(e,t){return Number.isFinite(e)?e<160?160:e>640?640:Math.round(e):t}let e7={project:"Project",global:"Global",builtin:"Built-in"};function te(){let{palette:e}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,o.Qj)()?(0,n.jsx)(tr,{palette:e}):(0,n.jsx)(tt,{})}function tt(){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)(d.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 tr(e){var t,r,l,s,o,N,C,S,T,E,M,_;let{palette:O}=e,I=(0,A.mP)(),[L,P]=(0,a.useState)(null),[R,D]=(0,a.useState)(""),[F,z]=(0,a.useState)(""),[q,W]=(0,a.useState)(null),[G,B]=(0,a.useState)(!1),[H,$]=(0,a.useState)(""),[K,U]=(0,a.useState)(null),[J,V]=(0,a.useState)("graph"),[Z,ee]=(0,a.useState)(!1),[et,er]=(0,a.useState)(!1),[ea,el]=(0,a.useState)(null),[es,eo]=(0,a.useState)(null),ei=(0,A.j3)(null!=L?L:"",{enabled:!!L&&!G}),ed=(0,A.yM)(),ec=(0,A.oE)(),eu=(0,A.xd)(),ep=(0,A.XL)(),eh=(0,A.b_)(),em=(0,a.useMemo)(()=>{var e,t,r;return L&&(null==(e=eh.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}(eh.data.runs,L))?void 0:t.runId)?r:null},[L,null==(t=eh.data)?void 0:t.runs]),ex=null!=q?q:em,ef=(0,A.uz)(ex),eg=(0,a.useMemo)(()=>{var e;if(null==(e=ef.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}(ef.data.events)},[null==(r=ef.data)?void 0:r.events]),ey=(0,A.zD)();(0,A.Ck)();let ev=(0,a.useMemo)(()=>{var e,t,r;return null!=(r=(null!=(t=null==(e=ey.data)?void 0:e.pending)?t:[]).find(e=>e.runId===q))?r:null},[ey.data,q]),ej=null!=(T=null==(l=ey.data)?void 0:l.pending.length)?T:0,[ew,ek]=(0,a.useState)(new Set);(0,a.useEffect)(()=>{ek(new Set)},[q]),(0,a.useEffect)(()=>{var e;G||(null==(e=ei.data)?void 0:e.yaml)!==void 0&&D(ei.data.yaml)},[null==(s=ei.data)?void 0:s.yaml,G]);let eN=(0,a.useRef)(null);(0,a.useEffect)(()=>{if(!R.trim())return;let e=setTimeout(()=>{var e;null==(e=eN.current)||e.abort();let t=new AbortController;eN.current=t,eu.mutateAsync({yaml:R,signal:t.signal}).catch(()=>void 0)},600);return()=>{var t;clearTimeout(e),null==(t=eN.current)||t.abort()}},[R]);let eC=(0,a.useMemo)(()=>{var e,t;let r={project:[],global:[],builtin:[]};for(let n of null!=(t=null==(e=I.data)?void 0:e.workflows)?t:[])r[n.source].push(n);return r},[null==(o=I.data)?void 0:o.workflows]),eS=null==(N=eu.data)?void 0:N.validation,eA=eS&&!eS.ok?eS.issues:[],eT=(0,a.useMemo)(()=>R.trim()?Q(R):null,[R]),eE=(0,a.useMemo)(()=>{if(eT&&0!==eA.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}}(eA,eT).byNodeId},[eT,eA]),eM=(0,a.useMemo)(()=>{if(!eT)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}(eT);return e.size>0?e:void 0},[eT]),e_=e=>{P(e),B(!1),W(null),el(null)},eO=async()=>{if(U(null),G){let e=H.trim()?i.test(H.trim())?null:"이름은 소문자\xb7숫자와 하이픈(-)만 쓸 수 있습니다. 예: weekly-report":"워크플로 이름을 먼저 적어 주세요.";if(e)return void U(e)}let e=G?H.trim():L;if(!e)return;let t=G?function(e,t){let r=/^name:[^\n]*$/m;return r.test(e)?e.replace(r,"name: ".concat(t)):"name: ".concat(t,"\n").concat(e)}(R,e):R;t!==R&&D(t);try{await ed.mutateAsync({name:e,body:{yaml:t,scope:"project"}}),B(!1),P(e)}catch(e){U(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?"저장 권한이 없습니다. 설정에서 연결 토큰을 확인해 주세요.":/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))}},eI=async()=>{if(L)try{let e=await ep.mutateAsync({name:L,args:F});W(e.runId)}catch(e){}},eL=async()=>{var e,t;if(!L||(null==(e=ei.data)?void 0:e.source)==="builtin")return;let r=(null==(t=ei.data)?void 0:t.source)==="global"?"global":"project";try{await ec.mutateAsync({name:L,scope:r}),P(null),D("")}catch(e){}},eP=(null==(C=ei.data)?void 0:C.source)==="builtin",eR=eu.isPending?"pending":eS?eS.ok?"ok":"error":"idle",eD=function(){let[e,t]=(0,a.useState)(()=>e9),r=(0,a.useRef)(!1);(0,a.useEffect)(()=>{t(function(){try{var e,t,r;let n=window.localStorage.getItem(e6);if(!n)return{...e9};return(e=JSON.parse(n))&&"object"==typeof e?{leftCollapsed:"boolean"==typeof e.leftCollapsed?e.leftCollapsed:e9.leftCollapsed,rightCollapsed:"boolean"==typeof e.rightCollapsed?e.rightCollapsed:e9.rightCollapsed,canvasOnly:"boolean"==typeof e.canvasOnly?e.canvasOnly:e9.canvasOnly,leftWidthPx:e8(null!=(t=e.leftWidthPx)?t:e9.leftWidthPx,e9.leftWidthPx),rightWidthPx:e8(null!=(r=e.rightWidthPx)?r:e9.rightWidthPx,e9.rightWidthPx)}:{...e9}}catch(e){return{...e9}}}()),r.current=!0},[]),(0,a.useEffect)(()=>{if(r.current)try{window.localStorage.setItem(e6,JSON.stringify(e))}catch(e){}},[e]);let n=(0,a.useCallback)(()=>{t(e=>({...e,leftCollapsed:!e.leftCollapsed}))},[]),l=(0,a.useCallback)(()=>{t(e=>({...e,rightCollapsed:!e.rightCollapsed}))},[]),s=(0,a.useCallback)(()=>{t(e=>({...e,canvasOnly:!e.canvasOnly}))},[]),o=(0,a.useCallback)(e=>{t(t=>({...t,leftWidthPx:e8(e,t.leftWidthPx)}))},[]),i=(0,a.useCallback)(e=>{t(t=>({...t,rightWidthPx:e8(e,t.rightWidthPx)}))},[]),d=(0,a.useCallback)(()=>{t({...e9})},[]);return(0,a.useMemo)(()=>({...e,toggleLeft:n,toggleRight:l,toggleCanvasOnly:s,setLeftWidth:o,setRightWidth:i,reset:d}),[e,n,l,s,o,i,d])}(),eF=!eD.canvasOnly,ez=!eD.canvasOnly,eq=eD.leftCollapsed?40:eD.leftWidthPx,eW=eD.rightCollapsed?40:eD.rightWidthPx;(0,a.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(),eD.toggleCanvasOnly())};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[eD]);let eG=(0,a.useCallback)((e,t)=>{let r="left"===e?eD.leftWidthPx:eD.rightWidthPx,n="left"===e?eD.setLeftWidth:eD.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)},[eD]);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)(d.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!=(E=null==(S=I.data)?void 0:S.workflows.length)?E:0," declared"]})]}),(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)("button",{type:"button",onClick:eD.toggleLeft,title:eD.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:eD.leftCollapsed?(0,n.jsx)(c.A,{className:"h-3 w-3"}):(0,n.jsx)(u.A,{className:"h-3 w-3"})}),(0,n.jsx)("button",{type:"button",onClick:eD.toggleCanvasOnly,title:eD.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(eD.canvasOnly?"border-accent/50 bg-accent/15 text-accent":"border-border text-text-tertiary hover:bg-surface-elevated"),children:eD.canvasOnly?(0,n.jsx)(p.A,{className:"h-3 w-3"}):(0,n.jsx)(h.A,{className:"h-3 w-3"})}),(0,n.jsx)("button",{type:"button",onClick:eD.toggleRight,title:eD.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:eD.rightCollapsed?(0,n.jsx)(m.A,{className:"h-3 w-3"}):(0,n.jsx)(x.A,{className:"h-3 w-3"})}),ej>0&&(0,n.jsxs)("button",{type:"button",onClick:()=>{var e;if(ev&&ew.has(ev.runId))return void(ev&&ek(e=>{let t=new Set(e);return t.delete(ev.runId),t}));let t=null==(e=ey.data)?void 0:e.pending[0];t&&t.runId!==q&&W(t.runId)},title:ev&&ew.has(ev.runId)?"Re-open approval modal for this run":"".concat(ej," 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)(f.A,{className:"h-3 w-3"}),(0,n.jsx)("span",{children:ej}),(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:()=>ee(e=>!e),className:"flex items-center gap-1 rounded-md border px-2 py-1 text-[11px] transition-colors ".concat(Z?"border-primary/40 bg-primary/15 text-primary":"border-border text-text-tertiary hover:bg-surface-elevated"),children:[(0,n.jsx)(g.A,{className:"h-3 w-3"}),Z?"Editor":"All runs"]}),(0,n.jsxs)("button",{type:"button",onClick:()=>er(e=>!e),title:et?"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(et?"border-accent/50 bg-accent/15 text-accent":"border-border text-text-tertiary hover:bg-surface-elevated"),children:[(0,n.jsx)(b.A,{className:"h-3 w-3"}),"AI"]}),(0,n.jsx)("button",{type:"button",onClick:()=>{B(!0),P(null),$(""),D("name: my-workflow\ndescription: |\n Use when: …\n Triggers: …\n Does: …\n NOT for: …\n\nprovider: claude\nmodel: sonnet\n\nnodes:\n - id: first\n bash: echo hello\n"),W(null),el(null)},className:"rounded-md bg-primary px-3 py-1 text-xs font-medium text-primary-foreground hover:bg-accent-hover transition-colors",children:"+ New"})]})]}),(0,n.jsxs)("div",{className:"flex flex-1 overflow-hidden",children:[eF&&(0,n.jsx)("aside",{style:{width:eq},className:"shrink-0 overflow-y-auto border-r border-border",children:eD.leftCollapsed?(0,n.jsx)("button",{type:"button",onClick:eD.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)(c.A,{className:"h-4 w-4"})}):["project","global","builtin"].map(e=>(0,n.jsx)(tn,{label:e7[e],entries:eC[e],selected:L,onSelect:e_},e))}),eF&&!eD.leftCollapsed&&(0,n.jsx)("div",{role:"separator","aria-orientation":"vertical","aria-label":"Resize workflow list",onPointerDown:e=>eG("left",{clientX:e.clientX,pointerId:e.pointerId,target:e.currentTarget}),className:"w-1 shrink-0 cursor-col-resize bg-transparent hover:bg-accent/30"}),(0,n.jsx)("section",{className:"flex flex-1 flex-col overflow-hidden min-w-0",children:Z?(0,n.jsx)(e1,{selectedRunId:q,onSelect:(e,t)=>{W(e),P(t),B(!1),ee(!1)}}):(0,n.jsxs)(n.Fragment,{children:[et&&(0,n.jsx)(eb,{currentYaml:R,onClose:()=>er(!1),onGenerated:e=>{var t;e.yaml&&(D(e.yaml),(null==(t=e.definition)?void 0:t.name)&&(B(!0),P(null),$(e.definition.name),W(null)))}}),G&&(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:H,onChange:e=>$(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})]}),!G&&L&&(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:L}),eP&&(0,n.jsx)("span",{className:"rounded bg-surface-elevated px-1.5 py-0.5 text-[10px] text-text-tertiary",children:"read-only (built-in)"}),(0,n.jsx)(ta,{mode:J,onChange:V})]}),(0,n.jsx)("div",{className:"flex items-center gap-2",children:(0,n.jsx)(tl,{status:eR})})]}),"graph"===J&&R.trim()?(0,n.jsxs)("div",{className:"flex flex-1 flex-col overflow-hidden bg-surface",children:[(0,n.jsx)("div",{className:ea?"flex-1 min-h-[180px] overflow-hidden":"flex-1 overflow-hidden",children:(0,n.jsx)(en,{palette:O,yaml:R,editable:!eP,onChangeYaml:D,onNodeClick:eP?void 0:e=>el(e),nodeStatuses:eg,nodeIssues:eE,cycleNodeIds:eM,focusNodeId:null!=(M=null==es?void 0:es.id)?M:null,focusNonce:null!=(_=null==es?void 0:es.nonce)?_:0,onRun:L&&!G?eI:void 0})}),ea&&!eP&&(()=>{let e=Q(R);return e?(0,n.jsx)(eY,{definition:e,nodeId:ea,palette:O,onChange:e=>D(X(e)),onClose:()=>el(null),onDelete:()=>{D(X(Y(e,ea))),el(null)}}):null})()]}):(0,n.jsx)("textarea",{value:R,onChange:e=>D(e.target.value),readOnly:eP,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"}),eA.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:eA.slice(0,8).map((e,t)=>{var r,a;let l=eT&&null!=(a=eE&&(null==(r=Object.entries(eE).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:()=>{V("graph"),eo(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)(y.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:[K&&(0,n.jsx)("p",{role:"alert",className:"mr-auto text-[11px] text-error",children:K}),L&&!eP&&!G&&(0,n.jsxs)("button",{type:"button",onClick:eL,className:"flex items-center gap-1 rounded-md border border-error/40 px-2 py-1 text-[11px] text-error hover:bg-error/10",children:[(0,n.jsx)(v.A,{className:"h-3 w-3"}),"Delete"]}),(0,n.jsxs)("button",{type:"button",onClick:eO,disabled:!L&&!G||eP||ed.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:[ed.isPending?(0,n.jsx)(j.A,{className:"h-3 w-3 animate-spin"}):(0,n.jsx)(w.A,{className:"h-3 w-3"}),"Save"]})]})]})}),ez&&!eD.rightCollapsed&&(0,n.jsx)("div",{role:"separator","aria-orientation":"vertical","aria-label":"Resize run panel",onPointerDown:e=>eG("right",{clientX:e.clientX,pointerId:e.pointerId,target:e.currentTarget}),className:"w-1 shrink-0 cursor-col-resize bg-transparent hover:bg-accent/30"}),ez&&(0,n.jsx)("aside",{style:{width:eW},className:"flex shrink-0 flex-col overflow-hidden border-l border-border",children:eD.rightCollapsed?(0,n.jsx)("button",{type:"button",onClick:eD.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)(m.A,{className:"h-4 w-4"})}):(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:F,onChange:e=>z(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:eI,disabled:!L||G||ep.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:[ep.isPending?(0,n.jsx)(j.A,{className:"h-3 w-3 animate-spin"}):(0,n.jsx)(k.A,{className:"h-3 w-3"}),"Run"]})]}),(0,n.jsxs)("div",{className:"flex-1 overflow-y-auto px-3 py-2 text-[11px]",children:[!q&&(0,n.jsx)("p",{className:"text-text-tertiary",children:"No active run. Press Run to start."}),q&&ef.data&&(0,n.jsx)(ts,{runId:q,events:ef.data.events,ok:ef.data.ok,outputs:ef.data.outputs})]})]})})]}),ev&&!ew.has(ev.runId)&&(0,n.jsx)(e4,{runId:ev.runId,message:ev.message,onDismiss:()=>ek(e=>{let t=new Set(e);return t.add(ev.runId),t})})]})}function tn(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 ta(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)(N.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)(C.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)(j.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)(S.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)(y.A,{className:"h-3 w-3"}),"invalid"]}):null}function ts(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)(to,{outputs:l})]})}function to(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)})})]})}var ti=r(39120),td=r(82229),tc=r(23995);let tu=["agent","gate","git","judge","observe","hitl","subgraph"],tp=["prompt","bash","skill","cft","approval","if","switch","iteration","classify","extract","set","filter","template","http","showroom","task","scheduleTrigger","webhookTrigger","discordTrigger","telegramTrigger","manualTrigger","chatTrigger"];function th(e){return(0,K.jh)(e.contents)?e.contents:null}function tm(e){return(0,K.jn)(e)?e:null}function tx(e){let t=tm(e);return t&&("string"==typeof t.value||"number"==typeof t.value)?String(t.value):void 0}function tf(e,t){return e.items.find(e=>tx(e.key)===t)}function tg(e,t){var r;let n=null==(r=tf(e,t))?void 0:r.value;return(0,K.oP)(n)?n:null}function tb(e){return(0,K.jh)(e)?e:null}function ty(e,t){var r;let n=tm(null==(r=tf(e,t))?void 0:r.value);return n&&("string"==typeof n.value||"number"==typeof n.value)?String(n.value):void 0}function tv(e,t){return(function(e){let t=th(e);if(!t)return[];let r=tg(t,"nodes");return r?r.items.flatMap(e=>{let t=tb(e);return t?[t]:[]}):[]})(e).find(e=>ty(e,"node_id")===t)}function tj(e,t,r){var n;let a=tm(null==(n=tf(e,t))?void 0:n.value);if(a){a.value=r;return}e.set(t,r)}function tw(e){let t=(0,K.Tp)(e,{keepSourceTokens:!0});return t.src=e,t.removed=[],t}function tk(e){var t;return null!=(t=e.removed)?t:[]}function tN(e){let t=th(e),r=t?tg(t,"edges"):null;return r?r.items.flatMap(e=>{let t=tb(e);return t?[t]:[]}):[]}function tC(e,t){return(null==e?void 0:e.range)?e.range[1]:t}function tS(e){var t;let r=null!=(t=e.src)?t:"";if(!r)return e.toString();let n=[],a=t=>{if((0,K.oP)(t))return void t.items.forEach((e,l)=>{if((0,K.jh)(e)&&!e.range){var s,o;let a=tC(l>0?t.items[l-1]:null,tC(t,r.length)),i=e.items.map(e=>{var t;let r=e.key instanceof K.CA||e.key instanceof K.Rw?"":String(null!=(t=e.key.value)?t:e.key),n=e.value,a=n&&"object"==typeof n&&"value"in n?String(n.value):String(e.value);return" ".concat(r,": ").concat(a)}),d=null!=(o=null==(s=i[0])?void 0:s.slice(2))?o:"";n.push({start:a,end:a,text:"\n- ".concat(d).concat(i.length>1?"\n".concat(i.slice(1).join("\n")):"")})}else a(e)});if((0,K.jh)(t))for(let l of t.items){let s=tx(l.key);if((0,K.jh)(l.value)||(0,K.oP)(l.value)){if(!l.value.range&&t.range&&s){let e=t.range[1],r=(0,K.jh)(l.value)?"".concat(s,":\n").concat(l.value.toString().replace(/\n$/,"").split("\n").map(e=>" ".concat(e)).join("\n")):"".concat(s,": ").concat(l.value.toString().trim());n.push({start:e,end:e,text:"\n".concat(r)})}else a(l.value);continue}let o=tm(l.value);if(!s||!o)continue;if(!o.range&&t.range){let e=t.range[1];n.push({start:e,end:e,text:"\n".concat(s,": ").concat(o.toString())});continue}if(!o.range)continue;let i=r.slice(o.range[0],o.range[1]),d=e.createNode(o.value).toString();i!==d&&n.push({start:o.range[0],end:o.range[1],text:d})}};for(let[t,r]of(a(e.contents),tk(e)))n.push({start:t,end:r,text:""});tk(e).length=0;let l=r;for(let e of n.sort((e,t)=>t.start-e.start||t.end-e.end))l="".concat(l.slice(0,e.start)).concat(e.text).concat(l.slice(e.end));return l}let tA={agent:"#3b82f6",gate:"#f59e0b",git:"#10b981",judge:"#a855f7",observe:"#06b6d4",hitl:"#f43f5e",subgraph:"#8b5cf6"},tT={run:function(e){var t;let{data:r}=e;return(0,n.jsxs)("div",{className:"min-w-[190px] rounded-lg border border-border bg-surface px-3 py-2 shadow-sm",style:{borderLeft:"4px solid ".concat(null!=(t=tA[r.kind])?t:"#64748b"),height:r.height},children:[r.inputHandles.map((e,t)=>(0,n.jsx)(T.h7,{id:e,type:"target",position:E.yX.Left,className:"!pointer-events-none",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)(T.h7,{id:e,type:"source",position:E.yX.Right,className:"!pointer-events-none",style:{top:"".concat((t+1)/(r.outputHandles.length+1)*100,"%")}},e))]})}},tE={labelStyle:{fill:"var(--text-primary, #334155)",fontSize:12},labelBgStyle:{fill:"var(--surface, #fff)"}};function tM(e){if(e instanceof tc.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 t_(){var e,t,r,s,i,d,c,u,p,h,m,x;let{palette:f}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},g=(0,o.M1)(),b=(0,ti.jE)(),[y,v]=(0,a.useState)(null),[j,w]=(0,a.useState)(null),[k,N]=(0,a.useState)(null),[C,S]=(0,a.useState)("note"),[A,E]=(0,a.useState)(tu[0]),[_,O]=(0,a.useState)("read-only"),[I,L]=(0,a.useState)(""),[P,R]=(0,a.useState)("pass"),[D,F]=(0,a.useState)(""),[z,q]=(0,a.useState)(null),[W,G]=(0,a.useState)([]),[B,H]=(0,a.useState)(null),$=(0,l.I)({queryKey:["run-graphs"],queryFn:()=>g.getRunGraphs()}),U=(0,l.I)({queryKey:["graph-kinds","harness"],queryFn:()=>g.getGraphKinds("harness"),enabled:!f,retry:!1}),J=null!=(h=null!=f?f:(null==(e=U.data)?void 0:e.kinds.length)?U.data.kinds:null)?h:tu.map(e=>({graph:"harness",kind:e,plugin:null,description:"",schema:{},core:!0})),Y=J.some(e=>e.kind===A)?A:null!=(m=null==(t=J[0])?void 0:t.kind)?m:A,V=null!=(x=null!=y?y:null==(s=$.data)||null==(r=s.graphs[0])?void 0:r.id)?x:null,X=null==(i=$.data)?void 0:i.graphs.find(e=>e.id===V),Q=(0,l.I)({queryKey:["run-graph",V],queryFn:()=>g.getRunGraph(V),enabled:null!==V}),Z=(null==X?void 0:X.editable)===!0&&"mine"===X.source&&(null==(d=Q.data)?void 0:d.id)===V&&"mine"===Q.data.source&&!0===Q.data.editable,ee=(0,l.I)({queryKey:["run-graph-yaml",Z?V:null],queryFn:()=>g.getRunGraphYaml(V),enabled:Z&&null!==V}),et=Z?j===V?k:(null==(c=ee.data)?void 0:c.id)===V&&"mine"===ee.data.source&&ee.data.editable?ee.data.yaml:null:null,er=(0,a.useMemo)(()=>Q.data&&Q.data.id===V?function(e){let t=e.edges.flatMap((e,t)=>e.map?Object.entries(e.map).map(r=>{let[n,a]=r;return{id:"".concat(t,":").concat(e.from,":").concat(n),source:e.from,target:a,label:n,data:{on:e.on},type:"straight"}}):e.to?[{id:"".concat(t,":").concat(e.from,":").concat(e.to),source:e.from,target:e.to,type:"smoothstep"}]:[]);for(let r of e.nodes){let e=t.filter(e=>e.source===r.node_id),n=t.filter(e=>e.target===r.node_id);e.forEach((e,t)=>{e.sourceHandle="out-".concat(t)}),n.forEach((e,t)=>{e.targetHandle="in-".concat(t)})}let r=new M.Ay.graphlib.Graph;for(let n of(r.setDefaultEdgeLabel(()=>({})),r.setGraph({rankdir:"LR",ranksep:110,nodesep:55,marginx:25,marginy:25}),e.nodes)){let e=Math.max(1,t.filter(e=>e.source===n.node_id).length,t.filter(e=>e.target===n.node_id).length);r.setNode(n.node_id,{width:190,height:Math.max(90,(e+1)*26)})}for(let e of t)r.setEdge(e.source,e.target);M.Ay.layout(r);let n=new Set(e.terminal_nodes);return{nodes:e.nodes.map(a=>{let l=r.node(a.node_id),s=t.filter(e=>e.source===a.node_id),o=t.filter(e=>e.target===a.node_id);return{id:a.node_id,position:{x:l.x-95,y:l.y-l.height/2},data:{label:a.node_id,kind:a.kind,recipe:a.recipe,maxVisits:a.max_visits,entry:e.entry_node===a.node_id,terminal:n.has(a.node_id),outcomes:s.filter(e=>"string"==typeof e.label).map(e=>e.label),inputHandles:o.map(e=>e.targetHandle),outputHandles:s.map(e=>e.sourceHandle),height:l.height}}}),edges:t}}(Q.data):null,[Q.data,V]),en=(0,a.useMemo)(()=>{var e;return null!=(e=null==er?void 0:er.nodes.map(e=>({...e,type:"run"})))?e:[]},[er]);function ea(e){if(Z&&V&&null!==et&&!es.isPending)try{let t=e(et);w(V),N(t),q(null),G([]),H(null)}catch(e){q(tM(e))}}let el=(0,td.n)({mutationFn:()=>g.cloneRunGraph(V,"".concat(V,"-mine")),onSuccess:async e=>{w(null),N(null),q(null),H(null),G([]),await b.invalidateQueries({queryKey:["run-graphs"]}),v(e.id)}}),es=(0,td.n)({mutationFn:async e=>{let{savingId:t,savingYaml:r}=e,n=await g.validateGraph("harness",r);return(G(n.ignoredKeys),!n.ok||n.errors.length>0)?void H(n.errors.map(e=>e.message).join(" \xb7 ")||"그래프 검증에 실패했습니다."):(H(null),g.putRunGraphYaml(t,r))},onSuccess:async e=>{e&&(q(null),w(null),await b.invalidateQueries({queryKey:["run-graph",e.id]}),await b.invalidateQueries({queryKey:["run-graph-yaml",e.id]}))},onError:e=>q(tM(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.jsx)("h2",{className:"px-3 py-3 text-xs font-semibold",children:"실행 그래프"}),$.isLoading&&(0,n.jsx)("p",{className:"px-3 text-xs text-text-tertiary",children:"불러오는 중…"}),$.isError&&(0,n.jsx)("p",{role:"alert",className:"px-3 text-xs text-error",children:"그래프 목록을 불러오지 못했습니다."}),(null==(u=$.data)?void 0:u.graphs.length)===0&&(0,n.jsx)("p",{className:"px-3 text-xs text-text-tertiary",children:"그래프가 없습니다."}),(0,n.jsx)("ul",{children:null==(p=$.data)?void 0:p.graphs.map(e=>(0,n.jsx)("li",{children:(0,n.jsxs)("button",{type:"button",onClick:()=>{v(e.id),q(null),H(null),G([])},disabled:es.isPending||el.isPending,"aria-current":V===e.id?"true":void 0,className:"w-full px-3 py-2 text-left text-xs hover:bg-surface-elevated ".concat(V===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:[X&&!X.editable&&(0,n.jsx)("button",{type:"button",onClick:()=>el.mutate(),disabled:el.isPending,className:"rounded border border-border px-2 py-1 text-xs",children:"복제해서 고치기"}),Z&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("label",{className:"text-[10px] text-text-tertiary",children:["kind",(0,n.jsx)("select",{"aria-label":"노드 kind",value:Y,onChange:e=>E(e.target.value),className:"ml-1 text-xs",children:J.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:C,onChange:e=>S(e.target.value),className:"w-24 rounded border border-border px-1 text-xs"}),(0,n.jsx)("input",{"aria-label":"recipe",value:_,onChange:e=>O(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:()=>ea(e=>{let t=tw(e);return!function(e,t){var r;let n=th(e);if(!n)throw Error("graph yaml root is not a map");let a=tg(n,"nodes");if(a||(n.set("nodes",[]),a=tg(n,"nodes")),!a)throw Error("nodes is not a sequence");if(tv(e,t.nodeId))throw Error("node already exists: ".concat(t.nodeId));let l=new K.CA;l.set("node_id",t.nodeId),l.set("kind",t.kind),l.set("recipe",t.recipe),l.set("max_visits",null!=(r=t.maxVisits)?r:1),a.add(l)}(t,{nodeId:C,kind:Y,recipe:_}),tS(t)}),children:"노드 추가"}),(0,n.jsx)("button",{type:"button",className:"rounded border border-border px-2 py-1 text-xs",onClick:()=>ea(e=>{let t=tw(e);return!function(e,t){let r=th(e),n=r?tg(r,"nodes"):null;if(!n)return;let a=n.items.findIndex(e=>{let r=tb(e);return!!r&&ty(r,"node_id")===t});a>=0&&(function(e,t){var r;let n=null==t?void 0:t.range;n&&tk(e).push([n[0],null!=(r=n[2])?r:n[1]])}(e,n.items[a]),n.delete(a))}(t,C),tS(t)}),children:"노드 삭제"}),(0,n.jsx)("button",{type:"button",className:"rounded border border-border px-2 py-1 text-xs",onClick:()=>ea(e=>{let t=tw(e),r=tv(t,C);if(!r)throw Error("node not found: ".concat(C));tj(r,"kind",Y);let n=tv(t,C);if(!n)throw Error("node not found: ".concat(C));return tj(n,"recipe",_),tS(t)}),children:"kind/recipe"}),(0,n.jsx)("input",{"aria-label":"간선 from",value:I,onChange:e=>L(e.target.value),placeholder:"from",className:"w-20 rounded border border-border px-1 text-xs"}),(0,n.jsx)("input",{"aria-label":"간선 결과",value:P,onChange:e=>R(e.target.value),placeholder:"결과",className:"w-16 rounded border border-border px-1 text-xs"}),(0,n.jsx)("input",{"aria-label":"간선 to",value:D,onChange:e=>F(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:()=>ea(e=>{let t=tw(e);return!function(e,t){let r=th(e);if(!r)throw Error("graph yaml root is not a map");let n=tg(r,"edges");if(n||(r.set("edges",[]),n=tg(r,"edges")),!n)throw Error("edges is not a sequence");let a=tN(e).find(e=>ty(e,"from")===t.from&&tf(e,"map"));a||((a=new K.CA).set("from",t.from),n.add(a)),(function(e){var t;let r=null==(t=tf(e,"map"))?void 0:t.value;if((0,K.jh)(r))return r;let n=new K.CA;return e.set("map",n),n})(a).set(t.outcome,t.to)}(t,{from:I,outcome:P,to:D}),tS(t)}),children:"간선 추가"}),(0,n.jsx)("button",{type:"button",className:"rounded border border-border px-2 py-1 text-xs",onClick:()=>ea(e=>{let t=tw(e);return!function(e,t,r){for(let c of tN(e)){var n,a,l,s,o,i,d;if(ty(c,"from")!==t)continue;let u=null==(n=tf(c,"map"))?void 0:n.value;if(!(0,K.jh)(u))continue;let p=u.items.findIndex(e=>tx(e.key)===r);if(p>=0){let t=u.items[p],r=null!=(i=null==(a=t.key.range)?void 0:a[0])?i:null==(l=t.value.range)?void 0:l[0],n=null!=(d=null==(s=t.value.range)?void 0:s[2])?d:null==(o=t.value.range)?void 0:o[1];void 0!==r&&void 0!==n&&tk(e).push([r,n]),u.delete(p)}}}(t,I,P),tS(t)}),children:"간선 삭제"}),(0,n.jsx)("button",{type:"button",onClick:()=>{Z&&V&&null!==et&&es.mutate({savingId:V,savingYaml:et})},disabled:null===et||es.isPending,className:"rounded bg-accent px-2 py-1 text-xs text-white",children:"저장"})]})]}),!f&&U.isError&&(0,n.jsx)("p",{role:"status",className:"px-3 py-1 text-xs text-warning",children:"어휘 목록을 불러오지 못해 코어 팔레트를 표시합니다."}),(B||z)&&(0,n.jsx)("p",{role:"alert",className:"px-3 py-1 text-xs text-error",children:B||z}),W.length>0&&(0,n.jsxs)("p",{role:"status",className:"px-3 py-1 text-xs text-warning",children:["무시되는 키: ",W.join(" \xb7 ")]}),el.isError&&(0,n.jsx)("p",{role:"alert",className:"px-3 py-1 text-xs text-error",children:tM(el.error)}),Q.isError&&(0,n.jsx)("p",{role:"alert",className:"p-4 text-xs text-error",children:"그래프를 불러오지 못했습니다."}),Q.isLoading&&(0,n.jsx)("p",{className:"p-4 text-xs text-text-tertiary",children:"불러오는 중…"}),er&&(0,n.jsxs)(T.Gc,{nodes:en,edges:er.edges,nodeTypes:tT,fitView:!0,nodesDraggable:!1,nodesConnectable:!1,elementsSelectable:Z,edgesReconnectable:!1,deleteKeyCode:null,nodesFocusable:Z,edgesFocusable:!1,defaultEdgeOptions:tE,className:"!bg-surface",children:[(0,n.jsx)(T.VS,{}),(0,n.jsx)(T.H2,{showInteractive:!1})]},null!=V?V:"")]})]})}function tO(){let e="harness"===(0,s.useSearchParams)().get("mode")?"harness":"workflow",t=(0,o.Qj)(),r=(0,l.I)({queryKey:["graph-kinds",e],queryFn:()=>t.getGraphKinds(e),enabled:null!==t,retry:!1}),i=(0,a.useMemo)(()=>{var t;return(null==(t=r.data)?void 0:t.kinds.length)?r.data.kinds:("harness"===e?tu:tp).map(t=>({graph:e,kind:t,plugin:null,description:"",schema:{},core:!0}))},[r.data,e]),d=r.isError||r.isSuccess&&!r.data.kinds.length;return(0,n.jsxs)("div",{className:"flex h-full min-h-0 flex-col",children:[(0,n.jsxs)("header",{className:"flex flex-wrap items-center justify-between gap-2 border-b border-border px-4 py-2",children:[(0,n.jsx)("h1",{className:"text-sm font-semibold",children:"편집기"}),(0,n.jsx)("nav",{"aria-label":"그래프 편집 모드",className:"flex gap-1",children:["workflow","harness"].map(t=>(0,n.jsx)("a",{href:"/app/editor/?mode=".concat(t),"aria-current":e===t?"page":void 0,className:"rounded px-3 py-1 text-xs ".concat(e===t?"bg-accent/15 text-text-primary":"text-text-tertiary hover:bg-surface-elevated"),children:"workflow"===t?"워크플로":"실행 그래프"},t))})]}),(0,n.jsxs)("div",{className:"flex min-h-0 flex-1 flex-col",children:[t&&(0,n.jsxs)("div",{className:"border-b border-border px-3 py-2 text-xs","aria-label":"노드 팔레트",children:[(0,n.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,n.jsx)("strong",{children:"노드 팔레트"}),i.map(e=>{var t;return(0,n.jsxs)("span",{title:e.description,className:"rounded border border-border px-2 py-0.5",children:[e.kind," ",e.plugin&&(0,n.jsx)("small",{className:"rounded bg-accent/15 px-1 text-accent",children:e.plugin})]},"".concat(null!=(t=e.plugin)?t:"core",":").concat(e.kind))})]}),d&&(0,n.jsx)("p",{role:"status",className:"mt-1 text-warning",children:"어휘 목록을 불러오지 못해 코어 팔레트를 표시합니다."})]}),"workflow"===e?(0,n.jsx)(te,{palette:i}):t?(0,n.jsx)(t_,{palette:i}):(0,n.jsx)("p",{className:"p-4 text-sm text-text-tertiary",children:"Daemon 연결이 설정되지 않았습니다. Settings 에서 Base URL 을 입력하세요."})]})]})}function tI(){return(0,n.jsx)(a.Suspense,{fallback:(0,n.jsx)("p",{className:"p-4 text-sm",children:"편집기를 불러오는 중…"}),children:(0,n.jsx)(tO,{})})}},53403:(e,t,r)=>{"use strict";let n;r.d(t,{cY:()=>c,x8:()=>o});let a={debug:0,info:1,warn:2,error:3},l="/v1/debug-logs/batch",s=null;function o(e){s=e}class i{health(){return{pending:this.queue.length,consecutiveFailures:this.consecutiveFailures,lastOkAt:this.lastOkAt,droppedByCap:this.droppedByCap,fallbackBatches:this.fallbackBatches}}push(e){if(!(a[function(e){let t=e.slice(e.lastIndexOf(".")+1).toLowerCase();return/^(error|exception|crash|fail|failed)$/.test(t)?"error":/^(warn|degraded|timeout)$/.test(t)?"warn":/^(boot|ready|start|begin|open|ok|done|resolve|end|stop|close)$/.test(t)?"info":"debug"}(e.category)]<a[this.minLevel])){if(this.queue.push(e),this.queue.length>500){let e=this.queue.length-500;this.droppedByCap+=e,this.queue.splice(0,e)}null===this.timer&&(this.timer=setTimeout(()=>{this.flush()},100))}}async flush(){if(this.timer&&(clearTimeout(this.timer),this.timer=null),this.inFlight||0===this.queue.length)return;let e=this.queue.slice(0,100);this.inFlight=!0;let t=!1,r=JSON.stringify({records:e});try{var n,a;t=await (n=this.fetchFn(r),a=this.postTimeoutMs,new Promise((e,t)=>{let r=setTimeout(()=>t(Error("debug-forward timeout after ".concat(a,"ms"))),a);n.then(t=>{clearTimeout(r),e(t)},e=>{clearTimeout(r),t(e)})}))}catch(e){t=!1}finally{this.inFlight=!1}if(!t){if(this.consecutiveFailures+=1,this.consecutiveFailures>=2&&s)try{await s(JSON.stringify({records:[...e,this.blockedNotice()]}))&&(this.fallbackBatches+=1)}catch(e){}this.wasFailing=!0,this.scheduleRetry();return}let l=this.lastOkAt;this.lastOkAt=Date.now();let o=this.consecutiveFailures;this.consecutiveFailures=0,this.queue.splice(0,e.length),this.wasFailing&&(this.wasFailing=!1,this.queue.push({ts:new Date().toISOString(),category:"pwa.debug-forwarder.recovered",event:"recovered",data:{consecutiveFailures:o,droppedByCap:this.droppedByCap,fallbackBatches:this.fallbackBatches,pending:this.queue.length,previousOkAt:l},source:{platform:"pwa"}})),this.queue.length>0&&null===this.timer&&(this.timer=setTimeout(()=>{this.flush()},100))}scheduleRetry(){if(null!==this.timer||0===this.queue.length)return;let e=Math.min(100*2**this.consecutiveFailures,3e4);this.timer=setTimeout(()=>{this.flush()},e)}blockedNotice(){return{ts:new Date().toISOString(),category:"pwa.debug-forwarder.http-blocked",event:"http-blocked",data:{consecutiveFailures:this.consecutiveFailures,pending:this.queue.length,droppedByCap:this.droppedByCap,lastOkAt:this.lastOkAt,via:"acp-fallback"},source:{platform:"pwa"}}}beaconFlush(){if(0!==this.queue.length)try{if("undefined"!=typeof navigator&&"function"==typeof navigator.sendBeacon){let e=this.queue.slice(0,100),t=new Blob([JSON.stringify({records:e})],{type:"application/json"});navigator.sendBeacon(l,t)&&this.queue.splice(0,e.length)}}catch(e){}}get pending(){return this.queue.length}constructor(e=d,t="debug",r=1e4){this.fetchFn=e,this.minLevel=t,this.postTimeoutMs=r,this.queue=[],this.timer=null,this.inFlight=!1,this.consecutiveFailures=0,this.lastOkAt=null,this.droppedByCap=0,this.fallbackBatches=0,this.wasFailing=!1}}async function d(e){return(await fetch(l,{method:"POST",headers:{"content-type":"application/json"},body:e,keepalive:!0,..."undefined"!=typeof AbortSignal&&"function"==typeof AbortSignal.timeout?{signal:AbortSignal.timeout(1e4)}:{}})).ok}function c(e,t){if("undefined"==typeof console)return;let r=new Date().toISOString();if(void 0!==t){let n="";try{let e=new WeakSet;n=JSON.stringify(t,(t,r)=>{if("bigint"==typeof r)return"".concat(r.toString(),"n");if("function"==typeof r)return"[fn ".concat(r.name||"anon","]");if(r&&"object"==typeof r){if(e.has(r))return"[circular]";e.add(r)}return r})}catch(e){n="[unserializable: ".concat(String(e),"]")}n&&n.length>800&&(n=n.slice(0,797)+"..."),console.debug("[".concat(r,"] ").concat(e," ").concat(n),t),u(r,e,n)}else console.debug("[".concat(r,"] ").concat(e)),u(r,e,void 0)}function u(e,t,r){let a,l=function(){if(void 0!==n)return n;let e=function(){try{let e="off"!==window.localStorage.getItem("elanous.pwa.debug.forward"),t=window.localStorage.getItem("elanous.pwa.debug.forwardLevel");return{forward:e,level:"info"===t||"warn"===t||"error"===t?t:"debug"}}catch(e){return{forward:!0,level:"debug"}}}();if(!e.forward)return n=null,null;let t=new i(d,e.level);try{window.addEventListener("visibilitychange",()=>{"hidden"===document.visibilityState&&t.beaconFlush()})}catch(e){}return n=t,t}();if(!l)return;let s=t.slice(t.lastIndexOf(".")+1)||t;if(void 0!==r&&""!==r)try{a=JSON.parse(r)}catch(e){a=r}l.push({ts:e,category:t,event:s,...void 0!==a?{data:a}:{},source:{platform:"pwa"}})}},61622:(e,t,r)=>{"use strict";r.d(t,{M1:()=>d,Qj:()=>c,tI:()=>i});var n=r(35563),a=r(19707),l=r(55893),s=r(39120);let o=(0,a.createContext)(null);function i(e){let{client:t,queryClient:r,defaultStaleTimeMs:i,children:d}=e,c=(0,a.useMemo)(()=>null!=r?r:new l.E({defaultOptions:{queries:{staleTime:null!=i?i:2e3,refetchOnWindowFocus:!1}}}),[r,i]);return(0,n.jsx)(o.Provider,{value:t,children:(0,n.jsx)(s.Ht,{client:c,children:d})})}function d(){let e=(0,a.useContext)(o);if(!e)throw Error("useNexusClient must be used within <NexusProvider>");return e}function c(){return(0,a.useContext)(o)}},79822:(e,t,r)=>{"use strict";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()}},e=>{e.O(0,[470,4579,8612,5110,9355,4328,3995,763,3042,4259,7358],()=>e(e.s=31988)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3787,6815,9492],{29905:()=>{}},_=>{_.O(0,[3042,4259,7358],()=>_(_.s=29905)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[131],{7090:(e,t,r)=>{"use strict";r.d(t,{$:()=>d});var n=r(35563),a=r(82198),s=r(13773),i=r(45505);let o=(0,s.F)("group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",outline:"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",ghost:"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",destructive:"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",icon:"size-8","icon-xs":"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg","icon-lg":"size-9"}},defaultVariants:{variant:"default",size:"default"}});function d(e){let{className:t,variant:r="default",size:s="default",...d}=e;return(0,n.jsx)(a.$,{"data-slot":"button",className:(0,i.cn)(o({variant:r,size:s,className:t})),...d})}},21483:(e,t,r)=>{"use strict";r.d(t,{K:()=>n}),r(19707);let n={emit:async function(e){return{ok:!1,reason:"not-configured"}}}},45505:(e,t,r)=>{"use strict";r.d(t,{cn:()=>s});var n=r(36757),a=r(78049);function s(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return(0,a.QP)((0,n.$)(t))}},47897:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>p});var n=r(35563),a=r(75423),s=r.n(a),i=r(19707),o=r(45787),d=r(49544);function l(e){let{items:t}=e,r=t.filter(e=>"OPEN"===e.state&&!e.draft);if(0===r.length)return null;let a=r.slice(0,3);return(0,n.jsx)("div",{className:"mx-auto max-w-lg px-4 pt-4",children:(0,n.jsxs)("section",{"aria-label":"승인 대기",className:"rounded-lg border border-emerald-600/40 bg-emerald-500/10 p-3 text-sm",children:[(0,n.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-2",children:[(0,n.jsxs)("p",{className:"font-semibold",children:["흡수 아이디어 승인 대기 ",r.length,"건"]}),(0,n.jsx)(s(),{href:"/approvals",className:"rounded-md bg-emerald-700 px-3 py-1 text-white hover:bg-emerald-800",children:"Approvals 에서 보기 →"})]}),(0,n.jsxs)("ul",{className:"mt-2 space-y-1",children:[a.map(e=>(0,n.jsxs)("li",{className:"break-words",children:[(0,n.jsxs)(s(),{href:"/approvals?pr=".concat(e.number),className:"underline",children:["#",e.number]})," \xb7 ",e.title]},e.number)),r.length>a.length&&(0,n.jsxs)("li",{className:"text-muted-foreground",children:["외 ",r.length-a.length,"건"]})]})]})})}function c(){let{client:e}=(0,o.Q)(),t=(0,i.useMemo)(()=>(0,d.tV)({client:e}),[e]),[r,a]=(0,i.useState)([]);return(0,i.useEffect)(()=>{let e=!0;return t.list().then(t=>{let{items:r}=t;e&&a(r)}).catch(()=>{e&&a([])}),()=>{e=!1}},[t]),(0,n.jsx)(l,{items:r})}var u=r(61066);function p(){return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(c,{}),(0,n.jsx)(u.SY,{})]})}},49544:(e,t,r)=>{"use strict";r.d(t,{V5:()=>s,tV:()=>i});var n=r(5031);class a extends Error{constructor(e,t,r){super(r||t),this.status=e,this.error=t,this.reason=r,this.name="MergeApprovalsApiError"}}function s(e,t){return e instanceof a?401===e.status||"unauthorized"===e.error?{text:"이 기기에 소유자 토큰이 없어 승인 목록을 못 읽었습니다 — 이미 연결된 기기의 설정 › Connect token 에서 토큰을 만들어, 이 기기의 설정 › Daemon › Bearer token 칸에 붙이면 바로 보입니다.",href:"/app/settings/#bearer-token"}:"gh-failed"===e.error?{text:"데몬이 GitHub 를 읽지 못했습니다(데몬 기계의 gh 로그인\xb7네트워크) — 잠시 뒤 다시 열어 보세요.".concat(e.reason?" 사유: ".concat(e.reason.split("\n")[0].slice(0,160)):"")}:"gh-invalid-response"===e.error?{text:"GitHub 응답을 해석하지 못했습니다 — 잠시 뒤 다시 열어 보세요."}:"approvals-repo-unknown"===e.error?{text:"승인할 저장소를 모릅니다 — 데몬 설정 intake.approvals.repo(예: owner/repo)를 채워 주세요.",href:"/app/settings/"}:e.reason?{text:e.reason}:{text:"".concat(t," (").concat(e.status," ").concat(e.error,")")}:e instanceof TypeError?{text:"데몬에 닿지 못했습니다 — 데몬이 켜져 있는지, 이 기기가 같은 네트워크(tailnet)에 있는지 확인하세요."}:{text:e instanceof Error&&e.message?e.message:t}}function i(e){var t,r;let s=null!=(t=e.fetchImpl)?t:fetch,i=(null!=(r=e.baseUrl)?r:"").replace(/\/+$/,"");async function o(t,r){let n={...r,headers:{"content-type":"application/json",...e.authHeader?{authorization:e.authHeader}:{}}},o=e.client?await e.client.fetchResponse(t,n):await s("".concat(i).concat(t),n),d=await o.json().catch(()=>null);if(!o.ok){var l;let e=d&&"object"==typeof d?d:{};throw new a(o.status,null!=(l=e.error)?l:"request-failed",e.reason)}return d}return{list:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"open";return o("merged"===e?"".concat(n.r5,"?state=merged"):n.r5)},get:e=>o("".concat(n.r5,"/").concat(e)),check:(e,t)=>o("".concat(n.r5,"/").concat(e,"/check"),{method:"POST",body:JSON.stringify({headSha:t})}),merge:(e,t)=>o("".concat(n.r5,"/").concat(e,"/merge"),{method:"POST",body:JSON.stringify({headSha:t})})}}},93839:(e,t,r)=>{Promise.resolve().then(r.bind(r,47897))}},e=>{e.O(0,[3165,2808,4240,5423,5787,7930,3042,4259,7358],()=>e(e.s=93839)),_N_E=e.O()}]);