elanous 0.2.18 → 0.2.19

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 (404) hide show
  1. package/apps/pwa/out/404/index.html +1 -1
  2. package/apps/pwa/out/404.html +1 -1
  3. package/apps/pwa/out/_next/static/{P6YTVgzuZz5oTZhY4Din_ → J5H7BvqgSI8DUjtRRcA_S}/_buildManifest.js +1 -1
  4. package/apps/pwa/out/_next/static/chunks/1105-c473ed46272fba79.js +1 -0
  5. package/apps/pwa/out/_next/static/chunks/1157-cba0e8553d35a980.js +1 -0
  6. package/apps/pwa/out/_next/static/chunks/{726.83532d69452ee24b.js → 1470.98a6ab61ccb4131c.js} +1 -1
  7. package/apps/pwa/out/_next/static/chunks/171-23a877ed11720de9.js +1 -0
  8. package/apps/pwa/out/_next/static/chunks/216-5acd01cbde4acda7.js +1 -0
  9. package/apps/pwa/out/_next/static/chunks/2330-c2f07246c8788af1.js +1 -0
  10. package/apps/pwa/out/_next/static/chunks/2336-e830c777eb6bce04.js +1 -0
  11. package/apps/pwa/out/_next/static/chunks/{9247-269e4464cc4b491c.js → 2375-e061bb24cd2b5cde.js} +1 -1
  12. package/apps/pwa/out/_next/static/chunks/2415.ed6428ff334c7ce2.js +1 -0
  13. package/apps/pwa/out/_next/static/chunks/{211-9c9090c59e2c5907.js → 2977-e38442e86289f1d3.js} +1 -1
  14. package/apps/pwa/out/_next/static/chunks/{f6b7c9ba.64a895b8b2fedbdc.js → 2ea96958.e8c7e112de50b067.js} +1 -1
  15. package/apps/pwa/out/_next/static/chunks/3094.67339318c7f72a3a.js +2 -0
  16. package/apps/pwa/out/_next/static/chunks/338-ceb956612dcfaa86.js +1 -0
  17. package/apps/pwa/out/_next/static/chunks/3395-835e4ceaa6335ba4.js +1 -0
  18. package/apps/pwa/out/_next/static/chunks/3403.4bc97b4066945a94.js +5 -0
  19. package/apps/pwa/out/_next/static/chunks/3441-be82e3595aef3a20.js +1 -0
  20. package/apps/pwa/out/_next/static/chunks/3689-89905039bf3e7257.js +1 -0
  21. package/apps/pwa/out/_next/static/chunks/371-4ad6af55dad02ced.js +1 -0
  22. package/apps/pwa/out/_next/static/chunks/3822-6f268bc26c6a84ac.js +1 -0
  23. package/apps/pwa/out/_next/static/chunks/4114-3e63117452378807.js +1 -0
  24. package/apps/pwa/out/_next/static/chunks/{1268.0840ff91e083fcbd.js → 4323.c5dfb6f503304775.js} +1 -1
  25. package/apps/pwa/out/_next/static/chunks/4457-d7df81c90f9d0268.js +1 -0
  26. package/apps/pwa/out/_next/static/chunks/4551-77dadae76f6cbace.js +1 -0
  27. package/apps/pwa/out/_next/static/chunks/{6110.1297d4093fdfbb0d.js → 4847.56f5bc454fbcc827.js} +2 -2
  28. package/apps/pwa/out/_next/static/chunks/4978.6fd93b974441e87f.js +1 -0
  29. package/apps/pwa/out/_next/static/chunks/5012-f746f6549b869f91.js +1 -0
  30. package/apps/pwa/out/_next/static/chunks/5609-012bb3557211f07e.js +1 -0
  31. package/apps/pwa/out/_next/static/chunks/5791-bb82743fa6299562.js +1 -0
  32. package/apps/pwa/out/_next/static/chunks/{7327-2d69fb321ba73389.js → 6062-73e68343a9814f6a.js} +1 -1
  33. package/apps/pwa/out/_next/static/chunks/62-5bfed1e23790b745.js +1 -0
  34. package/apps/pwa/out/_next/static/chunks/6320-9bc8561fde416e07.js +1 -0
  35. package/apps/pwa/out/_next/static/chunks/649-ca96d1c5d09e02b8.js +1 -0
  36. package/apps/pwa/out/_next/static/chunks/6725-68ab7cc0b1faf00d.js +1 -0
  37. package/apps/pwa/out/_next/static/chunks/6726-85a7db59b288c53f.js +1 -0
  38. package/apps/pwa/out/_next/static/chunks/6735-33267c4630d0d963.js +1 -0
  39. package/apps/pwa/out/_next/static/chunks/6998-a654fe5c58271600.js +1 -0
  40. package/apps/pwa/out/_next/static/chunks/7633-141682015873beb6.js +1 -0
  41. package/apps/pwa/out/_next/static/chunks/{935.4ddaa99fc1d1126c.js → 7647.2fcd30d894d5ee30.js} +1 -1
  42. package/apps/pwa/out/_next/static/chunks/7673-2eda1507d38dadb8.js +1 -0
  43. package/apps/pwa/out/_next/static/chunks/7990-e12efba616f46e03.js +1 -0
  44. package/apps/pwa/out/_next/static/chunks/{f6231284-45726550aba08fca.js → 8046cadf-211ca3c0e00f2b72.js} +1 -1
  45. package/apps/pwa/out/_next/static/chunks/8067-143791231c99bd02.js +1 -0
  46. package/apps/pwa/out/_next/static/chunks/8142-744998d65d7bb17e.js +1 -0
  47. package/apps/pwa/out/_next/static/chunks/8430-a10cfba8ef282d4e.js +1 -0
  48. package/apps/pwa/out/_next/static/chunks/8870-9614a213b990b10b.js +25 -0
  49. package/apps/pwa/out/_next/static/chunks/920-f7dceb78f1c585ef.js +1 -0
  50. package/apps/pwa/out/_next/static/chunks/9454-12c2f30dea62291c.js +1 -0
  51. package/apps/pwa/out/_next/static/chunks/976-4a9b4ebdca7c739a.js +1 -0
  52. package/apps/pwa/out/_next/static/chunks/9989-15cdf568bafa9fc8.js +1 -0
  53. package/apps/pwa/out/_next/static/chunks/ae787e4c-e5b1ef00b2dbceca.js +1 -0
  54. package/apps/pwa/out/_next/static/chunks/app/_not-found/page-859cea1570b6227a.js +1 -0
  55. package/apps/pwa/out/_next/static/chunks/app/approvals/page-deef5ee191830f14.js +1 -0
  56. package/apps/pwa/out/_next/static/chunks/app/autopilot/page-b193da485f9a14b2.js +1 -0
  57. package/apps/pwa/out/_next/static/chunks/app/board/page-b6e1a79df0e214f4.js +1 -0
  58. package/apps/pwa/out/_next/static/chunks/app/botlab/page-e84df4d907f703c7.js +1 -0
  59. package/apps/pwa/out/_next/static/chunks/app/bots/page-a5fb9a5db89ae4ea.js +1 -0
  60. package/apps/pwa/out/_next/static/chunks/app/ceo/page-1499f481d7fc52d6.js +1 -0
  61. package/apps/pwa/out/_next/static/chunks/app/chat/page-c7cf753aeb648790.js +1 -0
  62. package/apps/pwa/out/_next/static/chunks/app/consult/page-4118469e514e10fd.js +1 -0
  63. package/apps/pwa/out/_next/static/chunks/app/control/page-e968f7630654332a.js +1 -0
  64. package/apps/pwa/out/_next/static/chunks/app/decisions/page-505915052f947022.js +1 -0
  65. package/apps/pwa/out/_next/static/chunks/app/design-check/page-c2f962fb4a3b06c6.js +1 -0
  66. package/apps/pwa/out/_next/static/chunks/app/editor/page-7b5ed0bd8a589ec4.js +1 -0
  67. package/apps/pwa/out/_next/static/chunks/app/exec/page-cf8193250dd42dd4.js +1 -0
  68. package/apps/pwa/out/_next/static/chunks/app/field/page-cf3f5dfa35dea8e9.js +1 -0
  69. package/apps/pwa/out/_next/static/chunks/app/healthz/route-859cea1570b6227a.js +1 -0
  70. package/apps/pwa/out/_next/static/chunks/app/inside/page-5b29d9b06ceadade.js +1 -0
  71. package/apps/pwa/out/_next/static/chunks/app/intake/page-a15e7fcc283e9ca7.js +1 -0
  72. package/apps/pwa/out/_next/static/chunks/app/layout-d2915e7b70ff3d0e.js +1 -0
  73. package/apps/pwa/out/_next/static/chunks/app/live/page-b70cd005d9169e25.js +1 -0
  74. package/apps/pwa/out/_next/static/chunks/app/loops/page-2595f0eba29f57e1.js +1 -0
  75. package/apps/pwa/out/_next/static/chunks/app/market/page-c776322454156e36.js +1 -0
  76. package/apps/pwa/out/_next/static/chunks/app/missions/[id]/page-77bbd17f4435aa10.js +1 -0
  77. package/apps/pwa/out/_next/static/chunks/app/morning/page-049689e611ecc936.js +1 -0
  78. package/apps/pwa/out/_next/static/chunks/app/not-found-85954a4fb09c44eb.js +1 -0
  79. package/apps/pwa/out/_next/static/chunks/app/observatory/page-e773e552e1068ee6.js +1 -0
  80. package/apps/pwa/out/_next/static/chunks/app/ops/checklist/page-5633c4bfa7684b4a.js +1 -0
  81. package/apps/pwa/out/_next/static/chunks/app/ops/release/page-d829b92bd01b4994.js +1 -0
  82. package/apps/pwa/out/_next/static/chunks/app/ops/seats/page-061c317fc771becf.js +1 -0
  83. package/apps/pwa/out/_next/static/chunks/app/outputs/page-3a45ece8865ed4b6.js +1 -0
  84. package/apps/pwa/out/_next/static/chunks/app/page-0be990618c0d56bd.js +1 -0
  85. package/apps/pwa/out/_next/static/chunks/app/reflection/page-bfea4865dc244b73.js +1 -0
  86. package/apps/pwa/out/_next/static/chunks/app/scheduler/page-0d6ba8e337741484.js +1 -0
  87. package/apps/pwa/out/_next/static/chunks/app/sessions/page-76a88b55d816482e.js +1 -0
  88. package/apps/pwa/out/_next/static/chunks/app/settings/devices/page-bba1542df59f61ce.js +1 -0
  89. package/apps/pwa/out/_next/static/chunks/app/settings/page-4185c95689bb372e.js +1 -0
  90. package/apps/pwa/out/_next/static/chunks/app/setup/done/page-b699e1a8d5d34b8b.js +1 -0
  91. package/apps/pwa/out/_next/static/chunks/app/setup/layout-859cea1570b6227a.js +1 -0
  92. package/apps/pwa/out/_next/static/chunks/app/setup/page-c225e338c31bf274.js +1 -0
  93. package/apps/pwa/out/_next/static/chunks/app/share/page-449353f70507ca1f.js +1 -0
  94. package/apps/pwa/out/_next/static/chunks/app/showroom/page-90b889714102476d.js +1 -0
  95. package/apps/pwa/out/_next/static/chunks/app/tasks/page-f1ee7fbeb7f96ddc.js +1 -0
  96. package/apps/pwa/out/_next/static/chunks/app/term/page-d59a95e1434dfaa0.js +1 -0
  97. package/apps/pwa/out/_next/static/chunks/app/today/page-71491a23414d1a47.js +1 -0
  98. package/apps/pwa/out/_next/static/chunks/app/trace/page-de7112bdb65fa4fe.js +1 -0
  99. package/apps/pwa/out/_next/static/chunks/app/vault/page-feb4d0d88079660d.js +1 -0
  100. package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-f17d887b40dd6b1d.js +1 -0
  101. package/apps/pwa/out/_next/static/chunks/app/workflows/page-8da77be2192bcd5d.js +1 -0
  102. package/apps/pwa/out/_next/static/chunks/app/workspace/page-72c3b9a5e9582b29.js +1 -0
  103. package/apps/pwa/out/_next/static/chunks/app/worktrees/page-c3afe4c8d0c48c39.js +1 -0
  104. package/apps/pwa/out/_next/static/chunks/framework-ea806bb57f2b8923.js +1 -0
  105. package/apps/pwa/out/_next/static/chunks/main-8d2302399c2c8f87.js +1 -0
  106. package/apps/pwa/out/_next/static/chunks/main-app-b9308f2d8a931531.js +1 -0
  107. package/apps/pwa/out/_next/static/chunks/pages/_app-b10928c60f0b8488.js +1 -0
  108. package/apps/pwa/out/_next/static/chunks/pages/_error-689039227d443fab.js +1 -0
  109. package/apps/pwa/out/_next/static/chunks/webpack-6f35f9d892fa630b.js +1 -0
  110. package/apps/pwa/out/_next/static/css/{e99e3cff94ced78a.css → 599369d853c61df7.css} +1 -1
  111. package/apps/pwa/out/_next/static/css/85f53c6f35d11382.css +1 -0
  112. package/apps/pwa/out/_next/static/css/d3427996da11e480.css +1 -0
  113. package/apps/pwa/out/approvals/index.html +1 -1
  114. package/apps/pwa/out/approvals/index.txt +23 -23
  115. package/apps/pwa/out/autopilot/index.html +1 -1
  116. package/apps/pwa/out/autopilot/index.txt +23 -23
  117. package/apps/pwa/out/board/index.html +1 -1
  118. package/apps/pwa/out/board/index.txt +23 -23
  119. package/apps/pwa/out/botlab/index.html +1 -1
  120. package/apps/pwa/out/botlab/index.txt +22 -22
  121. package/apps/pwa/out/bots/index.html +1 -1
  122. package/apps/pwa/out/bots/index.txt +22 -22
  123. package/apps/pwa/out/ceo/index.html +1 -1
  124. package/apps/pwa/out/ceo/index.txt +23 -23
  125. package/apps/pwa/out/chat/index.html +1 -1
  126. package/apps/pwa/out/chat/index.txt +22 -22
  127. package/apps/pwa/out/consult/index.html +1 -1
  128. package/apps/pwa/out/consult/index.txt +23 -23
  129. package/apps/pwa/out/control/index.html +1 -1
  130. package/apps/pwa/out/control/index.txt +23 -23
  131. package/apps/pwa/out/decisions/index.html +1 -1
  132. package/apps/pwa/out/decisions/index.txt +22 -22
  133. package/apps/pwa/out/design-check/index.html +1 -1
  134. package/apps/pwa/out/design-check/index.txt +23 -23
  135. package/apps/pwa/out/editor/index.html +1 -1
  136. package/apps/pwa/out/editor/index.txt +25 -24
  137. package/apps/pwa/out/exec/index.html +1 -1
  138. package/apps/pwa/out/exec/index.txt +23 -23
  139. package/apps/pwa/out/field/index.html +1 -1
  140. package/apps/pwa/out/field/index.txt +23 -23
  141. package/apps/pwa/out/healthz +1 -1
  142. package/apps/pwa/out/index.html +1 -1
  143. package/apps/pwa/out/index.txt +22 -22
  144. package/apps/pwa/out/inside/index.html +1 -1
  145. package/apps/pwa/out/inside/index.txt +24 -23
  146. package/apps/pwa/out/intake/index.html +1 -1
  147. package/apps/pwa/out/intake/index.txt +23 -23
  148. package/apps/pwa/out/live/index.html +1 -1
  149. package/apps/pwa/out/live/index.txt +23 -23
  150. package/apps/pwa/out/loops/index.html +1 -1
  151. package/apps/pwa/out/loops/index.txt +28 -27
  152. package/apps/pwa/out/market/index.html +1 -1
  153. package/apps/pwa/out/market/index.txt +22 -22
  154. package/apps/pwa/out/missions/placeholder/index.html +1 -1
  155. package/apps/pwa/out/missions/placeholder/index.txt +22 -22
  156. package/apps/pwa/out/morning/index.html +1 -1
  157. package/apps/pwa/out/morning/index.txt +23 -23
  158. package/apps/pwa/out/observatory/index.html +1 -1
  159. package/apps/pwa/out/observatory/index.txt +23 -23
  160. package/apps/pwa/out/ops/checklist/index.html +1 -1
  161. package/apps/pwa/out/ops/checklist/index.txt +22 -22
  162. package/apps/pwa/out/ops/release/index.html +1 -1
  163. package/apps/pwa/out/ops/release/index.txt +22 -22
  164. package/apps/pwa/out/ops/seats/index.html +1 -1
  165. package/apps/pwa/out/ops/seats/index.txt +22 -22
  166. package/apps/pwa/out/outputs/index.html +1 -1
  167. package/apps/pwa/out/outputs/index.txt +22 -22
  168. package/apps/pwa/out/reflection/index.html +1 -1
  169. package/apps/pwa/out/reflection/index.txt +23 -23
  170. package/apps/pwa/out/scheduler/index.html +1 -1
  171. package/apps/pwa/out/scheduler/index.txt +23 -23
  172. package/apps/pwa/out/sessions/index.html +1 -1
  173. package/apps/pwa/out/sessions/index.txt +22 -22
  174. package/apps/pwa/out/settings/devices/index.html +1 -1
  175. package/apps/pwa/out/settings/devices/index.txt +23 -23
  176. package/apps/pwa/out/settings/index.html +1 -1
  177. package/apps/pwa/out/settings/index.txt +23 -23
  178. package/apps/pwa/out/setup/done/index.html +1 -1
  179. package/apps/pwa/out/setup/done/index.txt +23 -23
  180. package/apps/pwa/out/setup/index.html +1 -1
  181. package/apps/pwa/out/setup/index.txt +23 -23
  182. package/apps/pwa/out/share/index.html +1 -1
  183. package/apps/pwa/out/share/index.txt +23 -23
  184. package/apps/pwa/out/showroom/index.html +1 -1
  185. package/apps/pwa/out/showroom/index.txt +22 -22
  186. package/apps/pwa/out/tasks/index.html +1 -1
  187. package/apps/pwa/out/tasks/index.txt +23 -23
  188. package/apps/pwa/out/term/index.html +1 -1
  189. package/apps/pwa/out/term/index.txt +23 -23
  190. package/apps/pwa/out/today/index.html +1 -1
  191. package/apps/pwa/out/today/index.txt +23 -23
  192. package/apps/pwa/out/trace/index.html +1 -1
  193. package/apps/pwa/out/trace/index.txt +23 -23
  194. package/apps/pwa/out/vault/index.html +1 -1
  195. package/apps/pwa/out/vault/index.txt +23 -23
  196. package/apps/pwa/out/workflows/chat-ui/index.html +1 -1
  197. package/apps/pwa/out/workflows/chat-ui/index.txt +23 -23
  198. package/apps/pwa/out/workflows/index.html +1 -1
  199. package/apps/pwa/out/workflows/index.txt +23 -23
  200. package/apps/pwa/out/workspace/index.html +1 -1
  201. package/apps/pwa/out/workspace/index.txt +23 -23
  202. package/apps/pwa/out/worktrees/index.html +1 -1
  203. package/apps/pwa/out/worktrees/index.txt +23 -23
  204. package/graphs/ops/guardian.yaml +26 -0
  205. package/graphs/ops/recipes.yaml +3 -0
  206. package/package.json +1 -1
  207. package/scripts/coord-channel-watch.sh +2 -2
  208. package/scripts/discord-seat-probe.ts +3 -1
  209. package/scripts/lib/pch-regress-map.ts +23 -0
  210. package/scripts/morning-report.ts +18 -4
  211. package/scripts/pch-regress.ts +88 -0
  212. package/scripts/release-loop/gate-diff.ts +18 -0
  213. package/scripts/release-loop/gate-node.ts +338 -46
  214. package/scripts/release-loop/gate-partial.ts +106 -0
  215. package/scripts/release-loop/gate-timing.ts +120 -0
  216. package/scripts/release-loop/resume-release.ts +64 -5
  217. package/scripts/release-loop/shard-plan.ts +65 -0
  218. package/scripts/release-loop/unattended-release.ts +2 -0
  219. package/scripts/video/scene-table.ts +159 -0
  220. package/src/acp/core-turn-bridge.ts +39 -2
  221. package/src/away/presence.ts +40 -0
  222. package/src/away/release-watch.ts +255 -0
  223. package/src/chat/index.ts +2 -1
  224. package/src/chat/short-question.ts +3 -40
  225. package/src/cli/away-cli.ts +68 -0
  226. package/src/cli/guardian-cli.ts +49 -0
  227. package/src/cli/intake-cli.ts +13 -7
  228. package/src/cli/log-event-names.ts +1 -0
  229. package/src/cli/pod-cli.ts +5 -1
  230. package/src/cli/pty-drive-cli.ts +14 -3
  231. package/src/cli/release-cli.ts +32 -7
  232. package/src/cli/setup-cli.ts +31 -1
  233. package/src/cli/tasks-cli.ts +104 -11
  234. package/src/context-bus/context-now-public.ts +1 -1
  235. package/src/context-bus/context-now-surfaces.ts +16 -6
  236. package/src/context-bus/context-now.ts +97 -3
  237. package/src/core-turn/short-question.ts +100 -0
  238. package/src/dashboard/dashboard-status-lines.ts +24 -4
  239. package/src/dashboard/index.ts +50 -5
  240. package/src/dashboard/input/slash-executor.ts +6 -2
  241. package/src/dashboard/slash-runtime/dashboard-handlers.ts +63 -36
  242. package/src/dashboard/slash-runtime/decide-slash.ts +60 -0
  243. package/src/dashboard/slash-runtime/help-from-registry.ts +21 -8
  244. package/src/dashboard/slash-runtime/help-groups.ts +44 -0
  245. package/src/dashboard/slash-runtime/model-choices.ts +125 -0
  246. package/src/domains/guardian-tick.ts +138 -0
  247. package/src/domains/outbound-alert.ts +44 -13
  248. package/src/domains/schedule-registry.ts +23 -0
  249. package/src/domains/telegram-kind-route.ts +39 -0
  250. package/src/domains/watch-default-scheduler.ts +95 -0
  251. package/src/esc-abort-gate.ts +44 -0
  252. package/src/graph-runner/runner.ts +25 -5
  253. package/src/harness/harness-cli-command.ts +2 -0
  254. package/src/harness/harness-salvage-cli.ts +78 -0
  255. package/src/harness/harness-worktree-add.ts +68 -0
  256. package/src/harness/ledger-write-guard.ts +6 -16
  257. package/src/hq/hq.ts +6 -1
  258. package/src/index.ts +52 -3
  259. package/src/instance/test-write-guard-spy-first.fixture.ts +13 -0
  260. package/src/instance/test-write-guard.ts +200 -0
  261. package/src/intake-plane/digest.ts +39 -15
  262. package/src/intake-plane/harness-target.ts +4 -3
  263. package/src/intake-plane/intake-sources.ts +1 -0
  264. package/src/intake-plane/items.ts +1 -0
  265. package/src/loops/orchestrator/degradation.ts +57 -0
  266. package/src/loops/orchestrator/finish-rate.ts +33 -3
  267. package/src/loops/orchestrator/tick.ts +166 -45
  268. package/src/maturity/feature-maturity.ts +6 -4
  269. package/src/maturity/tui-slash-maturity.ts +1 -0
  270. package/src/mss/logging/log-store.ts +3 -0
  271. package/src/nexus/api/http-server.ts +16 -5
  272. package/src/nexus/api/loop-edges.ts +290 -17
  273. package/src/nexus/api/ops-api.ts +96 -28
  274. package/src/nexus/index.ts +7 -0
  275. package/src/release-loop/checklist.ts +2 -0
  276. package/src/release-loop/feature-store.ts +54 -7
  277. package/src/release-loop/light-rc.ts +173 -0
  278. package/src/release-loop/placement.ts +51 -17
  279. package/src/release-loop/rubric.ts +57 -1
  280. package/src/self-dev/dev-cli.ts +36 -0
  281. package/src/self-dev/orchestrate.ts +1 -0
  282. package/src/self-dev/pr-preview.ts +179 -0
  283. package/src/self-dev/shard-run.ts +23 -7
  284. package/src/self-implement/gate-cli.ts +29 -8
  285. package/src/self-implement/goal-author-clarification.ts +88 -13
  286. package/src/self-implement/goal-clarification-escalation.ts +2 -0
  287. package/src/self-implement/orchestrator.ts +2 -1
  288. package/src/self-implement/salvage-branches.ts +254 -0
  289. package/src/task-agent/actions.ts +63 -2
  290. package/src/task-agent/board.ts +132 -0
  291. package/src/task-agent/card-evidence.ts +203 -0
  292. package/src/task-agent/completion-evidence.ts +126 -0
  293. package/src/task-agent/judge.ts +18 -0
  294. package/src/task-agent/live-moves.ts +176 -0
  295. package/src/task-agent/mission.ts +32 -6
  296. package/src/task-agent/shadow.ts +183 -15
  297. package/src/task-agent/task-hand.ts +117 -15
  298. package/src/task-orchestrator/surfaces/pod-command-job.ts +64 -4
  299. package/src/task-orchestrator/surfaces/pod-lease.ts +142 -13
  300. package/src/task-orchestrator/surfaces/pod-pool.ts +13 -5
  301. package/src/task-orchestrator/surfaces/self-implement-pod.ts +2 -2
  302. package/src/telegram-away-command.ts +38 -0
  303. package/src/telegram-commands.ts +11 -0
  304. package/src/telegram-report-log-probe.ts +21 -0
  305. package/src/telegram-report.ts +27 -3
  306. package/src/tui-client/dashboard-session.ts +1 -0
  307. package/src/user-config.ts +134 -2
  308. package/src/version/packed-revision.json +1 -1
  309. package/apps/pwa/out/_next/static/chunks/1307-30dff22c9e1f3073.js +0 -1
  310. package/apps/pwa/out/_next/static/chunks/1826-5d279da64bbbc2de.js +0 -1
  311. package/apps/pwa/out/_next/static/chunks/1844-9ec4b1d12f6e80eb.js +0 -1
  312. package/apps/pwa/out/_next/static/chunks/1866-e7a6999f25548b30.js +0 -1
  313. package/apps/pwa/out/_next/static/chunks/1948.15f356b15a625597.js +0 -5
  314. package/apps/pwa/out/_next/static/chunks/195-fb1d7690bf30bab4.js +0 -1
  315. package/apps/pwa/out/_next/static/chunks/1986-33e13d648a9df765.js +0 -1
  316. package/apps/pwa/out/_next/static/chunks/2196-4700653d12a44b40.js +0 -1
  317. package/apps/pwa/out/_next/static/chunks/224-798346143007ff65.js +0 -1
  318. package/apps/pwa/out/_next/static/chunks/2537-6c289376caa88ca1.js +0 -1
  319. package/apps/pwa/out/_next/static/chunks/2699-325cc923ba7b8631.js +0 -1
  320. package/apps/pwa/out/_next/static/chunks/2957-96ffab3d521fb08f.js +0 -1
  321. package/apps/pwa/out/_next/static/chunks/311.e685738f92e6e2ec.js +0 -1
  322. package/apps/pwa/out/_next/static/chunks/3194-807b212fb8eae065.js +0 -1
  323. package/apps/pwa/out/_next/static/chunks/3324-d1d2979821dfa845.js +0 -1
  324. package/apps/pwa/out/_next/static/chunks/3558-bbb5ab553a0471d3.js +0 -1
  325. package/apps/pwa/out/_next/static/chunks/3857-4f936cdb30322aa6.js +0 -1
  326. package/apps/pwa/out/_next/static/chunks/3916-3d02dd1fc257dd3c.js +0 -1
  327. package/apps/pwa/out/_next/static/chunks/4144-a0041c8dc3be57ac.js +0 -1
  328. package/apps/pwa/out/_next/static/chunks/4554-5761612531d0146b.js +0 -1
  329. package/apps/pwa/out/_next/static/chunks/4565-3d7e3fdeb43686a8.js +0 -1
  330. package/apps/pwa/out/_next/static/chunks/4795-f372490b178583fc.js +0 -1
  331. package/apps/pwa/out/_next/static/chunks/5360-be1f1d8f9fcc9755.js +0 -1
  332. package/apps/pwa/out/_next/static/chunks/5977-a11f37254196b659.js +0 -1
  333. package/apps/pwa/out/_next/static/chunks/5994-ae92c0de046ab9ba.js +0 -1
  334. package/apps/pwa/out/_next/static/chunks/6158.af2e93b7adff709b.js +0 -2
  335. package/apps/pwa/out/_next/static/chunks/6877-74399f69c7da1433.js +0 -1
  336. package/apps/pwa/out/_next/static/chunks/7290-f09c928a06c52e2d.js +0 -1
  337. package/apps/pwa/out/_next/static/chunks/7797-df5aa0381fdc078f.js +0 -1
  338. package/apps/pwa/out/_next/static/chunks/8060-cc008cc6fedfa818.js +0 -1
  339. package/apps/pwa/out/_next/static/chunks/8085-d065d0393c1760f5.js +0 -1
  340. package/apps/pwa/out/_next/static/chunks/8401-8615a660c84cdb03.js +0 -1
  341. package/apps/pwa/out/_next/static/chunks/8682-7061dd4fa7bd62ed.js +0 -1
  342. package/apps/pwa/out/_next/static/chunks/8695-846034ce44852c70.js +0 -1
  343. package/apps/pwa/out/_next/static/chunks/8868-10a3a4440fb0ccd8.js +0 -25
  344. package/apps/pwa/out/_next/static/chunks/9070.067c106528ec1ae6.js +0 -1
  345. package/apps/pwa/out/_next/static/chunks/9103-60fbef33e66f0a46.js +0 -1
  346. package/apps/pwa/out/_next/static/chunks/a9f2b54d-7865aba0f4d2ee49.js +0 -1
  347. package/apps/pwa/out/_next/static/chunks/app/_not-found/page-c1a96669158471ec.js +0 -1
  348. package/apps/pwa/out/_next/static/chunks/app/approvals/page-d92f7ee3994e84c7.js +0 -1
  349. package/apps/pwa/out/_next/static/chunks/app/autopilot/page-4733c967b56a4277.js +0 -1
  350. package/apps/pwa/out/_next/static/chunks/app/board/page-d22fd849cc22f104.js +0 -1
  351. package/apps/pwa/out/_next/static/chunks/app/botlab/page-bb742f995c6769e7.js +0 -1
  352. package/apps/pwa/out/_next/static/chunks/app/bots/page-02b073a2ac793b83.js +0 -1
  353. package/apps/pwa/out/_next/static/chunks/app/ceo/page-60c3da708f9a0ccc.js +0 -1
  354. package/apps/pwa/out/_next/static/chunks/app/chat/page-8a9b3594bc23289b.js +0 -1
  355. package/apps/pwa/out/_next/static/chunks/app/consult/page-a0eb02638b1e6f31.js +0 -1
  356. package/apps/pwa/out/_next/static/chunks/app/control/page-308111abadf35670.js +0 -1
  357. package/apps/pwa/out/_next/static/chunks/app/decisions/page-6eaf7bac37830c21.js +0 -1
  358. package/apps/pwa/out/_next/static/chunks/app/design-check/page-5d97b2901e0d1ea6.js +0 -1
  359. package/apps/pwa/out/_next/static/chunks/app/editor/page-c39554c321576982.js +0 -1
  360. package/apps/pwa/out/_next/static/chunks/app/exec/page-8c3d8e63ae2e1c98.js +0 -1
  361. package/apps/pwa/out/_next/static/chunks/app/field/page-9b72a07d424701c6.js +0 -1
  362. package/apps/pwa/out/_next/static/chunks/app/healthz/route-c1a96669158471ec.js +0 -1
  363. package/apps/pwa/out/_next/static/chunks/app/inside/page-bd5d586429167fea.js +0 -1
  364. package/apps/pwa/out/_next/static/chunks/app/intake/page-a572f58cd3ca5864.js +0 -1
  365. package/apps/pwa/out/_next/static/chunks/app/layout-59b7834d497c2255.js +0 -1
  366. package/apps/pwa/out/_next/static/chunks/app/live/page-be5ea965a07fbc41.js +0 -1
  367. package/apps/pwa/out/_next/static/chunks/app/loops/page-c130b63862437814.js +0 -1
  368. package/apps/pwa/out/_next/static/chunks/app/market/page-fa244bd146a00ae8.js +0 -1
  369. package/apps/pwa/out/_next/static/chunks/app/missions/[id]/page-44d56d6391965a6a.js +0 -1
  370. package/apps/pwa/out/_next/static/chunks/app/morning/page-83a700d4c754d802.js +0 -1
  371. package/apps/pwa/out/_next/static/chunks/app/not-found-7b3170f374f77b9d.js +0 -1
  372. package/apps/pwa/out/_next/static/chunks/app/observatory/page-5f23d0c66a3b4793.js +0 -1
  373. package/apps/pwa/out/_next/static/chunks/app/ops/checklist/page-a3c58f5c72a5f3f9.js +0 -1
  374. package/apps/pwa/out/_next/static/chunks/app/ops/release/page-a2c4625596f8d69c.js +0 -1
  375. package/apps/pwa/out/_next/static/chunks/app/ops/seats/page-0e9099531d239f11.js +0 -1
  376. package/apps/pwa/out/_next/static/chunks/app/outputs/page-e8e1ecaea7cd71d2.js +0 -1
  377. package/apps/pwa/out/_next/static/chunks/app/page-a1b7ffed710a93e0.js +0 -1
  378. package/apps/pwa/out/_next/static/chunks/app/reflection/page-1467047104141297.js +0 -1
  379. package/apps/pwa/out/_next/static/chunks/app/scheduler/page-2da6f9b8a38c6978.js +0 -1
  380. package/apps/pwa/out/_next/static/chunks/app/sessions/page-102310930791197a.js +0 -1
  381. package/apps/pwa/out/_next/static/chunks/app/settings/devices/page-f331e38fefc00393.js +0 -1
  382. package/apps/pwa/out/_next/static/chunks/app/settings/page-6ed0b73bae8351d8.js +0 -1
  383. package/apps/pwa/out/_next/static/chunks/app/setup/done/page-44d5f767491692bf.js +0 -1
  384. package/apps/pwa/out/_next/static/chunks/app/setup/layout-c1a96669158471ec.js +0 -1
  385. package/apps/pwa/out/_next/static/chunks/app/setup/page-43336055451f6e37.js +0 -1
  386. package/apps/pwa/out/_next/static/chunks/app/share/page-3cc47dca0922ab9a.js +0 -1
  387. package/apps/pwa/out/_next/static/chunks/app/showroom/page-a77ee355a2304ff0.js +0 -1
  388. package/apps/pwa/out/_next/static/chunks/app/tasks/page-b17cd46cf0e9b8cf.js +0 -1
  389. package/apps/pwa/out/_next/static/chunks/app/term/page-61553851aa606146.js +0 -1
  390. package/apps/pwa/out/_next/static/chunks/app/today/page-a1f585e154e61c59.js +0 -1
  391. package/apps/pwa/out/_next/static/chunks/app/trace/page-7bf54c9bb9274af8.js +0 -1
  392. package/apps/pwa/out/_next/static/chunks/app/vault/page-5150ef17b5383a57.js +0 -1
  393. package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-b9d8ce70792c1672.js +0 -1
  394. package/apps/pwa/out/_next/static/chunks/app/workflows/page-a5a3de231f2cc7d5.js +0 -1
  395. package/apps/pwa/out/_next/static/chunks/app/workspace/page-134da468538baf48.js +0 -1
  396. package/apps/pwa/out/_next/static/chunks/app/worktrees/page-31ac4afa2dcd915c.js +0 -1
  397. package/apps/pwa/out/_next/static/chunks/framework-5c169757551134ed.js +0 -1
  398. package/apps/pwa/out/_next/static/chunks/main-59fe95fed40c7a01.js +0 -1
  399. package/apps/pwa/out/_next/static/chunks/main-app-4ca74dbbee7057c6.js +0 -1
  400. package/apps/pwa/out/_next/static/chunks/pages/_app-13a0a886df4d97a1.js +0 -1
  401. package/apps/pwa/out/_next/static/chunks/pages/_error-6af8591cd3a3f038.js +0 -1
  402. package/apps/pwa/out/_next/static/chunks/webpack-c2782b330447ffb6.js +0 -1
  403. package/apps/pwa/out/_next/static/css/7fa358fec7da7c47.css +0 -1
  404. /package/apps/pwa/out/_next/static/{P6YTVgzuZz5oTZhY4Din_ → J5H7BvqgSI8DUjtRRcA_S}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6987],{58505:(e,t,n)=>{n.d(t,{Gc:()=>th,H2:()=>tD,Pj:()=>f,VH:()=>ee,VS:()=>tw,_5:()=>o,h7:()=>ev,of:()=>tV,tE:()=>ez});var o,l=n(41121),r=n(91269),a=n(23271),i=n(44251),s=n(94100),d=n(93345);n(65032);let c=(0,r.createContext)(null),u=c.Provider,g=i.xc.error001();function f(e,t){let n=(0,r.useContext)(c);if(null===n)throw Error(g);return(0,s.n)(n,e,t)}function p(){let e=(0,r.useContext)(c);if(null===e)throw Error(g);return(0,r.useMemo)(()=>({getState:e.getState,setState:e.setState,subscribe:e.subscribe}),[e])}let h={display:"none"},m={position:"absolute",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",clipPath:"inset(100%)"},v="react-flow__node-desc",y="react-flow__edge-desc",b=e=>e.ariaLiveMessage,x=e=>e.ariaLabelConfig;function w(e){let{rfId:t}=e,n=f(b);return(0,l.jsx)("div",{id:"".concat("react-flow__aria-live","-").concat(t),"aria-live":"assertive","aria-atomic":"true",style:m,children:n})}function S(e){let{rfId:t,disableKeyboardA11y:n}=e,o=f(x);return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("div",{id:"".concat(v,"-").concat(t),style:h,children:n?o["node.a11yDescription.default"]:o["node.a11yDescription.keyboardDisabled"]}),(0,l.jsx)("div",{id:"".concat(y,"-").concat(t),style:h,children:o["edge.a11yDescription.default"]}),!n&&(0,l.jsx)(w,{rfId:t})]})}let C=(0,r.forwardRef)((e,t)=>{let{position:n="top-left",children:o,className:r,style:i,...s}=e,d="".concat(n).split("-");return(0,l.jsx)("div",{className:(0,a.A)(["react-flow__panel",r,...d]),style:i,ref:t,...s,children:o})});function E(e){let{proOptions:t,position:n="bottom-right"}=e;return(null==t?void 0:t.hideAttribution)?null:(0,l.jsx)(C,{position:n,className:"react-flow__attribution","data-message":"Please only hide this attribution when you are subscribed to React Flow Pro: https://pro.reactflow.dev",children:(0,l.jsx)("a",{href:"https://reactflow.dev",target:"_blank",rel:"noopener noreferrer","aria-label":"React Flow attribution",children:"React Flow"})})}C.displayName="Panel";let N=e=>{let t=[],n=[];for(let[,n]of e.nodeLookup)n.selected&&t.push(n.internals.userNode);for(let[,t]of e.edgeLookup)t.selected&&n.push(t);return{selectedNodes:t,selectedEdges:n}},k=e=>e.id;function M(e,t){return(0,d.x)(e.selectedNodes.map(k),t.selectedNodes.map(k))&&(0,d.x)(e.selectedEdges.map(k),t.selectedEdges.map(k))}function P(e){let{onSelectionChange:t}=e,n=p(),{selectedNodes:o,selectedEdges:l}=f(N,M);return(0,r.useEffect)(()=>{let e={nodes:o,edges:l};null==t||t(e),n.getState().onSelectionChangeHandlers.forEach(t=>t(e))},[o,l,t]),null}let j=e=>!!e.onSelectionChangeHandlers;function D(e){let{onSelectionChange:t}=e,n=f(j);return t||n?(0,l.jsx)(P,{onSelectionChange:t}):null}let _="undefined"!=typeof window?r.useLayoutEffect:r.useEffect,A=[0,0],R={x:0,y:0,zoom:1},I=["nodes","edges","defaultNodes","defaultEdges","onConnect","onConnectStart","onConnectEnd","onClickConnectStart","onClickConnectEnd","nodesDraggable","autoPanOnNodeFocus","nodesConnectable","nodesFocusable","edgesFocusable","edgesReconnectable","elevateNodesOnSelect","elevateEdgesOnSelect","minZoom","maxZoom","nodeExtent","onNodesChange","onEdgesChange","elementsSelectable","connectionMode","snapGrid","snapToGrid","translateExtent","connectOnClick","defaultEdgeOptions","fitView","fitViewOptions","onNodesDelete","onEdgesDelete","onDelete","onNodeDrag","onNodeDragStart","onNodeDragStop","onSelectionDrag","onSelectionDragStart","onSelectionDragStop","onMoveStart","onMove","onMoveEnd","noPanClassName","nodeOrigin","autoPanOnConnect","autoPanOnNodeDrag","onError","connectionRadius","isValidConnection","selectNodesOnDrag","nodeDragThreshold","connectionDragThreshold","onBeforeDelete","debug","autoPanSpeed","ariaLabelConfig","zIndexMode","rfId"],O=e=>({setNodes:e.setNodes,setEdges:e.setEdges,setMinZoom:e.setMinZoom,setMaxZoom:e.setMaxZoom,setTranslateExtent:e.setTranslateExtent,setNodeExtent:e.setNodeExtent,reset:e.reset,setDefaultNodesAndEdges:e.setDefaultNodesAndEdges}),L={translateExtent:i.ZO,nodeOrigin:A,minZoom:.5,maxZoom:2,elementsSelectable:!0,noPanClassName:"nopan",rfId:"1"};function z(e){let{setNodes:t,setEdges:n,setMinZoom:o,setMaxZoom:l,setTranslateExtent:a,setNodeExtent:s,reset:c,setDefaultNodesAndEdges:u}=f(O,d.x),g=p();_(()=>(u(e.defaultNodes,e.defaultEdges),()=>{h.current=L,c()}),[]);let h=(0,r.useRef)(L);return _(()=>{for(let r of I){let d=e[r];d!==h.current[r]&&void 0!==e[r]&&("nodes"===r?t(d):"edges"===r?n(d):"minZoom"===r?o(d):"maxZoom"===r?l(d):"translateExtent"===r?a(d):"nodeExtent"===r?s(d):"ariaLabelConfig"===r?g.setState({ariaLabelConfig:(0,i.Q6)(d)}):"fitView"===r?g.setState({fitViewQueued:d}):"fitViewOptions"===r?g.setState({fitViewOptions:d}):g.setState({[r]:d}))}h.current=e},I.map(t=>e[t])),null}function B(){return"undefined"!=typeof window&&window.matchMedia?window.matchMedia("(prefers-color-scheme: dark)"):null}let V="undefined"!=typeof document?document:null;function H(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{target:V,actInsideInputWithModifier:!0},[n,o]=(0,r.useState)(!1),l=(0,r.useRef)(!1),a=(0,r.useRef)(new Set([])),[s,d]=(0,r.useMemo)(()=>{if(null!==e){let t=(Array.isArray(e)?e:[e]).filter(e=>"string"==typeof e).map(e=>e.replace("+","\n").replace("\n\n","\n+").split("\n")),n=t.reduce((e,t)=>e.concat(...t),[]);return[t,n]}return[[],[]]},[e]);return(0,r.useEffect)(()=>{var n,r;let c=null!=(n=null==t?void 0:t.target)?n:V,u=null==(r=null==t?void 0:t.actInsideInputWithModifier)||r;if(null!==e){let e=e=>{if(l.current=e.ctrlKey||e.metaKey||e.shiftKey||e.altKey,(!l.current||l.current&&!u)&&(0,i.v5)(e))return!1;let n=F(e.code,d);if(a.current.add(e[n]),T(s,a.current,!1)){var r,c;let n=(null==(c=e.composedPath)||null==(r=c.call(e))?void 0:r[0])||e.target,a=(null==n?void 0:n.nodeName)==="BUTTON"||(null==n?void 0:n.nodeName)==="A";!1!==t.preventDefault&&(l.current||!a)&&e.preventDefault(),o(!0)}},n=e=>{let t=F(e.code,d);T(s,a.current,!0)?(o(!1),a.current.clear()):a.current.delete(e[t]),"Meta"===e.key&&a.current.clear(),l.current=!1},r=()=>{a.current.clear(),o(!1)};return null==c||c.addEventListener("keydown",e),null==c||c.addEventListener("keyup",n),window.addEventListener("blur",r),window.addEventListener("contextmenu",r),()=>{null==c||c.removeEventListener("keydown",e),null==c||c.removeEventListener("keyup",n),window.removeEventListener("blur",r),window.removeEventListener("contextmenu",r)}}},[e,o]),n}function T(e,t,n){return e.filter(e=>n||e.length===t.size).some(e=>e.every(e=>t.has(e)))}function F(e,t){return t.includes(e)?"code":"key"}function Z(e,t){let n=[],o=new Map,l=[];for(let t of e)if("add"===t.type){l.push(t);continue}else if("remove"===t.type||"replace"===t.type)o.set(t.id,[t]);else{let e=o.get(t.id);e?e.push(t):o.set(t.id,[t])}for(let e of t){let t=o.get(e.id);if(!t){n.push(e);continue}if("remove"===t[0].type)continue;if("replace"===t[0].type){n.push({...t[0].item});continue}let l={...e};for(let e of t){var r=e,a=l;switch(r.type){case"select":a.selected=r.selected;break;case"position":void 0!==r.position&&(a.position=r.position),void 0!==r.dragging&&(a.dragging=r.dragging);break;case"dimensions":void 0!==r.dimensions&&(a.measured={...r.dimensions},r.setAttributes&&((!0===r.setAttributes||"width"===r.setAttributes)&&(a.width=r.dimensions.width),(!0===r.setAttributes||"height"===r.setAttributes)&&(a.height=r.dimensions.height))),"boolean"==typeof r.resizing&&(a.resizing=r.resizing)}}n.push(l)}return l.length&&l.forEach(e=>{void 0!==e.index?n.splice(e.index,0,{...e.item}):n.push({...e.item})}),n}function X(e,t){return{id:e,type:"select",selected:t}}function W(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new Set,n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=[];for(let[l,r]of e){let e=t.has(l);(void 0!==r.selected||e)&&r.selected!==e&&(n&&(r.selected=e),o.push(X(r.id,e)))}return o}function K(e){let{items:t=[],lookup:n}=e,o=[],l=new Map(t.map(e=>[e.id,e]));for(let[e,l]of t.entries()){var r,a;let t=n.get(l.id),i=null!=(a=null==t||null==(r=t.internals)?void 0:r.userNode)?a:t;void 0!==i&&i!==l&&o.push({id:l.id,item:l,type:"replace"}),void 0===i&&o.push({item:l,type:"add",index:e})}for(let[e]of n)void 0===l.get(e)&&o.push({id:e,type:"remove"});return o}function Y(e){return{id:e.id,type:"remove"}}let Q=e=>(0,i.oB)(e);function U(e){return(0,r.forwardRef)(e)}function G(e){let[t,n]=(0,r.useState)(BigInt(0)),[o]=(0,r.useState)(()=>{var e;let t;return e=()=>n(e=>e+BigInt(1)),t=[],{get:()=>t,reset:()=>{t=[]},push:n=>{t.push(n),e()}}});return _(()=>{let t=o.get();t.length&&(e(t),o.reset())},[t]),o}let q=(0,r.createContext)(null);function $(e){let{children:t}=e,n=p(),o=G((0,r.useCallback)(e=>{let{nodes:t=[],setNodes:o,hasDefaultNodes:l,onNodesChange:r,nodeLookup:a,fitViewQueued:i,onNodesChangeMiddlewareMap:s}=n.getState(),d=t;for(let t of e)d="function"==typeof t?t(d):t;let c=K({items:d,lookup:a});for(let e of s.values())c=e(c);l&&o(d),c.length>0?null==r||r(c):i&&window.requestAnimationFrame(()=>{let{fitViewQueued:e,nodes:t,setNodes:o}=n.getState();e&&o(t)})},[])),a=G((0,r.useCallback)(e=>{let{edges:t=[],setEdges:o,hasDefaultEdges:l,onEdgesChange:r,edgeLookup:a}=n.getState(),i=t;for(let t of e)i="function"==typeof t?t(i):t;l?o(i):r&&r(K({items:i,lookup:a}))},[])),i=(0,r.useMemo)(()=>({nodeQueue:o,edgeQueue:a}),[]);return(0,l.jsx)(q.Provider,{value:i,children:t})}let J=e=>!!e.panZoom;function ee(){let e=(()=>{let e=p();return(0,r.useMemo)(()=>({zoomIn:t=>{let{panZoom:n}=e.getState();return n?n.scaleBy(1.2,t):Promise.resolve(!1)},zoomOut:t=>{let{panZoom:n}=e.getState();return n?n.scaleBy(1/1.2,t):Promise.resolve(!1)},zoomTo:(t,n)=>{let{panZoom:o}=e.getState();return o?o.scaleTo(t,n):Promise.resolve(!1)},getZoom:()=>e.getState().transform[2],setViewport:async(t,n)=>{var o,l,r;let{transform:[a,i,s],panZoom:d}=e.getState();return d?(await d.setViewport({x:null!=(o=t.x)?o:a,y:null!=(l=t.y)?l:i,zoom:null!=(r=t.zoom)?r:s},n),Promise.resolve(!0)):Promise.resolve(!1)},getViewport:()=>{let[t,n,o]=e.getState().transform;return{x:t,y:n,zoom:o}},setCenter:async(t,n,o)=>e.getState().setCenter(t,n,o),fitBounds:async(t,n)=>{var o;let{width:l,height:r,minZoom:a,maxZoom:s,panZoom:d}=e.getState(),c=(0,i.R4)(t,l,r,a,s,null!=(o=null==n?void 0:n.padding)?o:.1);return d?(await d.setViewport(c,{duration:null==n?void 0:n.duration,ease:null==n?void 0:n.ease,interpolate:null==n?void 0:n.interpolate}),Promise.resolve(!0)):Promise.resolve(!1)},screenToFlowPosition:function(t){var n,o;let l=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{transform:r,snapGrid:a,snapToGrid:s,domNode:d}=e.getState();if(!d)return t;let{x:c,y:u}=d.getBoundingClientRect(),g={x:t.x-c,y:t.y-u},f=null!=(n=l.snapGrid)?n:a,p=null!=(o=l.snapToGrid)?o:s;return(0,i.Ff)(g,r,p,f)},flowToScreenPosition:t=>{let{transform:n,domNode:o}=e.getState();if(!o)return t;let{x:l,y:r}=o.getBoundingClientRect(),a=(0,i.zj)(t,n);return{x:a.x+l,y:a.y+r}}}),[])})(),t=p(),n=function(){let e=(0,r.useContext)(q);if(!e)throw Error("useBatchContext must be used within a BatchProvider");return e}(),o=f(J),l=(0,r.useMemo)(()=>{let e=e=>t.getState().nodeLookup.get(e),o=e=>{n.nodeQueue.push(e)},l=e=>{n.edgeQueue.push(e)},r=e=>{var n,o,l,r;let{nodeLookup:a,nodeOrigin:s}=t.getState(),d=Q(e)?e:a.get(e.id),c=d.parentId?(0,i.us)(d.position,d.measured,d.parentId,a,s):d.position,u={...d,position:c,width:null!=(l=null==(n=d.measured)?void 0:n.width)?l:d.width,height:null!=(r=null==(o=d.measured)?void 0:o.height)?r:d.height};return(0,i.kM)(u)},a=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{replace:!1};o(o=>o.map(o=>{if(o.id===e){let e="function"==typeof t?t(o):t;return n.replace&&Q(e)?e:{...o,...e}}return o}))},s=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{replace:!1};l(o=>o.map(o=>{if(o.id===e){let e="function"==typeof t?t(o):t;return n.replace&&(0,i.b$)(e)?e:{...o,...e}}return o}))};return{getNodes:()=>t.getState().nodes.map(e=>({...e})),getNode:t=>{var n;return null==(n=e(t))?void 0:n.internals.userNode},getInternalNode:e,getEdges:()=>{let{edges:e=[]}=t.getState();return e.map(e=>({...e}))},getEdge:e=>t.getState().edgeLookup.get(e),setNodes:o,setEdges:l,addNodes:e=>{let t=Array.isArray(e)?e:[e];n.nodeQueue.push(e=>[...e,...t])},addEdges:e=>{let t=Array.isArray(e)?e:[e];n.edgeQueue.push(e=>[...e,...t])},toObject:()=>{let{nodes:e=[],edges:n=[],transform:o}=t.getState(),[l,r,a]=o;return{nodes:e.map(e=>({...e})),edges:n.map(e=>({...e})),viewport:{x:l,y:r,zoom:a}}},deleteElements:async e=>{let{nodes:n=[],edges:o=[]}=e,{nodes:l,edges:r,onNodesDelete:a,onEdgesDelete:s,triggerNodeChanges:d,triggerEdgeChanges:c,onDelete:u,onBeforeDelete:g}=t.getState(),{nodes:f,edges:p}=await (0,i.Tq)({nodesToRemove:n,edgesToRemove:o,nodes:l,edges:r,onBeforeDelete:g}),h=p.length>0,m=f.length>0;if(h){let e=p.map(Y);null==s||s(p),c(e)}if(m){let e=f.map(Y);null==a||a(f),d(e)}return(m||h)&&(null==u||u({nodes:f,edges:p})),{deletedNodes:f,deletedEdges:p}},getIntersectingNodes:function(e){let n=!(arguments.length>1)||void 0===arguments[1]||arguments[1],o=arguments.length>2?arguments[2]:void 0,l=(0,i.mW)(e),a=l?e:r(e),s=void 0!==o;return a?(o||t.getState().nodes).filter(o=>{let r=t.getState().nodeLookup.get(o.id);if(r&&!l&&(o.id===e.id||!r.internals.positionAbsolute))return!1;let d=(0,i.kM)(s?o:r),c=(0,i.X6)(d,a);return n&&c>0||c>=d.width*d.height||c>=a.width*a.height}):[]},isNodeIntersecting:function(e,t){let n=!(arguments.length>2)||void 0===arguments[2]||arguments[2],o=(0,i.mW)(e)?e:r(e);if(!o)return!1;let l=(0,i.X6)(o,t);return n&&l>0||l>=t.width*t.height||l>=o.width*o.height},updateNode:a,updateNodeData:function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{replace:!1};a(e,e=>{let o="function"==typeof t?t(e):t;return n.replace?{...e,data:o}:{...e,data:{...e.data,...o}}},n)},updateEdge:s,updateEdgeData:function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{replace:!1};s(e,e=>{let o="function"==typeof t?t(e):t;return n.replace?{...e,data:o}:{...e,data:{...e.data,...o}}},n)},getNodesBounds:e=>{let{nodeLookup:n,nodeOrigin:o}=t.getState();return(0,i.Jo)(e,{nodeLookup:n,nodeOrigin:o})},getHandleConnections:e=>{var n,o;let{type:l,id:r,nodeId:a}=e;return Array.from(null!=(o=null==(n=t.getState().connectionLookup.get("".concat(a,"-").concat(l).concat(r?"-".concat(r):"")))?void 0:n.values())?o:[])},getNodeConnections:e=>{var n,o;let{type:l,handleId:r,nodeId:a}=e;return Array.from(null!=(o=null==(n=t.getState().connectionLookup.get("".concat(a).concat(l?r?"-".concat(l,"-").concat(r):"-".concat(l):"")))?void 0:n.values())?o:[])},fitView:async e=>{var o;let l=null!=(o=t.getState().fitViewResolver)?o:(0,i.YN)();return t.setState({fitViewQueued:!0,fitViewOptions:e,fitViewResolver:l}),n.nodeQueue.push(e=>[...e]),l.promise}}},[]);return(0,r.useMemo)(()=>({...l,...e,viewportInitialized:o}),[o])}let et=e=>e.selected,en="undefined"!=typeof window?window:void 0,eo={position:"absolute",width:"100%",height:"100%",top:0,left:0},el=e=>({userSelectionActive:e.userSelectionActive,lib:e.lib,connectionInProgress:e.connection.inProgress});function er(e){let{onPaneContextMenu:t,zoomOnScroll:n=!0,zoomOnPinch:o=!0,panOnScroll:a=!1,panOnScrollSpeed:s=.5,panOnScrollMode:c=i.ny.Free,zoomOnDoubleClick:u=!0,panOnDrag:g=!0,defaultViewport:h,translateExtent:m,minZoom:v,maxZoom:y,zoomActivationKeyCode:b,preventScrolling:x=!0,children:w,noWheelClassName:S,noPanClassName:C,onViewportChange:E,isControlledViewport:N,paneClickDistance:k,selectionOnDrag:M}=e,P=p(),j=(0,r.useRef)(null),{userSelectionActive:D,lib:_,connectionInProgress:A}=f(el,d.x),R=H(b),I=(0,r.useRef)(),O=p();(0,r.useEffect)(()=>{let e=()=>{var e,t,n,o,l;if(!j.current||!(null==(n=null==(e=(t=j.current).checkVisibility)?void 0:e.call(t))||n))return!1;let r=(0,i.Eo)(j.current);(0===r.height||0===r.width)&&(null==(o=(l=O.getState()).onError)||o.call(l,"004",i.xc.error004())),O.setState({width:r.width||500,height:r.height||500})};if(j.current){e(),window.addEventListener("resize",e);let t=new ResizeObserver(()=>e());return t.observe(j.current),()=>{window.removeEventListener("resize",e),t&&j.current&&t.unobserve(j.current)}}},[]);let L=(0,r.useCallback)(e=>{null==E||E({x:e[0],y:e[1],zoom:e[2]}),N||P.setState({transform:e})},[E,N]);return(0,r.useEffect)(()=>{if(j.current){I.current=(0,i.kO)({domNode:j.current,minZoom:v,maxZoom:y,translateExtent:m,viewport:h,onDraggingChange:e=>P.setState(t=>t.paneDragging===e?t:{paneDragging:e}),onPanZoomStart:(e,t)=>{let{onViewportChangeStart:n,onMoveStart:o}=P.getState();null==o||o(e,t),null==n||n(t)},onPanZoom:(e,t)=>{let{onViewportChange:n,onMove:o}=P.getState();null==o||o(e,t),null==n||n(t)},onPanZoomEnd:(e,t)=>{let{onViewportChangeEnd:n,onMoveEnd:o}=P.getState();null==o||o(e,t),null==n||n(t)}});let{x:e,y:t,zoom:n}=I.current.getViewport();return P.setState({panZoom:I.current,transform:[e,t,n],domNode:j.current.closest(".react-flow")}),()=>{var e;null==(e=I.current)||e.destroy()}}},[]),(0,r.useEffect)(()=>{var e;null==(e=I.current)||e.update({onPaneContextMenu:t,zoomOnScroll:n,zoomOnPinch:o,panOnScroll:a,panOnScrollSpeed:s,panOnScrollMode:c,zoomOnDoubleClick:u,panOnDrag:g,zoomActivationKeyPressed:R,preventScrolling:x,noPanClassName:C,userSelectionActive:D,noWheelClassName:S,lib:_,onTransformChange:L,connectionInProgress:A,selectionOnDrag:M,paneClickDistance:k})},[t,n,o,a,s,c,u,g,R,x,C,D,S,_,L,A,M,k]),(0,l.jsx)("div",{className:"react-flow__renderer",ref:j,style:eo,children:w})}let ea=e=>({userSelectionActive:e.userSelectionActive,userSelectionRect:e.userSelectionRect});function ei(){let{userSelectionActive:e,userSelectionRect:t}=f(ea,d.x);return e&&t?(0,l.jsx)("div",{className:"react-flow__selection react-flow__container",style:{width:t.width,height:t.height,transform:"translate(".concat(t.x,"px, ").concat(t.y,"px)")}}):null}let es=(e,t)=>n=>{n.target===t.current&&(null==e||e(n))},ed=e=>({userSelectionActive:e.userSelectionActive,elementsSelectable:e.elementsSelectable,connectionInProgress:e.connection.inProgress,dragging:e.paneDragging});function ec(e){let{isSelecting:t,selectionKeyPressed:n,selectionMode:o=i.Qc.Full,panOnDrag:s,paneClickDistance:c,selectionOnDrag:u,onSelectionStart:g,onSelectionEnd:h,onPaneClick:m,onPaneContextMenu:v,onPaneScroll:y,onPaneMouseEnter:b,onPaneMouseMove:x,onPaneMouseLeave:w,children:S}=e,C=p(),{userSelectionActive:E,elementsSelectable:N,dragging:k,connectionInProgress:M}=f(ed,d.x),P=N&&(t||E),j=(0,r.useRef)(null),D=(0,r.useRef)(),_=(0,r.useRef)(new Set),A=(0,r.useRef)(new Set),R=(0,r.useRef)(!1),I=e=>{if(R.current||M){R.current=!1;return}null==m||m(e),C.getState().resetSelectedElements(),C.setState({nodesSelectionActive:!1})},O=!0===s||Array.isArray(s)&&s.includes(0);return(0,l.jsxs)("div",{className:(0,a.A)(["react-flow__pane",{draggable:O,dragging:k,selection:t}]),onClick:P?void 0:es(I,j),onContextMenu:es(e=>{if(Array.isArray(s)&&(null==s?void 0:s.includes(2)))return void e.preventDefault();null==v||v(e)},j),onWheel:es(y?e=>y(e):void 0,j),onPointerEnter:P?void 0:b,onPointerMove:P?e=>{var t,l;let{userSelectionRect:r,transform:a,nodeLookup:s,edgeLookup:d,connectionLookup:u,triggerNodeChanges:f,triggerEdgeChanges:p,defaultEdgeOptions:h,resetSelectedElements:m}=C.getState();if(!D.current||!r)return;let{x:v,y:y}=(0,i.q1)(e.nativeEvent,D.current),{startX:b,startY:x}=r;if(!R.current){if(Math.hypot(v-b,y-x)<=(n?0:c))return;m(),null==g||g(e)}R.current=!0;let w={startX:b,startY:x,x:v<b?v:b,y:y<x?y:x,width:Math.abs(v-b),height:Math.abs(y-x)},S=_.current,E=A.current;_.current=new Set((0,i.U$)(s,w,a,o===i.Qc.Partial,!0).map(e=>e.id)),A.current=new Set;let N=null==(t=null==h?void 0:h.selectable)||t;for(let e of _.current){let t=u.get(e);if(t)for(let{edgeId:e}of t.values()){let t=d.get(e);t&&(null!=(l=t.selectable)?l:N)&&A.current.add(e)}}(0,i._s)(S,_.current)||f(W(s,_.current,!0)),(0,i._s)(E,A.current)||p(W(d,A.current)),C.setState({userSelectionRect:w,userSelectionActive:!0,nodesSelectionActive:!1})}:x,onPointerUp:P?e=>{var t,n;0===e.button&&(null==(n=e.target)||null==(t=n.releasePointerCapture)||t.call(n,e.pointerId),!E&&e.target===j.current&&C.getState().userSelectionRect&&(null==I||I(e)),C.setState({userSelectionActive:!1,userSelectionRect:null}),R.current&&(null==h||h(e),C.setState({nodesSelectionActive:_.current.size>0})))}:void 0,onPointerDownCapture:P?e=>{var o,l;let{domNode:r}=C.getState();if(D.current=null==r?void 0:r.getBoundingClientRect(),!D.current)return;let a=e.target===j.current;if(!a&&e.target.closest(".nokey")||!t||!(u&&a||n)||0!==e.button||!e.isPrimary)return;null==(l=e.target)||null==(o=l.setPointerCapture)||o.call(l,e.pointerId),R.current=!1;let{x:s,y:d}=(0,i.q1)(e.nativeEvent,D.current);C.setState({userSelectionRect:{width:0,height:0,startX:s,startY:d,x:s,y:d}}),a||(e.stopPropagation(),e.preventDefault())}:void 0,onClickCapture:P?e=>{R.current&&(e.stopPropagation(),R.current=!1)}:void 0,onPointerLeave:w,ref:j,style:eo,children:[S,(0,l.jsx)(ei,{})]})}function eu(e){let{id:t,store:n,unselect:o=!1,nodeRef:l}=e,{addSelectedNodes:r,unselectNodesAndEdges:a,multiSelectionActive:s,nodeLookup:d,onError:c}=n.getState(),u=d.get(t);if(!u){null==c||c("012",i.xc.error012(t));return}n.setState({nodesSelectionActive:!1}),u.selected?(o||u.selected&&s)&&(a({nodes:[u],edges:[]}),requestAnimationFrame(()=>{var e;return null==l||null==(e=l.current)?void 0:e.blur()})):r([t])}function eg(e){let{nodeRef:t,disabled:n=!1,noDragClassName:o,handleSelector:l,nodeId:a,isSelectable:s,nodeClickDistance:d}=e,c=p(),[u,g]=(0,r.useState)(!1),f=(0,r.useRef)();return(0,r.useEffect)(()=>{f.current=(0,i.I$)({getStoreItems:()=>c.getState(),onNodeMouseDown:e=>{eu({id:e,store:c,nodeRef:t})},onDragStart:()=>{g(!0)},onDragStop:()=>{g(!1)}})},[]),(0,r.useEffect)(()=>{if(!n&&t.current&&f.current)return f.current.update({noDragClassName:o,handleSelector:l,domNode:t.current,isSelectable:s,nodeId:a,nodeClickDistance:d}),()=>{var e;null==(e=f.current)||e.destroy()}},[o,l,n,s,t,a,d]),u}function ef(){let e=p();return(0,r.useCallback)(t=>{let{nodeExtent:n,snapToGrid:o,snapGrid:l,nodesDraggable:r,onError:a,updateNodePositions:s,nodeLookup:d,nodeOrigin:c}=e.getState(),u=new Map,g=e=>e.selected&&(e.draggable||r&&void 0===e.draggable),f=o?l[0]:5,p=o?l[1]:5,h=t.direction.x*f*t.factor,m=t.direction.y*p*t.factor;for(let[,e]of d){if(!g(e))continue;let t={x:e.internals.positionAbsolute.x+h,y:e.internals.positionAbsolute.y+m};o&&(t=(0,i.s_)(t,l));let{position:r,positionAbsolute:s}=(0,i.aE)({nodeId:e.id,nextPosition:t,nodeLookup:d,nodeExtent:n,nodeOrigin:c,onError:a});e.position=r,e.internals.positionAbsolute=s,u.set(e.id,e)}s(u)},[])}let ep=(0,r.createContext)(null),eh=ep.Provider;ep.Consumer;let em=e=>({connectOnClick:e.connectOnClick,noPanClassName:e.noPanClassName,rfId:e.rfId}),ev=(0,r.memo)(U(function(e,t){let{type:n="source",position:o=i.yX.Top,isValidConnection:s,isConnectable:c=!0,isConnectableStart:u=!0,isConnectableEnd:g=!0,id:h,onConnect:m,children:v,className:y,onMouseDown:b,onTouchStart:x,...w}=e,S=h||null,C="target"===n,E=p(),N=(0,r.useContext)(ep),{connectOnClick:k,noPanClassName:M,rfId:P}=f(em,d.x),{connectingFrom:j,connectingTo:D,clickConnecting:_,isPossibleEndHandle:A,connectionInProcess:R,clickConnectionInProcess:I,valid:O}=f(e=>{let{connectionClickStartHandle:t,connectionMode:o,connection:l}=e,{fromHandle:r,toHandle:a,isValid:s}=l,d=(null==a?void 0:a.nodeId)===N&&(null==a?void 0:a.id)===S&&(null==a?void 0:a.type)===n;return{connectingFrom:(null==r?void 0:r.nodeId)===N&&(null==r?void 0:r.id)===S&&(null==r?void 0:r.type)===n,connectingTo:d,clickConnecting:(null==t?void 0:t.nodeId)===N&&(null==t?void 0:t.id)===S&&(null==t?void 0:t.type)===n,isPossibleEndHandle:o===i.WZ.Strict?(null==r?void 0:r.type)!==n:N!==(null==r?void 0:r.nodeId)||S!==(null==r?void 0:r.id),connectionInProcess:!!r,clickConnectionInProcess:!!t,valid:d&&s}},d.x);if(!N){var L,z;null==(L=(z=E.getState()).onError)||L.call(z,"010",i.xc.error010())}let B=e=>{let{defaultEdgeOptions:t,onConnect:n,hasDefaultEdges:o}=E.getState(),l={...t,...e};if(o){let{edges:e,setEdges:t}=E.getState();t((0,i.rN)(l,e))}null==n||n(l),null==m||m(l)},V=e=>{if(!N)return;let t=(0,i.Er)(e.nativeEvent);if(u&&(t&&0===e.button||!t)){let t=E.getState();i.aQ.onPointerDown(e.nativeEvent,{handleDomNode:e.currentTarget,autoPanOnConnect:t.autoPanOnConnect,connectionMode:t.connectionMode,connectionRadius:t.connectionRadius,domNode:t.domNode,nodeLookup:t.nodeLookup,lib:t.lib,isTarget:C,handleId:S,nodeId:N,flowId:t.rfId,panBy:t.panBy,cancelConnection:t.cancelConnection,onConnectStart:t.onConnectStart,onConnectEnd:function(){for(var e,t,n=arguments.length,o=Array(n),l=0;l<n;l++)o[l]=arguments[l];return null==(e=(t=E.getState()).onConnectEnd)?void 0:e.call(t,...o)},updateConnection:t.updateConnection,onConnect:B,isValidConnection:s||function(){for(var e,t,n,o=arguments.length,l=Array(o),r=0;r<o;r++)l[r]=arguments[r];return null==(n=null==(e=(t=E.getState()).isValidConnection)?void 0:e.call(t,...l))||n},getTransform:()=>E.getState().transform,getFromHandle:()=>E.getState().connection.fromHandle,autoPanSpeed:t.autoPanSpeed,dragThreshold:t.connectionDragThreshold})}t?null==b||b(e):null==x||x(e)};return(0,l.jsx)("div",{"data-handleid":S,"data-nodeid":N,"data-handlepos":o,"data-id":"".concat(P,"-").concat(N,"-").concat(S,"-").concat(n),className:(0,a.A)(["react-flow__handle","react-flow__handle-".concat(o),"nodrag",M,y,{source:!C,target:C,connectable:c,connectablestart:u,connectableend:g,clickconnecting:_,connectingfrom:j,connectingto:D,valid:O,connectionindicator:c&&(!R||A)&&(R||I?g:u)}]),onMouseDown:V,onTouchStart:V,onClick:k?e=>{let{onClickConnectStart:t,onClickConnectEnd:o,connectionClickStartHandle:l,connectionMode:r,isValidConnection:a,lib:d,rfId:c,nodeLookup:g,connection:f}=E.getState();if(!N||!l&&!u)return;if(!l){null==t||t(e.nativeEvent,{nodeId:N,handleId:S,handleType:n}),E.setState({connectionClickStartHandle:{nodeId:N,type:n,id:S}});return}let p=(0,i.oj)(e.target),h=s||a,{connection:m,isValid:v}=i.aQ.isValid(e.nativeEvent,{handle:{nodeId:N,id:S,type:n},connectionMode:r,fromNodeId:l.nodeId,fromHandleId:l.id||null,fromType:l.type,isValidConnection:h,flowId:c,doc:p,lib:d,nodeLookup:g});v&&m&&B(m);let y=structuredClone(f);delete y.inProgress,y.toPosition=y.toHandle?y.toHandle.position:null,null==o||o(e,y),E.setState({connectionClickStartHandle:null})}:void 0,ref:t,...w,children:v})})),ey={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}},eb={input:function(e){let{data:t,isConnectable:n,sourcePosition:o=i.yX.Bottom}=e;return(0,l.jsxs)(l.Fragment,{children:[null==t?void 0:t.label,(0,l.jsx)(ev,{type:"source",position:o,isConnectable:n})]})},default:function(e){let{data:t,isConnectable:n,targetPosition:o=i.yX.Top,sourcePosition:r=i.yX.Bottom}=e;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(ev,{type:"target",position:o,isConnectable:n}),null==t?void 0:t.label,(0,l.jsx)(ev,{type:"source",position:r,isConnectable:n})]})},output:function(e){let{data:t,isConnectable:n,targetPosition:o=i.yX.Top}=e;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(ev,{type:"target",position:o,isConnectable:n}),null==t?void 0:t.label]})},group:function(){return null}},ex=e=>{let{width:t,height:n,x:o,y:l}=(0,i.aZ)(e.nodeLookup,{filter:e=>!!e.selected});return{width:(0,i.kf)(t)?t:null,height:(0,i.kf)(n)?n:null,userSelectionActive:e.userSelectionActive,transformString:"translate(".concat(e.transform[0],"px,").concat(e.transform[1],"px) scale(").concat(e.transform[2],") translate(").concat(o,"px,").concat(l,"px)")}};function ew(e){let{onSelectionContextMenu:t,noPanClassName:n,disableKeyboardA11y:o}=e,i=p(),{width:s,height:c,transformString:u,userSelectionActive:g}=f(ex,d.x),h=ef(),m=(0,r.useRef)(null);(0,r.useEffect)(()=>{if(!o){var e;null==(e=m.current)||e.focus({preventScroll:!0})}},[o]);let v=!g&&null!==s&&null!==c;if(eg({nodeRef:m,disabled:!v}),!v)return null;let y=t?e=>{t(e,i.getState().nodes.filter(e=>e.selected))}:void 0;return(0,l.jsx)("div",{className:(0,a.A)(["react-flow__nodesselection","react-flow__container",n]),style:{transform:u},children:(0,l.jsx)("div",{ref:m,className:"react-flow__nodesselection-rect",onContextMenu:y,tabIndex:o?void 0:-1,onKeyDown:o?void 0:e=>{Object.prototype.hasOwnProperty.call(ey,e.key)&&(e.preventDefault(),h({direction:ey[e.key],factor:e.shiftKey?4:1}))},style:{width:s,height:c}})})}let eS="undefined"!=typeof window?window:void 0,eC=e=>({nodesSelectionActive:e.nodesSelectionActive,userSelectionActive:e.userSelectionActive});function eE(e){let{children:t,onPaneClick:n,onPaneMouseEnter:o,onPaneMouseMove:a,onPaneMouseLeave:i,onPaneContextMenu:s,onPaneScroll:c,paneClickDistance:u,deleteKeyCode:g,selectionKeyCode:h,selectionOnDrag:m,selectionMode:v,onSelectionStart:y,onSelectionEnd:b,multiSelectionKeyCode:x,panActivationKeyCode:w,zoomActivationKeyCode:S,elementsSelectable:C,zoomOnScroll:E,zoomOnPinch:N,panOnScroll:k,panOnScrollSpeed:M,panOnScrollMode:P,zoomOnDoubleClick:j,panOnDrag:D,defaultViewport:_,translateExtent:A,minZoom:R,maxZoom:I,preventScrolling:O,onSelectionContextMenu:L,noWheelClassName:z,noPanClassName:B,disableKeyboardA11y:V,onViewportChange:T,isControlledViewport:F}=e,{nodesSelectionActive:Z,userSelectionActive:X}=f(eC,d.x),W=H(h,{target:eS}),K=H(w,{target:eS}),Y=K||D,Q=K||k,U=m&&!0!==Y,G=W||X||U;return!function(e){let{deleteKeyCode:t,multiSelectionKeyCode:n}=e,o=p(),{deleteElements:l}=ee(),a=H(t,{actInsideInputWithModifier:!1}),i=H(n,{target:en});(0,r.useEffect)(()=>{if(a){let{edges:e,nodes:t}=o.getState();l({nodes:t.filter(et),edges:e.filter(et)}),o.setState({nodesSelectionActive:!1})}},[a]),(0,r.useEffect)(()=>{o.setState({multiSelectionActive:i})},[i])}({deleteKeyCode:g,multiSelectionKeyCode:x}),(0,l.jsx)(er,{onPaneContextMenu:s,elementsSelectable:C,zoomOnScroll:E,zoomOnPinch:N,panOnScroll:Q,panOnScrollSpeed:M,panOnScrollMode:P,zoomOnDoubleClick:j,panOnDrag:!W&&Y,defaultViewport:_,translateExtent:A,minZoom:R,maxZoom:I,zoomActivationKeyCode:S,preventScrolling:O,noWheelClassName:z,noPanClassName:B,onViewportChange:T,isControlledViewport:F,paneClickDistance:u,selectionOnDrag:U,children:(0,l.jsxs)(ec,{onSelectionStart:y,onSelectionEnd:b,onPaneClick:n,onPaneMouseEnter:o,onPaneMouseMove:a,onPaneMouseLeave:i,onPaneContextMenu:s,onPaneScroll:c,panOnDrag:Y,isSelecting:!!G,selectionMode:v,selectionKeyPressed:W,paneClickDistance:u,selectionOnDrag:U,children:[t,Z&&(0,l.jsx)(ew,{onSelectionContextMenu:L,noPanClassName:B,disableKeyboardA11y:V})]})})}eE.displayName="FlowRenderer";let eN=(0,r.memo)(eE),ek=e=>e.updateNodeInternals;var eM=(0,r.memo)(function(e){var t,n,o,s,c,u,g,h,m,y,b,x,w;let{id:S,onClick:C,onMouseEnter:E,onMouseMove:N,onMouseLeave:k,onContextMenu:M,onDoubleClick:P,nodesDraggable:j,elementsSelectable:D,nodesConnectable:_,nodesFocusable:A,resizeObserver:R,noDragClassName:I,noPanClassName:O,disableKeyboardA11y:L,rfId:z,nodeTypes:B,nodeClickDistance:V,onError:H}=e,{node:T,internals:F,isParent:Z}=f(e=>{let t=e.nodeLookup.get(S),n=e.parentLookup.has(S);return{node:t,internals:t.internals,isParent:n}},d.x),X=T.type||"default",W=(null==B?void 0:B[X])||eb[X];void 0===W&&(null==H||H("003",i.xc.error003(X)),X="default",W=(null==B?void 0:B.default)||eb.default);let K=!!(T.draggable||j&&void 0===T.draggable),Y=!!(T.selectable||D&&void 0===T.selectable),Q=!!(T.connectable||_&&void 0===T.connectable),U=!!(T.focusable||A&&void 0===T.focusable),G=p(),q=(0,i.QE)(T),$=function(e){let{node:t,nodeType:n,hasDimensions:o,resizeObserver:l}=e,a=p(),i=(0,r.useRef)(null),s=(0,r.useRef)(null),d=(0,r.useRef)(t.sourcePosition),c=(0,r.useRef)(t.targetPosition),u=(0,r.useRef)(n),g=o&&!!t.internals.handleBounds;return(0,r.useEffect)(()=>{!i.current||t.hidden||g&&s.current===i.current||(s.current&&(null==l||l.unobserve(s.current)),null==l||l.observe(i.current),s.current=i.current)},[g,t.hidden]),(0,r.useEffect)(()=>()=>{s.current&&(null==l||l.unobserve(s.current),s.current=null)},[]),(0,r.useEffect)(()=>{if(i.current){let e=u.current!==n,o=d.current!==t.sourcePosition,l=c.current!==t.targetPosition;(e||o||l)&&(u.current=n,d.current=t.sourcePosition,c.current=t.targetPosition,a.getState().updateNodeInternals(new Map([[t.id,{id:t.id,nodeElement:i.current,force:!0}]])))}},[t.id,n,t.sourcePosition,t.targetPosition]),i}({node:T,nodeType:X,hasDimensions:q,resizeObserver:R}),J=eg({nodeRef:$,disabled:T.hidden||!K,noDragClassName:I,handleSelector:T.dragHandle,nodeId:S,isSelectable:Y,nodeClickDistance:V}),ee=ef();if(T.hidden)return null;let et=(0,i.uD)(T),en=void 0===T.internals.handleBounds?{width:null!=(m=null!=(h=T.width)?h:T.initialWidth)?m:null==(u=T.style)?void 0:u.width,height:null!=(b=null!=(y=T.height)?y:T.initialHeight)?b:null==(g=T.style)?void 0:g.height}:{width:null!=(x=T.width)?x:null==(s=T.style)?void 0:s.width,height:null!=(w=T.height)?w:null==(c=T.style)?void 0:c.height},eo=Y||K||C||E||N||k,el=E?e=>E(e,{...F.userNode}):void 0,er=N?e=>N(e,{...F.userNode}):void 0,ea=k?e=>k(e,{...F.userNode}):void 0,ei=M?e=>M(e,{...F.userNode}):void 0,es=P?e=>P(e,{...F.userNode}):void 0;return(0,l.jsx)("div",{className:(0,a.A)(["react-flow__node","react-flow__node-".concat(X),{[O]:K},T.className,{selected:T.selected,selectable:Y,parent:Z,draggable:K,dragging:J}]),ref:$,style:{zIndex:F.z,transform:"translate(".concat(F.positionAbsolute.x,"px,").concat(F.positionAbsolute.y,"px)"),pointerEvents:eo?"all":"none",visibility:q?"visible":"hidden",...T.style,...en},"data-id":S,"data-testid":"rf__node-".concat(S),onMouseEnter:el,onMouseMove:er,onMouseLeave:ea,onContextMenu:ei,onClick:e=>{let{selectNodesOnDrag:t,nodeDragThreshold:n}=G.getState();Y&&(!t||!K||n>0)&&eu({id:S,store:G,nodeRef:$}),C&&C(e,{...F.userNode})},onDoubleClick:es,onKeyDown:U?e=>{if(!(0,i.v5)(e.nativeEvent)&&!L){if(i.tn.includes(e.key)&&Y)eu({id:S,store:G,unselect:"Escape"===e.key,nodeRef:$});else if(K&&T.selected&&Object.prototype.hasOwnProperty.call(ey,e.key)){e.preventDefault();let{ariaLabelConfig:t}=G.getState();G.setState({ariaLiveMessage:t["node.a11yDescription.ariaLiveMessage"]({direction:e.key.replace("Arrow","").toLowerCase(),x:~~F.positionAbsolute.x,y:~~F.positionAbsolute.y})}),ee({direction:ey[e.key],factor:e.shiftKey?4:1})}}}:void 0,tabIndex:U?0:void 0,onFocus:U?()=>{var e;if(L||!(null==(e=$.current)?void 0:e.matches(":focus-visible")))return;let{transform:t,width:n,height:o,autoPanOnNodeFocus:l,setCenter:r}=G.getState();l&&((0,i.U$)(new Map([[S,T]]),{x:0,y:0,width:n,height:o},t,!0).length>0||r(T.position.x+et.width/2,T.position.y+et.height/2,{zoom:t[2]}))}:void 0,role:null!=(t=T.ariaRole)?t:U?"group":void 0,"aria-roledescription":"node","aria-describedby":L?void 0:"".concat(v,"-").concat(z),"aria-label":T.ariaLabel,...T.domAttributes,children:(0,l.jsx)(eh,{value:S,children:(0,l.jsx)(W,{id:S,data:T.data,type:X,positionAbsoluteX:F.positionAbsolute.x,positionAbsoluteY:F.positionAbsolute.y,selected:null!=(n=T.selected)&&n,selectable:Y,draggable:K,deletable:null==(o=T.deletable)||o,isConnectable:Q,sourcePosition:T.sourcePosition,targetPosition:T.targetPosition,dragging:J,dragHandle:T.dragHandle,zIndex:F.z,parentId:T.parentId,...et})})})});let eP=e=>({nodesDraggable:e.nodesDraggable,nodesConnectable:e.nodesConnectable,nodesFocusable:e.nodesFocusable,elementsSelectable:e.elementsSelectable,onError:e.onError});function ej(e){var t;let{nodesDraggable:n,nodesConnectable:o,nodesFocusable:a,elementsSelectable:s,onError:c}=f(eP,d.x),u=(t=e.onlyRenderVisibleElements,f((0,r.useCallback)(e=>t?(0,i.U$)(e.nodeLookup,{x:0,y:0,width:e.width,height:e.height},e.transform,!0).map(e=>e.id):Array.from(e.nodeLookup.keys()),[t]),d.x)),g=function(){let e=f(ek),[t]=(0,r.useState)(()=>"undefined"==typeof ResizeObserver?null:new ResizeObserver(t=>{let n=new Map;t.forEach(e=>{let t=e.target.getAttribute("data-id");n.set(t,{id:t,nodeElement:e.target,force:!0})}),e(n)}));return(0,r.useEffect)(()=>()=>{null==t||t.disconnect()},[t]),t}();return(0,l.jsx)("div",{className:"react-flow__nodes",style:eo,children:u.map(t=>(0,l.jsx)(eM,{id:t,nodeTypes:e.nodeTypes,nodeExtent:e.nodeExtent,onClick:e.onNodeClick,onMouseEnter:e.onNodeMouseEnter,onMouseMove:e.onNodeMouseMove,onMouseLeave:e.onNodeMouseLeave,onContextMenu:e.onNodeContextMenu,onDoubleClick:e.onNodeDoubleClick,noDragClassName:e.noDragClassName,noPanClassName:e.noPanClassName,rfId:e.rfId,disableKeyboardA11y:e.disableKeyboardA11y,resizeObserver:g,nodesDraggable:n,nodesConnectable:o,nodesFocusable:a,elementsSelectable:s,nodeClickDistance:e.nodeClickDistance,onError:c},t))})}ej.displayName="NodeRenderer";let eD=(0,r.memo)(ej),e_={[i.TG.Arrow]:e=>{let{color:t="none",strokeWidth:n=1}=e,o={strokeWidth:n,...t&&{stroke:t}};return(0,l.jsx)("polyline",{className:"arrow",style:o,strokeLinecap:"round",fill:"none",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4"})},[i.TG.ArrowClosed]:e=>{let{color:t="none",strokeWidth:n=1}=e,o={strokeWidth:n,...t&&{stroke:t,fill:t}};return(0,l.jsx)("polyline",{className:"arrowclosed",style:o,strokeLinecap:"round",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4 -5,-4"})}},eA=e=>{let{id:t,type:n,color:o,width:a=12.5,height:s=12.5,markerUnits:d="strokeWidth",strokeWidth:c,orient:u="auto-start-reverse"}=e,g=function(e){let t=p();return(0,r.useMemo)(()=>{if(!Object.prototype.hasOwnProperty.call(e_,e)){var n,o;return null==(n=(o=t.getState()).onError)||n.call(o,"009",i.xc.error009(e)),null}return e_[e]},[e])}(n);return g?(0,l.jsx)("marker",{className:"react-flow__arrowhead",id:t,markerWidth:"".concat(a),markerHeight:"".concat(s),viewBox:"-10 -10 20 20",markerUnits:d,orient:u,refX:"0",refY:"0",children:(0,l.jsx)(g,{color:o,strokeWidth:c})}):null},eR=e=>{let{defaultColor:t,rfId:n}=e,o=f(e=>e.edges),a=f(e=>e.defaultEdgeOptions),s=(0,r.useMemo)(()=>(0,i.Hm)(o,{id:n,defaultColor:t,defaultMarkerStart:null==a?void 0:a.markerStart,defaultMarkerEnd:null==a?void 0:a.markerEnd}),[o,a,n,t]);return s.length?(0,l.jsx)("svg",{className:"react-flow__marker","aria-hidden":"true",children:(0,l.jsx)("defs",{children:s.map(e=>(0,l.jsx)(eA,{id:e.id,type:e.type,color:e.color,width:e.width,height:e.height,markerUnits:e.markerUnits,strokeWidth:e.strokeWidth,orient:e.orient},e.id))})}):null};eR.displayName="MarkerDefinitions";var eI=(0,r.memo)(eR);function eO(e){let{x:t,y:n,label:o,labelStyle:i,labelShowBg:s=!0,labelBgStyle:d,labelBgPadding:c=[2,4],labelBgBorderRadius:u=2,children:g,className:f,...p}=e,[h,m]=(0,r.useState)({x:1,y:0,width:0,height:0}),v=(0,a.A)(["react-flow__edge-textwrapper",f]),y=(0,r.useRef)(null);return((0,r.useEffect)(()=>{if(y.current){let e=y.current.getBBox();m({x:e.x,y:e.y,width:e.width,height:e.height})}},[o]),o)?(0,l.jsxs)("g",{transform:"translate(".concat(t-h.width/2," ").concat(n-h.height/2,")"),className:v,visibility:h.width?"visible":"hidden",...p,children:[s&&(0,l.jsx)("rect",{width:h.width+2*c[0],x:-c[0],y:-c[1],height:h.height+2*c[1],className:"react-flow__edge-textbg",style:d,rx:u,ry:u}),(0,l.jsx)("text",{className:"react-flow__edge-text",y:h.height/2,dy:"0.3em",ref:y,style:i,children:o}),g]}):null}eO.displayName="EdgeText";let eL=(0,r.memo)(eO);function ez(e){let{path:t,labelX:n,labelY:o,label:r,labelStyle:s,labelShowBg:d,labelBgStyle:c,labelBgPadding:u,labelBgBorderRadius:g,interactionWidth:f=20,...p}=e;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("path",{...p,d:t,fill:"none",className:(0,a.A)(["react-flow__edge-path",p.className])}),f?(0,l.jsx)("path",{d:t,fill:"none",strokeOpacity:0,strokeWidth:f,className:"react-flow__edge-interaction"}):null,r&&(0,i.kf)(n)&&(0,i.kf)(o)?(0,l.jsx)(eL,{x:n,y:o,label:r,labelStyle:s,labelShowBg:d,labelBgStyle:c,labelBgPadding:u,labelBgBorderRadius:g}):null]})}function eB(e){let{pos:t,x1:n,y1:o,x2:l,y2:r}=e;return t===i.yX.Left||t===i.yX.Right?[.5*(n+l),o]:[n,.5*(o+r)]}function eV(e){let{sourceX:t,sourceY:n,sourcePosition:o=i.yX.Bottom,targetX:l,targetY:r,targetPosition:a=i.yX.Top}=e,[s,d]=eB({pos:o,x1:t,y1:n,x2:l,y2:r}),[c,u]=eB({pos:a,x1:l,y1:r,x2:t,y2:n}),[g,f,p,h]=(0,i.e_)({sourceX:t,sourceY:n,targetX:l,targetY:r,sourceControlX:s,sourceControlY:d,targetControlX:c,targetControlY:u});return["M".concat(t,",").concat(n," C").concat(s,",").concat(d," ").concat(c,",").concat(u," ").concat(l,",").concat(r),g,f,p,h]}function eH(e){return(0,r.memo)(t=>{let{id:n,sourceX:o,sourceY:r,targetX:a,targetY:i,sourcePosition:s,targetPosition:d,label:c,labelStyle:u,labelShowBg:g,labelBgStyle:f,labelBgPadding:p,labelBgBorderRadius:h,style:m,markerEnd:v,markerStart:y,interactionWidth:b}=t,[x,w,S]=eV({sourceX:o,sourceY:r,sourcePosition:s,targetX:a,targetY:i,targetPosition:d}),C=e.isInternal?void 0:n;return(0,l.jsx)(ez,{id:C,path:x,labelX:w,labelY:S,label:c,labelStyle:u,labelShowBg:g,labelBgStyle:f,labelBgPadding:p,labelBgBorderRadius:h,style:m,markerEnd:v,markerStart:y,interactionWidth:b})})}let eT=eH({isInternal:!1}),eF=eH({isInternal:!0});function eZ(e){return(0,r.memo)(t=>{let{id:n,sourceX:o,sourceY:r,targetX:a,targetY:s,label:d,labelStyle:c,labelShowBg:u,labelBgStyle:g,labelBgPadding:f,labelBgBorderRadius:p,style:h,sourcePosition:m=i.yX.Bottom,targetPosition:v=i.yX.Top,markerEnd:y,markerStart:b,pathOptions:x,interactionWidth:w}=t,[S,C,E]=(0,i.oN)({sourceX:o,sourceY:r,sourcePosition:m,targetX:a,targetY:s,targetPosition:v,borderRadius:null==x?void 0:x.borderRadius,offset:null==x?void 0:x.offset,stepPosition:null==x?void 0:x.stepPosition}),N=e.isInternal?void 0:n;return(0,l.jsx)(ez,{id:N,path:S,labelX:C,labelY:E,label:d,labelStyle:c,labelShowBg:u,labelBgStyle:g,labelBgPadding:f,labelBgBorderRadius:p,style:h,markerEnd:y,markerStart:b,interactionWidth:w})})}eT.displayName="SimpleBezierEdge",eF.displayName="SimpleBezierEdgeInternal";let eX=eZ({isInternal:!1}),eW=eZ({isInternal:!0});function eK(e){return(0,r.memo)(t=>{var n;let{id:o,...a}=t,i=e.isInternal?void 0:o;return(0,l.jsx)(eX,{...a,id:i,pathOptions:(0,r.useMemo)(()=>{var e;return{borderRadius:0,offset:null==(e=a.pathOptions)?void 0:e.offset}},[null==(n=a.pathOptions)?void 0:n.offset])})})}eX.displayName="SmoothStepEdge",eW.displayName="SmoothStepEdgeInternal";let eY=eK({isInternal:!1}),eQ=eK({isInternal:!0});function eU(e){return(0,r.memo)(t=>{let{id:n,sourceX:o,sourceY:r,targetX:a,targetY:s,label:d,labelStyle:c,labelShowBg:u,labelBgStyle:g,labelBgPadding:f,labelBgBorderRadius:p,style:h,markerEnd:m,markerStart:v,interactionWidth:y}=t,[b,x,w]=(0,i.ah)({sourceX:o,sourceY:r,targetX:a,targetY:s}),S=e.isInternal?void 0:n;return(0,l.jsx)(ez,{id:S,path:b,labelX:x,labelY:w,label:d,labelStyle:c,labelShowBg:u,labelBgStyle:g,labelBgPadding:f,labelBgBorderRadius:p,style:h,markerEnd:m,markerStart:v,interactionWidth:y})})}eY.displayName="StepEdge",eQ.displayName="StepEdgeInternal";let eG=eU({isInternal:!1}),eq=eU({isInternal:!0});function e$(e){return(0,r.memo)(t=>{let{id:n,sourceX:o,sourceY:r,targetX:a,targetY:s,sourcePosition:d=i.yX.Bottom,targetPosition:c=i.yX.Top,label:u,labelStyle:g,labelShowBg:f,labelBgStyle:p,labelBgPadding:h,labelBgBorderRadius:m,style:v,markerEnd:y,markerStart:b,pathOptions:x,interactionWidth:w}=t,[S,C,E]=(0,i.Fp)({sourceX:o,sourceY:r,sourcePosition:d,targetX:a,targetY:s,targetPosition:c,curvature:null==x?void 0:x.curvature}),N=e.isInternal?void 0:n;return(0,l.jsx)(ez,{id:N,path:S,labelX:C,labelY:E,label:u,labelStyle:g,labelShowBg:f,labelBgStyle:p,labelBgPadding:h,labelBgBorderRadius:m,style:v,markerEnd:y,markerStart:b,interactionWidth:w})})}eG.displayName="StraightEdge",eq.displayName="StraightEdgeInternal";let eJ=e$({isInternal:!1}),e0=e$({isInternal:!0});eJ.displayName="BezierEdge",e0.displayName="BezierEdgeInternal";let e1={default:e0,straight:eq,step:eQ,smoothstep:eW,simplebezier:eF},e2={sourceX:null,sourceY:null,targetX:null,targetY:null,sourcePosition:null,targetPosition:null},e3="react-flow__edgeupdater";function e4(e){let{position:t,centerX:n,centerY:o,radius:r=10,onMouseDown:s,onMouseEnter:d,onMouseOut:c,type:u}=e;return(0,l.jsx)("circle",{onMouseDown:s,onMouseEnter:d,onMouseOut:c,className:(0,a.A)([e3,"".concat(e3,"-").concat(u)]),cx:t===i.yX.Left?n-r:t===i.yX.Right?n+r:n,cy:t===i.yX.Top?o-r:t===i.yX.Bottom?o+r:o,r:r,stroke:"transparent",fill:"transparent"})}function e5(e){let{isReconnectable:t,reconnectRadius:n,edge:o,sourceX:r,sourceY:a,targetX:s,targetY:d,sourcePosition:c,targetPosition:u,onReconnect:g,onReconnectStart:f,onReconnectEnd:h,setReconnecting:m,setUpdateHover:v}=e,y=p(),b=(e,t)=>{if(0!==e.button)return;let{autoPanOnConnect:n,domNode:l,connectionMode:r,connectionRadius:a,lib:s,onConnectStart:d,cancelConnection:c,nodeLookup:u,rfId:p,panBy:v,updateConnection:b}=y.getState(),x="target"===t.type;i.aQ.onPointerDown(e.nativeEvent,{autoPanOnConnect:n,connectionMode:r,connectionRadius:a,domNode:l,handleId:t.id,nodeId:t.nodeId,nodeLookup:u,isTarget:x,edgeUpdaterType:t.type,lib:s,flowId:p,cancelConnection:c,panBy:v,isValidConnection:function(){for(var e,t,n,o=arguments.length,l=Array(o),r=0;r<o;r++)l[r]=arguments[r];return null==(n=null==(e=(t=y.getState()).isValidConnection)?void 0:e.call(t,...l))||n},onConnect:e=>null==g?void 0:g(o,e),onConnectStart:(n,l)=>{m(!0),null==f||f(e,o,t.type),null==d||d(n,l)},onConnectEnd:function(){for(var e,t,n=arguments.length,o=Array(n),l=0;l<n;l++)o[l]=arguments[l];return null==(e=(t=y.getState()).onConnectEnd)?void 0:e.call(t,...o)},onReconnectEnd:(e,n)=>{m(!1),null==h||h(e,o,t.type,n)},updateConnection:b,getTransform:()=>y.getState().transform,getFromHandle:()=>y.getState().connection.fromHandle,dragThreshold:y.getState().connectionDragThreshold,handleDomNode:e.currentTarget})},x=()=>v(!0),w=()=>v(!1);return(0,l.jsxs)(l.Fragment,{children:[(!0===t||"source"===t)&&(0,l.jsx)(e4,{position:c,centerX:r,centerY:a,radius:n,onMouseDown:e=>{var t;return b(e,{nodeId:o.target,id:null!=(t=o.targetHandle)?t:null,type:"target"})},onMouseEnter:x,onMouseOut:w,type:"source"}),(!0===t||"target"===t)&&(0,l.jsx)(e4,{position:u,centerX:s,centerY:d,radius:n,onMouseDown:e=>{var t;return b(e,{nodeId:o.source,id:null!=(t=o.sourceHandle)?t:null,type:"source"})},onMouseEnter:x,onMouseOut:w,type:"target"})]})}var e6=(0,r.memo)(function(e){var t,n;let{id:o,edgesFocusable:s,edgesReconnectable:c,elementsSelectable:u,onClick:g,onDoubleClick:h,onContextMenu:m,onMouseEnter:v,onMouseMove:b,onMouseLeave:x,reconnectRadius:w,onReconnect:S,onReconnectStart:C,onReconnectEnd:E,rfId:N,edgeTypes:k,noPanClassName:M,onError:P,disableKeyboardA11y:j}=e,D=f(e=>e.edgeLookup.get(o)),_=f(e=>e.defaultEdgeOptions),A=(D=_?{..._,...D}:D).type||"default",R=(null==k?void 0:k[A])||e1[A];void 0===R&&(null==P||P("011",i.xc.error011(A)),A="default",R=(null==k?void 0:k.default)||e1.default);let I=!!(D.focusable||s&&void 0===D.focusable),O=void 0!==S&&(D.reconnectable||c&&void 0===D.reconnectable),L=!!(D.selectable||u&&void 0===D.selectable),z=(0,r.useRef)(null),[B,V]=(0,r.useState)(!1),[H,T]=(0,r.useState)(!1),F=p(),{zIndex:Z,sourceX:X,sourceY:W,targetX:K,targetY:Y,sourcePosition:Q,targetPosition:U}=f((0,r.useCallback)(e=>{let t=e.nodeLookup.get(D.source),n=e.nodeLookup.get(D.target);if(!t||!n)return{zIndex:D.zIndex,...e2};let l=(0,i.b5)({id:o,sourceNode:t,targetNode:n,sourceHandle:D.sourceHandle||null,targetHandle:D.targetHandle||null,connectionMode:e.connectionMode,onError:P});return{zIndex:(0,i.qX)({selected:D.selected,zIndex:D.zIndex,sourceNode:t,targetNode:n,elevateOnSelect:e.elevateEdgesOnSelect,zIndexMode:e.zIndexMode}),...l||e2}},[D.source,D.target,D.sourceHandle,D.targetHandle,D.selected,D.zIndex]),d.x),G=(0,r.useMemo)(()=>D.markerStart?"url('#".concat((0,i.aW)(D.markerStart,N),"')"):void 0,[D.markerStart,N]),q=(0,r.useMemo)(()=>D.markerEnd?"url('#".concat((0,i.aW)(D.markerEnd,N),"')"):void 0,[D.markerEnd,N]);if(D.hidden||null===X||null===W||null===K||null===Y)return null;let $=h?e=>{h(e,{...D})}:void 0,J=m?e=>{m(e,{...D})}:void 0,ee=v?e=>{v(e,{...D})}:void 0,et=b?e=>{b(e,{...D})}:void 0,en=x?e=>{x(e,{...D})}:void 0;return(0,l.jsx)("svg",{style:{zIndex:Z},children:(0,l.jsxs)("g",{className:(0,a.A)(["react-flow__edge","react-flow__edge-".concat(A),D.className,M,{selected:D.selected,animated:D.animated,inactive:!L&&!g,updating:B,selectable:L}]),onClick:e=>{let{addSelectedEdges:t,unselectNodesAndEdges:n,multiSelectionActive:l}=F.getState();if(L)if(F.setState({nodesSelectionActive:!1}),D.selected&&l){var r;n({nodes:[],edges:[D]}),null==(r=z.current)||r.blur()}else t([o]);g&&g(e,D)},onDoubleClick:$,onContextMenu:J,onMouseEnter:ee,onMouseMove:et,onMouseLeave:en,onKeyDown:I?e=>{if(!j&&i.tn.includes(e.key)&&L){let{unselectNodesAndEdges:n,addSelectedEdges:l}=F.getState();if("Escape"===e.key){var t;null==(t=z.current)||t.blur(),n({edges:[D]})}else l([o])}}:void 0,tabIndex:I?0:void 0,role:null!=(t=D.ariaRole)?t:I?"group":"img","aria-roledescription":"edge","data-id":o,"data-testid":"rf__edge-".concat(o),"aria-label":null===D.ariaLabel?void 0:D.ariaLabel||"Edge from ".concat(D.source," to ").concat(D.target),"aria-describedby":I?"".concat(y,"-").concat(N):void 0,ref:z,...D.domAttributes,children:[!H&&(0,l.jsx)(R,{id:o,source:D.source,target:D.target,type:D.type,selected:D.selected,animated:D.animated,selectable:L,deletable:null==(n=D.deletable)||n,label:D.label,labelStyle:D.labelStyle,labelShowBg:D.labelShowBg,labelBgStyle:D.labelBgStyle,labelBgPadding:D.labelBgPadding,labelBgBorderRadius:D.labelBgBorderRadius,sourceX:X,sourceY:W,targetX:K,targetY:Y,sourcePosition:Q,targetPosition:U,data:D.data,style:D.style,sourceHandleId:D.sourceHandle,targetHandleId:D.targetHandle,markerStart:G,markerEnd:q,pathOptions:"pathOptions"in D?D.pathOptions:void 0,interactionWidth:D.interactionWidth}),O&&(0,l.jsx)(e5,{edge:D,isReconnectable:O,reconnectRadius:w,onReconnect:S,onReconnectStart:C,onReconnectEnd:E,sourceX:X,sourceY:W,targetX:K,targetY:Y,sourcePosition:Q,targetPosition:U,setUpdateHover:V,setReconnecting:T})]})})});let e7=e=>({edgesFocusable:e.edgesFocusable,edgesReconnectable:e.edgesReconnectable,elementsSelectable:e.elementsSelectable,connectionMode:e.connectionMode,onError:e.onError});function e8(e){let{defaultMarkerColor:t,onlyRenderVisibleElements:n,rfId:o,edgeTypes:a,noPanClassName:s,onReconnect:c,onEdgeContextMenu:u,onEdgeMouseEnter:g,onEdgeMouseMove:p,onEdgeMouseLeave:h,onEdgeClick:m,reconnectRadius:v,onEdgeDoubleClick:y,onReconnectStart:b,onReconnectEnd:x,disableKeyboardA11y:w}=e,{edgesFocusable:S,edgesReconnectable:C,elementsSelectable:E,onError:N}=f(e7,d.x),k=f((0,r.useCallback)(e=>{if(!n)return e.edges.map(e=>e.id);let t=[];if(e.width&&e.height)for(let n of e.edges){let o=e.nodeLookup.get(n.source),l=e.nodeLookup.get(n.target);o&&l&&(0,i.uj)({sourceNode:o,targetNode:l,width:e.width,height:e.height,transform:e.transform})&&t.push(n.id)}return t},[n]),d.x);return(0,l.jsxs)("div",{className:"react-flow__edges",children:[(0,l.jsx)(eI,{defaultColor:t,rfId:o}),k.map(e=>(0,l.jsx)(e6,{id:e,edgesFocusable:S,edgesReconnectable:C,elementsSelectable:E,noPanClassName:s,onReconnect:c,onContextMenu:u,onMouseEnter:g,onMouseMove:p,onMouseLeave:h,onClick:m,reconnectRadius:v,onDoubleClick:y,onReconnectStart:b,onReconnectEnd:x,rfId:o,onError:N,edgeTypes:a,disableKeyboardA11y:w},e))]})}e8.displayName="EdgeRenderer";let e9=(0,r.memo)(e8),te=e=>"translate(".concat(e.transform[0],"px,").concat(e.transform[1],"px) scale(").concat(e.transform[2],")");function tt(e){let{children:t}=e,n=f(te);return(0,l.jsx)("div",{className:"react-flow__viewport xyflow__viewport react-flow__container",style:{transform:n},children:t})}let tn=e=>{var t;return null==(t=e.panZoom)?void 0:t.syncViewport};function to(e){return e.connection.inProgress?{...e.connection,to:(0,i.Ff)(e.connection.to,e.transform)}:{...e.connection}}let tl=e=>({nodesConnectable:e.nodesConnectable,isValid:e.connection.isValid,inProgress:e.connection.inProgress,width:e.width,height:e.height});function tr(e){let{containerStyle:t,style:n,type:o,component:r}=e,{nodesConnectable:s,width:c,height:u,isValid:g,inProgress:p}=f(tl,d.x);return c&&s&&p?(0,l.jsx)("svg",{style:t,width:c,height:u,className:"react-flow__connectionline react-flow__container",children:(0,l.jsx)("g",{className:(0,a.A)(["react-flow__connection",(0,i.HF)(g)]),children:(0,l.jsx)(ta,{style:n,type:o,CustomComponent:r,isValid:g})})}):null}let ta=e=>{let{style:t,type:n=i.Do.Bezier,CustomComponent:o,isValid:r}=e,{inProgress:a,from:s,fromNode:c,fromHandle:u,fromPosition:g,to:p,toNode:h,toHandle:m,toPosition:v,pointer:y}=function(e){return f(to,d.x)}();if(!a)return;if(o)return(0,l.jsx)(o,{connectionLineType:n,connectionLineStyle:t,fromNode:c,fromHandle:u,fromX:s.x,fromY:s.y,toX:p.x,toY:p.y,fromPosition:g,toPosition:v,connectionStatus:(0,i.HF)(r),toNode:h,toHandle:m,pointer:y});let b="",x={sourceX:s.x,sourceY:s.y,sourcePosition:g,targetX:p.x,targetY:p.y,targetPosition:v};switch(n){case i.Do.Bezier:[b]=(0,i.Fp)(x);break;case i.Do.SimpleBezier:[b]=eV(x);break;case i.Do.Step:[b]=(0,i.oN)({...x,borderRadius:0});break;case i.Do.SmoothStep:[b]=(0,i.oN)(x);break;default:[b]=(0,i.ah)(x)}return(0,l.jsx)("path",{d:b,fill:"none",className:"react-flow__connection-path",style:t})};ta.displayName="ConnectionLine";let ti={};function ts(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:ti;(0,r.useRef)(e),p(),(0,r.useEffect)(()=>{},[e])}function td(e){let{nodeTypes:t,edgeTypes:n,onInit:o,onNodeClick:a,onEdgeClick:i,onNodeDoubleClick:s,onEdgeDoubleClick:d,onNodeMouseEnter:c,onNodeMouseMove:u,onNodeMouseLeave:g,onNodeContextMenu:h,onSelectionContextMenu:m,onSelectionStart:v,onSelectionEnd:y,connectionLineType:b,connectionLineStyle:x,connectionLineComponent:w,connectionLineContainerStyle:S,selectionKeyCode:C,selectionOnDrag:E,selectionMode:N,multiSelectionKeyCode:k,panActivationKeyCode:M,zoomActivationKeyCode:P,deleteKeyCode:j,onlyRenderVisibleElements:D,elementsSelectable:_,defaultViewport:A,translateExtent:R,minZoom:I,maxZoom:O,preventScrolling:L,defaultMarkerColor:z,zoomOnScroll:B,zoomOnPinch:V,panOnScroll:H,panOnScrollSpeed:T,panOnScrollMode:F,zoomOnDoubleClick:Z,panOnDrag:X,onPaneClick:W,onPaneMouseEnter:K,onPaneMouseMove:Y,onPaneMouseLeave:Q,onPaneScroll:U,onPaneContextMenu:G,paneClickDistance:q,nodeClickDistance:$,onEdgeContextMenu:J,onEdgeMouseEnter:et,onEdgeMouseMove:en,onEdgeMouseLeave:eo,reconnectRadius:el,onReconnect:er,onReconnectStart:ea,onReconnectEnd:ei,noDragClassName:es,noWheelClassName:ed,noPanClassName:ec,disableKeyboardA11y:eu,nodeExtent:eg,rfId:ef,viewport:ep,onViewportChange:eh}=e;ts(t),ts(n),p(),(0,r.useRef)(!1),(0,r.useEffect)(()=>{},[]);let em=ee(),ev=(0,r.useRef)(!1);return(0,r.useEffect)(()=>{!ev.current&&em.viewportInitialized&&o&&(setTimeout(()=>o(em),1),ev.current=!0)},[o,em.viewportInitialized]),!function(e){let t=f(tn),n=p();(0,r.useEffect)(()=>{e&&(null==t||t(e),n.setState({transform:[e.x,e.y,e.zoom]}))},[e,t])}(ep),(0,l.jsx)(eN,{onPaneClick:W,onPaneMouseEnter:K,onPaneMouseMove:Y,onPaneMouseLeave:Q,onPaneContextMenu:G,onPaneScroll:U,paneClickDistance:q,deleteKeyCode:j,selectionKeyCode:C,selectionOnDrag:E,selectionMode:N,onSelectionStart:v,onSelectionEnd:y,multiSelectionKeyCode:k,panActivationKeyCode:M,zoomActivationKeyCode:P,elementsSelectable:_,zoomOnScroll:B,zoomOnPinch:V,zoomOnDoubleClick:Z,panOnScroll:H,panOnScrollSpeed:T,panOnScrollMode:F,panOnDrag:X,defaultViewport:A,translateExtent:R,minZoom:I,maxZoom:O,onSelectionContextMenu:m,preventScrolling:L,noDragClassName:es,noWheelClassName:ed,noPanClassName:ec,disableKeyboardA11y:eu,onViewportChange:eh,isControlledViewport:!!ep,children:(0,l.jsxs)(tt,{children:[(0,l.jsx)(e9,{edgeTypes:n,onEdgeClick:i,onEdgeDoubleClick:d,onReconnect:er,onReconnectStart:ea,onReconnectEnd:ei,onlyRenderVisibleElements:D,onEdgeContextMenu:J,onEdgeMouseEnter:et,onEdgeMouseMove:en,onEdgeMouseLeave:eo,reconnectRadius:el,defaultMarkerColor:z,noPanClassName:ec,disableKeyboardA11y:eu,rfId:ef}),(0,l.jsx)(tr,{style:x,type:b,component:w,containerStyle:S}),(0,l.jsx)("div",{className:"react-flow__edgelabel-renderer"}),(0,l.jsx)(eD,{nodeTypes:t,onNodeClick:a,onNodeDoubleClick:s,onNodeMouseEnter:c,onNodeMouseMove:u,onNodeMouseLeave:g,onNodeContextMenu:h,nodeClickDistance:$,onlyRenderVisibleElements:D,noPanClassName:ec,noDragClassName:es,disableKeyboardA11y:eu,nodeExtent:eg,rfId:ef}),(0,l.jsx)("div",{className:"react-flow__viewport-portal"})]})})}td.displayName="GraphView";let tc=(0,r.memo)(td),tu=function(){var e,t,n;let{nodes:o,edges:l,defaultNodes:r,defaultEdges:a,width:s,height:d,fitView:c,fitViewOptions:u,minZoom:g=.5,maxZoom:f=2,nodeOrigin:p,nodeExtent:h,zIndexMode:m="basic"}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},v=new Map,y=new Map,b=new Map,x=new Map,w=null!=(e=null!=a?a:l)?e:[],S=null!=(t=null!=r?r:o)?t:[],C=null!=p?p:[0,0],E=null!=h?h:i.ZO;(0,i.qn)(b,x,w);let{nodesInitialized:N}=(0,i.bi)(S,v,y,{nodeOrigin:C,nodeExtent:E,zIndexMode:m}),k=[0,0,1];if(c&&s&&d){let e=(0,i.aZ)(v,{filter:e=>!!((e.width||e.initialWidth)&&(e.height||e.initialHeight))}),{x:t,y:o,zoom:l}=(0,i.R4)(e,s,d,g,f,null!=(n=null==u?void 0:u.padding)?n:.1);k=[t,o,l]}return{rfId:"1",width:null!=s?s:0,height:null!=d?d:0,transform:k,nodes:S,nodesInitialized:N,nodeLookup:v,parentLookup:y,edges:w,edgeLookup:x,connectionLookup:b,onNodesChange:null,onEdgesChange:null,hasDefaultNodes:void 0!==r,hasDefaultEdges:void 0!==a,panZoom:null,minZoom:g,maxZoom:f,translateExtent:i.ZO,nodeExtent:E,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionMode:i.WZ.Strict,domNode:null,paneDragging:!1,noPanClassName:"nopan",nodeOrigin:C,nodeDragThreshold:1,connectionDragThreshold:1,snapGrid:[15,15],snapToGrid:!1,nodesDraggable:!0,nodesConnectable:!0,nodesFocusable:!0,edgesFocusable:!0,edgesReconnectable:!0,elementsSelectable:!0,elevateNodesOnSelect:!0,elevateEdgesOnSelect:!0,selectNodesOnDrag:!0,multiSelectionActive:!1,fitViewQueued:null!=c&&c,fitViewOptions:u,fitViewResolver:null,connection:{...i.bK},connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:"",autoPanOnConnect:!0,autoPanOnNodeDrag:!0,autoPanOnNodeFocus:!0,autoPanSpeed:15,connectionRadius:20,onError:i.KE,isValidConnection:void 0,onSelectionChangeHandlers:[],lib:"react",debug:!1,ariaLabelConfig:i.tM,zIndexMode:m,onNodesChangeMiddlewareMap:new Map,onEdgesChangeMiddlewareMap:new Map}};function tg(e){let{initialNodes:t,initialEdges:n,defaultNodes:o,defaultEdges:a,initialWidth:d,initialHeight:c,initialMinZoom:g,initialMaxZoom:f,initialFitViewOptions:p,fitView:h,nodeOrigin:m,nodeExtent:v,zIndexMode:y,children:b}=e,[x]=(0,r.useState)(()=>(e=>{let{nodes:t,edges:n,defaultNodes:o,defaultEdges:l,width:r,height:a,fitView:d,fitViewOptions:c,minZoom:u,maxZoom:g,nodeOrigin:f,nodeExtent:p,zIndexMode:h}=e;return(0,s.h)((e,s)=>{async function m(){let{nodeLookup:t,panZoom:n,fitViewOptions:o,fitViewResolver:l,width:r,height:a,minZoom:d,maxZoom:c}=s();n&&(await (0,i.IO)({nodes:t,width:r,height:a,panZoom:n,minZoom:d,maxZoom:c},o),null==l||l.resolve(!0),e({fitViewResolver:null}))}return{...tu({nodes:t,edges:n,width:r,height:a,fitView:d,fitViewOptions:c,minZoom:u,maxZoom:g,nodeOrigin:f,nodeExtent:p,defaultNodes:o,defaultEdges:l,zIndexMode:h}),setNodes:t=>{let{nodeLookup:n,parentLookup:o,nodeOrigin:l,elevateNodesOnSelect:r,fitViewQueued:a,zIndexMode:d,nodesSelectionActive:c}=s(),{nodesInitialized:u,hasSelectedNodes:g}=(0,i.bi)(t,n,o,{nodeOrigin:l,nodeExtent:p,elevateNodesOnSelect:r,checkEquality:!0,zIndexMode:d}),f=c&&g;a&&u?(m(),e({nodes:t,nodesInitialized:u,fitViewQueued:!1,fitViewOptions:void 0,nodesSelectionActive:f})):e({nodes:t,nodesInitialized:u,nodesSelectionActive:f})},setEdges:t=>{let{connectionLookup:n,edgeLookup:o}=s();(0,i.qn)(n,o,t),e({edges:t})},setDefaultNodesAndEdges:(t,n)=>{if(t){let{setNodes:n}=s();n(t),e({hasDefaultNodes:!0})}if(n){let{setEdges:t}=s();t(n),e({hasDefaultEdges:!0})}},updateNodeInternals:t=>{let{triggerNodeChanges:n,nodeLookup:o,parentLookup:l,domNode:r,nodeOrigin:a,nodeExtent:d,debug:c,fitViewQueued:u,zIndexMode:g}=s(),{changes:f,updatedInternals:p}=(0,i.uL)(t,o,l,r,a,d,g);p&&((0,i.vS)(o,l,{nodeOrigin:a,nodeExtent:d,zIndexMode:g}),u?(m(),e({fitViewQueued:!1,fitViewOptions:void 0})):e({}),(null==f?void 0:f.length)>0&&(c&&console.log("React Flow: trigger node changes",f),null==n||n(f)))},updateNodePositions:function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=[],o=[],{nodeLookup:l,triggerNodeChanges:r,connection:a,updateConnection:d,onNodesChangeMiddlewareMap:c}=s();for(let[r,s]of e){let e=l.get(r),c=!!((null==e?void 0:e.expandParent)&&(null==e?void 0:e.parentId)&&(null==s?void 0:s.position)),f={id:r,type:"position",position:c?{x:Math.max(0,s.position.x),y:Math.max(0,s.position.y)}:s.position,dragging:t};if(e&&a.inProgress&&a.fromNode.id===e.id){let t=(0,i.M_)(e,a.fromHandle,i.yX.Left,!0);d({...a,from:t})}if(c&&e.parentId){var u,g;n.push({id:r,parentId:e.parentId,rect:{...s.internals.positionAbsolute,width:null!=(u=s.measured.width)?u:0,height:null!=(g=s.measured.height)?g:0}})}o.push(f)}if(n.length>0){let{parentLookup:e,nodeOrigin:t}=s(),r=(0,i.r8)(n,l,e,t);o.push(...r)}for(let e of c.values())o=e(o);r(o)},triggerNodeChanges:e=>{let{onNodesChange:t,setNodes:n,nodes:o,hasDefaultNodes:l,debug:r}=s();(null==e?void 0:e.length)&&(l&&n(Z(e,o)),r&&console.log("React Flow: trigger node changes",e),null==t||t(e))},triggerEdgeChanges:e=>{let{onEdgesChange:t,setEdges:n,edges:o,hasDefaultEdges:l,debug:r}=s();(null==e?void 0:e.length)&&(l&&n(Z(e,o)),r&&console.log("React Flow: trigger edge changes",e),null==t||t(e))},addSelectedNodes:e=>{let{multiSelectionActive:t,edgeLookup:n,nodeLookup:o,triggerNodeChanges:l,triggerEdgeChanges:r}=s();if(t)return void l(e.map(e=>X(e,!0)));l(W(o,new Set([...e]),!0)),r(W(n))},addSelectedEdges:e=>{let{multiSelectionActive:t,edgeLookup:n,nodeLookup:o,triggerNodeChanges:l,triggerEdgeChanges:r}=s();if(t)return void r(e.map(e=>X(e,!0)));r(W(n,new Set([...e]))),l(W(o,new Set,!0))},unselectNodesAndEdges:function(){let{nodes:e,edges:t}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{edges:n,nodes:o,nodeLookup:l,triggerNodeChanges:r,triggerEdgeChanges:a}=s(),i=[];for(let t of e||o){if(!t.selected)continue;let e=l.get(t.id);e&&(e.selected=!1),i.push(X(t.id,!1))}let d=[];for(let e of t||n)e.selected&&d.push(X(e.id,!1));r(i),a(d)},setMinZoom:t=>{let{panZoom:n,maxZoom:o}=s();null==n||n.setScaleExtent([t,o]),e({minZoom:t})},setMaxZoom:t=>{let{panZoom:n,minZoom:o}=s();null==n||n.setScaleExtent([o,t]),e({maxZoom:t})},setTranslateExtent:t=>{var n;null==(n=s().panZoom)||n.setTranslateExtent(t),e({translateExtent:t})},resetSelectedElements:()=>{let{edges:e,nodes:t,triggerNodeChanges:n,triggerEdgeChanges:o,elementsSelectable:l}=s();if(!l)return;let r=t.reduce((e,t)=>t.selected?[...e,X(t.id,!1)]:e,[]),a=e.reduce((e,t)=>t.selected?[...e,X(t.id,!1)]:e,[]);n(r),o(a)},setNodeExtent:t=>{let{nodes:n,nodeLookup:o,parentLookup:l,nodeOrigin:r,elevateNodesOnSelect:a,nodeExtent:d,zIndexMode:c}=s();(t[0][0]!==d[0][0]||t[0][1]!==d[0][1]||t[1][0]!==d[1][0]||t[1][1]!==d[1][1])&&((0,i.bi)(n,o,l,{nodeOrigin:r,nodeExtent:t,elevateNodesOnSelect:a,checkEquality:!1,zIndexMode:c}),e({nodeExtent:t}))},panBy:e=>{let{transform:t,width:n,height:o,panZoom:l,translateExtent:r}=s();return(0,i.No)({delta:e,panZoom:l,transform:t,translateExtent:r,width:n,height:o})},setCenter:async(e,t,n)=>{let{width:o,height:l,maxZoom:r,panZoom:a}=s();if(!a)return Promise.resolve(!1);let i=void 0!==(null==n?void 0:n.zoom)?n.zoom:r;return await a.setViewport({x:o/2-e*i,y:l/2-t*i,zoom:i},{duration:null==n?void 0:n.duration,ease:null==n?void 0:n.ease,interpolate:null==n?void 0:n.interpolate}),Promise.resolve(!0)},cancelConnection:()=>{e({connection:{...i.bK}})},updateConnection:t=>{e({connection:t})},reset:()=>e({...tu()})}},Object.is)})({nodes:t,edges:n,defaultNodes:o,defaultEdges:a,width:d,height:c,fitView:h,minZoom:g,maxZoom:f,fitViewOptions:p,nodeOrigin:m,nodeExtent:v,zIndexMode:y}));return(0,l.jsx)(u,{value:x,children:(0,l.jsx)($,{children:b})})}function tf(e){let{children:t,nodes:n,edges:o,defaultNodes:a,defaultEdges:i,width:s,height:d,fitView:u,fitViewOptions:g,minZoom:f,maxZoom:p,nodeOrigin:h,nodeExtent:m,zIndexMode:v}=e;return(0,r.useContext)(c)?(0,l.jsx)(l.Fragment,{children:t}):(0,l.jsx)(tg,{initialNodes:n,initialEdges:o,defaultNodes:a,defaultEdges:i,initialWidth:s,initialHeight:d,fitView:u,initialFitViewOptions:g,initialMinZoom:f,initialMaxZoom:p,nodeOrigin:h,nodeExtent:m,zIndexMode:v,children:t})}let tp={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0};var th=U(function(e,t){let{nodes:n,edges:o,defaultNodes:s,defaultEdges:d,className:c,nodeTypes:u,edgeTypes:g,onNodeClick:f,onEdgeClick:p,onInit:h,onMove:m,onMoveStart:v,onMoveEnd:y,onConnect:b,onConnectStart:x,onConnectEnd:w,onClickConnectStart:C,onClickConnectEnd:N,onNodeMouseEnter:k,onNodeMouseMove:M,onNodeMouseLeave:P,onNodeContextMenu:j,onNodeDoubleClick:_,onNodeDragStart:I,onNodeDrag:O,onNodeDragStop:L,onNodesDelete:V,onEdgesDelete:H,onDelete:T,onSelectionChange:F,onSelectionDragStart:Z,onSelectionDrag:X,onSelectionDragStop:W,onSelectionContextMenu:K,onSelectionStart:Y,onSelectionEnd:Q,onBeforeDelete:U,connectionMode:G,connectionLineType:q=i.Do.Bezier,connectionLineStyle:$,connectionLineComponent:J,connectionLineContainerStyle:ee,deleteKeyCode:et="Backspace",selectionKeyCode:en="Shift",selectionOnDrag:eo=!1,selectionMode:el=i.Qc.Full,panActivationKeyCode:er="Space",multiSelectionKeyCode:ea=(0,i.Ue)()?"Meta":"Control",zoomActivationKeyCode:ei=(0,i.Ue)()?"Meta":"Control",snapToGrid:es,snapGrid:ed,onlyRenderVisibleElements:ec=!1,selectNodesOnDrag:eu,nodesDraggable:eg,autoPanOnNodeFocus:ef,nodesConnectable:ep,nodesFocusable:eh,nodeOrigin:em=A,edgesFocusable:ev,edgesReconnectable:ey,elementsSelectable:eb=!0,defaultViewport:ex=R,minZoom:ew=.5,maxZoom:eS=2,translateExtent:eC=i.ZO,preventScrolling:eE=!0,nodeExtent:eN,defaultMarkerColor:ek="#b1b1b7",zoomOnScroll:eM=!0,zoomOnPinch:eP=!0,panOnScroll:ej=!1,panOnScrollSpeed:eD=.5,panOnScrollMode:e_=i.ny.Free,zoomOnDoubleClick:eA=!0,panOnDrag:eR=!0,onPaneClick:eI,onPaneMouseEnter:eO,onPaneMouseMove:eL,onPaneMouseLeave:ez,onPaneScroll:eB,onPaneContextMenu:eV,paneClickDistance:eH=1,nodeClickDistance:eT=0,children:eF,onReconnect:eZ,onReconnectStart:eX,onReconnectEnd:eW,onEdgeContextMenu:eK,onEdgeDoubleClick:eY,onEdgeMouseEnter:eQ,onEdgeMouseMove:eU,onEdgeMouseLeave:eG,reconnectRadius:eq=10,onNodesChange:e$,onEdgesChange:eJ,noDragClassName:e0="nodrag",noWheelClassName:e1="nowheel",noPanClassName:e2="nopan",fitView:e3,fitViewOptions:e4,connectOnClick:e5,attributionPosition:e6,proOptions:e7,defaultEdgeOptions:e8,elevateNodesOnSelect:e9=!0,elevateEdgesOnSelect:te=!1,disableKeyboardA11y:tt=!1,autoPanOnConnect:tn,autoPanOnNodeDrag:to,autoPanSpeed:tl,connectionRadius:tr,isValidConnection:ta,onError:ti,style:ts,id:td,nodeDragThreshold:tu,connectionDragThreshold:tg,viewport:th,onViewportChange:tm,width:tv,height:ty,colorMode:tb="light",debug:tx,onScroll:tw,ariaLabelConfig:tS,zIndexMode:tC="basic",...tE}=e,tN=td||"1",tk=function(e){var t;let[n,o]=(0,r.useState)("system"===e?null:e);return(0,r.useEffect)(()=>{if("system"!==e)return void o(e);let t=B(),n=()=>o((null==t?void 0:t.matches)?"dark":"light");return n(),null==t||t.addEventListener("change",n),()=>{null==t||t.removeEventListener("change",n)}},[e]),null!==n?n:(null==(t=B())?void 0:t.matches)?"dark":"light"}(tb),tM=(0,r.useCallback)(e=>{e.currentTarget.scrollTo({top:0,left:0,behavior:"instant"}),null==tw||tw(e)},[tw]);return(0,l.jsx)("div",{"data-testid":"rf__wrapper",...tE,onScroll:tM,style:{...ts,...tp},ref:t,className:(0,a.A)(["react-flow",c,tk]),id:td,role:"application",children:(0,l.jsxs)(tf,{nodes:n,edges:o,width:tv,height:ty,fitView:e3,fitViewOptions:e4,minZoom:ew,maxZoom:eS,nodeOrigin:em,nodeExtent:eN,zIndexMode:tC,children:[(0,l.jsx)(z,{nodes:n,edges:o,defaultNodes:s,defaultEdges:d,onConnect:b,onConnectStart:x,onConnectEnd:w,onClickConnectStart:C,onClickConnectEnd:N,nodesDraggable:eg,autoPanOnNodeFocus:ef,nodesConnectable:ep,nodesFocusable:eh,edgesFocusable:ev,edgesReconnectable:ey,elementsSelectable:eb,elevateNodesOnSelect:e9,elevateEdgesOnSelect:te,minZoom:ew,maxZoom:eS,nodeExtent:eN,onNodesChange:e$,onEdgesChange:eJ,snapToGrid:es,snapGrid:ed,connectionMode:G,translateExtent:eC,connectOnClick:e5,defaultEdgeOptions:e8,fitView:e3,fitViewOptions:e4,onNodesDelete:V,onEdgesDelete:H,onDelete:T,onNodeDragStart:I,onNodeDrag:O,onNodeDragStop:L,onSelectionDrag:X,onSelectionDragStart:Z,onSelectionDragStop:W,onMove:m,onMoveStart:v,onMoveEnd:y,noPanClassName:e2,nodeOrigin:em,rfId:tN,autoPanOnConnect:tn,autoPanOnNodeDrag:to,autoPanSpeed:tl,onError:ti,connectionRadius:tr,isValidConnection:ta,selectNodesOnDrag:eu,nodeDragThreshold:tu,connectionDragThreshold:tg,onBeforeDelete:U,debug:tx,ariaLabelConfig:tS,zIndexMode:tC}),(0,l.jsx)(tc,{onInit:h,onNodeClick:f,onEdgeClick:p,onNodeMouseEnter:k,onNodeMouseMove:M,onNodeMouseLeave:P,onNodeContextMenu:j,onNodeDoubleClick:_,nodeTypes:u,edgeTypes:g,connectionLineType:q,connectionLineStyle:$,connectionLineComponent:J,connectionLineContainerStyle:ee,selectionKeyCode:en,selectionOnDrag:eo,selectionMode:el,deleteKeyCode:et,multiSelectionKeyCode:ea,panActivationKeyCode:er,zoomActivationKeyCode:ei,onlyRenderVisibleElements:ec,defaultViewport:ex,translateExtent:eC,minZoom:ew,maxZoom:eS,preventScrolling:eE,zoomOnScroll:eM,zoomOnPinch:eP,zoomOnDoubleClick:eA,panOnScroll:ej,panOnScrollSpeed:eD,panOnScrollMode:e_,panOnDrag:eR,onPaneClick:eI,onPaneMouseEnter:eO,onPaneMouseMove:eL,onPaneMouseLeave:ez,onPaneScroll:eB,onPaneContextMenu:eV,paneClickDistance:eH,nodeClickDistance:eT,onSelectionContextMenu:K,onSelectionStart:Y,onSelectionEnd:Q,onReconnect:eZ,onReconnectStart:eX,onReconnectEnd:eW,onEdgeContextMenu:eK,onEdgeDoubleClick:eY,onEdgeMouseEnter:eQ,onEdgeMouseMove:eU,onEdgeMouseLeave:eG,reconnectRadius:eq,defaultMarkerColor:ek,noDragClassName:e0,noWheelClassName:e1,noPanClassName:e2,rfId:tN,disableKeyboardA11y:tt,nodeExtent:eN,viewport:th,onViewportChange:tm}),(0,l.jsx)(D,{onSelectionChange:F}),eF,(0,l.jsx)(E,{proOptions:e7,position:e6}),(0,l.jsx)(S,{rfId:tN,disableKeyboardA11y:tt})]})})});function tm(e){let{dimensions:t,lineWidth:n,variant:o,className:r}=e;return(0,l.jsx)("path",{strokeWidth:n,d:"M".concat(t[0]/2," 0 V").concat(t[1]," M0 ").concat(t[1]/2," H").concat(t[0]),className:(0,a.A)(["react-flow__background-pattern",o,r])})}function tv(e){let{radius:t,className:n}=e;return(0,l.jsx)("circle",{cx:t,cy:t,r:t,className:(0,a.A)(["react-flow__background-pattern","dots",n])})}i.xc.error014(),function(e){e.Lines="lines",e.Dots="dots",e.Cross="cross"}(o||(o={}));let ty={[o.Dots]:1,[o.Lines]:1,[o.Cross]:6},tb=e=>({transform:e.transform,patternId:"pattern-".concat(e.rfId)});function tx(e){let{id:t,variant:n=o.Dots,gap:i=20,size:s,lineWidth:c=1,offset:u=0,color:g,bgColor:p,style:h,className:m,patternClassName:v}=e,y=(0,r.useRef)(null),{transform:b,patternId:x}=f(tb,d.x),w=s||ty[n],S=n===o.Dots,C=n===o.Cross,E=Array.isArray(i)?i:[i,i],N=[E[0]*b[2]||1,E[1]*b[2]||1],k=w*b[2],M=Array.isArray(u)?u:[u,u],P=C?[k,k]:N,j=[M[0]*b[2]||1+P[0]/2,M[1]*b[2]||1+P[1]/2],D="".concat(x).concat(t||"");return(0,l.jsxs)("svg",{className:(0,a.A)(["react-flow__background",m]),style:{...h,...eo,"--xy-background-color-props":p,"--xy-background-pattern-color-props":g},ref:y,"data-testid":"rf__background",children:[(0,l.jsx)("pattern",{id:D,x:b[0]%N[0],y:b[1]%N[1],width:N[0],height:N[1],patternUnits:"userSpaceOnUse",patternTransform:"translate(-".concat(j[0],",-").concat(j[1],")"),children:S?(0,l.jsx)(tv,{radius:k/2,className:v}):(0,l.jsx)(tm,{dimensions:P,lineWidth:c,variant:n,className:v})}),(0,l.jsx)("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:"url(#".concat(D,")")})]})}tx.displayName="Background";let tw=(0,r.memo)(tx);function tS(){return(0,l.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",children:(0,l.jsx)("path",{d:"M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z"})})}function tC(){return(0,l.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 5",children:(0,l.jsx)("path",{d:"M0 0h32v4.2H0z"})})}function tE(){return(0,l.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 30",children:(0,l.jsx)("path",{d:"M3.692 4.63c0-.53.4-.938.939-.938h5.215V0H4.708C2.13 0 0 2.054 0 4.63v5.216h3.692V4.631zM27.354 0h-5.2v3.692h5.17c.53 0 .984.4.984.939v5.215H32V4.631A4.624 4.624 0 0027.354 0zm.954 24.83c0 .532-.4.94-.939.94h-5.215v3.768h5.215c2.577 0 4.631-2.13 4.631-4.707v-5.139h-3.692v5.139zm-23.677.94c-.531 0-.939-.4-.939-.94v-5.138H0v5.139c0 2.577 2.13 4.707 4.708 4.707h5.138V25.77H4.631z"})})}function tN(){return(0,l.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children:(0,l.jsx)("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z"})})}function tk(){return(0,l.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children:(0,l.jsx)("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047z"})})}function tM(e){let{children:t,className:n,...o}=e;return(0,l.jsx)("button",{type:"button",className:(0,a.A)(["react-flow__controls-button",n]),...o,children:t})}let tP=e=>({isInteractive:e.nodesDraggable||e.nodesConnectable||e.elementsSelectable,minZoomReached:e.transform[2]<=e.minZoom,maxZoomReached:e.transform[2]>=e.maxZoom,ariaLabelConfig:e.ariaLabelConfig});function tj(e){let{style:t,showZoom:n=!0,showFitView:o=!0,showInteractive:r=!0,fitViewOptions:i,onZoomIn:s,onZoomOut:c,onFitView:u,onInteractiveChange:g,className:h,children:m,position:v="bottom-left",orientation:y="vertical","aria-label":b}=e,x=p(),{isInteractive:w,minZoomReached:S,maxZoomReached:E,ariaLabelConfig:N}=f(tP,d.x),{zoomIn:k,zoomOut:M,fitView:P}=ee();return(0,l.jsxs)(C,{className:(0,a.A)(["react-flow__controls","horizontal"===y?"horizontal":"vertical",h]),position:v,style:t,"data-testid":"rf__controls","aria-label":null!=b?b:N["controls.ariaLabel"],children:[n&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(tM,{onClick:()=>{k(),null==s||s()},className:"react-flow__controls-zoomin",title:N["controls.zoomIn.ariaLabel"],"aria-label":N["controls.zoomIn.ariaLabel"],disabled:E,children:(0,l.jsx)(tS,{})}),(0,l.jsx)(tM,{onClick:()=>{M(),null==c||c()},className:"react-flow__controls-zoomout",title:N["controls.zoomOut.ariaLabel"],"aria-label":N["controls.zoomOut.ariaLabel"],disabled:S,children:(0,l.jsx)(tC,{})})]}),o&&(0,l.jsx)(tM,{className:"react-flow__controls-fitview",onClick:()=>{P(i),null==u||u()},title:N["controls.fitView.ariaLabel"],"aria-label":N["controls.fitView.ariaLabel"],children:(0,l.jsx)(tE,{})}),r&&(0,l.jsx)(tM,{className:"react-flow__controls-interactive",onClick:()=>{x.setState({nodesDraggable:!w,nodesConnectable:!w,elementsSelectable:!w}),null==g||g(!w)},title:N["controls.interactive.ariaLabel"],"aria-label":N["controls.interactive.ariaLabel"],children:w?(0,l.jsx)(tk,{}):(0,l.jsx)(tN,{})}),m]})}tj.displayName="Controls";let tD=(0,r.memo)(tj),t_=(0,r.memo)(function(e){let{id:t,x:n,y:o,width:r,height:i,style:s,color:d,strokeColor:c,strokeWidth:u,className:g,borderRadius:f,shapeRendering:p,selected:h,onClick:m}=e,{background:v,backgroundColor:y}=s||{};return(0,l.jsx)("rect",{className:(0,a.A)(["react-flow__minimap-node",{selected:h},g]),x:n,y:o,rx:f,ry:f,width:r,height:i,style:{fill:d||v||y,stroke:c,strokeWidth:u},shapeRendering:p,onClick:m?e=>m(e,t):void 0})}),tA=e=>e.nodes.map(e=>e.id),tR=e=>e instanceof Function?e:()=>e,tI=(0,r.memo)(function(e){let{id:t,nodeColorFunc:n,nodeStrokeColorFunc:o,nodeClassNameFunc:r,nodeBorderRadius:a,nodeStrokeWidth:s,shapeRendering:c,NodeComponent:u,onClick:g}=e,{node:p,x:h,y:m,width:v,height:y}=f(e=>{let n=e.nodeLookup.get(t);if(!n)return{node:void 0,x:0,y:0,width:0,height:0};let o=n.internals.userNode,{x:l,y:r}=n.internals.positionAbsolute,{width:a,height:s}=(0,i.uD)(o);return{node:o,x:l,y:r,width:a,height:s}},d.x);return p&&!p.hidden&&(0,i.QE)(p)?(0,l.jsx)(u,{x:h,y:m,width:v,height:y,style:p.style,selected:!!p.selected,className:r(p),color:n(p),borderRadius:a,strokeColor:o(p),strokeWidth:s,shapeRendering:c,onClick:g,id:p.id}):null});var tO=(0,r.memo)(function(e){let{nodeStrokeColor:t,nodeColor:n,nodeClassName:o="",nodeBorderRadius:r=5,nodeStrokeWidth:a,nodeComponent:i=t_,onClick:s}=e,c=f(tA,d.x),u=tR(n),g=tR(t),p=tR(o),h="undefined"==typeof window||window.chrome?"crispEdges":"geometricPrecision";return(0,l.jsx)(l.Fragment,{children:c.map(e=>(0,l.jsx)(tI,{id:e,nodeColorFunc:u,nodeStrokeColorFunc:g,nodeClassNameFunc:p,nodeBorderRadius:r,nodeStrokeWidth:a,NodeComponent:i,onClick:s,shapeRendering:h},e))})});let tL=e=>!e.hidden,tz=e=>{let t={x:-e.transform[0]/e.transform[2],y:-e.transform[1]/e.transform[2],width:e.width/e.transform[2],height:e.height/e.transform[2]};return{viewBB:t,boundingRect:e.nodeLookup.size>0?(0,i.Mi)((0,i.aZ)(e.nodeLookup,{filter:tL}),t):t,rfId:e.rfId,panZoom:e.panZoom,translateExtent:e.translateExtent,flowWidth:e.width,flowHeight:e.height,ariaLabelConfig:e.ariaLabelConfig}};function tB(e){var t,n;let{style:o,className:s,nodeStrokeColor:c,nodeColor:u,nodeClassName:g="",nodeBorderRadius:h=5,nodeStrokeWidth:m,nodeComponent:v,bgColor:y,maskColor:b,maskStrokeColor:x,maskStrokeWidth:w,position:S="bottom-right",onClick:E,onNodeClick:N,pannable:k=!1,zoomable:M=!1,ariaLabel:P,inversePan:j,zoomStep:D=1,offsetScale:_=5}=e,A=p(),R=(0,r.useRef)(null),{boundingRect:I,viewBB:O,rfId:L,panZoom:z,translateExtent:B,flowWidth:V,flowHeight:H,ariaLabelConfig:T}=f(tz,d.x),F=null!=(t=null==o?void 0:o.width)?t:200,Z=null!=(n=null==o?void 0:o.height)?n:150,X=Math.max(I.width/F,I.height/Z),W=X*F,K=X*Z,Y=_*X,Q=I.x-(W-I.width)/2-Y,U=I.y-(K-I.height)/2-Y,G=W+2*Y,q=K+2*Y,$="".concat("react-flow__minimap-desc","-").concat(L),J=(0,r.useRef)(0),ee=(0,r.useRef)();J.current=X,(0,r.useEffect)(()=>{if(R.current&&z)return ee.current=(0,i.di)({domNode:R.current,panZoom:z,getTransform:()=>A.getState().transform,getViewScale:()=>J.current}),()=>{var e;null==(e=ee.current)||e.destroy()}},[z]),(0,r.useEffect)(()=>{var e;null==(e=ee.current)||e.update({translateExtent:B,width:V,height:H,inversePan:j,pannable:k,zoomStep:D,zoomable:M})},[k,M,j,D,B,V,H]);let et=E?e=>{var t;let[n,o]=(null==(t=ee.current)?void 0:t.pointer(e))||[0,0];E(e,{x:n,y:o})}:void 0,en=N?(0,r.useCallback)((e,t)=>{N(e,A.getState().nodeLookup.get(t).internals.userNode)},[]):void 0,eo=null!=P?P:T["minimap.ariaLabel"];return(0,l.jsx)(C,{position:S,style:{...o,"--xy-minimap-background-color-props":"string"==typeof y?y:void 0,"--xy-minimap-mask-background-color-props":"string"==typeof b?b:void 0,"--xy-minimap-mask-stroke-color-props":"string"==typeof x?x:void 0,"--xy-minimap-mask-stroke-width-props":"number"==typeof w?w*X:void 0,"--xy-minimap-node-background-color-props":"string"==typeof u?u:void 0,"--xy-minimap-node-stroke-color-props":"string"==typeof c?c:void 0,"--xy-minimap-node-stroke-width-props":"number"==typeof m?m:void 0},className:(0,a.A)(["react-flow__minimap",s]),"data-testid":"rf__minimap",children:(0,l.jsxs)("svg",{width:F,height:Z,viewBox:"".concat(Q," ").concat(U," ").concat(G," ").concat(q),className:"react-flow__minimap-svg",role:"img","aria-labelledby":$,ref:R,onClick:et,children:[eo&&(0,l.jsx)("title",{id:$,children:eo}),(0,l.jsx)(tO,{onClick:en,nodeColor:u,nodeStrokeColor:c,nodeBorderRadius:h,nodeClassName:g,nodeStrokeWidth:m,nodeComponent:v}),(0,l.jsx)("path",{className:"react-flow__minimap-mask",d:"M".concat(Q-Y,",").concat(U-Y,"h").concat(G+2*Y,"v").concat(q+2*Y,"h").concat(-G-2*Y,"z\n M").concat(O.x,",").concat(O.y,"h").concat(O.width,"v").concat(O.height,"h").concat(-O.width,"z"),fillRule:"evenodd",pointerEvents:"none"})]})})}tB.displayName="MiniMap";let tV=(0,r.memo)(tB);i.xN.Line,i.xN.Handle}}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3787,6815,9492],{27559:()=>{}},_=>{_.O(0,[2367,6725,7358],()=>_(_.s=27559)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6605],{27813:(e,t,a)=>{"use strict";a.d(t,{Zr:()=>l,f6:()=>n,oD:()=>s});let r="elanous.daemon.sessionId";function n(){return"undefined"!=typeof crypto&&"function"==typeof crypto.randomUUID?crypto.randomUUID():"s-".concat(Date.now().toString(36),"-").concat(Math.random().toString(36).slice(2,10))}function s(){let e=function(){let e=new URLSearchParams(window.location.search).get("session");return e?(localStorage.setItem(r,e),e):localStorage.getItem(r)}();if(e)return e;let t=n();return localStorage.setItem(r,t),t}function l(){let e=n();return localStorage.setItem(r,e),e}},30183:(e,t,a)=>{Promise.resolve().then(a.bind(a,79408))},38519:(e,t,a)=>{"use strict";a.d(t,{C:()=>i,DaemonProvider:()=>d,Q:()=>u});var r=a(41121),n=a(91269),s=a(49536),l=a(27813),o=a(45012),c=a(51215);let i=(0,n.createContext)(null);function d(e){let{children:t}=e,a={baseUrl:"",token:"",provider:""},[d,u]=(0,n.useState)(a),[m,p]=(0,n.useState)(""),[h]=(0,n.useState)(()=>new o.ki(a));(0,n.useEffect)(()=>{let e=(0,s.Fp)();u(e),h.updateConfig(e),p((0,l.oD)()),(0,c.cY)("webterm.provider.daemon.init",{baseUrl:e.baseUrl,hasToken:!!e.token})},[h]),(0,n.useEffect)(()=>{let e=e=>{if("elanous.daemon.token"===e.key||"elanous.nexus.baseUrl"===e.key){let t=(0,s.Fp)();h.updateConfig(t),u(t),(0,c.cY)("webterm.provider.daemon.config-cross-tab",{key:e.key,hasToken:!!t.token});return}"elanous.daemon.sessionId"===e.key&&e.newValue&&p(t=>t===e.newValue?t:((0,c.cY)("webterm.provider.daemon.session-cross-tab",{previous:t||"(empty)",next:e.newValue}),e.newValue))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)},[h]);let b=e=>{u(t=>{let a={...t,...e};return(0,s.Qc)(e),h.updateConfig(a),(0,c.cY)("webterm.provider.daemon.config-update",{keys:Object.keys(e)}),a})},x=e=>{p(e),localStorage.setItem("elanous.daemon.sessionId",e),(0,c.cY)("webterm.provider.daemon.session-set",{sessionId:e})},f=(0,n.useMemo)(()=>({config:d,setConfig:b,client:h,sessionId:m,setSessionId:x}),[d,h,m]);return(0,r.jsx)(i.Provider,{value:f,children:t})}function u(){let e=(0,n.useContext)(i);if(!e)throw Error("useDaemon must be used inside <DaemonProvider>");return e}},50940:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});let r=(0,a(89117).A)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]])},53220:(e,t,a)=>{"use strict";a.d(t,{V5:()=>s,tV:()=>l});var r=a(94387);class n extends Error{constructor(e,t,a){super(a||t),this.status=e,this.error=t,this.reason=a,this.name="MergeApprovalsApiError"}}function s(e,t){return e instanceof n?401===e.status||"unauthorized"===e.error?{text:"이 기기에 소유자 토큰이 없어 승인 목록을 못 읽었습니다 — 이미 연결된 기기의 설정 › 연결 토큰 만들기 에서 토큰을 만들어, 이 기기의 설정 › 데몬 연결 › 연결 토큰 칸에 붙이면 바로 보입니다.",href:"/app/settings/#bearer-token"}:"gh-failed"===e.error?{text:"데몬이 GitHub 를 읽지 못했습니다(데몬 기계의 gh 로그인\xb7네트워크) — 잠시 뒤 다시 열어 보세요.".concat(e.reason?" 사유: ".concat(e.reason.split("\n")[0].slice(0,160)):"")}:"gh-invalid-response"===e.error?{text:"GitHub 응답을 해석하지 못했습니다 — 잠시 뒤 다시 열어 보세요."}:"approvals-repo-unknown"===e.error?{text:"승인할 저장소를 모릅니다 — 데몬 설정 intake.approvals.repo(예: owner/repo)를 채워 주세요.",href:"/app/settings/"}:e.reason?{text:e.reason}:{text:"".concat(t," (").concat(e.status," ").concat(e.error,")")}:e instanceof TypeError?{text:"데몬에 닿지 못했습니다 — 데몬이 켜져 있는지, 이 기기가 같은 네트워크(tailnet)에 있는지 확인하세요."}:{text:e instanceof Error&&e.message?e.message:t}}function l(e){var t,a;let s=null!=(t=e.fetchImpl)?t:fetch,l=(null!=(a=e.baseUrl)?a:"").replace(/\/+$/,"");async function o(t,a){let r={...a,headers:{"content-type":"application/json",...e.authHeader?{authorization:e.authHeader}:{}}},o=e.client?await e.client.fetchResponse(t,r):await s("".concat(l).concat(t),r),c=await o.json().catch(()=>null);if(!o.ok){var i;let e=c&&"object"==typeof c?c:{};throw new n(o.status,null!=(i=e.error)?i:"request-failed",e.reason)}return c}return{list:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"open";return o("merged"===e?"".concat(r.r5,"?state=merged"):r.r5)},get:e=>o("".concat(r.r5,"/").concat(e)),check:(e,t)=>o("".concat(r.r5,"/").concat(e,"/check"),{method:"POST",body:JSON.stringify({headSha:t})}),merge:(e,t)=>o("".concat(r.r5,"/").concat(e,"/merge"),{method:"POST",body:JSON.stringify({headSha:t})})}}},67028:(e,t,a)=>{"use strict";function r(e){return{slides:e.slides.map(e=>{let{image:t,caption:a,include:r}=e;return{image:t,caption:a,include:r}}),caption:{hook:e.caption.hook,body:e.caption.body},hashtags:[...e.hashtags],cover:{text:e.cover.text,sub:e.cover.sub},location:e.location}}a.d(t,{$Y:()=>l,LP:()=>c,Mz:()=>r,ll:()=>d,rH:()=>o});class n extends Error{constructor(e,t){super(t),this.status=e,this.name="GraphApprovalsApiError"}}let s={list:"목록을 보려면",decide:"승인하려면",save:"초안을 저장하려면"},l="/app/settings/#bearer-token";function o(e){return e instanceof n&&(401===e.status||403===e.status)}function c(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"decide";return e instanceof n?401===e.status||403===e.status?"".concat(s[t]," 이 기기를 데몬에 연결해야 합니다 — 설정 › 데몬 연결 › 연결 토큰 칸에 토큰을 넣어 주세요."):404===e.status?"이 실행을 찾지 못했습니다. 목록을 다시 확인해 주세요.":409===e.status?"이미 결정된 실행입니다. 목록을 다시 확인해 주세요.":400===e.status?"결정 내용을 확인한 뒤 다시 시도해 주세요.":"승인 요청을 처리하지 못했습니다. 잠시 뒤 다시 시도해 주세요.":e instanceof TypeError?"서버에 연결하지 못했습니다. 연결 상태를 확인해 주세요.":"승인 요청을 처리하지 못했습니다. 잠시 뒤 다시 시도해 주세요."}let i="/v1/graph-approvals";function d(e){var t,a;let r=(null!=(t=e.baseUrl)?t:"").replace(/\/+$/,""),s=null!=(a=e.fetchImpl)?a:fetch;async function l(t,a){let l={...a,headers:{"content-type":"application/json",...e.authHeader?{authorization:e.authHeader}:{}}},o=e.client?await e.client.fetchResponse(t,l):await s("".concat(r).concat(t),l),c=await o.json().catch(()=>null);if(!o.ok){let e=c&&"object"==typeof c&&"error"in c&&"string"==typeof c.error?c.error:"request-failed";throw new n(o.status,e)}return c}return{list:()=>l(i),decide:(e,t,a)=>l("".concat(i,"/").concat(encodeURIComponent(e),"/").concat(encodeURIComponent(t)),{method:"POST",body:JSON.stringify({decision:a})}),saveFeedDraft:(e,t,a)=>l("".concat(i,"/").concat(encodeURIComponent(e),"/").concat(encodeURIComponent(t),"/feed-draft"),{method:"PUT",body:JSON.stringify(a)}),feedMedia:async(t,a,l)=>{let o="".concat(i,"/").concat(encodeURIComponent(t),"/").concat(encodeURIComponent(a),"/media?path=").concat(encodeURIComponent(l)),c={headers:e.authHeader?{authorization:e.authHeader}:{}},d=e.client?await e.client.fetchResponse(o,c):await s("".concat(r).concat(o),c);if(!d.ok)throw new n(d.status,"media-failed");return d.blob()}}}},71807:(e,t,a)=>{"use strict";a.d(t,{GC:()=>n,In:()=>i,OG:()=>o});var r=a(91269);let n="elanous.pwa.role",s="elanous:pwa-role";function l(){try{let e=window.localStorage.getItem(n);if("owner"===e||"contributor"===e||"general"===e)return e}catch(e){}return"general"}function o(e){try{window.localStorage.setItem(n,e)}catch(e){}"function"==typeof window.dispatchEvent&&window.dispatchEvent(new Event(s))}function c(e){if("function"!=typeof window.addEventListener)return()=>{};window.addEventListener(s,e);let t=t=>{(t.key===n||null===t.key)&&e()};return window.addEventListener("storage",t),()=>{window.removeEventListener(s,e),window.removeEventListener("storage",t)}}function i(){return(0,r.useSyncExternalStore)(c,l,()=>"general")}},79408:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>j});var r=a(41121),n=a(91269),s=a(71946),l=a(38317),o=a(38519),c=a(71807),i=a(53220);function d(e,t){return"UNKNOWN"===t&&e<3?3e3:null}async function u(e,t){let a,r=0,n=d(0,"UNKNOWN");for(;null!==n;){var s,l,o;if(await t.sleep(n),t.isActive&&!t.isActive())break;r++;try{a=await e(),null==(l=t.onDetail)||l.call(t,a)}catch(e){}null==(s=t.onAttempt)||s.call(t),n=d(r,null!=(o=null==a?void 0:a.mergeable)?o:"UNKNOWN")}return{attempts:r,...a?{last:a}:{}}}var m=a(50940);function p(e){let{view:t,target:a}=e,[s]=(0,n.useState)(()=>Date.now()),[l,o]=(0,n.useState)(s);(0,n.useEffect)(()=>{let e=window.setInterval(()=>o(Date.now()),100);return()=>window.clearInterval(e)},[]);let c=function(e,t,a){let r="".concat((Math.max(0,e)/1e3).toFixed(1),"초");return{title:"merged"===t?"GitHub 에서 반영된 코드 변경을 읽고 있습니다":a?"GitHub 에서 승인을 기다리는 코드 변경과 #".concat(a," 카드를 읽고 있습니다"):"GitHub 에서 승인을 기다리는 코드 변경을 읽고 있습니다",clock:r,hint:e>=8e3?"평소(2~5초)보다 오래 걸립니다 — GitHub 응답을 기다리는 중이며 멈추지 않았습니다.":null}}(l-s,t,a);return(0,r.jsxs)("section",{role:"status","aria-live":"polite","aria-busy":"true",className:"space-y-3","data-approvals-loading":!0,children:[(0,r.jsxs)("div",{className:"flex items-center gap-3 rounded-xl border border-blue-500/40 bg-blue-500/5 p-4",children:[(0,r.jsx)(m.A,{className:"h-6 w-6 shrink-0 text-blue-500 motion-safe:animate-spin","aria-hidden":!0}),(0,r.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,r.jsx)("p",{className:"font-medium",children:c.title}),c.hint&&(0,r.jsx)("p",{className:"mt-1 text-sm text-amber-600 dark:text-amber-400",children:c.hint})]}),(0,r.jsx)("span",{className:"font-mono text-lg tabular-nums text-blue-600 dark:text-blue-300","aria-label":"경과 시간",children:c.clock})]}),(0,r.jsx)("div",{className:"h-1 overflow-hidden rounded-full bg-muted","aria-hidden":!0,children:(0,r.jsx)("div",{className:"h-full w-1/3 rounded-full bg-blue-500 motion-safe:animate-[approvals-slide_1.2s_ease-in-out_infinite]"})}),(0,r.jsx)("style",{children:"@keyframes approvals-slide{0%{transform:translateX(-100%)}100%{transform:translateX(300%)}}"}),[0,1].map(e=>(0,r.jsxs)("div",{className:"space-y-3 rounded-xl border border-border bg-card p-5 motion-safe:animate-pulse","aria-hidden":!0,children:[(0,r.jsx)("div",{className:"h-4 w-2/3 rounded bg-muted"}),(0,r.jsx)("div",{className:"h-3 w-full rounded bg-muted"}),(0,r.jsx)("div",{className:"h-3 w-5/6 rounded bg-muted"})]},e))]})}function h(e){let{view:t,onChange:a}=e,n=(e,n)=>(0,r.jsx)("button",{type:"button",role:"tab","aria-selected":t===e,onClick:()=>a(e),className:"rounded-md px-3 py-1 text-sm ".concat(t===e?"bg-foreground text-background":"bg-muted text-foreground"),children:n});return(0,r.jsxs)("div",{role:"tablist","aria-label":"승인 목록 보기",className:"flex gap-2",children:[n("open","승인 대기"),n("merged","완료")]})}function b(e){let{brief:t,lineage:a,summary:n}=e;return(0,r.jsxs)(r.Fragment,{children:[null!==t?(0,r.jsx)("section",{"aria-label":"승인 요약",className:"mt-3 break-words text-sm leading-relaxed [&_a]:text-blue-600 [&_a]:underline [&_blockquote]:border-l-2 [&_blockquote]:pl-3 [&_h3]:mt-3 [&_h3]:font-semibold [&_li]:ml-5 [&_li]:list-disc [&_p]:my-2 [&_table]:block [&_table]:overflow-x-auto",children:(0,r.jsx)(s.oz,{remarkPlugins:[l.A],components:{a:e=>{let{href:t,children:a}=e;return(0,r.jsx)("a",{href:t,target:"_blank",rel:"noreferrer",children:a})}},children:t})}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("p",{className:"mt-3 rounded border border-amber-500/40 bg-amber-500/15 p-3 text-sm text-amber-800 dark:text-amber-300",children:"승인 요약 내용이 없습니다 — GitHub 본문을 보거나 발사자에게 요청하세요"}),(0,r.jsx)("p",{className:"mt-3 whitespace-pre-wrap text-sm",children:n})]}),a&&(0,r.jsxs)("p",{className:"mt-3 text-sm text-muted-foreground",children:["아이디어 원장: ",a]})]})}function x(e){var t;let{gate:a,busy:n,blocked:s,mergeLabel:l,onCheck:o,onMerge:c}=e;return(0,r.jsxs)("div",{className:"mt-3 space-y-2","aria-label":"머지 전 검사",children:["none"===a.status&&(0,r.jsx)("button",{type:"button",onClick:o,disabled:n,className:"rounded-lg border px-3 py-2 text-sm disabled:opacity-50",children:"머지 전 검사 시작"}),"running"===a.status&&(0,r.jsx)("p",{role:"status",className:"text-sm",children:"검사 중…"}),"passed"===a.status&&(0,r.jsxs)("p",{className:"text-sm text-green-700 dark:text-green-400",children:["검사 통과 (",null!=(t=a.os)?t:"unknown",")",a.baseDrifted?" \xb7 검사 뒤 main 이 움직였다 — 머지 때 겹치는 파일이 있으면 다시 검사를 요구한다":""]}),("failed"===a.status||"unmeasured"===a.status)&&(0,r.jsxs)("div",{role:"alert",className:"text-sm text-red-600",children:[(0,r.jsx)("p",{children:"failed"===a.status?"검사 실패":"검사 측정 불가"}),(0,r.jsx)("ul",{className:"list-inside list-disc",children:a.failures.map((e,t)=>(0,r.jsx)("li",{children:e},t))}),(0,r.jsx)("button",{type:"button",onClick:o,disabled:n,className:"mt-2 rounded-lg border px-3 py-2 disabled:opacity-50",children:"머지 전 검사 다시 시작"})]}),(0,r.jsx)("button",{type:"button",onClick:c,disabled:n||s||"passed"!==a.status,className:"rounded-lg bg-blue-600 px-4 py-2 text-sm font-medium text-white disabled:cursor-not-allowed disabled:opacity-50",children:null!=l?l:"승인하고 머지"})]})}function f(e){let{card:t,api:a,attempt:r,onAttempt:s,onUpdate:l}=e,o="UNKNOWN"===t.mergeable&&!t.merged&&"OPEN"===t.state;return(0,n.useEffect)(()=>{if(!o||r>0)return;let e=!0,n=[];return u(()=>a.get(t.number),{sleep:e=>new Promise(t=>{n.push(window.setTimeout(t,e))}),isActive:()=>e,onDetail:a=>{e&&l(a,t.headSha)},onAttempt:()=>{e&&s(t.number)}}),()=>{for(let t of(e=!1,n))window.clearTimeout(t)}},[a,t.number,o,r,s,l]),null}function g(){let e=(0,c.In)(),{client:t}=(0,o.Q)(),a=(0,n.useMemo)(()=>(0,i.tV)({client:t}),[t]),[s,l]=(0,n.useState)([]),[u,m]=(0,n.useState)(!0),[g,w]=(0,n.useState)(null),[y,v]=(0,n.useState)(null),[N,j]=(0,n.useState)({}),[k,S]=(0,n.useState)({}),[C,I]=(0,n.useState)(null),[E,U]=(0,n.useState)("open"),L=(0,n.useCallback)(e=>{S(t=>{var a;return{...t,[e]:(null!=(a=t[e])?a:0)+1}})},[]),R=(0,n.useCallback)((e,t)=>{l(a=>a.map(a=>a.number!==e.number||a.headSha!==t?a:{...e,gate:e.headSha===t?e.gate:{status:"none",failures:[]},merged:a.merged}))},[]);async function O(e){v(e.number),j(t=>({...t,[e.number]:""}));try{let{gate:t}=await a.check(e.number,e.headSha);l(a=>a.map(a=>a.number===e.number&&a.headSha===e.headSha?{...a,gate:t}:a))}catch(t){j(a=>({...a,[e.number]:(0,i.V5)(t,"검사를 시작하지 못했습니다.").text}))}finally{v(null)}}async function M(e){if(window.confirm("#".concat(e.number," ").concat(e.title,"\n현재 확인한 변경을 승인하고 머지할까요?"))){v(e.number),j(t=>({...t,[e.number]:""}));try{await a.merge(e.number,e.headSha),l(t=>t.map(t=>t.number===e.number?{...t,merged:!0,state:"MERGED"}:t))}catch(t){j(a=>({...a,[e.number]:(0,i.V5)(t,"머지하지 못했습니다.").text}))}finally{v(null)}}}return((0,n.useEffect)(()=>{let e=s.filter(e=>"OPEN"===e.state&&("running"===e.gate.status||"passed"===e.gate.status));if("open"!==E||!e.length)return;let t=!0,r=window.setInterval(()=>{for(let r of e)a.get(r.number).then(e=>{t&&R(e,r.headSha)}).catch(e=>{t&&j(t=>({...t,[r.number]:(0,i.V5)(e,"검사 상태를 불러오지 못했습니다.").text}))})},1e4);return()=>{t=!1,window.clearInterval(r)}},[a,s,R,E]),(0,n.useEffect)(()=>{let e=!0,t=Number(new URLSearchParams(window.location.search).get("pr")),r=Number.isSafeInteger(t)&&t>0?t:null;return(m(!0),w(null),I(r),"merged"===E)?(a.list("merged").then(t=>{let{items:a}=t;e&&l(a)}).catch(t=>{e&&w((0,i.V5)(t,"목록을 불러오지 못했습니다."))}).finally(()=>{e&&m(!1)}),()=>{e=!1}):(a.list().then(async t=>{let{items:n}=t;if(!e)return;let s=n.find(e=>e.number===r);if(r&&!s)try{let t=await a.get(r);e&&l([t,...n])}catch(t){e&&w((0,i.V5)(t,"PR 을 불러오지 못했습니다.")),e&&l(n)}else l(r?[...n].sort((e,t)=>Number(t.number===r)-Number(e.number===r)):n)}).catch(t=>{e&&w((0,i.V5)(t,"목록을 불러오지 못했습니다."))}).finally(()=>{e&&m(!1)}),()=>{e=!1})},[a,E]),"owner"===e||"open"!==E||u||s.length||g)?(0,r.jsxs)("main",{className:"mx-auto max-w-3xl space-y-5 p-4 pb-20 text-foreground sm:p-8",children:[(0,r.jsxs)("header",{children:[(0,r.jsx)("h1",{className:"text-2xl font-semibold",children:"코드 변경 승인"}),(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:"자동으로 만든 코드 변경(PR)을 확인하고 승인합니다."})]}),(0,r.jsx)(h,{view:E,onChange:e=>{l([]),U(e)}}),u&&(0,r.jsx)(p,{view:E,target:C}),g&&(0,r.jsxs)("p",{role:"alert",className:"text-red-600","data-approvals-error":!0,children:[g.text,g.href&&(0,r.jsxs)(r.Fragment,{children:[" ",(0,r.jsx)("a",{href:g.href,className:"font-semibold underline underline-offset-2","data-approvals-settings":!0,children:"설정 열기 →"})]})]}),!u&&!s.length&&!g&&(0,r.jsx)("p",{children:"merged"===E?"승인해 반영된 코드 변경이 아직 없습니다.":"승인을 기다리는 코드 변경이 없습니다."}),s.map(e=>{var t,n;let s=e.merged||"MERGED"===e.state,l="OPEN"!==e.state&&!s,o=e.draft?"초안 PR 은 머지할 수 없습니다. GitHub에서 초안을 해제한 뒤 다시 확인하세요.":e.checks.failure>0?"실패한 검사가 있습니다.":e.checks.pending>0?"검사가 아직 끝나지 않았습니다.":"CONFLICTING"===e.mergeable?"머지 충돌이 있습니다.":"MERGEABLE"!==e.mergeable?"머지 가능 여부가 아직 확인되지 않았습니다.":"main"!==e.base?"대상 브랜치가 main 이 아닙니다.":"",c=C===e.number,i=null!=(t=k[e.number])?t:0;return(0,r.jsxs)("article",{className:"rounded-xl border bg-card p-5 shadow-sm ".concat(c?"border-blue-500 ring-2 ring-blue-500/30":"border-border"),children:[(0,r.jsx)(f,{card:e,api:a,attempt:i,onAttempt:L,onUpdate:R}),(0,r.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-2",children:[(0,r.jsxs)("h2",{className:"font-semibold",children:["#",e.number," \xb7 ",e.title]}),(0,r.jsx)("span",{className:"rounded bg-muted px-2 py-1 text-xs",children:s?function(e){if(!e)return"머지됨";let t=new Date(e);if(Number.isNaN(t.getTime()))return"머지됨";let a=new Date(t.getTime()+324e5).toISOString();return"머지됨 ".concat(a.slice(5,10)," ").concat(a.slice(11,16)," KST")}(e.mergedAt):l?"닫힘":e.draft?"초안":"열림"})]}),(0,r.jsx)(b,{brief:e.brief,lineage:e.lineage,summary:e.summary}),(0,r.jsxs)("p",{className:"mt-3 text-sm text-muted-foreground",children:["+",e.additions," 추가 / −",e.deletions," 삭제 \xb7 파일 ",e.changedFiles]}),(0,r.jsxs)("div",{className:"mt-2 flex flex-wrap gap-2 text-xs","aria-label":"검사 상태",children:[(0,r.jsxs)("span",{className:"rounded bg-green-500/15 px-2 py-1",children:["성공 ",e.checks.success]}),(0,r.jsxs)("span",{className:"rounded bg-red-500/15 px-2 py-1",children:["실패 ",e.checks.failure]}),(0,r.jsxs)("span",{className:"rounded bg-yellow-500/15 px-2 py-1",children:["대기 ",e.checks.pending]}),e.checks.success+e.checks.failure+e.checks.pending===0&&(0,r.jsx)("span",{className:"rounded bg-slate-500/15 px-2 py-1",children:"GitHub 검사 없음 — 머지 전 검사는 아래에서 별도로 실행"})]}),(0,r.jsxs)("details",{open:c,className:"mt-3 text-sm",children:[(0,r.jsx)("summary",{className:"cursor-pointer",children:"바뀐 파일 보기"}),(0,r.jsx)("ul",{className:"mt-2 list-inside list-disc break-all",children:e.files.map(e=>(0,r.jsx)("li",{children:e},e))})]}),(0,r.jsxs)("div",{className:"mt-4 flex flex-wrap items-center gap-4",children:[(0,r.jsx)("a",{className:"text-sm text-blue-600 underline",href:e.url,target:"_blank",rel:"noopener noreferrer",children:"GitHub 에서 보기"}),!s&&!l&&(0,r.jsx)(x,{gate:e.gate,busy:null!==y,blocked:!!o,mergeLabel:y===e.number?"머지 중…":"UNKNOWN"!==(n=e.mergeable)?"승인하고 머지":null===d(i,n)?"확인 종료":"확인 중…",onCheck:()=>O(e),onMerge:()=>M(e)})]}),o&&!s&&!l&&(0,r.jsxs)("p",{className:"mt-2 text-sm text-amber-600",children:[o,"UNKNOWN"===e.mergeable&&i>=3?" 자동 확인이 끝났습니다. 최신 상태는 페이지를 새로고침하세요.":""]}),N[e.number]&&(0,r.jsx)("p",{role:"alert",className:"mt-2 text-sm text-red-600",children:N[e.number]})]},e.number)})]}):null}var w=a(67028);function y(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Date.now(),a="release-loop"===e.graphId?"릴리스 발행":"announce-loop"===e.graphId?"공지":e.graphId,r=Date.parse(e.since),n=Number.isNaN(r)?0:Math.max(0,Math.floor((t-r)/6e4)),s=n<1?"방금 전":n<60?"".concat(n,"분 전"):n<1440?"".concat(Math.floor(n/60),"시간 전"):"".concat(Math.floor(n/1440),"일 전");return{title:a,nodeId:e.nodeId,waiting:s,message:e.message,recent:e.recent.map(e=>"".concat(e.ok&&"fail"!==e.outcome&&"error"!==e.outcome?"✓":"✗"," ").concat(e.nodeId).concat(e.outcome?" \xb7 ".concat(e.outcome):"").concat(e.summary?" \xb7 ".concat(e.summary):""))}}function v(e){var t,a,s,l,o,c,i;let{item:d,api:u,onDecided:m,confirm:p}=e,[h,b]=(0,n.useState)(d.feed),[x,f]=(0,n.useState)(()=>(0,w.Mz)(d.feed)),[g,y]=(0,n.useState)(!1),[v,N]=(0,n.useState)(0),[j,k]=(0,n.useState)(!1),[S,C]=(0,n.useState)(!1),[I,E]=(0,n.useState)(""),[U,L]=(0,n.useState)(""),[R,O]=(0,n.useState)(!1),M=(e,t)=>{L((0,w.LP)(e,t)),O((0,w.rH)(e))},[D,A]=(0,n.useState)({}),P=(0,n.useRef)(null),_=null!=p?p:e=>window.confirm(e),H=(i=(0,w.Mz)(h),JSON.stringify(x)!==JSON.stringify(i)),G=(0,n.useMemo)(()=>(function(e,t){let a=[];for(let r of(e.cover.image&&a.push({image:e.cover.image,isCover:!0}),t.slides))r.include&&a.push({image:r.image,caption:r.caption});return a})(h,x),[h,x]),T=G[Math.min(v,Math.max(0,G.length-1))],F=(0,n.useMemo)(()=>[h.cover.image,...h.slides.map(e=>e.image)].filter(e=>!!e),[h]);function V(e){N(t=>Math.max(0,Math.min(G.length-1,t+e)))}function z(e,t){f(a=>({...a,slides:a.slides.map((a,r)=>r===e?{...a,...t}:a)}))}function W(e,t){f(a=>{let r=e+t;if(r<0||r>=a.slides.length)return a;let n=[...a.slides];return[n[e],n[r]]=[n[r],n[e]],{...a,slides:n}})}async function Y(){C(!0),L(""),O(!1),E("");try{let e=await u.saveFeedDraft(d.graphId,d.runId,x);return b(e.feed),f((0,w.Mz)(e.feed)),E("저장했어요 \xb7 수정 ".concat(e.feed.revision," \xb7 아직 게시 전입니다")),!0}catch(e){return M(e,"save"),!1}finally{C(!1)}}async function J(){if(_("게시할까요? 승인하면 이 초안으로 게시 준비 묶음이 텔레그램으로 갑니다.")&&(!H||await Y())){C(!0),L("");try{await u.decide(d.graphId,d.runId,"approved"),m()}catch(e){M(e,"decide")}finally{C(!1)}}}async function K(){if(_("이 게시 초안을 거절할까요?")){C(!0),L("");try{await u.decide(d.graphId,d.runId,"rejected"),m()}catch(e){M(e,"decide")}finally{C(!1)}}}(0,n.useEffect)(()=>{let e=!0,t=[],a="undefined"!=typeof URL&&"function"==typeof URL.createObjectURL;return Promise.all(F.map(async r=>{try{let n=await u.feedMedia(d.graphId,d.runId,r);if(!e||!a)return null;let s=URL.createObjectURL(n);return t.push(s),[r,s]}catch(e){return null}})).then(t=>{e&&A(Object.fromEntries(t.filter(e=>!!e)))}),()=>{e=!1,a&&"function"==typeof URL.revokeObjectURL&&t.forEach(e=>URL.revokeObjectURL(e))}},[u,d.graphId,d.runId,F]);let $=(null==(t=h.brand)?void 0:t.name)||"브랜드",q=$.trim().charAt(0).toUpperCase()||"\xb7",Q=x.hashtags.join(" "),X=x.cover.text!==(null!=(s=h.cover.renderedText)?s:h.cover.text)||x.cover.sub!==(null!=(l=h.cover.renderedSub)?l:h.cover.sub);return(0,r.jsxs)("article",{"aria-label":"피드 미리보기","data-feed-revision":h.revision,className:"mx-auto w-full max-w-md overflow-hidden rounded-xl border border-border bg-card text-foreground shadow-sm",children:[(0,r.jsxs)("header",{className:"flex items-center gap-3 px-3 py-2",children:[(0,r.jsx)("span",{"aria-hidden":!0,className:"flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-muted text-sm font-semibold",children:q}),(0,r.jsxs)("div",{className:"min-w-0",children:[(0,r.jsx)("p",{className:"truncate text-sm font-semibold",children:$}),(null==(a=h.brand)?void 0:a.handle)&&(0,r.jsx)("p",{className:"truncate text-xs text-muted-foreground",children:h.brand.handle})]}),(0,r.jsxs)("span",{className:"ml-auto shrink-0 text-xs text-muted-foreground",children:["수정 ",h.revision,H?" \xb7 저장 안 됨":""]})]}),(0,r.jsxs)("div",{className:"relative aspect-[4/5] w-full touch-pan-y select-none overflow-hidden bg-muted",onTouchStart:e=>{var t,a;P.current=null!=(a=null==(t=e.touches[0])?void 0:t.clientX)?a:null},onTouchEnd:e=>{var t;let a=P.current;P.current=null;let r=null==(t=e.changedTouches[0])?void 0:t.clientX;null==a||null==r||40>Math.abs(r-a)||V(r<a?1:-1)},children:[(null==T?void 0:T.image)&&D[T.image]?(0,r.jsx)("img",{src:D[T.image],alt:T.isCover?x.cover.text:null!=(o=T.caption)?o:"",className:"h-full w-full object-cover"}):(0,r.jsx)("div",{className:"flex h-full w-full items-center justify-center text-sm text-muted-foreground",children:"이미지 불러오는 중"}),G.length>1&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("button",{type:"button","aria-label":"이전 장",disabled:0===v,onClick:()=>V(-1),className:"absolute left-2 top-1/2 -translate-y-1/2 rounded-full bg-black/40 px-2 py-1 text-white disabled:opacity-0",children:"‹"}),(0,r.jsx)("button",{type:"button","aria-label":"다음 장",disabled:v>=G.length-1,onClick:()=>V(1),className:"absolute right-2 top-1/2 -translate-y-1/2 rounded-full bg-black/40 px-2 py-1 text-white disabled:opacity-0",children:"›"})]})]}),G.length>1&&(0,r.jsx)("div",{"aria-label":"장 표시",className:"flex justify-center gap-1.5 py-2",children:G.map((e,t)=>(0,r.jsx)("span",{"data-dot":t===v?"on":"off",className:"h-1.5 w-1.5 rounded-full ".concat(t===v?"bg-primary":"bg-muted-foreground/40")},t))}),X&&(0,r.jsxs)("p",{"data-cover-pending":!0,className:"mx-3 mb-2 rounded border border-dashed border-border px-2 py-1 text-xs text-muted-foreground",children:["커버 문구 변경 — \xab",x.cover.text,x.cover.sub?" \xb7 ".concat(x.cover.sub):"","\xbb \xb7 게시 때 커버를 다시 그립니다"]}),(0,r.jsxs)("div",{className:"space-y-2 px-3 pb-3 text-sm",children:[(0,r.jsxs)("p",{className:"break-words",children:[(0,r.jsx)("span",{className:"font-semibold",children:$})," ",x.caption.hook]}),x.caption.body&&(j?(0,r.jsx)("p",{className:"whitespace-pre-wrap break-words",children:x.caption.body}):(0,r.jsx)("button",{type:"button",onClick:()=>k(!0),className:"text-muted-foreground",children:"더 보기"})),x.hashtags.length>0&&(0,r.jsx)("p",{className:"flex flex-wrap gap-x-1.5 text-primary",children:x.hashtags.map((e,t)=>(0,r.jsx)("span",{className:"whitespace-nowrap",children:e},"".concat(e,"-").concat(t)))}),x.location&&(0,r.jsxs)("p",{className:"text-xs text-muted-foreground",children:["\uD83D\uDCCD ",x.location]})]}),g&&(0,r.jsxs)("section",{"aria-label":"초안 편집",className:"space-y-3 border-t border-border px-3 py-3 text-sm",children:[(0,r.jsxs)("label",{className:"block",children:["커버 문구",(0,r.jsx)("input",{value:x.cover.text,onChange:e=>f({...x,cover:{...x.cover,text:e.target.value}}),className:"mt-1 w-full rounded border border-border bg-background px-2 py-1"})]}),(0,r.jsxs)("label",{className:"block",children:["커버 부제",(0,r.jsx)("input",{value:x.cover.sub,onChange:e=>f({...x,cover:{...x.cover,sub:e.target.value}}),className:"mt-1 w-full rounded border border-border bg-background px-2 py-1"})]}),(0,r.jsxs)("label",{className:"block",children:["첫 줄",(0,r.jsx)("input",{value:x.caption.hook,onChange:e=>f({...x,caption:{...x.caption,hook:e.target.value}}),className:"mt-1 w-full rounded border border-border bg-background px-2 py-1"})]}),(0,r.jsxs)("label",{className:"block",children:["본문",(0,r.jsx)("textarea",{value:x.caption.body,rows:4,onChange:e=>f({...x,caption:{...x.caption,body:e.target.value}}),className:"mt-1 w-full rounded border border-border bg-background px-2 py-1"})]}),(0,r.jsxs)("label",{className:"block",children:["해시태그(띄어쓰기로 구분)",(0,r.jsx)("input",{value:Q,onChange:e=>f({...x,hashtags:e.target.value.split(/\s+/).filter(Boolean)}),className:"mt-1 w-full rounded border border-border bg-background px-2 py-1"})]}),(0,r.jsxs)("label",{className:"block",children:["위치(비우면 없음)",(0,r.jsx)("input",{value:null!=(c=x.location)?c:"",onChange:e=>f({...x,location:e.target.value.trim()?e.target.value:null}),className:"mt-1 w-full rounded border border-border bg-background px-2 py-1"})]}),(0,r.jsx)("ol",{"aria-label":"사진 순서",className:"space-y-2",children:x.slides.map((e,t)=>(0,r.jsxs)("li",{"data-slide":e.image,className:"rounded border border-border p-2 ".concat(e.include?"":"opacity-50"),children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("span",{className:"w-6 shrink-0 text-xs text-muted-foreground",children:t+1}),(0,r.jsx)("input",{"aria-label":"".concat(t+1,"번 사진 설명"),value:e.caption,onChange:e=>z(t,{caption:e.target.value}),className:"min-w-0 flex-1 rounded border border-border bg-background px-2 py-1"})]}),(0,r.jsxs)("div",{className:"mt-2 flex gap-2",children:[(0,r.jsx)("button",{type:"button",disabled:0===t,onClick:()=>W(t,-1),className:"rounded border px-2 py-0.5 disabled:opacity-40",children:"앞으로"}),(0,r.jsx)("button",{type:"button",disabled:t===x.slides.length-1,onClick:()=>W(t,1),className:"rounded border px-2 py-0.5 disabled:opacity-40",children:"뒤로"}),(0,r.jsx)("button",{type:"button",onClick:()=>z(t,{include:!e.include}),className:"rounded border px-2 py-0.5",children:e.include?"빼기":"되살리기"})]})]},e.image))})]}),(I||U)&&(0,r.jsx)("p",{role:U?"alert":"status",className:"px-3 pb-2 text-sm ".concat(U?"text-red-600":"text-muted-foreground"),children:U||I}),U&&R&&(0,r.jsx)("p",{className:"px-3 pb-2 text-sm",children:(0,r.jsx)("a",{href:w.$Y,className:"font-medium underline","data-connect-token-link":!0,children:"연결 토큰 칸 열기 →"})}),(0,r.jsxs)("footer",{className:"flex flex-wrap gap-2 border-t border-border px-3 py-3",children:[(0,r.jsx)("button",{type:"button",disabled:S,onClick:()=>y(e=>!e),className:"rounded-lg border px-3 py-2 text-sm disabled:opacity-50",children:g?"편집 닫기":"편집"}),(0,r.jsx)("button",{type:"button",disabled:S||!H,onClick:()=>{Y()},className:"rounded-lg border px-3 py-2 text-sm disabled:opacity-50",children:"수정 저장"}),(0,r.jsx)("button",{type:"button",disabled:S,onClick:()=>{J()},className:"rounded-lg bg-blue-600 px-3 py-2 text-sm font-medium text-white disabled:opacity-50",children:"최종 게시"}),(0,r.jsx)("button",{type:"button",disabled:S,onClick:()=>{K()},className:"ml-auto rounded-lg px-3 py-2 text-sm text-muted-foreground disabled:opacity-50",children:"거절"})]})]})}function N(){let e,{client:t}=(0,o.Q)(),a=(0,n.useMemo)(()=>(0,w.ll)({client:t}),[t]),[s,l]=(0,n.useState)([]),[c,i]=(0,n.useState)(""),[d,u]=(0,n.useState)(!1),[m,p]=(0,n.useState)(!1),h=(0,n.useRef)((e=0,{begin:()=>e+=1,isLatest:t=>t===e})).current,b=(0,n.useCallback)(async()=>{let e=h.begin();try{let t=await a.list();if(!h.isLatest(e))return;l(t.items),i(""),u(!1)}catch(t){h.isLatest(e)&&(i((0,w.LP)(t,"list")),u((0,w.rH)(t)))}},[a,h]);async function x(e,t){if("rejected"!==t||window.confirm("".concat(y(e).title," 실행을 거절할까요?"))){p(!0),i(""),h.begin();try{await a.decide(e.graphId,e.runId,t),await b()}catch(e){i((0,w.LP)(e,"decide")),u((0,w.rH)(e))}finally{p(!1)}}}(0,n.useEffect)(()=>{b();let e=window.setInterval(()=>{b()},3e4);return()=>window.clearInterval(e)},[b]);let f=s.filter(e=>!!e.feed),g=s.filter(e=>!e.feed);return s.length||c?(0,r.jsxs)(r.Fragment,{children:[f.length>0&&(0,r.jsxs)("section",{"aria-label":"게시 대기",className:"mx-auto max-w-3xl space-y-4 px-4 pt-6 text-foreground sm:px-8",children:[(0,r.jsx)("h2",{className:"text-xl font-semibold",children:"게시 대기"}),(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:"고쳐서 저장해도 대기열에 남습니다. \xab최종 게시\xbb를 눌러야만 올라갑니다."}),f.map(e=>(0,r.jsx)(v,{item:e,api:a,onDecided:()=>{h.begin(),b()}},"".concat(e.graphId,"/").concat(e.runId)))]}),(g.length>0||c)&&(0,r.jsxs)("section",{"aria-label":"실행 승인",className:"mx-auto max-w-3xl space-y-4 px-4 pt-6 text-foreground sm:px-8",children:[(0,r.jsx)("h2",{className:"text-xl font-semibold",children:"실행 승인"}),c&&(0,r.jsx)("p",{role:"alert",className:"text-sm text-red-600",children:c}),c&&d&&(0,r.jsx)("p",{className:"text-sm",children:(0,r.jsx)("a",{href:w.$Y,className:"font-medium underline","data-connect-token-link":!0,children:"연결 토큰 칸 열기 →"})}),g.map(e=>{let t=y(e);return(0,r.jsxs)("article",{className:"rounded-xl border border-border bg-card p-5 shadow-sm",children:[(0,r.jsx)("h3",{className:"font-semibold",children:t.title}),(0,r.jsxs)("p",{className:"mt-1 text-sm text-muted-foreground",children:["멈춘 단계: ",t.nodeId," \xb7 ",t.waiting,"부터 대기 중"]}),(0,r.jsx)("p",{className:"mt-3 whitespace-pre-wrap break-words text-sm",children:t.message}),t.recent.length>0&&(0,r.jsxs)("div",{className:"mt-3 text-sm",children:[(0,r.jsx)("p",{className:"font-medium",children:"최근 단계"}),(0,r.jsx)("ul",{className:"mt-1 space-y-1",children:t.recent.map((e,t)=>(0,r.jsx)("li",{className:"break-words",children:e},t))})]}),(0,r.jsxs)("div",{className:"mt-4 flex gap-2",children:[(0,r.jsx)("button",{type:"button",disabled:m,onClick:()=>{x(e,"approved")},className:"rounded-lg bg-blue-600 px-4 py-2 text-sm font-medium text-white disabled:opacity-50",children:"승인"}),(0,r.jsx)("button",{type:"button",disabled:m,onClick:()=>{x(e,"rejected")},className:"rounded-lg border px-4 py-2 text-sm disabled:opacity-50",children:"거절"})]})]},"".concat(e.graphId,"/").concat(e.runId))})]})]}):null}function j(){return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(N,{}),(0,r.jsx)(g,{})]})}},89117:(e,t,a)=>{"use strict";a.d(t,{A:()=>i});var r=a(91269);let n=function(){for(var e=arguments.length,t=Array(e),a=0;a<e;a++)t[a]=arguments[a];return t.filter((e,t,a)=>!!e&&""!==e.trim()&&a.indexOf(e)===t).join(" ").trim()},s=e=>{let t=e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,a)=>a?a.toUpperCase():t.toLowerCase());return t.charAt(0).toUpperCase()+t.slice(1)};var l={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let o=(0,r.createContext)({}),c=(0,r.forwardRef)((e,t)=>{var a,s,c;let{color:i,size:d,strokeWidth:u,absoluteStrokeWidth:m,className:p="",children:h,iconNode:b,...x}=e,{size:f=24,strokeWidth:g=2,absoluteStrokeWidth:w=!1,color:y="currentColor",className:v=""}=null!=(a=(0,r.useContext)(o))?a:{},N=(null!=m?m:w)?24*Number(null!=u?u:g)/Number(null!=d?d:f):null!=u?u:g;return(0,r.createElement)("svg",{ref:t,...l,width:null!=(s=null!=d?d:f)?s:l.width,height:null!=(c=null!=d?d:f)?c:l.height,stroke:null!=i?i:y,strokeWidth:N,className:n("lucide",v,p),...!h&&!(e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0;return!1})(x)&&{"aria-hidden":"true"},...x},[...b.map(e=>{let[t,a]=e;return(0,r.createElement)(t,a)}),...Array.isArray(h)?h:[h]])}),i=(e,t)=>{let a=(0,r.forwardRef)((a,l)=>{let{className:o,...i}=a;return(0,r.createElement)(c,{ref:l,iconNode:t,className:n("lucide-".concat(s(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()),"lucide-".concat(e),o),...i})});return a.displayName=s(e),a}},94387:(e,t,a)=>{"use strict";a.d(t,{GM:()=>o,J3:()=>l,WF:()=>r,bR:()=>s,m:()=>c,r5:()=>n});let r="/v1/devices",n="/v1/approvals/merges",s="/v1/templates/capability-preview",l="/v1/idle-nudge/preview",o="/v1/morning-digest/showroom",c="/v1/next-fluent/dispatch"}},e=>{e.O(0,[2330,5012,2367,6725,7358],()=>e(e.s=30183)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2922],{5344:(e,t,r)=>{"use strict";r.d(t,{r:()=>i});var s=r(41121),n=r(45609),a=r.n(n);let l=[{key:"autopilot",href:"/autopilot",num:"①",label:"미션",sub:"Autopilot"},{key:"tasks",href:"/tasks",num:"②",label:"작업",sub:"Tasks"},{key:"scheduler",href:"/scheduler",num:"③",label:"스케줄",sub:"Schedules"}];function i(e){let{active:t}=e;return(0,s.jsxs)("nav",{"aria-label":"Mission Fabric 파이프라인","data-testid":"fabric-stage-header",className:"flex flex-wrap items-center gap-1 text-xs",children:[(0,s.jsx)("span",{className:"mr-1 text-muted-foreground",children:"Missions"}),l.map((e,r)=>(0,s.jsxs)("span",{className:"flex items-center gap-1",children:[(0,s.jsxs)(a(),{href:e.href,"aria-current":e.key===t?"page":void 0,className:["rounded px-2 py-1 ring-1 transition-colors",e.key===t?"bg-primary/15 font-medium text-foreground ring-primary/40":"text-muted-foreground ring-border hover:bg-muted hover:text-foreground"].join(" "),children:[(0,s.jsx)("span",{className:"mr-1",children:e.num}),e.label,(0,s.jsx)("span",{className:"ml-1 text-[10px] opacity-70",children:e.sub})]}),r<l.length-1&&(0,s.jsx)("span",{className:"text-muted-foreground/50","aria-hidden":!0,children:"→"})]},e.key))]})}},23570:(e,t,r)=>{Promise.resolve().then(r.bind(r,30968))},27813:(e,t,r)=>{"use strict";r.d(t,{Zr:()=>l,f6:()=>n,oD:()=>a});let s="elanous.daemon.sessionId";function n(){return"undefined"!=typeof crypto&&"function"==typeof crypto.randomUUID?crypto.randomUUID():"s-".concat(Date.now().toString(36),"-").concat(Math.random().toString(36).slice(2,10))}function a(){let e=function(){let e=new URLSearchParams(window.location.search).get("session");return e?(localStorage.setItem(s,e),e):localStorage.getItem(s)}();if(e)return e;let t=n();return localStorage.setItem(s,t),t}function l(){let e=n();return localStorage.setItem(s,e),e}},30968:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>A});var s=r(41121),n=r(91269),a=r(38519),l=r(72030),i=r(66062);let o=["dig","backtest","trade","retro","replay"],d=[["replay","dig"],["dig","backtest"],["backtest","trade"],["trade","retro"],["retro","replay"]];function c(e){if(!e)return"never";let t=Date.parse(e);if(Number.isNaN(t))return e;let r=Math.max(0,Math.floor((Date.now()-t)/1e3));if(r<60)return"".concat(r,"s ago");let s=Math.floor(r/60);if(s<60)return"".concat(s,"m ago");let n=Math.floor(s/60);return n<24?"".concat(n,"h ago"):"".concat(Math.floor(n/24),"d ago")}function u(e){var t;let r=(null==(t=e.last)?void 0:t.at)?Date.parse(e.last.at):NaN;return!Number.isNaN(r)&&Date.now()-r<36e5}function m(){var e;let{client:t}=(0,a.Q)(),[r,m]=(0,n.useState)([]),[x,p]=(0,n.useState)(!1),[g,h]=(0,n.useState)(null),f=(0,n.useCallback)(async()=>{p(!0);try{var e,r;let s=await t.fetchJson("/v1/dashboard/loops");m(null!=(r=null==(e=s.loops)?void 0:e.loops)?r:[])}catch(e){i.oR.error("loops load failed: ".concat(e instanceof Error?e.message:e))}finally{p(!1)}},[t]);(0,n.useEffect)(()=>{f();let e=window.setInterval(()=>void f(),3e4);return()=>window.clearInterval(e)},[f]);let b=(0,n.useMemo)(()=>{let e=new Map;for(let t of r)e.set(t.name,t);return e},[r]),v=(0,n.useMemo)(()=>{let e=new Map;return o.forEach((t,r)=>e.set(t,function(e){let t=Math.PI/180*(-90+72*e);return{x:200+128*Math.cos(t),y:190+128*Math.sin(t)}}(r))),e},[]),y=g&&null!=(e=b.get(g))?e:null;return(0,s.jsxs)("div",{className:"mx-auto max-w-[1100px] space-y-4 p-4",children:[(0,s.jsxs)("header",{className:"flex flex-col gap-3 lg:flex-row lg:items-end lg:justify-between",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("h1",{className:"text-xl font-semibold tracking-tight",children:"투자 루프 오케스트라"}),(0,s.jsx)("p",{className:"text-sm text-muted-foreground",children:"5개 자율 루프의 순환(분석→백테→매매→회고→재생). 원 클릭 = 활동 기록 \xb7 펄스 = 최근 활동 \xb7 채움 = armed."})]}),(0,s.jsx)(l.$,{size:"sm",variant:"outline",onClick:()=>void f(),disabled:x,children:"Refresh"})]}),(0,s.jsxs)("div",{className:"flex flex-col gap-4 lg:flex-row lg:items-start",children:[(0,s.jsxs)("section",{className:"min-w-0 flex-1",children:[(0,s.jsxs)("svg",{viewBox:"0 0 400 380",className:"w-full",role:"img","aria-label":"loop orchestra graph",children:[(0,s.jsx)("defs",{children:(0,s.jsx)("marker",{id:"loop-arrow",viewBox:"0 0 10 10",refX:"8",refY:"5",markerWidth:"6",markerHeight:"6",orient:"auto-start-reverse",children:(0,s.jsx)("path",{d:"M 0 0 L 10 5 L 0 10 z",className:"fill-muted-foreground/50"})})}),d.map(e=>{let[t,r]=e,n=v.get(t),a=v.get(r);if(!n||!a)return null;let l=a.x-n.x,i=a.y-n.y,o=Math.hypot(l,i)||1,d=l/o,c=i/o,u=n.x+42*d,m=n.y+42*c,x=a.x-48*d,p=a.y-48*c;return(0,s.jsx)("line",{x1:u,y1:m,x2:x,y2:p,className:"stroke-muted-foreground/30",strokeWidth:1.5,markerEnd:"url(#loop-arrow)"},"".concat(t,"-").concat(r))}),o.map(e=>{var t,r,n,a;let l=b.get(e),i=v.get(e),o=!!l&&u(l),d=(null==l?void 0:l.armed)===!0,m=(null==l?void 0:l.category)!=="reflect",x=g===e;return(0,s.jsxs)("g",{className:"cursor-pointer",onClick:()=>h(t=>t===e?null:e),children:[o&&(0,s.jsxs)("circle",{cx:i.x,cy:i.y,r:40,className:m?"fill-sky-400/20":"fill-violet-400/20",children:[(0,s.jsx)("animate",{attributeName:"r",values:"".concat(40,";").concat(52),dur:"1.6s",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"opacity",values:"0.5;0",dur:"1.6s",repeatCount:"indefinite"})]}),(0,s.jsx)("circle",{cx:i.x,cy:i.y,r:40,className:"".concat(d?m?"fill-sky-500/25":"fill-violet-500/25":"fill-card"," ").concat(m?"stroke-sky-400":"stroke-violet-400"),strokeWidth:x?3.5:1.8}),(0,s.jsx)("text",{x:i.x,y:i.y-4,textAnchor:"middle",className:"fill-foreground text-[11px] font-medium",children:null!=(a=null==l||null==(r=l.label)||null==(t=r.split("(")[0])?void 0:t.trim())?a:e}),(0,s.jsx)("text",{x:i.x,y:i.y+10,textAnchor:"middle",className:"fill-muted-foreground text-[9px]",children:l?"".concat(c(null==(n=l.last)?void 0:n.at)):"—"}),(0,s.jsx)("text",{x:i.x,y:i.y+21,textAnchor:"middle",className:"fill-muted-foreground/70 text-[8px]",children:l?"today ".concat(l.today).concat(o?" \xb7 active":""):""})]},e)})]}),(0,s.jsxs)("div",{className:"flex flex-wrap justify-center gap-3 text-[11px] text-muted-foreground",children:[(0,s.jsxs)("span",{className:"flex items-center gap-1",children:[(0,s.jsx)("span",{className:"inline-block h-2 w-2 rounded-full bg-sky-400"})," 실행축"]}),(0,s.jsxs)("span",{className:"flex items-center gap-1",children:[(0,s.jsx)("span",{className:"inline-block h-2 w-2 rounded-full bg-violet-400"})," 사색축"]}),(0,s.jsx)("span",{children:"채움=armed \xb7 펄스=최근 활동"})]})]}),y&&(0,s.jsxs)("aside",{className:"w-full shrink-0 space-y-3 rounded-2xl border border-border bg-card p-4 lg:w-[360px]",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)("h2",{className:"text-base font-semibold",children:y.label}),(0,s.jsx)("button",{type:"button",onClick:()=>h(null),className:"rounded-md px-1.5 py-0.5 text-xs text-muted-foreground hover:bg-accent/40 hover:text-foreground","aria-label":"close",children:"✕"})]}),(0,s.jsxs)("div",{className:"flex flex-wrap gap-1.5 text-[11px]",children:[(0,s.jsx)("span",{className:"rounded-full px-2 py-0.5 ring-1 ".concat("reflect"===y.category?"text-violet-300 ring-violet-500/30":"text-sky-300 ring-sky-500/30"),children:"reflect"===y.category?"사색축":"실행축"}),(0,s.jsxs)("span",{className:"rounded-full bg-muted px-2 py-0.5 text-muted-foreground",children:["armed ",null===y.armed?"—":y.armed?"ON":"off"]}),(0,s.jsxs)("span",{className:"rounded-full bg-muted px-2 py-0.5 text-muted-foreground",children:["today ",y.today]}),u(y)&&(0,s.jsx)("span",{className:"rounded-full bg-emerald-500/15 px-2 py-0.5 text-emerald-300 ring-1 ring-emerald-500/30",children:"active"})]}),(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)("div",{className:"text-sm font-semibold",children:"활동 기록"}),y.recent&&y.recent.length>0?(0,s.jsx)("div",{className:"space-y-1.5",children:y.recent.map((e,t)=>(0,s.jsxs)("div",{className:"rounded-lg bg-muted/40 px-3 py-2 text-[11px]",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)("span",{className:"font-medium text-foreground",children:e.status}),(0,s.jsx)("span",{className:"text-muted-foreground",title:e.at,children:c(e.at)})]}),e.detail&&(0,s.jsx)("div",{className:"mt-0.5 truncate text-muted-foreground",title:e.detail,children:e.detail})]},"".concat(e.at,"-").concat(t)))}):(0,s.jsx)("div",{className:"text-sm text-muted-foreground",children:"활동 기록 없음."})]})]})]})]})}function x(e){let{api:t}=e,[r,a]=(0,n.useState)([]),[i,o]=(0,n.useState)(!0),d=(0,n.useCallback)(async()=>{try{var e;let r=await t.repoWatch();a(null!=(e=r.repos)?e:[])}catch(e){}finally{o(!1)}},[t]);return((0,n.useEffect)(()=>{d()},[d]),i)?(0,s.jsx)("p",{className:"text-sm text-muted-foreground",children:"불러오는 중…"}):(0,s.jsxs)("div",{className:"space-y-3",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)("p",{className:"text-sm text-muted-foreground",children:"참조 에이전트 repo 감시 — 새 커밋을 흡수 후보로 분석(제안은 텔레그램 report\xb7크론 08:40\xb720:40)."}),(0,s.jsx)(l.$,{size:"sm",variant:"outline",onClick:()=>void d(),children:"새로고침"})]}),(0,s.jsx)("div",{className:"grid gap-3 sm:grid-cols-3",children:r.map(e=>(0,s.jsxs)("div",{className:"rounded-lg border border-border bg-card/50 p-3",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)("span",{className:"font-medium",children:e.key}),e.lastNew>0&&(0,s.jsxs)("span",{className:"rounded bg-amber-500/15 px-2 py-0.5 text-xs text-amber-300 ring-1 ring-amber-500/30",children:["새 ",e.lastNew]})]}),(0,s.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:e.repo}),(0,s.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:e.note}),(0,s.jsxs)("div",{className:"mt-2 flex items-center justify-between text-xs",children:[(0,s.jsx)("span",{className:"font-mono text-muted-foreground",children:e.lastSha?e.lastSha.slice(0,7):"—"}),(0,s.jsx)("span",{className:"text-muted-foreground",children:function(e){if(!e)return"미감지";let t=Date.now()-Date.parse(e);if(Number.isNaN(t))return"—";let r=Math.round(t/6e4);if(r<60)return"".concat(r,"분 전");let s=Math.round(r/60);return s<24?"".concat(s,"시간 전"):"".concat(Math.round(s/24),"일 전")}(e.lastSeen)})]})]},e.repo))}),(0,s.jsx)("p",{className:"text-[11px] text-muted-foreground",children:"흡수 채택 → PR 초안 + 빌드/테스트 증거는 P2(disarmed) \xb7 merge/재부팅은 대표 HITL."})]})}let p=["dig","backtest","trade","retro","replay","delegate","autopilot"],g={trade:"bg-rose-500/15 text-rose-300 ring-rose-500/30",dig:"bg-sky-500/15 text-sky-200 ring-sky-500/30",backtest:"bg-violet-500/15 text-violet-200 ring-violet-500/30",retro:"bg-amber-500/15 text-amber-200 ring-amber-500/30",replay:"bg-indigo-500/15 text-indigo-200 ring-indigo-500/30",delegate:"bg-emerald-500/15 text-emerald-200 ring-emerald-500/30",autopilot:"bg-fuchsia-500/15 text-fuchsia-200 ring-fuchsia-500/30"};function h(e){let{api:t}=e,[r,a]=(0,n.useState)([]),[i,o]=(0,n.useState)(null),[d,c]=(0,n.useState)(!0),u=(0,n.useCallback)(async()=>{c(!0);try{var e;let r=await t.autonomy(80,null!=i?i:void 0);a(null!=(e=r.actions)?e:[])}catch(e){}finally{c(!1)}},[t,i]);return(0,n.useEffect)(()=>{u()},[u]),(0,s.jsxs)("div",{className:"space-y-3",children:[(0,s.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,s.jsx)("button",{type:"button",onClick:()=>o(null),className:["rounded px-2 py-0.5 text-xs ring-1",null===i?"bg-primary/20 text-foreground ring-primary/40":"bg-muted text-muted-foreground ring-border"].join(" "),children:"전체"}),p.map(e=>{var t;return(0,s.jsx)("button",{type:"button",onClick:()=>o(e),className:["rounded px-2 py-0.5 text-xs ring-1",i===e?null!=(t=g[e])?t:"bg-primary/20 ring-primary/40":"bg-muted text-muted-foreground ring-border"].join(" "),children:e},e)}),(0,s.jsx)(l.$,{size:"sm",variant:"outline",className:"ml-auto",onClick:()=>void u(),children:"새로고침"})]}),d?(0,s.jsx)("p",{className:"text-sm text-muted-foreground",children:"불러오는 중…"}):0===r.length?(0,s.jsx)("p",{className:"text-sm text-muted-foreground",children:"아직 기록된 자율행동이 없습니다. 자율루프가 돌면 여기에 “무엇을 왜 했나”가 쌓입니다."}):(0,s.jsx)("ul",{className:"space-y-2",children:r.map((e,t)=>{var r;return(0,s.jsxs)("li",{className:"rounded-lg border border-border bg-card/50 p-3",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("span",{className:["rounded px-2 py-0.5 text-xs ring-1",null!=(r=g[e.loop])?r:"bg-muted text-muted-foreground ring-border"].join(" "),children:e.loop}),(0,s.jsx)("span",{className:"text-xs text-muted-foreground",children:function(e){try{return new Intl.DateTimeFormat("ko-KR",{timeZone:"Asia/Seoul",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}).format(new Date(e))}catch(t){return e.slice(5,16)}}(e.ts)}),e.importance>=8&&(0,s.jsx)("span",{className:"rounded bg-rose-500/15 px-1.5 text-[10px] text-rose-300 ring-1 ring-rose-500/30",children:"중요"})]}),(0,s.jsx)("pre",{className:"mt-1.5 whitespace-pre-wrap font-sans text-sm text-foreground/90",children:e.text})]},"".concat(e.ts,"-").concat(t))})})]})}var f=r(45609),b=r.n(f),v=r(86542);let y={ok:{icon:"✅",tone:"text-emerald-300",label:"정상"},done:{icon:"✅",tone:"text-emerald-300",label:"완료"},stale:{icon:"⏰",tone:"text-amber-300",label:"밀림"},error:{icon:"❌",tone:"text-rose-400",label:"실패"},active:{icon:"\uD83D\uDD35",tone:"text-sky-300",label:"실행중"},pending:{icon:"⏳",tone:"text-muted-foreground",label:"대기"}},j={cron:"크론",task:"태스크",action:"자율행동"};function N(e){var t;let{counts:r,total:n}=e,a=Object.entries(null!=r?r:{}).filter(e=>{let[,t]=e;return t>0});if(!n||0===n)return(0,s.jsx)("span",{className:"text-xs text-muted-foreground",children:"태스크 0"});let l=null!=(t=null==r?void 0:r.done)?t:0;return(0,s.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,s.jsxs)("span",{className:"text-xs text-muted-foreground",children:["태스크 ",l,"/",n]}),a.map(e=>{let[t,r]=e;return(0,s.jsxs)("span",{className:"text-[11px] text-muted-foreground",children:[t,":",r]},t)})]})}function k(e){let{r:t}=e;if(!t||0===t.total)return(0,s.jsx)("span",{className:"text-xs text-muted-foreground",children:"파생 0"});let r=(e,t)=>e>0?(0,s.jsxs)("span",{className:["text-xs",y[t].tone].join(" "),children:[y[t].icon,e]},t):null;return(0,s.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,s.jsxs)("span",{className:"text-xs text-muted-foreground",children:["파생 ",t.total]}),r(t.ok,"ok"),r(t.stale,"stale"),r(t.error,"error"),r(t.active,"active"),r(t.pending,"pending")]})}function w(e){let{api:t,m:r,onDone:a}=e,i="scheduler"===r.model,o="task"===r.model,[d,c]=(0,n.useState)(""),[u,m]=(0,n.useState)(""),[x,p]=(0,n.useState)(""),[g,h]=(0,n.useState)(null),[f,b]=(0,n.useState)(null);if(!i&&!o)return(0,s.jsxs)("p",{className:"text-xs text-muted-foreground",children:["이 실행모델(",r.model,")은 지속 잡을 만들지 않아 구체화 대상이 아닙니다."]});let v=async e=>{h(e),b(null);let s=i?{command:d.trim(),...u.trim()?{cron:u.trim()}:{}}:{...x.trim()?{prompt:x.trim()}:{}};try{let l=await t.missionAction(r.id,e,s);if(l.error)b("오류: ".concat(l.error));else{var n;b("arm"===e?"승인\xb7arming ON 시 자동 실행":"구체화 완료(".concat(null!=(n=l.engine)?n:"",")")),a()}}catch(e){b(e instanceof Error?e.message:String(e))}finally{h(null)}};return(0,s.jsxs)("div",{className:"mt-3 space-y-2 rounded-md border border-border bg-background/50 p-2.5",children:[i&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("input",{value:d,onChange:e=>c(e.target.value),placeholder:"실행할 명령 (예: scripts/foo.ts) — 필수",className:"w-full rounded border border-border bg-background px-2 py-1 text-xs"}),(0,s.jsx)("input",{value:u,onChange:e=>m(e.target.value),placeholder:"cron (선택 \xb7 비우면 골에서 추론)",className:"w-full rounded border border-border bg-background px-2 py-1 font-mono text-xs"})]}),o&&(0,s.jsx)("input",{value:x,onChange:e=>p(e.target.value),placeholder:"태스크 내용 (선택 \xb7 비우면 골 사용)",className:"w-full rounded border border-border bg-background px-2 py-1 text-xs"}),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)(l.$,{size:"sm",disabled:!!g||i&&!d.trim(),onClick:()=>void v("materialize"),children:"materialize"===g?"…":"지금 구체화"}),(0,s.jsx)(l.$,{size:"sm",variant:"outline",disabled:!!g||i&&!d.trim(),onClick:()=>void v("arm"),children:"arm"===g?"…":"승인(arm)"}),f&&(0,s.jsx)("span",{className:"text-xs text-muted-foreground",children:f})]})]})}function S(e){let{api:t,m:r}=e,a=!1===r.isAutopilot,[i,o]=(0,n.useState)(!1),[d,c]=(0,n.useState)(null),[u,m]=(0,n.useState)(!1),x=r.model?v.NE[r.model]:null,p=(0,n.useCallback)(async()=>{m(!0);try{c(await t.trace(r.id))}catch(e){}finally{m(!1)}},[t,r.id]),[g,h]=(0,n.useState)(!1),[f,S]=(0,n.useState)(!1),[C,M]=(0,n.useState)(null),z=!a&&"proposed"===r.status,E=(0,n.useCallback)(async()=>{let e=!i;o(e),!e||d||a||await p()},[i,d,p,a]),I=(0,n.useCallback)(async()=>{h(!0),M(null);try{await t.missionAction(r.id,"cancel"),await p()}catch(e){}finally{h(!1)}},[t,r.id,p]),D=(0,n.useCallback)(async()=>{S(!0),M(null);try{var e;let s=await t.missionAction(r.id,"approve");s.error?M("오류: ".concat(s.error)):M("✅ 승인 — 태스크 ".concat(null!=(e=s.activated)?e:0,"건 실행 시작(ready). 미션 running.")),await p()}catch(e){M(e instanceof Error?e.message:String(e))}finally{S(!1)}},[t,r.id,p]);return(0,s.jsxs)("div",{className:"rounded-lg border border-border bg-card/50",children:[(0,s.jsxs)("button",{type:"button",onClick:()=>void E(),className:"flex w-full items-start gap-3 p-3 text-left",children:[(0,s.jsx)("span",{className:"mt-0.5 text-muted-foreground",children:i?"▾":"▸"}),(0,s.jsxs)("div",{className:"min-w-0 flex-1 space-y-1.5",children:[(0,s.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[a?(0,s.jsx)("span",{className:"rounded bg-slate-500/15 px-2 py-0.5 text-xs font-medium text-slate-300 ring-1 ring-slate-500/30",children:"사람 \xb7 intake"}):x&&(0,s.jsx)("span",{className:["rounded px-2 py-0.5 text-xs font-medium ring-1",x.tone].join(" "),children:x.label}),!a&&"continuous"===r.kind&&(0,s.jsx)("span",{className:"rounded bg-sky-500/15 px-1.5 py-0.5 text-[11px] text-sky-300 ring-1 ring-sky-500/30",children:"상시"}),!a&&"finite"===r.kind&&(0,s.jsx)("span",{className:"rounded bg-violet-500/15 px-1.5 py-0.5 text-[11px] text-violet-300 ring-1 ring-violet-500/30",children:"유한"}),(0,s.jsx)("span",{className:"rounded bg-muted px-1.5 py-0.5 text-[11px] text-muted-foreground ring-1 ring-border",children:r.source}),z?(0,s.jsx)("span",{className:"rounded bg-amber-500/15 px-1.5 py-0.5 text-[11px] font-medium text-amber-300 ring-1 ring-amber-500/40",children:"승인 대기"}):(0,s.jsx)("span",{className:"rounded bg-muted px-1.5 py-0.5 text-[11px] text-muted-foreground ring-1 ring-border",children:r.status}),r.reviewDue&&(0,s.jsx)("span",{className:"rounded bg-amber-500/15 px-1.5 py-0.5 text-[11px] text-amber-300 ring-1 ring-amber-500/30",children:"⚠ 30일+ 리뷰"}),a?(0,s.jsx)(N,{counts:r.taskCounts,total:r.taskCount}):(0,s.jsx)(k,{r:r.derived})]}),(0,s.jsx)("p",{className:"truncate text-sm text-foreground/90",children:r.goal}),(0,s.jsx)("p",{className:"font-mono text-[10px] text-muted-foreground",children:r.id})]})]}),i&&a&&(0,s.jsxs)("div",{className:"border-t border-border px-4 py-3 space-y-2",children:[(0,s.jsx)("p",{className:"text-xs text-muted-foreground",children:"사람이 Intake 로 만든 미션입니다. 실행은 Task 보드에서 진행됩니다."}),(0,s.jsx)(N,{counts:r.taskCounts,total:r.taskCount}),(0,s.jsx)(b(),{href:"/tasks",className:"inline-block text-xs text-primary hover:underline",children:"② 작업 보드에서 보기 →"})]}),i&&!a&&(0,s.jsxs)("div",{className:"border-t border-border px-4 py-3",children:[z&&(0,s.jsxs)("div",{className:"mb-3 space-y-2 rounded-md border border-amber-500/30 bg-amber-500/5 p-3",children:[(0,s.jsx)("p",{className:"text-sm font-medium text-amber-200",children:"자동 분해 완료 \xb7 승인 대기"}),(0,s.jsxs)("p",{className:"text-xs text-muted-foreground",children:["골을 태스크로 자동 구체화했습니다(아직 ",(0,s.jsx)("b",{children:"실행 안 함"}),"). 승인하면 실행이 시작됩니다.","scheduler"===r.model&&" 반복 스케줄은 승인 후 배선됩니다."]}),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)(l.$,{size:"sm",disabled:f||g,onClick:()=>void D(),children:f?"승인 중…":"✅ 승인(실행 시작)"}),(0,s.jsx)(l.$,{size:"sm",variant:"ghost",disabled:f||g,onClick:()=>void I(),className:"text-rose-400 hover:text-rose-300",children:g?"거절 중…":"거절"}),C&&(0,s.jsx)("span",{className:"text-xs text-muted-foreground",children:C})]})]}),u&&(0,s.jsx)("p",{className:"text-xs text-muted-foreground",children:"계보 조회 중…"}),d&&0===d.derived.length&&(0,s.jsx)("p",{className:"text-xs text-muted-foreground",children:d.note}),d&&(0,v.on)(d.derived)&&(0,s.jsxs)(b(),{href:(0,v.on)(d.derived),className:"mb-2 inline-block text-xs text-primary hover:underline","data-mission-schedules":!0,children:["이 미션을 부르는 스케줄 ",d.derived.filter(e=>"cron"===e.kind&&e.id).length," →"]}),d&&d.derived.length>0&&(0,s.jsx)("ul",{className:"space-y-1.5",children:d.derived.map((e,t)=>{let r=y[e.status];return(0,s.jsxs)("li",{className:"flex items-start gap-2 text-sm",children:[(0,s.jsx)("span",{className:r.tone,children:r.icon}),(0,s.jsx)("span",{className:"rounded bg-muted px-1.5 py-0.5 text-[10px] text-muted-foreground ring-1 ring-border",children:j[e.kind]}),(0,s.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,s.jsx)("span",{className:"text-foreground/90",children:e.name}),e.detail&&(0,s.jsx)("span",{className:"ml-2 text-xs text-muted-foreground",children:e.detail})]})]},t)})}),d&&"done"!==r.status&&"proposed"!==r.status&&(0,s.jsxs)("div",{className:"mt-2 flex items-center gap-2",children:[(0,s.jsx)(l.$,{size:"sm",variant:"ghost",disabled:g,onClick:()=>void I(),className:"text-rose-400 hover:text-rose-300",children:g?"종료 중…":"미션 종료(파생 잡 release)"}),"continuous"===r.kind&&(0,s.jsx)("span",{className:"text-[11px] text-muted-foreground",children:"상시 미션 — 종료 전까지 계속 실행"})]}),d&&!z&&(0,s.jsx)(w,{api:t,m:r,onDone:()=>void p()})]})]})}function C(e){let{api:t,onCommitted:r}=e,[a,i]=(0,n.useState)(""),[o,d]=(0,n.useState)(null),[c,u]=(0,n.useState)(!1),[m,x]=(0,n.useState)(!1),[p,g]=(0,n.useState)(null),h=(0,n.useCallback)(async()=>{let e=a.trim();if(e){u(!0),g(null);try{d((await t.triagePreview(e)).triage)}catch(e){g(e instanceof Error?e.message:String(e))}finally{u(!1)}}},[t,a]),f=(0,n.useCallback)(async()=>{let e=a.trim();if(e){x(!0),g(null);try{(await t.commitMission(e,"intake")).missionId?(i(""),d(null),r()):g("미션 생성 실패")}catch(e){g(e instanceof Error?e.message:String(e))}finally{x(!1)}}},[t,a,r]),b=o?v.NE[o.executionModel]:null;return(0,s.jsxs)("div",{className:"space-y-2 rounded-lg border border-border bg-card/40 p-3",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsxs)("span",{className:"text-sm font-medium",children:["골 던지기 ",(0,s.jsx)("span",{className:"text-xs font-normal text-muted-foreground",children:"— 소망을 말하면 미션이 됩니다"})]}),(0,s.jsx)("span",{className:"text-[11px] text-muted-foreground",children:"텔레그램에선 “미션:” 마커로"})]}),(0,s.jsx)("textarea",{value:a,onChange:e=>i(e.target.value),onKeyDown:e=>{"Enter"===e.key&&(e.metaKey||e.ctrlKey)&&h()},placeholder:"예: 삼성전자 급락하면 매매 검토 / 이 주제 끝까지 파봐 / 매일 아침 반도체 뉴스 정리",className:"min-h-[60px] w-full resize-y rounded-md border border-border bg-background px-3 py-2 text-sm"}),(0,s.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,s.jsx)(l.$,{onClick:()=>void h(),disabled:c||!a.trim(),size:"sm",variant:"outline",children:c?"분류 중…":"Triage (⌘↵)"}),(0,s.jsx)(l.$,{onClick:()=>void f(),disabled:m||!a.trim(),size:"sm",children:m?"커밋 중…":"미션 커밋 →"}),o&&b&&(0,s.jsxs)("span",{className:"flex flex-wrap items-center gap-1.5 text-xs",children:[(0,s.jsx)("span",{className:["rounded px-2 py-0.5 ring-1",b.tone].join(" "),children:b.label}),(0,s.jsx)("span",{className:"rounded bg-muted px-1.5 py-0.5 text-muted-foreground ring-1 ring-border",children:"heavy"===o.tier?"무거움":"가벼움"}),(0,s.jsx)("span",{className:"text-muted-foreground",children:o.rationale})]}),p&&(0,s.jsx)("span",{className:"text-xs text-rose-400",children:p})]})]})}function M(e){var t,r;let{api:a}=e,[i,o]=(0,n.useState)(null),[d,c]=(0,n.useState)(null),[u,m]=(0,n.useState)(!1),x=(0,n.useCallback)(async()=>{m(!0),c(null);try{let e=[...(await a.missionsUnified()).missions].sort((e,t)=>e.createdAt<t.createdAt?1:-1);o(e)}catch(e){c(e instanceof Error?e.message:String(e))}finally{m(!1)}},[a]);(0,n.useEffect)(()=>{x()},[x]);let p=null!=(t=null==i?void 0:i.filter(e=>e.isAutopilot).length)?t:0,g=(null!=(r=null==i?void 0:i.length)?r:0)-p;return(0,s.jsxs)("div",{className:"space-y-3",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsxs)("p",{className:"text-sm text-muted-foreground",children:["모든 미션(사람 intake + 자율)의 계보\xb7실행 상태.",i&&(0,s.jsxs)("span",{className:"ml-1 text-[11px]",children:["자율 ",p," \xb7 사람 ",g]})]}),(0,s.jsx)(l.$,{onClick:()=>void x(),disabled:u,size:"sm",variant:"outline",children:u?"…":"새로고침"})]}),(0,s.jsx)(C,{api:a,onCommitted:()=>void x()}),d&&(0,s.jsx)("p",{className:"text-xs text-rose-400",children:d}),i&&0===i.length&&(0,s.jsx)("p",{className:"rounded-lg border border-dashed border-border p-6 text-center text-sm text-muted-foreground",children:"아직 미션이 없습니다. 아래 “골 던지기”로 자율 미션을 만들거나, Intake 에서 메모를 포착하세요."}),i&&i.length>0&&(0,s.jsx)("div",{className:"space-y-2",children:i.map(e=>(0,s.jsx)(S,{api:a,m:e},e.id))})]})}var z=r(5344);let E=[{id:"missions",label:"Missions"},{id:"repo",label:"Repo Watch"},{id:"autonomy",label:"자율행동"},{id:"loops",label:"루프 오케스트라"}];function I(e){var t;let{arming:r}=e;if(!r)return null;let n=(e,t)=>(0,s.jsxs)("span",{className:["rounded px-2 py-0.5 text-xs ring-1",e?"bg-emerald-500/15 text-emerald-300 ring-emerald-500/30":"bg-muted text-muted-foreground ring-border"].join(" "),children:[t," ",e?"ON":"OFF"]});return(0,s.jsxs)("div",{className:"flex flex-wrap items-center gap-2 text-xs text-muted-foreground",children:[(0,s.jsx)("span",{children:"자율 경계:"}),n(r.absorb,"흡수 PR초안(".concat(r.absorbBackend,")")),n(r.merge,"mandate merge"),n(r.reboot,"재부팅"),n(null!=(t=r.materialize)&&t,"자율 구체화"),(0,s.jsx)("span",{className:"text-[11px]",children:"\xb7 재부팅은 항상 HITL \xb7 기본 disarmed(fail-closed)"})]})}function D(){let{client:e}=(0,a.Q)(),t=(0,n.useMemo)(()=>new v.Yt(e),[e]),[r,l]=(0,n.useState)("missions"),[i,o]=(0,n.useState)(null);return(0,n.useEffect)(()=>{let e=!0;return t.arming().then(t=>{e&&o(t.arming)}).catch(()=>{}),()=>{e=!1}},[t]),(0,s.jsxs)("div",{className:"mx-auto max-w-[1400px] px-4 pt-4",children:[(0,s.jsx)("div",{className:"mb-3",children:(0,s.jsx)(z.r,{active:"autopilot"})}),(0,s.jsxs)("div",{className:"mb-3 space-y-2",children:[(0,s.jsxs)("h1",{className:"text-lg font-semibold",children:["Missions ",(0,s.jsx)("span",{className:"text-sm font-normal text-muted-foreground",children:"미션 지휘 센터 \xb7 Autopilot"})]}),(0,s.jsx)("p",{className:"text-sm text-muted-foreground",children:"미션(사람 + 자율)의 계보\xb7상태\xb7자율행동. 아래 “골 던지기” 또는 텔레그램 “미션:” 마커로 소망을 던지면 미션이 됩니다."}),(0,s.jsx)(I,{arming:i})]}),(0,s.jsx)("div",{className:"flex gap-1 border-b border-border",children:E.map(e=>(0,s.jsx)("button",{type:"button",onClick:()=>l(e.id),className:["-mb-px border-b-2 px-4 py-2 text-sm font-medium transition-colors",r===e.id?"border-primary text-foreground":"border-transparent text-muted-foreground hover:text-foreground"].join(" "),children:e.label},e.id))}),(0,s.jsxs)("div",{className:"py-4",children:["missions"===r&&(0,s.jsx)(M,{api:t}),"repo"===r&&(0,s.jsx)(x,{api:t}),"autonomy"===r&&(0,s.jsx)(h,{api:t}),"loops"===r&&(0,s.jsx)(m,{})]})]})}function A(){return(0,s.jsx)(D,{})}},38519:(e,t,r)=>{"use strict";r.d(t,{C:()=>d,DaemonProvider:()=>c,Q:()=>u});var s=r(41121),n=r(91269),a=r(49536),l=r(27813),i=r(45012),o=r(51215);let d=(0,n.createContext)(null);function c(e){let{children:t}=e,r={baseUrl:"",token:"",provider:""},[c,u]=(0,n.useState)(r),[m,x]=(0,n.useState)(""),[p]=(0,n.useState)(()=>new i.ki(r));(0,n.useEffect)(()=>{let e=(0,a.Fp)();u(e),p.updateConfig(e),x((0,l.oD)()),(0,o.cY)("webterm.provider.daemon.init",{baseUrl:e.baseUrl,hasToken:!!e.token})},[p]),(0,n.useEffect)(()=>{let e=e=>{if("elanous.daemon.token"===e.key||"elanous.nexus.baseUrl"===e.key){let t=(0,a.Fp)();p.updateConfig(t),u(t),(0,o.cY)("webterm.provider.daemon.config-cross-tab",{key:e.key,hasToken:!!t.token});return}"elanous.daemon.sessionId"===e.key&&e.newValue&&x(t=>t===e.newValue?t:((0,o.cY)("webterm.provider.daemon.session-cross-tab",{previous:t||"(empty)",next:e.newValue}),e.newValue))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)},[p]);let g=e=>{u(t=>{let r={...t,...e};return(0,a.Qc)(e),p.updateConfig(r),(0,o.cY)("webterm.provider.daemon.config-update",{keys:Object.keys(e)}),r})},h=e=>{x(e),localStorage.setItem("elanous.daemon.sessionId",e),(0,o.cY)("webterm.provider.daemon.session-set",{sessionId:e})},f=(0,n.useMemo)(()=>({config:c,setConfig:g,client:p,sessionId:m,setSessionId:h}),[c,p,m]);return(0,s.jsx)(d.Provider,{value:f,children:t})}function u(){let e=(0,n.useContext)(d);if(!e)throw Error("useDaemon must be used inside <DaemonProvider>");return e}},72030:(e,t,r)=>{"use strict";r.d(t,{$:()=>o});var s=r(41121),n=r(72524),a=r(49155),l=r(82157);let i=(0,a.F)("group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",outline:"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",ghost:"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",destructive:"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",icon:"size-8","icon-xs":"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg","icon-lg":"size-9"}},defaultVariants:{variant:"default",size:"default"}});function o(e){let{className:t,variant:r="default",size:a="default",...o}=e;return(0,s.jsx)(n.$,{"data-slot":"button",className:(0,l.cn)(i({variant:r,size:a,className:t})),...o})}},82157:(e,t,r)=>{"use strict";r.d(t,{cn:()=>a});var s=r(3511),n=r(97043);function a(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return(0,n.QP)((0,s.$)(t))}},86542:(e,t,r)=>{"use strict";function s(e){let t=e.filter(e=>"cron"===e.kind&&e.id).map(e=>e.id);return t.length?"/scheduler?ids=".concat(t.map(encodeURIComponent).join(",")):null}r.d(t,{NE:()=>o,Yt:()=>i,on:()=>s});let n=["task","goal-loop","single-shot"],a=["scheduler","monitor-trigger"];function l(e){var t,r,s,l,i,o,d;let c=e.autopilot,u=null!=(t=null==c?void 0:c.executionModel)?t:null;return{id:e.id,goal:e.title||e.description||e.id,source:null!=(r=null==c?void 0:c.origin)?r:"human",status:null!=(s=null==c?void 0:c.apmStatus)?s:e.status,model:u,tier:null!=(l=null==c?void 0:c.tier)?l:null,engine:null!=(i=null==c?void 0:c.engine)?i:null,kind:(d=null!=(o=null==c?void 0:c.executionModel)?o:null)&&n.includes(d)?"finite":d&&a.includes(d)?"continuous":"other",reviewDue:!1,createdAt:new Date(e.createdAt).toISOString(),isAutopilot:null!=c,toxStatus:e.status,taskCount:e.taskCount,taskCounts:e.taskStatusCounts}}class i{async triagePreview(e,t){return this.client.fetchJson("/v1/autopilot/triage-preview",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({goal:e,...t?{category:t}:{}})})}async commitMission(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"intake",r=arguments.length>2?arguments[2]:void 0;return this.client.fetchJson("/v1/autopilot/triage-preview",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({goal:e,commit:!0,source:t,...r?{category:r}:{}})})}async missions(e,t){let r=new URLSearchParams({...e?{status:e}:{},...t?{source:t}:{}}).toString();return this.client.fetchJson("/v1/autopilot/missions".concat(r?"?".concat(r):""))}async missionsUnified(e){var t,r;let s=new URLSearchParams({...e?{status:e}:{}}).toString(),n=await this.client.fetchJson("/v1/missions".concat(s?"?".concat(s):"")),a=null!=(t=n.missions)?t:[];return{ok:!0,total:null!=(r=n.total)?r:a.length,missions:a.map(l)}}async trace(e){return this.client.fetchJson("/v1/autopilot/trace?id=".concat(encodeURIComponent(e)))}async missionArcMap(){var e,t,r;let s=await this.client.fetchJson("/v1/missions"),n=new Map;for(let a of null!=(e=s.missions)?e:[]){let e=null==(t=a.autopilot)?void 0:t.arcs;e&&e.length>0&&n.set(a.id,{apmStatus:null==(r=a.autopilot)?void 0:r.apmStatus,arcs:e})}return n}async missionAction(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this.client.fetchJson("/v1/autopilot/mission-action",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({id:e,action:t,...r})})}async repoWatch(){return this.client.fetchJson("/v1/autopilot/repo-watch")}async autonomy(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:50,t=arguments.length>1?arguments[1]:void 0,r=new URLSearchParams({limit:String(e),...t?{loop:t}:{}});return this.client.fetchJson("/v1/autopilot/autonomy?".concat(r.toString()))}async arming(){return this.client.fetchJson("/v1/autopilot/arming")}constructor(e){this.client=e}}let o={task:{label:"작업 분해",tone:"bg-sky-500/15 text-sky-200 ring-sky-500/30"},"goal-loop":{label:"목표 루프",tone:"bg-violet-500/15 text-violet-200 ring-violet-500/30"},scheduler:{label:"스케줄러",tone:"bg-emerald-500/15 text-emerald-200 ring-emerald-500/30"},"monitor-trigger":{label:"감시 트리거",tone:"bg-amber-500/15 text-amber-200 ring-amber-500/30"},hybrid:{label:"하이브리드",tone:"bg-fuchsia-500/15 text-fuchsia-200 ring-fuchsia-500/30"},fanout:{label:"병렬 팬아웃",tone:"bg-cyan-500/15 text-cyan-200 ring-cyan-500/30"},"single-shot":{label:"즉답",tone:"bg-muted text-muted-foreground ring-border"},"hitl-delegate":{label:"HITL 위임",tone:"bg-rose-500/15 text-rose-200 ring-rose-500/30"}}}},e=>{e.O(0,[2977,216,7990,6062,5012,2367,6725,7358],()=>e(e.s=23570)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7081],{19528:(e,t,s)=>{"use strict";s.d(t,{Er:()=>r,cj:()=>c,dc:()=>l,yR:()=>i});let a=/^(oauth\.|harness\.decision|llm\.router)/;function r(e){let t=[],s=e=>{"string"==typeof e&&e.trim()&&!t.includes(e.trim())&&t.push(e.trim())};for(let t of e){var r;let e=null!=(r=t.data)?r:{};if(t.category.startsWith("oauth.")){for(let t of["from","to","name","account"])s(e[t]);if(Array.isArray(e.usage))for(let t of e.usage)s(null==t?void 0:t.name);continue}if(a.test(t.category))for(let t of(s(e.account),["what","why","reason"])){let a=e[t];if("string"==typeof a)for(let e of a.matchAll(/계정\s+([A-Za-z0-9][\w.-]*)/g))s(e[1])}}return t}function n(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function l(e){let t=new Map(e.map((e,t)=>[e,"account-".concat(t+1)])),s=e.length?RegExp("(^|[^\\w-])(".concat(e.map(n).sort((e,t)=>t.length-e.length).join("|"),")(?![\\w-])"),"g"):null,a=new Map;return(e,r)=>{let n=e.replace(/\b[a-z0-9-]+\.tail[0-9a-f]+\.ts\.net\b/gi,"tailnet-host").replace(/\bmsb\d+\b/gi,e=>(e=>{let t=e.toLowerCase();a.has(t)||a.set(t,"remote-".concat(a.size+1));let s=a.get(t);return e===e.toUpperCase()?s.toUpperCase():s})(e)).replace(/\bmbp\b/gi,e=>e===e.toUpperCase()?"LOCAL":"local").replace(/\/Users\/[^/\s"']+/g,"~").replace(/(크레딧|credits?|💳)(\s*[:=]?\s*)[\d][\d,.]*/gi,"$1$2•••").replace(/[\d][\d,.]*(\s*)(크레딧|credits?)/gi,"•••$1$2").replace(/\$\s?[\d][\d,.]*/g,"$•••").replace(/(잔량?|remaining|left)(\s*[:=]?\s*)(?:[A-Za-z0-9][\w.-]*\s+)?\d+(?:\.\d+)?\s?%/gi,"$1$2•••");return r&&s&&(n=n.replace(s,(e,s,a)=>{var r;return"".concat(s).concat(null!=(r=t.get(a))?r:"account")})),n}}function o(e,t){if("string"==typeof e)return t(e);if(Array.isArray(e))return e.map(e=>o(e,t));if(e&&"object"==typeof e){let s={};for(let[a,r]of Object.entries(e))"apiEquivalentUsd"===a||"usd"===a||/credit(s|Balance)?$/i.test(a)||(s[a]=o(r,t));return s}return e}function i(e){let t=l(r(e));return e.map(e=>{let s=a.test(e.category);return{...e,event:t(e.event,!1),data:e.data?o(e.data,e=>t(e,s)):e.data}})}function c(e,t){let s=l(t);return o(e,e=>s(e,!0))}},27813:(e,t,s)=>{"use strict";s.d(t,{Zr:()=>l,f6:()=>r,oD:()=>n});let a="elanous.daemon.sessionId";function r(){return"undefined"!=typeof crypto&&"function"==typeof crypto.randomUUID?crypto.randomUUID():"s-".concat(Date.now().toString(36),"-").concat(Math.random().toString(36).slice(2,10))}function n(){let e=function(){let e=new URLSearchParams(window.location.search).get("session");return e?(localStorage.setItem(a,e),e):localStorage.getItem(a)}();if(e)return e;let t=r();return localStorage.setItem(a,t),t}function l(){let e=r();return localStorage.setItem(a,e),e}},38519:(e,t,s)=>{"use strict";s.d(t,{C:()=>c,DaemonProvider:()=>d,Q:()=>u});var a=s(41121),r=s(91269),n=s(49536),l=s(27813),o=s(45012),i=s(51215);let c=(0,r.createContext)(null);function d(e){let{children:t}=e,s={baseUrl:"",token:"",provider:""},[d,u]=(0,r.useState)(s),[m,p]=(0,r.useState)(""),[f]=(0,r.useState)(()=>new o.ki(s));(0,r.useEffect)(()=>{let e=(0,n.Fp)();u(e),f.updateConfig(e),p((0,l.oD)()),(0,i.cY)("webterm.provider.daemon.init",{baseUrl:e.baseUrl,hasToken:!!e.token})},[f]),(0,r.useEffect)(()=>{let e=e=>{if("elanous.daemon.token"===e.key||"elanous.nexus.baseUrl"===e.key){let t=(0,n.Fp)();f.updateConfig(t),u(t),(0,i.cY)("webterm.provider.daemon.config-cross-tab",{key:e.key,hasToken:!!t.token});return}"elanous.daemon.sessionId"===e.key&&e.newValue&&p(t=>t===e.newValue?t:((0,i.cY)("webterm.provider.daemon.session-cross-tab",{previous:t||"(empty)",next:e.newValue}),e.newValue))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)},[f]);let h=e=>{u(t=>{let s={...t,...e};return(0,n.Qc)(e),f.updateConfig(s),(0,i.cY)("webterm.provider.daemon.config-update",{keys:Object.keys(e)}),s})},x=e=>{p(e),localStorage.setItem("elanous.daemon.sessionId",e),(0,i.cY)("webterm.provider.daemon.session-set",{sessionId:e})},g=(0,r.useMemo)(()=>({config:d,setConfig:h,client:f,sessionId:m,setSessionId:x}),[d,f,m]);return(0,a.jsx)(c.Provider,{value:g,children:t})}function u(){let e=(0,r.useContext)(c);if(!e)throw Error("useDaemon must be used inside <DaemonProvider>");return e}},56023:(e,t,s)=>{Promise.resolve().then(s.bind(s,80191))},80191:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>k});var a=s(41121),r=s(19528);function n(e){return e.map(e=>({...(0,r.cj)(e,[]),taskId:e.taskId,...e.wishReply?{wishReply:{surface:e.wishReply.surface,address:null}}:{}}))}var l=s(91269),o=s(38519);function i(e){var t;for(let t of[e.sections.triage,e.sections.intake]){let e=null==t?void 0:t.data.title;if("string"==typeof e&&e.trim())return e.trim()}return(null==(t=e.apiTitle)?void 0:t.trim())||e.taskId}var c=s(42375);let d={green:"순항",yellow:"진행 중",red:"막힘",done:"완료"},u=["intake","triage","gates","relations","memory","workspace","run","landing","release"];function m(e){return null==e?"—":"string"==typeof e?e:JSON.stringify(e)}function p(e){let{entry:t}=e;return(0,a.jsxs)("details",{className:"mt-2 text-xs",children:[(0,a.jsx)("summary",{className:"cursor-pointer text-muted-foreground",children:"JSON"}),(0,a.jsx)("pre",{className:"mt-2 max-h-64 overflow-auto rounded-lg bg-muted p-2 text-xs whitespace-pre-wrap break-all",children:JSON.stringify(t.data,null,2)})]})}function f(e){let{entry:t}=e,s=new Date(t.ts).toISOString();return(0,a.jsxs)("div",{className:"flex flex-wrap gap-x-3 gap-y-1 text-xs text-muted-foreground",children:[(0,a.jsxs)("span",{children:["Owner: ",t.owner]}),(0,a.jsx)("time",{dateTime:s,children:s})]})}function h(e){var t,s,r;let{card:n,placements:o,onClose:c,publicCapture:h=!1}=e,[x,g]=(0,l.useState)(""),[b,y]=(0,l.useState)(!1),[w,k]=(0,l.useState)(null),v=async e=>{if(e.preventDefault(),!(!c||!x.trim()||/[\r\n]/.test(x))&&!b){y(!0),k(null);try{await c(x.trim())}catch(e){k(e instanceof Error?e.message:String(e))}finally{y(!1)}}},j=null==(t=n.sections.gates)?void 0:t.data;return(0,a.jsxs)("section",{"aria-label":"Task card detail",className:"min-w-0 space-y-4 rounded-2xl border border-border bg-card p-4",children:[(0,a.jsxs)("header",{children:[(0,a.jsx)("h2",{className:"text-lg font-semibold",children:i(n)}),(0,a.jsx)("p",{className:"break-all text-xs text-muted-foreground",children:n.taskId}),"closed"===n.status?(0,a.jsxs)("p",{role:"status",children:["닫힘 \xb7 ",null!=(s=n.closedReason)?s:"사유 없음"]}):!h&&c?(0,a.jsxs)("form",{onSubmit:v,className:"mt-3 flex flex-wrap items-end gap-2",children:[(0,a.jsxs)("label",{className:"text-sm",children:["닫기 사유 (한 줄)",(0,a.jsx)("input",{type:"text",required:!0,value:x,onChange:e=>g(e.target.value),className:"block rounded-md border border-border bg-background px-2 py-1"})]}),(0,a.jsx)("button",{type:"submit",disabled:b||!x.trim()||/[\r\n]/.test(x),className:"rounded-md border border-border px-3 py-1 text-sm",children:b?"닫는 중…":"닫기"}),w&&(0,a.jsx)("p",{role:"alert",className:"text-sm text-destructive",children:w})]}):null]}),void 0!==n.wishReply&&(0,a.jsxs)("section",{"aria-label":"Wish reply destination",className:"rounded-xl border border-border p-3 text-sm",children:[(0,a.jsx)("h3",{className:"mb-1 font-semibold",children:"어디로 회신하나"}),(0,a.jsx)("p",{className:"break-all",children:n.wishReply?"".concat(null!=(r=({telegram:"텔레그램 대화",pwa:"PWA",tui:"TUI",linear:"Linear"})[n.wishReply.surface])?r:n.wishReply.surface).concat(n.wishReply.address?" \xb7 ".concat(n.wishReply.address):""):"회신 주소 없음"})]}),void 0!==n.wishReply&&(0,a.jsxs)("section",{"aria-label":"Wish reply history",className:"rounded-xl border border-border p-3 text-sm",children:[(0,a.jsx)("h3",{className:"mb-1 font-semibold",children:"회신 이력"}),(0,a.jsx)("p",{className:"text-muted-foreground",children:"카드 원장에는 회신 발송 이력이 기록되지 않습니다"})]}),o&&(0,a.jsxs)("p",{className:"overflow-x-auto whitespace-nowrap text-sm","aria-label":"Wish placement and progress",children:["배치 \xb7 ",o.length?o.map(e=>{let{cellId:t,cellTitle:s,version:a,status:r}=e;return"".concat(t," ").concat(s," \xb7 ").concat(a,"판 \xb7 ").concat(d[r])}).join(" / "):"아직 배치되지 않음"]}),j&&(0,a.jsxs)("p",{className:"overflow-x-auto whitespace-nowrap text-sm","aria-label":"Gate decisions",children:["Gate \xb7 budget: ",m(j.budget)," \xb7 location: ",m(j.location)]}),u.map(e=>{let t=n.sections[e];return t?(0,a.jsxs)("section",{"aria-label":"".concat(e," section"),className:"rounded-xl border border-border p-3",children:[(0,a.jsx)("h3",{className:"mb-1 text-sm font-semibold capitalize",children:e}),(0,a.jsx)(f,{entry:t}),(0,a.jsx)(p,{entry:t})]},e):null}),(0,a.jsxs)("section",{"aria-label":"Incidents",className:"space-y-2",children:[(0,a.jsxs)("h3",{className:"text-sm font-semibold",children:["Incidents (",n.incidents.length,")"]}),n.incidents.length?(0,a.jsx)("ol",{className:"space-y-2",children:n.incidents.map(e=>(0,a.jsxs)("li",{className:"rounded-xl border border-border p-3",children:[(0,a.jsx)(f,{entry:e}),(0,a.jsx)(p,{entry:e})]},e.key))}):(0,a.jsx)("p",{className:"text-xs text-muted-foreground",children:"No incidents."})]})]})}let x=["steward","execution","landing","release","done"],g=new Set(["intake","triage","gates","relations","memory","workspace","run","landing","release","incidents"]);function b(e){let t=[],s=Date.parse(e.createdAt),a=e.sections.find(e=>"intake:reply:0"===e.key),r=null;if(a)try{let e=JSON.parse(a.content);if(e&&"object"==typeof e&&!Array.isArray(e)){let{surface:t,address:s}=e;"string"==typeof t&&("string"==typeof s||null===s)&&(r={surface:t,address:s})}}catch(e){}for(let a of e.sections){let r;if(!g.has(a.key))continue;try{let e=JSON.parse(a.content);r=e&&"object"==typeof e&&!Array.isArray(e)?e:{content:a.content}}catch(e){r={content:a.content}}let n=Date.parse(a.createdAt);t.push({taskId:e.id,section:a.key,key:"".concat(a.key,":").concat(a.createdAt,":").concat(t.length),owner:a.owner,ts:Number.isFinite(n)?n:s,data:r,..."string"==typeof r.runId?{runId:r.runId}:{}})}if(0===t.length&&t.push({taskId:e.id,section:"triage",key:"api:title",owner:"task-card API",ts:s,data:{title:e.title}}),"closed"===e.status){let a=t.filter(e=>"release"===e.section).sort((e,t)=>t.ts-e.ts)[0];t.push({taskId:e.id,section:"release",key:"api:closed",owner:"task-card API",ts:Math.max(s,...t.map(e=>e.ts)),data:{...null==a?void 0:a.data,status:"done"}})}return{...function(e){let t,s=e[0];if(!s)return null;let a={},r=[],n=new Set,l=s.ts,o=-1/0;for(let i of e)if(!(i.taskId!==s.taskId||n.has(i.key)))if(n.add(i.key),l=Math.max(l,i.ts),i.runId&&i.ts>=o&&(t=i.runId,o=i.ts),"incidents"===i.section)r.push(i);else{let e=a[i.section];(!e||i.ts>=e.ts)&&(a[i.section]=i)}return{taskId:s.taskId,sections:a,incidents:r,updatedAt:l,...t?{runId:t}:{}}}(t),apiTitle:e.title,status:e.status,...void 0===e.closedReason?{}:{closedReason:e.closedReason},...e.goalId.startsWith("wish:")?{wishReply:r}:{}}}function y(e){let{cards:t,selectedId:s,onSelect:r,selectedCard:n,detailError:l,placements:o,onCloseCard:c,publicCapture:d}=e,u=(null==n?void 0:n.taskId)===s?n:null;return(0,a.jsxs)("div",{className:"space-y-4 p-4",children:[(0,a.jsx)("h1",{className:"text-xl font-semibold",children:"보드"}),(0,a.jsx)("div",{className:"grid gap-3 md:grid-cols-2 xl:grid-cols-5",children:x.map(e=>(0,a.jsxs)("section",{"aria-label":"".concat(e," column"),className:"min-w-0 space-y-2 rounded-xl border border-border p-3",children:[(0,a.jsx)("h2",{className:"text-sm font-semibold capitalize",children:e}),t.filter(t=>(function(e){var t;let s=null==(t=e.sections.release)?void 0:t.data;return(null==s?void 0:s.status)==="done"||(null==s?void 0:s.status)==="completed"?"done":s?"release":e.sections.landing?"landing":e.sections.run||e.sections.workspace||e.sections.gates||e.sections.relations||e.sections.memory?"execution":"steward"})(t)===e).map(e=>{var t,n;return(0,a.jsxs)("button",{type:"button",onClick:()=>r(e.taskId),"aria-pressed":s===e.taskId,className:"w-full rounded-lg border border-border bg-card p-3 text-left text-sm hover:bg-accent/40",children:[(0,a.jsx)("span",{className:"block font-medium",children:i(e)}),(0,a.jsx)("span",{className:"block text-xs text-muted-foreground",children:(0,a.jsx)("time",{dateTime:new Date(e.updatedAt).toISOString(),title:new Date(e.updatedAt).toLocaleString(),children:(t=function(e){let t=new Map;for(let a of e.incidents){var s;let e=null!=(s=a.data.incidentId)?s:a.data.id,r="string"==typeof e&&e.trim()?e:a.key,n=t.get(r);(!n||a.ts>=n.ts)&&t.set(r,a)}return Array.from(t.values()).filter(e=>"closed"!==e.data.status&&"resolved"!==e.data.status).length}(e),n=Date.now(),[...t>0?["사고 ".concat(t)]:[],...e.runId?["런 ".concat(e.runId.replace(/^run-/,"").slice(0,8))]:[],function(e,t,s){let a=Math.floor((t-e)/6e4);if(!Number.isFinite(a)||a<1)return"방금";if(a<60)return"".concat(a,"분 전");if(a<1440)return"".concat(Math.floor(a/60),"시간 전");let r=new Intl.DateTimeFormat("ko-KR",{month:"numeric",day:"numeric",hour:"2-digit",minute:"2-digit",hour12:!1,...s?{timeZone:s}:{}}).formatToParts(new Date(e)),n=e=>{var t,s;return null!=(s=null==(t=r.find(t=>t.type===e))?void 0:t.value)?s:""};return"".concat(n("month"),"/").concat(n("day")," ").concat(n("hour"),":").concat(n("minute"))}(e.updatedAt,n,void 0)]).join(" \xb7 ")})})]},e.taskId)})]},e))}),s&&(0,a.jsxs)("aside",{className:"max-w-3xl space-y-2","aria-label":"Selected card",children:[(0,a.jsx)("button",{type:"button",onClick:()=>r(null),"aria-label":"Close card detail",className:"text-sm text-muted-foreground",children:"Close"}),u?(0,a.jsx)(h,{card:u,placements:o,onClose:c,publicCapture:d}):(0,a.jsx)("p",{role:"status",children:null!=l?l:"Loading card detail…"})]})]})}function w(){let{config:e}=(0,o.Q)(),t=(0,l.useMemo)(()=>e.baseUrl?(0,c.xX)({baseUrl:e.baseUrl,...e.token?{token:e.token}:{}}):null,[e.baseUrl,e.token]),[s,i]=(0,l.useState)([]),[d,u]=(0,l.useState)(null),[m,p]=(0,l.useState)(null),[f,h]=(0,l.useState)(void 0),[x,g]=(0,l.useState)(null),[w,k]=(0,l.useState)(null),[v,j]=(0,l.useState)(!1);(0,l.useEffect)(()=>{"public"===new URLSearchParams(window.location.search).get("capture")&&j(!0)},[]);let N=(0,l.useMemo)(()=>v?n(s):s,[s,v]),I=v&&m?n([m])[0]:m,S=v&&f?(0,r.cj)(f,[]):f;(0,l.useEffect)(()=>{let e=!1;if(i([]),u(null),p(null),h(void 0),g(null),!t)return void k("Connect to NEXUS to load task cards.");k(null);let s=()=>t.getTaskCards().then(t=>{let{cards:s}=t;e||(i(s.map(b)),k(null))}).catch(t=>{e||k(t instanceof c.Iu&&404===t.status?"Task cards are not available yet (pre-E1).":t instanceof Error?t.message:String(t))});s();let a=setInterval(()=>{s()},1e4);return()=>{e=!0,clearInterval(a)}},[t]),(0,l.useEffect)(()=>{if(!t||!d)return;let e=!1;return p(null),h(void 0),g(null),t.getTaskCard(d).then(t=>{let{card:s,placements:a}=t;e||(h(a),p(b(s)))}).catch(t=>{e||g(t instanceof Error?t.message:String(t))}),()=>{e=!0}},[t,d]);let C=async e=>{if(!t||!d||v)throw Error("Card close unavailable");let{card:s}=await t.closeTaskCard(d,e);p(e=>(null==e?void 0:e.taskId)===d?b(s):e),i(e=>e.map(e=>e.taskId===s.id?b(s):e))};return(0,a.jsxs)(a.Fragment,{children:[w&&(0,a.jsx)("p",{role:"status",className:"p-4 text-sm text-muted-foreground",children:w}),(0,a.jsx)(y,{cards:N,selectedId:d,selectedCard:I,detailError:x,placements:S,onSelect:e=>{(null===e||d!==e)&&(p(null),h(void 0),g(null),u(e))},onCloseCard:C,publicCapture:v})]})}function k(){return(0,a.jsx)(w,{})}}},e=>{e.O(0,[5012,2375,2367,6725,7358],()=>e(e.s=56023)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7955],{74715:(e,t,s)=>{"use strict";s.d(t,{BotlabPageContent:()=>h});var r,l=s(41121),a=s(91269);let o=(null!=(r=s(11518).env.NEXT_PUBLIC_ELANOUS_BOTLAB_HOST)?r:"").trim(),n="elanous.botlab.wallHost",d=/^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i;function i(e){return e.length>0&&e.length<=253&&d.test(e)}function c(e){var t;let{search:s,remembered:r=null}=e,d=(0,a.useMemo)(()=>(function(e){var t,s;let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,l=null;try{l=new URLSearchParams(e).get("host")}catch(e){l=null}let a=null!=(t=null==l?void 0:l.trim())?t:"";if(""!==a&&i(a))return{host:a,source:"query",rejected:null};let n=""===a?null:a,d=null!=(s=null==r?void 0:r.trim())?s:"";return""!==d&&i(d)?{host:d,source:"remembered",rejected:n}:""!==o&&i(o)?{host:o,source:"default",rejected:n}:{host:"",source:"unset",rejected:n}})(s,r),[s,r]),c="unset"===d.source?null:(t=d.host,"https://".concat(t).concat("/bot3/bot-wall.html"));return(0,a.useEffect)(()=>{if("query"===d.source)try{window.localStorage.setItem(n,d.host)}catch(e){}},[d.source,d.host]),(0,l.jsxs)("main",{className:"mx-auto flex w-full max-w-6xl flex-col gap-6 px-6 py-10 sm:px-10","data-testid":"botlab-panel",children:[(0,l.jsxs)("header",{children:[(0,l.jsx)("p",{className:"text-xs font-semibold uppercase tracking-[0.18em] text-muted-foreground",children:"Bot screens"}),(0,l.jsx)("h1",{className:"mt-2 text-3xl font-bold",children:"Botlab"}),(0,l.jsxs)("p",{className:"mt-2 max-w-3xl text-sm text-muted-foreground",children:["Live noVNC screens for the bots, served through Tailscale. One document holds all four sessions, so the VNC password is asked ",(0,l.jsx)("strong",{children:"once"}),", not four times."]}),(0,l.jsx)("p",{className:"mt-2 max-w-3xl text-sm text-muted-foreground",children:"View-only by default. This surface cannot send commands or control the bots."})]}),(0,l.jsxs)("section",{className:"rounded-xl border border-border bg-card p-4","aria-label":"Wall address",children:[(0,l.jsx)("h2",{className:"text-sm font-semibold",children:"Wall address"}),(0,l.jsx)("p",{className:"mt-1 break-all font-mono text-xs text-muted-foreground","data-testid":"botlab-wall-url",children:null!=c?c:"(no host configured)"}),(0,l.jsx)("p",{className:"mt-2 text-xs text-muted-foreground","data-testid":"botlab-host-source",children:"query"===d.source?"Host came from the ?host= query parameter (remembered on this device).":"remembered"===d.source?"Host is the one remembered on this device; override it with ?host=<tailnet-name>.":"default"===d.source?"Host is the build default (NEXT_PUBLIC_ELANOUS_BOTLAB_HOST); override it with ?host=<tailnet-name>.":"No wall host is configured. Open this page once with ?host=<the VM tailnet name> — it is remembered on this device."}),null!==d.rejected&&(0,l.jsxs)("p",{role:"alert",className:"mt-2 text-xs text-destructive","data-testid":"botlab-host-rejected",children:["Ignored ?host=",d.rejected," — not a valid hostname."]}),null!==c&&(0,l.jsxs)("p",{className:"mt-3 text-xs text-muted-foreground",children:[(0,l.jsx)("a",{className:"underline",href:c,target:"_blank",rel:"noreferrer","data-testid":"botlab-open-tab",children:"Open the wall in a new tab"})," — ","use this if the embedded frame stays blank."]})]}),null!==c&&(0,l.jsx)("section",{"aria-label":"Bot screen wall",children:(0,l.jsx)("iframe",{src:c,title:"Bot screen wall","data-testid":"botlab-wall-frame",className:"h-[70vh] w-full rounded-xl border border-border bg-background"})}),(0,l.jsxs)("section",{className:"rounded-xl border border-border bg-card p-5","aria-label":"If the wall is blank",children:[(0,l.jsx)("h2",{className:"text-sm font-semibold",children:"If the wall stays blank"}),(0,l.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:"A blank frame is not necessarily a broken bot. There are three separate reasons, with different fixes:"}),(0,l.jsxs)("ol",{className:"mt-3 list-decimal space-y-2 pl-5 text-sm text-muted-foreground",children:[(0,l.jsxs)("li",{children:[(0,l.jsx)("strong",{children:"This device is outside the tailnet."})," The address simply does not exist here. Join the tailnet, or view the screens from a device that is on it."]}),(0,l.jsxs)("li",{children:[(0,l.jsx)("strong",{children:"Tailscale serve is not published."})," Re-run"," ",(0,l.jsx)("code",{className:"font-mono text-xs",children:"bash scripts/botlab/deploy-bot-wall.sh"}),", which re-publishes the paths and then verifies each one returns 200."]}),(0,l.jsxs)("li",{children:[(0,l.jsx)("strong",{children:"The wall loaded but did not connect."})," That is a VNC-level failure, not a page failure — the wall itself reports connected/failed counts once you enter the password."]})]}),(0,l.jsx)("p",{className:"mt-3 text-xs text-muted-foreground",children:"The VNC password is deliberately not carried in this page or in the URL: any page a bot browser opens could otherwise reach the local websocket, and websockets have no CORS."})]}),(0,l.jsxs)("section",{className:"rounded-xl border border-dashed border-border p-5","aria-label":"Not wired yet",children:[(0,l.jsx)("h2",{className:"text-sm font-semibold",children:"Not wired yet"}),(0,l.jsxs)("ul",{className:"mt-2 list-disc space-y-1 pl-5 text-sm text-muted-foreground",children:[(0,l.jsxs)("li",{children:["Per-bot cell headers (name \xb7 last round verdict \xb7 whether CDP is alive) need"," ",(0,l.jsx)("code",{className:"font-mono text-xs",children:"browserPort"})," and round results on the daemon's persona route. That route is owned by another track and is not published today."]}),(0,l.jsx)("li",{children:"Running a command from this surface needs a POST route that does not exist yet."})]})]})]})}function h(){let e=window.location.search,t=null;try{t=window.localStorage.getItem(n)}catch(e){t=null}return(0,l.jsx)(c,{search:e,remembered:t})}},99939:(e,t,s)=>{Promise.resolve().then(s.bind(s,74715))}},e=>{e.O(0,[2367,6725,7358],()=>e(e.s=99939)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2885],{2964:(e,t,n)=>{"use strict";n.d(t,{BotsPageContent:()=>D});var r=n(41121),l=n(91269),s=n(38519),a=n(16208);function o(e){if(null==e)return null;let t=e.replace(/[,%\s]/g,"").replace(/\*/g,"").trim();if(""===t||"-"===t||"N/A"===t)return null;let n=Number(t);return Number.isFinite(n)?n:null}let i=e=>"string"==typeof e&&""!==e?e:null,d=e=>"number"==typeof e&&Number.isFinite(e)?e:null,u=e=>"boolean"==typeof e?e:null;function c(e){var t,n,r,l,s;let a=[],c=[];for(let t of null!=(n=e.artifacts)?n:[]){let e=null!=(r=i(null==t?void 0:t.name))?r:"(이름 없음)",n=i(null==t?void 0:t.text);if(null===n){c.push(e);continue}a.push(function(e,t){var n;let r=function(e){let t=e.split("\n").filter(e=>""!==e.trim()&&!e.includes("━")),n=t.slice(0,3).join(" / ").slice(0,160),r=t.slice(0,3).join("\n");return/^Traceback \(most recent call last\):/m.test(r)?{kindOf:"파이썬 예외(Traceback)",head:n}:/^⛔\s*.*(실패|failed|error)/mi.test(r)?{kindOf:"스킬이 \xab실패\xbb라고 말했다",head:n}:/^(Error|error):/m.test(r)?{kindOf:"오류",head:n}:/^\s*command not found|No such file or directory/m.test(r)?{kindOf:"명령\xb7파일이 \xab없다\xbb",head:n}:null}(t);if(null!==r)return{kind:"failure",name:e,kindOf:r.kindOf,head:r.head};let l=function(e){var t,n,r,l;let s=null!=(l=null!=(r=null==(t=/^대상:\s*(\S+)/m.exec(e))?void 0:t[1])?r:null==(n=/^##\s+(\S+)\s+Real-Time Quote/m.exec(e))?void 0:n[1])?l:null;if(null===s)return null;let a=t=>{var n,r;return null!=(r=null==(n=RegExp("\\*\\*".concat(t,":\\*\\*\\s*([-+0-9.,]+)"),"i").exec(e))?void 0:n[1])?r:null},i=/\*\*Change:\*\*\s*([-+0-9.,]+)\s*\(([-+0-9.]+)%\)/i.exec(e),d={symbol:s,close:o(a("Close")),change:i?o(i[1]):o(a("Change")),changePct:i?o(i[2]):null,open:o(a("Open")),high:o(a("High")),low:o(a("Low")),volume:o(a("Volume")),prevClose:o(a("Prev Close"))};return[d.close,d.change,d.open,d.high,d.low,d.volume,d.prevClose].some(e=>null!==e)?d:null}(t);if(null!==l)return{kind:"quote",name:e,quote:l};let s=null!=(n=function(e){var t,n,r,l,s,a,i,d;let u=e.split("\n"),c=u.findIndex(e=>e.includes("|")&&e.includes("외국인")&&e.includes("기관")&&e.includes("개인"));if(c<0)return null;let m=e=>e.split("|").map(e=>e.trim()).filter((e,t,n)=>""!==e||0!==t&&t!==n.length-1),x=m(u[c]),f=e=>x.findIndex(t=>t.includes(e)),[h,g,p,b]=[0,f("외국인"),f("기관"),f("개인")];if(g<0||p<0||b<0)return null;let j=[];for(let e=c+1;e<u.length;e+=1){let t=u[e];if(!t.includes("|")){if(j.length>0)break;continue}if(/^\s*\|?[\s:|-]+\|?\s*$/.test(t))continue;let n=m(t);if(n.length<=Math.max(g,p,b))continue;let r=(null!=(l=n[h])?l:"").trim();""!==r&&j.push({key:r,foreign:o(n[g]),institution:o(n[p]),individual:o(n[b])})}if(0===j.length)return null;let y="";for(let e=c;e>=0;e-=1){let t=/^#{2,3}\s+(.+)$/.exec((null!=(s=u[e])?s:"").trim());if(t){y=t[1];break}}return""===y&&(y=null!=(a=null==(t=u.find(e=>""!==e.trim()&&!e.includes("━")))?void 0:t.trim())?a:"(제목 없음)"),{title:y,unit:null!=(d=null==(n=/\((백만|천|억)\)/.exec(x.join(" ")))?void 0:n[1])?d:null!=(i=null==(r=/\(([^)]*원[^)]*)\)/.exec(x.join(" ")))?void 0:r[1])?i:null,rows:j}}(t))?n:function(e){let t,n=e.trimStart();if(!n.startsWith("{"))return null;try{t=JSON.parse(n)}catch(e){return null}let r=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];for(let t of n){let n=e[t];if("number"==typeof n&&Number.isFinite(n))return n}return null},l=[],s=t.periods;if("object"==typeof s&&null!==s&&!Array.isArray(s))for(let[e,t]of Object.entries(s))"object"==typeof t&&null!==t&&l.push({key:e,foreign:r(t,"frgn_net_shares","frgn_net_amount_million"),institution:r(t,"inst_net_shares","inst_net_amount_million"),individual:r(t,"prsn_net_shares","prsn_net_amount_million")});if(0===l.length&&Array.isArray(t.rows))for(let e of t.rows){if("object"!=typeof e||null===e)continue;let t="string"==typeof e.date?e.date:null;null!==t&&l.push({key:t,foreign:r(e,"frgn_net_shares","frgn_net_amount_million"),institution:r(e,"inst_net_shares","inst_net_amount_million"),individual:r(e,"prsn_net_shares","prsn_net_amount_million")})}if(0===l.length)return null;let a="string"==typeof t.ticker?t.ticker:null,o="string"==typeof t.name&&t.name!==a?t.name:null;return{title:null!==o&&null!==a?"".concat(o,"(").concat(a,") 투자자 수급"):null!==a?"".concat(a," 투자자 수급"):"투자자 수급",unit:"주",rows:l}}(t);if(null!==s)return{kind:"flow",name:e,flow:s};let a=function(e){let t,n=e.split("\n"),r=n.findIndex(e=>"---BEGIN_OMNI_CRAWL_JSON---"===e);if(r<0)return{news:null,why:null,fenced:!1};let l=n.findIndex((e,t)=>t>r&&"---END_OMNI_CRAWL_JSON---"===e);if(l<0)return{news:null,why:"Omni crawl JSON 끝 울타리를 \xab못 찾았다\xbb",fenced:!0};try{t=JSON.parse(n.slice(r+1,l).join("\n"))}catch(e){return{news:null,why:"Omni crawl 울타리 안 JSON을 \xab못 읽었다\xbb",fenced:!0}}if("object"!=typeof t||null===t||Array.isArray(t))return{news:null,why:"Omni crawl JSON 최상위가 객체가 아니다",fenced:!0};let s=t;if(!Array.isArray(s.results))return{news:null,why:"Omni crawl JSON에 results 배열이 없다",fenced:!0};let a=[];for(let e of s.results){if("object"!=typeof e||null===e||Array.isArray(e))continue;let t=e.items;if(Array.isArray(t))for(let e of t)"object"!=typeof e||null===e||Array.isArray(e)||a.push({title:"string"==typeof e.title?e.title:null,url:"string"==typeof e.url?e.url:null,date:"string"==typeof e.date?e.date:null})}return{news:{query:"string"==typeof s.query?s.query:null,items:a},why:null,fenced:!0}}(t);if(null!==a.news)return{kind:"news",name:e,news:a.news};let i=t.split("\n").filter(e=>""!==e.trim()&&!e.includes("━")).slice(0,2).join(" / ").slice(0,120);if(a.fenced)return{kind:"unparsed",name:e,why:a.why,head:i};let d=function(e){let t=e.split("\n").filter(e=>""!==e.trim()&&!e.includes("━"));if(t.length<2)return null;let n=[];for(let e of t.slice(1)){let t=/^\s{1,}(\S[^:]*?)\s+:\s+(.+?)\s*$/.exec(e);if(null===t)continue;let r=t[1].trim(),l=t[2].trim();""===r||""===l||r.includes("//")||n.push({label:r,value:l,num:o(l)})}return 0===n.length?null:{title:t[0].trim(),entries:n}}(t);return null!==d?{kind:"keyed",name:e,keyed:d}:{kind:"unparsed",name:e,why:"아는 꼴이 \xab아니다\xbb(시세\xb7수급표\xb7뉴스\xb7라벨:값 넷 다 아님)",head:i}}(e,n))}return{personaId:null!=(l=i(e.personaId))?l:"unknown",runId:i(e.runId),atUtc:i(e.atUtc),ok:u(e.ok),steps:d(e.steps),failed:d(e.failed),source:null!=(s=i(e.source))?s:"unknown",delivered:u(null==(t=e.delivery)?void 0:t.sent),artifacts:a,textless:c}}function m(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(null===e)return"—";let n=Math.abs(e)>=1e3?e.toLocaleString("en-US"):String(e);return!0===t.sign&&e>0?"+".concat(n):n}async function x(e,t,n){try{var r,l,s=await e.fetchJson("/v1/bots/rounds?persona=".concat(encodeURIComponent(t),"&limit=").concat(n));if("object"!=typeof s||null===s)return{kind:"error",reason:"라우트 응답을 \xab못 읽었다\xbb(객체가 아니다)"};if(!Array.isArray(s.rounds))return{kind:"error",reason:"`rounds` 가 \xab배열이 아니다\xbb — 「0건」과 \xab다른 값\xbb이다"};let a=s.unreadableBy,o=void 0===a?null:Object.entries(a).filter(e=>{let[t]=e;return"result-missing"!==t}).reduce((e,t)=>{var n;let[,r]=t;return e+(null!=(n=d(r))?n:0)},0);return{kind:"ready",rounds:s.rounds.map(c),unreadable:null!=(r=d(s.unreadable))?r:0,unreadableNow:null!=o?o:null!=(l=d(s.unreadable))?l:0}}catch(e){return{kind:"error",reason:e instanceof Error&&e.message?e.message:String(e)}}}function f(e){let{a:t}=e,n=t.quote,l=null!==n.changePct&&n.changePct>0,s=null!==n.changePct&&n.changePct<0;return(0,r.jsxs)("div",{className:"rounded-lg border border-border bg-background/60 p-3","data-testid":"quote-".concat(n.symbol),children:[(0,r.jsxs)("div",{className:"flex flex-wrap items-baseline gap-x-3",children:[(0,r.jsx)("h4",{className:"font-mono text-sm font-semibold",children:n.symbol}),(0,r.jsx)("span",{className:"text-lg font-bold tabular-nums",children:m(n.close)}),(0,r.jsxs)("span",{className:"text-sm font-semibold tabular-nums ".concat(l?"text-emerald-600":s?"text-rose-600":"text-muted-foreground"),children:[m(n.change,{sign:!0}),null!==n.changePct&&" (".concat(m(n.changePct,{sign:!0}),"%)")]})]}),(0,r.jsx)("dl",{className:"mt-2 grid grid-cols-2 gap-x-4 gap-y-1 text-xs text-muted-foreground sm:grid-cols-4",children:[["시가",n.open],["고가",n.high],["저가",n.low],["전일",n.prevClose]].map(e=>{let[t,n]=e;return(0,r.jsxs)("div",{className:"flex justify-between gap-2",children:[(0,r.jsx)("dt",{children:t}),(0,r.jsx)("dd",{className:"tabular-nums text-foreground",children:m(n)})]},t)})})]})}function h(e){let{a:t}=e,n=t.flow;return(0,r.jsxs)("div",{className:"rounded-lg border border-border bg-background/60 p-3","data-testid":"flow-block",children:[(0,r.jsx)("h4",{className:"text-sm font-semibold",children:n.title}),null!==n.unit&&(0,r.jsxs)("p",{className:"mt-0.5 text-xs text-muted-foreground",children:["단위: ",n.unit]}),(0,r.jsx)("div",{className:"mt-2 overflow-x-auto",children:(0,r.jsxs)("table",{className:"w-full min-w-[22rem] text-xs",children:[(0,r.jsx)("thead",{children:(0,r.jsxs)("tr",{className:"text-muted-foreground",children:[(0,r.jsx)("th",{className:"py-1 text-left font-medium",children:"기간"}),["외국인","기관","개인"].map(e=>(0,r.jsx)("th",{className:"py-1 text-right font-medium",children:e},e))]})}),(0,r.jsx)("tbody",{children:n.rows.slice(0,6).map(e=>(0,r.jsxs)("tr",{className:"border-t border-border/60",children:[(0,r.jsx)("td",{className:"py-1 font-mono",children:e.key}),[e.foreign,e.institution,e.individual].map((e,t)=>(0,r.jsx)("td",{className:"py-1 text-right tabular-nums ".concat(null===e?"text-muted-foreground":e>0?"text-emerald-600":e<0?"text-rose-600":""),children:m(e,{sign:!0})},t))]},e.key))})]})}),n.rows.length>6&&(0,r.jsxs)("p",{className:"mt-1 text-xs text-muted-foreground",children:["…",n.rows.length-6,"줄 더 (전체는 회차 원본에)"]})]})}function g(e){let{a:t}=e,n=t.keyed;return(0,r.jsxs)("div",{className:"rounded-lg border border-border bg-background/60 p-3","data-testid":"keyed-block",children:[(0,r.jsx)("h4",{className:"text-sm font-semibold",children:n.title}),(0,r.jsx)("dl",{className:"mt-2 grid gap-1 sm:grid-cols-2",children:n.entries.map(e=>(0,r.jsxs)("div",{className:"flex items-baseline justify-between gap-3 text-sm",children:[(0,r.jsx)("dt",{className:"text-muted-foreground",children:e.label}),(0,r.jsx)("dd",{className:"font-semibold tabular-nums",children:e.value})]},e.label))})]})}function p(e){let{a:t}=e;return(0,r.jsxs)("div",{className:"rounded-lg border border-border bg-background/60 p-3","data-testid":"news-block",children:[(0,r.jsx)("h4",{className:"text-sm font-semibold",children:null===t.news.query?"뉴스":"뉴스: ".concat(t.news.query)}),0===t.news.items.length?(0,r.jsx)("p",{className:"mt-2 text-sm text-muted-foreground",children:"수집된 기사가 0건이다."}):(0,r.jsx)("ul",{className:"mt-2 space-y-2",children:t.news.items.map((e,t)=>{var n,l,s,a;return(0,r.jsxs)("li",{className:"text-sm",children:[null===e.url?null!=(n=e.title)?n:"(제목 없음)":(0,r.jsx)("a",{className:"font-medium underline underline-offset-2",href:e.url,children:null!=(l=e.title)?l:e.url}),null!==e.date&&(0,r.jsx)("span",{className:"ml-2 text-xs text-muted-foreground",children:e.date})]},"".concat(null!=(a=null!=(s=e.url)?s:e.title)?a:"article","-").concat(t))})})]})}function b(e){let{a:t}=e;return(0,r.jsxs)("div",{className:"rounded-lg border border-rose-500/40 bg-rose-500/5 p-3","data-testid":"failure-block",children:[(0,r.jsxs)("div",{className:"flex flex-wrap items-baseline gap-2",children:[(0,r.jsx)("h4",{className:"font-mono text-sm font-semibold",children:t.name}),(0,r.jsx)("span",{className:"rounded bg-rose-500/15 px-2 py-0.5 text-xs font-medium text-rose-700",children:"이 단계가 \xab실패\xbb했다"})]}),(0,r.jsx)("p",{className:"mt-1 text-xs text-rose-700",children:t.kindOf}),(0,r.jsx)("p",{className:"mt-1 break-words font-mono text-xs text-muted-foreground",children:t.head})]})}function j(e){let{a:t}=e;return(0,r.jsxs)("div",{className:"rounded-lg border border-dashed border-border bg-background/40 p-3","data-testid":"unparsed-block",children:[(0,r.jsx)("h4",{className:"font-mono text-sm",children:t.name}),(0,r.jsxs)("p",{className:"mt-1 text-xs text-amber-600",children:["⚠️ 이 산출을 \xab못 읽었다\xbb — ",t.why]}),(0,r.jsx)("p",{className:"mt-1 truncate text-xs text-muted-foreground",children:t.head})]})}function y(e){var t;let{round:n}=e,l=null!==n.failed&&n.failed>0;return(0,r.jsxs)("article",{className:"rounded-xl border border-border bg-card p-5","data-testid":"round-".concat(null!=(t=n.runId)?t:"unknown"),children:[(0,r.jsxs)("header",{className:"flex flex-wrap items-baseline justify-between gap-2",children:[(0,r.jsx)("h3",{className:"text-lg font-semibold",children:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"Asia/Seoul";if(null===e)return"시각 \xab모름\xbb";let n=new Date(e);if(Number.isNaN(n.getTime()))return"시각을 \xab못 읽었다\xbb(".concat(e.slice(0,24),")");let r=new Intl.DateTimeFormat("ko-KR",{timeZone:t,month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",hour12:!1});return"".concat(r.format(n)," KST")}(n.atUtc)}),(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-2 text-xs",children:[(0,r.jsx)("span",{className:"rounded px-2 py-0.5 font-medium ".concat("cron"===n.source?"bg-emerald-500/15 text-emerald-700":"bg-muted text-muted-foreground"),children:"cron"===n.source?"무인(cron)":"manual"===n.source?"손":"출처 \xab모름\xbb"}),(0,r.jsxs)("span",{className:"rounded px-2 py-0.5 font-medium ".concat(l?"bg-rose-500/15 text-rose-700":"bg-muted text-muted-foreground"),children:[null===n.steps?"단계 \xab모름\xbb":"".concat(n.steps,"단계"),l&&" \xb7 실패 ".concat(n.failed)]}),(0,r.jsx)("span",{className:"rounded px-2 py-0.5 font-medium ".concat(!0===n.delivered?"bg-sky-500/15 text-sky-700":"bg-muted text-muted-foreground"),children:null===n.delivered?"배달 \xab모름\xbb":n.delivered?"폰에 갔다":"안 갔다"})]})]}),(0,r.jsxs)("div",{className:"mt-4 space-y-3",children:[n.artifacts.map((e,t)=>"quote"===e.kind?(0,r.jsx)(f,{a:e},t):"flow"===e.kind?(0,r.jsx)(h,{a:e},t):"news"===e.kind?(0,r.jsx)(p,{a:e},t):"keyed"===e.kind?(0,r.jsx)(g,{a:e},t):"failure"===e.kind?(0,r.jsx)(b,{a:e},t):(0,r.jsx)(j,{a:e},t)),0===n.artifacts.length&&0===n.textless.length&&(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:"이 회차에 산출이 \xab없다\xbb."}),n.textless.length>0&&(0,r.jsxs)("p",{className:"text-xs text-muted-foreground",children:["본문을 \xab안 받은\xbb 산출 ",n.textless.length,"건: ",n.textless.join(" \xb7 ")]})]})]})}function N(e){let{client:t,persona:n,title:s,subtitle:a,limit:o=3}=e,[i,d]=(0,l.useState)({kind:"loading"});return(0,l.useEffect)(()=>{let e=!0;return d({kind:"loading"}),x(t,n,o).then(t=>{e&&d(t)}),()=>{e=!1}},[t,n,o]),(0,r.jsxs)("section",{className:"flex flex-col gap-4","aria-label":"".concat(n," rounds"),"data-testid":"rounds-".concat(n),children:[(0,r.jsxs)("header",{children:[(0,r.jsx)("h2",{className:"text-xl font-bold",children:s}),(0,r.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:a})]}),"loading"===i.kind&&(0,r.jsx)("p",{role:"status",className:"text-sm text-muted-foreground",children:"투자 회차를 불러오는 중…"}),"error"===i.kind&&(0,r.jsxs)("div",{role:"alert",className:"rounded-lg border border-destructive/40 bg-destructive/5 p-3 text-sm",children:[(0,r.jsx)("p",{className:"font-medium text-destructive",children:"회차를 \xab못 받았다\xbb."}),(0,r.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:i.reason}),(0,r.jsxs)("p",{className:"mt-2 text-xs text-muted-foreground",children:["⚠️ 라우트 ",(0,r.jsx)("code",{className:"font-mono",children:"/v1/bots/rounds"})," 가 아직 \xab없을 수\xbb 있다(\uD83C\uDD63 축). 그때는 이 자리가 비는 것이 \xab맞다\xbb — 화면이 그것을 말하고 있다."]})]}),"ready"===i.kind&&0===i.rounds.length&&(0,r.jsxs)("p",{className:"text-sm text-muted-foreground",children:["회차가 \xab0건\xbb이다.",i.unreadable>0&&" (못 읽은 자리 ".concat(i.unreadable,"곳 — 「없다」가 아니다)")]}),"ready"===i.kind&&i.rounds.length>0&&(0,r.jsxs)(r.Fragment,{children:[i.unreadableNow>0?(0,r.jsxs)("p",{role:"alert",className:"text-xs text-amber-600",children:["⚠️ ***지금 못 읽는 자리 ",i.unreadableNow,"곳*** — 아래 수는 \xab과소\xbb다."]}):i.unreadable>0?(0,r.jsxs)("p",{className:"text-xs text-muted-foreground",children:["못 읽은 자리 ",i.unreadable,"곳(옛 회차) — 「지금 깨진 것」은 \xab없다\xbb."]}):null,(0,r.jsx)("div",{className:"flex flex-col gap-4",children:i.rounds.map(e=>{var t,n;return(0,r.jsx)(y,{round:e},null!=(n=null!=(t=e.runId)?t:e.atUtc)?n:Math.random())})})]})]})}function w(e){let{client:t,limit:n=3}=e;return(0,r.jsx)(N,{client:t,persona:"investor",limit:n,title:"\uD83D\uDCC8 투자 회차",subtitle:"봇이 \xab실제로 낸\xbb 산출이다. ⛔ 차트는 \xab일부러\xbb 안 그린다 — 글만 낸다."})}function v(e){let{client:t,limit:n=2}=e;return(0,r.jsx)(N,{client:t,persona:"assistant",limit:n,title:"\uD83D\uDDD3️ 비서 회차",subtitle:"안 읽은 메일\xb7앞으로의 일정. ⛔ 「0」도 \xab잰 값\xbb이라 그대로 보여 준다."})}function k(e){let{client:t,limit:n=2}=e;return(0,r.jsx)(N,{client:t,persona:"newsbot",limit:n,title:"\uD83D\uDCF0 뉴스 회차",subtitle:"⚠️ 이 봇의 산출은 꼴이 여럿이다 — 못 읽은 것은 \xab이름을 대고\xbb 남는다."})}async function _(e){try{let t=await e.fetchJson("/v1/bots/commands");return{kind:"ready",commands:t}}catch(e){return{kind:"error",reason:e instanceof Error&&e.message?e.message:"string"==typeof e&&e?e:"Unknown error"}}}function S(e){let{client:t}=e,n=(0,a.v)(t),[s,o]=(0,l.useState)({kind:"loading"});(0,l.useEffect)(()=>{let e=!0;return o({kind:"loading"}),_(t).then(t=>{e&&o(t)}),()=>{e=!1}},[t]);let i=n.error,d="error"===s.kind?s.reason:null,u=null!==i||null!==d,c=!u&&(n.loading||"loading"===s.kind),m="ready"===s.kind?s.commands:[],x=!c&&!u;return(0,r.jsxs)("main",{className:"mx-auto flex w-full max-w-5xl flex-col gap-6 px-6 py-10 sm:px-10","data-testid":"bots-panel",children:[(0,r.jsxs)("header",{children:[(0,r.jsx)("p",{className:"text-xs font-semibold uppercase tracking-[0.18em] text-muted-foreground",children:"Bot directory"}),(0,r.jsx)("h1",{className:"mt-2 text-3xl font-bold",children:"Bots"}),(0,r.jsx)("p",{className:"mt-2 max-w-3xl text-sm text-muted-foreground",children:"Commands are global: every bot exposes the same catalog."}),(0,r.jsx)("p",{className:"mt-2 max-w-3xl text-sm text-muted-foreground",children:"This surface cannot send commands yet; it only shows what you can ask bots to do."})]}),c&&(0,r.jsx)("p",{role:"status",className:"text-sm text-muted-foreground",children:"Loading bot identities and command catalog…"}),i&&(0,r.jsxs)("p",{role:"alert",className:"text-sm text-destructive",children:["Unable to load bot identities: ",i]}),d&&(0,r.jsxs)("p",{role:"alert",className:"text-sm text-destructive",children:["Unable to load bot catalog: ",d]}),x&&0===n.personas.length&&(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:"No bots are configured."}),x&&n.personas.length>0&&0===m.length&&(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:"No bot commands are available."}),(0,r.jsx)(w,{client:t}),(0,r.jsx)(v,{client:t}),(0,r.jsx)(k,{client:t}),x&&n.personas.length>0&&m.length>0&&(0,r.jsx)("section",{className:"grid gap-4 md:grid-cols-2","aria-label":"Bot identities",children:n.personas.map(e=>{var t;return(0,r.jsxs)("article",{className:"rounded-xl border border-border bg-card p-5","data-testid":"bot-card-".concat(e.personaId),children:[(0,r.jsx)("h2",{className:"text-lg font-semibold",children:e.displayName}),(0,r.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:null!=(t=e.description)?t:"No description provided."}),(0,r.jsx)("h3",{className:"mt-5 text-sm font-semibold",children:"Available commands"}),(0,r.jsx)("ul",{className:"mt-3 space-y-3","aria-label":"Available bot commands",children:m.map(e=>(0,r.jsxs)("li",{className:"rounded-lg border border-border bg-background/60 p-3",children:[(0,r.jsx)("h4",{className:"font-mono text-sm font-semibold",children:e.name}),(0,r.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:e.description}),e.arguments.length>0?(0,r.jsx)("ul",{className:"mt-2 space-y-1","aria-label":"".concat(e.name," arguments"),children:e.arguments.map(e=>(0,r.jsxs)("li",{className:"text-xs text-muted-foreground",children:[(0,r.jsx)("code",{className:"font-semibold text-foreground",children:e.name}),e.required?" (required)":" (optional)"," — ",e.description]},e.name))}):(0,r.jsx)("p",{className:"mt-2 text-xs text-muted-foreground",children:"No arguments."})]},e.name))})]},e.personaId)})})]})}function D(){let{client:e}=(0,s.Q)();return(0,r.jsx)(S,{client:e})}},16208:(e,t,n)=>{"use strict";n.d(t,{v:()=>a});var r=n(91269),l=n(51215);let s=null;function a(e){let[t,n]=(0,r.useState)(()=>s&&Date.now()-s.at<6e4?s.data:[]),[a,o]=(0,r.useState)(!1),[i,d]=(0,r.useState)(null),u=(0,r.useCallback)(async()=>{o(!0),d(null);try{let t=await e.listPersonas();s={at:Date.now(),data:t.personas},n(t.personas)}catch(e){d(e instanceof Error?e.message:String(e))}finally{o(!1)}},[e]);(0,r.useEffect)(()=>{if(s&&Date.now()-s.at<6e4)return void n(s.data);u()},[u]);let c=(0,r.useCallback)(async()=>{s=null,await u()},[u]);return(0,r.useEffect)(()=>{let t=e.personasEventsUrl();if(!t)return;let n=null;try{n=new EventSource(t)}catch(e){(0,l.cY)("showroom.personas.sse.construct-error",{error:String(e)});return}let r=e=>()=>{"hello"!==e&&((0,l.cY)("showroom.personas.sse.event",{kind:e}),s=null,u())};return n.addEventListener("hello",r("hello")),n.addEventListener("load-dir",r("load-dir")),n.addEventListener("reload-all",r("reload-all")),n.addEventListener("upsert",r("upsert")),n.addEventListener("remove",r("remove")),n.onerror=e=>{(0,l.cY)("showroom.personas.sse.error",{type:e.type})},()=>{try{null==n||n.close()}catch(e){}}},[e,u]),{personas:t,loading:a,error:i,reload:c}}},27813:(e,t,n)=>{"use strict";n.d(t,{Zr:()=>a,f6:()=>l,oD:()=>s});let r="elanous.daemon.sessionId";function l(){return"undefined"!=typeof crypto&&"function"==typeof crypto.randomUUID?crypto.randomUUID():"s-".concat(Date.now().toString(36),"-").concat(Math.random().toString(36).slice(2,10))}function s(){let e=function(){let e=new URLSearchParams(window.location.search).get("session");return e?(localStorage.setItem(r,e),e):localStorage.getItem(r)}();if(e)return e;let t=l();return localStorage.setItem(r,t),t}function a(){let e=l();return localStorage.setItem(r,e),e}},38519:(e,t,n)=>{"use strict";n.d(t,{C:()=>d,DaemonProvider:()=>u,Q:()=>c});var r=n(41121),l=n(91269),s=n(49536),a=n(27813),o=n(45012),i=n(51215);let d=(0,l.createContext)(null);function u(e){let{children:t}=e,n={baseUrl:"",token:"",provider:""},[u,c]=(0,l.useState)(n),[m,x]=(0,l.useState)(""),[f]=(0,l.useState)(()=>new o.ki(n));(0,l.useEffect)(()=>{let e=(0,s.Fp)();c(e),f.updateConfig(e),x((0,a.oD)()),(0,i.cY)("webterm.provider.daemon.init",{baseUrl:e.baseUrl,hasToken:!!e.token})},[f]),(0,l.useEffect)(()=>{let e=e=>{if("elanous.daemon.token"===e.key||"elanous.nexus.baseUrl"===e.key){let t=(0,s.Fp)();f.updateConfig(t),c(t),(0,i.cY)("webterm.provider.daemon.config-cross-tab",{key:e.key,hasToken:!!t.token});return}"elanous.daemon.sessionId"===e.key&&e.newValue&&x(t=>t===e.newValue?t:((0,i.cY)("webterm.provider.daemon.session-cross-tab",{previous:t||"(empty)",next:e.newValue}),e.newValue))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)},[f]);let h=e=>{c(t=>{let n={...t,...e};return(0,s.Qc)(e),f.updateConfig(n),(0,i.cY)("webterm.provider.daemon.config-update",{keys:Object.keys(e)}),n})},g=e=>{x(e),localStorage.setItem("elanous.daemon.sessionId",e),(0,i.cY)("webterm.provider.daemon.session-set",{sessionId:e})},p=(0,l.useMemo)(()=>({config:u,setConfig:h,client:f,sessionId:m,setSessionId:g}),[u,f,m]);return(0,r.jsx)(d.Provider,{value:p,children:t})}function c(){let e=(0,l.useContext)(d);if(!e)throw Error("useDaemon must be used inside <DaemonProvider>");return e}},76373:(e,t,n)=>{Promise.resolve().then(n.bind(n,2964))}},e=>{e.O(0,[5012,2367,6725,7358],()=>e(e.s=76373)),_N_E=e.O()}]);