trybeacon 0.1.72 → 0.1.74

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 (432) 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 +17 -9
  4. package/.next/build-manifest.json +3 -3
  5. package/.next/prerender-manifest.json +3 -3
  6. package/.next/routes-manifest.json +54 -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.js.nft.json +1 -1
  19. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  20. package/.next/server/app/_not-found.html +1 -1
  21. package/.next/server/app/_not-found.rsc +23 -22
  22. package/.next/server/app/_not-found.segments/_full.segment.rsc +23 -22
  23. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  24. package/.next/server/app/_not-found.segments/_index.segment.rsc +12 -11
  25. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  26. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  27. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  28. package/.next/server/app/api/ask/answer/route.js +1 -0
  29. package/.next/server/app/api/ask/answer/route.js.nft.json +1 -0
  30. package/.next/server/app/api/ask/answer/route_client-reference-manifest.js +1 -0
  31. package/.next/server/app/api/ask/route.js +1 -0
  32. package/.next/server/app/api/ask/route.js.nft.json +1 -0
  33. package/.next/server/app/api/ask/route_client-reference-manifest.js +1 -0
  34. package/.next/server/app/api/ask/verdict/route.js +1 -0
  35. package/.next/server/app/api/ask/verdict/route.js.nft.json +1 -0
  36. package/.next/server/app/api/ask/verdict/route_client-reference-manifest.js +1 -0
  37. package/.next/server/app/api/board-annotations/[id]/route.js +1 -1
  38. package/.next/server/app/api/board-annotations/route.js +1 -1
  39. package/.next/server/app/api/board-layout/route.js +1 -1
  40. package/.next/server/app/api/bug-flags/[id]/route.js +1 -1
  41. package/.next/server/app/api/bug-flags/route.js +1 -1
  42. package/.next/server/app/api/changes/comment/answer/route.js +4 -0
  43. package/.next/server/app/api/changes/comment/answer/route.js.nft.json +1 -0
  44. package/.next/server/app/api/changes/comment/answer/route_client-reference-manifest.js +1 -0
  45. package/.next/server/app/api/changes/comment/claim/route.js +4 -0
  46. package/.next/server/app/api/changes/comment/claim/route.js.nft.json +1 -0
  47. package/.next/server/app/api/changes/comment/claim/route_client-reference-manifest.js +1 -0
  48. package/.next/server/app/api/changes/comment/route.js +4 -0
  49. package/.next/server/app/api/changes/comment/route.js.nft.json +1 -0
  50. package/.next/server/app/api/changes/comment/route_client-reference-manifest.js +1 -0
  51. package/.next/server/app/api/changes/quality/route.js +1 -0
  52. package/.next/server/app/api/changes/quality/route.js.nft.json +1 -0
  53. package/.next/server/app/api/changes/quality/route_client-reference-manifest.js +1 -0
  54. package/.next/server/app/api/changes/route.js +1 -0
  55. package/.next/server/app/api/{flags → changes}/route.js.nft.json +1 -1
  56. package/.next/server/app/api/changes/route_client-reference-manifest.js +1 -0
  57. package/.next/server/app/api/changes/viewed/route.js +1 -0
  58. package/.next/server/app/api/changes/viewed/route.js.nft.json +1 -0
  59. package/.next/server/app/api/changes/viewed/route_client-reference-manifest.js +1 -0
  60. package/.next/server/app/api/code-graph/position/route.js +1 -1
  61. package/.next/server/app/api/code-graph/route.js +1 -1
  62. package/.next/server/app/api/context/feature/route.js +1 -1
  63. package/.next/server/app/api/context/file/route.js +1 -1
  64. package/.next/server/app/api/context/route.js +1 -9
  65. package/.next/server/app/api/context/route.js.nft.json +1 -1
  66. package/.next/server/app/api/db/arrange/route.js +1 -1
  67. package/.next/server/app/api/db/backfill-access/route.js +1 -1
  68. package/.next/server/app/api/db/position/route.js +1 -1
  69. package/.next/server/app/api/db/position/route.js.nft.json +1 -1
  70. package/.next/server/app/api/db/prune-planned/route.js +1 -1
  71. package/.next/server/app/api/db/reconcile-endpoints/route.js +1 -1
  72. package/.next/server/app/api/db/relations/[id]/route.js +1 -1
  73. package/.next/server/app/api/db/tables/[id]/route.js +1 -1
  74. package/.next/server/app/api/draft/approve/route.js +1 -1
  75. package/.next/server/app/api/draft/approve/route.js.nft.json +1 -1
  76. package/.next/server/app/api/draft/route.js +1 -1
  77. package/.next/server/app/api/draft/route.js.nft.json +1 -1
  78. package/.next/server/app/api/draft/status/route.js +1 -1
  79. package/.next/server/app/api/edges/[id]/route.js +1 -1
  80. package/.next/server/app/api/edges/route.js +1 -1
  81. package/.next/server/app/api/edges/route.js.nft.json +1 -1
  82. package/.next/server/app/api/endpoints/[id]/route.js +1 -1
  83. package/.next/server/app/api/entities/route.js +1 -1
  84. package/.next/server/app/api/ingest/route.js +1 -9
  85. package/.next/server/app/api/ingest/route.js.nft.json +1 -1
  86. package/.next/server/app/api/init/route.js +1 -9
  87. package/.next/server/app/api/init/route.js.nft.json +1 -1
  88. package/.next/server/app/api/lesson/close/route.js +1 -1
  89. package/.next/server/app/api/lesson/presence/route.js +1 -1
  90. package/.next/server/app/api/lesson/questions/route.js +1 -1
  91. package/.next/server/app/api/lesson/route.js +1 -1
  92. package/.next/server/app/api/lesson/save/route.js +1 -1
  93. package/.next/server/app/api/lesson/verdict/route.js +1 -1
  94. package/.next/server/app/api/map/describe/route.js +1 -9
  95. package/.next/server/app/api/map/describe/route.js.nft.json +1 -1
  96. package/.next/server/app/api/map/files/route.js +1 -1
  97. package/.next/server/app/api/map/files/route.js.nft.json +1 -1
  98. package/.next/server/app/api/map/finish/route.js +1 -1
  99. package/.next/server/app/api/map/finish/route.js.nft.json +1 -1
  100. package/.next/server/app/api/map/route.js +1 -1
  101. package/.next/server/app/api/map/route.js.nft.json +1 -1
  102. package/.next/server/app/api/map/start/route.js +1 -1
  103. package/.next/server/app/api/map/start/route.js.nft.json +1 -1
  104. package/.next/server/app/api/map/touch-active/route.js +1 -1
  105. package/.next/server/app/api/map/touch-active/route.js.nft.json +1 -1
  106. package/.next/server/app/api/mention-search/route.js +1 -1
  107. package/.next/server/app/api/nodes/[id]/position/route.js +1 -1
  108. package/.next/server/app/api/nodes/[id]/position/route.js.nft.json +1 -1
  109. package/.next/server/app/api/nodes/[id]/route.js +1 -1
  110. package/.next/server/app/api/nodes/[id]/route.js.nft.json +1 -1
  111. package/.next/server/app/api/nodes/positions/route.js +1 -1
  112. package/.next/server/app/api/nodes/positions/route.js.nft.json +1 -1
  113. package/.next/server/app/api/nodes/route.js +1 -1
  114. package/.next/server/app/api/nodes/route.js.nft.json +1 -1
  115. package/.next/server/app/api/nodes/subtasks/route.js +1 -1
  116. package/.next/server/app/api/nodes/subtasks/route.js.nft.json +1 -1
  117. package/.next/server/app/api/notes/[id]/route.js +1 -1
  118. package/.next/server/app/api/notes/route.js +1 -1
  119. package/.next/server/app/api/open/route.js +1 -1
  120. package/.next/server/app/api/plan/annotations/route.js +2 -2
  121. package/.next/server/app/api/plan/approve/route.js +1 -9
  122. package/.next/server/app/api/plan/approve/route.js.nft.json +1 -1
  123. package/.next/server/app/api/plan/history/route.js +1 -1
  124. package/.next/server/app/api/plan/markdown/route.js +1 -1
  125. package/.next/server/app/api/plan/markdown/route.js.nft.json +1 -1
  126. package/.next/server/app/api/plan/presence/route.js +1 -1
  127. package/.next/server/app/api/plan/route.js +1 -1
  128. package/.next/server/app/api/plan/route.js.nft.json +1 -1
  129. package/.next/server/app/api/plan/verdict/route.js +1 -1
  130. package/.next/server/app/api/plan/verdict/route.js.nft.json +1 -1
  131. package/.next/server/app/api/preferences/route.js +1 -1
  132. package/.next/server/app/api/project-meta/route.js +1 -1
  133. package/.next/server/app/api/reset/route.js +1 -1
  134. package/.next/server/app/api/scope-guard/check/route.js +4 -1
  135. package/.next/server/app/api/scope-guard/check/route.js.nft.json +1 -1
  136. package/.next/server/app/api/share/create/route.js +1 -1
  137. package/.next/server/app/api/share/create/route.js.nft.json +1 -1
  138. package/.next/server/app/api/share/route.js +1 -1
  139. package/.next/server/app/api/stream/route.js +2 -2
  140. package/.next/server/app/api/tab/nav/route.js +1 -1
  141. package/.next/server/app/api/tab/presence/route.js +1 -1
  142. package/.next/server/app/api/telemetry/route.js +1 -1
  143. package/.next/server/app/api/telemetry/stats/route.js +1 -1
  144. package/.next/server/app/api/version/route.js +1 -1
  145. package/.next/server/app/api/workspace/activate/route.js +1 -1
  146. package/.next/server/app/api/workspace/route.js +1 -1
  147. package/.next/server/app/apple-icon.png/route.js +1 -1
  148. package/.next/server/app/docs/page.js +2 -2
  149. package/.next/server/app/docs/page.js.nft.json +1 -1
  150. package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  151. package/.next/server/app/docs.html +1 -1
  152. package/.next/server/app/docs.rsc +24 -23
  153. package/.next/server/app/docs.segments/_full.segment.rsc +24 -23
  154. package/.next/server/app/docs.segments/_head.segment.rsc +1 -1
  155. package/.next/server/app/docs.segments/_index.segment.rsc +12 -11
  156. package/.next/server/app/docs.segments/_tree.segment.rsc +2 -2
  157. package/.next/server/app/docs.segments/docs/__PAGE__.segment.rsc +1 -1
  158. package/.next/server/app/docs.segments/docs.segment.rsc +1 -1
  159. package/.next/server/app/help/page.js +2 -2
  160. package/.next/server/app/help/page.js.nft.json +1 -1
  161. package/.next/server/app/help/page_client-reference-manifest.js +1 -1
  162. package/.next/server/app/help.html +1 -1
  163. package/.next/server/app/help.rsc +32 -31
  164. package/.next/server/app/help.segments/_full.segment.rsc +32 -31
  165. package/.next/server/app/help.segments/_head.segment.rsc +1 -1
  166. package/.next/server/app/help.segments/_index.segment.rsc +12 -11
  167. package/.next/server/app/help.segments/_tree.segment.rsc +2 -2
  168. package/.next/server/app/help.segments/help/__PAGE__.segment.rsc +1 -1
  169. package/.next/server/app/help.segments/help.segment.rsc +1 -1
  170. package/.next/server/app/icon.svg/route.js +1 -1
  171. package/.next/server/app/index.html +1 -1
  172. package/.next/server/app/index.rsc +22 -21
  173. package/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  174. package/.next/server/app/index.segments/_full.segment.rsc +22 -21
  175. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  176. package/.next/server/app/index.segments/_index.segment.rsc +12 -11
  177. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  178. package/.next/server/app/learn/page.js +3 -3
  179. package/.next/server/app/learn/page.js.nft.json +1 -1
  180. package/.next/server/app/learn/page_client-reference-manifest.js +1 -1
  181. package/.next/server/app/map/page.js +2 -2
  182. package/.next/server/app/map/page.js.nft.json +1 -1
  183. package/.next/server/app/map/page_client-reference-manifest.js +1 -1
  184. package/.next/server/app/page.js +2 -2
  185. package/.next/server/app/page.js.nft.json +1 -1
  186. package/.next/server/app/page_client-reference-manifest.js +1 -1
  187. package/.next/server/app/plan/page.js +12 -2
  188. package/.next/server/app/plan/page.js.nft.json +1 -1
  189. package/.next/server/app/plan/page_client-reference-manifest.js +1 -1
  190. package/.next/server/app/s/[token]/page.js +2 -2
  191. package/.next/server/app/s/[token]/page.js.nft.json +1 -1
  192. package/.next/server/app/s/[token]/page_client-reference-manifest.js +1 -1
  193. package/.next/server/app/settings/page.js +2 -2
  194. package/.next/server/app/settings/page.js.nft.json +1 -1
  195. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  196. package/.next/server/app-paths-manifest.json +17 -9
  197. package/.next/server/chunks/1130.js +1 -1
  198. package/.next/server/chunks/2031.js +1 -0
  199. package/.next/server/chunks/230.js +1 -0
  200. package/.next/server/chunks/2693.js +8 -0
  201. package/.next/server/chunks/374.js +1 -0
  202. package/.next/server/chunks/5295.js +1 -0
  203. package/.next/server/chunks/{4700.js → 5704.js} +2 -2
  204. package/.next/server/chunks/6469.js +10 -0
  205. package/.next/server/chunks/6962.js +1 -0
  206. package/.next/server/chunks/8227.js +1 -0
  207. package/.next/server/chunks/8674.js +7 -0
  208. package/.next/server/middleware-build-manifest.js +1 -1
  209. package/.next/server/pages/404.html +1 -1
  210. package/.next/server/pages/500.html +1 -1
  211. package/.next/server/server-reference-manifest.js +1 -1
  212. package/.next/server/server-reference-manifest.json +1 -1
  213. package/.next/static/chunks/3151-861a6caa40f70f79.js +1 -0
  214. package/.next/static/chunks/3908-80efc60050779adf.js +1 -0
  215. package/.next/static/chunks/5697-5b9719b81806b4cf.js +1 -0
  216. package/.next/static/chunks/654-8e68a43e4c589e9c.js +1 -0
  217. package/.next/static/chunks/7424-d7fa15ef452064dd.js +1 -0
  218. package/.next/static/chunks/app/_global-error/page-d54a69e7dc6b4008.js +1 -0
  219. package/.next/static/chunks/app/api/ask/answer/route-d54a69e7dc6b4008.js +1 -0
  220. package/.next/static/chunks/app/api/ask/route-d54a69e7dc6b4008.js +1 -0
  221. package/.next/static/chunks/app/api/ask/verdict/route-d54a69e7dc6b4008.js +1 -0
  222. package/.next/static/chunks/app/api/board-annotations/[id]/route-d54a69e7dc6b4008.js +1 -0
  223. package/.next/static/chunks/app/api/board-annotations/route-d54a69e7dc6b4008.js +1 -0
  224. package/.next/static/chunks/app/api/board-layout/route-d54a69e7dc6b4008.js +1 -0
  225. package/.next/static/chunks/app/api/bug-flags/[id]/route-d54a69e7dc6b4008.js +1 -0
  226. package/.next/static/chunks/app/api/bug-flags/route-d54a69e7dc6b4008.js +1 -0
  227. package/.next/static/chunks/app/api/changes/comment/answer/route-d54a69e7dc6b4008.js +1 -0
  228. package/.next/static/chunks/app/api/changes/comment/claim/route-d54a69e7dc6b4008.js +1 -0
  229. package/.next/static/chunks/app/api/changes/comment/route-d54a69e7dc6b4008.js +1 -0
  230. package/.next/static/chunks/app/api/changes/quality/route-d54a69e7dc6b4008.js +1 -0
  231. package/.next/static/chunks/app/api/changes/route-d54a69e7dc6b4008.js +1 -0
  232. package/.next/static/chunks/app/api/changes/viewed/route-d54a69e7dc6b4008.js +1 -0
  233. package/.next/static/chunks/app/api/code-graph/position/route-d54a69e7dc6b4008.js +1 -0
  234. package/.next/static/chunks/app/api/code-graph/route-d54a69e7dc6b4008.js +1 -0
  235. package/.next/static/chunks/app/api/context/feature/route-d54a69e7dc6b4008.js +1 -0
  236. package/.next/static/chunks/app/api/context/file/route-d54a69e7dc6b4008.js +1 -0
  237. package/.next/static/chunks/app/api/context/route-d54a69e7dc6b4008.js +1 -0
  238. package/.next/static/chunks/app/api/db/arrange/route-d54a69e7dc6b4008.js +1 -0
  239. package/.next/static/chunks/app/api/db/backfill-access/route-d54a69e7dc6b4008.js +1 -0
  240. package/.next/static/chunks/app/api/db/position/route-d54a69e7dc6b4008.js +1 -0
  241. package/.next/static/chunks/app/api/db/prune-planned/route-d54a69e7dc6b4008.js +1 -0
  242. package/.next/static/chunks/app/api/db/reconcile-endpoints/route-d54a69e7dc6b4008.js +1 -0
  243. package/.next/static/chunks/app/api/db/relations/[id]/route-d54a69e7dc6b4008.js +1 -0
  244. package/.next/static/chunks/app/api/db/tables/[id]/route-d54a69e7dc6b4008.js +1 -0
  245. package/.next/static/chunks/app/api/draft/approve/route-d54a69e7dc6b4008.js +1 -0
  246. package/.next/static/chunks/app/api/draft/route-d54a69e7dc6b4008.js +1 -0
  247. package/.next/static/chunks/app/api/draft/status/route-d54a69e7dc6b4008.js +1 -0
  248. package/.next/static/chunks/app/api/edges/[id]/route-d54a69e7dc6b4008.js +1 -0
  249. package/.next/static/chunks/app/api/edges/route-d54a69e7dc6b4008.js +1 -0
  250. package/.next/static/chunks/app/api/endpoints/[id]/route-d54a69e7dc6b4008.js +1 -0
  251. package/.next/static/chunks/app/api/entities/route-d54a69e7dc6b4008.js +1 -0
  252. package/.next/static/chunks/app/api/ingest/route-d54a69e7dc6b4008.js +1 -0
  253. package/.next/static/chunks/app/api/init/route-d54a69e7dc6b4008.js +1 -0
  254. package/.next/static/chunks/app/api/lesson/close/route-d54a69e7dc6b4008.js +1 -0
  255. package/.next/static/chunks/app/api/lesson/presence/route-d54a69e7dc6b4008.js +1 -0
  256. package/.next/static/chunks/app/api/lesson/questions/route-d54a69e7dc6b4008.js +1 -0
  257. package/.next/static/chunks/app/api/lesson/route-d54a69e7dc6b4008.js +1 -0
  258. package/.next/static/chunks/app/api/lesson/save/route-d54a69e7dc6b4008.js +1 -0
  259. package/.next/static/chunks/app/api/lesson/verdict/route-d54a69e7dc6b4008.js +1 -0
  260. package/.next/static/chunks/app/api/map/describe/route-d54a69e7dc6b4008.js +1 -0
  261. package/.next/static/chunks/app/api/map/files/route-d54a69e7dc6b4008.js +1 -0
  262. package/.next/static/chunks/app/api/map/finish/route-d54a69e7dc6b4008.js +1 -0
  263. package/.next/static/chunks/app/api/map/route-d54a69e7dc6b4008.js +1 -0
  264. package/.next/static/chunks/app/api/map/start/route-d54a69e7dc6b4008.js +1 -0
  265. package/.next/static/chunks/app/api/map/touch-active/route-d54a69e7dc6b4008.js +1 -0
  266. package/.next/static/chunks/app/api/mention-search/route-d54a69e7dc6b4008.js +1 -0
  267. package/.next/static/chunks/app/api/nodes/[id]/position/route-d54a69e7dc6b4008.js +1 -0
  268. package/.next/static/chunks/app/api/nodes/[id]/route-d54a69e7dc6b4008.js +1 -0
  269. package/.next/static/chunks/app/api/nodes/positions/route-d54a69e7dc6b4008.js +1 -0
  270. package/.next/static/chunks/app/api/nodes/route-d54a69e7dc6b4008.js +1 -0
  271. package/.next/static/chunks/app/api/nodes/subtasks/route-d54a69e7dc6b4008.js +1 -0
  272. package/.next/static/chunks/app/api/notes/[id]/route-d54a69e7dc6b4008.js +1 -0
  273. package/.next/static/chunks/app/api/notes/route-d54a69e7dc6b4008.js +1 -0
  274. package/.next/static/chunks/app/api/open/route-d54a69e7dc6b4008.js +1 -0
  275. package/.next/static/chunks/app/api/plan/annotations/route-d54a69e7dc6b4008.js +1 -0
  276. package/.next/static/chunks/app/api/plan/approve/route-d54a69e7dc6b4008.js +1 -0
  277. package/.next/static/chunks/app/api/plan/history/route-d54a69e7dc6b4008.js +1 -0
  278. package/.next/static/chunks/app/api/plan/markdown/route-d54a69e7dc6b4008.js +1 -0
  279. package/.next/static/chunks/app/api/plan/presence/route-d54a69e7dc6b4008.js +1 -0
  280. package/.next/static/chunks/app/api/plan/route-d54a69e7dc6b4008.js +1 -0
  281. package/.next/static/chunks/app/api/plan/verdict/route-d54a69e7dc6b4008.js +1 -0
  282. package/.next/static/chunks/app/api/preferences/route-d54a69e7dc6b4008.js +1 -0
  283. package/.next/static/chunks/app/api/project-meta/route-d54a69e7dc6b4008.js +1 -0
  284. package/.next/static/chunks/app/api/reset/route-d54a69e7dc6b4008.js +1 -0
  285. package/.next/static/chunks/app/api/scope-guard/check/route-d54a69e7dc6b4008.js +1 -0
  286. package/.next/static/chunks/app/api/share/create/route-d54a69e7dc6b4008.js +1 -0
  287. package/.next/static/chunks/app/api/share/route-d54a69e7dc6b4008.js +1 -0
  288. package/.next/static/chunks/app/api/stream/route-d54a69e7dc6b4008.js +1 -0
  289. package/.next/static/chunks/app/api/tab/nav/route-d54a69e7dc6b4008.js +1 -0
  290. package/.next/static/chunks/app/api/tab/presence/route-d54a69e7dc6b4008.js +1 -0
  291. package/.next/static/chunks/app/api/telemetry/route-d54a69e7dc6b4008.js +1 -0
  292. package/.next/static/chunks/app/api/telemetry/stats/route-d54a69e7dc6b4008.js +1 -0
  293. package/.next/static/chunks/app/api/version/route-d54a69e7dc6b4008.js +1 -0
  294. package/.next/static/chunks/app/api/workspace/activate/route-d54a69e7dc6b4008.js +1 -0
  295. package/.next/static/chunks/app/api/workspace/route-d54a69e7dc6b4008.js +1 -0
  296. package/.next/static/chunks/app/layout-f908dc26e06f4302.js +1 -0
  297. package/.next/static/chunks/app/learn/{page-e5bd3257170098e7.js → page-bc40746566d115e5.js} +1 -1
  298. package/.next/static/chunks/app/map/{page-5ab46e5ea28ecd79.js → page-233ccd830873114b.js} +1 -1
  299. package/.next/static/chunks/app/plan/page-8ec1e1d8ea40686a.js +11 -0
  300. package/.next/static/chunks/app/s/[token]/{page-8e4ffccdf7cd0309.js → page-2a3f04bc3f60ec49.js} +1 -1
  301. package/.next/static/chunks/app/settings/page-a751eabdd933f685.js +1 -0
  302. package/.next/static/chunks/next/dist/client/components/builtin/app-error-d54a69e7dc6b4008.js +1 -0
  303. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-d54a69e7dc6b4008.js +1 -0
  304. package/.next/static/chunks/next/dist/client/components/builtin/not-found-d54a69e7dc6b4008.js +1 -0
  305. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-d54a69e7dc6b4008.js +1 -0
  306. package/.next/static/chunks/{webpack-de4a0d9611ec2cad.js → webpack-6c27b0ed1ac1459c.js} +1 -1
  307. package/.next/static/css/60048003a8c96562.css +1 -0
  308. package/.next/static/css/a5d17568738ef1e9.css +1 -0
  309. package/.next/static/yescmIM6BeSzGgwZ-Dwpq/_buildManifest.js +1 -0
  310. package/.next/trace +46 -43
  311. package/.next/trace-build +1 -1
  312. package/.next/types/app/api/ask/answer/route.ts +351 -0
  313. package/.next/types/app/api/{flags → ask}/route.ts +3 -3
  314. package/.next/types/app/api/ask/verdict/route.ts +351 -0
  315. package/.next/types/app/api/changes/comment/answer/route.ts +351 -0
  316. package/.next/types/app/api/changes/comment/claim/route.ts +351 -0
  317. package/.next/types/app/api/changes/comment/route.ts +351 -0
  318. package/.next/types/app/api/changes/quality/route.ts +351 -0
  319. package/.next/types/app/api/changes/route.ts +351 -0
  320. package/.next/types/app/api/changes/viewed/route.ts +351 -0
  321. package/.next/types/routes.d.ts +10 -2
  322. package/.next/types/validator.ts +81 -9
  323. package/bun.lock +54 -0
  324. package/dist/bin/answer.js +8 -0
  325. package/dist/bin/ask.js +5 -0
  326. package/dist/bin/beacon.js +5 -5
  327. package/dist/bin/doctor.js +36 -35
  328. package/dist/bin/guard.js +1 -1
  329. package/dist/bin/hook.js +33 -32
  330. package/dist/bin/mcp.js +45 -44
  331. package/dist/bin/plan.js +36 -35
  332. package/dist/bin/remove.js +6 -6
  333. package/dist/bin/stop-hook.js +7 -3
  334. package/dist/bin/uninstall.js +35 -34
  335. package/dist/lib/assets.js +25 -24
  336. package/dist/lib/codex-install.js +32 -31
  337. package/dist/lib/global-install.js +33 -32
  338. package/dist/lib/telemetry.js +1 -1
  339. package/dist/lib/workspaces.js +1 -1
  340. package/package.json +3 -1
  341. package/plugin/skills/beacon-plan/SKILL.md +5 -4
  342. package/.next/server/app/api/flags/route.js +0 -1
  343. package/.next/server/app/api/flags/route_client-reference-manifest.js +0 -1
  344. package/.next/server/chunks/3098.js +0 -1
  345. package/.next/server/chunks/3221.js +0 -5
  346. package/.next/server/chunks/4307.js +0 -1
  347. package/.next/server/chunks/5719.js +0 -1
  348. package/.next/server/chunks/7604.js +0 -1
  349. package/.next/static/chunks/2231-63ad38ec8fb7cb6f.js +0 -1
  350. package/.next/static/chunks/2416-dbbbff4e4c9abad1.js +0 -1
  351. package/.next/static/chunks/766-242213d211df0afd.js +0 -1
  352. package/.next/static/chunks/8997-78a359d0d238622e.js +0 -1
  353. package/.next/static/chunks/app/_global-error/page-93569b5eb93a61e9.js +0 -1
  354. package/.next/static/chunks/app/api/board-annotations/[id]/route-93569b5eb93a61e9.js +0 -1
  355. package/.next/static/chunks/app/api/board-annotations/route-93569b5eb93a61e9.js +0 -1
  356. package/.next/static/chunks/app/api/board-layout/route-93569b5eb93a61e9.js +0 -1
  357. package/.next/static/chunks/app/api/bug-flags/[id]/route-93569b5eb93a61e9.js +0 -1
  358. package/.next/static/chunks/app/api/bug-flags/route-93569b5eb93a61e9.js +0 -1
  359. package/.next/static/chunks/app/api/code-graph/position/route-93569b5eb93a61e9.js +0 -1
  360. package/.next/static/chunks/app/api/code-graph/route-93569b5eb93a61e9.js +0 -1
  361. package/.next/static/chunks/app/api/context/feature/route-93569b5eb93a61e9.js +0 -1
  362. package/.next/static/chunks/app/api/context/file/route-93569b5eb93a61e9.js +0 -1
  363. package/.next/static/chunks/app/api/context/route-93569b5eb93a61e9.js +0 -1
  364. package/.next/static/chunks/app/api/db/arrange/route-93569b5eb93a61e9.js +0 -1
  365. package/.next/static/chunks/app/api/db/backfill-access/route-93569b5eb93a61e9.js +0 -1
  366. package/.next/static/chunks/app/api/db/position/route-93569b5eb93a61e9.js +0 -1
  367. package/.next/static/chunks/app/api/db/prune-planned/route-93569b5eb93a61e9.js +0 -1
  368. package/.next/static/chunks/app/api/db/reconcile-endpoints/route-93569b5eb93a61e9.js +0 -1
  369. package/.next/static/chunks/app/api/db/relations/[id]/route-93569b5eb93a61e9.js +0 -1
  370. package/.next/static/chunks/app/api/db/tables/[id]/route-93569b5eb93a61e9.js +0 -1
  371. package/.next/static/chunks/app/api/draft/approve/route-93569b5eb93a61e9.js +0 -1
  372. package/.next/static/chunks/app/api/draft/route-93569b5eb93a61e9.js +0 -1
  373. package/.next/static/chunks/app/api/draft/status/route-93569b5eb93a61e9.js +0 -1
  374. package/.next/static/chunks/app/api/edges/[id]/route-93569b5eb93a61e9.js +0 -1
  375. package/.next/static/chunks/app/api/edges/route-93569b5eb93a61e9.js +0 -1
  376. package/.next/static/chunks/app/api/endpoints/[id]/route-93569b5eb93a61e9.js +0 -1
  377. package/.next/static/chunks/app/api/entities/route-93569b5eb93a61e9.js +0 -1
  378. package/.next/static/chunks/app/api/flags/route-93569b5eb93a61e9.js +0 -1
  379. package/.next/static/chunks/app/api/ingest/route-93569b5eb93a61e9.js +0 -1
  380. package/.next/static/chunks/app/api/init/route-93569b5eb93a61e9.js +0 -1
  381. package/.next/static/chunks/app/api/lesson/close/route-93569b5eb93a61e9.js +0 -1
  382. package/.next/static/chunks/app/api/lesson/presence/route-93569b5eb93a61e9.js +0 -1
  383. package/.next/static/chunks/app/api/lesson/questions/route-93569b5eb93a61e9.js +0 -1
  384. package/.next/static/chunks/app/api/lesson/route-93569b5eb93a61e9.js +0 -1
  385. package/.next/static/chunks/app/api/lesson/save/route-93569b5eb93a61e9.js +0 -1
  386. package/.next/static/chunks/app/api/lesson/verdict/route-93569b5eb93a61e9.js +0 -1
  387. package/.next/static/chunks/app/api/map/describe/route-93569b5eb93a61e9.js +0 -1
  388. package/.next/static/chunks/app/api/map/files/route-93569b5eb93a61e9.js +0 -1
  389. package/.next/static/chunks/app/api/map/finish/route-93569b5eb93a61e9.js +0 -1
  390. package/.next/static/chunks/app/api/map/route-93569b5eb93a61e9.js +0 -1
  391. package/.next/static/chunks/app/api/map/start/route-93569b5eb93a61e9.js +0 -1
  392. package/.next/static/chunks/app/api/map/touch-active/route-93569b5eb93a61e9.js +0 -1
  393. package/.next/static/chunks/app/api/mention-search/route-93569b5eb93a61e9.js +0 -1
  394. package/.next/static/chunks/app/api/nodes/[id]/position/route-93569b5eb93a61e9.js +0 -1
  395. package/.next/static/chunks/app/api/nodes/[id]/route-93569b5eb93a61e9.js +0 -1
  396. package/.next/static/chunks/app/api/nodes/positions/route-93569b5eb93a61e9.js +0 -1
  397. package/.next/static/chunks/app/api/nodes/route-93569b5eb93a61e9.js +0 -1
  398. package/.next/static/chunks/app/api/nodes/subtasks/route-93569b5eb93a61e9.js +0 -1
  399. package/.next/static/chunks/app/api/notes/[id]/route-93569b5eb93a61e9.js +0 -1
  400. package/.next/static/chunks/app/api/notes/route-93569b5eb93a61e9.js +0 -1
  401. package/.next/static/chunks/app/api/open/route-93569b5eb93a61e9.js +0 -1
  402. package/.next/static/chunks/app/api/plan/annotations/route-93569b5eb93a61e9.js +0 -1
  403. package/.next/static/chunks/app/api/plan/approve/route-93569b5eb93a61e9.js +0 -1
  404. package/.next/static/chunks/app/api/plan/history/route-93569b5eb93a61e9.js +0 -1
  405. package/.next/static/chunks/app/api/plan/markdown/route-93569b5eb93a61e9.js +0 -1
  406. package/.next/static/chunks/app/api/plan/presence/route-93569b5eb93a61e9.js +0 -1
  407. package/.next/static/chunks/app/api/plan/route-93569b5eb93a61e9.js +0 -1
  408. package/.next/static/chunks/app/api/plan/verdict/route-93569b5eb93a61e9.js +0 -1
  409. package/.next/static/chunks/app/api/preferences/route-93569b5eb93a61e9.js +0 -1
  410. package/.next/static/chunks/app/api/project-meta/route-93569b5eb93a61e9.js +0 -1
  411. package/.next/static/chunks/app/api/reset/route-93569b5eb93a61e9.js +0 -1
  412. package/.next/static/chunks/app/api/scope-guard/check/route-93569b5eb93a61e9.js +0 -1
  413. package/.next/static/chunks/app/api/share/create/route-93569b5eb93a61e9.js +0 -1
  414. package/.next/static/chunks/app/api/share/route-93569b5eb93a61e9.js +0 -1
  415. package/.next/static/chunks/app/api/stream/route-93569b5eb93a61e9.js +0 -1
  416. package/.next/static/chunks/app/api/tab/nav/route-93569b5eb93a61e9.js +0 -1
  417. package/.next/static/chunks/app/api/tab/presence/route-93569b5eb93a61e9.js +0 -1
  418. package/.next/static/chunks/app/api/telemetry/route-93569b5eb93a61e9.js +0 -1
  419. package/.next/static/chunks/app/api/telemetry/stats/route-93569b5eb93a61e9.js +0 -1
  420. package/.next/static/chunks/app/api/version/route-93569b5eb93a61e9.js +0 -1
  421. package/.next/static/chunks/app/api/workspace/activate/route-93569b5eb93a61e9.js +0 -1
  422. package/.next/static/chunks/app/api/workspace/route-93569b5eb93a61e9.js +0 -1
  423. package/.next/static/chunks/app/layout-d3b7276f116dce46.js +0 -1
  424. package/.next/static/chunks/app/plan/page-948f3eca400e746a.js +0 -1
  425. package/.next/static/chunks/app/settings/page-7e176d120b1effa9.js +0 -1
  426. package/.next/static/chunks/next/dist/client/components/builtin/app-error-93569b5eb93a61e9.js +0 -1
  427. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-93569b5eb93a61e9.js +0 -1
  428. package/.next/static/chunks/next/dist/client/components/builtin/not-found-93569b5eb93a61e9.js +0 -1
  429. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-93569b5eb93a61e9.js +0 -1
  430. package/.next/static/css/446974879473fd01.css +0 -1
  431. package/.next/static/lnOOQsWRymiliRmMEQ95F/_buildManifest.js +0 -1
  432. /package/.next/static/{lnOOQsWRymiliRmMEQ95F → yescmIM6BeSzGgwZ-Dwpq}/_ssgManifest.js +0 -0
