trybeacon 0.1.24 → 0.1.26

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 (371) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +9 -7
  3. package/.next/build-manifest.json +2 -2
  4. package/.next/prerender-manifest.json +3 -3
  5. package/.next/routes-manifest.json +12 -0
  6. package/.next/server/app/_global-error/page.js +3 -3
  7. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  8. package/.next/server/app/_global-error.html +1 -1
  9. package/.next/server/app/_global-error.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  14. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  15. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  16. package/.next/server/app/_not-found/page.js +2 -2
  17. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  18. package/.next/server/app/_not-found.html +1 -1
  19. package/.next/server/app/_not-found.rsc +2 -2
  20. package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  21. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  22. package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  23. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  24. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  25. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  26. package/.next/server/app/api/board-annotations/[id]/route.js +1 -1
  27. package/.next/server/app/api/board-annotations/[id]/route.js.nft.json +1 -1
  28. package/.next/server/app/api/board-annotations/route.js +1 -1
  29. package/.next/server/app/api/board-annotations/route.js.nft.json +1 -1
  30. package/.next/server/app/api/board-layout/route.js +1 -0
  31. package/.next/server/app/api/board-layout/route.js.nft.json +1 -0
  32. package/.next/server/app/api/board-layout/route_client-reference-manifest.js +1 -0
  33. package/.next/server/app/api/bug-flags/[id]/route.js +1 -1
  34. package/.next/server/app/api/bug-flags/[id]/route.js.nft.json +1 -1
  35. package/.next/server/app/api/bug-flags/route.js +1 -1
  36. package/.next/server/app/api/bug-flags/route.js.nft.json +1 -1
  37. package/.next/server/app/api/code-graph/position/route.js +1 -1
  38. package/.next/server/app/api/code-graph/position/route.js.nft.json +1 -1
  39. package/.next/server/app/api/code-graph/route.js +1 -1
  40. package/.next/server/app/api/code-graph/route.js.nft.json +1 -1
  41. package/.next/server/app/api/context/feature/route.js +1 -1
  42. package/.next/server/app/api/context/feature/route.js.nft.json +1 -1
  43. package/.next/server/app/api/context/file/route.js +1 -1
  44. package/.next/server/app/api/context/file/route.js.nft.json +1 -1
  45. package/.next/server/app/api/context/route.js +2 -2
  46. package/.next/server/app/api/context/route.js.nft.json +1 -1
  47. package/.next/server/app/api/db/arrange/route.js +1 -1
  48. package/.next/server/app/api/db/arrange/route.js.nft.json +1 -1
  49. package/.next/server/app/api/db/backfill-access/route.js +1 -1
  50. package/.next/server/app/api/db/backfill-access/route.js.nft.json +1 -1
  51. package/.next/server/app/api/db/position/route.js +1 -1
  52. package/.next/server/app/api/db/position/route.js.nft.json +1 -1
  53. package/.next/server/app/api/db/prune-planned/route.js +1 -0
  54. package/.next/server/app/api/db/prune-planned/route.js.nft.json +1 -0
  55. package/.next/server/app/api/db/prune-planned/route_client-reference-manifest.js +1 -0
  56. package/.next/server/app/api/db/reconcile-endpoints/route.js +1 -1
  57. package/.next/server/app/api/db/reconcile-endpoints/route.js.nft.json +1 -1
  58. package/.next/server/app/api/db/relations/[id]/route.js +1 -1
  59. package/.next/server/app/api/db/relations/[id]/route.js.nft.json +1 -1
  60. package/.next/server/app/api/db/tables/[id]/route.js +1 -1
  61. package/.next/server/app/api/db/tables/[id]/route.js.nft.json +1 -1
  62. package/.next/server/app/api/draft/approve/route.js +1 -5
  63. package/.next/server/app/api/draft/approve/route.js.nft.json +1 -1
  64. package/.next/server/app/api/draft/route.js +1 -5
  65. package/.next/server/app/api/draft/route.js.nft.json +1 -1
  66. package/.next/server/app/api/draft/status/route.js +1 -1
  67. package/.next/server/app/api/draft/status/route.js.nft.json +1 -1
  68. package/.next/server/app/api/edges/[id]/route.js +1 -1
  69. package/.next/server/app/api/edges/[id]/route.js.nft.json +1 -1
  70. package/.next/server/app/api/edges/route.js +1 -1
  71. package/.next/server/app/api/edges/route.js.nft.json +1 -1
  72. package/.next/server/app/api/endpoints/[id]/route.js +1 -1
  73. package/.next/server/app/api/endpoints/[id]/route.js.nft.json +1 -1
  74. package/.next/server/app/api/entities/route.js +1 -1
  75. package/.next/server/app/api/entities/route.js.nft.json +1 -1
  76. package/.next/server/app/api/feedback/[id]/route.js +1 -1
  77. package/.next/server/app/api/feedback/[id]/route.js.nft.json +1 -1
  78. package/.next/server/app/api/feedback/[id]/vote/route.js +1 -1
  79. package/.next/server/app/api/feedback/[id]/vote/route.js.nft.json +1 -1
  80. package/.next/server/app/api/feedback/route.js +1 -1
  81. package/.next/server/app/api/feedback/route.js.nft.json +1 -1
  82. package/.next/server/app/api/ingest/route.js +2 -2
  83. package/.next/server/app/api/ingest/route.js.nft.json +1 -1
  84. package/.next/server/app/api/init/route.js +2 -2
  85. package/.next/server/app/api/init/route.js.nft.json +1 -1
  86. package/.next/server/app/api/map/describe/route.js +2 -2
  87. package/.next/server/app/api/map/describe/route.js.nft.json +1 -1
  88. package/.next/server/app/api/map/files/route.js +1 -1
  89. package/.next/server/app/api/map/files/route.js.nft.json +1 -1
  90. package/.next/server/app/api/map/finish/route.js +1 -1
  91. package/.next/server/app/api/map/finish/route.js.nft.json +1 -1
  92. package/.next/server/app/api/map/route.js +1 -1
  93. package/.next/server/app/api/map/route.js.nft.json +1 -1
  94. package/.next/server/app/api/map/start/route.js +1 -1
  95. package/.next/server/app/api/map/start/route.js.nft.json +1 -1
  96. package/.next/server/app/api/map/touch-active/route.js +1 -1
  97. package/.next/server/app/api/map/touch-active/route.js.nft.json +1 -1
  98. package/.next/server/app/api/nodes/[id]/position/route.js +1 -1
  99. package/.next/server/app/api/nodes/[id]/position/route.js.nft.json +1 -1
  100. package/.next/server/app/api/nodes/[id]/route.js +1 -1
  101. package/.next/server/app/api/nodes/[id]/route.js.nft.json +1 -1
  102. package/.next/server/app/api/nodes/positions/route.js +1 -1
  103. package/.next/server/app/api/nodes/positions/route.js.nft.json +1 -1
  104. package/.next/server/app/api/nodes/route.js +1 -1
  105. package/.next/server/app/api/nodes/route.js.nft.json +1 -1
  106. package/.next/server/app/api/nodes/subtasks/route.js +1 -1
  107. package/.next/server/app/api/nodes/subtasks/route.js.nft.json +1 -1
  108. package/.next/server/app/api/notes/[id]/route.js +1 -1
  109. package/.next/server/app/api/notes/[id]/route.js.nft.json +1 -1
  110. package/.next/server/app/api/notes/route.js +1 -1
  111. package/.next/server/app/api/notes/route.js.nft.json +1 -1
  112. package/.next/server/app/api/open/route.js +1 -1
  113. package/.next/server/app/api/open/route.js.nft.json +1 -1
  114. package/.next/server/app/api/plan/annotations/route.js +3 -3
  115. package/.next/server/app/api/plan/annotations/route.js.nft.json +1 -1
  116. package/.next/server/app/api/plan/approve/route.js +2 -6
  117. package/.next/server/app/api/plan/approve/route.js.nft.json +1 -1
  118. package/.next/server/app/api/plan/history/route.js +1 -1
  119. package/.next/server/app/api/plan/history/route.js.nft.json +1 -1
  120. package/.next/server/app/api/plan/markdown/route.js +1 -1
  121. package/.next/server/app/api/plan/markdown/route.js.nft.json +1 -1
  122. package/.next/server/app/api/plan/presence/route.js +1 -1
  123. package/.next/server/app/api/plan/presence/route.js.nft.json +1 -1
  124. package/.next/server/app/api/plan/route.js +1 -1
  125. package/.next/server/app/api/plan/route.js.nft.json +1 -1
  126. package/.next/server/app/api/plan/verdict/route.js +1 -5
  127. package/.next/server/app/api/plan/verdict/route.js.nft.json +1 -1
  128. package/.next/server/app/api/preferences/route.js +1 -1
  129. package/.next/server/app/api/reset/route.js +1 -1
  130. package/.next/server/app/api/reset/route.js.nft.json +1 -1
  131. package/.next/server/app/api/stream/route.js +2 -2
  132. package/.next/server/app/api/stream/route.js.nft.json +1 -1
  133. package/.next/server/app/api/version/route.js +1 -1
  134. package/.next/server/app/api/version/route.js.nft.json +1 -1
  135. package/.next/server/app/api/workspace/activate/route.js +1 -1
  136. package/.next/server/app/api/workspace/activate/route.js.nft.json +1 -1
  137. package/.next/server/app/api/workspace/route.js +1 -1
  138. package/.next/server/app/api/workspace/route.js.nft.json +1 -1
  139. package/.next/server/app/apple-icon.png/route.js +1 -1
  140. package/.next/server/app/docs/page.js +2 -2
  141. package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  142. package/.next/server/app/docs.html +1 -1
  143. package/.next/server/app/docs.rsc +2 -2
  144. package/.next/server/app/docs.segments/_full.segment.rsc +2 -2
  145. package/.next/server/app/docs.segments/_head.segment.rsc +1 -1
  146. package/.next/server/app/docs.segments/_index.segment.rsc +2 -2
  147. package/.next/server/app/docs.segments/_tree.segment.rsc +2 -2
  148. package/.next/server/app/docs.segments/docs/__PAGE__.segment.rsc +1 -1
  149. package/.next/server/app/docs.segments/docs.segment.rsc +1 -1
  150. package/.next/server/app/feedback/page.js +2 -2
  151. package/.next/server/app/feedback/page_client-reference-manifest.js +1 -1
  152. package/.next/server/app/feedback.html +1 -1
  153. package/.next/server/app/feedback.rsc +2 -2
  154. package/.next/server/app/feedback.segments/_full.segment.rsc +2 -2
  155. package/.next/server/app/feedback.segments/_head.segment.rsc +1 -1
  156. package/.next/server/app/feedback.segments/_index.segment.rsc +2 -2
  157. package/.next/server/app/feedback.segments/_tree.segment.rsc +2 -2
  158. package/.next/server/app/feedback.segments/feedback/__PAGE__.segment.rsc +1 -1
  159. package/.next/server/app/feedback.segments/feedback.segment.rsc +1 -1
  160. package/.next/server/app/help/page.js +2 -2
  161. package/.next/server/app/help/page_client-reference-manifest.js +1 -1
  162. package/.next/server/app/help.html +1 -1
  163. package/.next/server/app/help.rsc +2 -2
  164. package/.next/server/app/help.segments/_full.segment.rsc +2 -2
  165. package/.next/server/app/help.segments/_head.segment.rsc +1 -1
  166. package/.next/server/app/help.segments/_index.segment.rsc +2 -2
  167. package/.next/server/app/help.segments/_tree.segment.rsc +2 -2
  168. package/.next/server/app/help.segments/help/__PAGE__.segment.rsc +1 -1
  169. package/.next/server/app/help.segments/help.segment.rsc +1 -1
  170. package/.next/server/app/icon.svg/route.js +1 -1
  171. package/.next/server/app/index.html +1 -1
  172. package/.next/server/app/index.rsc +2 -2
  173. package/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  174. package/.next/server/app/index.segments/_full.segment.rsc +2 -2
  175. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  176. package/.next/server/app/index.segments/_index.segment.rsc +2 -2
  177. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  178. package/.next/server/app/map/page.js +2 -2
  179. package/.next/server/app/map/page.js.nft.json +1 -1
  180. package/.next/server/app/map/page_client-reference-manifest.js +1 -1
  181. package/.next/server/app/page.js +2 -2
  182. package/.next/server/app/page_client-reference-manifest.js +1 -1
  183. package/.next/server/app/plan/page.js +2 -2
  184. package/.next/server/app/plan/page.js.nft.json +1 -1
  185. package/.next/server/app/plan/page_client-reference-manifest.js +1 -1
  186. package/.next/server/app/settings/page.js +2 -2
  187. package/.next/server/app/settings/page.js.nft.json +1 -1
  188. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  189. package/.next/server/app-paths-manifest.json +9 -7
  190. package/.next/server/chunks/249.js +1 -1
  191. package/.next/server/chunks/2877.js +7 -0
  192. package/.next/server/chunks/2933.js +2 -15
  193. package/.next/server/chunks/2981.js +1 -1
  194. package/.next/server/chunks/3221.js +5 -0
  195. package/.next/server/chunks/3254.js +1 -1
  196. package/.next/server/chunks/4198.js +1 -0
  197. package/.next/server/chunks/4274.js +1 -1
  198. package/.next/server/chunks/4378.js +1 -0
  199. package/.next/server/chunks/5258.js +1 -1
  200. package/.next/server/chunks/5934.js +1 -0
  201. package/.next/server/chunks/7373.js +1 -0
  202. package/.next/server/chunks/9127.js +1 -1
  203. package/.next/server/chunks/9213.js +1 -0
  204. package/.next/server/chunks/9313.js +14 -0
  205. package/.next/server/chunks/9683.js +1 -1
  206. package/.next/server/chunks/9734.js +1 -1
  207. package/.next/server/instrumentation.js +1 -1
  208. package/.next/server/instrumentation.js.nft.json +1 -1
  209. package/.next/server/middleware-build-manifest.js +1 -1
  210. package/.next/server/middleware.js +2 -2
  211. package/.next/server/pages/404.html +1 -1
  212. package/.next/server/pages/500.html +1 -1
  213. package/.next/server/server-reference-manifest.js +1 -1
  214. package/.next/server/server-reference-manifest.json +1 -1
  215. package/.next/static/chunks/1317-abd6936ef6f7e4d9.js +1 -0
  216. package/.next/static/chunks/1a258343-7b029f38cf13f847.js +2 -0
  217. package/.next/static/chunks/app/_global-error/page-4cdc03c65547f289.js +1 -0
  218. package/.next/static/chunks/app/api/board-annotations/[id]/route-4cdc03c65547f289.js +1 -0
  219. package/.next/static/chunks/app/api/board-annotations/route-4cdc03c65547f289.js +1 -0
  220. package/.next/static/chunks/app/api/board-layout/route-4cdc03c65547f289.js +1 -0
  221. package/.next/static/chunks/app/api/bug-flags/[id]/route-4cdc03c65547f289.js +1 -0
  222. package/.next/static/chunks/app/api/bug-flags/route-4cdc03c65547f289.js +1 -0
  223. package/.next/static/chunks/app/api/code-graph/position/route-4cdc03c65547f289.js +1 -0
  224. package/.next/static/chunks/app/api/code-graph/route-4cdc03c65547f289.js +1 -0
  225. package/.next/static/chunks/app/api/context/feature/route-4cdc03c65547f289.js +1 -0
  226. package/.next/static/chunks/app/api/context/file/route-4cdc03c65547f289.js +1 -0
  227. package/.next/static/chunks/app/api/context/route-4cdc03c65547f289.js +1 -0
  228. package/.next/static/chunks/app/api/db/arrange/route-4cdc03c65547f289.js +1 -0
  229. package/.next/static/chunks/app/api/db/backfill-access/route-4cdc03c65547f289.js +1 -0
  230. package/.next/static/chunks/app/api/db/position/route-4cdc03c65547f289.js +1 -0
  231. package/.next/static/chunks/app/api/db/prune-planned/route-4cdc03c65547f289.js +1 -0
  232. package/.next/static/chunks/app/api/db/reconcile-endpoints/route-4cdc03c65547f289.js +1 -0
  233. package/.next/static/chunks/app/api/db/relations/[id]/route-4cdc03c65547f289.js +1 -0
  234. package/.next/static/chunks/app/api/db/tables/[id]/route-4cdc03c65547f289.js +1 -0
  235. package/.next/static/chunks/app/api/draft/approve/route-4cdc03c65547f289.js +1 -0
  236. package/.next/static/chunks/app/api/draft/route-4cdc03c65547f289.js +1 -0
  237. package/.next/static/chunks/app/api/draft/status/route-4cdc03c65547f289.js +1 -0
  238. package/.next/static/chunks/app/api/edges/[id]/route-4cdc03c65547f289.js +1 -0
  239. package/.next/static/chunks/app/api/edges/route-4cdc03c65547f289.js +1 -0
  240. package/.next/static/chunks/app/api/endpoints/[id]/route-4cdc03c65547f289.js +1 -0
  241. package/.next/static/chunks/app/api/entities/route-4cdc03c65547f289.js +1 -0
  242. package/.next/static/chunks/app/api/feedback/[id]/route-4cdc03c65547f289.js +1 -0
  243. package/.next/static/chunks/app/api/feedback/[id]/vote/route-4cdc03c65547f289.js +1 -0
  244. package/.next/static/chunks/app/api/feedback/route-4cdc03c65547f289.js +1 -0
  245. package/.next/static/chunks/app/api/ingest/route-4cdc03c65547f289.js +1 -0
  246. package/.next/static/chunks/app/api/init/route-4cdc03c65547f289.js +1 -0
  247. package/.next/static/chunks/app/api/map/describe/route-4cdc03c65547f289.js +1 -0
  248. package/.next/static/chunks/app/api/map/files/route-4cdc03c65547f289.js +1 -0
  249. package/.next/static/chunks/app/api/map/finish/route-4cdc03c65547f289.js +1 -0
  250. package/.next/static/chunks/app/api/map/route-4cdc03c65547f289.js +1 -0
  251. package/.next/static/chunks/app/api/map/start/route-4cdc03c65547f289.js +1 -0
  252. package/.next/static/chunks/app/api/map/touch-active/route-4cdc03c65547f289.js +1 -0
  253. package/.next/static/chunks/app/api/nodes/[id]/position/route-4cdc03c65547f289.js +1 -0
  254. package/.next/static/chunks/app/api/nodes/[id]/route-4cdc03c65547f289.js +1 -0
  255. package/.next/static/chunks/app/api/nodes/positions/route-4cdc03c65547f289.js +1 -0
  256. package/.next/static/chunks/app/api/nodes/route-4cdc03c65547f289.js +1 -0
  257. package/.next/static/chunks/app/api/nodes/subtasks/route-4cdc03c65547f289.js +1 -0
  258. package/.next/static/chunks/app/api/notes/[id]/route-4cdc03c65547f289.js +1 -0
  259. package/.next/static/chunks/app/api/notes/route-4cdc03c65547f289.js +1 -0
  260. package/.next/static/chunks/app/api/open/route-4cdc03c65547f289.js +1 -0
  261. package/.next/static/chunks/app/api/plan/annotations/route-4cdc03c65547f289.js +1 -0
  262. package/.next/static/chunks/app/api/plan/approve/route-4cdc03c65547f289.js +1 -0
  263. package/.next/static/chunks/app/api/plan/history/route-4cdc03c65547f289.js +1 -0
  264. package/.next/static/chunks/app/api/plan/markdown/route-4cdc03c65547f289.js +1 -0
  265. package/.next/static/chunks/app/api/plan/presence/route-4cdc03c65547f289.js +1 -0
  266. package/.next/static/chunks/app/api/plan/route-4cdc03c65547f289.js +1 -0
  267. package/.next/static/chunks/app/api/plan/verdict/route-4cdc03c65547f289.js +1 -0
  268. package/.next/static/chunks/app/api/preferences/route-4cdc03c65547f289.js +1 -0
  269. package/.next/static/chunks/app/api/reset/route-4cdc03c65547f289.js +1 -0
  270. package/.next/static/chunks/app/api/stream/route-4cdc03c65547f289.js +1 -0
  271. package/.next/static/chunks/app/api/version/route-4cdc03c65547f289.js +1 -0
  272. package/.next/static/chunks/app/api/workspace/activate/route-4cdc03c65547f289.js +1 -0
  273. package/.next/static/chunks/app/api/workspace/route-4cdc03c65547f289.js +1 -0
  274. package/.next/static/chunks/app/map/{page-b2fdc0df2743d278.js → page-bd17b84e1aebd827.js} +1 -1
  275. package/.next/static/chunks/app/plan/page-f52b1b0bc8037bc0.js +1 -0
  276. package/.next/static/chunks/app/settings/{page-d1b0fe0c79c8a745.js → page-4d4879990a4f14fc.js} +1 -1
  277. package/.next/static/chunks/next/dist/client/components/builtin/app-error-4cdc03c65547f289.js +1 -0
  278. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-4cdc03c65547f289.js +1 -0
  279. package/.next/static/chunks/next/dist/client/components/builtin/not-found-4cdc03c65547f289.js +1 -0
  280. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-4cdc03c65547f289.js +1 -0
  281. package/.next/static/css/cbb14bbfa47152fd.css +1 -0
  282. package/.next/static/nIOWlnJIVXwqjfj2Fpn44/_buildManifest.js +1 -0
  283. package/.next/trace +37 -37
  284. package/.next/trace-build +1 -1
  285. package/.next/types/app/api/board-layout/route.ts +351 -0
  286. package/.next/types/app/api/db/prune-planned/route.ts +351 -0
  287. package/.next/types/app/api/plan/route.ts +351 -0
  288. package/.next/types/routes.d.ts +3 -1
  289. package/.next/types/validator.ts +18 -0
  290. package/dist/bin/beacon.js +3 -3
  291. package/dist/bin/doctor.js +22 -22
  292. package/dist/bin/hook.js +26 -26
  293. package/dist/bin/mcp.js +27 -27
  294. package/dist/bin/plan.js +21 -21
  295. package/dist/bin/remove.js +8 -0
  296. package/dist/bin/uninstall.js +25 -25
  297. package/dist/lib/workspaces.js +1 -1
  298. package/drizzle/0005_graceful_adam_warlock.sql +3 -0
  299. package/drizzle/meta/0005_snapshot.json +1751 -0
  300. package/drizzle/meta/_journal.json +7 -0
  301. package/package.json +1 -1
  302. package/.next/server/chunks/1130.js +0 -1
  303. package/.next/server/chunks/1193.js +0 -1
  304. package/.next/server/chunks/3349.js +0 -1
  305. package/.next/server/chunks/873.js +0 -1
  306. package/.next/server/chunks/8815.js +0 -5
  307. package/.next/static/B4If6Zrc9d_A-Vd9UPyiQ/_buildManifest.js +0 -1
  308. package/.next/static/chunks/1412-94916474aa89a70b.js +0 -1
  309. package/.next/static/chunks/1a258343-248e24606fc4ca54.js +0 -2
  310. package/.next/static/chunks/app/_global-error/page-0fdd2f2bb2631a50.js +0 -1
  311. package/.next/static/chunks/app/api/board-annotations/[id]/route-0fdd2f2bb2631a50.js +0 -1
  312. package/.next/static/chunks/app/api/board-annotations/route-0fdd2f2bb2631a50.js +0 -1
  313. package/.next/static/chunks/app/api/bug-flags/[id]/route-0fdd2f2bb2631a50.js +0 -1
  314. package/.next/static/chunks/app/api/bug-flags/route-0fdd2f2bb2631a50.js +0 -1
  315. package/.next/static/chunks/app/api/code-graph/position/route-0fdd2f2bb2631a50.js +0 -1
  316. package/.next/static/chunks/app/api/code-graph/route-0fdd2f2bb2631a50.js +0 -1
  317. package/.next/static/chunks/app/api/context/feature/route-0fdd2f2bb2631a50.js +0 -1
  318. package/.next/static/chunks/app/api/context/file/route-0fdd2f2bb2631a50.js +0 -1
  319. package/.next/static/chunks/app/api/context/route-0fdd2f2bb2631a50.js +0 -1
  320. package/.next/static/chunks/app/api/db/arrange/route-0fdd2f2bb2631a50.js +0 -1
  321. package/.next/static/chunks/app/api/db/backfill-access/route-0fdd2f2bb2631a50.js +0 -1
  322. package/.next/static/chunks/app/api/db/position/route-0fdd2f2bb2631a50.js +0 -1
  323. package/.next/static/chunks/app/api/db/reconcile-endpoints/route-0fdd2f2bb2631a50.js +0 -1
  324. package/.next/static/chunks/app/api/db/relations/[id]/route-0fdd2f2bb2631a50.js +0 -1
  325. package/.next/static/chunks/app/api/db/tables/[id]/route-0fdd2f2bb2631a50.js +0 -1
  326. package/.next/static/chunks/app/api/draft/approve/route-0fdd2f2bb2631a50.js +0 -1
  327. package/.next/static/chunks/app/api/draft/route-0fdd2f2bb2631a50.js +0 -1
  328. package/.next/static/chunks/app/api/draft/status/route-0fdd2f2bb2631a50.js +0 -1
  329. package/.next/static/chunks/app/api/edges/[id]/route-0fdd2f2bb2631a50.js +0 -1
  330. package/.next/static/chunks/app/api/edges/route-0fdd2f2bb2631a50.js +0 -1
  331. package/.next/static/chunks/app/api/endpoints/[id]/route-0fdd2f2bb2631a50.js +0 -1
  332. package/.next/static/chunks/app/api/entities/route-0fdd2f2bb2631a50.js +0 -1
  333. package/.next/static/chunks/app/api/feedback/[id]/route-0fdd2f2bb2631a50.js +0 -1
  334. package/.next/static/chunks/app/api/feedback/[id]/vote/route-0fdd2f2bb2631a50.js +0 -1
  335. package/.next/static/chunks/app/api/feedback/route-0fdd2f2bb2631a50.js +0 -1
  336. package/.next/static/chunks/app/api/ingest/route-0fdd2f2bb2631a50.js +0 -1
  337. package/.next/static/chunks/app/api/init/route-0fdd2f2bb2631a50.js +0 -1
  338. package/.next/static/chunks/app/api/map/describe/route-0fdd2f2bb2631a50.js +0 -1
  339. package/.next/static/chunks/app/api/map/files/route-0fdd2f2bb2631a50.js +0 -1
  340. package/.next/static/chunks/app/api/map/finish/route-0fdd2f2bb2631a50.js +0 -1
  341. package/.next/static/chunks/app/api/map/route-0fdd2f2bb2631a50.js +0 -1
  342. package/.next/static/chunks/app/api/map/start/route-0fdd2f2bb2631a50.js +0 -1
  343. package/.next/static/chunks/app/api/map/touch-active/route-0fdd2f2bb2631a50.js +0 -1
  344. package/.next/static/chunks/app/api/nodes/[id]/position/route-0fdd2f2bb2631a50.js +0 -1
  345. package/.next/static/chunks/app/api/nodes/[id]/route-0fdd2f2bb2631a50.js +0 -1
  346. package/.next/static/chunks/app/api/nodes/positions/route-0fdd2f2bb2631a50.js +0 -1
  347. package/.next/static/chunks/app/api/nodes/route-0fdd2f2bb2631a50.js +0 -1
  348. package/.next/static/chunks/app/api/nodes/subtasks/route-0fdd2f2bb2631a50.js +0 -1
  349. package/.next/static/chunks/app/api/notes/[id]/route-0fdd2f2bb2631a50.js +0 -1
  350. package/.next/static/chunks/app/api/notes/route-0fdd2f2bb2631a50.js +0 -1
  351. package/.next/static/chunks/app/api/open/route-0fdd2f2bb2631a50.js +0 -1
  352. package/.next/static/chunks/app/api/plan/annotations/route-0fdd2f2bb2631a50.js +0 -1
  353. package/.next/static/chunks/app/api/plan/approve/route-0fdd2f2bb2631a50.js +0 -1
  354. package/.next/static/chunks/app/api/plan/history/route-0fdd2f2bb2631a50.js +0 -1
  355. package/.next/static/chunks/app/api/plan/markdown/route-0fdd2f2bb2631a50.js +0 -1
  356. package/.next/static/chunks/app/api/plan/presence/route-0fdd2f2bb2631a50.js +0 -1
  357. package/.next/static/chunks/app/api/plan/route-0fdd2f2bb2631a50.js +0 -1
  358. package/.next/static/chunks/app/api/plan/verdict/route-0fdd2f2bb2631a50.js +0 -1
  359. package/.next/static/chunks/app/api/preferences/route-0fdd2f2bb2631a50.js +0 -1
  360. package/.next/static/chunks/app/api/reset/route-0fdd2f2bb2631a50.js +0 -1
  361. package/.next/static/chunks/app/api/stream/route-0fdd2f2bb2631a50.js +0 -1
  362. package/.next/static/chunks/app/api/version/route-0fdd2f2bb2631a50.js +0 -1
  363. package/.next/static/chunks/app/api/workspace/activate/route-0fdd2f2bb2631a50.js +0 -1
  364. package/.next/static/chunks/app/api/workspace/route-0fdd2f2bb2631a50.js +0 -1
  365. package/.next/static/chunks/app/plan/page-611d499986560198.js +0 -1
  366. package/.next/static/chunks/next/dist/client/components/builtin/app-error-0fdd2f2bb2631a50.js +0 -1
  367. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-0fdd2f2bb2631a50.js +0 -1
  368. package/.next/static/chunks/next/dist/client/components/builtin/not-found-0fdd2f2bb2631a50.js +0 -1
  369. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-0fdd2f2bb2631a50.js +0 -1
  370. package/.next/static/css/75d4c21b97e04260.css +0 -1
  371. /package/.next/static/{B4If6Zrc9d_A-Vd9UPyiQ → nIOWlnJIVXwqjfj2Fpn44}/_ssgManifest.js +0 -0
