trybeacon 0.1.0

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 (994) hide show
  1. package/.next/BUILD_ID +1 -0
  2. package/.next/app-path-routes-manifest.json +59 -0
  3. package/.next/build/56416d4ae4ce586f.js +6 -0
  4. package/.next/build/56416d4ae4ce586f.js.map +5 -0
  5. package/.next/build/chunks/[root-of-the-server]__0oj80bi._.js +206 -0
  6. package/.next/build/chunks/[root-of-the-server]__0oj80bi._.js.map +8 -0
  7. package/.next/build/chunks/[root-of-the-server]__1f933tp._.js +500 -0
  8. package/.next/build/chunks/[root-of-the-server]__1f933tp._.js.map +11 -0
  9. package/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_0b7xl6g._.js +13 -0
  10. package/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_0b7xl6g._.js.map +5 -0
  11. package/.next/build/chunks/[turbopack]_runtime.js +890 -0
  12. package/.next/build/chunks/[turbopack]_runtime.js.map +11 -0
  13. package/.next/build/chunks/node_modules_20v-8wl._.js +6824 -0
  14. package/.next/build/chunks/node_modules_20v-8wl._.js.map +47 -0
  15. package/.next/build/package.json +1 -0
  16. package/.next/build-manifest.json +21 -0
  17. package/.next/diagnostics/build-diagnostics.json +6 -0
  18. package/.next/diagnostics/framework.json +1 -0
  19. package/.next/diagnostics/route-bundle-stats.json +100 -0
  20. package/.next/export-marker.json +6 -0
  21. package/.next/fallback-build-manifest.json +13 -0
  22. package/.next/images-manifest.json +68 -0
  23. package/.next/next-minimal-server.js.nft.json +1 -0
  24. package/.next/next-server.js.nft.json +1 -0
  25. package/.next/package.json +1 -0
  26. package/.next/prerender-manifest.json +167 -0
  27. package/.next/required-server-files.js +338 -0
  28. package/.next/required-server-files.json +338 -0
  29. package/.next/routes-manifest.json +402 -0
  30. package/.next/server/app/_global-error/page/app-paths-manifest.json +3 -0
  31. package/.next/server/app/_global-error/page/build-manifest.json +17 -0
  32. package/.next/server/app/_global-error/page/next-font-manifest.json +6 -0
  33. package/.next/server/app/_global-error/page/react-loadable-manifest.json +1 -0
  34. package/.next/server/app/_global-error/page/server-reference-manifest.json +4 -0
  35. package/.next/server/app/_global-error/page.js +10 -0
  36. package/.next/server/app/_global-error/page.js.map +5 -0
  37. package/.next/server/app/_global-error/page.js.nft.json +1 -0
  38. package/.next/server/app/_global-error/page_client-reference-manifest.js +3 -0
  39. package/.next/server/app/_global-error.html +1 -0
  40. package/.next/server/app/_global-error.meta +15 -0
  41. package/.next/server/app/_global-error.rsc +14 -0
  42. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +5 -0
  43. package/.next/server/app/_global-error.segments/_full.segment.rsc +14 -0
  44. package/.next/server/app/_global-error.segments/_head.segment.rsc +5 -0
  45. package/.next/server/app/_global-error.segments/_index.segment.rsc +5 -0
  46. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -0
  47. package/.next/server/app/_not-found/page/app-paths-manifest.json +3 -0
  48. package/.next/server/app/_not-found/page/build-manifest.json +17 -0
  49. package/.next/server/app/_not-found/page/next-font-manifest.json +11 -0
  50. package/.next/server/app/_not-found/page/react-loadable-manifest.json +1 -0
  51. package/.next/server/app/_not-found/page/server-reference-manifest.json +4 -0
  52. package/.next/server/app/_not-found/page.js +15 -0
  53. package/.next/server/app/_not-found/page.js.map +5 -0
  54. package/.next/server/app/_not-found/page.js.nft.json +1 -0
  55. package/.next/server/app/_not-found/page_client-reference-manifest.js +3 -0
  56. package/.next/server/app/_not-found.html +1 -0
  57. package/.next/server/app/_not-found.meta +16 -0
  58. package/.next/server/app/_not-found.rsc +24 -0
  59. package/.next/server/app/_not-found.segments/_full.segment.rsc +24 -0
  60. package/.next/server/app/_not-found.segments/_head.segment.rsc +6 -0
  61. package/.next/server/app/_not-found.segments/_index.segment.rsc +13 -0
  62. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +5 -0
  63. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +5 -0
  64. package/.next/server/app/_not-found.segments/_tree.segment.rsc +3 -0
  65. package/.next/server/app/api/code-graph/position/route/app-paths-manifest.json +3 -0
  66. package/.next/server/app/api/code-graph/position/route/build-manifest.json +9 -0
  67. package/.next/server/app/api/code-graph/position/route/server-reference-manifest.json +4 -0
  68. package/.next/server/app/api/code-graph/position/route.js +12 -0
  69. package/.next/server/app/api/code-graph/position/route.js.map +5 -0
  70. package/.next/server/app/api/code-graph/position/route.js.nft.json +1 -0
  71. package/.next/server/app/api/code-graph/position/route_client-reference-manifest.js +3 -0
  72. package/.next/server/app/api/code-graph/route/app-paths-manifest.json +3 -0
  73. package/.next/server/app/api/code-graph/route/build-manifest.json +9 -0
  74. package/.next/server/app/api/code-graph/route/server-reference-manifest.json +4 -0
  75. package/.next/server/app/api/code-graph/route.js +12 -0
  76. package/.next/server/app/api/code-graph/route.js.map +5 -0
  77. package/.next/server/app/api/code-graph/route.js.nft.json +1 -0
  78. package/.next/server/app/api/code-graph/route_client-reference-manifest.js +3 -0
  79. package/.next/server/app/api/context/embed-backfill/route/app-paths-manifest.json +3 -0
  80. package/.next/server/app/api/context/embed-backfill/route/build-manifest.json +9 -0
  81. package/.next/server/app/api/context/embed-backfill/route/server-reference-manifest.json +4 -0
  82. package/.next/server/app/api/context/embed-backfill/route.js +11 -0
  83. package/.next/server/app/api/context/embed-backfill/route.js.map +5 -0
  84. package/.next/server/app/api/context/embed-backfill/route.js.nft.json +1 -0
  85. package/.next/server/app/api/context/embed-backfill/route_client-reference-manifest.js +3 -0
  86. package/.next/server/app/api/context/feature/route/app-paths-manifest.json +3 -0
  87. package/.next/server/app/api/context/feature/route/build-manifest.json +9 -0
  88. package/.next/server/app/api/context/feature/route/server-reference-manifest.json +4 -0
  89. package/.next/server/app/api/context/feature/route.js +15 -0
  90. package/.next/server/app/api/context/feature/route.js.map +5 -0
  91. package/.next/server/app/api/context/feature/route.js.nft.json +1 -0
  92. package/.next/server/app/api/context/feature/route_client-reference-manifest.js +3 -0
  93. package/.next/server/app/api/context/file/route/app-paths-manifest.json +3 -0
  94. package/.next/server/app/api/context/file/route/build-manifest.json +9 -0
  95. package/.next/server/app/api/context/file/route/server-reference-manifest.json +4 -0
  96. package/.next/server/app/api/context/file/route.js +13 -0
  97. package/.next/server/app/api/context/file/route.js.map +5 -0
  98. package/.next/server/app/api/context/file/route.js.nft.json +1 -0
  99. package/.next/server/app/api/context/file/route_client-reference-manifest.js +3 -0
  100. package/.next/server/app/api/context/route/app-paths-manifest.json +3 -0
  101. package/.next/server/app/api/context/route/build-manifest.json +9 -0
  102. package/.next/server/app/api/context/route/server-reference-manifest.json +4 -0
  103. package/.next/server/app/api/context/route.js +11 -0
  104. package/.next/server/app/api/context/route.js.map +5 -0
  105. package/.next/server/app/api/context/route.js.nft.json +1 -0
  106. package/.next/server/app/api/context/route_client-reference-manifest.js +3 -0
  107. package/.next/server/app/api/db/backfill-access/route/app-paths-manifest.json +3 -0
  108. package/.next/server/app/api/db/backfill-access/route/build-manifest.json +9 -0
  109. package/.next/server/app/api/db/backfill-access/route/server-reference-manifest.json +4 -0
  110. package/.next/server/app/api/db/backfill-access/route.js +13 -0
  111. package/.next/server/app/api/db/backfill-access/route.js.map +5 -0
  112. package/.next/server/app/api/db/backfill-access/route.js.nft.json +1 -0
  113. package/.next/server/app/api/db/backfill-access/route_client-reference-manifest.js +3 -0
  114. package/.next/server/app/api/db/position/route/app-paths-manifest.json +3 -0
  115. package/.next/server/app/api/db/position/route/build-manifest.json +9 -0
  116. package/.next/server/app/api/db/position/route/server-reference-manifest.json +4 -0
  117. package/.next/server/app/api/db/position/route.js +15 -0
  118. package/.next/server/app/api/db/position/route.js.map +5 -0
  119. package/.next/server/app/api/db/position/route.js.nft.json +1 -0
  120. package/.next/server/app/api/db/position/route_client-reference-manifest.js +3 -0
  121. package/.next/server/app/api/db/reconcile-endpoints/route/app-paths-manifest.json +3 -0
  122. package/.next/server/app/api/db/reconcile-endpoints/route/build-manifest.json +9 -0
  123. package/.next/server/app/api/db/reconcile-endpoints/route/server-reference-manifest.json +4 -0
  124. package/.next/server/app/api/db/reconcile-endpoints/route.js +12 -0
  125. package/.next/server/app/api/db/reconcile-endpoints/route.js.map +5 -0
  126. package/.next/server/app/api/db/reconcile-endpoints/route.js.nft.json +1 -0
  127. package/.next/server/app/api/db/reconcile-endpoints/route_client-reference-manifest.js +3 -0
  128. package/.next/server/app/api/db/relations/[id]/route/app-paths-manifest.json +3 -0
  129. package/.next/server/app/api/db/relations/[id]/route/build-manifest.json +9 -0
  130. package/.next/server/app/api/db/relations/[id]/route/server-reference-manifest.json +4 -0
  131. package/.next/server/app/api/db/relations/[id]/route.js +12 -0
  132. package/.next/server/app/api/db/relations/[id]/route.js.map +5 -0
  133. package/.next/server/app/api/db/relations/[id]/route.js.nft.json +1 -0
  134. package/.next/server/app/api/db/relations/[id]/route_client-reference-manifest.js +3 -0
  135. package/.next/server/app/api/db/tables/[id]/route/app-paths-manifest.json +3 -0
  136. package/.next/server/app/api/db/tables/[id]/route/build-manifest.json +9 -0
  137. package/.next/server/app/api/db/tables/[id]/route/server-reference-manifest.json +4 -0
  138. package/.next/server/app/api/db/tables/[id]/route.js +12 -0
  139. package/.next/server/app/api/db/tables/[id]/route.js.map +5 -0
  140. package/.next/server/app/api/db/tables/[id]/route.js.nft.json +1 -0
  141. package/.next/server/app/api/db/tables/[id]/route_client-reference-manifest.js +3 -0
  142. package/.next/server/app/api/draft/approve/route/app-paths-manifest.json +3 -0
  143. package/.next/server/app/api/draft/approve/route/build-manifest.json +9 -0
  144. package/.next/server/app/api/draft/approve/route/server-reference-manifest.json +4 -0
  145. package/.next/server/app/api/draft/approve/route.js +16 -0
  146. package/.next/server/app/api/draft/approve/route.js.map +5 -0
  147. package/.next/server/app/api/draft/approve/route.js.nft.json +1 -0
  148. package/.next/server/app/api/draft/approve/route_client-reference-manifest.js +3 -0
  149. package/.next/server/app/api/draft/route/app-paths-manifest.json +3 -0
  150. package/.next/server/app/api/draft/route/build-manifest.json +9 -0
  151. package/.next/server/app/api/draft/route/server-reference-manifest.json +4 -0
  152. package/.next/server/app/api/draft/route.js +16 -0
  153. package/.next/server/app/api/draft/route.js.map +5 -0
  154. package/.next/server/app/api/draft/route.js.nft.json +1 -0
  155. package/.next/server/app/api/draft/route_client-reference-manifest.js +3 -0
  156. package/.next/server/app/api/draft/status/route/app-paths-manifest.json +3 -0
  157. package/.next/server/app/api/draft/status/route/build-manifest.json +9 -0
  158. package/.next/server/app/api/draft/status/route/server-reference-manifest.json +4 -0
  159. package/.next/server/app/api/draft/status/route.js +13 -0
  160. package/.next/server/app/api/draft/status/route.js.map +5 -0
  161. package/.next/server/app/api/draft/status/route.js.nft.json +1 -0
  162. package/.next/server/app/api/draft/status/route_client-reference-manifest.js +3 -0
  163. package/.next/server/app/api/edges/[id]/route/app-paths-manifest.json +3 -0
  164. package/.next/server/app/api/edges/[id]/route/build-manifest.json +9 -0
  165. package/.next/server/app/api/edges/[id]/route/server-reference-manifest.json +4 -0
  166. package/.next/server/app/api/edges/[id]/route.js +11 -0
  167. package/.next/server/app/api/edges/[id]/route.js.map +5 -0
  168. package/.next/server/app/api/edges/[id]/route.js.nft.json +1 -0
  169. package/.next/server/app/api/edges/[id]/route_client-reference-manifest.js +3 -0
  170. package/.next/server/app/api/edges/route/app-paths-manifest.json +3 -0
  171. package/.next/server/app/api/edges/route/build-manifest.json +9 -0
  172. package/.next/server/app/api/edges/route/server-reference-manifest.json +4 -0
  173. package/.next/server/app/api/edges/route.js +15 -0
  174. package/.next/server/app/api/edges/route.js.map +5 -0
  175. package/.next/server/app/api/edges/route.js.nft.json +1 -0
  176. package/.next/server/app/api/edges/route_client-reference-manifest.js +3 -0
  177. package/.next/server/app/api/endpoints/[id]/route/app-paths-manifest.json +3 -0
  178. package/.next/server/app/api/endpoints/[id]/route/build-manifest.json +9 -0
  179. package/.next/server/app/api/endpoints/[id]/route/server-reference-manifest.json +4 -0
  180. package/.next/server/app/api/endpoints/[id]/route.js +12 -0
  181. package/.next/server/app/api/endpoints/[id]/route.js.map +5 -0
  182. package/.next/server/app/api/endpoints/[id]/route.js.nft.json +1 -0
  183. package/.next/server/app/api/endpoints/[id]/route_client-reference-manifest.js +3 -0
  184. package/.next/server/app/api/entities/route/app-paths-manifest.json +3 -0
  185. package/.next/server/app/api/entities/route/build-manifest.json +9 -0
  186. package/.next/server/app/api/entities/route/server-reference-manifest.json +4 -0
  187. package/.next/server/app/api/entities/route.js +11 -0
  188. package/.next/server/app/api/entities/route.js.map +5 -0
  189. package/.next/server/app/api/entities/route.js.nft.json +1 -0
  190. package/.next/server/app/api/entities/route_client-reference-manifest.js +3 -0
  191. package/.next/server/app/api/ingest/route/app-paths-manifest.json +3 -0
  192. package/.next/server/app/api/ingest/route/build-manifest.json +9 -0
  193. package/.next/server/app/api/ingest/route/server-reference-manifest.json +4 -0
  194. package/.next/server/app/api/ingest/route.js +12 -0
  195. package/.next/server/app/api/ingest/route.js.map +5 -0
  196. package/.next/server/app/api/ingest/route.js.nft.json +1 -0
  197. package/.next/server/app/api/ingest/route_client-reference-manifest.js +3 -0
  198. package/.next/server/app/api/init/route/app-paths-manifest.json +3 -0
  199. package/.next/server/app/api/init/route/build-manifest.json +9 -0
  200. package/.next/server/app/api/init/route/server-reference-manifest.json +4 -0
  201. package/.next/server/app/api/init/route.js +15 -0
  202. package/.next/server/app/api/init/route.js.map +5 -0
  203. package/.next/server/app/api/init/route.js.nft.json +1 -0
  204. package/.next/server/app/api/init/route_client-reference-manifest.js +3 -0
  205. package/.next/server/app/api/map/describe/route/app-paths-manifest.json +3 -0
  206. package/.next/server/app/api/map/describe/route/build-manifest.json +9 -0
  207. package/.next/server/app/api/map/describe/route/server-reference-manifest.json +4 -0
  208. package/.next/server/app/api/map/describe/route.js +15 -0
  209. package/.next/server/app/api/map/describe/route.js.map +5 -0
  210. package/.next/server/app/api/map/describe/route.js.nft.json +1 -0
  211. package/.next/server/app/api/map/describe/route_client-reference-manifest.js +3 -0
  212. package/.next/server/app/api/map/files/route/app-paths-manifest.json +3 -0
  213. package/.next/server/app/api/map/files/route/build-manifest.json +9 -0
  214. package/.next/server/app/api/map/files/route/server-reference-manifest.json +4 -0
  215. package/.next/server/app/api/map/files/route.js +15 -0
  216. package/.next/server/app/api/map/files/route.js.map +5 -0
  217. package/.next/server/app/api/map/files/route.js.nft.json +1 -0
  218. package/.next/server/app/api/map/files/route_client-reference-manifest.js +3 -0
  219. package/.next/server/app/api/map/finish/route/app-paths-manifest.json +3 -0
  220. package/.next/server/app/api/map/finish/route/build-manifest.json +9 -0
  221. package/.next/server/app/api/map/finish/route/server-reference-manifest.json +4 -0
  222. package/.next/server/app/api/map/finish/route.js +15 -0
  223. package/.next/server/app/api/map/finish/route.js.map +5 -0
  224. package/.next/server/app/api/map/finish/route.js.nft.json +1 -0
  225. package/.next/server/app/api/map/finish/route_client-reference-manifest.js +3 -0
  226. package/.next/server/app/api/map/route/app-paths-manifest.json +3 -0
  227. package/.next/server/app/api/map/route/build-manifest.json +9 -0
  228. package/.next/server/app/api/map/route/server-reference-manifest.json +4 -0
  229. package/.next/server/app/api/map/route.js +15 -0
  230. package/.next/server/app/api/map/route.js.map +5 -0
  231. package/.next/server/app/api/map/route.js.nft.json +1 -0
  232. package/.next/server/app/api/map/route_client-reference-manifest.js +3 -0
  233. package/.next/server/app/api/map/start/route/app-paths-manifest.json +3 -0
  234. package/.next/server/app/api/map/start/route/build-manifest.json +9 -0
  235. package/.next/server/app/api/map/start/route/server-reference-manifest.json +4 -0
  236. package/.next/server/app/api/map/start/route.js +15 -0
  237. package/.next/server/app/api/map/start/route.js.map +5 -0
  238. package/.next/server/app/api/map/start/route.js.nft.json +1 -0
  239. package/.next/server/app/api/map/start/route_client-reference-manifest.js +3 -0
  240. package/.next/server/app/api/map/touch-active/route/app-paths-manifest.json +3 -0
  241. package/.next/server/app/api/map/touch-active/route/build-manifest.json +9 -0
  242. package/.next/server/app/api/map/touch-active/route/server-reference-manifest.json +4 -0
  243. package/.next/server/app/api/map/touch-active/route.js +15 -0
  244. package/.next/server/app/api/map/touch-active/route.js.map +5 -0
  245. package/.next/server/app/api/map/touch-active/route.js.nft.json +1 -0
  246. package/.next/server/app/api/map/touch-active/route_client-reference-manifest.js +3 -0
  247. package/.next/server/app/api/nodes/[id]/position/route/app-paths-manifest.json +3 -0
  248. package/.next/server/app/api/nodes/[id]/position/route/build-manifest.json +9 -0
  249. package/.next/server/app/api/nodes/[id]/position/route/server-reference-manifest.json +4 -0
  250. package/.next/server/app/api/nodes/[id]/position/route.js +15 -0
  251. package/.next/server/app/api/nodes/[id]/position/route.js.map +5 -0
  252. package/.next/server/app/api/nodes/[id]/position/route.js.nft.json +1 -0
  253. package/.next/server/app/api/nodes/[id]/position/route_client-reference-manifest.js +3 -0
  254. package/.next/server/app/api/nodes/[id]/route/app-paths-manifest.json +3 -0
  255. package/.next/server/app/api/nodes/[id]/route/build-manifest.json +9 -0
  256. package/.next/server/app/api/nodes/[id]/route/server-reference-manifest.json +4 -0
  257. package/.next/server/app/api/nodes/[id]/route.js +15 -0
  258. package/.next/server/app/api/nodes/[id]/route.js.map +5 -0
  259. package/.next/server/app/api/nodes/[id]/route.js.nft.json +1 -0
  260. package/.next/server/app/api/nodes/[id]/route_client-reference-manifest.js +3 -0
  261. package/.next/server/app/api/nodes/positions/route/app-paths-manifest.json +3 -0
  262. package/.next/server/app/api/nodes/positions/route/build-manifest.json +9 -0
  263. package/.next/server/app/api/nodes/positions/route/server-reference-manifest.json +4 -0
  264. package/.next/server/app/api/nodes/positions/route.js +15 -0
  265. package/.next/server/app/api/nodes/positions/route.js.map +5 -0
  266. package/.next/server/app/api/nodes/positions/route.js.nft.json +1 -0
  267. package/.next/server/app/api/nodes/positions/route_client-reference-manifest.js +3 -0
  268. package/.next/server/app/api/nodes/route/app-paths-manifest.json +3 -0
  269. package/.next/server/app/api/nodes/route/build-manifest.json +9 -0
  270. package/.next/server/app/api/nodes/route/server-reference-manifest.json +4 -0
  271. package/.next/server/app/api/nodes/route.js +15 -0
  272. package/.next/server/app/api/nodes/route.js.map +5 -0
  273. package/.next/server/app/api/nodes/route.js.nft.json +1 -0
  274. package/.next/server/app/api/nodes/route_client-reference-manifest.js +3 -0
  275. package/.next/server/app/api/nodes/subtasks/route/app-paths-manifest.json +3 -0
  276. package/.next/server/app/api/nodes/subtasks/route/build-manifest.json +9 -0
  277. package/.next/server/app/api/nodes/subtasks/route/server-reference-manifest.json +4 -0
  278. package/.next/server/app/api/nodes/subtasks/route.js +15 -0
  279. package/.next/server/app/api/nodes/subtasks/route.js.map +5 -0
  280. package/.next/server/app/api/nodes/subtasks/route.js.nft.json +1 -0
  281. package/.next/server/app/api/nodes/subtasks/route_client-reference-manifest.js +3 -0
  282. package/.next/server/app/api/notes/[id]/route/app-paths-manifest.json +3 -0
  283. package/.next/server/app/api/notes/[id]/route/build-manifest.json +9 -0
  284. package/.next/server/app/api/notes/[id]/route/server-reference-manifest.json +4 -0
  285. package/.next/server/app/api/notes/[id]/route.js +12 -0
  286. package/.next/server/app/api/notes/[id]/route.js.map +5 -0
  287. package/.next/server/app/api/notes/[id]/route.js.nft.json +1 -0
  288. package/.next/server/app/api/notes/[id]/route_client-reference-manifest.js +3 -0
  289. package/.next/server/app/api/notes/route/app-paths-manifest.json +3 -0
  290. package/.next/server/app/api/notes/route/build-manifest.json +9 -0
  291. package/.next/server/app/api/notes/route/server-reference-manifest.json +4 -0
  292. package/.next/server/app/api/notes/route.js +12 -0
  293. package/.next/server/app/api/notes/route.js.map +5 -0
  294. package/.next/server/app/api/notes/route.js.nft.json +1 -0
  295. package/.next/server/app/api/notes/route_client-reference-manifest.js +3 -0
  296. package/.next/server/app/api/open/route/app-paths-manifest.json +3 -0
  297. package/.next/server/app/api/open/route/build-manifest.json +9 -0
  298. package/.next/server/app/api/open/route/server-reference-manifest.json +4 -0
  299. package/.next/server/app/api/open/route.js +11 -0
  300. package/.next/server/app/api/open/route.js.map +5 -0
  301. package/.next/server/app/api/open/route.js.nft.json +1 -0
  302. package/.next/server/app/api/open/route_client-reference-manifest.js +3 -0
  303. package/.next/server/app/api/plan/annotations/route/app-paths-manifest.json +3 -0
  304. package/.next/server/app/api/plan/annotations/route/build-manifest.json +9 -0
  305. package/.next/server/app/api/plan/annotations/route/server-reference-manifest.json +4 -0
  306. package/.next/server/app/api/plan/annotations/route.js +15 -0
  307. package/.next/server/app/api/plan/annotations/route.js.map +5 -0
  308. package/.next/server/app/api/plan/annotations/route.js.nft.json +1 -0
  309. package/.next/server/app/api/plan/annotations/route_client-reference-manifest.js +3 -0
  310. package/.next/server/app/api/plan/approve/route/app-paths-manifest.json +3 -0
  311. package/.next/server/app/api/plan/approve/route/build-manifest.json +9 -0
  312. package/.next/server/app/api/plan/approve/route/server-reference-manifest.json +4 -0
  313. package/.next/server/app/api/plan/approve/route.js +16 -0
  314. package/.next/server/app/api/plan/approve/route.js.map +5 -0
  315. package/.next/server/app/api/plan/approve/route.js.nft.json +1 -0
  316. package/.next/server/app/api/plan/approve/route_client-reference-manifest.js +3 -0
  317. package/.next/server/app/api/plan/history/route/app-paths-manifest.json +3 -0
  318. package/.next/server/app/api/plan/history/route/build-manifest.json +9 -0
  319. package/.next/server/app/api/plan/history/route/server-reference-manifest.json +4 -0
  320. package/.next/server/app/api/plan/history/route.js +11 -0
  321. package/.next/server/app/api/plan/history/route.js.map +5 -0
  322. package/.next/server/app/api/plan/history/route.js.nft.json +1 -0
  323. package/.next/server/app/api/plan/history/route_client-reference-manifest.js +3 -0
  324. package/.next/server/app/api/plan/markdown/route/app-paths-manifest.json +3 -0
  325. package/.next/server/app/api/plan/markdown/route/build-manifest.json +9 -0
  326. package/.next/server/app/api/plan/markdown/route/server-reference-manifest.json +4 -0
  327. package/.next/server/app/api/plan/markdown/route.js +16 -0
  328. package/.next/server/app/api/plan/markdown/route.js.map +5 -0
  329. package/.next/server/app/api/plan/markdown/route.js.nft.json +1 -0
  330. package/.next/server/app/api/plan/markdown/route_client-reference-manifest.js +3 -0
  331. package/.next/server/app/api/plan/presence/route/app-paths-manifest.json +3 -0
  332. package/.next/server/app/api/plan/presence/route/build-manifest.json +9 -0
  333. package/.next/server/app/api/plan/presence/route/server-reference-manifest.json +4 -0
  334. package/.next/server/app/api/plan/presence/route.js +11 -0
  335. package/.next/server/app/api/plan/presence/route.js.map +5 -0
  336. package/.next/server/app/api/plan/presence/route.js.nft.json +1 -0
  337. package/.next/server/app/api/plan/presence/route_client-reference-manifest.js +3 -0
  338. package/.next/server/app/api/plan/route/app-paths-manifest.json +3 -0
  339. package/.next/server/app/api/plan/route/build-manifest.json +9 -0
  340. package/.next/server/app/api/plan/route/server-reference-manifest.json +4 -0
  341. package/.next/server/app/api/plan/route.js +16 -0
  342. package/.next/server/app/api/plan/route.js.map +5 -0
  343. package/.next/server/app/api/plan/route.js.nft.json +1 -0
  344. package/.next/server/app/api/plan/route_client-reference-manifest.js +3 -0
  345. package/.next/server/app/api/plan/verdict/route/app-paths-manifest.json +3 -0
  346. package/.next/server/app/api/plan/verdict/route/build-manifest.json +9 -0
  347. package/.next/server/app/api/plan/verdict/route/server-reference-manifest.json +4 -0
  348. package/.next/server/app/api/plan/verdict/route.js +16 -0
  349. package/.next/server/app/api/plan/verdict/route.js.map +5 -0
  350. package/.next/server/app/api/plan/verdict/route.js.nft.json +1 -0
  351. package/.next/server/app/api/plan/verdict/route_client-reference-manifest.js +3 -0
  352. package/.next/server/app/api/preferences/route/app-paths-manifest.json +3 -0
  353. package/.next/server/app/api/preferences/route/build-manifest.json +9 -0
  354. package/.next/server/app/api/preferences/route/server-reference-manifest.json +4 -0
  355. package/.next/server/app/api/preferences/route.js +7 -0
  356. package/.next/server/app/api/preferences/route.js.map +5 -0
  357. package/.next/server/app/api/preferences/route.js.nft.json +1 -0
  358. package/.next/server/app/api/preferences/route_client-reference-manifest.js +3 -0
  359. package/.next/server/app/api/reset/route/app-paths-manifest.json +3 -0
  360. package/.next/server/app/api/reset/route/build-manifest.json +9 -0
  361. package/.next/server/app/api/reset/route/server-reference-manifest.json +4 -0
  362. package/.next/server/app/api/reset/route.js +13 -0
  363. package/.next/server/app/api/reset/route.js.map +5 -0
  364. package/.next/server/app/api/reset/route.js.nft.json +1 -0
  365. package/.next/server/app/api/reset/route_client-reference-manifest.js +3 -0
  366. package/.next/server/app/api/settings/route/app-paths-manifest.json +3 -0
  367. package/.next/server/app/api/settings/route/build-manifest.json +9 -0
  368. package/.next/server/app/api/settings/route/server-reference-manifest.json +4 -0
  369. package/.next/server/app/api/settings/route.js +11 -0
  370. package/.next/server/app/api/settings/route.js.map +5 -0
  371. package/.next/server/app/api/settings/route.js.nft.json +1 -0
  372. package/.next/server/app/api/settings/route_client-reference-manifest.js +3 -0
  373. package/.next/server/app/api/stream/route/app-paths-manifest.json +3 -0
  374. package/.next/server/app/api/stream/route/build-manifest.json +9 -0
  375. package/.next/server/app/api/stream/route/server-reference-manifest.json +4 -0
  376. package/.next/server/app/api/stream/route.js +12 -0
  377. package/.next/server/app/api/stream/route.js.map +5 -0
  378. package/.next/server/app/api/stream/route.js.nft.json +1 -0
  379. package/.next/server/app/api/stream/route_client-reference-manifest.js +3 -0
  380. package/.next/server/app/api/version/route/app-paths-manifest.json +3 -0
  381. package/.next/server/app/api/version/route/build-manifest.json +9 -0
  382. package/.next/server/app/api/version/route/server-reference-manifest.json +4 -0
  383. package/.next/server/app/api/version/route.js +12 -0
  384. package/.next/server/app/api/version/route.js.map +5 -0
  385. package/.next/server/app/api/version/route.js.nft.json +1 -0
  386. package/.next/server/app/api/version/route_client-reference-manifest.js +3 -0
  387. package/.next/server/app/api/workspace/activate/route/app-paths-manifest.json +3 -0
  388. package/.next/server/app/api/workspace/activate/route/build-manifest.json +9 -0
  389. package/.next/server/app/api/workspace/activate/route/server-reference-manifest.json +4 -0
  390. package/.next/server/app/api/workspace/activate/route.js +14 -0
  391. package/.next/server/app/api/workspace/activate/route.js.map +5 -0
  392. package/.next/server/app/api/workspace/activate/route.js.nft.json +1 -0
  393. package/.next/server/app/api/workspace/activate/route_client-reference-manifest.js +3 -0
  394. package/.next/server/app/api/workspace/route/app-paths-manifest.json +3 -0
  395. package/.next/server/app/api/workspace/route/build-manifest.json +9 -0
  396. package/.next/server/app/api/workspace/route/server-reference-manifest.json +4 -0
  397. package/.next/server/app/api/workspace/route.js +11 -0
  398. package/.next/server/app/api/workspace/route.js.map +5 -0
  399. package/.next/server/app/api/workspace/route.js.nft.json +1 -0
  400. package/.next/server/app/api/workspace/route_client-reference-manifest.js +3 -0
  401. package/.next/server/app/apple-icon.png/route/app-paths-manifest.json +3 -0
  402. package/.next/server/app/apple-icon.png/route/build-manifest.json +9 -0
  403. package/.next/server/app/apple-icon.png/route.js +8 -0
  404. package/.next/server/app/apple-icon.png/route.js.map +5 -0
  405. package/.next/server/app/apple-icon.png/route.js.nft.json +1 -0
  406. package/.next/server/app/apple-icon.png.body +0 -0
  407. package/.next/server/app/apple-icon.png.meta +1 -0
  408. package/.next/server/app/help/page/app-paths-manifest.json +3 -0
  409. package/.next/server/app/help/page/build-manifest.json +17 -0
  410. package/.next/server/app/help/page/next-font-manifest.json +11 -0
  411. package/.next/server/app/help/page/react-loadable-manifest.json +1 -0
  412. package/.next/server/app/help/page/server-reference-manifest.json +4 -0
  413. package/.next/server/app/help/page.js +16 -0
  414. package/.next/server/app/help/page.js.map +5 -0
  415. package/.next/server/app/help/page.js.nft.json +1 -0
  416. package/.next/server/app/help/page_client-reference-manifest.js +3 -0
  417. package/.next/server/app/help.html +1 -0
  418. package/.next/server/app/help.meta +15 -0
  419. package/.next/server/app/help.rsc +36 -0
  420. package/.next/server/app/help.segments/_full.segment.rsc +36 -0
  421. package/.next/server/app/help.segments/_head.segment.rsc +6 -0
  422. package/.next/server/app/help.segments/_index.segment.rsc +13 -0
  423. package/.next/server/app/help.segments/_tree.segment.rsc +5 -0
  424. package/.next/server/app/help.segments/help/__PAGE__.segment.rsc +17 -0
  425. package/.next/server/app/help.segments/help.segment.rsc +5 -0
  426. package/.next/server/app/icon.svg/route/app-paths-manifest.json +3 -0
  427. package/.next/server/app/icon.svg/route/build-manifest.json +9 -0
  428. package/.next/server/app/icon.svg/route.js +7 -0
  429. package/.next/server/app/icon.svg/route.js.map +5 -0
  430. package/.next/server/app/icon.svg/route.js.nft.json +1 -0
  431. package/.next/server/app/icon.svg.body +4 -0
  432. package/.next/server/app/icon.svg.meta +1 -0
  433. package/.next/server/app/index.html +1 -0
  434. package/.next/server/app/index.meta +14 -0
  435. package/.next/server/app/index.rsc +26 -0
  436. package/.next/server/app/index.segments/__PAGE__.segment.rsc +7 -0
  437. package/.next/server/app/index.segments/_full.segment.rsc +26 -0
  438. package/.next/server/app/index.segments/_head.segment.rsc +6 -0
  439. package/.next/server/app/index.segments/_index.segment.rsc +13 -0
  440. package/.next/server/app/index.segments/_tree.segment.rsc +6 -0
  441. package/.next/server/app/map/page/app-paths-manifest.json +3 -0
  442. package/.next/server/app/map/page/build-manifest.json +17 -0
  443. package/.next/server/app/map/page/next-font-manifest.json +11 -0
  444. package/.next/server/app/map/page/react-loadable-manifest.json +1 -0
  445. package/.next/server/app/map/page/server-reference-manifest.json +89 -0
  446. package/.next/server/app/map/page.js +25 -0
  447. package/.next/server/app/map/page.js.map +5 -0
  448. package/.next/server/app/map/page.js.nft.json +1 -0
  449. package/.next/server/app/map/page_client-reference-manifest.js +3 -0
  450. package/.next/server/app/page/app-paths-manifest.json +3 -0
  451. package/.next/server/app/page/build-manifest.json +17 -0
  452. package/.next/server/app/page/next-font-manifest.json +11 -0
  453. package/.next/server/app/page/react-loadable-manifest.json +1 -0
  454. package/.next/server/app/page/server-reference-manifest.json +4 -0
  455. package/.next/server/app/page.js +16 -0
  456. package/.next/server/app/page.js.map +5 -0
  457. package/.next/server/app/page.js.nft.json +1 -0
  458. package/.next/server/app/page_client-reference-manifest.js +3 -0
  459. package/.next/server/app/plan/page/app-paths-manifest.json +3 -0
  460. package/.next/server/app/plan/page/build-manifest.json +17 -0
  461. package/.next/server/app/plan/page/next-font-manifest.json +11 -0
  462. package/.next/server/app/plan/page/react-loadable-manifest.json +1 -0
  463. package/.next/server/app/plan/page/server-reference-manifest.json +89 -0
  464. package/.next/server/app/plan/page.js +26 -0
  465. package/.next/server/app/plan/page.js.map +5 -0
  466. package/.next/server/app/plan/page.js.nft.json +1 -0
  467. package/.next/server/app/plan/page_client-reference-manifest.js +3 -0
  468. package/.next/server/app/settings/page/app-paths-manifest.json +3 -0
  469. package/.next/server/app/settings/page/build-manifest.json +17 -0
  470. package/.next/server/app/settings/page/next-font-manifest.json +11 -0
  471. package/.next/server/app/settings/page/react-loadable-manifest.json +1 -0
  472. package/.next/server/app/settings/page/server-reference-manifest.json +4 -0
  473. package/.next/server/app/settings/page.js +17 -0
  474. package/.next/server/app/settings/page.js.map +5 -0
  475. package/.next/server/app/settings/page.js.nft.json +1 -0
  476. package/.next/server/app/settings/page_client-reference-manifest.js +3 -0
  477. package/.next/server/app-paths-manifest.json +59 -0
  478. package/.next/server/chunks/[externals]_@huggingface_transformers_05bd-zz._.js +3 -0
  479. package/.next/server/chunks/[externals]_@huggingface_transformers_05bd-zz._.js.map +1 -0
  480. package/.next/server/chunks/[externals]__1m_jh08._.js +3 -0
  481. package/.next/server/chunks/[externals]__1m_jh08._.js.map +1 -0
  482. package/.next/server/chunks/[externals]_next_dist_1081pat._.js +3 -0
  483. package/.next/server/chunks/[externals]_next_dist_1081pat._.js.map +1 -0
  484. package/.next/server/chunks/[root-of-the-server]__0--8e0y._.js +3 -0
  485. package/.next/server/chunks/[root-of-the-server]__0--8e0y._.js.map +1 -0
  486. package/.next/server/chunks/[root-of-the-server]__0-68r22._.js +3 -0
  487. package/.next/server/chunks/[root-of-the-server]__0-68r22._.js.map +1 -0
  488. package/.next/server/chunks/[root-of-the-server]__008acf8._.js +3 -0
  489. package/.next/server/chunks/[root-of-the-server]__008acf8._.js.map +1 -0
  490. package/.next/server/chunks/[root-of-the-server]__00rostp._.js +3 -0
  491. package/.next/server/chunks/[root-of-the-server]__00rostp._.js.map +1 -0
  492. package/.next/server/chunks/[root-of-the-server]__04deymo._.js +3 -0
  493. package/.next/server/chunks/[root-of-the-server]__04deymo._.js.map +1 -0
  494. package/.next/server/chunks/[root-of-the-server]__05_ckr9._.js +3 -0
  495. package/.next/server/chunks/[root-of-the-server]__05_ckr9._.js.map +1 -0
  496. package/.next/server/chunks/[root-of-the-server]__08b769e._.js +3 -0
  497. package/.next/server/chunks/[root-of-the-server]__08b769e._.js.map +1 -0
  498. package/.next/server/chunks/[root-of-the-server]__0935gge._.js +3 -0
  499. package/.next/server/chunks/[root-of-the-server]__0935gge._.js.map +1 -0
  500. package/.next/server/chunks/[root-of-the-server]__0b04f4n._.js +3 -0
  501. package/.next/server/chunks/[root-of-the-server]__0b04f4n._.js.map +1 -0
  502. package/.next/server/chunks/[root-of-the-server]__0bule95._.js +11 -0
  503. package/.next/server/chunks/[root-of-the-server]__0bule95._.js.map +1 -0
  504. package/.next/server/chunks/[root-of-the-server]__0dgnobj._.js +3 -0
  505. package/.next/server/chunks/[root-of-the-server]__0dgnobj._.js.map +1 -0
  506. package/.next/server/chunks/[root-of-the-server]__0fnoun8._.js +3 -0
  507. package/.next/server/chunks/[root-of-the-server]__0fnoun8._.js.map +1 -0
  508. package/.next/server/chunks/[root-of-the-server]__0gcvcx_._.js +3 -0
  509. package/.next/server/chunks/[root-of-the-server]__0gcvcx_._.js.map +1 -0
  510. package/.next/server/chunks/[root-of-the-server]__0gnu9c5._.js +11 -0
  511. package/.next/server/chunks/[root-of-the-server]__0gnu9c5._.js.map +1 -0
  512. package/.next/server/chunks/[root-of-the-server]__0imrhoi._.js +3 -0
  513. package/.next/server/chunks/[root-of-the-server]__0imrhoi._.js.map +1 -0
  514. package/.next/server/chunks/[root-of-the-server]__0iq9oau._.js +3 -0
  515. package/.next/server/chunks/[root-of-the-server]__0iq9oau._.js.map +1 -0
  516. package/.next/server/chunks/[root-of-the-server]__0k_e0ex._.js +3 -0
  517. package/.next/server/chunks/[root-of-the-server]__0k_e0ex._.js.map +1 -0
  518. package/.next/server/chunks/[root-of-the-server]__0kj4pte._.js +3 -0
  519. package/.next/server/chunks/[root-of-the-server]__0kj4pte._.js.map +1 -0
  520. package/.next/server/chunks/[root-of-the-server]__0muvnnv._.js +11 -0
  521. package/.next/server/chunks/[root-of-the-server]__0muvnnv._.js.map +1 -0
  522. package/.next/server/chunks/[root-of-the-server]__0olqs85._.js +3 -0
  523. package/.next/server/chunks/[root-of-the-server]__0olqs85._.js.map +1 -0
  524. package/.next/server/chunks/[root-of-the-server]__0r4ba8s._.js +3 -0
  525. package/.next/server/chunks/[root-of-the-server]__0r4ba8s._.js.map +1 -0
  526. package/.next/server/chunks/[root-of-the-server]__0sb_5m8._.js +20 -0
  527. package/.next/server/chunks/[root-of-the-server]__0sb_5m8._.js.map +1 -0
  528. package/.next/server/chunks/[root-of-the-server]__0y6kb2t._.js +3 -0
  529. package/.next/server/chunks/[root-of-the-server]__0y6kb2t._.js.map +1 -0
  530. package/.next/server/chunks/[root-of-the-server]__0zfwiuh._.js +11 -0
  531. package/.next/server/chunks/[root-of-the-server]__0zfwiuh._.js.map +1 -0
  532. package/.next/server/chunks/[root-of-the-server]__11037f1._.js +3 -0
  533. package/.next/server/chunks/[root-of-the-server]__11037f1._.js.map +1 -0
  534. package/.next/server/chunks/[root-of-the-server]__1197yfd._.js +3 -0
  535. package/.next/server/chunks/[root-of-the-server]__1197yfd._.js.map +1 -0
  536. package/.next/server/chunks/[root-of-the-server]__138pbmp._.js +3 -0
  537. package/.next/server/chunks/[root-of-the-server]__138pbmp._.js.map +1 -0
  538. package/.next/server/chunks/[root-of-the-server]__166th-t._.js +3 -0
  539. package/.next/server/chunks/[root-of-the-server]__166th-t._.js.map +1 -0
  540. package/.next/server/chunks/[root-of-the-server]__190_wb7._.js +3 -0
  541. package/.next/server/chunks/[root-of-the-server]__190_wb7._.js.map +1 -0
  542. package/.next/server/chunks/[root-of-the-server]__190zu98._.js +3 -0
  543. package/.next/server/chunks/[root-of-the-server]__190zu98._.js.map +1 -0
  544. package/.next/server/chunks/[root-of-the-server]__1_7ntsu._.js +3 -0
  545. package/.next/server/chunks/[root-of-the-server]__1_7ntsu._.js.map +1 -0
  546. package/.next/server/chunks/[root-of-the-server]__1bwqb44._.js +3 -0
  547. package/.next/server/chunks/[root-of-the-server]__1bwqb44._.js.map +1 -0
  548. package/.next/server/chunks/[root-of-the-server]__1d6w22k._.js +3 -0
  549. package/.next/server/chunks/[root-of-the-server]__1d6w22k._.js.map +1 -0
  550. package/.next/server/chunks/[root-of-the-server]__1d9wmd_._.js +3 -0
  551. package/.next/server/chunks/[root-of-the-server]__1d9wmd_._.js.map +1 -0
  552. package/.next/server/chunks/[root-of-the-server]__1j25n4-._.js +5 -0
  553. package/.next/server/chunks/[root-of-the-server]__1j25n4-._.js.map +1 -0
  554. package/.next/server/chunks/[root-of-the-server]__1jtw_i1._.js +3 -0
  555. package/.next/server/chunks/[root-of-the-server]__1jtw_i1._.js.map +1 -0
  556. package/.next/server/chunks/[root-of-the-server]__1lv6sqm._.js +3 -0
  557. package/.next/server/chunks/[root-of-the-server]__1lv6sqm._.js.map +1 -0
  558. package/.next/server/chunks/[root-of-the-server]__1m2v05v._.js +3 -0
  559. package/.next/server/chunks/[root-of-the-server]__1m2v05v._.js.map +1 -0
  560. package/.next/server/chunks/[root-of-the-server]__1n-kcwj._.js +3 -0
  561. package/.next/server/chunks/[root-of-the-server]__1n-kcwj._.js.map +1 -0
  562. package/.next/server/chunks/[root-of-the-server]__1nn9crd._.js +3 -0
  563. package/.next/server/chunks/[root-of-the-server]__1nn9crd._.js.map +1 -0
  564. package/.next/server/chunks/[root-of-the-server]__1rimo-u._.js +3 -0
  565. package/.next/server/chunks/[root-of-the-server]__1rimo-u._.js.map +1 -0
  566. package/.next/server/chunks/[root-of-the-server]__1sb7b9b._.js +9 -0
  567. package/.next/server/chunks/[root-of-the-server]__1sb7b9b._.js.map +1 -0
  568. package/.next/server/chunks/[root-of-the-server]__1t2egm-._.js +9 -0
  569. package/.next/server/chunks/[root-of-the-server]__1t2egm-._.js.map +1 -0
  570. package/.next/server/chunks/[root-of-the-server]__1t3s3-y._.js +3 -0
  571. package/.next/server/chunks/[root-of-the-server]__1t3s3-y._.js.map +1 -0
  572. package/.next/server/chunks/[root-of-the-server]__1tab6-_._.js +3 -0
  573. package/.next/server/chunks/[root-of-the-server]__1tab6-_._.js.map +1 -0
  574. package/.next/server/chunks/[root-of-the-server]__1v3_x0a._.js +3 -0
  575. package/.next/server/chunks/[root-of-the-server]__1v3_x0a._.js.map +1 -0
  576. package/.next/server/chunks/[root-of-the-server]__1vq6_bb._.js +3 -0
  577. package/.next/server/chunks/[root-of-the-server]__1vq6_bb._.js.map +1 -0
  578. package/.next/server/chunks/[root-of-the-server]__1xfg6n4._.js +3 -0
  579. package/.next/server/chunks/[root-of-the-server]__1xfg6n4._.js.map +1 -0
  580. package/.next/server/chunks/[root-of-the-server]__1y_g68p._.js +3 -0
  581. package/.next/server/chunks/[root-of-the-server]__1y_g68p._.js.map +1 -0
  582. package/.next/server/chunks/[turbopack]_runtime.js +903 -0
  583. package/.next/server/chunks/[turbopack]_runtime.js.map +11 -0
  584. package/.next/server/chunks/_0-k8r4o._.js +3 -0
  585. package/.next/server/chunks/_0-k8r4o._.js.map +1 -0
  586. package/.next/server/chunks/_00drqg3._.js +3 -0
  587. package/.next/server/chunks/_00drqg3._.js.map +1 -0
  588. package/.next/server/chunks/_04_hx58._.js +3 -0
  589. package/.next/server/chunks/_04_hx58._.js.map +1 -0
  590. package/.next/server/chunks/_0bj_zep._.js +3 -0
  591. package/.next/server/chunks/_0bj_zep._.js.map +1 -0
  592. package/.next/server/chunks/_0d9p87n._.js +3 -0
  593. package/.next/server/chunks/_0d9p87n._.js.map +1 -0
  594. package/.next/server/chunks/_0uzzk4s._.js +3 -0
  595. package/.next/server/chunks/_0uzzk4s._.js.map +1 -0
  596. package/.next/server/chunks/_0x--pb9._.js +3 -0
  597. package/.next/server/chunks/_0x--pb9._.js.map +1 -0
  598. package/.next/server/chunks/_1-006gs._.js +11 -0
  599. package/.next/server/chunks/_1-006gs._.js.map +1 -0
  600. package/.next/server/chunks/_1gmut2r._.js +3 -0
  601. package/.next/server/chunks/_1gmut2r._.js.map +1 -0
  602. package/.next/server/chunks/_1h7jba5._.js +3 -0
  603. package/.next/server/chunks/_1h7jba5._.js.map +1 -0
  604. package/.next/server/chunks/_1p13_nj._.js +3 -0
  605. package/.next/server/chunks/_1p13_nj._.js.map +1 -0
  606. package/.next/server/chunks/_1v92m46._.js +11 -0
  607. package/.next/server/chunks/_1v92m46._.js.map +1 -0
  608. package/.next/server/chunks/_next-internal_server_app_api_code-graph_position_route_actions_0ddmfq8.js +3 -0
  609. package/.next/server/chunks/_next-internal_server_app_api_code-graph_position_route_actions_0ddmfq8.js.map +1 -0
  610. package/.next/server/chunks/_next-internal_server_app_api_code-graph_route_actions_107oiy1.js +3 -0
  611. package/.next/server/chunks/_next-internal_server_app_api_code-graph_route_actions_107oiy1.js.map +1 -0
  612. package/.next/server/chunks/_next-internal_server_app_api_context_embed-backfill_route_actions_0fddf11.js +3 -0
  613. package/.next/server/chunks/_next-internal_server_app_api_context_embed-backfill_route_actions_0fddf11.js.map +1 -0
  614. package/.next/server/chunks/_next-internal_server_app_api_context_feature_route_actions_0g4_r0t.js +3 -0
  615. package/.next/server/chunks/_next-internal_server_app_api_context_feature_route_actions_0g4_r0t.js.map +1 -0
  616. package/.next/server/chunks/_next-internal_server_app_api_context_file_route_actions_1v15k33.js +3 -0
  617. package/.next/server/chunks/_next-internal_server_app_api_context_file_route_actions_1v15k33.js.map +1 -0
  618. package/.next/server/chunks/_next-internal_server_app_api_context_route_actions_066vuc0.js +3 -0
  619. package/.next/server/chunks/_next-internal_server_app_api_context_route_actions_066vuc0.js.map +1 -0
  620. package/.next/server/chunks/_next-internal_server_app_api_db_backfill-access_route_actions_0krkam5.js +3 -0
  621. package/.next/server/chunks/_next-internal_server_app_api_db_backfill-access_route_actions_0krkam5.js.map +1 -0
  622. package/.next/server/chunks/_next-internal_server_app_api_db_position_route_actions_0y81s5h.js +3 -0
  623. package/.next/server/chunks/_next-internal_server_app_api_db_position_route_actions_0y81s5h.js.map +1 -0
  624. package/.next/server/chunks/_next-internal_server_app_api_db_reconcile-endpoints_route_actions_11wjo3_.js +3 -0
  625. package/.next/server/chunks/_next-internal_server_app_api_db_reconcile-endpoints_route_actions_11wjo3_.js.map +1 -0
  626. package/.next/server/chunks/_next-internal_server_app_api_db_relations_[id]_route_actions_0ok7b-c.js +3 -0
  627. package/.next/server/chunks/_next-internal_server_app_api_db_relations_[id]_route_actions_0ok7b-c.js.map +1 -0
  628. package/.next/server/chunks/_next-internal_server_app_api_db_tables_[id]_route_actions_17b6_8p.js +3 -0
  629. package/.next/server/chunks/_next-internal_server_app_api_db_tables_[id]_route_actions_17b6_8p.js.map +1 -0
  630. package/.next/server/chunks/_next-internal_server_app_api_draft_approve_route_actions_12l1gql.js +3 -0
  631. package/.next/server/chunks/_next-internal_server_app_api_draft_approve_route_actions_12l1gql.js.map +1 -0
  632. package/.next/server/chunks/_next-internal_server_app_api_draft_route_actions_1y2euqt.js +3 -0
  633. package/.next/server/chunks/_next-internal_server_app_api_draft_route_actions_1y2euqt.js.map +1 -0
  634. package/.next/server/chunks/_next-internal_server_app_api_draft_status_route_actions_0imc7yr.js +3 -0
  635. package/.next/server/chunks/_next-internal_server_app_api_draft_status_route_actions_0imc7yr.js.map +1 -0
  636. package/.next/server/chunks/_next-internal_server_app_api_edges_[id]_route_actions_1rx28dy.js +3 -0
  637. package/.next/server/chunks/_next-internal_server_app_api_edges_[id]_route_actions_1rx28dy.js.map +1 -0
  638. package/.next/server/chunks/_next-internal_server_app_api_edges_route_actions_1i6-f0p.js +3 -0
  639. package/.next/server/chunks/_next-internal_server_app_api_edges_route_actions_1i6-f0p.js.map +1 -0
  640. package/.next/server/chunks/_next-internal_server_app_api_endpoints_[id]_route_actions_1hynl36.js +3 -0
  641. package/.next/server/chunks/_next-internal_server_app_api_endpoints_[id]_route_actions_1hynl36.js.map +1 -0
  642. package/.next/server/chunks/_next-internal_server_app_api_entities_route_actions_1jx0-vm.js +3 -0
  643. package/.next/server/chunks/_next-internal_server_app_api_entities_route_actions_1jx0-vm.js.map +1 -0
  644. package/.next/server/chunks/_next-internal_server_app_api_ingest_route_actions_1oz_9xc.js +3 -0
  645. package/.next/server/chunks/_next-internal_server_app_api_ingest_route_actions_1oz_9xc.js.map +1 -0
  646. package/.next/server/chunks/_next-internal_server_app_api_init_route_actions_00i08o0.js +3 -0
  647. package/.next/server/chunks/_next-internal_server_app_api_init_route_actions_00i08o0.js.map +1 -0
  648. package/.next/server/chunks/_next-internal_server_app_api_map_describe_route_actions_04m22-e.js +3 -0
  649. package/.next/server/chunks/_next-internal_server_app_api_map_describe_route_actions_04m22-e.js.map +1 -0
  650. package/.next/server/chunks/_next-internal_server_app_api_map_files_route_actions_1gsvfd9.js +3 -0
  651. package/.next/server/chunks/_next-internal_server_app_api_map_files_route_actions_1gsvfd9.js.map +1 -0
  652. package/.next/server/chunks/_next-internal_server_app_api_map_finish_route_actions_130bs5b.js +3 -0
  653. package/.next/server/chunks/_next-internal_server_app_api_map_finish_route_actions_130bs5b.js.map +1 -0
  654. package/.next/server/chunks/_next-internal_server_app_api_map_route_actions_1ylt-yg.js +3 -0
  655. package/.next/server/chunks/_next-internal_server_app_api_map_route_actions_1ylt-yg.js.map +1 -0
  656. package/.next/server/chunks/_next-internal_server_app_api_map_start_route_actions_1n4zdon.js +3 -0
  657. package/.next/server/chunks/_next-internal_server_app_api_map_start_route_actions_1n4zdon.js.map +1 -0
  658. package/.next/server/chunks/_next-internal_server_app_api_map_touch-active_route_actions_0wvoq-h.js +3 -0
  659. package/.next/server/chunks/_next-internal_server_app_api_map_touch-active_route_actions_0wvoq-h.js.map +1 -0
  660. package/.next/server/chunks/_next-internal_server_app_api_nodes_[id]_position_route_actions_0_695u2.js +3 -0
  661. package/.next/server/chunks/_next-internal_server_app_api_nodes_[id]_position_route_actions_0_695u2.js.map +1 -0
  662. package/.next/server/chunks/_next-internal_server_app_api_nodes_[id]_route_actions_017e_f3.js +3 -0
  663. package/.next/server/chunks/_next-internal_server_app_api_nodes_[id]_route_actions_017e_f3.js.map +1 -0
  664. package/.next/server/chunks/_next-internal_server_app_api_nodes_positions_route_actions_1pz3o9o.js +3 -0
  665. package/.next/server/chunks/_next-internal_server_app_api_nodes_positions_route_actions_1pz3o9o.js.map +1 -0
  666. package/.next/server/chunks/_next-internal_server_app_api_nodes_route_actions_0iuxxdu.js +3 -0
  667. package/.next/server/chunks/_next-internal_server_app_api_nodes_route_actions_0iuxxdu.js.map +1 -0
  668. package/.next/server/chunks/_next-internal_server_app_api_nodes_subtasks_route_actions_0uw715o.js +3 -0
  669. package/.next/server/chunks/_next-internal_server_app_api_nodes_subtasks_route_actions_0uw715o.js.map +1 -0
  670. package/.next/server/chunks/_next-internal_server_app_api_notes_[id]_route_actions_1kpl381.js +3 -0
  671. package/.next/server/chunks/_next-internal_server_app_api_notes_[id]_route_actions_1kpl381.js.map +1 -0
  672. package/.next/server/chunks/_next-internal_server_app_api_notes_route_actions_0mm_p_3.js +3 -0
  673. package/.next/server/chunks/_next-internal_server_app_api_notes_route_actions_0mm_p_3.js.map +1 -0
  674. package/.next/server/chunks/_next-internal_server_app_api_open_route_actions_1x77eq1.js +3 -0
  675. package/.next/server/chunks/_next-internal_server_app_api_open_route_actions_1x77eq1.js.map +1 -0
  676. package/.next/server/chunks/_next-internal_server_app_api_plan_annotations_route_actions_11aui44.js +3 -0
  677. package/.next/server/chunks/_next-internal_server_app_api_plan_annotations_route_actions_11aui44.js.map +1 -0
  678. package/.next/server/chunks/_next-internal_server_app_api_plan_approve_route_actions_06jkmnf.js +3 -0
  679. package/.next/server/chunks/_next-internal_server_app_api_plan_approve_route_actions_06jkmnf.js.map +1 -0
  680. package/.next/server/chunks/_next-internal_server_app_api_plan_history_route_actions_17hqx0m.js +3 -0
  681. package/.next/server/chunks/_next-internal_server_app_api_plan_history_route_actions_17hqx0m.js.map +1 -0
  682. package/.next/server/chunks/_next-internal_server_app_api_plan_markdown_route_actions_1qb1-9r.js +3 -0
  683. package/.next/server/chunks/_next-internal_server_app_api_plan_markdown_route_actions_1qb1-9r.js.map +1 -0
  684. package/.next/server/chunks/_next-internal_server_app_api_plan_presence_route_actions_1r91k5c.js +3 -0
  685. package/.next/server/chunks/_next-internal_server_app_api_plan_presence_route_actions_1r91k5c.js.map +1 -0
  686. package/.next/server/chunks/_next-internal_server_app_api_plan_route_actions_1_nzr8r.js +3 -0
  687. package/.next/server/chunks/_next-internal_server_app_api_plan_route_actions_1_nzr8r.js.map +1 -0
  688. package/.next/server/chunks/_next-internal_server_app_api_plan_verdict_route_actions_10xm0j8.js +3 -0
  689. package/.next/server/chunks/_next-internal_server_app_api_plan_verdict_route_actions_10xm0j8.js.map +1 -0
  690. package/.next/server/chunks/_next-internal_server_app_api_preferences_route_actions_14__a0r.js +3 -0
  691. package/.next/server/chunks/_next-internal_server_app_api_preferences_route_actions_14__a0r.js.map +1 -0
  692. package/.next/server/chunks/_next-internal_server_app_api_reset_route_actions_1tcp2ms.js +3 -0
  693. package/.next/server/chunks/_next-internal_server_app_api_reset_route_actions_1tcp2ms.js.map +1 -0
  694. package/.next/server/chunks/_next-internal_server_app_api_settings_route_actions_1bpm9ac.js +3 -0
  695. package/.next/server/chunks/_next-internal_server_app_api_settings_route_actions_1bpm9ac.js.map +1 -0
  696. package/.next/server/chunks/_next-internal_server_app_api_stream_route_actions_0oy6g75.js +3 -0
  697. package/.next/server/chunks/_next-internal_server_app_api_stream_route_actions_0oy6g75.js.map +1 -0
  698. package/.next/server/chunks/_next-internal_server_app_api_version_route_actions_0kbx30h.js +3 -0
  699. package/.next/server/chunks/_next-internal_server_app_api_version_route_actions_0kbx30h.js.map +1 -0
  700. package/.next/server/chunks/_next-internal_server_app_api_workspace_activate_route_actions_1hv2y82.js +3 -0
  701. package/.next/server/chunks/_next-internal_server_app_api_workspace_activate_route_actions_1hv2y82.js.map +1 -0
  702. package/.next/server/chunks/_next-internal_server_app_api_workspace_route_actions_19-xkal.js +3 -0
  703. package/.next/server/chunks/_next-internal_server_app_api_workspace_route_actions_19-xkal.js.map +1 -0
  704. package/.next/server/chunks/_next-internal_server_app_apple-icon_png_route_actions_0jcl8au.js +3 -0
  705. package/.next/server/chunks/_next-internal_server_app_apple-icon_png_route_actions_0jcl8au.js.map +1 -0
  706. package/.next/server/chunks/_next-internal_server_app_icon_svg_route_actions_1r2h_ub.js +3 -0
  707. package/.next/server/chunks/_next-internal_server_app_icon_svg_route_actions_1r2h_ub.js.map +1 -0
  708. package/.next/server/chunks/instrumentation_ts_1oq3o45._.js +3 -0
  709. package/.next/server/chunks/instrumentation_ts_1oq3o45._.js.map +1 -0
  710. package/.next/server/chunks/lib_04zrdtl._.js +3 -0
  711. package/.next/server/chunks/lib_04zrdtl._.js.map +1 -0
  712. package/.next/server/chunks/lib_0rad2y6._.js +3 -0
  713. package/.next/server/chunks/lib_0rad2y6._.js.map +1 -0
  714. package/.next/server/chunks/lib_10tibe8._.js +7 -0
  715. package/.next/server/chunks/lib_10tibe8._.js.map +1 -0
  716. package/.next/server/chunks/lib_1upr0dj._.js +3 -0
  717. package/.next/server/chunks/lib_1upr0dj._.js.map +1 -0
  718. package/.next/server/chunks/lib_1wz-3od._.js +3 -0
  719. package/.next/server/chunks/lib_1wz-3od._.js.map +1 -0
  720. package/.next/server/chunks/lib_1xzwro7._.js +3 -0
  721. package/.next/server/chunks/lib_1xzwro7._.js.map +1 -0
  722. package/.next/server/chunks/lib_db_ts_0h_yn5m._.js +3 -0
  723. package/.next/server/chunks/lib_db_ts_0h_yn5m._.js.map +1 -0
  724. package/.next/server/chunks/lib_drizzle_provision_ts_1po9dyo._.js +3 -0
  725. package/.next/server/chunks/lib_drizzle_provision_ts_1po9dyo._.js.map +1 -0
  726. package/.next/server/chunks/lib_drizzle_schema_ts_0ixydnz._.js +3 -0
  727. package/.next/server/chunks/lib_drizzle_schema_ts_0ixydnz._.js.map +1 -0
  728. package/.next/server/chunks/lib_roadmap-force-layout_ts_0e5r3g2._.js +3 -0
  729. package/.next/server/chunks/lib_roadmap-force-layout_ts_0e5r3g2._.js.map +1 -0
  730. package/.next/server/chunks/node_modules_drizzle-orm_05n3ooz._.js +3 -0
  731. package/.next/server/chunks/node_modules_drizzle-orm_05n3ooz._.js.map +1 -0
  732. package/.next/server/chunks/node_modules_drizzle-orm_0cht0an._.js +3 -0
  733. package/.next/server/chunks/node_modules_drizzle-orm_0cht0an._.js.map +1 -0
  734. package/.next/server/chunks/node_modules_drizzle-orm_0ma7f2e._.js +4 -0
  735. package/.next/server/chunks/node_modules_drizzle-orm_0ma7f2e._.js.map +1 -0
  736. package/.next/server/chunks/node_modules_drizzle-orm_0q0hg2u._.js +4 -0
  737. package/.next/server/chunks/node_modules_drizzle-orm_0q0hg2u._.js.map +1 -0
  738. package/.next/server/chunks/node_modules_drizzle-orm_0rs3wbv._.js +3 -0
  739. package/.next/server/chunks/node_modules_drizzle-orm_0rs3wbv._.js.map +1 -0
  740. package/.next/server/chunks/node_modules_drizzle-orm_index_1qnscv7.js +3 -0
  741. package/.next/server/chunks/node_modules_drizzle-orm_index_1qnscv7.js.map +1 -0
  742. package/.next/server/chunks/node_modules_drizzle-orm_libsql_0yabams._.js +15 -0
  743. package/.next/server/chunks/node_modules_drizzle-orm_libsql_0yabams._.js.map +1 -0
  744. package/.next/server/chunks/node_modules_next_08s853w._.js +13 -0
  745. package/.next/server/chunks/node_modules_next_08s853w._.js.map +1 -0
  746. package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0qz67ql.js +3 -0
  747. package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0qz67ql.js.map +1 -0
  748. package/.next/server/chunks/node_modules_zod_v4_classic_external_1-pw2v2.js +64 -0
  749. package/.next/server/chunks/node_modules_zod_v4_classic_external_1-pw2v2.js.map +1 -0
  750. package/.next/server/chunks/ssr/[externals]_@huggingface_transformers_05bd-zz._.js +3 -0
  751. package/.next/server/chunks/ssr/[externals]_@huggingface_transformers_05bd-zz._.js.map +1 -0
  752. package/.next/server/chunks/ssr/[root-of-the-server]__00vz2sw._.js +3 -0
  753. package/.next/server/chunks/ssr/[root-of-the-server]__00vz2sw._.js.map +1 -0
  754. package/.next/server/chunks/ssr/[root-of-the-server]__07b655z._.js +3 -0
  755. package/.next/server/chunks/ssr/[root-of-the-server]__07b655z._.js.map +1 -0
  756. package/.next/server/chunks/ssr/[root-of-the-server]__0dr0a32._.js +3 -0
  757. package/.next/server/chunks/ssr/[root-of-the-server]__0dr0a32._.js.map +1 -0
  758. package/.next/server/chunks/ssr/[root-of-the-server]__0jx25ik._.js +3 -0
  759. package/.next/server/chunks/ssr/[root-of-the-server]__0jx25ik._.js.map +1 -0
  760. package/.next/server/chunks/ssr/[root-of-the-server]__0nqskgw._.js +19 -0
  761. package/.next/server/chunks/ssr/[root-of-the-server]__0nqskgw._.js.map +1 -0
  762. package/.next/server/chunks/ssr/[root-of-the-server]__0pkeb0m._.js +9 -0
  763. package/.next/server/chunks/ssr/[root-of-the-server]__0pkeb0m._.js.map +1 -0
  764. package/.next/server/chunks/ssr/[root-of-the-server]__0s74gvr._.js +3 -0
  765. package/.next/server/chunks/ssr/[root-of-the-server]__0s74gvr._.js.map +1 -0
  766. package/.next/server/chunks/ssr/[root-of-the-server]__0v7a-e-._.js +3 -0
  767. package/.next/server/chunks/ssr/[root-of-the-server]__0v7a-e-._.js.map +1 -0
  768. package/.next/server/chunks/ssr/[root-of-the-server]__0x4-71n._.js +3 -0
  769. package/.next/server/chunks/ssr/[root-of-the-server]__0x4-71n._.js.map +1 -0
  770. package/.next/server/chunks/ssr/[root-of-the-server]__0xqf488._.js +3 -0
  771. package/.next/server/chunks/ssr/[root-of-the-server]__0xqf488._.js.map +1 -0
  772. package/.next/server/chunks/ssr/[root-of-the-server]__0y_88xg._.js +33 -0
  773. package/.next/server/chunks/ssr/[root-of-the-server]__0y_88xg._.js.map +1 -0
  774. package/.next/server/chunks/ssr/[root-of-the-server]__1-yyv5l._.js +3 -0
  775. package/.next/server/chunks/ssr/[root-of-the-server]__1-yyv5l._.js.map +1 -0
  776. package/.next/server/chunks/ssr/[root-of-the-server]__1366qju._.js +3 -0
  777. package/.next/server/chunks/ssr/[root-of-the-server]__1366qju._.js.map +1 -0
  778. package/.next/server/chunks/ssr/[root-of-the-server]__1_ustu7._.js +3 -0
  779. package/.next/server/chunks/ssr/[root-of-the-server]__1_ustu7._.js.map +1 -0
  780. package/.next/server/chunks/ssr/[root-of-the-server]__1dky4g0._.js +33 -0
  781. package/.next/server/chunks/ssr/[root-of-the-server]__1dky4g0._.js.map +1 -0
  782. package/.next/server/chunks/ssr/[turbopack]_runtime.js +903 -0
  783. package/.next/server/chunks/ssr/[turbopack]_runtime.js.map +11 -0
  784. package/.next/server/chunks/ssr/_0eabx1f._.js +3 -0
  785. package/.next/server/chunks/ssr/_0eabx1f._.js.map +1 -0
  786. package/.next/server/chunks/ssr/_0ni84yi._.js +3 -0
  787. package/.next/server/chunks/ssr/_0ni84yi._.js.map +1 -0
  788. package/.next/server/chunks/ssr/_0pgw716._.js +67 -0
  789. package/.next/server/chunks/ssr/_0pgw716._.js.map +1 -0
  790. package/.next/server/chunks/ssr/_0r84jcg._.js +6 -0
  791. package/.next/server/chunks/ssr/_0r84jcg._.js.map +1 -0
  792. package/.next/server/chunks/ssr/_15if8ma._.js +3 -0
  793. package/.next/server/chunks/ssr/_15if8ma._.js.map +1 -0
  794. package/.next/server/chunks/ssr/_176djsq._.js +4 -0
  795. package/.next/server/chunks/ssr/_176djsq._.js.map +1 -0
  796. package/.next/server/chunks/ssr/_179xsho._.js +3 -0
  797. package/.next/server/chunks/ssr/_179xsho._.js.map +1 -0
  798. package/.next/server/chunks/ssr/_1_n8arv._.js +3 -0
  799. package/.next/server/chunks/ssr/_1_n8arv._.js.map +1 -0
  800. package/.next/server/chunks/ssr/_1suxp_q._.js +3 -0
  801. package/.next/server/chunks/ssr/_1suxp_q._.js.map +1 -0
  802. package/.next/server/chunks/ssr/_1vt70iy._.js +18 -0
  803. package/.next/server/chunks/ssr/_1vt70iy._.js.map +1 -0
  804. package/.next/server/chunks/ssr/_1w2komx._.js +3 -0
  805. package/.next/server/chunks/ssr/_1w2komx._.js.map +1 -0
  806. package/.next/server/chunks/ssr/_1w73gpg._.js +4 -0
  807. package/.next/server/chunks/ssr/_1w73gpg._.js.map +1 -0
  808. package/.next/server/chunks/ssr/_next-internal_server_app__global-error_page_actions_0zi5s8-.js +3 -0
  809. package/.next/server/chunks/ssr/_next-internal_server_app__global-error_page_actions_0zi5s8-.js.map +1 -0
  810. package/.next/server/chunks/ssr/_next-internal_server_app__not-found_page_actions_0pt47yr.js +3 -0
  811. package/.next/server/chunks/ssr/_next-internal_server_app__not-found_page_actions_0pt47yr.js.map +1 -0
  812. package/.next/server/chunks/ssr/_next-internal_server_app_help_page_actions_04daq_g.js +3 -0
  813. package/.next/server/chunks/ssr/_next-internal_server_app_help_page_actions_04daq_g.js.map +1 -0
  814. package/.next/server/chunks/ssr/_next-internal_server_app_page_actions_0hhsz1j.js +3 -0
  815. package/.next/server/chunks/ssr/_next-internal_server_app_page_actions_0hhsz1j.js.map +1 -0
  816. package/.next/server/chunks/ssr/_next-internal_server_app_settings_page_actions_11x4dq5.js +3 -0
  817. package/.next/server/chunks/ssr/_next-internal_server_app_settings_page_actions_11x4dq5.js.map +1 -0
  818. package/.next/server/chunks/ssr/components_1wolv70._.js +157 -0
  819. package/.next/server/chunks/ssr/components_1wolv70._.js.map +1 -0
  820. package/.next/server/chunks/ssr/components_graph_files-map-client_tsx_10bha9z._.js +3 -0
  821. package/.next/server/chunks/ssr/components_graph_files-map-client_tsx_10bha9z._.js.map +1 -0
  822. package/.next/server/chunks/ssr/components_landing_landing_tsx_1_9k5z7._.js +3 -0
  823. package/.next/server/chunks/ssr/components_landing_landing_tsx_1_9k5z7._.js.map +1 -0
  824. package/.next/server/chunks/ssr/components_plan_plan-workspace_tsx_0t1topu._.js +3 -0
  825. package/.next/server/chunks/ssr/components_plan_plan-workspace_tsx_0t1topu._.js.map +1 -0
  826. package/.next/server/chunks/ssr/lib_13g58ln._.js +3 -0
  827. package/.next/server/chunks/ssr/lib_13g58ln._.js.map +1 -0
  828. package/.next/server/chunks/ssr/lib_db_ts_0bo045t._.js +3 -0
  829. package/.next/server/chunks/ssr/lib_db_ts_0bo045t._.js.map +1 -0
  830. package/.next/server/chunks/ssr/lib_drizzle_schema_ts_0oz5uob._.js +3 -0
  831. package/.next/server/chunks/ssr/lib_drizzle_schema_ts_0oz5uob._.js.map +1 -0
  832. package/.next/server/chunks/ssr/node_modules_0h91jdk._.js +33 -0
  833. package/.next/server/chunks/ssr/node_modules_0h91jdk._.js.map +1 -0
  834. package/.next/server/chunks/ssr/node_modules_0vtauab._.js +3 -0
  835. package/.next/server/chunks/ssr/node_modules_0vtauab._.js.map +1 -0
  836. package/.next/server/chunks/ssr/node_modules_drizzle-orm_0txo559._.js +4 -0
  837. package/.next/server/chunks/ssr/node_modules_drizzle-orm_0txo559._.js.map +1 -0
  838. package/.next/server/chunks/ssr/node_modules_drizzle-orm_1d7zgzr._.js +4 -0
  839. package/.next/server/chunks/ssr/node_modules_drizzle-orm_1d7zgzr._.js.map +1 -0
  840. package/.next/server/chunks/ssr/node_modules_drizzle-orm_1zqkwdy._.js +3 -0
  841. package/.next/server/chunks/ssr/node_modules_drizzle-orm_1zqkwdy._.js.map +1 -0
  842. package/.next/server/chunks/ssr/node_modules_drizzle-orm_202ujxv._.js +3 -0
  843. package/.next/server/chunks/ssr/node_modules_drizzle-orm_202ujxv._.js.map +1 -0
  844. package/.next/server/chunks/ssr/node_modules_drizzle-orm_index_0ji3_g8.js +3 -0
  845. package/.next/server/chunks/ssr/node_modules_drizzle-orm_index_0ji3_g8.js.map +1 -0
  846. package/.next/server/chunks/ssr/node_modules_drizzle-orm_libsql_06opikx._.js +15 -0
  847. package/.next/server/chunks/ssr/node_modules_drizzle-orm_libsql_06opikx._.js.map +1 -0
  848. package/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_icons_shield-check_mjs_1cccgdy._.js +3 -0
  849. package/.next/server/chunks/ssr/node_modules_lucide-react_dist_esm_icons_shield-check_mjs_1cccgdy._.js.map +1 -0
  850. package/.next/server/chunks/ssr/node_modules_next_dist_0890nbp._.js +3 -0
  851. package/.next/server/chunks/ssr/node_modules_next_dist_0890nbp._.js.map +1 -0
  852. package/.next/server/chunks/ssr/node_modules_next_dist_0airgni._.js +3 -0
  853. package/.next/server/chunks/ssr/node_modules_next_dist_0airgni._.js.map +1 -0
  854. package/.next/server/chunks/ssr/node_modules_next_dist_0alesp5._.js +3 -0
  855. package/.next/server/chunks/ssr/node_modules_next_dist_0alesp5._.js.map +1 -0
  856. package/.next/server/chunks/ssr/node_modules_next_dist_0uboya6._.js +6 -0
  857. package/.next/server/chunks/ssr/node_modules_next_dist_0uboya6._.js.map +1 -0
  858. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_0wpq8j3._.js +3 -0
  859. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_0wpq8j3._.js.map +1 -0
  860. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_forbidden_0symwr9.js +3 -0
  861. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_forbidden_0symwr9.js.map +1 -0
  862. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_0-o-goa.js +3 -0
  863. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_0-o-goa.js.map +1 -0
  864. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_unauthorized_0l_sp0x.js +3 -0
  865. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_unauthorized_0l_sp0x.js.map +1 -0
  866. package/.next/server/chunks/ssr/node_modules_next_dist_compiled_@opentelemetry_api_index_1oy1nwh.js +3 -0
  867. package/.next/server/chunks/ssr/node_modules_next_dist_compiled_@opentelemetry_api_index_1oy1nwh.js.map +1 -0
  868. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0d7qbqa.js +4 -0
  869. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0d7qbqa.js.map +1 -0
  870. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0s87tpk.js +4 -0
  871. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0s87tpk.js.map +1 -0
  872. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_114qdo2.js +4 -0
  873. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_114qdo2.js.map +1 -0
  874. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_19--w_z.js +4 -0
  875. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_19--w_z.js.map +1 -0
  876. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_19_kztz.js +4 -0
  877. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_19_kztz.js.map +1 -0
  878. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_19qzf81.js +4 -0
  879. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_19qzf81.js.map +1 -0
  880. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1wge0av.js +4 -0
  881. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1wge0av.js.map +1 -0
  882. package/.next/server/edge/chunks/_0o_tvsk._.js +3 -0
  883. package/.next/server/edge/chunks/_0o_tvsk._.js.map +1 -0
  884. package/.next/server/edge/chunks/node_modules_next_dist_esm_build_templates_edge-wrapper_1ipl-lx.js.map +1 -0
  885. package/.next/server/edge/chunks/turbopack-node_modules_next_dist_esm_build_templates_edge-wrapper_1ipl-lx.js +3 -0
  886. package/.next/server/functions-config-manifest.json +14 -0
  887. package/.next/server/instrumentation/middleware-manifest.json +12 -0
  888. package/.next/server/instrumentation.js +4 -0
  889. package/.next/server/instrumentation.js.map +5 -0
  890. package/.next/server/instrumentation.js.nft.json +1 -0
  891. package/.next/server/interception-route-rewrite-manifest.js +1 -0
  892. package/.next/server/middleware/middleware-manifest.json +6 -0
  893. package/.next/server/middleware-build-manifest.js +21 -0
  894. package/.next/server/middleware-manifest.json +6 -0
  895. package/.next/server/middleware.js +5 -0
  896. package/.next/server/middleware.js.map +5 -0
  897. package/.next/server/middleware.js.nft.json +1 -0
  898. package/.next/server/next-font-manifest.js +1 -0
  899. package/.next/server/next-font-manifest.json +31 -0
  900. package/.next/server/pages/404.html +1 -0
  901. package/.next/server/pages/500.html +1 -0
  902. package/.next/server/pages-manifest.json +4 -0
  903. package/.next/server/prefetch-hints.json +1 -0
  904. package/.next/server/server-reference-manifest.js +1 -0
  905. package/.next/server/server-reference-manifest.json +132 -0
  906. package/.next/static/_wmO3ZSrpuwty88NNlnrH/_buildManifest.js +11 -0
  907. package/.next/static/_wmO3ZSrpuwty88NNlnrH/_clientMiddlewareManifest.js +6 -0
  908. package/.next/static/_wmO3ZSrpuwty88NNlnrH/_ssgManifest.js +1 -0
  909. package/.next/static/chunks/01dkdyukbdpqq.js +31 -0
  910. package/.next/static/chunks/05-c3ty_6dwfk.js +1 -0
  911. package/.next/static/chunks/07u_h6i539_wj.js +2 -0
  912. package/.next/static/chunks/09wlenlnsbkl7.js +2 -0
  913. package/.next/static/chunks/0_9p121-4am0a.js +1 -0
  914. package/.next/static/chunks/0cz1d0mv5g_q7.js +1 -0
  915. package/.next/static/chunks/19cl65vz3pos0.js +1 -0
  916. package/.next/static/chunks/19hoowcssv0w1.css +1 -0
  917. package/.next/static/chunks/1bk_i_akra521.css +2 -0
  918. package/.next/static/chunks/1pp98vred9isg.js +1 -0
  919. package/.next/static/chunks/2-t6-hz_de2nr.js +155 -0
  920. package/.next/static/chunks/203o948823s96.css +1 -0
  921. package/.next/static/chunks/245vq4i7_x7tm.js +1 -0
  922. package/.next/static/chunks/27jktro2p5rq9.js +4 -0
  923. package/.next/static/chunks/2hpdskhtooxl4.js +1 -0
  924. package/.next/static/chunks/368etk_9oovhj.js +1 -0
  925. package/.next/static/chunks/3n7dm2ojtyzwn.js +1 -0
  926. package/.next/static/chunks/3oc95d6bep78a.css +1 -0
  927. package/.next/static/chunks/3qp8f4catg9zw.js +2 -0
  928. package/.next/static/chunks/3ywpldblg905c.js +1 -0
  929. package/.next/static/chunks/4397avi9yar6d.js +1 -0
  930. package/.next/static/chunks/44_nvrzzjs0pv.js +1 -0
  931. package/.next/static/chunks/turbopack-0rldyqi2kcq2j.js +1 -0
  932. package/.next/static/media/4fa387ec64143e14-s.2tuy5pz7dlieh.woff2 +0 -0
  933. package/.next/static/media/53b9e256198e5412-s.390ncx5urfkfu.woff2 +0 -0
  934. package/.next/static/media/5ce348bf30bf5439-s.31988l_ccedte.woff2 +0 -0
  935. package/.next/static/media/6306c77e7c8268e4-s.2dbetqa9o8jxf.woff2 +0 -0
  936. package/.next/static/media/7178b3e590c64307-s.21jp631_3pja2.woff2 +0 -0
  937. package/.next/static/media/797e433ab948586e-s.p.0r6juujl39pe6.woff2 +0 -0
  938. package/.next/static/media/7d817b4c03b0c5f1-s.1uyisp29ctx0d.woff2 +0 -0
  939. package/.next/static/media/8a480f0b521d4e75-s.1qq4vpdcun5oj.woff2 +0 -0
  940. package/.next/static/media/apple-icon.0qbqv4vpdxdo0.png +0 -0
  941. package/.next/static/media/bbc41e54d2fcbd21-s.1rgnod-3esatf.woff2 +0 -0
  942. package/.next/static/media/caa3a2e1cccd8315-s.p.0wgildi0cnwt9.woff2 +0 -0
  943. package/.next/static/media/fef07dbb0973bf53-s.3p2_lha1f2xer.woff2 +0 -0
  944. package/.next/static/media/icon.23_qbw6oy1xqy.svg +4 -0
  945. package/.next/trace +2 -0
  946. package/.next/trace-build +1 -0
  947. package/.next/turbopack +0 -0
  948. package/.next/types/cache-life.d.ts +145 -0
  949. package/.next/types/routes.d.ts +124 -0
  950. package/.next/types/validator.ts +538 -0
  951. package/README.md +94 -0
  952. package/dist/bin/beacon.js +10 -0
  953. package/dist/bin/doctor.js +227 -0
  954. package/dist/bin/hook.js +225 -0
  955. package/dist/bin/mcp.js +247 -0
  956. package/dist/bin/plan.js +228 -0
  957. package/dist/bin/prompt.js +4 -0
  958. package/dist/bin/stop-hook.js +5 -0
  959. package/dist/bin/uninstall.js +228 -0
  960. package/dist/lib/assets.js +192 -0
  961. package/dist/lib/global-install.js +224 -0
  962. package/dist/lib/workspaces.js +2 -0
  963. package/drizzle/0000_bitter_network.sql +230 -0
  964. package/drizzle/meta/0000_snapshot.json +1589 -0
  965. package/drizzle/meta/_journal.json +13 -0
  966. package/next.config.ts +15 -0
  967. package/package.json +90 -0
  968. package/public/brand/beacon-apple.svg +30 -0
  969. package/public/brand/beacon-glyph-128.png +0 -0
  970. package/public/brand/beacon-glyph-512.png +0 -0
  971. package/public/brand/beacon-glyph-mono-128.png +0 -0
  972. package/public/brand/beacon-glyph-mono-512.png +0 -0
  973. package/public/brand/beacon-glyph-mono.svg +4 -0
  974. package/public/brand/beacon-glyph.svg +21 -0
  975. package/public/brand/beacon-icon-1024.png +0 -0
  976. package/public/brand/beacon-icon-192.png +0 -0
  977. package/public/brand/beacon-icon-256.png +0 -0
  978. package/public/brand/beacon-icon-32.png +0 -0
  979. package/public/brand/beacon-icon-512.png +0 -0
  980. package/public/brand/beacon-icon-64.png +0 -0
  981. package/public/brand/beacon-icon-light-192.png +0 -0
  982. package/public/brand/beacon-icon-light-512.png +0 -0
  983. package/public/brand/beacon-icon-light.svg +31 -0
  984. package/public/brand/beacon-icon.svg +33 -0
  985. package/public/brand/beacon-wordmark-1200.png +0 -0
  986. package/public/brand/beacon-wordmark.svg +38 -0
  987. package/public/brand/favicon-16.png +0 -0
  988. package/public/brand/favicon-32.png +0 -0
  989. package/public/file.svg +1 -0
  990. package/public/globe.svg +1 -0
  991. package/public/install.sh +55 -0
  992. package/public/next.svg +1 -0
  993. package/public/vercel.svg +1 -0
  994. package/public/window.svg +1 -0