package/bun.lock CHANGED
@@ -38,8 +38,10 @@
38
38
  "next": "16.2.7",
39
39
  "radix-ui": "^1.4.3",
40
40
  "react": "19.2.4",
41
+ "react-diff-view": "^3.3.3",
41
42
  "react-dom": "19.2.4",
42
43
  "react-hook-form": "^7.77.0",
44
+ "refractor": "^5.0.0",
43
45
  "server-only": "^0.0.1",
44
46
  "shadcn": "^4.10.0",
45
47
  "tailwind-merge": "^3.6.0",
@@ -669,12 +671,16 @@
669
671
 
670
672
  "@types/estree": ["@types/estree@1.0.9", "", {}, "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg=="],
671
673
 
674
+ "@types/hast": ["@types/hast@3.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ=="],
675
+
672
676
  "@types/json-schema": ["@types/json-schema@7.0.15", "", {}, "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="],
673
677
 
674
678
  "@types/json5": ["@types/json5@0.0.29", "", {}, "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ=="],
675
679
 
676
680
  "@types/node": ["@types/node@20.19.41", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-ECymXOukMnOoVkC2bb1Vc/w/836DXncOg5m8Xj1RH7xSHZJWNYY6Zh7EH477vcnD5egKNNfy2RpNOmuChhFPgQ=="],
677
681
 
682
+ "@types/prismjs": ["@types/prismjs@1.26.6", "", {}, "sha512-vqlvI7qlMvcCBbVe0AKAb4f97//Hy0EBTaiW8AalRnG/xAN5zOiWWyrNqNXeq8+KAuvRewjCVY1+IPxk4RdNYw=="],
683
+
678
684
  "@types/react": ["@types/react@19.2.16", "", { "dependencies": { "csstype": "^3.2.2" } }, "sha512-esJiCAnl0kfpNdE69f3So4WJUXy95dLZydX0KwK46riIHDzHM7O9Vtf9xCHW0PXIqvgqNrswl522kA/5yx+F4w=="],
679
685
 
680
686
  "@types/react-dom": ["@types/react-dom@19.2.3", "", { "peerDependencies": { "@types/react": "^19.2.0" } }, "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ=="],
@@ -683,6 +689,8 @@
683
689
 
684
690
  "@types/statuses": ["@types/statuses@2.0.6", "", {}, "sha512-xMAgYwceFhRA2zY+XbEA7mxYbA093wdiW8Vu6gZPGWy9cmOyU9XesH1tNcEWsKFd5Vzrqx5T3D38PWx1FIIXkA=="],
685
691
 
692
+ "@types/unist": ["@types/unist@3.0.3", "", {}, "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q=="],
693
+
686
694
  "@types/use-sync-external-store": ["@types/use-sync-external-store@0.0.6", "", {}, "sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg=="],
687
695
 
688
696
  "@types/validate-npm-package-name": ["@types/validate-npm-package-name@4.0.2", "", {}, "sha512-lrpDziQipxCEeK5kWxvljWYhUvOiB2A9izZd9B2AFarYAkqZshb4lPbRs7zKEic6eGtH8V/2qJW+dPp9OtF6bw=="],
@@ -859,6 +867,12 @@
859
867
 
860
868
  "chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="],
