prism0x2a 0.6.1 → 0.7.2

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 (439) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-path-routes-manifest.json +4 -0
  3. package/.next/standalone/.next/build-manifest.json +3 -3
  4. package/.next/standalone/.next/prerender-manifest.json +24 -0
  5. package/.next/standalone/.next/required-server-files.json +1 -1
  6. package/.next/standalone/.next/routes-manifest.json +24 -0
  7. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  8. package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
  9. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  10. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  11. package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  12. package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  13. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  14. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  15. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  16. package/.next/standalone/.next/server/app/_not-found.rsc +2 -2
  17. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  18. package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  19. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  20. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  21. package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  22. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  23. package/.next/standalone/.next/server/app/amber/capabilities/[id]/page_client-reference-manifest.js +1 -1
  24. package/.next/standalone/.next/server/app/amber/capabilities/page_client-reference-manifest.js +1 -1
  25. package/.next/standalone/.next/server/app/amber/capabilities.html +1 -1
  26. package/.next/standalone/.next/server/app/amber/capabilities.rsc +3 -3
  27. package/.next/standalone/.next/server/app/amber/capabilities.segments/_full.segment.rsc +3 -3
  28. package/.next/standalone/.next/server/app/amber/capabilities.segments/_head.segment.rsc +1 -1
  29. package/.next/standalone/.next/server/app/amber/capabilities.segments/_index.segment.rsc +2 -2
  30. package/.next/standalone/.next/server/app/amber/capabilities.segments/_tree.segment.rsc +2 -2
  31. package/.next/standalone/.next/server/app/amber/capabilities.segments/amber/capabilities/__PAGE__.segment.rsc +2 -2
  32. package/.next/standalone/.next/server/app/amber/capabilities.segments/amber/capabilities.segment.rsc +1 -1
  33. package/.next/standalone/.next/server/app/amber/capabilities.segments/amber.segment.rsc +1 -1
  34. package/.next/standalone/.next/server/app/amber/coverage/page_client-reference-manifest.js +1 -1
  35. package/.next/standalone/.next/server/app/amber/coverage.html +1 -1
  36. package/.next/standalone/.next/server/app/amber/coverage.rsc +3 -3
  37. package/.next/standalone/.next/server/app/amber/coverage.segments/_full.segment.rsc +3 -3
  38. package/.next/standalone/.next/server/app/amber/coverage.segments/_head.segment.rsc +1 -1
  39. package/.next/standalone/.next/server/app/amber/coverage.segments/_index.segment.rsc +2 -2
  40. package/.next/standalone/.next/server/app/amber/coverage.segments/_tree.segment.rsc +2 -2
  41. package/.next/standalone/.next/server/app/amber/coverage.segments/amber/coverage/__PAGE__.segment.rsc +2 -2
  42. package/.next/standalone/.next/server/app/amber/coverage.segments/amber/coverage.segment.rsc +1 -1
  43. package/.next/standalone/.next/server/app/amber/coverage.segments/amber.segment.rsc +1 -1
  44. package/.next/standalone/.next/server/app/amber/files/page_client-reference-manifest.js +1 -1
  45. package/.next/standalone/.next/server/app/amber/files.html +1 -1
  46. package/.next/standalone/.next/server/app/amber/files.rsc +3 -3
  47. package/.next/standalone/.next/server/app/amber/files.segments/_full.segment.rsc +3 -3
  48. package/.next/standalone/.next/server/app/amber/files.segments/_head.segment.rsc +1 -1
  49. package/.next/standalone/.next/server/app/amber/files.segments/_index.segment.rsc +2 -2
  50. package/.next/standalone/.next/server/app/amber/files.segments/_tree.segment.rsc +2 -2
  51. package/.next/standalone/.next/server/app/amber/files.segments/amber/files/__PAGE__.segment.rsc +2 -2
  52. package/.next/standalone/.next/server/app/amber/files.segments/amber/files.segment.rsc +1 -1
  53. package/.next/standalone/.next/server/app/amber/files.segments/amber.segment.rsc +1 -1
  54. package/.next/standalone/.next/server/app/amber/page_client-reference-manifest.js +1 -1
  55. package/.next/standalone/.next/server/app/amber.html +1 -1
  56. package/.next/standalone/.next/server/app/amber.rsc +3 -3
  57. package/.next/standalone/.next/server/app/amber.segments/_full.segment.rsc +3 -3
  58. package/.next/standalone/.next/server/app/amber.segments/_head.segment.rsc +1 -1
  59. package/.next/standalone/.next/server/app/amber.segments/_index.segment.rsc +2 -2
  60. package/.next/standalone/.next/server/app/amber.segments/_tree.segment.rsc +2 -2
  61. package/.next/standalone/.next/server/app/amber.segments/amber/__PAGE__.segment.rsc +2 -2
  62. package/.next/standalone/.next/server/app/amber.segments/amber.segment.rsc +1 -1
  63. package/.next/standalone/.next/server/app/api/amber/capabilities/[id]/route.js +1 -1
  64. package/.next/standalone/.next/server/app/api/amber/capabilities/[id]/route.js.nft.json +1 -1
  65. package/.next/standalone/.next/server/app/api/amber/capabilities/route.js +1 -1
  66. package/.next/standalone/.next/server/app/api/amber/capabilities/route.js.nft.json +1 -1
  67. package/.next/standalone/.next/server/app/api/amber/files/route.js +1 -1
  68. package/.next/standalone/.next/server/app/api/amber/files/route.js.nft.json +1 -1
  69. package/.next/standalone/.next/server/app/api/amber/registry/route.js +1 -1
  70. package/.next/standalone/.next/server/app/api/amber/registry/route.js.nft.json +1 -1
  71. package/.next/standalone/.next/server/app/api/amber/scan/route.js +1 -1
  72. package/.next/standalone/.next/server/app/api/amber/scan/route.js.nft.json +1 -1
  73. package/.next/standalone/.next/server/app/api/blue/recommendations/route.js +1 -1
  74. package/.next/standalone/.next/server/app/api/blue/recommendations/route.js.nft.json +1 -1
  75. package/.next/standalone/.next/server/app/api/blue/scan/route.js +4 -4
  76. package/.next/standalone/.next/server/app/api/blue/scan/route.js.nft.json +1 -1
  77. package/.next/standalone/.next/server/app/api/blue/sessions/[id]/route.js +1 -1
  78. package/.next/standalone/.next/server/app/api/blue/sessions/[id]/route.js.nft.json +1 -1
  79. package/.next/standalone/.next/server/app/api/config/test/route.js +1 -1
  80. package/.next/standalone/.next/server/app/api/config/test/route.js.nft.json +1 -1
  81. package/.next/standalone/.next/server/app/api/green/cross-layer/route.js +1 -1
  82. package/.next/standalone/.next/server/app/api/green/cross-layer/route.js.nft.json +1 -1
  83. package/.next/standalone/.next/server/app/api/green/insights/[id]/route.js +1 -1
  84. package/.next/standalone/.next/server/app/api/green/insights/[id]/route.js.nft.json +1 -1
  85. package/.next/standalone/.next/server/app/api/green/insights/route.js +1 -1
  86. package/.next/standalone/.next/server/app/api/green/insights/route.js.nft.json +1 -1
  87. package/.next/standalone/.next/server/app/api/green/queries/[id]/route.js +1 -1
  88. package/.next/standalone/.next/server/app/api/green/queries/[id]/route.js.nft.json +1 -1
  89. package/.next/standalone/.next/server/app/api/green/queries/[id]/run/route.js +1 -1
  90. package/.next/standalone/.next/server/app/api/green/queries/[id]/run/route.js.nft.json +1 -1
  91. package/.next/standalone/.next/server/app/api/green/queries/route.js +1 -1
  92. package/.next/standalone/.next/server/app/api/green/queries/route.js.nft.json +1 -1
  93. package/.next/standalone/.next/server/app/api/license/activate/route/app-paths-manifest.json +3 -0
  94. package/.next/standalone/.next/server/app/api/license/activate/route/build-manifest.json +9 -0
  95. package/.next/standalone/.next/server/app/api/license/activate/route/server-reference-manifest.json +4 -0
  96. package/.next/standalone/.next/server/app/api/license/activate/route.js +6 -0
  97. package/.next/standalone/.next/server/app/api/license/activate/route.js.map +5 -0
  98. package/.next/standalone/.next/server/app/api/license/activate/route.js.nft.json +1 -0
  99. package/.next/standalone/.next/server/app/api/license/activate/route_client-reference-manifest.js +3 -0
  100. package/.next/standalone/.next/server/app/api/license/deactivate/route/app-paths-manifest.json +3 -0
  101. package/.next/standalone/.next/server/app/api/license/deactivate/route/build-manifest.json +9 -0
  102. package/.next/standalone/.next/server/app/api/license/deactivate/route/server-reference-manifest.json +4 -0
  103. package/.next/standalone/.next/server/app/api/license/deactivate/route.js +6 -0
  104. package/.next/standalone/.next/server/app/api/license/deactivate/route.js.map +5 -0
  105. package/.next/standalone/.next/server/app/api/license/deactivate/route.js.nft.json +1 -0
  106. package/.next/standalone/.next/server/app/api/license/deactivate/route_client-reference-manifest.js +3 -0
  107. package/.next/standalone/.next/server/app/api/license/route.js +1 -1
  108. package/.next/standalone/.next/server/app/api/license/route.js.nft.json +1 -1
  109. package/.next/standalone/.next/server/app/api/license/validate/route/app-paths-manifest.json +3 -0
  110. package/.next/standalone/.next/server/app/api/license/validate/route/build-manifest.json +9 -0
  111. package/.next/standalone/.next/server/app/api/license/validate/route/server-reference-manifest.json +4 -0
  112. package/.next/standalone/.next/server/app/api/license/validate/route.js +6 -0
  113. package/.next/standalone/.next/server/app/api/license/validate/route.js.map +5 -0
  114. package/.next/standalone/.next/server/app/api/license/validate/route.js.nft.json +1 -0
  115. package/.next/standalone/.next/server/app/api/license/validate/route_client-reference-manifest.js +3 -0
  116. package/.next/standalone/.next/server/app/api/monorepo/route.js.nft.json +1 -1
  117. package/.next/standalone/.next/server/app/api/scan/route.js +1 -1
  118. package/.next/standalone/.next/server/app/api/scan/route.js.nft.json +1 -1
  119. package/.next/standalone/.next/server/app/blue/page_client-reference-manifest.js +1 -1
  120. package/.next/standalone/.next/server/app/blue/recommendations/[id]/page_client-reference-manifest.js +1 -1
  121. package/.next/standalone/.next/server/app/blue/recommendations/page_client-reference-manifest.js +1 -1
  122. package/.next/standalone/.next/server/app/blue/recommendations.html +1 -1
  123. package/.next/standalone/.next/server/app/blue/recommendations.rsc +3 -3
  124. package/.next/standalone/.next/server/app/blue/recommendations.segments/_full.segment.rsc +3 -3
  125. package/.next/standalone/.next/server/app/blue/recommendations.segments/_head.segment.rsc +1 -1
  126. package/.next/standalone/.next/server/app/blue/recommendations.segments/_index.segment.rsc +2 -2
  127. package/.next/standalone/.next/server/app/blue/recommendations.segments/_tree.segment.rsc +2 -2
  128. package/.next/standalone/.next/server/app/blue/recommendations.segments/blue/recommendations/__PAGE__.segment.rsc +2 -2
  129. package/.next/standalone/.next/server/app/blue/recommendations.segments/blue/recommendations.segment.rsc +1 -1
  130. package/.next/standalone/.next/server/app/blue/recommendations.segments/blue.segment.rsc +1 -1
  131. package/.next/standalone/.next/server/app/blue/sessions/[id]/page_client-reference-manifest.js +1 -1
  132. package/.next/standalone/.next/server/app/blue/sessions/page_client-reference-manifest.js +1 -1
  133. package/.next/standalone/.next/server/app/blue/sessions.html +1 -1
  134. package/.next/standalone/.next/server/app/blue/sessions.rsc +3 -3
  135. package/.next/standalone/.next/server/app/blue/sessions.segments/_full.segment.rsc +3 -3
  136. package/.next/standalone/.next/server/app/blue/sessions.segments/_head.segment.rsc +1 -1
  137. package/.next/standalone/.next/server/app/blue/sessions.segments/_index.segment.rsc +2 -2
  138. package/.next/standalone/.next/server/app/blue/sessions.segments/_tree.segment.rsc +2 -2
  139. package/.next/standalone/.next/server/app/blue/sessions.segments/blue/sessions/__PAGE__.segment.rsc +2 -2
  140. package/.next/standalone/.next/server/app/blue/sessions.segments/blue/sessions.segment.rsc +1 -1
  141. package/.next/standalone/.next/server/app/blue/sessions.segments/blue.segment.rsc +1 -1
  142. package/.next/standalone/.next/server/app/blue.html +1 -1
  143. package/.next/standalone/.next/server/app/blue.rsc +3 -3
  144. package/.next/standalone/.next/server/app/blue.segments/_full.segment.rsc +3 -3
  145. package/.next/standalone/.next/server/app/blue.segments/_head.segment.rsc +1 -1
  146. package/.next/standalone/.next/server/app/blue.segments/_index.segment.rsc +2 -2
  147. package/.next/standalone/.next/server/app/blue.segments/_tree.segment.rsc +2 -2
  148. package/.next/standalone/.next/server/app/blue.segments/blue/__PAGE__.segment.rsc +2 -2
  149. package/.next/standalone/.next/server/app/blue.segments/blue.segment.rsc +1 -1
  150. package/.next/standalone/.next/server/app/green/cross-layer/page_client-reference-manifest.js +1 -1
  151. package/.next/standalone/.next/server/app/green/cross-layer.html +1 -1
  152. package/.next/standalone/.next/server/app/green/cross-layer.rsc +3 -3
  153. package/.next/standalone/.next/server/app/green/cross-layer.segments/_full.segment.rsc +3 -3
  154. package/.next/standalone/.next/server/app/green/cross-layer.segments/_head.segment.rsc +1 -1
  155. package/.next/standalone/.next/server/app/green/cross-layer.segments/_index.segment.rsc +2 -2
  156. package/.next/standalone/.next/server/app/green/cross-layer.segments/_tree.segment.rsc +2 -2
  157. package/.next/standalone/.next/server/app/green/cross-layer.segments/green/cross-layer/__PAGE__.segment.rsc +2 -2
  158. package/.next/standalone/.next/server/app/green/cross-layer.segments/green/cross-layer.segment.rsc +1 -1
  159. package/.next/standalone/.next/server/app/green/cross-layer.segments/green.segment.rsc +1 -1
  160. package/.next/standalone/.next/server/app/green/insights/[id]/page_client-reference-manifest.js +1 -1
  161. package/.next/standalone/.next/server/app/green/insights/page_client-reference-manifest.js +1 -1
  162. package/.next/standalone/.next/server/app/green/insights.html +1 -1
  163. package/.next/standalone/.next/server/app/green/insights.rsc +3 -3
  164. package/.next/standalone/.next/server/app/green/insights.segments/_full.segment.rsc +3 -3
  165. package/.next/standalone/.next/server/app/green/insights.segments/_head.segment.rsc +1 -1
  166. package/.next/standalone/.next/server/app/green/insights.segments/_index.segment.rsc +2 -2
  167. package/.next/standalone/.next/server/app/green/insights.segments/_tree.segment.rsc +2 -2
  168. package/.next/standalone/.next/server/app/green/insights.segments/green/insights/__PAGE__.segment.rsc +2 -2
  169. package/.next/standalone/.next/server/app/green/insights.segments/green/insights.segment.rsc +1 -1
  170. package/.next/standalone/.next/server/app/green/insights.segments/green.segment.rsc +1 -1
  171. package/.next/standalone/.next/server/app/green/page_client-reference-manifest.js +1 -1
  172. package/.next/standalone/.next/server/app/green/queries/[id]/page_client-reference-manifest.js +1 -1
  173. package/.next/standalone/.next/server/app/green/queries/page_client-reference-manifest.js +1 -1
  174. package/.next/standalone/.next/server/app/green/queries.html +1 -1
  175. package/.next/standalone/.next/server/app/green/queries.rsc +3 -3
  176. package/.next/standalone/.next/server/app/green/queries.segments/_full.segment.rsc +3 -3
  177. package/.next/standalone/.next/server/app/green/queries.segments/_head.segment.rsc +1 -1
  178. package/.next/standalone/.next/server/app/green/queries.segments/_index.segment.rsc +2 -2
  179. package/.next/standalone/.next/server/app/green/queries.segments/_tree.segment.rsc +2 -2
  180. package/.next/standalone/.next/server/app/green/queries.segments/green/queries/__PAGE__.segment.rsc +2 -2
  181. package/.next/standalone/.next/server/app/green/queries.segments/green/queries.segment.rsc +1 -1
  182. package/.next/standalone/.next/server/app/green/queries.segments/green.segment.rsc +1 -1
  183. package/.next/standalone/.next/server/app/green.html +1 -1
  184. package/.next/standalone/.next/server/app/green.rsc +3 -3
  185. package/.next/standalone/.next/server/app/green.segments/_full.segment.rsc +3 -3
  186. package/.next/standalone/.next/server/app/green.segments/_head.segment.rsc +1 -1
  187. package/.next/standalone/.next/server/app/green.segments/_index.segment.rsc +2 -2
  188. package/.next/standalone/.next/server/app/green.segments/_tree.segment.rsc +2 -2
  189. package/.next/standalone/.next/server/app/green.segments/green/__PAGE__.segment.rsc +2 -2
  190. package/.next/standalone/.next/server/app/green.segments/green.segment.rsc +1 -1
  191. package/.next/standalone/.next/server/app/index.html +1 -1
  192. package/.next/standalone/.next/server/app/index.rsc +3 -3
  193. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  194. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +3 -3
  195. package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  196. package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +2 -2
  197. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  198. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  199. package/.next/standalone/.next/server/app/pricing/page/app-paths-manifest.json +3 -0
  200. package/.next/standalone/.next/server/app/pricing/page/build-manifest.json +16 -0
  201. package/.next/standalone/.next/server/app/pricing/page/next-font-manifest.json +10 -0
  202. package/.next/standalone/.next/server/app/pricing/page/react-loadable-manifest.json +1 -0
  203. package/.next/standalone/.next/server/app/pricing/page/server-reference-manifest.json +4 -0
  204. package/.next/standalone/.next/server/app/pricing/page.js +14 -0
  205. package/.next/standalone/.next/server/app/pricing/page.js.map +5 -0
  206. package/.next/standalone/.next/server/app/pricing/page.js.nft.json +1 -0
  207. package/.next/standalone/.next/server/app/pricing/page_client-reference-manifest.js +3 -0
  208. package/.next/standalone/.next/server/app/pricing.html +1 -0
  209. package/.next/standalone/.next/server/app/pricing.meta +15 -0
  210. package/.next/standalone/.next/server/app/pricing.rsc +21 -0
  211. package/.next/standalone/.next/server/app/pricing.segments/_full.segment.rsc +21 -0
  212. package/.next/standalone/.next/server/app/pricing.segments/_head.segment.rsc +6 -0
  213. package/.next/standalone/.next/server/app/pricing.segments/_index.segment.rsc +5 -0
  214. package/.next/standalone/.next/server/app/pricing.segments/_tree.segment.rsc +3 -0
  215. package/.next/standalone/.next/server/app/pricing.segments/pricing/__PAGE__.segment.rsc +9 -0
  216. package/.next/standalone/.next/server/app/pricing.segments/pricing.segment.rsc +5 -0
  217. package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  218. package/.next/standalone/.next/server/app/settings.html +2 -2
  219. package/.next/standalone/.next/server/app/settings.rsc +3 -3
  220. package/.next/standalone/.next/server/app/settings.segments/_full.segment.rsc +3 -3
  221. package/.next/standalone/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  222. package/.next/standalone/.next/server/app/settings.segments/_index.segment.rsc +2 -2
  223. package/.next/standalone/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  224. package/.next/standalone/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +2 -2
  225. package/.next/standalone/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  226. package/.next/standalone/.next/server/app-paths-manifest.json +4 -0
  227. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0xv4rrt._.js → [root-of-the-server]__04187lj._.js} +2 -2
  228. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0o~b3pl._.js → [root-of-the-server]__057dm7o._.js} +2 -2
  229. package/.next/standalone/.next/server/chunks/[root-of-the-server]__08rxe0c._.js +1 -1
  230. package/.next/standalone/.next/server/chunks/[root-of-the-server]__09l4tge._.js +3 -0
  231. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0-m3qqb._.js → [root-of-the-server]__09snvkf._.js} +2 -2
  232. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0m54e40._.js → [root-of-the-server]__0ae2a50._.js} +2 -2
  233. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0d_1-q9._.js +3 -0
  234. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0sqgu0x._.js → [root-of-the-server]__0e-cuw5._.js} +2 -2
  235. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0z3su._._.js → [root-of-the-server]__0ei452y._.js} +2 -2
  236. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0j4r.sn._.js → [root-of-the-server]__0fxxbt1._.js} +2 -2
  237. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0~pq-2q._.js → [root-of-the-server]__0jwdt56._.js} +2 -2
  238. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0idrx7n._.js → [root-of-the-server]__0kgqm5d._.js} +2 -2
  239. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0lut4-l._.js → [root-of-the-server]__0m_11-d._.js} +2 -2
  240. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__13u~wki._.js → [root-of-the-server]__0mh73gz._.js} +2 -2
  241. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0p0b_67._.js +3 -0
  242. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0i7owf4._.js → [root-of-the-server]__0s130_c._.js} +2 -2
  243. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0skt4tx._.js +3 -0
  244. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0xbagnl._.js → [root-of-the-server]__0v3_gr6._.js} +2 -2
  245. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0~f~0tr._.js → [root-of-the-server]__119q6r9._.js} +2 -2
  246. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0-61.35._.js → [root-of-the-server]__12glosw._.js} +2 -2
  247. package/.next/standalone/.next/server/chunks/[root-of-the-server]__13.5op0._.js +3 -0
  248. package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_license_activate_route_actions_0jh6t~s.js +3 -0
  249. package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_license_deactivate_route_actions_0tmpd4n.js +3 -0
  250. package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_license_validate_route_actions_0lhsct4.js +3 -0
  251. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0es1n-0._.js +3 -0
  252. package/.next/standalone/.next/server/chunks/ssr/_0a2egyj._.js +1 -1
  253. package/.next/standalone/.next/server/chunks/ssr/_next-internal_server_app_pricing_page_actions_0gvv0qw.js +3 -0
  254. package/.next/standalone/.next/server/chunks/ssr/app_amber_capabilities_[id]_page_tsx_12~.miw._.js +1 -1
  255. package/.next/standalone/.next/server/chunks/ssr/app_amber_capabilities_page_tsx_0.t9mpr._.js +1 -1
  256. package/.next/standalone/.next/server/chunks/ssr/app_amber_coverage_page_tsx_01yia_n._.js +1 -1
  257. package/.next/standalone/.next/server/chunks/ssr/app_amber_files_page_tsx_00pdkc~._.js +1 -1
  258. package/.next/standalone/.next/server/chunks/ssr/app_amber_page_tsx_0ihx6zl._.js +1 -1
  259. package/.next/standalone/.next/server/chunks/ssr/app_blue_page_tsx_0zg5eg-._.js +1 -1
  260. package/.next/standalone/.next/server/chunks/ssr/app_blue_recommendations_[id]_page_tsx_10zzlnx._.js +1 -1
  261. package/.next/standalone/.next/server/chunks/ssr/app_blue_recommendations_page_tsx_08w-50l._.js +1 -1
  262. package/.next/standalone/.next/server/chunks/ssr/app_blue_sessions_[id]_page_tsx_0_~w1xj._.js +1 -1
  263. package/.next/standalone/.next/server/chunks/ssr/app_blue_sessions_page_tsx_0kbuf.c._.js +1 -1
  264. package/.next/standalone/.next/server/chunks/ssr/app_green_cross-layer_page_tsx_0a80o-~._.js +1 -1
  265. package/.next/standalone/.next/server/chunks/ssr/app_green_insights_[id]_page_tsx_0se6uk1._.js +1 -1
  266. package/.next/standalone/.next/server/chunks/ssr/app_green_insights_page_tsx_04g8_lf._.js +1 -1
  267. package/.next/standalone/.next/server/chunks/ssr/app_green_page_tsx_10g2g6w._.js +1 -1
  268. package/.next/standalone/.next/server/chunks/ssr/app_green_queries_[id]_page_tsx_0hg.qma._.js +1 -1
  269. package/.next/standalone/.next/server/chunks/ssr/app_green_queries_page_tsx_0.p0r7z._.js +1 -1
  270. package/.next/standalone/.next/server/chunks/ssr/app_page_tsx_0es_sk2._.js +1 -1
  271. package/.next/standalone/.next/server/chunks/ssr/app_pricing_page_tsx_0uxncj9._.js +3 -0
  272. package/.next/standalone/.next/server/chunks/ssr/app_settings_page_tsx_0~q~t-v._.js +1 -1
  273. package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_09d0h78.js +4 -0
  274. package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
  275. package/.next/standalone/.next/server/next-font-manifest.js +1 -1
  276. package/.next/standalone/.next/server/next-font-manifest.json +3 -0
  277. package/.next/standalone/.next/server/pages/404.html +1 -1
  278. package/.next/standalone/.next/server/pages/500.html +1 -1
  279. package/.next/standalone/.next/static/chunks/0-nogwaahf00r.js +1 -0
  280. package/.next/standalone/.next/static/chunks/0-ozct-0~_~y0.js +1 -0
  281. package/.next/standalone/.next/static/chunks/0043va.q9c120.js +1 -0
  282. package/.next/standalone/.next/static/chunks/0062k_6y6ie8k.js +1 -0
  283. package/.next/standalone/.next/static/chunks/01x6uo5zvt23j.js +1 -0
  284. package/.next/standalone/.next/static/chunks/03f4g06bhu.q-.js +1 -0
  285. package/.next/standalone/.next/static/chunks/06ciexs8mfsoh.js +1 -0
  286. package/.next/standalone/.next/static/chunks/06lbhw~p794rn.js +1 -0
  287. package/.next/standalone/.next/static/chunks/0921_~z_rxr9h.js +1 -0
  288. package/.next/standalone/.next/static/chunks/0_uy4bqezjrpu.js +1 -0
  289. package/.next/standalone/.next/static/chunks/0aqr1e8db8tr2.js +1 -0
  290. package/.next/standalone/.next/static/chunks/0gtjarbzj_b0s.js +1 -0
  291. package/.next/standalone/.next/static/chunks/0i826dpus7xfj.js +1 -0
  292. package/.next/standalone/.next/static/chunks/0l.f7bl92nc~2.css +2 -0
  293. package/.next/standalone/.next/static/chunks/0mtsra7dpsxy_.js +1 -0
  294. package/.next/standalone/.next/static/chunks/0nc15zt~yfrj3.js +1 -0
  295. package/.next/standalone/.next/static/chunks/0ptkiyk6p_hgq.js +1 -0
  296. package/.next/standalone/.next/static/chunks/0vsoyv8nkj.rx.js +1 -0
  297. package/.next/standalone/.next/static/chunks/0zpu7b02c6huw.js +1 -0
  298. package/.next/standalone/.next/static/chunks/10ibvf69namr1.js +1 -0
  299. package/.next/standalone/.next/static/chunks/1655x4_8fq5li.js +1 -0
  300. package/.next/standalone/.next/static/static/chunks/0-nogwaahf00r.js +1 -0
  301. package/.next/standalone/.next/static/static/chunks/0-ozct-0~_~y0.js +1 -0
  302. package/.next/standalone/.next/static/static/chunks/0043va.q9c120.js +1 -0
  303. package/.next/standalone/.next/static/static/chunks/0062k_6y6ie8k.js +1 -0
  304. package/.next/standalone/.next/static/static/chunks/01x6uo5zvt23j.js +1 -0
  305. package/.next/standalone/.next/static/static/chunks/03f4g06bhu.q-.js +1 -0
  306. package/.next/standalone/.next/static/static/chunks/06ciexs8mfsoh.js +1 -0
  307. package/.next/standalone/.next/static/static/chunks/06lbhw~p794rn.js +1 -0
  308. package/.next/standalone/.next/static/static/chunks/0921_~z_rxr9h.js +1 -0
  309. package/.next/standalone/.next/static/static/chunks/0_uy4bqezjrpu.js +1 -0
  310. package/.next/standalone/.next/static/static/chunks/0aqr1e8db8tr2.js +1 -0
  311. package/.next/standalone/.next/static/static/chunks/0gtjarbzj_b0s.js +1 -0
  312. package/.next/standalone/.next/static/static/chunks/0i826dpus7xfj.js +1 -0
  313. package/.next/standalone/.next/static/static/chunks/0l.f7bl92nc~2.css +2 -0
  314. package/.next/standalone/.next/static/static/chunks/0mtsra7dpsxy_.js +1 -0
  315. package/.next/standalone/.next/static/static/chunks/0nc15zt~yfrj3.js +1 -0
  316. package/.next/standalone/.next/static/static/chunks/0ptkiyk6p_hgq.js +1 -0
  317. package/.next/standalone/.next/static/static/chunks/0vsoyv8nkj.rx.js +1 -0
  318. package/.next/standalone/.next/static/static/chunks/0zpu7b02c6huw.js +1 -0
  319. package/.next/standalone/.next/static/static/chunks/10ibvf69namr1.js +1 -0
  320. package/.next/standalone/.next/static/static/chunks/1655x4_8fq5li.js +1 -0
  321. package/.next/standalone/CHANGELOG.md +78 -0
  322. package/.next/standalone/app/api/blue/scan/route.ts +12 -0
  323. package/.next/standalone/app/api/license/activate/route.ts +41 -0
  324. package/.next/standalone/app/api/license/deactivate/route.ts +22 -0
  325. package/.next/standalone/app/api/license/route.ts +23 -3
  326. package/.next/standalone/app/api/license/validate/route.ts +23 -0
  327. package/.next/standalone/app/pricing/page.tsx +289 -0
  328. package/.next/standalone/app/settings/page.tsx +180 -59
  329. package/.next/standalone/components/PrismDock.tsx +1 -0
  330. package/.next/standalone/components/pricing/BillingToggle.tsx +53 -0
  331. package/.next/standalone/components/pricing/FeatureList.tsx +19 -0
  332. package/.next/standalone/components/pricing/PricingCard.tsx +120 -0
  333. package/.next/standalone/docs/strategy/monetization-thinking.md +164 -0
  334. package/.next/standalone/lib/prism/features.shared.ts +15 -5
  335. package/.next/standalone/lib/prism/features.ts +9 -5
  336. package/.next/standalone/lib/prism/hooks/useLicense.ts +26 -2
  337. package/.next/standalone/lib/prism/lemonsqueezy/client.ts +162 -0
  338. package/.next/standalone/lib/prism/lemonsqueezy/tierMapping.ts +26 -0
  339. package/.next/standalone/lib/prism/license/lemonsqueezy.ts +142 -0
  340. package/.next/standalone/lib/prism/license/store.ts +17 -8
  341. package/.next/standalone/lib/prism/license/types.ts +35 -11
  342. package/.next/standalone/lib/prism/license/validate.ts +40 -11
  343. package/.next/standalone/package.json +2 -2
  344. package/.next/standalone/server.js +1 -1
  345. package/.next/standalone/tsconfig.tsbuildinfo +1 -1
  346. package/.next/static/chunks/0-nogwaahf00r.js +1 -0
  347. package/.next/static/chunks/0-ozct-0~_~y0.js +1 -0
  348. package/.next/static/chunks/0043va.q9c120.js +1 -0
  349. package/.next/static/chunks/0062k_6y6ie8k.js +1 -0
  350. package/.next/static/chunks/01x6uo5zvt23j.js +1 -0
  351. package/.next/static/chunks/03f4g06bhu.q-.js +1 -0
  352. package/.next/static/chunks/06ciexs8mfsoh.js +1 -0
  353. package/.next/static/chunks/06lbhw~p794rn.js +1 -0
  354. package/.next/static/chunks/0921_~z_rxr9h.js +1 -0
  355. package/.next/static/chunks/0_uy4bqezjrpu.js +1 -0
  356. package/.next/static/chunks/0aqr1e8db8tr2.js +1 -0
  357. package/.next/static/chunks/0gtjarbzj_b0s.js +1 -0
  358. package/.next/static/chunks/0i826dpus7xfj.js +1 -0
  359. package/.next/static/chunks/0l.f7bl92nc~2.css +2 -0
  360. package/.next/static/chunks/0mtsra7dpsxy_.js +1 -0
  361. package/.next/static/chunks/0nc15zt~yfrj3.js +1 -0
  362. package/.next/static/chunks/0ptkiyk6p_hgq.js +1 -0
  363. package/.next/static/chunks/0vsoyv8nkj.rx.js +1 -0
  364. package/.next/static/chunks/0zpu7b02c6huw.js +1 -0
  365. package/.next/static/chunks/10ibvf69namr1.js +1 -0
  366. package/.next/static/chunks/1655x4_8fq5li.js +1 -0
  367. package/CHANGELOG.md +78 -0
  368. package/package.json +2 -2
  369. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0c4z._.._.js +0 -3
  370. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0tsv3gt._.js +0 -3
  371. package/.next/standalone/.next/static/chunks/06w_r5ib1et20.css +0 -2
  372. package/.next/standalone/.next/static/chunks/07c3wweseos.8.js +0 -1
  373. package/.next/standalone/.next/static/chunks/0_mxo3sdn-obc.js +0 -1
  374. package/.next/standalone/.next/static/chunks/0_r6ls5m8p~ft.js +0 -1
  375. package/.next/standalone/.next/static/chunks/0amsn1mknilcs.js +0 -1
  376. package/.next/standalone/.next/static/chunks/0ca9m7vrn2t7n.js +0 -1
  377. package/.next/standalone/.next/static/chunks/0c~l5bjb.rw_-.js +0 -1
  378. package/.next/standalone/.next/static/chunks/0dpf4si7n7imd.js +0 -1
  379. package/.next/standalone/.next/static/chunks/0du4cx1~k7d83.js +0 -1
  380. package/.next/standalone/.next/static/chunks/0g6lo0qyyyd8q.js +0 -1
  381. package/.next/standalone/.next/static/chunks/0lmcd5yqytd7q.js +0 -1
  382. package/.next/standalone/.next/static/chunks/0mlj0bhfz2s6h.js +0 -1
  383. package/.next/standalone/.next/static/chunks/0nu3srr5njzka.js +0 -1
  384. package/.next/standalone/.next/static/chunks/0qsy_4~44nzw1.js +0 -1
  385. package/.next/standalone/.next/static/chunks/1006uokkrcoe4.js +0 -1
  386. package/.next/standalone/.next/static/chunks/105mo4ttns4ro.js +0 -1
  387. package/.next/standalone/.next/static/chunks/10q-0rneqwysg.js +0 -1
  388. package/.next/standalone/.next/static/chunks/12kh0-iq.4m3c.js +0 -1
  389. package/.next/standalone/.next/static/chunks/13_6yxs82pu_4.js +0 -1
  390. package/.next/standalone/.next/static/chunks/16btub.0e2sr1.js +0 -1
  391. package/.next/standalone/.next/static/static/chunks/06w_r5ib1et20.css +0 -2
  392. package/.next/standalone/.next/static/static/chunks/07c3wweseos.8.js +0 -1
  393. package/.next/standalone/.next/static/static/chunks/0_mxo3sdn-obc.js +0 -1
  394. package/.next/standalone/.next/static/static/chunks/0_r6ls5m8p~ft.js +0 -1
  395. package/.next/standalone/.next/static/static/chunks/0amsn1mknilcs.js +0 -1
  396. package/.next/standalone/.next/static/static/chunks/0ca9m7vrn2t7n.js +0 -1
  397. package/.next/standalone/.next/static/static/chunks/0c~l5bjb.rw_-.js +0 -1
  398. package/.next/standalone/.next/static/static/chunks/0dpf4si7n7imd.js +0 -1
  399. package/.next/standalone/.next/static/static/chunks/0du4cx1~k7d83.js +0 -1
  400. package/.next/standalone/.next/static/static/chunks/0g6lo0qyyyd8q.js +0 -1
  401. package/.next/standalone/.next/static/static/chunks/0lmcd5yqytd7q.js +0 -1
  402. package/.next/standalone/.next/static/static/chunks/0mlj0bhfz2s6h.js +0 -1
  403. package/.next/standalone/.next/static/static/chunks/0nu3srr5njzka.js +0 -1
  404. package/.next/standalone/.next/static/static/chunks/0qsy_4~44nzw1.js +0 -1
  405. package/.next/standalone/.next/static/static/chunks/1006uokkrcoe4.js +0 -1
  406. package/.next/standalone/.next/static/static/chunks/105mo4ttns4ro.js +0 -1
  407. package/.next/standalone/.next/static/static/chunks/10q-0rneqwysg.js +0 -1
  408. package/.next/standalone/.next/static/static/chunks/12kh0-iq.4m3c.js +0 -1
  409. package/.next/standalone/.next/static/static/chunks/13_6yxs82pu_4.js +0 -1
  410. package/.next/standalone/.next/static/static/chunks/16btub.0e2sr1.js +0 -1
  411. package/.next/static/chunks/06w_r5ib1et20.css +0 -2
  412. package/.next/static/chunks/07c3wweseos.8.js +0 -1
  413. package/.next/static/chunks/0_mxo3sdn-obc.js +0 -1
  414. package/.next/static/chunks/0_r6ls5m8p~ft.js +0 -1
  415. package/.next/static/chunks/0amsn1mknilcs.js +0 -1
  416. package/.next/static/chunks/0ca9m7vrn2t7n.js +0 -1
  417. package/.next/static/chunks/0c~l5bjb.rw_-.js +0 -1
  418. package/.next/static/chunks/0dpf4si7n7imd.js +0 -1
  419. package/.next/static/chunks/0du4cx1~k7d83.js +0 -1
  420. package/.next/static/chunks/0g6lo0qyyyd8q.js +0 -1
  421. package/.next/static/chunks/0lmcd5yqytd7q.js +0 -1
  422. package/.next/static/chunks/0mlj0bhfz2s6h.js +0 -1
  423. package/.next/static/chunks/0nu3srr5njzka.js +0 -1
  424. package/.next/static/chunks/0qsy_4~44nzw1.js +0 -1
  425. package/.next/static/chunks/1006uokkrcoe4.js +0 -1
  426. package/.next/static/chunks/105mo4ttns4ro.js +0 -1
  427. package/.next/static/chunks/10q-0rneqwysg.js +0 -1
  428. package/.next/static/chunks/12kh0-iq.4m3c.js +0 -1
  429. package/.next/static/chunks/13_6yxs82pu_4.js +0 -1
  430. package/.next/static/chunks/16btub.0e2sr1.js +0 -1
  431. /package/.next/standalone/.next/static/{pxEf_JFJYiGcbQWz1fBY7 → W2AhxwlOVhsTt-b4T3Mjc}/_buildManifest.js +0 -0
  432. /package/.next/standalone/.next/static/{pxEf_JFJYiGcbQWz1fBY7 → W2AhxwlOVhsTt-b4T3Mjc}/_clientMiddlewareManifest.js +0 -0
  433. /package/.next/standalone/.next/static/{pxEf_JFJYiGcbQWz1fBY7 → W2AhxwlOVhsTt-b4T3Mjc}/_ssgManifest.js +0 -0
  434. /package/.next/standalone/.next/static/static/{pxEf_JFJYiGcbQWz1fBY7 → W2AhxwlOVhsTt-b4T3Mjc}/_buildManifest.js +0 -0
  435. /package/.next/standalone/.next/static/static/{pxEf_JFJYiGcbQWz1fBY7 → W2AhxwlOVhsTt-b4T3Mjc}/_clientMiddlewareManifest.js +0 -0
  436. /package/.next/standalone/.next/static/static/{pxEf_JFJYiGcbQWz1fBY7 → W2AhxwlOVhsTt-b4T3Mjc}/_ssgManifest.js +0 -0
  437. /package/.next/static/{pxEf_JFJYiGcbQWz1fBY7 → W2AhxwlOVhsTt-b4T3Mjc}/_buildManifest.js +0 -0
  438. /package/.next/static/{pxEf_JFJYiGcbQWz1fBY7 → W2AhxwlOVhsTt-b4T3Mjc}/_clientMiddlewareManifest.js +0 -0
  439. /package/.next/static/{pxEf_JFJYiGcbQWz1fBY7 → W2AhxwlOVhsTt-b4T3Mjc}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,95057,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var l={formatUrl:function(){return o},formatWithValidation:function(){return c},urlObjectKeys:function(){return i}};for(var n in l)Object.defineProperty(r,n,{enumerable:!0,get:l[n]});let s=e.r(90809)._(e.r(98183)),a=/https?|ftp|gopher|file/;function o(e){let{auth:t,hostname:r}=e,l=e.protocol||"",n=e.pathname||"",o=e.hash||"",i=e.query||"",c=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?c=t+e.host:r&&(c=t+(~r.indexOf(":")?`[${r}]`:r),e.port&&(c+=":"+e.port)),i&&"object"==typeof i&&(i=String(s.urlQueryToSearchParams(i)));let u=e.search||i&&`?${i}`||"";return l&&!l.endsWith(":")&&(l+=":"),e.slashes||(!l||a.test(l))&&!1!==c?(c="//"+(c||""),n&&"/"!==n[0]&&(n="/"+n)):c||(c=""),o&&"#"!==o[0]&&(o="#"+o),u&&"?"!==u[0]&&(u="?"+u),n=n.replace(/[?#]/g,encodeURIComponent),u=u.replace("#","%23"),`${l}${c}${n}${u}${o}`}let i=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function c(e){return o(e)}},18581,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useMergedRef",{enumerable:!0,get:function(){return n}});let l=e.r(71645);function n(e,t){let r=(0,l.useRef)(null),n=(0,l.useRef)(null);return(0,l.useCallback)(l=>{if(null===l){let e=r.current;e&&(r.current=null,e());let t=n.current;t&&(n.current=null,t())}else e&&(r.current=s(e,l)),t&&(n.current=s(t,l))},[e,t])}function s(e,t){if("function"!=typeof e)return e.current=t,()=>{e.current=null};{let r=e(t);return"function"==typeof r?r:()=>e(null)}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},73668,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isLocalURL",{enumerable:!0,get:function(){return s}});let l=e.r(18967),n=e.r(52817);function s(e){if(!(0,l.isAbsoluteUrl)(e))return!0;try{let t=(0,l.getLocationOrigin)(),r=new URL(e,t);return r.origin===t&&(0,n.hasBasePath)(r.pathname)}catch(e){return!1}}},84508,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"errorOnce",{enumerable:!0,get:function(){return l}});let l=e=>{}},22016,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var l={default:function(){return g},useLinkStatus:function(){return y}};for(var n in l)Object.defineProperty(r,n,{enumerable:!0,get:l[n]});let s=e.r(90809),a=e.r(43476),o=s._(e.r(71645)),i=e.r(95057),c=e.r(8372),u=e.r(18581),p=e.r(18967),d=e.r(5550);e.r(33525);let f=e.r(88540),x=e.r(91949),m=e.r(73668),h=e.r(9396);function g(t){var r,l;let n,s,g,[y,j]=(0,o.useOptimistic)(x.IDLE_LINK_STATUS),v=(0,o.useRef)(null),{href:N,as:k,children:w,prefetch:_=null,passHref:S,replace:C,shallow:E,scroll:P,onClick:T,onMouseEnter:R,onTouchStart:O,legacyBehavior:L=!1,onNavigate:A,transitionTypes:U,ref:I,unstable_dynamicOnHover:M,...$}=t;n=w,L&&("string"==typeof n||"number"==typeof n)&&(n=(0,a.jsx)("a",{children:n}));let B=o.default.useContext(c.AppRouterContext),q=!1!==_,D=!1!==_?null===(l=_)||"auto"===l?h.FetchStrategy.PPR:h.FetchStrategy.Full:h.FetchStrategy.PPR,F="string"==typeof(r=k||N)?r:(0,i.formatUrl)(r);if(L){if(n?.$$typeof===Symbol.for("react.lazy"))throw Object.defineProperty(Error("`<Link legacyBehavior>` received a direct child that is either a Server Component, or JSX that was loaded with React.lazy(). This is not supported. Either remove legacyBehavior, or make the direct child a Client Component that renders the Link's `<a>` tag."),"__NEXT_ERROR_CODE",{value:"E863",enumerable:!1,configurable:!0});s=o.default.Children.only(n)}let K=L?s&&"object"==typeof s&&s.ref:I,W=o.default.useCallback(e=>(null!==B&&(v.current=(0,x.mountLinkInstance)(e,F,B,D,q,j)),()=>{v.current&&((0,x.unmountLinkForCurrentNavigation)(v.current),v.current=null),(0,x.unmountPrefetchableInstance)(e)}),[q,F,B,D,j]),z={ref:(0,u.useMergedRef)(W,K),onClick(t){L||"function"!=typeof T||T(t),L&&s.props&&"function"==typeof s.props.onClick&&s.props.onClick(t),!B||t.defaultPrevented||function(t,r,l,n,s,a,i){if("u">typeof window){let c,{nodeName:u}=t.currentTarget;if("A"===u.toUpperCase()&&((c=t.currentTarget.getAttribute("target"))&&"_self"!==c||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.nativeEvent&&2===t.nativeEvent.which)||t.currentTarget.hasAttribute("download"))return;if(!(0,m.isLocalURL)(r)){n&&(t.preventDefault(),location.replace(r));return}if(t.preventDefault(),a){let e=!1;if(a({preventDefault:()=>{e=!0}}),e)return}let{dispatchNavigateAction:p}=e.r(99781);o.default.startTransition(()=>{p(r,n?"replace":"push",!1===s?f.ScrollBehavior.NoScroll:f.ScrollBehavior.Default,l.current,i)})}}(t,F,v,C,P,A,U)},onMouseEnter(e){L||"function"!=typeof R||R(e),L&&s.props&&"function"==typeof s.props.onMouseEnter&&s.props.onMouseEnter(e),B&&q&&(0,x.onNavigationIntent)(e.currentTarget,!0===M)},onTouchStart:function(e){L||"function"!=typeof O||O(e),L&&s.props&&"function"==typeof s.props.onTouchStart&&s.props.onTouchStart(e),B&&q&&(0,x.onNavigationIntent)(e.currentTarget,!0===M)}};return(0,p.isAbsoluteUrl)(F)?z.href=F:L&&!S&&("a"!==s.type||"href"in s.props)||(z.href=(0,d.addBasePath)(F)),g=L?o.default.cloneElement(s,z):(0,a.jsx)("a",{...$,...z,children:n}),(0,a.jsx)(b.Provider,{value:y,children:g})}e.r(84508);let b=(0,o.createContext)(x.IDLE_LINK_STATUS),y=()=>(0,o.useContext)(b);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},18566,(e,t,r)=>{t.exports=e.r(76562)},50667,36528,25010,60888,13121,e=>{"use strict";var t=e.i(43476),r=e.i(22016),l=e.i(18566),n=e.i(71645);let s={monorepo:{tier:"pro",label:"Monorepo support"},aggregate_scan:{tier:"pro",label:"Aggregate workspace scan"},cross_workspace_insights:{tier:"pro",label:"Cross-workspace insights"},llm_insights:{tier:"pro",label:"AI-powered insights"},custom_queries:{tier:"pro",label:"Custom GREEN queries"},cross_layer_context:{tier:"pro",label:"Cross-layer context"},auto_insights:{tier:"pro",label:"Auto-generated insights"},team_sync:{tier:"team",label:"Team sync"},ci_integration:{tier:"team",label:"CI integration"},forge_unlimited:{tier:"forge-pro",label:"forge0x2B unlimited"},forge_unlimited_generation:{tier:"forge-pro",label:"forge0x2B unlimited generation"}};function a(e){return"free"!==s[e].tier}e.s(["FREE_TIER_LOC_LIMIT",0,5e4,"showProBadge",0,a],36528);let o=()=>(0,t.jsx)("span",{className:"text-[10px] font-bold px-1 py-0.5 rounded leading-none",style:{background:"rgba(251,191,36,0.15)",color:"rgb(251,191,36)",border:"1px solid rgba(251,191,36,0.3)"},children:"PRO"});function i({monorepo:e,activeWorkspace:r,onSelect:l,isPro:s=!1}){let[c,u]=(0,n.useState)(!1),p=(0,n.useRef)(null);if((0,n.useEffect)(()=>{function e(e){p.current&&!p.current.contains(e.target)&&u(!1)}return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]),!e||"single"===e.type||0===e.packages.length)return null;let d=a("monorepo")&&!s;return(0,t.jsxs)("div",{className:"relative",ref:p,children:[(0,t.jsxs)("button",{onClick:()=>u(e=>!e),className:"flex items-center gap-1.5 px-2.5 py-1 rounded-full text-xs font-medium transition-colors",style:{background:c?"rgba(51,65,85,0.5)":"rgba(51,65,85,0.25)",border:"1px solid rgba(51,65,85,0.5)",color:"rgb(148,163,184)"},title:`Monorepo: ${e.type}`,children:[(0,t.jsx)("span",{className:"font-mono",style:{color:"rgb(52,211,153)",fontSize:10},children:e.type.toUpperCase()}),(0,t.jsx)("span",{className:"max-w-[80px] truncate",children:r??"all workspaces"}),d&&(0,t.jsx)(o,{}),(0,t.jsx)("svg",{width:"8",height:"8",viewBox:"0 0 8 8",fill:"currentColor",className:"opacity-60",children:(0,t.jsx)("path",{d:"M1 2.5l3 3 3-3",stroke:"currentColor",strokeWidth:"1.2",fill:"none",strokeLinecap:"round"})})]}),c&&(0,t.jsxs)("div",{className:"absolute top-full mt-1 right-0 z-50 rounded-xl overflow-hidden py-1 min-w-[180px]",style:{background:"rgba(15,23,42,0.95)",backdropFilter:"blur(20px)",border:"1px solid rgba(51,65,85,0.5)",boxShadow:"0 4px 24px rgba(0,0,0,0.4)"},children:[(0,t.jsxs)("button",{className:"w-full text-left px-3 py-2 text-xs flex items-center gap-2 transition-colors hover:bg-white/5",style:{color:null===r?"rgb(52,211,153)":"rgb(148,163,184)"},onClick:()=>{l(null),u(!1)},children:[(0,t.jsx)("span",{className:"font-mono text-[10px] opacity-60",children:"∑"}),"All workspaces",null===r&&(0,t.jsx)("span",{className:"ml-auto text-[10px] opacity-60",children:"✓"})]}),(0,t.jsx)("div",{className:"my-1",style:{borderTop:"1px solid rgba(51,65,85,0.3)"}}),e.packages.map(e=>(0,t.jsxs)("button",{className:"w-full text-left px-3 py-2 text-xs flex items-center gap-2 transition-colors hover:bg-white/5",style:{color:r===e.name?"rgb(52,211,153)":"rgb(148,163,184)"},onClick:()=>{l(e.name),u(!1)},children:[(0,t.jsx)("span",{className:"font-mono text-[10px] opacity-50",children:"pkg"}),(0,t.jsx)("span",{className:"flex-1 truncate",children:e.name}),void 0!==e.loc&&(0,t.jsxs)("span",{className:"text-[10px] font-mono opacity-40",children:[(e.loc/1e3).toFixed(1),"k"]}),r===e.name&&(0,t.jsx)("span",{className:"text-[10px] opacity-60",children:"✓"})]},e.path))]})]})}function c(){let[e,t]=(0,n.useState)(""),[r,l]=(0,n.useState)(!1);return(0,n.useEffect)(()=>{fetch("/api/config").then(e=>e.json()).then(e=>{let r=e.targetPath??"";t(r?`?target=${encodeURIComponent(r)}`:"")}).catch(()=>{}).finally(()=>l(!0))},[]),{tq:e,ready:r}}function u(e){let[t,r]=(0,n.useState)(null),[l,s]=(0,n.useState)(null),[a,o]=(0,n.useState)(!1);(0,n.useEffect)(()=>{Promise.all([fetch(`/api/monorepo${e}`).then(e=>e.json()).catch(()=>({monorepo:null})),fetch(`/api/monorepo/active${e}`).then(e=>e.json()).catch(()=>({workspace:null}))]).then(([e,t])=>{r(e.monorepo??null),s(t.workspace??null)}).finally(()=>o(!0))},[e]);let i=(0,n.useCallback)(async t=>{s(t),await fetch(`/api/monorepo/active${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({workspace:t})}).catch(()=>{})},[e]),c=l?`&workspace=${encodeURIComponent(l)}`:"";return{monorepo:t,activeWorkspace:l,setActiveWorkspace:i,ready:a,wq:c}}e.s(["useTargetPath",0,c],25010),e.s(["useActiveWorkspace",0,u],60888);let p={tier:"free",issuedAt:null,expiresAt:null,userId:null,features:[],isValid:!1,isExpired:!1,licenseKey:null,instanceId:null,productName:null,subscriptionStatus:null,validatedAt:null,revalidationDue:null,gracePeriodEnd:null,activationLimit:null,activationUsage:null,cacheStatus:"no-cache",daysSinceValidation:null};function d(e){let[t,r]=(0,n.useState)(null),[l,s]=(0,n.useState)(!1),[a,o]=(0,n.useState)(0);(0,n.useEffect)(()=>{fetch(`/api/license${e}`).then(e=>e.json()).then(e=>r(e)).catch(()=>r(p)).finally(()=>s(!0))},[e,a]);let i=(0,n.useCallback)(()=>o(e=>e+1),[]),c=!!t&&"free"!==t.tier&&"forge-pro"!==t.tier&&t.isValid&&!t.isExpired&&"expired"!==t.cacheStatus;return{license:t,ready:l,refresh:i,isPro:c}}e.s(["useLicense",0,d],13121);let f=[{href:"/blue",label:"BLUE",color:"rgb(59,130,246)"},{href:"/amber",label:"AMBER",color:"rgb(251,191,36)"},{href:"/green",label:"GREEN",color:"rgb(52,211,153)"},{href:"/pricing",label:"Plans",color:"rgb(167,139,250)"},{href:"/settings",label:"⚙",color:void 0}];e.s(["PrismDock",0,function(){let e=(0,l.usePathname)(),{tq:n}=c(),{monorepo:s,activeWorkspace:a,setActiveWorkspace:o}=u(n),{isPro:p}=d(n);return(0,t.jsxs)("div",{className:"fixed top-3 left-1/2 -translate-x-1/2 z-50 flex items-center gap-2 px-4 py-2 rounded-full",style:{background:"linear-gradient(to bottom, rgba(15,23,42,0.4), rgba(2,6,23,0.5))",backdropFilter:"blur(24px) saturate(1.5)",border:"1px solid rgba(51,65,85,0.3)",boxShadow:"0 1px 2px rgba(15,23,42,.06),0 4px 12px rgba(15,23,42,.12),0 16px 40px rgba(15,23,42,.18),inset 0 1px 0 rgba(255,255,255,.08),inset 0 -1px 0 rgba(15,23,42,.4)"},children:[(0,t.jsxs)(r.default,{href:"/",className:"flex items-center gap-1.5 group",children:[(0,t.jsx)("span",{className:"text-sky-400 text-lg select-none",children:"✦"}),(0,t.jsxs)("span",{className:"text-slate-200 text-sm font-semibold tracking-tight group-hover:text-white transition-colors",children:["prism",(0,t.jsx)("span",{className:"font-mono text-sky-500",children:"0x2A"})]})]}),f.map(({href:l,label:n,color:s})=>{let a=e.startsWith(l);return(0,t.jsxs)("span",{className:"flex items-center gap-2",children:[(0,t.jsx)("div",{className:"w-px h-4",style:{background:"rgba(51,65,85,0.6)"}}),(0,t.jsx)(r.default,{href:l,className:"text-sm font-medium transition-colors px-1",style:{color:a?s??"rgb(226,232,240)":"rgba(148,163,184,0.8)"},children:n})]},l)}),s&&"single"!==s.type&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"w-px h-4",style:{background:"rgba(51,65,85,0.6)"}}),(0,t.jsx)(i,{monorepo:s,activeWorkspace:a,onSelect:o,isPro:p})]})]})}],50667)},28102,e=>{"use strict";var t=e.i(43476),r=e.i(71645),l=e.i(22016),n=e.i(50667);let s="rgb(52,211,153)",a={background:"var(--surface-panel)",border:"1px solid var(--border-default)",boxShadow:"0 1px 2px rgba(15,23,42,.05),0 4px 16px rgba(15,23,42,.08),inset 0 1px 0 rgba(255,255,255,.04)"};e.s(["default",0,function(){let[e,o]=(0,r.useState)([]),[i,c]=(0,r.useState)(!0),[u,p]=(0,r.useState)(!1),[d,f]=(0,r.useState)(!1),[x,m]=(0,r.useState)({title:"",description:"",prompt_template:"",tags:""}),[h,g]=(0,r.useState)(null);async function b(){try{let e=await fetch("/api/green/queries"),t=await e.json();o(t.queries??[])}catch{}finally{c(!1)}}async function y(e){if(e.preventDefault(),!x.title.trim()||!x.description.trim()||!x.prompt_template.trim())return void g("All fields are required.");p(!0),g(null);try{let e=await fetch("/api/green/queries",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({title:x.title.trim(),description:x.description.trim(),prompt_template:x.prompt_template.trim(),tags:x.tags.split(",").map(e=>e.trim()).filter(Boolean)})}),t=await e.json();if(!e.ok)throw Error(t.error??"Failed to create");f(!1),m({title:"",description:"",prompt_template:"",tags:""}),await b()}catch(e){g(e instanceof Error?e.message:String(e))}finally{p(!1)}}(0,r.useEffect)(()=>{b()},[]);let j={background:"rgba(2,6,23,0.6)",border:"1px solid var(--border-default)"};return(0,t.jsxs)("div",{className:"flex flex-col min-h-screen",style:{background:"var(--bg-app)"},children:[(0,t.jsx)(n.PrismDock,{}),(0,t.jsxs)("main",{className:"flex-1 flex flex-col items-center px-6 pt-32 pb-16 gap-6",style:{maxWidth:720,margin:"0 auto",width:"100%"},children:[(0,t.jsxs)("div",{className:"w-full flex items-center justify-between",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(l.default,{href:"/green",className:"text-slate-500 hover:text-slate-300 text-sm transition-colors",children:"← GREEN"}),(0,t.jsx)("span",{className:"text-slate-700",children:"/"}),(0,t.jsx)("h1",{className:"text-xl font-semibold tracking-tight",style:{color:s},children:"Custom Queries"})]}),(0,t.jsxs)("p",{className:"text-xs text-slate-500 mt-0.5",children:[e.length," saved"]})]}),(0,t.jsx)("button",{onClick:()=>f(e=>!e),className:"px-4 py-2 rounded-lg text-sm font-semibold transition-all",style:{background:d?"rgba(52,211,153,0.1)":s,color:d?s:"#020617",border:d?`1px solid ${s}40`:"none"},children:d?"Cancel":"+ New Query"})]}),d&&(0,t.jsxs)("form",{onSubmit:y,className:"w-full rounded-xl p-6 flex flex-col gap-4",style:a,children:[(0,t.jsx)("h2",{className:"text-xs font-semibold uppercase tracking-widest",style:{color:s},children:"New Custom Query"}),h&&(0,t.jsx)("p",{className:"text-xs text-red-400 font-mono",children:h}),[{key:"title",label:"Title",placeholder:"e.g. Untested critical paths"},{key:"description",label:"Description",placeholder:"One-sentence description"}].map(({key:e,label:r,placeholder:l})=>(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsx)("label",{className:"text-xs text-slate-400",children:r}),(0,t.jsx)("input",{type:"text",value:x[e],onChange:t=>m(r=>({...r,[e]:t.target.value})),placeholder:l,className:"w-full rounded-lg px-3 py-2 text-sm font-mono text-slate-200 outline-none",style:j})]},e)),(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsx)("label",{className:"text-xs text-slate-400",children:"Prompt Template"}),(0,t.jsx)("textarea",{rows:3,value:x.prompt_template,onChange:e=>m(t=>({...t,prompt_template:e.target.value})),placeholder:"The cross-layer question to send to GREEN…",className:"w-full rounded-lg px-3 py-2 text-sm font-mono text-slate-200 outline-none resize-none",style:j})]}),(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsx)("label",{className:"text-xs text-slate-400",children:"Tags (comma-separated, optional)"}),(0,t.jsx)("input",{type:"text",value:x.tags,onChange:e=>m(t=>({...t,tags:e.target.value})),placeholder:"e.g. coverage, drift, architecture",className:"w-full rounded-lg px-3 py-2 text-sm font-mono text-slate-200 outline-none",style:j})]}),(0,t.jsx)("div",{className:"flex justify-end pt-1",children:(0,t.jsx)("button",{type:"submit",disabled:u,className:"px-4 py-2 rounded-lg text-sm font-semibold transition-all disabled:opacity-40",style:{background:s,color:"#020617"},children:u?"Creating…":"Create Query"})})]}),i&&(0,t.jsx)("div",{className:"w-full text-center py-16 text-slate-500 text-sm",children:"Loading…"}),!i&&0===e.length&&!d&&(0,t.jsxs)("div",{className:"w-full rounded-xl p-8 text-center flex flex-col items-center gap-3",style:a,children:[(0,t.jsx)("span",{className:"text-3xl",children:"🔍"}),(0,t.jsx)("p",{className:"text-slate-300 font-medium",children:"No custom queries yet"}),(0,t.jsx)("p",{className:"text-slate-500 text-sm",children:"Create a query to run cross-layer questions against your codebase."})]}),!i&&e.length>0&&(0,t.jsx)("div",{className:"w-full flex flex-col gap-3",children:e.map(e=>(0,t.jsxs)(l.default,{href:`/green/queries/${encodeURIComponent(e.id)}`,className:"w-full rounded-xl p-5 flex flex-col gap-2 transition-all hover:brightness-110 cursor-pointer",style:a,children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,t.jsx)("h3",{className:"text-sm font-semibold text-slate-200 flex-1",children:e.title}),e.tags?.length?(0,t.jsx)("div",{className:"flex gap-1 flex-shrink-0",children:e.tags.slice(0,2).map(e=>(0,t.jsx)("span",{className:"text-xs font-mono px-1.5 py-0.5 rounded",style:{background:"rgba(52,211,153,0.08)",color:s},children:e},e))}):null]}),(0,t.jsx)("p",{className:"text-xs text-slate-400 line-clamp-1",children:e.description}),void 0!==e.use_count&&(0,t.jsxs)("p",{className:"text-xs text-slate-600 font-mono",children:["Run ",e.use_count," time",1!==e.use_count?"s":""]})]},e.id))})]}),(0,t.jsxs)("footer",{className:"text-center py-4 text-xs text-slate-600",children:["prism",(0,t.jsx)("span",{className:"font-mono",children:"0x2A"})," v","0.7.2"," · GREEN / Queries"]})]})}])}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,95057,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var l={formatUrl:function(){return o},formatWithValidation:function(){return i},urlObjectKeys:function(){return c}};for(var s in l)Object.defineProperty(r,s,{enumerable:!0,get:l[s]});let n=e.r(90809)._(e.r(98183)),a=/https?|ftp|gopher|file/;function o(e){let{auth:t,hostname:r}=e,l=e.protocol||"",s=e.pathname||"",o=e.hash||"",c=e.query||"",i=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?i=t+e.host:r&&(i=t+(~r.indexOf(":")?`[${r}]`:r),e.port&&(i+=":"+e.port)),c&&"object"==typeof c&&(c=String(n.urlQueryToSearchParams(c)));let u=e.search||c&&`?${c}`||"";return l&&!l.endsWith(":")&&(l+=":"),e.slashes||(!l||a.test(l))&&!1!==i?(i="//"+(i||""),s&&"/"!==s[0]&&(s="/"+s)):i||(i=""),o&&"#"!==o[0]&&(o="#"+o),u&&"?"!==u[0]&&(u="?"+u),s=s.replace(/[?#]/g,encodeURIComponent),u=u.replace("#","%23"),`${l}${i}${s}${u}${o}`}let c=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function i(e){return o(e)}},18581,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useMergedRef",{enumerable:!0,get:function(){return s}});let l=e.r(71645);function s(e,t){let r=(0,l.useRef)(null),s=(0,l.useRef)(null);return(0,l.useCallback)(l=>{if(null===l){let e=r.current;e&&(r.current=null,e());let t=s.current;t&&(s.current=null,t())}else e&&(r.current=n(e,l)),t&&(s.current=n(t,l))},[e,t])}function n(e,t){if("function"!=typeof e)return e.current=t,()=>{e.current=null};{let r=e(t);return"function"==typeof r?r:()=>e(null)}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},73668,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isLocalURL",{enumerable:!0,get:function(){return n}});let l=e.r(18967),s=e.r(52817);function n(e){if(!(0,l.isAbsoluteUrl)(e))return!0;try{let t=(0,l.getLocationOrigin)(),r=new URL(e,t);return r.origin===t&&(0,s.hasBasePath)(r.pathname)}catch(e){return!1}}},84508,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"errorOnce",{enumerable:!0,get:function(){return l}});let l=e=>{}},22016,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var l={default:function(){return g},useLinkStatus:function(){return y}};for(var s in l)Object.defineProperty(r,s,{enumerable:!0,get:l[s]});let n=e.r(90809),a=e.r(43476),o=n._(e.r(71645)),c=e.r(95057),i=e.r(8372),u=e.r(18581),d=e.r(18967),p=e.r(5550);e.r(33525);let x=e.r(88540),f=e.r(91949),h=e.r(73668),m=e.r(9396);function g(t){var r,l;let s,n,g,[y,j]=(0,o.useOptimistic)(f.IDLE_LINK_STATUS),v=(0,o.useRef)(null),{href:N,as:k,children:_,prefetch:w=null,passHref:S,replace:C,shallow:E,scroll:P,onClick:O,onMouseEnter:R,onTouchStart:T,legacyBehavior:L=!1,onNavigate:I,transitionTypes:A,ref:M,unstable_dynamicOnHover:U,...$}=t;s=_,L&&("string"==typeof s||"number"==typeof s)&&(s=(0,a.jsx)("a",{children:s}));let B=o.default.useContext(i.AppRouterContext),F=!1!==w,D=!1!==w?null===(l=w)||"auto"===l?m.FetchStrategy.PPR:m.FetchStrategy.Full:m.FetchStrategy.PPR,K="string"==typeof(r=k||N)?r:(0,c.formatUrl)(r);if(L){if(s?.$$typeof===Symbol.for("react.lazy"))throw Object.defineProperty(Error("`<Link legacyBehavior>` received a direct child that is either a Server Component, or JSX that was loaded with React.lazy(). This is not supported. Either remove legacyBehavior, or make the direct child a Client Component that renders the Link's `<a>` tag."),"__NEXT_ERROR_CODE",{value:"E863",enumerable:!1,configurable:!0});n=o.default.Children.only(s)}let W=L?n&&"object"==typeof n&&n.ref:M,z=o.default.useCallback(e=>(null!==B&&(v.current=(0,f.mountLinkInstance)(e,K,B,D,F,j)),()=>{v.current&&((0,f.unmountLinkForCurrentNavigation)(v.current),v.current=null),(0,f.unmountPrefetchableInstance)(e)}),[F,K,B,D,j]),q={ref:(0,u.useMergedRef)(z,W),onClick(t){L||"function"!=typeof O||O(t),L&&n.props&&"function"==typeof n.props.onClick&&n.props.onClick(t),!B||t.defaultPrevented||function(t,r,l,s,n,a,c){if("u">typeof window){let i,{nodeName:u}=t.currentTarget;if("A"===u.toUpperCase()&&((i=t.currentTarget.getAttribute("target"))&&"_self"!==i||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.nativeEvent&&2===t.nativeEvent.which)||t.currentTarget.hasAttribute("download"))return;if(!(0,h.isLocalURL)(r)){s&&(t.preventDefault(),location.replace(r));return}if(t.preventDefault(),a){let e=!1;if(a({preventDefault:()=>{e=!0}}),e)return}let{dispatchNavigateAction:d}=e.r(99781);o.default.startTransition(()=>{d(r,s?"replace":"push",!1===n?x.ScrollBehavior.NoScroll:x.ScrollBehavior.Default,l.current,c)})}}(t,K,v,C,P,I,A)},onMouseEnter(e){L||"function"!=typeof R||R(e),L&&n.props&&"function"==typeof n.props.onMouseEnter&&n.props.onMouseEnter(e),B&&F&&(0,f.onNavigationIntent)(e.currentTarget,!0===U)},onTouchStart:function(e){L||"function"!=typeof T||T(e),L&&n.props&&"function"==typeof n.props.onTouchStart&&n.props.onTouchStart(e),B&&F&&(0,f.onNavigationIntent)(e.currentTarget,!0===U)}};return(0,d.isAbsoluteUrl)(K)?q.href=K:L&&!S&&("a"!==n.type||"href"in n.props)||(q.href=(0,p.addBasePath)(K)),g=L?o.default.cloneElement(n,q):(0,a.jsx)("a",{...$,...q,children:s}),(0,a.jsx)(b.Provider,{value:y,children:g})}e.r(84508);let b=(0,o.createContext)(f.IDLE_LINK_STATUS),y=()=>(0,o.useContext)(b);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},18566,(e,t,r)=>{t.exports=e.r(76562)},50667,36528,25010,60888,13121,e=>{"use strict";var t=e.i(43476),r=e.i(22016),l=e.i(18566),s=e.i(71645);let n={monorepo:{tier:"pro",label:"Monorepo support"},aggregate_scan:{tier:"pro",label:"Aggregate workspace scan"},cross_workspace_insights:{tier:"pro",label:"Cross-workspace insights"},llm_insights:{tier:"pro",label:"AI-powered insights"},custom_queries:{tier:"pro",label:"Custom GREEN queries"},cross_layer_context:{tier:"pro",label:"Cross-layer context"},auto_insights:{tier:"pro",label:"Auto-generated insights"},team_sync:{tier:"team",label:"Team sync"},ci_integration:{tier:"team",label:"CI integration"},forge_unlimited:{tier:"forge-pro",label:"forge0x2B unlimited"},forge_unlimited_generation:{tier:"forge-pro",label:"forge0x2B unlimited generation"}};function a(e){return"free"!==n[e].tier}e.s(["FREE_TIER_LOC_LIMIT",0,5e4,"showProBadge",0,a],36528);let o=()=>(0,t.jsx)("span",{className:"text-[10px] font-bold px-1 py-0.5 rounded leading-none",style:{background:"rgba(251,191,36,0.15)",color:"rgb(251,191,36)",border:"1px solid rgba(251,191,36,0.3)"},children:"PRO"});function c({monorepo:e,activeWorkspace:r,onSelect:l,isPro:n=!1}){let[i,u]=(0,s.useState)(!1),d=(0,s.useRef)(null);if((0,s.useEffect)(()=>{function e(e){d.current&&!d.current.contains(e.target)&&u(!1)}return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]),!e||"single"===e.type||0===e.packages.length)return null;let p=a("monorepo")&&!n;return(0,t.jsxs)("div",{className:"relative",ref:d,children:[(0,t.jsxs)("button",{onClick:()=>u(e=>!e),className:"flex items-center gap-1.5 px-2.5 py-1 rounded-full text-xs font-medium transition-colors",style:{background:i?"rgba(51,65,85,0.5)":"rgba(51,65,85,0.25)",border:"1px solid rgba(51,65,85,0.5)",color:"rgb(148,163,184)"},title:`Monorepo: ${e.type}`,children:[(0,t.jsx)("span",{className:"font-mono",style:{color:"rgb(52,211,153)",fontSize:10},children:e.type.toUpperCase()}),(0,t.jsx)("span",{className:"max-w-[80px] truncate",children:r??"all workspaces"}),p&&(0,t.jsx)(o,{}),(0,t.jsx)("svg",{width:"8",height:"8",viewBox:"0 0 8 8",fill:"currentColor",className:"opacity-60",children:(0,t.jsx)("path",{d:"M1 2.5l3 3 3-3",stroke:"currentColor",strokeWidth:"1.2",fill:"none",strokeLinecap:"round"})})]}),i&&(0,t.jsxs)("div",{className:"absolute top-full mt-1 right-0 z-50 rounded-xl overflow-hidden py-1 min-w-[180px]",style:{background:"rgba(15,23,42,0.95)",backdropFilter:"blur(20px)",border:"1px solid rgba(51,65,85,0.5)",boxShadow:"0 4px 24px rgba(0,0,0,0.4)"},children:[(0,t.jsxs)("button",{className:"w-full text-left px-3 py-2 text-xs flex items-center gap-2 transition-colors hover:bg-white/5",style:{color:null===r?"rgb(52,211,153)":"rgb(148,163,184)"},onClick:()=>{l(null),u(!1)},children:[(0,t.jsx)("span",{className:"font-mono text-[10px] opacity-60",children:"∑"}),"All workspaces",null===r&&(0,t.jsx)("span",{className:"ml-auto text-[10px] opacity-60",children:"✓"})]}),(0,t.jsx)("div",{className:"my-1",style:{borderTop:"1px solid rgba(51,65,85,0.3)"}}),e.packages.map(e=>(0,t.jsxs)("button",{className:"w-full text-left px-3 py-2 text-xs flex items-center gap-2 transition-colors hover:bg-white/5",style:{color:r===e.name?"rgb(52,211,153)":"rgb(148,163,184)"},onClick:()=>{l(e.name),u(!1)},children:[(0,t.jsx)("span",{className:"font-mono text-[10px] opacity-50",children:"pkg"}),(0,t.jsx)("span",{className:"flex-1 truncate",children:e.name}),void 0!==e.loc&&(0,t.jsxs)("span",{className:"text-[10px] font-mono opacity-40",children:[(e.loc/1e3).toFixed(1),"k"]}),r===e.name&&(0,t.jsx)("span",{className:"text-[10px] opacity-60",children:"✓"})]},e.path))]})]})}function i(){let[e,t]=(0,s.useState)(""),[r,l]=(0,s.useState)(!1);return(0,s.useEffect)(()=>{fetch("/api/config").then(e=>e.json()).then(e=>{let r=e.targetPath??"";t(r?`?target=${encodeURIComponent(r)}`:"")}).catch(()=>{}).finally(()=>l(!0))},[]),{tq:e,ready:r}}function u(e){let[t,r]=(0,s.useState)(null),[l,n]=(0,s.useState)(null),[a,o]=(0,s.useState)(!1);(0,s.useEffect)(()=>{Promise.all([fetch(`/api/monorepo${e}`).then(e=>e.json()).catch(()=>({monorepo:null})),fetch(`/api/monorepo/active${e}`).then(e=>e.json()).catch(()=>({workspace:null}))]).then(([e,t])=>{r(e.monorepo??null),n(t.workspace??null)}).finally(()=>o(!0))},[e]);let c=(0,s.useCallback)(async t=>{n(t),await fetch(`/api/monorepo/active${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({workspace:t})}).catch(()=>{})},[e]),i=l?`&workspace=${encodeURIComponent(l)}`:"";return{monorepo:t,activeWorkspace:l,setActiveWorkspace:c,ready:a,wq:i}}e.s(["useTargetPath",0,i],25010),e.s(["useActiveWorkspace",0,u],60888);let d={tier:"free",issuedAt:null,expiresAt:null,userId:null,features:[],isValid:!1,isExpired:!1,licenseKey:null,instanceId:null,productName:null,subscriptionStatus:null,validatedAt:null,revalidationDue:null,gracePeriodEnd:null,activationLimit:null,activationUsage:null,cacheStatus:"no-cache",daysSinceValidation:null};function p(e){let[t,r]=(0,s.useState)(null),[l,n]=(0,s.useState)(!1),[a,o]=(0,s.useState)(0);(0,s.useEffect)(()=>{fetch(`/api/license${e}`).then(e=>e.json()).then(e=>r(e)).catch(()=>r(d)).finally(()=>n(!0))},[e,a]);let c=(0,s.useCallback)(()=>o(e=>e+1),[]),i=!!t&&"free"!==t.tier&&"forge-pro"!==t.tier&&t.isValid&&!t.isExpired&&"expired"!==t.cacheStatus;return{license:t,ready:l,refresh:c,isPro:i}}e.s(["useLicense",0,p],13121);let x=[{href:"/blue",label:"BLUE",color:"rgb(59,130,246)"},{href:"/amber",label:"AMBER",color:"rgb(251,191,36)"},{href:"/green",label:"GREEN",color:"rgb(52,211,153)"},{href:"/pricing",label:"Plans",color:"rgb(167,139,250)"},{href:"/settings",label:"⚙",color:void 0}];e.s(["PrismDock",0,function(){let e=(0,l.usePathname)(),{tq:s}=i(),{monorepo:n,activeWorkspace:a,setActiveWorkspace:o}=u(s),{isPro:d}=p(s);return(0,t.jsxs)("div",{className:"fixed top-3 left-1/2 -translate-x-1/2 z-50 flex items-center gap-2 px-4 py-2 rounded-full",style:{background:"linear-gradient(to bottom, rgba(15,23,42,0.4), rgba(2,6,23,0.5))",backdropFilter:"blur(24px) saturate(1.5)",border:"1px solid rgba(51,65,85,0.3)",boxShadow:"0 1px 2px rgba(15,23,42,.06),0 4px 12px rgba(15,23,42,.12),0 16px 40px rgba(15,23,42,.18),inset 0 1px 0 rgba(255,255,255,.08),inset 0 -1px 0 rgba(15,23,42,.4)"},children:[(0,t.jsxs)(r.default,{href:"/",className:"flex items-center gap-1.5 group",children:[(0,t.jsx)("span",{className:"text-sky-400 text-lg select-none",children:"✦"}),(0,t.jsxs)("span",{className:"text-slate-200 text-sm font-semibold tracking-tight group-hover:text-white transition-colors",children:["prism",(0,t.jsx)("span",{className:"font-mono text-sky-500",children:"0x2A"})]})]}),x.map(({href:l,label:s,color:n})=>{let a=e.startsWith(l);return(0,t.jsxs)("span",{className:"flex items-center gap-2",children:[(0,t.jsx)("div",{className:"w-px h-4",style:{background:"rgba(51,65,85,0.6)"}}),(0,t.jsx)(r.default,{href:l,className:"text-sm font-medium transition-colors px-1",style:{color:a?n??"rgb(226,232,240)":"rgba(148,163,184,0.8)"},children:s})]},l)}),n&&"single"!==n.type&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"w-px h-4",style:{background:"rgba(51,65,85,0.6)"}}),(0,t.jsx)(c,{monorepo:n,activeWorkspace:a,onSelect:o,isPro:d})]})]})}],50667)},53272,e=>{"use strict";var t=e.i(43476),r=e.i(71645),l=e.i(22016),s=e.i(50667),n=e.i(25010),a=e.i(60888),o=e.i(36528);let c={background:"var(--surface-panel)",border:"1px solid var(--border-default)",boxShadow:"0 1px 2px rgba(15,23,42,.05),0 4px 16px rgba(15,23,42,.08),inset 0 1px 0 rgba(255,255,255,.04)"},i={background:"rgba(15,23,42,0.5)",border:"1px solid rgba(51,65,85,0.4)"};function u({label:e,value:r,accent:l}){return(0,t.jsxs)("div",{className:"rounded-lg px-4 py-3 flex flex-col gap-0.5",style:i,children:[(0,t.jsx)("span",{className:"text-xs text-slate-500 uppercase tracking-widest",children:e}),(0,t.jsx)("span",{className:"text-xl font-semibold font-mono",style:{color:l??"rgb(226,232,240)"},children:r})]})}e.s(["default",0,function(){let{tq:e,ready:d}=(0,n.useTargetPath)(),{wq:p}=(0,a.useActiveWorkspace)(e),[x,f]=(0,r.useState)(null),[h,m]=(0,r.useState)(!1),[g,b]=(0,r.useState)(null);async function y(){m(!0),b(null);try{let t=await fetch(`/api/blue/scan${e}${p}`,{method:"POST"}),r=await t.json();if(!t.ok)throw Error(r.error??"Scan failed");f(r.scan)}catch(e){b(e instanceof Error?e.message:String(e))}finally{m(!1)}}return(0,r.useEffect)(()=>{d&&fetch(`/api/blue/scan${e}${p}`).then(e=>e.json()).then(({scan:e})=>f(e??null)).catch(()=>{})},[d,p]),(0,t.jsxs)("div",{className:"flex flex-col min-h-screen",style:{background:"var(--bg-app)"},children:[(0,t.jsx)(s.PrismDock,{}),(0,t.jsxs)("main",{className:"flex-1 flex flex-col items-center px-6 pt-32 pb-16 gap-6",style:{maxWidth:720,margin:"0 auto",width:"100%"},children:[(0,t.jsxs)("div",{className:"w-full flex items-center justify-between",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("h1",{className:"text-xl font-semibold text-slate-100 tracking-tight",children:[(0,t.jsx)("span",{className:"font-mono text-blue-400",children:"BLUE"}),(0,t.jsx)("span",{className:"text-slate-400 text-sm font-normal ml-2",children:"Architecture Intelligence"})]}),x&&(0,t.jsxs)("p",{className:"text-xs text-slate-500 mt-0.5 font-mono",children:["Last scan: ",new Date(x.created_at).toLocaleString()," · ",x.target]})]}),(0,t.jsx)("button",{onClick:y,disabled:h,className:"px-4 py-2 rounded-lg text-sm font-semibold transition-all disabled:opacity-50",style:{background:"rgb(59,130,246)",color:"#fff"},children:h?"Scanning…":x?"Re-scan":"Run scan"})]}),x?.loc_over_limit&&(0,t.jsxs)("div",{className:"w-full rounded-xl px-5 py-4 flex items-center justify-between gap-4",style:{background:"rgba(251,191,36,0.08)",border:"1px solid rgba(251,191,36,0.2)"},children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("p",{className:"text-sm font-semibold text-amber-400",children:[x.loc?.toLocaleString()," LOC in this project"]}),(0,t.jsxs)("p",{className:"text-xs text-slate-500 mt-0.5",children:["Free tier covers ",o.FREE_TIER_LOC_LIMIT.toLocaleString()," LOC. Partial analysis only."]})]}),(0,t.jsx)("span",{className:"text-xs font-bold px-2 py-1 rounded-full flex-shrink-0",style:{background:"rgba(251,191,36,0.15)",color:"rgb(251,191,36)",border:"1px solid rgba(251,191,36,0.3)"},children:"PRO"})]}),g&&(0,t.jsx)("div",{className:"w-full rounded-lg px-4 py-3 text-sm text-red-400 font-mono",style:{background:"rgba(239,68,68,0.08)",border:"1px solid rgba(239,68,68,0.2)"},children:g}),!x&&!h&&(0,t.jsxs)("div",{className:"w-full rounded-xl p-8 text-center flex flex-col items-center gap-3",style:c,children:[(0,t.jsx)("span",{className:"text-4xl",children:"🔵"}),(0,t.jsx)("p",{className:"text-slate-300 font-medium",children:"No scan yet"}),(0,t.jsx)("p",{className:"text-slate-500 text-sm",children:"Run your first scan to see import cycles, churn hotspots, and TODOs."})]}),x&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"w-full grid grid-cols-3 gap-3",children:[(0,t.jsx)(u,{label:"Files",value:x.file_count}),(0,t.jsx)(u,{label:"Cycles",value:x.cycle_count,accent:x.cycle_count>0?"rgb(248,113,113)":"rgb(52,211,153)"}),(0,t.jsx)(u,{label:"TODOs",value:x.todos.length,accent:"rgb(251,191,36)"})]}),x.cycle_count>0&&(0,t.jsxs)("div",{className:"w-full rounded-xl p-5 flex flex-col gap-3",style:c,children:[(0,t.jsxs)("h2",{className:"text-xs font-semibold text-slate-400 uppercase tracking-widest",children:["Import Cycles (",x.cycle_count,")"]}),(0,t.jsx)("div",{className:"flex flex-col gap-2",children:x.cycle_groups.slice(0,5).map(e=>(0,t.jsxs)("div",{className:"rounded-lg px-3 py-2",style:i,children:[(0,t.jsx)("div",{className:"flex items-center gap-2 mb-1",children:(0,t.jsxs)("span",{className:"text-xs font-mono text-red-400",children:[e.size," files"]})}),e.paths.slice(0,3).map(e=>(0,t.jsx)("p",{className:"text-xs font-mono text-slate-400 truncate",children:e},e)),e.paths.length>3&&(0,t.jsxs)("p",{className:"text-xs text-slate-600",children:["+",e.paths.length-3," more"]})]},e.id))})]}),x.top_churned_files.length>0&&(0,t.jsxs)("div",{className:"w-full rounded-xl p-5 flex flex-col gap-3",style:c,children:[(0,t.jsx)("h2",{className:"text-xs font-semibold text-slate-400 uppercase tracking-widest",children:"High-Churn Files (90d)"}),(0,t.jsx)("div",{className:"flex flex-col gap-1",children:x.top_churned_files.slice(0,8).map(e=>(0,t.jsxs)("div",{className:"flex items-center justify-between py-1 border-b",style:{borderColor:"rgba(51,65,85,0.3)"},children:[(0,t.jsx)("span",{className:"text-xs font-mono text-slate-400 truncate flex-1",children:e.path}),(0,t.jsxs)("span",{className:"text-xs font-mono text-amber-400 ml-3 flex-shrink-0",children:[e.count_90d,"c"]})]},e.path))})]}),x.todos.length>0&&(0,t.jsxs)("div",{className:"w-full rounded-xl p-5 flex flex-col gap-3",style:c,children:[(0,t.jsxs)("h2",{className:"text-xs font-semibold text-slate-400 uppercase tracking-widest",children:["TODOs / FIXMEs (",x.todos.length,")"]}),(0,t.jsx)("div",{className:"flex flex-col gap-1",children:x.todos.slice(0,6).map((e,r)=>(0,t.jsxs)("div",{className:"py-1 border-b",style:{borderColor:"rgba(51,65,85,0.3)"},children:[(0,t.jsx)("p",{className:"text-xs font-mono text-amber-300 truncate",children:e.text}),(0,t.jsx)("p",{className:"text-xs text-slate-600 truncate",children:e.path})]},r))})]}),(0,t.jsx)("div",{className:"w-full grid grid-cols-2 gap-3",children:[{href:"/blue/recommendations",label:"Recommendations",icon:"💡",color:"rgb(59,130,246)"},{href:"/blue/sessions",label:"Sessions",icon:"💬",color:"rgb(99,102,241)"}].map(({href:e,label:r,icon:s,color:n})=>(0,t.jsxs)(l.default,{href:e,className:"rounded-xl p-5 flex items-center gap-3 transition-all hover:brightness-110",style:{...c,borderColor:n+"40"},children:[(0,t.jsx)("span",{className:"text-2xl",children:s}),(0,t.jsx)("span",{className:"text-sm font-semibold",style:{color:n},children:r})]},e))})]})]}),(0,t.jsxs)("footer",{className:"text-center py-4 text-xs text-slate-600",children:["prism",(0,t.jsx)("span",{className:"font-mono",children:"0x2A"})," v","0.7.2"," · BLUE"]})]})}])}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,95057,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={formatUrl:function(){return o},formatWithValidation:function(){return c},urlObjectKeys:function(){return i}};for(var l in n)Object.defineProperty(r,l,{enumerable:!0,get:n[l]});let s=e.r(90809)._(e.r(98183)),a=/https?|ftp|gopher|file/;function o(e){let{auth:t,hostname:r}=e,n=e.protocol||"",l=e.pathname||"",o=e.hash||"",i=e.query||"",c=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?c=t+e.host:r&&(c=t+(~r.indexOf(":")?`[${r}]`:r),e.port&&(c+=":"+e.port)),i&&"object"==typeof i&&(i=String(s.urlQueryToSearchParams(i)));let u=e.search||i&&`?${i}`||"";return n&&!n.endsWith(":")&&(n+=":"),e.slashes||(!n||a.test(n))&&!1!==c?(c="//"+(c||""),l&&"/"!==l[0]&&(l="/"+l)):c||(c=""),o&&"#"!==o[0]&&(o="#"+o),u&&"?"!==u[0]&&(u="?"+u),l=l.replace(/[?#]/g,encodeURIComponent),u=u.replace("#","%23"),`${n}${c}${l}${u}${o}`}let i=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function c(e){return o(e)}},18581,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useMergedRef",{enumerable:!0,get:function(){return l}});let n=e.r(71645);function l(e,t){let r=(0,n.useRef)(null),l=(0,n.useRef)(null);return(0,n.useCallback)(n=>{if(null===n){let e=r.current;e&&(r.current=null,e());let t=l.current;t&&(l.current=null,t())}else e&&(r.current=s(e,n)),t&&(l.current=s(t,n))},[e,t])}function s(e,t){if("function"!=typeof e)return e.current=t,()=>{e.current=null};{let r=e(t);return"function"==typeof r?r:()=>e(null)}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},73668,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isLocalURL",{enumerable:!0,get:function(){return s}});let n=e.r(18967),l=e.r(52817);function s(e){if(!(0,n.isAbsoluteUrl)(e))return!0;try{let t=(0,n.getLocationOrigin)(),r=new URL(e,t);return r.origin===t&&(0,l.hasBasePath)(r.pathname)}catch(e){return!1}}},84508,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"errorOnce",{enumerable:!0,get:function(){return n}});let n=e=>{}},22016,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={default:function(){return m},useLinkStatus:function(){return y}};for(var l in n)Object.defineProperty(r,l,{enumerable:!0,get:n[l]});let s=e.r(90809),a=e.r(43476),o=s._(e.r(71645)),i=e.r(95057),c=e.r(8372),u=e.r(18581),d=e.r(18967),p=e.r(5550);e.r(33525);let f=e.r(88540),x=e.r(91949),h=e.r(73668),g=e.r(9396);function m(t){var r,n;let l,s,m,[y,j]=(0,o.useOptimistic)(x.IDLE_LINK_STATUS),v=(0,o.useRef)(null),{href:N,as:k,children:_,prefetch:w=null,passHref:C,replace:S,shallow:P,scroll:E,onClick:R,onMouseEnter:T,onTouchStart:O,legacyBehavior:I=!1,onNavigate:L,transitionTypes:A,ref:U,unstable_dynamicOnHover:M,...$}=t;l=_,I&&("string"==typeof l||"number"==typeof l)&&(l=(0,a.jsx)("a",{children:l}));let B=o.default.useContext(c.AppRouterContext),D=!1!==w,F=!1!==w?null===(n=w)||"auto"===n?g.FetchStrategy.PPR:g.FetchStrategy.Full:g.FetchStrategy.PPR,K="string"==typeof(r=k||N)?r:(0,i.formatUrl)(r);if(I){if(l?.$$typeof===Symbol.for("react.lazy"))throw Object.defineProperty(Error("`<Link legacyBehavior>` received a direct child that is either a Server Component, or JSX that was loaded with React.lazy(). This is not supported. Either remove legacyBehavior, or make the direct child a Client Component that renders the Link's `<a>` tag."),"__NEXT_ERROR_CODE",{value:"E863",enumerable:!1,configurable:!0});s=o.default.Children.only(l)}let W=I?s&&"object"==typeof s&&s.ref:U,z=o.default.useCallback(e=>(null!==B&&(v.current=(0,x.mountLinkInstance)(e,K,B,F,D,j)),()=>{v.current&&((0,x.unmountLinkForCurrentNavigation)(v.current),v.current=null),(0,x.unmountPrefetchableInstance)(e)}),[D,K,B,F,j]),G={ref:(0,u.useMergedRef)(z,W),onClick(t){I||"function"!=typeof R||R(t),I&&s.props&&"function"==typeof s.props.onClick&&s.props.onClick(t),!B||t.defaultPrevented||function(t,r,n,l,s,a,i){if("u">typeof window){let c,{nodeName:u}=t.currentTarget;if("A"===u.toUpperCase()&&((c=t.currentTarget.getAttribute("target"))&&"_self"!==c||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.nativeEvent&&2===t.nativeEvent.which)||t.currentTarget.hasAttribute("download"))return;if(!(0,h.isLocalURL)(r)){l&&(t.preventDefault(),location.replace(r));return}if(t.preventDefault(),a){let e=!1;if(a({preventDefault:()=>{e=!0}}),e)return}let{dispatchNavigateAction:d}=e.r(99781);o.default.startTransition(()=>{d(r,l?"replace":"push",!1===s?f.ScrollBehavior.NoScroll:f.ScrollBehavior.Default,n.current,i)})}}(t,K,v,S,E,L,A)},onMouseEnter(e){I||"function"!=typeof T||T(e),I&&s.props&&"function"==typeof s.props.onMouseEnter&&s.props.onMouseEnter(e),B&&D&&(0,x.onNavigationIntent)(e.currentTarget,!0===M)},onTouchStart:function(e){I||"function"!=typeof O||O(e),I&&s.props&&"function"==typeof s.props.onTouchStart&&s.props.onTouchStart(e),B&&D&&(0,x.onNavigationIntent)(e.currentTarget,!0===M)}};return(0,d.isAbsoluteUrl)(K)?G.href=K:I&&!C&&("a"!==s.type||"href"in s.props)||(G.href=(0,p.addBasePath)(K)),m=I?o.default.cloneElement(s,G):(0,a.jsx)("a",{...$,...G,children:l}),(0,a.jsx)(b.Provider,{value:y,children:m})}e.r(84508);let b=(0,o.createContext)(x.IDLE_LINK_STATUS),y=()=>(0,o.useContext)(b);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},18566,(e,t,r)=>{t.exports=e.r(76562)},50667,36528,25010,60888,13121,e=>{"use strict";var t=e.i(43476),r=e.i(22016),n=e.i(18566),l=e.i(71645);let s={monorepo:{tier:"pro",label:"Monorepo support"},aggregate_scan:{tier:"pro",label:"Aggregate workspace scan"},cross_workspace_insights:{tier:"pro",label:"Cross-workspace insights"},llm_insights:{tier:"pro",label:"AI-powered insights"},custom_queries:{tier:"pro",label:"Custom GREEN queries"},cross_layer_context:{tier:"pro",label:"Cross-layer context"},auto_insights:{tier:"pro",label:"Auto-generated insights"},team_sync:{tier:"team",label:"Team sync"},ci_integration:{tier:"team",label:"CI integration"},forge_unlimited:{tier:"forge-pro",label:"forge0x2B unlimited"},forge_unlimited_generation:{tier:"forge-pro",label:"forge0x2B unlimited generation"}};function a(e){return"free"!==s[e].tier}e.s(["FREE_TIER_LOC_LIMIT",0,5e4,"showProBadge",0,a],36528);let o=()=>(0,t.jsx)("span",{className:"text-[10px] font-bold px-1 py-0.5 rounded leading-none",style:{background:"rgba(251,191,36,0.15)",color:"rgb(251,191,36)",border:"1px solid rgba(251,191,36,0.3)"},children:"PRO"});function i({monorepo:e,activeWorkspace:r,onSelect:n,isPro:s=!1}){let[c,u]=(0,l.useState)(!1),d=(0,l.useRef)(null);if((0,l.useEffect)(()=>{function e(e){d.current&&!d.current.contains(e.target)&&u(!1)}return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]),!e||"single"===e.type||0===e.packages.length)return null;let p=a("monorepo")&&!s;return(0,t.jsxs)("div",{className:"relative",ref:d,children:[(0,t.jsxs)("button",{onClick:()=>u(e=>!e),className:"flex items-center gap-1.5 px-2.5 py-1 rounded-full text-xs font-medium transition-colors",style:{background:c?"rgba(51,65,85,0.5)":"rgba(51,65,85,0.25)",border:"1px solid rgba(51,65,85,0.5)",color:"rgb(148,163,184)"},title:`Monorepo: ${e.type}`,children:[(0,t.jsx)("span",{className:"font-mono",style:{color:"rgb(52,211,153)",fontSize:10},children:e.type.toUpperCase()}),(0,t.jsx)("span",{className:"max-w-[80px] truncate",children:r??"all workspaces"}),p&&(0,t.jsx)(o,{}),(0,t.jsx)("svg",{width:"8",height:"8",viewBox:"0 0 8 8",fill:"currentColor",className:"opacity-60",children:(0,t.jsx)("path",{d:"M1 2.5l3 3 3-3",stroke:"currentColor",strokeWidth:"1.2",fill:"none",strokeLinecap:"round"})})]}),c&&(0,t.jsxs)("div",{className:"absolute top-full mt-1 right-0 z-50 rounded-xl overflow-hidden py-1 min-w-[180px]",style:{background:"rgba(15,23,42,0.95)",backdropFilter:"blur(20px)",border:"1px solid rgba(51,65,85,0.5)",boxShadow:"0 4px 24px rgba(0,0,0,0.4)"},children:[(0,t.jsxs)("button",{className:"w-full text-left px-3 py-2 text-xs flex items-center gap-2 transition-colors hover:bg-white/5",style:{color:null===r?"rgb(52,211,153)":"rgb(148,163,184)"},onClick:()=>{n(null),u(!1)},children:[(0,t.jsx)("span",{className:"font-mono text-[10px] opacity-60",children:"∑"}),"All workspaces",null===r&&(0,t.jsx)("span",{className:"ml-auto text-[10px] opacity-60",children:"✓"})]}),(0,t.jsx)("div",{className:"my-1",style:{borderTop:"1px solid rgba(51,65,85,0.3)"}}),e.packages.map(e=>(0,t.jsxs)("button",{className:"w-full text-left px-3 py-2 text-xs flex items-center gap-2 transition-colors hover:bg-white/5",style:{color:r===e.name?"rgb(52,211,153)":"rgb(148,163,184)"},onClick:()=>{n(e.name),u(!1)},children:[(0,t.jsx)("span",{className:"font-mono text-[10px] opacity-50",children:"pkg"}),(0,t.jsx)("span",{className:"flex-1 truncate",children:e.name}),void 0!==e.loc&&(0,t.jsxs)("span",{className:"text-[10px] font-mono opacity-40",children:[(e.loc/1e3).toFixed(1),"k"]}),r===e.name&&(0,t.jsx)("span",{className:"text-[10px] opacity-60",children:"✓"})]},e.path))]})]})}function c(){let[e,t]=(0,l.useState)(""),[r,n]=(0,l.useState)(!1);return(0,l.useEffect)(()=>{fetch("/api/config").then(e=>e.json()).then(e=>{let r=e.targetPath??"";t(r?`?target=${encodeURIComponent(r)}`:"")}).catch(()=>{}).finally(()=>n(!0))},[]),{tq:e,ready:r}}function u(e){let[t,r]=(0,l.useState)(null),[n,s]=(0,l.useState)(null),[a,o]=(0,l.useState)(!1);(0,l.useEffect)(()=>{Promise.all([fetch(`/api/monorepo${e}`).then(e=>e.json()).catch(()=>({monorepo:null})),fetch(`/api/monorepo/active${e}`).then(e=>e.json()).catch(()=>({workspace:null}))]).then(([e,t])=>{r(e.monorepo??null),s(t.workspace??null)}).finally(()=>o(!0))},[e]);let i=(0,l.useCallback)(async t=>{s(t),await fetch(`/api/monorepo/active${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({workspace:t})}).catch(()=>{})},[e]),c=n?`&workspace=${encodeURIComponent(n)}`:"";return{monorepo:t,activeWorkspace:n,setActiveWorkspace:i,ready:a,wq:c}}e.s(["useTargetPath",0,c],25010),e.s(["useActiveWorkspace",0,u],60888);let d={tier:"free",issuedAt:null,expiresAt:null,userId:null,features:[],isValid:!1,isExpired:!1,licenseKey:null,instanceId:null,productName:null,subscriptionStatus:null,validatedAt:null,revalidationDue:null,gracePeriodEnd:null,activationLimit:null,activationUsage:null,cacheStatus:"no-cache",daysSinceValidation:null};function p(e){let[t,r]=(0,l.useState)(null),[n,s]=(0,l.useState)(!1),[a,o]=(0,l.useState)(0);(0,l.useEffect)(()=>{fetch(`/api/license${e}`).then(e=>e.json()).then(e=>r(e)).catch(()=>r(d)).finally(()=>s(!0))},[e,a]);let i=(0,l.useCallback)(()=>o(e=>e+1),[]),c=!!t&&"free"!==t.tier&&"forge-pro"!==t.tier&&t.isValid&&!t.isExpired&&"expired"!==t.cacheStatus;return{license:t,ready:n,refresh:i,isPro:c}}e.s(["useLicense",0,p],13121);let f=[{href:"/blue",label:"BLUE",color:"rgb(59,130,246)"},{href:"/amber",label:"AMBER",color:"rgb(251,191,36)"},{href:"/green",label:"GREEN",color:"rgb(52,211,153)"},{href:"/pricing",label:"Plans",color:"rgb(167,139,250)"},{href:"/settings",label:"⚙",color:void 0}];e.s(["PrismDock",0,function(){let e=(0,n.usePathname)(),{tq:l}=c(),{monorepo:s,activeWorkspace:a,setActiveWorkspace:o}=u(l),{isPro:d}=p(l);return(0,t.jsxs)("div",{className:"fixed top-3 left-1/2 -translate-x-1/2 z-50 flex items-center gap-2 px-4 py-2 rounded-full",style:{background:"linear-gradient(to bottom, rgba(15,23,42,0.4), rgba(2,6,23,0.5))",backdropFilter:"blur(24px) saturate(1.5)",border:"1px solid rgba(51,65,85,0.3)",boxShadow:"0 1px 2px rgba(15,23,42,.06),0 4px 12px rgba(15,23,42,.12),0 16px 40px rgba(15,23,42,.18),inset 0 1px 0 rgba(255,255,255,.08),inset 0 -1px 0 rgba(15,23,42,.4)"},children:[(0,t.jsxs)(r.default,{href:"/",className:"flex items-center gap-1.5 group",children:[(0,t.jsx)("span",{className:"text-sky-400 text-lg select-none",children:"✦"}),(0,t.jsxs)("span",{className:"text-slate-200 text-sm font-semibold tracking-tight group-hover:text-white transition-colors",children:["prism",(0,t.jsx)("span",{className:"font-mono text-sky-500",children:"0x2A"})]})]}),f.map(({href:n,label:l,color:s})=>{let a=e.startsWith(n);return(0,t.jsxs)("span",{className:"flex items-center gap-2",children:[(0,t.jsx)("div",{className:"w-px h-4",style:{background:"rgba(51,65,85,0.6)"}}),(0,t.jsx)(r.default,{href:n,className:"text-sm font-medium transition-colors px-1",style:{color:a?s??"rgb(226,232,240)":"rgba(148,163,184,0.8)"},children:l})]},n)}),s&&"single"!==s.type&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"w-px h-4",style:{background:"rgba(51,65,85,0.6)"}}),(0,t.jsx)(i,{monorepo:s,activeWorkspace:a,onSelect:o,isPro:d})]})]})}],50667)},83329,e=>{"use strict";var t=e.i(43476),r=e.i(71645),n=e.i(22016),l=e.i(50667);let s="rgb(52,211,153)",a={background:"var(--surface-panel)",border:"1px solid var(--border-default)",boxShadow:"0 1px 2px rgba(15,23,42,.05),0 4px 16px rgba(15,23,42,.08),inset 0 1px 0 rgba(255,255,255,.04)"},o={pending:"rgb(148,163,184)",accepted:s,rejected:"rgb(248,113,113)"};function i({label:e,children:r}){return(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsx)("span",{className:"text-xs font-semibold text-slate-500 uppercase tracking-widest",children:e}),(0,t.jsx)("div",{className:"text-sm text-slate-300 leading-relaxed",children:r})]})}e.s(["default",0,function({params:e}){let{id:c}=(0,r.use)(e),u=decodeURIComponent(c),[d,p]=(0,r.useState)(null),[f,x]=(0,r.useState)(!0),[h,g]=(0,r.useState)(!1),[m,b]=(0,r.useState)(!1);async function y(e){if(d){b(!0);try{(await fetch(`/api/green/insights/${encodeURIComponent(u)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({status:e})})).ok&&p(t=>t?{...t,status:e}:t)}finally{b(!1)}}}if((0,r.useEffect)(()=>{fetch(`/api/green/insights/${encodeURIComponent(u)}`).then(async e=>{404===e.status?g(!0):p((await e.json()).insight)}).catch(()=>g(!0)).finally(()=>x(!1))},[u]),f)return(0,t.jsxs)("div",{className:"flex flex-col min-h-screen",style:{background:"var(--bg-app)"},children:[(0,t.jsx)(l.PrismDock,{}),(0,t.jsx)("main",{className:"flex-1 flex items-center justify-center",children:(0,t.jsx)("span",{className:"text-slate-500 text-sm",children:"Loading…"})})]});if(h||!d)return(0,t.jsxs)("div",{className:"flex flex-col min-h-screen",style:{background:"var(--bg-app)"},children:[(0,t.jsx)(l.PrismDock,{}),(0,t.jsxs)("main",{className:"flex-1 flex flex-col items-center justify-center gap-4",children:[(0,t.jsx)("p",{className:"text-slate-400",children:"Insight not found."}),(0,t.jsx)(n.default,{href:"/green/insights",className:"text-sm hover:underline",style:{color:s},children:"← Insights"})]})]});let j=d.status??("auto"===d.kind?"pending":void 0);return(0,t.jsxs)("div",{className:"flex flex-col min-h-screen",style:{background:"var(--bg-app)"},children:[(0,t.jsx)(l.PrismDock,{}),(0,t.jsxs)("main",{className:"flex-1 flex flex-col items-center px-6 pt-32 pb-16 gap-6",style:{maxWidth:720,margin:"0 auto",width:"100%"},children:[(0,t.jsxs)("div",{className:"w-full flex items-center gap-2 text-sm",children:[(0,t.jsx)(n.default,{href:"/green",className:"text-slate-500 hover:text-slate-300 transition-colors",children:"GREEN"}),(0,t.jsx)("span",{className:"text-slate-700",children:"/"}),(0,t.jsx)(n.default,{href:"/green/insights",className:"text-slate-500 hover:text-slate-300 transition-colors",children:"Insights"}),(0,t.jsx)("span",{className:"text-slate-700",children:"/"}),(0,t.jsx)("span",{className:"text-slate-400 truncate max-w-xs",children:d.title})]}),(0,t.jsxs)("div",{className:"w-full flex flex-col gap-2",children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-4",children:[(0,t.jsx)("h1",{className:"text-xl font-semibold text-slate-100 flex-1",children:d.title}),(0,t.jsxs)("div",{className:"flex items-center gap-2 flex-shrink-0",children:[(0,t.jsx)("span",{className:"text-xs font-mono px-2 py-0.5 rounded-full",style:{background:"rgba(52,211,153,0.1)",color:s,border:"1px solid rgba(52,211,153,0.25)"},children:d.kind}),j&&(0,t.jsx)("span",{className:"text-xs font-mono px-2 py-0.5 rounded-full",style:{background:(o[j]??"rgb(148,163,184)")+"15",color:o[j]??"rgb(148,163,184)",border:`1px solid ${o[j]??"rgb(148,163,184)"}28`},children:j})]})]}),d.generated_at&&(0,t.jsxs)("p",{className:"text-xs text-slate-600 font-mono",children:["Generated ",new Date(d.generated_at).toLocaleString()]})]}),(0,t.jsxs)("div",{className:"w-full rounded-xl p-6 flex flex-col gap-5",style:a,children:[(0,t.jsx)(i,{label:"Description",children:d.description}),(0,t.jsx)("div",{className:"border-t",style:{borderColor:"var(--border-default)"}}),(0,t.jsx)(i,{label:"Prompt Template",children:(0,t.jsx)("pre",{className:"text-xs font-mono text-slate-400 bg-slate-900/60 rounded-lg p-3 overflow-auto leading-relaxed whitespace-pre-wrap",children:d.prompt_template})}),d.supporting_evidence&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"border-t",style:{borderColor:"var(--border-default)"}}),d.supporting_evidence.capability_ids?.length?(0,t.jsx)(i,{label:"Supporting Capabilities",children:(0,t.jsx)("div",{className:"flex flex-wrap gap-1 mt-0.5",children:d.supporting_evidence.capability_ids.map(e=>(0,t.jsx)(n.default,{href:`/amber/capabilities/${encodeURIComponent(e)}`,className:"text-xs font-mono px-2 py-0.5 rounded hover:brightness-110 transition-all",style:{background:"rgba(52,211,153,0.08)",color:s,border:"1px solid rgba(52,211,153,0.2)"},children:e},e))})}):null,d.supporting_evidence.metric_pattern&&(0,t.jsx)(i,{label:"Metric Pattern",children:(0,t.jsx)("span",{className:"font-mono text-xs text-slate-400",children:d.supporting_evidence.metric_pattern})})]})]}),"auto"===d.kind&&(0,t.jsxs)("div",{className:"w-full flex flex-wrap gap-3",children:["accepted"!==j&&(0,t.jsx)("button",{onClick:()=>y("accepted"),disabled:m,className:"px-4 py-2 rounded-lg text-sm font-semibold transition-all disabled:opacity-40",style:{background:"rgba(52,211,153,0.12)",color:s,border:"1px solid rgba(52,211,153,0.3)"},children:"Accept"}),"rejected"!==j&&(0,t.jsx)("button",{onClick:()=>y("rejected"),disabled:m,className:"px-4 py-2 rounded-lg text-sm font-semibold transition-all disabled:opacity-40",style:{background:"rgba(248,113,113,0.1)",color:"rgb(248,113,113)",border:"1px solid rgba(248,113,113,0.25)"},children:"Reject"}),"pending"!==j&&(0,t.jsx)("button",{onClick:()=>y("pending"),disabled:m,className:"px-4 py-2 rounded-lg text-sm font-semibold transition-all disabled:opacity-40",style:{background:"rgba(148,163,184,0.08)",color:"rgb(148,163,184)",border:"1px solid rgba(148,163,184,0.2)"},children:"Reset"})]})]}),(0,t.jsxs)("footer",{className:"text-center py-4 text-xs text-slate-600",children:["prism",(0,t.jsx)("span",{className:"font-mono",children:"0x2A"})," v","0.7.2"," · GREEN / Insights"]})]})}])}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,95057,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var a={formatUrl:function(){return o},formatWithValidation:function(){return c},urlObjectKeys:function(){return i}};for(var n in a)Object.defineProperty(r,n,{enumerable:!0,get:a[n]});let l=e.r(90809)._(e.r(98183)),s=/https?|ftp|gopher|file/;function o(e){let{auth:t,hostname:r}=e,a=e.protocol||"",n=e.pathname||"",o=e.hash||"",i=e.query||"",c=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?c=t+e.host:r&&(c=t+(~r.indexOf(":")?`[${r}]`:r),e.port&&(c+=":"+e.port)),i&&"object"==typeof i&&(i=String(l.urlQueryToSearchParams(i)));let u=e.search||i&&`?${i}`||"";return a&&!a.endsWith(":")&&(a+=":"),e.slashes||(!a||s.test(a))&&!1!==c?(c="//"+(c||""),n&&"/"!==n[0]&&(n="/"+n)):c||(c=""),o&&"#"!==o[0]&&(o="#"+o),u&&"?"!==u[0]&&(u="?"+u),n=n.replace(/[?#]/g,encodeURIComponent),u=u.replace("#","%23"),`${a}${c}${n}${u}${o}`}let i=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function c(e){return o(e)}},18581,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useMergedRef",{enumerable:!0,get:function(){return n}});let a=e.r(71645);function n(e,t){let r=(0,a.useRef)(null),n=(0,a.useRef)(null);return(0,a.useCallback)(a=>{if(null===a){let e=r.current;e&&(r.current=null,e());let t=n.current;t&&(n.current=null,t())}else e&&(r.current=l(e,a)),t&&(n.current=l(t,a))},[e,t])}function l(e,t){if("function"!=typeof e)return e.current=t,()=>{e.current=null};{let r=e(t);return"function"==typeof r?r:()=>e(null)}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},73668,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isLocalURL",{enumerable:!0,get:function(){return l}});let a=e.r(18967),n=e.r(52817);function l(e){if(!(0,a.isAbsoluteUrl)(e))return!0;try{let t=(0,a.getLocationOrigin)(),r=new URL(e,t);return r.origin===t&&(0,n.hasBasePath)(r.pathname)}catch(e){return!1}}},84508,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"errorOnce",{enumerable:!0,get:function(){return a}});let a=e=>{}},22016,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var a={default:function(){return b},useLinkStatus:function(){return y}};for(var n in a)Object.defineProperty(r,n,{enumerable:!0,get:a[n]});let l=e.r(90809),s=e.r(43476),o=l._(e.r(71645)),i=e.r(95057),c=e.r(8372),u=e.r(18581),d=e.r(18967),p=e.r(5550);e.r(33525);let f=e.r(88540),x=e.r(91949),h=e.r(73668),m=e.r(9396);function b(t){var r,a;let n,l,b,[y,j]=(0,o.useOptimistic)(x.IDLE_LINK_STATUS),v=(0,o.useRef)(null),{href:N,as:_,children:k,prefetch:w=null,passHref:S,replace:C,shallow:R,scroll:E,onClick:P,onMouseEnter:O,onTouchStart:T,legacyBehavior:A=!1,onNavigate:$,transitionTypes:L,ref:M,unstable_dynamicOnHover:I,...U}=t;n=k,A&&("string"==typeof n||"number"==typeof n)&&(n=(0,s.jsx)("a",{children:n}));let B=o.default.useContext(c.AppRouterContext),D=!1!==w,F=!1!==w?null===(a=w)||"auto"===a?m.FetchStrategy.PPR:m.FetchStrategy.Full:m.FetchStrategy.PPR,K="string"==typeof(r=_||N)?r:(0,i.formatUrl)(r);if(A){if(n?.$$typeof===Symbol.for("react.lazy"))throw Object.defineProperty(Error("`<Link legacyBehavior>` received a direct child that is either a Server Component, or JSX that was loaded with React.lazy(). This is not supported. Either remove legacyBehavior, or make the direct child a Client Component that renders the Link's `<a>` tag."),"__NEXT_ERROR_CODE",{value:"E863",enumerable:!1,configurable:!0});l=o.default.Children.only(n)}let W=A?l&&"object"==typeof l&&l.ref:M,q=o.default.useCallback(e=>(null!==B&&(v.current=(0,x.mountLinkInstance)(e,K,B,F,D,j)),()=>{v.current&&((0,x.unmountLinkForCurrentNavigation)(v.current),v.current=null),(0,x.unmountPrefetchableInstance)(e)}),[D,K,B,F,j]),z={ref:(0,u.useMergedRef)(q,W),onClick(t){A||"function"!=typeof P||P(t),A&&l.props&&"function"==typeof l.props.onClick&&l.props.onClick(t),!B||t.defaultPrevented||function(t,r,a,n,l,s,i){if("u">typeof window){let c,{nodeName:u}=t.currentTarget;if("A"===u.toUpperCase()&&((c=t.currentTarget.getAttribute("target"))&&"_self"!==c||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.nativeEvent&&2===t.nativeEvent.which)||t.currentTarget.hasAttribute("download"))return;if(!(0,h.isLocalURL)(r)){n&&(t.preventDefault(),location.replace(r));return}if(t.preventDefault(),s){let e=!1;if(s({preventDefault:()=>{e=!0}}),e)return}let{dispatchNavigateAction:d}=e.r(99781);o.default.startTransition(()=>{d(r,n?"replace":"push",!1===l?f.ScrollBehavior.NoScroll:f.ScrollBehavior.Default,a.current,i)})}}(t,K,v,C,E,$,L)},onMouseEnter(e){A||"function"!=typeof O||O(e),A&&l.props&&"function"==typeof l.props.onMouseEnter&&l.props.onMouseEnter(e),B&&D&&(0,x.onNavigationIntent)(e.currentTarget,!0===I)},onTouchStart:function(e){A||"function"!=typeof T||T(e),A&&l.props&&"function"==typeof l.props.onTouchStart&&l.props.onTouchStart(e),B&&D&&(0,x.onNavigationIntent)(e.currentTarget,!0===I)}};return(0,d.isAbsoluteUrl)(K)?z.href=K:A&&!S&&("a"!==l.type||"href"in l.props)||(z.href=(0,p.addBasePath)(K)),b=A?o.default.cloneElement(l,z):(0,s.jsx)("a",{...U,...z,children:n}),(0,s.jsx)(g.Provider,{value:y,children:b})}e.r(84508);let g=(0,o.createContext)(x.IDLE_LINK_STATUS),y=()=>(0,o.useContext)(g);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},18566,(e,t,r)=>{t.exports=e.r(76562)},50667,36528,25010,60888,13121,e=>{"use strict";var t=e.i(43476),r=e.i(22016),a=e.i(18566),n=e.i(71645);let l={monorepo:{tier:"pro",label:"Monorepo support"},aggregate_scan:{tier:"pro",label:"Aggregate workspace scan"},cross_workspace_insights:{tier:"pro",label:"Cross-workspace insights"},llm_insights:{tier:"pro",label:"AI-powered insights"},custom_queries:{tier:"pro",label:"Custom GREEN queries"},cross_layer_context:{tier:"pro",label:"Cross-layer context"},auto_insights:{tier:"pro",label:"Auto-generated insights"},team_sync:{tier:"team",label:"Team sync"},ci_integration:{tier:"team",label:"CI integration"},forge_unlimited:{tier:"forge-pro",label:"forge0x2B unlimited"},forge_unlimited_generation:{tier:"forge-pro",label:"forge0x2B unlimited generation"}};function s(e){return"free"!==l[e].tier}e.s(["FREE_TIER_LOC_LIMIT",0,5e4,"showProBadge",0,s],36528);let o=()=>(0,t.jsx)("span",{className:"text-[10px] font-bold px-1 py-0.5 rounded leading-none",style:{background:"rgba(251,191,36,0.15)",color:"rgb(251,191,36)",border:"1px solid rgba(251,191,36,0.3)"},children:"PRO"});function i({monorepo:e,activeWorkspace:r,onSelect:a,isPro:l=!1}){let[c,u]=(0,n.useState)(!1),d=(0,n.useRef)(null);if((0,n.useEffect)(()=>{function e(e){d.current&&!d.current.contains(e.target)&&u(!1)}return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]),!e||"single"===e.type||0===e.packages.length)return null;let p=s("monorepo")&&!l;return(0,t.jsxs)("div",{className:"relative",ref:d,children:[(0,t.jsxs)("button",{onClick:()=>u(e=>!e),className:"flex items-center gap-1.5 px-2.5 py-1 rounded-full text-xs font-medium transition-colors",style:{background:c?"rgba(51,65,85,0.5)":"rgba(51,65,85,0.25)",border:"1px solid rgba(51,65,85,0.5)",color:"rgb(148,163,184)"},title:`Monorepo: ${e.type}`,children:[(0,t.jsx)("span",{className:"font-mono",style:{color:"rgb(52,211,153)",fontSize:10},children:e.type.toUpperCase()}),(0,t.jsx)("span",{className:"max-w-[80px] truncate",children:r??"all workspaces"}),p&&(0,t.jsx)(o,{}),(0,t.jsx)("svg",{width:"8",height:"8",viewBox:"0 0 8 8",fill:"currentColor",className:"opacity-60",children:(0,t.jsx)("path",{d:"M1 2.5l3 3 3-3",stroke:"currentColor",strokeWidth:"1.2",fill:"none",strokeLinecap:"round"})})]}),c&&(0,t.jsxs)("div",{className:"absolute top-full mt-1 right-0 z-50 rounded-xl overflow-hidden py-1 min-w-[180px]",style:{background:"rgba(15,23,42,0.95)",backdropFilter:"blur(20px)",border:"1px solid rgba(51,65,85,0.5)",boxShadow:"0 4px 24px rgba(0,0,0,0.4)"},children:[(0,t.jsxs)("button",{className:"w-full text-left px-3 py-2 text-xs flex items-center gap-2 transition-colors hover:bg-white/5",style:{color:null===r?"rgb(52,211,153)":"rgb(148,163,184)"},onClick:()=>{a(null),u(!1)},children:[(0,t.jsx)("span",{className:"font-mono text-[10px] opacity-60",children:"∑"}),"All workspaces",null===r&&(0,t.jsx)("span",{className:"ml-auto text-[10px] opacity-60",children:"✓"})]}),(0,t.jsx)("div",{className:"my-1",style:{borderTop:"1px solid rgba(51,65,85,0.3)"}}),e.packages.map(e=>(0,t.jsxs)("button",{className:"w-full text-left px-3 py-2 text-xs flex items-center gap-2 transition-colors hover:bg-white/5",style:{color:r===e.name?"rgb(52,211,153)":"rgb(148,163,184)"},onClick:()=>{a(e.name),u(!1)},children:[(0,t.jsx)("span",{className:"font-mono text-[10px] opacity-50",children:"pkg"}),(0,t.jsx)("span",{className:"flex-1 truncate",children:e.name}),void 0!==e.loc&&(0,t.jsxs)("span",{className:"text-[10px] font-mono opacity-40",children:[(e.loc/1e3).toFixed(1),"k"]}),r===e.name&&(0,t.jsx)("span",{className:"text-[10px] opacity-60",children:"✓"})]},e.path))]})]})}function c(){let[e,t]=(0,n.useState)(""),[r,a]=(0,n.useState)(!1);return(0,n.useEffect)(()=>{fetch("/api/config").then(e=>e.json()).then(e=>{let r=e.targetPath??"";t(r?`?target=${encodeURIComponent(r)}`:"")}).catch(()=>{}).finally(()=>a(!0))},[]),{tq:e,ready:r}}function u(e){let[t,r]=(0,n.useState)(null),[a,l]=(0,n.useState)(null),[s,o]=(0,n.useState)(!1);(0,n.useEffect)(()=>{Promise.all([fetch(`/api/monorepo${e}`).then(e=>e.json()).catch(()=>({monorepo:null})),fetch(`/api/monorepo/active${e}`).then(e=>e.json()).catch(()=>({workspace:null}))]).then(([e,t])=>{r(e.monorepo??null),l(t.workspace??null)}).finally(()=>o(!0))},[e]);let i=(0,n.useCallback)(async t=>{l(t),await fetch(`/api/monorepo/active${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({workspace:t})}).catch(()=>{})},[e]),c=a?`&workspace=${encodeURIComponent(a)}`:"";return{monorepo:t,activeWorkspace:a,setActiveWorkspace:i,ready:s,wq:c}}e.s(["useTargetPath",0,c],25010),e.s(["useActiveWorkspace",0,u],60888);let d={tier:"free",issuedAt:null,expiresAt:null,userId:null,features:[],isValid:!1,isExpired:!1,licenseKey:null,instanceId:null,productName:null,subscriptionStatus:null,validatedAt:null,revalidationDue:null,gracePeriodEnd:null,activationLimit:null,activationUsage:null,cacheStatus:"no-cache",daysSinceValidation:null};function p(e){let[t,r]=(0,n.useState)(null),[a,l]=(0,n.useState)(!1),[s,o]=(0,n.useState)(0);(0,n.useEffect)(()=>{fetch(`/api/license${e}`).then(e=>e.json()).then(e=>r(e)).catch(()=>r(d)).finally(()=>l(!0))},[e,s]);let i=(0,n.useCallback)(()=>o(e=>e+1),[]),c=!!t&&"free"!==t.tier&&"forge-pro"!==t.tier&&t.isValid&&!t.isExpired&&"expired"!==t.cacheStatus;return{license:t,ready:a,refresh:i,isPro:c}}e.s(["useLicense",0,p],13121);let f=[{href:"/blue",label:"BLUE",color:"rgb(59,130,246)"},{href:"/amber",label:"AMBER",color:"rgb(251,191,36)"},{href:"/green",label:"GREEN",color:"rgb(52,211,153)"},{href:"/pricing",label:"Plans",color:"rgb(167,139,250)"},{href:"/settings",label:"⚙",color:void 0}];e.s(["PrismDock",0,function(){let e=(0,a.usePathname)(),{tq:n}=c(),{monorepo:l,activeWorkspace:s,setActiveWorkspace:o}=u(n),{isPro:d}=p(n);return(0,t.jsxs)("div",{className:"fixed top-3 left-1/2 -translate-x-1/2 z-50 flex items-center gap-2 px-4 py-2 rounded-full",style:{background:"linear-gradient(to bottom, rgba(15,23,42,0.4), rgba(2,6,23,0.5))",backdropFilter:"blur(24px) saturate(1.5)",border:"1px solid rgba(51,65,85,0.3)",boxShadow:"0 1px 2px rgba(15,23,42,.06),0 4px 12px rgba(15,23,42,.12),0 16px 40px rgba(15,23,42,.18),inset 0 1px 0 rgba(255,255,255,.08),inset 0 -1px 0 rgba(15,23,42,.4)"},children:[(0,t.jsxs)(r.default,{href:"/",className:"flex items-center gap-1.5 group",children:[(0,t.jsx)("span",{className:"text-sky-400 text-lg select-none",children:"✦"}),(0,t.jsxs)("span",{className:"text-slate-200 text-sm font-semibold tracking-tight group-hover:text-white transition-colors",children:["prism",(0,t.jsx)("span",{className:"font-mono text-sky-500",children:"0x2A"})]})]}),f.map(({href:a,label:n,color:l})=>{let s=e.startsWith(a);return(0,t.jsxs)("span",{className:"flex items-center gap-2",children:[(0,t.jsx)("div",{className:"w-px h-4",style:{background:"rgba(51,65,85,0.6)"}}),(0,t.jsx)(r.default,{href:a,className:"text-sm font-medium transition-colors px-1",style:{color:s?l??"rgb(226,232,240)":"rgba(148,163,184,0.8)"},children:n})]},a)}),l&&"single"!==l.type&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"w-px h-4",style:{background:"rgba(51,65,85,0.6)"}}),(0,t.jsx)(i,{monorepo:l,activeWorkspace:s,onSelect:o,isPro:d})]})]})}],50667)},41147,e=>{"use strict";var t=e.i(43476),r=e.i(71645),a=e.i(22016),n=e.i(50667),l=e.i(25010),s=e.i(60888);let o="rgb(251,191,36)",i={background:"var(--surface-panel)",border:"1px solid var(--border-default)",boxShadow:"0 1px 2px rgba(15,23,42,.05),0 4px 16px rgba(15,23,42,.08),inset 0 1px 0 rgba(255,255,255,.04)"},c={background:"rgba(15,23,42,0.5)",border:"1px solid rgba(51,65,85,0.4)"};function u({label:e,value:r,accent:a}){return(0,t.jsxs)("div",{className:"rounded-lg px-4 py-3 flex flex-col gap-0.5",style:c,children:[(0,t.jsx)("span",{className:"text-xs text-slate-500 uppercase tracking-widest",children:e}),(0,t.jsx)("span",{className:"text-xl font-semibold font-mono",style:{color:a??"rgb(226,232,240)"},children:r})]})}e.s(["default",0,function(){let{tq:e,ready:c}=(0,l.useTargetPath)(),{wq:d}=(0,s.useActiveWorkspace)(e),[p,f]=(0,r.useState)(null),[x,h]=(0,r.useState)(null),[m,b]=(0,r.useState)(!1),[g,y]=(0,r.useState)(null);async function j(){b(!0),y(null);try{let t=await fetch(`/api/amber/scan${e}${d}`,{method:"POST"}),r=await t.json();if(!t.ok)throw Error(r.error??"Scan failed");f(r.scan)}catch(e){y(e instanceof Error?e.message:String(e))}finally{b(!1)}}(0,r.useEffect)(()=>{c&&(fetch(`/api/amber/scan${e}${d}`).then(e=>e.json()).then(({scan:e})=>f(e??null)).catch(()=>{}),fetch(`/api/amber/registry${e}${d}`).then(e=>e.json()).then(({capabilities:e})=>h(Array.isArray(e)?e.length:0)).catch(()=>{}))},[c,d]);let v=[{href:"/amber/capabilities",label:"Capabilities",icon:"🧩",desc:`${x??"—"} registered`},{href:"/amber/files",label:"Files",icon:"📁",desc:p?`${p.file_count} scanned`:"No scan yet"},{href:"/amber/coverage",label:"Coverage",icon:"📊",desc:p?`${p.drift_count} drift entries`:"No scan yet"}];return(0,t.jsxs)("div",{className:"flex flex-col min-h-screen",style:{background:"var(--bg-app)"},children:[(0,t.jsx)(n.PrismDock,{}),(0,t.jsxs)("main",{className:"flex-1 flex flex-col items-center px-6 pt-32 pb-16 gap-6",style:{maxWidth:720,margin:"0 auto",width:"100%"},children:[(0,t.jsxs)("div",{className:"w-full flex items-center justify-between",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("h1",{className:"text-xl font-semibold text-slate-100 tracking-tight",children:[(0,t.jsx)("span",{className:"font-mono",style:{color:o},children:"AMBER"}),(0,t.jsx)("span",{className:"text-slate-400 text-sm font-normal ml-2",children:"Capability Registry + Coverage"})]}),p&&(0,t.jsxs)("p",{className:"text-xs text-slate-500 mt-0.5 font-mono",children:["Last scan: ",new Date(p.created_at).toLocaleString()," · ",p.target]})]}),(0,t.jsx)("button",{onClick:j,disabled:m,className:"px-4 py-2 rounded-lg text-sm font-semibold transition-all disabled:opacity-50",style:{background:o,color:"#020617"},children:m?"Scanning…":p?"Re-scan":"Run scan"})]}),g&&(0,t.jsx)("div",{className:"w-full rounded-lg px-4 py-3 text-sm text-red-400 font-mono",style:{background:"rgba(239,68,68,0.08)",border:"1px solid rgba(239,68,68,0.2)"},children:g}),!p&&!m&&(0,t.jsxs)("div",{className:"w-full rounded-xl p-8 text-center flex flex-col items-center gap-3",style:i,children:[(0,t.jsx)("span",{className:"text-4xl",children:"🟡"}),(0,t.jsx)("p",{className:"text-slate-300 font-medium",children:"No AMBER scan yet"}),(0,t.jsxs)("p",{className:"text-slate-500 text-sm max-w-sm",children:["Run a scan to analyse your capability registry, file coverage, and documentation drift. Requires a ",(0,t.jsx)("span",{className:"font-mono text-amber-400",children:".amber/capabilities.md"})," in the target project."]})]}),p&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"w-full grid grid-cols-4 gap-3",children:[(0,t.jsx)(u,{label:"Files",value:p.file_count}),(0,t.jsx)(u,{label:"Capabilities",value:x??p.capability_count,accent:o}),(0,t.jsx)(u,{label:"Drift",value:p.drift_count,accent:p.drift_count>0?"rgb(248,113,113)":"rgb(52,211,153)"}),(0,t.jsx)(u,{label:"Orphans",value:p.orphan_capability_count,accent:p.orphan_capability_count>0?"rgb(251,191,36)":"rgb(52,211,153)"})]}),p.drift_count>0&&(0,t.jsxs)("div",{className:"w-full rounded-xl p-5 flex flex-col gap-3",style:i,children:[(0,t.jsxs)("h2",{className:"text-xs font-semibold text-slate-400 uppercase tracking-widest",children:["Recent Drift (",p.drift_count,")"]}),(0,t.jsxs)("div",{className:"flex flex-col gap-1",children:[p.drift.slice(0,5).map((e,r)=>(0,t.jsxs)("div",{className:"flex items-center justify-between py-1 border-b",style:{borderColor:"rgba(51,65,85,0.3)"},children:[(0,t.jsx)("span",{className:"text-xs font-mono text-slate-400 truncate flex-1",children:e.file}),(0,t.jsx)("span",{className:"text-xs font-mono text-amber-400 ml-3 flex-shrink-0",children:e.kind.replace(/_/g," ")})]},r)),p.drift_count>5&&(0,t.jsxs)(a.default,{href:"/amber/coverage",className:"text-xs text-amber-400 hover:underline mt-1",children:["+",p.drift_count-5," more → Coverage"]})]})]}),p.orphan_capability_count>0&&(0,t.jsxs)("div",{className:"w-full rounded-xl p-5 flex flex-col gap-3",style:i,children:[(0,t.jsxs)("h2",{className:"text-xs font-semibold text-amber-400 uppercase tracking-widest",children:["Orphan Capabilities (",p.orphan_capability_count,")"]}),(0,t.jsx)("p",{className:"text-xs text-slate-500",children:"Registered in capabilities.md but matched no scanned files."}),(0,t.jsx)("div",{className:"flex flex-wrap gap-2",children:p.orphan_capability_ids.map(e=>(0,t.jsx)(a.default,{href:`/amber/capabilities/${encodeURIComponent(e)}`,className:"text-xs font-mono px-2 py-1 rounded hover:brightness-110 transition-all",style:{background:"rgba(251,191,36,0.1)",color:o,border:"1px solid rgba(251,191,36,0.25)"},children:e},e))})]}),p.unknown_ref_count>0&&(0,t.jsxs)("div",{className:"w-full rounded-xl p-5 flex flex-col gap-3",style:i,children:[(0,t.jsxs)("h2",{className:"text-xs font-semibold text-red-400 uppercase tracking-widest",children:["Unknown Capability Refs (",p.unknown_ref_count,")"]}),(0,t.jsx)("p",{className:"text-xs text-slate-500",children:"Files reference capability IDs not in the registry."}),(0,t.jsx)("div",{className:"flex flex-col gap-1",children:p.unknown_capability_refs.slice(0,5).map((e,r)=>(0,t.jsxs)("div",{className:"flex items-center gap-3 py-1 border-b",style:{borderColor:"rgba(51,65,85,0.3)"},children:[(0,t.jsx)("span",{className:"text-xs font-mono text-slate-400 truncate flex-1",children:e.file}),(0,t.jsx)("span",{className:"text-xs font-mono text-red-400",children:e.id})]},r))})]})]}),(0,t.jsx)("div",{className:"w-full grid grid-cols-3 gap-3",children:v.map(({href:e,label:r,icon:n,desc:l})=>(0,t.jsxs)(a.default,{href:e,className:"rounded-xl p-5 flex flex-col gap-2 transition-all hover:brightness-110",style:{...i,borderColor:o+"30"},children:[(0,t.jsx)("span",{className:"text-2xl",children:n}),(0,t.jsx)("span",{className:"text-sm font-semibold",style:{color:o},children:r}),(0,t.jsx)("span",{className:"text-xs text-slate-500",children:l})]},e))})]}),(0,t.jsxs)("footer",{className:"text-center py-4 text-xs text-slate-600",children:["prism",(0,t.jsx)("span",{className:"font-mono",children:"0x2A"})," v","0.7.2"," · AMBER"]})]})}])}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,95057,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var s={formatUrl:function(){return o},formatWithValidation:function(){return c},urlObjectKeys:function(){return i}};for(var n in s)Object.defineProperty(r,n,{enumerable:!0,get:s[n]});let l=e.r(90809)._(e.r(98183)),a=/https?|ftp|gopher|file/;function o(e){let{auth:t,hostname:r}=e,s=e.protocol||"",n=e.pathname||"",o=e.hash||"",i=e.query||"",c=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?c=t+e.host:r&&(c=t+(~r.indexOf(":")?`[${r}]`:r),e.port&&(c+=":"+e.port)),i&&"object"==typeof i&&(i=String(l.urlQueryToSearchParams(i)));let u=e.search||i&&`?${i}`||"";return s&&!s.endsWith(":")&&(s+=":"),e.slashes||(!s||a.test(s))&&!1!==c?(c="//"+(c||""),n&&"/"!==n[0]&&(n="/"+n)):c||(c=""),o&&"#"!==o[0]&&(o="#"+o),u&&"?"!==u[0]&&(u="?"+u),n=n.replace(/[?#]/g,encodeURIComponent),u=u.replace("#","%23"),`${s}${c}${n}${u}${o}`}let i=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function c(e){return o(e)}},18581,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useMergedRef",{enumerable:!0,get:function(){return n}});let s=e.r(71645);function n(e,t){let r=(0,s.useRef)(null),n=(0,s.useRef)(null);return(0,s.useCallback)(s=>{if(null===s){let e=r.current;e&&(r.current=null,e());let t=n.current;t&&(n.current=null,t())}else e&&(r.current=l(e,s)),t&&(n.current=l(t,s))},[e,t])}function l(e,t){if("function"!=typeof e)return e.current=t,()=>{e.current=null};{let r=e(t);return"function"==typeof r?r:()=>e(null)}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},73668,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isLocalURL",{enumerable:!0,get:function(){return l}});let s=e.r(18967),n=e.r(52817);function l(e){if(!(0,s.isAbsoluteUrl)(e))return!0;try{let t=(0,s.getLocationOrigin)(),r=new URL(e,t);return r.origin===t&&(0,n.hasBasePath)(r.pathname)}catch(e){return!1}}},84508,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"errorOnce",{enumerable:!0,get:function(){return s}});let s=e=>{}},22016,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var s={default:function(){return b},useLinkStatus:function(){return y}};for(var n in s)Object.defineProperty(r,n,{enumerable:!0,get:s[n]});let l=e.r(90809),a=e.r(43476),o=l._(e.r(71645)),i=e.r(95057),c=e.r(8372),u=e.r(18581),d=e.r(18967),p=e.r(5550);e.r(33525);let f=e.r(88540),x=e.r(91949),m=e.r(73668),h=e.r(9396);function b(t){var r,s;let n,l,b,[y,j]=(0,o.useOptimistic)(x.IDLE_LINK_STATUS),v=(0,o.useRef)(null),{href:N,as:k,children:w,prefetch:S=null,passHref:_,replace:C,shallow:P,scroll:E,onClick:O,onMouseEnter:T,onTouchStart:R,legacyBehavior:L=!1,onNavigate:A,transitionTypes:I,ref:M,unstable_dynamicOnHover:U,...$}=t;n=w,L&&("string"==typeof n||"number"==typeof n)&&(n=(0,a.jsx)("a",{children:n}));let B=o.default.useContext(c.AppRouterContext),D=!1!==S,K=!1!==S?null===(s=S)||"auto"===s?h.FetchStrategy.PPR:h.FetchStrategy.Full:h.FetchStrategy.PPR,F="string"==typeof(r=k||N)?r:(0,i.formatUrl)(r);if(L){if(n?.$$typeof===Symbol.for("react.lazy"))throw Object.defineProperty(Error("`<Link legacyBehavior>` received a direct child that is either a Server Component, or JSX that was loaded with React.lazy(). This is not supported. Either remove legacyBehavior, or make the direct child a Client Component that renders the Link's `<a>` tag."),"__NEXT_ERROR_CODE",{value:"E863",enumerable:!1,configurable:!0});l=o.default.Children.only(n)}let W=L?l&&"object"==typeof l&&l.ref:M,z=o.default.useCallback(e=>(null!==B&&(v.current=(0,x.mountLinkInstance)(e,F,B,K,D,j)),()=>{v.current&&((0,x.unmountLinkForCurrentNavigation)(v.current),v.current=null),(0,x.unmountPrefetchableInstance)(e)}),[D,F,B,K,j]),q={ref:(0,u.useMergedRef)(z,W),onClick(t){L||"function"!=typeof O||O(t),L&&l.props&&"function"==typeof l.props.onClick&&l.props.onClick(t),!B||t.defaultPrevented||function(t,r,s,n,l,a,i){if("u">typeof window){let c,{nodeName:u}=t.currentTarget;if("A"===u.toUpperCase()&&((c=t.currentTarget.getAttribute("target"))&&"_self"!==c||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.nativeEvent&&2===t.nativeEvent.which)||t.currentTarget.hasAttribute("download"))return;if(!(0,m.isLocalURL)(r)){n&&(t.preventDefault(),location.replace(r));return}if(t.preventDefault(),a){let e=!1;if(a({preventDefault:()=>{e=!0}}),e)return}let{dispatchNavigateAction:d}=e.r(99781);o.default.startTransition(()=>{d(r,n?"replace":"push",!1===l?f.ScrollBehavior.NoScroll:f.ScrollBehavior.Default,s.current,i)})}}(t,F,v,C,E,A,I)},onMouseEnter(e){L||"function"!=typeof T||T(e),L&&l.props&&"function"==typeof l.props.onMouseEnter&&l.props.onMouseEnter(e),B&&D&&(0,x.onNavigationIntent)(e.currentTarget,!0===U)},onTouchStart:function(e){L||"function"!=typeof R||R(e),L&&l.props&&"function"==typeof l.props.onTouchStart&&l.props.onTouchStart(e),B&&D&&(0,x.onNavigationIntent)(e.currentTarget,!0===U)}};return(0,d.isAbsoluteUrl)(F)?q.href=F:L&&!_&&("a"!==l.type||"href"in l.props)||(q.href=(0,p.addBasePath)(F)),b=L?o.default.cloneElement(l,q):(0,a.jsx)("a",{...$,...q,children:n}),(0,a.jsx)(g.Provider,{value:y,children:b})}e.r(84508);let g=(0,o.createContext)(x.IDLE_LINK_STATUS),y=()=>(0,o.useContext)(g);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},18566,(e,t,r)=>{t.exports=e.r(76562)},50667,36528,25010,60888,13121,e=>{"use strict";var t=e.i(43476),r=e.i(22016),s=e.i(18566),n=e.i(71645);let l={monorepo:{tier:"pro",label:"Monorepo support"},aggregate_scan:{tier:"pro",label:"Aggregate workspace scan"},cross_workspace_insights:{tier:"pro",label:"Cross-workspace insights"},llm_insights:{tier:"pro",label:"AI-powered insights"},custom_queries:{tier:"pro",label:"Custom GREEN queries"},cross_layer_context:{tier:"pro",label:"Cross-layer context"},auto_insights:{tier:"pro",label:"Auto-generated insights"},team_sync:{tier:"team",label:"Team sync"},ci_integration:{tier:"team",label:"CI integration"},forge_unlimited:{tier:"forge-pro",label:"forge0x2B unlimited"},forge_unlimited_generation:{tier:"forge-pro",label:"forge0x2B unlimited generation"}};function a(e){return"free"!==l[e].tier}e.s(["FREE_TIER_LOC_LIMIT",0,5e4,"showProBadge",0,a],36528);let o=()=>(0,t.jsx)("span",{className:"text-[10px] font-bold px-1 py-0.5 rounded leading-none",style:{background:"rgba(251,191,36,0.15)",color:"rgb(251,191,36)",border:"1px solid rgba(251,191,36,0.3)"},children:"PRO"});function i({monorepo:e,activeWorkspace:r,onSelect:s,isPro:l=!1}){let[c,u]=(0,n.useState)(!1),d=(0,n.useRef)(null);if((0,n.useEffect)(()=>{function e(e){d.current&&!d.current.contains(e.target)&&u(!1)}return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]),!e||"single"===e.type||0===e.packages.length)return null;let p=a("monorepo")&&!l;return(0,t.jsxs)("div",{className:"relative",ref:d,children:[(0,t.jsxs)("button",{onClick:()=>u(e=>!e),className:"flex items-center gap-1.5 px-2.5 py-1 rounded-full text-xs font-medium transition-colors",style:{background:c?"rgba(51,65,85,0.5)":"rgba(51,65,85,0.25)",border:"1px solid rgba(51,65,85,0.5)",color:"rgb(148,163,184)"},title:`Monorepo: ${e.type}`,children:[(0,t.jsx)("span",{className:"font-mono",style:{color:"rgb(52,211,153)",fontSize:10},children:e.type.toUpperCase()}),(0,t.jsx)("span",{className:"max-w-[80px] truncate",children:r??"all workspaces"}),p&&(0,t.jsx)(o,{}),(0,t.jsx)("svg",{width:"8",height:"8",viewBox:"0 0 8 8",fill:"currentColor",className:"opacity-60",children:(0,t.jsx)("path",{d:"M1 2.5l3 3 3-3",stroke:"currentColor",strokeWidth:"1.2",fill:"none",strokeLinecap:"round"})})]}),c&&(0,t.jsxs)("div",{className:"absolute top-full mt-1 right-0 z-50 rounded-xl overflow-hidden py-1 min-w-[180px]",style:{background:"rgba(15,23,42,0.95)",backdropFilter:"blur(20px)",border:"1px solid rgba(51,65,85,0.5)",boxShadow:"0 4px 24px rgba(0,0,0,0.4)"},children:[(0,t.jsxs)("button",{className:"w-full text-left px-3 py-2 text-xs flex items-center gap-2 transition-colors hover:bg-white/5",style:{color:null===r?"rgb(52,211,153)":"rgb(148,163,184)"},onClick:()=>{s(null),u(!1)},children:[(0,t.jsx)("span",{className:"font-mono text-[10px] opacity-60",children:"∑"}),"All workspaces",null===r&&(0,t.jsx)("span",{className:"ml-auto text-[10px] opacity-60",children:"✓"})]}),(0,t.jsx)("div",{className:"my-1",style:{borderTop:"1px solid rgba(51,65,85,0.3)"}}),e.packages.map(e=>(0,t.jsxs)("button",{className:"w-full text-left px-3 py-2 text-xs flex items-center gap-2 transition-colors hover:bg-white/5",style:{color:r===e.name?"rgb(52,211,153)":"rgb(148,163,184)"},onClick:()=>{s(e.name),u(!1)},children:[(0,t.jsx)("span",{className:"font-mono text-[10px] opacity-50",children:"pkg"}),(0,t.jsx)("span",{className:"flex-1 truncate",children:e.name}),void 0!==e.loc&&(0,t.jsxs)("span",{className:"text-[10px] font-mono opacity-40",children:[(e.loc/1e3).toFixed(1),"k"]}),r===e.name&&(0,t.jsx)("span",{className:"text-[10px] opacity-60",children:"✓"})]},e.path))]})]})}function c(){let[e,t]=(0,n.useState)(""),[r,s]=(0,n.useState)(!1);return(0,n.useEffect)(()=>{fetch("/api/config").then(e=>e.json()).then(e=>{let r=e.targetPath??"";t(r?`?target=${encodeURIComponent(r)}`:"")}).catch(()=>{}).finally(()=>s(!0))},[]),{tq:e,ready:r}}function u(e){let[t,r]=(0,n.useState)(null),[s,l]=(0,n.useState)(null),[a,o]=(0,n.useState)(!1);(0,n.useEffect)(()=>{Promise.all([fetch(`/api/monorepo${e}`).then(e=>e.json()).catch(()=>({monorepo:null})),fetch(`/api/monorepo/active${e}`).then(e=>e.json()).catch(()=>({workspace:null}))]).then(([e,t])=>{r(e.monorepo??null),l(t.workspace??null)}).finally(()=>o(!0))},[e]);let i=(0,n.useCallback)(async t=>{l(t),await fetch(`/api/monorepo/active${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({workspace:t})}).catch(()=>{})},[e]),c=s?`&workspace=${encodeURIComponent(s)}`:"";return{monorepo:t,activeWorkspace:s,setActiveWorkspace:i,ready:a,wq:c}}e.s(["useTargetPath",0,c],25010),e.s(["useActiveWorkspace",0,u],60888);let d={tier:"free",issuedAt:null,expiresAt:null,userId:null,features:[],isValid:!1,isExpired:!1,licenseKey:null,instanceId:null,productName:null,subscriptionStatus:null,validatedAt:null,revalidationDue:null,gracePeriodEnd:null,activationLimit:null,activationUsage:null,cacheStatus:"no-cache",daysSinceValidation:null};function p(e){let[t,r]=(0,n.useState)(null),[s,l]=(0,n.useState)(!1),[a,o]=(0,n.useState)(0);(0,n.useEffect)(()=>{fetch(`/api/license${e}`).then(e=>e.json()).then(e=>r(e)).catch(()=>r(d)).finally(()=>l(!0))},[e,a]);let i=(0,n.useCallback)(()=>o(e=>e+1),[]),c=!!t&&"free"!==t.tier&&"forge-pro"!==t.tier&&t.isValid&&!t.isExpired&&"expired"!==t.cacheStatus;return{license:t,ready:s,refresh:i,isPro:c}}e.s(["useLicense",0,p],13121);let f=[{href:"/blue",label:"BLUE",color:"rgb(59,130,246)"},{href:"/amber",label:"AMBER",color:"rgb(251,191,36)"},{href:"/green",label:"GREEN",color:"rgb(52,211,153)"},{href:"/pricing",label:"Plans",color:"rgb(167,139,250)"},{href:"/settings",label:"⚙",color:void 0}];e.s(["PrismDock",0,function(){let e=(0,s.usePathname)(),{tq:n}=c(),{monorepo:l,activeWorkspace:a,setActiveWorkspace:o}=u(n),{isPro:d}=p(n);return(0,t.jsxs)("div",{className:"fixed top-3 left-1/2 -translate-x-1/2 z-50 flex items-center gap-2 px-4 py-2 rounded-full",style:{background:"linear-gradient(to bottom, rgba(15,23,42,0.4), rgba(2,6,23,0.5))",backdropFilter:"blur(24px) saturate(1.5)",border:"1px solid rgba(51,65,85,0.3)",boxShadow:"0 1px 2px rgba(15,23,42,.06),0 4px 12px rgba(15,23,42,.12),0 16px 40px rgba(15,23,42,.18),inset 0 1px 0 rgba(255,255,255,.08),inset 0 -1px 0 rgba(15,23,42,.4)"},children:[(0,t.jsxs)(r.default,{href:"/",className:"flex items-center gap-1.5 group",children:[(0,t.jsx)("span",{className:"text-sky-400 text-lg select-none",children:"✦"}),(0,t.jsxs)("span",{className:"text-slate-200 text-sm font-semibold tracking-tight group-hover:text-white transition-colors",children:["prism",(0,t.jsx)("span",{className:"font-mono text-sky-500",children:"0x2A"})]})]}),f.map(({href:s,label:n,color:l})=>{let a=e.startsWith(s);return(0,t.jsxs)("span",{className:"flex items-center gap-2",children:[(0,t.jsx)("div",{className:"w-px h-4",style:{background:"rgba(51,65,85,0.6)"}}),(0,t.jsx)(r.default,{href:s,className:"text-sm font-medium transition-colors px-1",style:{color:a?l??"rgb(226,232,240)":"rgba(148,163,184,0.8)"},children:n})]},s)}),l&&"single"!==l.type&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"w-px h-4",style:{background:"rgba(51,65,85,0.6)"}}),(0,t.jsx)(i,{monorepo:l,activeWorkspace:a,onSelect:o,isPro:d})]})]})}],50667)},7307,e=>{"use strict";var t=e.i(43476),r=e.i(71645),s=e.i(22016),n=e.i(50667);let l={background:"var(--surface-panel)",border:"1px solid var(--border-default)",boxShadow:"0 1px 2px rgba(15,23,42,.05),0 4px 16px rgba(15,23,42,.08),inset 0 1px 0 rgba(255,255,255,.04)"};function a({turn:e}){return(0,t.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,t.jsx)("div",{className:"flex justify-end",children:(0,t.jsx)("div",{className:"max-w-lg rounded-2xl rounded-tr-sm px-4 py-3 text-sm text-slate-200 leading-relaxed",style:{background:"rgba(59,130,246,0.15)",border:"1px solid rgba(59,130,246,0.25)"},children:e.prompt})}),e.response?(0,t.jsx)("div",{className:"flex justify-start",children:(0,t.jsxs)("div",{className:"max-w-lg rounded-2xl rounded-tl-sm px-4 py-3 text-sm text-slate-300 leading-relaxed",style:{background:"rgba(15,23,42,0.6)",border:"1px solid rgba(51,65,85,0.4)"},children:[(0,t.jsx)("span",{className:"text-blue-400 text-xs font-mono mr-2",children:"✦"}),(0,t.jsx)("span",{style:{whiteSpace:"pre-wrap"},children:e.response})]})}):(0,t.jsx)("div",{className:"flex justify-start",children:(0,t.jsxs)("div",{className:"rounded-2xl rounded-tl-sm px-4 py-3 flex items-center gap-2",style:{background:"rgba(15,23,42,0.6)",border:"1px solid rgba(51,65,85,0.4)"},children:[(0,t.jsx)("span",{className:"animate-spin inline-block w-3 h-3 border border-blue-400 border-t-transparent rounded-full"}),(0,t.jsx)("span",{className:"text-xs text-slate-500",children:"Thinking…"})]})})]})}e.s(["default",0,function({params:e}){let{id:o}=(0,r.use)(e),[i,c]=(0,r.useState)(null),[u,d]=(0,r.useState)(!0),[p,f]=(0,r.useState)(!1),[x,m]=(0,r.useState)(""),[h,b]=(0,r.useState)(!1),[g,y]=(0,r.useState)(!1),j=(0,r.useRef)(null);async function v(){try{let e=await fetch(`/api/blue/sessions/${o}`);if(404===e.status)return void f(!0);let t=await e.json();c(t.session)}catch{f(!0)}finally{d(!1)}}async function N(){if(!x.trim()||h||!i)return;let e=x.trim();m(""),b(!0),c(t=>t?{...t,turns:[...t.turns,{turn:t.turns.length+1,prompt:e,created_at:new Date().toISOString()}]}:t);try{let t=await fetch(`/api/blue/sessions/${o}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({prompt:e})}),r=await t.json();c(r.session)}catch{await v()}finally{b(!1)}}async function k(e){if(i){y(!0);try{let t=await fetch(`/api/blue/sessions/${o}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({status:e})}),r=await t.json();c(r.session)}finally{y(!1)}}}if((0,r.useEffect)(()=>{v()},[o]),(0,r.useEffect)(()=>{j.current?.scrollIntoView({behavior:"smooth"})},[i?.turns.length]),u)return(0,t.jsxs)("div",{className:"flex flex-col min-h-screen",style:{background:"var(--bg-app)"},children:[(0,t.jsx)(n.PrismDock,{}),(0,t.jsx)("main",{className:"flex-1 flex items-center justify-center",children:(0,t.jsx)("span",{className:"text-slate-500 text-sm",children:"Loading…"})})]});if(p||!i)return(0,t.jsxs)("div",{className:"flex flex-col min-h-screen",style:{background:"var(--bg-app)"},children:[(0,t.jsx)(n.PrismDock,{}),(0,t.jsxs)("main",{className:"flex-1 flex flex-col items-center justify-center gap-4",children:[(0,t.jsx)("p",{className:"text-slate-400",children:"Session not found."}),(0,t.jsx)(s.default,{href:"/blue/sessions",className:"text-indigo-400 text-sm hover:underline",children:"← Back to Sessions"})]})]});let w="active"===i.status;return(0,t.jsxs)("div",{className:"flex flex-col min-h-screen",style:{background:"var(--bg-app)"},children:[(0,t.jsx)(n.PrismDock,{}),(0,t.jsxs)("main",{className:"flex-1 flex flex-col items-center px-6 pt-28 pb-4",style:{maxWidth:720,margin:"0 auto",width:"100%"},children:[(0,t.jsxs)("div",{className:"w-full flex items-center justify-between mb-4",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 text-sm",children:[(0,t.jsx)(s.default,{href:"/blue",className:"text-slate-500 hover:text-slate-300 transition-colors",children:"BLUE"}),(0,t.jsx)("span",{className:"text-slate-700",children:"/"}),(0,t.jsx)(s.default,{href:"/blue/sessions",className:"text-slate-500 hover:text-slate-300 transition-colors",children:"Sessions"}),(0,t.jsx)("span",{className:"text-slate-700",children:"/"}),(0,t.jsx)("span",{className:"text-slate-300 font-medium truncate max-w-xs",children:i.title})]}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[w&&(0,t.jsx)("button",{onClick:()=>k("completed"),disabled:g,className:"text-xs px-3 py-1 rounded-lg font-medium transition-all disabled:opacity-40",style:{background:"rgba(52,211,153,0.1)",color:"rgb(52,211,153)",border:"1px solid rgba(52,211,153,0.25)"},children:"Mark complete"}),w&&(0,t.jsx)("button",{onClick:()=>k("abandoned"),disabled:g,className:"text-xs px-3 py-1 rounded-lg font-medium transition-all disabled:opacity-40",style:{background:"rgba(148,163,184,0.08)",color:"rgba(148,163,184,0.6)",border:"1px solid rgba(148,163,184,0.15)"},children:"Abandon"}),!w&&(0,t.jsx)("span",{className:"text-xs font-mono px-2 py-1 rounded-lg",style:{background:"rgba(148,163,184,0.08)",color:"rgba(148,163,184,0.6)",border:"1px solid rgba(148,163,184,0.15)"},children:i.status})]})]}),i.rec_id&&(0,t.jsx)("div",{className:"w-full mb-4",children:(0,t.jsx)(s.default,{href:`/blue/recommendations/${i.rec_id}`,className:"text-xs text-indigo-400 hover:text-indigo-300 transition-colors font-mono",children:"↗ linked recommendation"})}),(0,t.jsxs)("div",{className:"w-full flex flex-col gap-5 flex-1 overflow-y-auto pb-4",children:[0===i.turns.length&&(0,t.jsx)("div",{className:"w-full rounded-xl p-8 text-center flex flex-col items-center gap-2",style:l,children:(0,t.jsx)("p",{className:"text-slate-400 text-sm",children:"No messages yet. Ask your first question below."})}),i.turns.map(e=>(0,t.jsx)(a,{turn:e},e.turn)),(0,t.jsx)("div",{ref:j})]}),w&&(0,t.jsx)("div",{className:"w-full mt-4 sticky bottom-4",children:(0,t.jsxs)("div",{className:"w-full rounded-xl p-3 flex items-end gap-3",style:{background:"rgba(2,6,23,0.85)",backdropFilter:"blur(16px)",border:"1px solid rgba(51,65,85,0.5)",boxShadow:"0 4px 24px rgba(0,0,0,0.4)"},children:[(0,t.jsx)("textarea",{rows:3,value:x,onChange:e=>m(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),N())},placeholder:"Ask about your codebase… (Enter to send, Shift+Enter for newline)",disabled:h,className:"flex-1 bg-transparent text-sm font-mono text-slate-200 outline-none resize-none placeholder:text-slate-600 disabled:opacity-50"}),(0,t.jsx)("button",{onClick:N,disabled:!x.trim()||h,className:"px-4 py-2 rounded-lg text-sm font-semibold transition-all disabled:opacity-40 flex-shrink-0 self-end",style:{background:"rgb(59,130,246)",color:"#fff"},children:h?(0,t.jsx)("span",{className:"animate-spin inline-block w-4 h-4 border-2 border-white border-t-transparent rounded-full"}):"Send"})]})})]}),(0,t.jsxs)("footer",{className:"text-center py-3 text-xs text-slate-600",children:["prism",(0,t.jsx)("span",{className:"font-mono",children:"0x2A"})," v","0.7.2"," · BLUE / Sessions"]})]})}])}]);
@@ -1,5 +1,83 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.7.2 — Pricing Page
4
+
5
+ ### Added
6
+
7
+ - **`app/pricing/page.tsx`**: full pricing page with Monthly/Yearly billing toggle (−17% yearly), tier grid for prism Free/Pro/Team, forge Pro card, Spectrum 0x55 bundle card, feature comparison table, and FAQ section.
8
+ - **`components/pricing/PricingCard.tsx`**: reusable tier card with price display, CTA button, current-plan badge, and highlighted border variant.
9
+ - **`components/pricing/BillingToggle.tsx`**: monthly/yearly toggle with animated pill and −17% badge.
10
+ - **`components/pricing/FeatureList.tsx`**: simple feature bullet list.
11
+ - **Lemonsqueezy checkout links** wired up to all 4 products (Pro, Team, forge, Spectrum).
12
+ - **PrismDock** "Plans" link → `/pricing` (violet accent).
13
+ - **Settings license section**: "View Plans →" internal link to `/pricing` alongside existing "Get a license →" external link.
14
+
15
+ ## 0.7.1 — Lemonsqueezy Hardening + Typed Errors
16
+
17
+ ### Added
18
+
19
+ - **`lib/prism/lemonsqueezy/tierMapping.ts`**: dedicated module with `mapProductNameToTier()` + `ProductNotRecognizedError` class. Throws on unrecognized product names instead of silently defaulting.
20
+ - **`LsApiError` typed error class**: `code` field (`invalid_key` | `activation_limit` | `not_activated` | `api_error` | `network_error`), `httpStatus`. Replaces generic `Error`.
21
+ - **Proper HTTP status codes in API routes**: activate returns 400 (bad format), 404 (key not found), 409 (max instances), 502 (network); validate/deactivate return 404 (no license) or 502 (network).
22
+ - **UUID format validation** in `/api/license/activate`: rejects malformed keys before hitting LS API.
23
+ - **`gracePeriodEnd`** field in `license.json`: `revalidationDue + 7 days` — Settings UI shows exact expiry of grace period.
24
+ - **`activationLimit` + `activationUsage`** in `license.json` and `/api/license` GET: Settings shows "2 / 3 activations".
25
+ - **`daysSinceValidation`** in `/api/license` GET.
26
+ - **Expanded feature map**: `custom_queries`, `cross_layer_context`, `auto_insights` (pro); `ci_integration` (team); `forge_unlimited_generation` (forge-pro).
27
+ - **"Manage subscription →" link** in Settings active state → `https://prism0x2a.lemonsqueezy.com/billing`.
28
+ - **16 new unit tests**: `tierMapping.test.ts` (8 tests), `client.test.ts` (8 tests). Total: **78 tests**.
29
+ - **`integration.manual.ts`**: manual integration test for real LS API with `TEST_LICENSE_KEY`. Not run in CI.
30
+ - **`.env.local.example`** updated with store ID + test key documentation.
31
+
32
+ ### Changed
33
+
34
+ - `lemonsqueezy.ts` uses `mapProductNameToTier` (throws on unknown) instead of silent default.
35
+ - `buildLicenseFromActivation` and `buildLicenseFromValidation` populate `gracePeriodEnd`, `activationLimit`, `activationUsage`.
36
+ - `store.ts` persists and loads all new fields.
37
+ - `useLicense` hook exposes `gracePeriodEnd`, `activationLimit`, `activationUsage`, `daysSinceValidation`.
38
+
39
+ ### Pricing (EUR, locked)
40
+
41
+ - Pro: €39/month or €390/year
42
+ - Team: €99/dev/month or €990/dev/year
43
+ - forge0x2B Pro: €29/month or €290/year
44
+ - Spectrum 0x55: €49/month or €490/year (bundle, save €19/m)
45
+
46
+ ## 0.7.0 — Lemonsqueezy Integration + Real License Validation
47
+
48
+ ### Added
49
+
50
+ - **Lemonsqueezy license activation**: Users paste a LS license key in Settings → dashboard calls `POST /api/license/activate` → validates via `api.lemonsqueezy.com/v1/licenses/activate` → saves to `.prism/license.json`.
51
+ - **30-day offline cache**: `validatedAt` + `revalidationDue` stored in `license.json`; no Lemonsqueezy call needed for 30 days. 7-day grace period after cache expiry.
52
+ - **Online re-validation**: "Validate now" button in Settings POSTs `/api/license/validate` → refreshes cache timestamp.
53
+ - **Instance deactivation**: "Deactivate this instance" calls `/api/license/deactivate` → LS API `deactivate` endpoint → reverts to free tier locally.
54
+ - **4-state License UI in Settings**: No license (key input + "Get a license" link), Activating (spinner), Active (product/account/subscription/instance/last-validated), Error (message + retry).
55
+ - **4 tiers**: `free`, `pro`, `forge-pro`, `spectrum` (Spectrum 0x55 Bundle = prism Pro + forge Pro), `team`, `enterprise`.
56
+ - **Spectrum 0x55 badge**: gradient blue→pink for bundle tier.
57
+ - **`lib/prism/lemonsqueezy/client.ts`**: Raw fetch wrapper for LS License Keys API — activate/validate/deactivate. No SDK dependency.
58
+ - **`lib/prism/license/lemonsqueezy.ts`**: Product→tier mapping, offline cache construction, `activateLicenseKey`, `revalidateLicense`, `deactivateLicense`.
59
+ - **`cacheStatus()` helper**: Returns `"valid" | "grace" | "expired" | "no-cache"` for offline cache state.
60
+ - **Monorepo scan soft-gate**: Free users scanning a specific workspace get root scan + upgrade hint instead of hard 403.
61
+ - **17 Lemonsqueezy unit tests** (mock fetch): activation flow, validation flow, deactivation, product→tier mapping, cache status states. Total test suite: **62 tests**.
62
+ - **`.env.local.example`**: Documents env vars for LLM, PRISM_TARGET, and optional LS admin keys.
63
+
64
+ ### Changed
65
+
66
+ - `LicenseTier` extended: `"free" | "pro" | "forge-pro" | "spectrum" | "team" | "enterprise"`.
67
+ - `TIER_RANK`: `forge-pro=0`, `spectrum=1` (same as pro for prism features).
68
+ - `effectiveTier()`: checks offline cache status for LS-backed licenses.
69
+ - `isValidLicense()`: accepts all paid tiers including `forge-pro` and `spectrum`.
70
+ - `/api/license` GET: now returns `licenseKey` (masked), `instanceId`, `productName`, `subscriptionStatus`, `validatedAt`, `revalidationDue`, `cacheStatus`.
71
+ - `useLicense` hook: exposes full LS metadata; `isPro` excludes `forge-pro` (no prism features).
72
+ - Settings License section: replaced JSON-paste flow with License Key input field.
73
+
74
+ ### Pricing (locked)
75
+
76
+ - Pro: $39/month or $390/year
77
+ - Team: $99/dev/month or $990/dev/year
78
+ - forge0x2B Pro: $29/month or $290/year
79
+ - Spectrum 0x55: $49/month or $490/year (bundle, save $19/m)
80
+
3
81
  ## 0.6.1 — npm Publish + License Foundation
4
82
 
5
83
  ### Added
@@ -3,6 +3,7 @@ import { runBlueScan } from "@/lib/prism/blue/scanner";
3
3
  import { loadLastScan, saveScan } from "@/lib/prism/blue/scanStore";
4
4
  import { countSourceLOC, FREE_TIER_LOC_LIMIT } from "@/lib/prism/monorepo/loc";
5
5
  import { detectMonorepo } from "@/lib/prism/monorepo/detect";
6
+ import { isFeatureAvailable } from "@/lib/prism/features";
6
7
 
7
8
  function getTargetPath(req: NextRequest): string {
8
9
  return req.nextUrl.searchParams.get("target") || process.env.PRISM_TARGET || process.cwd();
@@ -25,6 +26,17 @@ export async function POST(req: NextRequest) {
25
26
  const targetPath = getTargetPath(req);
26
27
  const workspace = getWorkspace(req);
27
28
  try {
29
+ // Monorepo workspace scan requires Pro
30
+ if (workspace && workspace !== "_aggregate" && !isFeatureAvailable(targetPath, "monorepo")) {
31
+ // Soft-degraded: scan root workspace only, attach gate hint
32
+ const scan = await runBlueScan(targetPath);
33
+ const loc = await countSourceLOC(targetPath).catch(() => 0);
34
+ return NextResponse.json({
35
+ scan: { ...scan, loc, loc_over_limit: loc > FREE_TIER_LOC_LIMIT },
36
+ gate: { feature: "monorepo", blocked: false, hint: "Upgrade to Pro to scan workspace: " + workspace },
37
+ });
38
+ }
39
+
28
40
  // Resolve workspace-specific scan path
29
41
  let scanPath = targetPath;
30
42
  if (workspace && workspace !== "_aggregate") {
@@ -0,0 +1,41 @@
1
+ import { NextRequest, NextResponse } from "next/server";
2
+ import { activateLicenseKey } from "@/lib/prism/license/lemonsqueezy";
3
+ import { LsApiError } from "@/lib/prism/lemonsqueezy/client";
4
+
5
+ function getTargetPath(req: NextRequest): string {
6
+ return req.nextUrl.searchParams.get("target") || process.env.PRISM_TARGET || process.cwd();
7
+ }
8
+
9
+ // Basic UUID format check (Lemonsqueezy keys look like: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX)
10
+ const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
11
+
12
+ export async function POST(req: NextRequest) {
13
+ const targetPath = getTargetPath(req);
14
+ try {
15
+ const body = await req.json() as { licenseKey?: string; instanceName?: string };
16
+ const key = body.licenseKey?.trim() ?? "";
17
+
18
+ if (!key) {
19
+ return NextResponse.json({ error: "licenseKey is required" }, { status: 400 });
20
+ }
21
+ if (!UUID_RE.test(key)) {
22
+ return NextResponse.json(
23
+ { error: "Invalid license key format. Expected UUID (e.g. XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX)" },
24
+ { status: 400 },
25
+ );
26
+ }
27
+
28
+ const result = await activateLicenseKey(targetPath, key, body.instanceName);
29
+ return NextResponse.json({ activated: true, ...result });
30
+ } catch (err) {
31
+ if (err instanceof LsApiError) {
32
+ const status =
33
+ err.code === "invalid_key" ? 404 :
34
+ err.code === "activation_limit" ? 409 :
35
+ err.code === "network_error" ? 502 : 422;
36
+ return NextResponse.json({ error: err.message, code: err.code }, { status });
37
+ }
38
+ const message = err instanceof Error ? err.message : String(err);
39
+ return NextResponse.json({ error: message }, { status: 422 });
40
+ }
41
+ }
@@ -0,0 +1,22 @@
1
+ import { NextRequest, NextResponse } from "next/server";
2
+ import { deactivateLicense } from "@/lib/prism/license/lemonsqueezy";
3
+ import { LsApiError } from "@/lib/prism/lemonsqueezy/client";
4
+
5
+ function getTargetPath(req: NextRequest): string {
6
+ return req.nextUrl.searchParams.get("target") || process.env.PRISM_TARGET || process.cwd();
7
+ }
8
+
9
+ export async function POST(req: NextRequest) {
10
+ const targetPath = getTargetPath(req);
11
+ try {
12
+ await deactivateLicense(targetPath);
13
+ return NextResponse.json({ deactivated: true, tier: "free" });
14
+ } catch (err) {
15
+ if (err instanceof LsApiError) {
16
+ const status = err.code === "network_error" ? 502 : 422;
17
+ return NextResponse.json({ error: err.message, code: err.code }, { status });
18
+ }
19
+ const message = err instanceof Error ? err.message : String(err);
20
+ return NextResponse.json({ error: message }, { status: 422 });
21
+ }
22
+ }
@@ -1,8 +1,13 @@
1
1
  import { NextRequest, NextResponse } from "next/server";
2
2
  import { loadLicense, saveLicense, deleteLicense } from "@/lib/prism/license/store";
3
- import { effectiveTier, isLicenseExpired, isValidLicense } from "@/lib/prism/license/validate";
3
+ import { effectiveTier, isLicenseExpired, isValidLicense, cacheStatus } from "@/lib/prism/license/validate";
4
4
  import type { License } from "@/lib/prism/license/types";
5
5
 
6
+ function maskKey(key: string): string {
7
+ if (key.length <= 8) return "****";
8
+ return key.slice(0, 4) + "****" + key.slice(-4);
9
+ }
10
+
6
11
  function getTargetPath(req: NextRequest): string {
7
12
  return req.nextUrl.searchParams.get("target") || process.env.PRISM_TARGET || process.cwd();
8
13
  }
@@ -20,6 +25,20 @@ export async function GET(req: NextRequest) {
20
25
  features: license.features,
21
26
  isValid: isValidLicense(license),
22
27
  isExpired: isLicenseExpired(license),
28
+ // Lemonsqueezy fields
29
+ licenseKey: license.licenseKey ? maskKey(license.licenseKey) : null,
30
+ instanceId: license.instanceId ?? null,
31
+ productName: license.productName ?? null,
32
+ subscriptionStatus: license.subscriptionStatus ?? null,
33
+ validatedAt: license.validatedAt ?? null,
34
+ revalidationDue: license.revalidationDue ?? null,
35
+ gracePeriodEnd: license.gracePeriodEnd ?? null,
36
+ activationLimit: license.activationLimit ?? null,
37
+ activationUsage: license.activationUsage ?? null,
38
+ cacheStatus: cacheStatus(license),
39
+ daysSinceValidation: license.validatedAt
40
+ ? Math.floor((Date.now() / 1000 - license.validatedAt) / 86400)
41
+ : null,
23
42
  });
24
43
  } catch (err) {
25
44
  return NextResponse.json({ error: String(err) }, { status: 500 });
@@ -30,8 +49,9 @@ export async function POST(req: NextRequest) {
30
49
  const targetPath = getTargetPath(req);
31
50
  try {
32
51
  const body = await req.json() as Partial<License>;
33
- if (!body.tier || !["free", "pro", "team", "enterprise"].includes(body.tier)) {
34
- return NextResponse.json({ error: "Invalid tier. Must be free | pro | team | enterprise" }, { status: 400 });
52
+ const validTiers = ["free", "pro", "forge-pro", "spectrum", "team", "enterprise"];
53
+ if (!body.tier || !validTiers.includes(body.tier)) {
54
+ return NextResponse.json({ error: `Invalid tier. Must be one of: ${validTiers.join(" | ")}` }, { status: 400 });
35
55
  }
36
56
 
37
57
  const license: License = {
@@ -0,0 +1,23 @@
1
+ import { NextRequest, NextResponse } from "next/server";
2
+ import { revalidateLicense } from "@/lib/prism/license/lemonsqueezy";
3
+ import { LsApiError } from "@/lib/prism/lemonsqueezy/client";
4
+
5
+ function getTargetPath(req: NextRequest): string {
6
+ return req.nextUrl.searchParams.get("target") || process.env.PRISM_TARGET || process.cwd();
7
+ }
8
+
9
+ export async function POST(req: NextRequest) {
10
+ const targetPath = getTargetPath(req);
11
+ try {
12
+ const result = await revalidateLicense(targetPath);
13
+ return NextResponse.json(result);
14
+ } catch (err) {
15
+ if (err instanceof LsApiError) {
16
+ const status = err.code === "network_error" ? 502 : 422;
17
+ return NextResponse.json({ error: err.message, code: err.code }, { status });
18
+ }
19
+ const message = err instanceof Error ? err.message : String(err);
20
+ const status = message.includes("activate first") ? 404 : 422;
21
+ return NextResponse.json({ error: message }, { status });
22
+ }
23
+ }