@@ -0,0 +1,3 @@
1
+ module.exports=[66130,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(46352),e=a.i(34747);function f(a,b,c,d){if(isNaN(b)||isNaN(c))return a;var e,f,g,h,i,j,k,l,m,n=a._root,o={data:d},p=a._x0,q=a._y0,r=a._x1,s=a._y1;if(!n)return a._root=o,a;for(;n.length;)if((j=b>=(f=(p+r)/2))?p=f:r=f,(k=c>=(g=(q+s)/2))?q=g:s=g,e=n,!(n=n[l=k<<1|j]))return e[l]=o,a;if(h=+a._x.call(null,n.data),i=+a._y.call(null,n.data),b===h&&c===i)return o.next=n,e?e[l]=o:a._root=o,a;do e=e?e[l]=[,,,,]:a._root=[,,,,],(j=b>=(f=(p+r)/2))?p=f:r=f,(k=c>=(g=(q+s)/2))?q=g:s=g;while((l=k<<1|j)==(m=(i>=g)<<1|h>=f))return e[m]=n,e[l]=o,a}function g(a,b,c,d,e){this.node=a,this.x0=b,this.y0=c,this.x1=d,this.y1=e}function h(a){return a[0]}function i(a){return a[1]}function j(a,b,c){var d=new k(null==b?h:b,null==c?i:c,NaN,NaN,NaN,NaN);return null==a?d:d.addAll(a)}function k(a,b,c,d,e,f){this._x=a,this._y=b,this._x0=c,this._y0=d,this._x1=e,this._y1=f,this._root=void 0}function l(a){for(var b={data:a.data},c=b;a=a.next;)c=c.next={data:a.data};return b}var m=j.prototype=k.prototype;function n(a){return function(){return a}}function o(a){return(a()-.5)*1e-6}function p(a){return a.x+a.vx}function q(a){return a.y+a.vy}function r(a){return a.index}function s(a,b){var c=a.get(b);if(!c)throw Error("node not found: "+b);return c}m.copy=function(){var a,b,c=new k(this._x,this._y,this._x0,this._y0,this._x1,this._y1),d=this._root;if(!d)return c;if(!d.length)return c._root=l(d),c;for(a=[{source:d,target:c._root=[,,,,]}];d=a.pop();)for(var e=0;e<4;++e)(b=d.source[e])&&(b.length?a.push({source:b,target:d.target[e]=[,,,,]}):d.target[e]=l(b));return c},m.add=function(a){let b=+this._x.call(null,a),c=+this._y.call(null,a);return f(this.cover(b,c),b,c,a)},m.addAll=function(a){var b,c,d,e,g=a.length,h=Array(g),i=Array(g),j=1/0,k=1/0,l=-1/0,m=-1/0;for(c=0;c<g;++c)!(isNaN(d=+this._x.call(null,b=a[c]))||isNaN(e=+this._y.call(null,b)))&&(h[c]=d,i[c]=e,d<j&&(j=d),d>l&&(l=d),e<k&&(k=e),e>m&&(m=e));if(j>l||k>m)return this;for(this.cover(j,k).cover(l,m),c=0;c<g;++c)f(this,h[c],i[c],a[c]);return this},m.cover=function(a,b){if(isNaN(a*=1)||isNaN(b*=1))return this;var c=this._x0,d=this._y0,e=this._x1,f=this._y1;if(isNaN(c))e=(c=Math.floor(a))+1,f=(d=Math.floor(b))+1;else{for(var g,h,i=e-c||1,j=this._root;c>a||a>=e||d>b||b>=f;)switch(h=(b<d)<<1|a<c,(g=[,,,,])[h]=j,j=g,i*=2,h){case 0:e=c+i,f=d+i;break;case 1:c=e-i,f=d+i;break;case 2:e=c+i,d=f-i;break;case 3:c=e-i,d=f-i}this._root&&this._root.length&&(this._root=j)}return this._x0=c,this._y0=d,this._x1=e,this._y1=f,this},m.data=function(){var a=[];return this.visit(function(b){if(!b.length)do a.push(b.data);while(b=b.next)}),a},m.extent=function(a){return arguments.length?this.cover(+a[0][0],+a[0][1]).cover(+a[1][0],+a[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]},m.find=function(a,b,c){var d,e,f,h,i,j,k,l=this._x0,m=this._y0,n=this._x1,o=this._y1,p=[],q=this._root;for(q&&p.push(new g(q,l,m,n,o)),null==c?c=1/0:(l=a-c,m=b-c,n=a+c,o=b+c,c*=c);j=p.pop();)if((q=j.node)&&!((e=j.x0)>n)&&!((f=j.y0)>o)&&!((h=j.x1)<l)&&!((i=j.y1)<m))if(q.length){var r=(e+h)/2,s=(f+i)/2;p.push(new g(q[3],r,s,h,i),new g(q[2],e,s,r,i),new g(q[1],r,f,h,s),new g(q[0],e,f,r,s)),(k=(b>=s)<<1|a>=r)&&(j=p[p.length-1],p[p.length-1]=p[p.length-1-k],p[p.length-1-k]=j)}else{var t=a-this._x.call(null,q.data),u=b-this._y.call(null,q.data),v=t*t+u*u;if(v<c){var w=Math.sqrt(c=v);l=a-w,m=b-w,n=a+w,o=b+w,d=q.data}}return d},m.remove=function(a){if(isNaN(f=+this._x.call(null,a))||isNaN(g=+this._y.call(null,a)))return this;var b,c,d,e,f,g,h,i,j,k,l,m,n=this._root,o=this._x0,p=this._y0,q=this._x1,r=this._y1;if(!n)return this;if(n.length)for(;;){if((j=f>=(h=(o+q)/2))?o=h:q=h,(k=g>=(i=(p+r)/2))?p=i:r=i,b=n,!(n=n[l=k<<1|j]))return this;if(!n.length)break;(b[l+1&3]||b[l+2&3]||b[l+3&3])&&(c=b,m=l)}for(;n.data!==a;)if(d=n,!(n=n.next))return this;return((e=n.next)&&delete n.next,d)?e?d.next=e:delete d.next:b?(e?b[l]=e:delete b[l],(n=b[0]||b[1]||b[2]||b[3])&&n===(b[3]||b[2]||b[1]||b[0])&&!n.length&&(c?c[m]=n:this._root=n)):this._root=e,this},m.removeAll=function(a){for(var b=0,c=a.length;b<c;++b)this.remove(a[b]);return this},m.root=function(){return this._root},m.size=function(){var a=0;return this.visit(function(b){if(!b.length)do++a;while(b=b.next)}),a},m.visit=function(a){var b,c,d,e,f,h,i=[],j=this._root;for(j&&i.push(new g(j,this._x0,this._y0,this._x1,this._y1));b=i.pop();)if(!a(j=b.node,d=b.x0,e=b.y0,f=b.x1,h=b.y1)&&j.length){var k=(d+f)/2,l=(e+h)/2;(c=j[3])&&i.push(new g(c,k,l,f,h)),(c=j[2])&&i.push(new g(c,d,l,k,h)),(c=j[1])&&i.push(new g(c,k,e,f,l)),(c=j[0])&&i.push(new g(c,d,e,k,l))}return this},m.visitAfter=function(a){var b,c=[],d=[];for(this._root&&c.push(new g(this._root,this._x0,this._y0,this._x1,this._y1));b=c.pop();){var e=b.node;if(e.length){var f,h=b.x0,i=b.y0,j=b.x1,k=b.y1,l=(h+j)/2,m=(i+k)/2;(f=e[0])&&c.push(new g(f,h,i,l,m)),(f=e[1])&&c.push(new g(f,l,i,j,m)),(f=e[2])&&c.push(new g(f,h,m,l,k)),(f=e[3])&&c.push(new g(f,l,m,j,k))}d.push(b)}for(;b=d.pop();)a(b.node,b.x0,b.y0,b.x1,b.y1);return this},m.x=function(a){return arguments.length?(this._x=a,this):this._x},m.y=function(a){return arguments.length?(this._y=a,this):this._y};var t=a.i(55379),u=a.i(92907);function v(a){return a.x}function w(a){return a.y}var x=Math.PI*(3-Math.sqrt(5)),y=a.i(64831);let z=(0,y.default)("pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);var A=a.i(74215);let B=(0,y.default)("file-code-corner",[["path",{d:"M4 12.15V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-3.35",key:"1wthlu"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"m5 16-3 3 3 3",key:"331omg"}],["path",{d:"m9 22 3-3-3-3",key:"lsp7cz"}]]);var C=a.i(76039),D=a.i(34682);let E=/(^|\/)tests?\/|\.(test|spec)\.[jt]sx?$/i;var F=a.i(97895);let G={ts:"#3178c6",js:"#f7df1e",py:"#3776ab",go:"#00add8",rs:"#dea584",swift:"#f05138",java:"#b07219",ruby:"#cc342d",kotlin:"#a97bff",csharp:"#178600",php:"#4f5d95",cpp:"#f34b7d",c:"#555555"},H={file:function({data:a}){var c;let f=!!a.touched,g=a.recency??0,h=a.inDegree??0,i=10+.35*Math.min(h,20),j=f?Math.max(13+4*g,i):i,k={fontSize:`${j}px`,...f?{boxShadow:`0 0 ${6+Math.round(12*g)}px ${1+Math.round(3*g)}px rgba(45,212,191,${(.25+.5*g).toFixed(2)})`,zIndex:10}:{}},l=h>0?` \xb7 imported by ${h}`:"",m=f?`${a.tooltip} \xb7 edited ${a.count??0}\xd7 this session${l}`:a.untested?`${a.tooltip} \xb7 no test imports this file${l}`:`${a.tooltip}${l}`;return(0,b.jsxs)("div",{title:m,style:k,className:(0,F.cn)("relative rounded-md border bg-card/85 px-2 py-0.5 text-[10px] font-medium backdrop-blur transition-[font-size,box-shadow,border-color] duration-300",f?"border-teal-300/80 px-2.5 py-1 font-semibold text-foreground":a.untested?"border-amber-400/60 text-foreground/85":"border-white/10 text-foreground/85",a.isNewest&&"animate-touch-pulse"),children:[(0,b.jsx)(d.Handle,{type:"target",position:e.Position.Top,isConnectable:!1,className:"!h-0 !w-0 !min-w-0 !border-0 !bg-transparent"}),a.untested&&(0,b.jsx)("span",{"aria-hidden":!0,className:"absolute -right-1 -top-1 size-1.5 rounded-full bg-amber-400 ring-2 ring-background"}),f&&(a.count??0)>0&&(0,b.jsx)("span",{"aria-hidden":!0,className:"absolute -left-1.5 -top-1.5 flex h-3 min-w-3 items-center justify-center rounded-full bg-teal-400 px-0.5 text-[7px] font-bold text-background ring-1 ring-background",children:a.count}),a.lang&&(0,b.jsx)("span",{"aria-hidden":!0,title:a.lang,className:"absolute -bottom-1 -right-1 size-1.5 rounded-full ring-1 ring-background",style:{backgroundColor:(c=a.lang)&&G[c]||"#9ca3af"}}),a.label,(0,b.jsx)(d.Handle,{type:"source",position:e.Position.Bottom,isConnectable:!1,className:"!h-0 !w-0 !min-w-0 !border-0 !bg-transparent"})]})}};function I({label:a,paths:c,onPick:d}){return c.length?(0,b.jsxs)("div",{children:[(0,b.jsxs)("h3",{className:"mb-1 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground",children:[a," (",c.length,")"]}),(0,b.jsx)("ul",{className:"space-y-0.5",children:c.map(a=>(0,b.jsx)("li",{children:(0,b.jsx)("button",{onClick:()=>d(a),title:a,className:"block w-full truncate rounded px-1.5 py-0.5 text-left font-mono text-[10px] text-muted-foreground transition-colors hover:bg-white/5 hover:text-foreground",children:a.slice(a.lastIndexOf("/")+1)})},a))})]}):null}a.s(["FilesMapClient",0,function({files:a,edges:e,touched:f}){let g,h=(0,c.useMemo)(()=>{if(!a.some(a=>0===a.x&&0===a.y)){let b=new Map;for(let c of a)b.set(c.path,{x:c.x,y:c.y});return{positions:b,fresh:!1}}return{positions:function(a,b){let c=a.map(a=>{let b=0!==a.x||0!==a.y,c=a.path.includes("/")?a.path.split("/").pop():a.path;return{id:a.path,x:b?a.x:(Math.random()-.5)*600,y:b?a.y:(Math.random()-.5)*600,fx:b?a.x:void 0,fy:b?a.y:void 0,pinned:b,radius:Math.max(28,(6*c.length+24)/2+8)}}),d=b.filter(a=>a.from!==a.to).map(a=>({source:a.from,target:a.to})),e=(function(a){let b;var c,d=1,e=.001,f=1-Math.pow(.001,1/300),g=0,h=.6,i=new Map,j=(0,u.timer)(m),k=(0,t.dispatch)("tick","end"),l=(b=1,()=>(b=(1664525*b+0x3c6ef35f)%0x100000000)/0x100000000);function m(){n(),k.call("tick",c),d<e&&(j.stop(),k.call("end",c))}function n(b){var e,j,k=a.length;void 0===b&&(b=1);for(var l=0;l<b;++l)for(d+=(g-d)*f,i.forEach(function(a){a(d)}),e=0;e<k;++e)null==(j=a[e]).fx?j.x+=j.vx*=h:(j.x=j.fx,j.vx=0),null==j.fy?j.y+=j.vy*=h:(j.y=j.fy,j.vy=0);return c}function o(){for(var b,c=0,d=a.length;c<d;++c){if((b=a[c]).index=c,null!=b.fx&&(b.x=b.fx),null!=b.fy&&(b.y=b.fy),isNaN(b.x)||isNaN(b.y)){var e=10*Math.sqrt(.5+c),f=c*x;b.x=e*Math.cos(f),b.y=e*Math.sin(f)}(isNaN(b.vx)||isNaN(b.vy))&&(b.vx=b.vy=0)}}function p(b){return b.initialize&&b.initialize(a,l),b}return null==a&&(a=[]),o(),c={tick:n,restart:function(){return j.restart(m),c},stop:function(){return j.stop(),c},nodes:function(b){return arguments.length?(a=b,o(),i.forEach(p),c):a},alpha:function(a){return arguments.length?(d=+a,c):d},alphaMin:function(a){return arguments.length?(e=+a,c):e},alphaDecay:function(a){return arguments.length?(f=+a,c):+f},alphaTarget:function(a){return arguments.length?(g=+a,c):g},velocityDecay:function(a){return arguments.length?(h=1-a,c):1-h},randomSource:function(a){return arguments.length?(l=a,i.forEach(p),c):l},force:function(a,b){return arguments.length>1?(null==b?i.delete(a):i.set(a,p(b)),c):i.get(a)},find:function(b,c,d){var e,f,g,h,i,j=0,k=a.length;for(null==d?d=1/0:d*=d,j=0;j<k;++j)(g=(e=b-(h=a[j]).x)*e+(f=c-h.y)*f)<d&&(i=h,d=g);return i},on:function(a,b){return arguments.length>1?(k.on(a,b),c):k.on(a)}}})(c).force("link",(function(a){var b,c,d,e,f,g,h=r,i=function(a){return 1/Math.min(e[a.source.index],e[a.target.index])},j=n(30),k=1;function l(d){for(var e=0,h=a.length;e<k;++e)for(var i,j,l,m,n,p,q,r=0;r<h;++r)j=(i=a[r]).source,p=((p=Math.sqrt((m=(l=i.target).x+l.vx-j.x-j.vx||o(g))*m+(n=l.y+l.vy-j.y-j.vy||o(g))*n))-c[r])/p*d*b[r],m*=p,n*=p,l.vx-=m*(q=f[r]),l.vy-=n*q,j.vx+=m*(q=1-q),j.vy+=n*q}function m(){if(d){var g,i,j=d.length,k=a.length,l=new Map(d.map((a,b)=>[h(a,b,d),a]));for(g=0,e=Array(j);g<k;++g)(i=a[g]).index=g,"object"!=typeof i.source&&(i.source=s(l,i.source)),"object"!=typeof i.target&&(i.target=s(l,i.target)),e[i.source.index]=(e[i.source.index]||0)+1,e[i.target.index]=(e[i.target.index]||0)+1;for(g=0,f=Array(k);g<k;++g)i=a[g],f[g]=e[i.source.index]/(e[i.source.index]+e[i.target.index]);b=Array(k),p(),c=Array(k),q()}}function p(){if(d)for(var c=0,e=a.length;c<e;++c)b[c]=+i(a[c],c,a)}function q(){if(d)for(var b=0,e=a.length;b<e;++b)c[b]=+j(a[b],b,a)}return null==a&&(a=[]),l.initialize=function(a,b){d=a,g=b,m()},l.links=function(b){return arguments.length?(a=b,m(),l):a},l.id=function(a){return arguments.length?(h=a,l):h},l.iterations=function(a){return arguments.length?(k=+a,l):k},l.strength=function(a){return arguments.length?(i="function"==typeof a?a:n(+a),p(),l):i},l.distance=function(a){return arguments.length?(j="function"==typeof a?a:n(+a),q(),l):j},l})(d).id(a=>a.id).distance(130).strength(.45)).force("charge",(function(){var a,b,c,d,e,f=n(-30),g=1,h=1/0,i=.81;function k(c){var e,f=a.length,g=j(a,v,w).visitAfter(m);for(d=c,e=0;e<f;++e)b=a[e],g.visit(p)}function l(){if(a){var b,c,d=a.length;for(b=0,e=Array(d);b<d;++b)e[(c=a[b]).index]=+f(c,b,a)}}function m(a){var b,c,d,f,g,h=0,i=0;if(a.length){for(d=f=g=0;g<4;++g)(b=a[g])&&(c=Math.abs(b.value))&&(h+=b.value,i+=c,d+=c*b.x,f+=c*b.y);a.x=d/i,a.y=f/i}else{(b=a).x=b.data.x,b.y=b.data.y;do h+=e[b.data.index];while(b=b.next)}a.value=h}function p(a,f,j,k){if(!a.value)return!0;var l=a.x-b.x,m=a.y-b.y,n=k-f,p=l*l+m*m;if(n*n/i<p)return p<h&&(0===l&&(p+=(l=o(c))*l),0===m&&(p+=(m=o(c))*m),p<g&&(p=Math.sqrt(g*p)),b.vx+=l*a.value*d/p,b.vy+=m*a.value*d/p),!0;if(!a.length&&!(p>=h)){(a.data!==b||a.next)&&(0===l&&(p+=(l=o(c))*l),0===m&&(p+=(m=o(c))*m),p<g&&(p=Math.sqrt(g*p)));do a.data!==b&&(n=e[a.data.index]*d/p,b.vx+=l*n,b.vy+=m*n);while(a=a.next)}}return k.initialize=function(b,d){a=b,c=d,l()},k.strength=function(a){return arguments.length?(f="function"==typeof a?a:n(+a),l(),k):f},k.distanceMin=function(a){return arguments.length?(g=a*a,k):Math.sqrt(g)},k.distanceMax=function(a){return arguments.length?(h=a*a,k):Math.sqrt(h)},k.theta=function(a){return arguments.length?(i=a*a,k):Math.sqrt(i)},k})().strength(-380).distanceMax(1e3)).force("collide",(function(a){var b,c,d,e=1,f=1;function g(){for(var a,g,i,k,l,m,n,r=b.length,s=0;s<f;++s)for(a=0,g=j(b,p,q).visitAfter(h);a<r;++a)n=(m=c[(i=b[a]).index])*m,k=i.x+i.vx,l=i.y+i.vy,g.visit(t);function t(a,b,c,f,g){var h=a.data,j=a.r,p=m+j;if(h){if(h.index>i.index){var q=k-h.x-h.vx,r=l-h.y-h.vy,s=q*q+r*r;s<p*p&&(0===q&&(s+=(q=o(d))*q),0===r&&(s+=(r=o(d))*r),s=(p-(s=Math.sqrt(s)))/s*e,i.vx+=(q*=s)*(p=(j*=j)/(n+j)),i.vy+=(r*=s)*p,h.vx-=q*(p=1-p),h.vy-=r*p)}return}return b>k+p||f<k-p||c>l+p||g<l-p}}function h(a){if(a.data)return a.r=c[a.data.index];for(var b=a.r=0;b<4;++b)a[b]&&a[b].r>a.r&&(a.r=a[b].r)}function i(){if(b){var d,e,f=b.length;for(d=0,c=Array(f);d<f;++d)c[(e=b[d]).index]=+a(e,d,b)}}return"function"!=typeof a&&(a=n(null==a?1:+a)),g.initialize=function(a,c){b=a,d=c,i()},g.iterations=function(a){return arguments.length?(f=+a,g):f},g.strength=function(a){return arguments.length?(e=+a,g):e},g.radius=function(b){return arguments.length?(a="function"==typeof b?b:n(+b),i(),g):a},g})().radius(a=>a.radius).strength(1)).force("center",(function(a,b){var c,d=1;function e(){var e,f,g=c.length,h=0,i=0;for(e=0;e<g;++e)h+=(f=c[e]).x,i+=f.y;for(h=(h/g-a)*d,i=(i/g-b)*d,e=0;e<g;++e)f=c[e],f.x-=h,f.y-=i}return null==a&&(a=0),null==b&&(b=0),e.initialize=function(a){c=a},e.x=function(b){return arguments.length?(a=+b,e):a},e.y=function(a){return arguments.length?(b=+a,e):b},e.strength=function(a){return arguments.length?(d=+a,e):d},e})(0,0).strength(.025)).stop();for(let a=0;a<500;a++)e.tick();let f=new Map;for(let a of c)f.set(a.id,{x:a.x??0,y:a.y??0});return f}(a,e),fresh:!0}},[a,e]),i=(0,c.useMemo)(()=>(function(a,b){var c;let d=new Set;for(let a of b)c=a.from,E.test(c)&&d.add(a.to);let e=new Set;for(let b of a)E.test(b)||d.has(b)||e.add(b);return e})(a.map(a=>a.path),e),[a,e]),k=(0,c.useMemo)(()=>{let a=new Map,b=Object.entries(f??{});if(!b.length)return a;let c=b.map(([,a])=>a.lastAt),d=Math.max(...c),e=Math.min(...c),g=d-e||1,h=b[0][0],i=b[0][1].lastAt;for(let[a,c]of b)c.lastAt>=i&&(h=a,i=c.lastAt);for(let[c,d]of b)a.set(c,{count:d.count,recency:(d.lastAt-e)/g,isNewest:c===h});return a},[f]),l=k.size>0,m=(0,c.useMemo)(()=>Array.from(k.entries()).map(([a,b])=>({path:a,label:a.slice(a.lastIndexOf("/")+1),count:b.count,recency:b.recency})).sort((a,b)=>b.recency-a.recency),[k]),y=(0,c.useMemo)(()=>a.map(a=>{let b=h.positions.get(a.path)??{x:a.x,y:a.y},c=a.path.lastIndexOf("/"),d=c>=0?a.path.slice(c+1):a.path,e=k.get(a.path);return{id:a.path,type:"file",position:b,data:{label:d,tooltip:a.path,untested:i.has(a.path),inDegree:a.inDegree??0,lang:a.lang??null,touched:!!e,count:e?.count??0,recency:e?.recency??0,isNewest:e?.isNewest??!1}}}),[a,h,i,k]),G=(0,c.useRef)(!1);(0,c.useEffect)(()=>{if(!h.fresh||G.current)return;G.current=!0;let b=a.filter(a=>0===a.x&&0===a.y).map(a=>{let b=h.positions.get(a.path);return b?{path:a.path,x:b.x,y:b.y}:null}).filter(a=>null!==a);b.length&&fetch("/api/code-graph/position",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({batch:b})})},[h,a]);let J=(0,c.useMemo)(()=>e.map(a=>({id:`${a.from}|${a.to}`,source:a.from,target:a.to,type:"straight",style:a.circular?{stroke:"#f87171",strokeDasharray:"5 3",strokeWidth:2}:{stroke:"#a1a1aa",strokeWidth:1.5,opacity:.85}})),[e]),[K,L]=(0,c.useState)(y),[M,N]=(0,c.useState)(J),[O,P]=(0,c.useState)(null),[Q,R]=(0,c.useState)(null),[S,T]=(0,c.useState)(!1),[U,V]=(0,c.useState)(!1),[W,X]=(0,c.useState)(!1),[Y,Z]=(0,c.useState)(!1),$=(0,c.useRef)(null),_=(0,c.useCallback)(a=>{P(a),R(null);let b=$.current?.getNode(a);b&&$.current&&$.current.setCenter(b.position.x+40,b.position.y+12,{zoom:1.4,duration:600})},[]),aa=(0,c.useCallback)(()=>{P(null),R(null);let a=!U;if(V(a),X(a),a&&$.current){let a=Array.from(k.keys()).map(a=>({id:a}));a.length&&$.current.fitView({nodes:a,duration:600,padding:.4})}},[U,k]);(0,c.useEffect)(()=>Z(!0),[]),(0,c.useEffect)(()=>L(y),[y]),(0,c.useEffect)(()=>N(J),[J]);let ab=(0,c.useCallback)(a=>L(b=>(0,d.applyNodeChanges)(a,b)),[]),ac=(0,c.useCallback)(a=>N(b=>(0,d.applyEdgeChanges)(a,b)),[]),ad=(0,c.useCallback)((a,b,c)=>{fetch("/api/code-graph/position",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({path:a,x:b,y:c})})},[]),ae=(0,c.useMemo)(()=>new Set(e.filter(a=>a.circular).map(a=>`${a.from}|${a.to}`)),[e]),af=(0,c.useMemo)(()=>{let a=new Set;for(let b of e)b.circular&&(a.add(b.from),a.add(b.to));return a},[e]),ag=(0,c.useMemo)(()=>{if(Q){let a=M.find(a=>a.id===Q);return a?new Set([a.source,a.target]):null}if(O){let a=new Set([O]);for(let b of e)b.from===O&&a.add(b.to),b.to===O&&a.add(b.from);return a}return S?af:U&&l?new Set(k.keys()):null},[O,Q,S,af,e,M,U,l,k]),ah=(0,c.useMemo)(()=>ag?K.map(a=>({...a,style:{...a.style,opacity:ag.has(a.id)?1:.15,transition:"opacity 120ms"}})):K,[K,ag]),ai=(0,c.useMemo)(()=>O||Q||S||U?M.map(a=>{let b=!1;return Q?b=a.id===Q:O?b=a.source===O||a.target===O:S?b=ae.has(a.id):U&&(b=k.has(a.source)&&k.has(a.target)),b?{...a,zIndex:20,style:{...a.style,opacity:1,strokeWidth:2}}:{...a,style:{...a.style,opacity:.05}}}):M,[M,O,Q,S,ae,U,k]),aj=e.filter(a=>a.circular).length,ak=(0,c.useMemo)(()=>O?e.filter(a=>a.from===O).map(a=>a.to):[],[O,e]),al=(0,c.useMemo)(()=>O?e.filter(a=>a.to===O).map(a=>a.from):[],[O,e]),am=null!==O||W&&l,an=(0,c.useCallback)(()=>{P(null),X(!1),V(!1)},[]);return Y?(0,b.jsxs)("div",{className:"relative h-screen w-full",children:[(0,b.jsxs)(d.ReactFlow,{nodes:ah,edges:ai,nodeTypes:H,onNodesChange:ab,onEdgesChange:ac,onNodeClick:(a,b)=>{P(b.id),R(null)},onEdgeClick:(a,b)=>{R(b.id),P(null)},onPaneClick:()=>{P(null),R(null)},onInit:a=>{$.current=a},onNodeDragStop:(a,b)=>ad(b.id,b.position.x,b.position.y),deleteKeyCode:null,colorMode:"dark",fitView:!0,minZoom:.05,panOnScroll:!0,zoomActivationKeyCode:["Meta","Control"],proOptions:{hideAttribution:!0},children:[(0,b.jsx)(d.Background,{gap:22,color:"#2a2a32"}),(0,b.jsx)(d.Controls,{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,b.jsx)(d.MiniMap,{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"}),(0,b.jsx)(d.Panel,{position:"top-center",className:"glass rounded-full px-1 py-0.5",children:(0,b.jsx)(D.CanvasTabs,{active:"FILES",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,b.jsxs)(d.Panel,{position:"top-right",className:"glass flex items-center gap-3 rounded-xl px-3 py-1.5 text-[11px]",children:[(0,b.jsxs)("span",{className:"text-muted-foreground",children:[a.length," files · ",e.length," imports"]}),aj>0&&(0,b.jsxs)("button",{type:"button",onClick:()=>{T(a=>!a),P(null),R(null)},title:S?"Show all imports":"Show only files involved in import cycles",className:(0,F.cn)("flex items-center gap-1.5 rounded-md px-1.5 py-0.5 transition-colors",S?"bg-red-500/15 text-red-200 ring-1 ring-red-400/40":"text-red-300 hover:bg-red-500/10"),children:[(0,b.jsx)("span",{"aria-hidden":!0,className:"inline-block h-0 w-5 border-t border-dashed",style:{borderColor:"#ef4444"}}),aj," circular"]}),l&&(0,b.jsx)(b.Fragment,{children:(0,b.jsxs)("button",{type:"button",onClick:aa,title:U?"Show all files again":"Focus + zoom to the files edited this session",className:(0,F.cn)("flex items-center gap-1.5 rounded-md px-1.5 py-0.5 transition-colors",U?"bg-teal-500/15 text-teal-200 ring-1 ring-teal-400/40":"text-teal-300 hover:bg-teal-500/10"),children:[(0,b.jsx)(z,{className:"size-3"}),k.size," edited"]})})]})]}),am&&(0,b.jsxs)(C.GlassPanel,{className:"absolute bottom-3 right-3 top-16 z-10 flex w-72 flex-col rounded-2xl",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between border-b border-white/10 px-3.5 py-2.5",children:[(0,b.jsx)("span",{className:"text-[11px] font-semibold uppercase tracking-wide text-muted-foreground",children:O?"File":"Edited this session"}),(0,b.jsx)("button",{onClick:an,title:"Close panel",className:"rounded-md p-1 text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground",children:(0,b.jsx)(A.X,{className:"size-4"})})]}),(0,b.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto p-3",children:O?(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{className:"flex items-start gap-1.5",children:[(0,b.jsx)(B,{className:"mt-0.5 size-4 shrink-0 text-muted-foreground"}),(0,b.jsx)("h2",{className:"break-all text-sm font-semibold leading-tight",children:O.slice(O.lastIndexOf("/")+1)})]}),(0,b.jsx)("div",{className:"mt-0.5 break-all font-mono text-[10px] text-muted-foreground",children:O})]}),(0,b.jsxs)("div",{className:"flex flex-wrap gap-1",children:[(g=k.get(O))?(0,b.jsxs)("span",{className:"rounded bg-teal-500/15 px-1.5 py-0.5 text-[10px] font-semibold text-teal-300",children:["edited ",g.count,"×"]}):null,i.has(O)&&(0,b.jsx)("span",{className:"rounded bg-amber-500/15 px-1.5 py-0.5 text-[10px] font-semibold text-amber-300",children:"untested"})]}),(0,b.jsx)("button",{onClick:()=>fetch(`/api/open?path=${encodeURIComponent(O)}`).catch(()=>{}),className:"w-full rounded-md border border-white/10 px-2 py-1.5 text-[11px] text-muted-foreground transition-colors hover:bg-white/[0.06] hover:text-foreground",children:"Open in editor"}),(0,b.jsx)(I,{label:"Imports",paths:ak,onPick:_}),(0,b.jsx)(I,{label:"Imported by",paths:al,onPick:_})]}):(0,b.jsx)("ul",{className:"space-y-0.5",children:m.map(a=>(0,b.jsx)("li",{children:(0,b.jsxs)("button",{onClick:()=>_(a.path),title:a.path,className:"flex w-full items-center justify-between gap-2 rounded px-2 py-1 text-left transition-colors hover:bg-white/[0.06]",children:[(0,b.jsx)("span",{className:"truncate text-[11px] text-foreground/90",children:a.label}),(0,b.jsxs)("span",{className:"shrink-0 text-[9px] text-teal-300/80",children:[a.count,"×"]})]})},a.path))})})]})]}):(0,b.jsx)("div",{className:"flex h-screen w-full items-center justify-center text-sm text-muted-foreground",children:"Loading graph…"})}],66130)}];
2
+
3
+ //# sourceMappingURL=components_graph_files-map-client_tsx_10bha9z._.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../components/graph/files-map-client.tsx","../../../../node_modules/d3-force/src/simulation.js","../../../../node_modules/d3-force/src/lcg.js","../../../../lib/test-coverage.ts","../../../../node_modules/d3-quadtree/src/x.js","../../../../node_modules/d3-quadtree/src/y.js","../../../../node_modules/d3-quadtree/src/add.js","../../../../node_modules/d3-quadtree/src/cover.js","../../../../node_modules/d3-quadtree/src/data.js","../../../../node_modules/d3-quadtree/src/extent.js","../../../../node_modules/d3-quadtree/src/quad.js","../../../../node_modules/d3-quadtree/src/remove.js","../../../../node_modules/d3-quadtree/src/root.js","../../../../node_modules/d3-quadtree/src/size.js","../../../../node_modules/d3-force/src/center.js","../../../../node_modules/d3-force/src/constant.js","../../../../node_modules/d3-force/src/jiggle.js","../../../../node_modules/d3-quadtree/src/visit.js","../../../../node_modules/d3-quadtree/src/visitAfter.js","../../../../node_modules/d3-quadtree/src/find.js","../../../../node_modules/d3-force/src/link.js","../../../../node_modules/d3-force/src/collide.js","../../../../node_modules/d3-force/src/manyBody.js","../../../../node_modules/lucide-react/src/icons/file-code-corner.ts","../../../../node_modules/lucide-react/src/icons/pencil.ts","../../../../node_modules/d3-quadtree/src/quadtree.js"],"sourcesContent":["\"use client\";\n\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport {\n applyEdgeChanges,\n applyNodeChanges,\n Background,\n Controls,\n Handle,\n MiniMap,\n Panel,\n Position,\n ReactFlow,\n type Edge,\n type EdgeChange,\n type Node,\n type NodeChange,\n type ReactFlowInstance,\n} from \"@xyflow/react\";\nimport {\n forceCenter,\n forceCollide,\n forceLink,\n forceManyBody,\n forceSimulation,\n type SimulationNodeDatum,\n} from \"d3-force\";\nimport \"@xyflow/react/dist/style.css\";\nimport { Pencil, X, FileCode2 } from \"lucide-react\";\nimport { GlassPanel } from \"@/components/ui/glass-panel\";\nimport { CanvasTabs } from \"@/components/graph/canvas-tabs\";\nimport { untestedFiles } from \"@/lib/test-coverage\";\nimport { type TouchedMap } from \"@/lib/touched-files\";\nimport { cn } from \"@/lib/utils\";\n\n// Files view: the import graph of the repo. One node per source file, one edge\n// per static/dynamic import. Circular edges (precomputed at ingest via Tarjan's\n// SCC) are styled differently so cycles stand out.\n//\n// Layout: synchronous d3-force simulation — the same family of physics that\n// powers Obsidian's graph view. Files with non-zero stored positions are\n// pinned (so user drags survive), zero-position files settle around them.\n// After ~300 ticks the simulation is \"good enough\" for a few hundred nodes;\n// computed positions are persisted so the next load is instant and stable.\n\nexport interface FileGraphFile {\n path: string;\n x: number;\n y: number;\n lang?: string | null;\n inDegree?: number;\n outDegree?: number;\n}\nexport interface FileGraphEdge {\n from: string;\n to: string;\n circular: boolean;\n}\n\n// Per-language accent (the small dot on each node). Detected by file extension at\n// ingest; keeps the canvas readable at a glance in polyglot repos. Unknown → grey.\nconst LANG_COLORS: Record<string, string> = {\n ts: \"#3178c6\",\n js: \"#f7df1e\",\n py: \"#3776ab\",\n go: \"#00add8\",\n rs: \"#dea584\",\n swift: \"#f05138\",\n java: \"#b07219\",\n ruby: \"#cc342d\",\n kotlin: \"#a97bff\",\n csharp: \"#178600\",\n php: \"#4f5d95\",\n cpp: \"#f34b7d\",\n c: \"#555555\",\n};\nfunction langColor(lang?: string | null): string {\n return (lang && LANG_COLORS[lang]) || \"#9ca3af\";\n}\n\ninterface SimNode extends SimulationNodeDatum {\n id: string;\n pinned: boolean;\n radius: number;\n}\n\n// Approximate the rendered width of a label (text + padding + border) so the\n// collision force matches the actual node card, not a circle around its center.\n// 6px/char is a reasonable estimate for the 10px font we render.\nfunction collisionRadiusFor(label: string): number {\n const widthHalf = (label.length * 6 + 24) / 2;\n return Math.max(28, widthHalf + 8); // +8 = breathing room\n}\n\nfunction runForceLayout(\n files: FileGraphFile[],\n edges: FileGraphEdge[],\n): Map<string, { x: number; y: number }> {\n const simNodes: SimNode[] = files.map((f) => {\n const pinned = f.x !== 0 || f.y !== 0;\n const label = f.path.includes(\"/\") ? f.path.split(\"/\").pop()! : f.path;\n return {\n id: f.path,\n x: pinned ? f.x : (Math.random() - 0.5) * 600,\n y: pinned ? f.y : (Math.random() - 0.5) * 600,\n fx: pinned ? f.x : undefined,\n fy: pinned ? f.y : undefined,\n pinned,\n radius: collisionRadiusFor(label),\n };\n });\n\n const simLinks = edges\n .filter((e) => e.from !== e.to)\n .map((e) => ({ source: e.from, target: e.to }));\n\n const sim = forceSimulation(simNodes)\n .force(\n \"link\",\n forceLink<SimNode, { source: string; target: string }>(simLinks)\n .id((n) => n.id)\n .distance(130)\n .strength(0.45),\n )\n // Repulsion — keep nodes apart so edges read individually.\n .force(\"charge\", forceManyBody<SimNode>().strength(-380).distanceMax(1000))\n // Collision — per-node radius matches the actual label width so wide\n // filenames like `endpoint-reconcile.test.ts` don't visually overlap.\n .force(\n \"collide\",\n forceCollide<SimNode>().radius((d) => d.radius).strength(1),\n )\n // Gentle pull to origin so disconnected nodes don't fly off.\n .force(\"center\", forceCenter(0, 0).strength(0.025))\n .stop();\n\n // Synchronous: tick to convergence. ~500 ticks for a few hundred nodes is\n // plenty for the simulation to settle (alpha decays to ~0 by then).\n for (let i = 0; i < 500; i++) sim.tick();\n\n const out = new Map<string, { x: number; y: number }>();\n for (const n of simNodes) {\n out.set(n.id, { x: n.x ?? 0, y: n.y ?? 0 });\n }\n return out;\n}\n\ninterface FileNodeData {\n label: string;\n tooltip: string;\n untested?: boolean;\n // Hub scoring (deterministic, cached at ingest) — high-inDegree files render bigger.\n inDegree?: number;\n lang?: string | null;\n // Touched-Files overlay (driven by the PostToolUse hook via the touched store).\n touched?: boolean;\n count?: number; // edits this session\n recency?: number; // 0..1, newest edit = 1 — drives glow intensity (recency heat)\n isNewest?: boolean; // the single most-recently edited file → one-shot pulse\n}\n\nfunction FileNode({ data }: { data: FileNodeData }) {\n // Compact: filename only. Full path is in the title tooltip — hover reveals\n // it without bloating every node card. The two Handles are required for React\n // Flow to render import edges (error #008 otherwise); styled invisible.\n //\n // Encodings stack so signals are spottable at a glance AND never color-alone\n // (the tooltip + icons/badges carry the meaning for colorblind readers):\n // • untested → amber border + corner dot\n // • touched → teal border + glow whose intensity scales with recency, an\n // edit-count badge, and a one-shot pulse on the most recent edit.\n const touched = !!data.touched;\n const recency = data.recency ?? 0;\n const inDeg = data.inDegree ?? 0;\n // Hub sizing: high-blast-radius files (imported by many) render bigger so they're\n // spottable without reading every label. Up to +7px over the 10px base; capped so a\n // mega-hub doesn't dwarf the canvas. Edited files keep their (usually larger) size.\n const hubSize = 10 + Math.min(inDeg, 20) * 0.35;\n const fontSize = touched ? Math.max(13 + recency * 4, hubSize) : hubSize;\n const style = {\n fontSize: `${fontSize}px`,\n ...(touched\n ? {\n boxShadow: `0 0 ${6 + Math.round(recency * 12)}px ${1 + Math.round(recency * 3)}px rgba(45,212,191,${(0.25 + recency * 0.5).toFixed(2)})`,\n zIndex: 10,\n }\n : {}),\n };\n const hubNote = inDeg > 0 ? ` · imported by ${inDeg}` : \"\";\n const title = touched\n ? `${data.tooltip} · edited ${data.count ?? 0}× this session${hubNote}`\n : data.untested\n ? `${data.tooltip} · no test imports this file${hubNote}`\n : `${data.tooltip}${hubNote}`;\n return (\n <div\n title={title}\n style={style}\n className={cn(\n \"relative rounded-md border bg-card/85 px-2 py-0.5 text-[10px] font-medium backdrop-blur transition-[font-size,box-shadow,border-color] duration-300\",\n touched\n ? \"border-teal-300/80 px-2.5 py-1 font-semibold text-foreground\"\n : data.untested\n ? \"border-amber-400/60 text-foreground/85\"\n : \"border-white/10 text-foreground/85\",\n data.isNewest && \"animate-touch-pulse\",\n )}\n >\n <Handle\n type=\"target\"\n position={Position.Top}\n isConnectable={false}\n className=\"!h-0 !w-0 !min-w-0 !border-0 !bg-transparent\"\n />\n {data.untested && (\n <span\n aria-hidden\n className=\"absolute -right-1 -top-1 size-1.5 rounded-full bg-amber-400 ring-2 ring-background\"\n />\n )}\n {touched && (data.count ?? 0) > 0 && (\n <span\n aria-hidden\n className=\"absolute -left-1.5 -top-1.5 flex h-3 min-w-3 items-center justify-center rounded-full bg-teal-400 px-0.5 text-[7px] font-bold text-background ring-1 ring-background\"\n >\n {data.count}\n </span>\n )}\n {data.lang && (\n <span\n aria-hidden\n title={data.lang}\n className=\"absolute -bottom-1 -right-1 size-1.5 rounded-full ring-1 ring-background\"\n style={{ backgroundColor: langColor(data.lang) }}\n />\n )}\n {data.label}\n <Handle\n type=\"source\"\n position={Position.Bottom}\n isConnectable={false}\n className=\"!h-0 !w-0 !min-w-0 !border-0 !bg-transparent\"\n />\n </div>\n );\n}\n\nconst nodeTypes = { file: FileNode };\n\nexport function FilesMapClient({\n files,\n edges: edgePayload,\n touched,\n}: {\n files: FileGraphFile[];\n edges: FileGraphEdge[];\n touched?: TouchedMap;\n}) {\n // Run the force simulation once whenever the file set changes. Files with\n // stored positions pin in place; files at (0,0) get positioned around them.\n // Computed positions are persisted back so the next load skips simulation.\n const layoutResult = useMemo(() => {\n const anyUnpositioned = files.some((f) => f.x === 0 && f.y === 0);\n if (!anyUnpositioned) {\n const m = new Map<string, { x: number; y: number }>();\n for (const f of files) m.set(f.path, { x: f.x, y: f.y });\n return { positions: m, fresh: false };\n }\n return { positions: runForceLayout(files, edgePayload), fresh: true };\n }, [files, edgePayload]);\n\n // Test-Coverage Flags: files no test file imports (deterministic, from the import edges).\n const untested = useMemo(\n () => untestedFiles(files.map((f) => f.path), edgePayload),\n [files, edgePayload],\n );\n\n // Touched-Files overlay: per-file edit count + recency (0..1, newest = 1) + the single newest.\n const touchedInfo = useMemo(() => {\n const m = new Map<string, { count: number; recency: number; isNewest: boolean }>();\n const entries = Object.entries(touched ?? {});\n if (!entries.length) return m;\n const ats = entries.map(([, e]) => e.lastAt);\n const max = Math.max(...ats);\n const min = Math.min(...ats);\n const span = max - min || 1;\n let newest = entries[0][0];\n let newestAt = entries[0][1].lastAt;\n for (const [p, e] of entries) if (e.lastAt >= newestAt) ((newest = p), (newestAt = e.lastAt));\n for (const [p, e] of entries) m.set(p, { count: e.count, recency: (e.lastAt - min) / span, isNewest: p === newest });\n return m;\n }, [touched]);\n const hasTouched = touchedInfo.size > 0;\n // Readable summary list of edited files (newest first) for the side panel — clicking one\n // selects + pans to it, so you don't have to find it in the dense graph.\n const editedList = useMemo(\n () =>\n Array.from(touchedInfo.entries())\n .map(([path, v]) => ({\n path,\n label: path.slice(path.lastIndexOf(\"/\") + 1),\n count: v.count,\n recency: v.recency,\n }))\n .sort((a, b) => b.recency - a.recency),\n [touchedInfo],\n );\n\n const initialNodes = useMemo<Node[]>(() => {\n return files.map((f) => {\n const pos = layoutResult.positions.get(f.path) ?? { x: f.x, y: f.y };\n const slash = f.path.lastIndexOf(\"/\");\n const label = slash >= 0 ? f.path.slice(slash + 1) : f.path;\n const ti = touchedInfo.get(f.path);\n return {\n id: f.path,\n type: \"file\",\n position: pos,\n data: {\n label,\n tooltip: f.path,\n untested: untested.has(f.path),\n inDegree: f.inDegree ?? 0,\n lang: f.lang ?? null,\n touched: !!ti,\n count: ti?.count ?? 0,\n recency: ti?.recency ?? 0,\n isNewest: ti?.isNewest ?? false,\n },\n };\n });\n }, [files, layoutResult, untested, touchedInfo]);\n\n // Persist freshly-computed positions so the next page load is stable + instant.\n // Fire-and-forget; failures don't matter because we'll just recompute next time.\n const persistedRef = useRef(false);\n useEffect(() => {\n if (!layoutResult.fresh || persistedRef.current) return;\n persistedRef.current = true;\n const updates = files\n .filter((f) => f.x === 0 && f.y === 0)\n .map((f) => {\n const pos = layoutResult.positions.get(f.path);\n return pos ? { path: f.path, x: pos.x, y: pos.y } : null;\n })\n .filter((u): u is { path: string; x: number; y: number } => u !== null);\n if (!updates.length) return;\n void fetch(\"/api/code-graph/position\", {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify({ batch: updates }),\n });\n }, [layoutResult, files]);\n\n const initialEdges = useMemo<Edge[]>(\n () =>\n edgePayload.map((e) => ({\n id: `${e.from}|${e.to}`,\n source: e.from,\n target: e.to,\n // Straight lines read like Obsidian's mental map; bezier curves get\n // noisy at this density. Arrowheads dropped for the same reason —\n // connectivity matters more than direction at a glance.\n type: \"straight\",\n style: e.circular\n ? { stroke: \"#f87171\", strokeDasharray: \"5 3\", strokeWidth: 2 }\n : { stroke: \"#a1a1aa\", strokeWidth: 1.5, opacity: 0.85 },\n })),\n [edgePayload],\n );\n\n const [nodes, setNodes] = useState(initialNodes);\n const [edges, setEdges] = useState(initialEdges);\n const [selectedId, setSelectedId] = useState<string | null>(null);\n // Edge selection focuses just the two endpoints — exclusive with node selection.\n const [selectedEdgeId, setSelectedEdgeId] = useState<string | null>(null);\n // \"Show only circular\" — toggled by clicking the red badge in the top-right.\n const [circularOnly, setCircularOnly] = useState(false);\n // Touched-Files: \"focus edits\" dims everything except files edited this session (focus+context).\n const [editsOnly, setEditsOnly] = useState(false);\n const [summaryOpen, setSummaryOpen] = useState(false);\n // React Flow can't render identically on the server (it measures node DOM client-side,\n // and the force layout seeds unpositioned nodes randomly), so SSR + hydration diverge\n // → hydration mismatch. Render the canvas only after mount; the server emits a stable\n // placeholder. Data is still fetched server-side and passed in as props.\n const [mounted, setMounted] = useState(false);\n const rfRef = useRef<ReactFlowInstance | null>(null);\n // Select a file from the summary list + center the canvas on it.\n const selectAndPan = useCallback((path: string) => {\n setSelectedId(path);\n setSelectedEdgeId(null);\n const n = rfRef.current?.getNode(path);\n if (n && rfRef.current) rfRef.current.setCenter(n.position.x + 40, n.position.y + 12, { zoom: 1.4, duration: 600 });\n }, []);\n // Toggle \"focus edits\": dim everything except files edited this session AND zoom to them, so\n // one click both isolates and frames the edited set (the previous separate crosshair was unclear).\n const toggleEditsFocus = useCallback(() => {\n setSelectedId(null);\n setSelectedEdgeId(null);\n const next = !editsOnly;\n setEditsOnly(next);\n setSummaryOpen(next);\n // fitView runs in the event handler (NOT inside a setState updater, which executes during\n // render — that triggered a MiniMap setState-in-render warning).\n if (next && rfRef.current) {\n const ids = Array.from(touchedInfo.keys()).map((id) => ({ id }));\n if (ids.length) rfRef.current.fitView({ nodes: ids, duration: 600, padding: 0.4 });\n }\n }, [editsOnly, touchedInfo]);\n\n // eslint-disable-next-line react-hooks/set-state-in-effect\n useEffect(() => setMounted(true), []);\n // eslint-disable-next-line react-hooks/set-state-in-effect\n useEffect(() => setNodes(initialNodes), [initialNodes]);\n // eslint-disable-next-line react-hooks/set-state-in-effect\n useEffect(() => setEdges(initialEdges), [initialEdges]);\n\n const onNodesChange = useCallback(\n (changes: NodeChange[]) => setNodes((nds) => applyNodeChanges(changes, nds)),\n [],\n );\n const onEdgesChange = useCallback(\n (changes: EdgeChange[]) => setEdges((eds) => applyEdgeChanges(changes, eds)),\n [],\n );\n\n const persistPos = useCallback((path: string, x: number, y: number) => {\n void fetch(\"/api/code-graph/position\", {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify({ path, x, y }),\n });\n }, []);\n\n // O(1) lookup for \"is this edge circular?\" via the React Flow edge id.\n const circularEdgeIds = useMemo(\n () => new Set(edgePayload.filter((e) => e.circular).map((e) => `${e.from}|${e.to}`)),\n [edgePayload],\n );\n // Every file that participates in at least one cycle.\n const circularNodeIds = useMemo(() => {\n const s = new Set<string>();\n for (const e of edgePayload) {\n if (e.circular) {\n s.add(e.from);\n s.add(e.to);\n }\n }\n return s;\n }, [edgePayload]);\n\n // Click-to-highlight: edge → focus its two endpoints; node → focus 1-hop\n // neighbours; circular badge → focus every node in a cycle. Fades everything\n // outside the focus set. Matches the pattern used on /map and /db.\n const focusIds = useMemo(() => {\n if (selectedEdgeId) {\n const e = edges.find((x) => x.id === selectedEdgeId);\n return e ? new Set([e.source, e.target]) : null;\n }\n if (selectedId) {\n const s = new Set<string>([selectedId]);\n for (const e of edgePayload) {\n if (e.from === selectedId) s.add(e.to);\n if (e.to === selectedId) s.add(e.from);\n }\n return s;\n }\n if (circularOnly) return circularNodeIds;\n if (editsOnly && hasTouched) return new Set(touchedInfo.keys());\n return null;\n }, [selectedId, selectedEdgeId, circularOnly, circularNodeIds, edgePayload, edges, editsOnly, hasTouched, touchedInfo]);\n\n const displayNodes = useMemo(() => {\n if (!focusIds) return nodes;\n return nodes.map((n) => ({\n ...n,\n style: {\n ...n.style,\n opacity: focusIds.has(n.id) ? 1 : 0.15,\n transition: \"opacity 120ms\",\n },\n }));\n }, [nodes, focusIds]);\n\n const displayEdges = useMemo(() => {\n if (!selectedId && !selectedEdgeId && !circularOnly && !editsOnly) return edges;\n return edges.map((e) => {\n let on = false;\n if (selectedEdgeId) on = e.id === selectedEdgeId;\n else if (selectedId) on = e.source === selectedId || e.target === selectedId;\n else if (circularOnly) on = circularEdgeIds.has(e.id);\n // Focus-edits: keep only edges WITHIN the edited set bright; dim the rest so the\n // canvas isn't a wall of lines.\n else if (editsOnly) on = touchedInfo.has(e.source) && touchedInfo.has(e.target);\n return on\n ? { ...e, zIndex: 20, style: { ...e.style, opacity: 1, strokeWidth: 2 } }\n : { ...e, style: { ...e.style, opacity: 0.05 } };\n });\n }, [edges, selectedId, selectedEdgeId, circularOnly, circularEdgeIds, editsOnly, touchedInfo]);\n\n const circularCount = edgePayload.filter((e) => e.circular).length;\n\n // Detail panel: the selected file's import neighbours (from the live graph edges).\n const selectedImports = useMemo(\n () => (selectedId ? edgePayload.filter((e) => e.from === selectedId).map((e) => e.to) : []),\n [selectedId, edgePayload],\n );\n const selectedImportedBy = useMemo(\n () => (selectedId ? edgePayload.filter((e) => e.to === selectedId).map((e) => e.from) : []),\n [selectedId, edgePayload],\n );\n const panelOpen = selectedId !== null || (summaryOpen && hasTouched);\n const closePanel = useCallback(() => {\n setSelectedId(null);\n setSummaryOpen(false);\n setEditsOnly(false);\n }, []);\n\n if (!mounted) {\n return (\n <div className=\"flex h-screen w-full items-center justify-center text-sm text-muted-foreground\">\n Loading graph…\n </div>\n );\n }\n\n return (\n <div className=\"relative h-screen w-full\">\n <ReactFlow\n nodes={displayNodes}\n edges={displayEdges}\n nodeTypes={nodeTypes}\n onNodesChange={onNodesChange}\n onEdgesChange={onEdgesChange}\n onNodeClick={(_, node) => {\n setSelectedId(node.id);\n setSelectedEdgeId(null);\n }}\n onEdgeClick={(_, edge) => {\n setSelectedEdgeId(edge.id);\n setSelectedId(null);\n }}\n onPaneClick={() => {\n setSelectedId(null);\n setSelectedEdgeId(null);\n }}\n onInit={(inst) => {\n rfRef.current = inst;\n }}\n onNodeDragStop={(_, node) =>\n persistPos(node.id, node.position.x, node.position.y)\n }\n deleteKeyCode={null}\n colorMode=\"dark\"\n fitView\n minZoom={0.05}\n // Scroll pans the board; hold ⌘/Ctrl while scrolling to zoom (trackpad pinch still zooms).\n panOnScroll\n zoomActivationKeyCode={[\"Meta\", \"Control\"]}\n proOptions={{ hideAttribution: true }}\n >\n <Background gap={22} color=\"#2a2a32\" />\n <Controls\n position=\"bottom-right\"\n className=\"!overflow-hidden !rounded-xl !border !border-white/10 [&_button]:!border-white/10 [&_button]:!bg-card/70 [&_button]:!text-foreground [&_button]:!backdrop-blur\"\n />\n <MiniMap\n pannable\n zoomable\n position=\"bottom-left\"\n style={{ width: 140, height: 90 }}\n className=\"!rounded-xl !border !border-white/10 !bg-card/50 !backdrop-blur\"\n nodeColor={() => \"#555\"}\n />\n\n\n <Panel position=\"top-center\" className=\"glass rounded-full px-1 py-0.5\">\n <CanvasTabs\n active=\"FILES\"\n tabs={[\n { value: \"ROADMAP\", label: \"Roadmap\", href: \"/map?view=ROADMAP\" },\n { value: \"ARCHITECTURE\", label: \"Architecture\", href: \"/map?view=ARCHITECTURE\" },\n { value: \"FILES\", label: \"Files\", href: \"/map?view=FILES\" },\n { value: \"DATABASE\", label: \"Database\", href: \"/map?view=DATABASE\" },\n ]}\n />\n </Panel>\n\n <Panel\n position=\"top-right\"\n className=\"glass flex items-center gap-3 rounded-xl px-3 py-1.5 text-[11px]\"\n >\n <span className=\"text-muted-foreground\">\n {files.length} files · {edgePayload.length} imports\n </span>\n {circularCount > 0 && (\n <button\n type=\"button\"\n onClick={() => {\n setCircularOnly((b) => !b);\n setSelectedId(null);\n setSelectedEdgeId(null);\n }}\n title={\n circularOnly\n ? \"Show all imports\"\n : \"Show only files involved in import cycles\"\n }\n className={cn(\n \"flex items-center gap-1.5 rounded-md px-1.5 py-0.5 transition-colors\",\n circularOnly\n ? \"bg-red-500/15 text-red-200 ring-1 ring-red-400/40\"\n : \"text-red-300 hover:bg-red-500/10\",\n )}\n >\n <span\n aria-hidden\n className=\"inline-block h-0 w-5 border-t border-dashed\"\n style={{ borderColor: \"#ef4444\" }}\n />\n {circularCount} circular\n </button>\n )}\n {hasTouched && (\n <>\n <button\n type=\"button\"\n onClick={toggleEditsFocus}\n title={editsOnly ? \"Show all files again\" : \"Focus + zoom to the files edited this session\"}\n className={cn(\n \"flex items-center gap-1.5 rounded-md px-1.5 py-0.5 transition-colors\",\n editsOnly\n ? \"bg-teal-500/15 text-teal-200 ring-1 ring-teal-400/40\"\n : \"text-teal-300 hover:bg-teal-500/10\",\n )}\n >\n <Pencil className=\"size-3\" />\n {touchedInfo.size} edited\n </button>\n </>\n )}\n </Panel>\n </ReactFlow>\n\n {/* Detail panel — reuses the shared GlassPanel, right-docked like the roadmap/db\n DetailSidebar (NOT floating over the top nav). Shows the selected file's detail, or\n the \"edited this session\" summary when nothing is selected. */}\n {panelOpen && (\n <GlassPanel className=\"absolute bottom-3 right-3 top-16 z-10 flex w-72 flex-col rounded-2xl\">\n <div className=\"flex items-center justify-between border-b border-white/10 px-3.5 py-2.5\">\n <span className=\"text-[11px] font-semibold uppercase tracking-wide text-muted-foreground\">\n {selectedId ? \"File\" : \"Edited this session\"}\n </span>\n <button\n onClick={closePanel}\n title=\"Close panel\"\n className=\"rounded-md p-1 text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground\"\n >\n <X className=\"size-4\" />\n </button>\n </div>\n <div className=\"min-h-0 flex-1 overflow-y-auto p-3\">\n {selectedId ? (\n <div className=\"space-y-3\">\n <div>\n <div className=\"flex items-start gap-1.5\">\n <FileCode2 className=\"mt-0.5 size-4 shrink-0 text-muted-foreground\" />\n <h2 className=\"break-all text-sm font-semibold leading-tight\">\n {selectedId.slice(selectedId.lastIndexOf(\"/\") + 1)}\n </h2>\n </div>\n <div className=\"mt-0.5 break-all font-mono text-[10px] text-muted-foreground\">\n {selectedId}\n </div>\n </div>\n <div className=\"flex flex-wrap gap-1\">\n {(() => {\n const ti = touchedInfo.get(selectedId);\n return ti ? (\n <span className=\"rounded bg-teal-500/15 px-1.5 py-0.5 text-[10px] font-semibold text-teal-300\">\n edited {ti.count}×\n </span>\n ) : null;\n })()}\n {untested.has(selectedId) && (\n <span className=\"rounded bg-amber-500/15 px-1.5 py-0.5 text-[10px] font-semibold text-amber-300\">\n untested\n </span>\n )}\n </div>\n <button\n onClick={() =>\n fetch(`/api/open?path=${encodeURIComponent(selectedId)}`).catch(() => {})\n }\n className=\"w-full rounded-md border border-white/10 px-2 py-1.5 text-[11px] text-muted-foreground transition-colors hover:bg-white/[0.06] hover:text-foreground\"\n >\n Open in editor\n </button>\n <FileLinkList label=\"Imports\" paths={selectedImports} onPick={selectAndPan} />\n <FileLinkList label=\"Imported by\" paths={selectedImportedBy} onPick={selectAndPan} />\n </div>\n ) : (\n <ul className=\"space-y-0.5\">\n {editedList.map((e) => (\n <li key={e.path}>\n <button\n onClick={() => selectAndPan(e.path)}\n title={e.path}\n className=\"flex w-full items-center justify-between gap-2 rounded px-2 py-1 text-left transition-colors hover:bg-white/[0.06]\"\n >\n <span className=\"truncate text-[11px] text-foreground/90\">{e.label}</span>\n <span className=\"shrink-0 text-[9px] text-teal-300/80\">{e.count}×</span>\n </button>\n </li>\n ))}\n </ul>\n )}\n </div>\n </GlassPanel>\n )}\n </div>\n );\n}\n\n// A labelled, scrollable list of file paths (imports / imported-by) — each row jumps to that\n// file on the canvas. Shows nothing when empty.\nfunction FileLinkList({\n label,\n paths,\n onPick,\n}: {\n label: string;\n paths: string[];\n onPick: (path: string) => void;\n}) {\n if (!paths.length) return null;\n return (\n <div>\n <h3 className=\"mb-1 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground\">\n {label} ({paths.length})\n </h3>\n <ul className=\"space-y-0.5\">\n {paths.map((p) => (\n <li key={p}>\n <button\n onClick={() => onPick(p)}\n title={p}\n className=\"block w-full truncate rounded px-1.5 py-0.5 text-left font-mono text-[10px] text-muted-foreground transition-colors hover:bg-white/5 hover:text-foreground\"\n >\n {p.slice(p.lastIndexOf(\"/\") + 1)}\n </button>\n </li>\n ))}\n </ul>\n </div>\n );\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer} from \"d3-timer\";\nimport lcg from \"./lcg.js\";\n\nexport function x(d) {\n return d.x;\n}\n\nexport function y(d) {\n return d.y;\n}\n\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n var simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = new Map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\"),\n random = lcg();\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.forEach(function(force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(0.5 + i), angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes, random);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.forEach(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n randomSource: function(_) {\n return arguments.length ? (random = _, forces.forEach(initializeForce), simulation) : random;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.delete(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function(x, y, radius) {\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n\n if (radius == null) radius = Infinity;\n else radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\n","// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst a = 1664525;\nconst c = 1013904223;\nconst m = 4294967296; // 2^32\n\nexport default function() {\n let s = 1;\n return () => (s = (a * s + c) % m) / m;\n}\n","// Deterministic \"is this code tested?\" signal from the import graph — pure + client-safe\n// (no fs, no AI, no CLI). Drives the \"Test-Coverage Flags\" overlay: a source file is flagged\n// \"untested\" when NO test file imports it. AI-generated code is notoriously under-tested, so\n// surfacing the gap on the files canvas is a concrete, zero-cost quality cue.\n\n// A path is a test file if it lives under a tests/ dir OR ends in .test./.spec.<ext>.\nconst TEST_RE = /(^|\\/)tests?\\/|\\.(test|spec)\\.[jt]sx?$/i;\n\nexport function isTestFile(path: string): boolean {\n return TEST_RE.test(path);\n}\n\n// The set of (non-test) files that no test file imports — i.e. untested code. A file counts as\n// covered the moment any test file has an import edge to it.\nexport function untestedFiles(\n files: ReadonlyArray<string>,\n edges: ReadonlyArray<{ from: string; to: string }>,\n): Set<string> {\n const coveredTargets = new Set<string>();\n for (const e of edges) if (isTestFile(e.from)) coveredTargets.add(e.to);\n const out = new Set<string>();\n for (const f of files) if (!isTestFile(f) && !coveredTargets.has(f)) out.add(f);\n return out;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","export default function(d) {\n const x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n","export default function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0 || 1,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | (x < x0);\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z, y1 = y0 + z; break;\n case 1: x0 = x1 - z, y1 = y0 + z; break;\n case 2: x1 = x0 + z, y0 = y1 - z; break;\n case 3: x0 = x1 - z, y0 = y1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","export default function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","export default function(x, y) {\n var nodes, strength = 1;\n\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force() {\n var i,\n n = nodes.length,\n node,\n sx = 0,\n sy = 0;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], sx += node.x, sy += node.y;\n }\n\n for (sx = (sx / n - x) * strength, sy = (sy / n - y) * strength, i = 0; i < n; ++i) {\n node = nodes[i], node.x -= sx, node.y -= sy;\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n return force;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(random) {\n return (random() - 0.5) * 1e-6;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new Quad(node[3], xm, ym, x2, y2),\n new Quad(node[2], x1, ym, xm, y2),\n new Quad(node[1], xm, y1, x2, ym),\n new Quad(node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","import constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction index(d) {\n return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n var node = nodeById.get(nodeId);\n if (!node) throw new Error(\"node not found: \" + nodeId);\n return node;\n}\n\nexport default function(links) {\n var id = index,\n strength = defaultStrength,\n strengths,\n distance = constant(30),\n distances,\n nodes,\n count,\n bias,\n random,\n iterations = 1;\n\n if (links == null) links = [];\n\n function defaultStrength(link) {\n return 1 / Math.min(count[link.source.index], count[link.target.index]);\n }\n\n function force(alpha) {\n for (var k = 0, n = links.length; k < iterations; ++k) {\n for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n link = links[i], source = link.source, target = link.target;\n x = target.x + target.vx - source.x - source.vx || jiggle(random);\n y = target.y + target.vy - source.y - source.vy || jiggle(random);\n l = Math.sqrt(x * x + y * y);\n l = (l - distances[i]) / l * alpha * strengths[i];\n x *= l, y *= l;\n target.vx -= x * (b = bias[i]);\n target.vy -= y * b;\n source.vx += x * (b = 1 - b);\n source.vy += y * b;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n\n var i,\n n = nodes.length,\n m = links.length,\n nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d])),\n link;\n\n for (i = 0, count = new Array(n); i < m; ++i) {\n link = links[i], link.index = i;\n if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n count[link.source.index] = (count[link.source.index] || 0) + 1;\n count[link.target.index] = (count[link.target.index] || 0) + 1;\n }\n\n for (i = 0, bias = new Array(m); i < m; ++i) {\n link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n }\n\n strengths = new Array(m), initializeStrength();\n distances = new Array(m), initializeDistance();\n }\n\n function initializeStrength() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n strengths[i] = +strength(links[i], i, links);\n }\n }\n\n function initializeDistance() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n distances[i] = +distance(links[i], i, links);\n }\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.links = function(_) {\n return arguments.length ? (links = _, initialize(), force) : links;\n };\n\n force.id = function(_) {\n return arguments.length ? (id = _, force) : id;\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n };\n\n force.distance = function(_) {\n return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n };\n\n return force;\n}\n","import {quadtree} from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction x(d) {\n return d.x + d.vx;\n}\n\nfunction y(d) {\n return d.y + d.vy;\n}\n\nexport default function(radius) {\n var nodes,\n radii,\n random,\n strength = 1,\n iterations = 1;\n\n if (typeof radius !== \"function\") radius = constant(radius == null ? 1 : +radius);\n\n function force() {\n var i, n = nodes.length,\n tree,\n node,\n xi,\n yi,\n ri,\n ri2;\n\n for (var k = 0; k < iterations; ++k) {\n tree = quadtree(nodes, x, y).visitAfter(prepare);\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n ri = radii[node.index], ri2 = ri * ri;\n xi = node.x + node.vx;\n yi = node.y + node.vy;\n tree.visit(apply);\n }\n }\n\n function apply(quad, x0, y0, x1, y1) {\n var data = quad.data, rj = quad.r, r = ri + rj;\n if (data) {\n if (data.index > node.index) {\n var x = xi - data.x - data.vx,\n y = yi - data.y - data.vy,\n l = x * x + y * y;\n if (l < r * r) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n l = (r - (l = Math.sqrt(l))) / l * strength;\n node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n node.vy += (y *= l) * r;\n data.vx -= x * (r = 1 - r);\n data.vy -= y * r;\n }\n }\n return;\n }\n return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;\n }\n }\n\n function prepare(quad) {\n if (quad.data) return quad.r = radii[quad.data.index];\n for (var i = quad.r = 0; i < 4; ++i) {\n if (quad[i] && quad[i].r > quad.r) {\n quad.r = quad[i].r;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n radii = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n return force;\n}\n","import {quadtree} from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\nimport {x, y} from \"./simulation.js\";\n\nexport default function() {\n var nodes,\n node,\n random,\n alpha,\n strength = constant(-30),\n strengths,\n distanceMin2 = 1,\n distanceMax2 = Infinity,\n theta2 = 0.81;\n\n function force(_) {\n var i, n = nodes.length, tree = quadtree(nodes, x, y).visitAfter(accumulate);\n for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n strengths = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n }\n\n function accumulate(quad) {\n var strength = 0, q, c, weight = 0, x, y, i;\n\n // For internal nodes, accumulate forces from child quadrants.\n if (quad.length) {\n for (x = y = i = 0; i < 4; ++i) {\n if ((q = quad[i]) && (c = Math.abs(q.value))) {\n strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n }\n }\n quad.x = x / weight;\n quad.y = y / weight;\n }\n\n // For leaf nodes, accumulate forces from coincident quadrants.\n else {\n q = quad;\n q.x = q.data.x;\n q.y = q.data.y;\n do strength += strengths[q.data.index];\n while (q = q.next);\n }\n\n quad.value = strength;\n }\n\n function apply(quad, x1, _, x2) {\n if (!quad.value) return true;\n\n var x = quad.x - node.x,\n y = quad.y - node.y,\n w = x2 - x1,\n l = x * x + y * y;\n\n // Apply the Barnes-Hut approximation if possible.\n // Limit forces for very close nodes; randomize direction if coincident.\n if (w * w / theta2 < l) {\n if (l < distanceMax2) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n node.vx += x * quad.value * alpha / l;\n node.vy += y * quad.value * alpha / l;\n }\n return true;\n }\n\n // Otherwise, process points directly.\n else if (quad.length || l >= distanceMax2) return;\n\n // Limit forces for very close nodes; randomize direction if coincident.\n if (quad.data !== node || quad.next) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n }\n\n do if (quad.data !== node) {\n w = strengths[quad.data.index] * alpha / l;\n node.vx += x * w;\n node.vy += y * w;\n } while (quad = quad.next);\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.distanceMin = function(_) {\n return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n };\n\n force.distanceMax = function(_) {\n return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n };\n\n force.theta = function(_) {\n return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n };\n\n return force;\n}\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M4 12.15V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-3.35',\n key: '1wthlu',\n },\n ],\n ['path', { d: 'M14 2v5a1 1 0 0 0 1 1h5', key: 'wfsgrz' }],\n ['path', { d: 'm5 16-3 3 3 3', key: '331omg' }],\n ['path', { d: 'm9 22 3-3-3-3', key: 'lsp7cz' }],\n];\n\n/**\n * @component @name FileCodeCorner\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNCAxMi4xNVY0YTIgMiAwIDAgMSAyLTJoOGEyLjQgMi40IDAgMCAxIDEuNzA2LjcwNmwzLjU4OCAzLjU4OEEyLjQgMi40IDAgMCAxIDIwIDh2MTJhMiAyIDAgMCAxLTIgMmgtMy4zNSIgLz4KICA8cGF0aCBkPSJNMTQgMnY1YTEgMSAwIDAgMCAxIDFoNSIgLz4KICA8cGF0aCBkPSJtNSAxNi0zIDMgMyAzIiAvPgogIDxwYXRoIGQ9Im05IDIyIDMtMy0zLTMiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/file-code-corner\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst FileCodeCorner = createLucideIcon('file-code-corner', __iconNode);\n\nexport default FileCodeCorner;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z',\n key: '1a8usu',\n },\n ],\n ['path', { d: 'm15 5 4 4', key: '1mk7zo' }],\n];\n\n/**\n * @component @name Pencil\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEuMTc0IDYuODEyYTEgMSAwIDAgMC0zLjk4Ni0zLjk4N0wzLjg0MiAxNi4xNzRhMiAyIDAgMCAwLS41LjgzbC0xLjMyMSA0LjM1MmEuNS41IDAgMCAwIC42MjMuNjIybDQuMzUzLTEuMzJhMiAyIDAgMCAwIC44My0uNDk3eiIgLz4KICA8cGF0aCBkPSJtMTUgNSA0IDQiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/pencil\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Pencil = createLucideIcon('pencil', __iconNode);\n\nexport default Pencil;\n","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\n\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n"],"names":["x","y","nodes","strength","force","i","length","node","n","sx","sy","arguments","_","initialize"],"mappings":"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","ignoreList":[1,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]}
@@ -0,0 +1,3 @@
1
+ module.exports=[56379,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(15290),e=a.i(83864);let f="curl -fsSL https://trybeacon.sh/install.sh | sh",g=[{n:"01",title:"Install",body:"One binary. No account, nothing to configure.",cmd:(0,b.jsx)("span",{className:"text-foreground",children:f})},{n:"02",title:"Run it in your repo",body:"Registers the repo, starts one shared local server, and opens the panel in your browser.",cmd:(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"w-signal",children:"$"})," ",(0,b.jsx)("span",{className:"text-foreground",children:"beacon"})]})},{n:"03",title:"Map your codebase",body:(0,b.jsxs)(b.Fragment,{children:["In your terminal session, run ",(0,b.jsx)("span",{className:"w-mono text-foreground",children:"/beacon-init"}),". Beacon reads the repo and draws its architecture, schema, and roadmap."]}),cmd:(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"text-foreground",children:"/beacon-init"})," ",(0,b.jsx)("span",{className:"w-muted",children:"· beacon doctor"})]})},{n:"04",title:"Propose your first plan",body:(0,b.jsxs)(b.Fragment,{children:["Ask the agent to plan a feature. It calls ",(0,b.jsx)("span",{className:"w-mono text-foreground",children:"beacon_propose_plan"})," ","and the plan renders live on the ",(0,b.jsx)("span",{className:"text-foreground",children:"/plan"})," canvas — features, tables, and endpoints."]})},{n:"05",title:"Review & close the loop",body:(0,b.jsxs)(b.Fragment,{children:["Annotate inline, edit the boards, then ",(0,b.jsx)("span",{className:"text-foreground",children:"Approve"}),","," ",(0,b.jsx)("span",{className:"text-foreground",children:"Submit feedback"}),", or ",(0,b.jsx)("span",{className:"text-foreground",children:"Discard"}),". Your verdict flows straight back to your terminal session."]})}],h=[{label:"Reuse first",body:"Beacon blocks duplicate features — check the map before you create."},{label:"Design data first",body:(0,b.jsxs)(b.Fragment,{children:["Plan tables and endpoints before code; review the schema as a draft on"," ",(0,b.jsx)("span",{className:"text-foreground",children:"/db"}),"."]})},{label:"Close every loop",body:"Register finished work so the map and context stay accurate next session."}],i={boxShadow:"0 0 0 1px var(--border), 0 0 24px -9px rgba(255,122,69,0.75)"};a.s(["Landing",0,function(){let a=(0,c.useRef)(null),[j,k]=(0,c.useState)(!1);return(0,c.useEffect)(()=>{let b=new IntersectionObserver(a=>{a.forEach(a=>{a.isIntersecting&&(a.target.classList.add("in"),b.unobserve(a.target))})},{threshold:.12});return a.current?.querySelectorAll(".w-reveal").forEach(a=>b.observe(a)),()=>b.disconnect()},[]),(0,b.jsxs)("div",{className:"welcome",ref:a,children:[(0,b.jsx)("div",{className:"welcome-bg","aria-hidden":!0}),(0,b.jsx)("header",{className:"fixed inset-x-0 top-0 z-50",children:(0,b.jsx)("div",{className:"mx-auto max-w-6xl px-6",children:(0,b.jsxs)("div",{className:"w-load mt-4 glass flex items-center justify-between rounded-full py-2.5 pl-5 pr-3",style:{animationDelay:".05s"},children:[(0,b.jsxs)(d.default,{href:"#top",className:"flex items-center gap-2.5",children:[(0,b.jsx)(e.BeaconMark,{size:20,className:"text-foreground"}),(0,b.jsx)("span",{className:"font-semibold tracking-tight",children:"Beacon"})]}),(0,b.jsxs)("nav",{className:"flex items-center gap-6 text-sm w-muted",children:[(0,b.jsx)("a",{href:"#start",className:"transition-colors hover:text-foreground",children:"How it works"}),(0,b.jsx)("a",{href:"#",className:"transition-colors hover:text-foreground",children:"Docs"})]})]})})}),(0,b.jsx)("span",{id:"top"}),(0,b.jsxs)("section",{className:"flex min-h-screen flex-col items-center px-6 pb-12 pt-28 text-center",children:[(0,b.jsxs)("div",{className:"w-load glass-soft mb-6 flex items-center gap-2 rounded-full px-3.5 py-1.5",style:{animationDelay:".12s"},children:[(0,b.jsx)("span",{className:"w-live h-1.5 w-1.5 rounded-full",style:{background:"#ff7a45",boxShadow:"0 0 8px #ff7a45"}}),(0,b.jsx)("span",{className:"w-mono w-eyebrow w-muted",children:"Local · no account · no API key"})]}),(0,b.jsxs)("h1",{className:"w-load max-w-4xl font-semibold text-[clamp(2.25rem,5vw,3.6rem)]",style:{letterSpacing:"-0.025em",lineHeight:1.06,animationDelay:".18s"},children:["Plan features on a canvas,",(0,b.jsx)("br",{}),"not in a wall of text."]}),(0,b.jsx)("p",{className:"w-load w-muted mt-5 max-w-xl text-[1.02rem] leading-relaxed",style:{animationDelay:".26s"},children:"Beacon is the visual planning surface for the coding agent in your terminal. Your session proposes the plan — you review, annotate, and approve with a click."}),(0,b.jsxs)("div",{className:"w-load mt-8 w-full max-w-2xl",style:{animationDelay:".34s"},children:[(0,b.jsxs)("div",{className:"glass overflow-hidden rounded-lg text-left",style:{boxShadow:"0 24px 70px -22px rgba(0,0,0,.85), inset 0 1px 0 oklch(1 0 0 /.08), 0 18px 60px -30px rgba(255,122,69,.4)"},children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 border-b px-4 py-3",style:{borderColor:"var(--border)"},children:[(0,b.jsx)("span",{className:"h-3 w-3 rounded-full",style:{background:"#ff7a45",boxShadow:"0 0 7px rgba(255,122,69,.7)"}}),(0,b.jsx)("span",{className:"h-3 w-3 rounded-full",style:{background:"oklch(1 0 0 / .16)"}}),(0,b.jsx)("span",{className:"h-3 w-3 rounded-full",style:{background:"oklch(1 0 0 / .16)"}}),(0,b.jsx)("span",{className:"w-mono ml-2 text-[0.72rem] w-muted",children:"install — bash"})]}),(0,b.jsxs)("div",{className:"flex items-center gap-4 px-5 py-5",children:[(0,b.jsxs)("code",{className:"w-mono w-scrollbar-none flex-1 overflow-x-auto whitespace-nowrap text-[0.95rem]",children:[(0,b.jsx)("span",{className:"w-signal select-none",children:"$"}),(0,b.jsx)("span",{className:"ml-2",children:f}),(0,b.jsx)("span",{className:"w-caret ml-1 inline-block h-4 w-2 align-middle",style:{background:"#ff7a45"}})]}),(0,b.jsx)("button",{onClick:function(){navigator.clipboard?.writeText(f),k(!0),setTimeout(()=>k(!1),1600)},className:"glass-soft w-hover grid h-10 w-10 shrink-0 place-items-center rounded-md","aria-label":"Copy install command",children:j?(0,b.jsx)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"#ff7a45",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:(0,b.jsx)("path",{d:"M20 6 9 17l-5-5"})}):(0,b.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,b.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2"}),(0,b.jsx)("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]})})]})]}),(0,b.jsxs)("p",{className:"w-mono w-muted mt-4 text-[0.8rem]",children:["then run ",(0,b.jsx)("span",{className:"text-foreground",children:"beacon"})," inside any repo"]})]}),(0,b.jsxs)("a",{href:"#start",className:"w-load mt-auto pt-16 flex flex-col items-center gap-2 w-muted transition-colors hover:text-foreground",style:{animationDelay:".6s"},children:[(0,b.jsx)("span",{className:"w-mono w-eyebrow",children:"How it works"}),(0,b.jsx)("svg",{className:"w-cue",width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,b.jsx)("path",{d:"m6 9 6 6 6-6"})})]})]}),(0,b.jsxs)("section",{id:"start",className:"px-6 py-28",children:[(0,b.jsxs)("div",{className:"mx-auto max-w-2xl",children:[(0,b.jsxs)("div",{className:"w-reveal mb-16 text-center",children:[(0,b.jsx)("p",{className:"w-mono w-eyebrow w-signal mb-4",children:"Get the best out of Beacon"}),(0,b.jsx)("h2",{className:"text-[clamp(1.9rem,4vw,2.75rem)] font-semibold tracking-tight",children:"From install to your first approved plan"}),(0,b.jsx)("div",{className:"w-accent-line mx-auto mt-6 h-px w-40"})]}),(0,b.jsxs)("ol",{className:"relative",children:[(0,b.jsx)("span",{className:"w-beam absolute bottom-7 left-[1.45rem] top-5 w-px","aria-hidden":!0}),g.map((a,c)=>(0,b.jsxs)("li",{className:`w-reveal relative pl-[4.75rem] ${c<g.length-1?"pb-6":""}`,children:[(0,b.jsx)("span",{className:"w-mono glass absolute left-0 top-0 grid h-[2.9rem] w-[2.9rem] place-items-center rounded-lg text-[0.82rem] font-semibold text-foreground",style:i,children:a.n}),(0,b.jsxs)("div",{className:"glass w-hover rounded-lg p-5",children:[(0,b.jsx)("h3",{className:"mb-1.5 font-semibold",children:a.title}),(0,b.jsx)("p",{className:`w-muted text-[0.92rem] leading-relaxed ${a.cmd?"mb-3":""}`,children:a.body}),a.cmd&&(0,b.jsx)("code",{className:"w-mono glass-soft inline-block rounded-md px-3 py-1.5 text-[0.78rem]",children:a.cmd})]})]},a.n))]})]}),(0,b.jsx)("div",{className:"mx-auto mt-28 grid max-w-5xl gap-5 md:grid-cols-3",children:h.map(a=>(0,b.jsxs)("div",{className:"w-reveal glass w-hover rounded-lg p-6",children:[(0,b.jsx)("p",{className:"w-mono w-eyebrow w-signal mb-3",children:a.label}),(0,b.jsx)("p",{className:"w-muted text-[0.95rem] leading-relaxed",children:a.body})]},a.label))})]}),(0,b.jsx)("footer",{className:"px-6 pb-12 pt-8",children:(0,b.jsxs)("div",{className:"mx-auto max-w-5xl",children:[(0,b.jsx)("div",{className:"w-accent-line mb-8 h-px w-full opacity-60"}),(0,b.jsxs)("div",{className:"flex flex-col items-center justify-between gap-5 md:flex-row",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,b.jsx)(e.BeaconMark,{size:26,className:"text-foreground"}),(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"font-semibold leading-tight",children:"Beacon"}),(0,b.jsx)("p",{className:"w-mono w-muted text-[0.72rem]",children:"the visual planning surface for your terminal"})]})]}),(0,b.jsxs)("nav",{className:"flex items-center gap-6 text-sm w-muted",children:[(0,b.jsx)("a",{href:"#",className:"transition-colors hover:text-foreground",children:"Docs"}),(0,b.jsx)("a",{href:"#",className:"transition-colors hover:text-foreground",children:"Changelog"})]}),(0,b.jsxs)("p",{className:"w-mono w-muted text-[0.72rem]",children:["Created by"," ",(0,b.jsxs)("a",{href:"https://www.instagram.com/wenzorithelly/",target:"_blank",rel:"noreferrer",className:"w-signal inline-flex items-center gap-1 underline decoration-dotted underline-offset-2 transition-opacity hover:opacity-80",children:[(0,b.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":!0,children:[(0,b.jsx)("rect",{x:"2",y:"2",width:"20",height:"20",rx:"5",ry:"5"}),(0,b.jsx)("path",{d:"M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z"}),(0,b.jsx)("line",{x1:"17.5",y1:"6.5",x2:"17.51",y2:"6.5"})]}),"Wenzo"]}),(0,b.jsx)("span",{className:"mx-2 opacity-40",children:"·"}),"© 2026 Beacon"]})]})]})})]})}])}];
2
+
3
+ //# sourceMappingURL=components_landing_landing_tsx_1_9k5z7._.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../components/landing/landing.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useRef, useState } from \"react\";\nimport Link from \"next/link\";\nimport { BeaconMark } from \"@/components/beacon-mark\";\nimport \"./landing.css\";\n\nconst INSTALL = \"curl -fsSL https://trybeacon.sh/install.sh | sh\";\n\nconst STEPS: { n: string; title: string; body: React.ReactNode; cmd?: React.ReactNode }[] = [\n {\n n: \"01\",\n title: \"Install\",\n body: \"One binary. No account, nothing to configure.\",\n cmd: <span className=\"text-foreground\">{INSTALL}</span>,\n },\n {\n n: \"02\",\n title: \"Run it in your repo\",\n body: \"Registers the repo, starts one shared local server, and opens the panel in your browser.\",\n cmd: (\n <>\n <span className=\"w-signal\">$</span> <span className=\"text-foreground\">beacon</span>\n </>\n ),\n },\n {\n n: \"03\",\n title: \"Map your codebase\",\n body: (\n <>\n In your terminal session, run <span className=\"w-mono text-foreground\">/beacon-init</span>. Beacon reads the\n repo and draws its architecture, schema, and roadmap.\n </>\n ),\n cmd: (\n <>\n <span className=\"text-foreground\">/beacon-init</span> <span className=\"w-muted\">· beacon doctor</span>\n </>\n ),\n },\n {\n n: \"04\",\n title: \"Propose your first plan\",\n body: (\n <>\n Ask the agent to plan a feature. It calls <span className=\"w-mono text-foreground\">beacon_propose_plan</span>{\" \"}\n and the plan renders live on the <span className=\"text-foreground\">/plan</span> canvas — features, tables, and\n endpoints.\n </>\n ),\n },\n {\n n: \"05\",\n title: \"Review & close the loop\",\n body: (\n <>\n Annotate inline, edit the boards, then <span className=\"text-foreground\">Approve</span>,{\" \"}\n <span className=\"text-foreground\">Submit&nbsp;feedback</span>, or <span className=\"text-foreground\">Discard</span>.\n Your verdict flows straight back to your terminal session.\n </>\n ),\n },\n];\n\nconst TIPS = [\n { label: \"Reuse first\", body: \"Beacon blocks duplicate features — check the map before you create.\" },\n {\n label: \"Design data first\",\n body: (\n <>\n Plan tables and endpoints before code; review the schema as a draft on{\" \"}\n <span className=\"text-foreground\">/db</span>.\n </>\n ),\n },\n { label: \"Close every loop\", body: \"Register finished work so the map and context stay accurate next session.\" },\n];\n\nconst badgeGlow = {\n boxShadow: \"0 0 0 1px var(--border), 0 0 24px -9px rgba(255,122,69,0.75)\",\n} as const;\n\nexport function Landing() {\n const rootRef = useRef<HTMLDivElement>(null);\n const [copied, setCopied] = useState(false);\n\n useEffect(() => {\n const io = new IntersectionObserver(\n (entries) => {\n entries.forEach((e) => {\n if (e.isIntersecting) {\n e.target.classList.add(\"in\");\n io.unobserve(e.target);\n }\n });\n },\n { threshold: 0.12 },\n );\n rootRef.current?.querySelectorAll(\".w-reveal\").forEach((el) => io.observe(el));\n return () => io.disconnect();\n }, []);\n\n function copyInstall() {\n navigator.clipboard?.writeText(INSTALL);\n setCopied(true);\n setTimeout(() => setCopied(false), 1600);\n }\n\n return (\n <div className=\"welcome\" ref={rootRef}>\n <div className=\"welcome-bg\" aria-hidden />\n\n {/* ===== nav ===== */}\n <header className=\"fixed inset-x-0 top-0 z-50\">\n <div className=\"mx-auto max-w-6xl px-6\">\n <div\n className=\"w-load mt-4 glass flex items-center justify-between rounded-full py-2.5 pl-5 pr-3\"\n style={{ animationDelay: \".05s\" }}\n >\n <Link href=\"#top\" className=\"flex items-center gap-2.5\">\n <BeaconMark size={20} className=\"text-foreground\" />\n <span className=\"font-semibold tracking-tight\">Beacon</span>\n </Link>\n <nav className=\"flex items-center gap-6 text-sm w-muted\">\n <a href=\"#start\" className=\"transition-colors hover:text-foreground\">\n How it works\n </a>\n <a href=\"#\" className=\"transition-colors hover:text-foreground\">\n Docs\n </a>\n </nav>\n </div>\n </div>\n </header>\n\n <span id=\"top\" />\n\n {/* ===== hero ===== */}\n <section className=\"flex min-h-screen flex-col items-center px-6 pb-12 pt-28 text-center\">\n <div\n className=\"w-load glass-soft mb-6 flex items-center gap-2 rounded-full px-3.5 py-1.5\"\n style={{ animationDelay: \".12s\" }}\n >\n <span\n className=\"w-live h-1.5 w-1.5 rounded-full\"\n style={{ background: \"#ff7a45\", boxShadow: \"0 0 8px #ff7a45\" }}\n />\n <span className=\"w-mono w-eyebrow w-muted\">Local · no account · no API key</span>\n </div>\n\n <h1\n className=\"w-load max-w-4xl font-semibold text-[clamp(2.25rem,5vw,3.6rem)]\"\n style={{ letterSpacing: \"-0.025em\", lineHeight: 1.06, animationDelay: \".18s\" }}\n >\n Plan features on a canvas,\n <br />\n not in a wall of text.\n </h1>\n\n <p\n className=\"w-load w-muted mt-5 max-w-xl text-[1.02rem] leading-relaxed\"\n style={{ animationDelay: \".26s\" }}\n >\n Beacon is the visual planning surface for the coding agent in your terminal. Your session proposes the plan —\n you review, annotate, and approve with a click.\n </p>\n\n {/* terminal */}\n <div className=\"w-load mt-8 w-full max-w-2xl\" style={{ animationDelay: \".34s\" }}>\n <div\n className=\"glass overflow-hidden rounded-lg text-left\"\n style={{\n boxShadow:\n \"0 24px 70px -22px rgba(0,0,0,.85), inset 0 1px 0 oklch(1 0 0 /.08), 0 18px 60px -30px rgba(255,122,69,.4)\",\n }}\n >\n <div className=\"flex items-center gap-2 border-b px-4 py-3\" style={{ borderColor: \"var(--border)\" }}>\n <span\n className=\"h-3 w-3 rounded-full\"\n style={{ background: \"#ff7a45\", boxShadow: \"0 0 7px rgba(255,122,69,.7)\" }}\n />\n <span className=\"h-3 w-3 rounded-full\" style={{ background: \"oklch(1 0 0 / .16)\" }} />\n <span className=\"h-3 w-3 rounded-full\" style={{ background: \"oklch(1 0 0 / .16)\" }} />\n <span className=\"w-mono ml-2 text-[0.72rem] w-muted\">install — bash</span>\n </div>\n <div className=\"flex items-center gap-4 px-5 py-5\">\n <code className=\"w-mono w-scrollbar-none flex-1 overflow-x-auto whitespace-nowrap text-[0.95rem]\">\n <span className=\"w-signal select-none\">$</span>\n <span className=\"ml-2\">{INSTALL}</span>\n <span className=\"w-caret ml-1 inline-block h-4 w-2 align-middle\" style={{ background: \"#ff7a45\" }} />\n </code>\n <button\n onClick={copyInstall}\n className=\"glass-soft w-hover grid h-10 w-10 shrink-0 place-items-center rounded-md\"\n aria-label=\"Copy install command\"\n >\n {copied ? (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#ff7a45\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n ) : (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" />\n <path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\" />\n </svg>\n )}\n </button>\n </div>\n </div>\n <p className=\"w-mono w-muted mt-4 text-[0.8rem]\">\n then run <span className=\"text-foreground\">beacon</span> inside any repo\n </p>\n </div>\n\n <a\n href=\"#start\"\n className=\"w-load mt-auto pt-16 flex flex-col items-center gap-2 w-muted transition-colors hover:text-foreground\"\n style={{ animationDelay: \".6s\" }}\n >\n <span className=\"w-mono w-eyebrow\">How it works</span>\n <svg className=\"w-cue\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n </a>\n </section>\n\n {/* ===== onboarding ===== */}\n <section id=\"start\" className=\"px-6 py-28\">\n <div className=\"mx-auto max-w-2xl\">\n <div className=\"w-reveal mb-16 text-center\">\n <p className=\"w-mono w-eyebrow w-signal mb-4\">Get the best out of Beacon</p>\n <h2 className=\"text-[clamp(1.9rem,4vw,2.75rem)] font-semibold tracking-tight\">\n From install to your first approved plan\n </h2>\n <div className=\"w-accent-line mx-auto mt-6 h-px w-40\" />\n </div>\n\n <ol className=\"relative\">\n <span className=\"w-beam absolute bottom-7 left-[1.45rem] top-5 w-px\" aria-hidden />\n {STEPS.map((s, i) => (\n <li\n key={s.n}\n className={`w-reveal relative pl-[4.75rem] ${i < STEPS.length - 1 ? \"pb-6\" : \"\"}`}\n >\n <span\n className=\"w-mono glass absolute left-0 top-0 grid h-[2.9rem] w-[2.9rem] place-items-center rounded-lg text-[0.82rem] font-semibold text-foreground\"\n style={badgeGlow}\n >\n {s.n}\n </span>\n <div className=\"glass w-hover rounded-lg p-5\">\n <h3 className=\"mb-1.5 font-semibold\">{s.title}</h3>\n <p className={`w-muted text-[0.92rem] leading-relaxed ${s.cmd ? \"mb-3\" : \"\"}`}>{s.body}</p>\n {s.cmd && (\n <code className=\"w-mono glass-soft inline-block rounded-md px-3 py-1.5 text-[0.78rem]\">{s.cmd}</code>\n )}\n </div>\n </li>\n ))}\n </ol>\n </div>\n\n {/* tips */}\n <div className=\"mx-auto mt-28 grid max-w-5xl gap-5 md:grid-cols-3\">\n {TIPS.map((t) => (\n <div key={t.label} className=\"w-reveal glass w-hover rounded-lg p-6\">\n <p className=\"w-mono w-eyebrow w-signal mb-3\">{t.label}</p>\n <p className=\"w-muted text-[0.95rem] leading-relaxed\">{t.body}</p>\n </div>\n ))}\n </div>\n </section>\n\n {/* ===== footer ===== */}\n <footer className=\"px-6 pb-12 pt-8\">\n <div className=\"mx-auto max-w-5xl\">\n <div className=\"w-accent-line mb-8 h-px w-full opacity-60\" />\n <div className=\"flex flex-col items-center justify-between gap-5 md:flex-row\">\n <div className=\"flex items-center gap-2.5\">\n <BeaconMark size={26} className=\"text-foreground\" />\n <div>\n <p className=\"font-semibold leading-tight\">Beacon</p>\n <p className=\"w-mono w-muted text-[0.72rem]\">the visual planning surface for your terminal</p>\n </div>\n </div>\n <nav className=\"flex items-center gap-6 text-sm w-muted\">\n <a href=\"#\" className=\"transition-colors hover:text-foreground\">Docs</a>\n <a href=\"#\" className=\"transition-colors hover:text-foreground\">Changelog</a>\n </nav>\n <p className=\"w-mono w-muted text-[0.72rem]\">\n Created by{\" \"}\n <a\n href=\"https://www.instagram.com/wenzorithelly/\"\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"w-signal inline-flex items-center gap-1 underline decoration-dotted underline-offset-2 transition-opacity hover:opacity-80\"\n >\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden\n >\n <rect x=\"2\" y=\"2\" width=\"20\" height=\"20\" rx=\"5\" ry=\"5\" />\n <path d=\"M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z\" />\n <line x1=\"17.5\" y1=\"6.5\" x2=\"17.51\" y2=\"6.5\" />\n </svg>\n Wenzo\n </a>\n <span className=\"mx-2 opacity-40\">·</span>© 2026 Beacon\n </p>\n </div>\n </div>\n </footer>\n </div>\n );\n}\n"],"names":["INSTALL","STEPS","n","title","body","cmd","className","TIPS","label","badgeGlow","boxShadow","Landing","rootRef","copied","setCopied","io","IntersectionObserver","entries","forEach","e","isIntersecting","target","classList","add","unobserve","threshold","current","querySelectorAll","el","observe","disconnect","copyInstall","navigator","clipboard","writeText","setTimeout","ref","style","animationDelay","href","size","id","background","letterSpacing","lineHeight","borderColor","onClick","width","height","viewBox","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","d","x","y","rx","map","s","i","length","t","rel","ry","x1","y1","x2","y2"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ module.exports=[65250,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(80180),e=a.i(52562),f=a.i(32241),g=a.i(27061),h=a.i(64831);let i=(0,h.default)("send",[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]]);var j=a.i(62140);let k=(0,h.default)("message-square",[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]]);var l=a.i(60488);let m=(0,h.default)("archive",[["rect",{width:"20",height:"5",x:"2",y:"3",rx:"1",key:"1wp1u1"}],["path",{d:"M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8",key:"1s80jp"}],["path",{d:"M10 12h4",key:"a56b0p"}]]),n=(0,h.default)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);var o=a.i(86461),p=a.i(73819),q=a.i(94478),r=a.i(74215),s=a.i(50944),t=a.i(54520),u=a.i(74212),v=a.i(9728),w=a.i(68866),x=a.i(97895),y=a.i(24463);function z({markdown:a,round:d,onApi:f,hideSubmit:g=!1,getExtraSubmitPayload:h}){let[j,k]=(0,c.useState)([]),[l,m]=(0,c.useState)(""),[n,o]=(0,c.useState)(!1),[p,q]=(0,c.useState)(null),[s,t]=(0,c.useState)(null),[y,B]=(0,c.useState)(null),[D,E]=(0,c.useState)(!1),[F,G]=(0,c.useState)(!1),H=(0,c.useRef)(null),I=(0,c.useRef)(null);(0,c.useEffect)(()=>{let a=!0;return(async()=>{try{let b=await fetch("/api/plan/annotations",{cache:"no-store",headers:(0,u.wsHeaders)((0,u.currentPlanWs)())});if(!b.ok)return;let c=await b.json();if(!a)return;k(c.annotations??[]),m(c.globalComment??""),G(!!c.submitted)}catch{}})(),()=>{a=!1}},[a,d]),(0,c.useEffect)(()=>{if(F)return;let a=setTimeout(()=>{fetch("/api/plan/annotations",{method:"PUT",headers:{"content-type":"application/json",...(0,u.wsHeaders)((0,u.currentPlanWs)())},body:JSON.stringify({annotations:j,globalComment:l})}).catch(()=>{})},400);return()=>clearTimeout(a)},[j,l,F]);let J=(0,c.useCallback)(()=>{let a=window.getSelection();if(!a||a.isCollapsed)return void q(null);let b=a.toString().trim();if(!b)return void q(null);if(!H.current?.contains(a.anchorNode))return;let c=a.getRangeAt(0).getBoundingClientRect();q({x:c.right+window.scrollX,y:c.top+window.scrollY,excerpt:b})},[]);(0,c.useEffect)(()=>{let a=()=>setTimeout(J,0);return document.addEventListener("mouseup",a),document.addEventListener("selectionchange",a),()=>{document.removeEventListener("mouseup",a),document.removeEventListener("selectionchange",a)}},[J]);let K=(0,c.useCallback)((a,b="comment",c="")=>{let d=`a-${Date.now()}-${Math.floor(1e6*Math.random())}`;k(e=>[...e,{id:d,excerpt:a,comment:c,kind:b}]),"comment"===b&&B(d),q(null),window.getSelection()?.removeAllRanges()},[]);(0,c.useEffect)(()=>{let a=a=>{let b=window.getSelection();if(!b||b.isCollapsed)return;let c=b.toString().trim();if(!c||!H.current?.contains(b.anchorNode))return;let d=document.activeElement;if(d&&/^(TEXTAREA|INPUT)$/.test(d.tagName)||!(1===a.key.length&&!a.metaKey&&!a.ctrlKey&&!a.altKey))return;a.preventDefault();let e=b.getRangeAt(0).getBoundingClientRect();t({x:e.right+window.scrollX,y:e.top+window.scrollY,excerpt:c,seed:a.key}),q(null),window.getSelection()?.removeAllRanges()};return document.addEventListener("keydown",a),()=>document.removeEventListener("keydown",a)},[]),(0,c.useEffect)(()=>{if(!n)return;let a=a=>{let b=a.target;!b||I.current?.contains(b)||b.closest("[data-overall-toggle]")||o(!1)},b=a=>{"Escape"===a.key&&o(!1)};return document.addEventListener("mousedown",a),document.addEventListener("keydown",b),()=>{document.removeEventListener("mousedown",a),document.removeEventListener("keydown",b)}},[n]);let L=(a,b)=>k(c=>c.map(c=>c.id===a?{...c,comment:b}:c)),M=a=>k(b=>b.filter(b=>b.id!==a)),N=()=>{k([]),m(""),o(!1),fetch("/api/plan/annotations",{method:"DELETE",headers:(0,u.wsHeaders)((0,u.currentPlanWs)())}).catch(()=>{})},O=async()=>{if(!D){E(!0);try{let a=h?.()??{};(await fetch("/api/plan/annotations",{method:"POST",headers:{"content-type":"application/json",...(0,u.wsHeaders)((0,u.currentPlanWs)())},body:JSON.stringify({annotations:j,globalComment:l,...a})})).ok&&G(!0)}finally{E(!1)}}},P=(0,c.useMemo)(()=>j.filter(a=>"deletion"===a.kind||a.comment.trim()).length+ +!!l.trim(),[j,l]);return(0,c.useEffect)(()=>{f?.({liveCount:P,submitting:D,submitted:F,submit:()=>void O(),clearAll:N,annotationCount:j.length,hasGlobalComment:!!l.trim(),globalOpen:n,toggleOverall:()=>o(a=>!a),annotations:j,updateComment:L,removeAnnotation:M,focusOnAnnotation:a=>B(a),addComment:a=>K(a,"comment")})},[P,D,F,j,l,n]),(0,b.jsxs)("div",{className:"flex h-full min-h-0 flex-col",children:[(0,b.jsx)("div",{className:"relative shrink-0",children:(0,b.jsxs)("div",{className:"absolute right-3 top-2 z-30 flex items-center gap-1",children:[!g&&(0,b.jsxs)("button",{onClick:()=>void O(),disabled:D||0===P,className:(0,x.cn)("flex items-center gap-1 rounded-md border px-2 py-1 text-[11px] font-semibold transition-colors",F?"border-emerald-500/40 bg-emerald-500/15 text-emerald-300":0===P?"border-white/10 text-muted-foreground opacity-50":"border-sky-500/40 bg-sky-500/15 text-sky-300 hover:bg-sky-500/25"),title:F?"Submitted — your terminal session is reading the feedback":"Submit all feedback so the agent can revise the plan",children:[F?(0,b.jsx)(e.Check,{className:"size-3"}):(0,b.jsx)(i,{className:"size-3"}),F?"Submitted":"Submit feedback"]}),n&&(0,b.jsxs)("div",{ref:I,className:"absolute right-0 top-[calc(100%+6px)] z-50 w-[320px] rounded-md border border-white/10 bg-card p-2 shadow-xl",children:[(0,b.jsxs)("div",{className:"mb-1 flex items-center justify-between",children:[(0,b.jsx)("span",{className:"text-[10px] font-semibold uppercase tracking-wide text-muted-foreground",children:"Overall feedback"}),(0,b.jsx)("button",{onClick:()=>o(!1),title:"Close (Esc)",className:"rounded p-0.5 text-muted-foreground hover:text-foreground",children:(0,b.jsx)(r.X,{className:"size-3"})})]}),(0,b.jsx)("textarea",{autoFocus:!0,value:l,onChange:a=>m(a.target.value),onKeyDown:a=>{a.stopPropagation(),"Enter"===a.key&&a.shiftKey?(a.preventDefault(),!D&&P>0&&(O(),o(!1))):"Escape"===a.key&&(a.preventDefault(),o(!1))},placeholder:"Plan-level notes — e.g. 'split this into two phases' or 'wrong abstraction'…",rows:4,className:"w-full resize-y rounded border border-white/5 bg-background px-2 py-1.5 text-[12px] leading-snug outline-none focus:border-sky-400/40"}),(0,b.jsx)("div",{className:"mt-1 text-right text-[9px] text-muted-foreground/70",children:"Shift+Enter to submit · Esc to close"})]})]})}),(0,b.jsx)("div",{ref:H,className:"min-h-0 flex-1 overflow-y-auto px-5 pb-5 pt-16 text-[15px] leading-[1.6] selection:bg-[var(--accent-2,#ff7a45)]/30",children:(0,b.jsx)(C,{markdown:a,annotations:j,focusOnId:y,onClearFocus:()=>B(null),onUpdate:L,onRemove:M})}),p&&(0,b.jsxs)("div",{style:{position:"fixed",left:p.x+4,top:p.y-30,zIndex:60},className:"flex items-center gap-0.5 rounded-md border border-white/15 bg-card/95 p-0.5 shadow-lg backdrop-blur",children:[(0,b.jsx)("button",{onClick:()=>{t({...p,seed:""}),q(null),window.getSelection()?.removeAllRanges()},title:"Comment on this text",className:"rounded p-1 text-sky-300 hover:bg-sky-500/15",children:(0,b.jsx)(v.MessageSquarePlus,{className:"size-3.5"})}),(0,b.jsx)("button",{onClick:()=>K(p.excerpt,"deletion"),title:"Mark this for deletion",className:"rounded p-1 text-red-300 hover:bg-red-500/15",children:(0,b.jsx)(w.Strikethrough,{className:"size-3.5"})})]}),s&&(0,b.jsx)(A,{excerpt:s.excerpt,x:s.x,y:s.y,seed:s.seed,onConfirm:a=>{K(s.excerpt,"comment",a),t(null)},onCancel:()=>t(null)})]})}function A({excerpt:a,x:d,y:e,seed:f,onConfirm:g,onCancel:h}){let[i,j]=(0,c.useState)(f);return(0,b.jsxs)("div",{style:{position:"fixed",left:d+4,top:e-6,zIndex:60},className:"w-64 rounded-md border border-white/15 bg-card/95 p-1.5 shadow-xl backdrop-blur",children:[(0,b.jsxs)("div",{className:"mb-1 line-clamp-1 text-[10px] text-muted-foreground",children:["“",a,"”"]}),(0,b.jsx)("textarea",{autoFocus:!0,value:i,onChange:a=>j(a.target.value),onFocus:a=>a.currentTarget.setSelectionRange(i.length,i.length),placeholder:"Comment… (Enter to save · Esc to cancel)",onKeyDown:a=>{a.stopPropagation(),"Enter"!==a.key||a.shiftKey?"Escape"===a.key&&(a.preventDefault(),h()):(a.preventDefault(),i.trim()?g(i.trim()):h())},onBlur:()=>i.trim()?g(i.trim()):h(),className:"h-16 w-full resize-none rounded bg-white/[0.05] px-1.5 py-1 text-xs outline-none placeholder:text-muted-foreground/50 focus:bg-white/[0.08]"})]})}function B({annotations:a,updateComment:c,removeAnnotation:e,focusOnAnnotation:f,onClose:g}){return 0===a.length?(0,b.jsx)("div",{className:"rounded-lg border border-dashed border-white/10 px-3 py-6 text-center text-[11px] text-muted-foreground",children:"Highlight any text in the plan to leave an inline comment."}):(0,b.jsx)("ul",{className:"space-y-1.5",children:a.map(a=>(0,b.jsx)("li",{className:(0,x.cn)("group rounded-md border bg-background/30 px-2 py-1.5 transition-colors hover:bg-background/50","deletion"===a.kind?"border-red-500/25":"border-sky-500/15"),children:(0,b.jsxs)("div",{className:"flex items-start justify-between gap-2",children:[(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsxs)("button",{type:"button",onClick:()=>{f(a.id),g?.()},title:"Jump to this excerpt in the plan",className:(0,x.cn)("block w-full truncate text-left text-[10.5px] font-mono","deletion"===a.kind?"text-red-300/90 line-through":"text-foreground/80 hover:text-foreground"),children:["“",a.excerpt,"”"]}),"deletion"!==a.kind&&(0,b.jsx)("textarea",{value:a.comment,onChange:b=>c(a.id,b.target.value),placeholder:"Write your comment…",rows:1,className:"field-sizing-content mt-1 w-full resize-none bg-transparent text-[11px] leading-snug text-foreground/90 outline-none placeholder:text-muted-foreground/60 focus:text-foreground"})]}),(0,b.jsx)("button",{onClick:()=>e(a.id),title:"Remove this annotation",className:"shrink-0 rounded p-1 text-muted-foreground/70 opacity-0 transition-opacity hover:bg-red-500/15 hover:text-red-300 group-hover:opacity-100",children:(0,b.jsx)(d.Trash2,{className:"size-3"})})]})},a.id))})}function C({markdown:a,annotations:d,focusOnId:e,onClearFocus:f,onUpdate:g,onRemove:h}){let i=(0,c.useMemo)(()=>(0,y.splitBlocks)(a),[a]);return(0,b.jsx)("div",{className:"mx-auto w-full max-w-[66ch] space-y-4",children:i.map((a,c)=>(0,b.jsx)(D,{block:a,index:c,annotations:d,focusOnId:e,onClearFocus:f,onUpdate:g,onRemove:h},c))})}function D({block:a,index:c,annotations:d,focusOnId:e,onClearFocus:f,onUpdate:g,onRemove:h}){if("code"===a.kind)return(0,b.jsx)(y.CodeBlock,{text:a.text});if("table"===a.kind)return(0,b.jsx)(y.TableBlock,{block:a});let i=(0,b.jsx)(E,{text:a.text,annotations:d,focusOnId:e,onClearFocus:f,onUpdate:g,onRemove:h}),j=(0,y.isHeading)(a.kind)?(0,y.planHeadingAnchor)(c):void 0;return(0,b.jsx)(b.Fragment,{children:(0,y.renderBlockShell)(a,i,"reading",j)})}function E({text:a,annotations:c,focusOnId:d,onClearFocus:e,onUpdate:f,onRemove:g}){let h=c.map(b=>({a:b,idx:a.indexOf(b.excerpt)})).filter(a=>a.idx>=0).sort((a,b)=>a.idx-b.idx);if(!h.length)return(0,b.jsx)(G,{text:a});let i=[],j=0;for(let{a:c,idx:k}of h)k<j||(k>j&&i.push((0,b.jsx)(G,{text:a.slice(j,k)},`p-${j}`)),i.push((0,b.jsx)(F,{annotation:c,autoFocus:d===c.id,onClearFocus:e,onUpdate:f,onRemove:g},c.id)),j=k+c.excerpt.length);return j<a.length&&i.push((0,b.jsx)(G,{text:a.slice(j)},"p-tail")),(0,b.jsx)(b.Fragment,{children:i})}function F({annotation:a,autoFocus:e,onClearFocus:f,onUpdate:g,onRemove:h}){let i=(0,c.useRef)(null);return((0,c.useEffect)(()=>{if(e&&i.current){i.current.focus();let a=i.current.value;i.current.setSelectionRange(a.length,a.length),f()}},[e,f]),"deletion"===(a.kind??"comment"))?(0,b.jsxs)("span",{className:"relative inline",children:[(0,b.jsx)("span",{className:"rounded bg-red-500/15 px-0.5 text-red-200/90 line-through decoration-red-300/70 decoration-2",children:(0,b.jsx)(G,{text:a.excerpt})}),(0,b.jsx)("button",{type:"button",onClick:()=>h(a.id),title:"Unmark",className:"ml-0.5 inline-flex translate-y-[-1px] items-center text-red-300/70 hover:text-red-300",children:(0,b.jsx)(d.Trash2,{className:"size-3"})})]}):(0,b.jsx)("span",{className:"rounded bg-[var(--accent-2,#ff7a45)]/15 px-0.5","data-annotation-id":a.id,children:(0,b.jsx)(G,{text:a.excerpt})})}function G({text:a}){return(0,b.jsx)(y.Inline,{text:a})}let H=(0,h.default)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);function I({pendingPlan:a=!1}={}){let d=(0,s.useRouter)(),[h,i]=(0,c.useState)([]),[j,k]=(0,c.useState)(null),[l,n]=(0,c.useState)(null),[o,p]=(0,c.useState)("markdown");(0,c.useEffect)(()=>{(async()=>{try{let a=await fetch("/api/plan/history");if(!a.ok)return;let b=await a.json();i(b.items),b.items.length&&!j&&k(b.items[0].id)}catch{}})()},[]),(0,c.useEffect)(()=>{j&&(async()=>{let a=await fetch(`/api/plan/history?id=${encodeURIComponent(j)}`);a.ok&&n(await a.json())})()},[j]);let q=(0,c.useMemo)(()=>(function(a){let b=new Map;for(let c of a){let a=new Date(c.archivedAt).toLocaleDateString(void 0,{weekday:"short",month:"short",day:"numeric"});b.has(a)||b.set(a,[]),b.get(a).push(c)}return Array.from(b.entries())})(h),[h]),t=a?(0,b.jsxs)("button",{onClick:()=>d.push((0,u.planHref)()),className:"glass pointer-events-auto fixed left-3 top-3 z-30 flex h-10 items-center gap-1.5 rounded-full px-3 text-[11px] font-semibold text-sky-300 transition-colors hover:bg-sky-500/15",title:"Return to the plan that's still pending review",children:[(0,b.jsx)(H,{className:"size-3.5"})," Back to current plan"]}):null;return 0===h.length?(0,b.jsxs)(b.Fragment,{children:[t,(0,b.jsx)("div",{className:"flex h-screen items-center justify-center px-6 pt-14 text-center",children:(0,b.jsxs)("div",{className:"max-w-md text-sm text-muted-foreground",children:[(0,b.jsx)(m,{className:"mx-auto mb-3 size-7 text-muted-foreground/40"}),(0,b.jsx)("div",{className:"mb-2 text-base font-semibold text-foreground",children:"No plans yet."}),"Ask the agent to propose a feature in your terminal session — it lands here via MCP and you can review + annotate on both sides. Past plans get archived to this page for browsing."]})})]}):(0,b.jsxs)("div",{className:"flex h-screen min-h-0 pt-14",children:[t,l&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"glass pointer-events-auto fixed left-1/2 top-3 z-30 flex -translate-x-1/2 items-center gap-0.5 rounded-full p-1",children:[(0,b.jsx)(J,{active:"markdown"===o,onClick:()=>p("markdown"),children:"Plan"}),(0,b.jsx)(J,{active:"map"===o,onClick:()=>p("map"),icon:(0,b.jsx)(f.MapPinned,{className:"size-3"}),children:"Features"}),(0,b.jsx)(J,{active:"db"===o,onClick:()=>p("db"),icon:(0,b.jsx)(g.Database,{className:"size-3"}),children:"Schema"})]}),(0,b.jsxs)("div",{className:"glass pointer-events-auto fixed right-3 top-3 z-30 flex h-9 items-center gap-2 rounded-full px-3",children:[(0,b.jsx)("span",{className:(0,x.cn)("rounded px-1.5 py-0.5 text-[9px] font-semibold uppercase tracking-wide","approved"===l.verdict?"bg-emerald-500/15 text-emerald-300":"bg-red-500/15 text-red-300"),children:l.verdict}),(0,b.jsx)("span",{className:"text-[10px] text-muted-foreground",children:new Date(l.archivedAt).toLocaleString()})]})]}),(0,b.jsxs)("aside",{className:"flex w-64 min-w-0 shrink-0 flex-col border-r border-white/5 bg-card/30",children:[(0,b.jsxs)("div",{className:"border-b border-white/5 px-3 py-2 text-[10.5px] font-semibold uppercase tracking-wide text-muted-foreground",children:["Plan history · ",h.length]}),(0,b.jsx)("ul",{className:"min-h-0 flex-1 overflow-y-auto",children:q.map(([a,c])=>(0,b.jsxs)("li",{children:[(0,b.jsx)("div",{className:"px-3 pb-1 pt-3 text-[9px] font-semibold uppercase tracking-widest text-muted-foreground/60",children:a}),(0,b.jsx)("ul",{children:c.map(a=>(0,b.jsx)("li",{children:(0,b.jsxs)("button",{onClick:()=>k(a.id),className:(0,x.cn)("flex w-full items-start gap-1.5 px-3 py-1.5 text-left text-[12px] transition-colors",j===a.id?"bg-white/[0.06] text-foreground":"text-muted-foreground hover:bg-white/[0.03] hover:text-foreground"),children:[(0,b.jsx)("span",{className:(0,x.cn)("mt-0.5 inline-flex size-3.5 shrink-0 items-center justify-center rounded-full","approved"===a.verdict?"bg-emerald-500/15 text-emerald-300":"bg-red-500/15 text-red-300"),title:a.verdict,children:"approved"===a.verdict?(0,b.jsx)(e.Check,{className:"size-2.5"}):(0,b.jsx)(r.X,{className:"size-2.5"})}),(0,b.jsx)("span",{className:"line-clamp-2",children:a.description})]})},a.id))})]},a))})]}),l?(0,b.jsx)("section",{className:"flex min-h-0 min-w-0 flex-1 flex-col",children:(0,b.jsxs)("div",{className:"min-h-0 flex-1 overflow-y-auto",children:["markdown"===o&&(0,b.jsxs)("div",{className:"px-5 py-4",children:[(0,b.jsx)(y.MarkdownView,{markdown:l.markdown}),""===l.markdown.replace(/^#[^\n]*\n?/,"").trim()&&(0,b.jsx)("p",{className:"mt-2 text-[13px] text-muted-foreground",children:(l.featureGraph?.features?.length??0)===0&&(l.draftDoc?.tables?.length??0)===0&&(l.draftDoc?.endpoints?.length??0)===0?"This plan was approved without a detailed write-up — no features or schema were attached either.":"This plan has no written body. See the Features and Schema tabs for what it proposed."}),l.globalComment&&(0,b.jsxs)("div",{className:"mt-4 rounded-lg border border-white/5 bg-card/40 p-3",children:[(0,b.jsx)("div",{className:"mb-1 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground",children:"Overall feedback"}),(0,b.jsx)("div",{className:"text-[12px] whitespace-pre-wrap",children:l.globalComment})]})]}),"map"===o&&(0,b.jsx)(K,{featureGraph:l.featureGraph}),"db"===o&&(0,b.jsx)(L,{draftDoc:l.draftDoc})]})}):(0,b.jsx)("section",{className:"flex min-h-0 min-w-0 flex-1 items-center justify-center text-sm text-muted-foreground",children:"Select a plan on the left to view it."})]})}function J({active:a,onClick:c,icon:d,children:e}){return(0,b.jsxs)("button",{onClick:c,className:(0,x.cn)("flex items-center gap-1 rounded-md px-2 py-1 text-[11px] font-medium transition-colors",a?"bg-white/10 text-foreground":"text-muted-foreground hover:text-foreground"),children:[d,e]})}function K({featureGraph:a}){let c=a?.features??[];return 0===c.length?(0,b.jsx)("div",{className:"flex h-full items-center justify-center px-6 text-center text-sm text-muted-foreground",children:"No features were proposed in this plan."}):(0,b.jsx)("div",{className:"grid gap-3 px-5 py-4 sm:grid-cols-2 lg:grid-cols-3",children:c.map((a,c)=>(0,b.jsxs)("div",{className:"rounded-lg border border-sky-500/20 bg-card/50 p-3",children:[(0,b.jsxs)("div",{className:"mb-1.5 flex items-center gap-1.5",children:[(0,b.jsx)("span",{className:"rounded bg-sky-500/15 px-1.5 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-sky-300",children:"feature"}),a.cluster&&(0,b.jsx)("span",{className:"text-[10px] text-muted-foreground",children:a.cluster})]}),(0,b.jsx)("div",{className:"text-sm font-semibold leading-tight",children:a.title}),a.role&&(0,b.jsx)("div",{className:"mt-1 text-[11px] text-muted-foreground",children:a.role}),a.plain&&(0,b.jsx)("div",{className:"mt-2 text-[12px] text-foreground/80",children:a.plain})]},c))})}function L({draftDoc:a}){let c=a?.tables??[],d=a?.endpoints??[];return 0===c.length&&0===d.length?(0,b.jsx)("div",{className:"flex h-full items-center justify-center px-6 text-center text-sm text-muted-foreground",children:"No schema was proposed in this plan."}):(0,b.jsxs)("div",{className:"space-y-5 px-5 py-4",children:[c.length>0&&(0,b.jsxs)("section",{children:[(0,b.jsxs)("div",{className:"mb-2 text-[10.5px] font-semibold uppercase tracking-wide text-muted-foreground",children:["Tables · ",c.length]}),(0,b.jsx)("div",{className:"grid gap-3 sm:grid-cols-2 lg:grid-cols-3",children:c.map(a=>(0,b.jsxs)("div",{className:"rounded-lg border border-white/5 bg-card/40 p-3",children:[(0,b.jsxs)("div",{className:"mb-1 flex items-center gap-1.5",children:[(0,b.jsx)("span",{className:"font-mono text-[13px] font-semibold",children:a.name}),a.domain&&(0,b.jsx)("span",{className:"text-[10px] text-muted-foreground",children:a.domain})]}),a.description&&(0,b.jsx)("div",{className:"mb-1.5 text-[11px] text-muted-foreground",children:a.description}),(0,b.jsx)("ul",{className:"space-y-0.5 text-[11px]",children:a.columns.map((a,c)=>(0,b.jsxs)("li",{className:"flex items-baseline gap-1.5",children:[(0,b.jsx)("code",{className:"rounded bg-white/5 px-1 font-mono text-[11px]",children:a.name}),(0,b.jsx)("span",{className:"text-muted-foreground",children:a.type}),a.isPk&&(0,b.jsx)("span",{className:"text-amber-300/80 text-[9px]",children:"PK"}),a.isFk&&(0,b.jsx)("span",{className:"text-sky-300/80 text-[9px]",children:"FK"}),!a.nullable&&(0,b.jsx)("span",{className:"text-muted-foreground/60 text-[9px]",children:"NOT NULL"})]},c))})]},a.id))})]}),d.length>0&&(0,b.jsxs)("section",{children:[(0,b.jsxs)("div",{className:"mb-2 text-[10.5px] font-semibold uppercase tracking-wide text-muted-foreground",children:["Endpoints · ",d.length]}),(0,b.jsx)("ul",{className:"space-y-1.5",children:d.map(a=>{let c;return(0,b.jsxs)("li",{className:"flex items-center gap-2 rounded-md border border-white/5 bg-card/40 px-2.5 py-1.5 text-[12px]",children:[(0,b.jsx)("span",{className:"rounded px-1.5 py-0.5 text-[10px] font-bold",style:(c=M[a.method.toUpperCase()]??"#8a8a8a",{background:`${c}22`,color:c}),children:a.method}),(0,b.jsx)("span",{className:"font-mono",children:a.path}),a.description&&(0,b.jsx)("span",{className:"ml-2 text-[11px] text-muted-foreground",children:a.description})]},a.id)})})]})]})}let M={GET:"#7bd389",POST:"#4ea1ff",PUT:"#ffb86b",PATCH:"#ffb86b",DELETE:"#ff3860"};function N({markdown:a}){let d=(0,c.useMemo)(()=>(0,y.splitBlocks)(a).map((a,b)=>({b:a,i:b})).filter(({b:a})=>(0,y.isHeading)(a.kind)).map(({b:a,i:b})=>({id:(0,y.planHeadingAnchor)(b),level:(0,y.headingLevel)(a.kind),label:(0,y.stripInline)(a.text)})).filter(a=>a.label.length>0),[a]),[e,f]=(0,c.useState)(null);return(0,c.useEffect)(()=>{if("u"<typeof IntersectionObserver||0===d.length)return;let a=d.map(a=>document.getElementById(a.id)).filter(a=>null!==a);if(0===a.length)return;let b=new IntersectionObserver(a=>{let b=a.filter(a=>a.isIntersecting).sort((a,b)=>a.boundingClientRect.top-b.boundingClientRect.top);b[0]&&f(b[0].target.id)},{rootMargin:"-12% 0px -70% 0px",threshold:0});return a.forEach(a=>b.observe(a)),()=>b.disconnect()},[d]),(0,b.jsxs)("aside",{className:"flex w-60 shrink-0 flex-col overflow-y-auto border-r border-white/5 bg-background pt-16",children:[(0,b.jsx)("div",{className:"px-4 pb-2 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground",children:"Sections"}),0===d.length?(0,b.jsx)("p",{className:"px-4 text-[12px] text-muted-foreground/70",children:"No headings in this plan."}):(0,b.jsx)("nav",{className:"space-y-0.5 px-2 pb-6",children:d.map(a=>(0,b.jsx)("button",{onClick:()=>{var b;let c;return b=a.id,void((c=document.getElementById(b))&&(c.scrollIntoView({behavior:"smooth",block:"start"}),f(b)))},title:a.label,style:{paddingLeft:`${.5+.75*a.level}rem`},className:(0,x.cn)("block w-full truncate rounded py-1 pr-2 text-left text-[12px] leading-snug transition-colors",e===a.id?"bg-white/10 font-medium text-foreground":"text-muted-foreground hover:bg-white/[0.05] hover:text-foreground"),children:a.label},a.id))})]})}var O=a.i(36273),P=a.i(65733),Q=a.i(40695),R=a.i(43904);function S({open:a,onOpenChange:d,onConfirmed:f}){let[g,h]=(0,c.useState)("bypassPermissions"),[i,j]=(0,c.useState)(!1);async function k(){j(!0);try{await fetch("/api/preferences",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({planApprovalMode:g})}).catch(()=>{}),d(!1),f()}finally{j(!1)}}return(0,b.jsx)(P.Dialog,{open:a,onOpenChange:d,children:(0,b.jsxs)(P.DialogContent,{className:"max-w-lg",children:[(0,b.jsxs)(P.DialogHeader,{children:[(0,b.jsxs)(P.DialogTitle,{className:"flex items-center gap-2",children:[(0,b.jsx)(O.ShieldCheck,{className:"size-4 text-emerald-400"}),"After approving, the agent should…"]}),(0,b.jsx)(P.DialogDescription,{children:"Pick the permission mode your terminal session enters when you approve a plan. We ask once and remember it for every project — change it anytime in Settings."})]}),(0,b.jsx)("div",{className:"space-y-2 py-1",children:R.PERMISSION_MODE_OPTIONS.map(a=>(0,b.jsxs)("button",{type:"button",onClick:()=>h(a.value),className:(0,x.cn)("flex w-full items-start gap-3 rounded-lg border p-3 text-left transition-colors",g===a.value?"border-emerald-500/50 bg-emerald-500/10":"border-white/10 bg-white/[0.03] hover:bg-white/[0.06]"),children:[(0,b.jsx)("span",{className:(0,x.cn)("mt-0.5 flex size-4 shrink-0 items-center justify-center rounded-full border",g===a.value?"border-emerald-400 bg-emerald-400/20":"border-white/30"),children:g===a.value&&(0,b.jsx)(e.Check,{className:"size-3 text-emerald-300"})}),(0,b.jsxs)("span",{className:"min-w-0",children:[(0,b.jsx)("span",{className:"block text-sm font-medium text-foreground",children:a.label}),(0,b.jsx)("span",{className:"block text-xs text-muted-foreground",children:a.description})]})]},a.value))}),(0,b.jsxs)(P.DialogFooter,{className:"items-center justify-between gap-2 sm:justify-between",children:[(0,b.jsx)("span",{className:"text-xs text-muted-foreground",children:"You can change this later in Settings."}),(0,b.jsx)(Q.Button,{onClick:k,disabled:i,size:"sm",children:i?"Saving…":"Save & approve"})]})]})})}var T=a.i(27247),U=a.i(68366);function V({targets:a,onAdd:d,initialTarget:e}){let[f,g]=(0,c.useState)(e||a[0]||""),[h,i]=(0,c.useState)("");(0,c.useEffect)(()=>{e&&g(e)},[e]),(0,c.useEffect)(()=>{!f&&a[0]&&g(a[0])},[a,f]);let j=()=>{let a=h.trim();a&&(d({target:f||"(plan)",question:a}),i(""))};return(0,b.jsxs)("div",{className:"space-y-1.5",children:[a.length>0&&(0,b.jsx)("select",{value:f,onChange:a=>g(a.target.value),className:"w-full rounded border border-white/10 bg-background px-2 py-1 text-[11px] outline-none focus:border-sky-400/40",children:a.map(a=>(0,b.jsx)("option",{value:a,className:"bg-card",children:a},a))}),(0,b.jsx)("textarea",{value:h,onChange:a=>i(a.target.value),onKeyDown:a=>{"Enter"===a.key&&(a.metaKey||a.ctrlKey)&&(a.preventDefault(),j())},rows:2,placeholder:"e.g. why a new table instead of reusing users? (⌘/Ctrl+Enter to add)",className:"w-full resize-y rounded border border-white/10 bg-background px-2 py-1.5 text-[12px] leading-snug outline-none focus:border-sky-400/40"}),(0,b.jsx)("button",{onClick:j,disabled:!h.trim(),className:(0,x.cn)("w-full rounded-md px-2 py-1 text-[11px] font-semibold transition-colors",h.trim()?"bg-sky-500/15 text-sky-300 hover:bg-sky-500/25":"text-muted-foreground opacity-50"),children:"Add question"})]})}function W({active:a,onClick:c,icon:d,children:e}){return(0,b.jsxs)("button",{onClick:c,className:(0,x.cn)("flex items-center gap-1 rounded-md px-2.5 py-1 text-[11px] font-medium transition-colors",a?"bg-white/10 text-foreground":"text-muted-foreground hover:text-foreground"),children:[d,e]})}a.s(["PlanWorkspace",0,function({dbProps:a,mapProps:h,planMarkdown:v,forceHistory:w=!1}){let y=(0,s.useRouter)(),{status:A,discard:C}=(0,t.usePlan)(),[D,E]=(0,c.useState)("map"),[F,G]=(0,c.useState)(!1),[H,J]=(0,c.useState)(!1),[K,L]=(0,c.useState)(null),M=(0,c.useCallback)(async()=>{await fetch("/api/plan/approve",{method:"POST",headers:(0,u.wsHeaders)((0,u.currentPlanWs)())}).catch(()=>{}),L({features:A.features,tables:A.tables,endpoints:A.endpoints})},[A.features,A.tables,A.endpoints]),O=(0,c.useCallback)(async()=>{try{let a=await fetch("/api/preferences",{cache:"no-store"});if((await a.json()).planApprovalModeConfigured)return void M()}catch{M();return}J(!0)},[M]),[P,Q]=(0,c.useState)(null),R=(0,c.useCallback)(a=>Q(a),[]),X=(0,c.useRef)(null),Y=(0,c.useRef)(null),Z=(0,c.useRef)(a.draft),[$,_]=(0,c.useState)(!1),aa=(0,c.useCallback)(()=>_(!0),[]),[ab,ac]=(0,c.useState)([]),[ad,ae]=(0,c.useState)(!1),[af,ag]=(0,c.useState)(""),ah=(0,c.useCallback)(a=>{ag(a),ae(!0)},[]),ai=(0,c.useRef)(ab);(0,c.useEffect)(()=>{ai.current=ab},[ab]),(0,c.useEffect)(()=>{ac([]),ae(!1)},[A.proposedAt]),(0,c.useEffect)(()=>{let a=()=>void fetch("/api/plan/presence",{method:"POST",cache:"no-store",headers:(0,u.wsHeaders)((0,u.currentPlanWs)())}).catch(()=>{});a();let b=setInterval(a,5e3);return()=>clearInterval(b)},[]);let aj=(0,c.useCallback)(()=>({draft:Z.current,questions:ai.current}),[]),ak=(0,c.useMemo)(()=>{let b=[];for(let a of h.nodes)b.push(`feature: ${a.title}`);for(let c of a.draft?.tables??[])b.push(`table: ${c.name}`);for(let c of a.tables)b.push(`table: ${c.name}`);for(let c of a.draft?.endpoints??[])b.push(`endpoint: ${c.method} ${c.path}`);for(let c of a.endpoints)b.push(`endpoint: ${c.method} ${c.path}`);return Array.from(new Set(b))},[h.nodes,a]),al=P?(0,b.jsx)(B,{annotations:P.annotations,updateComment:P.updateComment,removeAnnotation:P.removeAnnotation,focusOnAnnotation:P.focusOnAnnotation,onClose:()=>X.current?.close()}):null,am=(0,c.useCallback)(()=>{X.current?.open()},[]),an=(0,c.useCallback)(()=>{"db"===D?Y.current?.openComments():X.current?.openComments()},[D]),ao=(0,c.useCallback)(a=>{P?.addComment(a),"db"===D?Y.current?.openComments():X.current?.openComments()},[P,D]),[ap,aq]=(0,c.useState)(()=>50),ar=(0,c.useRef)(null),as=(0,c.useRef)(!1),at=(0,c.useCallback)(a=>{a.preventDefault(),as.current=!0,document.body.style.cursor="col-resize",document.body.style.userSelect="none"},[]);(0,c.useEffect)(()=>{let a=a=>{if(!as.current||!ar.current)return;let b=ar.current.getBoundingClientRect();aq(Math.max(20,Math.min(80,(a.clientX-b.left)/b.width*100)))},b=()=>{if(as.current){as.current=!1,document.body.style.cursor="",document.body.style.userSelect="";try{localStorage.setItem("beacon:plan-left-pct",String(ap))}catch{}}};return window.addEventListener("pointermove",a),window.addEventListener("pointerup",b),()=>{window.removeEventListener("pointermove",a),window.removeEventListener("pointerup",b)}},[ap]);let au=async()=>{await fetch("/api/plan/annotations",{method:"DELETE",headers:(0,u.wsHeaders)((0,u.currentPlanWs)())}).catch(()=>{}),await C(),y.refresh()};if((!A.pending||w)&&!K)return(0,b.jsx)(I,{pendingPlan:A.pending});let av=h.nodes.length>0||a.tables.length>0||a.endpoints.length>0||(a.draft?.tables.length??0)>0||(a.draft?.endpoints.length??0)>0,aw=av&&!F,ax=!av||F,ay=((P?.liveCount??0)>0||$||ab.length>0)&&!P?.submitted;return(0,b.jsxs)("div",{className:"relative flex h-screen flex-col",children:[K&&(0,b.jsxs)("div",{className:"absolute inset-0 z-50 flex flex-col items-center justify-center gap-5 bg-background/97 px-6 text-center backdrop-blur-sm",children:[(0,b.jsx)("div",{className:"flex size-12 items-center justify-center rounded-full bg-emerald-500/15",children:(0,b.jsx)(e.Check,{className:"size-6 text-emerald-300"})}),(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)("h2",{className:"text-lg font-semibold text-foreground",children:"Plan approved"}),(0,b.jsx)("p",{className:"max-w-sm text-sm text-muted-foreground",children:K.features>0||K.tables>0||K.endpoints>0?"It's committed. Here's where to find it:":"It's archived to your plan history."})]}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center justify-center gap-2",children:[K.features>0&&(0,b.jsxs)("button",{onClick:()=>y.push("/map?view=ROADMAP"),className:"flex items-center gap-2 rounded-lg border border-white/12 px-3 py-2 text-sm text-foreground transition-colors hover:bg-white/[0.06]",children:[(0,b.jsx)(f.MapPinned,{className:"size-4 text-sky-300"})," ",K.features," feature",1===K.features?"":"s"," → Map"]}),(K.tables>0||K.endpoints>0)&&(0,b.jsxs)("button",{onClick:()=>y.push("/map?view=DATABASE"),className:"flex items-center gap-2 rounded-lg border border-white/12 px-3 py-2 text-sm text-foreground transition-colors hover:bg-white/[0.06]",children:[(0,b.jsx)(g.Database,{className:"size-4 text-violet-300"})," ",K.tables," table",1===K.tables?"":"s"," · ",K.endpoints," endpoint",1===K.endpoints?"":"s"," → Database"]})]}),(0,b.jsx)("button",{onClick:()=>{L(null),y.push((0,u.planHref)({view:"history"}))},className:"rounded-full border border-white/12 px-3 py-1.5 text-xs font-medium text-muted-foreground transition-colors hover:bg-white/[0.06] hover:text-foreground",children:"Done — browse plan history"})]}),P?.submitted&&(0,b.jsxs)("div",{className:"absolute inset-0 z-40 flex flex-col items-center justify-center gap-4 bg-background/95 px-6 text-center backdrop-blur-sm",children:[(0,b.jsx)("div",{className:"flex size-12 items-center justify-center rounded-full bg-sky-500/15",children:(0,b.jsx)(n,{className:"size-6 animate-spin text-sky-300"})}),(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)("h2",{className:"text-lg font-semibold text-foreground",children:"Feedback sent"}),(0,b.jsx)("p",{className:"max-w-sm text-sm text-muted-foreground",children:"Your terminal session is revising the plan based on your comments. The updated plan will appear here automatically — no need to refresh."})]}),(0,b.jsx)("button",{onClick:()=>y.push((0,u.planHref)({view:"history"})),className:"rounded-full border border-white/12 px-3 py-1.5 text-xs font-medium text-muted-foreground transition-colors hover:bg-white/[0.06] hover:text-foreground",children:"Browse past plans"})]}),(0,b.jsxs)("div",{className:"pointer-events-none fixed right-3 top-3 z-30 flex items-center gap-2",children:[av&&F&&(0,b.jsx)("button",{onClick:()=>G(!1),title:"Collapse — show the board again",className:"glass pointer-events-auto flex size-8 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-white/[0.06] hover:text-foreground",children:(0,b.jsx)(p.Minimize2,{className:"size-3.5"})}),(0,b.jsxs)("div",{className:"glass pointer-events-auto flex h-10 items-center gap-0.5 rounded-full px-1",children:[(0,b.jsx)("button",{onClick:()=>y.push((0,u.planHref)({view:"history"})),title:"Browse past plans (you can come back to this one)",className:"flex size-8 shrink-0 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-white/[0.06] hover:text-foreground",children:(0,b.jsx)(m,{className:"size-3.5"})}),(0,b.jsx)("span",{"aria-hidden":!0,className:"mx-1 h-5 w-px bg-white/10"}),(0,b.jsx)("button",{onClick:am,disabled:!P,title:"Open the side panel (details)",className:"relative flex size-8 shrink-0 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-white/[0.06] hover:text-foreground",children:(0,b.jsx)(j.ListChecks,{className:"size-3.5"})}),(0,b.jsxs)("button",{onClick:an,disabled:!P,title:P?.annotationCount?`Open comments \xb7 ${P.annotationCount} comment${1===P.annotationCount?"":"s"} so far`:"Open comments — select a card/table and 'Comment on this', or highlight text",className:"relative flex size-8 shrink-0 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-white/[0.06] hover:text-foreground",children:[(0,b.jsx)(k,{className:"size-3.5"}),P&&(P.annotationCount??0)>0&&(0,b.jsx)("span",{className:"absolute -right-0.5 -top-0.5 flex h-3.5 min-w-3.5 items-center justify-center rounded-full bg-sky-500 px-1 text-[9px] font-semibold text-white",children:P.annotationCount})]}),(0,b.jsxs)("button",{"data-overall-toggle":!0,onClick:()=>P?.toggleOverall?.(),disabled:!P?.toggleOverall,title:P?.hasGlobalComment?"Edit your overall feedback":"Add overall plan-level feedback",className:(0,x.cn)("relative flex size-8 shrink-0 items-center justify-center rounded-full transition-colors",P?.globalOpen?"bg-white/10 text-foreground":P?.hasGlobalComment?"text-sky-300 hover:bg-sky-500/15":"text-muted-foreground hover:bg-white/[0.06] hover:text-foreground"),children:[(0,b.jsx)(l.StickyNote,{className:"size-3.5"}),P?.hasGlobalComment&&(0,b.jsx)("span",{className:"absolute -right-0.5 -top-0.5 size-2 rounded-full bg-sky-400"})]}),(0,b.jsxs)("button",{onClick:()=>ae(a=>!a),title:"Ask the agent a question about a node (answered in its next round)",className:(0,x.cn)("relative flex size-8 shrink-0 items-center justify-center rounded-full transition-colors",ad?"bg-white/10 text-foreground":ab.length?"text-sky-300 hover:bg-sky-500/15":"text-muted-foreground hover:bg-white/[0.06] hover:text-foreground"),children:[(0,b.jsx)(q.HelpCircle,{className:"size-3.5"}),ab.length>0&&(0,b.jsx)("span",{className:"absolute -right-0.5 -top-0.5 flex h-3.5 min-w-3.5 items-center justify-center rounded-full bg-sky-500 px-1 text-[9px] font-semibold text-white",children:ab.length})]}),(0,b.jsx)("span",{"aria-hidden":!0,className:"mx-1 h-5 w-px bg-white/10"}),(0,b.jsxs)("button",{onClick:()=>P?.submit(),disabled:!P||P.submitting||0===P.liveCount&&!$&&0===ab.length,title:P&&(0!==P.liveCount||$||0!==ab.length)?P.submitted?"Submitted — your terminal session is reading the feedback":"Submit feedback (comments + canvas edits) so the agent can revise the plan":"Highlight text or edit the canvas, then submit",className:(0,x.cn)("flex shrink-0 items-center gap-1 rounded-full px-2.5 py-1 text-[11px] font-semibold transition-colors",P?.submitted?"text-sky-300":P&&(0!==P.liveCount||$||0!==ab.length)?"text-sky-300 hover:bg-sky-500/15":"text-muted-foreground opacity-50"),children:[P?.submitted?(0,b.jsx)(e.Check,{className:"size-3"}):(0,b.jsx)(i,{className:"size-3"}),P?.submitted?"Submitted":"Feedback"]}),ay&&(0,b.jsxs)("button",{onClick:()=>{P?.clearAll?.(),_(!1),ac([])},title:"Discard your unsubmitted comments / canvas edits so you can approve the plan as-is",className:"flex shrink-0 items-center gap-1 rounded-full px-2 py-1 text-[11px] font-medium text-amber-300/90 transition-colors hover:bg-amber-500/15",children:[(0,b.jsx)(r.X,{className:"size-3"})," Clear to approve"]}),(0,b.jsxs)("button",{onClick:()=>void O(),disabled:ay,title:ay?"You have unsubmitted feedback — submit it, or click ‘Clear to approve’ to drop it":"Approve the plan",className:(0,x.cn)("flex shrink-0 items-center gap-1 rounded-full 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",ay&&"opacity-40 hover:bg-emerald-500/15"),children:[(0,b.jsx)(e.Check,{className:"size-3"})," Approve"]}),(0,b.jsxs)("button",{onClick:au,className:"flex shrink-0 items-center gap-1 rounded-full px-2.5 py-1 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-red-500/15 hover:text-red-300",title:"Discard the plan",children:[(0,b.jsx)(d.Trash2,{className:"size-3"})," Discard"]}),(0,b.jsx)(S,{open:H,onOpenChange:J,onConfirmed:()=>void M()})]})]}),ad&&(0,b.jsxs)("div",{className:"fixed right-3 top-16 z-30 w-80 rounded-xl border border-white/10 bg-card p-3 shadow-xl",children:[(0,b.jsxs)("div",{className:"mb-2 flex items-center justify-between",children:[(0,b.jsx)("span",{className:"text-[11px] font-semibold uppercase tracking-wide text-muted-foreground",children:"Ask the agent"}),(0,b.jsx)("button",{onClick:()=>ae(!1),title:"Close",className:"rounded p-0.5 text-muted-foreground hover:text-foreground",children:(0,b.jsx)(r.X,{className:"size-3.5"})})]}),(0,b.jsx)(V,{targets:ak,initialTarget:af,onAdd:a=>ac(b=>[...b,a])}),ab.length>0&&(0,b.jsx)("ul",{className:"mt-2 space-y-1",children:ab.map((a,c)=>(0,b.jsxs)("li",{className:"group flex items-start justify-between gap-2 rounded-md border border-white/5 bg-background/40 px-2 py-1",children:[(0,b.jsxs)("div",{className:"min-w-0",children:[(0,b.jsx)("div",{className:"truncate font-mono text-[10px] text-sky-300/90",children:a.target}),(0,b.jsx)("div",{className:"text-[11px] text-foreground/90",children:a.question})]}),(0,b.jsx)("button",{onClick:()=>ac(a=>a.filter((a,b)=>b!==c)),title:"Remove",className:"shrink-0 rounded p-0.5 text-muted-foreground/70 opacity-0 transition-opacity hover:text-red-300 group-hover:opacity-100",children:(0,b.jsx)(r.X,{className:"size-3"})})]},c))}),(0,b.jsx)("p",{className:"mt-2 text-[10px] text-muted-foreground",children:"Questions are sent with your feedback on Submit — the agent answers them in its next round."})]}),(0,b.jsxs)("div",{ref:ar,className:"flex min-h-0 flex-1",children:[ax&&(0,b.jsx)(N,{markdown:v}),(0,b.jsxs)("div",{className:(0,x.cn)("relative flex min-w-0 flex-col",!aw&&"flex-1"),style:aw?{width:`${ap}%`}:void 0,children:[aw&&(0,b.jsx)("div",{className:"pointer-events-none absolute right-3 top-3 z-20",children:(0,b.jsx)("button",{onClick:()=>G(!0),title:"Expand the plan to full width",className:"glass pointer-events-auto flex size-8 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-white/[0.06] hover:text-foreground",children:(0,b.jsx)(o.Maximize2,{className:"size-3.5"})})}),(0,b.jsx)("div",{className:"min-h-0 flex-1 overflow-hidden bg-background",children:(0,b.jsx)(z,{markdown:v,round:A.proposedAt,onApi:R,hideSubmit:!0,getExtraSubmitPayload:aj})})]}),aw&&(0,b.jsx)("div",{onPointerDown:at,className:"group relative w-px shrink-0 cursor-col-resize bg-white/5 hover:bg-white/15",title:"Drag to resize",children:(0,b.jsx)("div",{className:"absolute inset-y-0 -left-1.5 right-[-6px] z-10"})}),aw&&(0,b.jsxs)("div",{className:"relative flex min-w-0 flex-col",style:{width:`${100-ap}%`},children:[(0,b.jsx)("div",{className:"pointer-events-none absolute left-3 top-3 z-20",children:(0,b.jsxs)("div",{className:"glass pointer-events-auto flex items-center gap-1 rounded-full p-0.5",children:[(0,b.jsx)(W,{active:"map"===D,onClick:()=>E("map"),icon:(0,b.jsx)(f.MapPinned,{className:"size-3"}),children:"Map"}),(0,b.jsx)(W,{active:"db"===D,onClick:()=>E("db"),icon:(0,b.jsx)(g.Database,{className:"size-3"}),children:"Database"})]})}),(0,b.jsx)("div",{className:"min-h-0 flex-1 overflow-hidden bg-background",children:"map"===D?(0,b.jsx)(T.MapClient,{view:h.view,nodes:h.nodes,edges:h.edges,embedded:!0,commentsContent:al,commentsCount:P?.annotationCount??0,controlRef:X,onAskAgent:ah,onAddComment:ao}):(0,b.jsx)(U.DbMapClient,{tables:a.tables,relations:a.relations,endpoints:a.endpoints,draft:a.draft,workspaceId:a.workspaceId,embedded:!0,draftRef:Z,onEdit:aa,controlRef:Y,commentsContent:al,commentsCount:P?.annotationCount??0,onAddComment:ao})})]})]})]})}],65250)}];
2
+
3
+ //# sourceMappingURL=components_plan_plan-workspace_tsx_0t1topu._.js.map