@@ -1 +0,0 @@
1
- "use strict";exports.id=873,exports.ids=[873],exports.modules={63254:(a,b,c)=>{let d;c.d(b,{sX:()=>Y});let e=BigInt(0x100000000-1),f=BigInt(32);function g(a,b=""){if("number"!=typeof a){let c=b&&`"${b}" `;throw TypeError(`${c}expected number, got ${typeof a}`)}if(!Number.isSafeInteger(a)||a<0){let c=b&&`"${b}" `;throw RangeError(`${c}expected integer >= 0, got ${a}`)}}function h(a,b,c=""){let d=a instanceof Uint8Array||ArrayBuffer.isView(a)&&"Uint8Array"===a.constructor.name&&"BYTES_PER_ELEMENT"in a&&1===a.BYTES_PER_ELEMENT,e=a?.length,f=void 0!==b;if(!d||f&&e!==b){let g=(c&&`"${c}" `)+"expected Uint8Array"+(f?` of length ${b}`:"")+", got "+(d?`length=${e}`:`type=${typeof a}`);if(!d)throw TypeError(g);throw RangeError(g)}return a}function i(a,b=!0){if(a.destroyed)throw Error("Hash instance has been destroyed");if(b&&a.finished)throw Error("Hash#digest() has already been called")}function j(...a){for(let b=0;b<a.length;b++)a[b].fill(0)}let k=68===new Uint8Array(new Uint32Array([0x11223344]).buffer)[0]?a=>a:function(a){for(let c=0;c<a.length;c++){var b;a[c]=(b=a[c])<<24&0xff000000|b<<8&0xff0000|b>>>8&65280|b>>>24&255}return a},l=BigInt(0),m=BigInt(1),n=BigInt(2),o=BigInt(7),p=BigInt(256),q=BigInt(113),r=[],s=[],t=[];for(let a=0,b=m,c=1,d=0;a<24;a++){[c,d]=[d,(2*c+3*d)%5],r.push(2*(5*d+c)),s.push((a+1)*(a+2)/2%64);let e=l;for(let a=0;a<7;a++)(b=(b<<m^(b>>o)*q)%p)&n&&(e^=m<<(m<<BigInt(a))-m);t.push(e)}let u=function(a,b=!1){let c=a.length,d=new Uint32Array(c),g=new Uint32Array(c);for(let h=0;h<c;h++){let{h:c,l:i}=function(a,b=!1){return b?{h:Number(a&e),l:Number(a>>f&e)}:{h:0|Number(a>>f&e),l:0|Number(a&e)}}(a[h],b);[d[h],g[h]]=[c,i]}return[d,g]}(t,!0),v=u[0],w=u[1],x=(a,b,c)=>c>32?b<<c-32|a>>>64-c:a<<c|b>>>32-c,y=(a,b,c)=>c>32?a<<c-32|b>>>64-c:b<<c|a>>>32-c;class z{state;pos=0;posOut=0;finished=!1;state32;destroyed=!1;blockLen;suffix;outputLen;canXOF;enableXOF=!1;rounds;constructor(a,b,c,d=!1,e=24){if(this.blockLen=a,this.suffix=b,this.outputLen=c,this.enableXOF=d,this.canXOF=d,this.rounds=e,g(c,"outputLen"),!(0<a&&a<200))throw Error("only keccak-f1600 function is supported");this.state=new Uint8Array(200),this.state32=function(a){return new Uint32Array(a.buffer,a.byteOffset,Math.floor(a.byteLength/4))}(this.state)}clone(){return this._cloneInto()}keccak(){k(this.state32),function(a,b=24){if(g(b,"rounds"),b<1||b>24)throw Error('"rounds" expected integer 1..24');let c=new Uint32Array(10);for(let d=24-b;d<24;d++){for(let b=0;b<10;b++)c[b]=a[b]^a[b+10]^a[b+20]^a[b+30]^a[b+40];for(let b=0;b<10;b+=2){let d=(b+8)%10,e=(b+2)%10,f=c[e],g=c[e+1],h=x(f,g,1)^c[d],i=y(f,g,1)^c[d+1];for(let c=0;c<50;c+=10)a[b+c]^=h,a[b+c+1]^=i}let b=a[2],e=a[3];for(let c=0;c<24;c++){let d=s[c],f=x(b,e,d),g=y(b,e,d),h=r[c];b=a[h],e=a[h+1],a[h]=f,a[h+1]=g}for(let b=0;b<50;b+=10){let c=a[b],d=a[b+1],e=a[b+2],f=a[b+3];a[b]^=~a[b+2]&a[b+4],a[b+1]^=~a[b+3]&a[b+5],a[b+2]^=~a[b+4]&a[b+6],a[b+3]^=~a[b+5]&a[b+7],a[b+4]^=~a[b+6]&a[b+8],a[b+5]^=~a[b+7]&a[b+9],a[b+6]^=~a[b+8]&c,a[b+7]^=~a[b+9]&d,a[b+8]^=~c&e,a[b+9]^=~d&f}a[0]^=v[d],a[1]^=w[d]}j(c)}(this.state32,this.rounds),k(this.state32),this.posOut=0,this.pos=0}update(a){i(this),h(a);let{blockLen:b,state:c}=this,d=a.length;for(let e=0;e<d;){let f=Math.min(b-this.pos,d-e);for(let b=0;b<f;b++)c[this.pos++]^=a[e++];this.pos===b&&this.keccak()}return this}finish(){if(this.finished)return;this.finished=!0;let{state:a,suffix:b,pos:c,blockLen:d}=this;a[c]^=b,(128&b)!=0&&c===d-1&&this.keccak(),a[d-1]^=128,this.keccak()}writeInto(a){i(this,!1),h(a),this.finish();let b=this.state,{blockLen:c}=this;for(let d=0,e=a.length;d<e;){this.posOut>=c&&this.keccak();let f=Math.min(c-this.posOut,e-d);a.set(b.subarray(this.posOut,this.posOut+f),d),this.posOut+=f,d+=f}return a}xofInto(a){if(!this.enableXOF)throw Error("XOF is not possible for this instance");return this.writeInto(a)}xof(a){return g(a),this.xofInto(new Uint8Array(a))}digestInto(a){h(a,void 0,"digestInto() output");let b=this.outputLen;if(a.length<b)throw RangeError('"digestInto() output" expected to be of length >='+b);if(this.finished)throw Error("digest() was already called");this.writeInto(a.subarray(0,this.outputLen)),this.destroy()}digest(){let a=new Uint8Array(this.outputLen);return this.digestInto(a),a}destroy(){this.destroyed=!0,j(this.state)}_cloneInto(a){let{blockLen:b,suffix:c,outputLen:d,rounds:e,enableXOF:f}=this;return(a||=new z(b,c,d,f,e)).blockLen=b,a.state32.set(this.state32),a.pos=this.pos,a.posOut=this.posOut,a.finished=this.finished,a.rounds=e,a.suffix=c,a.outputLen=d,a.enableXOF=f,a.canXOF=this.canXOF,a.destroyed=this.destroyed,a}}let A=((a,b,c,d={})=>(function(a,b={}){let c=(b,c)=>a(c).update(b).digest(),d=a(void 0);return c.outputLen=d.outputLen,c.blockLen=d.blockLen,c.canXOF=d.canXOF,c.create=b=>a(b),Object.assign(c,b),Object.freeze(c)})(()=>new z(b,a,c),d))(6,72,64,{oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,10])});var B,C=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,D=Math.ceil,E=Math.floor,F="[BigNumber Error] ",G=F+"Number primitive has more than 15 significant digits: ",H=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13];function I(a){var b=0|a;return a>0||a===b?b:b-1}function J(a){for(var b,c,d=1,e=a.length,f=a[0]+"";d<e;){for(c=14-(b=a[d++]+"").length;c--;b="0"+b);f+=b}for(e=f.length;48===f.charCodeAt(--e););return f.slice(0,e+1||1)}function K(a,b){var c,d,e=a.c,f=b.c,g=a.s,h=b.s,i=a.e,j=b.e;if(!g||!h)return null;if(c=e&&!e[0],d=f&&!f[0],c||d)return c?d?0:-h:g;if(g!=h)return g;if(c=g<0,d=i==j,!e||!f)return d?0:!e^c?1:-1;if(!d)return i>j^c?1:-1;for(g=0,h=(i=e.length)<(j=f.length)?i:j;g<h;g++)if(e[g]!=f[g])return e[g]>f[g]^c?1:-1;return i==j?0:i>j^c?1:-1}function L(a,b,c,d){if(a<b||a>c||a!==E(a))throw Error(F+(d||"Argument")+("number"==typeof a?a<b||a>c?" out of range: ":" not an integer: ":" not a primitive number: ")+String(a))}function M(a){var b=a.c.length-1;return I(a.e/14)==b&&a.c[b]%2!=0}function N(a,b){return(a.length>1?a.charAt(0)+"."+a.slice(1):a)+(b<0?"e":"e+")+b}function O(a,b,c){var d,e;if(b<0){for(e=c+".";++b;e+=c);a=e+a}else if(d=a.length,++b>d){for(e=c,b-=d;--b;e+=c);a+=e}else b<d&&(a=a.slice(0,b)+"."+a.slice(b));return a}var P=function a(b){var c,d,e,f,g,h,i,j,k,l=z.prototype={constructor:z,toString:null,valueOf:null},m=new z(1),n=20,o=4,p=-7,q=21,r=-1e7,s=1e7,t=!1,u=1,v=0,w={prefix:"",groupSize:3,secondaryGroupSize:0,groupSeparator:",",decimalSeparator:".",fractionGroupSize:0,fractionGroupSeparator:"\xa0",suffix:""},x="0123456789abcdefghijklmnopqrstuvwxyz",y=!0;function z(a,b){var c,d,e,f,g,h,i,l,m=this;if(!(m instanceof z))return new z(a,b);if(null==b){if(a&&!0===a._isBigNumber){m.s=a.s,!a.c||a.e>s?m.c=m.e=null:a.e<r?m.c=[m.e=0]:(m.e=a.e,m.c=a.c.slice());return}if((h="number"==typeof a)&&0*a==0){if(m.s=1/a<0?(a=-a,-1):1,a===~~a){for(f=0,g=a;g>=10;g/=10,f++);f>s?m.c=m.e=null:(m.e=f,m.c=[a]);return}l=String(a)}else{if(!C.test(l=String(a)))return k(m,l,h);m.s=45==l.charCodeAt(0)?(l=l.slice(1),-1):1}(f=l.indexOf("."))>-1&&(l=l.replace(".","")),(g=l.search(/e/i))>0?(f<0&&(f=g),f+=+l.slice(g+1),l=l.substring(0,g)):f<0&&(f=l.length)}else{if(L(b,2,x.length,"Base"),10==b&&y)return Q(m=new z(a),n+m.e+1,o);if(l=String(a),h="number"==typeof a){if(0*a!=0)return k(m,l,h,b);if(m.s=1/a<0?(l=l.slice(1),-1):1,z.DEBUG&&l.replace(/^0\.0*|\./,"").length>15)throw Error(G+a)}else m.s=45===l.charCodeAt(0)?(l=l.slice(1),-1):1;for(c=x.slice(0,b),f=g=0,i=l.length;g<i;g++)if(0>c.indexOf(d=l.charAt(g))){if("."==d){if(g>f){f=i;continue}}else if(!e&&(l==l.toUpperCase()&&(l=l.toLowerCase())||l==l.toLowerCase()&&(l=l.toUpperCase()))){e=!0,g=-1,f=0;continue}return k(m,String(a),h,b)}h=!1,(f=(l=j(l,b,10,m.s)).indexOf("."))>-1?l=l.replace(".",""):f=l.length}for(g=0;48===l.charCodeAt(g);g++);for(i=l.length;48===l.charCodeAt(--i););if(l=l.slice(g,++i)){if(i-=g,h&&z.DEBUG&&i>15&&(a>0x1fffffffffffff||a!==E(a)))throw Error(G+m.s*a);if((f=f-g-1)>s)m.c=m.e=null;else if(f<r)m.c=[m.e=0];else{if(m.e=f,m.c=[],g=(f+1)%14,f<0&&(g+=14),g<i){for(g&&m.c.push(+l.slice(0,g)),i-=14;g<i;)m.c.push(+l.slice(g,g+=14));g=14-(l=l.slice(g)).length}else g-=i;for(;g--;l+="0");m.c.push(+l)}}else m.c=[m.e=0]}function A(a,b,c,d){var e,f,g,h,i;if(null==c?c=o:L(c,0,8),!a.c)return a.toString();if(e=a.c[0],g=a.e,null==b)i=J(a.c),i=1==d||2==d&&(g<=p||g>=q)?N(i,g):O(i,g,"0");else if(f=(a=Q(new z(a),b,c)).e,h=(i=J(a.c)).length,1==d||2==d&&(b<=f||f<=p)){for(;h<b;i+="0",h++);i=N(i,f)}else if(b-=g+(2===d&&f>g),i=O(i,f,"0"),f+1>h){if(--b>0)for(i+=".";b--;i+="0");}else if((b+=f-h)>0)for(f+1==h&&(i+=".");b--;i+="0");return a.s<0&&e?"-"+i:i}function B(a,b){for(var c,d,e=1,f=new z(a[0]);e<a.length;e++)(d=new z(a[e])).s&&(c=K(f,d))!==b&&(0!==c||f.s!==b)||(f=d);return f}function P(a,b,c){for(var d=1,e=b.length;!b[--e];b.pop());for(e=b[0];e>=10;e/=10,d++);return(c=d+14*c-1)>s?a.c=a.e=null:c<r?a.c=[a.e=0]:(a.e=c,a.c=b),a}function Q(a,b,c,d){var e,f,g,h,i,j,k,l=a.c;if(l){a:{for(e=1,h=l[0];h>=10;h/=10,e++);if((f=b-e)<0)f+=14,g=b,k=E((i=l[j=0])/H[e-g-1]%10);else if((j=D((f+1)/14))>=l.length)if(d){for(;l.length<=j;l.push(0));i=k=0,e=1,f%=14,g=f-14+1}else break a;else{for(e=1,i=h=l[j];h>=10;h/=10,e++);f%=14,k=(g=f-14+e)<0?0:E(i/H[e-g-1]%10)}if(d=d||b<0||null!=l[j+1]||(g<0?i:i%H[e-g-1]),d=c<4?(k||d)&&(0==c||c==(a.s<0?3:2)):k>5||5==k&&(4==c||d||6==c&&(f>0?g>0?i/H[e-g]:0:l[j-1])%10&1||c==(a.s<0?8:7)),b<1||!l[0])return l.length=0,d?(b-=a.e+1,l[0]=H[(14-b%14)%14],a.e=-b||0):l[0]=a.e=0,a;if(0==f?(l.length=j,h=1,j--):(l.length=j+1,h=H[14-f],l[j]=g>0?E(i/H[e-g]%H[g])*h:0),d)for(;;)if(0==j){for(f=1,g=l[0];g>=10;g/=10,f++);for(g=l[0]+=h,h=1;g>=10;g/=10,h++);f!=h&&(a.e++,1e14==l[0]&&(l[0]=1));break}else{if(l[j]+=h,1e14!=l[j])break;l[j--]=0,h=1}for(f=l.length;0===l[--f];l.pop());}a.e>s?a.c=a.e=null:a.e<r&&(a.c=[a.e=0])}return a}function R(a){var b,c=a.e;return null===c?a.toString():(b=J(a.c),b=c<=p||c>=q?N(b,c):O(b,c,"0"),a.s<0?"-"+b:b)}return z.clone=a,z.ROUND_UP=0,z.ROUND_DOWN=1,z.ROUND_CEIL=2,z.ROUND_FLOOR=3,z.ROUND_HALF_UP=4,z.ROUND_HALF_DOWN=5,z.ROUND_HALF_EVEN=6,z.ROUND_HALF_CEIL=7,z.ROUND_HALF_FLOOR=8,z.EUCLID=9,z.config=z.set=function(a){var b,c;if(null!=a)if("object"==typeof a){if(a.hasOwnProperty(b="DECIMAL_PLACES")&&(L(c=a[b],0,1e9,b),n=c),a.hasOwnProperty(b="ROUNDING_MODE")&&(L(c=a[b],0,8,b),o=c),a.hasOwnProperty(b="EXPONENTIAL_AT")&&((c=a[b])&&c.pop?(L(c[0],-1e9,0,b),L(c[1],0,1e9,b),p=c[0],q=c[1]):(L(c,-1e9,1e9,b),p=-(q=c<0?-c:c))),a.hasOwnProperty(b="RANGE"))if((c=a[b])&&c.pop)L(c[0],-1e9,-1,b),L(c[1],1,1e9,b),r=c[0],s=c[1];else if(L(c,-1e9,1e9,b),c)r=-(s=c<0?-c:c);else throw Error(F+b+" cannot be zero: "+c);if(a.hasOwnProperty(b="CRYPTO"))if(!!(c=a[b])===c)if(c)if("u">typeof crypto&&crypto&&(crypto.getRandomValues||crypto.randomBytes))t=c;else throw t=!c,Error(F+"crypto unavailable");else t=c;else throw Error(F+b+" not true or false: "+c);if(a.hasOwnProperty(b="MODULO_MODE")&&(L(c=a[b],0,9,b),u=c),a.hasOwnProperty(b="POW_PRECISION")&&(L(c=a[b],0,1e9,b),v=c),a.hasOwnProperty(b="FORMAT"))if("object"==typeof(c=a[b]))w=c;else throw Error(F+b+" not an object: "+c);if(a.hasOwnProperty(b="ALPHABET")){if("string"!=typeof(c=a[b])||/^.?$|[+\-.\s]|(.).*\1/.test(c))throw Error(F+b+" invalid: "+c);y="0123456789"==c.slice(0,10),x=c}}else throw Error(F+"Object expected: "+a);return{DECIMAL_PLACES:n,ROUNDING_MODE:o,EXPONENTIAL_AT:[p,q],RANGE:[r,s],CRYPTO:t,MODULO_MODE:u,POW_PRECISION:v,FORMAT:w,ALPHABET:x}},z.isBigNumber=function(a){if(!a||!0!==a._isBigNumber)return!1;if(!z.DEBUG)return!0;var b,c,d=a.c,e=a.e,f=a.s;a:if("[object Array]"==({}).toString.call(d)){if((1===f||-1===f)&&e>=-1e9&&e<=1e9&&e===E(e)){if(0===d[0]){if(0===e&&1===d.length)return!0;break a}if((b=(e+1)%14)<1&&(b+=14),String(d[0]).length==b){for(b=0;b<d.length;b++)if((c=d[b])<0||c>=1e14||c!==E(c))break a;if(0!==c)return!0}}}else if(null===d&&null===e&&(null===f||1===f||-1===f))return!0;throw Error(F+"Invalid BigNumber: "+a)},z.maximum=z.max=function(){return B(arguments,-1)},z.minimum=z.min=function(){return B(arguments,1)},c=0x20000000000000*Math.random()&2097151?function(){return E(0x20000000000000*Math.random())}:function(){return(0x40000000*Math.random()|0)*8388608+(8388608*Math.random()|0)},z.random=function(a){var b,d,e,f,g,h=0,i=[],j=new z(m);if(null==a?a=n:L(a,0,1e9),f=D(a/14),t)if(crypto.getRandomValues){for(b=crypto.getRandomValues(new Uint32Array(f*=2));h<f;)(g=131072*b[h]+(b[h+1]>>>11))>=9e15?(d=crypto.getRandomValues(new Uint32Array(2)),b[h]=d[0],b[h+1]=d[1]):(i.push(g%1e14),h+=2);h=f/2}else if(crypto.randomBytes){for(b=crypto.randomBytes(f*=7);h<f;)(g=(31&b[h])*0x1000000000000+0x10000000000*b[h+1]+0x100000000*b[h+2]+0x1000000*b[h+3]+(b[h+4]<<16)+(b[h+5]<<8)+b[h+6])>=9e15?crypto.randomBytes(7).copy(b,h):(i.push(g%1e14),h+=7);h=f/7}else throw t=!1,Error(F+"crypto unavailable");if(!t)for(;h<f;)(g=c())<9e15&&(i[h++]=g%1e14);for(f=i[--h],a%=14,f&&a&&(g=H[14-a],i[h]=E(f/g)*g);0===i[h];i.pop(),h--);if(h<0)i=[e=0];else{for(e=-1;0===i[0];i.splice(0,1),e-=14);for(h=1,g=i[0];g>=10;g/=10,h++);h<14&&(e-=14-h)}return j.e=e,j.c=i,j},z.sum=function(){for(var a=1,b=arguments,c=new z(b[0]);a<b.length;)c=c.plus(b[a++]);return c},j=function(){var a="0123456789";function b(a,b,c,d){for(var e,f,g=[0],h=0,i=a.length;h<i;){for(f=g.length;f--;g[f]*=b);for(g[0]+=d.indexOf(a.charAt(h++)),e=0;e<g.length;e++)g[e]>c-1&&(null==g[e+1]&&(g[e+1]=0),g[e+1]+=g[e]/c|0,g[e]%=c)}return g.reverse()}return function(c,d,e,f,g){var h,j,k,l,m,p,q,r,s=c.indexOf("."),t=n,u=o;for(s>=0&&(l=v,v=0,c=c.replace(".",""),p=(r=new z(d)).pow(c.length-s),v=l,r.c=b(O(J(p.c),p.e,"0"),10,e,a),r.e=r.c.length),k=l=(q=b(c,d,e,g?(h=x,a):(h=a,x))).length;0==q[--l];q.pop());if(!q[0])return h.charAt(0);if(s<0?--k:(p.c=q,p.e=k,p.s=f,q=(p=i(p,r,t,u,e)).c,m=p.r,k=p.e),s=q[j=k+t+1],l=e/2,m=m||j<0||null!=q[j+1],m=u<4?(null!=s||m)&&(0==u||u==(p.s<0?3:2)):s>l||s==l&&(4==u||m||6==u&&1&q[j-1]||u==(p.s<0?8:7)),j<1||!q[0])c=m?O(h.charAt(1),-t,h.charAt(0)):h.charAt(0);else{if(q.length=j,m)for(--e;++q[--j]>e;)q[j]=0,j||(++k,q=[1].concat(q));for(l=q.length;!q[--l];);for(s=0,c="";s<=l;c+=h.charAt(q[s++]));c=O(c,k,h.charAt(0))}return c}}(),i=function(){function a(a,b,c){var d,e,f,g,h=0,i=a.length,j=b%1e7,k=b/1e7|0;for(a=a.slice();i--;)d=k*(f=a[i]%1e7)+(g=a[i]/1e7|0)*j,h=((e=j*f+d%1e7*1e7+h)/c|0)+(d/1e7|0)+k*g,a[i]=e%c;return h&&(a=[h].concat(a)),a}function b(a,b,c,d){var e,f;if(c!=d)f=c>d?1:-1;else for(e=f=0;e<c;e++)if(a[e]!=b[e]){f=a[e]>b[e]?1:-1;break}return f}function c(a,b,c,d){for(var e=0;c--;)a[c]-=e,e=+(a[c]<b[c]),a[c]=e*d+a[c]-b[c];for(;!a[0]&&a.length>1;a.splice(0,1));}return function(d,e,f,g,h){var i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,A=d.s==e.s?1:-1,B=d.c,C=e.c;if(!B||!B[0]||!C||!C[0])return new z(!d.s||!e.s||(B?C&&B[0]==C[0]:!C)?NaN:B&&0==B[0]||!C?0*A:A/0);for(q=(p=new z(A)).c=[],A=f+(j=d.e-e.e)+1,h||(h=1e14,j=I(d.e/14)-I(e.e/14),A=A/14|0),k=0;C[k]==(B[k]||0);k++);if(C[k]>(B[k]||0)&&j--,A<0)q.push(1),l=!0;else{for(v=B.length,x=C.length,k=0,A+=2,(m=E(h/(C[0]+1)))>1&&(C=a(C,m,h),B=a(B,m,h),x=C.length,v=B.length),u=x,s=(r=B.slice(0,x)).length;s<x;r[s++]=0);y=[0].concat(y=C.slice()),w=C[0],C[1]>=h/2&&w++;do{if(m=0,(i=b(C,r,x,s))<0){if(t=r[0],x!=s&&(t=t*h+(r[1]||0)),(m=E(t/w))>1)for(m>=h&&(m=h-1),o=(n=a(C,m,h)).length,s=r.length;1==b(n,r,o,s);)m--,c(n,x<o?y:C,o,h),o=n.length,i=1;else 0==m&&(i=m=1),o=(n=C.slice()).length;if(o<s&&(n=[0].concat(n)),c(r,n,s,h),s=r.length,-1==i)for(;1>b(C,r,x,s);)m++,c(r,x<s?y:C,s,h),s=r.length}else 0===i&&(m++,r=[0]);q[k++]=m,r[0]?r[s++]=B[u]||0:(r=[B[u]],s=1)}while((u++<v||null!=r[0])&&A--);l=null!=r[0],q[0]||q.splice(0,1)}if(1e14==h){for(k=1,A=q[0];A>=10;A/=10,k++);Q(p,f+(p.e=k+14*j-1)+1,g,l)}else p.e=j,p.r=+l;return p}}(),d=/^(-?)0([xbo])(?=\w[\w.]*$)/i,e=/^([^.]+)\.$/,f=/^\.([^.]+)$/,g=/^-?(Infinity|NaN)$/,h=/^\s*\+(?=[\w.])|^\s+|\s+$/g,k=function(a,b,c,i){var j,k=c?b:b.replace(h,"");if(g.test(k))a.s=isNaN(k)?null:k<0?-1:1;else{if(!c&&(k=k.replace(d,function(a,b,c){return j="x"==(c=c.toLowerCase())?16:"b"==c?2:8,i&&i!=j?a:b}),i&&(j=i,k=k.replace(e,"$1").replace(f,"0.$1")),b!=k))return new z(k,j);if(z.DEBUG)throw Error(F+"Not a"+(i?" base "+i:"")+" number: "+b);a.s=null}a.c=a.e=null},l.absoluteValue=l.abs=function(){var a=new z(this);return a.s<0&&(a.s=1),a},l.comparedTo=function(a,b){return K(this,new z(a,b))},l.decimalPlaces=l.dp=function(a,b){var c,d,e;if(null!=a)return L(a,0,1e9),null==b?b=o:L(b,0,8),Q(new z(this),a+this.e+1,b);if(!(c=this.c))return null;if(d=((e=c.length-1)-I(this.e/14))*14,e=c[e])for(;e%10==0;e/=10,d--);return d<0&&(d=0),d},l.dividedBy=l.div=function(a,b){return i(this,new z(a,b),n,o)},l.dividedToIntegerBy=l.idiv=function(a,b){return i(this,new z(a,b),0,1)},l.exponentiatedBy=l.pow=function(a,b){var c,d,e,f,g,h,i,j,k,l=this;if((a=new z(a)).c&&!a.isInteger())throw Error(F+"Exponent not an integer: "+R(a));if(null!=b&&(b=new z(b)),h=a.e>14,!l.c||!l.c[0]||1==l.c[0]&&!l.e&&1==l.c.length||!a.c||!a.c[0])return k=new z(Math.pow(+R(l),h?a.s*(2-M(a)):+R(a))),b?k.mod(b):k;if(i=a.s<0,b){if(b.c?!b.c[0]:!b.s)return new z(NaN);(d=!i&&l.isInteger()&&b.isInteger())&&(l=l.mod(b))}else{if(a.e>9&&(l.e>0||l.e<-1||(0==l.e?l.c[0]>1||h&&l.c[1]>=24e7:l.c[0]<8e13||h&&l.c[0]<=9999975e7)))return f=l.s<0&&M(a)?-0:0,l.e>-1&&(f=1/f),new z(i?1/f:f);v&&(f=D(v/14+2))}for(h?(c=new z(.5),i&&(a.s=1),j=M(a)):j=(e=Math.abs(+R(a)))%2,k=new z(m);;){if(j){if(!(k=k.times(l)).c)break;f?k.c.length>f&&(k.c.length=f):d&&(k=k.mod(b))}if(e){if(0===(e=E(e/2)))break;j=e%2}else if(Q(a=a.times(c),a.e+1,1),a.e>14)j=M(a);else{if(0==(e=+R(a)))break;j=e%2}l=l.times(l),f?l.c&&l.c.length>f&&(l.c.length=f):d&&(l=l.mod(b))}return d?k:(i&&(k=m.div(k)),b?k.mod(b):f?Q(k,v,o,g):k)},l.integerValue=function(a){var b=new z(this);return null==a?a=o:L(a,0,8),Q(b,b.e+1,a)},l.isEqualTo=l.eq=function(a,b){return 0===K(this,new z(a,b))},l.isFinite=function(){return!!this.c},l.isGreaterThan=l.gt=function(a,b){return K(this,new z(a,b))>0},l.isGreaterThanOrEqualTo=l.gte=function(a,b){return 1===(b=K(this,new z(a,b)))||0===b},l.isInteger=function(){return!!this.c&&I(this.e/14)>this.c.length-2},l.isLessThan=l.lt=function(a,b){return 0>K(this,new z(a,b))},l.isLessThanOrEqualTo=l.lte=function(a,b){return -1===(b=K(this,new z(a,b)))||0===b},l.isNaN=function(){return!this.s},l.isNegative=function(){return this.s<0},l.isPositive=function(){return this.s>0},l.isZero=function(){return!!this.c&&0==this.c[0]},l.minus=function(a,b){var c,d,e,f,g=this.s;if(b=(a=new z(a,b)).s,!g||!b)return new z(NaN);if(g!=b)return a.s=-b,this.plus(a);var h=this.e/14,i=a.e/14,j=this.c,k=a.c;if(!h||!i){if(!j||!k)return j?(a.s=-b,a):new z(k?this:NaN);if(!j[0]||!k[0])return k[0]?(a.s=-b,a):new z(j[0]?this:3==o?-0:0)}if(h=I(h),i=I(i),j=j.slice(),g=h-i){for((f=g<0)?(g=-g,e=j):(i=h,e=k),e.reverse(),b=g;b--;e.push(0));e.reverse()}else for(d=(f=(g=j.length)<(b=k.length))?g:b,g=b=0;b<d;b++)if(j[b]!=k[b]){f=j[b]<k[b];break}if(f&&(e=j,j=k,k=e,a.s=-a.s),(b=(d=k.length)-(c=j.length))>0)for(;b--;j[c++]=0);for(b=1e14-1;d>g;){if(j[--d]<k[d]){for(c=d;c&&!j[--c];j[c]=b);--j[c],j[d]+=1e14}j[d]-=k[d]}for(;0==j[0];j.splice(0,1),--i);return j[0]?P(a,j,i):(a.s=3==o?-1:1,a.c=[a.e=0],a)},l.modulo=l.mod=function(a,b){var c,d;return(a=new z(a,b),this.c&&a.s&&(!a.c||a.c[0]))?a.c&&(!this.c||this.c[0])?(9==u?(d=a.s,a.s=1,c=i(this,a,0,3),a.s=d,c.s*=d):c=i(this,a,0,u),(a=this.minus(c.times(a))).c[0]||1!=u||(a.s=this.s),a):new z(this):new z(NaN)},l.multipliedBy=l.times=function(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p=this.c,q=(a=new z(a,b)).c;if(!p||!q||!p[0]||!q[0])return this.s&&a.s&&(!p||p[0]||q)&&(!q||q[0]||p)?(a.s*=this.s,p&&q?(a.c=[0],a.e=0):a.c=a.e=null):a.c=a.e=a.s=null,a;for(d=I(this.e/14)+I(a.e/14),a.s*=this.s,(i=p.length)<(l=q.length)&&(o=p,p=q,q=o,e=i,i=l,l=e),e=i+l,o=[];e--;o.push(0));for(e=l;--e>=0;){for(c=0,m=q[e]%1e7,n=q[e]/1e7|0,f=e+(g=i);f>e;)h=n*(j=p[--g]%1e7)+(k=p[g]/1e7|0)*m,c=((j=m*j+h%1e7*1e7+o[f]+c)/1e14|0)+(h/1e7|0)+n*k,o[f--]=j%1e14;o[f]=c}return c?++d:o.splice(0,1),P(a,o,d)},l.negated=function(){var a=new z(this);return a.s=-a.s||null,a},l.plus=function(a,b){var c,d=this.s;if(b=(a=new z(a,b)).s,!d||!b)return new z(NaN);if(d!=b)return a.s=-b,this.minus(a);var e=this.e/14,f=a.e/14,g=this.c,h=a.c;if(!e||!f){if(!g||!h)return new z(d/0);if(!g[0]||!h[0])return h[0]?a:new z(g[0]?this:0*d)}if(e=I(e),f=I(f),g=g.slice(),d=e-f){for(d>0?(f=e,c=h):(d=-d,c=g),c.reverse();d--;c.push(0));c.reverse()}for((d=g.length)-(b=h.length)<0&&(c=h,h=g,g=c,b=d),d=0;b;)d=(g[--b]=g[b]+h[b]+d)/1e14|0,g[b]=1e14===g[b]?0:g[b]%1e14;return d&&(g=[d].concat(g),++f),P(a,g,f)},l.precision=l.sd=function(a,b){var c,d,e;if(null!=a&&!!a!==a)return L(a,1,1e9),null==b?b=o:L(b,0,8),Q(new z(this),a,b);if(!(c=this.c))return null;if(d=14*(e=c.length-1)+1,e=c[e]){for(;e%10==0;e/=10,d--);for(e=c[0];e>=10;e/=10,d++);}return a&&this.e+1>d&&(d=this.e+1),d},l.shiftedBy=function(a){return L(a,-0x1fffffffffffff,0x1fffffffffffff),this.times("1e"+a)},l.squareRoot=l.sqrt=function(){var a,b,c,d,e,f=this.c,g=this.s,h=this.e,j=n+4,k=new z("0.5");if(1!==g||!f||!f[0])return new z(!g||g<0&&(!f||f[0])?NaN:f?this:1/0);if(0==(g=Math.sqrt(+R(this)))||g==1/0?(((b=J(f)).length+h)%2==0&&(b+="0"),g=Math.sqrt(+b),h=I((h+1)/2)-(h<0||h%2),c=new z(b=g==1/0?"5e"+h:(b=g.toExponential()).slice(0,b.indexOf("e")+1)+h)):c=new z(g+""),c.c[0]){for((g=(h=c.e)+j)<3&&(g=0);;)if(e=c,c=k.times(e.plus(i(this,e,j,1))),J(e.c).slice(0,g)===(b=J(c.c)).slice(0,g)){if(c.e<h&&--g,"9999"!=(b=b.slice(g-3,g+1))&&(d||"4999"!=b)){+b&&(+b.slice(1)||"5"!=b.charAt(0))||(Q(c,c.e+n+2,1),a=!c.times(c).eq(this));break}if(!d&&(Q(e,e.e+n+2,0),e.times(e).eq(this))){c=e;break}j+=4,g+=4,d=1}}return Q(c,c.e+n+1,o,a)},l.toExponential=function(a,b){return null!=a&&(L(a,0,1e9),a++),A(this,a,b,1)},l.toFixed=function(a,b){return null!=a&&(L(a,0,1e9),a=a+this.e+1),A(this,a,b)},l.toFormat=function(a,b,c){var d;if(null==c)null!=a&&b&&"object"==typeof b?(c=b,b=null):a&&"object"==typeof a?(c=a,a=b=null):c=w;else if("object"!=typeof c)throw Error(F+"Argument not an object: "+c);if(d=this.toFixed(a,b),this.c){var e,f=d.split("."),g=+c.groupSize,h=+c.secondaryGroupSize,i=c.groupSeparator||"",j=f[0],k=f[1],l=this.s<0,m=l?j.slice(1):j,n=m.length;if(h&&(e=g,g=h,h=e,n-=e),g>0&&n>0){for(e=n%g||g,j=m.substr(0,e);e<n;e+=g)j+=i+m.substr(e,g);h>0&&(j+=i+m.slice(e)),l&&(j="-"+j)}d=k?j+(c.decimalSeparator||"")+((h=+c.fractionGroupSize)?k.replace(RegExp("\\d{"+h+"}\\B","g"),"$&"+(c.fractionGroupSeparator||"")):k):j}return(c.prefix||"")+d+(c.suffix||"")},l.toFraction=function(a){var b,c,d,e,f,g,h,j,k,l,n,p,q=this.c;if(null!=a&&(!(h=new z(a)).isInteger()&&(h.c||1!==h.s)||h.lt(m)))throw Error(F+"Argument "+(h.isInteger()?"out of range: ":"not an integer: ")+R(h));if(!q)return new z(this);for(b=new z(m),k=c=new z(m),d=j=new z(m),p=J(q),f=b.e=p.length-this.e-1,b.c[0]=H[(g=f%14)<0?14+g:g],a=!a||h.comparedTo(b)>0?f>0?b:k:h,g=s,s=1/0,h=new z(p),j.c[0]=0;l=i(h,b,0,1),1!=(e=c.plus(l.times(d))).comparedTo(a);)c=d,d=e,k=j.plus(l.times(e=k)),j=e,b=h.minus(l.times(e=b)),h=e;return e=i(a.minus(c),d,0,1),j=j.plus(e.times(k)),c=c.plus(e.times(d)),j.s=k.s=this.s,f*=2,n=1>i(k,d,f,o).minus(this).abs().comparedTo(i(j,c,f,o).minus(this).abs())?[k,d]:[j,c],s=g,n},l.toNumber=function(){return+R(this)},l.toPrecision=function(a,b){return null!=a&&L(a,1,1e9),A(this,a,b,2)},l.toString=function(a){var b,c=this,d=c.s,e=c.e;return null===e?d?(b="Infinity",d<0&&(b="-"+b)):b="NaN":(null==a?b=e<=p||e>=q?N(J(c.c),e):O(J(c.c),e,"0"):10===a&&y?b=O(J((c=Q(new z(c),n+e+1,o)).c),c.e,"0"):(L(a,2,x.length,"Base"),b=j(O(J(c.c),e,"0"),10,a,d,!0)),d<0&&c.c[0]&&(b="-"+b)),b},l.valueOf=l.toJSON=function(){return R(this)},l._isBigNumber=!0,l[Symbol.toStringTag]="BigNumber",l[Symbol.for("nodejs.util.inspect.custom")]=l.valueOf,null!=b&&z.set(b),z}();let Q=24,R="u">typeof globalThis&&globalThis.crypto&&"function"==typeof globalThis.crypto.getRandomValues?()=>{let a=new Uint32Array(1);return globalThis.crypto.getRandomValues(a),a[0]/0x100000000}:Math.random,S=(a=4,b=R)=>{let c="";for(;c.length<a;)c+=Math.floor(36*b()).toString(36);return c},T=(a="")=>(function(a){let b=new P(0);for(let c of a.values())b=b.multipliedBy(256).plus(c);return b})(A(new TextEncoder().encode(a))).toString(36).slice(1),U=Array.from({length:26},(a,b)=>String.fromCharCode(b+97)),V=({globalObj:a="u">typeof global?global:"u">typeof window?window:{},random:b=R}={})=>{let c=Object.keys(a).toString();return T(c.length?c+S(32,b):S(32,b)).substring(0,32)},W=a=>()=>a++,X=0x1c6b1f1f,Y=(B=({random:a=R,counter:b=W(Math.floor(a()*X)),length:c=Q,fingerprint:d=V({random:a})}={})=>{if(c>32)throw Error(`Length must be between 2 and 32. Received: ${c}`);return function(){let e=U[Math.floor(a()*U.length)],f=Date.now().toString(36),g=b().toString(36),h=S(c,a),i=`${f+h+g+d}`;return`${e+T(i).substring(1,c)}`}},()=>(d||(d=B()),d()))}};
@@ -1,5 +0,0 @@
1
- "use strict";exports.id=8815,exports.ids=[8815],exports.modules={18072:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Bk:()=>v,Ph:()=>t,Ze:()=>w,sS:()=>u});var e=c(34216),f=c(56727),g=c(30046),h=c(72179),i=c(50101),j=c(61024),k=c(79935),l=c(24433),m=c(54655),n=c(89049),o=c(70809),p=c(19734),q=a([f,h,i,l,p]);async function r(){let a=(0,m.Fn)(),b=(0,h.iL)(),c=await (0,i.C5)(),d=(0,o.YV)(),e=a?.description??"(no description)",f=a?.markdown?(0,l.J)(a.markdown).prose:(0,k.j)(e,b,c);return{description:e,markdown:f,draftDoc:b,featureGraph:c,annotations:d.annotations,globalComment:d.globalComment}}async function s(){await (0,i.t7)(),(0,h.Vs)(),(0,m.E9)(),(0,o.nb)()}async function t(a){let b=(0,m.Fn)(),c=await r(),d=a?.doc??c.draftDoc,i=d?await (0,h.XF)(d):null,k=await f.db.update(g.node).set({source:"MANUAL"}).where((0,e.Uo)((0,e.eq)(g.node.source,"DRAFT"),(0,e.eq)(g.node.view,"ROADMAP"))).returning({id:g.node.id,title:g.node.title}),l={count:k.length};(0,j.WH)({description:c.description,markdown:c.markdown,verdict:"approved",annotations:c.annotations,globalComment:c.globalComment,draftDoc:c.draftDoc,featureGraph:c.featureGraph});let o=[];i&&o.push(`${i.tables} table(s), ${i.relations} relation(s) and ${i.endpoints} endpoint(s)`),l.count&&o.push(`${l.count} feature(s)`);let q=o.length?`${o.join(" and ")} approved and persisted.`:"Plan approved.";return(0,n.Af)({proposedAt:b?.proposedAt??0,status:"approved",summary:q,detail:d?(0,h.zO)(d):void 0,features:k.map(a=>({title:a.title,id:a.id})),decidedAt:Date.now()}),await s(),await (0,p.Bx)(),{db:i,features:l.count}}async function u(){let a=(0,m.Fn)(),b=await r();(b.draftDoc&&(b.draftDoc.tables.length||b.draftDoc.endpoints.length)||b.featureGraph.features.length>0||a?.markdown)&&(0,j.WH)({description:b.description,markdown:b.markdown,verdict:"discarded",annotations:b.annotations,globalComment:b.globalComment,draftDoc:b.draftDoc,featureGraph:b.featureGraph}),(0,n.Af)({proposedAt:a?.proposedAt??0,status:"discarded",summary:"The user discarded the plan.",decidedAt:Date.now()}),(0,h.mk)(),await s(),await (0,p.Bx)()}async function v(){let a=(0,o.Z3)();if(a.submitted&&a.feedback)return{kind:"feedback",feedback:a.feedback};let b=(0,n.zC)();if(b)return"approved"===b.status?{kind:"approved",summary:b.summary,detail:b.detail,features:function(a){if(a?.length)return a.map(a=>"string"==typeof a?{title:a,id:""}:{title:a.title,id:a.id})}(b.features)}:{kind:"discarded",summary:b.summary};let c=(0,m.Fn)(),d=(0,h.iL)(),e=await (0,i.C5)();return(d?.tables.length??0)+(d?.endpoints.length??0)+e.features.length>0||c?.markdown?{kind:"pending"}:{kind:"discarded",summary:"The user discarded the plan."}}function w(){(0,o.nb)(),(0,n.mh)()}[f,h,i,l,p]=q.then?(await q)():q,d()}catch(a){d(a)}})},19225:(a,b,c)=>{a.exports=c(44870)},29833:(a,b,c)=>{c.d(b,{mk:()=>i});let d=new Set(["a","an","the","of","for","to","and","or","in","on","with","via","by","using","use","add","adds","support","implement","implementation","feature","new","build","create","o","os","as","um","uma","de","da","do","das","dos","para","por","com","e","ou","no","na","nos","nas","ao","aos","adicionar","implementar","suporte","suportar","nova","novo","funcionalidade","usar","usando","criar"]);function e(a){return a.normalize("NFD").replace(/[̀-ͯ]/g,"").toLowerCase().replace(/[^a-z0-9]+/g," ").trim().replace(/\s+/g," ")}function f(a){return e(a).split(" ").filter(a=>a&&!d.has(a))}function g(a,b){if(!a.size||!b.size)return 0;let c=0;for(let d of a)b.has(d)&&c++;return 2*c/(a.size+b.size)}function h(a){let b=e(a).replace(/ /g,""),c=new Set;for(let a=0;a<b.length-1;a++)c.add(b.slice(a,a+2));return c}function i(a,b,c={}){let d=c.confident??.72,j=c.consider??.5,k=c.margin??.1,l=b.map(b=>{var c,d;let i,j;return{...b,score:Math.round(100*(c=a,d=b.title,i=e(c),j=e(d),i&&j?i===j?1:Math.min(1,.7*g(new Set(f(c)),new Set(f(d)))+.4*g(h(c),h(d))):0))/100}}).sort((a,b)=>b.score-a.score),m=l[0];if(!m||m.score<j)return{best:null,candidates:[]};let n=l[1]?.score??0,o=1===l.length||m.score-n>=k;return m.score>=d&&o?{best:m,candidates:[]}:{best:null,candidates:l.filter(a=>a.score>=j).slice(0,4)}}},38356:(a,b,c)=>{c.d(b,{AG:()=>g,Ey:()=>h,Kn:()=>e,oA:()=>f});var d=c(29833);function e(a){let b=a.map(a=>{let b=[],c=a.cluster??a.category??a.domain??null;return c&&c.trim()||b.push("category"),null==a.priority&&b.push("priority"),b.length?` • "${a.title?.trim()||"(untitled)"}" — missing ${b.join(" + ")}`:null}).filter(a=>null!==a);return 0===b.length?null:"⛔ Every roadmap feature needs a category AND a priority — they drive grouping and ordering on the board, and the user shouldn't have to add them by hand. Missing:\n"+b.join("\n")+"\n\nRe-present with each feature carrying its category as `category` (or `cluster` — both work; e.g. AUTH, SEARCH, DATA, INTEL, BILLING …) and `priority` (0 = P0 critical, 1 = P1 high, 2 = P2 medium, 3 = P3 low). Set BOTH on EVERY feature; don't rely on defaults."}function f(a){let b=(a.title??"").trim();if(!b)return"⛔ A feature needs a non-empty title.";if(!(a.category??"").trim()){let c=function(a){let b=new Set;for(let c of a){let a=(c.cluster??"").trim();a&&b.add(a)}return[...b].sort()}(a.existing),d=c.length?` Reuse an existing category where it fits: ${c.join(", ")}.`:"";return`⛔ Feature "${b}" has no category. Every roadmap feature needs one — it drives grouping and color on the board.${d} Pass it as \`category\` (e.g. AUTH, SEARCH, DATA, INTEL, BILLING, INFRA …); don't rely on a default.`}let c=(0,d.mk)(b,a.existing.map(a=>({id:a.id,title:a.title})));if(c.best){let d=a.existing.find(a=>a.id===c.best.id),e=d?.status?` (${d.status})`:"";return`⛔ "${b}" already exists as the feature "${d?.title??c.best.title}"${e}. Don't create a duplicate — mark progress on it with \`beacon_start_feature({ id })\`, add sub-tasks with \`beacon_add_subtasks\`, or finish it with \`beacon_describe_feature\`.`}return null}function g(a,b){let c=b.map(a=>({id:a.id,title:a.title})),e=a.map(a=>{let e=(0,d.mk)(a.title??"",c);return e.best?{title:a.title,hit:b.find(a=>a.id===e.best.id)}:null}).filter(a=>null!==a);return e.length?"⛔ These proposed features already exist on the roadmap — reuse them instead of creating duplicates:\n"+e.map(a=>` • "${a.title}" → existing "${a.hit.title}"${a.hit.status?` (${a.hit.status})`:""}`).join("\n")+"\n\nDrop the duplicate(s) from the plan; to add work to an existing feature, ship sub-tasks or update it via beacon_describe_feature. Keep only genuinely new features in the proposal.":null}function h(a,b){let c=(a??"").trim();if(!c)return null;let e=(0,d.mk)(c,b);if(e.best)return null;let f=e.candidates.length?` Did you mean: ${e.candidates.map(a=>`"${a.title}"`).join(", ")}?`:"";return`⛔ front "${c}" doesn't match an existing feature.${f} \`front\` nests a feature UNDER an existing parent feature — it is NOT a domain tag. If "${c}" is a domain, pass it as \`category\` instead. If it's a real umbrella feature, create it first via beacon_propose_plan.`}},54655:(a,b,c)=>{c.d(b,{E9:()=>k,Fn:()=>i,UC:()=>j});var d=c(73024),e=c(76760),f=c(45301),g=c(32213);function h(){return(0,e.join)((0,f.KS)(),"plan-meta.json")}function i(){try{return JSON.parse((0,d.readFileSync)(h(),"utf8"))}catch{return null}}function j(a){(0,g.q)(h(),a)}function k(){(0,d.rmSync)(h(),{force:!0})}},61024:(a,b,c)=>{c.d(b,{Pq:()=>k,WH:()=>j,ao:()=>l});var d=c(73024),e=c(76760),f=c(77598),g=c(45301),h=c(32213);function i(){let a=(0,e.join)((0,g.KS)(),"plans","history");return(0,d.mkdirSync)(a,{recursive:!0}),a}function j(a){let b={...a,id:(0,f.randomUUID)().slice(0,8),archivedAt:Date.now()};return(0,h.q)((0,e.join)(i(),`${b.id}.json`),b,!0),b}function k(){let a;try{a=(0,d.readdirSync)(i())}catch{return[]}let b=[];for(let c of a)if(c.endsWith(".json"))try{let a=(0,e.join)(i(),c),f=(0,d.readFileSync)(a,"utf8"),g=JSON.parse(f);b.push(g)}catch{}return b.sort((a,b)=>b.archivedAt-a.archivedAt)}function l(a){try{let b=(0,d.readFileSync)((0,e.join)(i(),`${a}.json`),"utf8");return JSON.parse(b)}catch{return null}}},63622:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{DELETE:()=>u,GET:()=>s,POST:()=>t,dynamic:()=>v});var e=c(77598),f=c(44046),g=c(6324),h=c(50101),i=c(38356),j=c(72179),k=c(24433),l=c(72658),m=c(19734),n=c(18072),o=c(54655),p=c(56727),q=c(6716),r=a([h,j,k,l,m,n,p]);[h,j,k,l,m,n,p]=r.then?(await r)():r;let v="force-dynamic",w=f.Ik({description:f.Yj().trim().min(1),markdown:f.Yj().optional(),draft:g.Xg.optional(),features:h.Qy.shape.features.optional()});async function s(a){return(0,p.X_)((0,q.Ck)(a),async()=>{let a=(0,j.iL)(),b=await (0,h.C5)(),c=(0,o.Fn)(),d=(a?.tables.length??0)+(a?.endpoints.length??0)+b.features.length>0||!!c?.markdown;return Response.json({pending:d,description:c?.description??"",proposedAt:c?.proposedAt??0,tables:a?.tables.length??0,endpoints:a?.endpoints.length??0,features:b.features.length})})}async function t(a){try{let b=w.parse(await a.json());return await (0,p.X_)((0,q.Ck)(a),async()=>{let a=(0,e.createHash)("sha256").update(JSON.stringify({d:b.description,m:b.markdown??"",t:b.draft??null,f:b.features??null})).digest("hex"),c=b.draft,d=b.features,f=b.markdown,g=(c?.tables.length??0)>0||(c?.endpoints.length??0)>0||(c?.relations.length??0)>0||(d?.length??0)>0;if(b.markdown&&!g){let a=(0,k.J)(b.markdown);f=a.prose,c=a.draft,d=a.features}let q=(c?.tables.length??0)+(c?.endpoints.length??0)+(d?.length??0)>0,r=(0,o.Fn)();if(r?.contentHash===a&&(r.proposedAt??0)>0){let a=(0,j.iL)(),b=await (0,h.C5)();if((a?.tables.length??0)+(a?.endpoints.length??0)+b.features.length>0||!q)return Response.json({ok:!0,resumed:!0})}if(d&&d.length){let a=(0,i.Kn)(d);if(a)return Response.json({error:a},{status:422});let b=await p.db.query.node.findMany({where:(a,{and:b,eq:c,ne:d})=>b(c(a.view,"ROADMAP"),d(a.source,"DRAFT")),columns:{id:!0,title:!0,cluster:!0,status:!0}}),c=(0,i.AG)(d,b);if(c)return Response.json({error:c},{status:422})}let s=0,t=0;if(c&&(c.tables.length||c.endpoints.length)){let a=await (0,l.CP)(),b=(0,j.Gf)(c,a);s=b.tables.length,t=b.endpoints.length}let u=0;d&&d.length&&(await (0,h.KR)({features:d}),u=d.length);let v=!!f?.trim();return 0!==s||0!==t||0!==u||v?((0,o.UC)({description:b.description,proposedAt:Math.max(Date.now(),(r?.proposedAt??0)+1),markdown:v?f:r?.description===b.description?r?.markdown:void 0,originalFeatures:d?.map(a=>a.title)??[],contentHash:a}),(0,n.Ze)(),await (0,m.Bx)(),Response.json({ok:!0,tables:s,endpoints:t,features:u})):new Response("plan must include at least one table, endpoint, feature, or markdown",{status:400})})}catch(a){return new Response(`plan failed: ${a instanceof Error?a.message:"error"}`,{status:400})}}async function u(a){return(0,p.X_)((0,q.Ck)(a),async()=>(await (0,n.sS)(),new Response(null,{status:204})))}d()}catch(a){d(a)}})},70809:(a,b,c)=>{c.d(b,{nb:()=>k,Z3:()=>m,YV:()=>i,Tm:()=>l,D_:()=>j});var d=c(73024),e=c(76760),f=c(45301),g=c(32213);function h(){return(0,e.join)((0,f.KS)(),"plan-annotations-current.json")}function i(){try{let a=JSON.parse((0,d.readFileSync)(h(),"utf8"));return{annotations:a.annotations??[],globalComment:a.globalComment??"",submitted:!!a.submitted,submittedAt:a.submittedAt,boardEdits:a.boardEdits??"",questions:a.questions??[]}}catch{return{annotations:[],globalComment:"",submitted:!1,questions:[]}}}function j(a){(0,g.q)(h(),a)}function k(){(0,d.rmSync)(h(),{force:!0})}function l(a){let b;return[function(a,b=""){let c=a.filter(a=>(a.kind??"comment")==="comment"&&a.comment.trim()),d=a.filter(a=>"deletion"===a.kind),e=b.trim();if(!c.length&&!d.length&&!e)return"";let f=[];if(e&&f.push(`## Overall feedback
2
-
3
- ${e}`),c.length){let a=["## Inline comments",""];for(let b of c){let c=b.excerpt.split("\n").map(a=>`> ${a}`).join("\n");a.push(`${c}
4
-
5
- ${b.comment.trim()}`)}f.push(a.join("\n"))}if(d.length){let a=["## Marked for deletion","","The user marked these passages for removal — drop them from the next plan:",""];for(let b of d){let c=b.excerpt.split("\n").map(a=>`> ${a}`).join("\n");a.push(c),a.push("")}f.push(a.join("\n").trim())}return f.join("\n\n").trim()}(a.annotations,a.globalComment),a.boardEdits??"",!(b=(a.questions??[]).filter(a=>a.question.trim())).length?"":["## Questions to answer before approving",...b.map(a=>`- **${a.target}** — ${a.question.trim()}`)].join("\n")].filter(Boolean).join("\n\n")}function m(){let a=i();return{submitted:a.submitted,feedback:a.submitted?l(a):""}}},89049:(a,b,c)=>{c.d(b,{Af:()=>j,mh:()=>k,zC:()=>i});var d=c(73024),e=c(76760),f=c(45301),g=c(32213);function h(){return(0,e.join)((0,f.KS)(),"plan-verdict.json")}function i(){try{return JSON.parse((0,d.readFileSync)(h(),"utf8"))}catch{return null}}function j(a){(0,g.q)(h(),a)}function k(){(0,d.rmSync)(h(),{force:!0})}},92280:(a,b,c)=>{Object.defineProperty(b,"I",{enumerable:!0,get:function(){return g}});let d=c(28208),e=c(47617),f=c(62018);async function g(a,b,c,g){if((0,d.isNodeNextResponse)(b)){var h;b.statusCode=c.status,b.statusMessage=c.statusText;let d=["set-cookie","www-authenticate","proxy-authenticate","vary"];null==(h=c.headers)||h.forEach((a,c)=>{if("x-middleware-set-cookie"!==c.toLowerCase())if("set-cookie"===c.toLowerCase())for(let d of(0,f.splitCookiesString)(a))b.appendHeader(c,d);else{let e=void 0!==b.getHeader(c);(d.includes(c.toLowerCase())||!e)&&b.appendHeader(c,a)}});let{originalResponse:i}=b;c.body&&"HEAD"!==a.method?await (0,e.pipeToNodeResponse)(c.body,i,g):i.end()}}}};
@@ -1 +0,0 @@
1
- self.__BUILD_MANIFEST={__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:54,errorRate:1e-4,numBits:1036,numHashes:14,bitArray:[0,0,0,1,0,0,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,1,0,1,0,0,1,1,1,0,0,1,1,0,1,0,1,0,1,1,0,0,1,0,0,0,1,0,0,0,0,1,1,1,1,0,1,0,1,1,1,0,1,1,1,0,1,1,1,1,1,0,1,1,0,1,1,0,1,0,1,0,1,1,0,1,1,0,1,0,0,1,0,1,1,1,0,0,1,1,0,1,1,1,1,1,1,1,0,1,0,0,1,0,0,1,1,0,1,1,1,0,0,1,0,1,0,1,1,1,0,1,0,1,0,1,1,1,0,0,1,1,1,1,0,1,0,1,1,0,0,1,1,0,0,1,1,0,1,1,0,0,0,1,1,0,1,0,0,1,0,1,1,1,1,0,0,1,0,0,1,1,0,0,1,0,0,1,1,1,0,1,0,1,1,0,0,0,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,0,0,1,1,0,1,0,1,1,0,0,0,0,0,0,1,0,0,1,1,1,0,1,0,1,1,1,1,0,1,1,0,1,1,0,0,1,0,0,0,0,1,1,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,1,1,0,1,1,0,0,1,0,1,0,1,0,0,0,0,0,1,1,0,1,1,0,1,0,1,1,0,1,0,0,0,0,1,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,1,0,1,0,1,0,1,0,1,0,0,1,0,1,0,0,1,1,0,1,0,1,0,0,1,1,0,0,1,1,0,0,1,1,1,0,0,0,1,0,1,0,1,1,0,1,1,0,1,1,1,0,0,1,0,1,1,1,0,1,1,0,1,0,1,0,1,1,0,1,0,1,1,0,0,0,1,0,1,0,0,1,1,1,0,0,1,1,1,1,1,0,1,1,0,0,0,0,0,1,1,1,0,1,1,1,0,0,0,1,1,1,1,1,1,0,1,1,1,1,1,0,1,1,1,0,0,0,0,1,1,0,1,1,1,0,1,1,1,1,0,0,1,0,0,1,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,1,0,0,0,1,1,1,0,1,1,1,0,1,0,0,1,1,0,1,1,1,1,0,1,0,1,0,1,1,1,1,1,0,0,1,0,1,0,0,1,0,1,0,0,0,0,0,0,0,1,1,1,1,1,1,0,1,0,0,0,0,1,0,0,1,1,1,0,1,0,1,1,0,1,1,1,0,0,0,1,1,1,0,0,1,1,0,0,0,0,1,0,1,1,0,0,1,1,0,0,1,1,1,1,1,0,1,0,1,1,0,0,1,0,1,0,0,0,0,1,1,0,1,1,1,0,0,1,0,0,0,1,1,0,0,0,0,0,1,0,0,1,1,1,0,1,1,1,1,1,1,0,0,0,1,1,0,1,1,0,0,0,1,0,0,1,1,0,1,0,1,0,0,1,0,1,1,0,1,1,1,1,0,1,0,0,1,0,1,0,0,0,0,0,1,0,0,0,1,1,1,1,0,1,1,0,1,0,1,1,1,1,0,1,0,0,0,1,0,1,0,0,1,0,1,0,0,0,0,0,1,1,0,1,1,1,1,1,0,1,0,0,1,1,1,0,1,0,0,0,0,0,1,0,1,0,1,0,1,0,1,1,1,1,0,1,0,1,1,1,0,1,1,1,0,1,1,1,0,1,1,1,0,1,0,0,1,1,1,0,0,1,1,1,0,0,0,1,1,1,0,1,0,0,1,1,1,0,0,0,1,0,1,1,1,0,1,1,0,0,0,1,1,1,0,1,1,0,0,0,0,0,1,1,0,1,0,0,0,0,0,0,1,0,1,0,0,1,1,0,1,0,1,1,1,0,1,0,0,0,1,0,1,0,0,1,0,1,1,0,0,0,1,1,1,0,1,1,0,0,1,1,1,0,1,1,1,1,1,1,1,0,1,0,0,1,0,0,1,1,1,1,1,0,1,1,1,0,0,0,0,0,0,1,0,0,1,1,1,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,0,1,0,0,1,1,0,0,1,0,0,0,0,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,1,1,0,0,0,1,0,0,1,1,1,0,0,0,0,1,1,1,0,0,1,1,0,1,0,0,1,0,1,0,1,0,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,1]},__routerFilterDynamic:{numItems:9,errorRate:1e-4,numBits:173,numHashes:14,bitArray:[0,0,0,0,0,0,1,1,1,0,0,1,0,1,0,0,1,0,1,1,1,0,1,1,0,1,1,0,1,0,0,0,1,0,0,0,1,0,1,0,0,1,1,0,1,1,0,0,1,0,1,0,0,1,0,1,0,1,1,1,1,1,0,0,1,1,1,0,1,1,1,0,0,0,1,0,1,0,1,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,1,1,1,0,1,1,0,1,0,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,0,0,1,1,0,1,1,1,0,1,1,1,1,0,1,1,1,0,1,0,1,0,0,1,1,0,0,1,1,1]},sortedPages:["/_app"]},self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1412],{4474:(e,t,n)=>{n.d(t,{$:()=>l});var a=n(95155),s=n(6539),r=n(18460),o=n(91337);let i=(0,r.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 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-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)] aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",ghost:"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",destructive:"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",icon:"size-8","icon-xs":"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg","icon-lg":"size-9"}},defaultVariants:{variant:"default",size:"default"}});function l({className:e,variant:t="default",size:n="default",...r}){return(0,a.jsx)(s.Button,{"data-slot":"button",className:(0,o.cn)(i({variant:t,size:n,className:e})),...r})}},17918:(e,t,n)=>{n.d(t,{Sh:()=>c,V5:()=>d,e0:()=>m});var a=n(95155),s=n(12115),r=n(81750),o=n(6266),i=n(9005),l=n(91337);let d="#ff7a45";function c({data:e,selected:t}){let[n,u]=(0,s.useState)(e.text);return(0,s.useEffect)(()=>{u(e.text)},[e.text]),(0,a.jsxs)("div",{onClick:()=>e.onClick?.(e.annotationId),className:(0,l.cn)("group/anno relative w-[270px] rounded-xl border border-white/10 bg-[#1b1b1e]/95 px-4 py-3 shadow-[0_18px_50px_-20px_rgba(0,0,0,0.9)] backdrop-blur transition-colors hover:border-white/20",!e.editable&&"cursor-pointer",t&&"border-[#ff7a45]/50"),children:[(0,a.jsx)("span",{"aria-hidden":!0,className:"pointer-events-none absolute -left-px bottom-2 top-2 w-[3px] rounded-full",style:{background:d}}),(0,a.jsx)(r.h7,{type:"target",id:"in",position:o.yX.Top,isConnectable:!1,className:"!pointer-events-none !size-1 !min-h-0 !min-w-0 !border-0 !bg-transparent",style:{left:"auto",right:22,top:0}}),(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsx)("div",{className:"font-mono text-[10px] font-semibold uppercase tracking-[0.22em]",style:{color:d},children:"Annotation \xb7 You"}),e.editable&&e.onDelete&&(0,a.jsx)("button",{type:"button",title:"Delete annotation",onClick:t=>{t.stopPropagation(),e.onDelete?.(e.annotationId)},className:"nodrag nopan -mr-1 rounded p-0.5 text-muted-foreground/60 opacity-0 transition-opacity hover:text-red-300 group-hover/anno:opacity-100",children:(0,a.jsx)(i.A,{className:"size-3"})})]}),e.editable?(0,a.jsx)("textarea",{value:n,autoFocus:!e.text.trim(),placeholder:"Type your annotation…",rows:Math.max(2,Math.min(6,n.split("\n").length)),onChange:e=>u(e.target.value),onBlur:()=>{n!==e.text&&e.onChangeText?.(e.annotationId,n)},onKeyDown:e=>e.stopPropagation(),className:"nodrag nopan mt-1.5 w-full resize-none bg-transparent text-[13px] leading-snug text-foreground/95 outline-none placeholder:text-muted-foreground/60"}):(0,a.jsx)("div",{className:"mt-1.5 text-[13px] leading-snug text-foreground/95",children:e.text.trim()?e.text:(0,a.jsx)("span",{className:"text-muted-foreground",children:"…"})})]})}function u({n:e,annotationId:t,onClick:n}){return(0,a.jsxs)("button",{type:"button",title:`Annotation ${e} — view comment`,onClick:e=>{e.stopPropagation(),n?.(t)},className:"nodrag nopan relative flex size-6 items-center justify-center rounded-full font-mono text-[11px] font-bold text-[#181818] shadow-[0_0_0_3px_rgba(255,122,69,0.22),0_0_16px_2px_rgba(255,122,69,0.4)] transition-transform hover:scale-110",style:{background:d},children:[e,(0,a.jsx)(r.h7,{type:"source",id:`pin-${t}`,position:o.yX.Bottom,isConnectable:!1,className:"!pointer-events-none !size-1 !min-h-0 !min-w-0 !border-0 !bg-transparent",style:{left:"50%",bottom:2}})]})}function m({pins:e,onPinClick:t}){return e.length?(0,a.jsx)("span",{className:"absolute -right-3 top-1/2 z-10 flex -translate-y-1/2 flex-row-reverse gap-1",children:e.map(e=>(0,a.jsx)(u,{n:e.n,annotationId:e.id,onClick:t},e.id))}):null}},18874:(e,t,n)=>{n.d(t,{F1:()=>i,e6:()=>r,qA:()=>s,ru:()=>o});let a={auth:"#4ea1ff",firms:"#c792ea",search:"#7bd389",storage:"#ffb86b",petitions:"#ff7a45",monitoring:"#f5b942",admin:"#ff6b9d"};function s(e){return e&&a[e]||"#8a8a8a"}let r={GET:"#7bd389",POST:"#4ea1ff",PUT:"#ffb86b",PATCH:"#ffb86b",DELETE:"#ff3860"},o={read:"#4ea1ff",write:"#ffb86b","read-write":"#c792ea"};function i(e,t){let n=new Set([e]);for(let a of t)a.source===e&&n.add(a.target),a.target===e&&n.add(a.source);return n}},26518:(e,t,n)=>{n.d(t,{bq:()=>N,eb:()=>C,gC:()=>k,l6:()=>j,yv:()=>w});var a=n(95155);n(12115);var s=n(40595),r=n(41294),o=n(75681),i=n(17314),l=n(37265),d=n(23107),c=n(70826),u=n(67564),m=n(1938),p=n(15433),x=n(5919),h=n(45450),f=n(88988),g=n(91337),b=n(12363),v=n(64577),y=n(94088);let j=s.H;function w({className:e,...t}){return(0,a.jsx)(r.y,{"data-slot":"select-value",className:(0,g.cn)("flex flex-1 text-left",e),...t})}function N({className:e,size:t="default",children:n,...s}){return(0,a.jsxs)(o.b,{"data-slot":"select-trigger","data-size":t,className:(0,g.cn)("flex w-fit items-center justify-between gap-1.5 rounded-lg border border-input bg-transparent py-2 pr-2 pl-2.5 text-sm whitespace-nowrap transition-colors outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-placeholder:text-muted-foreground data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 dark:bg-input/30 dark:hover:bg-input/50 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",e),...s,children:[n,(0,a.jsx)(i.w,{render:(0,a.jsx)(b.A,{className:"pointer-events-none size-4 text-muted-foreground"})})]})}function k({className:e,children:t,side:n="bottom",sideOffset:s=4,align:r="center",alignOffset:o=0,alignItemWithTrigger:i=!0,...m}){return(0,a.jsx)(l.V,{children:(0,a.jsx)(d.l,{side:n,sideOffset:s,align:r,alignOffset:o,alignItemWithTrigger:i,className:"isolate z-50",children:(0,a.jsxs)(c.t,{"data-slot":"select-content","data-align-trigger":i,className:(0,g.cn)("relative isolate z-50 max-h-(--available-height) w-(--anchor-width) min-w-36 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",e),...m,children:[(0,a.jsx)(E,{}),(0,a.jsx)(u.B,{children:t}),(0,a.jsx)(S,{})]})})})}function C({className:e,children:t,...n}){return(0,a.jsxs)(m.e,{"data-slot":"select-item",className:(0,g.cn)("relative flex w-full cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",e),...n,children:[(0,a.jsx)(p.h,{className:"flex flex-1 shrink-0 gap-2 whitespace-nowrap",children:t}),(0,a.jsx)(x.h,{render:(0,a.jsx)("span",{className:"pointer-events-none absolute right-2 flex size-4 items-center justify-center"}),children:(0,a.jsx)(v.A,{className:"pointer-events-none"})})]})}function E({className:e,...t}){return(0,a.jsx)(h.w,{"data-slot":"select-scroll-up-button",className:(0,g.cn)("top-0 z-10 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4",e),...t,children:(0,a.jsx)(y.A,{})})}function S({className:e,...t}){return(0,a.jsx)(f.d,{"data-slot":"select-scroll-down-button",className:(0,g.cn)("bottom-0 z-10 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4",e),...t,children:(0,a.jsx)(b.A,{})})}},26856:(e,t,n)=>{n.d(t,{DbMapClient:()=>es});var a=n(95155),s=n(12115),r=n(73321),o=n(81750),i=n(6266);n(53255);var l=n(32133),d=n(81499),c=n(51128),u=n(65738),m=n(9005),p=n(2125),x=n(91337),h=n(18874);let f=(0,s.createContext)(null);function g(){let e=(0,s.useContext)(f);if(!e)throw Error("useDbEdit must be used inside DbEditContext");return e}var b=n(95635),v=n(17918);let y={danger:"bg-red-500/15 text-red-300",warn:"bg-amber-500/15 text-amber-300"};function j({badges:e,className:t}){return e.length?(0,a.jsx)("span",{className:(0,x.cn)("flex shrink-0 items-center gap-0.5",t),children:e.map(e=>(0,a.jsx)("span",{title:e.title,className:(0,x.cn)("rounded px-1 text-[8px] font-semibold uppercase tracking-wide",y[e.tone]),children:e.label},e.label))}):null}let w=/pass(word)?|token|secret|api[_-]?key|credential|priv(ate)?[_-]?key|hash|salt/i,N=/auth|login|logout|session|token|password|oauth|sso|credential/i,k="nodrag nopan",C=b.x;function E({onClick:e,title:t}){return(0,a.jsx)("button",{type:"button",title:t,onClick:t=>{t.stopPropagation(),e()},className:(0,x.cn)(k,"absolute -right-3 top-1/2 z-10 flex size-6 -translate-y-1/2 items-center justify-center rounded-full border border-white/15 bg-[#242428] text-muted-foreground opacity-0 shadow-md transition-all group-hover/row:opacity-100 hover:border-[#ff7a45]/50 hover:text-[#ff7a45]"),children:(0,a.jsx)(l.A,{className:"size-3"})})}function S({c:e,fkTargets:t}){let n=t?.[e.name];return(0,a.jsx)("span",{className:"ml-auto shrink-0 truncate font-mono text-[11px] text-muted-foreground/80",children:n?(0,a.jsxs)(a.Fragment,{children:["→\xa0",n]}):e.type})}let A="nodrag nopan",z=["GET","POST","PUT","PATCH","DELETE"];var T=n(54698),I=n(82099),D=n(4474);let R=[{id:"claude",label:"Prompt p/ Claude Code",fn:function(e){let t=["Implement this database schema in this project, following its existing stack and conventions:",""];for(let n of e.tables){let e=`Table \`${n.name}\``+(n.domain?` (domain: ${n.domain})`:"")+(n.description?` — ${n.description}`:"");for(let a of(t.push(e),n.columns)){let e=[a.isPk&&"PK",a.isFk&&"FK",!1===a.nullable&&"NOT NULL"].filter(Boolean).join(", ");t.push(` - ${a.name}: ${a.type}`+(e?` [${e}]`:"")+(a.note?` — ${a.note}`:""))}t.push("")}if(e.relations.length){for(let n of(t.push("Foreign keys:"),e.relations))t.push(` - ${n.fromTable}.${n.fromColumn} -> ${n.toTable}.${n.toColumn}`);t.push("")}return t.push("Create the models/migrations using the project's existing ORM and patterns, wire the relationships, and keep table and column names exactly as given."),t.join("\n")}},{id:"dbml",label:"DBML",fn:function(e){let t=[];for(let n of e.tables){for(let e of(t.push(`Table ${n.name} {`),n.columns)){let n=[e.isPk&&"pk",!1===e.nullable&&!e.isPk&&"not null",e.note&&`note: '${e.note.replace(/'/g,"")}'`].filter(Boolean).join(", ");t.push(` ${e.name} ${e.type}`+(n?` [${n}]`:""))}t.push("}","")}for(let n of e.relations)t.push(`Ref: ${n.fromTable}.${n.fromColumn} > ${n.toTable}.${n.toColumn}`);return t.join("\n").trim()}},{id:"sql",label:"SQL DDL",fn:function(e){let t=[];for(let n of e.tables){t.push(`CREATE TABLE ${n.name} (`);let a=n.columns.map(e=>{let t=[` ${e.name} ${e.type}`];return e.isPk?t.push("PRIMARY KEY"):!1===e.nullable&&t.push("NOT NULL"),t.join(" ")}),s=e.relations.filter(e=>e.fromTable===n.name).map(e=>` FOREIGN KEY (${e.fromColumn}) REFERENCES ${e.toTable}(${e.toColumn})`);t.push([...a,...s].join(",\n")),t.push(");","")}return t.join("\n").trim()}}];function $({draftGraph:e}){let[t,n]=(0,s.useState)(null);if(0===e.tables.length)return null;async function r(t){await navigator.clipboard.writeText(t.fn(e)).catch(()=>{}),n(t.id),setTimeout(()=>n(null),1500)}return(0,a.jsxs)("div",{className:"space-y-2 rounded-xl border border-sky-400/20 bg-sky-500/[0.04] p-3",children:[(0,a.jsxs)("span",{className:"text-[11px] font-semibold uppercase tracking-wide text-sky-300",children:["Rascunho \xb7 ",e.tables.length," tabelas"]}),(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5",children:[(0,a.jsx)("span",{className:"text-[10px] uppercase tracking-wide text-muted-foreground",children:"copiar:"}),R.map(e=>(0,a.jsx)(D.$,{size:"sm",variant:"outline",className:"h-6 px-2 text-[11px]",onClick:()=>r(e),children:t===e.id?"✓":e.label},e.id))]})]})}function M({selected:e,tables:t,relations:n,endpoints:s,draftGraph:r,onClose:o,commentsContent:i,commentsCount:d=0,activeTab:c,onTabChange:u,onAddComment:p,topOffset:x}){let h,f,g=new Map(t.map(e=>[e.id,e.name])),b=!!i,v=c??"details",y=e?.kind==="table"?t.find(t=>t.id===e.id)?.name??null:e?.kind==="endpoint"&&(f=s.find(t=>t.id===e.id))?`${f.method} ${f.path}`:null;if(e?.kind==="table"){let r=t.find(t=>t.id===e.id);h=r?(0,a.jsx)(O,{table:r,relations:n,endpoints:s,nameById:g}):null}else if(e?.kind==="endpoint"){let t=s.find(t=>t.id===e.id);h=t?(0,a.jsx)(F,{ep:t,nameById:g}):null}else h=(0,a.jsx)(L,{tables:t,relations:n,endpoints:s});return(0,a.jsxs)(I.b,{className:"absolute bottom-3 right-3 z-10 flex w-80 flex-col rounded-2xl",style:{top:x??12},children:[b?(0,a.jsxs)("div",{className:"flex items-center justify-between border-b border-white/10 px-1 py-1",children:[(0,a.jsxs)("div",{className:"flex items-center gap-0.5",children:[(0,a.jsx)(P,{active:"details"===v,onClick:()=>u?.("details"),children:"Details"}),(0,a.jsxs)(P,{active:"comments"===v,onClick:()=>u?.("comments"),children:["Comments",d>0&&(0,a.jsx)("span",{className:"ml-1 rounded-full bg-white/10 px-1 text-[9px] font-semibold leading-4",children:d})]})]}),(0,a.jsx)("button",{onClick:o,title:"Close panel",className:"mr-1 rounded-md p-1 text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground",children:(0,a.jsx)(m.A,{className:"size-4"})})]}):(0,a.jsxs)("div",{className:"flex items-center justify-between border-b border-white/10 px-3.5 py-2.5",children:[(0,a.jsx)("span",{className:"text-[11px] font-semibold uppercase tracking-wide text-muted-foreground",children:"Panel"}),(0,a.jsx)("button",{onClick:o,title:"Close panel",className:"rounded-md p-1 text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground",children:(0,a.jsx)(m.A,{className:"size-4"})})]}),(0,a.jsx)("div",{className:"flex-1 overflow-y-auto",children:"comments"===v&&b?(0,a.jsx)("div",{className:"p-3",children:i}):(0,a.jsxs)(a.Fragment,{children:[r.tables.length>0&&(0,a.jsx)("div",{className:"border-b border-white/10 p-3.5",children:(0,a.jsx)($,{draftGraph:r})}),(0,a.jsxs)("div",{className:"p-4",children:[p&&y&&(0,a.jsxs)("button",{type:"button",onClick:()=>p(y),className:"mb-3 flex w-full items-center justify-center gap-1.5 rounded-lg border border-white/10 bg-white/[0.03] px-3 py-1.5 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-white/[0.06] hover:text-foreground",children:[(0,a.jsx)(l.A,{className:"size-3.5"}),"Comment on this ",e?.kind==="endpoint"?"endpoint":"table"]}),h]})]})})]})}function P({active:e,onClick:t,children:n}){return(0,a.jsx)("button",{type:"button",onClick:t,className:(0,x.cn)("flex items-center gap-1 rounded-md px-2.5 py-1 text-[11px] font-medium transition-colors",e?"bg-white/10 text-foreground":"text-muted-foreground hover:text-foreground"),children:n})}function O({table:e,relations:t,endpoints:n,nameById:s}){let r=t.filter(t=>t.fromTableId===e.id),o=t.filter(t=>t.toTableId===e.id),i=n.map(t=>({e:t,u:t.tables.find(t=>t.tableId===e.id)})).filter(e=>e.u);return(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-xs uppercase tracking-wide",style:{color:(0,h.qA)(e.domain)},children:e.domain??"table"}),(0,a.jsx)("h2",{className:"font-mono text-lg font-semibold",children:e.name}),e.description&&(0,a.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:e.description})]}),(0,a.jsx)(_,{title:`Columns (${e.columns.length})`,children:(0,a.jsx)("ul",{className:"space-y-0.5",children:e.columns.map(e=>(0,a.jsxs)("li",{className:"flex items-center gap-1.5 text-xs",children:[e.isPk?(0,a.jsx)(d.A,{className:"size-3 text-amber-400"}):e.isFk?(0,a.jsx)(c.A,{className:"size-3 text-sky-400"}):(0,a.jsx)("span",{className:"size-3"}),(0,a.jsx)("span",{className:"font-mono",children:e.name}),(0,a.jsxs)("span",{className:"ml-auto font-mono text-[10px] text-muted-foreground",children:[e.type,!e.nullable&&" \xb7NN"]})]},e.name))})}),r.length>0&&(0,a.jsx)(_,{title:"References (FK out)",children:(0,a.jsx)("ul",{className:"space-y-1 text-xs",children:r.map(e=>(0,a.jsxs)("li",{className:"font-mono text-muted-foreground",children:[e.fromColumn," → ",s.get(e.toTableId),".",e.toColumn]},e.id))})}),o.length>0&&(0,a.jsx)(_,{title:"Referenced by (FK in)",children:(0,a.jsx)("ul",{className:"space-y-1 text-xs",children:o.map(e=>(0,a.jsxs)("li",{className:"font-mono text-muted-foreground",children:[s.get(e.fromTableId),".",e.fromColumn]},e.id))})}),i.length>0&&(0,a.jsx)(_,{title:`Used by endpoints (${i.length})`,children:(0,a.jsx)("ul",{className:"space-y-1 text-xs",children:i.map(({e,u:t})=>(0,a.jsxs)("li",{className:"flex items-center gap-1.5",children:[(0,a.jsx)("span",{style:{color:h.e6[e.method]},className:"font-bold",children:e.method}),(0,a.jsx)("span",{className:"truncate font-mono",children:e.path}),(0,a.jsx)("span",{className:"ml-auto",style:{color:h.ru[t.access]},children:t.access})]},e.id))})})]})}function F({ep:e,nameById:t}){return(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"rounded px-1.5 py-0.5 text-[11px] font-bold",style:{background:`${h.e6[e.method]}22`,color:h.e6[e.method]},children:e.method}),(0,a.jsx)("h2",{className:"mt-2 font-mono text-base font-semibold",children:e.path}),e.description&&(0,a.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:e.description})]}),(0,a.jsx)(_,{title:`Tables used (${e.tables.length})`,children:(0,a.jsx)("ul",{className:"space-y-1 text-xs",children:e.tables.map(e=>(0,a.jsxs)("li",{className:"flex items-center gap-1.5",children:[(0,a.jsx)("span",{className:"font-mono",children:t.get(e.tableId)}),(0,a.jsx)("span",{className:"ml-auto",style:{color:h.ru[e.access]},children:e.access})]},e.tableId))})})]})}function L({tables:e,relations:t,endpoints:n}){return(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{className:"text-sm font-semibold",children:"Database"}),(0,a.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:"Live schema derived from your code. Click a table or endpoint to see details. Drag to rearrange — positions are saved."})]}),(0,a.jsxs)("dl",{className:"grid grid-cols-3 gap-2 text-center",children:[(0,a.jsx)(B,{label:"tables",value:e.length}),(0,a.jsx)(B,{label:"FKs",value:t.length}),(0,a.jsx)(B,{label:"endpoints",value:n.length})]}),(0,a.jsx)(_,{title:"Legend",children:(0,a.jsxs)("ul",{className:"space-y-1 text-xs text-muted-foreground",children:[(0,a.jsxs)("li",{className:"flex items-center gap-1.5",children:[(0,a.jsx)(d.A,{className:"size-3 text-amber-400"})," primary key"]}),(0,a.jsxs)("li",{className:"flex items-center gap-1.5",children:[(0,a.jsx)(c.A,{className:"size-3 text-sky-400"})," foreign key"]}),(0,a.jsx)("li",{children:"— gray line: FK relation between tables"}),(0,a.jsx)("li",{children:"– – dashed line: endpoint uses table (read/write)"})]})})]})}function _({title:e,children:t}){return(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{className:"mb-1.5 text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:e}),t]})}function B({label:e,value:t}){return(0,a.jsxs)("div",{className:"rounded-lg border border-white/10 bg-white/[0.03] py-2",children:[(0,a.jsx)("div",{className:"text-lg font-semibold",children:t}),(0,a.jsx)("div",{className:"text-[10px] uppercase tracking-wide text-muted-foreground",children:e})]})}var H=n(56614),U=n(62311);let K=new Set(["GET","HEAD","OPTIONS"]),G=e=>e.trim().toLowerCase();var X=n(85618),W=n(80846),Y=n(17356),Z=n(45486),J=n(15330),V=n(60976),q=n(64577),Q=n(57144);let ee={dbTable:function({id:e,data:t,selected:n}){var r;let o,i,l="DRAFT"===t.source,f="added"===t.diffStatus?"#7bd389":"modified"===t.diffStatus?"#ffb86b":"#4ea1ff",b="added"===t.diffStatus?"new":"modified"===t.diffStatus?"changed":"draft",y=t.diffChanges?.length?t.diffChanges.join("\n"):"draft",N=l?f:(0,h.qA)(t.domain),A=(r={domain:t.domain,columns:t.columns},o=[],(i=r.columns.filter(e=>w.test(e.name)).map(e=>e.name)).length&&o.push({label:"secrets",tone:"danger",title:`stores credentials: ${i.join(", ")}`}),r.domain&&/auth/i.test(r.domain)&&o.push({label:"auth",tone:"warn",title:"auth-domain table"}),o),z=g(),[T,I]=(0,s.useState)(t.name),[D,R]=(0,s.useState)(t.columns),[$,M]=(0,s.useState)(!1);(0,s.useEffect)(()=>{I(t.name),R(t.columns)},[t.rev]);let P=e=>e.stopPropagation(),O=t=>{R(t),z.patchTable(e,{columns:t})},F=(t.pins??[]).filter(e=>null===e.column),L=e=>(t.pins??[]).filter(t=>t.column===e),_=(0,x.cn)("relative rounded-xl border bg-[#161618]/95 text-card-foreground shadow-[0_18px_50px_-22px_rgba(0,0,0,0.9)] backdrop-blur",n&&"ring-2 ring-[var(--accent,#f5b942)]");return l?(0,a.jsxs)("div",{className:(0,x.cn)(_,"group/card w-[252px]"),style:{borderColor:`${f}59`},children:[(0,a.jsx)(C,{}),(0,a.jsxs)("div",{className:"group/row relative flex items-center gap-1.5 rounded-t-[11px] px-3 py-2",style:{background:`${f}14`},children:[(0,a.jsx)("input",{value:T,onChange:e=>I(e.target.value),onBlur:()=>{let n=T.trim();n&&n!==t.name&&z.patchTable(e,{name:n})},onKeyDown:e=>{P(e),"Enter"===e.key&&e.currentTarget.blur()},placeholder:"table",className:(0,x.cn)(k,"min-w-0 flex-1 bg-transparent font-mono text-[13px] font-semibold tracking-tight outline-none")}),(0,a.jsx)(j,{badges:A}),(0,a.jsx)("span",{title:y,className:"shrink-0 rounded-md border px-1.5 py-px font-mono text-[9px] font-semibold uppercase tracking-[0.14em]",style:{background:`${f}1f`,borderColor:`${f}55`,color:f},children:b}),(0,a.jsx)("button",{type:"button",onClick:t=>{P(t),$?z.deleteTable(e):M(!0)},onBlur:()=>M(!1),title:"Delete table",className:(0,x.cn)(k,"shrink-0 transition-all",$?"text-red-300":"text-muted-foreground opacity-0 hover:text-red-300 group-hover/card:opacity-100"),children:(0,a.jsx)(u.A,{className:"size-3"})}),F.length>0?(0,a.jsx)(v.e0,{pins:F,onPinClick:t.onPinClick}):t.onComment&&(0,a.jsx)(E,{title:`Comment on ${t.name}`,onClick:()=>t.onComment?.(t.name)})]}),(0,a.jsxs)("div",{className:"divide-y divide-white/[0.05]",children:[D.map((e,n)=>{let s=L(e.name);return(0,a.jsxs)("div",{className:"group/row relative flex items-center gap-1.5 px-3 py-[5px] text-[12px]",children:[(0,a.jsx)("button",{type:"button",onClick:e=>{P(e),O(D.map((e,t)=>t===n?{...e,isPk:!e.isPk}:e))},title:"Primary key",className:(0,x.cn)(k,"shrink-0",e.isPk?"text-amber-300/90":"text-muted-foreground/40 hover:text-amber-300"),children:(0,a.jsx)(d.A,{className:"size-3"})}),(0,a.jsx)("button",{type:"button",onClick:e=>{P(e),O(D.map((e,t)=>t===n?{...e,isFk:!e.isFk}:e))},title:"Foreign key",className:(0,x.cn)(k,"shrink-0",e.isFk?"text-sky-400/80":"text-muted-foreground/40 hover:text-sky-400"),children:(0,a.jsx)(c.A,{className:"size-3"})}),(0,a.jsx)("input",{value:e.name,onChange:e=>R(t=>t.map((t,a)=>a===n?{...t,name:e.target.value}:t)),onBlur:()=>O(D),onKeyDown:P,placeholder:"column",className:(0,x.cn)(k,"min-w-0 flex-1 bg-transparent font-mono outline-none")}),t.fkTargets?.[e.name]?(0,a.jsxs)("span",{className:"w-16 shrink-0 truncate text-right font-mono text-[11px] text-muted-foreground/80",children:["→\xa0",t.fkTargets[e.name]]}):(0,a.jsx)("input",{value:e.type,onChange:e=>R(t=>t.map((t,a)=>a===n?{...t,type:e.target.value}:t)),onBlur:()=>O(D),onKeyDown:P,placeholder:"type",className:(0,x.cn)(k,"w-16 shrink-0 bg-transparent text-right font-mono text-[11px] text-muted-foreground/80 outline-none")}),(0,a.jsx)("button",{type:"button",onClick:e=>{P(e),O(D.filter((e,t)=>t!==n))},title:"Remove column",className:(0,x.cn)(k,"shrink-0 text-muted-foreground/40 opacity-0 transition-opacity hover:text-red-300 group-hover/card:opacity-100"),children:(0,a.jsx)(m.A,{className:"size-3"})}),s.length>0?(0,a.jsx)(v.e0,{pins:s,onPinClick:t.onPinClick}):t.onComment&&(0,a.jsx)(E,{title:`Comment on ${t.name}.${e.name}`,onClick:()=>t.onComment?.(`${t.name}.${e.name}`)})]},n)}),(0,a.jsxs)("button",{type:"button",onClick:e=>{P(e),O([...D,{name:"",type:"text",isPk:!1,isFk:!1,nullable:!0,note:null}])},className:(0,x.cn)(k,"flex w-full items-center gap-1 px-3 py-1.5 text-[10px] text-muted-foreground hover:text-foreground"),children:[(0,a.jsx)(p.A,{className:"size-3"})," column"]})]})]}):(0,a.jsxs)("div",{className:(0,x.cn)(_,"w-[240px]"),style:{borderColor:`${N}3d`},children:[(0,a.jsx)(C,{}),(0,a.jsxs)("div",{className:"group/row relative flex items-center justify-between rounded-t-[11px] px-3 py-2",style:{background:`${N}14`},children:[(0,a.jsxs)("span",{className:"flex items-center gap-1.5 font-mono text-[13px] font-semibold tracking-tight",children:["INTROSPECTION"===t.source&&(0,a.jsx)("span",{title:"live — derived from your code",className:"inline-block size-1.5 rounded-full bg-emerald-400"}),t.name]}),(0,a.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,a.jsx)(j,{badges:A}),t.domain&&(0,a.jsx)("span",{className:"text-[9px] uppercase tracking-[0.14em]",style:{color:N},children:t.domain})]}),F.length>0?(0,a.jsx)(v.e0,{pins:F,onPinClick:t.onPinClick}):t.onComment&&(0,a.jsx)(E,{title:`Comment on ${t.name}`,onClick:()=>t.onComment?.(t.name)})]}),(0,a.jsx)("div",{className:"divide-y divide-white/[0.05]",children:t.columns.map(e=>{let n=L(e.name);return(0,a.jsxs)("div",{className:"group/row relative flex items-center gap-2 px-3 py-[7px] text-[12px]",children:[e.isPk?(0,a.jsx)(d.A,{className:"size-3 shrink-0 text-amber-300/90"}):e.isFk?(0,a.jsx)(c.A,{className:"size-3 shrink-0 text-sky-400/80"}):(0,a.jsx)("span",{className:"size-3 shrink-0"}),(0,a.jsx)("span",{className:"truncate font-mono",children:e.name}),(0,a.jsx)(S,{c:e,fkTargets:t.fkTargets}),n.length>0?(0,a.jsx)(v.e0,{pins:n,onPinClick:t.onPinClick}):t.onComment&&(0,a.jsx)(E,{title:`Comment on ${t.name}.${e.name}`,onClick:()=>t.onComment?.(`${t.name}.${e.name}`)})]},e.name)})})]})},endpoint:function({id:e,data:t,selected:n}){var r;let o,i=h.e6[t.method]??"#8a8a8a",d="DRAFT"===t.source,c="added"===t.diffStatus?"#7bd389":"modified"===t.diffStatus?"#ffb86b":"#4ea1ff",m="added"===t.diffStatus?"new":"modified"===t.diffStatus?"changed":"draft",p=t.diffChanges?.length?t.diffChanges.join("\n"):"draft",f=(r={method:t.method,domain:t.domain,path:t.path},o=[],/^delete$/i.test(r.method.trim())&&o.push({label:"DELETE",tone:"danger",title:"destructive: deletes data"}),(r.domain&&/auth/i.test(r.domain)||N.test(r.path))&&o.push({label:"auth",tone:"warn",title:"auth-related endpoint"}),o),y=g(),[w,k]=(0,s.useState)(t.path),[C,E]=(0,s.useState)(!1);(0,s.useEffect)(()=>{k(t.path)},[t.rev]);let S=e=>e.stopPropagation();return(0,a.jsxs)("div",{className:(0,x.cn)("group relative flex w-[240px] items-center gap-2 rounded-lg border bg-[#161618]/95 px-2.5 py-1.5 text-card-foreground shadow-[0_12px_36px_-18px_rgba(0,0,0,0.9)] backdrop-blur",d?"border-dashed":"border-white/10",n&&"ring-2 ring-[var(--accent,#f5b942)]"),style:d?{borderColor:`${c}66`,background:`${c}0f`}:void 0,children:[(0,a.jsx)(b.x,{}),"INTROSPECTION"===t.source&&(0,a.jsx)("span",{title:"live — derived from your code",className:"inline-block size-1.5 shrink-0 rounded-full bg-emerald-400"}),d?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("select",{value:t.method,onChange:t=>y.patchEndpoint(e,{method:t.target.value}),onPointerDown:S,className:(0,x.cn)(A,"shrink-0 rounded bg-transparent text-[10px] font-bold outline-none"),style:{color:i},title:"Method",children:z.map(e=>(0,a.jsx)("option",{value:e,className:"bg-card text-foreground",children:e},e))}),(0,a.jsx)("input",{value:w,onChange:e=>k(e.target.value),onBlur:()=>{let n=w.trim();n&&n!==t.path&&y.patchEndpoint(e,{path:n})},onKeyDown:e=>{S(e),"Enter"===e.key&&e.currentTarget.blur()},className:(0,x.cn)(A,"min-w-0 flex-1 bg-transparent font-mono text-[11px] outline-none")}),(0,a.jsx)(j,{badges:f}),(0,a.jsx)("span",{title:p,className:"shrink-0 rounded px-1 py-0.5 text-[8px] font-semibold uppercase",style:{background:`${c}26`,color:c},children:m}),(0,a.jsx)("button",{type:"button",onClick:t=>{S(t),C?y.deleteEndpoint(e):E(!0)},onBlur:()=>E(!1),title:"Delete",className:(0,x.cn)(A,"shrink-0 transition-colors",C?"text-red-300":"text-muted-foreground hover:text-red-300"),children:(0,a.jsx)(u.A,{className:"size-3"})})]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("span",{className:"rounded px-1.5 py-0.5 text-[10px] font-bold",style:{background:`${i}22`,color:i},children:t.method}),(0,a.jsx)("span",{className:"min-w-0 flex-1 truncate font-mono text-[11px]",children:t.path}),(0,a.jsx)(j,{badges:f}),(0,a.jsx)("button",{type:"button",onClick:t=>{S(t),C?y.deleteRealEndpoint(e):E(!0)},onBlur:()=>E(!1),title:C?"Click again to delete":"Delete endpoint",className:(0,x.cn)(A,"shrink-0 opacity-0 transition-opacity group-hover:opacity-100",C?"text-red-300 opacity-100":"text-muted-foreground hover:text-red-300"),children:(0,a.jsx)(u.A,{className:"size-3"})})]}),(t.pins?.length??0)>0?(0,a.jsx)(v.e0,{pins:t.pins,onPinClick:t.onPinClick}):t.onComment&&(0,a.jsx)("button",{type:"button",title:`Comment on ${t.method} ${t.path}`,onClick:e=>{S(e),t.onComment?.(`${t.method} ${t.path}`)},className:(0,x.cn)(A,"absolute -right-3 top-1/2 z-10 flex size-6 -translate-y-1/2 items-center justify-center rounded-full border border-white/15 bg-[#242428] text-muted-foreground opacity-0 shadow-md transition-all group-hover:opacity-100 hover:border-[#ff7a45]/50 hover:text-[#ff7a45]"),children:(0,a.jsx)(l.A,{className:"size-3"})})]})},annotation:v.Sh},et={deletable:Q.I},en="beacon:db-draft",ea={proposedAt:0,status:"pending",tables:[],relations:[],endpoints:[]};function es({tables:e,relations:t,endpoints:n,draft:l,workspaceId:d,embedded:c=!1,draftRef:m,onEdit:p,controlRef:g,commentsContent:b,commentsCount:y=0,onAddComment:j,annotations:w,onPinClick:N,onUpdateComment:k,onRemoveComment:C,boardAnnotations:E}){let S=(0,r.useRouter)(),[A,z]=(0,s.useState)(!0),[I,D]=(0,s.useState)(null),[R,$]=(0,s.useState)(null),[P,O]=(0,s.useState)(null),[F,L]=(0,s.useState)(!1),[_,B]=(0,s.useState)("details"),[Q,er]=(0,s.useState)(!1);(0,s.useEffect)(()=>{if(g)return g.current={open:()=>{L(!0),B("details")},close:()=>{L(!1),B("details")},openComments:()=>{L(!0),B("comments")}},()=>{g&&(g.current=null)}},[g]);let[eo,ei]=(0,s.useState)(new Set),[el,ed]=(0,s.useState)(new Set),[ec,eu]=(0,s.useState)(new Set),[em,ep]=(0,s.useState)(()=>({past:[],present:l??ea,future:[],rev:0,edited:!1})),ex=em.present,eh=(0,s.useCallback)(e=>{ep(t=>{let n=e(t.present);return n===t.present?t:{past:[...t.past,t.present].slice(-100),present:n,future:[],rev:t.rev+1,edited:!0}})},[]),ef=(0,s.useCallback)(e=>{ep(t=>{let n=e(t.present);return n===t.present?t:{...t,present:n}})},[]),eg=(0,s.useCallback)(()=>ep(e=>e.past.length?{past:e.past.slice(0,-1),present:e.past[e.past.length-1],future:[e.present,...e.future],rev:e.rev+1,edited:!0}:e),[]),eb=(0,s.useCallback)(()=>ep(e=>e.future.length?{past:[...e.past,e.present],present:e.future[0],future:e.future.slice(1),rev:e.rev+1,edited:!0}:e),[]),ev=(0,s.useCallback)(e=>ep(t=>({past:[],present:e,future:[],rev:t.rev+1,edited:!1})),[]),ey=(0,s.useRef)(!1),ej=l?.proposedAt??0;(0,s.useEffect)(()=>{let e=null;if(ey.current)l&&l.proposedAt!==ex.proposedAt?e=l:!l&&(ex.tables.length>0||ex.endpoints.length>0)&&(e=ea);else{ey.current=!0;let t=null;try{let e=localStorage.getItem(en);if(e){let n=JSON.parse(e);n.workspaceId===d&&n.doc&&l&&n.doc.proposedAt===l.proposedAt&&(t=n.doc)}}catch{}e=t??l??null}e&&ev(e)},[ej]),(0,s.useEffect)(()=>{try{ex.tables.length>0||ex.endpoints.length>0?localStorage.setItem(en,JSON.stringify({workspaceId:d,doc:ex})):localStorage.removeItem(en)}catch{}},[ex,d]),(0,s.useEffect)(()=>{m&&(m.current=ex)},[m,ex]);let ew=(0,s.useRef)(!1);(0,s.useEffect)(()=>{em.edited&&!ew.current&&(ew.current=!0,p?.())},[em.edited,p]);let eN=(0,s.useMemo)(()=>ex.tables.map(e=>({id:e.id,name:e.name,domain:e.domain,description:e.description,source:"DRAFT",x:e.x,y:e.y,columns:e.columns})),[ex]),ek=(0,s.useMemo)(()=>ex.endpoints.map(e=>({id:e.id,method:e.method,path:e.path,domain:e.domain,description:e.description,source:"DRAFT",x:e.x,y:e.y,tables:e.links.map(e=>({tableId:e.tableId,access:e.access}))})),[ex]),eC=(0,s.useMemo)(()=>[...e,...eN],[e,eN]),eE=(0,s.useMemo)(()=>[...n,...ek],[n,ek]),eS=(0,s.useMemo)(()=>new Map,[]),eA=(0,s.useMemo)(()=>c?function(e,t){let n=new Map(e.map(e=>[G(e.name),e])),a=new Map;for(let e of t){let t=n.get(G(e.name));if(!t){a.set(e.id,{status:"added",changes:["new table"]});continue}let s=function(e,t){let n=new Map(e.map(e=>[G(e.name),e])),a=new Set(t.map(e=>G(e.name))),s=[];for(let e of t){let t=n.get(G(e.name));if(!t){s.push(`+ column ${e.name} (${e.type})`);continue}let a=[];G(t.type)!==G(e.type)&&a.push(`type ${t.type}→${e.type}`),t.isPk!==e.isPk&&a.push(e.isPk?"now PK":"no longer PK"),t.isFk!==e.isFk&&a.push(e.isFk?"now FK":"no longer FK"),t.nullable!==e.nullable&&a.push(e.nullable?"now nullable":"now required"),a.length&&s.push(`~ column ${e.name}: ${a.join(", ")}`)}for(let t of e)a.has(G(t.name))||s.push(`- column ${t.name}`);return s}(t.columns,e.columns);a.set(e.id,{status:s.length?"modified":"unchanged",changes:s})}return a}(e,eN):eS,[c,e,eN,eS]),ez=(0,s.useMemo)(()=>c?function(e,t){let n=e=>`${G(e.method)} ${G(e.path)}`,a=new Set(e.map(n)),s=new Map;for(let e of t)s.set(e.id,a.has(n(e))?{status:"unchanged",changes:[]}:{status:"added",changes:["new endpoint"]});return s}(n,ek):eS,[c,n,ek,eS]),eT=(0,s.useMemo)(()=>[...t,...ex.relations.map(e=>({id:e.id,fromTableId:e.fromTableId,toTableId:e.toTableId,fromColumn:e.fromColumn,toColumn:e.toColumn,label:e.label}))],[t,ex.relations]),eI=(0,s.useMemo)(()=>{let e=new Map;for(let t of eE)for(let n of t.tables)e.set(n.tableId,(e.get(n.tableId)??0)+1);return e},[eE]),eD=(0,s.useMemo)(()=>{let e=new Map;return eC.forEach(t=>e.set(t.id,t.x)),eE.forEach(t=>e.set(t.id,t.x)),e},[eC,eE]),eR=(0,s.useMemo)(()=>{let e=new Map(eC.map(e=>[e.id,e.name])),t=new Map;for(let n of eT){let a=e.get(n.toTableId);if(!a)continue;let s=t.get(n.fromTableId)??{};s[n.fromColumn]=a,t.set(n.fromTableId,s)}return t},[eT,eC]),e$=void 0!==E,[eM,eP]=(0,s.useState)(E??[]);(0,s.useEffect)(()=>{E&&eP(E)},[E]);let eO=(0,s.useMemo)(()=>({tables:eC.map(e=>({id:e.id,name:e.name,columns:e.columns.map(e=>e.name)})),endpoints:eE.map(e=>({id:e.id,method:e.method,path:e.path}))}),[eC,eE]),eF=(0,s.useMemo)(()=>{if(e$){let e=new Set([...eC.map(e=>e.id),...eE.map(e=>e.id)]);return eM.filter(t=>e.has(t.targetId)).map((e,t)=>({id:e.id,n:t+1,targetId:e.targetId,column:e.columnName,text:e.body,x:e.x,y:e.y}))}let e=new Map((w??[]).map(e=>[e.id,e.comment]));return(0,T.m)(w??[],eO).map(t=>({id:t.annotationId,n:t.n,targetId:t.targetId,column:t.column,text:e.get(t.annotationId)??"",x:null,y:null}))},[e$,eM,w,eO,eC,eE]),eL=(0,s.useMemo)(()=>{let e=new Map;for(let t of eF){let n=e.get(t.targetId)??[];n.push({id:t.id,n:t.n,column:t.column}),e.set(t.targetId,n)}return e},[eF]),e_=(0,s.useMemo)(()=>new Map(eF.map(e=>[`anno-${e.id}`,e.targetId])),[eF]),eB=(0,s.useCallback)(async e=>{let t=(0,T.m)([{id:"_",excerpt:e}],eO)[0];if(!t)return;let n=await fetch("/api/board-annotations",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({targetKind:t.kind,targetId:t.targetId,columnName:t.column??void 0})});if(n.ok){let e=await n.json();eP(t=>[...t,e])}},[eO]),eH=(0,s.useCallback)((e,t)=>{eP(n=>n.map(n=>n.id===e?{...n,...t}:n)),fetch(`/api/board-annotations/${e}`,{method:"PATCH",headers:{"content-type":"application/json"},body:JSON.stringify(t)})},[]),eU=(0,s.useCallback)(e=>{eP(t=>t.filter(t=>t.id!==e)),fetch(`/api/board-annotations/${e}`,{method:"DELETE"})},[]),eK=e$?eB:j,eG=(0,s.useCallback)((e,t)=>(eD.get(e)??0)<=(eD.get(t)??0)?{sourceHandle:"sr",targetHandle:"tl"}:{sourceHandle:"sl",targetHandle:"tr"},[eD]),eX=(0,s.useMemo)(()=>new Set([...ex.tables.map(e=>e.id),...ex.endpoints.map(e=>e.id)]),[ex]),eW=(0,s.useMemo)(()=>new Set(e.map(e=>e.id)),[e]),eY=(0,s.useCallback)(()=>{let e=eC.map(e=>({id:e.id,type:"dbTable",position:{x:e.x,y:e.y},data:{name:e.name,domain:e.domain,columns:e.columns,usageCount:eI.get(e.id)??0,source:e.source,rev:em.rev,diffStatus:eA.get(e.id)?.status,diffChanges:eA.get(e.id)?.changes,fkTargets:eR.get(e.id),pins:eL.get(e.id),onPinClick:N,onComment:eK}})),t=eE.map(e=>({id:e.id,type:"endpoint",position:{x:e.x,y:e.y},data:{method:e.method,path:e.path,domain:e.domain,source:e.source,rev:em.rev,diffStatus:ez.get(e.id)?.status,diffChanges:ez.get(e.id)?.changes,pins:eL.get(e.id),onPinClick:N,onComment:eK}})),n=new Map,a=new Map(eC.map(e=>[e.id,e])),s=new Map(eE.map(e=>[e.id,e]));return[...e,...t,...eF.map(e=>{let t=a.get(e.targetId),r=s.get(e.targetId),o=t?.x??r?.x??0,i=t?.y??r?.y??0,l=t?38+28*t.columns.length:42,d=n.get(e.targetId)??0;return n.set(e.targetId,d+1),{id:`anno-${e.id}`,type:"annotation",position:{x:e.x??o+26,y:e.y??i+l+64+112*d},data:{n:e.n,text:e.text,annotationId:e.id,onClick:e$||k?void 0:N,editable:e$||!!k,onChangeText:e$?(e,t)=>eH(e,{body:t}):k,onDelete:e$?eU:C}}})]},[eC,eE,eI,em.rev,eA,ez,eR,eL,eF,e$,N,k,C,eK,eH,eU]),[eZ,eJ,eV]=(0,o.ck)(eY());(0,s.useEffect)(()=>{eJ(e=>{let t=new Map(e.map(e=>[e.id,e.position]));return eY().map(e=>({...e,position:t.get(e.id)??e.position}))})},[eY,eJ]);let eq=(0,s.useCallback)((e,t,n,a)=>{fetch("/api/db/position",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({kind:e,id:t,x:n,y:a})})},[]),eQ=(0,s.useCallback)((e,t)=>{let{x:n,y:a}=t.position;if(t.id.startsWith("anno-")){e$&&eH(t.id.slice(5),{x:n,y:a});return}eX.has(t.id)?ef(e=>e.tables.some(e=>e.id===t.id)?{...e,tables:e.tables.map(e=>e.id===t.id?{...e,x:n,y:a}:e)}:e.endpoints.some(e=>e.id===t.id)?{...e,endpoints:e.endpoints.map(e=>e.id===t.id?{...e,x:n,y:a}:e)}:e):eq("endpoint"===t.type?"endpoint":"table",t.id,n,a)},[eX,ef,eq,e$,eH]),e0=(0,s.useMemo)(()=>eT.map(e=>({id:`fk-${e.id}`,source:e.fromTableId,target:e.toTableId,...eG(e.fromTableId,e.toTableId),type:"deletable",label:e.label??void 0,markerEnd:{type:i.TG.ArrowClosed,color:"#6b6b6b"},style:{stroke:"#6b6b6b"}})),[eT,eG]),e1=(0,s.useMemo)(()=>eE.flatMap(e=>e.tables.map(t=>{let n=h.ru[t.access]??"#5a5a5a";return{id:`u-${e.id}-${t.tableId}`,source:e.id,target:t.tableId,...eG(e.id,t.tableId),type:"default",markerEnd:{type:i.TG.ArrowClosed,color:n},style:{stroke:n,strokeDasharray:"4 4",opacity:.7}}})),[eE,eG]),e5=(0,s.useMemo)(()=>A?[...e0,...e1]:e0,[e0,e1,A]),e2=(0,s.useMemo)(()=>eF.map(e=>({id:`annoe-${e.id}`,source:e.targetId,sourceHandle:`pin-${e.id}`,target:`anno-${e.id}`,targetHandle:"in",type:"default",selectable:!1,zIndex:30,style:{stroke:v.V5,strokeWidth:1.5,opacity:.9}})),[eF]),e3=I?.id??P,e4=(0,s.useMemo)(()=>{if(R){let e=e5.find(e=>e.id===R);return e?new Set([e.source,e.target]):null}return e3?(0,h.F1)(e3,e5):null},[e3,R,e5]),e6=(0,s.useMemo)(()=>new Map(eC.map(e=>[e.id,{domain:e.domain,source:e.source}])),[eC]),e8=(0,s.useMemo)(()=>new Map(eE.map(e=>[e.id,{method:e.method,source:e.source}])),[eE]),e9=(0,s.useMemo)(()=>{let e=new Set;if(!A)for(let t of e8.keys())e.add(t);for(let[t,n]of e6)!eo.size||n.domain&&eo.has(n.domain)||e.add(t),el.size&&!el.has(n.source)&&e.add(t);for(let[t,n]of e8)ec.size&&!ec.has(n.method)&&e.add(t),el.size&&!el.has(n.source)&&e.add(t);return e},[A,e6,e8,eo,el,ec]),e7=(0,s.useMemo)(()=>eZ.map(e=>{if(e.id.startsWith("anno-")){let t=e_.get(e.id),n=!!t&&e9.has(t);return!!e.hidden!==n?{...e,hidden:n}:e}let t=e9.has(e.id);return e4?{...e,hidden:t,style:{...e.style,opacity:e4.has(e.id)?1:.45,transition:"opacity 120ms"}}:t?{...e,hidden:t}:e}),[eZ,e9,e4,e_]),te=(0,s.useMemo)(()=>e5.map(e=>{let t=e9.has(e.source)||e9.has(e.target);return e3||R?(R?e.id===R:e3&&(e.source===e3||e.target===e3))?{...e,hidden:t,zIndex:20,style:{...e.style,opacity:1,strokeWidth:2.5}}:{...e,hidden:t,selectable:!1,label:void 0,markerEnd:void 0,style:{...e.style,opacity:.08}}:t?{...e,hidden:t}:e}),[e5,e3,R,e9]),tt=(0,s.useMemo)(()=>Array.from(new Set(eC.map(e=>e.domain).filter(e=>!!e))).sort(),[eC]),tn=(0,s.useMemo)(()=>Array.from(new Set([...eC.map(e=>e.source),...eE.map(e=>e.source)])).sort(),[eC,eE]),ta=(0,s.useMemo)(()=>Array.from(new Set(eE.map(e=>e.method))).sort(),[eE]);function ts(e,t){t(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}let tr=+!A+eo.size+el.size+ec.size,to=(0,s.useCallback)(()=>{z(!0),ei(new Set),ed(new Set),eu(new Set)},[]),ti=(0,s.useCallback)(e=>{let{source:t,target:n}=e;t&&n&&t!==n&&eh(e=>{if(!(e.tables.some(e=>e.id===n)||eW.has(n)))return e;let a=e.endpoints.find(e=>e.id===t);return a?a.links.some(e=>e.tableId===n)?e:{...e,endpoints:e.endpoints.map(e=>{var a;return e.id===t?{...e,links:[...e.links,{tableId:n,access:(a=e.method,K.has(a.trim().toUpperCase())?"read":"write")}]}:e})}:e.tables.find(e=>e.id===t)?e.relations.some(e=>e.fromTableId===t&&e.toTableId===n)?e:{...e,relations:[...e.relations,{id:crypto.randomUUID(),fromTableId:t,toTableId:n,fromColumn:"fk",toColumn:"id",label:null}]}:e})},[eh,eW]),tl=(0,s.useMemo)(()=>({patchEndpoint:(e,t)=>eh(n=>({...n,endpoints:n.endpoints.map(n=>n.id===e?{...n,...t}:n)})),deleteEndpoint:e=>eh(t=>({...t,endpoints:t.endpoints.filter(t=>t.id!==e)})),patchTable:(e,t)=>eh(n=>({...n,tables:n.tables.map(n=>n.id===e?{...n,...t}:n)})),deleteTable:e=>eh(t=>({...t,tables:t.tables.filter(t=>t.id!==e),relations:t.relations.filter(t=>t.fromTableId!==e&&t.toTableId!==e),endpoints:t.endpoints.map(t=>({...t,links:t.links.filter(t=>t.tableId!==e)}))})),deleteRealEndpoint:e=>{fetch(`/api/endpoints/${e}`,{method:"DELETE"}).then(e=>{e.ok&&S.refresh()})}}),[eh,S]);(0,s.useEffect)(()=>{let e=e=>{if(!(e.metaKey||e.ctrlKey))return;let t=e.target;if(t&&/^(INPUT|TEXTAREA|SELECT)$/.test(t.tagName))return;let n=e.key.toLowerCase();"z"===n?(e.preventDefault(),e.shiftKey?eb():eg()):"y"===n&&(e.preventDefault(),eb())};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[eg,eb]);let td=(0,s.useCallback)(async()=>{er(!0);try{if((await fetch("/api/draft/approve",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(ex)})).ok){try{localStorage.removeItem(en)}catch{}ev(ea),S.refresh()}}finally{er(!1)}},[ex,ev,S]),tc=(0,s.useCallback)(async()=>{er(!0);try{await fetch("/api/draft",{method:"DELETE"})}catch{}try{localStorage.removeItem(en)}catch{}ev(ea),S.refresh(),er(!1)},[ev,S]),tu=(0,s.useMemo)(()=>{let e;return e=new Map(ex.tables.map(e=>[e.id,e.name])),{tables:ex.tables.map(e=>({name:e.name,domain:e.domain,description:e.description,columns:e.columns.map(e=>({name:e.name,type:e.type,isPk:e.isPk,isFk:e.isFk,nullable:e.nullable,note:e.note}))})),relations:ex.relations.flatMap(t=>{let n=e.get(t.fromTableId),a=e.get(t.toTableId);return n&&a?[{fromTable:n,fromColumn:t.fromColumn,toTable:a,toColumn:t.toColumn,label:t.label}]:[]}),endpoints:ex.endpoints.map(t=>({method:t.method,path:t.path,domain:t.domain,description:t.description,uses:t.links.flatMap(t=>{let n=e.get(t.tableId);return n?[{table:n,access:t.access}]:[]})}))}},[ex]),tm=ex.tables.length>0||ex.endpoints.length>0,tp=em.past.length>0,tx=em.future.length>0;return(0,a.jsx)(f.Provider,{value:tl,children:(0,a.jsxs)("div",{className:(0,x.cn)("canvas-dots relative w-full",c?"h-full":"h-screen"),children:[(0,a.jsxs)(o.Gc,{nodes:e7,edges:[...te,...e2.map(e=>({...e,hidden:e9.has(e.source)}))],nodeTypes:ee,edgeTypes:et,connectionMode:i.WZ.Loose,connectionLineStyle:{stroke:"var(--accent-2,#ff7a45)",strokeWidth:1.5,strokeDasharray:"4 4"},onNodesChange:eV,onConnect:ti,onNodeMouseEnter:(e,t)=>{"annotation"!==t.type&&O(t.id)},onNodeMouseLeave:()=>O(null),onNodeClick:(e,t)=>{if("annotation"===t.type)return void N?.(t.data.annotationId);let n="endpoint"===t.type?"endpoint":"table";D({id:t.id,kind:n}),$(null),L(!0),B("details")},onEdgeClick:(e,t)=>{$(t.id),D(null)},onPaneClick:()=>{D(null),$(null)},onNodeDragStop:eQ,onEdgesDelete:e=>{for(let t of e)if(t.id.startsWith("fk-")){let e=t.id.slice(3);fetch(`/api/db/relations/${e}`,{method:"DELETE"})}},onNodesDelete:e=>{for(let t of e)t.id.startsWith("anno-")||eX.has(t.id)||("endpoint"===t.type?fetch(`/api/endpoints/${t.id}`,{method:"DELETE"}):"dbTable"===t.type&&fetch(`/api/db/tables/${t.id}`,{method:"DELETE"}))},deleteKeyCode:["Backspace","Delete"],colorMode:"dark",fitView:!0,minZoom:.15,panOnScroll:!0,zoomActivationKeyCode:["Meta","Control"],proOptions:{hideAttribution:!0},children:[(0,a.jsx)(o.H2,{position:"bottom-right",className:"!overflow-hidden !rounded-xl !border !border-white/10 [&_button]:!border-white/10 [&_button]:!bg-card/70 [&_button]:!text-foreground [&_button]:!backdrop-blur"}),!c&&(0,a.jsx)(o.of,{pannable:!0,zoomable:!0,position:"bottom-left",style:{width:140,height:90},className:"!rounded-xl !border !border-white/10 !bg-card/50 !backdrop-blur",nodeColor:"#555"}),!c&&(0,a.jsx)(o.Zk,{position:"top-center",className:"glass rounded-full px-1 py-0.5",children:(0,a.jsx)(U.Z,{active:"DATABASE",tabs:[{value:"ROADMAP",label:"Roadmap",href:"/map?view=ROADMAP"},{value:"ARCHITECTURE",label:"Architecture",href:"/map?view=ARCHITECTURE"},{value:"FILES",label:"Files",href:"/map?view=FILES"},{value:"DATABASE",label:"Database",href:"/map?view=DATABASE"}]})}),(0,a.jsxs)(o.Zk,{position:"top-right",className:(0,x.cn)("flex items-center gap-1 transition-[margin] duration-200",F&&"!mr-[332px]",c&&"hidden"),children:[(0,a.jsx)("button",{type:"button",title:"Arrange board — pack tables + endpoints side by side",disabled:Q,onClick:async()=>{er(!0);try{await fetch("/api/db/arrange",{method:"POST"}),S.refresh()}finally{er(!1)}},className:"glass flex size-8 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:text-foreground disabled:opacity-40",children:(0,a.jsx)(X.A,{className:"size-4"})}),(0,a.jsxs)(H.er,{title:"Filters",trigger:(e,t)=>(0,a.jsxs)("button",{type:"button",onClick:t,title:"Filters",className:(0,x.cn)("glass relative flex size-8 items-center justify-center rounded-lg transition-colors",e||tr>0?"text-foreground":"text-muted-foreground hover:text-foreground"),children:[(0,a.jsx)(W.A,{className:"size-4"}),tr>0&&(0,a.jsx)("span",{className:"absolute -right-1 -top-1 flex h-4 min-w-4 items-center justify-center rounded-full bg-[var(--accent-2,#ff7a45)] px-1 text-[9px] font-semibold text-white",children:tr})]}),children:[(0,a.jsx)(H.r1,{title:"Show",children:(0,a.jsx)(H.vu,{tone:"accent",on:A,onClick:()=>z(e=>!e),children:"endpoints"})}),tt.length>0&&(0,a.jsx)(H.r1,{title:"Domain",children:tt.map(e=>(0,a.jsx)(H.vu,{on:eo.has(e),onClick:()=>ts(e,ei),children:e},e))}),ta.length>0&&(0,a.jsx)(H.r1,{title:"Method",children:ta.map(e=>(0,a.jsx)(H.vu,{on:ec.has(e),onClick:()=>ts(e,eu),children:e},e))}),tn.length>0&&(0,a.jsx)(H.r1,{title:"Source",children:tn.map(e=>(0,a.jsx)(H.vu,{on:el.has(e),onClick:()=>ts(e,ed),children:e.toLowerCase()},e))}),tr>0&&(0,a.jsx)("button",{type:"button",onClick:to,className:"mt-1 w-full rounded-md border border-white/10 px-2 py-1 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-white/5 hover:text-foreground",children:"clear filters"})]}),(0,a.jsx)(H.er,{title:"Legend",trigger:(e,t)=>(0,a.jsx)("button",{type:"button",onClick:t,title:"Legend",className:(0,x.cn)("glass flex size-8 items-center justify-center rounded-lg transition-colors",e?"text-foreground":"text-muted-foreground hover:text-foreground"),children:(0,a.jsx)(Y.A,{className:"size-4"})}),children:(0,a.jsxs)("ul",{className:"space-y-1.5 text-[10.5px] text-muted-foreground",children:[(0,a.jsxs)("li",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{"aria-hidden":!0,className:"inline-block h-px w-6 bg-[#6b6b6b]"}),(0,a.jsx)("span",{children:"foreign key \xb7 drag from a table handle"})]}),(0,a.jsxs)("li",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{"aria-hidden":!0,className:"inline-block h-0 w-6 border-t border-dashed",style:{borderColor:"#4ea1ff"}}),(0,a.jsx)("span",{children:"endpoint read \xb7 GET / POST / etc"})]}),(0,a.jsxs)("li",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{"aria-hidden":!0,className:"inline-block h-0 w-6 border-t border-dashed",style:{borderColor:"#ffb86b"}}),(0,a.jsx)("span",{children:"endpoint write"})]}),(0,a.jsxs)("li",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"inline-block rounded border border-dashed border-sky-400/50 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-sky-300",children:"draft"}),(0,a.jsx)("span",{children:"agent-proposed \xb7 approve to persist"})]})]})}),!F&&(0,a.jsx)("button",{onClick:()=>L(!0),title:"Show panel",className:"glass flex size-8 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:text-foreground",children:(0,a.jsx)(Z.A,{className:"size-4"})})]}),tm&&(0,a.jsxs)(o.Zk,{position:"bottom-center",className:"glass flex items-center gap-1 rounded-xl p-1.5",children:[(0,a.jsxs)("button",{onClick:eg,disabled:!tp,title:"Undo (⌘Z)",className:"flex items-center gap-1 rounded-md px-2 py-1 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground disabled:opacity-30 disabled:hover:bg-transparent",children:[(0,a.jsx)(J.A,{className:"size-3.5"})," undo"]}),(0,a.jsxs)("button",{onClick:eb,disabled:!tx,title:"Redo (⇧⌘Z)",className:"flex items-center gap-1 rounded-md px-2 py-1 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground disabled:opacity-30 disabled:hover:bg-transparent",children:[(0,a.jsx)(V.A,{className:"size-3.5"})," redo"]}),!c&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("span",{className:"mx-1 h-4 w-px bg-white/10"}),(0,a.jsxs)("button",{onClick:tc,disabled:Q,title:"Discard draft",className:"flex items-center gap-1 rounded-md px-2 py-1 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-red-500/15 hover:text-red-300 disabled:opacity-40",children:[(0,a.jsx)(u.A,{className:"size-3.5"})," discard"]}),(0,a.jsxs)("button",{onClick:td,disabled:Q,title:"Approve and persist to the schema",className:"flex items-center gap-1 rounded-md border border-emerald-500/40 bg-emerald-500/15 px-2.5 py-1 text-[11px] font-semibold text-emerald-300 transition-colors hover:bg-emerald-500/25 disabled:opacity-40",children:[(0,a.jsx)(q.A,{className:"size-3.5"})," approve draft"]})]})]})]}),F&&(0,a.jsx)(M,{selected:I,tables:eC,relations:eT,endpoints:eE,draftGraph:tu,onClose:()=>{L(!1),B("details")},commentsContent:b,commentsCount:y,activeTab:_,onTabChange:B,onAddComment:eK,topOffset:c?64:void 0})]})})}},36077:(e,t,n)=>{n.d(t,{MapClient:()=>ew});var a=n(95155),s=n(12115),r=n(98112),o=n(6266),i=n(81750);n(53255);var l=n(17356),d=n(2125),c=n(68319),u=n(15480),m=n(65377),p=n(17494),x=n(80846),h=n(45486),f=n(73321),g=n(95635),b=n(17918),v=n(9339);let y=(0,v.createServerReference)("4027c2809699e746c9dc2d4de53fa4e02fc880143a",v.callServer,void 0,v.findSourceMapURL,"acceptSuggestionAction");var j=n(32133),w=n(65408),N=n(8962),k=n(84824),C=n(5736),E=n(86272),S=n(64577),A=n(9005),z=n(65738),T=n(40638),I=n(26518);let D=["PENDING","IN_PROGRESS","DONE","BLOCKED","CANCELLED","DEPRIORITIZED"],R=["KEEP","REBUILD","REPLACE","DROP"],$=["IN_PROGRESS","PENDING","BLOCKED","DONE","DEPRIORITIZED","CANCELLED"],M={DONE:{label:"Done",className:"border-emerald-500/30 bg-emerald-500/15 text-emerald-300"},IN_PROGRESS:{label:"In progress",className:"border-sky-500/30 bg-sky-500/15 text-sky-300"},PENDING:{label:"Pending",className:"border-amber-500/30 bg-amber-500/10 text-amber-200"},BLOCKED:{label:"Blocked",className:"border-orange-500/30 bg-orange-500/15 text-orange-300"},CANCELLED:{label:"Cancelled",className:"border-zinc-500/30 bg-zinc-500/10 text-zinc-400 line-through"},DEPRIORITIZED:{label:"Deprioritized",className:"border-zinc-600/40 bg-zinc-600/10 text-zinc-400"},KEEP:{label:"Keep",className:"border-emerald-500/30 bg-emerald-500/15 text-emerald-300"},REBUILD:{label:"Rebuild",className:"border-violet-500/30 bg-violet-500/15 text-violet-300"},REPLACE:{label:"Replace",className:"border-rose-500/30 bg-rose-500/15 text-rose-300"},DROP:{label:"Drop",className:"border-zinc-500/30 bg-zinc-500/10 text-zinc-400 line-through"}},P=["bg-emerald-500/15 text-emerald-300","bg-sky-500/15 text-sky-300","bg-violet-500/15 text-violet-300","bg-amber-500/15 text-amber-200","bg-rose-500/15 text-rose-300","bg-cyan-500/15 text-cyan-300","bg-fuchsia-500/15 text-fuchsia-300","bg-lime-500/15 text-lime-300","bg-orange-500/15 text-orange-300","bg-teal-500/15 text-teal-300","bg-indigo-500/15 text-indigo-300","bg-pink-500/15 text-pink-300"];function O(e){let t=(e??"").trim().toUpperCase();if(!t)return"bg-white/[0.06] text-muted-foreground";let n=0;for(let e=0;e<t.length;e++)n=31*n+t.charCodeAt(e)>>>0;return P[n%P.length]}let F=(0,s.createContext)(null);var L=n(60874),_=n(91337);let B=[{v:0,l:"P0 \xb7 critical"},{v:1,l:"P1 \xb7 high"},{v:2,l:"P2 \xb7 medium"},{v:3,l:"P3 \xb7 low"}],H="nodrag nopan";function U({nodeId:e}){let t=(0,f.useRouter)(),[n,r]=(0,s.useState)(!1),[o,i]=(0,s.useState)(""),[l,d]=(0,s.useState)(!1),u=()=>{r(!1),i("")},m=async()=>{let n=o.trim();if(n&&!l){d(!0);try{(await fetch("/api/bug-flags",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({nodeId:e,by:"user",note:n})})).ok&&(u(),t.refresh())}finally{d(!1)}}};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("button",{type:"button",title:"Flag a bug on this component",onClick:e=>{e.stopPropagation(),r(e=>!e)},className:(0,_.cn)(H,"absolute -right-3 top-[calc(50%-28px)] z-10 flex size-6 -translate-y-1/2 items-center justify-center rounded-full border border-white/15 bg-[#242428] text-muted-foreground shadow-md transition-all hover:border-rose-400/50 hover:text-rose-300",n?"border-rose-400/50 text-rose-300 opacity-100":"opacity-0 group-hover/nc:opacity-100"),children:(0,a.jsx)(c.A,{className:"size-3"})}),n&&(0,a.jsxs)("div",{onClick:e=>e.stopPropagation(),className:(0,_.cn)(H,"absolute -right-2 top-[calc(50%-28px)] z-20 w-60 translate-x-full rounded-xl border border-rose-400/25 bg-[#1c1c1f] p-2 shadow-xl"),children:[(0,a.jsxs)("div",{className:"mb-1.5 flex items-center justify-between",children:[(0,a.jsxs)("span",{className:"flex items-center gap-1 text-[10px] font-semibold uppercase tracking-wide text-rose-300",children:[(0,a.jsx)(c.A,{className:"size-3"})," Flag a bug"]}),(0,a.jsx)("button",{type:"button",title:"Cancel",onClick:u,className:"rounded p-0.5 text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground",children:(0,a.jsx)("span",{className:"block px-1 text-[11px] leading-none",children:"✕"})})]}),(0,a.jsx)("textarea",{autoFocus:!0,rows:2,value:o,placeholder:"What did you find?",onChange:e=>i(e.target.value),onKeyDown:e=>{e.stopPropagation(),"Escape"===e.key&&u(),"Enter"!==e.key||e.shiftKey||(e.preventDefault(),m())},className:"field-sizing-content max-h-40 min-h-12 w-full resize-none rounded-md bg-white/[0.04] px-1.5 py-1 text-xs outline-none placeholder:text-muted-foreground/50 focus:bg-white/[0.07]"}),(0,a.jsx)("button",{type:"button",disabled:l||!o.trim(),onClick:()=>void m(),className:"mt-1.5 w-full rounded-md bg-rose-500/15 py-1 text-[11px] font-semibold text-rose-300 transition-colors hover:bg-rose-500/25 disabled:opacity-50",children:l?"Flagging…":"Flag bug"})]})]})}function K({id:e,data:t,selected:n}){let{categories:r,statuses:o,patch:i,isExpanded:l,toggleExpand:d,openDetailed:u,removeNode:m,editingTitleId:p,onAskAgent:x}=function(){let e=(0,s.useContext)(F);if(!e)throw Error("useNodeEdit must be used inside NodeEditContext");return e}(),f=l(e),[v,D]=(0,s.useState)(!1),[R,$]=(0,s.useState)(!1),[P,G]=(0,s.useState)(t.title),[X,W]=(0,s.useState)(t.cluster??""),[Y,Z]=(0,s.useState)(t.plain??""),J=0===t.priority,V="BUG"===t.kind&&"ROADMAP"===t.view,q="ARCHITECTURE"===t.view,Q=t.openBugs??0,ee="CANCELLED"===t.status||"DROP"===t.status,et="DEPRIORITIZED"===t.status,en="DRAFT"===t.source,ea="IN_PROGRESS"===t.status,es="INIT"===t.source&&"ROADMAP"===t.view,er=e=>e.stopPropagation(),[eo,ei]=(0,s.useTransition)();return(0,a.jsxs)("div",{className:(0,_.cn)("group/nc relative rounded-lg border bg-card px-2.5 py-2 text-card-foreground shadow-sm transition","w-fit max-w-96",f?"min-w-80":"min-w-64",en?"border-dashed border-sky-400/50 bg-sky-500/[0.06]":es?"border-dashed border-violet-400/60 bg-violet-500/[0.07] shadow-[0_0_0_1px_rgba(167,139,250,0.18)]":J?"border-[#ff3860]/60 shadow-[0_0_0_1px_rgba(255,56,96,0.15)]":"border-border",V&&!en&&"border-rose-400/50 bg-rose-500/[0.05]",ea&&"border-sky-400/60 shadow-[0_0_0_1px_rgba(56,160,255,0.25)]",t.isNext&&"border-emerald-400/70 shadow-[0_0_0_2px_rgba(52,211,153,0.35)]",n&&"ring-2 ring-[var(--accent,#f5b942)]",ee&&"opacity-60",et&&"opacity-70 border-dashed"),children:[(0,a.jsx)(g.x,{}),q&&(0,a.jsx)(U,{nodeId:e}),(t.pins?.length??0)>0?(0,a.jsx)(b.e0,{pins:t.pins,onPinClick:t.onPinClick}):t.onComment&&(0,a.jsx)("button",{type:"button",title:`Annotate ${t.title}`,onClick:e=>{er(e),t.onComment?.(t.title)},className:(0,_.cn)(H,"absolute -right-3 top-1/2 z-10 flex size-6 -translate-y-1/2 items-center justify-center rounded-full border border-white/15 bg-[#242428] text-muted-foreground opacity-0 shadow-md transition-all group-hover/nc:opacity-100 hover:border-[#ff7a45]/50 hover:text-[#ff7a45]"),children:(0,a.jsx)(j.A,{className:"size-3"})}),t.isNext&&(0,a.jsx)("div",{className:"mb-1 inline-flex items-center gap-1 rounded bg-emerald-500/15 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-emerald-300",children:"work on next"}),(0,a.jsxs)("div",{className:"flex w-0 min-w-full items-start gap-1.5",children:[ea&&(0,a.jsx)("span",{title:"em andamento",className:"mt-1.5 inline-block size-2 shrink-0 animate-pulse rounded-full bg-sky-400"}),t.isCriterion&&!ea&&(0,a.jsx)("span",{title:"Success criterion",className:"mt-1.5 inline-block size-1.5 shrink-0 rounded-full bg-[var(--accent,#f5b942)]"}),(0,a.jsx)("textarea",{rows:1,value:P,autoFocus:p===e,placeholder:"Title…",onFocus:t=>{p===e&&t.currentTarget.select()},onChange:e=>G(e.target.value),onBlur:()=>{let n=P.trim();n&&n!==t.title&&i(e,{title:n},!0)},onKeyDown:e=>{er(e),"Enter"!==e.key||e.shiftKey||(e.preventDefault(),e.currentTarget.blur())},className:(0,_.cn)(H,"field-sizing-content w-full resize-none bg-transparent text-sm font-medium leading-snug outline-none placeholder:text-muted-foreground/60",ee&&"line-through")}),(0,a.jsx)("button",{type:"button",onClick:t=>{er(t),d(e)},title:f?"Collapse":"Expand",className:(0,_.cn)(H,"mt-0.5 shrink-0 text-muted-foreground hover:text-foreground"),children:f?(0,a.jsx)(w.A,{className:"size-3.5"}):(0,a.jsx)(N.A,{className:"size-3.5"})})]}),((t.signals?.untested??0)>0||t.signals?.auth||Q>0)&&(0,a.jsxs)("div",{className:"mt-1 flex w-0 min-w-full flex-wrap items-center gap-1",children:[Q>0&&(0,a.jsxs)("span",{title:`${Q} open bug flag(s) — raised by you or an agent examining this code`,className:"flex items-center gap-1 rounded bg-rose-500/15 px-1 text-[9px] font-semibold uppercase tracking-wide text-rose-300",children:[(0,a.jsx)(c.A,{className:"size-2.5"}),Q," ",1===Q?"bug":"bugs"]}),(t.signals?.untested??0)>0&&(0,a.jsxs)("span",{title:`${t.signals.untested} of ${t.signals.total} attached file(s) have no test importing them`,className:"flex items-center gap-1 rounded bg-amber-500/15 px-1 text-[9px] font-semibold uppercase tracking-wide text-amber-300",children:[(0,a.jsx)(k.A,{className:"size-2.5"}),t.signals.untested," untested"]}),t.signals?.auth&&(0,a.jsxs)("span",{title:"touches auth-sensitive files",className:"flex items-center gap-1 rounded bg-red-500/15 px-1 text-[9px] font-semibold uppercase tracking-wide text-red-300",children:[(0,a.jsx)(C.A,{className:"size-2.5"})," auth"]})]}),t.role&&(0,a.jsx)("div",{className:(0,_.cn)("mt-0.5 w-0 min-w-full text-[10px] leading-snug text-muted-foreground",!f&&"line-clamp-1"),children:t.role}),(0,a.jsxs)("div",{className:"mt-2 flex items-center gap-1.5",children:["ROADMAP"===t.view?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("span",{title:V?"Bug — something to fix":t.isChild?"Sub-task of a feature":"Feature — top-level roadmap item",className:(0,_.cn)("flex shrink-0 items-center gap-1 rounded px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide",V?"bg-rose-500/15 text-rose-300":t.isChild?"bg-zinc-500/15 text-zinc-300":"bg-sky-500/15 text-sky-300"),children:[V&&(0,a.jsx)(c.A,{className:"size-2.5"}),V?"bug":t.isChild?"sub-task":"feature"]}),es&&(0,a.jsxs)("span",{className:(0,_.cn)("flex items-center gap-1 rounded bg-violet-500/15 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-violet-300",eo&&"opacity-50"),children:[(0,a.jsx)(E.A,{className:"size-2.5"})," IA",(0,a.jsx)("button",{type:"button",title:"Accept suggestion — turn it into your own feature",disabled:eo,onClick:t=>{er(t),ei(async()=>y(e))},className:(0,_.cn)(H,"-my-0.5 rounded p-0.5 hover:bg-emerald-500/20 hover:text-emerald-300"),children:(0,a.jsx)(S.A,{className:"size-2.5"})}),(0,a.jsx)("button",{type:"button",title:"Dismiss suggestion (deletes the card)",disabled:eo,onClick:t=>{er(t),m(e)},className:(0,_.cn)(H,"-my-0.5 -ml-0.5 rounded p-0.5 hover:bg-red-500/20 hover:text-red-300"),children:(0,a.jsx)(A.A,{className:"size-2.5"})})]}),(0,a.jsx)("input",{list:`cats-${e}`,value:X,placeholder:"category",onChange:e=>W(e.target.value),onBlur:()=>{let n=X.trim()||null;n!==(t.cluster??null)&&i(e,{cluster:n},!0)},onKeyDown:e=>{er(e),"Enter"===e.key&&e.currentTarget.blur()},className:(0,_.cn)(H,"field-sizing-content min-w-12 max-w-[65%] rounded px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide outline-none focus:brightness-125 [&::-webkit-calendar-picker-indicator]:hidden",O(X))})]}):(0,a.jsxs)(a.Fragment,{children:[t.isChild&&(0,a.jsx)("span",{title:"Sub-component",className:"shrink-0 rounded bg-zinc-500/15 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-zinc-300",children:"sub"}),(0,a.jsx)("input",{list:`cats-${e}`,value:X,placeholder:"domain",title:"Architecture domain — the lane this component lives in",onChange:e=>W(e.target.value),onBlur:()=>{let n=X.trim()||null;n!==(t.cluster??null)&&i(e,{cluster:n},!0)},onKeyDown:e=>{er(e),"Enter"===e.key&&e.currentTarget.blur()},className:(0,_.cn)(H,"field-sizing-content min-w-12 max-w-[65%] rounded px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide outline-none focus:brightness-125 [&::-webkit-calendar-picker-indicator]:hidden",O(X))})]}),(0,a.jsx)("datalist",{id:`cats-${e}`,children:r.map(e=>(0,a.jsx)("option",{value:e},e))}),(0,a.jsxs)(I.l6,{value:t.status,onValueChange:t=>i(e,{status:t},!0),children:[(0,a.jsx)(I.bq,{className:(0,_.cn)(H,"ml-auto h-6 shrink-0 gap-1 rounded border px-1.5 py-0 text-[10px] font-medium",M[t.status]?.className??"border-white/10"),children:(0,a.jsx)(I.yv,{children:e=>M[e]?.label??e})}),(0,a.jsx)(I.gC,{alignItemWithTrigger:!1,children:o.map(e=>(0,a.jsx)(I.eb,{value:e,children:M[e]?.label??e},e))})]})]}),f&&(0,a.jsxs)("div",{className:"mt-2 w-0 min-w-full space-y-2 border-t border-white/10 pt-2",children:[R||!Y.trim()?(0,a.jsx)("textarea",{autoFocus:R,value:Y,placeholder:"Description (markdown)…",onChange:e=>Z(e.target.value),onBlur:()=>{$(!1);let n=Y.trim()||null;n!==(t.plain??null)&&i(e,{plain:n},!0)},onKeyDown:er,rows:3,className:(0,_.cn)(H,"field-sizing-content max-h-[24rem] min-h-[4.5rem] w-full resize-y rounded bg-white/[0.04] px-1.5 py-1 text-xs outline-none placeholder:text-muted-foreground/50 focus:bg-white/[0.08]")}):(0,a.jsx)("div",{onClick:e=>{er(e),$(!0)},title:"Click to edit",className:"cursor-text rounded bg-white/[0.02] px-1.5 py-1 text-xs hover:bg-white/[0.05]",children:(0,a.jsx)(L.pO,{markdown:Y,variant:"compact",className:"text-[12px]"})}),(0,a.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,a.jsxs)(I.l6,{value:String(t.priority),onValueChange:t=>i(e,{priority:Number(t)},!0),children:[(0,a.jsx)(I.bq,{className:(0,_.cn)(H,"h-6 gap-1 rounded border-white/10 px-1.5 py-0 text-[10px]"),children:(0,a.jsx)(I.yv,{children:e=>B.find(t=>String(t.v)===e)?.l??e})}),(0,a.jsx)(I.gC,{alignItemWithTrigger:!1,children:B.map(e=>(0,a.jsx)(I.eb,{value:String(e.v),children:e.l},e.v))})]}),(0,a.jsxs)("div",{className:"flex items-center gap-1",children:[(0,a.jsxs)("button",{type:"button",onClick:t=>{er(t),v?m(e):D(!0)},onBlur:()=>D(!1),title:"Delete node",className:(0,_.cn)(H,"flex items-center gap-1 rounded px-1.5 py-1 text-[10px] transition-colors",v?"bg-red-500/20 text-red-300":"text-muted-foreground hover:bg-white/5 hover:text-red-300"),children:[(0,a.jsx)(z.A,{className:"size-3"}),v&&"Delete?"]}),x&&(0,a.jsxs)("button",{type:"button",onClick:e=>{er(e),x(`feature: ${t.title}`)},title:"Ask the agent a question about this feature (answered in its next round)",className:(0,_.cn)(H,"flex items-center gap-1 rounded px-1.5 py-1 text-[10px] text-sky-300/90 hover:bg-sky-500/15 hover:text-sky-300"),children:[(0,a.jsx)(T.A,{className:"size-3"})," Ask"]}),(0,a.jsxs)("button",{type:"button",onClick:t=>{er(t),u(e)},className:(0,_.cn)(H,"flex items-center gap-1 rounded px-1.5 py-1 text-[10px] text-muted-foreground hover:bg-white/5 hover:text-foreground"),children:[(0,a.jsx)(h.A,{className:"size-3"})," Details"]})]})]})]})]})}var G=n(54698),X=n(57144),W=n(82099),Y=n(4474),Z=n(70521),J=n(74350);function V({className:e,type:t,...n}){return(0,a.jsx)("input",{type:t,"data-slot":"input",className:(0,_.cn)("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",e),...n})}function q({className:e,...t}){return(0,a.jsx)("textarea",{"data-slot":"textarea",className:(0,_.cn)("border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",e),...t})}var Q=n(61388);function ee({className:e,...t}){return(0,a.jsx)(Q.b,{"data-slot":"label",className:(0,_.cn)("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",e),...t})}let et=(0,v.createServerReference)("40eb685ebfe9863865881ba107a6d9f06ca48be7ed",v.callServer,void 0,v.findSourceMapURL,"createNodeAction"),en=(0,v.createServerReference)("60a8bcbb7eb57e0d85ea4c6f2752198acafa0a560c",v.callServer,void 0,v.findSourceMapURL,"updateNodeAction");function ea({open:e,onOpenChange:t,mode:n,view:r,heading:o,nodeId:i,parentId:l,position:d,defaults:c}){let u=(0,f.useRouter)(),[m,p]=(0,s.useState)(c?.title??""),[x,h]=(0,s.useState)(c?.role??""),[g,b]=(0,s.useState)(c?.plain??""),[v,y]=(0,s.useState)(c?.cluster??""),[j,w]=(0,s.useState)(c?.status??("ARCHITECTURE"===r?"REBUILD":"PENDING")),[N,k]=(0,s.useState)(c?.kind==="BUG"?"BUG":"FEATURE"),[C,E]=(0,s.useState)(!1),S="ARCHITECTURE"===r?R:D;async function A(){if(m.trim()){E(!0);try{"create"===n?await et({view:r,..."ROADMAP"===r?{kind:N}:{},title:m.trim(),role:x.trim()||null,plain:g.trim()||null,cluster:v.trim()||null,parentId:l??null,status:j,x:d?.x??60,y:d?.y??60}):i&&await en(i,{..."ROADMAP"===r?{kind:N}:{},title:m.trim(),role:x.trim()||null,plain:g.trim()||null,cluster:v.trim()||null,status:j}),t(!1),u.refresh()}finally{E(!1)}}}return(0,a.jsx)(J.lG,{open:e,onOpenChange:t,children:(0,a.jsxs)(J.Cf,{children:[(0,a.jsx)(J.c7,{children:(0,a.jsx)(J.L3,{children:o})}),(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsxs)("div",{className:"space-y-1.5",children:[(0,a.jsx)(ee,{htmlFor:"nf-title",children:"Title"}),(0,a.jsx)(V,{id:"nf-title",value:m,autoFocus:!0,onChange:e=>p(e.target.value)})]}),(0,a.jsxs)("div",{className:"space-y-1.5",children:[(0,a.jsx)(ee,{htmlFor:"nf-role",children:"Role (one line)"}),(0,a.jsx)(V,{id:"nf-role",value:x,onChange:e=>h(e.target.value)})]}),(0,a.jsxs)("div",{className:"space-y-1.5",children:[(0,a.jsx)(ee,{htmlFor:"nf-plain",children:"Description"}),(0,a.jsx)(q,{id:"nf-plain",rows:3,value:g,onChange:e=>b(e.target.value)})]}),"ROADMAP"===r&&(0,a.jsxs)("div",{className:"space-y-1.5",children:[(0,a.jsx)(ee,{children:"Kind"}),(0,a.jsxs)(I.l6,{value:N,onValueChange:e=>null!=e&&k(e),children:[(0,a.jsx)(I.bq,{children:(0,a.jsx)(I.yv,{children:e=>"BUG"===e?"Bug":"Feature"})}),(0,a.jsxs)(I.gC,{children:[(0,a.jsx)(I.eb,{value:"FEATURE",children:"Feature"}),(0,a.jsx)(I.eb,{value:"BUG",children:"Bug"})]})]})]}),(0,a.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[(0,a.jsxs)("div",{className:"space-y-1.5",children:[(0,a.jsx)(ee,{children:"Status"}),(0,a.jsxs)(I.l6,{value:j,onValueChange:e=>null!=e&&w(e),children:[(0,a.jsx)(I.bq,{children:(0,a.jsx)(I.yv,{children:e=>M[e]?.label??e})}),(0,a.jsx)(I.gC,{children:S.map(e=>(0,a.jsx)(I.eb,{value:e,children:M[e]?.label??e},e))})]})]}),(0,a.jsxs)("div",{className:"space-y-1.5",children:[(0,a.jsx)(ee,{htmlFor:"nf-cluster",children:"Cluster / lane"}),(0,a.jsx)(V,{id:"nf-cluster",value:v,onChange:e=>y(e.target.value)})]})]})]}),(0,a.jsxs)(J.Es,{children:[(0,a.jsx)(Y.$,{variant:"outline",onClick:()=>t(!1),children:"Cancel"}),(0,a.jsx)(Y.$,{onClick:A,disabled:C||!m.trim(),children:C?"Saving…":"Save"})]})]})})}let es=(0,v.createServerReference)("40aa1e7107fe3c8f957869f0e12efa617d22879e4c",v.callServer,void 0,v.findSourceMapURL,"deleteNodeAction"),er=(0,v.createServerReference)("608314f97341e28ae04ab4ab5ee7f6e9beb38a0460",v.callServer,void 0,v.findSourceMapURL,"setStatusAction"),eo=(0,v.createServerReference)("405b6297a013f25886facc6eec3f7c9b3f484d1704",v.callServer,void 0,v.findSourceMapURL,"cancelAction"),ei=(0,v.createServerReference)("401c5dcbda4f5183d28ca893c77ed3d2a9d45fefb6",v.callServer,void 0,v.findSourceMapURL,"deprioritizeAction");function el({view:e,selected:t,allNodes:n,onClose:s,commentsContent:r,commentsCount:o=0,activeTab:i,onTabChange:l,onAddComment:d,topOffset:c}){let u=!!r,m=i??"details";return(0,a.jsxs)(W.b,{className:"absolute bottom-3 right-3 z-10 flex w-80 flex-col rounded-2xl",style:{top:c??12},children:[u?(0,a.jsxs)("div",{className:"flex items-center justify-between border-b border-white/10 px-1 py-1",children:[(0,a.jsxs)("div",{className:"flex items-center gap-0.5",children:[(0,a.jsx)(ed,{active:"details"===m,onClick:()=>l?.("details"),children:"Details"}),(0,a.jsxs)(ed,{active:"comments"===m,onClick:()=>l?.("comments"),children:["Comments",o>0&&(0,a.jsx)("span",{className:"ml-1 rounded-full bg-white/10 px-1 text-[9px] font-semibold leading-4",children:o})]})]}),(0,a.jsx)("button",{onClick:s,title:"Close panel",className:"mr-1 rounded-md p-1 text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground",children:(0,a.jsx)(A.A,{className:"size-4"})})]}):(0,a.jsxs)("div",{className:"flex items-center justify-between border-b border-white/10 px-3.5 py-2.5",children:[(0,a.jsx)("span",{className:"text-[11px] font-semibold uppercase tracking-wide text-muted-foreground",children:"Details"}),(0,a.jsx)("button",{onClick:s,title:"Close panel",className:"rounded-md p-1 text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground",children:(0,a.jsx)(A.A,{className:"size-4"})})]}),(0,a.jsx)("div",{className:"flex-1 overflow-y-auto",children:(0,a.jsx)("div",{className:"p-3",children:"comments"===m&&u?r:t?(0,a.jsxs)(a.Fragment,{children:[d&&(0,a.jsxs)("button",{type:"button",onClick:()=>d(t.title),className:"mb-3 flex w-full items-center justify-center gap-1.5 rounded-lg border border-white/10 bg-white/[0.03] px-3 py-1.5 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-white/[0.06] hover:text-foreground",children:[(0,a.jsx)(j.A,{className:"size-3.5"}),"Comment on this ","ARCHITECTURE"===e?"component":"feature"]}),(0,a.jsx)(ec,{node:t,view:e},t.id)]}):(0,a.jsx)(em,{view:e,nodes:n})})})]})}function ed({active:e,onClick:t,children:n}){return(0,a.jsx)("button",{type:"button",onClick:t,className:(0,_.cn)("flex items-center gap-1 rounded-md px-2.5 py-1 text-[11px] font-medium transition-colors",e?"bg-white/10 text-foreground":"text-muted-foreground hover:text-foreground"),children:n})}function ec({node:e,view:t}){var n;let r=(0,f.useRouter)(),[o,i]=(0,s.useTransition)(),[l,d]=(0,s.useState)(!1),[c,u]=(0,s.useState)(!1),m="ARCHITECTURE"===t?R:D,p=e=>i(async()=>{await e(),r.refresh()});return(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{className:"text-xs uppercase tracking-wide text-muted-foreground",children:[(n=e.cluster,n?.trim()||"—"),0===e.priority&&(0,a.jsx)("span",{className:"ml-2 text-[#ff7a90]",children:"\xb7 critical path"})]}),(0,a.jsx)("h2",{className:"mt-1 text-lg font-semibold leading-tight",children:e.title})]}),"INIT"===e.source&&(0,a.jsxs)("div",{className:"rounded-lg border border-violet-400/30 bg-violet-500/[0.06] p-2.5",children:[(0,a.jsxs)("div",{className:"flex items-center gap-1.5 text-xs font-semibold text-violet-300",children:[(0,a.jsx)(E.A,{className:"size-3.5"})," AI suggestion"]}),(0,a.jsx)("p",{className:"mt-1 text-[11px] leading-snug text-muted-foreground",children:"Suggested direction surfaced when mapping the repo. Accept to turn it into your own feature, or dismiss."}),(0,a.jsxs)("div",{className:"mt-2 flex gap-1.5",children:[(0,a.jsx)(Y.$,{size:"sm",className:"h-7 px-2.5 text-xs",disabled:o,onClick:()=>p(()=>y(e.id)),children:"Accept"}),(0,a.jsx)(Y.$,{size:"sm",variant:"outline",className:"h-7 px-2.5 text-xs text-muted-foreground",disabled:o,onClick:()=>p(()=>es(e.id)),children:"Dismiss"})]})]}),(0,a.jsxs)("div",{className:"space-y-1.5",children:[(0,a.jsx)("span",{className:"text-xs text-muted-foreground",children:"Status"}),(0,a.jsxs)(I.l6,{value:e.status,onValueChange:t=>null!=t&&p(()=>er(e.id,t)),children:[(0,a.jsx)(I.bq,{className:"h-8",disabled:o,children:(0,a.jsx)(I.yv,{children:e=>M[e]?.label??e})}),(0,a.jsx)(I.gC,{children:m.map(e=>(0,a.jsx)(I.eb,{value:e,children:M[e]?.label??e},e))})]})]}),e.plain&&(0,a.jsx)("div",{className:"rounded-md border border-white/5 bg-card/40 px-2.5 py-2 text-sm",children:(0,a.jsx)(L.pO,{markdown:e.plain,variant:"compact",className:"text-[12.5px]"})}),e.sourceRef&&(0,a.jsx)("div",{className:"rounded-md border border-border bg-card px-2 py-1.5 font-mono text-xs text-muted-foreground",children:e.sourceRef}),e.files.length>0&&(0,a.jsxs)("div",{children:[(0,a.jsxs)("h3",{className:"mb-1.5 text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:["Files (",e.files.length,")"]}),(0,a.jsx)("ul",{className:"space-y-0.5",children:e.files.map(e=>(0,a.jsx)("li",{children:(0,a.jsx)("button",{onClick:()=>fetch(`/api/open?path=${encodeURIComponent(e)}`).catch(()=>{}),title:`Open ${e} in editor`,className:"block w-full truncate rounded px-1.5 py-0.5 text-left font-mono text-[11px] text-muted-foreground transition-colors hover:bg-white/5 hover:text-foreground",children:e})},e))})]}),"ARCHITECTURE"===t&&(0,a.jsx)(eu,{node:e}),(0,a.jsxs)("div",{className:"flex flex-wrap gap-1.5 pt-1",children:[(0,a.jsx)(Y.$,{size:"sm",variant:"outline",onClick:()=>d(!0),children:"Edit"}),(0,a.jsx)(Y.$,{size:"sm",variant:"outline",onClick:()=>u(!0),children:"+ Sub-node"}),(0,a.jsx)(Y.$,{size:"sm",variant:"outline",disabled:o,onClick:()=>p(()=>eo(e.id)),children:"Cancel"}),(0,a.jsx)(Y.$,{size:"sm",variant:"outline",disabled:o,onClick:()=>p(()=>ei(e.id)),children:"Deprioritize"}),(0,a.jsxs)(Z.Lt,{children:[(0,a.jsx)(Z.tv,{render:(0,a.jsx)(Y.$,{size:"sm",variant:"outline",className:"text-red-300",children:"Delete"})}),(0,a.jsxs)(Z.EO,{children:[(0,a.jsxs)(Z.wd,{children:[(0,a.jsxs)(Z.r7,{children:["Delete “",e.title,"”?"]}),(0,a.jsx)(Z.$v,{children:"This removes the node and all its sub-nodes. It can’t be undone."})]}),(0,a.jsxs)(Z.ck,{children:[(0,a.jsx)(Z.Zr,{children:"Cancel"}),(0,a.jsx)(Z.Rx,{onClick:()=>p(()=>es(e.id)),children:"Delete"})]})]})]})]}),l&&(0,a.jsx)(ea,{open:!0,onOpenChange:d,mode:"edit",view:t,heading:"Edit node",nodeId:e.id,defaults:{title:e.title,role:e.role,plain:e.plain,status:e.status,cluster:e.cluster,kind:e.kind}}),c&&(0,a.jsx)(ea,{open:!0,onOpenChange:u,mode:"create",view:t,heading:"New sub-node",parentId:e.id,position:{x:e.x,y:e.y+120},defaults:{cluster:e.cluster}})]})}function eu({node:e}){let t=(0,f.useRouter)(),[n,r]=(0,s.useState)(""),[o,i]=(0,s.useState)(!1),l=e.bugFlags.filter(e=>!e.resolved),d=e=>{i(!0),e().then(()=>t.refresh()).finally(()=>i(!1))},u=()=>{let t=n.trim();t&&d(async()=>{(await fetch("/api/bug-flags",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({nodeId:e.id,by:"user",note:t})})).ok&&r("")})};return(0,a.jsxs)("div",{children:[(0,a.jsxs)("h3",{className:"mb-1.5 flex items-center gap-1.5 text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:[(0,a.jsx)(c.A,{className:"size-3.5 text-rose-300"}),"Bug flags",l.length>0&&` (${l.length} open)`]}),e.bugFlags.length>0&&(0,a.jsx)("ul",{className:"space-y-1.5",children:e.bugFlags.map(e=>(0,a.jsxs)("li",{className:(0,_.cn)("rounded-md border px-2 py-1.5",e.resolved?"border-white/5 bg-card/30 opacity-60":"border-rose-400/25 bg-rose-500/[0.05]"),children:[(0,a.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,a.jsx)("span",{title:"agent"===e.by?"Flagged by an agent examining the code":"Flagged by you",className:(0,_.cn)("rounded px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide","agent"===e.by?"bg-violet-500/15 text-violet-300":"bg-sky-500/15 text-sky-300"),children:"agent"===e.by?"agent":"you"}),(0,a.jsxs)("div",{className:"ml-auto flex items-center gap-1",children:[(0,a.jsx)("button",{type:"button",disabled:o,onClick:()=>d(()=>fetch(`/api/bug-flags/${e.id}`,{method:"PATCH",headers:{"content-type":"application/json"},body:JSON.stringify({resolved:!e.resolved})})),className:"rounded px-1.5 py-0.5 text-[10px] text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground",children:e.resolved?"Reopen":"Resolve"}),(0,a.jsx)("button",{type:"button",disabled:o,title:"Delete flag",onClick:()=>d(()=>fetch(`/api/bug-flags/${e.id}`,{method:"DELETE"})),className:"rounded p-0.5 text-muted-foreground transition-colors hover:bg-white/10 hover:text-red-300",children:(0,a.jsx)(A.A,{className:"size-3"})})]})]}),(0,a.jsx)("p",{className:(0,_.cn)("mt-1 text-[11.5px] leading-snug",e.resolved&&"line-through"),children:e.note})]},e.id))}),(0,a.jsxs)("div",{className:"mt-1.5 flex items-start gap-1.5",children:[(0,a.jsx)("textarea",{rows:1,value:n,placeholder:"Flag a bug or something worth investigating…",onChange:e=>r(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),u())},className:"field-sizing-content min-h-7 w-full resize-none rounded-md border border-white/10 bg-white/[0.03] px-2 py-1 text-[11.5px] outline-none placeholder:text-muted-foreground/60 focus:bg-white/[0.06]"}),(0,a.jsx)(Y.$,{size:"sm",variant:"outline",className:"h-7 shrink-0 px-2 text-[11px]",disabled:o||!n.trim(),onClick:u,children:"Flag"})]})]})}function em({view:e,nodes:t}){let n=t.filter(e=>0===e.priority).length;return(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{className:"text-sm font-semibold",children:"ROADMAP"===e?"Roadmap":"Architecture"}),(0,a.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:"Click a node for details and actions. Drag to rearrange — positions are saved."})]}),(0,a.jsxs)("dl",{className:"grid grid-cols-2 gap-2 text-center",children:[(0,a.jsx)(ep,{label:"nodes",value:t.length}),(0,a.jsx)(ep,{label:"critical",value:n})]})]})}function ep({label:e,value:t}){return(0,a.jsxs)("div",{className:"rounded-md border border-border bg-card py-2",children:[(0,a.jsx)("div",{className:"text-lg font-semibold",children:t}),(0,a.jsx)("div",{className:"text-[10px] uppercase tracking-wide text-muted-foreground",children:e})]})}var ex=n(18874),eh=n(62311),ef=n(56614);let eg=[{value:"cluster",label:"Theme"},{value:"status",label:"Status"},{value:"priority",label:"Priority"}],eb=new Set(["title","role","plain","cluster","status","priority"]),ev={roadmapNode:K,archNode:K,annotation:b.Sh},ey={deletable:X.I},ej={CONTAINS:{stroke:"#7c7c8a"},DEPENDS:{stroke:"#f5b942",dash:"6 4"},RELATES:{stroke:"#8a8a95",dash:"4 4"},REPLACES:{stroke:"#ff6b9d"}};function ew({view:e,nodes:t,edges:n,workOnNextId:f=null,embedded:g=!1,commentsContent:v,commentsCount:y=0,controlRef:j,onAskAgent:w,onAddComment:N,annotations:k,onPinClick:C,onUpdateComment:E,onRemoveComment:S,boardAnnotations:A}){let z=(0,s.useMemo)(()=>t.map(e=>({id:e.id,type:"ROADMAP"===e.view?"roadmapNode":"archNode",position:{x:e.x,y:e.y},data:{title:e.title,role:e.role,plain:e.plain,status:e.status,priority:e.priority,cluster:e.cluster,view:e.view,kind:e.kind,source:e.source,sourceRef:e.sourceRef,isCriterion:e.isCriterion,isChild:null!=e.parentId,parentId:e.parentId,signals:e.signals,openBugs:e.bugFlags.filter(e=>!e.resolved).length}})),[t]),T=(0,s.useMemo)(()=>{let e;return e=new Set(t.map(e=>e.id)),[...t.filter(t=>t.parentId&&e.has(t.parentId)).map(e=>({id:`c-${e.id}`,source:e.parentId,sourceHandle:"sb",target:e.id,targetHandle:"tt",type:"smoothstep",style:{stroke:ej.CONTAINS.stroke}})),...n.filter(t=>e.has(t.fromId)&&e.has(t.toId)).map(e=>{let t=ej[e.kind]??ej.RELATES,n="DEPENDS"===e.kind?"depends on":void 0;return{id:e.id,source:e.fromId,sourceHandle:e.sourceHandle??void 0,target:e.toId,targetHandle:e.targetHandle??void 0,label:e.label??n,type:"deletable",markerEnd:{type:o.TG.ArrowClosed,color:t.stroke},style:{stroke:t.stroke,strokeDasharray:t.dash}}})]},[t,n]),[I,P]=(0,s.useState)(z),[O,L]=(0,s.useState)(T),[B,H]=(0,s.useState)(null),[U,K]=(0,s.useState)(null),[X,W]=(0,s.useState)(null),[Y,Z]=(0,s.useState)(!1),[J,V]=(0,s.useState)("details"),q=(0,s.useRef)(!1),Q=(0,s.useRef)("details");(0,s.useEffect)(()=>{q.current=Y},[Y]),(0,s.useEffect)(()=>{Q.current=J},[J]),(0,s.useEffect)(()=>{if(j)return j.current={open:()=>{if(q.current){Z(!1),V("details");return}Z(!0),V("details")},close:()=>{Z(!1),V("details")},openComments:()=>{Z(!0),V("comments")}},()=>{j&&(j.current=null)}},[j]);let[ee,et]=(0,s.useState)(new Set),[en,ea]=(0,s.useState)(null),[es,er]=(0,s.useState)(!1),eo=(0,s.useRef)(0),ei=(0,s.useRef)(null);(0,s.useEffect)(()=>P(z),[z]),(0,s.useEffect)(()=>L(T),[T]);let ed=(0,s.useCallback)((e,t,n)=>{P(n=>n.map(n=>n.id===e?{...n,data:{...n.data,...t}}:n)),n&&fetch(`/api/nodes/${e}`,{method:"PATCH",headers:{"content-type":"application/json"},body:JSON.stringify(Object.fromEntries(Object.entries(t).filter(([e])=>eb.has(e))))})},[]),ec=(0,s.useMemo)(()=>Array.from(new Set(I.map(e=>e.data.cluster).filter(e=>!!e))).sort(),[I]),eu=(0,s.useCallback)(e=>et(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n}),[]),em=(0,s.useCallback)(e=>{H(e),Z(!0),V("details")},[]),ep=(0,s.useCallback)(e=>{P(t=>t.filter(t=>t.id!==e)),H(t=>t===e?null:t),fetch(`/api/nodes/${e}`,{method:"DELETE"})},[]),eN=(0,s.useCallback)(async(t,n,a="FEATURE")=>{let s=(0,r.sX)(),o="ARCHITECTURE"===e?"REBUILD":"PENDING",i="BUG"===a?"New bug":"New node";P(r=>[...r,{id:s,type:"ROADMAP"===e?"roadmapNode":"archNode",position:{x:t,y:n},data:{title:i,role:null,plain:null,status:o,priority:2,cluster:null,view:e,kind:a,source:"MANUAL",sourceRef:null,isCriterion:!1,isChild:!1,parentId:null,openBugs:0}}]),et(e=>new Set(e).add(s)),ea(s),H(s);try{if(!(await fetch("/api/nodes",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({id:s,view:e,kind:a,title:i,status:o,x:t,y:n})})).ok)throw Error("create failed")}catch{P(e=>e.filter(e=>e.id!==s)),et(e=>{let t=new Set(e);return t.delete(s),t}),ea(e=>e===s?null:e),H(e=>e===s?null:e)}},[e]),ek=(0,s.useCallback)(()=>{let e=eo.current++%8*28;eN(80+e,80+e)},[eN]),eC=(0,s.useCallback)(()=>{let e=eo.current++%8*28;eN(80+e,80+e,"BUG")},[eN]),eE=(0,s.useMemo)(()=>({view:e,categories:ec,statuses:"ARCHITECTURE"===e?R:D,patch:ed,isExpanded:e=>ee.has(e),toggleExpand:eu,openDetailed:em,removeNode:ep,editingTitleId:en,onAskAgent:w}),[e,ec,ed,ee,eu,em,ep,en,w]),[eS,eA]=(0,s.useState)(null),[ez,eT]=(0,s.useState)(""),[eI,eD]=(0,s.useState)(new Set),[eR,e$]=(0,s.useState)(new Set),[eM,eP]=(0,s.useState)(new Set),eO=(0,s.useMemo)(()=>Array.from(new Set(t.map(e=>e.status))),[t]),eF=(0,s.useMemo)(()=>Array.from(new Set(t.map(e=>e.cluster).filter(e=>!!e))).sort(),[t]),eL=(0,s.useMemo)(()=>Array.from(new Set(t.map(e=>e.priority))).sort((e,t)=>e-t),[t]),e_=(0,s.useCallback)(e=>(!eI.size||!!eI.has(e.status))&&(!eR.size||!!e.cluster&&!!eR.has(e.cluster))&&(!eM.size||!!eM.has(e.priority)),[eI,eR,eM]),eB=eI.size+eR.size+eM.size,eH=(0,s.useCallback)(()=>{eD(new Set),e$(new Set),eP(new Set)},[]),eU=(0,s.useMemo)(()=>I.map(e=>({...e,hidden:!e_(e.data)})),[I,e_]),eK=(0,s.useMemo)(()=>new Set(eU.filter(e=>e.hidden).map(e=>e.id)),[eU]),eG=(0,s.useMemo)(()=>O.map(e=>({...e,hidden:eK.has(e.source)||eK.has(e.target)})),[O,eK]),eX=(0,s.useMemo)(()=>{if(U){let e=eG.find(e=>e.id===U);return e?new Set([e.source,e.target]):null}return B?(0,ex.F1)(B,eG.filter(e=>!e.hidden)):null},[B,U,eG]),eW=(0,s.useMemo)(()=>eU.map(e=>{let t=f&&e.id===f?{...e,data:{...e.data,isNext:!0}}:e;return(ee.has(e.id)&&(t={...t,zIndex:25}),!eX||t.hidden)?t:{...t,style:{...t.style,opacity:eX.has(e.id)?1:.45,transition:"opacity 120ms"}}}),[eU,eX,f,ee]),eY=(0,s.useMemo)(()=>{if(!eS||"ROADMAP"!==e)return[];let t=new Map(eW.map(e=>[e.id,e])),n=new Map;for(let e of eW){var a;if(e.hidden)continue;let s=(a=((e.data.parentId?t.get(e.data.parentId):void 0)??e).data,"status"===eS?M[a.status]?.label??a.status:"priority"===eS?`P${a.priority}`:a.cluster?.trim()||"—"),r=e.measured?.width??(e.data.isChild?224:256),o=e.measured?.height??96,i=e.position.x,l=e.position.y,d=n.get(s);d?(d.minX=Math.min(d.minX,i),d.minY=Math.min(d.minY,l),d.maxX=Math.max(d.maxX,i+r),d.maxY=Math.max(d.maxY,l+o)):n.set(s,{label:s,minX:i,minY:l,maxX:i+r,maxY:l+o})}return Array.from(n.values()).map(e=>({label:e.label,x:e.minX-20,y:e.minY-20-26,w:e.maxX-e.minX+40,h:e.maxY-e.minY+40+26}))},[eW,eS,e]),eZ=(0,s.useMemo)(()=>{let e=B??X;return U||e?eG.map(t=>t.hidden?t:(U?t.id===U:t.source===e||t.target===e)?{...t,zIndex:20,style:{...t.style,opacity:1,strokeWidth:2.5}}:{...t,selectable:!1,label:void 0,markerEnd:void 0,style:{...t.style,opacity:.06}}):eG.map(e=>e.hidden?e:{...e,label:void 0,style:{...e.style,opacity:.18}})},[eG,B,U,X]),eJ=void 0!==A,[eV,eq]=(0,s.useState)(A??[]);(0,s.useEffect)(()=>{A&&eq(A)},[A]);let eQ=(0,s.useMemo)(()=>{if(eJ){let e=new Set(t.map(e=>e.id));return eV.filter(t=>"feature"===t.targetKind&&e.has(t.targetId)).map((e,t)=>({id:e.id,n:t+1,targetId:e.targetId,text:e.body,x:e.x,y:e.y}))}let e=new Map((k??[]).map(e=>[e.id,e.comment]));return(0,G.m)(k??[],{tables:[],features:t.map(e=>({id:e.id,title:e.title}))}).map(t=>({id:t.annotationId,n:t.n,targetId:t.targetId,text:e.get(t.annotationId)??"",x:null,y:null}))},[eJ,eV,k,t]),e0=(0,s.useMemo)(()=>{let e=new Map;for(let t of eQ){let n=e.get(t.targetId)??[];n.push({id:t.id,n:t.n,column:null}),e.set(t.targetId,n)}return e},[eQ]),e1=(0,s.useCallback)(async e=>{let n=(0,G.m)([{id:"_",excerpt:e}],{tables:[],features:t.map(e=>({id:e.id,title:e.title}))})[0];if(!n)return;let a=await fetch("/api/board-annotations",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({targetKind:"feature",targetId:n.targetId})});if(a.ok){let e=await a.json();eq(t=>[...t,e])}},[t]),e5=(0,s.useCallback)((e,t)=>{eq(n=>n.map(n=>n.id===e?{...n,...t}:n)),fetch(`/api/board-annotations/${e}`,{method:"PATCH",headers:{"content-type":"application/json"},body:JSON.stringify(t)})},[]),e2=(0,s.useCallback)(e=>{eq(t=>t.filter(t=>t.id!==e)),fetch(`/api/board-annotations/${e}`,{method:"DELETE"})},[]),e3=eJ?e1:N,[e4,e6]=(0,s.useState)(()=>new Map),e8=(0,s.useMemo)(()=>{let e=new Map(eW.map(e=>[e.id,e])),t=new Map,n=eQ.flatMap(n=>{let a=e.get(n.targetId);if(!a||a.hidden)return[];let s=t.get(n.targetId)??0;t.set(n.targetId,s+1);let r=a.measured?.height??96;return[{id:`anno-${n.id}`,type:"annotation",position:{x:n.x??a.position.x+26,y:n.y??a.position.y+r+56+112*s},measured:e4.get(`anno-${n.id}`),draggable:eJ,data:{n:n.n,text:n.text,annotationId:n.id,onClick:eJ||E?void 0:C,editable:eJ||!!E,onChangeText:eJ?(e,t)=>e5(e,{body:t}):E,onDelete:eJ?e2:S}}]});return[...eW.map(e=>{let t=e0.get(e.id);return t||e3?{...e,data:{...e.data,pins:t,onPinClick:eJ?void 0:C,onComment:e3}}:e}),...n]},[eW,eQ,e0,eJ,C,E,S,e3,e5,e2,e4]),e9=(0,s.useMemo)(()=>eQ.map(e=>({id:`annoe-${e.id}`,source:e.targetId,sourceHandle:`pin-${e.id}`,target:`anno-${e.id}`,targetHandle:"in",type:"default",selectable:!1,zIndex:30,style:{stroke:b.V5,strokeWidth:1.5,opacity:.9}})),[eQ]),e7=(0,s.useCallback)(e=>{let t=[];for(let n of e)if("position"===n.type&&n.id.startsWith("anno-")&&n.position){let e=n.id.slice(5),{x:t,y:a}=n.position;eq(n=>n.map(n=>n.id===e?{...n,x:t,y:a}:n))}else if("dimensions"===n.type&&n.id.startsWith("anno-")){let e=n.dimensions;e&&e6(t=>{let a=t.get(n.id);if(a&&a.width===e.width&&a.height===e.height)return t;let s=new Map(t);return s.set(n.id,e),s})}else t.push(n);t.length&&P(e=>(0,i._0)(t,e))},[]),te=(0,s.useCallback)(e=>L(t=>(0,i.zW)(e,t)),[]),tt=(0,s.useCallback)(async e=>{if(!e.source||!e.target||e.source===e.target)return;let t=await fetch("/api/edges",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({fromId:e.source,toId:e.target,kind:"DEPENDS",sourceHandle:e.sourceHandle??null,targetHandle:e.targetHandle??null})});if(!t.ok)return;let n=await t.json(),a=ej.DEPENDS;L(t=>t.some(e=>e.id===n.id)?t:[...t,{id:n.id,source:n.fromId,sourceHandle:e.sourceHandle??void 0,target:n.toId,targetHandle:e.targetHandle??void 0,label:"depends on",type:"deletable",markerEnd:{type:o.TG.ArrowClosed,color:a.stroke},style:{stroke:a.stroke,strokeDasharray:a.dash}}])},[]),tn=(0,s.useCallback)(async(t,n,a)=>{let s=await fetch("/api/nodes",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({view:e,title:"New node",parentId:t.id,cluster:t.data.cluster??null,status:"ARCHITECTURE"===e?"REBUILD":"PENDING",x:n,y:a})});if(!s.ok)return;let r=await s.json();P(s=>[...s,{id:r.id,type:"ROADMAP"===e?"roadmapNode":"archNode",position:{x:n,y:a},data:{title:r.title,role:r.role,plain:r.plain,status:r.status,priority:r.priority,cluster:r.cluster,view:r.view,source:r.source,sourceRef:r.sourceRef,kind:r.kind,isCriterion:!1,isChild:!0,parentId:t.id,openBugs:0}}]),L(e=>[...e,{id:`c-${r.id}`,source:t.id,target:r.id,type:"smoothstep",style:{stroke:ej.CONTAINS.stroke}}]),et(e=>new Set(e).add(r.id)),ea(r.id),H(r.id)},[e]),ta=(0,s.useCallback)(async(e,t)=>{if(t.isValid||!t.fromNode||!ei.current)return;let n=e.changedTouches,a=n?.[0]?.clientX??e.clientX,s=n?.[0]?.clientY??e.clientY,{x:r,y:o}=ei.current.screenToFlowPosition({x:a,y:s});await tn(t.fromNode,r,o)},[tn]);(0,s.useEffect)(()=>{if(!es)return;let e=e=>{"Escape"===e.key&&er(!1)};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[es]);let ts=(0,s.useMemo)(()=>t.find(e=>e.id===B)??null,[t,B]),tr=(0,s.useCallback)((e,t,n)=>{fetch(`/api/nodes/${e}/position`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({x:t,y:n})})},[]),to=(0,s.useCallback)(e=>{H(e),K(null);let t=ei.current?.getNode(e);if(!t||!ei.current)return;let n=t.measured?.width??128,a=t.measured?.height??48;ei.current.setCenter(t.position.x+n/2,t.position.y+a/2,{zoom:1.2,duration:600})},[]),ti=(0,s.useCallback)(e=>{let t=function(e,t,n={}){let a=n.colW??320,s=n.rowH??150,r=n.childIndent??24,o=n.laneGap??56,i=n.bandGap??110,l=n.maxCols??4,d=n.maxBandW??6*a,c=new Set(e.map(e=>e.id)),u=e=>!e.parentId||!c.has(e.parentId),m=e.filter(u),p=new Map;for(let t of e){if(u(t))continue;let e=p.get(t.parentId);e?e.push(t):p.set(t.parentId,[t])}let x="status"===t?e=>e.status:"priority"===t?e=>String(e.priority):e=>(e.cluster??"").trim()||"—",h=new Map;for(let e of m){let t=x(e),n=h.get(t);n?n.push(e):h.set(t,[e])}let f=(function(e,t,n){if("status"===e)return[...$];if("priority"===e)return["0","1","2","3"];let a=Array.from(new Set(t.map(n))),s=a.filter(e=>"—"!==e).sort();return a.includes("—")?[...s,"—"]:s})(t,m,x).filter(e=>h.has(e)),g=new Map,b=0,v=0,y=0;for(let e of f){let t=h.get(e),n=Math.max(1,Math.min(l,Math.ceil(Math.sqrt(t.length)))),c=n*a;b>0&&b+c>d&&(b=0,v+=y+i,y=0);let u=Array(n).fill(0);for(let e of t){let t=0;for(let e=1;e<n;e++)u[e]<u[t]&&(t=e);let o=b+t*a,i=v+u[t]*s;g.set(e.id,{x:o,y:i});let l=p.get(e.id)??[];l.forEach((e,t)=>{g.set(e.id,{x:o+r,y:i+(t+1)*s})}),u[t]+=1+l.length}y=Math.max(y,u.reduce((e,t)=>Math.max(e,t),0)*s),b+=c+o}return g}(I.map(e=>({id:e.id,parentId:e.data.parentId??null,cluster:e.data.cluster,status:e.data.status,priority:e.data.priority})),e);P(e=>e.map(e=>{let n=t.get(e.id);return n?{...e,position:n}:e}));let n=Array.from(t,([e,t])=>({id:e,x:t.x,y:t.y}));n.length&&fetch("/api/nodes/positions",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({batch:n})}),eA(e),requestAnimationFrame(()=>ei.current?.fitView({duration:600,padding:.2}))},[I]),tl=(0,s.useMemo)(()=>{let e=ez.trim().toLowerCase();return e?I.filter(t=>e_(t.data)&&t.data.title.toLowerCase().includes(e)).slice(0,8):[]},[I,ez,e_]);function td(e,t){t(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}return(0,a.jsx)(F.Provider,{value:eE,children:(0,a.jsxs)("div",{className:(0,_.cn)("canvas-dots relative w-full",g?"h-full":"h-screen"),onDragOver:e=>{e.dataTransfer.types.includes("application/beacon-node")&&(e.preventDefault(),e.dataTransfer.dropEffect="copy")},onDrop:e=>{if(!e.dataTransfer.getData("application/beacon-node")||!ei.current)return;e.preventDefault();let{x:t,y:n}=ei.current.screenToFlowPosition({x:e.clientX,y:e.clientY});eN(t,n,"BUG"===e.dataTransfer.getData("application/beacon-node-kind")?"BUG":"FEATURE")},children:[(0,a.jsxs)(i.Gc,{nodes:e8,edges:[...eZ,...e9],nodeTypes:ev,edgeTypes:ey,connectionMode:o.WZ.Loose,connectionLineStyle:{stroke:"var(--accent-2,#ff7a45)",strokeWidth:1.5,strokeDasharray:"4 4"},onInit:e=>{ei.current=e},onNodesChange:e7,onEdgesChange:te,onConnect:tt,onConnectEnd:ta,onNodeMouseEnter:(e,t)=>W(t.id),onNodeMouseLeave:()=>W(null),onEdgesDelete:e=>{for(let t of e)t.id.startsWith("c-")||fetch(`/api/edges/${t.id}`,{method:"DELETE"})},onNodesDelete:e=>{for(let t of e)t.id.startsWith("anno-")||(fetch(`/api/nodes/${t.id}`,{method:"DELETE"}),H(e=>e===t.id?null:e))},onNodeClick:(e,t)=>{if("annotation"===t.type)return void C?.(t.data.annotationId);if(es){if(er(!1),t.data.isChild)return;tn(t,t.position.x+300,t.position.y+60);return}if(H(t.id),K(null),V("details"),g){let t=e.target;t?.closest("input, textarea, select, button, [role='combobox']")||Z(!0)}},onEdgeClick:(e,t)=>{K(t.id),H(null),V("details")},onPaneClick:()=>{es?er(!1):(H(null),K(null))},onNodeDragStop:(e,t)=>{if(t.id.startsWith("anno-")){eJ&&e5(t.id.slice(5),{x:t.position.x,y:t.position.y});return}tr(t.id,t.position.x,t.position.y)},deleteKeyCode:["Backspace","Delete"],colorMode:"dark",fitView:!0,minZoom:.2,panOnScroll:!0,zoomActivationKeyCode:["Meta","Control"],proOptions:{hideAttribution:!0},children:[eY.length>0&&(0,a.jsx)(i.DX,{children:eY.map(e=>(0,a.jsx)("div",{style:{position:"absolute",transform:`translate(${e.x}px, ${e.y}px)`,width:e.w,height:e.h,pointerEvents:"none",zIndex:0},className:"rounded-2xl border border-white/[0.08] bg-white/[0.015]",children:(0,a.jsx)("div",{className:"px-3 py-1 text-[11px] font-semibold uppercase tracking-wide text-muted-foreground/70",children:e.label})},e.label))}),(0,a.jsx)(i.H2,{position:"bottom-right",className:"!overflow-hidden !rounded-xl !border !border-white/10 [&_button]:!border-white/10 [&_button]:!bg-card/70 [&_button]:!text-foreground [&_button]:!backdrop-blur"}),(0,a.jsx)(i.Zk,{position:"bottom-right",style:{marginBottom:152},children:(0,a.jsx)(ef.er,{title:"Legend",trigger:(e,t)=>(0,a.jsx)("button",{type:"button",onClick:t,title:"Legend",className:(0,_.cn)("glass flex size-8 items-center justify-center rounded-lg transition-colors",e?"text-foreground":"text-muted-foreground hover:text-foreground"),children:(0,a.jsx)(l.A,{className:"size-4"})}),children:(0,a.jsxs)("ul",{className:"space-y-1.5 text-[10.5px] text-muted-foreground",children:[(0,a.jsxs)("li",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"inline-block rounded bg-sky-500/15 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-sky-300",children:"feature"}),(0,a.jsx)("span",{children:"top-level card \xb7 can have sub-tasks"})]}),(0,a.jsxs)("li",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"inline-block rounded bg-zinc-500/15 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-zinc-300",children:"sub-task"}),(0,a.jsx)("span",{children:"child of a feature"})]}),(0,a.jsxs)("li",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{"aria-hidden":!0,className:"inline-block h-px w-6 bg-[#33333a]"}),(0,a.jsx)("span",{children:"contains \xb7 drag the bottom handle to empty canvas"})]}),(0,a.jsxs)("li",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{"aria-hidden":!0,className:"inline-block h-0 w-6 border-t border-dashed",style:{borderColor:"#f5b942"}}),(0,a.jsx)("span",{children:"depends on \xb7 drag between two cards"})]})]})})}),!g&&(0,a.jsx)(i.of,{pannable:!0,zoomable:!0,position:"bottom-left",style:{width:140,height:90},className:"!rounded-xl !border !border-white/10 !bg-card/50 !backdrop-blur",nodeColor:e=>e.data?.priority===0?"#ff3860":"#555"}),(0,a.jsxs)(i.Zk,{position:"bottom-center",className:"!mb-4 flex flex-col items-center gap-2",children:[es&&(0,a.jsxs)("div",{className:"glass rounded-full px-3 py-1 text-[11px] text-muted-foreground",children:["Click a ","ARCHITECTURE"===e?"component":"feature"," to attach the"," ","ARCHITECTURE"===e?"sub-component":"sub-task"," \xb7 Esc to cancel"]}),"ROADMAP"===e&&(0,a.jsxs)("div",{className:"glass flex items-center gap-1 rounded-full p-1",children:[(0,a.jsx)("span",{className:"pl-2 pr-0.5 text-[11px] text-muted-foreground",children:"Group by"}),eg.map(e=>(0,a.jsx)("button",{onClick:()=>ti(e.value),title:`Arrange features into lanes by ${e.label.toLowerCase()}`,className:(0,_.cn)("h-7 rounded-full px-2.5 text-[11px] font-medium transition-colors",eS===e.value?"bg-white/[0.12] text-foreground":"text-muted-foreground hover:bg-white/[0.06] hover:text-foreground"),children:e.label},e.value))]}),(0,a.jsxs)("div",{className:"glass flex items-center gap-1 rounded-full p-1",children:[(0,a.jsxs)("button",{onClick:ek,draggable:!0,onDragStart:t=>{t.dataTransfer.setData("application/beacon-node",e),t.dataTransfer.effectAllowed="copy"},title:"ARCHITECTURE"===e?"Add component (click, or drag onto the board to place it)":"Add feature (click, or drag onto the board to place it)",className:"flex h-8 cursor-grab items-center gap-1.5 rounded-full px-3 text-[12px] font-medium text-foreground transition-colors hover:bg-white/[0.06] active:cursor-grabbing",children:[(0,a.jsx)(d.A,{className:"size-3.5 text-[var(--accent-2,#ff7a45)]"}),"ARCHITECTURE"===e?"Component":"Feature"]}),"ROADMAP"===e&&(0,a.jsxs)("button",{onClick:eC,draggable:!0,onDragStart:t=>{t.dataTransfer.setData("application/beacon-node",e),t.dataTransfer.setData("application/beacon-node-kind","BUG"),t.dataTransfer.effectAllowed="copy"},title:"Add bug (click, or drag onto the board to place it)",className:"flex h-8 cursor-grab items-center gap-1.5 rounded-full px-3 text-[12px] font-medium text-foreground transition-colors hover:bg-white/[0.06] active:cursor-grabbing",children:[(0,a.jsx)(c.A,{className:"size-3.5 text-rose-400"}),"Bug"]}),(0,a.jsx)("span",{"aria-hidden":!0,className:"mx-0.5 h-5 w-px bg-white/10"}),(0,a.jsxs)("button",{onClick:()=>er(e=>!e),title:"ARCHITECTURE"===e?"Add sub-component (click a component next)":"Add sub-task (click a feature next)",className:(0,_.cn)("flex h-8 items-center gap-1.5 rounded-full px-3 text-[12px] font-medium transition-colors",es?"bg-white/[0.1] text-foreground":"text-muted-foreground hover:bg-white/[0.06] hover:text-foreground"),children:[(0,a.jsx)(u.A,{className:"size-3.5"}),"ARCHITECTURE"===e?"Sub-component":"Sub-task"]})]})]}),!g&&(0,a.jsx)(i.Zk,{position:"top-center",className:"glass rounded-full px-1 py-0.5",children:(0,a.jsx)(eh.Z,{active:e,tabs:[{value:"ROADMAP",label:"Roadmap",href:"/map?view=ROADMAP"},{value:"ARCHITECTURE",label:"Architecture",href:"/map?view=ARCHITECTURE"},{value:"FILES",label:"Files",href:"/map?view=FILES"},{value:"DATABASE",label:"Database",href:"/map?view=DATABASE"}]})}),(0,a.jsxs)(i.Zk,{position:"top-right",className:(0,_.cn)("flex items-center gap-1 transition-[margin] duration-200",Y&&"!mr-[332px]",g&&"hidden"),children:[(0,a.jsxs)(ef.er,{title:"Search",trigger:(e,t)=>(0,a.jsx)("button",{type:"button",onClick:t,title:"Search features",className:(0,_.cn)("glass flex size-8 items-center justify-center rounded-lg transition-colors",e?"text-foreground":"text-muted-foreground hover:text-foreground"),children:(0,a.jsx)(m.A,{className:"size-4"})}),children:[(0,a.jsx)("input",{autoFocus:!0,value:ez,onChange:e=>eT(e.target.value),placeholder:"Find a feature…",className:"w-full rounded-md border border-white/10 bg-white/[0.04] px-2 py-1 text-[12px] outline-none placeholder:text-muted-foreground/50 focus:bg-white/[0.08]"}),(0,a.jsxs)("div",{className:"mt-2 max-h-64 space-y-0.5 overflow-y-auto",children:[ez.trim()&&0===tl.length&&(0,a.jsx)("div",{className:"px-1 py-1 text-[11px] text-muted-foreground",children:"No matches"}),tl.map(e=>(0,a.jsx)("button",{type:"button",onClick:()=>to(e.id),className:"block w-full truncate rounded-md px-2 py-1 text-left text-[12px] text-muted-foreground transition-colors hover:bg-white/5 hover:text-foreground",children:e.data.title},e.id))]})]}),"ROADMAP"===e&&f&&(0,a.jsx)("button",{type:"button",onClick:()=>to(f),title:"Jump to the next feature to work on",className:"glass flex size-8 items-center justify-center rounded-lg text-emerald-300 transition-colors hover:text-emerald-200",children:(0,a.jsx)(p.A,{className:"size-4"})}),(0,a.jsxs)(ef.er,{title:"Filters",trigger:(e,t)=>(0,a.jsxs)("button",{type:"button",onClick:t,title:"Filters",className:(0,_.cn)("glass relative flex size-8 items-center justify-center rounded-lg transition-colors",e||eB>0?"text-foreground":"text-muted-foreground hover:text-foreground"),children:[(0,a.jsx)(x.A,{className:"size-4"}),eB>0&&(0,a.jsx)("span",{className:"absolute -right-1 -top-1 flex h-4 min-w-4 items-center justify-center rounded-full bg-[var(--accent-2,#ff7a45)] px-1 text-[9px] font-semibold text-white",children:eB})]}),children:[eO.length>0&&(0,a.jsx)(ef.r1,{title:"Status",children:eO.map(e=>(0,a.jsx)(ef.vu,{on:eI.has(e),onClick:()=>td(e,eD),children:M[e]?.label??e},e))}),eF.length>0&&(0,a.jsx)(ef.r1,{title:"Cluster",children:eF.map(e=>(0,a.jsx)(ef.vu,{on:eR.has(e),onClick:()=>td(e,e$),children:e},e))}),eL.length>0&&(0,a.jsx)(ef.r1,{title:"Priority",children:eL.map(e=>(0,a.jsxs)(ef.vu,{on:eM.has(e),onClick:()=>td(e,eP),children:["P",e]},e))}),eB>0&&(0,a.jsx)("button",{type:"button",onClick:eH,className:"mt-1 w-full rounded-md border border-white/10 px-2 py-1 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-white/5 hover:text-foreground",children:"clear filters"})]}),!Y&&(0,a.jsx)("button",{onClick:()=>{Z(!0),V("details")},title:"Show panel",className:"glass flex size-8 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:text-foreground",children:(0,a.jsx)(h.A,{className:"size-4"})})]})]}),Y&&(0,a.jsx)(el,{view:e,selected:ts,allNodes:t,onClose:()=>{Z(!1),V("details")},commentsContent:v,commentsCount:y,activeTab:J,onTabChange:V,onAddComment:e3,topOffset:g?64:void 0})]})})}},54698:(e,t,n)=>{n.d(t,{m:()=>a});function a(e,t){let n=[];return e.forEach((e,a)=>{let s=e.excerpt.trim();if(!s)return;let r={annotationId:e.id,n:a+1};for(let e of t.tables){if(s===e.name)return void n.push({...r,kind:"table",targetId:e.id,column:null});if(s.startsWith(`${e.name}.`)){let t=s.slice(e.name.length+1);if(e.columns.includes(t))return void n.push({...r,kind:"column",targetId:e.id,column:t})}}for(let e of t.endpoints??[])if(s===`${e.method} ${e.path}`)return void n.push({...r,kind:"endpoint",targetId:e.id,column:null});for(let e of t.features??[])if(s===e.title||s===`feature: ${e.title}`)return void n.push({...r,kind:"feature",targetId:e.id,column:null})}),n}},56614:(e,t,n)=>{n.d(t,{er:()=>o,r1:()=>i,vu:()=>l});var a=n(95155),s=n(12115),r=n(91337);function o({trigger:e,title:t,align:n="right",children:i}){let[l,d]=(0,s.useState)(!1),c=(0,s.useRef)(null);return(0,s.useEffect)(()=>{if(!l)return;let e=e=>{c.current?.contains(e.target)||d(!1)},t=e=>{"Escape"===e.key&&d(!1)};return window.addEventListener("mousedown",e),window.addEventListener("keydown",t),()=>{window.removeEventListener("mousedown",e),window.removeEventListener("keydown",t)}},[l]),(0,a.jsxs)("div",{ref:c,className:"relative",children:[e(l,()=>d(e=>!e)),l&&(0,a.jsxs)("div",{className:(0,r.cn)("glass absolute top-full z-30 mt-1.5 w-64 rounded-xl p-3 shadow-xl","right"===n?"right-0":"left-0"),children:[t&&(0,a.jsx)("div",{className:"mb-2 text-[10px] font-semibold uppercase tracking-wider text-muted-foreground",children:t}),i]})]})}function i({title:e,children:t}){return(0,a.jsxs)("div",{className:"mb-2.5 last:mb-0",children:[(0,a.jsx)("div",{className:"mb-1 text-[10px] font-semibold uppercase tracking-wider text-muted-foreground/80",children:e}),(0,a.jsx)("div",{className:"flex flex-wrap gap-1",children:t})]})}function l({on:e,onClick:t,children:n,tone:s="default"}){return(0,a.jsx)("button",{type:"button",onClick:t,className:(0,r.cn)("rounded-md border px-2 py-0.5 text-[11px] font-medium transition-colors",{default:e?"border-foreground/40 bg-white/10 text-foreground":"border-white/10 text-muted-foreground hover:text-foreground",danger:e?"border-red-500/40 bg-red-500/15 text-red-300":"border-white/10 text-muted-foreground hover:text-foreground",accent:e?"border-sky-500/40 bg-sky-500/15 text-sky-300":"border-white/10 text-muted-foreground hover:text-foreground"}[s]),children:n})}},57144:(e,t,n)=>{n.d(t,{I:()=>c});var a=n(95155),s=n(81750),r=n(6266),o=n(65738);function i(e){let{x:t,y:n}=e.internals.positionAbsolute,a=e.measured?.width??0,s=e.measured?.height??0;return{x:t,y:n,w:a,h:s,cx:t+a/2,cy:n+s/2}}function l(e,t){let n=i(e),a=i(t),s=n.w/2||1,r=n.h/2||1,o=(a.cx-n.cx)/(2*s)-(a.cy-n.cy)/(2*r),l=(a.cx-n.cx)/(2*s)+(a.cy-n.cy)/(2*r),d=1/(Math.abs(o)+Math.abs(l)||1);return{x:s*d*(o+l)+n.cx,y:r*d*(-o+l)+n.cy}}function d(e,t){let n=i(e),a=Math.round(t.x),s=Math.round(t.y);return a<=Math.round(n.x)+1?r.yX.Left:a>=Math.round(n.x+n.w)-1?r.yX.Right:s<=Math.round(n.y)+1?r.yX.Top:r.yX.Bottom}function c(e){let t,n,{deleteElements:i}=(0,s.VH)(),c=(0,s.JY)(e.source),u=(0,s.JY)(e.target),m=c&&u?(t=l(c,u),n=l(u,c),{sx:t.x,sy:t.y,tx:n.x,ty:n.y,sourcePos:d(c,t),targetPos:d(u,n)}):null,[p,x,h]=(0,r.Fp)(m?{sourceX:m.sx,sourceY:m.sy,sourcePosition:m.sourcePos,targetX:m.tx,targetY:m.ty,targetPosition:m.targetPos}:{sourceX:e.sourceX,sourceY:e.sourceY,sourcePosition:e.sourcePosition,targetX:e.targetX,targetY:e.targetY,targetPosition:e.targetPosition});return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(s.tE,{id:e.id,path:p,style:e.style,markerEnd:e.markerEnd,interactionWidth:20}),e.label&&(0,a.jsx)(s.rV,{children:(0,a.jsx)("div",{style:{position:"absolute",transform:`translate(-50%, -120%) translate(${x}px, ${h}px)`,fontSize:11,color:"#cfcfcf",background:"#161616",padding:"1px 4px",borderRadius:4,pointerEvents:"none"},children:e.label})}),e.selected&&(0,a.jsx)(s.rV,{children:(0,a.jsx)("div",{className:"nodrag nopan",style:{position:"absolute",transform:`translate(-50%, 0) translate(${x}px, ${h+14}px)`,pointerEvents:"all",zIndex:1e3},children:(0,a.jsx)("button",{type:"button",onMouseDown:e=>e.stopPropagation(),onClick:t=>{t.stopPropagation(),i({edges:[{id:e.id}]})},title:"Delete (or press Backspace)",className:"flex size-7 items-center justify-center rounded-full border border-white/20 bg-card/95 text-red-300 shadow-lg backdrop-blur-md transition-colors hover:bg-red-500/25 hover:text-red-200",children:(0,a.jsx)(o.A,{className:"size-3.5"})})})})]})}},60874:(e,t,n)=>{n.d(t,{F8:()=>b,NG:()=>x,QH:()=>h,Vq:()=>g,aM:()=>j,cV:()=>N,kz:()=>y,n$:()=>m,pO:()=>o,vB:()=>v});var a=n(95155),s=n(12115),r=n(91337);function o({markdown:e,className:t,variant:n="reading"}){let i=(0,s.useMemo)(()=>m(e),[e]),l="reading"===n;return(0,a.jsx)("div",{className:(0,r.cn)("min-w-0 [overflow-wrap:anywhere]",l?"mx-auto w-full max-w-[66ch] space-y-4 text-[15px] leading-[1.6]":"space-y-3.5 text-[13px] leading-relaxed",t),children:i.map((e,t)=>(0,a.jsx)(w,{block:e,variant:n},t))})}function i(e){let t=e.trim();return t.includes("|")&&t.includes("-")&&/^[\s|:-]+$/.test(t)}function l(e){return""!==e.trim()&&e.includes("|")}function d(e){let t=e.trim();return t.startsWith("|")&&(t=t.slice(1)),t.endsWith("|")&&(t=t.slice(0,-1)),t.split("|").map(e=>e.trim())}function c(e){let t=e.trim(),n=t.startsWith(":"),a=t.endsWith(":");return n&&a?"center":a?"right":n?"left":null}let u=/^\s*```[^\s`]*\s*$/;function m(e){let t=e.split("\n"),n=[],a=[],s=()=>{a.length&&(n.push({kind:"p",text:a.join("\n")}),a=[])},r=null,o=()=>{null!==r&&(n.push({kind:"quote",text:r.join("\n")}),r=null)},m=e=>Math.min(6,Math.floor(e.length/2)),p=null,x=null;for(let e=0;e<t.length;e++){let h=t[e];if(null!==p){u.test(h)?(n.push({kind:"code",text:p.join("\n")}),p=null):p.push(h);continue}let f=h.match(/^>\s?(.*)$/);if(f){s(),x=null,(r??=[]).push(f[1]);continue}if(o(),u.test(h)){s(),x=null,p=[];continue}if(/^\s*$/.test(h)){s(),x=null;continue}let g=h.match(/^#### +(.+)$/);if(g){s(),x=null,n.push({kind:"h4",text:g[1]});continue}let b=h.match(/^### +(.+)$/);if(b){s(),x=null,n.push({kind:"h3",text:b[1]});continue}let v=h.match(/^## +(.+)$/);if(v){s(),x=null,n.push({kind:"h2",text:v[1]});continue}let y=h.match(/^# +(.+)$/);if(y){s(),x=null,n.push({kind:"h1",text:y[1]});continue}if(l(h)&&e+1<t.length&&i(t[e+1])){s(),x=null;let a=[d(h)],r=d(t[e+1]).map(c),o=e+2;for(;o<t.length&&l(t[o])&&!i(t[o]);)a.push(d(t[o])),o++;n.push({kind:"table",text:t.slice(e,o).join("\n"),rows:a,align:r}),e=o-1;continue}let j=h.match(/^(\s*)(\d+)\. +(.+)$/);if(j){s(),n.push({kind:"ol",text:j[3],depth:m(j[1]),marker:j[2]}),x=n.length-1;continue}let w=h.match(/^(\s*)- +(.+)$/);if(w){s(),n.push({kind:"ul",text:w[2],depth:m(w[1])}),x=n.length-1;continue}if(null!==x&&0===a.length){n[x].text+=" "+h.trim();continue}a.push(h)}return s(),o(),null!==p&&n.push({kind:"code",text:p.join("\n")}),n}let p=/("(?:\\.|[^"\\])*")(\s*:)?|\b(true|false|null)\b|(-?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?)/g;function x({text:e}){let t=function(e){let t=e.trim();if(!t||"{"!==t[0]&&"["!==t[0])return null;try{return JSON.stringify(JSON.parse(t),null,2)}catch{return null}}(e);return(0,a.jsx)("pre",{className:"overflow-x-auto rounded-lg border border-white/10 bg-white/[0.06] p-3 text-[12px] leading-relaxed",children:(0,a.jsx)("code",{className:"whitespace-pre font-mono [overflow-wrap:normal]",children:t?function(e){let t,n=[],s=0,r=0,o=e=>(0,a.jsx)("span",{className:"text-foreground/45",children:e},r++);for(p.lastIndex=0;null!==(t=p.exec(e));){if(t.index>s&&n.push(o(e.slice(s,t.index))),void 0!==t[1]){let e=void 0!==t[2];n.push((0,a.jsx)("span",{className:e?"text-sky-300":"text-emerald-300/90",children:t[1]},r++)),e&&t[2]&&n.push(o(t[2]))}else void 0!==t[3]?n.push((0,a.jsx)("span",{className:"text-purple-300",children:t[3]},r++)):void 0!==t[4]&&n.push((0,a.jsx)("span",{className:"text-amber-300",children:t[4]},r++));s=p.lastIndex}return s<e.length&&n.push(o(e.slice(s))),n}(t):(0,a.jsx)("span",{className:"text-foreground/85",children:e})})})}function h({block:e}){let t=e.rows??[];if(0===t.length)return null;let[n,...s]=t,o=e.align??[],i=e=>"center"===o[e]?"text-center":"right"===o[e]?"text-right":"text-left";return(0,a.jsx)("div",{className:"overflow-x-auto rounded-lg border border-white/10",children:(0,a.jsxs)("table",{className:"w-full border-collapse text-[13px] [overflow-wrap:normal]",children:[(0,a.jsx)("thead",{children:(0,a.jsx)("tr",{className:"border-b border-white/15 bg-white/[0.04]",children:n.map((e,t)=>(0,a.jsx)("th",{className:(0,r.cn)("whitespace-nowrap px-3 py-1.5 font-semibold text-foreground",i(t)),children:(0,a.jsx)(N,{text:e})},t))})}),(0,a.jsx)("tbody",{children:s.map((e,t)=>(0,a.jsx)("tr",{className:"border-b border-white/5 last:border-0",children:e.map((e,t)=>(0,a.jsx)("td",{className:(0,r.cn)("px-3 py-1.5 align-top text-foreground/90",i(t)),children:(0,a.jsx)(N,{text:e})},t))},t))})]})})}let f=["h1","h2","h3","h4"];function g(e){return f.includes(e)}function b(e){let t=f.indexOf(e);return t<0?0:t}function v(e){return`plan-h-${e}`}function y(e){return e.replace(/[`*]/g,"").trim()}function j(e,t,n,s){let o="reading"===n;switch(e.kind){case"h1":return(0,a.jsx)("h1",{id:s,className:o?"scroll-mt-24 text-xl font-semibold tracking-tight text-foreground":"text-base font-semibold text-foreground",children:t});case"h2":return(0,a.jsx)("h2",{id:s,className:o?"mt-6 scroll-mt-24 border-b border-white/10 pb-1 text-lg font-semibold text-foreground":"mt-3 text-sm font-semibold text-muted-foreground",children:t});case"h3":return(0,a.jsx)("h3",{id:s,className:o?"mt-4 scroll-mt-24 text-base font-semibold text-foreground":"mt-2 text-[13px] font-semibold text-foreground",children:t});case"h4":return(0,a.jsx)("h4",{id:s,className:o?"mt-3 scroll-mt-24 text-sm font-semibold text-muted-foreground":"mt-2 text-[13px] font-semibold text-muted-foreground",children:t});case"ul":case"ol":{let n=e.depth??0;return(0,a.jsxs)("div",{className:(0,r.cn)("flex gap-2",o?"text-foreground/95":"text-foreground/90"),style:{marginLeft:`${.75+1.25*n}rem`},children:[(0,a.jsx)("span",{className:"shrink-0 select-none text-muted-foreground tabular-nums",children:"ol"===e.kind?`${e.marker}.`:"•"}),(0,a.jsx)("span",{className:"min-w-0 flex-1",children:t})]})}case"quote":return(0,a.jsx)("blockquote",{className:(0,r.cn)("whitespace-pre-wrap border-l-2 pl-3 italic",o?"border-white/15 text-foreground/80":"border-white/10 text-foreground/75"),children:t});default:return(0,a.jsx)("p",{className:(0,r.cn)("whitespace-pre-wrap",o?"text-foreground/95":"text-foreground/90"),children:t})}}function w({block:e,variant:t}){return"code"===e.kind?(0,a.jsx)(x,{text:e.text}):"table"===e.kind?(0,a.jsx)(h,{block:e}):(0,a.jsx)(a.Fragment,{children:j(e,(0,a.jsx)(N,{text:e.text}),t)})}function N({text:e}){let t=e.split(/(`[^`]+`|\*\*[\s\S]+?\*\*|\*[^*]+\*)/g);return(0,a.jsx)(a.Fragment,{children:t.map((e,t)=>/^`[^`]+`$/.test(e)?(0,a.jsx)("code",{className:"rounded bg-white/5 px-1 font-mono text-[12px]",children:e.slice(1,-1)},t):/^\*\*[\s\S]+\*\*$/.test(e)?(0,a.jsx)("strong",{className:"font-semibold text-foreground",children:(0,a.jsx)(N,{text:e.slice(2,-2)})},t):/^\*[^*]+\*$/.test(e)?(0,a.jsx)("em",{className:"text-muted-foreground",children:(0,a.jsx)(N,{text:e.slice(1,-1)})},t):(0,a.jsx)("span",{children:e},t))})}},62311:(e,t,n)=>{n.d(t,{Z:()=>m});var a=n(95155),s=n(98500),r=n.n(s),o=n(25640),i=n(83599),l=n(94192),d=n(34306),c=n(91337);let u={ROADMAP:o.A,ARCHITECTURE:i.A,FILES:l.A,DATABASE:d.A};function m({tabs:e,active:t}){return(0,a.jsx)("div",{className:"flex items-center gap-0.5",children:e.map(e=>{let n=e.value===t,s=e.Icon??u[e.value];return(0,a.jsxs)(r(),{href:e.href,className:(0,c.cn)("flex items-center gap-1.5 rounded-md px-2.5 py-1 text-[12px] font-medium tracking-tight transition-colors",n?"bg-white/10 text-foreground":"text-muted-foreground/80 hover:bg-white/5 hover:text-foreground"),children:[s?(0,a.jsx)(s,{className:"size-3"}):null,(0,a.jsx)("span",{children:e.label})]},e.value)})})}},70521:(e,t,n)=>{n.d(t,{$v:()=>w,EO:()=>b,Lt:()=>x,Rx:()=>N,Zr:()=>k,ck:()=>y,r7:()=>j,tv:()=>h,wd:()=>v});var a=n(95155);n(12115);var s=n(25381),r=n(7121),o=n(51880),i=n(35176),l=n(11248),d=n(82022),c=n(98758),u=n(45362),m=n(91337),p=n(4474);function x({...e}){return(0,a.jsx)(s.V,{"data-slot":"alert-dialog",...e})}function h({...e}){return(0,a.jsx)(r.t,{"data-slot":"alert-dialog-trigger",...e})}function f({...e}){return(0,a.jsx)(o.Z,{"data-slot":"alert-dialog-portal",...e})}function g({className:e,...t}){return(0,a.jsx)(i.X,{"data-slot":"alert-dialog-overlay",className:(0,m.cn)("fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",e),...t})}function b({className:e,size:t="default",...n}){return(0,a.jsxs)(f,{children:[(0,a.jsx)(g,{}),(0,a.jsx)(l.h,{"data-slot":"alert-dialog-content","data-size":t,className:(0,m.cn)("group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",e),...n})]})}function v({className:e,...t}){return(0,a.jsx)("div",{"data-slot":"alert-dialog-header",className:(0,m.cn)("grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]",e),...t})}function y({className:e,...t}){return(0,a.jsx)("div",{"data-slot":"alert-dialog-footer",className:(0,m.cn)("-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end",e),...t})}function j({className:e,...t}){return(0,a.jsx)(d.L,{"data-slot":"alert-dialog-title",className:(0,m.cn)("font-heading text-base font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2",e),...t})}function w({className:e,...t}){return(0,a.jsx)(c.r,{"data-slot":"alert-dialog-description",className:(0,m.cn)("text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",e),...t})}function N({className:e,variant:t,size:n,...s}){return(0,a.jsx)(u.H,{"data-slot":"alert-dialog-action",className:(0,m.cn)(e),render:(0,a.jsx)(p.$,{variant:t,size:n}),...s})}function k({className:e,variant:t="outline",size:n="default",...s}){return(0,a.jsx)(u.H,{"data-slot":"alert-dialog-cancel",className:(0,m.cn)(e),render:(0,a.jsx)(p.$,{variant:t,size:n}),...s})}},74350:(e,t,n)=>{n.d(t,{Cf:()=>g,Es:()=>v,L3:()=>y,c7:()=>b,lG:()=>x,rr:()=>j});var a=n(95155);n(12115);var s=n(17112),r=n(51880),o=n(35176),i=n(11248),l=n(45362),d=n(82022),c=n(98758),u=n(91337),m=n(4474),p=n(9005);function x({...e}){return(0,a.jsx)(s.D,{"data-slot":"dialog",...e})}function h({...e}){return(0,a.jsx)(r.Z,{"data-slot":"dialog-portal",...e})}function f({className:e,...t}){return(0,a.jsx)(o.X,{"data-slot":"dialog-overlay",className:(0,u.cn)("fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",e),...t})}function g({className:e,children:t,showCloseButton:n=!0,...s}){return(0,a.jsxs)(h,{children:[(0,a.jsx)(f,{}),(0,a.jsxs)(i.h,{"data-slot":"dialog-content",className:(0,u.cn)("fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-sm text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",e),...s,children:[t,n&&(0,a.jsxs)(l.H,{"data-slot":"dialog-close",render:(0,a.jsx)(m.$,{variant:"ghost",className:"absolute top-2 right-2",size:"icon-sm"}),children:[(0,a.jsx)(p.A,{}),(0,a.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})}function b({className:e,...t}){return(0,a.jsx)("div",{"data-slot":"dialog-header",className:(0,u.cn)("flex flex-col gap-2",e),...t})}function v({className:e,showCloseButton:t=!1,children:n,...s}){return(0,a.jsxs)("div",{"data-slot":"dialog-footer",className:(0,u.cn)("-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end",e),...s,children:[n,t&&(0,a.jsx)(l.H,{render:(0,a.jsx)(m.$,{variant:"outline"}),children:"Close"})]})}function y({className:e,...t}){return(0,a.jsx)(d.L,{"data-slot":"dialog-title",className:(0,u.cn)("font-heading text-base leading-none font-medium",e),...t})}function j({className:e,...t}){return(0,a.jsx)(c.r,{"data-slot":"dialog-description",className:(0,u.cn)("text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",e),...t})}},82099:(e,t,n)=>{n.d(t,{b:()=>r});var a=n(95155);n(12115);var s=n(91337);function r({className:e,children:t,...n}){return(0,a.jsxs)("div",{className:(0,s.cn)("glass relative isolate overflow-hidden",e),...n,children:[(0,a.jsx)("span",{"aria-hidden":!0,className:"pointer-events-none absolute inset-0 -z-10 rounded-[inherit]",style:{background:"radial-gradient(90% 60% at 0% 0%, oklch(1 0 0 / 0.04), transparent 42%)"}}),(0,a.jsx)("span",{"aria-hidden":!0,className:"pointer-events-none absolute inset-0 -z-10 rounded-[inherit] opacity-[0.035] mix-blend-overlay",style:{backgroundImage:"url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E\")",backgroundSize:"120px 120px"}}),t]})}},91337:(e,t,n)=>{n.d(t,{cn:()=>r});var a=n(29722),s=n(622);function r(...e){return(0,s.QP)((0,a.$)(e))}},95635:(e,t,n)=>{n.d(t,{x:()=>o});var a=n(95155),s=n(81750),r=n(6266);function o(){let e="!h-2 !w-2 !border-0 !bg-zinc-400";return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(s.h7,{type:"target",position:r.yX.Top,id:"tt",className:e}),(0,a.jsx)(s.h7,{type:"source",position:r.yX.Top,id:"st",className:e}),(0,a.jsx)(s.h7,{type:"target",position:r.yX.Right,id:"tr",className:e}),(0,a.jsx)(s.h7,{type:"source",position:r.yX.Right,id:"sr",className:e}),(0,a.jsx)(s.h7,{type:"target",position:r.yX.Bottom,id:"tb",className:e}),(0,a.jsx)(s.h7,{type:"source",position:r.yX.Bottom,id:"sb",className:e}),(0,a.jsx)(s.h7,{type:"target",position:r.yX.Left,id:"tl",className:e}),(0,a.jsx)(s.h7,{type:"source",position:r.yX.Left,id:"sl",className:e})]})}}}]);