trybeacon 0.1.78 → 0.1.79

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (371) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/.next/BUILD_ID +1 -1
  3. package/.next/app-path-routes-manifest.json +13 -13
  4. package/.next/build-manifest.json +2 -2
  5. package/.next/prerender-manifest.json +3 -3
  6. package/.next/routes-manifest.json +6 -6
  7. package/.next/server/app/_global-error/page.js +3 -3
  8. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  9. package/.next/server/app/_global-error.html +1 -1
  10. package/.next/server/app/_global-error.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  14. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  15. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  16. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  17. package/.next/server/app/_not-found/page.js +2 -2
  18. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  19. package/.next/server/app/_not-found.html +1 -1
  20. package/.next/server/app/_not-found.rsc +2 -2
  21. package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  22. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  23. package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  24. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  25. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  26. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  27. package/.next/server/app/api/ask/answer/route.js +1 -1
  28. package/.next/server/app/api/ask/route.js +1 -1
  29. package/.next/server/app/api/ask/verdict/route.js +1 -1
  30. package/.next/server/app/api/board-annotations/[id]/route.js +1 -1
  31. package/.next/server/app/api/board-annotations/route.js +1 -1
  32. package/.next/server/app/api/board-layout/route.js +1 -1
  33. package/.next/server/app/api/bug-flags/[id]/route.js +1 -1
  34. package/.next/server/app/api/bug-flags/route.js +1 -1
  35. package/.next/server/app/api/changes/comment/answer/route.js +2 -2
  36. package/.next/server/app/api/changes/comment/claim/route.js +2 -2
  37. package/.next/server/app/api/changes/comment/route.js +2 -2
  38. package/.next/server/app/api/changes/quality/route.js +1 -1
  39. package/.next/server/app/api/changes/route.js +1 -1
  40. package/.next/server/app/api/changes/viewed/route.js +1 -1
  41. package/.next/server/app/api/code-graph/position/route.js +1 -1
  42. package/.next/server/app/api/code-graph/route.js +1 -1
  43. package/.next/server/app/api/context/feature/route.js +1 -1
  44. package/.next/server/app/api/context/file/route.js +1 -1
  45. package/.next/server/app/api/context/route.js +1 -1
  46. package/.next/server/app/api/db/arrange/route.js +1 -1
  47. package/.next/server/app/api/db/backfill-access/route.js +1 -1
  48. package/.next/server/app/api/db/position/route.js +1 -1
  49. package/.next/server/app/api/db/prune-planned/route.js +1 -1
  50. package/.next/server/app/api/db/reconcile-endpoints/route.js +1 -1
  51. package/.next/server/app/api/db/relations/[id]/route.js +1 -1
  52. package/.next/server/app/api/db/tables/[id]/route.js +1 -1
  53. package/.next/server/app/api/draft/approve/route.js +1 -1
  54. package/.next/server/app/api/draft/route.js +1 -1
  55. package/.next/server/app/api/draft/status/route.js +1 -1
  56. package/.next/server/app/api/edges/[id]/route.js +1 -1
  57. package/.next/server/app/api/edges/route.js +1 -1
  58. package/.next/server/app/api/endpoints/[id]/route.js +1 -1
  59. package/.next/server/app/api/entities/route.js +1 -1
  60. package/.next/server/app/api/ingest/route.js +1 -1
  61. package/.next/server/app/api/init/route.js +1 -1
  62. package/.next/server/app/api/lesson/close/route.js +1 -1
  63. package/.next/server/app/api/lesson/presence/route.js +1 -1
  64. package/.next/server/app/api/lesson/questions/route.js +1 -1
  65. package/.next/server/app/api/lesson/route.js +1 -1
  66. package/.next/server/app/api/lesson/save/route.js +1 -1
  67. package/.next/server/app/api/lesson/verdict/route.js +1 -1
  68. package/.next/server/app/api/linear/route.js +7 -6
  69. package/.next/server/app/api/linear/scopes/route.js +17 -0
  70. package/.next/server/app/api/linear/scopes/route_client-reference-manifest.js +1 -0
  71. package/.next/server/app/api/linear/sync/route.js +7 -6
  72. package/.next/server/app/api/map/describe/route.js +1 -1
  73. package/.next/server/app/api/map/files/route.js +1 -1
  74. package/.next/server/app/api/map/finish/route.js +1 -1
  75. package/.next/server/app/api/map/route.js +1 -1
  76. package/.next/server/app/api/map/start/route.js +1 -1
  77. package/.next/server/app/api/map/touch-active/route.js +1 -1
  78. package/.next/server/app/api/mention-search/route.js +1 -1
  79. package/.next/server/app/api/nodes/[id]/position/route.js +1 -1
  80. package/.next/server/app/api/nodes/[id]/route.js +1 -1
  81. package/.next/server/app/api/nodes/positions/route.js +1 -1
  82. package/.next/server/app/api/nodes/route.js +1 -1
  83. package/.next/server/app/api/nodes/subtasks/route.js +1 -1
  84. package/.next/server/app/api/notes/[id]/route.js +1 -1
  85. package/.next/server/app/api/notes/route.js +1 -1
  86. package/.next/server/app/api/open/route.js +1 -1
  87. package/.next/server/app/api/plan/annotations/route.js +2 -2
  88. package/.next/server/app/api/plan/approve/route.js +1 -1
  89. package/.next/server/app/api/plan/history/route.js +1 -1
  90. package/.next/server/app/api/plan/markdown/route.js +1 -1
  91. package/.next/server/app/api/plan/presence/route.js +1 -1
  92. package/.next/server/app/api/plan/route.js +1 -1
  93. package/.next/server/app/api/plan/verdict/route.js +1 -1
  94. package/.next/server/app/api/preferences/route.js +1 -1
  95. package/.next/server/app/api/project-meta/route.js +1 -1
  96. package/.next/server/app/api/reset/route.js +1 -1
  97. package/.next/server/app/api/scope-guard/check/route.js +2 -2
  98. package/.next/server/app/api/share/create/route.js +1 -1
  99. package/.next/server/app/api/share/route.js +1 -1
  100. package/.next/server/app/api/stream/route.js +2 -2
  101. package/.next/server/app/api/tab/nav/route.js +1 -1
  102. package/.next/server/app/api/tab/presence/route.js +1 -1
  103. package/.next/server/app/api/tab/view/route.js +1 -1
  104. package/.next/server/app/api/telemetry/route.js +1 -1
  105. package/.next/server/app/api/telemetry/stats/route.js +1 -1
  106. package/.next/server/app/api/version/route.js +1 -1
  107. package/.next/server/app/api/workspace/activate/route.js +1 -1
  108. package/.next/server/app/api/workspace/route.js +1 -1
  109. package/.next/server/app/apple-icon.png/route.js +1 -1
  110. package/.next/server/app/docs/page.js +2 -2
  111. package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  112. package/.next/server/app/docs.html +1 -1
  113. package/.next/server/app/docs.rsc +2 -2
  114. package/.next/server/app/docs.segments/_full.segment.rsc +2 -2
  115. package/.next/server/app/docs.segments/_head.segment.rsc +1 -1
  116. package/.next/server/app/docs.segments/_index.segment.rsc +2 -2
  117. package/.next/server/app/docs.segments/_tree.segment.rsc +2 -2
  118. package/.next/server/app/docs.segments/docs/__PAGE__.segment.rsc +1 -1
  119. package/.next/server/app/docs.segments/docs.segment.rsc +1 -1
  120. package/.next/server/app/help/page.js +2 -2
  121. package/.next/server/app/help/page_client-reference-manifest.js +1 -1
  122. package/.next/server/app/help.html +1 -1
  123. package/.next/server/app/help.rsc +2 -2
  124. package/.next/server/app/help.segments/_full.segment.rsc +2 -2
  125. package/.next/server/app/help.segments/_head.segment.rsc +1 -1
  126. package/.next/server/app/help.segments/_index.segment.rsc +2 -2
  127. package/.next/server/app/help.segments/_tree.segment.rsc +2 -2
  128. package/.next/server/app/help.segments/help/__PAGE__.segment.rsc +1 -1
  129. package/.next/server/app/help.segments/help.segment.rsc +1 -1
  130. package/.next/server/app/icon.svg/route.js +1 -1
  131. package/.next/server/app/index.html +1 -1
  132. package/.next/server/app/index.rsc +2 -2
  133. package/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  134. package/.next/server/app/index.segments/_full.segment.rsc +2 -2
  135. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  136. package/.next/server/app/index.segments/_index.segment.rsc +2 -2
  137. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  138. package/.next/server/app/learn/page.js +4 -4
  139. package/.next/server/app/learn/page.js.nft.json +1 -1
  140. package/.next/server/app/learn/page_client-reference-manifest.js +1 -1
  141. package/.next/server/app/map/page.js +2 -2
  142. package/.next/server/app/map/page.js.nft.json +1 -1
  143. package/.next/server/app/map/page_client-reference-manifest.js +1 -1
  144. package/.next/server/app/page.js +2 -2
  145. package/.next/server/app/page_client-reference-manifest.js +1 -1
  146. package/.next/server/app/plan/page.js +3 -3
  147. package/.next/server/app/plan/page.js.nft.json +1 -1
  148. package/.next/server/app/plan/page_client-reference-manifest.js +1 -1
  149. package/.next/server/app/s/[token]/page.js +2 -2
  150. package/.next/server/app/s/[token]/page.js.nft.json +1 -1
  151. package/.next/server/app/s/[token]/page_client-reference-manifest.js +1 -1
  152. package/.next/server/app/settings/page.js +2 -2
  153. package/.next/server/app/settings/page.js.nft.json +1 -1
  154. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  155. package/.next/server/app-paths-manifest.json +13 -13
  156. package/.next/server/chunks/374.js +1 -0
  157. package/.next/server/chunks/4378.js +1 -1
  158. package/.next/server/chunks/{5498.js → 7720.js} +3 -3
  159. package/.next/server/chunks/8569.js +1 -0
  160. package/.next/server/chunks/8709.js +7 -6
  161. package/.next/server/chunks/9683.js +1 -1
  162. package/.next/server/middleware-build-manifest.js +1 -1
  163. package/.next/server/middleware.js +3 -3
  164. package/.next/server/pages/404.html +1 -1
  165. package/.next/server/pages/500.html +1 -1
  166. package/.next/server/server-reference-manifest.js +1 -1
  167. package/.next/server/server-reference-manifest.json +1 -1
  168. package/.next/static/{sG8lnmVWXj34F5BXWVLI_ → J6oJS9kOgjsQGP4x5VPu6}/_buildManifest.js +1 -1
  169. package/.next/static/chunks/{2505-a7eb6ea5a375d7b9.js → 2059-fba06ba63ba64522.js} +3 -3
  170. package/.next/static/chunks/5697-5b9719b81806b4cf.js +1 -0
  171. package/.next/static/chunks/6302-27c904b9f4b65236.js +1 -0
  172. package/.next/static/chunks/app/_global-error/{page-22956431d519d20f.js → page-18eb7d6678dc0ddd.js} +1 -1
  173. package/.next/static/chunks/app/api/ask/answer/{route-22956431d519d20f.js → route-18eb7d6678dc0ddd.js} +1 -1
  174. package/.next/static/chunks/app/api/ask/{route-22956431d519d20f.js → route-18eb7d6678dc0ddd.js} +1 -1
  175. package/.next/static/chunks/app/api/ask/verdict/{route-22956431d519d20f.js → route-18eb7d6678dc0ddd.js} +1 -1
  176. package/.next/static/chunks/app/api/board-annotations/[id]/route-18eb7d6678dc0ddd.js +1 -0
  177. package/.next/static/chunks/app/api/board-annotations/route-18eb7d6678dc0ddd.js +1 -0
  178. package/.next/static/chunks/app/api/board-layout/route-18eb7d6678dc0ddd.js +1 -0
  179. package/.next/static/chunks/app/api/bug-flags/[id]/route-18eb7d6678dc0ddd.js +1 -0
  180. package/.next/static/chunks/app/api/bug-flags/route-18eb7d6678dc0ddd.js +1 -0
  181. package/.next/static/chunks/app/api/changes/comment/answer/route-18eb7d6678dc0ddd.js +1 -0
  182. package/.next/static/chunks/app/api/changes/comment/claim/route-18eb7d6678dc0ddd.js +1 -0
  183. package/.next/static/chunks/app/api/changes/comment/route-18eb7d6678dc0ddd.js +1 -0
  184. package/.next/static/chunks/app/api/changes/quality/route-18eb7d6678dc0ddd.js +1 -0
  185. package/.next/static/chunks/app/api/changes/route-18eb7d6678dc0ddd.js +1 -0
  186. package/.next/static/chunks/app/api/changes/viewed/route-18eb7d6678dc0ddd.js +1 -0
  187. package/.next/static/chunks/app/api/code-graph/position/route-18eb7d6678dc0ddd.js +1 -0
  188. package/.next/static/chunks/app/api/code-graph/route-18eb7d6678dc0ddd.js +1 -0
  189. package/.next/static/chunks/app/api/context/feature/route-18eb7d6678dc0ddd.js +1 -0
  190. package/.next/static/chunks/app/api/context/file/route-18eb7d6678dc0ddd.js +1 -0
  191. package/.next/static/chunks/app/api/context/route-18eb7d6678dc0ddd.js +1 -0
  192. package/.next/static/chunks/app/api/db/arrange/route-18eb7d6678dc0ddd.js +1 -0
  193. package/.next/static/chunks/app/api/db/backfill-access/route-18eb7d6678dc0ddd.js +1 -0
  194. package/.next/static/chunks/app/api/db/position/route-18eb7d6678dc0ddd.js +1 -0
  195. package/.next/static/chunks/app/api/db/prune-planned/route-18eb7d6678dc0ddd.js +1 -0
  196. package/.next/static/chunks/app/api/db/reconcile-endpoints/route-18eb7d6678dc0ddd.js +1 -0
  197. package/.next/static/chunks/app/api/db/relations/[id]/route-18eb7d6678dc0ddd.js +1 -0
  198. package/.next/static/chunks/app/api/db/tables/[id]/route-18eb7d6678dc0ddd.js +1 -0
  199. package/.next/static/chunks/app/api/draft/approve/route-18eb7d6678dc0ddd.js +1 -0
  200. package/.next/static/chunks/app/api/draft/route-18eb7d6678dc0ddd.js +1 -0
  201. package/.next/static/chunks/app/api/draft/status/route-18eb7d6678dc0ddd.js +1 -0
  202. package/.next/static/chunks/app/api/edges/[id]/route-18eb7d6678dc0ddd.js +1 -0
  203. package/.next/static/chunks/app/api/edges/route-18eb7d6678dc0ddd.js +1 -0
  204. package/.next/static/chunks/app/api/endpoints/[id]/route-18eb7d6678dc0ddd.js +1 -0
  205. package/.next/static/chunks/app/api/entities/route-18eb7d6678dc0ddd.js +1 -0
  206. package/.next/static/chunks/app/api/ingest/route-18eb7d6678dc0ddd.js +1 -0
  207. package/.next/static/chunks/app/api/init/route-18eb7d6678dc0ddd.js +1 -0
  208. package/.next/static/chunks/app/api/lesson/close/route-18eb7d6678dc0ddd.js +1 -0
  209. package/.next/static/chunks/app/api/lesson/presence/route-18eb7d6678dc0ddd.js +1 -0
  210. package/.next/static/chunks/app/api/lesson/questions/route-18eb7d6678dc0ddd.js +1 -0
  211. package/.next/static/chunks/app/api/lesson/route-18eb7d6678dc0ddd.js +1 -0
  212. package/.next/static/chunks/app/api/lesson/save/route-18eb7d6678dc0ddd.js +1 -0
  213. package/.next/static/chunks/app/api/lesson/verdict/route-18eb7d6678dc0ddd.js +1 -0
  214. package/.next/static/chunks/app/api/linear/route-18eb7d6678dc0ddd.js +1 -0
  215. package/.next/static/chunks/app/api/linear/scopes/route-18eb7d6678dc0ddd.js +1 -0
  216. package/.next/static/chunks/app/api/linear/sync/route-18eb7d6678dc0ddd.js +1 -0
  217. package/.next/static/chunks/app/api/map/describe/route-18eb7d6678dc0ddd.js +1 -0
  218. package/.next/static/chunks/app/api/map/files/route-18eb7d6678dc0ddd.js +1 -0
  219. package/.next/static/chunks/app/api/map/finish/route-18eb7d6678dc0ddd.js +1 -0
  220. package/.next/static/chunks/app/api/map/route-18eb7d6678dc0ddd.js +1 -0
  221. package/.next/static/chunks/app/api/map/start/route-18eb7d6678dc0ddd.js +1 -0
  222. package/.next/static/chunks/app/api/map/touch-active/route-18eb7d6678dc0ddd.js +1 -0
  223. package/.next/static/chunks/app/api/mention-search/route-18eb7d6678dc0ddd.js +1 -0
  224. package/.next/static/chunks/app/api/nodes/[id]/position/route-18eb7d6678dc0ddd.js +1 -0
  225. package/.next/static/chunks/app/api/nodes/[id]/route-18eb7d6678dc0ddd.js +1 -0
  226. package/.next/static/chunks/app/api/nodes/positions/route-18eb7d6678dc0ddd.js +1 -0
  227. package/.next/static/chunks/app/api/nodes/route-18eb7d6678dc0ddd.js +1 -0
  228. package/.next/static/chunks/app/api/nodes/subtasks/route-18eb7d6678dc0ddd.js +1 -0
  229. package/.next/static/chunks/app/api/notes/[id]/route-18eb7d6678dc0ddd.js +1 -0
  230. package/.next/static/chunks/app/api/notes/route-18eb7d6678dc0ddd.js +1 -0
  231. package/.next/static/chunks/app/api/open/route-18eb7d6678dc0ddd.js +1 -0
  232. package/.next/static/chunks/app/api/plan/annotations/route-18eb7d6678dc0ddd.js +1 -0
  233. package/.next/static/chunks/app/api/plan/approve/route-18eb7d6678dc0ddd.js +1 -0
  234. package/.next/static/chunks/app/api/plan/history/route-18eb7d6678dc0ddd.js +1 -0
  235. package/.next/static/chunks/app/api/plan/markdown/route-18eb7d6678dc0ddd.js +1 -0
  236. package/.next/static/chunks/app/api/plan/presence/route-18eb7d6678dc0ddd.js +1 -0
  237. package/.next/static/chunks/app/api/plan/route-18eb7d6678dc0ddd.js +1 -0
  238. package/.next/static/chunks/app/api/plan/verdict/route-18eb7d6678dc0ddd.js +1 -0
  239. package/.next/static/chunks/app/api/preferences/route-18eb7d6678dc0ddd.js +1 -0
  240. package/.next/static/chunks/app/api/project-meta/route-18eb7d6678dc0ddd.js +1 -0
  241. package/.next/static/chunks/app/api/reset/route-18eb7d6678dc0ddd.js +1 -0
  242. package/.next/static/chunks/app/api/scope-guard/check/route-18eb7d6678dc0ddd.js +1 -0
  243. package/.next/static/chunks/app/api/share/create/route-18eb7d6678dc0ddd.js +1 -0
  244. package/.next/static/chunks/app/api/share/route-18eb7d6678dc0ddd.js +1 -0
  245. package/.next/static/chunks/app/api/stream/route-18eb7d6678dc0ddd.js +1 -0
  246. package/.next/static/chunks/app/api/tab/nav/route-18eb7d6678dc0ddd.js +1 -0
  247. package/.next/static/chunks/app/api/tab/presence/route-18eb7d6678dc0ddd.js +1 -0
  248. package/.next/static/chunks/app/api/tab/view/route-18eb7d6678dc0ddd.js +1 -0
  249. package/.next/static/chunks/app/api/telemetry/route-18eb7d6678dc0ddd.js +1 -0
  250. package/.next/static/chunks/app/api/telemetry/stats/route-18eb7d6678dc0ddd.js +1 -0
  251. package/.next/static/chunks/app/api/version/route-18eb7d6678dc0ddd.js +1 -0
  252. package/.next/static/chunks/app/api/workspace/activate/route-18eb7d6678dc0ddd.js +1 -0
  253. package/.next/static/chunks/app/api/workspace/route-18eb7d6678dc0ddd.js +1 -0
  254. package/.next/static/chunks/app/learn/page-14a297c6ff4e54f0.js +7 -0
  255. package/.next/static/chunks/app/map/page-91637b0a29494ee5.js +1 -0
  256. package/.next/static/chunks/app/plan/{page-8981b7e4db3f46e5.js → page-d4651c40e3bd751e.js} +2 -2
  257. package/.next/static/chunks/app/s/[token]/page-05344f912a83ed60.js +1 -0
  258. package/.next/static/chunks/app/settings/page-7e86fd456b92c248.js +1 -0
  259. package/.next/static/chunks/next/dist/client/components/builtin/app-error-18eb7d6678dc0ddd.js +1 -0
  260. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-18eb7d6678dc0ddd.js +1 -0
  261. package/.next/static/chunks/next/dist/client/components/builtin/not-found-18eb7d6678dc0ddd.js +1 -0
  262. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-18eb7d6678dc0ddd.js +1 -0
  263. package/.next/static/css/570399103dd72653.css +1 -0
  264. package/.next/trace +46 -46
  265. package/.next/trace-build +1 -1
  266. package/.next/types/app/api/linear/{teams → scopes}/route.ts +3 -3
  267. package/.next/types/routes.d.ts +2 -2
  268. package/.next/types/validator.ts +6 -6
  269. package/dist/bin/mcp.js +21 -21
  270. package/dist/bin/remove.js +1 -1
  271. package/drizzle/0011_graceful_eternals.sql +2 -0
  272. package/drizzle/0012_tearful_goblin_queen.sql +1 -0
  273. package/drizzle/meta/0011_snapshot.json +1939 -0
  274. package/drizzle/meta/0012_snapshot.json +1946 -0
  275. package/drizzle/meta/_journal.json +14 -0
  276. package/package.json +1 -1
  277. package/.next/server/app/api/linear/teams/route.js +0 -16
  278. package/.next/server/app/api/linear/teams/route_client-reference-manifest.js +0 -1
  279. package/.next/server/chunks/5080.js +0 -1
  280. package/.next/server/chunks/7676.js +0 -1
  281. package/.next/static/chunks/1355-aa0508464b91697c.js +0 -1
  282. package/.next/static/chunks/2108-c866f40712a96a4e.js +0 -1
  283. package/.next/static/chunks/app/api/board-annotations/[id]/route-22956431d519d20f.js +0 -1
  284. package/.next/static/chunks/app/api/board-annotations/route-22956431d519d20f.js +0 -1
  285. package/.next/static/chunks/app/api/board-layout/route-22956431d519d20f.js +0 -1
  286. package/.next/static/chunks/app/api/bug-flags/[id]/route-22956431d519d20f.js +0 -1
  287. package/.next/static/chunks/app/api/bug-flags/route-22956431d519d20f.js +0 -1
  288. package/.next/static/chunks/app/api/changes/comment/answer/route-22956431d519d20f.js +0 -1
  289. package/.next/static/chunks/app/api/changes/comment/claim/route-22956431d519d20f.js +0 -1
  290. package/.next/static/chunks/app/api/changes/comment/route-22956431d519d20f.js +0 -1
  291. package/.next/static/chunks/app/api/changes/quality/route-22956431d519d20f.js +0 -1
  292. package/.next/static/chunks/app/api/changes/route-22956431d519d20f.js +0 -1
  293. package/.next/static/chunks/app/api/changes/viewed/route-22956431d519d20f.js +0 -1
  294. package/.next/static/chunks/app/api/code-graph/position/route-22956431d519d20f.js +0 -1
  295. package/.next/static/chunks/app/api/code-graph/route-22956431d519d20f.js +0 -1
  296. package/.next/static/chunks/app/api/context/feature/route-22956431d519d20f.js +0 -1
  297. package/.next/static/chunks/app/api/context/file/route-22956431d519d20f.js +0 -1
  298. package/.next/static/chunks/app/api/context/route-22956431d519d20f.js +0 -1
  299. package/.next/static/chunks/app/api/db/arrange/route-22956431d519d20f.js +0 -1
  300. package/.next/static/chunks/app/api/db/backfill-access/route-22956431d519d20f.js +0 -1
  301. package/.next/static/chunks/app/api/db/position/route-22956431d519d20f.js +0 -1
  302. package/.next/static/chunks/app/api/db/prune-planned/route-22956431d519d20f.js +0 -1
  303. package/.next/static/chunks/app/api/db/reconcile-endpoints/route-22956431d519d20f.js +0 -1
  304. package/.next/static/chunks/app/api/db/relations/[id]/route-22956431d519d20f.js +0 -1
  305. package/.next/static/chunks/app/api/db/tables/[id]/route-22956431d519d20f.js +0 -1
  306. package/.next/static/chunks/app/api/draft/approve/route-22956431d519d20f.js +0 -1
  307. package/.next/static/chunks/app/api/draft/route-22956431d519d20f.js +0 -1
  308. package/.next/static/chunks/app/api/draft/status/route-22956431d519d20f.js +0 -1
  309. package/.next/static/chunks/app/api/edges/[id]/route-22956431d519d20f.js +0 -1
  310. package/.next/static/chunks/app/api/edges/route-22956431d519d20f.js +0 -1
  311. package/.next/static/chunks/app/api/endpoints/[id]/route-22956431d519d20f.js +0 -1
  312. package/.next/static/chunks/app/api/entities/route-22956431d519d20f.js +0 -1
  313. package/.next/static/chunks/app/api/ingest/route-22956431d519d20f.js +0 -1
  314. package/.next/static/chunks/app/api/init/route-22956431d519d20f.js +0 -1
  315. package/.next/static/chunks/app/api/lesson/close/route-22956431d519d20f.js +0 -1
  316. package/.next/static/chunks/app/api/lesson/presence/route-22956431d519d20f.js +0 -1
  317. package/.next/static/chunks/app/api/lesson/questions/route-22956431d519d20f.js +0 -1
  318. package/.next/static/chunks/app/api/lesson/route-22956431d519d20f.js +0 -1
  319. package/.next/static/chunks/app/api/lesson/save/route-22956431d519d20f.js +0 -1
  320. package/.next/static/chunks/app/api/lesson/verdict/route-22956431d519d20f.js +0 -1
  321. package/.next/static/chunks/app/api/linear/route-22956431d519d20f.js +0 -1
  322. package/.next/static/chunks/app/api/linear/sync/route-22956431d519d20f.js +0 -1
  323. package/.next/static/chunks/app/api/linear/teams/route-22956431d519d20f.js +0 -1
  324. package/.next/static/chunks/app/api/map/describe/route-22956431d519d20f.js +0 -1
  325. package/.next/static/chunks/app/api/map/files/route-22956431d519d20f.js +0 -1
  326. package/.next/static/chunks/app/api/map/finish/route-22956431d519d20f.js +0 -1
  327. package/.next/static/chunks/app/api/map/route-22956431d519d20f.js +0 -1
  328. package/.next/static/chunks/app/api/map/start/route-22956431d519d20f.js +0 -1
  329. package/.next/static/chunks/app/api/map/touch-active/route-22956431d519d20f.js +0 -1
  330. package/.next/static/chunks/app/api/mention-search/route-22956431d519d20f.js +0 -1
  331. package/.next/static/chunks/app/api/nodes/[id]/position/route-22956431d519d20f.js +0 -1
  332. package/.next/static/chunks/app/api/nodes/[id]/route-22956431d519d20f.js +0 -1
  333. package/.next/static/chunks/app/api/nodes/positions/route-22956431d519d20f.js +0 -1
  334. package/.next/static/chunks/app/api/nodes/route-22956431d519d20f.js +0 -1
  335. package/.next/static/chunks/app/api/nodes/subtasks/route-22956431d519d20f.js +0 -1
  336. package/.next/static/chunks/app/api/notes/[id]/route-22956431d519d20f.js +0 -1
  337. package/.next/static/chunks/app/api/notes/route-22956431d519d20f.js +0 -1
  338. package/.next/static/chunks/app/api/open/route-22956431d519d20f.js +0 -1
  339. package/.next/static/chunks/app/api/plan/annotations/route-22956431d519d20f.js +0 -1
  340. package/.next/static/chunks/app/api/plan/approve/route-22956431d519d20f.js +0 -1
  341. package/.next/static/chunks/app/api/plan/history/route-22956431d519d20f.js +0 -1
  342. package/.next/static/chunks/app/api/plan/markdown/route-22956431d519d20f.js +0 -1
  343. package/.next/static/chunks/app/api/plan/presence/route-22956431d519d20f.js +0 -1
  344. package/.next/static/chunks/app/api/plan/route-22956431d519d20f.js +0 -1
  345. package/.next/static/chunks/app/api/plan/verdict/route-22956431d519d20f.js +0 -1
  346. package/.next/static/chunks/app/api/preferences/route-22956431d519d20f.js +0 -1
  347. package/.next/static/chunks/app/api/project-meta/route-22956431d519d20f.js +0 -1
  348. package/.next/static/chunks/app/api/reset/route-22956431d519d20f.js +0 -1
  349. package/.next/static/chunks/app/api/scope-guard/check/route-22956431d519d20f.js +0 -1
  350. package/.next/static/chunks/app/api/share/create/route-22956431d519d20f.js +0 -1
  351. package/.next/static/chunks/app/api/share/route-22956431d519d20f.js +0 -1
  352. package/.next/static/chunks/app/api/stream/route-22956431d519d20f.js +0 -1
  353. package/.next/static/chunks/app/api/tab/nav/route-22956431d519d20f.js +0 -1
  354. package/.next/static/chunks/app/api/tab/presence/route-22956431d519d20f.js +0 -1
  355. package/.next/static/chunks/app/api/tab/view/route-22956431d519d20f.js +0 -1
  356. package/.next/static/chunks/app/api/telemetry/route-22956431d519d20f.js +0 -1
  357. package/.next/static/chunks/app/api/telemetry/stats/route-22956431d519d20f.js +0 -1
  358. package/.next/static/chunks/app/api/version/route-22956431d519d20f.js +0 -1
  359. package/.next/static/chunks/app/api/workspace/activate/route-22956431d519d20f.js +0 -1
  360. package/.next/static/chunks/app/api/workspace/route-22956431d519d20f.js +0 -1
  361. package/.next/static/chunks/app/learn/page-810296b066616806.js +0 -7
  362. package/.next/static/chunks/app/map/page-61222a6ea8681548.js +0 -1
  363. package/.next/static/chunks/app/s/[token]/page-2b9dbfee0ea27cc0.js +0 -1
  364. package/.next/static/chunks/app/settings/page-3db530e1e5c438ab.js +0 -1
  365. package/.next/static/chunks/next/dist/client/components/builtin/app-error-22956431d519d20f.js +0 -1
  366. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-22956431d519d20f.js +0 -1
  367. package/.next/static/chunks/next/dist/client/components/builtin/not-found-22956431d519d20f.js +0 -1
  368. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-22956431d519d20f.js +0 -1
  369. package/.next/static/css/153149acc4a5c145.css +0 -1
  370. /package/.next/server/app/api/linear/{teams → scopes}/route.js.nft.json +0 -0
  371. /package/.next/static/{sG8lnmVWXj34F5BXWVLI_ → J6oJS9kOgjsQGP4x5VPu6}/_ssgManifest.js +0 -0
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[44,134,204,439,730,763,1108,1145,1235,1288,1361,1403,1570,1617,1662,1805,1854,1918,1929,1979,2079,2113,2442,2449,2681,2752,2821,2922,3087,3185,3290,3519,3688,3979,4039,4284,4360,4480,4505,4636,4637,4816,4852,4896,5022,5152,5190,5412,5545,5807,5819,5884,6426,6568,6600,6630,6714,6760,6805,6819,6886,6950,6988,7137,7317,7423,7612,7691,7705,7851,7914,7973,8167,8235,8617,8650,8696,8773,8906,9140,9363,9560,9725,9751,9826,9861],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[44,134,204,439,730,763,1108,1145,1235,1288,1361,1403,1570,1617,1662,1805,1854,1918,1929,1979,2079,2113,2442,2449,2681,2752,2821,2922,3087,3185,3290,3519,3688,3979,4039,4284,4360,4480,4505,4636,4637,4816,4852,4896,5022,5152,5190,5412,5545,5807,5819,5884,6426,6568,6600,6630,6714,6760,6805,6819,6886,6950,6988,7137,7317,7423,7612,7691,7705,7851,7914,7973,8167,8235,8617,8650,8696,8773,8906,9140,9363,9560,9725,9751,9826,9861],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[44,134,204,439,730,763,1108,1145,1235,1288,1361,1403,1570,1617,1662,1805,1854,1918,1929,1979,2079,2113,2442,2449,2681,2752,2821,2922,3087,3185,3290,3519,3688,3979,4039,4284,4360,4480,4505,4636,4637,4816,4852,4896,5022,5152,5190,5412,5545,5807,5819,5884,6426,6568,6600,6630,6714,6760,6805,6819,6886,6950,6988,7137,7317,7423,7612,7691,7705,7851,7914,7973,8167,8235,8617,8650,8696,8773,8906,9140,9363,9560,9725,9751,9826,9861],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[44,134,204,439,730,763,1108,1145,1235,1288,1361,1403,1570,1617,1662,1805,1854,1918,1929,1979,2079,2113,2442,2449,2681,2752,2821,2922,3087,3185,3290,3519,3688,3979,4039,4284,4360,4480,4505,4636,4637,4816,4852,4896,5022,5152,5190,5412,5545,5807,5819,5884,6426,6568,6600,6630,6714,6760,6805,6819,6886,6950,6988,7137,7317,7423,7612,7691,7705,7851,7914,7973,8167,8235,8617,8650,8696,8773,8906,9140,9363,9560,9725,9751,9826,9861],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[44,134,204,439,730,763,1108,1145,1235,1288,1361,1403,1570,1617,1662,1805,1854,1918,1929,1979,2079,2113,2442,2449,2681,2752,2821,2922,3087,3185,3290,3519,3688,3979,4039,4284,4360,4480,4505,4636,4637,4816,4852,4896,5022,5152,5190,5412,5545,5807,5819,5884,6426,6568,6600,6630,6714,6760,6805,6819,6886,6950,6988,7137,7317,7423,7612,7691,7705,7851,7914,7973,8167,8235,8617,8650,8696,8773,8906,9140,9363,9560,9725,9751,9826,9861],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[44,134,204,439,730,763,1108,1145,1235,1288,1361,1403,1570,1617,1662,1805,1854,1918,1929,1979,2079,2113,2442,2449,2681,2752,2821,2922,3087,3185,3290,3519,3688,3979,4039,4284,4360,4480,4505,4636,4637,4816,4852,4896,5022,5152,5190,5412,5545,5807,5819,5884,6426,6568,6600,6630,6714,6760,6805,6819,6886,6950,6988,7137,7317,7423,7612,7691,7705,7851,7914,7973,8167,8235,8617,8650,8696,8773,8906,9140,9363,9560,9725,9751,9826,9861],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[44,134,204,439,730,763,1108,1145,1235,1288,1361,1403,1570,1617,1662,1805,1854,1918,1929,1979,2079,2113,2442,2449,2681,2752,2821,2922,3087,3185,3290,3519,3688,3979,4039,4284,4360,4480,4505,4636,4637,4816,4852,4896,5022,5152,5190,5412,5545,5807,5819,5884,6426,6568,6600,6630,6714,6760,6805,6819,6886,6950,6988,7137,7317,7423,7612,7691,7705,7851,7914,7973,8167,8235,8617,8650,8696,8773,8906,9140,9363,9560,9725,9751,9826,9861],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[44,134,204,439,730,763,1108,1145,1235,1288,1361,1403,1570,1617,1662,1805,1854,1918,1929,1979,2079,2113,2442,2449,2681,2752,2821,2922,3087,3185,3290,3519,3688,3979,4039,4284,4360,4480,4505,4636,4637,4816,4852,4896,5022,5152,5190,5412,5545,5807,5819,5884,6426,6568,6600,6630,6714,6760,6805,6819,6886,6950,6988,7137,7317,7423,7612,7691,7705,7851,7914,7973,8167,8235,8617,8650,8696,8773,8906,9140,9363,9560,9725,9751,9826,9861],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[44,134,204,439,730,763,1108,1145,1235,1288,1361,1403,1570,1617,1662,1805,1854,1918,1929,1979,2079,2113,2442,2449,2681,2752,2821,2922,3087,3185,3290,3519,3688,3979,4039,4284,4360,4480,4505,4636,4637,4816,4852,4896,5022,5152,5190,5412,5545,5807,5819,5884,6426,6568,6600,6630,6714,6760,6805,6819,6886,6950,6988,7137,7317,7423,7612,7691,7705,7851,7914,7973,8167,8235,8617,8650,8696,8773,8906,9140,9363,9560,9725,9751,9826,9861],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[44,134,204,439,730,763,1108,1145,1235,1288,1361,1403,1570,1617,1662,1805,1854,1918,1929,1979,2079,2113,2442,2449,2681,2752,2821,2922,3087,3185,3290,3519,3688,3979,4039,4284,4360,4480,4505,4636,4637,4816,4852,4896,5022,5152,5190,5412,5545,5807,5819,5884,6426,6568,6600,6630,6714,6760,6805,6819,6886,6950,6988,7137,7317,7423,7612,7691,7705,7851,7914,7973,8167,8235,8617,8650,8696,8773,8906,9140,9363,9560,9725,9751,9826,9861],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[44,134,204,439,730,763,1108,1145,1235,1288,1361,1403,1570,1617,1662,1805,1854,1918,1929,1979,2079,2113,2442,2449,2681,2752,2821,2922,3087,3185,3290,3519,3688,3979,4039,4284,4360,4480,4505,4636,4637,4816,4852,4896,5022,5152,5190,5412,5545,5807,5819,5884,6426,6568,6600,6630,6714,6760,6805,6819,6886,6950,6988,7137,7317,7423,7612,7691,7705,7851,7914,7973,8167,8235,8617,8650,8696,8773,8906,9140,9363,9560,9725,9751,9826,9861],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[44,134,204,439,730,763,1108,1145,1235,1288,1361,1403,1570,1617,1662,1805,1854,1918,1929,1979,2079,2113,2442,2449,2681,2752,2821,2922,3087,3185,3290,3519,3688,3979,4039,4284,4360,4480,4505,4636,4637,4816,4852,4896,5022,5152,5190,5412,5545,5807,5819,5884,6426,6568,6600,6630,6714,6760,6805,6819,6886,6950,6988,7137,7317,7423,7612,7691,7705,7851,7914,7973,8167,8235,8617,8650,8696,8773,8906,9140,9363,9560,9725,9751,9826,9861],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[44,134,204,439,730,763,1108,1145,1235,1288,1361,1403,1570,1617,1662,1805,1854,1918,1929,1979,2079,2113,2442,2449,2681,2752,2821,2922,3087,3185,3290,3519,3688,3979,4039,4284,4360,4480,4505,4636,4637,4816,4852,4896,5022,5152,5190,5412,5545,5807,5819,5884,6426,6568,6600,6630,6714,6760,6805,6819,6886,6950,6988,7137,7317,7423,7612,7691,7705,7851,7914,7973,8167,8235,8617,8650,8696,8773,8906,9140,9363,9560,9725,9751,9826,9861],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[44,134,204,439,730,763,1108,1145,1235,1288,1361,1403,1570,1617,1662,1805,1854,1918,1929,1979,2079,2113,2442,2449,2681,2752,2821,2922,3087,3185,3290,3519,3688,3979,4039,4284,4360,4480,4505,4636,4637,4816,4852,4896,5022,5152,5190,5412,5545,5807,5819,5884,6426,6568,6600,6630,6714,6760,6805,6819,6886,6950,6988,7137,7317,7423,7612,7691,7705,7851,7914,7973,8167,8235,8617,8650,8696,8773,8906,9140,9363,9560,9725,9751,9826,9861],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[44,134,204,439,730,763,1108,1145,1235,1288,1361,1403,1570,1617,1662,1805,1854,1918,1929,1979,2079,2113,2442,2449,2681,2752,2821,2922,3087,3185,3290,3519,3688,3979,4039,4284,4360,4480,4505,4636,4637,4816,4852,4896,5022,5152,5190,5412,5545,5807,5819,5884,6426,6568,6600,6630,6714,6760,6805,6819,6886,6950,6988,7137,7317,7423,7612,7691,7705,7851,7914,7973,8167,8235,8617,8650,8696,8773,8906,9140,9363,9560,9725,9751,9826,9861],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[44,134,204,439,730,763,1108,1145,1235,1288,1361,1403,1570,1617,1662,1805,1854,1918,1929,1979,2079,2113,2442,2449,2681,2752,2821,2922,3087,3185,3290,3519,3688,3979,4039,4284,4360,4480,4505,4636,4637,4816,4852,4896,5022,5152,5190,5412,5545,5807,5819,5884,6426,6568,6600,6630,6714,6760,6805,6819,6886,6950,6988,7137,7317,7423,7612,7691,7705,7851,7914,7973,8167,8235,8617,8650,8696,8773,8906,9140,9363,9560,9725,9751,9826,9861],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[44,134,204,439,730,763,1108,1145,1235,1288,1361,1403,1570,1617,1662,1805,1854,1918,1929,1979,2079,2113,2442,2449,2681,2752,2821,2922,3087,3185,3290,3519,3688,3979,4039,4284,4360,4480,4505,4636,4637,4816,4852,4896,5022,5152,5190,5412,5545,5807,5819,5884,6426,6568,6600,6630,6714,6760,6805,6819,6886,6950,6988,7137,7317,7423,7612,7691,7705,7851,7914,7973,8167,8235,8617,8650,8696,8773,8906,9140,9363,9560,9725,9751,9826,9861],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[44,134,204,439,730,763,1108,1145,1235,1288,1361,1403,1570,1617,1662,1805,1854,1918,1929,1979,2079,2113,2442,2449,2681,2752,2821,2922,3087,3185,3290,3519,3688,3979,4039,4284,4360,4480,4505,4636,4637,4816,4852,4896,5022,5152,5190,5412,5545,5807,5819,5884,6426,6568,6600,6630,6714,6760,6805,6819,6886,6950,6988,7137,7317,7423,7612,7691,7705,7851,7914,7973,8167,8235,8617,8650,8696,8773,8906,9140,9363,9560,9725,9751,9826,9861],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[44,134,204,439,730,763,1108,1145,1235,1288,1361,1403,1570,1617,1662,1805,1854,1918,1929,1979,2079,2113,2442,2449,2681,2752,2821,2922,3087,3185,3290,3519,3688,3979,4039,4284,4360,4480,4505,4636,4637,4816,4852,4896,5022,5152,5190,5412,5545,5807,5819,5884,6426,6568,6600,6630,6714,6760,6805,6819,6886,6950,6988,7137,7317,7423,7612,7691,7705,7851,7914,7973,8167,8235,8617,8650,8696,8773,8906,9140,9363,9560,9725,9751,9826,9861],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[44,134,204,439,730,763,1108,1145,1235,1288,1361,1403,1570,1617,1662,1805,1854,1918,1929,1979,2079,2113,2442,2449,2681,2752,2821,2922,3087,3185,3290,3519,3688,3979,4039,4284,4360,4480,4505,4636,4637,4816,4852,4896,5022,5152,5190,5412,5545,5807,5819,5884,6426,6568,6600,6630,6714,6760,6805,6819,6886,6950,6988,7137,7317,7423,7612,7691,7705,7851,7914,7973,8167,8235,8617,8650,8696,8773,8906,9140,9363,9560,9725,9751,9826,9861],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[44,134,204,439,730,763,1108,1145,1235,1288,1361,1403,1570,1617,1662,1805,1854,1918,1929,1979,2079,2113,2442,2449,2681,2752,2821,2922,3087,3185,3290,3519,3688,3979,4039,4284,4360,4480,4505,4636,4637,4816,4852,4896,5022,5152,5190,5412,5545,5807,5819,5884,6426,6568,6600,6630,6714,6760,6805,6819,6886,6950,6988,7137,7317,7423,7612,7691,7705,7851,7914,7973,8167,8235,8617,8650,8696,8773,8906,9140,9363,9560,9725,9751,9826,9861],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[44,134,204,439,730,763,1108,1145,1235,1288,1361,1403,1570,1617,1662,1805,1854,1918,1929,1979,2079,2113,2442,2449,2681,2752,2821,2922,3087,3185,3290,3519,3688,3979,4039,4284,4360,4480,4505,4636,4637,4816,4852,4896,5022,5152,5190,5412,5545,5807,5819,5884,6426,6568,6600,6630,6714,6760,6805,6819,6886,6950,6988,7137,7317,7423,7612,7691,7705,7851,7914,7973,8167,8235,8617,8650,8696,8773,8906,9140,9363,9560,9725,9751,9826,9861],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[44,134,204,439,730,763,1108,1145,1235,1288,1361,1403,1570,1617,1662,1805,1854,1918,1929,1979,2079,2113,2442,2449,2681,2752,2821,2922,3087,3185,3290,3519,3688,3979,4039,4284,4360,4480,4505,4636,4637,4816,4852,4896,5022,5152,5190,5412,5545,5807,5819,5884,6426,6568,6600,6630,6714,6760,6805,6819,6886,6950,6988,7137,7317,7423,7612,7691,7705,7851,7914,7973,8167,8235,8617,8650,8696,8773,8906,9140,9363,9560,9725,9751,9826,9861],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[44,134,204,439,730,763,1108,1145,1235,1288,1361,1403,1570,1617,1662,1805,1854,1918,1929,1979,2079,2113,2442,2449,2681,2752,2821,2922,3087,3185,3290,3519,3688,3979,4039,4284,4360,4480,4505,4636,4637,4816,4852,4896,5022,5152,5190,5412,5545,5807,5819,5884,6426,6568,6600,6630,6714,6760,6805,6819,6886,6950,6988,7137,7317,7423,7612,7691,7705,7851,7914,7973,8167,8235,8617,8650,8696,8773,8906,9140,9363,9560,9725,9751,9826,9861],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[44,134,204,439,730,763,1108,1145,1235,1288,1361,1403,1570,1617,1662,1805,1854,1918,1929,1979,2079,2113,2442,2449,2681,2752,2821,2922,3087,3185,3290,3519,3688,3979,4039,4284,4360,4480,4505,4636,4637,4816,4852,4896,5022,5152,5190,5412,5545,5807,5819,5884,6426,6568,6600,6630,6714,6760,6805,6819,6886,6950,6988,7137,7317,7423,7612,7691,7705,7851,7914,7973,8167,8235,8617,8650,8696,8773,8906,9140,9363,9560,9725,9751,9826,9861],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[44,134,204,439,730,763,1108,1145,1235,1288,1361,1403,1570,1617,1662,1805,1854,1918,1929,1979,2079,2113,2442,2449,2681,2752,2821,2922,3087,3185,3290,3519,3688,3979,4039,4284,4360,4480,4505,4636,4637,4816,4852,4896,5022,5152,5190,5412,5545,5807,5819,5884,6426,6568,6600,6630,6714,6760,6805,6819,6886,6950,6988,7137,7317,7423,7612,7691,7705,7851,7914,7973,8167,8235,8617,8650,8696,8773,8906,9140,9363,9560,9725,9751,9826,9861],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[44,134,204,439,730,763,1108,1145,1235,1288,1361,1403,1570,1617,1662,1805,1854,1918,1929,1979,2079,2113,2442,2449,2681,2752,2821,2922,3087,3185,3290,3519,3688,3979,4039,4284,4360,4480,4505,4636,4637,4816,4852,4896,5022,5152,5190,5412,5545,5807,5819,5884,6426,6568,6600,6630,6714,6760,6805,6819,6886,6950,6988,7137,7317,7423,7612,7691,7705,7851,7914,7973,8167,8235,8617,8650,8696,8773,8906,9140,9363,9560,9725,9751,9826,9861],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[44,134,204,439,730,763,1108,1145,1235,1288,1361,1403,1570,1617,1662,1805,1854,1918,1929,1979,2079,2113,2442,2449,2681,2752,2821,2922,3087,3185,3290,3519,3688,3979,4039,4284,4360,4480,4505,4636,4637,4816,4852,4896,5022,5152,5190,5412,5545,5807,5819,5884,6426,6568,6600,6630,6714,6760,6805,6819,6886,6950,6988,7137,7317,7423,7612,7691,7705,7851,7914,7973,8167,8235,8617,8650,8696,8773,8906,9140,9363,9560,9725,9751,9826,9861],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[44,134,204,439,730,763,1108,1145,1235,1288,1361,1403,1570,1617,1662,1805,1854,1918,1929,1979,2079,2113,2442,2449,2681,2752,2821,2922,3087,3185,3290,3519,3688,3979,4039,4284,4360,4480,4505,4636,4637,4816,4852,4896,5022,5152,5190,5412,5545,5807,5819,5884,6426,6568,6600,6630,6714,6760,6805,6819,6886,6950,6988,7137,7317,7423,7612,7691,7705,7851,7914,7973,8167,8235,8617,8650,8696,8773,8906,9140,9363,9560,9725,9751,9826,9861],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1,7 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[459],{9383:(e,t,s)=>{"use strict";s.d(t,{A:()=>n});let n=(0,s(30772).A)("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"}]])},25494:(e,t,s)=>{"use strict";s.d(t,{A:()=>n});let n=(0,s(30772).A)("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"}]])},31966:(e,t,s)=>{"use strict";s.d(t,{A:()=>n});let n=(0,s(30772).A)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]])},36925:(e,t,s)=>{"use strict";s.d(t,{I:()=>r});var n=s(29813);function r(e){let t=e.tables??[],s=new Map(t.map(e=>[e.id,e.name])),r=t.flatMap(e=>e.columns.filter(e=>e.fkTo&&s.has(e.fkTo)).map(t=>({id:`fk-${e.id}-${t.name}`,fromId:e.id,toId:t.fkTo}))),a=(0,n.to)([...e.nodes.map(e=>({id:e.id,group:e.group??"—"})),...t.map(e=>{let t,s,n,r;return{id:e.id,group:e.group??e.domain??"—",h:(t=(e,t)=>e?Math.ceil(e.length/t):0,n=(s=(e.columns??[]).slice(0,5)).reduce((e,s)=>e+25+14*t(s.note,42),0),r=28*!!((e.columns??[]).length>s.length||(e.sample?.length??0)>0),36+(e.note?12+15*t(e.note,45):0)+n+r+30)}})],[...e.edges.map(e=>({fromId:e.toId,toId:e.fromId})),...r.map(e=>({fromId:e.toId,toId:e.fromId}))]),l=new Map;for(let t of e.questions)if("node"===t.anchor.kind){let e=l.get(t.anchor.nodeId)??[];e.push(t),l.set(t.anchor.nodeId,e)}let o=e.nodes.map(e=>{let t=a.get(e.id)??{x:e.x,y:e.y},s=l.get(e.id)??[],n=s.length?"\n\n**Q&A**\n"+s.map(e=>`
2
- _${e.question}_
3
- ${e.answer??"_(waiting for the agent…)_"}`).join("\n"):"",r=`${e.detail||""}${n}`.trim();return{id:e.id,view:"ARCHITECTURE",kind:"FEATURE",cluster:e.group??null,layer:null,title:e.title,role:e.summary||null,plain:r||null,status:"KEEP",priority:2,x:t.x,y:t.y,source:"MANUAL",sourceRef:null,parentId:null,isCriterion:!1,files:e.files,bugFlags:[]}}),i=t.map(e=>{let t=a.get(e.id)??{x:0,y:0};return{id:e.id,x:t.x,y:t.y,group:e.group??e.domain??"—",data:{name:e.name,domain:e.domain??null,note:e.note,columns:e.columns.map(e=>({name:e.name,type:e.type,isPk:e.isPk,isFk:e.isFk,note:e.note,fkTo:e.fkTo?s.get(e.fkTo)??e.fkTo:void 0})),sample:e.sample}}});return{nodes:o,edges:[...e.edges.map(e=>({id:e.id,fromId:e.fromId,toId:e.toId,kind:"RELATES",label:e.verb,sourceHandle:null,targetHandle:null})),...r.map(e=>({id:e.id,fromId:e.fromId,toId:e.toId,kind:"RELATES",label:"FK",sourceHandle:null,targetHandle:null}))],tableNodes:i}}},37665:(e,t,s)=>{"use strict";s.d(t,{LearnWorkspace:()=>z});var n=s(95155),r=s(12115),a=s(73321),l=s(38096),o=s(25494),i=s(9383);let d=(0,s(30772).A)("save",[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]]);var c=s(9005),u=s(92571),x=s(40557),m=s(64577),f=s(91337),h=s(60292),p=s(51909),g=s(17356);let v="u">typeof CSS&&"highlights"in CSS&&"u">typeof Highlight,b="lesson-pending",w="lesson-ask",j="lesson-answered";function k(){return v?CSS.highlights:null}function y(...e){return new globalThis.Highlight(...e)}function N(e,t){if(!t)return null;let s=document.createTreeWalker(e,NodeFilter.SHOW_TEXT,{acceptNode:e=>e.parentElement?.closest("pre, table")?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}),n=[],r="";for(let e=s.nextNode();e;e=s.nextNode())n.push({node:e,start:r.length}),r+=e.nodeValue??"";let a=r.indexOf(t);if(a<0)return null;let l=e=>{for(let t=n.length-1;t>=0;t--)if(n[t].start<=e)return{node:n[t].node,offset:e-n[t].start};return null},o=l(a),i=l(a+t.length);if(!o||!i)return null;let d=document.createRange();return d.setStart(o.node,o.offset),d.setEnd(i.node,i.offset),d}function A({narrative:e,round:t,answered:s=[],onApi:a}){let[l,o]=(0,r.useState)([]),[i,d]=(0,r.useState)(null),[c,u]=(0,r.useState)(null),x=(0,r.useRef)(null),m=(0,r.useRef)(null);(0,r.useEffect)(()=>{o([])},[t]);let f=(0,r.useCallback)(()=>{let e=window.getSelection();if(!e||e.isCollapsed)return d(null);let t=e.toString().trim();if(!t||!x.current?.contains(e.anchorNode))return d(null);let s=e.getRangeAt(0).getBoundingClientRect();d({x:s.right+window.scrollX,y:s.top+window.scrollY,excerpt:t})},[]);(0,r.useEffect)(()=>{let e=()=>setTimeout(f,0);return document.addEventListener("mouseup",e),document.addEventListener("selectionchange",e),()=>{document.removeEventListener("mouseup",e),document.removeEventListener("selectionchange",e)}},[f]),(0,r.useEffect)(()=>{let e=e=>{let t=window.getSelection();if(!t||t.isCollapsed)return;let s=t.toString().trim();if(!s||!x.current?.contains(t.anchorNode))return;let n=document.activeElement;if(n&&/^(TEXTAREA|INPUT)$/.test(n.tagName)||1!==e.key.length||e.metaKey||e.ctrlKey||e.altKey)return;e.preventDefault(),e.stopPropagation();let r=t.getRangeAt(0);m.current=r.cloneRange();let a=r.getBoundingClientRect();u({x:a.right+window.scrollX,y:a.top+window.scrollY,excerpt:s,seed:e.key}),d(null),t.removeAllRanges()};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[]);let h=(0,r.useCallback)((e,t)=>{o(s=>[...s,{id:`tq-${Date.now()}-${Math.floor(1e6*Math.random())}`,excerpt:e,question:t}])},[]),p=(0,r.useCallback)(e=>o(t=>t.filter(t=>t.id!==e)),[]),v=(0,r.useCallback)(()=>o([]),[]);(0,r.useEffect)(()=>{let e=k();if(!c||!e)return;let t=m.current;if(t)return e.set(b,y(t)),()=>{e.delete(b)}},[c]),(0,r.useEffect)(()=>{let e=k();if(!e||!x.current)return;let t=[],n=[];for(let e of l){let s=N(x.current,e.excerpt);s&&t.push(s)}for(let e of s){let t=N(x.current,e.excerpt);t&&n.push(t)}let r=(t,s)=>s.length?e.set(t,y(...s)):e.delete(t);return r(w,t),r(j,n),()=>{e.delete(w),e.delete(j)}},[l,s,e]);let S=(0,r.useMemo)(()=>l.filter(e=>e.question.trim()).length,[l]);return(0,r.useEffect)(()=>{a?.({textQuestions:l,count:S,removeQuestion:p,clearAll:v})},[l,S,p,v,a]),(0,n.jsxs)("div",{className:"flex h-full min-h-0 flex-col",children:[(0,n.jsx)("div",{ref:x,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,n.jsx)(E,{markdown:e})}),i&&(0,n.jsx)("div",{style:{position:"fixed",left:i.x+4,top:i.y-34,zIndex:60},className:"rounded-md border border-white/15 bg-card/95 p-0.5 shadow-lg backdrop-blur",children:(0,n.jsxs)("button",{onClick:()=>{let e=window.getSelection();m.current=e&&e.rangeCount?e.getRangeAt(0).cloneRange():null,u({...i,seed:""}),d(null),e?.removeAllRanges()},title:"Ask the agent about this",className:"flex items-center gap-1 rounded px-2 py-1 text-[11px] font-semibold text-[var(--accent-2,#ff7a45)] hover:bg-[var(--accent-2,#ff7a45)]/15",children:[(0,n.jsx)(g.A,{className:"size-3.5"})," Ask"]})}),c&&(0,n.jsx)(C,{excerpt:c.excerpt,x:c.x,y:c.y,seed:c.seed,onConfirm:e=>{h(c.excerpt,e),u(null)},onCancel:()=>u(null)})]})}function C({excerpt:e,x:t,y:s,seed:a,onConfirm:l,onCancel:o}){let[i,d]=(0,r.useState)(a),u=(0,r.useRef)(null),x=()=>i.trim()?l(i.trim()):o();return(0,n.jsxs)("div",{ref:u,style:{position:"fixed",left:t+4,top:s-6,zIndex:60},className:"w-72 rounded-md border border-white/15 bg-card/95 p-1.5 shadow-xl backdrop-blur",onBlur:e=>{u.current?.contains(e.relatedTarget)||x()},children:[(0,n.jsxs)("div",{className:"mb-1 line-clamp-1 text-[10px] text-muted-foreground",children:["“",e,"”"]}),(0,n.jsx)("textarea",{autoFocus:!0,value:i,onChange:e=>d(e.target.value),onFocus:e=>e.currentTarget.setSelectionRange(i.length,i.length),placeholder:"Ask the agent… (Enter to ask \xb7 Esc to discard)",onKeyDown:e=>{e.stopPropagation(),"Enter"!==e.key||e.shiftKey?"Escape"===e.key&&(e.preventDefault(),o()):(e.preventDefault(),x())},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]"}),(0,n.jsxs)("div",{className:"mt-1 flex items-center justify-end gap-1",children:[(0,n.jsxs)("button",{type:"button",onClick:o,className:"flex items-center gap-1 rounded px-1.5 py-0.5 text-[10px] font-medium text-muted-foreground hover:bg-red-500/15 hover:text-red-300",children:[(0,n.jsx)(c.A,{className:"size-3"})," Discard"]}),(0,n.jsxs)("button",{type:"button",onClick:x,disabled:!i.trim(),className:"flex items-center gap-1 rounded bg-[var(--accent-2,#ff7a45)]/15 px-1.5 py-0.5 text-[10px] font-semibold text-[var(--accent-2,#ff7a45)] hover:bg-[var(--accent-2,#ff7a45)]/25 disabled:opacity-40",children:[(0,n.jsx)(m.A,{className:"size-3"})," Ask"]})]})]})}function E({markdown:e}){let t=(0,r.useMemo)(()=>(0,p.n$)(e),[e]);return(0,n.jsxs)("div",{className:"mx-auto w-full max-w-[66ch] space-y-4",children:[(0,n.jsx)("style",{children:`
4
- ::highlight(${b}) { background: color-mix(in srgb, var(--accent-2,#ff7a45) 30%, transparent); }
5
- ::highlight(${w}) { background: color-mix(in srgb, var(--accent-2,#ff7a45) 18%, transparent); }
6
- ::highlight(${j}) { background: color-mix(in srgb, #34d399 16%, transparent); }
7
- `}),t.map((e,t)=>(0,n.jsx)(S,{block:e,index:t},t))]})}function S({block:e,index:t}){if("code"===e.kind)return(0,n.jsx)(p.NG,{text:e.text});if("table"===e.kind)return(0,n.jsx)(p.QH,{block:e});let s=(0,p.Vq)(e.kind)?`lesson-h-${t}`:void 0;return(0,n.jsx)(n.Fragment,{children:(0,p.aM)(e,(0,n.jsx)(p.cV,{text:e.text}),"reading",s)})}var I=s(72108),q=s(36925);function z({initialLesson:e,repoFiles:t=[]}){let s=(0,a.useRouter)(),[u,x]=(0,r.useState)(e),[m,g]=(0,r.useState)(null),[v,b]=(0,r.useState)([]),[w,j]=(0,r.useState)(null),[k,y]=(0,r.useState)(""),[N,C]=(0,r.useState)(!1),[E,S]=(0,r.useState)(!1),[O,F]=(0,r.useState)(!1),[H,P]=(0,r.useState)(null),[D,_]=(0,r.useState)(null),K=u?.updatedAt??0,U=(0,r.useRef)(K);(0,r.useEffect)(()=>{U.current=K},[K]),(0,r.useEffect)(()=>{let e=()=>void fetch("/api/lesson/presence",{method:"POST",cache:"no-store",headers:(0,h.dh)((0,h.fk)())}).catch(()=>{});e();let t=setInterval(e,5e3);return()=>clearInterval(t)},[]);let V=(0,r.useCallback)(async()=>{try{let e=await fetch("/api/lesson",{cache:"no-store",headers:(0,h.dh)((0,h.fk)())});if(!e.ok)return;let t=(await e.json()).lesson;t&&t.updatedAt>U.current?(x(t),b([]),j(null),y(""),F(!1)):!t&&U.current>0&&x(null)}catch{}},[]);(0,r.useEffect)(()=>{if(H)return;let e=setInterval(()=>void V(),3e3),t=()=>{"visible"===document.visibilityState&&V()};return document.addEventListener("visibilitychange",t),window.addEventListener("focus",t),()=>{clearInterval(e),document.removeEventListener("visibilitychange",t),window.removeEventListener("focus",t)}},[H,V]);let Q=(0,r.useCallback)(()=>{let e=Date.now(),t=(m?.textQuestions??[]).filter(e=>e.question.trim()).map(t=>({id:t.id,anchor:{kind:"text",excerpt:t.excerpt},question:t.question,askedAt:e})),s=v.filter(e=>e.question.trim()).map(t=>({id:t.id,anchor:{kind:"node",nodeId:t.nodeId},question:t.question,askedAt:e}));return[...k.trim()?[{id:`oq-${e}`,anchor:{kind:"overall"},question:k.trim(),askedAt:e}]:[],...s,...t]},[m,v,k]),B=(m?.count??0)+v.filter(e=>e.question.trim()).length+ +!!k.trim(),Y=(0,r.useCallback)(async()=>{if(!E&&0!==B){S(!0);try{(await fetch("/api/lesson/questions",{method:"POST",headers:{"content-type":"application/json",...(0,h.dh)((0,h.fk)())},body:JSON.stringify({questions:Q()})})).ok&&(F(!0),C(!1),j(null))}finally{S(!1)}}},[E,B,Q]),X=(0,r.useCallback)(async()=>{let e=await fetch("/api/lesson/save",{method:"POST",headers:(0,h.dh)((0,h.fk)())});e.ok&&(_((await e.json()).lessonId??u?.id??null),P("saved"))},[u]),W=(0,r.useCallback)(async()=>{await fetch("/api/lesson/close",{method:"POST",headers:(0,h.dh)((0,h.fk)())}).catch(()=>{}),P("closed")},[]),J=(0,r.useCallback)((e,t)=>{b(s=>[...s,{id:`nq-${Date.now()}-${Math.floor(1e6*Math.random())}`,nodeId:e,question:t}])},[]),G=(0,r.useCallback)(e=>{let t=e.replace(/^[^:]+:\s*/,"").trim(),s=u?.nodes.find(e=>e.title===t);s&&j(s.id)},[u]),Z=(0,r.useMemo)(()=>(u?.questions??[]).filter(e=>"text"===e.anchor.kind&&e.answer).map(e=>({excerpt:"text"===e.anchor.kind?e.anchor.excerpt:"",answer:e.answer??""})),[u]),ee=(0,r.useMemo)(()=>(u?.questions??[]).filter(e=>"overall"===e.anchor.kind),[u]),et=(0,r.useMemo)(()=>u?(0,q.I)(u):{nodes:[],edges:[],tableNodes:[]},[u]);if(H)return(0,n.jsx)($,{ended:H,savedId:D,onBrowse:()=>s.push("/learn?view=library")});if(!u)return(0,n.jsx)(L,{});let es=w?u.nodes.find(e=>e.id===w)?.title??"":"";return(0,n.jsx)(p.Ue,{files:t,children:(0,n.jsxs)("div",{className:"relative flex h-screen flex-col",children:[O&&(0,n.jsx)(M,{onDismiss:()=>F(!1)}),(0,n.jsx)("div",{className:"pointer-events-none fixed right-3 top-3 z-30 flex items-center gap-2",children:(0,n.jsxs)("div",{className:"glass pointer-events-auto flex h-10 items-center gap-0.5 rounded-full px-1",children:[(0,n.jsx)("button",{onClick:()=>s.push("/learn?view=library"),title:"Saved lessons",className:"flex size-8 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-white/[0.06] hover:text-foreground",children:(0,n.jsx)(l.A,{className:"size-3.5"})}),(0,n.jsx)("span",{"aria-hidden":!0,className:"mx-1 h-5 w-px bg-white/10"}),(0,n.jsxs)("button",{onClick:()=>C(e=>!e),title:"Ask an overall question",className:(0,f.cn)("relative flex size-8 items-center justify-center rounded-full transition-colors",N?"bg-white/10 text-foreground":k.trim()?"text-[var(--accent-2,#ff7a45)]":"text-muted-foreground hover:bg-white/[0.06] hover:text-foreground"),children:[(0,n.jsx)(o.A,{className:"size-3.5"}),k.trim()&&(0,n.jsx)("span",{className:"absolute -right-0.5 -top-0.5 size-2 rounded-full bg-[var(--accent-2,#ff7a45)]"})]}),(0,n.jsx)("span",{"aria-hidden":!0,className:"mx-1 h-5 w-px bg-white/10"}),(0,n.jsxs)("button",{onClick:()=>void Y(),disabled:E||0===B,title:0===B?"Highlight text or a node to ask, then send":"Send your questions to the agent",className:(0,f.cn)("flex items-center gap-1 rounded-full px-2.5 py-1 text-[11px] font-semibold transition-colors",0===B?"text-muted-foreground opacity-50":"text-[var(--accent-2,#ff7a45)] hover:bg-[var(--accent-2,#ff7a45)]/15"),children:[(0,n.jsx)(i.A,{className:"size-3"})," Send",B>0?` (${B})`:""]}),(0,n.jsxs)("button",{onClick:()=>void X(),title:"Save this lesson to your library",className:"flex 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",children:[(0,n.jsx)(d,{className:"size-3"})," Save"]}),(0,n.jsxs)("button",{onClick:()=>void W(),title:"Close without saving",className:"flex 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",children:[(0,n.jsx)(c.A,{className:"size-3"})," Close"]})]})}),N&&(0,n.jsx)(T,{label:"Overall question",placeholder:"A question about the whole topic…",value:k,onChange:y,onClose:()=>C(!1)}),w&&(0,n.jsx)(T,{label:`Ask about “${es}”`,placeholder:"Your question about this node…",value:"",submitLabel:"Add question",onSubmit:e=>{J(w,e),j(null)},onClose:()=>j(null)}),(0,n.jsxs)("div",{className:"flex min-h-0 flex-1",children:[(0,n.jsxs)("div",{className:"relative flex min-w-0 flex-1 flex-col bg-background",style:{width:"50%"},children:[(0,n.jsx)("div",{className:"min-h-0 flex-1",children:(0,n.jsx)(A,{narrative:u.narrative,round:K,answered:Z,onApi:g})}),ee.length>0&&(0,n.jsx)(R,{questions:ee})]}),(0,n.jsx)("div",{className:"w-px shrink-0 bg-white/5"}),(0,n.jsx)("div",{className:"relative min-w-0 flex-1 bg-background",style:{width:"50%"},children:(0,n.jsx)(I.MapClient,{view:"ARCHITECTURE",nodes:et.nodes,edges:et.edges,tableNodes:et.tableNodes,embedded:!0,readOnly:!0,minimap:!0,staticEdgeLabels:!0,hasFrontend:!1,onAskAgent:G})})]})]})})}function T({label:e,placeholder:t,value:s,submitLabel:a,onChange:l,onSubmit:o,onClose:i}){let[d,u]=(0,r.useState)(s),x=l?s:d;return(0,n.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,n.jsxs)("div",{className:"mb-1 flex items-center justify-between",children:[(0,n.jsx)("span",{className:"text-[10px] font-semibold uppercase tracking-wide text-muted-foreground [overflow-wrap:anywhere]",children:e}),(0,n.jsx)("button",{onClick:i,title:"Close",className:"rounded p-0.5 text-muted-foreground hover:text-foreground",children:(0,n.jsx)(c.A,{className:"size-3.5"})})]}),(0,n.jsx)("textarea",{autoFocus:!0,value:x,onChange:e=>{let t;return t=e.target.value,l?l(t):u(t)},onKeyDown:e=>{o&&"Enter"===e.key&&!e.shiftKey&&(e.preventDefault(),x.trim()&&o(x.trim()))},placeholder:t,rows:3,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-[var(--accent-2,#ff7a45)]/40"}),o&&(0,n.jsx)("button",{onClick:()=>x.trim()&&o(x.trim()),disabled:!x.trim(),className:"mt-1.5 w-full rounded-md bg-[var(--accent-2,#ff7a45)]/15 px-2 py-1 text-[11px] font-semibold text-[var(--accent-2,#ff7a45)] transition-colors hover:bg-[var(--accent-2,#ff7a45)]/25 disabled:opacity-40",children:a??"Add"})]})}function R({questions:e}){return(0,n.jsxs)("div",{className:"max-h-44 shrink-0 space-y-1.5 overflow-y-auto border-t border-white/10 bg-background/60 px-5 py-3",children:[(0,n.jsxs)("div",{className:"flex items-center gap-1.5 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground",children:[(0,n.jsx)(o.A,{className:"size-3"}),"Overall Q&A"]}),e.map(e=>(0,n.jsxs)("div",{className:"rounded-md border border-white/10 bg-background/40 p-2",children:[(0,n.jsx)("div",{className:"text-[12px] font-medium text-foreground",children:e.question}),e.answer?(0,n.jsx)("div",{className:"mt-1 text-[12px] leading-relaxed text-foreground/85",children:(0,n.jsx)(p.pO,{markdown:e.answer,variant:"compact"})}):(0,n.jsxs)("div",{className:"mt-1 flex items-center gap-1 text-[11px] text-muted-foreground/70",children:[(0,n.jsx)(u.A,{className:"size-3 animate-spin"})," waiting for the agent…"]})]},e.id))]})}function M({onDismiss:e}){return(0,n.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,n.jsx)("div",{className:"flex size-12 items-center justify-center rounded-full bg-[var(--accent-2,#ff7a45)]/15",children:(0,n.jsx)(u.A,{className:"size-6 animate-spin text-[var(--accent-2,#ff7a45)]"})}),(0,n.jsxs)("div",{className:"space-y-1",children:[(0,n.jsx)("h2",{className:"text-lg font-semibold text-foreground",children:"Questions sent"}),(0,n.jsx)("p",{className:"max-w-sm text-sm text-muted-foreground",children:"Your terminal session is answering. The updated lesson will appear here automatically — if the session finished its turn, nudge it in the terminal."})]}),(0,n.jsx)("button",{onClick:e,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:"Keep reading meanwhile"})]})}function L(){return(0,n.jsxs)("div",{className:"flex h-screen flex-col items-center justify-center gap-3 px-6 text-center",children:[(0,n.jsx)(x.A,{className:"size-8 text-muted-foreground/60"}),(0,n.jsx)("h2",{className:"text-lg font-semibold text-foreground",children:"No lesson open"}),(0,n.jsxs)("p",{className:"max-w-md text-sm text-muted-foreground",children:["Ask your terminal session to ",(0,n.jsx)("em",{children:"explain"})," or ",(0,n.jsx)("em",{children:"teach"})," you part of the codebase — it opens an interactive lesson here. You highlight text to ask questions; it answers on the board."]})]})}function $({ended:e,savedId:t,onBrowse:s}){return(0,n.jsxs)("div",{className:"flex h-screen flex-col items-center justify-center gap-5 px-6 text-center",children:[(0,n.jsx)("div",{className:(0,f.cn)("flex size-12 items-center justify-center rounded-full","saved"===e?"bg-emerald-500/15":"bg-white/10"),children:"saved"===e?(0,n.jsx)(m.A,{className:"size-6 text-emerald-300"}):(0,n.jsx)(c.A,{className:"size-6 text-muted-foreground"})}),(0,n.jsxs)("div",{className:"space-y-1",children:[(0,n.jsx)("h2",{className:"text-lg font-semibold text-foreground",children:"saved"===e?"Lesson saved":"Lesson closed"}),(0,n.jsx)("p",{className:"max-w-sm text-sm text-muted-foreground",children:"saved"===e?"It's in your library — reopen it anytime.":"Closed without saving."})]}),(0,n.jsxs)("button",{onClick:s,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:[(0,n.jsx)(l.A,{className:"mr-1 inline size-3.5"})," ",t?"Browse the library":"Open the library"]})]})}},38096:(e,t,s)=>{"use strict";s.d(t,{A:()=>n});let n=(0,s(30772).A)("library",[["path",{d:"m16 6 4 14",key:"ji33uf"}],["path",{d:"M12 6v14",key:"1n7gus"}],["path",{d:"M8 8v12",key:"1gg7y9"}],["path",{d:"M4 4v16",key:"6qkkli"}]])},38464:(e,t,s)=>{"use strict";s.d(t,{LessonLibraryView:()=>f});var n=s(95155),r=s(12115),a=s(73321),l=s(38096),o=s(40557),i=s(31966),d=s(60292),c=s(51909),u=s(72108),x=s(36925);function m(e){let t=new URLSearchParams,s=(0,d.fk)();for(let[n,r]of(s&&t.set("ws",s),Object.entries(e)))t.set(n,r);return`/learn?${t.toString()}`}function f({lessons:e,selected:t,repoFiles:s=[]}){return t?(0,n.jsx)(p,{lesson:t,repoFiles:s}):(0,n.jsx)(h,{lessons:e})}function h({lessons:e}){let t=(0,a.useRouter)();return(0,n.jsxs)("div",{className:"mx-auto flex h-screen w-full max-w-3xl flex-col px-6 pt-20",children:[(0,n.jsxs)("div",{className:"mb-5 flex items-center justify-between",children:[(0,n.jsxs)("h1",{className:"flex items-center gap-2 text-lg font-semibold text-foreground",children:[(0,n.jsx)(l.A,{className:"size-5 text-[var(--accent-2,#ff7a45)]"})," Lessons"]}),(0,n.jsx)("button",{onClick:()=>t.push(m({})),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:"Back to current lesson"})]}),0===e.length?(0,n.jsxs)("div",{className:"rounded-lg border border-dashed border-white/10 px-4 py-12 text-center text-sm text-muted-foreground",children:["No saved lessons yet. Ask your terminal session to explain something, then click ",(0,n.jsx)("b",{children:"Save"}),"."]}):(0,n.jsx)("div",{className:"min-h-0 flex-1 space-y-2 overflow-y-auto pb-6",children:e.map(e=>(0,n.jsxs)("button",{onClick:()=>t.push(m({view:"library",id:e.id})),className:"block w-full rounded-lg border border-white/10 bg-white/[0.02] p-3 text-left transition-colors hover:border-white/20 hover:bg-white/[0.04]",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2 text-[14px] font-semibold text-foreground",children:[(0,n.jsx)(o.A,{className:"size-4 text-[var(--accent-2,#ff7a45)]"})," ",e.title]}),e.topic&&e.topic!==e.title&&(0,n.jsx)("div",{className:"mt-0.5 truncate text-[12px] text-muted-foreground",children:e.topic}),(0,n.jsxs)("div",{className:"mt-1 text-[11px] text-muted-foreground/70",children:[e.nodeCount," node",1===e.nodeCount?"":"s"," \xb7 ",e.questionCount," question",1===e.questionCount?"":"s"," \xb7 saved ",new Date(e.updatedAt).toLocaleDateString()]})]},e.id))})]})}function p({lesson:e,repoFiles:t}){let s=(0,a.useRouter)(),l=(0,r.useMemo)(()=>new Map(e.nodes.map(e=>[e.id,e.title])),[e.nodes]),o=(0,r.useMemo)(()=>(0,x.I)(e),[e]);return(0,n.jsx)(c.Ue,{files:t,children:(0,n.jsxs)("div",{className:"relative flex h-screen flex-col",children:[(0,n.jsx)("div",{className:"pointer-events-none fixed right-3 top-3 z-30",children:(0,n.jsxs)("button",{onClick:()=>s.push(m({view:"library"})),className:"glass pointer-events-auto flex h-10 items-center gap-1.5 rounded-full px-3 text-[12px] font-medium text-muted-foreground transition-colors hover:bg-white/[0.06] hover:text-foreground",children:[(0,n.jsx)(i.A,{className:"size-3.5"})," Library"]})}),(0,n.jsxs)("div",{className:"flex min-h-0 flex-1",children:[(0,n.jsxs)("div",{className:"flex min-w-0 flex-1 flex-col overflow-y-auto bg-background px-5 pb-6 pt-16",style:{width:"50%"},children:[(0,n.jsx)(c.pO,{markdown:e.narrative,variant:"reading"}),e.questions.length>0&&(0,n.jsxs)("div",{className:"mx-auto mt-6 w-full max-w-[66ch] space-y-2",children:[(0,n.jsx)("div",{className:"text-[11px] font-semibold uppercase tracking-wide text-muted-foreground",children:"Q&A"}),e.questions.map(e=>(0,n.jsx)(g,{q:e,nodeTitle:"node"===e.anchor.kind?l.get(e.anchor.nodeId):void 0},e.id))]})]}),(0,n.jsx)("div",{className:"w-px shrink-0 bg-white/5"}),(0,n.jsx)("div",{className:"min-w-0 flex-1 bg-background",style:{width:"50%"},children:(0,n.jsx)(u.MapClient,{view:"ARCHITECTURE",nodes:o.nodes,edges:o.edges,tableNodes:o.tableNodes,embedded:!0,readOnly:!0,minimap:!0,staticEdgeLabels:!0,hasFrontend:!1})})]})]})})}function g({q:e,nodeTitle:t}){let s="overall"===e.anchor.kind?"Overall":"node"===e.anchor.kind?t??"Node":`“${e.anchor.excerpt.slice(0,48)}…”`;return(0,n.jsxs)("div",{className:"rounded-md border border-white/10 bg-background/40 p-2",children:[(0,n.jsx)("div",{className:"text-[10px] uppercase tracking-wide text-muted-foreground/80",children:s}),(0,n.jsx)("div",{className:"mt-0.5 text-[12px] font-medium text-foreground",children:e.question}),e.answer&&(0,n.jsx)("div",{className:"mt-1 text-[12px] leading-relaxed text-foreground/85",children:(0,n.jsx)(c.pO,{markdown:e.answer,variant:"compact"})})]})}},40557:(e,t,s)=>{"use strict";s.d(t,{A:()=>n});let n=(0,s(30772).A)("book-open",[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]])},73206:(e,t,s)=>{Promise.resolve().then(s.bind(s,37665)),Promise.resolve().then(s.bind(s,38464))}},e=>{e.O(0,[2574,3862,5004,277,8500,4888,7424,9887,5957,1355,2505,3908,2108,1909,8441,3794,7358],()=>e(e.s=73206)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5823],{27950:(e,t,o)=>{Promise.resolve().then(o.bind(o,44853)),Promise.resolve().then(o.bind(o,62079)),Promise.resolve().then(o.bind(o,72108)),Promise.resolve().then(o.bind(o,77260))},62079:(e,t,o)=>{"use strict";o.d(t,{FilesMapClient:()=>U});var s=o(95155),n=o(12115),r=o(80277),l=o(81750),a=o(6266),i=o(7679),d=o(98766),c=o(15629),u=o(79176),p=o(2982),h=o(64385);o(53255);var f=o(17356),m=o(24413),x=o(18986),g=o(9005),b=o(25583),y=o(82099),w=o(62311),j=o(9991),k=o(47409),N=o(91157),v=o(56895),M=o(16607),S=o(14983);let C=/(^|\/)tests?\/|\.(test|spec)\.[jt]sx?$/i;var A=o(44267),$=o(70947),z=o(98238),E=o(56614),D=o(28161);let I=/\.(py|go|rb|rs|java|php|ex|exs)$/i,R=/(^|\/)(app\/api|pages\/api|migrations|bin)\/|(^|\/)instrumentation\.[^/]+$/,O=e=>e.includes("/")?e.slice(0,e.indexOf("/")):"(root)";function T(e){let t=Math.max(14,.35*e.length),o=new Map;for(let t of e)o.set(t,O(t));for(let e=0;e<6;e++){let e=new Map;for(let t of o.values())e.set(t,(e.get(t)??0)+1);let s=!1;for(let[n,r]of o){if((e.get(r)??0)<=t||!n.startsWith(`${r}/`))continue;let l=n.slice(r.length+1);l.includes("/")&&(o.set(n,`${r}/${l.slice(0,l.indexOf("/"))}`),s=!0)}if(!s)break}return o}var P=o(29523),Z=o(70221),F=o(12410),L=o(91337);function _(e){return 5+.5*Math.min(e,26)}let W={file:(0,n.memo)(function({data:e}){let t=(0,P.k)(Z.kz),o=!!e.touched,n=e.recency??0,r=e.inDegree??0,i=_(r),d=e.layer??null,c=2*!!d,u=r>0?` \xb7 imported by ${r}`:"",p=d?` \xb7 ${"fullstack"===d?"shared (used by frontend + backend)":D.YG[d].label.toLowerCase()}`:"",h=o?`${e.tooltip} \xb7 edited ${e.count??0}\xd7 this session${u}${p}`:e.untested?`${e.tooltip} \xb7 no test imports this file${u}${p}`:`${e.tooltip}${u}${p}`;return(0,s.jsxs)("div",{title:h,className:"relative flex flex-col items-center",children:[(0,s.jsx)(l.h7,{type:"target",position:a.yX.Top,isConnectable:!1,className:"!h-0 !w-0 !min-w-0 !border-0 !bg-transparent",style:{top:i+c,left:"50%"}}),(0,s.jsx)("span",{"aria-hidden":!0,className:(0,L.cn)("rounded-full",e.isNewest&&"animate-touch-pulse"),style:{padding:c,background:d?(0,D.A6)(d):void 0,boxShadow:o?`0 0 ${8+Math.round(14*n)}px ${2+Math.round(3*n)}px rgba(45,212,191,${(.35+.45*n).toFixed(2)})`:e.untested?"0 0 0 2px rgba(251,191,36,0.65)":"none"},children:(0,s.jsx)("span",{"aria-hidden":!0,className:"block rounded-full",style:{width:2*i,height:2*i,backgroundColor:e.dirColor}})}),o&&(e.count??0)>0&&(0,s.jsx)("span",{"aria-hidden":!0,className:"absolute -right-2 -top-2 flex h-3.5 min-w-3.5 items-center justify-center rounded-full bg-teal-400 px-0.5 text-[8px] font-bold text-background ring-1 ring-background",children:e.count}),("full"===t||"mid"===t&&r>=4)&&(0,s.jsx)("span",{className:(0,L.cn)("pointer-events-none mt-1 max-w-44 truncate text-[10px] leading-tight",o?"font-semibold text-teal-100":"text-foreground/75"),children:e.label}),(0,s.jsx)(l.h7,{type:"source",position:a.yX.Bottom,isConnectable:!1,className:"!h-0 !w-0 !min-w-0 !border-0 !bg-transparent",style:{top:i+c,bottom:"auto",left:"50%"}})]})})};function B({regions:e,dominant:t}){return(0,s.jsx)(l.DX,{children:e.map(e=>{let o=t.get(e.key);return o&&"fullstack"!==o?(0,s.jsx)("div",{style:{position:"absolute",transform:`translate(${e.x-.15*e.w}px, ${e.y-.15*e.h}px)`,width:1.3*e.w,height:1.3*e.h,pointerEvents:"none",zIndex:0,background:`radial-gradient(closest-side, ${D.ZD[o]} 0%, transparent 72%)`,opacity:.1}},e.key):null})})}function U({files:e,edges:t,touched:o,hasFrontend:a=!1,classificationRoots:O=[]}){let H,X=(0,n.useMemo)(()=>(function(e,t){let o=function(e){if(!e?.length)return[];let t=new Set;for(let o of e){let e=o.trim().replace(/^\/+|\/+$/g,"");e&&t.add(e)}return[...t]}(t);if(!o.length)return T(e);let s=new Map,n=[];for(let t of e){let e=function(e,t){let o=null;for(let s of t)(e===s||e.startsWith(`${s}/`))&&(!o||s.length>o.length)&&(o=s);return o}(t,o);e?s.set(t,function(e,t){if(e===t||!e.startsWith(`${t}/`))return t;let o=e.slice(t.length+1);return o.includes("/")?`${t}/${o.slice(0,o.indexOf("/"))}`:t}(t,e)):n.push(t)}for(let[e,t]of T(n))s.set(e,t);return s})(e.map(e=>e.path),O),[e,O]),G=(0,n.useMemo)(()=>(function(e,t,o){let s=function(e){let t=new Map;for(let o of e.values())t.set(o,(t.get(o)??0)+1);let o=Array.from(t.entries()).sort((e,t)=>t[1]-e[1]||e[0].localeCompare(t[0])),s=Math.max(1,Math.ceil(Math.sqrt(2.5*o.length))),n=new Map;return o.forEach(([e],t)=>{n.set(e,{x:t%s*1250,y:950*Math.floor(t/s)})}),n}(o),n=e=>s.get(o.get(e)??"(root)"),r=e.map(e=>{let t=function(e){let t=0x811c9dc5;for(let o=0;o<e.length;o++)t=(t^e.charCodeAt(o))*0x1000193>>>0;return{x:(t%10007/10007-.5)*900,y:((t>>>13)%10007/10007-.5)*900}}(e.path),o=n(e.path);return{id:e.path,x:o.x+.5*t.x,y:o.y+.5*t.y,pinned:!1,radius:_(e.inDegree??0)+22}}),l=t.filter(e=>e.from!==e.to).map(e=>({source:e.from,target:e.to})),a=(0,i.A)(r).force("link",(0,d.A)(l).id(e=>e.id).distance(100).strength(e=>{let t="object"==typeof e.source?e.source.id:String(e.source),s="object"==typeof e.target?e.target.id:String(e.target);return o.get(t)===o.get(s)?.5:.02})).force("charge",(0,c.A)().strength(-260).distanceMax(800)).force("collide",(0,u.A)().radius(e=>e.radius).strength(.6)).force("clusterX",(0,p.A)(e=>n(e.id).x).strength(.1)).force("clusterY",(0,h.A)(e=>n(e.id).y).strength(.115)).stop();for(let e=0;e<500;e++)a.tick();let f=new Map;for(let e of r)f.set(e.id,{x:e.x??0,y:e.y??0});return f})(e,t,X),[e,t,X]),q=(0,n.useMemo)(()=>(function(e,t){var o;let s=new Set;for(let e of t)o=e.from,C.test(o)&&s.add(e.to);let n=new Set;for(let t of e)C.test(t)||s.has(t)||n.add(t);return n})(e.map(e=>e.path),t),[e,t]),J=(0,n.useMemo)(()=>a?function(e,t){let o=new Map,s=new Map;for(let e of t){let t=s.get(e.from);t?t.push(e.to):s.set(e.from,[e.to])}let n=new Map;for(let t of e){let e=R.test(t)?"backend":D.An.test(t)?"frontend":I.test(t)?"backend":null;o.set(t,e),e&&n.set(t,e)}let r=e=>{let t=new Set,o=[];for(let[t,s]of n)s===e&&o.push(t);for(;o.length;){let e=o.pop();for(let n of s.get(e)??[])t.has(n)||(t.add(n),o.push(n))}return t},l=r("frontend"),a=r("backend");for(let t of e){if(o.get(t))continue;let e=l.has(t),s=a.has(t);e&&s?o.set(t,"fullstack"):e?o.set(t,"frontend"):s&&o.set(t,"backend")}return o}(e.map(e=>e.path),t):null,[a,e,t]),K=(0,n.useMemo)(()=>{let e=new Map,t=Object.entries(o??{});if(!t.length)return e;let s=t.map(([,e])=>e.lastAt),n=Math.max(...s),r=Math.min(...s),l=n-r||1,a=t[0][0],i=t[0][1].lastAt;for(let[e,o]of t)o.lastAt>=i&&(a=e,i=o.lastAt);for(let[o,s]of t)e.set(o,{count:s.count,recency:(s.lastAt-r)/l,isNewest:o===a});return e},[o]),Q=K.size>0,Y=(0,n.useMemo)(()=>Array.from(K.entries()).map(([e,t])=>({path:e,count:t.count})),[K]),ee=(0,n.useMemo)(()=>e.map(e=>{let t=G.get(e.path)??{x:e.x,y:e.y},o=e.path.lastIndexOf("/"),s=o>=0?e.path.slice(o+1):e.path,n=K.get(e.path);return{id:e.path,type:"file",position:t,data:{label:s,tooltip:e.path,untested:q.has(e.path),inDegree:e.inDegree??0,dirColor:(0,F.i3)(X.get(e.path)??"(root)"),layer:J?.get(e.path)??null,touched:!!n,count:n?.count??0,recency:n?.recency??0,isNewest:n?.isNewest??!1}}}),[e,G,q,K,J,X]),et=(0,n.useMemo)(()=>t.map(e=>({id:`${e.from}|${e.to}`,source:e.from,target:e.to,type:"straight",selectable:!1,focusable:!1,style:{pointerEvents:"none",...e.circular?{stroke:"#f87171",strokeDasharray:"5 3",strokeWidth:1.5,opacity:.6}:{stroke:"#8b8b94",strokeWidth:1,opacity:.3}}})),[t]),[eo,es]=(0,n.useState)(ee),[en,er]=(0,n.useState)(et),[el,ea]=(0,n.useState)(null),[ei,ed]=(0,n.useState)(null),[ec,eu]=(0,n.useState)(null),[ep,eh]=(0,n.useState)(!1),[ef,em]=(0,n.useState)(!1),[ex,eg]=(0,n.useState)(null),[eb,ey]=(0,n.useState)(!1),[ew,ej]=(0,n.useState)(""),[ek,eN]=(0,n.useState)(!1),[ev,eM]=(0,n.useState)("full"),eS=(0,n.useRef)(null),{tool:eC,setTool:eA,flowProps:e$}=(0,r.e)(),ez=(0,n.useCallback)(e=>{ea(e),eu(null);let t=eS.current?.getNode(e);t&&eS.current&&eS.current.setCenter(t.position.x+40,t.position.y+12,{zoom:1.4,duration:600})},[]),eE=(0,n.useCallback)(()=>{ea(null),eu(null);let e=!ef;if(em(e),ey(e),e&&eS.current){let e=Array.from(K.keys()).map(e=>({id:e}));e.length&&eS.current.fitView({nodes:e,duration:600,padding:.4})}},[ef,K]),eD=(0,n.useMemo)(()=>(0,N.b)(e,t,X),[e,t,X]),eI=(0,n.useCallback)(e=>{eS.current&&(e.focusIds.length?eS.current.fitView({nodes:e.focusIds.map(e=>({id:e})),duration:700,padding:.3,maxZoom:1.1}):eS.current.fitView({duration:700,padding:.1}))},[]),eR=(0,v.W)(eD,eI);(0,n.useEffect)(()=>eN(!0),[]),(0,n.useEffect)(()=>es(ee),[ee]),(0,n.useEffect)(()=>er(et),[et]);let eO=(0,n.useCallback)(e=>es(t=>(0,l._0)(e,t)),[]),eT=(0,n.useCallback)(e=>er(t=>(0,l.zW)(e,t)),[]),eP=(0,n.useCallback)((e,t,o)=>{fetch("/api/code-graph/position",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({path:e,x:t,y:o})})},[]),eZ=(0,n.useMemo)(()=>new Set(t.filter(e=>e.circular).map(e=>`${e.from}|${e.to}`)),[t]),eF=(0,n.useMemo)(()=>{let e=new Set;for(let o of t)o.circular&&(e.add(o.from),e.add(o.to));return e},[t]),eL=el??ei,e_=ew.trim().length>0,eW=(0,n.useMemo)(()=>{if(!e_)return null;let t=new Set;for(let o of e)(0,S.Qk)((0,S.zn)(o),ew)&&t.add(o.path);return t},[e,ew,e_]),eB=(0,n.useMemo)(()=>e_?(0,S.r2)(e,ew,e=>(0,S.zn)(e),e=>({id:e.path,label:e.path,sublabel:e.lang??void 0,kind:"file"})):[],[e,ew,e_]),eU=(0,n.useMemo)(()=>{if(ec){let e=en.find(e=>e.id===ec);return e?new Set([e.source,e.target]):null}if(eL){let e=new Set([eL]);for(let o of t)o.from===eL&&e.add(o.to),o.to===eL&&e.add(o.from);return e}return ep?eF:ef&&Q?new Set(K.keys()):null},[eL,ec,ep,eF,t,en,ef,Q,K]),eV=eR.focusIds,eH=eV??eW??eU,eX=eW??eV,eG=(0,n.useMemo)(()=>{if(!ex||!J)return null;let t=new Set;for(let o of e)(0,z.F)(ex,J.get(o.path)??null)||t.add(o.path);return t},[ex,J,e]),eq=(0,n.useMemo)(()=>eH?eo.map(e=>{let t=eH.has(e.id);return{...e,zIndex:t&&eX?10:e.zIndex,style:{...e.style,opacity:t?1:.15,boxShadow:t&&eX?S.RU:e.style?.boxShadow,borderRadius:t&&eX?9999:e.style?.borderRadius,transition:"opacity 120ms, box-shadow 120ms"}}}):eG?eo.map(e=>eG.has(e.id)?{...e,style:{...e.style,opacity:.15,transition:"opacity 120ms"}}:e):eo,[eo,eH,eX,eG]),eJ=(0,n.useMemo)(()=>eV?en.map(e=>eV.has(e.source)&&eV.has(e.target)?{...e,style:{...e.style,stroke:"#e4e4e7",opacity:.9,strokeWidth:1.4}}:{...e,style:{...e.style,opacity:.05}}):eW?en.map(e=>eW.has(e.source)&&eW.has(e.target)?{...e,style:{...e.style,stroke:"#e4e4e7",opacity:.95,strokeWidth:1.6}}:{...e,style:{...e.style,opacity:.05}}):eL||ec||ep||ef?en.map(e=>{let t=!1;return ec?t=e.id===ec:eL?t=e.source===eL||e.target===eL:ep?t=eZ.has(e.id):ef&&(t=K.has(e.source)&&K.has(e.target)),t?{...e,style:{...e.style,stroke:"#e4e4e7",opacity:.95,strokeWidth:1.6}}:{...e,style:{...e.style,opacity:.05}}}):eG?en.map(e=>eG.has(e.source)||eG.has(e.target)?{...e,style:{...e.style,opacity:.05}}:e):en,[en,eL,ec,ep,eZ,ef,K,eW,eG,eV]),eK=(0,n.useMemo)(()=>{let e=eo.map(e=>{let t=_(e.data.inDegree??0);return{id:e.id,group:X.get(e.id)??"(root)",x:e.position.x,y:e.position.y,w:2*t,h:2*t}});return(0,A.S)(e,{pad:60})},[eo,X]),eQ=(0,n.useMemo)(()=>{let t=new Map;if(!J)return t;let o=new Map;for(let t of e){let e=J.get(t.path);if(!e)continue;let s=X.get(t.path)??"(root)",n=o.get(s)??new Map;n.set(e,(n.get(e)??0)+1),o.set(s,n)}for(let[e,s]of o){let o=null,n=0,r=!1;for(let[e,t]of s)t>n?(o=e,n=t,r=!1):t===n&&(r=!0);t.set(e,r?null:o)}return t},[J,e,X]),eY=(0,n.useMemo)(()=>{let e=new Map;for(let t of X.values())e.set(t,(e.get(t)??0)+1);return Array.from(e.entries()).sort((e,t)=>t[1]-e[1]||e[0].localeCompare(t[0])).map(([e,t])=>({group:e,count:t,color:(0,F.i3)(e)}))},[X]),e0=t.filter(e=>e.circular).length,e1=(0,n.useMemo)(()=>el?t.filter(e=>e.from===el).map(e=>e.to):[],[el,t]),e5=(0,n.useMemo)(()=>el?t.filter(e=>e.to===el).map(e=>e.from):[],[el,t]),e2=null!==el||eb&&Q,e4=(0,n.useCallback)(()=>{ea(null),ey(!1),em(!1)},[]);return ek?(0,s.jsxs)("div",{className:"canvas-dots relative h-screen w-full",children:[(0,s.jsxs)(l.Gc,{...e$,nodes:eq,edges:eJ,nodeTypes:W,onNodesChange:eO,onEdgesChange:eT,onNodeClick:(e,t)=>{ea(t.id),eu(null)},onEdgeClick:(e,t)=>{eu(t.id),ea(null)},onPaneClick:()=>{ea(null),eu(null)},onNodeMouseEnter:(e,t)=>ed(t.id),onNodeMouseLeave:()=>ed(null),onInit:e=>{eS.current=e},onNodeDragStop:(e,t)=>eP(t.id,t.position.x,t.position.y),deleteKeyCode:null,colorMode:"dark",fitView:!0,fitViewOptions:{padding:.1,minZoom:.18,maxZoom:.9},minZoom:.05,panOnScroll:!0,zoomActivationKeyCode:["Meta","Control"],proOptions:{hideAttribution:!0},children:[(0,s.jsx)($.Z,{regions:"far"===ev?eK:[],tone:"category",lod:ev}),a&&(0,s.jsx)(B,{regions:"far"===ev?[]:eK,dominant:eQ}),(0,s.jsx)(P.J,{onLod:eM,thresholds:Z.kz}),(0,s.jsx)(l.H2,{position:"bottom-right",className:"!overflow-hidden !rounded-xl !border !border-white/10 [&_button]:!border-white/10 [&_button]:!bg-card/70 [&_button]:!text-foreground [&_button]:!backdrop-blur"}),(0,s.jsx)(l.Zk,{position:"bottom-left",style:{marginBottom:118},children:(0,s.jsx)(r.H,{tool:eC,onChange:eA})}),(0,s.jsx)(l.Zk,{position:"bottom-right",style:{marginBottom:152},children:(0,s.jsx)(E.er,{title:"Legend",trigger:(e,t)=>(0,s.jsx)("button",{type:"button",onClick:t,title:"Legend",className:(0,L.cn)("glass flex size-8 items-center justify-center rounded-lg transition-colors",e?"text-foreground":"text-muted-foreground hover:text-foreground"),children:(0,s.jsx)(f.A,{className:"size-4"})}),children:(0,s.jsxs)("ul",{className:"space-y-1.5 text-[10.5px] text-muted-foreground",children:[(0,s.jsxs)("li",{className:"flex items-center gap-2",children:[(0,s.jsx)("span",{"aria-hidden":!0,className:"inline-block size-2.5 shrink-0 rounded-full bg-zinc-400"}),(0,s.jsx)("span",{children:"a file \xb7 bigger dot = more files import it"})]}),a&&(0,s.jsxs)("li",{className:"flex items-center gap-2",children:[(0,s.jsx)("span",{"aria-hidden":!0,className:"inline-block size-2.5 shrink-0 rounded-full",style:{boxShadow:`inset 0 0 0 2px ${D.ZD.frontend}`}}),(0,s.jsx)("span",{children:"colored ring \xb7 frontend / backend layer"})]}),(0,s.jsxs)("li",{className:"flex items-center gap-2",children:[(0,s.jsx)("span",{"aria-hidden":!0,className:"inline-block h-px w-6 bg-[#4a4a52]"}),(0,s.jsx)("span",{children:"line \xb7 imports another file"})]}),(0,s.jsxs)("li",{className:"flex items-center gap-2",children:[(0,s.jsx)("span",{"aria-hidden":!0,className:"inline-block h-px w-6 bg-red-400"}),(0,s.jsx)("span",{children:"red \xb7 part of an import cycle"})]}),(0,s.jsxs)("li",{className:"flex items-center gap-2",children:[(0,s.jsxs)("span",{"aria-hidden":!0,className:"inline-flex shrink-0 gap-0.5",children:[(0,s.jsx)("span",{className:"inline-block size-2 rounded-full bg-violet-400"}),(0,s.jsx)("span",{className:"inline-block size-2 rounded-full bg-amber-400"})]}),(0,s.jsx)("span",{children:"dot color \xb7 its directory (chips, top-right)"})]})]})})}),(0,s.jsx)(l.of,{pannable:!0,zoomable:!0,position:"bottom-left",style:{width:140,height:90},className:"!overflow-hidden !rounded-xl !border !border-white/10 !bg-card/50 !backdrop-blur",nodeColor:()=>"#555"}),eD.length>0&&!eR.active&&(0,s.jsx)(l.Zk,{position:"top-left",className:"!mt-14",children:(0,s.jsxs)("button",{type:"button",onClick:eR.start,title:"Guided, dependency-ordered walkthrough of the codebase",className:"glass flex items-center gap-1.5 rounded-xl px-3 py-1.5 text-[11px] text-muted-foreground transition-colors hover:text-foreground",children:[(0,s.jsx)(m.A,{className:"size-3.5"}),"Start tour"]})}),(0,s.jsx)(l.Zk,{position:"top-right",className:(0,L.cn)("glass rounded-full px-1 py-0.5 transition-[margin] duration-200",e2&&"!mr-[300px]"),children:(0,s.jsx)(w.Z,{active:"FILES",tabs:[{value:"ROADMAP",label:"Roadmap",href:"/map?view=ROADMAP"},{value:"ARCHITECTURE",label:"Architecture",href:"/map?view=ARCHITECTURE"},{value:"DATABASE",label:"Database",href:"/map?view=DATABASE"},{value:"FILES",label:"Files",href:"/map?view=FILES"}]})}),(0,s.jsx)(l.Zk,{position:"top-right",className:(0,L.cn)("glass !mt-24 flex max-w-[300px] flex-wrap items-center justify-end gap-x-2.5 gap-y-1 rounded-xl px-3 py-1.5 transition-[margin] duration-200",e2&&"!mr-[300px]"),children:eY.map(t=>(0,s.jsxs)("button",{type:"button",onClick:()=>{let o=e.filter(e=>(X.get(e.path)??"(root)")===t.group).map(e=>({id:e.path}));o.length&&eS.current?.fitView({nodes:o,duration:600,padding:.3,maxZoom:1})},title:`${t.count} files — click to zoom to ${t.group}`,className:"flex items-center gap-1.5 rounded px-1 py-0.5 text-[10px] text-muted-foreground transition-colors hover:bg-white/[0.06] hover:text-foreground",children:[(0,s.jsx)("span",{"aria-hidden":!0,className:"size-2 shrink-0 rounded-full",style:{backgroundColor:t.color}}),t.group]},t.group))}),(0,s.jsxs)(l.Zk,{position:"top-right",className:(0,L.cn)("!mt-14 flex items-center gap-2 transition-[margin] duration-200",e2&&"!mr-[300px]"),children:[(0,s.jsx)(j.X,{query:ew,onQuery:ej,hits:eB,placeholder:"Find a file…",onPick:e=>{ej(""),ez(e)},onZoomToMatches:()=>{eW?.size&&eS.current?.fitView({nodes:[...eW].map(e=>({id:e})),duration:600,padding:.3})}}),a&&(0,s.jsx)(z.o,{value:ex,onChange:eg,options:["frontend","backend"]}),(0,s.jsxs)("div",{className:"glass flex items-center gap-3 rounded-xl px-3 py-1.5 text-[11px]",children:[(0,s.jsxs)("span",{className:"text-muted-foreground",children:[e.length," files \xb7 ",t.length," imports"]}),e0>0&&(0,s.jsxs)("button",{type:"button",onClick:()=>{eh(e=>!e),ea(null),eu(null)},title:ep?"Show all imports":"Show only files involved in import cycles",className:(0,L.cn)("flex items-center gap-1.5 rounded-md px-1.5 py-0.5 transition-colors",ep?"bg-red-500/15 text-red-200 ring-1 ring-red-400/40":"text-red-300 hover:bg-red-500/10"),children:[(0,s.jsx)("span",{"aria-hidden":!0,className:"inline-block h-0 w-5 border-t border-dashed",style:{borderColor:"#ef4444"}}),e0," circular"]}),Q&&(0,s.jsx)(s.Fragment,{children:(0,s.jsxs)("button",{type:"button",onClick:eE,title:ef?"Show all files again":"Focus + zoom to the files edited this session",className:(0,L.cn)("flex items-center gap-1.5 rounded-md px-1.5 py-0.5 transition-colors",ef?"bg-teal-500/15 text-teal-200 ring-1 ring-teal-400/40":"text-teal-300 hover:bg-teal-500/10"),children:[(0,s.jsx)(x.A,{className:"size-3"}),K.size," edited"]})})]})]})]}),e2&&(0,s.jsxs)(y.b,{className:"absolute bottom-3 right-3 top-16 z-10 flex w-72 flex-col rounded-2xl",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between border-b border-white/10 px-3.5 py-2.5",children:[(0,s.jsx)("span",{className:"text-[11px] font-semibold uppercase tracking-wide text-muted-foreground",children:el?"File":"Edited this session"}),(0,s.jsx)("button",{onClick:e4,title:"Close panel",className:"rounded-md p-1 text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground",children:(0,s.jsx)(g.A,{className:"size-4"})})]}),(0,s.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto p-3",children:el?(0,s.jsxs)("div",{className:"space-y-3",children:[(0,s.jsxs)("div",{children:[(0,s.jsxs)("div",{className:"flex items-start gap-1.5",children:[(0,s.jsx)(b.A,{className:"mt-0.5 size-4 shrink-0 text-muted-foreground"}),(0,s.jsx)("h2",{className:"break-all text-sm font-semibold leading-tight",children:el.slice(el.lastIndexOf("/")+1)})]}),(0,s.jsx)("div",{className:"mt-0.5 break-all font-mono text-[10px] text-muted-foreground",children:el})]}),(0,s.jsxs)("div",{className:"flex flex-wrap gap-1",children:[(H=K.get(el))?(0,s.jsxs)("span",{className:"rounded bg-teal-500/15 px-1.5 py-0.5 text-[10px] font-semibold text-teal-300",children:["edited ",H.count,"\xd7"]}):null,q.has(el)&&(0,s.jsx)("span",{className:"rounded bg-amber-500/15 px-1.5 py-0.5 text-[10px] font-semibold text-amber-300",children:"untested"})]}),(0,s.jsx)("button",{onClick:()=>fetch(`/api/open?path=${encodeURIComponent(el)}`).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,s.jsx)(V,{label:"Imports",paths:e1,onPick:ez}),(0,s.jsx)(V,{label:"Imported by",paths:e5,onPick:ez})]}):(0,s.jsx)(k.h,{files:Y.map(e=>({path:e.path,meta:`${e.count}\xd7`})),emptyLabel:"No files edited this session yet."})})]}),eR.active&&eR.step&&(0,s.jsx)(M.d,{steps:eD,index:eR.index,onPrev:eR.prev,onNext:eR.next,onExit:eR.stop,onGoto:eR.goto})]}):(0,s.jsx)("div",{className:"flex h-screen w-full items-center justify-center text-sm text-muted-foreground",children:"Loading graph…"})}function V({label:e,paths:t,onPick:o}){return t.length?(0,s.jsxs)("div",{children:[(0,s.jsxs)("h3",{className:"mb-1 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground",children:[e," (",t.length,")"]}),(0,s.jsx)(k.h,{files:t.map(e=>({path:e})),onSelect:o})]}):null}},77260:(e,t,o)=>{"use strict";o.d(t,{MapTabsShell:()=>a});var s=o(95155),n=o(12115),r=o(75514);let l=["ROADMAP","ARCHITECTURE","DATABASE"];function a({initialView:e,roadmap:t,architecture:o,database:i}){let[d,c]=(0,n.useState)(e),[u,p]=(0,n.useState)(()=>new Set([e])),h=(0,n.useCallback)(e=>{c(e),p(t=>t.has(e)?t:new Set(t).add(e));try{let t=new URL(window.location.href);t.searchParams.set("view",e),window.history.replaceState(window.history.state,"",t)}catch{}},[]),f={ROADMAP:t,ARCHITECTURE:o,DATABASE:i};return(0,s.jsx)(r.no.Provider,{value:{views:r.a4,switchTo:h},children:l.map(e=>u.has(e)?(0,s.jsx)("div",{className:d===e?"contents":"hidden",children:f[e]},e):null)})}}},e=>{e.O(0,[2574,3862,5004,277,8500,4888,7424,9887,5957,1355,2505,4607,3908,2108,4853,8441,3794,7358],()=>e(e.s=27950)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9962],{15330:(e,a,s)=>{"use strict";s.d(a,{A:()=>r});let r=(0,s(30772).A)("undo-2",[["path",{d:"M9 14 4 9l5-5",key:"102s5s"}],["path",{d:"M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11",key:"f3b9sd"}]])},48045:(e,a,s)=>{"use strict";s.d(a,{SharedBoardView:()=>x});var r=s(95155),d=s(12115),t=s(25640),n=s(83599),l=s(34306),i=s(72108),o=s(44853),c=s(53981),m=s(91337);let h={ROADMAP:{label:"Roadmap",icon:(0,r.jsx)(t.A,{className:"size-3"})},ARCHITECTURE:{label:"Architecture",icon:(0,r.jsx)(n.A,{className:"size-3"})},DATABASE:{label:"Database",icon:(0,r.jsx)(l.A,{className:"size-3"})}};function x({snapshot:e}){let a=e.selectedTabs.filter(e=>h[e]),[s,t]=(0,d.useState)(a[0]??"ROADMAP");return(0,r.jsxs)("div",{className:"flex h-dvh flex-col bg-background",children:[(0,r.jsx)(c.E,{label:"shared from",workspaceLabel:e.workspaceLabel,createdAt:e.createdAt}),(0,r.jsxs)("main",{className:"relative min-h-0 flex-1 overflow-hidden",children:[a.length>1&&(0,r.jsx)("nav",{className:"absolute left-1/2 top-3 z-20 max-w-[calc(100%-1.5rem)] -translate-x-1/2",children:(0,r.jsx)("div",{className:"glass flex items-center gap-1 rounded-full p-0.5",children:a.map(e=>(0,r.jsxs)("button",{onClick:()=>t(e),title:h[e].label,className:(0,m.cn)("flex items-center gap-1.5 rounded-md px-2.5 py-1 text-[11px] font-medium transition-colors",s===e?"bg-white/10 text-foreground":"text-muted-foreground hover:text-foreground"),children:[h[e].icon,(0,r.jsx)("span",{className:"hidden sm:inline",children:h[e].label})]},e))})}),"ROADMAP"===s&&e.roadmap&&(0,r.jsx)(i.MapClient,{view:"ROADMAP",nodes:e.roadmap.nodes,edges:e.roadmap.edges,hasFrontend:e.roadmap.hasFrontend,embedded:!0,readOnly:!0,firstTapHighlightsOnly:!0}),"ARCHITECTURE"===s&&e.architecture&&(0,r.jsx)(i.MapClient,{view:"ARCHITECTURE",nodes:e.architecture.nodes,edges:e.architecture.edges,hasFrontend:e.architecture.hasFrontend,embedded:!0,readOnly:!0,firstTapHighlightsOnly:!0}),"DATABASE"===s&&e.database&&(0,r.jsx)(o.DbMapClient,{tables:e.database.tables,relations:e.database.relations,endpoints:e.database.endpoints,draft:e.database.draft,workspaceId:"shared",embedded:!0,readOnly:!0})]})]})}},51212:(e,a,s)=>{"use strict";s.d(a,{SharedPlanView:()=>x});var r=s(95155),d=s(12115),t=s(25640),n=s(34306),l=s(72108),i=s(44853),o=s(51909),c=s(53981),m=s(66616),h=s(91337);function x({snapshot:e}){let a=(e.roadmap?.nodes.length??0)>0,s=(e.draft?.tables.length??0)>0||(e.draft?.endpoints.length??0)>0,p=a||s,[b,f]=(0,d.useState)(a?"map":"db"),u="map"!==b||a?"db"!==b||s?b:"map":"db",[g,v]=(0,d.useState)("plan");return(0,r.jsxs)("div",{className:"flex h-dvh flex-col bg-background",children:[(0,r.jsx)(c.E,{label:"plan from",workspaceLabel:e.workspaceLabel,createdAt:e.createdAt,verdict:e.verdict}),p&&(0,r.jsx)("div",{className:"flex shrink-0 border-b border-white/5 bg-card/40 md:hidden",children:["plan","board"].map(e=>(0,r.jsx)("button",{onClick:()=>v(e),className:(0,h.cn)("flex-1 py-2 text-[12px] font-medium capitalize transition-colors",g===e?"border-b-2 border-foreground text-foreground":"text-muted-foreground hover:text-foreground"),children:e},e))}),(0,r.jsxs)("div",{className:"flex min-h-0 flex-1 flex-col md:flex-row",children:[(0,r.jsx)("div",{className:(0,h.cn)("min-h-0 overflow-y-auto px-5 py-5 sm:px-6",p?"md:w-[44%]":"flex-1",p&&("plan"===g?"flex-1 md:flex-none":"hidden md:block")),children:(0,r.jsx)(o.pO,{markdown:e.markdown.trim()||"_This plan has no written body._"})}),p&&(0,r.jsxs)("div",{className:(0,h.cn)("relative min-h-0 flex-1 flex-col border-l border-white/5","board"===g?"flex":"hidden md:flex"),children:[a&&s&&(0,r.jsx)("div",{className:"pointer-events-none absolute left-3 top-3 z-20",children:(0,r.jsxs)("div",{className:"glass pointer-events-auto flex items-center gap-1 rounded-full p-0.5",children:[(0,r.jsx)(m.E,{active:"map"===u,onClick:()=>f("map"),icon:(0,r.jsx)(t.A,{className:"size-3"}),children:"Features"}),(0,r.jsx)(m.E,{active:"db"===u,onClick:()=>f("db"),icon:(0,r.jsx)(n.A,{className:"size-3"}),children:"Schema"})]})}),(0,r.jsx)("div",{className:"min-h-0 flex-1 overflow-hidden bg-background",children:"map"===u?(0,r.jsx)(l.MapClient,{view:"ROADMAP",nodes:e.roadmap.nodes,edges:e.roadmap.edges,hasFrontend:e.roadmap.hasFrontend,embedded:!0,readOnly:!0}):(0,r.jsx)(i.DbMapClient,{tables:[],relations:[],endpoints:[],draft:e.draft??null,workspaceId:"shared",embedded:!0,readOnly:!0})})]})]})]})}},53981:(e,a,s)=>{"use strict";s.d(a,{E:()=>n});var r=s(95155);let d=(0,s(30772).A)("eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);var t=s(91337);function n({label:e,workspaceLabel:a,createdAt:s,verdict:l}){return(0,r.jsxs)("header",{className:"relative z-20 flex h-12 shrink-0 items-center gap-2 border-b border-white/5 bg-card/40 px-3 backdrop-blur sm:gap-3 sm:px-4",children:[(0,r.jsxs)("span",{className:"flex shrink-0 items-center gap-1.5 rounded-full bg-white/[0.06] px-2.5 py-1 text-[10.5px] font-semibold uppercase tracking-wide text-muted-foreground",children:[(0,r.jsx)(d,{className:"size-3"})," Read-only"]}),(0,r.jsxs)("span",{className:"min-w-0 flex-1 truncate text-[12px] text-muted-foreground",children:[e," ",(0,r.jsx)("span",{className:"text-foreground",children:a})," \xb7 ",new Date(s).toLocaleDateString(void 0,{month:"short",day:"numeric",year:"numeric"})]}),l&&(0,r.jsx)("span",{className:(0,t.cn)("shrink-0 rounded px-1.5 py-0.5 text-[9px] font-semibold uppercase tracking-wide","approved"===l?"bg-emerald-500/15 text-emerald-300":"bg-red-500/15 text-red-300"),children:l}),(0,r.jsxs)("a",{href:"https://www.trybeacon.sh",target:"_blank",rel:"noreferrer",className:"shrink-0 whitespace-nowrap text-[11px] text-muted-foreground transition-colors hover:text-foreground",children:[(0,r.jsx)("span",{className:"hidden sm:inline",children:"Made with "}),"Beacon"]})]})}},60976:(e,a,s)=>{"use strict";s.d(a,{A:()=>r});let r=(0,s(30772).A)("redo-2",[["path",{d:"m15 14 5-5-5-5",key:"12vg1m"}],["path",{d:"M20 9H9.5A5.5 5.5 0 0 0 4 14.5A5.5 5.5 0 0 0 9.5 20H13",key:"6uklza"}]])},80239:(e,a,s)=>{Promise.resolve().then(s.bind(s,48045)),Promise.resolve().then(s.bind(s,51212)),Promise.resolve().then(s.bind(s,71265))}},e=>{e.O(0,[2574,3862,5004,277,8500,4888,7424,9887,5957,1355,2505,3908,2108,4853,1909,8441,3794,7358],()=>e(e.s=80239)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4662],{4474:(e,t,a)=>{"use strict";a.d(t,{$:()=>o});var s=a(95155),n=a(6539),r=a(18460),i=a(91337);let d=(0,r.F)("group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/80",outline:"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)] aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",ghost:"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",destructive:"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",icon:"size-8","icon-xs":"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg","icon-lg":"size-9"}},defaultVariants:{variant:"default",size:"default"}});function o({className:e,variant:t="default",size:a="default",...r}){return(0,s.jsx)(n.Button,{"data-slot":"button",className:(0,i.cn)(d({variant:t,size:a,className:e})),...r})}},26518:(e,t,a)=>{"use strict";a.d(t,{bq:()=>k,eb:()=>z,gC:()=>N,l6:()=>y,yv:()=>w});var s=a(95155);a(12115);var n=a(40595),r=a(41294),i=a(75681),d=a(17314),o=a(37265),l=a(23107),c=a(70826),u=a(67564),p=a(1938),h=a(15433),m=a(5919),x=a(45450),f=a(88988),g=a(91337),v=a(12363),b=a(64577),j=a(94088);let y=n.H;function w({className:e,...t}){return(0,s.jsx)(r.y,{"data-slot":"select-value",className:(0,g.cn)("flex flex-1 text-left",e),...t})}function k({className:e,size:t="default",children:a,...n}){return(0,s.jsxs)(i.b,{"data-slot":"select-trigger","data-size":t,className:(0,g.cn)("flex w-fit items-center justify-between gap-1.5 rounded-lg border border-input bg-transparent py-2 pr-2 pl-2.5 text-sm whitespace-nowrap transition-colors outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-placeholder:text-muted-foreground data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...n,children:[a,(0,s.jsx)(d.w,{render:(0,s.jsx)(v.A,{className:"pointer-events-none size-4 text-muted-foreground"})})]})}function N({className:e,children:t,side:a="bottom",sideOffset:n=4,align:r="center",alignOffset:i=0,alignItemWithTrigger:d=!0,...p}){return(0,s.jsx)(o.V,{children:(0,s.jsx)(l.l,{side:a,sideOffset:n,align:r,alignOffset:i,alignItemWithTrigger:d,className:"isolate z-50",children:(0,s.jsxs)(c.t,{"data-slot":"select-content","data-align-trigger":d,className:(0,g.cn)("relative isolate z-50 max-h-(--available-height) w-(--anchor-width) min-w-36 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",e),...p,children:[(0,s.jsx)(C,{}),(0,s.jsx)(u.B,{children:t}),(0,s.jsx)(A,{})]})})})}function z({className:e,children:t,...a}){return(0,s.jsxs)(p.e,{"data-slot":"select-item",className:(0,g.cn)("relative flex w-full cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",e),...a,children:[(0,s.jsx)(h.h,{className:"flex flex-1 shrink-0 gap-2 whitespace-nowrap",children:t}),(0,s.jsx)(m.h,{render:(0,s.jsx)("span",{className:"pointer-events-none absolute right-2 flex size-4 items-center justify-center"}),children:(0,s.jsx)(b.A,{className:"pointer-events-none"})})]})}function C({className:e,...t}){return(0,s.jsx)(x.w,{"data-slot":"select-scroll-up-button",className:(0,g.cn)("top-0 z-10 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4",e),...t,children:(0,s.jsx)(j.A,{})})}function A({className:e,...t}){return(0,s.jsx)(f.d,{"data-slot":"select-scroll-down-button",className:(0,g.cn)("bottom-0 z-10 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4",e),...t,children:(0,s.jsx)(v.A,{})})}},39658:(e,t,a)=>{"use strict";a.d(t,{p:()=>r});var s=a(95155);a(12115);var n=a(91337);function r({className:e,type:t,...a}){return(0,s.jsx)("input",{type:t,"data-slot":"input",className:(0,n.cn)("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",e),...a})}},40755:(e,t,a)=>{"use strict";a.d(t,{LinearCard:()=>p});var s=a(95155),n=a(12115),r=a(51128);let i=(0,a(30772).A)("refresh-cw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);var d=a(1275),o=a(79984),l=a(4474),c=a(39658),u=a(26518);function p(){let[e,t]=(0,n.useState)(null),[a,p]=(0,n.useState)([]),[h,m]=(0,n.useState)(""),[x,f]=(0,n.useState)(!1),[g,v]=(0,n.useState)(null),[b,j]=(0,n.useState)(!1),y=(0,n.useCallback)(async()=>{let e=await fetch("/api/linear",{cache:"no-store"}).catch(()=>null);e?.ok&&t(await e.json())},[]),w=(0,n.useCallback)(async()=>{let e=await fetch("/api/linear/teams",{cache:"no-store"}).catch(()=>null);e?.ok&&p((await e.json()).teams)},[]);async function k(e){f(!0),v(null);try{let a=await fetch("/api/linear",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(e)});if(!a.ok)return v((await a.json().catch(()=>({}))).error??"Something went wrong"),!1;return t(await a.json()),!0}finally{f(!1)}}async function N(){h.trim()&&await k({apiKey:h.trim()})&&(m(""),j(!1),await w())}async function z(e){let t=a.find(t=>t.id===e);await k({teamId:e,teamKey:t?.key,enabled:!0})}async function C(){f(!0),v(null);try{let e=await fetch("/api/linear/sync",{method:"POST"});if(!e.ok)return void v("Sync failed — check the API key and your connection");let t=await e.json().catch(()=>({}));v(t.skipped?t.skipped:`Synced — ${t.created??0} added, ${t.pulled??0} updated, ${t.pushed??0} pushed`),await y()}finally{f(!1)}}(0,n.useEffect)(()=>{let e=!0;return fetch("/api/linear",{cache:"no-store"}).then(e=>e.ok?e.json():null).then(a=>{e&&a&&t(a)}).catch(()=>{}),()=>{e=!1}},[]),(0,n.useEffect)(()=>{if(!(e?.connected&&!e.teamId))return;let t=!0;return fetch("/api/linear/teams",{cache:"no-store"}).then(e=>e.ok?e.json():null).then(e=>{t&&e&&p(e.teams)}).catch(()=>{}),()=>{t=!1}},[e?.connected,e?.teamId]);let A=e?.connected&&e.teamId;return(0,s.jsxs)(o.Zp,{children:[(0,s.jsxs)(o.aR,{children:[(0,s.jsxs)(o.ZB,{className:"flex items-center gap-2 text-base",children:[(0,s.jsx)(r.A,{className:"size-4 text-[var(--accent-2,#ff7a45)]"}),"Linear sync"]}),(0,s.jsx)(o.BT,{children:"Mirror one Linear team onto this board and back — create or edit in either place, no double entry. Changes flow both ways within ~a minute (last edit wins). The key stays on this machine."})]}),(0,s.jsxs)(o.Wu,{className:"space-y-3",children:[null==e?(0,s.jsx)("p",{className:"text-xs text-muted-foreground",children:"Loading…"}):!e.connected||b?(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)(c.p,{type:"password",autoComplete:"off",placeholder:"Linear personal API key (lin_api_…)",value:h,onChange:e=>m(e.target.value),onKeyDown:e=>"Enter"===e.key&&void N(),className:"h-9 flex-1"}),(0,s.jsx)(l.$,{size:"sm",disabled:x||!h.trim(),onClick:()=>void N(),children:"Connect"})]}):A?(0,s.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,s.jsxs)("span",{className:"text-sm",children:["Synced with team ",(0,s.jsx)("span",{className:"font-mono font-medium",children:e.teamKey})]}),(0,s.jsxs)(l.$,{size:"sm",variant:"outline",disabled:x,onClick:()=>void C(),children:[(0,s.jsx)(i,{className:`size-3.5 ${x?"animate-spin":""}`}),"Sync now"]}),(0,s.jsx)(l.$,{size:"sm",variant:"ghost",disabled:x,onClick:()=>void k({enabled:!e.enabled}),children:e.enabled?"Pause sync":"Resume sync"}),(0,s.jsx)(l.$,{size:"sm",variant:"ghost",disabled:x,onClick:()=>j(!0),children:"Change key"}),!e.enabled&&(0,s.jsx)("span",{className:"text-xs text-amber-400",children:"Paused"})]}):(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsxs)(u.l6,{onValueChange:e=>e&&void z(e),children:[(0,s.jsx)(u.bq,{className:"h-9 w-64",children:(0,s.jsx)(u.yv,{placeholder:a.length?"Pick a team…":"Loading teams…"})}),(0,s.jsx)(u.gC,{children:a.map(e=>(0,s.jsxs)(u.eb,{value:e.id,children:[e.name," (",e.key,")"]},e.id))})]}),(0,s.jsx)("span",{className:"text-xs text-muted-foreground",children:"Which team does this repo track?"})]}),g&&(0,s.jsx)("p",{className:"text-xs text-muted-foreground",children:g}),A&&e.lastCursor&&(0,s.jsxs)("p",{className:"flex items-center gap-1 text-xs text-muted-foreground",children:[(0,s.jsx)(d.A,{className:"size-3"}),"Last change synced ",new Date(e.lastCursor).toLocaleString()]})]})]})}},50981:(e,t,a)=>{"use strict";a.d(t,{A:()=>s});let s=(0,a(30772).A)("shield-check",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]])},51128:(e,t,a)=>{"use strict";a.d(t,{A:()=>s});let s=(0,a(30772).A)("link-2",[["path",{d:"M9 17H7A5 5 0 0 1 7 7h2",key:"8i5ue5"}],["path",{d:"M15 7h2a5 5 0 1 1 0 10h-2",key:"1b9ql8"}],["line",{x1:"8",x2:"16",y1:"12",y2:"12",key:"1jonct"}]])},57883:(e,t,a)=>{Promise.resolve().then(a.bind(a,81453)),Promise.resolve().then(a.bind(a,71423)),Promise.resolve().then(a.bind(a,96759)),Promise.resolve().then(a.bind(a,40755)),Promise.resolve().then(a.bind(a,67787)),Promise.resolve().then(a.bind(a,6539)),Promise.resolve().then(a.bind(a,71265)),Promise.resolve().then(a.t.bind(a,98500,23))},67787:(e,t,a)=>{"use strict";a.d(t,{PermissionModeCard:()=>l});var s=a(95155),n=a(12115),r=a(50981),i=a(79984),d=a(26518),o=a(97358);function l(){let[e,t]=(0,n.useState)("default"),[a,l]=(0,n.useState)(!1);async function c(e){t(e),l(!1),await fetch("/api/preferences",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({planApprovalMode:e})}).catch(()=>{}),l(!0)}(0,n.useEffect)(()=>{let e=!0;return fetch("/api/preferences",{cache:"no-store"}).then(e=>e.ok?e.json():null).then(a=>{e&&a&&t(a.planApprovalMode??"default")}).catch(()=>{}),()=>{e=!1}},[]);let u=o.pC.find(t=>t.value===e);return(0,s.jsxs)(i.Zp,{children:[(0,s.jsxs)(i.aR,{children:[(0,s.jsxs)(i.ZB,{className:"flex items-center gap-2 text-base",children:[(0,s.jsx)(r.A,{className:"size-4 text-emerald-400"}),"Permission mode after approval"]}),(0,s.jsx)(i.BT,{children:"When you approve a plan, your terminal session switches to this permission mode. Applies to all projects. (Requires Claude Code 2.1.7+.)"})]}),(0,s.jsxs)(i.Wu,{className:"flex items-center gap-3",children:[(0,s.jsxs)(d.l6,{value:e,onValueChange:e=>e&&void c(e),children:[(0,s.jsx)(d.bq,{className:"h-9 w-64",children:(0,s.jsx)(d.yv,{})}),(0,s.jsx)(d.gC,{children:o.pC.map(e=>(0,s.jsx)(d.eb,{value:e.value,children:e.label},e.value))})]}),u&&(0,s.jsx)("span",{className:"text-xs text-muted-foreground",children:u.description}),a&&(0,s.jsx)("span",{className:"text-xs text-emerald-300",children:"✓ saved"})]})]})}},70521:(e,t,a)=>{"use strict";a.d(t,{$v:()=>w,EO:()=>v,Lt:()=>m,Rx:()=>k,Zr:()=>N,ck:()=>j,r7:()=>y,tv:()=>x,wd:()=>b});var s=a(95155);a(12115);var n=a(25381),r=a(7121),i=a(51880),d=a(35176),o=a(11248),l=a(82022),c=a(98758),u=a(45362),p=a(91337),h=a(4474);function m({...e}){return(0,s.jsx)(n.V,{"data-slot":"alert-dialog",...e})}function x({...e}){return(0,s.jsx)(r.t,{"data-slot":"alert-dialog-trigger",...e})}function f({...e}){return(0,s.jsx)(i.Z,{"data-slot":"alert-dialog-portal",...e})}function g({className:e,...t}){return(0,s.jsx)(d.X,{"data-slot":"alert-dialog-overlay",className:(0,p.cn)("fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",e),...t})}function v({className:e,size:t="default",...a}){return(0,s.jsxs)(f,{children:[(0,s.jsx)(g,{}),(0,s.jsx)(o.h,{"data-slot":"alert-dialog-content","data-size":t,className:(0,p.cn)("group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",e),...a})]})}function b({className:e,...t}){return(0,s.jsx)("div",{"data-slot":"alert-dialog-header",className:(0,p.cn)("grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]",e),...t})}function j({className:e,...t}){return(0,s.jsx)("div",{"data-slot":"alert-dialog-footer",className:(0,p.cn)("-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end",e),...t})}function y({className:e,...t}){return(0,s.jsx)(l.L,{"data-slot":"alert-dialog-title",className:(0,p.cn)("font-heading text-base font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2",e),...t})}function w({className:e,...t}){return(0,s.jsx)(c.r,{"data-slot":"alert-dialog-description",className:(0,p.cn)("text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",e),...t})}function k({className:e,variant:t,size:a,...n}){return(0,s.jsx)(u.H,{"data-slot":"alert-dialog-action",className:(0,p.cn)(e),render:(0,s.jsx)(h.$,{variant:t,size:a}),...n})}function N({className:e,variant:t="outline",size:a="default",...n}){return(0,s.jsx)(u.H,{"data-slot":"alert-dialog-cancel",className:(0,p.cn)(e),render:(0,s.jsx)(h.$,{variant:t,size:a}),...n})}},71423:(e,t,a)=>{"use strict";a.d(t,{DangerCard:()=>l});var s=a(95155),n=a(12115),r=a(73321),i=a(65738),d=a(79984),o=a(70521);function l(){let e=(0,r.useRouter)(),[t,a]=(0,n.useState)(!1),[l,c]=(0,n.useState)(!1);async function u(){a(!0);try{(await fetch("/api/reset",{method:"POST"})).ok&&(c(!0),e.refresh())}finally{a(!1)}}return(0,s.jsxs)(d.Zp,{className:"border-red-500/30",children:[(0,s.jsxs)(d.aR,{children:[(0,s.jsx)(d.ZB,{className:"text-base text-red-400",children:"Danger zone"}),(0,s.jsx)(d.BT,{children:"Erases all project data — the map, the database, drafts, the code graph and the generated summary — leaving the panel empty. Your preferences (provider and editor) are kept. This cannot be undone."})]}),(0,s.jsxs)(d.Wu,{className:"flex items-center gap-3",children:[(0,s.jsxs)(o.Lt,{children:[(0,s.jsxs)(o.tv,{className:"inline-flex h-9 items-center gap-2 rounded-lg bg-red-600 px-3 text-sm font-medium text-white transition-colors hover:bg-red-500 disabled:opacity-50",disabled:t,children:[(0,s.jsx)(i.A,{className:"size-4"}),t?"Erasing…":"Erase all data"]}),(0,s.jsxs)(o.EO,{children:[(0,s.jsxs)(o.wd,{children:[(0,s.jsx)(o.r7,{children:"Erase all data?"}),(0,s.jsx)(o.$v,{children:"This permanently removes the map, the database, drafts, the code graph and the project summary. This action cannot be undone."})]}),(0,s.jsxs)(o.ck,{children:[(0,s.jsx)(o.Zr,{children:"Cancel"}),(0,s.jsx)(o.Rx,{onClick:u,className:"bg-red-600 text-white hover:bg-red-500",children:"Yes, erase everything"})]})]})]}),l&&(0,s.jsx)("span",{className:"text-xs text-red-300",children:"✓ data erased"})]})]})}},79984:(e,t,a)=>{"use strict";a.d(t,{BT:()=>l,Wu:()=>c,ZB:()=>o,Zp:()=>i,aR:()=>d});var s=a(95155);a(12115);var n=a(91337),r=a(82099);function i({className:e,...t}){return(0,s.jsx)(r.b,{"data-slot":"card",className:(0,n.cn)("text-card-foreground flex flex-col gap-6 rounded-2xl py-6",e),...t})}function d({className:e,...t}){return(0,s.jsx)("div",{"data-slot":"card-header",className:(0,n.cn)("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",e),...t})}function o({className:e,...t}){return(0,s.jsx)("div",{"data-slot":"card-title",className:(0,n.cn)("leading-none font-semibold",e),...t})}function l({className:e,...t}){return(0,s.jsx)("div",{"data-slot":"card-description",className:(0,n.cn)("text-muted-foreground text-sm",e),...t})}function c({className:e,...t}){return(0,s.jsx)("div",{"data-slot":"card-content",className:(0,n.cn)("px-6",e),...t})}},81453:(e,t,a)=>{"use strict";a.d(t,{ContextCard:()=>d});var s=a(95155),n=a(12115),r=a(79984),i=a(4474);function d(){let[e,t]=(0,n.useState)(null),[a,d]=(0,n.useState)(!1);async function o(){d(!0),t(null);try{let e=await fetch("/api/context",{method:"POST"});if(!e.ok)return void t(await e.text());let a=await e.json();t(a.files?.length?`Updated: ${a.files.map(e=>e.split("/").pop()).join(" + ")}`:"Nothing to update")}catch{t("Failed")}finally{d(!1)}}return(0,s.jsxs)(r.Zp,{children:[(0,s.jsxs)(r.aR,{children:[(0,s.jsx)(r.ZB,{className:"text-base",children:"Context for the AI"}),(0,s.jsxs)(r.BT,{children:["Generates ",(0,s.jsx)("span",{className:"font-mono",children:"AGENTS.md"})," (read by Cursor/Codex/Aider) and makes sure ",(0,s.jsx)("span",{className:"font-mono",children:"CLAUDE.md"})," imports it (Claude Code reads CLAUDE.md), from the current map."]})]}),(0,s.jsxs)(r.Wu,{className:"flex flex-wrap items-center gap-3",children:[(0,s.jsx)(i.$,{size:"sm",disabled:a,onClick:o,children:a?"Generating…":"Update AGENTS.md + CLAUDE.md"}),e&&(0,s.jsx)("span",{className:"text-xs text-muted-foreground",children:e})]})]})}},82099:(e,t,a)=>{"use strict";a.d(t,{b:()=>r});var s=a(95155);a(12115);var n=a(91337);function r({className:e,children:t,...a}){return(0,s.jsxs)("div",{className:(0,n.cn)("glass relative isolate overflow-hidden",e),...a,children:[(0,s.jsx)("span",{"aria-hidden":!0,className:"pointer-events-none absolute inset-0 -z-10 rounded-[inherit]",style:{background:"radial-gradient(90% 60% at 0% 0%, oklch(1 0 0 / 0.04), transparent 42%)"}}),(0,s.jsx)("span",{"aria-hidden":!0,className:"pointer-events-none absolute inset-0 -z-10 rounded-[inherit] opacity-[0.035] mix-blend-overlay",style:{backgroundImage:"url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E\")",backgroundSize:"120px 120px"}}),t]})}},91337:(e,t,a)=>{"use strict";a.d(t,{cn:()=>r});var s=a(29722),n=a(622);function r(...e){return(0,n.QP)((0,s.$)(e))}},96759:(e,t,a)=>{"use strict";a.d(t,{DeleteWorkspaceCard:()=>l});var s=a(95155),n=a(12115),r=a(73321),i=a(65738),d=a(79984),o=a(70521);function l({id:e,name:t}){let a=(0,r.useRouter)(),[c,u]=(0,n.useState)(!1);async function p(){u(!0);try{let t=await fetch("/api/workspace",{method:"DELETE",headers:{"content-type":"application/json"},body:JSON.stringify({id:e})});if(t.ok){let{fallbackId:e}=await t.json();document.cookie=e?`beacon_ws=${e}; Path=/; Max-Age=31536000; SameSite=Lax`:"beacon_ws=; Path=/; Max-Age=0; SameSite=Lax",a.refresh()}}finally{u(!1)}}return(0,s.jsxs)(d.Zp,{className:"border-red-500/30",children:[(0,s.jsxs)(d.aR,{children:[(0,s.jsx)(d.ZB,{className:"text-base text-red-400",children:"Delete this workspace"}),(0,s.jsxs)(d.BT,{children:["Removes ",(0,s.jsx)("span",{className:"font-medium text-foreground",children:t})," ","from Beacon and erases all of its Beacon data — the map, the database, drafts and the code graph. The repository's files on disk are untouched. This cannot be undone."]})]}),(0,s.jsx)(d.Wu,{className:"flex items-center gap-3",children:(0,s.jsxs)(o.Lt,{children:[(0,s.jsxs)(o.tv,{className:"inline-flex h-9 items-center gap-2 rounded-lg bg-red-600 px-3 text-sm font-medium text-white transition-colors hover:bg-red-500 disabled:opacity-50",disabled:c,children:[(0,s.jsx)(i.A,{className:"size-4"}),c?"Deleting…":"Delete workspace"]}),(0,s.jsxs)(o.EO,{children:[(0,s.jsxs)(o.wd,{children:[(0,s.jsxs)(o.r7,{children:["Delete workspace “",t,"”?"]}),(0,s.jsx)(o.$v,{children:"This permanently removes the workspace from Beacon and erases its data — the map, the database, drafts and the code graph. Your code is not affected; only Beacon's data for this repository is erased. This action cannot be undone."})]}),(0,s.jsxs)(o.ck,{children:[(0,s.jsx)(o.Zr,{children:"Cancel"}),(0,s.jsx)(o.Rx,{onClick:p,className:"bg-red-600 text-white hover:bg-red-500",children:"Yes, delete workspace"})]})]})]})})]})}},97358:(e,t,a)=>{"use strict";a.d(t,{pC:()=>s});let s=[{value:"default",label:"Manual approval",description:"Approve each tool call yourself — Claude Code's default."},{value:"acceptEdits",label:"Auto-accept edits",description:"Auto-approve file edits; still ask before running other tools."},{value:"bypassPermissions",label:"Bypass permissions",description:"Auto-approve every tool call (like --dangerously-skip-permissions)."},{value:"auto",label:"Auto",description:"Autonomous, gated by a safety classifier (needs a recent Claude Code + Sonnet 4.6+)."}]}},e=>{e.O(0,[8500,4888,7424,1355,8441,3794,7358],()=>e(e.s=57883)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[44,134,204,439,730,763,1108,1145,1235,1288,1361,1403,1570,1617,1662,1805,1854,1918,1929,1979,2079,2113,2442,2449,2681,2752,2821,2922,3087,3185,3290,3519,3688,3979,4039,4284,4360,4480,4505,4636,4637,4816,4852,4896,5022,5152,5190,5412,5545,5807,5819,5884,6426,6568,6600,6630,6714,6760,6805,6819,6886,6950,6988,7137,7317,7423,7612,7691,7705,7851,7914,7973,8167,8235,8617,8650,8696,8773,8906,9140,9363,9560,9725,9751,9826,9861],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[44,134,204,439,730,763,1108,1145,1235,1288,1361,1403,1570,1617,1662,1805,1854,1918,1929,1979,2079,2113,2442,2449,2681,2752,2821,2922,3087,3185,3290,3519,3688,3979,4039,4284,4360,4480,4505,4636,4637,4816,4852,4896,5022,5152,5190,5412,5545,5807,5819,5884,6426,6568,6600,6630,6714,6760,6805,6819,6886,6950,6988,7137,7317,7423,7612,7691,7705,7851,7914,7973,8167,8235,8617,8650,8696,8773,8906,9140,9363,9560,9725,9751,9826,9861],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[44,134,204,439,730,763,1108,1145,1235,1288,1361,1403,1570,1617,1662,1805,1854,1918,1929,1979,2079,2113,2442,2449,2681,2752,2821,2922,3087,3185,3290,3519,3688,3979,4039,4284,4360,4480,4505,4636,4637,4816,4852,4896,5022,5152,5190,5412,5545,5807,5819,5884,6426,6568,6600,6630,6714,6760,6805,6819,6886,6950,6988,7137,7317,7423,7612,7691,7705,7851,7914,7973,8167,8235,8617,8650,8696,8773,8906,9140,9363,9560,9725,9751,9826,9861],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[44,134,204,439,730,763,1108,1145,1235,1288,1361,1403,1570,1617,1662,1805,1854,1918,1929,1979,2079,2113,2442,2449,2681,2752,2821,2922,3087,3185,3290,3519,3688,3979,4039,4284,4360,4480,4505,4636,4637,4816,4852,4896,5022,5152,5190,5412,5545,5807,5819,5884,6426,6568,6600,6630,6714,6760,6805,6819,6886,6950,6988,7137,7317,7423,7612,7691,7705,7851,7914,7973,8167,8235,8617,8650,8696,8773,8906,9140,9363,9560,9725,9751,9826,9861],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);