861
869
 
870
+ "character-entities": ["character-entities@2.0.2", "", {}, "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ=="],
871
+
872
+ "character-entities-legacy": ["character-entities-legacy@3.0.0", "", {}, "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ=="],
873
+
874
+ "character-reference-invalid": ["character-reference-invalid@2.0.1", "", {}, "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw=="],
875
+
862
876
  "chart.js": ["chart.js@4.5.1", "", { "dependencies": { "@kurkle/color": "^0.3.0" } }, "sha512-GIjfiT9dbmHRiYi6Nl2yFCq7kkwdkp1W/lp2J99rX0yo9tgJGn3lKQATztIjb5tVtevcBtIdICNWqlq5+E8/Pw=="],
863
877
 
864
878
  "chokidar": ["chokidar@5.0.0", "", { "dependencies": { "readdirp": "^5.0.0" } }, "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw=="],
@@ -869,6 +883,8 @@
869
883
 
870
884
  "classcat": ["classcat@5.0.5", "", {}, "sha512-JhZUT7JFcQy/EzW605k/ktHtncoo9vnyW/2GspNYwFlN1C/WmjuV/xtS04e9SOkL2sTdw0VAZ2UGCcQ9lR6p6w=="],
871
885
 
886
+ "classnames": ["classnames@2.5.1", "", {}, "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow=="],
887
+
872
888
  "cli-cursor": ["cli-cursor@5.0.0", "", { "dependencies": { "restore-cursor": "^5.0.0" } }, "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw=="],
873
889
 
874
890
  "cli-spinners": ["cli-spinners@2.9.2", "", {}, "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg=="],
@@ -887,6 +903,8 @@
887
903
 
888
904
  "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="],
889
905
 
906
+ "comma-separated-tokens": ["comma-separated-tokens@2.0.3", "", {}, "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg=="],
907
+
890
908
  "commander": ["commander@14.0.3", "", {}, "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw=="],
891
909
 
892
910
  "concat-map": ["concat-map@0.0.1", "", {}, "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="],
@@ -947,6 +965,8 @@
947
965
 
948
966
  "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" }, "peerDependencies": { "supports-color": "*" }, "optionalPeers": ["supports-color"] }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="],
949
967
 
968
+ "decode-named-character-reference": ["decode-named-character-reference@1.3.0", "", { "dependencies": { "character-entities": "^2.0.0" } }, "sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q=="],
969
+
950
970
  "decompress-response": ["decompress-response@6.0.0", "", { "dependencies": { "mimic-response": "^3.1.0" } }, "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ=="],
951
971
 
952
972
  "dedent": ["dedent@1.7.2", "", { "peerDependencies": { "babel-plugin-macros": "^3.1.0" }, "optionalPeers": ["babel-plugin-macros"] }, "sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA=="],
@@ -983,6 +1003,8 @@
983
1003
 
984
1004
  "diff": ["diff@8.0.4", "", {}, "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw=="],
985
1005
 
1006
+ "diff-match-patch": ["diff-match-patch@1.0.5", "", {}, "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw=="],
1007
+
986
1008
  "doctrine": ["doctrine@2.1.0", "", { "dependencies": { "esutils": "^2.0.2" } }, "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw=="],
987
1009
 
988
1010
  "dotenv": ["dotenv@17.4.2", "", {}, "sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw=="],
@@ -1189,6 +1211,8 @@
1189
1211
 
1190
1212
  "giget": ["giget@3.2.0", "", { "bin": { "giget": "dist/cli.mjs" } }, "sha512-GvHTWcykIR/fP8cj8dMpuMMkvaeJfPvYnhq0oW+chSeIr+ldX21ifU2Ms6KBoyKZQZmVaUAAhQ2EZ68KJF8a7A=="],
1191
1213
 
1214
+ "gitdiff-parser": ["gitdiff-parser@0.3.1", "", {}, "sha512-YQJnY8aew65id8okGxKCksH3efDCJ9HzV7M9rsvd65habf39Pkh4cgYJ27AaoDMqo1X98pgNJhNMrm/kpV7UVQ=="],
1215
+
1192
1216
  "github-from-package": ["github-from-package@0.0.0", "", {}, "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw=="],
1193
1217
 
1194
1218
  "glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="],
@@ -1221,6 +1245,10 @@
1221
1245
 
1222
1246
  "hasown": ["hasown@2.0.4", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A=="],
1223
1247
 
1248
+ "hast-util-parse-selector": ["hast-util-parse-selector@4.0.0", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A=="],
1249
+
1250
+ "hastscript": ["hastscript@9.0.1", "", { "dependencies": { "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", "hast-util-parse-selector": "^4.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0" } }, "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w=="],
1251
+
1224
1252
  "headers-polyfill": ["headers-polyfill@5.0.1", "", { "dependencies": { "@types/set-cookie-parser": "^2.4.10", "set-cookie-parser": "^3.0.1" } }, "sha512-1TJ6Fih/b8h5TIcv+1+Hw0PDQWJTKDKzFZzcKOiW1wJza3XoAQlkCuXLbymPYB8+ZQyw8mHvdw560e8zVFIWyA=="],
1225
1253
 
1226
1254
  "hermes-estree": ["hermes-estree@0.25.1", "", {}, "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw=="],
@@ -1257,6 +1285,10 @@
1257
1285
 
1258
1286
  "ipaddr.js": ["ipaddr.js@1.9.1", "", {}, "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="],
1259
1287
 
1288
+ "is-alphabetical": ["is-alphabetical@2.0.1", "", {}, "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ=="],
1289
+
1290
+ "is-alphanumerical": ["is-alphanumerical@2.0.1", "", { "dependencies": { "is-alphabetical": "^2.0.0", "is-decimal": "^2.0.0" } }, "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw=="],
1291
+
1260
1292
  "is-array-buffer": ["is-array-buffer@3.0.5", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "get-intrinsic": "^1.2.6" } }, "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A=="],
1261
1293
 
1262
1294
  "is-arrayish": ["is-arrayish@0.2.1", "", {}, "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="],
@@ -1277,6 +1309,8 @@
1277
1309
 
1278
1310
  "is-date-object": ["is-date-object@1.1.0", "", { "dependencies": { "call-bound": "^1.0.2", "has-tostringtag": "^1.0.2" } }, "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg=="],
1279
1311
 
1312
+ "is-decimal": ["is-decimal@2.0.1", "", {}, "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A=="],
1313
+
1280
1314
  "is-docker": ["is-docker@3.0.0", "", { "bin": { "is-docker": "cli.js" } }, "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ=="],
1281
1315
 
1282
1316
  "is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="],
@@ -1289,6 +1323,8 @@
1289
1323
 
1290
1324
  "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="],
1291
1325
 
1326
+ "is-hexadecimal": ["is-hexadecimal@2.0.1", "", {}, "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg=="],
1327
+
1292
1328
  "is-in-ssh": ["is-in-ssh@1.0.0", "", {}, "sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw=="],
1293
1329
 
1294
1330
  "is-inside-container": ["is-inside-container@1.0.0", "", { "dependencies": { "is-docker": "^3.0.0" }, "bin": { "is-inside-container": "cli.js" } }, "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA=="],
@@ -1415,6 +1451,8 @@
1415
1451
 
1416
1452
  "locate-path": ["locate-path@6.0.0", "", { "dependencies": { "p-locate": "^5.0.0" } }, "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw=="],
1417
1453
 
1454
+ "lodash": ["lodash@4.18.1", "", {}, "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q=="],
1455
+
1418
1456
  "lodash.merge": ["lodash.merge@4.6.2", "", {}, "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="],
1419
1457
 
1420
1458
  "log-symbols": ["log-symbols@6.0.0", "", { "dependencies": { "chalk": "^5.3.0", "is-unicode-supported": "^1.3.0" } }, "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw=="],
@@ -1545,6 +1583,8 @@
1545
1583
 
1546
1584
  "parent-module": ["parent-module@1.0.1", "", { "dependencies": { "callsites": "^3.0.0" } }, "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="],
1547
1585
 
1586
+ "parse-entities": ["parse-entities@4.0.2", "", { "dependencies": { "@types/unist": "^2.0.0", "character-entities-legacy": "^3.0.0", "character-reference-invalid": "^2.0.0", "decode-named-character-reference": "^1.0.0", "is-alphanumerical": "^2.0.0", "is-decimal": "^2.0.0", "is-hexadecimal": "^2.0.0" } }, "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw=="],
1587
+
1548
1588
  "parse-json": ["parse-json@5.2.0", "", { "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", "json-parse-even-better-errors": "^2.3.0", "lines-and-columns": "^1.1.6" } }, "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg=="],
1549
1589
 
1550
1590
  "parse-ms": ["parse-ms@4.0.0", "", {}, "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw=="],
@@ -1599,6 +1639,8 @@
1599
1639
 
1600
1640
  "proper-lockfile": ["proper-lockfile@4.1.2", "", { "dependencies": { "graceful-fs": "^4.2.4", "retry": "^0.12.0", "signal-exit": "^3.0.2" } }, "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA=="],
1601
1641
 
1642
+ "property-information": ["property-information@7.2.0", "", {}, "sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg=="],
1643
+
1602
1644
  "prosemirror-changeset": ["prosemirror-changeset@2.4.1", "", { "dependencies": { "prosemirror-transform": "^1.0.0" } }, "sha512-96WBLhOaYhJ+kPhLg3uW359Tz6I/MfcrQfL4EGv4SrcqKEMC1gmoGrXHecPE8eOwTVCJ4IwgfzM8fFad25wNfw=="],
1603
1645
 
1604
1646
  "prosemirror-commands": ["prosemirror-commands@1.7.1", "", { "dependencies": { "prosemirror-model": "^1.0.0", "prosemirror-state": "^1.0.0", "prosemirror-transform": "^1.10.2" } }, "sha512-rT7qZnQtx5c0/y/KlYaGvtG411S97UaL6gdp6RIZ23DLHanMYLyfGBV5DtSnZdthQql7W+lEVbpSfwtO8T+L2w=="],
@@ -1649,6 +1691,8 @@
1649
1691
 
1650
1692
  "react": ["react@19.2.4", "", {}, "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ=="],
1651
1693
 
1694
+ "react-diff-view": ["react-diff-view@3.3.3", "", { "dependencies": { "classnames": "^2.3.2", "diff-match-patch": "^1.0.5", "gitdiff-parser": "^0.3.1", "lodash": "^4.17.21", "shallow-equal": "^3.1.0", "warning": "^4.0.3" }, "peerDependencies": { "react": ">=16.14.0" } }, "sha512-CPveApk6n7ZbkW7T6PoptR7LWAvD9hohTHZ7WnKnu3GZkTfUB5rvg486apPo94iYVi4fZd3Nt+rtBZ5877exoQ=="],
1695
+
1652
1696
  "react-dom": ["react-dom@19.2.4", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.4" } }, "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ=="],
1653
1697
 
1654
1698
  "react-hook-form": ["react-hook-form@7.77.0", "", { "peerDependencies": { "react": "^16.8.0 || ^17 || ^18 || ^19" } }, "sha512-Sslh9YDYc0GDlWT/lxasnIduNo4v3yyvqRGvmGKUre5AFjDs/HV9/OafHGD8d+sB2yoL4UIL9L8X9i0WlZZebg=="],
@@ -1669,6 +1713,8 @@
1669
1713
 
1670
1714
  "reflect.getprototypeof": ["reflect.getprototypeof@1.0.10", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.9", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.7", "get-proto": "^1.0.1", "which-builtin-type": "^1.2.1" } }, "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw=="],
1671
1715
 
1716
+ "refractor": ["refractor@5.0.0", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/prismjs": "^1.0.0", "hastscript": "^9.0.0", "parse-entities": "^4.0.0" } }, "sha512-QXOrHQF5jOpjjLfiNk5GFnWhRXvxjUVnlFxkeDmewR5sXkr3iM46Zo+CnRR8B+MDVqkULW4EcLVcRBNOPXHosw=="],
1717
+
1672
1718
  "regexp.prototype.flags": ["regexp.prototype.flags@1.5.4", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-errors": "^1.3.0", "get-proto": "^1.0.1", "gopd": "^1.2.0", "set-function-name": "^2.0.2" } }, "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA=="],
1673
1719
 
1674
1720
  "remeda": ["remeda@2.33.4", "", {}, "sha512-ygHswjlc/opg2VrtiYvUOPLjxjtdKvjGz1/plDhkG66hjNjFr1xmfrs2ClNFo/E6TyUFiwYNh53bKV26oBoMGQ=="],
@@ -1735,6 +1781,8 @@
1735
1781
 
1736
1782
  "shadcn": ["shadcn@4.10.0", "", { "dependencies": { "@babel/core": "^7.28.0", "@babel/parser": "^7.28.0", "@babel/plugin-transform-typescript": "^7.28.0", "@babel/preset-typescript": "^7.27.1", "@dotenvx/dotenvx": "^1.48.4", "@modelcontextprotocol/sdk": "^1.26.0", "@types/validate-npm-package-name": "^4.0.2", "browserslist": "^4.26.2", "commander": "^14.0.0", "cosmiconfig": "^9.0.0", "dedent": "^1.6.0", "deepmerge": "^4.3.1", "diff": "^8.0.2", "execa": "^9.6.0", "fast-glob": "^3.3.3", "fs-extra": "^11.3.1", "fuzzysort": "^3.1.0", "https-proxy-agent": "^7.0.6", "kleur": "^4.1.5", "msw": "^2.10.4", "node-fetch": "^3.3.2", "open": "^11.0.0", "ora": "^8.2.0", "postcss": "^8.5.6", "postcss-selector-parser": "^7.1.0", "prompts": "^2.4.2", "recast": "^0.23.11", "stringify-object": "^5.0.0", "tailwind-merge": "^3.0.1", "ts-morph": "^26.0.0", "tsconfig-paths": "^4.2.0", "validate-npm-package-name": "^7.0.1", "zod": "^3.24.1", "zod-to-json-schema": "^3.24.6" }, "bin": { "shadcn": "dist/index.js" } }, "sha512-84IJhUsK0xqSCRJx3QxyZe2NpUXj2Nwk8Vc8Ow/tCOND3yz4CT6uU4655vqicNXhzG9Q1cyUt+TBl2SiCJwNgg=="],
1737
1783
 
1784
+ "shallow-equal": ["shallow-equal@3.1.0", "", {}, "sha512-pfVOw8QZIXpMbhBWvzBISicvToTiM5WBF1EeAUZDDSb5Dt29yl4AYbyywbJFSEsRUMr7gJaxqCdr4L3tQf9wVg=="],
1785
+
1738
1786
  "sharp": ["sharp@0.34.5", "", { "dependencies": { "@img/colour": "^1.0.0", "detect-libc": "^2.1.2", "semver": "^7.7.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.34.5", "@img/sharp-darwin-x64": "0.34.5", "@img/sharp-libvips-darwin-arm64": "1.2.4", "@img/sharp-libvips-darwin-x64": "1.2.4", "@img/sharp-libvips-linux-arm": "1.2.4", "@img/sharp-libvips-linux-arm64": "1.2.4", "@img/sharp-libvips-linux-ppc64": "1.2.4", "@img/sharp-libvips-linux-riscv64": "1.2.4", "@img/sharp-libvips-linux-s390x": "1.2.4", "@img/sharp-libvips-linux-x64": "1.2.4", "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", "@img/sharp-libvips-linuxmusl-x64": "1.2.4", "@img/sharp-linux-arm": "0.34.5", "@img/sharp-linux-arm64": "0.34.5", "@img/sharp-linux-ppc64": "0.34.5", "@img/sharp-linux-riscv64": "0.34.5", "@img/sharp-linux-s390x": "0.34.5", "@img/sharp-linux-x64": "0.34.5", "@img/sharp-linuxmusl-arm64": "0.34.5", "@img/sharp-linuxmusl-x64": "0.34.5", "@img/sharp-wasm32": "0.34.5", "@img/sharp-win32-arm64": "0.34.5", "@img/sharp-win32-ia32": "0.34.5", "@img/sharp-win32-x64": "0.34.5" } }, "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg=="],
1739
1787
 
1740
1788
  "shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="],
@@ -1763,6 +1811,8 @@
1763
1811
 
1764
1812
  "source-map-support": ["source-map-support@0.5.21", "", { "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" } }, "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w=="],
1765
1813
 
1814
+ "space-separated-tokens": ["space-separated-tokens@2.0.2", "", {}, "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q=="],
1815
+
1766
1816
  "sqlstring": ["sqlstring@2.3.3", "", {}, "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg=="],
1767
1817
 
1768
1818
  "stable-hash": ["stable-hash@0.0.5", "", {}, "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA=="],
@@ -1901,6 +1951,8 @@
1901
1951
 
1902
1952
  "w3c-keyname": ["w3c-keyname@2.2.8", "", {}, "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ=="],
1903
1953
 
1954
+ "warning": ["warning@4.0.3", "", { "dependencies": { "loose-envify": "^1.0.0" } }, "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w=="],
1955
+
1904
1956
  "web-streams-polyfill": ["web-streams-polyfill@3.3.3", "", {}, "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw=="],
1905
1957
 
1906
1958
  "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="],
@@ -2127,6 +2179,8 @@
2127
2179
 
2128
2180
  "ora/chalk": ["chalk@5.6.2", "", {}, "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA=="],
2129
2181
 
2182
+ "parse-entities/@types/unist": ["@types/unist@2.0.11", "", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="],
2183
+
2130
2184
  "prebuild-install/detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="],
2131
2185
 
2132
2186
  "prompts/kleur": ["kleur@3.0.3", "", {}, "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w=="],
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bun
2
+ // @bun
3
+ var d=Object.defineProperty;var o=(Q)=>Q;function a(Q,X){this[Q]=o.bind(null,X)}var t=(Q,X)=>{for(var Z in X)d(Q,Z,{get:X[Z],enumerable:!0,configurable:!0,set:a.bind(X,Z)})};var r=(Q,X)=>()=>(Q&&(X=Q(Q=0)),X);var R={};t(R,{provisionDb:()=>BQ});import{createClient as i}from"@libsql/client";import{drizzle as e}from"drizzle-orm/libsql";import{migrate as QQ}from"drizzle-orm/libsql/migrator";import{readMigrationFiles as XQ}from"drizzle-orm/migrator";import{dirname as u,join as ZQ}from"path";import{fileURLToPath as $Q}from"url";async function z(Q,X){return(await Q.execute({sql:"SELECT 1 FROM sqlite_master WHERE type='table' AND name = ?",args:[X]})).rows.length>0}async function VQ(Q,X){let Z=await Q.execute(`PRAGMA table_info("${X}")`);return new Set(Z.rows.map(($)=>String($.name)))}async function I(Q){if(!await z(Q,"__drizzle_migrations"))return 0;let X=await Q.execute('SELECT count(*) AS n FROM "__drizzle_migrations"');return Number(X.rows[0]?.n??0)}async function KQ(Q){for(let[X,Z]of Object.entries(GQ)){if(!await z(Q,X))continue;let $=await VQ(Q,X);for(let J of Z){if(!$.has(J))continue;await Q.execute(`UPDATE "${X}" SET "${J}" = CAST((julianday("${J}") - 2440587.5) * 86400000 AS INTEGER) WHERE typeof("${J}") = 'text'`)}}}async function BQ(Q,X=YQ){let Z=i({url:Q});try{await Z.execute("PRAGMA journal_mode = WAL;"),await Z.execute("PRAGMA foreign_keys = ON;"),await Z.execute("PRAGMA busy_timeout = 5000;");let $=await z(Z,"__drizzle_migrations"),J=await z(Z,"Node"),Y=!1;if(J&&!$){let B=XQ({migrationsFolder:X})[0];if(B)await Z.execute('CREATE TABLE IF NOT EXISTS "__drizzle_migrations" (id SERIAL PRIMARY KEY, hash text NOT NULL, created_at numeric)'),await Z.execute({sql:'INSERT INTO "__drizzle_migrations" ("hash", "created_at") VALUES (?, ?)',args:[B.hash,B.folderMillis]}),Y=!0}let V=await I(Z);if(await QQ(e(Z),{migrationsFolder:X}),await I(Z)>V)Y=!0;return await KQ(Z),{migrated:Y}}finally{Z.close()}}var JQ,YQ,GQ;var D=r(async()=>{JQ=u(u(u($Q(import.meta.url)))),YQ=process.env.BEACON_MIGRATIONS_DIR||ZQ(JQ,"drizzle"),GQ={Node:["createdAt","updatedAt"],Note:["createdAt","updatedAt"],DbTable:["createdAt","updatedAt"],Endpoint:["createdAt","updatedAt"],DraftTable:["createdAt"],SyncState:["codeGraphSyncedAt","updatedAt"],AppSetting:["updatedAt"],ProjectMeta:["updatedAt"],CodeFile:["updatedAt"]}});import{AsyncLocalStorage as MQ}from"async_hooks";import{spawnSync as NQ}from"child_process";import{createHash as UQ}from"crypto";import{existsSync as S,mkdirSync as L,readFileSync as T,writeFileSync as x}from"fs";import{homedir as W}from"os";import{basename as LQ,join as K,parse as jQ,resolve as F}from"path";function G(){return process.env.BEACON_HOME||K(W(),".beacon")}function _(){return K(G(),"workspaces.json")}function U(Q){return UQ("sha256").update(Q).digest("hex").slice(0,12)}function zQ(Q=process.cwd()){let X=NQ("git",["rev-parse","--show-toplevel"],{cwd:Q,stdio:["ignore","pipe","ignore"]});if(X.status===0){let Z=X.stdout?.toString().trim();if(Z)return Z}return Q}function f(Q){let X=F(Q);return X!==F(W())&&X!==jQ(X).root}function y(){return K(G(),"deleted.json")}function q(){try{let Q=JSON.parse(T(y(),"utf8"));return Array.isArray(Q)?Q:[]}catch{return[]}}function P(Q){L(G(),{recursive:!0}),x(y(),JSON.stringify(Q,null,2))}function k(Q){return q().includes(Q)}function hQ(Q){let X=q();if(!X.includes(Q))P([...X,Q])}function CQ(Q){let X=q();if(X.includes(Q))P(X.filter((Z)=>Z!==Q))}function C(Q){return K(G(),Q)}function OQ(Q){return`file:${K(C(Q),"db.sqlite")}`}function j(){try{let Q=JSON.parse(T(_(),"utf8"));return Array.isArray(Q)?Q:[]}catch{return[]}}function E(Q){L(G(),{recursive:!0}),x(_(),JSON.stringify(Q,null,2))}function b(){return j().sort((Q,X)=>X.lastOpenedAt.localeCompare(Q.lastOpenedAt))}function M(Q){return j().find((X)=>X.id===Q)??null}function g(Q,X,Z=new Date().toISOString()){if(!f(Q))throw Error(`beacon: refusing to register a non-repo path as a workspace: ${Q}`);let $=U(Q);if(k($))throw Error(`beacon: workspace ${$} (${Q}) was deleted \u2014 run \`beacon\` or /beacon-init to re-add it`);let J=j(),Y=J.find((O)=>O.id===$),V={id:$,path:Q,name:X||Y?.name||LQ(Q),lastOpenedAt:Z},B=[V,...J.filter((O)=>O.id!==$)];return L(C($),{recursive:!0}),E(B),V}function pQ(Q,X){return CQ(U(Q)),g(Q,X)}function cQ(Q,X=new Date().toISOString()){let Z=j(),$=Z.find((J)=>J.id===Q);if(!$)return;$.lastOpenedAt=X,E(Z)}function lQ(Q){if(E(j().filter((X)=>X.id!==Q)),v()===Q)uQ(b()[0]?.id??null)}function w(){return K(G(),"active")}function v(){try{return T(w(),"utf8").trim()||null}catch{return null}}function uQ(Q){L(G(),{recursive:!0}),x(w(),Q??"")}function nQ(){let Q=v();return Q?M(Q):null}function sQ(){let Q=TQ()??v();return Q?M(Q):null}function dQ(Q){return M(Q)?.path??null}function oQ(){return S(_())}var m="beacon_ws";function h(Q,X){let Z=Q.headers.get("cookie");if(!Z)return null;for(let $ of Z.split(";")){let J=$.indexOf("=");if(J===-1)continue;if($.slice(0,J).trim()===X)return decodeURIComponent($.slice(J+1).trim())}return null}function aQ(Q){let X=Q.headers.get("x-beacon-workspace");if(X&&M(X))return X;let Z=h(Q,m);if(Z&&M(Z))return Z;return HQ()}function HQ(){let Q=b();return Q.length===1?Q[0].id:null}var p="x-beacon-workspace-path";function c(Q=process.cwd()){let X=zQ(Q);return{"x-beacon-workspace":U(X),[p]:X}}async function tQ(Q){let X=Q.headers.get("x-beacon-workspace");if(X&&M(X))return X;let Z=Q.headers.get(p);if(Z&&f(Z)&&!k(U(Z))&&(!X||U(Z)===X)){let J=g(Z);return await xQ(J.id),J.id}let $=h(Q,m);if($&&M($))return $;return null}var l=new MQ;function rQ(Q,X){return Q?l.run(Q,X):X()}function TQ(){return l.getStore()??null}var H=new Set;function iQ(Q){H.delete(K(C(Q),"db.sqlite"))}async function xQ(Q){let X=C(Q),Z=K(X,"db.sqlite"),$=S(Z);if($&&H.has(Z))return{ok:!0,created:!1,migrated:!1};try{L(X,{recursive:!0});let{provisionDb:J}=await D().then(() => R),Y=await J(OQ(Q));return H.add(Z),{ok:!0,created:!$,migrated:$&&Y.migrated}}catch(J){return{ok:!1,created:!1,migrated:!1,error:J instanceof Error?J.message:String(J)}}}import{connect as _Q}from"net";var n=4319;function qQ(Q,X,Z=400){return new Promise(($)=>{let J=_Q({host:Q,port:X}),Y=!1,V=(B)=>{if(Y)return;Y=!0,J.destroy(),$(B)};J.once("connect",()=>V(!0)),J.once("error",()=>V(!1)),J.setTimeout(Z,()=>V(!1))})}async function EQ(Q){for(let X of["127.0.0.1","::1"])if(await qQ(X,Q))return!1;return!0}async function XX(Q,X=20){for(let Z=Q;Z<Q+X;Z++)if(await EQ(Z))return Z;return Q}import{readFileSync as vQ}from"fs";import{join as AQ}from"path";function IQ(){try{return JSON.parse(vQ(AQ(G(),"server.json"),"utf8"))}catch{return null}}function s(){if(process.env.BEACON_URL)return process.env.BEACON_URL;return`http://localhost:${IQ()?.port||process.env.PORT||n}`}var A=process.argv[3]?.trim();if(!A)process.stderr.write(`usage: beacon answer <question-id> (answer markdown on stdin, or as trailing args)
4
+ `),process.exit(2);var N=process.argv.slice(4).join(" ").trim();if(!N&&!process.stdin.isTTY){for await(let Q of process.stdin)N+=Q;N=N.trim()}if(!N)process.stderr.write(`no answer text \u2014 pass it as trailing arguments or pipe it on stdin (heredoc)
5
+ `),process.exit(2);try{let Q=await fetch(`${s()}/api/changes/comment/answer`,{method:"POST",headers:{"content-type":"application/json",...c()},body:JSON.stringify({id:A,answer:N}),signal:AbortSignal.timeout(5000)});if(!Q.ok){let X=Q.status===404?" (no pending question with that id in this repo)":"";process.stderr.write(`beacon: answer not accepted (${Q.status})${X}
6
+ `),process.exit(1)}process.stdout.write(`\u2713 answer delivered to Beacon for question ${A}
7
+ `)}catch(Q){process.stderr.write(`beacon: could not reach Beacon \u2014 ${Q instanceof Error?Q.message:"error"} (is the daemon running?)
8
+ `),process.exit(1)}process.exit(0);
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env bun
2
+ // @bun
3
+ var YQ=Object.defineProperty;var GQ=(Q)=>Q;function VQ(Q,X){this[Q]=GQ.bind(null,X)}var KQ=(Q,X)=>{for(var Z in X)YQ(Q,Z,{get:X[Z],enumerable:!0,configurable:!0,set:VQ.bind(X,Z)})};var x=(Q,X)=>()=>(Q&&(X=Q(Q=0)),X);var f={};KQ(f,{provisionDb:()=>xQ});import{createClient as JQ}from"@libsql/client";import{drizzle as BQ}from"drizzle-orm/libsql";import{migrate as UQ}from"drizzle-orm/libsql/migrator";import{readMigrationFiles as zQ}from"drizzle-orm/migrator";import{dirname as E,join as NQ}from"path";import{fileURLToPath as jQ}from"url";async function C(Q,X){return(await Q.execute({sql:"SELECT 1 FROM sqlite_master WHERE type='table' AND name = ?",args:[X]})).rows.length>0}async function CQ(Q,X){let Z=await Q.execute(`PRAGMA table_info("${X}")`);return new Set(Z.rows.map(($)=>String($.name)))}async function S(Q){if(!await C(Q,"__drizzle_migrations"))return 0;let X=await Q.execute('SELECT count(*) AS n FROM "__drizzle_migrations"');return Number(X.rows[0]?.n??0)}async function TQ(Q){for(let[X,Z]of Object.entries(HQ)){if(!await C(Q,X))continue;let $=await CQ(Q,X);for(let Y of Z){if(!$.has(Y))continue;await Q.execute(`UPDATE "${X}" SET "${Y}" = CAST((julianday("${Y}") - 2440587.5) * 86400000 AS INTEGER) WHERE typeof("${Y}") = 'text'`)}}}async function xQ(Q,X=LQ){let Z=JQ({url:Q});try{await Z.execute("PRAGMA journal_mode = WAL;"),await Z.execute("PRAGMA foreign_keys = ON;"),await Z.execute("PRAGMA busy_timeout = 5000;");let $=await C(Z,"__drizzle_migrations"),Y=await C(Z,"Node"),G=!1;if(Y&&!$){let J=zQ({migrationsFolder:X})[0];if(J)await Z.execute('CREATE TABLE IF NOT EXISTS "__drizzle_migrations" (id SERIAL PRIMARY KEY, hash text NOT NULL, created_at numeric)'),await Z.execute({sql:'INSERT INTO "__drizzle_migrations" ("hash", "created_at") VALUES (?, ?)',args:[J.hash,J.folderMillis]}),G=!0}let K=await S(Z);if(await UQ(BQ(Z),{migrationsFolder:X}),await S(Z)>K)G=!0;return await TQ(Z),{migrated:G}}finally{Z.close()}}var MQ,LQ,HQ;var I=x(async()=>{MQ=E(E(E(jQ(import.meta.url)))),LQ=process.env.BEACON_MIGRATIONS_DIR||NQ(MQ,"drizzle"),HQ={Node:["createdAt","updatedAt"],Note:["createdAt","updatedAt"],DbTable:["createdAt","updatedAt"],Endpoint:["createdAt","updatedAt"],DraftTable:["createdAt"],SyncState:["codeGraphSyncedAt","updatedAt"],AppSetting:["updatedAt"],ProjectMeta:["updatedAt"],CodeFile:["updatedAt"]}});import{mkdirSync as bQ,renameSync as kQ,rmSync as gQ,writeFileSync as uQ}from"fs";import{dirname as mQ}from"path";function wQ(Q,X){bQ(mQ(Q),{recursive:!0});let Z=`${Q}.tmp`;try{uQ(Z,X),kQ(Z,Q)}catch($){throw gQ(Z,{force:!0}),$}}function hQ(Q,X,Z=!1){wQ(Q,JSON.stringify(X,null,Z?2:void 0))}var r=()=>{};var a=1500,o=480000,kX=1800000,gX=3600000,uX=3000;var A=()=>{};import{AsyncLocalStorage as EQ}from"async_hooks";import{spawnSync as _Q}from"child_process";import{createHash as DQ}from"crypto";import{existsSync as y,mkdirSync as j,readFileSync as D,writeFileSync as O}from"fs";import{homedir as v}from"os";import{basename as OQ,join as z,parse as WQ,resolve as P}from"path";function B(){return process.env.BEACON_HOME||z(v(),".beacon")}function W(){return z(B(),"workspaces.json")}function N(Q){return DQ("sha256").update(Q).digest("hex").slice(0,12)}function FQ(Q=process.cwd()){let X=_Q("git",["rev-parse","--show-toplevel"],{cwd:Q,stdio:["ignore","pipe","ignore"]});if(X.status===0){let Z=X.stdout?.toString().trim();if(Z)return Z}return Q}function b(Q){let X=P(Q);return X!==P(v())&&X!==WQ(X).root}function k(){return z(B(),"deleted.json")}function F(){try{let Q=JSON.parse(D(k(),"utf8"));return Array.isArray(Q)?Q:[]}catch{return[]}}function g(Q){j(B(),{recursive:!0}),O(k(),JSON.stringify(Q,null,2))}function u(Q){return F().includes(Q)}function CX(Q){let X=F();if(!X.includes(Q))g([...X,Q])}function qQ(Q){let X=F();if(X.includes(Q))g(X.filter((Z)=>Z!==Q))}function M(Q){return z(B(),Q)}function RQ(Q){return`file:${z(M(Q),"db.sqlite")}`}function L(){try{let Q=JSON.parse(D(W(),"utf8"));return Array.isArray(Q)?Q:[]}catch{return[]}}function q(Q){j(B(),{recursive:!0}),O(W(),JSON.stringify(Q,null,2))}function m(){return L().sort((Q,X)=>X.lastOpenedAt.localeCompare(Q.lastOpenedAt))}function U(Q){return L().find((X)=>X.id===Q)??null}function w(Q,X,Z=new Date().toISOString()){if(!b(Q))throw Error(`beacon: refusing to register a non-repo path as a workspace: ${Q}`);let $=N(Q);if(u($))throw Error(`beacon: workspace ${$} (${Q}) was deleted \u2014 run \`beacon\` or /beacon-init to re-add it`);let Y=L(),G=Y.find((V)=>V.id===$),K={id:$,path:Q,name:X||G?.name||OQ(Q),lastOpenedAt:Z},J=[K,...Y.filter((V)=>V.id!==$)];return j(M($),{recursive:!0}),q(J),K}function TX(Q,X){return qQ(N(Q)),w(Q,X)}function xX(Q,X=new Date().toISOString()){let Z=L(),$=Z.find((Y)=>Y.id===Q);if(!$)return;$.lastOpenedAt=X,q(Z)}function EX(Q){if(q(L().filter((X)=>X.id!==Q)),R()===Q)AQ(m()[0]?.id??null)}function h(){return z(B(),"active")}function R(){try{return D(h(),"utf8").trim()||null}catch{return null}}function AQ(Q){j(B(),{recursive:!0}),O(h(),Q??"")}function SQ(){let Q=R();return Q?U(Q):null}function _X(){let Q=n()??R();return Q?U(Q):null}function DX(Q){return U(Q)?.path??null}function OX(){return y(W())}var c="beacon_ws";function l(Q,X){let Z=Q.headers.get("cookie");if(!Z)return null;for(let $ of Z.split(";")){let Y=$.indexOf("=");if(Y===-1)continue;if($.slice(0,Y).trim()===X)return decodeURIComponent($.slice(Y+1).trim())}return null}function WX(Q){let X=Q.headers.get("x-beacon-workspace");if(X&&U(X))return X;let Z=l(Q,c);if(Z&&U(Z))return Z;return fQ()}function fQ(){let Q=m();return Q.length===1?Q[0].id:null}var p="x-beacon-workspace-path";function FX(Q=process.cwd()){let X=FQ(Q);return{"x-beacon-workspace":N(X),[p]:X}}async function qX(Q){let X=Q.headers.get("x-beacon-workspace");if(X&&U(X))return X;let Z=Q.headers.get(p);if(Z&&b(Z)&&!u(N(Z))&&(!X||N(Z)===X)){let Y=w(Z);return await IQ(Y.id),Y.id}let $=l(Q,c);if($&&U($))return $;return null}var d=new EQ;function RX(Q,X){return Q?d.run(Q,X):X()}function n(){return d.getStore()??null}var _=new Set;function AX(Q){_.delete(z(M(Q),"db.sqlite"))}async function IQ(Q){let X=M(Q),Z=z(X,"db.sqlite"),$=y(Z);if($&&_.has(Z))return{ok:!0,created:!1,migrated:!1};try{j(X,{recursive:!0});let{provisionDb:Y}=await I().then(() => f),G=await Y(RQ(Q));return _.add(Z),{ok:!0,created:!$,migrated:$&&G.migrated}}catch(Y){return{ok:!1,created:!1,migrated:!1,error:Y instanceof Error?Y.message:String(Y)}}}import{connect as PQ}from"net";var s=4319;function yQ(Q,X,Z=400){return new Promise(($)=>{let Y=PQ({host:Q,port:X}),G=!1,K=(J)=>{if(G)return;G=!0,Y.destroy(),$(J)};Y.once("connect",()=>K(!0)),Y.once("error",()=>K(!1)),Y.setTimeout(Z,()=>K(!1))})}async function vQ(Q){for(let X of["127.0.0.1","::1"])if(await yQ(X,Q))return!1;return!0}async function IX(Q,X=20){for(let Z=Q;Z<Q+X;Z++)if(await vQ(Z))return Z;return Q}import{execSync as aQ}from"child_process";import{createHash as oQ}from"crypto";r();A();function i(Q,X){let Z=X.length?X.map((Y)=>`"${Y}"`).join(", "):"(no selection)",$=X.length>1?"these options":"that option";return"ANSWERED_IN_BEACON \u2014 the user answered this in Beacon (not the terminal). "+`For the question "${Q.question}" they selected: ${Z}. `+`This IS their answer \u2014 treat AskUserQuestion as answered with ${$} and continue. Do NOT call AskUserQuestion again for this question.`}function cQ(Q,X={}){let Z=typeof X.file_path==="string"?X.file_path:"",$=(Y)=>Y.length>4000?`${Y.slice(0,4000)}
4
+ \u2026 (truncated)`:Y;switch(Q){case"Bash":return{tool:Q,title:"Run command",preview:$(String(X.command??""))};case"Write":return{tool:Q,title:`Write ${Z}`.trim(),preview:$(String(X.content??""))};case"Edit":return{tool:Q,title:`Edit ${Z}`.trim(),preview:$(`- ${String(X.old_string??"")}
5
+ + ${String(X.new_string??"")}`)};case"MultiEdit":{let Y=Array.isArray(X.edits)?X.edits.length:0;return{tool:Q,title:`Edit ${Z}`.trim(),preview:`${Y} edit(s) to ${Z}`}}case"NotebookEdit":{let Y=typeof X.notebook_path==="string"?X.notebook_path:"";return{tool:Q,title:`Edit ${Y}`.trim(),preview:$(String(X.new_source??""))}}default:return{tool:Q,title:Q,preview:$(JSON.stringify(X))}}}function t(Q){let X=Q.tool_name??"";if(Q.hook_event_name==="PreToolUse"&&X==="AskUserQuestion"){let $=Q.tool_input?.questions?.[0];if(!$)return null;return{kind:"question",question:{header:String($.header??""),question:String($.question??""),multiSelect:!!$.multiSelect,options:Array.isArray($.options)?$.options.map((Y)=>{let G=Y;return{label:String(G.label??""),description:G.description?String(G.description):void 0}}):[]}}}if(Q.hook_event_name==="PermissionRequest"&&X&&X!=="ExitPlanMode")return{kind:"approval",approval:cQ(X,Q.tool_input??{})};return null}A();import{readFileSync as lQ}from"fs";import{join as pQ}from"path";function dQ(){try{return JSON.parse(lQ(pQ(B(),"server.json"),"utf8"))}catch{return null}}function e(){if(process.env.BEACON_URL)return process.env.BEACON_URL;return`http://localhost:${dQ()?.port||process.env.PORT||s}`}var nQ=["default","acceptEdits","bypassPermissions","auto"];function eX(Q){return typeof Q==="string"&&nQ.includes(Q)}function QQ(Q,X,Z){let $={behavior:"allow"};if(Z&&Object.keys(Z).length>0)$.updatedInput=Z;if(Q)$.updatedPermissions=[{type:"setMode",mode:Q,destination:"session"}];let Y={hookEventName:"PermissionRequest",decision:$};if(X?.trim())Y.additionalContext=X;return{hookSpecificOutput:Y}}import{execSync as sQ}from"child_process";import{platform as XQ}from"os";function rQ(Q){if(process.env.BEACON_NO_OPEN)return;let X=XQ()==="darwin"?"open":XQ()==="win32"?"start":"xdg-open";try{sQ(`${X} "${Q}"`,{stdio:"ignore"})}catch{}}async function ZQ(Q,X){if(await fetch(`${Q}/api/plan/presence`,{headers:{"x-beacon-workspace":X}}).then((Y)=>Y.json()).then((Y)=>!!Y?.live).catch(()=>!1))return;let $=encodeURIComponent(`/plan?ws=${X}`);rQ(`${Q}/api/workspace/activate?id=${X}&redirect=${$}`)}var iQ=(Q)=>new Promise((X)=>setTimeout(X,Q));function T(Q){if(Q!==void 0)process.stdout.write(JSON.stringify(Q));process.exit(0)}function H(){T(void 0)}function tQ(Q){return{hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"deny",permissionDecisionReason:Q}}}function eQ(Q){return{hookSpecificOutput:{hookEventName:"PermissionRequest",decision:{behavior:"deny",message:Q}}}}async function QX(){if(process.stdin.isTTY)return null;let Q="";for await(let X of process.stdin)Q+=X;if(Q=Q.trim(),!Q)return null;try{return JSON.parse(Q)}catch{return null}}function XX(Q){try{return aQ("git rev-parse --show-toplevel",{cwd:Q||process.cwd(),stdio:["ignore","pipe","ignore"]}).toString().trim()}catch{return Q||process.cwd()}}var ZX=(Q)=>oQ("sha256").update(Q).digest("hex").slice(0,12);async function $X(Q,X){try{return(await fetch(Q,{headers:X})).ok}catch{return!1}}(async()=>{let Q=await QX();if(!Q)H();let X=t(Q);if(!X)H();let Z=e(),$=ZX(XX(Q.cwd)),Y={"content-type":"application/json","x-beacon-workspace":$};if(!await $X(`${Z}/api/workspace`))H();await fetch(`${Z}/api/workspace/activate?id=${$}`).catch(()=>{});let G=await fetch(`${Z}/api/ask`,{method:"POST",headers:Y,body:JSON.stringify(X)}).then((V)=>V.ok?V.json():null).catch(()=>null);if(!G||G.loop||!G.id)H();let K=G.id;await ZQ(Z,$).catch(()=>{});let J=Date.now()+o;while(Date.now()<J){await iQ(a);let V=await fetch(`${Z}/api/ask/verdict?id=${encodeURIComponent(K)}`,{headers:Y}).then(($Q)=>$Q.json()).catch(()=>null);if(!V||V.status!=="resolved")continue;if(X.kind==="question")T(tQ(i(X.question,V.resolution.selected??[])));if(V.resolution.decision==="deny")T(eQ("The user denied this action in Beacon."));T(QQ())}H()})();
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env bun
2
2
  // @bun
3
- import{execSync as F,spawn as c}from"child_process";import{existsSync as f,mkdirSync as d,openSync as p,readFileSync as h,writeFileSync as t}from"fs";import{homedir as l,platform as C}from"os";import{basename as a,dirname as v,join as V}from"path";import{fileURLToPath as n}from"url";var T=v(n(import.meta.url)),E=a(v(T))==="dist",j=E?v(v(T)):v(T),O=process.cwd(),R=process.env.BEACON_HOME||V(l(),".beacon"),x=V(R,"server.json"),A=process.env.PORT||"4319",s=/[\\/]\.claude[\\/]plugins[\\/]/.test(T);if(!process.env.CLAUDE_PLUGIN_ROOT&&s&&f(V(j,".claude-plugin","plugin.json")))process.env.CLAUDE_PLUGIN_ROOT=j;if(!process.env.BEACON_MIGRATIONS_DIR)process.env.BEACON_MIGRATIONS_DIR=V(j,"drizzle");function $(z){if(!E)return V(j,z);return V(j,"dist",z.replace(/\.ts$/,".js"))}var q=process.argv[2];if(q==="mcp")await import($("bin/mcp.ts"));else if(q==="hook")await import($("bin/hook.ts"));else if(q==="guard")await import($("bin/guard.ts"));else if(q==="plan")await import($("bin/plan.ts"));else if(q==="prompt")await import($("bin/prompt.ts"));else if(q==="stop-hook")await import($("bin/stop-hook.ts"));else if(q==="stop")u();else if(q==="remove")await import($("bin/remove.ts"));else if(q==="setup")await P(_()||O);else if(q==="ensure")await zz();else if(q==="init-persist")await i(process.argv[3]);else if(q==="doctor")await import($("bin/doctor.ts"));else if(q==="uninstall")await import($("bin/uninstall.ts"));else if(q==="update")await $z(process.argv.includes("--force")||process.argv.includes("-f"));else if(q==="telemetry")await Zz(process.argv[3]);else if(q==="version"||q==="--version"||q==="-v")console.log(S());else await Xz();async function P(z,X=!1){let{installInitSkill:Z,installRefreshSkill:J,installCodexRepoSkills:K,ensureMcp:Y,ensureWorkflowDoc:G}=await import($("lib/assets.ts")),{selfHealGlobal:M,isPluginManaged:B}=await import($("lib/global-install.ts")),{codexDetected:N}=await import($("lib/codex-install.ts")),Q=await M();if(B())return{initSkill:"",refreshSkill:"",mcp:{path:"",added:!1,updated:!1},codexSkills:[],heal:Q};let{isRegistrableWorkspacePath:W}=await import($("lib/workspaces.ts"));if(!W(z))return{initSkill:"",refreshSkill:"",mcp:{path:"",added:!1,updated:!1},codexSkills:[],heal:Q};let H=Z(z),w=J(z);G(z);let I=Y(z),L=N()?K(z):[];if(X){if(I.added||I.updated)console.log(`[beacon] ${I.added?"registered":"updated"} Beacon MCP in ${I.path} \u2014 restart your agent CLI`+(I.updated?" to apply the longer plan-review timeout.":" to use @beacon mentions."))}else{console.log(`
3
+ import{execSync as F,spawn as c}from"child_process";import{existsSync as f,mkdirSync as d,openSync as p,readFileSync as h,writeFileSync as t}from"fs";import{homedir as l,platform as C}from"os";import{basename as a,dirname as v,join as V}from"path";import{fileURLToPath as n}from"url";var T=v(n(import.meta.url)),E=a(v(T))==="dist",j=E?v(v(T)):v(T),O=process.cwd(),R=process.env.BEACON_HOME||V(l(),".beacon"),x=V(R,"server.json"),A=process.env.PORT||"4319",s=/[\\/]\.claude[\\/]plugins[\\/]/.test(T);if(!process.env.CLAUDE_PLUGIN_ROOT&&s&&f(V(j,".claude-plugin","plugin.json")))process.env.CLAUDE_PLUGIN_ROOT=j;if(!process.env.BEACON_MIGRATIONS_DIR)process.env.BEACON_MIGRATIONS_DIR=V(j,"drizzle");function $(z){if(!E)return V(j,z);return V(j,"dist",z.replace(/\.ts$/,".js"))}var Q=process.argv[2];if(Q==="mcp")await import($("bin/mcp.ts"));else if(Q==="hook")await import($("bin/hook.ts"));else if(Q==="guard")await import($("bin/guard.ts"));else if(Q==="plan")await import($("bin/plan.ts"));else if(Q==="ask")await import($("bin/ask.ts"));else if(Q==="answer")await import($("bin/answer.ts"));else if(Q==="prompt")await import($("bin/prompt.ts"));else if(Q==="stop-hook")await import($("bin/stop-hook.ts"));else if(Q==="stop")u();else if(Q==="remove")await import($("bin/remove.ts"));else if(Q==="setup")await P(_()||O);else if(Q==="ensure")await zz();else if(Q==="init-persist")await i(process.argv[3]);else if(Q==="doctor")await import($("bin/doctor.ts"));else if(Q==="uninstall")await import($("bin/uninstall.ts"));else if(Q==="update")await $z(process.argv.includes("--force")||process.argv.includes("-f"));else if(Q==="telemetry")await Zz(process.argv[3]);else if(Q==="version"||Q==="--version"||Q==="-v")console.log(S());else await Xz();async function P(z,X=!1){let{installInitSkill:Z,installRefreshSkill:J,installCodexRepoSkills:K,ensureMcp:q,ensureWorkflowDoc:G}=await import($("lib/assets.ts")),{selfHealGlobal:M,isPluginManaged:B}=await import($("lib/global-install.ts")),{codexDetected:N}=await import($("lib/codex-install.ts")),Y=await M();if(B())return{initSkill:"",refreshSkill:"",mcp:{path:"",added:!1,updated:!1},codexSkills:[],heal:Y};let{isRegistrableWorkspacePath:W}=await import($("lib/workspaces.ts"));if(!W(z))return{initSkill:"",refreshSkill:"",mcp:{path:"",added:!1,updated:!1},codexSkills:[],heal:Y};let H=Z(z),w=J(z);G(z);let I=q(z),L=N()?K(z):[];if(X){if(I.added||I.updated)console.log(`[beacon] ${I.added?"registered":"updated"} Beacon MCP in ${I.path} \u2014 restart your agent CLI`+(I.updated?" to apply the longer plan-review timeout.":" to use @beacon mentions."))}else{console.log(`
4
4
  \u25C9 Beacon setup \xB7 ${z}`),console.log(` \u2713 skill: ${H}`),console.log(` \u2713 skill: ${w}`);for(let y of L)console.log(` \u2713 skill: ${y}`);console.log(` ${I.added?"\u2713 added ":"\xB7 kept "} Beacon MCP in ${I.path}`),console.log(` \u2192 in this repo, run /beacon-init in your agent (Claude Code or Codex) to map the repo.
5
- `)}return{initSkill:H,refreshSkill:w,mcp:I,codexSkills:L,heal:Q}}async function i(z){let X=_()||O,{idForPath:Z,isRegistrableWorkspacePath:J,BEACON_WS_PATH_HEADER:K}=await import($("lib/workspaces.ts"));if(!J(X))console.error(`[beacon] refusing to init ${X} \u2014 that's your home directory, not a project.
6
- `+" cd into a repo (or run `git init` there) and try again."),process.exit(1);let Y="";try{Y=h(z??0,"utf8").trim()}catch(Q){console.error(`[beacon] could not read the init analysis ${z?`from ${z}`:"from stdin"}: ${Q instanceof Error?Q.message:Q}`),process.exit(1)}if(!Y)console.error("[beacon] empty init analysis \u2014 pass the JSON as a file argument (`beacon init-persist analysis.json`) or on stdin."),process.exit(1);await P(X,!0);let G=await k(),M=Z(X),B;try{B=await fetch(`http://localhost:${G}/api/init`,{method:"POST",headers:{"content-type":"application/json","x-beacon-workspace":M,[K]:X},body:Y})}catch(Q){console.error(`[beacon] could not reach the Beacon daemon on port ${G}: ${Q instanceof Error?Q.message:Q}`),process.exit(1)}let N=await B.text();if(!B.ok)console.error(`[beacon] init failed (HTTP ${B.status}): ${N}`),process.exit(1);console.log(`[beacon] mapped ${X} into Beacon: ${N}`),console.log(`[beacon] open the panel \u2192 http://localhost:${G}/map`)}function _(){try{return F("git rev-parse --show-toplevel",{cwd:O,stdio:["ignore","pipe","ignore"]}).toString().trim()}catch{return""}}function b(z){try{return process.kill(z,0),!0}catch{return!1}}function D(z){try{return JSON.parse(h(z,"utf8"))}catch{return null}}async function m(z){try{return(await fetch(z)).ok}catch{return!1}}async function o(z,X=60){for(let Z=0;Z<X;Z++){if(await m(z))return!0;await new Promise((J)=>setTimeout(J,500))}return!1}function r(z){d(R,{recursive:!0});let X=p(V(R,"server.log"),"a"),Z={...process.env,PORT:z,BEACON_NO_OPEN:"1",BEACON_MIGRATIONS_DIR:V(j,"drizzle")};delete Z.BEACON_REPO,delete Z.BEACON_DATA_DIR,delete Z.DATABASE_URL;let K=c("bun",E?["run","start"]:["run","dev"],{cwd:j,env:Z,detached:!0,stdio:["ignore",X,X]});K.unref();let Y={pid:K.pid??0,port:z};return t(x,JSON.stringify(Y)),Y}async function k(){let z=D(x);if(z&&b(z.pid)&&await m(`http://localhost:${z.port}/api/workspace`))return z.port;let{findAvailablePort:X}=await import($("lib/daemon-port.ts")),Z=String(await X(Number(A)));console.log(Z===A?"[beacon] starting the Beacon server\u2026":`[beacon] port ${A} is busy \u2014 starting the Beacon server on port ${Z}\u2026`);let{port:J}=r(Z);if(!await o(`http://localhost:${J}/api/workspace`))console.log("[beacon] (server is taking a while \u2014 it may still be compiling)");return J}function e(z){if(process.env.BEACON_NO_OPEN)return;let X=C()==="darwin"?"open":C()==="win32"?"start":"xdg-open";try{F(`${X} "${z}"`,{stdio:"ignore"})}catch{}}async function zz(){let z=_()||O,{registerWorkspaceExplicit:X,idForPath:Z,ensureWorkspaceDb:J,isRegistrableWorkspacePath:K}=await import($("lib/workspaces.ts"));if(!K(z))return;let Y=Z(z);await J(Y),X(z);let G=await k();console.log(`[beacon] ready \u2192 http://localhost:${G}/map?ws=${Y}`)}async function Xz(){let z=_()||O,{registerWorkspaceExplicit:X,idForPath:Z,dataDirFor:J,ensureWorkspaceDb:K,isRegistrableWorkspacePath:Y}=await import($("lib/workspaces.ts"));if(!Y(z))console.error(`[beacon] refusing to open Beacon in ${z} \u2014 that's your home directory, not a project.
7
- `+" cd into a repo (or run `git init` there) and try again."),process.exit(1);let G=Z(z),M=J(G),B=!f(V(M,"db.sqlite"));if(B)console.log(`[beacon] first run for ${z} \u2014 creating database\u2026`);let N=await K(G);if(!N.ok)console.error(`[beacon] failed to provision database: ${N.error}`);if(B)console.log("[beacon] tip: already have code here? run `/beacon-init` in your agent (Claude Code or Codex) to map the project.");let{heal:Q}=await P(z,!0),W=[];if(Q.skillsAdded.length)W.push(`skills ${Q.skillsAdded.join(", ")}`);if(Q.hooksAdded)W.push(`${Q.hooksAdded} Claude Code hook${Q.hooksAdded===1?"":"s"}`);if(Q.claudeMdBlockTouched)W.push("global CLAUDE.md block");if(W.length)console.log(`[beacon] wired into ~/.claude/: ${W.join(" + ")}.`);let H=Q.codex;if(H){let U=[];if(H.skillsAdded.length)U.push(`skills ${H.skillsAdded.join(", ")}`);if(H.hooksAdded)U.push(`${H.hooksAdded} Codex hook${H.hooksAdded===1?"":"s"}`);if(H.agentsMdBlockTouched)U.push("global AGENTS.md block");if(H.mcp.added)U.push("MCP entry in config.toml");if(U.length)console.log(`[beacon] wired into ~/.codex/: ${U.join(" + ")}.`);if(H.mcp.error)console.log(`[beacon] codex MCP not wired: ${H.mcp.error}`)}try{let U=await import($("lib/telemetry.ts"));if(!U.telemetryStatus().machineId){let g=U.telemetryStatus().enabled;console.log(`[beacon] telemetry: Beacon sends an anonymous heartbeat (random machine id, version, OS,
5
+ `)}return{initSkill:H,refreshSkill:w,mcp:I,codexSkills:L,heal:Y}}async function i(z){let X=_()||O,{idForPath:Z,isRegistrableWorkspacePath:J,BEACON_WS_PATH_HEADER:K}=await import($("lib/workspaces.ts"));if(!J(X))console.error(`[beacon] refusing to init ${X} \u2014 that's your home directory, not a project.
6
+ `+" cd into a repo (or run `git init` there) and try again."),process.exit(1);let q="";try{q=h(z??0,"utf8").trim()}catch(Y){console.error(`[beacon] could not read the init analysis ${z?`from ${z}`:"from stdin"}: ${Y instanceof Error?Y.message:Y}`),process.exit(1)}if(!q)console.error("[beacon] empty init analysis \u2014 pass the JSON as a file argument (`beacon init-persist analysis.json`) or on stdin."),process.exit(1);await P(X,!0);let G=await k(),M=Z(X),B;try{B=await fetch(`http://localhost:${G}/api/init`,{method:"POST",headers:{"content-type":"application/json","x-beacon-workspace":M,[K]:X},body:q})}catch(Y){console.error(`[beacon] could not reach the Beacon daemon on port ${G}: ${Y instanceof Error?Y.message:Y}`),process.exit(1)}let N=await B.text();if(!B.ok)console.error(`[beacon] init failed (HTTP ${B.status}): ${N}`),process.exit(1);console.log(`[beacon] mapped ${X} into Beacon: ${N}`),console.log(`[beacon] open the panel \u2192 http://localhost:${G}/map`)}function _(){try{return F("git rev-parse --show-toplevel",{cwd:O,stdio:["ignore","pipe","ignore"]}).toString().trim()}catch{return""}}function b(z){try{return process.kill(z,0),!0}catch{return!1}}function D(z){try{return JSON.parse(h(z,"utf8"))}catch{return null}}async function m(z){try{return(await fetch(z)).ok}catch{return!1}}async function o(z,X=60){for(let Z=0;Z<X;Z++){if(await m(z))return!0;await new Promise((J)=>setTimeout(J,500))}return!1}function r(z){d(R,{recursive:!0});let X=p(V(R,"server.log"),"a"),Z={...process.env,PORT:z,BEACON_NO_OPEN:"1",BEACON_MIGRATIONS_DIR:V(j,"drizzle")};delete Z.BEACON_REPO,delete Z.BEACON_DATA_DIR,delete Z.DATABASE_URL;let K=c("bun",E?["run","start"]:["run","dev"],{cwd:j,env:Z,detached:!0,stdio:["ignore",X,X]});K.unref();let q={pid:K.pid??0,port:z};return t(x,JSON.stringify(q)),q}async function k(){let z=D(x);if(z&&b(z.pid)&&await m(`http://localhost:${z.port}/api/workspace`))return z.port;let{findAvailablePort:X}=await import($("lib/daemon-port.ts")),Z=String(await X(Number(A)));console.log(Z===A?"[beacon] starting the Beacon server\u2026":`[beacon] port ${A} is busy \u2014 starting the Beacon server on port ${Z}\u2026`);let{port:J}=r(Z);if(!await o(`http://localhost:${J}/api/workspace`))console.log("[beacon] (server is taking a while \u2014 it may still be compiling)");return J}function e(z){if(process.env.BEACON_NO_OPEN)return;let X=C()==="darwin"?"open":C()==="win32"?"start":"xdg-open";try{F(`${X} "${z}"`,{stdio:"ignore"})}catch{}}async function zz(){let z=_()||O,{registerWorkspaceExplicit:X,idForPath:Z,ensureWorkspaceDb:J,isRegistrableWorkspacePath:K}=await import($("lib/workspaces.ts"));if(!K(z))return;let q=Z(z);await J(q),X(z);let G=await k();console.log(`[beacon] ready \u2192 http://localhost:${G}/map?ws=${q}`)}async function Xz(){let z=_()||O,{registerWorkspaceExplicit:X,idForPath:Z,dataDirFor:J,ensureWorkspaceDb:K,isRegistrableWorkspacePath:q}=await import($("lib/workspaces.ts"));if(!q(z))console.error(`[beacon] refusing to open Beacon in ${z} \u2014 that's your home directory, not a project.
7
+ `+" cd into a repo (or run `git init` there) and try again."),process.exit(1);let G=Z(z),M=J(G),B=!f(V(M,"db.sqlite"));if(B)console.log(`[beacon] first run for ${z} \u2014 creating database\u2026`);let N=await K(G);if(!N.ok)console.error(`[beacon] failed to provision database: ${N.error}`);if(B)console.log("[beacon] tip: already have code here? run `/beacon-init` in your agent (Claude Code or Codex) to map the project.");let{heal:Y}=await P(z,!0),W=[];if(Y.skillsAdded.length)W.push(`skills ${Y.skillsAdded.join(", ")}`);if(Y.hooksAdded)W.push(`${Y.hooksAdded} Claude Code hook${Y.hooksAdded===1?"":"s"}`);if(Y.claudeMdBlockTouched)W.push("global CLAUDE.md block");if(W.length)console.log(`[beacon] wired into ~/.claude/: ${W.join(" + ")}.`);let H=Y.codex;if(H){let U=[];if(H.skillsAdded.length)U.push(`skills ${H.skillsAdded.join(", ")}`);if(H.hooksAdded)U.push(`${H.hooksAdded} Codex hook${H.hooksAdded===1?"":"s"}`);if(H.agentsMdBlockTouched)U.push("global AGENTS.md block");if(H.mcp.added)U.push("MCP entry in config.toml");if(U.length)console.log(`[beacon] wired into ~/.codex/: ${U.join(" + ")}.`);if(H.mcp.error)console.log(`[beacon] codex MCP not wired: ${H.mcp.error}`)}try{let U=await import($("lib/telemetry.ts"));if(!U.telemetryStatus().machineId){let g=U.telemetryStatus().enabled;console.log(`[beacon] telemetry: Beacon sends an anonymous heartbeat (random machine id, version, OS,
8
8
  `+` architecture \u2014 never repo names, paths, or code) at most every 12h to count
9
9
  `+` active installs. Opt out: \`beacon telemetry off\`, BEACON_TELEMETRY_DISABLED=1,
10
10
  or DO_NOT_TRACK=1. Details: beacon telemetry status.${g?"":" (currently disabled by your env)"}`),U.ensureTelemetryId()}}catch{}X(z);let I=`http://localhost:${await k()}`,L=`/map?ws=${G}`,y=`${I}/api/workspace/activate?id=${G}&redirect=${encodeURIComponent(L)}`;if(console.log(`
@@ -16,7 +16,7 @@ import{execSync as F,spawn as c}from"child_process";import{existsSync as f,mkdir
16
16
  `);else e(y)}function S(){return D(V(j,"package.json"))?.version??"0.0.0"}async function Zz(z){let X=await import($("lib/telemetry.ts"));if(z==="on"||z==="off"){X.setTelemetryEnabled(z==="on"),console.log(`[beacon] telemetry ${z==="on"?"enabled":"disabled"}.`);return}if(z&&z!=="status")console.error("usage: beacon telemetry [on|off|status]"),process.exit(1);let Z=X.telemetryStatus(),J=Z.reason==="env:BEACON_TELEMETRY_DISABLED"?" (BEACON_TELEMETRY_DISABLED=1)":Z.reason==="env:DO_NOT_TRACK"?" (DO_NOT_TRACK)":Z.reason==="preference"?" (beacon telemetry off)":"";if(console.log(`
17
17
  \u25C9 Beacon telemetry: ${Z.enabled?"enabled":"disabled"}${J}`),console.log(` machine id: ${Z.machineId??"(not generated yet \u2014 created on first `beacon` run)"}`),Z.machineId)console.log(` payload: ${JSON.stringify(X.heartbeatPayload(S()))}`);console.log(` sent at most every 12h while the daemon runs \u2014 never repo names, paths, or code.
18
18
  `+" toggle: `beacon telemetry on|off` \xB7 env: BEACON_TELEMETRY_DISABLED=1 or DO_NOT_TRACK=1\n")}async function $z(z){let X=S(),{INSTALL_COMMAND:Z,NPM_LATEST_URL:J}=await import($("lib/release.ts"));if(C()==="win32"){console.log(`[beacon] current version v${X}.`),console.log(`[beacon] on Windows, update with your package manager:
19
- npm i -g trybeacon@latest`);return}let K=null;try{let Y=await fetch(J);if(Y.ok)K=(await Y.json()).version??null}catch{}if(K&&!z){let{isNewerVersion:Y}=await import($("lib/semver.ts"));if(!Y(K,X)){console.log(`[beacon] already on the latest version (v${X}).`),console.log(" run `beacon update --force` to reinstall anyway.");return}}console.log(K?`[beacon] updating Beacon v${X} \u2192 v${K}\u2026`:`[beacon] reinstalling Beacon (current v${X})\u2026`);try{F(Z,{stdio:"inherit"})}catch{console.error(`[beacon] update failed. Run it manually:
19
+ npm i -g trybeacon@latest`);return}let K=null;try{let q=await fetch(J);if(q.ok)K=(await q.json()).version??null}catch{}if(K&&!z){let{isNewerVersion:q}=await import($("lib/semver.ts"));if(!q(K,X)){console.log(`[beacon] already on the latest version (v${X}).`),console.log(" run `beacon update --force` to reinstall anyway.");return}}console.log(K?`[beacon] updating Beacon v${X} \u2192 v${K}\u2026`:`[beacon] reinstalling Beacon (current v${X})\u2026`);try{F(Z,{stdio:"inherit"})}catch{console.error(`[beacon] update failed. Run it manually:
20
20
  ${Z}`),process.exitCode=1;return}try{F("beacon setup",{stdio:"inherit"})}catch{}await Qz(),u(),console.log("[beacon] updated. Run `beacon` to relaunch on the new version.")}async function Qz(){let{installedBeaconPlugin:z}=await import($("lib/global-install.ts")),X=z();if(!X)return;try{F("command -v claude",{stdio:"ignore"})}catch{console.log(`[beacon] Beacon plugin detected \u2014 update it with:
21
21
  claude plugin update ${X.key}`);return}console.log(`[beacon] updating the Beacon Claude Code plugin (${X.key})\u2026`);try{if(X.marketplace)F(`claude plugin marketplace update ${X.marketplace}`,{stdio:"inherit"});F(`claude plugin update ${X.key}`,{stdio:"inherit"}),console.log("[beacon] plugin updated \u2014 restart your agent to apply.")}catch{console.log(`[beacon] couldn't auto-update the plugin. Run:
22
22
  claude plugin update ${X.key}`)}}function u(){let z=D(x);if(z&&b(z.pid))try{try{process.kill(-z.pid)}catch{process.kill(z.pid)}console.log(`[beacon] stopped the server (pid ${z.pid}).`)}catch{console.log("[beacon] could not stop the server.")}else console.log("[beacon] no server running.")}